(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
else if(typeof define === 'function' && define.amd)
define([], factory);
else {
var a = factory();
for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
}
})(window, function() {
return /******/ (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 = "./src/StructV.ts");
/******/ })
/************************************************************************/
/******/ ({
/***/ "./node_modules/_@ant-design_colors@4.0.5@@ant-design/colors/dist/index.esm.js":
/*!*************************************************************************************!*\
!*** ./node_modules/_@ant-design_colors@4.0.5@@ant-design/colors/dist/index.esm.js ***!
\*************************************************************************************/
/*! exports provided: blue, cyan, geekblue, generate, gold, green, grey, lime, magenta, orange, presetDarkPalettes, presetPalettes, presetPrimaryColors, purple, red, volcano, yellow */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"blue\", function() { return blue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cyan\", function() { return cyan; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"geekblue\", function() { return geekblue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"generate\", function() { return generate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"gold\", function() { return gold; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"green\", function() { return green; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"grey\", function() { return grey; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lime\", function() { return lime; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"magenta\", function() { return magenta; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"orange\", function() { return orange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"presetDarkPalettes\", function() { return presetDarkPalettes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"presetPalettes\", function() { return presetPalettes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"presetPrimaryColors\", function() { return presetPrimaryColors; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"purple\", function() { return purple; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"red\", function() { return red; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"volcano\", function() { return volcano; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"yellow\", function() { return yellow; });\n/* harmony import */ var tinycolor2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tinycolor2 */ \"./node_modules/_tinycolor2@1.4.2@tinycolor2/tinycolor.js\");\n/* harmony import */ var tinycolor2__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(tinycolor2__WEBPACK_IMPORTED_MODULE_0__);\n\n\nvar hueStep = 2; // 色相阶梯\n\nvar saturationStep = 0.16; // 饱和度阶梯,浅色部分\n\nvar saturationStep2 = 0.05; // 饱和度阶梯,深色部分\n\nvar brightnessStep1 = 0.05; // 亮度阶梯,浅色部分\n\nvar brightnessStep2 = 0.15; // 亮度阶梯,深色部分\n\nvar lightColorCount = 5; // 浅色数量,主色上\n\nvar darkColorCount = 4; // 深色数量,主色下\n// 暗色主题颜色映射关系表\n\nvar darkColorMap = [{\n index: 7,\n opacity: 0.15\n}, {\n index: 6,\n opacity: 0.25\n}, {\n index: 5,\n opacity: 0.3\n}, {\n index: 5,\n opacity: 0.45\n}, {\n index: 5,\n opacity: 0.65\n}, {\n index: 5,\n opacity: 0.85\n}, {\n index: 4,\n opacity: 0.9\n}, {\n index: 3,\n opacity: 0.95\n}, {\n index: 2,\n opacity: 0.97\n}, {\n index: 1,\n opacity: 0.98\n}];\n\nfunction getHue(hsv, i, light) {\n var hue; // 根据色相不同,色相转向不同\n\n if (Math.round(hsv.h) >= 60 && Math.round(hsv.h) <= 240) {\n hue = light ? Math.round(hsv.h) - hueStep * i : Math.round(hsv.h) + hueStep * i;\n } else {\n hue = light ? Math.round(hsv.h) + hueStep * i : Math.round(hsv.h) - hueStep * i;\n }\n\n if (hue < 0) {\n hue += 360;\n } else if (hue >= 360) {\n hue -= 360;\n }\n\n return hue;\n}\n\nfunction getSaturation(hsv, i, light) {\n // grey color don't change saturation\n if (hsv.h === 0 && hsv.s === 0) {\n return hsv.s;\n }\n\n var saturation;\n\n if (light) {\n saturation = hsv.s - saturationStep * i;\n } else if (i === darkColorCount) {\n saturation = hsv.s + saturationStep;\n } else {\n saturation = hsv.s + saturationStep2 * i;\n } // 边界值修正\n\n\n if (saturation > 1) {\n saturation = 1;\n } // 第一格的 s 限制在 0.06-0.1 之间\n\n\n if (light && i === lightColorCount && saturation > 0.1) {\n saturation = 0.1;\n }\n\n if (saturation < 0.06) {\n saturation = 0.06;\n }\n\n return Number(saturation.toFixed(2));\n}\n\nfunction getValue(hsv, i, light) {\n var value;\n\n if (light) {\n value = hsv.v + brightnessStep1 * i;\n } else {\n value = hsv.v - brightnessStep2 * i;\n }\n\n if (value > 1) {\n value = 1;\n }\n\n return Number(value.toFixed(2));\n}\n\nfunction generate(color) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var patterns = [];\n var pColor = tinycolor2__WEBPACK_IMPORTED_MODULE_0___default()(color);\n\n for (var i = lightColorCount; i > 0; i -= 1) {\n var hsv = pColor.toHsv();\n var colorString = tinycolor2__WEBPACK_IMPORTED_MODULE_0___default()({\n h: getHue(hsv, i, true),\n s: getSaturation(hsv, i, true),\n v: getValue(hsv, i, true)\n }).toHexString();\n patterns.push(colorString);\n }\n\n patterns.push(pColor.toHexString());\n\n for (var _i = 1; _i <= darkColorCount; _i += 1) {\n var _hsv = pColor.toHsv();\n\n var _colorString = tinycolor2__WEBPACK_IMPORTED_MODULE_0___default()({\n h: getHue(_hsv, _i),\n s: getSaturation(_hsv, _i),\n v: getValue(_hsv, _i)\n }).toHexString();\n\n patterns.push(_colorString);\n } // dark theme patterns\n\n\n if (opts.theme === 'dark') {\n return darkColorMap.map(function (_ref) {\n var index = _ref.index,\n opacity = _ref.opacity;\n var darkColorString = tinycolor2__WEBPACK_IMPORTED_MODULE_0___default.a.mix(opts.backgroundColor || '#141414', patterns[index], opacity * 100).toHexString();\n return darkColorString;\n });\n }\n\n return patterns;\n}\n\nvar presetPrimaryColors = {\n red: '#F5222D',\n volcano: '#FA541C',\n orange: '#FA8C16',\n gold: '#FAAD14',\n yellow: '#FADB14',\n lime: '#A0D911',\n green: '#52C41A',\n cyan: '#13C2C2',\n blue: '#1890FF',\n geekblue: '#2F54EB',\n purple: '#722ED1',\n magenta: '#EB2F96',\n grey: '#666666'\n};\nvar presetPalettes = {};\nvar presetDarkPalettes = {};\nObject.keys(presetPrimaryColors).forEach(function (key) {\n presetPalettes[key] = generate(presetPrimaryColors[key]);\n presetPalettes[key].primary = presetPalettes[key][5]; // dark presetPalettes\n\n presetDarkPalettes[key] = generate(presetPrimaryColors[key], {\n theme: 'dark',\n backgroundColor: '#141414'\n });\n presetDarkPalettes[key].primary = presetDarkPalettes[key][5];\n});\nvar red = presetPalettes.red;\nvar volcano = presetPalettes.volcano;\nvar gold = presetPalettes.gold;\nvar orange = presetPalettes.orange;\nvar yellow = presetPalettes.yellow;\nvar lime = presetPalettes.lime;\nvar green = presetPalettes.green;\nvar cyan = presetPalettes.cyan;\nvar blue = presetPalettes.blue;\nvar geekblue = presetPalettes.geekblue;\nvar purple = presetPalettes.purple;\nvar magenta = presetPalettes.magenta;\nvar grey = presetPalettes.grey;\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnQtZGVzaWduX2NvbG9yc0A0LjAuNUBAYW50LWRlc2lnbi9jb2xvcnMvZGlzdC9pbmRleC5lc20uanM/NGM1NiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW1DOztBQUVuQyxnQkFBZ0I7O0FBRWhCLDBCQUEwQjs7QUFFMUIsMkJBQTJCOztBQUUzQiwyQkFBMkI7O0FBRTNCLDJCQUEyQjs7QUFFM0Isd0JBQXdCOztBQUV4Qix1QkFBdUI7QUFDdkI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBLFVBQVU7O0FBRVY7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpREFBUzs7QUFFeEIsK0JBQStCLE9BQU87QUFDdEM7QUFDQSxzQkFBc0IsaURBQVM7QUFDL0I7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7O0FBRUEsa0JBQWtCLHNCQUFzQjtBQUN4Qzs7QUFFQSx1QkFBdUIsaURBQVM7QUFDaEM7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLGlEQUFTO0FBQ3JDO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1REFBdUQ7O0FBRXZEO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFMksiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnQtZGVzaWduX2NvbG9yc0A0LjAuNUBAYW50LWRlc2lnbi9jb2xvcnMvZGlzdC9pbmRleC5lc20uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdGlueWNvbG9yIGZyb20gJ3Rpbnljb2xvcjInO1xuXG52YXIgaHVlU3RlcCA9IDI7IC8vIOiJsuebuOmYtuair1xuXG52YXIgc2F0dXJhdGlvblN0ZXAgPSAwLjE2OyAvLyDppbHlkozluqbpmLbmoq/vvIzmtYXoibLpg6jliIZcblxudmFyIHNhdHVyYXRpb25TdGVwMiA9IDAuMDU7IC8vIOmlseWSjOW6pumYtuair++8jOa3seiJsumDqOWIhlxuXG52YXIgYnJpZ2h0bmVzc1N0ZXAxID0gMC4wNTsgLy8g5Lqu5bqm6Zi25qKv77yM5rWF6Imy6YOo5YiGXG5cbnZhciBicmlnaHRuZXNzU3RlcDIgPSAwLjE1OyAvLyDkuq7luqbpmLbmoq/vvIzmt7HoibLpg6jliIZcblxudmFyIGxpZ2h0Q29sb3JDb3VudCA9IDU7IC8vIOa1heiJsuaVsOmHj++8jOS4u+iJsuS4ilxuXG52YXIgZGFya0NvbG9yQ291bnQgPSA0OyAvLyDmt7HoibLmlbDph4/vvIzkuLvoibLkuItcbi8vIOaal+iJsuS4u+mimOminOiJsuaYoOWwhOWFs+ezu+ihqFxuXG52YXIgZGFya0NvbG9yTWFwID0gW3tcbiAgaW5kZXg6IDcsXG4gIG9wYWNpdHk6IDAuMTVcbn0sIHtcbiAgaW5kZXg6IDYsXG4gIG9wYWNpdHk6IDAuMjVcbn0sIHtcbiAgaW5kZXg6IDUsXG4gIG9wYWNpdHk6IDAuM1xufSwge1xuICBpbmRleDogNSxcbiAgb3BhY2l0eTogMC40NVxufSwge1xuICBpbmRleDogNSxcbiAgb3BhY2l0eTogMC42NVxufSwge1xuICBpbmRleDogNSxcbiAgb3BhY2l0eTogMC44NVxufSwge1xuICBpbmRleDogNCxcbiAgb3BhY2l0eTogMC45XG59LCB7XG4gIGluZGV4OiAzLFxuICBvcGFjaXR5OiAwLjk1XG59LCB7XG4gIGluZGV4OiAyLFxuICBvcGFjaXR5OiAwLjk3XG59LCB7XG4gIGluZGV4OiAxLFxuICBvcGFjaXR5OiAwLjk4XG59XTtcblxuZnVuY3Rpb24gZ2V0SHVlKGhzdiwgaSwgbGlnaHQpIHtcbiAgdmFyIGh1ZTsgLy8g5qC55o2u6Imy55u45LiN5ZCM77yM6Imy55u46L2s5ZCR5LiN5ZCMXG5cbiAgaWYgKE1hdGgucm91bmQoaHN2LmgpID49IDYwICYmIE1hdGgucm91bmQoaHN2LmgpIDw9IDI0MCkge1xuICAgIGh1ZSA9IGxpZ2h0ID8gTWF0aC5yb3VuZChoc3YuaCkgLSBodWVTdGVwICogaSA6IE1hdGgucm91bmQoaHN2LmgpICsgaHVlU3RlcCAqIGk7XG4gIH0gZWxzZSB7XG4gICAgaHVlID0gbGlnaHQgPyBNYXRoLnJvdW5kKGhzdi5oKSArIGh1ZVN0ZXAgKiBpIDogTWF0aC5yb3VuZChoc3YuaCkgLSBodWVTdGVwICogaTtcbiAgfVxuXG4gIGlmIChodWUgPCAwKSB7XG4gICAgaHVlICs9IDM2MDtcbiAgfSBlbHNlIGlmIChodWUgPj0gMzYwKSB7XG4gICAgaHVlIC09IDM2MDtcbiAgfVxuXG4gIHJldHVybiBodWU7XG59XG5cbmZ1bmN0aW9uIGdldFNhdHVyYXRpb24oaHN2LCBpLCBsaWdodCkge1xuICAvLyBncmV5IGNvbG9yIGRvbid0IGNoYW5nZSBzYXR1cmF0aW9uXG4gIGlmIChoc3YuaCA9PT0gMCAmJiBoc3YucyA9PT0gMCkge1xuICAgIHJldHVybiBoc3YucztcbiAgfVxuXG4gIHZhciBzYXR1cmF0aW9uO1xuXG4gIGlmIChsaWdodCkge1xuICAgIHNhdHVyYXRpb24gPSBoc3YucyAtIHNhdHVyYXRpb25TdGVwICogaTtcbiAgfSBlbHNlIGlmIChpID09PSBkYXJrQ29sb3JDb3VudCkge1xuICAgIHNhdHVyYXRpb24gPSBoc3YucyArIHNhdHVyYXRpb25TdGVwO1xuICB9IGVsc2Uge1xuICAgIHNhdHVyYXRpb24gPSBoc3YucyArIHNhdHVyYXRpb25TdGVwMiAqIGk7XG4gIH0gLy8g6L6555WM5YC85L+u5q2jXG5cblxuICBpZiAoc2F0dXJhdGlvbiA+IDEpIHtcbiAgICBzYXR1cmF0aW9uID0gMTtcbiAgfSAvLyDnrKzkuIDmoLznmoQgcyDpmZDliLblnKggMC4wNi0wLjEg5LmL6Ze0XG5cblxuICBpZiAobGlnaHQgJiYgaSA9PT0gbGlnaHRDb2xvckNvdW50ICYmIHNhdHVyYXRpb24gPiAwLjEpIHtcbiAgICBzYXR1cmF0aW9uID0gMC4xO1xuICB9XG5cbiAgaWYgKHNhdHVyYXRpb24gPCAwLjA2KSB7XG4gICAgc2F0dXJhdGlvbiA9IDAuMDY7XG4gIH1cblxuICByZXR1cm4gTnVtYmVyKHNhdHVyYXRpb24udG9GaXhlZCgyKSk7XG59XG5cbmZ1bmN0aW9uIGdldFZhbHVlKGhzdiwgaSwgbGlnaHQpIHtcbiAgdmFyIHZhbHVlO1xuXG4gIGlmIChsaWdodCkge1xuICAgIHZhbHVlID0gaHN2LnYgKyBicmlnaHRuZXNzU3RlcDEgKiBpO1xuICB9IGVsc2Uge1xuICAgIHZhbHVlID0gaHN2LnYgLSBicmlnaHRuZXNzU3RlcDIgKiBpO1xuICB9XG5cbiAgaWYgKHZhbHVlID4gMSkge1xuICAgIHZhbHVlID0gMTtcbiAgfVxuXG4gIHJldHVybiBOdW1iZXIodmFsdWUudG9GaXhlZCgyKSk7XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlKGNvbG9yKSB7XG4gIHZhciBvcHRzID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcbiAgdmFyIHBhdHRlcm5zID0gW107XG4gIHZhciBwQ29sb3IgPSB0aW55Y29sb3IoY29sb3IpO1xuXG4gIGZvciAodmFyIGkgPSBsaWdodENvbG9yQ291bnQ7IGkgPiAwOyBpIC09IDEpIHtcbiAgICB2YXIgaHN2ID0gcENvbG9yLnRvSHN2KCk7XG4gICAgdmFyIGNvbG9yU3RyaW5nID0gdGlueWNvbG9yKHtcbiAgICAgIGg6IGdldEh1ZShoc3YsIGksIHRydWUpLFxuICAgICAgczogZ2V0U2F0dXJhdGlvbihoc3YsIGksIHRydWUpLFxuICAgICAgdjogZ2V0VmFsdWUoaHN2LCBpLCB0cnVlKVxuICAgIH0pLnRvSGV4U3RyaW5nKCk7XG4gICAgcGF0dGVybnMucHVzaChjb2xvclN0cmluZyk7XG4gIH1cblxuICBwYXR0ZXJucy5wdXNoKHBDb2xvci50b0hleFN0cmluZygpKTtcblxuICBmb3IgKHZhciBfaSA9IDE7IF9pIDw9IGRhcmtDb2xvckNvdW50OyBfaSArPSAxKSB7XG4gICAgdmFyIF9oc3YgPSBwQ29sb3IudG9Ic3YoKTtcblxuICAgIHZhciBfY29sb3JTdHJpbmcgPSB0aW55Y29sb3Ioe1xuICAgICAgaDogZ2V0SHVlKF9oc3YsIF9pKSxcbiAgICAgIHM6IGdldFNhdHVyYXRpb24oX2hzdiwgX2kpLFxuICAgICAgdjogZ2V0VmFsdWUoX2hzdiwgX2kpXG4gICAgfSkudG9IZXhTdHJpbmcoKTtcblxuICAgIHBhdHRlcm5zLnB1c2goX2NvbG9yU3RyaW5nKTtcbiAgfSAvLyBkYXJrIHRoZW1lIHBhdHRlcm5zXG5cblxuICBpZiAob3B0cy50aGVtZSA9PT0gJ2RhcmsnKSB7XG4gICAgcmV0dXJuIGRhcmtDb2xvck1hcC5tYXAoZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgIHZhciBpbmRleCA9IF9yZWYuaW5kZXgsXG4gICAgICAgICAgb3BhY2l0eSA9IF9yZWYub3BhY2l0eTtcbiAgICAgIHZhciBkYXJrQ29sb3JTdHJpbmcgPSB0aW55Y29sb3IubWl4KG9wdHMuYmFja2dyb3VuZENvbG9yIHx8ICcjMTQxNDE0JywgcGF0dGVybnNbaW5kZXhdLCBvcGFjaXR5ICogMTAwKS50b0hleFN0cmluZygpO1xuICAgICAgcmV0dXJuIGRhcmtDb2xvclN0cmluZztcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBwYXR0ZXJucztcbn1cblxudmFyIHByZXNldFByaW1hcnlDb2xvcnMgPSB7XG4gIHJlZDogJyNGNTIyMkQnLFxuICB2b2xjYW5vOiAnI0ZBNTQxQycsXG4gIG9yYW5nZTogJyNGQThDMTYnLFxuICBnb2xkOiAnI0ZBQUQxNCcsXG4gIHllbGxvdzogJyNGQURCMTQnLFxuICBsaW1lOiAnI0EwRDkxMScsXG4gIGdyZWVuOiAnIzUyQzQxQScsXG4gIGN5YW46ICcjMTNDMkMyJyxcbiAgYmx1ZTogJyMxODkwRkYnLFxuICBnZWVrYmx1ZTogJyMyRjU0RUInLFxuICBwdXJwbGU6ICcjNzIyRUQxJyxcbiAgbWFnZW50YTogJyNFQjJGOTYnLFxuICBncmV5OiAnIzY2NjY2Nidcbn07XG52YXIgcHJlc2V0UGFsZXR0ZXMgPSB7fTtcbnZhciBwcmVzZXREYXJrUGFsZXR0ZXMgPSB7fTtcbk9iamVjdC5rZXlzKHByZXNldFByaW1hcnlDb2xvcnMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICBwcmVzZXRQYWxldHRlc1trZXldID0gZ2VuZXJhdGUocHJlc2V0UHJpbWFyeUNvbG9yc1trZXldKTtcbiAgcHJlc2V0UGFsZXR0ZXNba2V5XS5wcmltYXJ5ID0gcHJlc2V0UGFsZXR0ZXNba2V5XVs1XTsgLy8gZGFyayBwcmVzZXRQYWxldHRlc1xuXG4gIHByZXNldERhcmtQYWxldHRlc1trZXldID0gZ2VuZXJhdGUocHJlc2V0UHJpbWFyeUNvbG9yc1trZXldLCB7XG4gICAgdGhlbWU6ICdkYXJrJyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjMTQxNDE0J1xuICB9KTtcbiAgcHJlc2V0RGFya1BhbGV0dGVzW2tleV0ucHJpbWFyeSA9IHByZXNldERhcmtQYWxldHRlc1trZXldWzVdO1xufSk7XG52YXIgcmVkID0gcHJlc2V0UGFsZXR0ZXMucmVkO1xudmFyIHZvbGNhbm8gPSBwcmVzZXRQYWxldHRlcy52b2xjYW5vO1xudmFyIGdvbGQgPSBwcmVzZXRQYWxldHRlcy5nb2xkO1xudmFyIG9yYW5nZSA9IHByZXNldFBhbGV0dGVzLm9yYW5nZTtcbnZhciB5ZWxsb3cgPSBwcmVzZXRQYWxldHRlcy55ZWxsb3c7XG52YXIgbGltZSA9IHByZXNldFBhbGV0dGVzLmxpbWU7XG52YXIgZ3JlZW4gPSBwcmVzZXRQYWxldHRlcy5ncmVlbjtcbnZhciBjeWFuID0gcHJlc2V0UGFsZXR0ZXMuY3lhbjtcbnZhciBibHVlID0gcHJlc2V0UGFsZXR0ZXMuYmx1ZTtcbnZhciBnZWVrYmx1ZSA9IHByZXNldFBhbGV0dGVzLmdlZWtibHVlO1xudmFyIHB1cnBsZSA9IHByZXNldFBhbGV0dGVzLnB1cnBsZTtcbnZhciBtYWdlbnRhID0gcHJlc2V0UGFsZXR0ZXMubWFnZW50YTtcbnZhciBncmV5ID0gcHJlc2V0UGFsZXR0ZXMuZ3JleTtcblxuZXhwb3J0IHsgYmx1ZSwgY3lhbiwgZ2Vla2JsdWUsIGdlbmVyYXRlLCBnb2xkLCBncmVlbiwgZ3JleSwgbGltZSwgbWFnZW50YSwgb3JhbmdlLCBwcmVzZXREYXJrUGFsZXR0ZXMsIHByZXNldFBhbGV0dGVzLCBwcmVzZXRQcmltYXJ5Q29sb3JzLCBwdXJwbGUsIHJlZCwgdm9sY2FubywgeWVsbG93IH07XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@ant-design_colors@4.0.5@@ant-design/colors/dist/index.esm.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/adjacent-matrix.js":
/*!************************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/adjacent-matrix.js ***!
\************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar adjMatrix = function adjMatrix(graphData, directed) {\n var nodes = graphData.nodes,\n edges = graphData.edges;\n var matrix = []; // map node with index in data.nodes\n\n var nodeMap = {};\n\n if (!nodes) {\n throw new Error(\"invalid nodes data!\");\n }\n\n if (nodes) {\n nodes.forEach(function (node, i) {\n nodeMap[node.id] = i;\n var row = [];\n matrix.push(row);\n });\n }\n\n if (edges) {\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var sIndex = nodeMap[source];\n var tIndex = nodeMap[target];\n if (!sIndex && sIndex !== 0 || !tIndex && tIndex !== 0) return;\n matrix[sIndex][tIndex] = 1;\n\n if (!directed) {\n matrix[tIndex][sIndex] = 1;\n }\n });\n }\n\n return matrix;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (adjMatrix);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2FkamFjZW50LW1hdHJpeC5qcz8zYzhjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCOztBQUVsQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVlLHdFQUFTIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9lcy9hZGphY2VudC1tYXRyaXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYWRqTWF0cml4ID0gZnVuY3Rpb24gYWRqTWF0cml4KGdyYXBoRGF0YSwgZGlyZWN0ZWQpIHtcbiAgdmFyIG5vZGVzID0gZ3JhcGhEYXRhLm5vZGVzLFxuICAgICAgZWRnZXMgPSBncmFwaERhdGEuZWRnZXM7XG4gIHZhciBtYXRyaXggPSBbXTsgLy8gbWFwIG5vZGUgd2l0aCBpbmRleCBpbiBkYXRhLm5vZGVzXG5cbiAgdmFyIG5vZGVNYXAgPSB7fTtcblxuICBpZiAoIW5vZGVzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBub2RlcyBkYXRhIVwiKTtcbiAgfVxuXG4gIGlmIChub2Rlcykge1xuICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUsIGkpIHtcbiAgICAgIG5vZGVNYXBbbm9kZS5pZF0gPSBpO1xuICAgICAgdmFyIHJvdyA9IFtdO1xuICAgICAgbWF0cml4LnB1c2gocm93KTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChlZGdlcykge1xuICAgIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIHZhciBzb3VyY2UgPSBlZGdlLnNvdXJjZSxcbiAgICAgICAgICB0YXJnZXQgPSBlZGdlLnRhcmdldDtcbiAgICAgIHZhciBzSW5kZXggPSBub2RlTWFwW3NvdXJjZV07XG4gICAgICB2YXIgdEluZGV4ID0gbm9kZU1hcFt0YXJnZXRdO1xuICAgICAgaWYgKCFzSW5kZXggJiYgc0luZGV4ICE9PSAwIHx8ICF0SW5kZXggJiYgdEluZGV4ICE9PSAwKSByZXR1cm47XG4gICAgICBtYXRyaXhbc0luZGV4XVt0SW5kZXhdID0gMTtcblxuICAgICAgaWYgKCFkaXJlY3RlZCkge1xuICAgICAgICBtYXRyaXhbdEluZGV4XVtzSW5kZXhdID0gMTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBtYXRyaXg7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBhZGpNYXRyaXg7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/adjacent-matrix.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/bfs.js":
/*!************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/bfs.js ***!
\************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_queue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./structs/queue */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/queue.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/util.js\");\n\n\n/**\n *\n * @param callbacks\n * allowTraversal: 确定 BFS 是否从顶点沿着边遍历到其邻居,默认情况下,同一个节点只能遍历一次\n * enterNode: 当 BFS 访问某个节点时调用\n * leaveNode: 当 BFS 访问访问结束某个节点时调用\n */\n\nfunction initCallbacks(callbacks) {\n if (callbacks === void 0) {\n callbacks = {};\n }\n\n var initiatedCallback = callbacks;\n\n var stubCallback = function stubCallback() {};\n\n var allowTraversalCallback = function () {\n var seen = {};\n return function (_a) {\n var next = _a.next;\n var id = next;\n\n if (!seen[id]) {\n seen[id] = true;\n return true;\n }\n\n return false;\n };\n }();\n\n initiatedCallback.allowTraversal = callbacks.allowTraversal || allowTraversalCallback;\n initiatedCallback.enter = callbacks.enter || stubCallback;\n initiatedCallback.leave = callbacks.leave || stubCallback;\n return initiatedCallback;\n}\n/**\n * 广度优先遍历图\n * @param graph Graph 图实例\n * @param startNode 开始遍历的节点\n * @param originalCallbacks 回调\n */\n\n\nvar breadthFirstSearch = function breadthFirstSearch(graphData, startNodeId, originalCallbacks, directed) {\n if (directed === void 0) {\n directed = true;\n }\n\n var callbacks = initCallbacks(originalCallbacks);\n var nodeQueue = new _structs_queue__WEBPACK_IMPORTED_MODULE_0__[\"default\"]();\n var _a = graphData.edges,\n edges = _a === void 0 ? [] : _a; // 初始化队列元素\n\n nodeQueue.enqueue(startNodeId);\n var previousNode = '';\n\n var _loop_1 = function _loop_1() {\n var currentNode = nodeQueue.dequeue();\n callbacks.enter({\n current: currentNode,\n previous: previousNode\n }); // 将所有邻居添加到队列中以便遍历\n\n Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getNeighbors\"])(currentNode, edges, directed ? 'target' : undefined).forEach(function (nextNode) {\n if (callbacks.allowTraversal({\n previous: previousNode,\n current: currentNode,\n next: nextNode\n })) {\n nodeQueue.enqueue(nextNode);\n }\n });\n callbacks.leave({\n current: currentNode,\n previous: previousNode\n }); // 下一次循环之前存储当前顶点\n\n previousNode = currentNode;\n }; // 遍历队列中的所有顶点\n\n\n while (!nodeQueue.isEmpty()) {\n _loop_1();\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (breadthFirstSearch);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2Jmcy5qcz8xM2Q2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFvQztBQUNFO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxzQkFBc0Isc0RBQUs7QUFDM0I7QUFDQSxzQ0FBc0M7O0FBRXRDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUCxJQUFJLDBEQUFZO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7O0FBRWUsaUZBQWtCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9lcy9iZnMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUXVldWUgZnJvbSAnLi9zdHJ1Y3RzL3F1ZXVlJztcbmltcG9ydCB7IGdldE5laWdoYm9ycyB9IGZyb20gJy4vdXRpbCc7XG4vKipcbiAqXG4gKiBAcGFyYW0gY2FsbGJhY2tzXG4gKiBhbGxvd1RyYXZlcnNhbDog56Gu5a6aIEJGUyDmmK/lkKbku47pobbngrnmsr/nnYDovrnpgY3ljobliLDlhbbpgrvlsYXvvIzpu5jorqTmg4XlhrXkuIvvvIzlkIzkuIDkuKroioLngrnlj6rog73pgY3ljobkuIDmrKFcbiAqIGVudGVyTm9kZTog5b2TIEJGUyDorr/pl67mn5DkuKroioLngrnml7bosIPnlKhcbiAqIGxlYXZlTm9kZTog5b2TIEJGUyDorr/pl67orr/pl67nu5PmnZ/mn5DkuKroioLngrnml7bosIPnlKhcbiAqL1xuXG5mdW5jdGlvbiBpbml0Q2FsbGJhY2tzKGNhbGxiYWNrcykge1xuICBpZiAoY2FsbGJhY2tzID09PSB2b2lkIDApIHtcbiAgICBjYWxsYmFja3MgPSB7fTtcbiAgfVxuXG4gIHZhciBpbml0aWF0ZWRDYWxsYmFjayA9IGNhbGxiYWNrcztcblxuICB2YXIgc3R1YkNhbGxiYWNrID0gZnVuY3Rpb24gc3R1YkNhbGxiYWNrKCkge307XG5cbiAgdmFyIGFsbG93VHJhdmVyc2FsQ2FsbGJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlZW4gPSB7fTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKF9hKSB7XG4gICAgICB2YXIgbmV4dCA9IF9hLm5leHQ7XG4gICAgICB2YXIgaWQgPSBuZXh0O1xuXG4gICAgICBpZiAoIXNlZW5baWRdKSB7XG4gICAgICAgIHNlZW5baWRdID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICB9KCk7XG5cbiAgaW5pdGlhdGVkQ2FsbGJhY2suYWxsb3dUcmF2ZXJzYWwgPSBjYWxsYmFja3MuYWxsb3dUcmF2ZXJzYWwgfHwgYWxsb3dUcmF2ZXJzYWxDYWxsYmFjaztcbiAgaW5pdGlhdGVkQ2FsbGJhY2suZW50ZXIgPSBjYWxsYmFja3MuZW50ZXIgfHwgc3R1YkNhbGxiYWNrO1xuICBpbml0aWF0ZWRDYWxsYmFjay5sZWF2ZSA9IGNhbGxiYWNrcy5sZWF2ZSB8fCBzdHViQ2FsbGJhY2s7XG4gIHJldHVybiBpbml0aWF0ZWRDYWxsYmFjaztcbn1cbi8qKlxuICog5bm/5bqm5LyY5YWI6YGN5Y6G5Zu+XG4gKiBAcGFyYW0gZ3JhcGggR3JhcGgg5Zu+5a6e5L6LXG4gKiBAcGFyYW0gc3RhcnROb2RlIOW8gOWni+mBjeWOhueahOiKgueCuVxuICogQHBhcmFtIG9yaWdpbmFsQ2FsbGJhY2tzIOWbnuiwg1xuICovXG5cblxudmFyIGJyZWFkdGhGaXJzdFNlYXJjaCA9IGZ1bmN0aW9uIGJyZWFkdGhGaXJzdFNlYXJjaChncmFwaERhdGEsIHN0YXJ0Tm9kZUlkLCBvcmlnaW5hbENhbGxiYWNrcywgZGlyZWN0ZWQpIHtcbiAgaWYgKGRpcmVjdGVkID09PSB2b2lkIDApIHtcbiAgICBkaXJlY3RlZCA9IHRydWU7XG4gIH1cblxuICB2YXIgY2FsbGJhY2tzID0gaW5pdENhbGxiYWNrcyhvcmlnaW5hbENhbGxiYWNrcyk7XG4gIHZhciBub2RlUXVldWUgPSBuZXcgUXVldWUoKTtcbiAgdmFyIF9hID0gZ3JhcGhEYXRhLmVkZ2VzLFxuICAgICAgZWRnZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYTsgLy8g5Yid5aeL5YyW6Zif5YiX5YWD57SgXG5cbiAgbm9kZVF1ZXVlLmVucXVldWUoc3RhcnROb2RlSWQpO1xuICB2YXIgcHJldmlvdXNOb2RlID0gJyc7XG5cbiAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiBfbG9vcF8xKCkge1xuICAgIHZhciBjdXJyZW50Tm9kZSA9IG5vZGVRdWV1ZS5kZXF1ZXVlKCk7XG4gICAgY2FsbGJhY2tzLmVudGVyKHtcbiAgICAgIGN1cnJlbnQ6IGN1cnJlbnROb2RlLFxuICAgICAgcHJldmlvdXM6IHByZXZpb3VzTm9kZVxuICAgIH0pOyAvLyDlsIbmiYDmnInpgrvlsYXmt7vliqDliLDpmJ/liJfkuK3ku6Xkvr/pgY3ljoZcblxuICAgIGdldE5laWdoYm9ycyhjdXJyZW50Tm9kZSwgZWRnZXMsIGRpcmVjdGVkID8gJ3RhcmdldCcgOiB1bmRlZmluZWQpLmZvckVhY2goZnVuY3Rpb24gKG5leHROb2RlKSB7XG4gICAgICBpZiAoY2FsbGJhY2tzLmFsbG93VHJhdmVyc2FsKHtcbiAgICAgICAgcHJldmlvdXM6IHByZXZpb3VzTm9kZSxcbiAgICAgICAgY3VycmVudDogY3VycmVudE5vZGUsXG4gICAgICAgIG5leHQ6IG5leHROb2RlXG4gICAgICB9KSkge1xuICAgICAgICBub2RlUXVldWUuZW5xdWV1ZShuZXh0Tm9kZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY2FsbGJhY2tzLmxlYXZlKHtcbiAgICAgIGN1cnJlbnQ6IGN1cnJlbnROb2RlLFxuICAgICAgcHJldmlvdXM6IHByZXZpb3VzTm9kZVxuICAgIH0pOyAvLyDkuIvkuIDmrKHlvqrnjq/kuYvliY3lrZjlgqjlvZPliY3pobbngrlcblxuICAgIHByZXZpb3VzTm9kZSA9IGN1cnJlbnROb2RlO1xuICB9OyAvLyDpgY3ljobpmJ/liJfkuK3nmoTmiYDmnInpobbngrlcblxuXG4gIHdoaWxlICghbm9kZVF1ZXVlLmlzRW1wdHkoKSkge1xuICAgIF9sb29wXzEoKTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgYnJlYWR0aEZpcnN0U2VhcmNoOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/bfs.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/connected-component.js":
/*!****************************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/connected-component.js ***!
\****************************************************************************************/
/*! exports provided: detectConnectedComponents, detectStrongConnectComponents, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"detectConnectedComponents\", function() { return detectConnectedComponents; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"detectStrongConnectComponents\", function() { return detectStrongConnectComponents; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getConnectedComponents; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/util.js\");\n\n/**\n * Generate all connected components for an undirected graph\n * @param graph\n */\n\nvar detectConnectedComponents = function detectConnectedComponents(graphData) {\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var allComponents = [];\n var visited = {};\n var nodeStack = [];\n\n var getComponent = function getComponent(node) {\n nodeStack.push(node);\n visited[node.id] = true;\n var neighbors = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"getNeighbors\"])(node.id, edges);\n\n var _loop_1 = function _loop_1(i) {\n var neighbor = neighbors[i];\n\n if (!visited[neighbor]) {\n var targetNode = nodes.filter(function (node) {\n return node.id === neighbor;\n });\n\n if (targetNode.length > 0) {\n getComponent(targetNode[0]);\n }\n }\n };\n\n for (var i = 0; i < neighbors.length; ++i) {\n _loop_1(i);\n }\n };\n\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n\n if (!visited[node.id]) {\n // 对于无向图进行dfs遍历,每一次调用后都得到一个连通分量\n getComponent(node);\n var component = [];\n\n while (nodeStack.length > 0) {\n component.push(nodeStack.pop());\n }\n\n allComponents.push(component);\n }\n }\n\n return allComponents;\n};\n/**\n * Tarjan's Algorithm 复杂度 O(|V|+|E|)\n * For directed graph only\n * a directed graph is said to be strongly connected if \"every vertex is reachable from every other vertex\".\n * refer: http://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm\n * @param graph\n * @return a list of strongly connected components\n */\n\nvar detectStrongConnectComponents = function detectStrongConnectComponents(graphData) {\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var nodeStack = [];\n var inStack = {}; // 辅助判断是否已经在stack中,减少查找开销\n\n var indices = {};\n var lowLink = {};\n var allComponents = [];\n var index = 0;\n\n var getComponent = function getComponent(node) {\n // Set the depth index for v to the smallest unused index\n indices[node.id] = index;\n lowLink[node.id] = index;\n index += 1;\n nodeStack.push(node);\n inStack[node.id] = true; // 考虑每个邻接点\n\n var neighbors = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"getNeighbors\"])(node.id, edges, 'target').filter(function (n) {\n return nodes.map(function (node) {\n return node.id;\n }).indexOf(n) > -1;\n });\n\n var _loop_2 = function _loop_2(i) {\n var targetNodeID = neighbors[i];\n\n if (!indices[targetNodeID] && indices[targetNodeID] !== 0) {\n var targetNode = nodes.filter(function (node) {\n return node.id === targetNodeID;\n });\n\n if (targetNode.length > 0) {\n getComponent(targetNode[0]);\n } // tree edge\n\n\n lowLink[node.id] = Math.min(lowLink[node.id], lowLink[targetNodeID]);\n } else if (inStack[targetNodeID]) {\n // back edge, target node is in the current SCC\n lowLink[node.id] = Math.min(lowLink[node.id], indices[targetNodeID]);\n }\n };\n\n for (var i = 0; i < neighbors.length; i++) {\n _loop_2(i);\n } // If node is a root node, generate an SCC\n\n\n if (lowLink[node.id] === indices[node.id]) {\n var component = [];\n\n while (nodeStack.length > 0) {\n var tmpNode = nodeStack.pop();\n inStack[tmpNode.id] = false;\n component.push(tmpNode);\n if (tmpNode === node) break;\n }\n\n if (component.length > 0) {\n allComponents.push(component);\n }\n }\n };\n\n for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {\n var node = nodes_1[_i];\n\n if (!indices[node.id] && indices[node.id] !== 0) {\n getComponent(node);\n }\n }\n\n return allComponents;\n};\nfunction getConnectedComponents(graphData, directed) {\n if (directed) return detectStrongConnectComponents(graphData);\n return detectConnectedComponents(graphData);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2Nvbm5lY3RlZC1jb21wb25lbnQuanM/Njc5NyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXNDO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLDBEQUFZOztBQUVoQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsc0JBQXNCO0FBQ3pDO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsa0JBQWtCO0FBQ25DOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1COztBQUVuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7O0FBRTVCLG9CQUFvQiwwREFBWTtBQUNoQztBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQSxTQUFTOzs7QUFHVDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsc0JBQXNCO0FBQ3pDO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQ0FBbUMscUJBQXFCO0FBQ3hEOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfYWxnb3JpdGhtQDAuMS4xNEBAYW50di9hbGdvcml0aG0vZXMvY29ubmVjdGVkLWNvbXBvbmVudC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldE5laWdoYm9ycyB9IGZyb20gXCIuL3V0aWxcIjtcbi8qKlxuICogR2VuZXJhdGUgYWxsIGNvbm5lY3RlZCBjb21wb25lbnRzIGZvciBhbiB1bmRpcmVjdGVkIGdyYXBoXG4gKiBAcGFyYW0gZ3JhcGhcbiAqL1xuXG5leHBvcnQgdmFyIGRldGVjdENvbm5lY3RlZENvbXBvbmVudHMgPSBmdW5jdGlvbiBkZXRlY3RDb25uZWN0ZWRDb21wb25lbnRzKGdyYXBoRGF0YSkge1xuICB2YXIgX2EgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBub2RlcyA9IF9hID09PSB2b2lkIDAgPyBbXSA6IF9hLFxuICAgICAgX2IgPSBncmFwaERhdGEuZWRnZXMsXG4gICAgICBlZGdlcyA9IF9iID09PSB2b2lkIDAgPyBbXSA6IF9iO1xuICB2YXIgYWxsQ29tcG9uZW50cyA9IFtdO1xuICB2YXIgdmlzaXRlZCA9IHt9O1xuICB2YXIgbm9kZVN0YWNrID0gW107XG5cbiAgdmFyIGdldENvbXBvbmVudCA9IGZ1bmN0aW9uIGdldENvbXBvbmVudChub2RlKSB7XG4gICAgbm9kZVN0YWNrLnB1c2gobm9kZSk7XG4gICAgdmlzaXRlZFtub2RlLmlkXSA9IHRydWU7XG4gICAgdmFyIG5laWdoYm9ycyA9IGdldE5laWdoYm9ycyhub2RlLmlkLCBlZGdlcyk7XG5cbiAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIF9sb29wXzEoaSkge1xuICAgICAgdmFyIG5laWdoYm9yID0gbmVpZ2hib3JzW2ldO1xuXG4gICAgICBpZiAoIXZpc2l0ZWRbbmVpZ2hib3JdKSB7XG4gICAgICAgIHZhciB0YXJnZXROb2RlID0gbm9kZXMuZmlsdGVyKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgcmV0dXJuIG5vZGUuaWQgPT09IG5laWdoYm9yO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGFyZ2V0Tm9kZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZ2V0Q29tcG9uZW50KHRhcmdldE5vZGVbMF0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmVpZ2hib3JzLmxlbmd0aDsgKytpKSB7XG4gICAgICBfbG9vcF8xKGkpO1xuICAgIH1cbiAgfTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG5vZGUgPSBub2Rlc1tpXTtcblxuICAgIGlmICghdmlzaXRlZFtub2RlLmlkXSkge1xuICAgICAgLy8g5a+55LqO5peg5ZCR5Zu+6L+b6KGMZGZz6YGN5Y6G77yM5q+P5LiA5qyh6LCD55So5ZCO6YO95b6X5Yiw5LiA5Liq6L+e6YCa5YiG6YePXG4gICAgICBnZXRDb21wb25lbnQobm9kZSk7XG4gICAgICB2YXIgY29tcG9uZW50ID0gW107XG5cbiAgICAgIHdoaWxlIChub2RlU3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgICBjb21wb25lbnQucHVzaChub2RlU3RhY2sucG9wKCkpO1xuICAgICAgfVxuXG4gICAgICBhbGxDb21wb25lbnRzLnB1c2goY29tcG9uZW50KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWxsQ29tcG9uZW50cztcbn07XG4vKipcbiAqIFRhcmphbidzIEFsZ29yaXRobSDlpI3mnYLluqYgIE8ofFZ8K3xFfClcbiAqIEZvciBkaXJlY3RlZCBncmFwaCBvbmx5XG4gKiBhIGRpcmVjdGVkIGdyYXBoIGlzIHNhaWQgdG8gYmUgc3Ryb25nbHkgY29ubmVjdGVkIGlmIFwiZXZlcnkgdmVydGV4IGlzIHJlYWNoYWJsZSBmcm9tIGV2ZXJ5IG90aGVyIHZlcnRleFwiLlxuICogcmVmZXI6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGFyamFuJTI3c19zdHJvbmdseV9jb25uZWN0ZWRfY29tcG9uZW50c19hbGdvcml0aG1cbiAqIEBwYXJhbSBncmFwaFxuICogQHJldHVybiBhIGxpc3Qgb2Ygc3Ryb25nbHkgY29ubmVjdGVkIGNvbXBvbmVudHNcbiAqL1xuXG5leHBvcnQgdmFyIGRldGVjdFN0cm9uZ0Nvbm5lY3RDb21wb25lbnRzID0gZnVuY3Rpb24gZGV0ZWN0U3Ryb25nQ29ubmVjdENvbXBvbmVudHMoZ3JhcGhEYXRhKSB7XG4gIHZhciBfYSA9IGdyYXBoRGF0YS5ub2RlcyxcbiAgICAgIG5vZGVzID0gX2EgPT09IHZvaWQgMCA/IFtdIDogX2EsXG4gICAgICBfYiA9IGdyYXBoRGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2IgPT09IHZvaWQgMCA/IFtdIDogX2I7XG4gIHZhciBub2RlU3RhY2sgPSBbXTtcbiAgdmFyIGluU3RhY2sgPSB7fTsgLy8g6L6F5Yqp5Yik5pat5piv5ZCm5bey57uP5Zyoc3RhY2vkuK3vvIzlh4/lsJHmn6Xmib7lvIDplIBcblxuICB2YXIgaW5kaWNlcyA9IHt9O1xuICB2YXIgbG93TGluayA9IHt9O1xuICB2YXIgYWxsQ29tcG9uZW50cyA9IFtdO1xuICB2YXIgaW5kZXggPSAwO1xuXG4gIHZhciBnZXRDb21wb25lbnQgPSBmdW5jdGlvbiBnZXRDb21wb25lbnQobm9kZSkge1xuICAgIC8vIFNldCB0aGUgZGVwdGggaW5kZXggZm9yIHYgdG8gdGhlIHNtYWxsZXN0IHVudXNlZCBpbmRleFxuICAgIGluZGljZXNbbm9kZS5pZF0gPSBpbmRleDtcbiAgICBsb3dMaW5rW25vZGUuaWRdID0gaW5kZXg7XG4gICAgaW5kZXggKz0gMTtcbiAgICBub2RlU3RhY2sucHVzaChub2RlKTtcbiAgICBpblN0YWNrW25vZGUuaWRdID0gdHJ1ZTsgLy8g6ICD6JmR5q+P5Liq6YK75o6l54K5XG5cbiAgICB2YXIgbmVpZ2hib3JzID0gZ2V0TmVpZ2hib3JzKG5vZGUuaWQsIGVkZ2VzLCAndGFyZ2V0JykuZmlsdGVyKGZ1bmN0aW9uIChuKSB7XG4gICAgICByZXR1cm4gbm9kZXMubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHJldHVybiBub2RlLmlkO1xuICAgICAgfSkuaW5kZXhPZihuKSA+IC0xO1xuICAgIH0pO1xuXG4gICAgdmFyIF9sb29wXzIgPSBmdW5jdGlvbiBfbG9vcF8yKGkpIHtcbiAgICAgIHZhciB0YXJnZXROb2RlSUQgPSBuZWlnaGJvcnNbaV07XG5cbiAgICAgIGlmICghaW5kaWNlc1t0YXJnZXROb2RlSURdICYmIGluZGljZXNbdGFyZ2V0Tm9kZUlEXSAhPT0gMCkge1xuICAgICAgICB2YXIgdGFyZ2V0Tm9kZSA9IG5vZGVzLmZpbHRlcihmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgIHJldHVybiBub2RlLmlkID09PSB0YXJnZXROb2RlSUQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0YXJnZXROb2RlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBnZXRDb21wb25lbnQodGFyZ2V0Tm9kZVswXSk7XG4gICAgICAgIH0gLy8gdHJlZSBlZGdlXG5cblxuICAgICAgICBsb3dMaW5rW25vZGUuaWRdID0gTWF0aC5taW4obG93TGlua1tub2RlLmlkXSwgbG93TGlua1t0YXJnZXROb2RlSURdKTtcbiAgICAgIH0gZWxzZSBpZiAoaW5TdGFja1t0YXJnZXROb2RlSURdKSB7XG4gICAgICAgIC8vIGJhY2sgZWRnZSwgdGFyZ2V0IG5vZGUgaXMgaW4gdGhlIGN1cnJlbnQgU0NDXG4gICAgICAgIGxvd0xpbmtbbm9kZS5pZF0gPSBNYXRoLm1pbihsb3dMaW5rW25vZGUuaWRdLCBpbmRpY2VzW3RhcmdldE5vZGVJRF0pO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5laWdoYm9ycy5sZW5ndGg7IGkrKykge1xuICAgICAgX2xvb3BfMihpKTtcbiAgICB9IC8vIElmIG5vZGUgaXMgYSByb290IG5vZGUsIGdlbmVyYXRlIGFuIFNDQ1xuXG5cbiAgICBpZiAobG93TGlua1tub2RlLmlkXSA9PT0gaW5kaWNlc1tub2RlLmlkXSkge1xuICAgICAgdmFyIGNvbXBvbmVudCA9IFtdO1xuXG4gICAgICB3aGlsZSAobm9kZVN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdmFyIHRtcE5vZGUgPSBub2RlU3RhY2sucG9wKCk7XG4gICAgICAgIGluU3RhY2tbdG1wTm9kZS5pZF0gPSBmYWxzZTtcbiAgICAgICAgY29tcG9uZW50LnB1c2godG1wTm9kZSk7XG4gICAgICAgIGlmICh0bXBOb2RlID09PSBub2RlKSBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbXBvbmVudC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGFsbENvbXBvbmVudHMucHVzaChjb21wb25lbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBmb3IgKHZhciBfaSA9IDAsIG5vZGVzXzEgPSBub2RlczsgX2kgPCBub2Rlc18xLmxlbmd0aDsgX2krKykge1xuICAgIHZhciBub2RlID0gbm9kZXNfMVtfaV07XG5cbiAgICBpZiAoIWluZGljZXNbbm9kZS5pZF0gJiYgaW5kaWNlc1tub2RlLmlkXSAhPT0gMCkge1xuICAgICAgZ2V0Q29tcG9uZW50KG5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhbGxDb21wb25lbnRzO1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldENvbm5lY3RlZENvbXBvbmVudHMoZ3JhcGhEYXRhLCBkaXJlY3RlZCkge1xuICBpZiAoZGlyZWN0ZWQpIHJldHVybiBkZXRlY3RTdHJvbmdDb25uZWN0Q29tcG9uZW50cyhncmFwaERhdGEpO1xuICByZXR1cm4gZGV0ZWN0Q29ubmVjdGVkQ29tcG9uZW50cyhncmFwaERhdGEpO1xufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/connected-component.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/constants/time.js":
/*!***********************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/constants/time.js ***!
\***********************************************************************************/
/*! exports provided: secondReg, dateReg */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"secondReg\", function() { return secondReg; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dateReg\", function() { return dateReg; });\nvar secondReg = /^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2})$/;\nvar dateReg = /^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2}) (\\d{1,2}):(\\d{1,2}):(\\d{1,2})$/;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2NvbnN0YW50cy90aW1lLmpzPzQ3MzUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQU8sc0JBQXNCLElBQUksV0FBVyxJQUFJLE9BQU8sSUFBSTtBQUNwRCxvQkFBb0IsSUFBSSxXQUFXLElBQUksT0FBTyxJQUFJLE1BQU0sSUFBSSxNQUFNLElBQUksTUFBTSxJQUFJIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9lcy9jb25zdGFudHMvdGltZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgc2Vjb25kUmVnID0gL14oXFxkezEsNH0pKC18XFwvKShcXGR7MSwyfSlcXDIoXFxkezEsMn0pJC87XG5leHBvcnQgdmFyIGRhdGVSZWcgPSAvXihcXGR7MSw0fSkoLXxcXC8pKFxcZHsxLDJ9KVxcMihcXGR7MSwyfSkgKFxcZHsxLDJ9KTooXFxkezEsMn0pOihcXGR7MSwyfSkkLzsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/constants/time.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/degree.js":
/*!***************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/degree.js ***!
\***************************************************************************/
/*! exports provided: default, getInDegree, getOutDegree */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getInDegree\", function() { return getInDegree; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getOutDegree\", function() { return getOutDegree; });\nvar degree = function degree(graphData) {\n var degrees = {};\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n nodes.forEach(function (node) {\n degrees[node.id] = {\n degree: 0,\n inDegree: 0,\n outDegree: 0\n };\n });\n edges.forEach(function (edge) {\n degrees[edge.source].degree++;\n degrees[edge.source].outDegree++;\n degrees[edge.target].degree++;\n degrees[edge.target].inDegree++;\n });\n return degrees;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (degree);\n/**\n * 获取指定节点的入度\n * @param graphData 图数据\n * @param nodeId 节点ID\n */\n\nvar getInDegree = function getInDegree(graphData, nodeId) {\n var nodeDegree = degree(graphData);\n\n if (nodeDegree[nodeId]) {\n return degree(graphData)[nodeId].inDegree;\n }\n\n return 0;\n};\n/**\n * 获取指定节点的出度\n * @param graphData 图数据\n * @param nodeId 节点ID\n */\n\nvar getOutDegree = function getOutDegree(graphData, nodeId) {\n var nodeDegree = degree(graphData);\n\n if (nodeDegree[nodeId]) {\n return degree(graphData)[nodeId].outDegree;\n }\n\n return 0;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2RlZ3JlZS5qcz83MjE5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRWUscUVBQU0sRUFBQztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2RlZ3JlZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBkZWdyZWUgPSBmdW5jdGlvbiBkZWdyZWUoZ3JhcGhEYXRhKSB7XG4gIHZhciBkZWdyZWVzID0ge307XG4gIHZhciBfYSA9IGdyYXBoRGF0YS5ub2RlcyxcbiAgICAgIG5vZGVzID0gX2EgPT09IHZvaWQgMCA/IFtdIDogX2EsXG4gICAgICBfYiA9IGdyYXBoRGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2IgPT09IHZvaWQgMCA/IFtdIDogX2I7XG4gIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICBkZWdyZWVzW25vZGUuaWRdID0ge1xuICAgICAgZGVncmVlOiAwLFxuICAgICAgaW5EZWdyZWU6IDAsXG4gICAgICBvdXREZWdyZWU6IDBcbiAgICB9O1xuICB9KTtcbiAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgIGRlZ3JlZXNbZWRnZS5zb3VyY2VdLmRlZ3JlZSsrO1xuICAgIGRlZ3JlZXNbZWRnZS5zb3VyY2VdLm91dERlZ3JlZSsrO1xuICAgIGRlZ3JlZXNbZWRnZS50YXJnZXRdLmRlZ3JlZSsrO1xuICAgIGRlZ3JlZXNbZWRnZS50YXJnZXRdLmluRGVncmVlKys7XG4gIH0pO1xuICByZXR1cm4gZGVncmVlcztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGRlZ3JlZTtcbi8qKlxuICog6I635Y+W5oyH5a6a6IqC54K555qE5YWl5bqmXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICogQHBhcmFtIG5vZGVJZCDoioLngrlJRFxuICovXG5cbmV4cG9ydCB2YXIgZ2V0SW5EZWdyZWUgPSBmdW5jdGlvbiBnZXRJbkRlZ3JlZShncmFwaERhdGEsIG5vZGVJZCkge1xuICB2YXIgbm9kZURlZ3JlZSA9IGRlZ3JlZShncmFwaERhdGEpO1xuXG4gIGlmIChub2RlRGVncmVlW25vZGVJZF0pIHtcbiAgICByZXR1cm4gZGVncmVlKGdyYXBoRGF0YSlbbm9kZUlkXS5pbkRlZ3JlZTtcbiAgfVxuXG4gIHJldHVybiAwO1xufTtcbi8qKlxuICog6I635Y+W5oyH5a6a6IqC54K555qE5Ye65bqmXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICogQHBhcmFtIG5vZGVJZCDoioLngrlJRFxuICovXG5cbmV4cG9ydCB2YXIgZ2V0T3V0RGVncmVlID0gZnVuY3Rpb24gZ2V0T3V0RGVncmVlKGdyYXBoRGF0YSwgbm9kZUlkKSB7XG4gIHZhciBub2RlRGVncmVlID0gZGVncmVlKGdyYXBoRGF0YSk7XG5cbiAgaWYgKG5vZGVEZWdyZWVbbm9kZUlkXSkge1xuICAgIHJldHVybiBkZWdyZWUoZ3JhcGhEYXRhKVtub2RlSWRdLm91dERlZ3JlZTtcbiAgfVxuXG4gIHJldHVybiAwO1xufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/degree.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/detect-cycle.js":
/*!*********************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/detect-cycle.js ***!
\*********************************************************************************/
/*! exports provided: detectAllUndirectedCycle, detectAllDirectedCycle, detectAllCycles, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"detectAllUndirectedCycle\", function() { return detectAllUndirectedCycle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"detectAllDirectedCycle\", function() { return detectAllDirectedCycle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"detectAllCycles\", function() { return detectAllCycles; });\n/* harmony import */ var _dfs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dfs */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/dfs.js\");\n/* harmony import */ var _connected_component__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./connected-component */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/connected-component.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/util.js\");\n\n\n\n\nvar detectDirectedCycle = function detectDirectedCycle(graphData) {\n var cycle = null;\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a;\n var dfsParentMap = {}; // 所有没有被访问的节点集合\n\n var unvisitedSet = {}; // 正在被访问的节点集合\n\n var visitingSet = {}; // 所有已经被访问过的节点集合\n\n var visitedSet = {}; // 初始化 unvisitedSet\n\n nodes.forEach(function (node) {\n unvisitedSet[node.id] = node;\n });\n var callbacks = {\n enter: function enter(_a) {\n var currentNode = _a.current,\n previousNode = _a.previous;\n\n if (visitingSet[currentNode]) {\n // 如果当前节点正在访问中,则说明检测到环路了\n cycle = {};\n var currentCycleNode = currentNode;\n var previousCycleNode = previousNode;\n\n while (previousCycleNode !== currentNode) {\n cycle[currentCycleNode] = previousCycleNode;\n currentCycleNode = previousCycleNode;\n previousCycleNode = dfsParentMap[previousCycleNode];\n }\n\n cycle[currentCycleNode] = previousCycleNode;\n } else {\n // 如果不存在正在访问集合中,则将其放入正在访问集合,并从未访问集合中删除\n visitingSet[currentNode] = currentNode;\n delete unvisitedSet[currentNode]; // 更新 DSF parents 列表\n\n dfsParentMap[currentNode] = previousNode;\n }\n },\n leave: function leave(_a) {\n var currentNode = _a.current; // 如果所有的节点的子节点都已经访问过了,则从正在访问集合中删除掉,并将其移入到已访问集合中,\n // 同时也意味着当前节点的所有邻居节点都被访问过了\n\n visitedSet[currentNode] = currentNode;\n delete visitingSet[currentNode];\n },\n allowTraversal: function allowTraversal(_a) {\n var nextNode = _a.next; // 如果检测到环路则需要终止所有进一步的遍历,否则会导致无限循环遍历\n\n if (cycle) {\n return false;\n } // 仅允许遍历没有访问的节点,visitedSet 中的都已经访问过了\n\n\n return !visitedSet[nextNode];\n }\n }; // 开始遍历节点\n\n while (Object.keys(unvisitedSet).length) {\n // 从第一个节点开始进行 DFS 遍历\n var firsetUnVisitedKey = Object.keys(unvisitedSet)[0];\n Object(_dfs__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(graphData, firsetUnVisitedKey, callbacks);\n }\n\n return cycle;\n};\n/**\n * 检测无向图中的所有Base cycles\n * refer: https://www.codeproject.com/Articles/1158232/Enumerating-All-Cycles-in-an-Undirected-Graph\n * @param graph\n * @param nodeIds 节点 ID 的数组\n * @param include 包含或排除指定的节点\n * @return [{[key: string]: INode}] 返回一组base cycles\n */\n\n\nvar detectAllUndirectedCycle = function detectAllUndirectedCycle(graphData, nodeIds, include) {\n var _a, _b;\n\n if (include === void 0) {\n include = true;\n }\n\n var allCycles = [];\n var components = Object(_connected_component__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(graphData, false); // loop through all connected components\n\n for (var _i = 0, components_1 = components; _i < components_1.length; _i++) {\n var component = components_1[_i];\n if (!component.length) continue;\n var root = component[0];\n var rootId = root.id;\n var stack = [root];\n var parent_1 = (_a = {}, _a[rootId] = root, _a);\n var used = (_b = {}, _b[rootId] = new Set(), _b); // walk a spanning tree to find cycles\n\n while (stack.length > 0) {\n var curNode = stack.pop();\n var curNodeId = curNode.id;\n var neighbors = Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"getNeighbors\"])(curNodeId, graphData.edges);\n\n var _loop_1 = function _loop_1(i) {\n var _c;\n\n var neighborId = neighbors[i];\n var neighbor = graphData.nodes.find(function (node) {\n return node.id === neighborId;\n }); // const neighborId = neighbor.get('id');\n\n if (neighborId === curNodeId) {\n // 自环\n allCycles.push((_c = {}, _c[neighborId] = curNode, _c));\n } else if (!(neighborId in used)) {\n // visit a new node\n parent_1[neighborId] = curNode;\n stack.push(neighbor);\n used[neighborId] = new Set([curNode]);\n } else if (!used[curNodeId].has(neighbor)) {\n // a cycle found\n var cycleValid = true;\n var cyclePath = [neighbor, curNode];\n var p = parent_1[curNodeId];\n\n while (used[neighborId].size && !used[neighborId].has(p)) {\n cyclePath.push(p);\n if (p === parent_1[p.id]) break;else p = parent_1[p.id];\n }\n\n cyclePath.push(p);\n\n if (nodeIds && include) {\n // 如果有指定包含的节点\n cycleValid = false;\n\n if (cyclePath.findIndex(function (node) {\n return nodeIds.indexOf(node.id) > -1;\n }) > -1) {\n cycleValid = true;\n }\n } else if (nodeIds && !include) {\n // 如果有指定不包含的节点\n if (cyclePath.findIndex(function (node) {\n return nodeIds.indexOf(node.id) > -1;\n }) > -1) {\n cycleValid = false;\n }\n } // 把 node list 形式转换为 cycle 的格式\n\n\n if (cycleValid) {\n var cycle = {};\n\n for (var index = 1; index < cyclePath.length; index += 1) {\n cycle[cyclePath[index - 1].id] = cyclePath[index];\n }\n\n if (cyclePath.length) {\n cycle[cyclePath[cyclePath.length - 1].id] = cyclePath[0];\n }\n\n allCycles.push(cycle);\n }\n\n used[neighborId].add(curNode);\n }\n };\n\n for (var i = 0; i < neighbors.length; i += 1) {\n _loop_1(i);\n }\n }\n }\n\n return allCycles;\n};\n/**\n * Johnson's algorithm, 时间复杂度 O((V + E)(C + 1))$ and space bounded by O(V + E)\n * refer: https://www.cs.tufts.edu/comp/150GA/homeworks/hw1/Johnson%2075.PDF\n * refer: https://networkx.github.io/documentation/stable/_modules/networkx/algorithms/cycles.html#simple_cycles\n * @param graph\n * @param nodeIds 节点 ID 的数组\n * @param include 包含或排除指定的节点\n * @return [{[key: string]: INode}] 返回所有的 simple cycles\n */\n\nvar detectAllDirectedCycle = function detectAllDirectedCycle(graphData, nodeIds, include) {\n if (include === void 0) {\n include = true;\n }\n\n var path = []; // stack of nodes in current path\n\n var blocked = new Set();\n var B = []; // remember portions of the graph that yield no elementary circuit\n\n var allCycles = [];\n var idx2Node = {};\n var node2Idx = {}; // 辅助函数: unblock all blocked nodes\n\n var unblock = function unblock(thisNode) {\n var stack = [thisNode];\n\n while (stack.length > 0) {\n var node = stack.pop();\n\n if (blocked.has(node)) {\n blocked.delete(node);\n B[node.id].forEach(function (n) {\n stack.push(n);\n });\n B[node.id].clear();\n }\n }\n };\n\n var circuit = function circuit(node, start, adjList) {\n var closed = false; // whether a path is closed\n\n if (nodeIds && include === false && nodeIds.indexOf(node.id) > -1) return closed;\n path.push(node);\n blocked.add(node);\n var neighbors = adjList[node.id];\n\n for (var i = 0; i < neighbors.length; i += 1) {\n var neighbor = idx2Node[neighbors[i]];\n\n if (neighbor === start) {\n var cycle = {};\n\n for (var index = 1; index < path.length; index += 1) {\n cycle[path[index - 1].id] = path[index];\n }\n\n if (path.length) {\n cycle[path[path.length - 1].id] = path[0];\n }\n\n allCycles.push(cycle);\n closed = true;\n } else if (!blocked.has(neighbor)) {\n if (circuit(neighbor, start, adjList)) {\n closed = true;\n }\n }\n }\n\n if (closed) {\n unblock(node);\n } else {\n for (var i = 0; i < neighbors.length; i += 1) {\n var neighbor = idx2Node[neighbors[i]];\n\n if (!B[neighbor.id].has(node)) {\n B[neighbor.id].add(node);\n }\n }\n }\n\n path.pop();\n return closed;\n };\n\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a; // Johnson's algorithm 要求给节点赋顺序,先按节点在数组中的顺序\n\n for (var i = 0; i < nodes.length; i += 1) {\n var node = nodes[i];\n var nodeId = node.id;\n node2Idx[nodeId] = i;\n idx2Node[i] = node;\n } // 如果有指定包含的节点,则把指定节点排序在前,以便提早结束搜索\n\n\n if (nodeIds && include) {\n var _loop_2 = function _loop_2(i) {\n var nodeId = nodeIds[i];\n node2Idx[nodes[i].id] = node2Idx[nodeId];\n node2Idx[nodeId] = 0;\n idx2Node[0] = nodes.find(function (node) {\n return node.id === nodeId;\n });\n idx2Node[node2Idx[nodes[i].id]] = nodes[i];\n };\n\n for (var i = 0; i < nodeIds.length; i++) {\n _loop_2(i);\n }\n } // 返回 节点顺序 >= nodeOrder 的强连通分量的adjList\n\n\n var getMinComponentAdj = function getMinComponentAdj(components) {\n var _a;\n\n var minCompIdx;\n var minIdx = Infinity; // Find least component and the lowest node\n\n for (var i = 0; i < components.length; i += 1) {\n var comp = components[i];\n\n for (var j = 0; j < comp.length; j++) {\n var nodeIdx_1 = node2Idx[comp[j].id];\n\n if (nodeIdx_1 < minIdx) {\n minIdx = nodeIdx_1;\n minCompIdx = i;\n }\n }\n }\n\n var component = components[minCompIdx];\n var adjList = [];\n\n for (var i = 0; i < component.length; i += 1) {\n var node = component[i];\n adjList[node.id] = [];\n\n for (var _i = 0, _b = Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"getNeighbors\"])(node.id, graphData.edges, 'target').filter(function (n) {\n return component.map(function (c) {\n return c.id;\n }).indexOf(n) > -1;\n }); _i < _b.length; _i++) {\n var neighbor = _b[_i]; // 对自环情况 (点连向自身) 特殊处理:记录自环,但不加入adjList\n\n if (neighbor === node.id && !(include === false && nodeIds.indexOf(node.id) > -1)) {\n allCycles.push((_a = {}, _a[node.id] = node, _a));\n } else {\n adjList[node.id].push(node2Idx[neighbor]);\n }\n }\n }\n\n return {\n component: component,\n adjList: adjList,\n minIdx: minIdx\n };\n };\n\n var nodeIdx = 0;\n\n while (nodeIdx < nodes.length) {\n var subgraphNodes = nodes.filter(function (n) {\n return node2Idx[n.id] >= nodeIdx;\n });\n var sccs = Object(_connected_component__WEBPACK_IMPORTED_MODULE_1__[\"detectStrongConnectComponents\"])({\n nodes: subgraphNodes,\n edges: graphData.edges\n }).filter(function (component) {\n return component.length > 1;\n });\n if (sccs.length === 0) break;\n var scc = getMinComponentAdj(sccs);\n var minIdx = scc.minIdx,\n adjList = scc.adjList,\n component = scc.component;\n\n if (component.length > 1) {\n component.forEach(function (node) {\n B[node.id] = new Set();\n });\n var startNode = idx2Node[minIdx]; // startNode 不在指定要包含的节点中,提前结束搜索\n\n if (nodeIds && include && nodeIds.indexOf(startNode.id) === -1) return allCycles;\n circuit(startNode, startNode, adjList);\n nodeIdx = minIdx + 1;\n } else {\n break;\n }\n }\n\n return allCycles;\n};\n/**\n * 查找图中所有满足要求的圈\n * @param graph\n * @param directed 是否为有向图\n * @param nodeIds 节点 ID 的数组,若不指定,则返回图中所有的圈\n * @param include 包含或排除指定的节点\n * @return [{[key: string]: Node}] 包含所有环的数组,每个环用一个Object表示,其中key为节点id,value为该节点在环中指向的下一个节点\n */\n\nvar detectAllCycles = function detectAllCycles(graphData, directed, nodeIds, include) {\n if (include === void 0) {\n include = true;\n }\n\n if (directed) return detectAllDirectedCycle(graphData, nodeIds, include);\n return detectAllUndirectedCycle(graphData, nodeIds, include);\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (detectDirectedCycle);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2RldGVjdC1jeWNsZS5qcz8yYTAzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXdCO0FBQ3NFO0FBQ3hEOztBQUV0QztBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qjs7QUFFeEIsd0JBQXdCOztBQUV4Qix1QkFBdUI7O0FBRXZCLHNCQUFzQjs7QUFFdEI7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLHlDQUF5Qzs7QUFFekM7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLG1DQUFtQztBQUNuQzs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsNkJBQTZCOztBQUU3QjtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0EsSUFBSSxvREFBRztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHFCQUFxQjtBQUNsQzs7O0FBR087QUFDUDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsb0VBQXNCLG1CQUFtQjs7QUFFNUQsNkNBQTZDLDBCQUEwQjtBQUN2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCLHVCQUF1Qiw4QkFBOEI7O0FBRXJEO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQiwwREFBWTs7QUFFbEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEVBQUU7O0FBRVg7QUFDQTtBQUNBLGlDQUFpQztBQUNqQyxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDRDQUE0QztBQUM1Qzs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsV0FBVzs7O0FBR1g7QUFDQTs7QUFFQSwrQkFBK0IsMEJBQTBCO0FBQ3pEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHFCQUFxQixzQkFBc0I7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxxQkFBcUI7QUFDbEM7O0FBRU87QUFDUDtBQUNBO0FBQ0E7O0FBRUEsZ0JBQWdCOztBQUVoQjtBQUNBLGFBQWE7O0FBRWI7QUFDQTtBQUNBLG9CQUFvQjs7QUFFcEI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUJBQXVCOztBQUV2QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsc0JBQXNCO0FBQ3pDOztBQUVBO0FBQ0E7O0FBRUEsMkJBQTJCLHFCQUFxQjtBQUNoRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTCxxQkFBcUIsc0JBQXNCO0FBQzNDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0Esc0NBQXNDOztBQUV0QyxpQkFBaUIsa0JBQWtCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQSxtQkFBbUIsb0JBQW9CO0FBQ3ZDO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBOztBQUVBO0FBQ0EsMEJBQTBCOztBQUUxQixtQkFBbUIsdUJBQXVCO0FBQzFDOztBQUVBLHFCQUFxQixpQkFBaUI7QUFDdEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsbUJBQW1CLHNCQUFzQjtBQUN6QztBQUNBOztBQUVBLDRCQUE0QiwwREFBWTtBQUN4QztBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU8sRUFBRSxnQkFBZ0I7QUFDekIsOEJBQThCOztBQUU5QjtBQUNBLGlDQUFpQztBQUNqQyxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxlQUFlLDBGQUE2QjtBQUM1QztBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLHVDQUF1Qzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxvQkFBb0I7QUFDakM7O0FBRU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ2Usa0ZBQW1CIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9lcy9kZXRlY3QtY3ljbGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGZzIGZyb20gJy4vZGZzJztcbmltcG9ydCBnZXRDb25uZWN0ZWRDb21wb25lbnRzLCB7IGRldGVjdFN0cm9uZ0Nvbm5lY3RDb21wb25lbnRzIH0gZnJvbSAnLi9jb25uZWN0ZWQtY29tcG9uZW50JztcbmltcG9ydCB7IGdldE5laWdoYm9ycyB9IGZyb20gJy4vdXRpbCc7XG5cbnZhciBkZXRlY3REaXJlY3RlZEN5Y2xlID0gZnVuY3Rpb24gZGV0ZWN0RGlyZWN0ZWRDeWNsZShncmFwaERhdGEpIHtcbiAgdmFyIGN5Y2xlID0gbnVsbDtcbiAgdmFyIF9hID0gZ3JhcGhEYXRhLm5vZGVzLFxuICAgICAgbm9kZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYTtcbiAgdmFyIGRmc1BhcmVudE1hcCA9IHt9OyAvLyDmiYDmnInmsqHmnInooqvorr/pl67nmoToioLngrnpm4blkIhcblxuICB2YXIgdW52aXNpdGVkU2V0ID0ge307IC8vIOato+WcqOiiq+iuv+mXrueahOiKgueCuembhuWQiFxuXG4gIHZhciB2aXNpdGluZ1NldCA9IHt9OyAvLyDmiYDmnInlt7Lnu4/ooqvorr/pl67ov4fnmoToioLngrnpm4blkIhcblxuICB2YXIgdmlzaXRlZFNldCA9IHt9OyAvLyDliJ3lp4vljJYgdW52aXNpdGVkU2V0XG5cbiAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgIHVudmlzaXRlZFNldFtub2RlLmlkXSA9IG5vZGU7XG4gIH0pO1xuICB2YXIgY2FsbGJhY2tzID0ge1xuICAgIGVudGVyOiBmdW5jdGlvbiBlbnRlcihfYSkge1xuICAgICAgdmFyIGN1cnJlbnROb2RlID0gX2EuY3VycmVudCxcbiAgICAgICAgICBwcmV2aW91c05vZGUgPSBfYS5wcmV2aW91cztcblxuICAgICAgaWYgKHZpc2l0aW5nU2V0W2N1cnJlbnROb2RlXSkge1xuICAgICAgICAvLyDlpoLmnpzlvZPliY3oioLngrnmraPlnKjorr/pl67kuK3vvIzliJnor7TmmI7mo4DmtYvliLDnjq/ot6/kuoZcbiAgICAgICAgY3ljbGUgPSB7fTtcbiAgICAgICAgdmFyIGN1cnJlbnRDeWNsZU5vZGUgPSBjdXJyZW50Tm9kZTtcbiAgICAgICAgdmFyIHByZXZpb3VzQ3ljbGVOb2RlID0gcHJldmlvdXNOb2RlO1xuXG4gICAgICAgIHdoaWxlIChwcmV2aW91c0N5Y2xlTm9kZSAhPT0gY3VycmVudE5vZGUpIHtcbiAgICAgICAgICBjeWNsZVtjdXJyZW50Q3ljbGVOb2RlXSA9IHByZXZpb3VzQ3ljbGVOb2RlO1xuICAgICAgICAgIGN1cnJlbnRDeWNsZU5vZGUgPSBwcmV2aW91c0N5Y2xlTm9kZTtcbiAgICAgICAgICBwcmV2aW91c0N5Y2xlTm9kZSA9IGRmc1BhcmVudE1hcFtwcmV2aW91c0N5Y2xlTm9kZV07XG4gICAgICAgIH1cblxuICAgICAgICBjeWNsZVtjdXJyZW50Q3ljbGVOb2RlXSA9IHByZXZpb3VzQ3ljbGVOb2RlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8g5aaC5p6c5LiN5a2Y5Zyo5q2j5Zyo6K6/6Zeu6ZuG5ZCI5Lit77yM5YiZ5bCG5YW25pS+5YWl5q2j5Zyo6K6/6Zeu6ZuG5ZCI77yM5bm25LuO5pyq6K6/6Zeu6ZuG5ZCI5Lit5Yig6ZmkXG4gICAgICAgIHZpc2l0aW5nU2V0W2N1cnJlbnROb2RlXSA9IGN1cnJlbnROb2RlO1xuICAgICAgICBkZWxldGUgdW52aXNpdGVkU2V0W2N1cnJlbnROb2RlXTsgLy8g5pu05pawIERTRiBwYXJlbnRzIOWIl+ihqFxuXG4gICAgICAgIGRmc1BhcmVudE1hcFtjdXJyZW50Tm9kZV0gPSBwcmV2aW91c05vZGU7XG4gICAgICB9XG4gICAgfSxcbiAgICBsZWF2ZTogZnVuY3Rpb24gbGVhdmUoX2EpIHtcbiAgICAgIHZhciBjdXJyZW50Tm9kZSA9IF9hLmN1cnJlbnQ7IC8vIOWmguaenOaJgOacieeahOiKgueCueeahOWtkOiKgueCuemDveW3sue7j+iuv+mXrui/h+S6hu+8jOWImeS7juato+WcqOiuv+mXrumbhuWQiOS4reWIoOmZpOaOie+8jOW5tuWwhuWFtuenu+WFpeWIsOW3suiuv+mXrumbhuWQiOS4re+8jFxuICAgICAgLy8g5ZCM5pe25Lmf5oSP5ZGz552A5b2T5YmN6IqC54K555qE5omA5pyJ6YK75bGF6IqC54K56YO96KKr6K6/6Zeu6L+H5LqGXG5cbiAgICAgIHZpc2l0ZWRTZXRbY3VycmVudE5vZGVdID0gY3VycmVudE5vZGU7XG4gICAgICBkZWxldGUgdmlzaXRpbmdTZXRbY3VycmVudE5vZGVdO1xuICAgIH0sXG4gICAgYWxsb3dUcmF2ZXJzYWw6IGZ1bmN0aW9uIGFsbG93VHJhdmVyc2FsKF9hKSB7XG4gICAgICB2YXIgbmV4dE5vZGUgPSBfYS5uZXh0OyAvLyDlpoLmnpzmo4DmtYvliLDnjq/ot6/liJnpnIDopoHnu4jmraLmiYDmnInov5vkuIDmraXnmoTpgY3ljobvvIzlkKbliJnkvJrlr7zoh7Tml6DpmZDlvqrnjq/pgY3ljoZcblxuICAgICAgaWYgKGN5Y2xlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gLy8g5LuF5YWB6K646YGN5Y6G5rKh5pyJ6K6/6Zeu55qE6IqC54K577yMdmlzaXRlZFNldCDkuK3nmoTpg73lt7Lnu4/orr/pl67ov4fkuoZcblxuXG4gICAgICByZXR1cm4gIXZpc2l0ZWRTZXRbbmV4dE5vZGVdO1xuICAgIH1cbiAgfTsgLy8g5byA5aeL6YGN5Y6G6IqC54K5XG5cbiAgd2hpbGUgKE9iamVjdC5rZXlzKHVudmlzaXRlZFNldCkubGVuZ3RoKSB7XG4gICAgLy8g5LuO56ys5LiA5Liq6IqC54K55byA5aeL6L+b6KGMIERGUyDpgY3ljoZcbiAgICB2YXIgZmlyc2V0VW5WaXNpdGVkS2V5ID0gT2JqZWN0LmtleXModW52aXNpdGVkU2V0KVswXTtcbiAgICBkZnMoZ3JhcGhEYXRhLCBmaXJzZXRVblZpc2l0ZWRLZXksIGNhbGxiYWNrcyk7XG4gIH1cblxuICByZXR1cm4gY3ljbGU7XG59O1xuLyoqXG4gKiDmo4DmtYvml6DlkJHlm77kuK3nmoTmiYDmnIlCYXNlIGN5Y2xlc1xuICogcmVmZXI6IGh0dHBzOi8vd3d3LmNvZGVwcm9qZWN0LmNvbS9BcnRpY2xlcy8xMTU4MjMyL0VudW1lcmF0aW5nLUFsbC1DeWNsZXMtaW4tYW4tVW5kaXJlY3RlZC1HcmFwaFxuICogQHBhcmFtIGdyYXBoXG4gKiBAcGFyYW0gbm9kZUlkcyDoioLngrkgSUQg55qE5pWw57uEXG4gKiBAcGFyYW0gaW5jbHVkZSDljIXlkKvmiJbmjpLpmaTmjIflrprnmoToioLngrlcbiAqIEByZXR1cm4gW3tba2V5OiBzdHJpbmddOiBJTm9kZX1dIOi/lOWbnuS4gOe7hGJhc2UgY3ljbGVzXG4gKi9cblxuXG5leHBvcnQgdmFyIGRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZSA9IGZ1bmN0aW9uIGRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZShncmFwaERhdGEsIG5vZGVJZHMsIGluY2x1ZGUpIHtcbiAgdmFyIF9hLCBfYjtcblxuICBpZiAoaW5jbHVkZSA9PT0gdm9pZCAwKSB7XG4gICAgaW5jbHVkZSA9IHRydWU7XG4gIH1cblxuICB2YXIgYWxsQ3ljbGVzID0gW107XG4gIHZhciBjb21wb25lbnRzID0gZ2V0Q29ubmVjdGVkQ29tcG9uZW50cyhncmFwaERhdGEsIGZhbHNlKTsgLy8gbG9vcCB0aHJvdWdoIGFsbCBjb25uZWN0ZWQgY29tcG9uZW50c1xuXG4gIGZvciAodmFyIF9pID0gMCwgY29tcG9uZW50c18xID0gY29tcG9uZW50czsgX2kgPCBjb21wb25lbnRzXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgdmFyIGNvbXBvbmVudCA9IGNvbXBvbmVudHNfMVtfaV07XG4gICAgaWYgKCFjb21wb25lbnQubGVuZ3RoKSBjb250aW51ZTtcbiAgICB2YXIgcm9vdCA9IGNvbXBvbmVudFswXTtcbiAgICB2YXIgcm9vdElkID0gcm9vdC5pZDtcbiAgICB2YXIgc3RhY2sgPSBbcm9vdF07XG4gICAgdmFyIHBhcmVudF8xID0gKF9hID0ge30sIF9hW3Jvb3RJZF0gPSByb290LCBfYSk7XG4gICAgdmFyIHVzZWQgPSAoX2IgPSB7fSwgX2Jbcm9vdElkXSA9IG5ldyBTZXQoKSwgX2IpOyAvLyB3YWxrIGEgc3Bhbm5pbmcgdHJlZSB0byBmaW5kIGN5Y2xlc1xuXG4gICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhciBjdXJOb2RlID0gc3RhY2sucG9wKCk7XG4gICAgICB2YXIgY3VyTm9kZUlkID0gY3VyTm9kZS5pZDtcbiAgICAgIHZhciBuZWlnaGJvcnMgPSBnZXROZWlnaGJvcnMoY3VyTm9kZUlkLCBncmFwaERhdGEuZWRnZXMpO1xuXG4gICAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIF9sb29wXzEoaSkge1xuICAgICAgICB2YXIgX2M7XG5cbiAgICAgICAgdmFyIG5laWdoYm9ySWQgPSBuZWlnaGJvcnNbaV07XG4gICAgICAgIHZhciBuZWlnaGJvciA9IGdyYXBoRGF0YS5ub2Rlcy5maW5kKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgcmV0dXJuIG5vZGUuaWQgPT09IG5laWdoYm9ySWQ7XG4gICAgICAgIH0pOyAvLyBjb25zdCBuZWlnaGJvcklkID0gbmVpZ2hib3IuZ2V0KCdpZCcpO1xuXG4gICAgICAgIGlmIChuZWlnaGJvcklkID09PSBjdXJOb2RlSWQpIHtcbiAgICAgICAgICAvLyDoh6rnjq9cbiAgICAgICAgICBhbGxDeWNsZXMucHVzaCgoX2MgPSB7fSwgX2NbbmVpZ2hib3JJZF0gPSBjdXJOb2RlLCBfYykpO1xuICAgICAgICB9IGVsc2UgaWYgKCEobmVpZ2hib3JJZCBpbiB1c2VkKSkge1xuICAgICAgICAgIC8vIHZpc2l0IGEgbmV3IG5vZGVcbiAgICAgICAgICBwYXJlbnRfMVtuZWlnaGJvcklkXSA9IGN1ck5vZGU7XG4gICAgICAgICAgc3RhY2sucHVzaChuZWlnaGJvcik7XG4gICAgICAgICAgdXNlZFtuZWlnaGJvcklkXSA9IG5ldyBTZXQoW2N1ck5vZGVdKTtcbiAgICAgICAgfSBlbHNlIGlmICghdXNlZFtjdXJOb2RlSWRdLmhhcyhuZWlnaGJvcikpIHtcbiAgICAgICAgICAvLyBhIGN5Y2xlIGZvdW5kXG4gICAgICAgICAgdmFyIGN5Y2xlVmFsaWQgPSB0cnVlO1xuICAgICAgICAgIHZhciBjeWNsZVBhdGggPSBbbmVpZ2hib3IsIGN1ck5vZGVdO1xuICAgICAgICAgIHZhciBwID0gcGFyZW50XzFbY3VyTm9kZUlkXTtcblxuICAgICAgICAgIHdoaWxlICh1c2VkW25laWdoYm9ySWRdLnNpemUgJiYgIXVzZWRbbmVpZ2hib3JJZF0uaGFzKHApKSB7XG4gICAgICAgICAgICBjeWNsZVBhdGgucHVzaChwKTtcbiAgICAgICAgICAgIGlmIChwID09PSBwYXJlbnRfMVtwLmlkXSkgYnJlYWs7ZWxzZSBwID0gcGFyZW50XzFbcC5pZF07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY3ljbGVQYXRoLnB1c2gocCk7XG5cbiAgICAgICAgICBpZiAobm9kZUlkcyAmJiBpbmNsdWRlKSB7XG4gICAgICAgICAgICAvLyDlpoLmnpzmnInmjIflrprljIXlkKvnmoToioLngrlcbiAgICAgICAgICAgIGN5Y2xlVmFsaWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKGN5Y2xlUGF0aC5maW5kSW5kZXgoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG5vZGVJZHMuaW5kZXhPZihub2RlLmlkKSA+IC0xO1xuICAgICAgICAgICAgfSkgPiAtMSkge1xuICAgICAgICAgICAgICBjeWNsZVZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKG5vZGVJZHMgJiYgIWluY2x1ZGUpIHtcbiAgICAgICAgICAgIC8vIOWmguaenOacieaMh+WumuS4jeWMheWQq+eahOiKgueCuVxuICAgICAgICAgICAgaWYgKGN5Y2xlUGF0aC5maW5kSW5kZXgoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG5vZGVJZHMuaW5kZXhPZihub2RlLmlkKSA+IC0xO1xuICAgICAgICAgICAgfSkgPiAtMSkge1xuICAgICAgICAgICAgICBjeWNsZVZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSAvLyDmioogbm9kZSBsaXN0IOW9ouW8j+i9rOaNouS4uiBjeWNsZSDnmoTmoLzlvI9cblxuXG4gICAgICAgICAgaWYgKGN5Y2xlVmFsaWQpIHtcbiAgICAgICAgICAgIHZhciBjeWNsZSA9IHt9O1xuXG4gICAgICAgICAgICBmb3IgKHZhciBpbmRleCA9IDE7IGluZGV4IDwgY3ljbGVQYXRoLmxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAgICAgICAgICBjeWNsZVtjeWNsZVBhdGhbaW5kZXggLSAxXS5pZF0gPSBjeWNsZVBhdGhbaW5kZXhdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY3ljbGVQYXRoLmxlbmd0aCkge1xuICAgICAgICAgICAgICBjeWNsZVtjeWNsZVBhdGhbY3ljbGVQYXRoLmxlbmd0aCAtIDFdLmlkXSA9IGN5Y2xlUGF0aFswXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYWxsQ3ljbGVzLnB1c2goY3ljbGUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHVzZWRbbmVpZ2hib3JJZF0uYWRkKGN1ck5vZGUpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5laWdoYm9ycy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICBfbG9vcF8xKGkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhbGxDeWNsZXM7XG59O1xuLyoqXG4gKiBKb2huc29uJ3MgYWxnb3JpdGhtLCDml7bpl7TlpI3mnYLluqYgTygoViArIEUpKEMgKyAxKSkkIGFuZCBzcGFjZSBib3VuZGVkIGJ5IE8oViArIEUpXG4gKiByZWZlcjogaHR0cHM6Ly93d3cuY3MudHVmdHMuZWR1L2NvbXAvMTUwR0EvaG9tZXdvcmtzL2h3MS9Kb2huc29uJTIwNzUuUERGXG4gKiByZWZlcjogaHR0cHM6Ly9uZXR3b3JreC5naXRodWIuaW8vZG9jdW1lbnRhdGlvbi9zdGFibGUvX21vZHVsZXMvbmV0d29ya3gvYWxnb3JpdGhtcy9jeWNsZXMuaHRtbCNzaW1wbGVfY3ljbGVzXG4gKiBAcGFyYW0gZ3JhcGhcbiAqIEBwYXJhbSBub2RlSWRzIOiKgueCuSBJRCDnmoTmlbDnu4RcbiAqIEBwYXJhbSBpbmNsdWRlIOWMheWQq+aIluaOkumZpOaMh+WumueahOiKgueCuVxuICogQHJldHVybiBbe1trZXk6IHN0cmluZ106IElOb2RlfV0g6L+U5Zue5omA5pyJ55qEIHNpbXBsZSBjeWNsZXNcbiAqL1xuXG5leHBvcnQgdmFyIGRldGVjdEFsbERpcmVjdGVkQ3ljbGUgPSBmdW5jdGlvbiBkZXRlY3RBbGxEaXJlY3RlZEN5Y2xlKGdyYXBoRGF0YSwgbm9kZUlkcywgaW5jbHVkZSkge1xuICBpZiAoaW5jbHVkZSA9PT0gdm9pZCAwKSB7XG4gICAgaW5jbHVkZSA9IHRydWU7XG4gIH1cblxuICB2YXIgcGF0aCA9IFtdOyAvLyBzdGFjayBvZiBub2RlcyBpbiBjdXJyZW50IHBhdGhcblxuICB2YXIgYmxvY2tlZCA9IG5ldyBTZXQoKTtcbiAgdmFyIEIgPSBbXTsgLy8gcmVtZW1iZXIgcG9ydGlvbnMgb2YgdGhlIGdyYXBoIHRoYXQgeWllbGQgbm8gZWxlbWVudGFyeSBjaXJjdWl0XG5cbiAgdmFyIGFsbEN5Y2xlcyA9IFtdO1xuICB2YXIgaWR4Mk5vZGUgPSB7fTtcbiAgdmFyIG5vZGUySWR4ID0ge307IC8vIOi+heWKqeWHveaVsO+8miB1bmJsb2NrIGFsbCBibG9ja2VkIG5vZGVzXG5cbiAgdmFyIHVuYmxvY2sgPSBmdW5jdGlvbiB1bmJsb2NrKHRoaXNOb2RlKSB7XG4gICAgdmFyIHN0YWNrID0gW3RoaXNOb2RlXTtcblxuICAgIHdoaWxlIChzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICB2YXIgbm9kZSA9IHN0YWNrLnBvcCgpO1xuXG4gICAgICBpZiAoYmxvY2tlZC5oYXMobm9kZSkpIHtcbiAgICAgICAgYmxvY2tlZC5kZWxldGUobm9kZSk7XG4gICAgICAgIEJbbm9kZS5pZF0uZm9yRWFjaChmdW5jdGlvbiAobikge1xuICAgICAgICAgIHN0YWNrLnB1c2gobik7XG4gICAgICAgIH0pO1xuICAgICAgICBCW25vZGUuaWRdLmNsZWFyKCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHZhciBjaXJjdWl0ID0gZnVuY3Rpb24gY2lyY3VpdChub2RlLCBzdGFydCwgYWRqTGlzdCkge1xuICAgIHZhciBjbG9zZWQgPSBmYWxzZTsgLy8gd2hldGhlciBhIHBhdGggaXMgY2xvc2VkXG5cbiAgICBpZiAobm9kZUlkcyAmJiBpbmNsdWRlID09PSBmYWxzZSAmJiBub2RlSWRzLmluZGV4T2Yobm9kZS5pZCkgPiAtMSkgcmV0dXJuIGNsb3NlZDtcbiAgICBwYXRoLnB1c2gobm9kZSk7XG4gICAgYmxvY2tlZC5hZGQobm9kZSk7XG4gICAgdmFyIG5laWdoYm9ycyA9IGFkakxpc3Rbbm9kZS5pZF07XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5laWdoYm9ycy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgdmFyIG5laWdoYm9yID0gaWR4Mk5vZGVbbmVpZ2hib3JzW2ldXTtcblxuICAgICAgaWYgKG5laWdoYm9yID09PSBzdGFydCkge1xuICAgICAgICB2YXIgY3ljbGUgPSB7fTtcblxuICAgICAgICBmb3IgKHZhciBpbmRleCA9IDE7IGluZGV4IDwgcGF0aC5sZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICAgICAgICBjeWNsZVtwYXRoW2luZGV4IC0gMV0uaWRdID0gcGF0aFtpbmRleF07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGF0aC5sZW5ndGgpIHtcbiAgICAgICAgICBjeWNsZVtwYXRoW3BhdGgubGVuZ3RoIC0gMV0uaWRdID0gcGF0aFswXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGFsbEN5Y2xlcy5wdXNoKGN5Y2xlKTtcbiAgICAgICAgY2xvc2VkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAoIWJsb2NrZWQuaGFzKG5laWdoYm9yKSkge1xuICAgICAgICBpZiAoY2lyY3VpdChuZWlnaGJvciwgc3RhcnQsIGFkakxpc3QpKSB7XG4gICAgICAgICAgY2xvc2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjbG9zZWQpIHtcbiAgICAgIHVuYmxvY2sobm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmVpZ2hib3JzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIHZhciBuZWlnaGJvciA9IGlkeDJOb2RlW25laWdoYm9yc1tpXV07XG5cbiAgICAgICAgaWYgKCFCW25laWdoYm9yLmlkXS5oYXMobm9kZSkpIHtcbiAgICAgICAgICBCW25laWdoYm9yLmlkXS5hZGQobm9kZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBwYXRoLnBvcCgpO1xuICAgIHJldHVybiBjbG9zZWQ7XG4gIH07XG5cbiAgdmFyIF9hID0gZ3JhcGhEYXRhLm5vZGVzLFxuICAgICAgbm9kZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYTsgLy8gSm9obnNvbidzIGFsZ29yaXRobSDopoHmsYLnu5noioLngrnotYvpobrluo/vvIzlhYjmjInoioLngrnlnKjmlbDnu4TkuK3nmoTpobrluo9cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgdmFyIG5vZGUgPSBub2Rlc1tpXTtcbiAgICB2YXIgbm9kZUlkID0gbm9kZS5pZDtcbiAgICBub2RlMklkeFtub2RlSWRdID0gaTtcbiAgICBpZHgyTm9kZVtpXSA9IG5vZGU7XG4gIH0gLy8g5aaC5p6c5pyJ5oyH5a6a5YyF5ZCr55qE6IqC54K577yM5YiZ5oqK5oyH5a6a6IqC54K55o6S5bqP5Zyo5YmN77yM5Lul5L6/5o+Q5pep57uT5p2f5pCc57SiXG5cblxuICBpZiAobm9kZUlkcyAmJiBpbmNsdWRlKSB7XG4gICAgdmFyIF9sb29wXzIgPSBmdW5jdGlvbiBfbG9vcF8yKGkpIHtcbiAgICAgIHZhciBub2RlSWQgPSBub2RlSWRzW2ldO1xuICAgICAgbm9kZTJJZHhbbm9kZXNbaV0uaWRdID0gbm9kZTJJZHhbbm9kZUlkXTtcbiAgICAgIG5vZGUySWR4W25vZGVJZF0gPSAwO1xuICAgICAgaWR4Mk5vZGVbMF0gPSBub2Rlcy5maW5kKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHJldHVybiBub2RlLmlkID09PSBub2RlSWQ7XG4gICAgICB9KTtcbiAgICAgIGlkeDJOb2RlW25vZGUySWR4W25vZGVzW2ldLmlkXV0gPSBub2Rlc1tpXTtcbiAgICB9O1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlSWRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBfbG9vcF8yKGkpO1xuICAgIH1cbiAgfSAvLyDov5Tlm54g6IqC54K56aG65bqPID49IG5vZGVPcmRlciDnmoTlvLrov57pgJrliIbph4/nmoRhZGpMaXN0XG5cblxuICB2YXIgZ2V0TWluQ29tcG9uZW50QWRqID0gZnVuY3Rpb24gZ2V0TWluQ29tcG9uZW50QWRqKGNvbXBvbmVudHMpIHtcbiAgICB2YXIgX2E7XG5cbiAgICB2YXIgbWluQ29tcElkeDtcbiAgICB2YXIgbWluSWR4ID0gSW5maW5pdHk7IC8vIEZpbmQgbGVhc3QgY29tcG9uZW50IGFuZCB0aGUgbG93ZXN0IG5vZGVcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29tcG9uZW50cy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgdmFyIGNvbXAgPSBjb21wb25lbnRzW2ldO1xuXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGNvbXAubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdmFyIG5vZGVJZHhfMSA9IG5vZGUySWR4W2NvbXBbal0uaWRdO1xuXG4gICAgICAgIGlmIChub2RlSWR4XzEgPCBtaW5JZHgpIHtcbiAgICAgICAgICBtaW5JZHggPSBub2RlSWR4XzE7XG4gICAgICAgICAgbWluQ29tcElkeCA9IGk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgY29tcG9uZW50ID0gY29tcG9uZW50c1ttaW5Db21wSWR4XTtcbiAgICB2YXIgYWRqTGlzdCA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21wb25lbnQubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIHZhciBub2RlID0gY29tcG9uZW50W2ldO1xuICAgICAgYWRqTGlzdFtub2RlLmlkXSA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBfaSA9IDAsIF9iID0gZ2V0TmVpZ2hib3JzKG5vZGUuaWQsIGdyYXBoRGF0YS5lZGdlcywgJ3RhcmdldCcpLmZpbHRlcihmdW5jdGlvbiAobikge1xuICAgICAgICByZXR1cm4gY29tcG9uZW50Lm1hcChmdW5jdGlvbiAoYykge1xuICAgICAgICAgIHJldHVybiBjLmlkO1xuICAgICAgICB9KS5pbmRleE9mKG4pID4gLTE7XG4gICAgICB9KTsgX2kgPCBfYi5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgdmFyIG5laWdoYm9yID0gX2JbX2ldOyAvLyDlr7noh6rnjq/mg4XlhrUgKOeCuei/nuWQkeiHqui6qykg54m55q6K5aSE55CG77ya6K6w5b2V6Ieq546v77yM5L2G5LiN5Yqg5YWlYWRqTGlzdFxuXG4gICAgICAgIGlmIChuZWlnaGJvciA9PT0gbm9kZS5pZCAmJiAhKGluY2x1ZGUgPT09IGZhbHNlICYmIG5vZGVJZHMuaW5kZXhPZihub2RlLmlkKSA+IC0xKSkge1xuICAgICAgICAgIGFsbEN5Y2xlcy5wdXNoKChfYSA9IHt9LCBfYVtub2RlLmlkXSA9IG5vZGUsIF9hKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWRqTGlzdFtub2RlLmlkXS5wdXNoKG5vZGUySWR4W25laWdoYm9yXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29tcG9uZW50OiBjb21wb25lbnQsXG4gICAgICBhZGpMaXN0OiBhZGpMaXN0LFxuICAgICAgbWluSWR4OiBtaW5JZHhcbiAgICB9O1xuICB9O1xuXG4gIHZhciBub2RlSWR4ID0gMDtcblxuICB3aGlsZSAobm9kZUlkeCA8IG5vZGVzLmxlbmd0aCkge1xuICAgIHZhciBzdWJncmFwaE5vZGVzID0gbm9kZXMuZmlsdGVyKGZ1bmN0aW9uIChuKSB7XG4gICAgICByZXR1cm4gbm9kZTJJZHhbbi5pZF0gPj0gbm9kZUlkeDtcbiAgICB9KTtcbiAgICB2YXIgc2NjcyA9IGRldGVjdFN0cm9uZ0Nvbm5lY3RDb21wb25lbnRzKHtcbiAgICAgIG5vZGVzOiBzdWJncmFwaE5vZGVzLFxuICAgICAgZWRnZXM6IGdyYXBoRGF0YS5lZGdlc1xuICAgIH0pLmZpbHRlcihmdW5jdGlvbiAoY29tcG9uZW50KSB7XG4gICAgICByZXR1cm4gY29tcG9uZW50Lmxlbmd0aCA+IDE7XG4gICAgfSk7XG4gICAgaWYgKHNjY3MubGVuZ3RoID09PSAwKSBicmVhaztcbiAgICB2YXIgc2NjID0gZ2V0TWluQ29tcG9uZW50QWRqKHNjY3MpO1xuICAgIHZhciBtaW5JZHggPSBzY2MubWluSWR4LFxuICAgICAgICBhZGpMaXN0ID0gc2NjLmFkakxpc3QsXG4gICAgICAgIGNvbXBvbmVudCA9IHNjYy5jb21wb25lbnQ7XG5cbiAgICBpZiAoY29tcG9uZW50Lmxlbmd0aCA+IDEpIHtcbiAgICAgIGNvbXBvbmVudC5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIEJbbm9kZS5pZF0gPSBuZXcgU2V0KCk7XG4gICAgICB9KTtcbiAgICAgIHZhciBzdGFydE5vZGUgPSBpZHgyTm9kZVttaW5JZHhdOyAvLyBzdGFydE5vZGUg5LiN5Zyo5oyH5a6a6KaB5YyF5ZCr55qE6IqC54K55Lit77yM5o+Q5YmN57uT5p2f5pCc57SiXG5cbiAgICAgIGlmIChub2RlSWRzICYmIGluY2x1ZGUgJiYgbm9kZUlkcy5pbmRleE9mKHN0YXJ0Tm9kZS5pZCkgPT09IC0xKSByZXR1cm4gYWxsQ3ljbGVzO1xuICAgICAgY2lyY3VpdChzdGFydE5vZGUsIHN0YXJ0Tm9kZSwgYWRqTGlzdCk7XG4gICAgICBub2RlSWR4ID0gbWluSWR4ICsgMTtcbiAgICB9IGVsc2Uge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFsbEN5Y2xlcztcbn07XG4vKipcbiAqIOafpeaJvuWbvuS4reaJgOaciea7oei2s+imgeaxgueahOWciFxuICogQHBhcmFtIGdyYXBoXG4gKiBAcGFyYW0gZGlyZWN0ZWQg5piv5ZCm5Li65pyJ5ZCR5Zu+XG4gKiBAcGFyYW0gbm9kZUlkcyDoioLngrkgSUQg55qE5pWw57uE77yM6Iul5LiN5oyH5a6a77yM5YiZ6L+U5Zue5Zu+5Lit5omA5pyJ55qE5ZyIXG4gKiBAcGFyYW0gaW5jbHVkZSDljIXlkKvmiJbmjpLpmaTmjIflrprnmoToioLngrlcbiAqIEByZXR1cm4gW3tba2V5OiBzdHJpbmddOiBOb2RlfV0g5YyF5ZCr5omA5pyJ546v55qE5pWw57uE77yM5q+P5Liq546v55So5LiA5LiqT2JqZWN06KGo56S677yM5YW25Lita2V55Li66IqC54K5aWTvvIx2YWx1ZeS4uuivpeiKgueCueWcqOeOr+S4reaMh+WQkeeahOS4i+S4gOS4quiKgueCuVxuICovXG5cbmV4cG9ydCB2YXIgZGV0ZWN0QWxsQ3ljbGVzID0gZnVuY3Rpb24gZGV0ZWN0QWxsQ3ljbGVzKGdyYXBoRGF0YSwgZGlyZWN0ZWQsIG5vZGVJZHMsIGluY2x1ZGUpIHtcbiAgaWYgKGluY2x1ZGUgPT09IHZvaWQgMCkge1xuICAgIGluY2x1ZGUgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGRpcmVjdGVkKSByZXR1cm4gZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZShncmFwaERhdGEsIG5vZGVJZHMsIGluY2x1ZGUpO1xuICByZXR1cm4gZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlKGdyYXBoRGF0YSwgbm9kZUlkcywgaW5jbHVkZSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgZGV0ZWN0RGlyZWN0ZWRDeWNsZTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/detect-cycle.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/dfs.js":
/*!************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/dfs.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 depthFirstSearch; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/util.js\");\n\n\nfunction initCallbacks(callbacks) {\n if (callbacks === void 0) {\n callbacks = {};\n }\n\n var initiatedCallback = callbacks;\n\n var stubCallback = function stubCallback() {};\n\n var allowTraversalCallback = function () {\n var seen = {};\n return function (_a) {\n var next = _a.next;\n\n if (!seen[next]) {\n seen[next] = true;\n return true;\n }\n\n return false;\n };\n }();\n\n initiatedCallback.allowTraversal = callbacks.allowTraversal || allowTraversalCallback;\n initiatedCallback.enter = callbacks.enter || stubCallback;\n initiatedCallback.leave = callbacks.leave || stubCallback;\n return initiatedCallback;\n}\n/**\n * @param {Graph} graph\n * @param {GraphNode} currentNode\n * @param {GraphNode} previousNode\n * @param {Callbacks} callbacks\n */\n\n\nfunction depthFirstSearchRecursive(graphData, currentNode, previousNode, callbacks) {\n callbacks.enter({\n current: currentNode,\n previous: previousNode\n });\n var _a = graphData.edges,\n edges = _a === void 0 ? [] : _a;\n Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"getNeighbors\"])(currentNode, edges, 'target').forEach(function (nextNode) {\n if (callbacks.allowTraversal({\n previous: previousNode,\n current: currentNode,\n next: nextNode\n })) {\n depthFirstSearchRecursive(graphData, nextNode, currentNode, callbacks);\n }\n });\n callbacks.leave({\n current: currentNode,\n previous: previousNode\n });\n}\n/**\n * 深度优先遍历图\n * @param data GraphData 图数据\n * @param startNodeId 开始遍历的节点的 ID\n * @param originalCallbacks 回调\n */\n\n\nfunction depthFirstSearch(graphData, startNodeId, callbacks) {\n depthFirstSearchRecursive(graphData, startNodeId, '', initCallbacks(callbacks));\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2Rmcy5qcz9mMDNhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFzQzs7QUFFdEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsVUFBVTtBQUNyQixXQUFXLFVBQVU7QUFDckIsV0FBVyxVQUFVO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsRUFBRSwwREFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHZTtBQUNmO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2Rmcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldE5laWdoYm9ycyB9IGZyb20gJy4vdXRpbCc7XG5cbmZ1bmN0aW9uIGluaXRDYWxsYmFja3MoY2FsbGJhY2tzKSB7XG4gIGlmIChjYWxsYmFja3MgPT09IHZvaWQgMCkge1xuICAgIGNhbGxiYWNrcyA9IHt9O1xuICB9XG5cbiAgdmFyIGluaXRpYXRlZENhbGxiYWNrID0gY2FsbGJhY2tzO1xuXG4gIHZhciBzdHViQ2FsbGJhY2sgPSBmdW5jdGlvbiBzdHViQ2FsbGJhY2soKSB7fTtcblxuICB2YXIgYWxsb3dUcmF2ZXJzYWxDYWxsYmFjayA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VlbiA9IHt9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoX2EpIHtcbiAgICAgIHZhciBuZXh0ID0gX2EubmV4dDtcblxuICAgICAgaWYgKCFzZWVuW25leHRdKSB7XG4gICAgICAgIHNlZW5bbmV4dF0gPSB0cnVlO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gIH0oKTtcblxuICBpbml0aWF0ZWRDYWxsYmFjay5hbGxvd1RyYXZlcnNhbCA9IGNhbGxiYWNrcy5hbGxvd1RyYXZlcnNhbCB8fCBhbGxvd1RyYXZlcnNhbENhbGxiYWNrO1xuICBpbml0aWF0ZWRDYWxsYmFjay5lbnRlciA9IGNhbGxiYWNrcy5lbnRlciB8fCBzdHViQ2FsbGJhY2s7XG4gIGluaXRpYXRlZENhbGxiYWNrLmxlYXZlID0gY2FsbGJhY2tzLmxlYXZlIHx8IHN0dWJDYWxsYmFjaztcbiAgcmV0dXJuIGluaXRpYXRlZENhbGxiYWNrO1xufVxuLyoqXG4gKiBAcGFyYW0ge0dyYXBofSBncmFwaFxuICogQHBhcmFtIHtHcmFwaE5vZGV9IGN1cnJlbnROb2RlXG4gKiBAcGFyYW0ge0dyYXBoTm9kZX0gcHJldmlvdXNOb2RlXG4gKiBAcGFyYW0ge0NhbGxiYWNrc30gY2FsbGJhY2tzXG4gKi9cblxuXG5mdW5jdGlvbiBkZXB0aEZpcnN0U2VhcmNoUmVjdXJzaXZlKGdyYXBoRGF0YSwgY3VycmVudE5vZGUsIHByZXZpb3VzTm9kZSwgY2FsbGJhY2tzKSB7XG4gIGNhbGxiYWNrcy5lbnRlcih7XG4gICAgY3VycmVudDogY3VycmVudE5vZGUsXG4gICAgcHJldmlvdXM6IHByZXZpb3VzTm9kZVxuICB9KTtcbiAgdmFyIF9hID0gZ3JhcGhEYXRhLmVkZ2VzLFxuICAgICAgZWRnZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYTtcbiAgZ2V0TmVpZ2hib3JzKGN1cnJlbnROb2RlLCBlZGdlcywgJ3RhcmdldCcpLmZvckVhY2goZnVuY3Rpb24gKG5leHROb2RlKSB7XG4gICAgaWYgKGNhbGxiYWNrcy5hbGxvd1RyYXZlcnNhbCh7XG4gICAgICBwcmV2aW91czogcHJldmlvdXNOb2RlLFxuICAgICAgY3VycmVudDogY3VycmVudE5vZGUsXG4gICAgICBuZXh0OiBuZXh0Tm9kZVxuICAgIH0pKSB7XG4gICAgICBkZXB0aEZpcnN0U2VhcmNoUmVjdXJzaXZlKGdyYXBoRGF0YSwgbmV4dE5vZGUsIGN1cnJlbnROb2RlLCBjYWxsYmFja3MpO1xuICAgIH1cbiAgfSk7XG4gIGNhbGxiYWNrcy5sZWF2ZSh7XG4gICAgY3VycmVudDogY3VycmVudE5vZGUsXG4gICAgcHJldmlvdXM6IHByZXZpb3VzTm9kZVxuICB9KTtcbn1cbi8qKlxuICog5rex5bqm5LyY5YWI6YGN5Y6G5Zu+XG4gKiBAcGFyYW0gZGF0YSBHcmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gc3RhcnROb2RlSWQg5byA5aeL6YGN5Y6G55qE6IqC54K555qEIElEXG4gKiBAcGFyYW0gb3JpZ2luYWxDYWxsYmFja3Mg5Zue6LCDXG4gKi9cblxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkZXB0aEZpcnN0U2VhcmNoKGdyYXBoRGF0YSwgc3RhcnROb2RlSWQsIGNhbGxiYWNrcykge1xuICBkZXB0aEZpcnN0U2VhcmNoUmVjdXJzaXZlKGdyYXBoRGF0YSwgc3RhcnROb2RlSWQsICcnLCBpbml0Q2FsbGJhY2tzKGNhbGxiYWNrcykpO1xufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/dfs.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/dijkstra.js":
/*!*****************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/dijkstra.js ***!
\*****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/util.js\");\n\n\n\n\nvar minVertex = function minVertex(D, nodes, marks) {\n // 找出最小的点\n var minDis = Infinity;\n var minNode;\n\n for (var i = 0; i < nodes.length; i++) {\n var nodeId = nodes[i].id;\n\n if (!marks[nodeId] && D[nodeId] <= minDis) {\n minDis = D[nodeId];\n minNode = nodes[i];\n }\n }\n\n return minNode;\n};\n\nvar dijkstra = function dijkstra(graphData, source, directed, weightPropertyName) {\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var nodeIds = [];\n var marks = {};\n var D = {};\n var prevs = {}; // key: 顶点, value: 顶点的前驱点数组(可能有多条等长的最短路径)\n\n nodes.forEach(function (node, i) {\n var id = node.id;\n nodeIds.push(id);\n D[id] = Infinity;\n if (id === source) D[id] = 0;\n });\n var nodeNum = nodes.length;\n\n var _loop_1 = function _loop_1(i) {\n // Process the vertices\n var minNode = minVertex(D, nodes, marks);\n var minNodeId = minNode.id;\n marks[minNodeId] = true;\n if (D[minNodeId] === Infinity) return \"continue\"; // Unreachable vertices cannot be the intermediate point\n\n var relatedEdges = [];\n if (directed) relatedEdges = Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"getOutEdgesNodeId\"])(minNodeId, edges);else relatedEdges = Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"getEdgesByNodeId\"])(minNodeId, edges);\n relatedEdges.forEach(function (edge) {\n var edgeTarget = edge.target;\n var edgeSource = edge.source;\n var w = edgeTarget === minNodeId ? edgeSource : edgeTarget;\n var weight = weightPropertyName && edge[weightPropertyName] ? edge[weightPropertyName] : 1;\n\n if (D[w] > D[minNode.id] + weight) {\n D[w] = D[minNode.id] + weight;\n prevs[w] = [minNode.id];\n } else if (D[w] === D[minNode.id] + weight) {\n prevs[w].push(minNode.id);\n }\n });\n };\n\n for (var i = 0; i < nodeNum; i++) {\n _loop_1(i);\n }\n\n prevs[source] = [source]; // 每个节点存可能存在多条最短路径\n\n var paths = {};\n\n for (var target in D) {\n if (D[target] !== Infinity) {\n findAllPaths(source, target, prevs, paths);\n }\n } // 兼容之前单路径\n\n\n var path = {};\n\n for (var target in paths) {\n path[target] = paths[target][0];\n }\n\n return {\n length: D,\n path: path,\n allPath: paths\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (dijkstra);\n\nfunction findAllPaths(source, target, prevs, foundPaths) {\n if (source === target) {\n return [source];\n }\n\n if (foundPaths[target]) {\n return foundPaths[target];\n }\n\n var paths = [];\n\n for (var _i = 0, _a = prevs[target]; _i < _a.length; _i++) {\n var prev = _a[_i];\n var prevPaths = findAllPaths(source, prev, prevs, foundPaths);\n if (!prevPaths) return;\n\n for (var _b = 0, prevPaths_1 = prevPaths; _b < prevPaths_1.length; _b++) {\n var prePath = prevPaths_1[_b];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(prePath)) paths.push(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], prePath, true), [target], false));else paths.push([prePath, target]);\n }\n }\n\n foundPaths[target] = paths;\n return foundPaths[target];\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2RpamtzdHJhLmpzP2Q1NTkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBc0M7QUFDRDtBQUN3Qjs7QUFFN0Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLGtCQUFrQjtBQUNuQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscURBQXFEOztBQUVyRDtBQUNBLGlDQUFpQywrREFBaUIsbUJBQW1CLG9CQUFvQiw4REFBZ0I7QUFDekc7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQSxpQkFBaUIsYUFBYTtBQUM5QjtBQUNBOztBQUVBLDJCQUEyQjs7QUFFM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVlLHVFQUFRLEVBQUM7O0FBRXhCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxzQ0FBc0MsZ0JBQWdCO0FBQ3REO0FBQ0E7QUFDQTs7QUFFQSw2Q0FBNkMseUJBQXlCO0FBQ3RFO0FBQ0EsVUFBVSwwREFBTyxzQkFBc0IsMkRBQWEsQ0FBQywyREFBYSx1Q0FBdUM7QUFDekc7QUFDQTs7QUFFQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2RpamtzdHJhLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19zcHJlYWRBcnJheSB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgZ2V0T3V0RWRnZXNOb2RlSWQsIGdldEVkZ2VzQnlOb2RlSWQgfSBmcm9tICcuL3V0aWwnO1xuXG52YXIgbWluVmVydGV4ID0gZnVuY3Rpb24gbWluVmVydGV4KEQsIG5vZGVzLCBtYXJrcykge1xuICAvLyDmib7lh7rmnIDlsI/nmoTngrlcbiAgdmFyIG1pbkRpcyA9IEluZmluaXR5O1xuICB2YXIgbWluTm9kZTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG5vZGVJZCA9IG5vZGVzW2ldLmlkO1xuXG4gICAgaWYgKCFtYXJrc1tub2RlSWRdICYmIERbbm9kZUlkXSA8PSBtaW5EaXMpIHtcbiAgICAgIG1pbkRpcyA9IERbbm9kZUlkXTtcbiAgICAgIG1pbk5vZGUgPSBub2Rlc1tpXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWluTm9kZTtcbn07XG5cbnZhciBkaWprc3RyYSA9IGZ1bmN0aW9uIGRpamtzdHJhKGdyYXBoRGF0YSwgc291cmNlLCBkaXJlY3RlZCwgd2VpZ2h0UHJvcGVydHlOYW1lKSB7XG4gIHZhciBfYSA9IGdyYXBoRGF0YS5ub2RlcyxcbiAgICAgIG5vZGVzID0gX2EgPT09IHZvaWQgMCA/IFtdIDogX2EsXG4gICAgICBfYiA9IGdyYXBoRGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2IgPT09IHZvaWQgMCA/IFtdIDogX2I7XG4gIHZhciBub2RlSWRzID0gW107XG4gIHZhciBtYXJrcyA9IHt9O1xuICB2YXIgRCA9IHt9O1xuICB2YXIgcHJldnMgPSB7fTsgLy8ga2V5OiDpobbngrksIHZhbHVlOiDpobbngrnnmoTliY3pqbHngrnmlbDnu4TvvIjlj6/og73mnInlpJrmnaHnrYnplb/nmoTmnIDnn63ot6/lvoTvvIlcblxuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlLCBpKSB7XG4gICAgdmFyIGlkID0gbm9kZS5pZDtcbiAgICBub2RlSWRzLnB1c2goaWQpO1xuICAgIERbaWRdID0gSW5maW5pdHk7XG4gICAgaWYgKGlkID09PSBzb3VyY2UpIERbaWRdID0gMDtcbiAgfSk7XG4gIHZhciBub2RlTnVtID0gbm9kZXMubGVuZ3RoO1xuXG4gIHZhciBfbG9vcF8xID0gZnVuY3Rpb24gX2xvb3BfMShpKSB7XG4gICAgLy8gUHJvY2VzcyB0aGUgdmVydGljZXNcbiAgICB2YXIgbWluTm9kZSA9IG1pblZlcnRleChELCBub2RlcywgbWFya3MpO1xuICAgIHZhciBtaW5Ob2RlSWQgPSBtaW5Ob2RlLmlkO1xuICAgIG1hcmtzW21pbk5vZGVJZF0gPSB0cnVlO1xuICAgIGlmIChEW21pbk5vZGVJZF0gPT09IEluZmluaXR5KSByZXR1cm4gXCJjb250aW51ZVwiOyAvLyBVbnJlYWNoYWJsZSB2ZXJ0aWNlcyBjYW5ub3QgYmUgdGhlIGludGVybWVkaWF0ZSBwb2ludFxuXG4gICAgdmFyIHJlbGF0ZWRFZGdlcyA9IFtdO1xuICAgIGlmIChkaXJlY3RlZCkgcmVsYXRlZEVkZ2VzID0gZ2V0T3V0RWRnZXNOb2RlSWQobWluTm9kZUlkLCBlZGdlcyk7ZWxzZSByZWxhdGVkRWRnZXMgPSBnZXRFZGdlc0J5Tm9kZUlkKG1pbk5vZGVJZCwgZWRnZXMpO1xuICAgIHJlbGF0ZWRFZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICB2YXIgZWRnZVRhcmdldCA9IGVkZ2UudGFyZ2V0O1xuICAgICAgdmFyIGVkZ2VTb3VyY2UgPSBlZGdlLnNvdXJjZTtcbiAgICAgIHZhciB3ID0gZWRnZVRhcmdldCA9PT0gbWluTm9kZUlkID8gZWRnZVNvdXJjZSA6IGVkZ2VUYXJnZXQ7XG4gICAgICB2YXIgd2VpZ2h0ID0gd2VpZ2h0UHJvcGVydHlOYW1lICYmIGVkZ2Vbd2VpZ2h0UHJvcGVydHlOYW1lXSA/IGVkZ2Vbd2VpZ2h0UHJvcGVydHlOYW1lXSA6IDE7XG5cbiAgICAgIGlmIChEW3ddID4gRFttaW5Ob2RlLmlkXSArIHdlaWdodCkge1xuICAgICAgICBEW3ddID0gRFttaW5Ob2RlLmlkXSArIHdlaWdodDtcbiAgICAgICAgcHJldnNbd10gPSBbbWluTm9kZS5pZF07XG4gICAgICB9IGVsc2UgaWYgKERbd10gPT09IERbbWluTm9kZS5pZF0gKyB3ZWlnaHQpIHtcbiAgICAgICAgcHJldnNbd10ucHVzaChtaW5Ob2RlLmlkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVOdW07IGkrKykge1xuICAgIF9sb29wXzEoaSk7XG4gIH1cblxuICBwcmV2c1tzb3VyY2VdID0gW3NvdXJjZV07IC8vIOavj+S4quiKgueCueWtmOWPr+iDveWtmOWcqOWkmuadoeacgOefrei3r+W+hFxuXG4gIHZhciBwYXRocyA9IHt9O1xuXG4gIGZvciAodmFyIHRhcmdldCBpbiBEKSB7XG4gICAgaWYgKERbdGFyZ2V0XSAhPT0gSW5maW5pdHkpIHtcbiAgICAgIGZpbmRBbGxQYXRocyhzb3VyY2UsIHRhcmdldCwgcHJldnMsIHBhdGhzKTtcbiAgICB9XG4gIH0gLy8g5YW85a655LmL5YmN5Y2V6Lev5b6EXG5cblxuICB2YXIgcGF0aCA9IHt9O1xuXG4gIGZvciAodmFyIHRhcmdldCBpbiBwYXRocykge1xuICAgIHBhdGhbdGFyZ2V0XSA9IHBhdGhzW3RhcmdldF1bMF07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGxlbmd0aDogRCxcbiAgICBwYXRoOiBwYXRoLFxuICAgIGFsbFBhdGg6IHBhdGhzXG4gIH07XG59O1xuXG5leHBvcnQgZGVmYXVsdCBkaWprc3RyYTtcblxuZnVuY3Rpb24gZmluZEFsbFBhdGhzKHNvdXJjZSwgdGFyZ2V0LCBwcmV2cywgZm91bmRQYXRocykge1xuICBpZiAoc291cmNlID09PSB0YXJnZXQpIHtcbiAgICByZXR1cm4gW3NvdXJjZV07XG4gIH1cblxuICBpZiAoZm91bmRQYXRoc1t0YXJnZXRdKSB7XG4gICAgcmV0dXJuIGZvdW5kUGF0aHNbdGFyZ2V0XTtcbiAgfVxuXG4gIHZhciBwYXRocyA9IFtdO1xuXG4gIGZvciAodmFyIF9pID0gMCwgX2EgPSBwcmV2c1t0YXJnZXRdOyBfaSA8IF9hLmxlbmd0aDsgX2krKykge1xuICAgIHZhciBwcmV2ID0gX2FbX2ldO1xuICAgIHZhciBwcmV2UGF0aHMgPSBmaW5kQWxsUGF0aHMoc291cmNlLCBwcmV2LCBwcmV2cywgZm91bmRQYXRocyk7XG4gICAgaWYgKCFwcmV2UGF0aHMpIHJldHVybjtcblxuICAgIGZvciAodmFyIF9iID0gMCwgcHJldlBhdGhzXzEgPSBwcmV2UGF0aHM7IF9iIDwgcHJldlBhdGhzXzEubGVuZ3RoOyBfYisrKSB7XG4gICAgICB2YXIgcHJlUGF0aCA9IHByZXZQYXRoc18xW19iXTtcbiAgICAgIGlmIChpc0FycmF5KHByZVBhdGgpKSBwYXRocy5wdXNoKF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgcHJlUGF0aCwgdHJ1ZSksIFt0YXJnZXRdLCBmYWxzZSkpO2Vsc2UgcGF0aHMucHVzaChbcHJlUGF0aCwgdGFyZ2V0XSk7XG4gICAgfVxuICB9XG5cbiAgZm91bmRQYXRoc1t0YXJnZXRdID0gcGF0aHM7XG4gIHJldHVybiBmb3VuZFBhdGhzW3RhcmdldF07XG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/dijkstra.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/find-path.js":
/*!******************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/find-path.js ***!
\******************************************************************************/
/*! exports provided: findShortestPath, findAllPath */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findShortestPath\", function() { return findShortestPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findAllPath\", function() { return findAllPath; });\n/* harmony import */ var _dijkstra__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dijkstra */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/dijkstra.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/util.js\");\n\n\nvar findShortestPath = function findShortestPath(graphData, start, end, directed, weightPropertyName) {\n var _a = Object(_dijkstra__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(graphData, start, directed, weightPropertyName),\n length = _a.length,\n path = _a.path,\n allPath = _a.allPath;\n\n return {\n length: length[end],\n path: path[end],\n allPath: allPath[end]\n };\n};\nvar findAllPath = function findAllPath(graphData, start, end, directed) {\n var _a;\n\n if (start === end) return [[start]];\n var _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var visited = [start];\n var isVisited = (_a = {}, _a[start] = true, _a);\n var stack = []; // 辅助栈,用于存储访问过的节点的邻居节点\n\n var allPath = [];\n var neighbors = directed ? Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getNeighbors\"])(start, edges, 'target') : Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getNeighbors\"])(start, edges);\n stack.push(neighbors);\n\n while (visited.length > 0 && stack.length > 0) {\n var children = stack[stack.length - 1];\n\n if (children.length) {\n var child = children.shift();\n\n if (child) {\n visited.push(child);\n isVisited[child] = true;\n neighbors = directed ? Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getNeighbors\"])(child, edges, 'target') : Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getNeighbors\"])(child, edges);\n stack.push(neighbors.filter(function (neighbor) {\n return !isVisited[neighbor];\n }));\n }\n } else {\n var node = visited.pop();\n isVisited[node] = false;\n stack.pop();\n continue;\n }\n\n if (visited[visited.length - 1] === end) {\n var path = visited.map(function (node) {\n return node;\n });\n allPath.push(path);\n var node = visited.pop();\n isVisited[node] = false;\n stack.pop();\n }\n }\n\n return allPath;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2ZpbmQtcGF0aC5qcz9hMDNmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDSTtBQUMvQjtBQUNQLFdBQVcseURBQVE7QUFDbkI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUIsaUJBQWlCOztBQUVqQjtBQUNBLDZCQUE2QiwwREFBWSwyQkFBMkIsMERBQVk7QUFDaEY7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQiwwREFBWSwyQkFBMkIsMERBQVk7QUFDbEY7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfYWxnb3JpdGhtQDAuMS4xNEBAYW50di9hbGdvcml0aG0vZXMvZmluZC1wYXRoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRpamtzdHJhIGZyb20gJy4vZGlqa3N0cmEnO1xuaW1wb3J0IHsgZ2V0TmVpZ2hib3JzIH0gZnJvbSAnLi91dGlsJztcbmV4cG9ydCB2YXIgZmluZFNob3J0ZXN0UGF0aCA9IGZ1bmN0aW9uIGZpbmRTaG9ydGVzdFBhdGgoZ3JhcGhEYXRhLCBzdGFydCwgZW5kLCBkaXJlY3RlZCwgd2VpZ2h0UHJvcGVydHlOYW1lKSB7XG4gIHZhciBfYSA9IGRpamtzdHJhKGdyYXBoRGF0YSwgc3RhcnQsIGRpcmVjdGVkLCB3ZWlnaHRQcm9wZXJ0eU5hbWUpLFxuICAgICAgbGVuZ3RoID0gX2EubGVuZ3RoLFxuICAgICAgcGF0aCA9IF9hLnBhdGgsXG4gICAgICBhbGxQYXRoID0gX2EuYWxsUGF0aDtcblxuICByZXR1cm4ge1xuICAgIGxlbmd0aDogbGVuZ3RoW2VuZF0sXG4gICAgcGF0aDogcGF0aFtlbmRdLFxuICAgIGFsbFBhdGg6IGFsbFBhdGhbZW5kXVxuICB9O1xufTtcbmV4cG9ydCB2YXIgZmluZEFsbFBhdGggPSBmdW5jdGlvbiBmaW5kQWxsUGF0aChncmFwaERhdGEsIHN0YXJ0LCBlbmQsIGRpcmVjdGVkKSB7XG4gIHZhciBfYTtcblxuICBpZiAoc3RhcnQgPT09IGVuZCkgcmV0dXJuIFtbc3RhcnRdXTtcbiAgdmFyIF9iID0gZ3JhcGhEYXRhLmVkZ2VzLFxuICAgICAgZWRnZXMgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYjtcbiAgdmFyIHZpc2l0ZWQgPSBbc3RhcnRdO1xuICB2YXIgaXNWaXNpdGVkID0gKF9hID0ge30sIF9hW3N0YXJ0XSA9IHRydWUsIF9hKTtcbiAgdmFyIHN0YWNrID0gW107IC8vIOi+heWKqeagiO+8jOeUqOS6juWtmOWCqOiuv+mXrui/h+eahOiKgueCueeahOmCu+WxheiKgueCuVxuXG4gIHZhciBhbGxQYXRoID0gW107XG4gIHZhciBuZWlnaGJvcnMgPSBkaXJlY3RlZCA/IGdldE5laWdoYm9ycyhzdGFydCwgZWRnZXMsICd0YXJnZXQnKSA6IGdldE5laWdoYm9ycyhzdGFydCwgZWRnZXMpO1xuICBzdGFjay5wdXNoKG5laWdoYm9ycyk7XG5cbiAgd2hpbGUgKHZpc2l0ZWQubGVuZ3RoID4gMCAmJiBzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgdmFyIGNoaWxkcmVuID0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07XG5cbiAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbi5zaGlmdCgpO1xuXG4gICAgICBpZiAoY2hpbGQpIHtcbiAgICAgICAgdmlzaXRlZC5wdXNoKGNoaWxkKTtcbiAgICAgICAgaXNWaXNpdGVkW2NoaWxkXSA9IHRydWU7XG4gICAgICAgIG5laWdoYm9ycyA9IGRpcmVjdGVkID8gZ2V0TmVpZ2hib3JzKGNoaWxkLCBlZGdlcywgJ3RhcmdldCcpIDogZ2V0TmVpZ2hib3JzKGNoaWxkLCBlZGdlcyk7XG4gICAgICAgIHN0YWNrLnB1c2gobmVpZ2hib3JzLmZpbHRlcihmdW5jdGlvbiAobmVpZ2hib3IpIHtcbiAgICAgICAgICByZXR1cm4gIWlzVmlzaXRlZFtuZWlnaGJvcl07XG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG5vZGUgPSB2aXNpdGVkLnBvcCgpO1xuICAgICAgaXNWaXNpdGVkW25vZGVdID0gZmFsc2U7XG4gICAgICBzdGFjay5wb3AoKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICh2aXNpdGVkW3Zpc2l0ZWQubGVuZ3RoIC0gMV0gPT09IGVuZCkge1xuICAgICAgdmFyIHBhdGggPSB2aXNpdGVkLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgIH0pO1xuICAgICAgYWxsUGF0aC5wdXNoKHBhdGgpO1xuICAgICAgdmFyIG5vZGUgPSB2aXNpdGVkLnBvcCgpO1xuICAgICAgaXNWaXNpdGVkW25vZGVdID0gZmFsc2U7XG4gICAgICBzdGFjay5wb3AoKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWxsUGF0aDtcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/find-path.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/floydWarshall.js":
/*!**********************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/floydWarshall.js ***!
\**********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _adjacent_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./adjacent-matrix */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/adjacent-matrix.js\");\n\n\nvar floydWarshall = function floydWarshall(graphData, directed) {\n var adjacentMatrix = Object(_adjacent_matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(graphData, directed);\n var dist = [];\n var size = adjacentMatrix.length;\n\n for (var i = 0; i < size; i += 1) {\n dist[i] = [];\n\n for (var j = 0; j < size; j += 1) {\n if (i === j) {\n dist[i][j] = 0;\n } else if (adjacentMatrix[i][j] === 0 || !adjacentMatrix[i][j]) {\n dist[i][j] = Infinity;\n } else {\n dist[i][j] = adjacentMatrix[i][j];\n }\n }\n } // floyd\n\n\n for (var k = 0; k < size; k += 1) {\n for (var i = 0; i < size; i += 1) {\n for (var j = 0; j < size; j += 1) {\n if (dist[i][j] > dist[i][k] + dist[k][j]) {\n dist[i][j] = dist[i][k] + dist[k][j];\n }\n }\n }\n }\n\n return dist;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (floydWarshall);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2Zsb3lkV2Fyc2hhbGwuanM/MGU1NyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQTZDOztBQUU3QztBQUNBLHVCQUF1QixnRUFBWTtBQUNuQztBQUNBOztBQUVBLGlCQUFpQixVQUFVO0FBQzNCOztBQUVBLG1CQUFtQixVQUFVO0FBQzdCO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0gsaUJBQWlCLFVBQVU7QUFDM0IsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLFVBQVU7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRWUsNEVBQWEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2Zsb3lkV2Fyc2hhbGwuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ2V0QWRqTWF0cml4IGZyb20gXCIuL2FkamFjZW50LW1hdHJpeFwiO1xuXG52YXIgZmxveWRXYXJzaGFsbCA9IGZ1bmN0aW9uIGZsb3lkV2Fyc2hhbGwoZ3JhcGhEYXRhLCBkaXJlY3RlZCkge1xuICB2YXIgYWRqYWNlbnRNYXRyaXggPSBnZXRBZGpNYXRyaXgoZ3JhcGhEYXRhLCBkaXJlY3RlZCk7XG4gIHZhciBkaXN0ID0gW107XG4gIHZhciBzaXplID0gYWRqYWNlbnRNYXRyaXgubGVuZ3RoO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSArPSAxKSB7XG4gICAgZGlzdFtpXSA9IFtdO1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBzaXplOyBqICs9IDEpIHtcbiAgICAgIGlmIChpID09PSBqKSB7XG4gICAgICAgIGRpc3RbaV1bal0gPSAwO1xuICAgICAgfSBlbHNlIGlmIChhZGphY2VudE1hdHJpeFtpXVtqXSA9PT0gMCB8fCAhYWRqYWNlbnRNYXRyaXhbaV1bal0pIHtcbiAgICAgICAgZGlzdFtpXVtqXSA9IEluZmluaXR5O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzdFtpXVtqXSA9IGFkamFjZW50TWF0cml4W2ldW2pdO1xuICAgICAgfVxuICAgIH1cbiAgfSAvLyBmbG95ZFxuXG5cbiAgZm9yICh2YXIgayA9IDA7IGsgPCBzaXplOyBrICs9IDEpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkgKz0gMSkge1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzaXplOyBqICs9IDEpIHtcbiAgICAgICAgaWYgKGRpc3RbaV1bal0gPiBkaXN0W2ldW2tdICsgZGlzdFtrXVtqXSkge1xuICAgICAgICAgIGRpc3RbaV1bal0gPSBkaXN0W2ldW2tdICsgZGlzdFtrXVtqXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkaXN0O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZmxveWRXYXJzaGFsbDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/floydWarshall.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/gSpan/gSpan.js":
/*!********************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/gSpan/gSpan.js ***!
\********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _struct__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./struct */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/gSpan/struct.js\");\n\n\n\nvar DFSedge =\n/** @class */\nfunction () {\n function DFSedge(fromNode, toNode, fromNodeLabel, edgeLabel, toNodeLabel) {\n this.fromNode = fromNode;\n this.toNode = toNode;\n this.nodeEdgeNodeLabel = {\n nodeLabel1: fromNodeLabel || _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_NODE_LABEL\"],\n edgeLabel: edgeLabel || _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_EDGE_LABEL\"],\n nodeLabel2: toNodeLabel || _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_NODE_LABEL\"]\n };\n }\n\n DFSedge.prototype.equalTo = function (other) {\n return this.fromNode === other.formNode && this.toNode === other.toNode && this.nodeEdgeNodeLabel === other.nodeEdgeNodeLabel;\n };\n\n DFSedge.prototype.notEqualTo = function (other) {\n return !this.equalTo(other);\n };\n\n return DFSedge;\n}(); // DFScode 是 DESedge 的数组\n\n\nvar DFScode =\n/** @class */\nfunction () {\n function DFScode() {\n this.rmpath = [];\n this.dfsEdgeList = [];\n }\n\n DFScode.prototype.equalTo = function (other) {\n var aLength = this.dfsEdgeList.length;\n var bLength = other.length;\n if (aLength !== bLength) return false;\n\n for (var i = 0; i < aLength; i++) {\n if (this.dfsEdgeList[i] !== other[i]) return false;\n }\n\n return true;\n };\n\n DFScode.prototype.notEqualTo = function (other) {\n return !this.equalTo(other);\n };\n /** 增加一条 edge 到 DFScode */\n\n\n DFScode.prototype.pushBack = function (fromNode, toNode, fromNodeLabel, edgeLabel, toNodeLabel) {\n this.dfsEdgeList.push(new DFSedge(fromNode, toNode, fromNodeLabel, edgeLabel, toNodeLabel));\n return this.dfsEdgeList;\n };\n /** 根据 dfs 构建图 */\n\n\n DFScode.prototype.toGraph = function (graphId, directed) {\n if (graphId === void 0) {\n graphId = _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_GRAPH_ID\"];\n }\n\n if (directed === void 0) {\n directed = false;\n }\n\n var graph = new _struct__WEBPACK_IMPORTED_MODULE_1__[\"Graph\"](graphId, true, directed);\n this.dfsEdgeList.forEach(function (dfsEdge) {\n var fromNodeId = dfsEdge.fromNode;\n var toNodeId = dfsEdge.toNode;\n var _a = dfsEdge.nodeEdgeNodeLabel,\n nodeLabel1 = _a.nodeLabel1,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n if (nodeLabel1 !== _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_NODE_LABEL\"]) graph.addNode(fromNodeId, nodeLabel1);\n if (nodeLabel2 !== _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_NODE_LABEL\"]) graph.addNode(toNodeId, nodeLabel2);\n if (nodeLabel1 !== _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_NODE_LABEL\"] && nodeLabel2 !== nodeLabel1) graph.addEdge(undefined, fromNodeId, toNodeId, edgeLabel);\n });\n return graph;\n }; // 建立 rightmost path\n\n\n DFScode.prototype.buildRmpath = function () {\n this.rmpath = [];\n var oldFrom = undefined;\n var selfLength = this.dfsEdgeList.length;\n\n for (var i = selfLength - 1; i >= 0; i--) {\n var dfsEdge = this.dfsEdgeList[i];\n var fromNodeIdx = dfsEdge.fromNode;\n var toNodeIdx = dfsEdge.toNode;\n\n if (fromNodeIdx < toNodeIdx && (oldFrom === undefined || toNodeIdx === oldFrom)) {\n this.rmpath.push(i);\n oldFrom = fromNodeIdx;\n }\n }\n\n return this.rmpath;\n };\n\n DFScode.prototype.getNodeNum = function () {\n var nodeMap = {};\n this.dfsEdgeList.forEach(function (dfsEdge) {\n if (!nodeMap[dfsEdge.fromNode]) nodeMap[dfsEdge.fromNode] = true;\n if (!nodeMap[dfsEdge.toNode]) nodeMap[dfsEdge.toNode] = true;\n });\n return Object.keys(nodeMap).length;\n };\n\n return DFScode;\n}();\n\nvar History =\n/** @class */\nfunction () {\n function History(pdfs) {\n this.his = {};\n this.nodesUsed = {};\n this.edgesUsed = {};\n this.edges = [];\n if (!pdfs) return;\n\n while (pdfs) {\n var e = pdfs.edge;\n this.edges.push(e);\n this.nodesUsed[e.from] = 1;\n this.nodesUsed[e.to] = 1;\n this.edgesUsed[e.id] = 1;\n pdfs = pdfs.preNode;\n } // 倒序\n\n\n this.edges = this.edges.reverse();\n }\n\n History.prototype.hasNode = function (node) {\n return this.nodesUsed[node.id] === 1;\n };\n\n History.prototype.hasEdge = function (edge) {\n return this.edgesUsed[edge.id] === 1;\n };\n\n return History;\n}();\n\nvar GSpan =\n/** @class */\nfunction () {\n function GSpan(_a) {\n var graphs = _a.graphs,\n _b = _a.minSupport,\n minSupport = _b === void 0 ? 2 : _b,\n _c = _a.minNodeNum,\n minNodeNum = _c === void 0 ? 1 : _c,\n _d = _a.maxNodeNum,\n maxNodeNum = _d === void 0 ? 4 : _d,\n _e = _a.top,\n top = _e === void 0 ? 10 : _e,\n _f = _a.directed,\n directed = _f === void 0 ? false : _f,\n _g = _a.verbose,\n verbose = _g === void 0 ? false : _g; // -------- 第零步,初始化-------\n\n this.graphs = graphs;\n this.dfsCode = new DFScode();\n this.support = 0;\n this.frequentSize1Subgraphs = [];\n this.frequentSubgraphs = [];\n this.minSupport = minSupport;\n this.top = top;\n this.directed = directed;\n this.counter = 0; // TODO? timestamp = {}\n\n this.maxNodeNum = maxNodeNum;\n this.minNodeNum = minNodeNum;\n this.verbose = verbose;\n if (this.maxNodeNum < this.minNodeNum) this.maxNodeNum = this.minNodeNum;\n this.reportDF = []; // matrix\n } // Line 352\n\n\n GSpan.prototype.findForwardRootEdges = function (graph, fromNode) {\n var _this = this;\n\n var result = [];\n var nodeMap = graph.nodeMap;\n fromNode.edges.forEach(function (edge) {\n if (_this.directed || fromNode.label <= nodeMap[edge.to].label) result.push(edge);\n });\n return result;\n };\n\n GSpan.prototype.findBackwardEdge = function (graph, edge1, edge2, history) {\n if (!this.directed && edge1 === edge2) return null;\n var nodeMap = graph.nodeMap;\n var edge2To = nodeMap[edge2.to];\n var edge2ToEdges = edge2To.edges;\n var edgeLength = edge2ToEdges.length;\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edge2ToEdges[i];\n if (history.hasEdge(edge) || edge.to !== edge1.from) continue;\n\n if (!this.directed) {\n if (edge1.label < edge.label || edge1.label === edge.label && nodeMap[edge1.to].label <= nodeMap[edge2.to].label) {\n return edge;\n }\n } else {\n if (nodeMap[edge1.from].label < nodeMap[edge2.to].label || nodeMap[edge1.from].label === nodeMap[edge2.to].label && edge1.label <= edge.label) {\n return edge;\n }\n }\n }\n\n return null;\n };\n\n GSpan.prototype.findForwardPureEdges = function (graph, rightmostEdge, minNodeLabel, history) {\n var result = [];\n var rightmostEdgeToId = rightmostEdge.to;\n var edges = graph.nodeMap[rightmostEdgeToId].edges;\n var edgeLength = edges.length;\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edges[i];\n var toNode = graph.nodeMap[edge.to];\n\n if (minNodeLabel <= toNode.label && !history.hasNode(toNode)) {\n result.push(edge);\n }\n }\n\n return result;\n };\n\n GSpan.prototype.findForwardRmpathEdges = function (graph, rightmostEdge, minNodeLabel, history) {\n var result = [];\n var nodeMap = graph.nodeMap;\n var toNodeLabel = nodeMap[rightmostEdge.to].label;\n var fromNode = nodeMap[rightmostEdge.from];\n var edges = fromNode.edges;\n var edgeLength = edges.length;\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edges[i];\n var newToNodeLabel = nodeMap[edge.to].label;\n\n if (rightmostEdge.to === edge.to || minNodeLabel > newToNodeLabel || history.hasNode(nodeMap[edge.to])) {\n continue;\n }\n\n if (rightmostEdge.label < edge.label || rightmostEdge.label === edge.label && toNodeLabel <= newToNodeLabel) {\n result.push(edge);\n }\n }\n\n return result;\n };\n\n GSpan.prototype.getSupport = function (projected) {\n var graphMap = {};\n projected.forEach(function (pro) {\n if (!graphMap[pro.graphId]) graphMap[pro.graphId] = true;\n });\n return Object.keys(graphMap).length;\n };\n\n GSpan.prototype.findMinLabel = function (obj) {\n var minLabel = undefined;\n Object.keys(obj).forEach(function (nodeEdgeNodeLabel) {\n var _a = obj[nodeEdgeNodeLabel],\n nodeLabel1 = _a.nodeLabel1,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n\n if (!minLabel) {\n minLabel = {\n nodeLabel1: nodeLabel1,\n edgeLabel: edgeLabel,\n nodeLabel2: nodeLabel2\n };\n return;\n }\n\n if (nodeLabel1 < minLabel.nodeLabel1 || nodeLabel1 === minLabel.nodeLabel1 && edgeLabel < minLabel.edgeLabel || nodeLabel1 === minLabel.nodeLabel1 && edgeLabel === minLabel.edgeLabel && nodeLabel2 < minLabel.nodeLabel2) {\n minLabel = {\n nodeLabel1: nodeLabel1,\n edgeLabel: edgeLabel,\n nodeLabel2: nodeLabel2\n };\n }\n });\n return minLabel;\n };\n\n GSpan.prototype.isMin = function () {\n var _this = this;\n\n var dfsCode = this.dfsCode;\n if (this.verbose) console.log(\"isMin checking\", dfsCode);\n if (dfsCode.dfsEdgeList.length === 1) return true;\n var directed = this.directed;\n var graph = dfsCode.toGraph(_struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_GRAPH_ID\"], directed);\n var nodeMap = graph.nodeMap;\n var dfsCodeMin = new DFScode();\n var root = {};\n graph.nodes.forEach(function (node) {\n var forwardEdges = _this.findForwardRootEdges(graph, node);\n\n forwardEdges.forEach(function (edge) {\n var otherNode = nodeMap[edge.to];\n var nodeEdgeNodeLabel = \"\".concat(node.label, \"-\").concat(edge.label, \"-\").concat(otherNode.label);\n if (!root[nodeEdgeNodeLabel]) root[nodeEdgeNodeLabel] = {\n projected: [],\n nodeLabel1: node.label,\n edgeLabel: edge.label,\n nodeLabel2: otherNode.label\n };\n var pdfs = {\n graphId: graph.id,\n edge: edge,\n preNode: null\n };\n root[nodeEdgeNodeLabel].projected.push(pdfs);\n });\n }); // 比较 root 中每一项的 nodeEdgeNodeLabel 大小,按照 nodeLabel1、edgeLabe、nodeLabel2 的顺序比较\n\n var minLabel = this.findMinLabel(root); // line 419\n\n if (!minLabel) return;\n dfsCodeMin.dfsEdgeList.push(new DFSedge(0, 1, minLabel.nodeLabel1, minLabel.edgeLabel, minLabel.nodeLabel2)); // line 423\n\n var projectIsMin = function projectIsMin(projected) {\n // right most path\n var rmpath = dfsCodeMin.buildRmpath();\n var minNodeLabel = dfsCodeMin.dfsEdgeList[0].nodeEdgeNodeLabel.nodeLabel1;\n var maxToC = dfsCodeMin.dfsEdgeList[rmpath[0]].toNode; // node id\n\n var backwardRoot = {};\n var flag = false,\n newTo = 0;\n var end = directed ? -1 : 0; // 遍历到 1 还是到 0\n\n var _loop_1 = function _loop_1(i) {\n if (flag) return \"break\"; // line 435\n\n projected.forEach(function (p) {\n var history = new History(p);\n\n var backwardEdge = _this.findBackwardEdge(graph, history.edges[rmpath[i]], history.edges[rmpath[0]], history);\n\n if (backwardEdge) {\n // Line 441\n if (!backwardRoot[backwardEdge.label]) {\n backwardRoot[backwardEdge.label] = {\n projected: [],\n edgeLabel: backwardEdge.label\n };\n }\n\n backwardRoot[backwardEdge.label].projected.push({\n graphId: graph.id,\n edge: backwardRoot,\n preNode: p\n });\n newTo = dfsCodeMin.dfsEdgeList[rmpath[i]].fromNode;\n flag = true;\n }\n });\n };\n\n for (var i = rmpath.length - 1; i > end; i--) {\n var state_1 = _loop_1(i);\n\n if (state_1 === \"break\") break;\n }\n\n if (flag) {\n var minBackwardEdgeLabel = _this.findMinLabel(backwardRoot);\n\n dfsCodeMin.dfsEdgeList.push(new DFSedge(maxToC, newTo, _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_NODE_LABEL\"], minBackwardEdgeLabel.edgeLabel, _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_NODE_LABEL\"]));\n var idx_1 = dfsCodeMin.dfsEdgeList.length - 1;\n if (_this.dfsCode.dfsEdgeList[idx_1] !== dfsCodeMin.dfsEdgeList[idx_1]) return false;\n return projectIsMin(backwardRoot[minBackwardEdgeLabel.edgeLabel].projected);\n }\n\n var forwardRoot = {};\n flag = false;\n var newFrom = 0;\n projected.forEach(function (p) {\n var history = new History(p);\n\n var forwardPureEdges = _this.findForwardPureEdges(graph, history.edges[rmpath[0]], minNodeLabel, history);\n\n if (forwardPureEdges.length > 0) {\n flag = true;\n newFrom = maxToC;\n forwardPureEdges.forEach(function (edge) {\n var key = \"\".concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: graph.id,\n edge: edge,\n preNode: p\n });\n });\n }\n });\n var pathLength = rmpath.length;\n\n var _loop_2 = function _loop_2(i) {\n if (flag) return \"break\";\n var value = rmpath[i];\n projected.forEach(function (p) {\n var history = new History(p);\n\n var forwardRmpathEdges = _this.findForwardRmpathEdges(graph, history.edges[value], minNodeLabel, history);\n\n if (forwardRmpathEdges.length > 0) {\n flag = true;\n newFrom = dfsCodeMin.dfsEdgeList[value].fromNode;\n forwardRmpathEdges.forEach(function (edge) {\n var key = \"\".concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: graph.id,\n edge: edge,\n preNode: p\n });\n });\n }\n });\n };\n\n for (var i = 0; i < pathLength; i++) {\n var state_2 = _loop_2(i);\n\n if (state_2 === \"break\") break;\n }\n\n if (!flag) return true;\n\n var forwardMinEdgeNodeLabel = _this.findMinLabel(forwardRoot);\n\n dfsCodeMin.dfsEdgeList.push(new DFSedge(newFrom, maxToC + 1, _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_NODE_LABEL\"], forwardMinEdgeNodeLabel.edgeLabel, forwardMinEdgeNodeLabel.nodeLabel2));\n var idx = dfsCodeMin.dfsEdgeList.length - 1;\n if (dfsCode.dfsEdgeList[idx] !== dfsCodeMin.dfsEdgeList[idx]) return false;\n return projectIsMin(forwardRoot[\"\".concat(forwardMinEdgeNodeLabel.edgeLabel, \"-\").concat(forwardMinEdgeNodeLabel.nodeLabel2)].projected);\n };\n\n var key = \"\".concat(minLabel.nodeLabel1, \"-\").concat(minLabel.edgeLabel, \"-\").concat(minLabel.nodeLabel2);\n return projectIsMin(root[key].projected);\n };\n\n GSpan.prototype.report = function () {\n if (this.dfsCode.getNodeNum() < this.minNodeNum) return;\n this.counter++;\n var graph = this.dfsCode.toGraph(this.counter, this.directed);\n this.frequentSubgraphs.push(Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"clone\"])(graph));\n };\n\n GSpan.prototype.subGraphMining = function (projected) {\n var _this = this;\n\n var support = this.getSupport(projected);\n if (support < this.minSupport) return;\n if (!this.isMin()) return;\n this.report();\n var nodeNum = this.dfsCode.getNodeNum();\n var rmpath = this.dfsCode.buildRmpath();\n var maxToC = this.dfsCode.dfsEdgeList[rmpath[0]].toNode;\n var minNodeLabel = this.dfsCode.dfsEdgeList[0].nodeEdgeNodeLabel.nodeLabel1;\n var forwardRoot = {};\n var backwardRoot = {};\n projected.forEach(function (p) {\n var graph = _this.graphs[p.graphId];\n var nodeMap = graph.nodeMap;\n var history = new History(p); // backward Line 526\n\n for (var i = rmpath.length - 1; i >= 0; i--) {\n var backwardEdge = _this.findBackwardEdge(graph, history.edges[rmpath[i]], history.edges[rmpath[0]], history);\n\n if (backwardEdge) {\n var key = \"\".concat(_this.dfsCode.dfsEdgeList[rmpath[i]].fromNode, \"-\").concat(backwardEdge.label);\n if (!backwardRoot[key]) backwardRoot[key] = {\n projected: [],\n toNodeId: _this.dfsCode.dfsEdgeList[rmpath[i]].fromNode,\n edgeLabel: backwardEdge.label\n };\n backwardRoot[key].projected.push({\n graphId: p.graphId,\n edge: backwardEdge,\n preNode: p\n });\n }\n } // pure forward\n\n\n if (nodeNum >= _this.maxNodeNum) return;\n\n var forwardPureEdges = _this.findForwardPureEdges(graph, history.edges[rmpath[0]], minNodeLabel, history);\n\n forwardPureEdges.forEach(function (edge) {\n var key = \"\".concat(maxToC, \"-\").concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n fromNodeId: maxToC,\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: p.graphId,\n edge: edge,\n preNode: p\n });\n });\n\n var _loop_3 = function _loop_3(i) {\n var forwardRmpathEdges = _this.findForwardRmpathEdges(graph, history.edges[rmpath[i]], minNodeLabel, history);\n\n forwardRmpathEdges.forEach(function (edge) {\n var key = \"\".concat(_this.dfsCode.dfsEdgeList[rmpath[i]].fromNode, \"-\").concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n fromNodeId: _this.dfsCode.dfsEdgeList[rmpath[i]].fromNode,\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: p.graphId,\n edge: edge,\n preNode: p\n });\n });\n }; // rmpath forward\n\n\n for (var i = 0; i < rmpath.length; i++) {\n _loop_3(i);\n }\n }); // backward\n\n Object.keys(backwardRoot).forEach(function (key) {\n var _a = backwardRoot[key],\n toNodeId = _a.toNodeId,\n edgeLabel = _a.edgeLabel;\n\n _this.dfsCode.dfsEdgeList.push(new DFSedge(maxToC, toNodeId, \"-1\", edgeLabel, \"-1\"));\n\n _this.subGraphMining(backwardRoot[key].projected);\n\n _this.dfsCode.dfsEdgeList.pop();\n }); // forward\n\n Object.keys(forwardRoot).forEach(function (key) {\n var _a = forwardRoot[key],\n fromNodeId = _a.fromNodeId,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n\n _this.dfsCode.dfsEdgeList.push(new DFSedge(fromNodeId, maxToC + 1, _struct__WEBPACK_IMPORTED_MODULE_1__[\"VACANT_NODE_LABEL\"], edgeLabel, nodeLabel2));\n\n _this.subGraphMining(forwardRoot[key].projected);\n\n _this.dfsCode.dfsEdgeList.pop();\n });\n };\n\n GSpan.prototype.generate1EdgeFrequentSubGraphs = function () {\n var graphs = this.graphs;\n var directed = this.directed;\n var minSupport = this.minSupport;\n var frequentSize1Subgraphs = this.frequentSize1Subgraphs;\n var nodeLabelCounter = {},\n nodeEdgeNodeCounter = {}; // 保存各个图和各自节点的关系 map,key 格式为 graphKey-node类型\n\n var nodeLableCounted = {}; // 保存各个图和各自边的关系 map,key 格式为 graphKey-fromNode类型-edge类型-toNode类型\n\n var nodeEdgeNodeLabelCounted = {};\n Object.keys(graphs).forEach(function (key) {\n // Line 271\n var graph = graphs[key];\n var nodeMap = graph.nodeMap; // 遍历节点,记录对应图 与 每个节点的 label 到 nodeLableCounted\n\n graph.nodes.forEach(function (node, i) {\n // Line 272\n var nodeLabel = node.label;\n var graphNodeKey = \"\".concat(key, \"-\").concat(nodeLabel);\n\n if (!nodeLableCounted[graphNodeKey]) {\n var counter = nodeLabelCounter[nodeLabel] || 0;\n counter++;\n nodeLabelCounter[nodeLabel] = counter;\n }\n\n nodeLableCounted[graphNodeKey] = {\n graphKey: key,\n label: nodeLabel\n }; // 遍历该节点的所有边,记录各个图和各自边的关系到 nodeEdgeNodeLabelCounted. Line 276\n\n node.edges.forEach(function (edge) {\n var nodeLabel1 = nodeLabel;\n var nodeLabel2 = nodeMap[edge.to].label;\n\n if (!directed && nodeLabel1 > nodeLabel2) {\n var tmp = nodeLabel2;\n nodeLabel2 = nodeLabel1;\n nodeLabel1 = tmp;\n }\n\n var edgeLabel = edge.label;\n var graphNodeEdgeNodeKey = \"\".concat(key, \"-\").concat(nodeLabel1, \"-\").concat(edgeLabel, \"-\").concat(nodeLabel2);\n var nodeEdgeNodeKey = \"\".concat(nodeLabel1, \"-\").concat(edgeLabel, \"-\").concat(nodeLabel2);\n\n if (!nodeEdgeNodeCounter[nodeEdgeNodeKey]) {\n var counter = nodeEdgeNodeCounter[nodeEdgeNodeKey] || 0;\n counter++;\n nodeEdgeNodeCounter[nodeEdgeNodeKey] = counter; // Line281\n }\n\n nodeEdgeNodeLabelCounted[graphNodeEdgeNodeKey] = {\n graphId: key,\n nodeLabel1: nodeLabel1,\n edgeLabel: edgeLabel,\n nodeLabel2: nodeLabel2\n };\n });\n });\n }); // 计算频繁的节点\n\n Object.keys(nodeLabelCounter).forEach(function (label) {\n var count = nodeLabelCounter[label];\n if (count < minSupport) return;\n var g = {\n nodes: [],\n edges: []\n };\n g.nodes.push({\n id: \"0\",\n label: label\n });\n frequentSize1Subgraphs.push(g); // if (minNodeNum <= 1) reportSize1 TODO\n });\n return frequentSize1Subgraphs;\n };\n\n GSpan.prototype.run = function () {\n var _this = this; // -------- 第一步, _generate_1edge_frequent_subgraphs:频繁的单个节点-------\n\n\n this.frequentSize1Subgraphs = this.generate1EdgeFrequentSubGraphs();\n if (this.maxNodeNum < 2) return;\n var graphs = this.graphs;\n var directed = this.directed; // PDFS 数组的 map Line 304\n\n var root = {};\n Object.keys(graphs).forEach(function (graphId) {\n var graph = graphs[graphId];\n var nodeMap = graph.nodeMap; // Line 306\n\n graph.nodes.forEach(function (node) {\n var forwardRootEdges = _this.findForwardRootEdges(graph, node); // Line 308\n\n\n forwardRootEdges.forEach(function (edge) {\n var toNode = nodeMap[edge.to];\n var nodeEdgeNodeLabel = \"\".concat(node.label, \"-\").concat(edge.label, \"-\").concat(toNode.label);\n if (!root[nodeEdgeNodeLabel]) root[nodeEdgeNodeLabel] = {\n projected: [],\n nodeLabel1: node.label,\n edgeLabel: edge.label,\n nodeLabel2: toNode.label\n };\n var pdfs = {\n graphId: graphId,\n edge: edge,\n preNode: null\n };\n root[nodeEdgeNodeLabel].projected.push(pdfs);\n });\n });\n }); // Line 313\n\n Object.keys(root).forEach(function (nodeEdgeNodeLabel) {\n var _a = root[nodeEdgeNodeLabel],\n projected = _a.projected,\n nodeLabel1 = _a.nodeLabel1,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n\n _this.dfsCode.dfsEdgeList.push(new DFSedge(0, 1, nodeLabel1, edgeLabel, nodeLabel2));\n\n _this.subGraphMining(projected);\n\n _this.dfsCode.dfsEdgeList.pop();\n });\n };\n\n return GSpan;\n}();\n\nvar formatGraphs = function formatGraphs(graphs, directed, nodeLabelProp, edgeLabelProp) {\n var result = {};\n Object.keys(graphs).forEach(function (key, i) {\n var graph = graphs[key];\n var fGraph = new _struct__WEBPACK_IMPORTED_MODULE_1__[\"Graph\"](i, true, directed);\n var nodeIdxMap = {};\n graph.nodes.forEach(function (node, j) {\n fGraph.addNode(j, node[nodeLabelProp]);\n nodeIdxMap[node.id] = j;\n });\n graph.edges.forEach(function (edge, k) {\n var sourceIdx = nodeIdxMap[edge.source];\n var targetIdx = nodeIdxMap[edge.target];\n fGraph.addEdge(-1, sourceIdx, targetIdx, edge[edgeLabelProp]);\n });\n if (fGraph && fGraph.getNodeNum()) result[fGraph.id] = fGraph;\n });\n return result;\n};\n\nvar toGraphDatas = function toGraphDatas(graphs, nodeLabelProp, edgeLabelProp) {\n var result = [];\n graphs.forEach(function (graph) {\n var graphData = {\n nodes: [],\n edges: []\n };\n graph.nodes.forEach(function (node) {\n var _a;\n\n graphData.nodes.push((_a = {\n id: \"\".concat(node.id)\n }, _a[nodeLabelProp] = node.label, _a));\n });\n graph.edges.forEach(function (edge) {\n var _a;\n\n graphData.edges.push((_a = {\n source: \"\".concat(edge.from),\n target: \"\".concat(edge.to)\n }, _a[edgeLabelProp] = edge.label, _a));\n });\n result.push(graphData);\n });\n return result;\n};\n\nvar DEFAULT_LABEL_NAME = \"cluster\";\n/**\n * gSpan 频繁子图计算算法(frequent graph mining)\n * @param params 参数\n */\n\nvar gSpan = function gSpan(params) {\n // ------- 将图数据 GraphData 的 map 转换为格式 -------\n var graphs = params.graphs,\n _a = params.directed,\n directed = _a === void 0 ? false : _a,\n _b = params.nodeLabelProp,\n nodeLabelProp = _b === void 0 ? DEFAULT_LABEL_NAME : _b,\n _c = params.edgeLabelProp,\n edgeLabelProp = _c === void 0 ? DEFAULT_LABEL_NAME : _c;\n var formattedGraphs = formatGraphs(graphs, directed, nodeLabelProp, edgeLabelProp);\n var minSupport = params.minSupport,\n maxNodeNum = params.maxNodeNum,\n minNodeNum = params.minNodeNum,\n verbose = params.verbose,\n top = params.top; // ------- 初始化与执行算法 -------\n\n var algoParams = {\n graphs: formattedGraphs,\n minSupport: minSupport,\n maxNodeNum: maxNodeNum,\n minNodeNum: minNodeNum,\n top: top,\n verbose: verbose,\n directed: directed\n };\n var calculator = new GSpan(algoParams);\n calculator.run();\n var result = toGraphDatas(calculator.frequentSubgraphs, nodeLabelProp, edgeLabelProp);\n return result;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (gSpan);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2dTcGFuL2dTcGFuLmpzPzMwMGYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQW1DO0FBQ3FEOztBQUV4RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyx5REFBaUI7QUFDcEQsOEJBQThCLHlEQUFpQjtBQUMvQyxpQ0FBaUMseURBQWlCO0FBQ2xEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUMsR0FBRzs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGFBQWE7QUFDaEM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0EsZ0JBQWdCLHVEQUFlO0FBQy9COztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsNkNBQUs7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIseURBQWlCO0FBQzFDLHlCQUF5Qix5REFBaUI7QUFDMUMseUJBQXlCLHlEQUFpQjtBQUMxQyxLQUFLO0FBQ0w7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxnQ0FBZ0MsUUFBUTtBQUN4QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2Qzs7QUFFN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjs7QUFFckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkIsR0FBRzs7O0FBR0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsZ0JBQWdCO0FBQ25DO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsdURBQWU7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSyxFQUFFOztBQUVQLDJDQUEyQzs7QUFFM0M7QUFDQSxpSEFBaUg7O0FBRWpIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNERBQTREOztBQUU1RDtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7O0FBRWxDO0FBQ0EsaUNBQWlDOztBQUVqQztBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBLHFDQUFxQyxTQUFTO0FBQzlDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSwrREFBK0QseURBQWlCLGtDQUFrQyx5REFBaUI7QUFDbkk7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2YsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNUOztBQUVBLHFCQUFxQixnQkFBZ0I7QUFDckM7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQSxtRUFBbUUseURBQWlCO0FBQ3BGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyx3REFBSztBQUNyQzs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DOztBQUVuQyxxQ0FBcUMsUUFBUTtBQUM3Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsT0FBTzs7O0FBR1A7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNULFFBQVE7OztBQUdSLHFCQUFxQixtQkFBbUI7QUFDeEM7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHlFQUF5RSx5REFBaUI7O0FBRTFGOztBQUVBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0IsaUNBQWlDOztBQUVqQyw4QkFBOEI7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDOztBQUVsQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7O0FBRVY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDJEQUEyRDtBQUMzRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxxQ0FBcUM7QUFDckMsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxxQkFBcUI7OztBQUdyQjtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEM7QUFDQSx1RUFBdUU7OztBQUd2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLDZDQUFLO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qjs7QUFFdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFZSxvRUFBSyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfYWxnb3JpdGhtQDAuMS4xNEBAYW50di9hbGdvcml0aG0vZXMvZ1NwYW4vZ1NwYW4uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjbG9uZSB9IGZyb20gXCJAYW50di91dGlsXCI7XG5pbXBvcnQgeyBHcmFwaCwgVkFDQU5UX05PREVfTEFCRUwsIFZBQ0FOVF9HUkFQSF9JRCwgVkFDQU5UX0VER0VfTEFCRUwgfSBmcm9tIFwiLi9zdHJ1Y3RcIjtcblxudmFyIERGU2VkZ2UgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBERlNlZGdlKGZyb21Ob2RlLCB0b05vZGUsIGZyb21Ob2RlTGFiZWwsIGVkZ2VMYWJlbCwgdG9Ob2RlTGFiZWwpIHtcbiAgICB0aGlzLmZyb21Ob2RlID0gZnJvbU5vZGU7XG4gICAgdGhpcy50b05vZGUgPSB0b05vZGU7XG4gICAgdGhpcy5ub2RlRWRnZU5vZGVMYWJlbCA9IHtcbiAgICAgIG5vZGVMYWJlbDE6IGZyb21Ob2RlTGFiZWwgfHwgVkFDQU5UX05PREVfTEFCRUwsXG4gICAgICBlZGdlTGFiZWw6IGVkZ2VMYWJlbCB8fCBWQUNBTlRfRURHRV9MQUJFTCxcbiAgICAgIG5vZGVMYWJlbDI6IHRvTm9kZUxhYmVsIHx8IFZBQ0FOVF9OT0RFX0xBQkVMXG4gICAgfTtcbiAgfVxuXG4gIERGU2VkZ2UucHJvdG90eXBlLmVxdWFsVG8gPSBmdW5jdGlvbiAob3RoZXIpIHtcbiAgICByZXR1cm4gdGhpcy5mcm9tTm9kZSA9PT0gb3RoZXIuZm9ybU5vZGUgJiYgdGhpcy50b05vZGUgPT09IG90aGVyLnRvTm9kZSAmJiB0aGlzLm5vZGVFZGdlTm9kZUxhYmVsID09PSBvdGhlci5ub2RlRWRnZU5vZGVMYWJlbDtcbiAgfTtcblxuICBERlNlZGdlLnByb3RvdHlwZS5ub3RFcXVhbFRvID0gZnVuY3Rpb24gKG90aGVyKSB7XG4gICAgcmV0dXJuICF0aGlzLmVxdWFsVG8ob3RoZXIpO1xuICB9O1xuXG4gIHJldHVybiBERlNlZGdlO1xufSgpOyAvLyBERlNjb2RlIOaYryBERVNlZGdlIOeahOaVsOe7hFxuXG5cbnZhciBERlNjb2RlID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gREZTY29kZSgpIHtcbiAgICB0aGlzLnJtcGF0aCA9IFtdO1xuICAgIHRoaXMuZGZzRWRnZUxpc3QgPSBbXTtcbiAgfVxuXG4gIERGU2NvZGUucHJvdG90eXBlLmVxdWFsVG8gPSBmdW5jdGlvbiAob3RoZXIpIHtcbiAgICB2YXIgYUxlbmd0aCA9IHRoaXMuZGZzRWRnZUxpc3QubGVuZ3RoO1xuICAgIHZhciBiTGVuZ3RoID0gb3RoZXIubGVuZ3RoO1xuICAgIGlmIChhTGVuZ3RoICE9PSBiTGVuZ3RoKSByZXR1cm4gZmFsc2U7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFMZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZGZzRWRnZUxpc3RbaV0gIT09IG90aGVyW2ldKSByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgREZTY29kZS5wcm90b3R5cGUubm90RXF1YWxUbyA9IGZ1bmN0aW9uIChvdGhlcikge1xuICAgIHJldHVybiAhdGhpcy5lcXVhbFRvKG90aGVyKTtcbiAgfTtcbiAgLyoqIOWinuWKoOS4gOadoSBlZGdlIOWIsCBERlNjb2RlICovXG5cblxuICBERlNjb2RlLnByb3RvdHlwZS5wdXNoQmFjayA9IGZ1bmN0aW9uIChmcm9tTm9kZSwgdG9Ob2RlLCBmcm9tTm9kZUxhYmVsLCBlZGdlTGFiZWwsIHRvTm9kZUxhYmVsKSB7XG4gICAgdGhpcy5kZnNFZGdlTGlzdC5wdXNoKG5ldyBERlNlZGdlKGZyb21Ob2RlLCB0b05vZGUsIGZyb21Ob2RlTGFiZWwsIGVkZ2VMYWJlbCwgdG9Ob2RlTGFiZWwpKTtcbiAgICByZXR1cm4gdGhpcy5kZnNFZGdlTGlzdDtcbiAgfTtcbiAgLyoqIOagueaNriBkZnMg5p6E5bu65Zu+ICovXG5cblxuICBERlNjb2RlLnByb3RvdHlwZS50b0dyYXBoID0gZnVuY3Rpb24gKGdyYXBoSWQsIGRpcmVjdGVkKSB7XG4gICAgaWYgKGdyYXBoSWQgPT09IHZvaWQgMCkge1xuICAgICAgZ3JhcGhJZCA9IFZBQ0FOVF9HUkFQSF9JRDtcbiAgICB9XG5cbiAgICBpZiAoZGlyZWN0ZWQgPT09IHZvaWQgMCkge1xuICAgICAgZGlyZWN0ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIgZ3JhcGggPSBuZXcgR3JhcGgoZ3JhcGhJZCwgdHJ1ZSwgZGlyZWN0ZWQpO1xuICAgIHRoaXMuZGZzRWRnZUxpc3QuZm9yRWFjaChmdW5jdGlvbiAoZGZzRWRnZSkge1xuICAgICAgdmFyIGZyb21Ob2RlSWQgPSBkZnNFZGdlLmZyb21Ob2RlO1xuICAgICAgdmFyIHRvTm9kZUlkID0gZGZzRWRnZS50b05vZGU7XG4gICAgICB2YXIgX2EgPSBkZnNFZGdlLm5vZGVFZGdlTm9kZUxhYmVsLFxuICAgICAgICAgIG5vZGVMYWJlbDEgPSBfYS5ub2RlTGFiZWwxLFxuICAgICAgICAgIGVkZ2VMYWJlbCA9IF9hLmVkZ2VMYWJlbCxcbiAgICAgICAgICBub2RlTGFiZWwyID0gX2Eubm9kZUxhYmVsMjtcbiAgICAgIGlmIChub2RlTGFiZWwxICE9PSBWQUNBTlRfTk9ERV9MQUJFTCkgZ3JhcGguYWRkTm9kZShmcm9tTm9kZUlkLCBub2RlTGFiZWwxKTtcbiAgICAgIGlmIChub2RlTGFiZWwyICE9PSBWQUNBTlRfTk9ERV9MQUJFTCkgZ3JhcGguYWRkTm9kZSh0b05vZGVJZCwgbm9kZUxhYmVsMik7XG4gICAgICBpZiAobm9kZUxhYmVsMSAhPT0gVkFDQU5UX05PREVfTEFCRUwgJiYgbm9kZUxhYmVsMiAhPT0gbm9kZUxhYmVsMSkgZ3JhcGguYWRkRWRnZSh1bmRlZmluZWQsIGZyb21Ob2RlSWQsIHRvTm9kZUlkLCBlZGdlTGFiZWwpO1xuICAgIH0pO1xuICAgIHJldHVybiBncmFwaDtcbiAgfTsgLy8g5bu656uLIHJpZ2h0bW9zdCBwYXRoXG5cblxuICBERlNjb2RlLnByb3RvdHlwZS5idWlsZFJtcGF0aCA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnJtcGF0aCA9IFtdO1xuICAgIHZhciBvbGRGcm9tID0gdW5kZWZpbmVkO1xuICAgIHZhciBzZWxmTGVuZ3RoID0gdGhpcy5kZnNFZGdlTGlzdC5sZW5ndGg7XG5cbiAgICBmb3IgKHZhciBpID0gc2VsZkxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgZGZzRWRnZSA9IHRoaXMuZGZzRWRnZUxpc3RbaV07XG4gICAgICB2YXIgZnJvbU5vZGVJZHggPSBkZnNFZGdlLmZyb21Ob2RlO1xuICAgICAgdmFyIHRvTm9kZUlkeCA9IGRmc0VkZ2UudG9Ob2RlO1xuXG4gICAgICBpZiAoZnJvbU5vZGVJZHggPCB0b05vZGVJZHggJiYgKG9sZEZyb20gPT09IHVuZGVmaW5lZCB8fCB0b05vZGVJZHggPT09IG9sZEZyb20pKSB7XG4gICAgICAgIHRoaXMucm1wYXRoLnB1c2goaSk7XG4gICAgICAgIG9sZEZyb20gPSBmcm9tTm9kZUlkeDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5ybXBhdGg7XG4gIH07XG5cbiAgREZTY29kZS5wcm90b3R5cGUuZ2V0Tm9kZU51bSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbm9kZU1hcCA9IHt9O1xuICAgIHRoaXMuZGZzRWRnZUxpc3QuZm9yRWFjaChmdW5jdGlvbiAoZGZzRWRnZSkge1xuICAgICAgaWYgKCFub2RlTWFwW2Rmc0VkZ2UuZnJvbU5vZGVdKSBub2RlTWFwW2Rmc0VkZ2UuZnJvbU5vZGVdID0gdHJ1ZTtcbiAgICAgIGlmICghbm9kZU1hcFtkZnNFZGdlLnRvTm9kZV0pIG5vZGVNYXBbZGZzRWRnZS50b05vZGVdID0gdHJ1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMobm9kZU1hcCkubGVuZ3RoO1xuICB9O1xuXG4gIHJldHVybiBERlNjb2RlO1xufSgpO1xuXG52YXIgSGlzdG9yeSA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEhpc3RvcnkocGRmcykge1xuICAgIHRoaXMuaGlzID0ge307XG4gICAgdGhpcy5ub2Rlc1VzZWQgPSB7fTtcbiAgICB0aGlzLmVkZ2VzVXNlZCA9IHt9O1xuICAgIHRoaXMuZWRnZXMgPSBbXTtcbiAgICBpZiAoIXBkZnMpIHJldHVybjtcblxuICAgIHdoaWxlIChwZGZzKSB7XG4gICAgICB2YXIgZSA9IHBkZnMuZWRnZTtcbiAgICAgIHRoaXMuZWRnZXMucHVzaChlKTtcbiAgICAgIHRoaXMubm9kZXNVc2VkW2UuZnJvbV0gPSAxO1xuICAgICAgdGhpcy5ub2Rlc1VzZWRbZS50b10gPSAxO1xuICAgICAgdGhpcy5lZGdlc1VzZWRbZS5pZF0gPSAxO1xuICAgICAgcGRmcyA9IHBkZnMucHJlTm9kZTtcbiAgICB9IC8vIOWAkuW6j1xuXG5cbiAgICB0aGlzLmVkZ2VzID0gdGhpcy5lZGdlcy5yZXZlcnNlKCk7XG4gIH1cblxuICBIaXN0b3J5LnByb3RvdHlwZS5oYXNOb2RlID0gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICByZXR1cm4gdGhpcy5ub2Rlc1VzZWRbbm9kZS5pZF0gPT09IDE7XG4gIH07XG5cbiAgSGlzdG9yeS5wcm90b3R5cGUuaGFzRWRnZSA9IGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgcmV0dXJuIHRoaXMuZWRnZXNVc2VkW2VkZ2UuaWRdID09PSAxO1xuICB9O1xuXG4gIHJldHVybiBIaXN0b3J5O1xufSgpO1xuXG52YXIgR1NwYW4gPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBHU3BhbihfYSkge1xuICAgIHZhciBncmFwaHMgPSBfYS5ncmFwaHMsXG4gICAgICAgIF9iID0gX2EubWluU3VwcG9ydCxcbiAgICAgICAgbWluU3VwcG9ydCA9IF9iID09PSB2b2lkIDAgPyAyIDogX2IsXG4gICAgICAgIF9jID0gX2EubWluTm9kZU51bSxcbiAgICAgICAgbWluTm9kZU51bSA9IF9jID09PSB2b2lkIDAgPyAxIDogX2MsXG4gICAgICAgIF9kID0gX2EubWF4Tm9kZU51bSxcbiAgICAgICAgbWF4Tm9kZU51bSA9IF9kID09PSB2b2lkIDAgPyA0IDogX2QsXG4gICAgICAgIF9lID0gX2EudG9wLFxuICAgICAgICB0b3AgPSBfZSA9PT0gdm9pZCAwID8gMTAgOiBfZSxcbiAgICAgICAgX2YgPSBfYS5kaXJlY3RlZCxcbiAgICAgICAgZGlyZWN0ZWQgPSBfZiA9PT0gdm9pZCAwID8gZmFsc2UgOiBfZixcbiAgICAgICAgX2cgPSBfYS52ZXJib3NlLFxuICAgICAgICB2ZXJib3NlID0gX2cgPT09IHZvaWQgMCA/IGZhbHNlIDogX2c7IC8vIC0tLS0tLS0tIOesrOmbtuatpe+8jOWIneWni+WMli0tLS0tLS1cblxuICAgIHRoaXMuZ3JhcGhzID0gZ3JhcGhzO1xuICAgIHRoaXMuZGZzQ29kZSA9IG5ldyBERlNjb2RlKCk7XG4gICAgdGhpcy5zdXBwb3J0ID0gMDtcbiAgICB0aGlzLmZyZXF1ZW50U2l6ZTFTdWJncmFwaHMgPSBbXTtcbiAgICB0aGlzLmZyZXF1ZW50U3ViZ3JhcGhzID0gW107XG4gICAgdGhpcy5taW5TdXBwb3J0ID0gbWluU3VwcG9ydDtcbiAgICB0aGlzLnRvcCA9IHRvcDtcbiAgICB0aGlzLmRpcmVjdGVkID0gZGlyZWN0ZWQ7XG4gICAgdGhpcy5jb3VudGVyID0gMDsgLy8gVE9ETz8gdGltZXN0YW1wID0ge31cblxuICAgIHRoaXMubWF4Tm9kZU51bSA9IG1heE5vZGVOdW07XG4gICAgdGhpcy5taW5Ob2RlTnVtID0gbWluTm9kZU51bTtcbiAgICB0aGlzLnZlcmJvc2UgPSB2ZXJib3NlO1xuICAgIGlmICh0aGlzLm1heE5vZGVOdW0gPCB0aGlzLm1pbk5vZGVOdW0pIHRoaXMubWF4Tm9kZU51bSA9IHRoaXMubWluTm9kZU51bTtcbiAgICB0aGlzLnJlcG9ydERGID0gW107IC8vIG1hdHJpeFxuICB9IC8vIExpbmUgMzUyXG5cblxuICBHU3Bhbi5wcm90b3R5cGUuZmluZEZvcndhcmRSb290RWRnZXMgPSBmdW5jdGlvbiAoZ3JhcGgsIGZyb21Ob2RlKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICB2YXIgbm9kZU1hcCA9IGdyYXBoLm5vZGVNYXA7XG4gICAgZnJvbU5vZGUuZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgaWYgKF90aGlzLmRpcmVjdGVkIHx8IGZyb21Ob2RlLmxhYmVsIDw9IG5vZGVNYXBbZWRnZS50b10ubGFiZWwpIHJlc3VsdC5wdXNoKGVkZ2UpO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgR1NwYW4ucHJvdG90eXBlLmZpbmRCYWNrd2FyZEVkZ2UgPSBmdW5jdGlvbiAoZ3JhcGgsIGVkZ2UxLCBlZGdlMiwgaGlzdG9yeSkge1xuICAgIGlmICghdGhpcy5kaXJlY3RlZCAmJiBlZGdlMSA9PT0gZWRnZTIpIHJldHVybiBudWxsO1xuICAgIHZhciBub2RlTWFwID0gZ3JhcGgubm9kZU1hcDtcbiAgICB2YXIgZWRnZTJUbyA9IG5vZGVNYXBbZWRnZTIudG9dO1xuICAgIHZhciBlZGdlMlRvRWRnZXMgPSBlZGdlMlRvLmVkZ2VzO1xuICAgIHZhciBlZGdlTGVuZ3RoID0gZWRnZTJUb0VkZ2VzLmxlbmd0aDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWRnZUxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWRnZSA9IGVkZ2UyVG9FZGdlc1tpXTtcbiAgICAgIGlmIChoaXN0b3J5Lmhhc0VkZ2UoZWRnZSkgfHwgZWRnZS50byAhPT0gZWRnZTEuZnJvbSkgY29udGludWU7XG5cbiAgICAgIGlmICghdGhpcy5kaXJlY3RlZCkge1xuICAgICAgICBpZiAoZWRnZTEubGFiZWwgPCBlZGdlLmxhYmVsIHx8IGVkZ2UxLmxhYmVsID09PSBlZGdlLmxhYmVsICYmIG5vZGVNYXBbZWRnZTEudG9dLmxhYmVsIDw9IG5vZGVNYXBbZWRnZTIudG9dLmxhYmVsKSB7XG4gICAgICAgICAgcmV0dXJuIGVkZ2U7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChub2RlTWFwW2VkZ2UxLmZyb21dLmxhYmVsIDwgbm9kZU1hcFtlZGdlMi50b10ubGFiZWwgfHwgbm9kZU1hcFtlZGdlMS5mcm9tXS5sYWJlbCA9PT0gbm9kZU1hcFtlZGdlMi50b10ubGFiZWwgJiYgZWRnZTEubGFiZWwgPD0gZWRnZS5sYWJlbCkge1xuICAgICAgICAgIHJldHVybiBlZGdlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgR1NwYW4ucHJvdG90eXBlLmZpbmRGb3J3YXJkUHVyZUVkZ2VzID0gZnVuY3Rpb24gKGdyYXBoLCByaWdodG1vc3RFZGdlLCBtaW5Ob2RlTGFiZWwsIGhpc3RvcnkpIHtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgdmFyIHJpZ2h0bW9zdEVkZ2VUb0lkID0gcmlnaHRtb3N0RWRnZS50bztcbiAgICB2YXIgZWRnZXMgPSBncmFwaC5ub2RlTWFwW3JpZ2h0bW9zdEVkZ2VUb0lkXS5lZGdlcztcbiAgICB2YXIgZWRnZUxlbmd0aCA9IGVkZ2VzLmxlbmd0aDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWRnZUxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWRnZSA9IGVkZ2VzW2ldO1xuICAgICAgdmFyIHRvTm9kZSA9IGdyYXBoLm5vZGVNYXBbZWRnZS50b107XG5cbiAgICAgIGlmIChtaW5Ob2RlTGFiZWwgPD0gdG9Ob2RlLmxhYmVsICYmICFoaXN0b3J5Lmhhc05vZGUodG9Ob2RlKSkge1xuICAgICAgICByZXN1bHQucHVzaChlZGdlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIEdTcGFuLnByb3RvdHlwZS5maW5kRm9yd2FyZFJtcGF0aEVkZ2VzID0gZnVuY3Rpb24gKGdyYXBoLCByaWdodG1vc3RFZGdlLCBtaW5Ob2RlTGFiZWwsIGhpc3RvcnkpIHtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgdmFyIG5vZGVNYXAgPSBncmFwaC5ub2RlTWFwO1xuICAgIHZhciB0b05vZGVMYWJlbCA9IG5vZGVNYXBbcmlnaHRtb3N0RWRnZS50b10ubGFiZWw7XG4gICAgdmFyIGZyb21Ob2RlID0gbm9kZU1hcFtyaWdodG1vc3RFZGdlLmZyb21dO1xuICAgIHZhciBlZGdlcyA9IGZyb21Ob2RlLmVkZ2VzO1xuICAgIHZhciBlZGdlTGVuZ3RoID0gZWRnZXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlZGdlTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlZGdlID0gZWRnZXNbaV07XG4gICAgICB2YXIgbmV3VG9Ob2RlTGFiZWwgPSBub2RlTWFwW2VkZ2UudG9dLmxhYmVsO1xuXG4gICAgICBpZiAocmlnaHRtb3N0RWRnZS50byA9PT0gZWRnZS50byB8fCBtaW5Ob2RlTGFiZWwgPiBuZXdUb05vZGVMYWJlbCB8fCBoaXN0b3J5Lmhhc05vZGUobm9kZU1hcFtlZGdlLnRvXSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChyaWdodG1vc3RFZGdlLmxhYmVsIDwgZWRnZS5sYWJlbCB8fCByaWdodG1vc3RFZGdlLmxhYmVsID09PSBlZGdlLmxhYmVsICYmIHRvTm9kZUxhYmVsIDw9IG5ld1RvTm9kZUxhYmVsKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGVkZ2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgR1NwYW4ucHJvdG90eXBlLmdldFN1cHBvcnQgPSBmdW5jdGlvbiAocHJvamVjdGVkKSB7XG4gICAgdmFyIGdyYXBoTWFwID0ge307XG4gICAgcHJvamVjdGVkLmZvckVhY2goZnVuY3Rpb24gKHBybykge1xuICAgICAgaWYgKCFncmFwaE1hcFtwcm8uZ3JhcGhJZF0pIGdyYXBoTWFwW3Byby5ncmFwaElkXSA9IHRydWU7XG4gICAgfSk7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGdyYXBoTWFwKS5sZW5ndGg7XG4gIH07XG5cbiAgR1NwYW4ucHJvdG90eXBlLmZpbmRNaW5MYWJlbCA9IGZ1bmN0aW9uIChvYmopIHtcbiAgICB2YXIgbWluTGFiZWwgPSB1bmRlZmluZWQ7XG4gICAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGZ1bmN0aW9uIChub2RlRWRnZU5vZGVMYWJlbCkge1xuICAgICAgdmFyIF9hID0gb2JqW25vZGVFZGdlTm9kZUxhYmVsXSxcbiAgICAgICAgICBub2RlTGFiZWwxID0gX2Eubm9kZUxhYmVsMSxcbiAgICAgICAgICBlZGdlTGFiZWwgPSBfYS5lZGdlTGFiZWwsXG4gICAgICAgICAgbm9kZUxhYmVsMiA9IF9hLm5vZGVMYWJlbDI7XG5cbiAgICAgIGlmICghbWluTGFiZWwpIHtcbiAgICAgICAgbWluTGFiZWwgPSB7XG4gICAgICAgICAgbm9kZUxhYmVsMTogbm9kZUxhYmVsMSxcbiAgICAgICAgICBlZGdlTGFiZWw6IGVkZ2VMYWJlbCxcbiAgICAgICAgICBub2RlTGFiZWwyOiBub2RlTGFiZWwyXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKG5vZGVMYWJlbDEgPCBtaW5MYWJlbC5ub2RlTGFiZWwxIHx8IG5vZGVMYWJlbDEgPT09IG1pbkxhYmVsLm5vZGVMYWJlbDEgJiYgZWRnZUxhYmVsIDwgbWluTGFiZWwuZWRnZUxhYmVsIHx8IG5vZGVMYWJlbDEgPT09IG1pbkxhYmVsLm5vZGVMYWJlbDEgJiYgZWRnZUxhYmVsID09PSBtaW5MYWJlbC5lZGdlTGFiZWwgJiYgbm9kZUxhYmVsMiA8IG1pbkxhYmVsLm5vZGVMYWJlbDIpIHtcbiAgICAgICAgbWluTGFiZWwgPSB7XG4gICAgICAgICAgbm9kZUxhYmVsMTogbm9kZUxhYmVsMSxcbiAgICAgICAgICBlZGdlTGFiZWw6IGVkZ2VMYWJlbCxcbiAgICAgICAgICBub2RlTGFiZWwyOiBub2RlTGFiZWwyXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIG1pbkxhYmVsO1xuICB9O1xuXG4gIEdTcGFuLnByb3RvdHlwZS5pc01pbiA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIGRmc0NvZGUgPSB0aGlzLmRmc0NvZGU7XG4gICAgaWYgKHRoaXMudmVyYm9zZSkgY29uc29sZS5sb2coXCJpc01pbiBjaGVja2luZ1wiLCBkZnNDb2RlKTtcbiAgICBpZiAoZGZzQ29kZS5kZnNFZGdlTGlzdC5sZW5ndGggPT09IDEpIHJldHVybiB0cnVlO1xuICAgIHZhciBkaXJlY3RlZCA9IHRoaXMuZGlyZWN0ZWQ7XG4gICAgdmFyIGdyYXBoID0gZGZzQ29kZS50b0dyYXBoKFZBQ0FOVF9HUkFQSF9JRCwgZGlyZWN0ZWQpO1xuICAgIHZhciBub2RlTWFwID0gZ3JhcGgubm9kZU1hcDtcbiAgICB2YXIgZGZzQ29kZU1pbiA9IG5ldyBERlNjb2RlKCk7XG4gICAgdmFyIHJvb3QgPSB7fTtcbiAgICBncmFwaC5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICB2YXIgZm9yd2FyZEVkZ2VzID0gX3RoaXMuZmluZEZvcndhcmRSb290RWRnZXMoZ3JhcGgsIG5vZGUpO1xuXG4gICAgICBmb3J3YXJkRWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICB2YXIgb3RoZXJOb2RlID0gbm9kZU1hcFtlZGdlLnRvXTtcbiAgICAgICAgdmFyIG5vZGVFZGdlTm9kZUxhYmVsID0gXCJcIi5jb25jYXQobm9kZS5sYWJlbCwgXCItXCIpLmNvbmNhdChlZGdlLmxhYmVsLCBcIi1cIikuY29uY2F0KG90aGVyTm9kZS5sYWJlbCk7XG4gICAgICAgIGlmICghcm9vdFtub2RlRWRnZU5vZGVMYWJlbF0pIHJvb3Rbbm9kZUVkZ2VOb2RlTGFiZWxdID0ge1xuICAgICAgICAgIHByb2plY3RlZDogW10sXG4gICAgICAgICAgbm9kZUxhYmVsMTogbm9kZS5sYWJlbCxcbiAgICAgICAgICBlZGdlTGFiZWw6IGVkZ2UubGFiZWwsXG4gICAgICAgICAgbm9kZUxhYmVsMjogb3RoZXJOb2RlLmxhYmVsXG4gICAgICAgIH07XG4gICAgICAgIHZhciBwZGZzID0ge1xuICAgICAgICAgIGdyYXBoSWQ6IGdyYXBoLmlkLFxuICAgICAgICAgIGVkZ2U6IGVkZ2UsXG4gICAgICAgICAgcHJlTm9kZTogbnVsbFxuICAgICAgICB9O1xuICAgICAgICByb290W25vZGVFZGdlTm9kZUxhYmVsXS5wcm9qZWN0ZWQucHVzaChwZGZzKTtcbiAgICAgIH0pO1xuICAgIH0pOyAvLyDmr5TovoMgcm9vdCDkuK3mr4/kuIDpobnnmoQgbm9kZUVkZ2VOb2RlTGFiZWwg5aSn5bCP77yM5oyJ54WnIG5vZGVMYWJlbDHjgIFlZGdlTGFiZeOAgW5vZGVMYWJlbDIg55qE6aG65bqP5q+U6L6DXG5cbiAgICB2YXIgbWluTGFiZWwgPSB0aGlzLmZpbmRNaW5MYWJlbChyb290KTsgLy8gbGluZSA0MTlcblxuICAgIGlmICghbWluTGFiZWwpIHJldHVybjtcbiAgICBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0LnB1c2gobmV3IERGU2VkZ2UoMCwgMSwgbWluTGFiZWwubm9kZUxhYmVsMSwgbWluTGFiZWwuZWRnZUxhYmVsLCBtaW5MYWJlbC5ub2RlTGFiZWwyKSk7IC8vIGxpbmUgNDIzXG5cbiAgICB2YXIgcHJvamVjdElzTWluID0gZnVuY3Rpb24gcHJvamVjdElzTWluKHByb2plY3RlZCkge1xuICAgICAgLy8gcmlnaHQgbW9zdCBwYXRoXG4gICAgICB2YXIgcm1wYXRoID0gZGZzQ29kZU1pbi5idWlsZFJtcGF0aCgpO1xuICAgICAgdmFyIG1pbk5vZGVMYWJlbCA9IGRmc0NvZGVNaW4uZGZzRWRnZUxpc3RbMF0ubm9kZUVkZ2VOb2RlTGFiZWwubm9kZUxhYmVsMTtcbiAgICAgIHZhciBtYXhUb0MgPSBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0W3JtcGF0aFswXV0udG9Ob2RlOyAvLyBub2RlIGlkXG5cbiAgICAgIHZhciBiYWNrd2FyZFJvb3QgPSB7fTtcbiAgICAgIHZhciBmbGFnID0gZmFsc2UsXG4gICAgICAgICAgbmV3VG8gPSAwO1xuICAgICAgdmFyIGVuZCA9IGRpcmVjdGVkID8gLTEgOiAwOyAvLyDpgY3ljobliLAgMSDov5jmmK/liLAgMFxuXG4gICAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIF9sb29wXzEoaSkge1xuICAgICAgICBpZiAoZmxhZykgcmV0dXJuIFwiYnJlYWtcIjsgLy8gbGluZSA0MzVcblxuICAgICAgICBwcm9qZWN0ZWQuZm9yRWFjaChmdW5jdGlvbiAocCkge1xuICAgICAgICAgIHZhciBoaXN0b3J5ID0gbmV3IEhpc3RvcnkocCk7XG5cbiAgICAgICAgICB2YXIgYmFja3dhcmRFZGdlID0gX3RoaXMuZmluZEJhY2t3YXJkRWRnZShncmFwaCwgaGlzdG9yeS5lZGdlc1tybXBhdGhbaV1dLCBoaXN0b3J5LmVkZ2VzW3JtcGF0aFswXV0sIGhpc3RvcnkpO1xuXG4gICAgICAgICAgaWYgKGJhY2t3YXJkRWRnZSkge1xuICAgICAgICAgICAgLy8gTGluZSA0NDFcbiAgICAgICAgICAgIGlmICghYmFja3dhcmRSb290W2JhY2t3YXJkRWRnZS5sYWJlbF0pIHtcbiAgICAgICAgICAgICAgYmFja3dhcmRSb290W2JhY2t3YXJkRWRnZS5sYWJlbF0gPSB7XG4gICAgICAgICAgICAgICAgcHJvamVjdGVkOiBbXSxcbiAgICAgICAgICAgICAgICBlZGdlTGFiZWw6IGJhY2t3YXJkRWRnZS5sYWJlbFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBiYWNrd2FyZFJvb3RbYmFja3dhcmRFZGdlLmxhYmVsXS5wcm9qZWN0ZWQucHVzaCh7XG4gICAgICAgICAgICAgIGdyYXBoSWQ6IGdyYXBoLmlkLFxuICAgICAgICAgICAgICBlZGdlOiBiYWNrd2FyZFJvb3QsXG4gICAgICAgICAgICAgIHByZU5vZGU6IHBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgbmV3VG8gPSBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0W3JtcGF0aFtpXV0uZnJvbU5vZGU7XG4gICAgICAgICAgICBmbGFnID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgZm9yICh2YXIgaSA9IHJtcGF0aC5sZW5ndGggLSAxOyBpID4gZW5kOyBpLS0pIHtcbiAgICAgICAgdmFyIHN0YXRlXzEgPSBfbG9vcF8xKGkpO1xuXG4gICAgICAgIGlmIChzdGF0ZV8xID09PSBcImJyZWFrXCIpIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoZmxhZykge1xuICAgICAgICB2YXIgbWluQmFja3dhcmRFZGdlTGFiZWwgPSBfdGhpcy5maW5kTWluTGFiZWwoYmFja3dhcmRSb290KTtcblxuICAgICAgICBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0LnB1c2gobmV3IERGU2VkZ2UobWF4VG9DLCBuZXdUbywgVkFDQU5UX05PREVfTEFCRUwsIG1pbkJhY2t3YXJkRWRnZUxhYmVsLmVkZ2VMYWJlbCwgVkFDQU5UX05PREVfTEFCRUwpKTtcbiAgICAgICAgdmFyIGlkeF8xID0gZGZzQ29kZU1pbi5kZnNFZGdlTGlzdC5sZW5ndGggLSAxO1xuICAgICAgICBpZiAoX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdFtpZHhfMV0gIT09IGRmc0NvZGVNaW4uZGZzRWRnZUxpc3RbaWR4XzFdKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiBwcm9qZWN0SXNNaW4oYmFja3dhcmRSb290W21pbkJhY2t3YXJkRWRnZUxhYmVsLmVkZ2VMYWJlbF0ucHJvamVjdGVkKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGZvcndhcmRSb290ID0ge307XG4gICAgICBmbGFnID0gZmFsc2U7XG4gICAgICB2YXIgbmV3RnJvbSA9IDA7XG4gICAgICBwcm9qZWN0ZWQuZm9yRWFjaChmdW5jdGlvbiAocCkge1xuICAgICAgICB2YXIgaGlzdG9yeSA9IG5ldyBIaXN0b3J5KHApO1xuXG4gICAgICAgIHZhciBmb3J3YXJkUHVyZUVkZ2VzID0gX3RoaXMuZmluZEZvcndhcmRQdXJlRWRnZXMoZ3JhcGgsIGhpc3RvcnkuZWRnZXNbcm1wYXRoWzBdXSwgbWluTm9kZUxhYmVsLCBoaXN0b3J5KTtcblxuICAgICAgICBpZiAoZm9yd2FyZFB1cmVFZGdlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZmxhZyA9IHRydWU7XG4gICAgICAgICAgbmV3RnJvbSA9IG1heFRvQztcbiAgICAgICAgICBmb3J3YXJkUHVyZUVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChlZGdlLmxhYmVsLCBcIi1cIikuY29uY2F0KG5vZGVNYXBbZWRnZS50b10ubGFiZWwpO1xuICAgICAgICAgICAgaWYgKCFmb3J3YXJkUm9vdFtrZXldKSBmb3J3YXJkUm9vdFtrZXldID0ge1xuICAgICAgICAgICAgICBwcm9qZWN0ZWQ6IFtdLFxuICAgICAgICAgICAgICBlZGdlTGFiZWw6IGVkZ2UubGFiZWwsXG4gICAgICAgICAgICAgIG5vZGVMYWJlbDI6IG5vZGVNYXBbZWRnZS50b10ubGFiZWxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBmb3J3YXJkUm9vdFtrZXldLnByb2plY3RlZC5wdXNoKHtcbiAgICAgICAgICAgICAgZ3JhcGhJZDogZ3JhcGguaWQsXG4gICAgICAgICAgICAgIGVkZ2U6IGVkZ2UsXG4gICAgICAgICAgICAgIHByZU5vZGU6IHBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHZhciBwYXRoTGVuZ3RoID0gcm1wYXRoLmxlbmd0aDtcblxuICAgICAgdmFyIF9sb29wXzIgPSBmdW5jdGlvbiBfbG9vcF8yKGkpIHtcbiAgICAgICAgaWYgKGZsYWcpIHJldHVybiBcImJyZWFrXCI7XG4gICAgICAgIHZhciB2YWx1ZSA9IHJtcGF0aFtpXTtcbiAgICAgICAgcHJvamVjdGVkLmZvckVhY2goZnVuY3Rpb24gKHApIHtcbiAgICAgICAgICB2YXIgaGlzdG9yeSA9IG5ldyBIaXN0b3J5KHApO1xuXG4gICAgICAgICAgdmFyIGZvcndhcmRSbXBhdGhFZGdlcyA9IF90aGlzLmZpbmRGb3J3YXJkUm1wYXRoRWRnZXMoZ3JhcGgsIGhpc3RvcnkuZWRnZXNbdmFsdWVdLCBtaW5Ob2RlTGFiZWwsIGhpc3RvcnkpO1xuXG4gICAgICAgICAgaWYgKGZvcndhcmRSbXBhdGhFZGdlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmbGFnID0gdHJ1ZTtcbiAgICAgICAgICAgIG5ld0Zyb20gPSBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0W3ZhbHVlXS5mcm9tTm9kZTtcbiAgICAgICAgICAgIGZvcndhcmRSbXBhdGhFZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgICAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChlZGdlLmxhYmVsLCBcIi1cIikuY29uY2F0KG5vZGVNYXBbZWRnZS50b10ubGFiZWwpO1xuICAgICAgICAgICAgICBpZiAoIWZvcndhcmRSb290W2tleV0pIGZvcndhcmRSb290W2tleV0gPSB7XG4gICAgICAgICAgICAgICAgcHJvamVjdGVkOiBbXSxcbiAgICAgICAgICAgICAgICBlZGdlTGFiZWw6IGVkZ2UubGFiZWwsXG4gICAgICAgICAgICAgICAgbm9kZUxhYmVsMjogbm9kZU1hcFtlZGdlLnRvXS5sYWJlbFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBmb3J3YXJkUm9vdFtrZXldLnByb2plY3RlZC5wdXNoKHtcbiAgICAgICAgICAgICAgICBncmFwaElkOiBncmFwaC5pZCxcbiAgICAgICAgICAgICAgICBlZGdlOiBlZGdlLFxuICAgICAgICAgICAgICAgIHByZU5vZGU6IHBcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXRoTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHN0YXRlXzIgPSBfbG9vcF8yKGkpO1xuXG4gICAgICAgIGlmIChzdGF0ZV8yID09PSBcImJyZWFrXCIpIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWZsYWcpIHJldHVybiB0cnVlO1xuXG4gICAgICB2YXIgZm9yd2FyZE1pbkVkZ2VOb2RlTGFiZWwgPSBfdGhpcy5maW5kTWluTGFiZWwoZm9yd2FyZFJvb3QpO1xuXG4gICAgICBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0LnB1c2gobmV3IERGU2VkZ2UobmV3RnJvbSwgbWF4VG9DICsgMSwgVkFDQU5UX05PREVfTEFCRUwsIGZvcndhcmRNaW5FZGdlTm9kZUxhYmVsLmVkZ2VMYWJlbCwgZm9yd2FyZE1pbkVkZ2VOb2RlTGFiZWwubm9kZUxhYmVsMikpO1xuICAgICAgdmFyIGlkeCA9IGRmc0NvZGVNaW4uZGZzRWRnZUxpc3QubGVuZ3RoIC0gMTtcbiAgICAgIGlmIChkZnNDb2RlLmRmc0VkZ2VMaXN0W2lkeF0gIT09IGRmc0NvZGVNaW4uZGZzRWRnZUxpc3RbaWR4XSkgcmV0dXJuIGZhbHNlO1xuICAgICAgcmV0dXJuIHByb2plY3RJc01pbihmb3J3YXJkUm9vdFtcIlwiLmNvbmNhdChmb3J3YXJkTWluRWRnZU5vZGVMYWJlbC5lZGdlTGFiZWwsIFwiLVwiKS5jb25jYXQoZm9yd2FyZE1pbkVkZ2VOb2RlTGFiZWwubm9kZUxhYmVsMildLnByb2plY3RlZCk7XG4gICAgfTtcblxuICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChtaW5MYWJlbC5ub2RlTGFiZWwxLCBcIi1cIikuY29uY2F0KG1pbkxhYmVsLmVkZ2VMYWJlbCwgXCItXCIpLmNvbmNhdChtaW5MYWJlbC5ub2RlTGFiZWwyKTtcbiAgICByZXR1cm4gcHJvamVjdElzTWluKHJvb3Rba2V5XS5wcm9qZWN0ZWQpO1xuICB9O1xuXG4gIEdTcGFuLnByb3RvdHlwZS5yZXBvcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuZGZzQ29kZS5nZXROb2RlTnVtKCkgPCB0aGlzLm1pbk5vZGVOdW0pIHJldHVybjtcbiAgICB0aGlzLmNvdW50ZXIrKztcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmRmc0NvZGUudG9HcmFwaCh0aGlzLmNvdW50ZXIsIHRoaXMuZGlyZWN0ZWQpO1xuICAgIHRoaXMuZnJlcXVlbnRTdWJncmFwaHMucHVzaChjbG9uZShncmFwaCkpO1xuICB9O1xuXG4gIEdTcGFuLnByb3RvdHlwZS5zdWJHcmFwaE1pbmluZyA9IGZ1bmN0aW9uIChwcm9qZWN0ZWQpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIHN1cHBvcnQgPSB0aGlzLmdldFN1cHBvcnQocHJvamVjdGVkKTtcbiAgICBpZiAoc3VwcG9ydCA8IHRoaXMubWluU3VwcG9ydCkgcmV0dXJuO1xuICAgIGlmICghdGhpcy5pc01pbigpKSByZXR1cm47XG4gICAgdGhpcy5yZXBvcnQoKTtcbiAgICB2YXIgbm9kZU51bSA9IHRoaXMuZGZzQ29kZS5nZXROb2RlTnVtKCk7XG4gICAgdmFyIHJtcGF0aCA9IHRoaXMuZGZzQ29kZS5idWlsZFJtcGF0aCgpO1xuICAgIHZhciBtYXhUb0MgPSB0aGlzLmRmc0NvZGUuZGZzRWRnZUxpc3Rbcm1wYXRoWzBdXS50b05vZGU7XG4gICAgdmFyIG1pbk5vZGVMYWJlbCA9IHRoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdFswXS5ub2RlRWRnZU5vZGVMYWJlbC5ub2RlTGFiZWwxO1xuICAgIHZhciBmb3J3YXJkUm9vdCA9IHt9O1xuICAgIHZhciBiYWNrd2FyZFJvb3QgPSB7fTtcbiAgICBwcm9qZWN0ZWQuZm9yRWFjaChmdW5jdGlvbiAocCkge1xuICAgICAgdmFyIGdyYXBoID0gX3RoaXMuZ3JhcGhzW3AuZ3JhcGhJZF07XG4gICAgICB2YXIgbm9kZU1hcCA9IGdyYXBoLm5vZGVNYXA7XG4gICAgICB2YXIgaGlzdG9yeSA9IG5ldyBIaXN0b3J5KHApOyAvLyBiYWNrd2FyZCBMaW5lIDUyNlxuXG4gICAgICBmb3IgKHZhciBpID0gcm1wYXRoLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHZhciBiYWNrd2FyZEVkZ2UgPSBfdGhpcy5maW5kQmFja3dhcmRFZGdlKGdyYXBoLCBoaXN0b3J5LmVkZ2VzW3JtcGF0aFtpXV0sIGhpc3RvcnkuZWRnZXNbcm1wYXRoWzBdXSwgaGlzdG9yeSk7XG5cbiAgICAgICAgaWYgKGJhY2t3YXJkRWRnZSkge1xuICAgICAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChfdGhpcy5kZnNDb2RlLmRmc0VkZ2VMaXN0W3JtcGF0aFtpXV0uZnJvbU5vZGUsIFwiLVwiKS5jb25jYXQoYmFja3dhcmRFZGdlLmxhYmVsKTtcbiAgICAgICAgICBpZiAoIWJhY2t3YXJkUm9vdFtrZXldKSBiYWNrd2FyZFJvb3Rba2V5XSA9IHtcbiAgICAgICAgICAgIHByb2plY3RlZDogW10sXG4gICAgICAgICAgICB0b05vZGVJZDogX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdFtybXBhdGhbaV1dLmZyb21Ob2RlLFxuICAgICAgICAgICAgZWRnZUxhYmVsOiBiYWNrd2FyZEVkZ2UubGFiZWxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJhY2t3YXJkUm9vdFtrZXldLnByb2plY3RlZC5wdXNoKHtcbiAgICAgICAgICAgIGdyYXBoSWQ6IHAuZ3JhcGhJZCxcbiAgICAgICAgICAgIGVkZ2U6IGJhY2t3YXJkRWRnZSxcbiAgICAgICAgICAgIHByZU5vZGU6IHBcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBwdXJlIGZvcndhcmRcblxuXG4gICAgICBpZiAobm9kZU51bSA+PSBfdGhpcy5tYXhOb2RlTnVtKSByZXR1cm47XG5cbiAgICAgIHZhciBmb3J3YXJkUHVyZUVkZ2VzID0gX3RoaXMuZmluZEZvcndhcmRQdXJlRWRnZXMoZ3JhcGgsIGhpc3RvcnkuZWRnZXNbcm1wYXRoWzBdXSwgbWluTm9kZUxhYmVsLCBoaXN0b3J5KTtcblxuICAgICAgZm9yd2FyZFB1cmVFZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChtYXhUb0MsIFwiLVwiKS5jb25jYXQoZWRnZS5sYWJlbCwgXCItXCIpLmNvbmNhdChub2RlTWFwW2VkZ2UudG9dLmxhYmVsKTtcbiAgICAgICAgaWYgKCFmb3J3YXJkUm9vdFtrZXldKSBmb3J3YXJkUm9vdFtrZXldID0ge1xuICAgICAgICAgIHByb2plY3RlZDogW10sXG4gICAgICAgICAgZnJvbU5vZGVJZDogbWF4VG9DLFxuICAgICAgICAgIGVkZ2VMYWJlbDogZWRnZS5sYWJlbCxcbiAgICAgICAgICBub2RlTGFiZWwyOiBub2RlTWFwW2VkZ2UudG9dLmxhYmVsXG4gICAgICAgIH07XG4gICAgICAgIGZvcndhcmRSb290W2tleV0ucHJvamVjdGVkLnB1c2goe1xuICAgICAgICAgIGdyYXBoSWQ6IHAuZ3JhcGhJZCxcbiAgICAgICAgICBlZGdlOiBlZGdlLFxuICAgICAgICAgIHByZU5vZGU6IHBcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgdmFyIF9sb29wXzMgPSBmdW5jdGlvbiBfbG9vcF8zKGkpIHtcbiAgICAgICAgdmFyIGZvcndhcmRSbXBhdGhFZGdlcyA9IF90aGlzLmZpbmRGb3J3YXJkUm1wYXRoRWRnZXMoZ3JhcGgsIGhpc3RvcnkuZWRnZXNbcm1wYXRoW2ldXSwgbWluTm9kZUxhYmVsLCBoaXN0b3J5KTtcblxuICAgICAgICBmb3J3YXJkUm1wYXRoRWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChfdGhpcy5kZnNDb2RlLmRmc0VkZ2VMaXN0W3JtcGF0aFtpXV0uZnJvbU5vZGUsIFwiLVwiKS5jb25jYXQoZWRnZS5sYWJlbCwgXCItXCIpLmNvbmNhdChub2RlTWFwW2VkZ2UudG9dLmxhYmVsKTtcbiAgICAgICAgICBpZiAoIWZvcndhcmRSb290W2tleV0pIGZvcndhcmRSb290W2tleV0gPSB7XG4gICAgICAgICAgICBwcm9qZWN0ZWQ6IFtdLFxuICAgICAgICAgICAgZnJvbU5vZGVJZDogX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdFtybXBhdGhbaV1dLmZyb21Ob2RlLFxuICAgICAgICAgICAgZWRnZUxhYmVsOiBlZGdlLmxhYmVsLFxuICAgICAgICAgICAgbm9kZUxhYmVsMjogbm9kZU1hcFtlZGdlLnRvXS5sYWJlbFxuICAgICAgICAgIH07XG4gICAgICAgICAgZm9yd2FyZFJvb3Rba2V5XS5wcm9qZWN0ZWQucHVzaCh7XG4gICAgICAgICAgICBncmFwaElkOiBwLmdyYXBoSWQsXG4gICAgICAgICAgICBlZGdlOiBlZGdlLFxuICAgICAgICAgICAgcHJlTm9kZTogcFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH07IC8vIHJtcGF0aCBmb3J3YXJkXG5cblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBybXBhdGgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgX2xvb3BfMyhpKTtcbiAgICAgIH1cbiAgICB9KTsgLy8gYmFja3dhcmRcblxuICAgIE9iamVjdC5rZXlzKGJhY2t3YXJkUm9vdCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICB2YXIgX2EgPSBiYWNrd2FyZFJvb3Rba2V5XSxcbiAgICAgICAgICB0b05vZGVJZCA9IF9hLnRvTm9kZUlkLFxuICAgICAgICAgIGVkZ2VMYWJlbCA9IF9hLmVkZ2VMYWJlbDtcblxuICAgICAgX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdC5wdXNoKG5ldyBERlNlZGdlKG1heFRvQywgdG9Ob2RlSWQsIFwiLTFcIiwgZWRnZUxhYmVsLCBcIi0xXCIpKTtcblxuICAgICAgX3RoaXMuc3ViR3JhcGhNaW5pbmcoYmFja3dhcmRSb290W2tleV0ucHJvamVjdGVkKTtcblxuICAgICAgX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdC5wb3AoKTtcbiAgICB9KTsgLy8gZm9yd2FyZFxuXG4gICAgT2JqZWN0LmtleXMoZm9yd2FyZFJvb3QpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgdmFyIF9hID0gZm9yd2FyZFJvb3Rba2V5XSxcbiAgICAgICAgICBmcm9tTm9kZUlkID0gX2EuZnJvbU5vZGVJZCxcbiAgICAgICAgICBlZGdlTGFiZWwgPSBfYS5lZGdlTGFiZWwsXG4gICAgICAgICAgbm9kZUxhYmVsMiA9IF9hLm5vZGVMYWJlbDI7XG5cbiAgICAgIF90aGlzLmRmc0NvZGUuZGZzRWRnZUxpc3QucHVzaChuZXcgREZTZWRnZShmcm9tTm9kZUlkLCBtYXhUb0MgKyAxLCBWQUNBTlRfTk9ERV9MQUJFTCwgZWRnZUxhYmVsLCBub2RlTGFiZWwyKSk7XG5cbiAgICAgIF90aGlzLnN1YkdyYXBoTWluaW5nKGZvcndhcmRSb290W2tleV0ucHJvamVjdGVkKTtcblxuICAgICAgX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdC5wb3AoKTtcbiAgICB9KTtcbiAgfTtcblxuICBHU3Bhbi5wcm90b3R5cGUuZ2VuZXJhdGUxRWRnZUZyZXF1ZW50U3ViR3JhcGhzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBncmFwaHMgPSB0aGlzLmdyYXBocztcbiAgICB2YXIgZGlyZWN0ZWQgPSB0aGlzLmRpcmVjdGVkO1xuICAgIHZhciBtaW5TdXBwb3J0ID0gdGhpcy5taW5TdXBwb3J0O1xuICAgIHZhciBmcmVxdWVudFNpemUxU3ViZ3JhcGhzID0gdGhpcy5mcmVxdWVudFNpemUxU3ViZ3JhcGhzO1xuICAgIHZhciBub2RlTGFiZWxDb3VudGVyID0ge30sXG4gICAgICAgIG5vZGVFZGdlTm9kZUNvdW50ZXIgPSB7fTsgLy8g5L+d5a2Y5ZCE5Liq5Zu+5ZKM5ZCE6Ieq6IqC54K555qE5YWz57O7IG1hcO+8jGtleSDmoLzlvI/kuLogZ3JhcGhLZXktbm9kZeexu+Wei1xuXG4gICAgdmFyIG5vZGVMYWJsZUNvdW50ZWQgPSB7fTsgLy8g5L+d5a2Y5ZCE5Liq5Zu+5ZKM5ZCE6Ieq6L6555qE5YWz57O7IG1hcO+8jGtleSDmoLzlvI/kuLogZ3JhcGhLZXktZnJvbU5vZGXnsbvlnostZWRnZeexu+Weiy10b05vZGXnsbvlnotcblxuICAgIHZhciBub2RlRWRnZU5vZGVMYWJlbENvdW50ZWQgPSB7fTtcbiAgICBPYmplY3Qua2V5cyhncmFwaHMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgLy8gTGluZSAyNzFcbiAgICAgIHZhciBncmFwaCA9IGdyYXBoc1trZXldO1xuICAgICAgdmFyIG5vZGVNYXAgPSBncmFwaC5ub2RlTWFwOyAvLyDpgY3ljoboioLngrnvvIzorrDlvZXlr7nlupTlm74g5LiOIOavj+S4quiKgueCueeahCBsYWJlbCDliLAgbm9kZUxhYmxlQ291bnRlZFxuXG4gICAgICBncmFwaC5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlLCBpKSB7XG4gICAgICAgIC8vIExpbmUgMjcyXG4gICAgICAgIHZhciBub2RlTGFiZWwgPSBub2RlLmxhYmVsO1xuICAgICAgICB2YXIgZ3JhcGhOb2RlS2V5ID0gXCJcIi5jb25jYXQoa2V5LCBcIi1cIikuY29uY2F0KG5vZGVMYWJlbCk7XG5cbiAgICAgICAgaWYgKCFub2RlTGFibGVDb3VudGVkW2dyYXBoTm9kZUtleV0pIHtcbiAgICAgICAgICB2YXIgY291bnRlciA9IG5vZGVMYWJlbENvdW50ZXJbbm9kZUxhYmVsXSB8fCAwO1xuICAgICAgICAgIGNvdW50ZXIrKztcbiAgICAgICAgICBub2RlTGFiZWxDb3VudGVyW25vZGVMYWJlbF0gPSBjb3VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgbm9kZUxhYmxlQ291bnRlZFtncmFwaE5vZGVLZXldID0ge1xuICAgICAgICAgIGdyYXBoS2V5OiBrZXksXG4gICAgICAgICAgbGFiZWw6IG5vZGVMYWJlbFxuICAgICAgICB9OyAvLyDpgY3ljobor6XoioLngrnnmoTmiYDmnInovrnvvIzorrDlvZXlkITkuKrlm77lkozlkIToh6rovrnnmoTlhbPns7vliLAgbm9kZUVkZ2VOb2RlTGFiZWxDb3VudGVkLiBMaW5lIDI3NlxuXG4gICAgICAgIG5vZGUuZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgIHZhciBub2RlTGFiZWwxID0gbm9kZUxhYmVsO1xuICAgICAgICAgIHZhciBub2RlTGFiZWwyID0gbm9kZU1hcFtlZGdlLnRvXS5sYWJlbDtcblxuICAgICAgICAgIGlmICghZGlyZWN0ZWQgJiYgbm9kZUxhYmVsMSA+IG5vZGVMYWJlbDIpIHtcbiAgICAgICAgICAgIHZhciB0bXAgPSBub2RlTGFiZWwyO1xuICAgICAgICAgICAgbm9kZUxhYmVsMiA9IG5vZGVMYWJlbDE7XG4gICAgICAgICAgICBub2RlTGFiZWwxID0gdG1wO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBlZGdlTGFiZWwgPSBlZGdlLmxhYmVsO1xuICAgICAgICAgIHZhciBncmFwaE5vZGVFZGdlTm9kZUtleSA9IFwiXCIuY29uY2F0KGtleSwgXCItXCIpLmNvbmNhdChub2RlTGFiZWwxLCBcIi1cIikuY29uY2F0KGVkZ2VMYWJlbCwgXCItXCIpLmNvbmNhdChub2RlTGFiZWwyKTtcbiAgICAgICAgICB2YXIgbm9kZUVkZ2VOb2RlS2V5ID0gXCJcIi5jb25jYXQobm9kZUxhYmVsMSwgXCItXCIpLmNvbmNhdChlZGdlTGFiZWwsIFwiLVwiKS5jb25jYXQobm9kZUxhYmVsMik7XG5cbiAgICAgICAgICBpZiAoIW5vZGVFZGdlTm9kZUNvdW50ZXJbbm9kZUVkZ2VOb2RlS2V5XSkge1xuICAgICAgICAgICAgdmFyIGNvdW50ZXIgPSBub2RlRWRnZU5vZGVDb3VudGVyW25vZGVFZGdlTm9kZUtleV0gfHwgMDtcbiAgICAgICAgICAgIGNvdW50ZXIrKztcbiAgICAgICAgICAgIG5vZGVFZGdlTm9kZUNvdW50ZXJbbm9kZUVkZ2VOb2RlS2V5XSA9IGNvdW50ZXI7IC8vIExpbmUyODFcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBub2RlRWRnZU5vZGVMYWJlbENvdW50ZWRbZ3JhcGhOb2RlRWRnZU5vZGVLZXldID0ge1xuICAgICAgICAgICAgZ3JhcGhJZDoga2V5LFxuICAgICAgICAgICAgbm9kZUxhYmVsMTogbm9kZUxhYmVsMSxcbiAgICAgICAgICAgIGVkZ2VMYWJlbDogZWRnZUxhYmVsLFxuICAgICAgICAgICAgbm9kZUxhYmVsMjogbm9kZUxhYmVsMlxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7IC8vIOiuoeeul+mikee5geeahOiKgueCuVxuXG4gICAgT2JqZWN0LmtleXMobm9kZUxhYmVsQ291bnRlcikuZm9yRWFjaChmdW5jdGlvbiAobGFiZWwpIHtcbiAgICAgIHZhciBjb3VudCA9IG5vZGVMYWJlbENvdW50ZXJbbGFiZWxdO1xuICAgICAgaWYgKGNvdW50IDwgbWluU3VwcG9ydCkgcmV0dXJuO1xuICAgICAgdmFyIGcgPSB7XG4gICAgICAgIG5vZGVzOiBbXSxcbiAgICAgICAgZWRnZXM6IFtdXG4gICAgICB9O1xuICAgICAgZy5ub2Rlcy5wdXNoKHtcbiAgICAgICAgaWQ6IFwiMFwiLFxuICAgICAgICBsYWJlbDogbGFiZWxcbiAgICAgIH0pO1xuICAgICAgZnJlcXVlbnRTaXplMVN1YmdyYXBocy5wdXNoKGcpOyAvLyBpZiAobWluTm9kZU51bSA8PSAxKSByZXBvcnRTaXplMSBUT0RPXG4gICAgfSk7XG4gICAgcmV0dXJuIGZyZXF1ZW50U2l6ZTFTdWJncmFwaHM7XG4gIH07XG5cbiAgR1NwYW4ucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzOyAvLyAtLS0tLS0tLSDnrKzkuIDmraUsIF9nZW5lcmF0ZV8xZWRnZV9mcmVxdWVudF9zdWJncmFwaHPvvJrpopHnuYHnmoTljZXkuKroioLngrktLS0tLS0tXG5cblxuICAgIHRoaXMuZnJlcXVlbnRTaXplMVN1YmdyYXBocyA9IHRoaXMuZ2VuZXJhdGUxRWRnZUZyZXF1ZW50U3ViR3JhcGhzKCk7XG4gICAgaWYgKHRoaXMubWF4Tm9kZU51bSA8IDIpIHJldHVybjtcbiAgICB2YXIgZ3JhcGhzID0gdGhpcy5ncmFwaHM7XG4gICAgdmFyIGRpcmVjdGVkID0gdGhpcy5kaXJlY3RlZDsgLy8gUERGUyDmlbDnu4TnmoQgbWFwIExpbmUgMzA0XG5cbiAgICB2YXIgcm9vdCA9IHt9O1xuICAgIE9iamVjdC5rZXlzKGdyYXBocykuZm9yRWFjaChmdW5jdGlvbiAoZ3JhcGhJZCkge1xuICAgICAgdmFyIGdyYXBoID0gZ3JhcGhzW2dyYXBoSWRdO1xuICAgICAgdmFyIG5vZGVNYXAgPSBncmFwaC5ub2RlTWFwOyAvLyBMaW5lIDMwNlxuXG4gICAgICBncmFwaC5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHZhciBmb3J3YXJkUm9vdEVkZ2VzID0gX3RoaXMuZmluZEZvcndhcmRSb290RWRnZXMoZ3JhcGgsIG5vZGUpOyAvLyBMaW5lIDMwOFxuXG5cbiAgICAgICAgZm9yd2FyZFJvb3RFZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgICAgdmFyIHRvTm9kZSA9IG5vZGVNYXBbZWRnZS50b107XG4gICAgICAgICAgdmFyIG5vZGVFZGdlTm9kZUxhYmVsID0gXCJcIi5jb25jYXQobm9kZS5sYWJlbCwgXCItXCIpLmNvbmNhdChlZGdlLmxhYmVsLCBcIi1cIikuY29uY2F0KHRvTm9kZS5sYWJlbCk7XG4gICAgICAgICAgaWYgKCFyb290W25vZGVFZGdlTm9kZUxhYmVsXSkgcm9vdFtub2RlRWRnZU5vZGVMYWJlbF0gPSB7XG4gICAgICAgICAgICBwcm9qZWN0ZWQ6IFtdLFxuICAgICAgICAgICAgbm9kZUxhYmVsMTogbm9kZS5sYWJlbCxcbiAgICAgICAgICAgIGVkZ2VMYWJlbDogZWRnZS5sYWJlbCxcbiAgICAgICAgICAgIG5vZGVMYWJlbDI6IHRvTm9kZS5sYWJlbFxuICAgICAgICAgIH07XG4gICAgICAgICAgdmFyIHBkZnMgPSB7XG4gICAgICAgICAgICBncmFwaElkOiBncmFwaElkLFxuICAgICAgICAgICAgZWRnZTogZWRnZSxcbiAgICAgICAgICAgIHByZU5vZGU6IG51bGxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJvb3Rbbm9kZUVkZ2VOb2RlTGFiZWxdLnByb2plY3RlZC5wdXNoKHBkZnMpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pOyAvLyBMaW5lIDMxM1xuXG4gICAgT2JqZWN0LmtleXMocm9vdCkuZm9yRWFjaChmdW5jdGlvbiAobm9kZUVkZ2VOb2RlTGFiZWwpIHtcbiAgICAgIHZhciBfYSA9IHJvb3Rbbm9kZUVkZ2VOb2RlTGFiZWxdLFxuICAgICAgICAgIHByb2plY3RlZCA9IF9hLnByb2plY3RlZCxcbiAgICAgICAgICBub2RlTGFiZWwxID0gX2Eubm9kZUxhYmVsMSxcbiAgICAgICAgICBlZGdlTGFiZWwgPSBfYS5lZGdlTGFiZWwsXG4gICAgICAgICAgbm9kZUxhYmVsMiA9IF9hLm5vZGVMYWJlbDI7XG5cbiAgICAgIF90aGlzLmRmc0NvZGUuZGZzRWRnZUxpc3QucHVzaChuZXcgREZTZWRnZSgwLCAxLCBub2RlTGFiZWwxLCBlZGdlTGFiZWwsIG5vZGVMYWJlbDIpKTtcblxuICAgICAgX3RoaXMuc3ViR3JhcGhNaW5pbmcocHJvamVjdGVkKTtcblxuICAgICAgX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdC5wb3AoKTtcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gR1NwYW47XG59KCk7XG5cbnZhciBmb3JtYXRHcmFwaHMgPSBmdW5jdGlvbiBmb3JtYXRHcmFwaHMoZ3JhcGhzLCBkaXJlY3RlZCwgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcCkge1xuICB2YXIgcmVzdWx0ID0ge307XG4gIE9iamVjdC5rZXlzKGdyYXBocykuZm9yRWFjaChmdW5jdGlvbiAoa2V5LCBpKSB7XG4gICAgdmFyIGdyYXBoID0gZ3JhcGhzW2tleV07XG4gICAgdmFyIGZHcmFwaCA9IG5ldyBHcmFwaChpLCB0cnVlLCBkaXJlY3RlZCk7XG4gICAgdmFyIG5vZGVJZHhNYXAgPSB7fTtcbiAgICBncmFwaC5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlLCBqKSB7XG4gICAgICBmR3JhcGguYWRkTm9kZShqLCBub2RlW25vZGVMYWJlbFByb3BdKTtcbiAgICAgIG5vZGVJZHhNYXBbbm9kZS5pZF0gPSBqO1xuICAgIH0pO1xuICAgIGdyYXBoLmVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UsIGspIHtcbiAgICAgIHZhciBzb3VyY2VJZHggPSBub2RlSWR4TWFwW2VkZ2Uuc291cmNlXTtcbiAgICAgIHZhciB0YXJnZXRJZHggPSBub2RlSWR4TWFwW2VkZ2UudGFyZ2V0XTtcbiAgICAgIGZHcmFwaC5hZGRFZGdlKC0xLCBzb3VyY2VJZHgsIHRhcmdldElkeCwgZWRnZVtlZGdlTGFiZWxQcm9wXSk7XG4gICAgfSk7XG4gICAgaWYgKGZHcmFwaCAmJiBmR3JhcGguZ2V0Tm9kZU51bSgpKSByZXN1bHRbZkdyYXBoLmlkXSA9IGZHcmFwaDtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG52YXIgdG9HcmFwaERhdGFzID0gZnVuY3Rpb24gdG9HcmFwaERhdGFzKGdyYXBocywgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcCkge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIGdyYXBocy5mb3JFYWNoKGZ1bmN0aW9uIChncmFwaCkge1xuICAgIHZhciBncmFwaERhdGEgPSB7XG4gICAgICBub2RlczogW10sXG4gICAgICBlZGdlczogW11cbiAgICB9O1xuICAgIGdyYXBoLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHZhciBfYTtcblxuICAgICAgZ3JhcGhEYXRhLm5vZGVzLnB1c2goKF9hID0ge1xuICAgICAgICBpZDogXCJcIi5jb25jYXQobm9kZS5pZClcbiAgICAgIH0sIF9hW25vZGVMYWJlbFByb3BdID0gbm9kZS5sYWJlbCwgX2EpKTtcbiAgICB9KTtcbiAgICBncmFwaC5lZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICB2YXIgX2E7XG5cbiAgICAgIGdyYXBoRGF0YS5lZGdlcy5wdXNoKChfYSA9IHtcbiAgICAgICAgc291cmNlOiBcIlwiLmNvbmNhdChlZGdlLmZyb20pLFxuICAgICAgICB0YXJnZXQ6IFwiXCIuY29uY2F0KGVkZ2UudG8pXG4gICAgICB9LCBfYVtlZGdlTGFiZWxQcm9wXSA9IGVkZ2UubGFiZWwsIF9hKSk7XG4gICAgfSk7XG4gICAgcmVzdWx0LnB1c2goZ3JhcGhEYXRhKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG52YXIgREVGQVVMVF9MQUJFTF9OQU1FID0gXCJjbHVzdGVyXCI7XG4vKipcbiAqIGdTcGFuIOmikee5geWtkOWbvuiuoeeul+eul+azle+8iGZyZXF1ZW50IGdyYXBoIG1pbmluZ++8iVxuICogQHBhcmFtIHBhcmFtcyDlj4LmlbBcbiAqL1xuXG52YXIgZ1NwYW4gPSBmdW5jdGlvbiBnU3BhbihwYXJhbXMpIHtcbiAgLy8gLS0tLS0tLSDlsIblm77mlbDmja4gR3JhcGhEYXRhIOeahCBtYXAg6L2s5o2i5Li65qC85byPIC0tLS0tLS1cbiAgdmFyIGdyYXBocyA9IHBhcmFtcy5ncmFwaHMsXG4gICAgICBfYSA9IHBhcmFtcy5kaXJlY3RlZCxcbiAgICAgIGRpcmVjdGVkID0gX2EgPT09IHZvaWQgMCA/IGZhbHNlIDogX2EsXG4gICAgICBfYiA9IHBhcmFtcy5ub2RlTGFiZWxQcm9wLFxuICAgICAgbm9kZUxhYmVsUHJvcCA9IF9iID09PSB2b2lkIDAgPyBERUZBVUxUX0xBQkVMX05BTUUgOiBfYixcbiAgICAgIF9jID0gcGFyYW1zLmVkZ2VMYWJlbFByb3AsXG4gICAgICBlZGdlTGFiZWxQcm9wID0gX2MgPT09IHZvaWQgMCA/IERFRkFVTFRfTEFCRUxfTkFNRSA6IF9jO1xuICB2YXIgZm9ybWF0dGVkR3JhcGhzID0gZm9ybWF0R3JhcGhzKGdyYXBocywgZGlyZWN0ZWQsIG5vZGVMYWJlbFByb3AsIGVkZ2VMYWJlbFByb3ApO1xuICB2YXIgbWluU3VwcG9ydCA9IHBhcmFtcy5taW5TdXBwb3J0LFxuICAgICAgbWF4Tm9kZU51bSA9IHBhcmFtcy5tYXhOb2RlTnVtLFxuICAgICAgbWluTm9kZU51bSA9IHBhcmFtcy5taW5Ob2RlTnVtLFxuICAgICAgdmVyYm9zZSA9IHBhcmFtcy52ZXJib3NlLFxuICAgICAgdG9wID0gcGFyYW1zLnRvcDsgLy8gLS0tLS0tLSDliJ3lp4vljJbkuI7miafooYznrpfms5UgLS0tLS0tLVxuXG4gIHZhciBhbGdvUGFyYW1zID0ge1xuICAgIGdyYXBoczogZm9ybWF0dGVkR3JhcGhzLFxuICAgIG1pblN1cHBvcnQ6IG1pblN1cHBvcnQsXG4gICAgbWF4Tm9kZU51bTogbWF4Tm9kZU51bSxcbiAgICBtaW5Ob2RlTnVtOiBtaW5Ob2RlTnVtLFxuICAgIHRvcDogdG9wLFxuICAgIHZlcmJvc2U6IHZlcmJvc2UsXG4gICAgZGlyZWN0ZWQ6IGRpcmVjdGVkXG4gIH07XG4gIHZhciBjYWxjdWxhdG9yID0gbmV3IEdTcGFuKGFsZ29QYXJhbXMpO1xuICBjYWxjdWxhdG9yLnJ1bigpO1xuICB2YXIgcmVzdWx0ID0gdG9HcmFwaERhdGFzKGNhbGN1bGF0b3IuZnJlcXVlbnRTdWJncmFwaHMsIG5vZGVMYWJlbFByb3AsIGVkZ2VMYWJlbFByb3ApO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZ1NwYW47Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/gSpan/gSpan.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/gSpan/struct.js":
/*!*********************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/gSpan/struct.js ***!
\*********************************************************************************/
/*! exports provided: VACANT_EDGE_ID, VACANT_NODE_ID, VACANT_EDGE_LABEL, VACANT_NODE_LABEL, VACANT_GRAPH_ID, AUTO_EDGE_ID, Edge, Node, Graph */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VACANT_EDGE_ID\", function() { return VACANT_EDGE_ID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VACANT_NODE_ID\", function() { return VACANT_NODE_ID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VACANT_EDGE_LABEL\", function() { return VACANT_EDGE_LABEL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VACANT_NODE_LABEL\", function() { return VACANT_NODE_LABEL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VACANT_GRAPH_ID\", function() { return VACANT_GRAPH_ID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AUTO_EDGE_ID\", function() { return AUTO_EDGE_ID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Edge\", function() { return Edge; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Node\", function() { return Node; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Graph\", function() { return Graph; });\nvar VACANT_EDGE_ID = -1;\nvar VACANT_NODE_ID = -1;\nvar VACANT_EDGE_LABEL = \"-1\";\nvar VACANT_NODE_LABEL = \"-1\";\nvar VACANT_GRAPH_ID = -1;\nvar AUTO_EDGE_ID = \"-1\";\n\nvar Edge =\n/** @class */\nfunction () {\n function Edge(id, from, to, label) {\n if (id === void 0) {\n id = VACANT_EDGE_ID;\n }\n\n if (from === void 0) {\n from = VACANT_NODE_ID;\n }\n\n if (to === void 0) {\n to = VACANT_NODE_ID;\n }\n\n if (label === void 0) {\n label = VACANT_EDGE_LABEL;\n }\n\n this.id = id;\n this.from = from;\n this.to = to;\n this.label = label;\n }\n\n return Edge;\n}();\n\n\n\nvar Node =\n/** @class */\nfunction () {\n function Node(id, label) {\n if (id === void 0) {\n id = VACANT_NODE_ID;\n }\n\n if (label === void 0) {\n label = VACANT_NODE_LABEL;\n }\n\n this.id = id;\n this.label = label;\n this.edges = [];\n this.edgeMap = {};\n }\n\n Node.prototype.addEdge = function (edge) {\n this.edges.push(edge);\n this.edgeMap[edge.id] = edge;\n };\n\n return Node;\n}();\n\n\n\nvar Graph =\n/** @class */\nfunction () {\n function Graph(id, edgeIdAutoIncrease, directed) {\n if (id === void 0) {\n id = VACANT_NODE_ID;\n }\n\n if (edgeIdAutoIncrease === void 0) {\n edgeIdAutoIncrease = true;\n }\n\n if (directed === void 0) {\n directed = false;\n }\n\n this.id = id;\n this.edgeIdAutoIncrease = edgeIdAutoIncrease;\n this.edges = [];\n this.nodes = [];\n this.nodeMap = {};\n this.edgeMap = {};\n this.nodeLabelMap = {};\n this.edgeLabelMap = {};\n this.counter = 0;\n this.directed = directed;\n }\n\n Graph.prototype.getNodeNum = function () {\n return this.nodes.length;\n };\n\n Graph.prototype.addNode = function (id, label) {\n if (this.nodeMap[id]) return;\n var node = new Node(id, label);\n this.nodes.push(node);\n this.nodeMap[id] = node;\n if (!this.nodeLabelMap[label]) this.nodeLabelMap[label] = [];\n this.nodeLabelMap[label].push(id);\n };\n\n Graph.prototype.addEdge = function (id, from, to, label) {\n if (this.edgeIdAutoIncrease || id === undefined) id = this.counter++;\n if (this.nodeMap[from] && this.nodeMap[to] && this.nodeMap[to].edgeMap[id]) return;\n var edge = new Edge(id, from, to, label);\n this.edges.push(edge);\n this.edgeMap[id] = edge;\n this.nodeMap[from].addEdge(edge);\n if (!this.edgeLabelMap[label]) this.edgeLabelMap[label] = [];\n this.edgeLabelMap[label].push(edge);\n\n if (!this.directed) {\n var rEdge = new Edge(id, to, from, label);\n this.nodeMap[to].addEdge(rEdge);\n this.edgeLabelMap[label].push(rEdge);\n }\n };\n\n return Graph;\n}();\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2dTcGFuL3N0cnVjdC5qcz9lMTk1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQU87QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVlOztBQUVoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRWU7O0FBRWhCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfYWxnb3JpdGhtQDAuMS4xNEBAYW50di9hbGdvcml0aG0vZXMvZ1NwYW4vc3RydWN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBWQUNBTlRfRURHRV9JRCA9IC0xO1xuZXhwb3J0IHZhciBWQUNBTlRfTk9ERV9JRCA9IC0xO1xuZXhwb3J0IHZhciBWQUNBTlRfRURHRV9MQUJFTCA9IFwiLTFcIjtcbmV4cG9ydCB2YXIgVkFDQU5UX05PREVfTEFCRUwgPSBcIi0xXCI7XG5leHBvcnQgdmFyIFZBQ0FOVF9HUkFQSF9JRCA9IC0xO1xuZXhwb3J0IHZhciBBVVRPX0VER0VfSUQgPSBcIi0xXCI7XG5cbnZhciBFZGdlID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gRWRnZShpZCwgZnJvbSwgdG8sIGxhYmVsKSB7XG4gICAgaWYgKGlkID09PSB2b2lkIDApIHtcbiAgICAgIGlkID0gVkFDQU5UX0VER0VfSUQ7XG4gICAgfVxuXG4gICAgaWYgKGZyb20gPT09IHZvaWQgMCkge1xuICAgICAgZnJvbSA9IFZBQ0FOVF9OT0RFX0lEO1xuICAgIH1cblxuICAgIGlmICh0byA9PT0gdm9pZCAwKSB7XG4gICAgICB0byA9IFZBQ0FOVF9OT0RFX0lEO1xuICAgIH1cblxuICAgIGlmIChsYWJlbCA9PT0gdm9pZCAwKSB7XG4gICAgICBsYWJlbCA9IFZBQ0FOVF9FREdFX0xBQkVMO1xuICAgIH1cblxuICAgIHRoaXMuaWQgPSBpZDtcbiAgICB0aGlzLmZyb20gPSBmcm9tO1xuICAgIHRoaXMudG8gPSB0bztcbiAgICB0aGlzLmxhYmVsID0gbGFiZWw7XG4gIH1cblxuICByZXR1cm4gRWRnZTtcbn0oKTtcblxuZXhwb3J0IHsgRWRnZSB9O1xuXG52YXIgTm9kZSA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIE5vZGUoaWQsIGxhYmVsKSB7XG4gICAgaWYgKGlkID09PSB2b2lkIDApIHtcbiAgICAgIGlkID0gVkFDQU5UX05PREVfSUQ7XG4gICAgfVxuXG4gICAgaWYgKGxhYmVsID09PSB2b2lkIDApIHtcbiAgICAgIGxhYmVsID0gVkFDQU5UX05PREVfTEFCRUw7XG4gICAgfVxuXG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMubGFiZWwgPSBsYWJlbDtcbiAgICB0aGlzLmVkZ2VzID0gW107XG4gICAgdGhpcy5lZGdlTWFwID0ge307XG4gIH1cblxuICBOb2RlLnByb3RvdHlwZS5hZGRFZGdlID0gZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICB0aGlzLmVkZ2VzLnB1c2goZWRnZSk7XG4gICAgdGhpcy5lZGdlTWFwW2VkZ2UuaWRdID0gZWRnZTtcbiAgfTtcblxuICByZXR1cm4gTm9kZTtcbn0oKTtcblxuZXhwb3J0IHsgTm9kZSB9O1xuXG52YXIgR3JhcGggPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBHcmFwaChpZCwgZWRnZUlkQXV0b0luY3JlYXNlLCBkaXJlY3RlZCkge1xuICAgIGlmIChpZCA9PT0gdm9pZCAwKSB7XG4gICAgICBpZCA9IFZBQ0FOVF9OT0RFX0lEO1xuICAgIH1cblxuICAgIGlmIChlZGdlSWRBdXRvSW5jcmVhc2UgPT09IHZvaWQgMCkge1xuICAgICAgZWRnZUlkQXV0b0luY3JlYXNlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoZGlyZWN0ZWQgPT09IHZvaWQgMCkge1xuICAgICAgZGlyZWN0ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLmlkID0gaWQ7XG4gICAgdGhpcy5lZGdlSWRBdXRvSW5jcmVhc2UgPSBlZGdlSWRBdXRvSW5jcmVhc2U7XG4gICAgdGhpcy5lZGdlcyA9IFtdO1xuICAgIHRoaXMubm9kZXMgPSBbXTtcbiAgICB0aGlzLm5vZGVNYXAgPSB7fTtcbiAgICB0aGlzLmVkZ2VNYXAgPSB7fTtcbiAgICB0aGlzLm5vZGVMYWJlbE1hcCA9IHt9O1xuICAgIHRoaXMuZWRnZUxhYmVsTWFwID0ge307XG4gICAgdGhpcy5jb3VudGVyID0gMDtcbiAgICB0aGlzLmRpcmVjdGVkID0gZGlyZWN0ZWQ7XG4gIH1cblxuICBHcmFwaC5wcm90b3R5cGUuZ2V0Tm9kZU51bSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5ub2Rlcy5sZW5ndGg7XG4gIH07XG5cbiAgR3JhcGgucHJvdG90eXBlLmFkZE5vZGUgPSBmdW5jdGlvbiAoaWQsIGxhYmVsKSB7XG4gICAgaWYgKHRoaXMubm9kZU1hcFtpZF0pIHJldHVybjtcbiAgICB2YXIgbm9kZSA9IG5ldyBOb2RlKGlkLCBsYWJlbCk7XG4gICAgdGhpcy5ub2Rlcy5wdXNoKG5vZGUpO1xuICAgIHRoaXMubm9kZU1hcFtpZF0gPSBub2RlO1xuICAgIGlmICghdGhpcy5ub2RlTGFiZWxNYXBbbGFiZWxdKSB0aGlzLm5vZGVMYWJlbE1hcFtsYWJlbF0gPSBbXTtcbiAgICB0aGlzLm5vZGVMYWJlbE1hcFtsYWJlbF0ucHVzaChpZCk7XG4gIH07XG5cbiAgR3JhcGgucHJvdG90eXBlLmFkZEVkZ2UgPSBmdW5jdGlvbiAoaWQsIGZyb20sIHRvLCBsYWJlbCkge1xuICAgIGlmICh0aGlzLmVkZ2VJZEF1dG9JbmNyZWFzZSB8fCBpZCA9PT0gdW5kZWZpbmVkKSBpZCA9IHRoaXMuY291bnRlcisrO1xuICAgIGlmICh0aGlzLm5vZGVNYXBbZnJvbV0gJiYgdGhpcy5ub2RlTWFwW3RvXSAmJiB0aGlzLm5vZGVNYXBbdG9dLmVkZ2VNYXBbaWRdKSByZXR1cm47XG4gICAgdmFyIGVkZ2UgPSBuZXcgRWRnZShpZCwgZnJvbSwgdG8sIGxhYmVsKTtcbiAgICB0aGlzLmVkZ2VzLnB1c2goZWRnZSk7XG4gICAgdGhpcy5lZGdlTWFwW2lkXSA9IGVkZ2U7XG4gICAgdGhpcy5ub2RlTWFwW2Zyb21dLmFkZEVkZ2UoZWRnZSk7XG4gICAgaWYgKCF0aGlzLmVkZ2VMYWJlbE1hcFtsYWJlbF0pIHRoaXMuZWRnZUxhYmVsTWFwW2xhYmVsXSA9IFtdO1xuICAgIHRoaXMuZWRnZUxhYmVsTWFwW2xhYmVsXS5wdXNoKGVkZ2UpO1xuXG4gICAgaWYgKCF0aGlzLmRpcmVjdGVkKSB7XG4gICAgICB2YXIgckVkZ2UgPSBuZXcgRWRnZShpZCwgdG8sIGZyb20sIGxhYmVsKTtcbiAgICAgIHRoaXMubm9kZU1hcFt0b10uYWRkRWRnZShyRWRnZSk7XG4gICAgICB0aGlzLmVkZ2VMYWJlbE1hcFtsYWJlbF0ucHVzaChyRWRnZSk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBHcmFwaDtcbn0oKTtcblxuZXhwb3J0IHsgR3JhcGggfTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/gSpan/struct.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/gaddi.js":
/*!**************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/gaddi.js ***!
\**************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _floydWarshall__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./floydWarshall */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/floydWarshall.js\");\n/* harmony import */ var _gSpan_gSpan__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./gSpan/gSpan */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/gSpan/gSpan.js\");\n/* harmony import */ var _dijkstra__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./dijkstra */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/dijkstra.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/util.js\");\n\n\n\n\n\n/**\n * 为 graphData 中每个节点生成邻居单元数组\n * @param graphData\n * @param spm\n * @param nodeLabelProp\n * @param k k-近邻\n */\n\nvar findKNeighborUnits = function findKNeighborUnits(graphData, spm, nodeLabelProp, k) {\n if (nodeLabelProp === void 0) {\n nodeLabelProp = 'cluster';\n }\n\n if (k === void 0) {\n k = 2;\n }\n\n var units = [];\n var nodes = graphData.nodes;\n spm.forEach(function (row, i) {\n units.push(findKNeighborUnit(nodes, row, i, nodeLabelProp, k));\n });\n return units;\n};\n\nvar findKNeighborUnit = function findKNeighborUnit(nodes, row, i, nodeLabelProp, k) {\n var unitNodeIdxs = [i];\n var neighbors = [];\n var labelCountMap = {};\n row.forEach(function (v, j) {\n if (v <= k && i !== j) {\n unitNodeIdxs.push(j);\n neighbors.push(nodes[j]);\n var label = nodes[j][nodeLabelProp];\n if (!labelCountMap[label]) labelCountMap[label] = {\n count: 1,\n dists: [v]\n };else {\n labelCountMap[label].count++;\n labelCountMap[label].dists.push(v);\n }\n }\n }); // 将 labelCountMap 中的 dists 按照从小到大排序,方便后面使用\n\n Object.keys(labelCountMap).forEach(function (label) {\n labelCountMap[label].dists = labelCountMap[label].dists.sort(function (a, b) {\n return a - b;\n });\n });\n return {\n nodeIdx: i,\n nodeId: nodes[i].id,\n nodeIdxs: unitNodeIdxs,\n neighbors: neighbors,\n neighborNum: unitNodeIdxs.length - 1,\n nodeLabelCountMap: labelCountMap\n };\n};\n/**\n * 随机寻找点对,满足距离小于 k\n * @param k 参数 k,表示 k-近邻\n * @param nodeNum 参数 length\n * @param maxNodePairNum 寻找点对的数量不超过 maxNodePairNum\n * @param spm 最短路径矩阵\n */\n\n\nvar findNodePairsRandomly = function findNodePairsRandomly(k, nodeNum, maxNodePairNum, kNeighborUnits, spm) {\n // 每个节点需要随机找出的点对数\n var nodePairNumEachNode = Math.ceil(maxNodePairNum / nodeNum);\n var nodePairMap = {};\n var foundNodePairCount = 0; // 遍历节点,为每个节点随机找出 nodePairNumEachNode 个点对,满足距离小于 k。找到的点对数量超过 maxNodePairNum 或所有节点遍历结束时终止\n\n kNeighborUnits.forEach(function (unit, i) {\n // 若未达到 nodePairNumEachNode,或循环次数小于最大循环次数(2 * nodeNum),继续循环\n var nodePairForICount = 0;\n var outerLoopCount = 0;\n var neighbors = unit.nodeIdxs; // the first one is the center node\n\n var neighborNum = unit.neighborNum - 1;\n\n while (nodePairForICount < nodePairNumEachNode) {\n // 另一端节点在节点数组中的的 index\n var oidx = neighbors[1 + Math.floor(Math.random() * neighborNum)];\n var innerLoopCount = 0; // 若随机得到的另一端 idx 不符合条件,则继续 random。条件是不是同一个节点、这个点对没有被记录过、距离小于 k\n\n while (nodePairMap[\"\".concat(i, \"-\").concat(oidx)] || nodePairMap[\"\".concat(oidx, \"-\").concat(i)]) {\n oidx = Math.floor(Math.random() * nodeNum);\n innerLoopCount++;\n if (innerLoopCount > 2 * nodeNum) break; // 循环次数大于最大循环次数(2 * nodeNum)跳出循环,避免死循环\n }\n\n if (innerLoopCount < 2 * nodeNum) {\n // 未达到最大循环次数,说明找到了合适的另一端\n nodePairMap[\"\".concat(i, \"-\").concat(oidx)] = {\n start: i,\n end: oidx,\n distance: spm[i][oidx]\n };\n nodePairForICount++;\n foundNodePairCount++; // 如果当前找到的点对数量达到了上限,返回结果\n\n if (foundNodePairCount >= maxNodePairNum) return nodePairMap;\n }\n\n outerLoopCount++;\n if (outerLoopCount > 2 * nodeNum) break; // 循环次数大于最大循环次数(2 * nodeNum)跳出循环,避免死循环\n } // 这个节点没有找到足够 nodePairNumEachNode 的点对。更新 nodePairNumEachNode,让后续节点找更多的点对\n\n\n if (nodePairForICount < nodePairNumEachNode) {\n var gap = nodePairNumEachNode - nodePairForICount;\n nodePairNumEachNode = (nodePairNumEachNode + gap) / (nodeNum - i - 1);\n }\n });\n return nodePairMap;\n};\n/**\n * 计算所有 nodePairMap 中节点对的相交邻居诱导子图\n * @param nodePairMap 节点对 map,key 为 node1.id-node2.id,value 为 { startNodeIdx, endNodeIdx, distance }\n * @param neighborUnits 每个节点的邻居元数组\n * @param graphData 原图数据\n * @param edgeMap 边的 map,方便检索\n * @param cachedInducedGraphMap 缓存的结果,下次进入该函数将继续更新该缓存,若 key 在缓存中存在则不需要重复计算\n */\n\n\nvar getIntersectNeighborInducedGraph = function getIntersectNeighborInducedGraph(nodePairMap, neighborUnits, graphData, cachedInducedGraphMap) {\n var nodes = graphData.nodes;\n if (!cachedInducedGraphMap) cachedInducedGraphMap = {};\n Object.keys(nodePairMap).forEach(function (key) {\n var _a, _b;\n\n if (cachedInducedGraphMap && cachedInducedGraphMap[key]) return;\n cachedInducedGraphMap[key] = {\n nodes: [],\n edges: []\n };\n var pair = nodePairMap[key];\n var startUnitNodeIds = (_a = neighborUnits[pair.start]) === null || _a === void 0 ? void 0 : _a.nodeIdxs;\n var endUnitNodeIds = (_b = neighborUnits[pair.end]) === null || _b === void 0 ? void 0 : _b.nodeIdxs;\n if (!startUnitNodeIds || !endUnitNodeIds) return; // 不存在邻元,返回空图\n\n var endSet = new Set(endUnitNodeIds);\n var intersect = startUnitNodeIds.filter(function (x) {\n return endSet.has(x);\n }); // 可能会爆栈(在 1580 + 6 nodes full-connected 时出现)\n\n if (!intersect || !intersect.length) return; // 没有交集,返回空图\n\n var intersectIdMap = {};\n var intersectLength = intersect.length;\n\n for (var i = 0; i < intersectLength; i++) {\n var node = nodes[intersect[i]];\n cachedInducedGraphMap[key].nodes.push(node); // 将交集中的点加入诱导子图\n\n intersectIdMap[node.id] = true;\n } // 遍历所有边数据,如果边的两端都在交集中,将该边加入诱导子图\n\n\n graphData.edges.forEach(function (edge) {\n if (intersectIdMap[edge.source] && intersectIdMap[edge.target]) cachedInducedGraphMap[key].edges.push(edge);\n });\n });\n return cachedInducedGraphMap;\n};\n/**\n * 计算 strcutre 在 graph 上的匹配数量\n * @param graph 图数据\n * @param structure 目前支持只有两个节点一条边的最简单结构\n * @param nodeLabelProp 节点类型字段名\n * @param edgeLabelProp 边类型字段名\n */\n\n\nvar getMatchedCount = function getMatchedCount(graph, structure, nodeLabelProp, edgeLabelProp) {\n var _a, _b;\n\n var nodeMap = {};\n graph.nodes.forEach(function (node) {\n nodeMap[node.id] = node;\n });\n var count = 0;\n if (!((_a = structure === null || structure === void 0 ? void 0 : structure.edges) === null || _a === void 0 ? void 0 : _a.length) || ((_b = structure === null || structure === void 0 ? void 0 : structure.nodes) === null || _b === void 0 ? void 0 : _b.length) < 2) return 0;\n graph.edges.forEach(function (e) {\n var sourceLabel = nodeMap[e.source][nodeLabelProp];\n var targetLabel = nodeMap[e.target][nodeLabelProp];\n var strNodeLabel1 = structure === null || structure === void 0 ? void 0 : structure.nodes[0][nodeLabelProp];\n var strNodeLabel2 = structure === null || structure === void 0 ? void 0 : structure.nodes[1][nodeLabelProp];\n var strEdgeLabel = structure === null || structure === void 0 ? void 0 : structure.edges[0][edgeLabelProp];\n if (e[edgeLabelProp] !== strEdgeLabel) return;\n\n if (sourceLabel === strNodeLabel1 && targetLabel === strNodeLabel2 || sourceLabel === strNodeLabel2 && targetLabel === strNodeLabel1) {\n count++;\n }\n });\n return count;\n};\n/**\n * structures 中寻找最具有代表性的一个。这个结构是使得 matchedCountMap 的分组方式类内间距最小,类间间距最大\n * @param matchedCountMap 每个 structure 分类后的各图匹配数量,格式 { [strcture.idx]: { [interInducedGraphKey]: count } }\n * @param structureNum strcuture 个数,与 matchedCountMap.length 对应\n * @param structures\n */\n\n\nvar findRepresentStructure = function findRepresentStructure(matchedCountMap, structureNum, structures) {\n var maxOffset = Infinity,\n representClusterType = 0;\n\n var _loop_1 = function _loop_1(i) {\n // 一种分组的 map,key 是 intGraph 的 key,value 是 structures[i] 的匹配个数\n var countMapI = matchedCountMap[i]; // 按照 value 为该组排序,生成 keys 的数组:\n\n var sortedGraphKeys = Object.keys(countMapI).sort(function (a, b) {\n return countMapI[a] - countMapI[b];\n }); // 共 100 个 graphKeys,将 graphKeys 按顺序分为 groupNum 组\n\n var groupNum = 10;\n var clusters = []; // 总共有 groupNum 个项\n\n sortedGraphKeys.forEach(function (key, j) {\n if (!clusters[j % groupNum]) clusters[j % groupNum] = {\n graphs: [],\n totalCount: 0,\n aveCount: 0\n };\n clusters[j % groupNum].graphs.push(key);\n clusters[j % groupNum].totalCount += countMapI[key];\n }); // 计算 cluster 与 cluster 之间的距离 innerDist,每个 cluster 内部的距离 intraDist\n\n var aveIntraDist = 0; // 该类的类内平均值\n\n var aveCounts = []; // 类内平均匹配数量,将用于计算类间距离\n\n clusters.forEach(function (graphsInCluster) {\n // 类内均值\n var aveCount = graphsInCluster.totalCount / graphsInCluster.graphs.length;\n graphsInCluster.aveCount = aveCount;\n aveCounts.push(aveCount); // 对于每类,计算类内间距平均值\n\n var aveIntraPerCluster = 0;\n var graphsNum = graphsInCluster.length;\n graphsInCluster.graphs.forEach(function (graphKey1, j) {\n var graph1Count = countMapI[graphKey1];\n graphsInCluster.graphs.forEach(function (graphKey2, k) {\n if (j === k) return;\n aveIntraPerCluster += Math.abs(graph1Count - countMapI[graphKey2]);\n });\n });\n aveIntraPerCluster /= graphsNum * (graphsNum - 1) / 2;\n aveIntraDist += aveIntraPerCluster;\n });\n aveIntraDist /= clusters.length; // 用类内均值计算类间距\n\n var aveInterDist = 0; // 类间间距平均值\n\n aveCounts.forEach(function (aveCount1, j) {\n aveCounts.forEach(function (aveCount2, k) {\n if (j === k) return;\n aveInterDist += Math.abs(aveCount1 - aveCount2);\n });\n aveInterDist /= aveCounts.length * (aveCounts.length - 1) / 2;\n }); // 寻找 (类间间距均值-类内间距均值) 最大的一种分组方式(对应的 structure 就是最终要找的唯一 DS(G))\n\n var offset = aveInterDist - aveIntraDist;\n\n if (maxOffset < offset) {\n maxOffset = offset;\n representClusterType = i;\n }\n };\n\n for (var i = 0; i < structureNum; i++) {\n _loop_1(i);\n }\n\n return {\n structure: structures[representClusterType],\n structureCountMap: matchedCountMap[representClusterType]\n };\n};\n\nvar getNodeMaps = function getNodeMaps(nodes, nodeLabelProp) {\n var nodeMap = {},\n nodeLabelMap = {};\n nodes.forEach(function (node, i) {\n nodeMap[node.id] = {\n idx: i,\n node: node,\n degree: 0,\n inDegree: 0,\n outDegree: 0\n };\n var label = node[nodeLabelProp];\n if (!nodeLabelMap[label]) nodeLabelMap[label] = [];\n nodeLabelMap[label].push(node);\n });\n return {\n nodeMap: nodeMap,\n nodeLabelMap: nodeLabelMap\n };\n};\n\nvar getEdgeMaps = function getEdgeMaps(edges, edgeLabelProp, nodeMap) {\n var edgeMap = {},\n edgeLabelMap = {};\n edges.forEach(function (edge, i) {\n edgeMap[\"\".concat(_util__WEBPACK_IMPORTED_MODULE_4__[\"uniqueId\"])] = {\n idx: i,\n edge: edge\n };\n var label = edge[edgeLabelProp];\n if (!edgeLabelMap[label]) edgeLabelMap[label] = [];\n edgeLabelMap[label].push(edge);\n var sourceNode = nodeMap[edge.source];\n\n if (sourceNode) {\n sourceNode.degree++;\n sourceNode.outDegree++;\n }\n\n var targetNode = nodeMap[edge.target];\n\n if (targetNode) {\n targetNode.degree++;\n targetNode.inDegree++;\n }\n });\n return {\n edgeMap: edgeMap,\n edgeLabelMap: edgeLabelMap\n };\n};\n/**\n * 输出最短路径的 map,key 为 sourceNode.id-targetNode.id,value 为这两个节点的最短路径长度\n * @param nodes\n * @param spm\n * @param directed\n */\n\n\nvar getSpmMap = function getSpmMap(nodes, spm, directed) {\n var length = spm.length;\n var map = {};\n spm.forEach(function (row, i) {\n var start = directed ? 0 : i + 1;\n var iId = nodes[i].id;\n\n for (var j = start; j < length; j++) {\n if (i === j) continue;\n var jId = nodes[j].id;\n var dist = row[j];\n map[\"\".concat(iId, \"-\").concat(jId)] = dist;\n if (!directed) map[\"\".concat(jId, \"-\").concat(iId)] = dist;\n }\n });\n return map;\n};\n/**\n * 计算一对节点(node1,node2)的 NDS 距离\n * @param graph 原图数据\n * @param node1\n * @param node2\n */\n\n\nvar getNDSDist = function getNDSDist(graph, node1, node2, nodeMap, spDist, kNeighborUnits, structure, nodeLabelProp, edgeLabelProp, cachedNDSMap, cachedInterInducedGraph) {\n var _a;\n\n var key = \"\".concat(node1.id, \"-\").concat(node2.id);\n if (cachedNDSMap && cachedNDSMap[key]) return cachedNDSMap[key];\n var interInducedGraph = cachedInterInducedGraph ? cachedInterInducedGraph[key] : undefined; // 若没有缓存相交邻居诱导子图,计算\n\n if (!interInducedGraph) {\n var pairMap = (_a = {}, _a[key] = {\n start: nodeMap[node1.id].idx,\n end: nodeMap[node2.id].idx,\n distance: spDist\n }, _a);\n cachedInterInducedGraph = getIntersectNeighborInducedGraph(pairMap, kNeighborUnits, graph, cachedInterInducedGraph);\n interInducedGraph = cachedInterInducedGraph[key];\n }\n\n return getMatchedCount(interInducedGraph, structure, nodeLabelProp, edgeLabelProp);\n};\n/**\n * 计算 pattern 上绩点的度数并存储到 minPatternNodeLabelDegreeMap\n */\n\n\nvar stashPatternNodeLabelDegreeMap = function stashPatternNodeLabelDegreeMap(minPatternNodeLabelDegreeMap, neighborLabel, patternNodeMap, patternNodeLabelMap) {\n var _a, _b, _c;\n\n var minPatternNodeLabelDegree = (_a = minPatternNodeLabelDegreeMap[neighborLabel]) === null || _a === void 0 ? void 0 : _a.degree;\n var minPatternNodeLabelInDegree = (_b = minPatternNodeLabelDegreeMap[neighborLabel]) === null || _b === void 0 ? void 0 : _b.inDegree;\n var minPatternNodeLabelOutDegree = (_c = minPatternNodeLabelDegreeMap[neighborLabel]) === null || _c === void 0 ? void 0 : _c.outDegree;\n\n if (minPatternNodeLabelDegreeMap[neighborLabel] === undefined) {\n minPatternNodeLabelDegree = Infinity;\n minPatternNodeLabelInDegree = Infinity;\n minPatternNodeLabelOutDegree = Infinity;\n patternNodeLabelMap[neighborLabel].forEach(function (patternNodeWithLabel) {\n var patternNodeDegree = patternNodeMap[patternNodeWithLabel.id].degree;\n if (minPatternNodeLabelDegree > patternNodeDegree) minPatternNodeLabelDegree = patternNodeDegree;\n var patternNodeInDegree = patternNodeMap[patternNodeWithLabel.id].inDegree;\n if (minPatternNodeLabelInDegree > patternNodeInDegree) minPatternNodeLabelInDegree = patternNodeInDegree;\n var patternNodeOutDegree = patternNodeMap[patternNodeWithLabel.id].outDegree;\n if (minPatternNodeLabelOutDegree > patternNodeOutDegree) minPatternNodeLabelOutDegree = patternNodeOutDegree;\n });\n minPatternNodeLabelDegreeMap[neighborLabel] = {\n degree: minPatternNodeLabelDegree,\n inDegree: minPatternNodeLabelInDegree,\n outDegree: minPatternNodeLabelOutDegree\n };\n }\n\n return {\n minPatternNodeLabelDegree: minPatternNodeLabelDegree,\n minPatternNodeLabelInDegree: minPatternNodeLabelInDegree,\n minPatternNodeLabelOutDegree: minPatternNodeLabelOutDegree\n };\n};\n/**\n * GADDI 模式匹配\n * @param graphData 原图数据\n * @param pattern 搜索图(需要在原图上搜索的模式)数据\n * @param directed 是否计算有向图,默认 false\n * @param k 参数 k,表示 k-近邻\n * @param length 参数 length\n * @param nodeLabelProp 节点数据中代表节点标签(分类信息)的属性名。默认为 cluster\n * @param edgeLabelProp 边数据中代表边标签(分类信息)的属性名。默认为 cluster\n */\n\n\nvar GADDI = function GADDI(graphData, pattern, directed, k, length, nodeLabelProp, edgeLabelProp) {\n var _a;\n\n if (directed === void 0) {\n directed = false;\n }\n\n if (nodeLabelProp === void 0) {\n nodeLabelProp = 'cluster';\n }\n\n if (edgeLabelProp === void 0) {\n edgeLabelProp = 'cluster';\n }\n\n if (!graphData || !graphData.nodes) return; // 分为三步:\n // 0. 预计算:节点/边数,邻接矩阵、最短路径矩阵\n // 1. 处理原图 graphData。再分为 1~5 小步\n // 2. 匹配\n // console.log(\"----- stage-pre: preprocessing -------\");\n // -------- 第零步,预计算:节点/边数,邻接矩阵、最短路径矩阵-------\n\n var nodeNum = graphData.nodes.length;\n if (!nodeNum) return; // console.log(\"----- stage-pre.1: calc shortest path matrix for graph -------\");\n\n var spm = Object(_floydWarshall__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(graphData, directed); // console.log(\n // \"----- stage-pre.2: calc shortest path matrix for pattern -------\"\n // );\n\n var patternSpm = Object(_floydWarshall__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(pattern, directed); // console.log(\n // \"----- stage-pre.3: calc shortest path matrix map for graph -------\"\n // );\n\n var spmMap = getSpmMap(graphData.nodes, spm, directed); // console.log(\n // \"----- stage-pre.4: calc shortest path matrix map for pattern -------\"\n // );\n\n var patternSpmMap = getSpmMap(pattern.nodes, patternSpm, directed); // console.log(\"----- stage-pre.5: establish maps -------\");\n // 节点的 map,以 id 为 id 映射,方便后续快速检索\n\n var _b = getNodeMaps(graphData.nodes, nodeLabelProp),\n nodeMap = _b.nodeMap,\n nodeLabelMap = _b.nodeLabelMap;\n\n var _c = getNodeMaps(pattern.nodes, nodeLabelProp),\n patternNodeMap = _c.nodeMap,\n patternNodeLabelMap = _c.nodeLabelMap; // 计算节点度数\n\n\n getEdgeMaps(graphData.edges, edgeLabelProp, nodeMap);\n var patternEdgeLabelMap = getEdgeMaps(pattern.edges, edgeLabelProp, patternNodeMap).edgeLabelMap; // 若未指定 length,自动计算 pattern 半径(最短路径最大值)\n\n var patternSpmSpread = [];\n patternSpm === null || patternSpm === void 0 ? void 0 : patternSpm.forEach(function (row) {\n patternSpmSpread = patternSpmSpread.concat(row);\n });\n if (!length) length = Math.max.apply(Math, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], patternSpmSpread, false), [2], false));\n if (!k) k = length; // console.log(\"params\", directed, length, k);\n // console.log(\"----- stage-pre.6: calc k neighbor units -------\");\n // 计算每个节点的 k 邻元集合\n\n var kNeighborUnits = findKNeighborUnits(graphData, spm, nodeLabelProp, k);\n var patternKNeighborUnits = findKNeighborUnits(pattern, patternSpm, nodeLabelProp, k); // console.log(\n // \"----- stage0: going to processing graph and find intersect neighbor induced graphs -------\"\n // );\n // console.log(\"----- stage0.1: going to select random node pairs -------\");\n // -------- 第一步,处理原图 graphData-------\n // 1.1. 随机选择最多 100 个点对,满足距离小于 Length 和 k\n // 当 graphData 少于 20 个节点,则不能找出 100 个点对,只找出不多于 n(n-1)/2 个点对\n\n var maxNodePairNum = Math.min(100, nodeNum * (nodeNum - 1) / 2);\n var nodePairsMap = findNodePairsRandomly(k, nodeNum, maxNodePairNum, patternKNeighborUnits, spm); // console.log(\n // \"----- stage0.2: going to calculate intersect neighbor induced graphs -------\"\n // );\n // 1.2. 生成上面节点对的相应相交邻居诱导子图。格式为 {'beginNodeIdx-endNodeIdx': {nodes: [], edges: []}}\n\n var intGMap = getIntersectNeighborInducedGraph(nodePairsMap, kNeighborUnits, graphData); // 1.3. 使用 gSpan 算法(frequent graph mining)计算 ISIntG 的前 10 个频率最高的子结构(3-4条边)\n\n var top = 10,\n minSupport = 1,\n minNodeNum = 1,\n maxNodeNum = 4;\n var params = {\n graphs: intGMap,\n nodeLabelProp: nodeLabelProp,\n edgeLabelProp: edgeLabelProp,\n minSupport: minSupport,\n minNodeNum: minNodeNum,\n maxNodeNum: maxNodeNum,\n directed: directed\n }; // console.log(\n // \"----- stage1: (gSpan) going to find frequent structure dsG -------\"\n // );\n // console.log(\"----- stage1.1: going to run gSpan -------\");\n // 暂时假设生成的 sub structure 都只有一条边\n\n var freStructures = Object(_gSpan_gSpan__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(params).slice(0, top); // structureNum 可能小于 top\n\n var structureNum = freStructures.length; // 1.4. 计算上述 10 个子结构在 intGMap 中每个诱导子图的匹配个数\n\n var matchedCountMap = [];\n freStructures.forEach(function (structure, i) {\n matchedCountMap[i] = {};\n Object.keys(intGMap).forEach(function (key) {\n var graph = intGMap[key];\n var subStructureCount = getMatchedCount(graph, structure, nodeLabelProp, edgeLabelProp);\n matchedCountMap[i][key] = subStructureCount;\n });\n }); // console.log(\n // \"----- stage1.1: going to find the most represent strucutre -------\"\n // );\n // 1.5. 对于每个子结构,根据匹配个数为 intGMap 中的诱导子图分组,生成 structureNum 种分组\n // 计算每种分组的类间距和类内间距,找到类间距最大、类内间距最小的一种分组,这种分组对应的子结构被选为唯一代表性子结构 DS(G)\n\n var _d = findRepresentStructure(matchedCountMap, structureNum, freStructures),\n dsG = _d.structure,\n ndsDist = _d.structureCountMap; // -------- 第二步,匹配-------\n // 2.1 找到从 Q 中的一个节点作为起始节点,寻找 G 中的匹配。这个其实节点的标签可以在 G 中找到最多的节点\n\n\n var beginPNode = pattern.nodes[0],\n candidates = [],\n label = (_a = pattern.nodes[0]) === null || _a === void 0 ? void 0 : _a[nodeLabelProp],\n maxNodeNumWithSameLabel = -Infinity;\n pattern.nodes.forEach(function (node) {\n var pLabel = node[nodeLabelProp];\n var nodesWithSameLabel = nodeLabelMap[pLabel];\n\n if ((nodesWithSameLabel === null || nodesWithSameLabel === void 0 ? void 0 : nodesWithSameLabel.length) > maxNodeNumWithSameLabel) {\n maxNodeNumWithSameLabel = nodesWithSameLabel.length;\n candidates = nodesWithSameLabel;\n label = pLabel;\n beginPNode = node;\n }\n }); // console.log(\"----- stage2: going to find candidates -------\");\n // 全局缓存,避免重复计算\n\n var minPatternNodeLabelDegreeMap = {}; // key 是 label,value 是该 label 节点的最小度数\n\n var patternIntGraphMap = {},\n patternNDSDist = {},\n // key 为 node.id-node.id\n patternNDSDistMap = {}; // key 为 node.id-label2,value nds距离值数组(按从大到小排序,无需关心具体对应哪个 node2)\n // 2.2.2 对于 Q 中的另一个标签的 k 个节点,计算它们到 node 的最短路径以及 NDS 距离\n\n var patternSpDist = {};\n var patternSpDistBack = {};\n Object.keys(patternNodeLabelMap).forEach(function (label2, j) {\n patternSpDist[label2] = [];\n\n if (directed) {\n patternSpDistBack[label2] = [];\n }\n\n var maxDist = -Infinity;\n var patternNodesWithLabel2 = patternNodeLabelMap[label2];\n var patternNodePairMap = {};\n patternNodesWithLabel2.forEach(function (nodeWithLabel2) {\n var dist = patternSpmMap[\"\".concat(beginPNode.id, \"-\").concat(nodeWithLabel2.id)];\n dist && patternSpDist[label2].push(dist);\n if (maxDist < dist) maxDist = dist;\n patternNodePairMap[\"\".concat(beginPNode.id, \"-\").concat(nodeWithLabel2.id)] = {\n start: 0,\n end: patternNodeMap[nodeWithLabel2.id].idx,\n distance: dist\n };\n\n if (directed) {\n var distBack = patternSpmMap[\"\".concat(nodeWithLabel2.id, \"-\").concat(beginPNode.id)];\n distBack && patternSpDistBack[label2].push(distBack);\n }\n }); // spDist[label2] 按照从小到大排序\n\n patternSpDist[label2] = patternSpDist[label2].sort(function (a, b) {\n return a - b;\n });\n if (directed) patternSpDistBack[label2] = patternSpDistBack[label2].sort(function (a, b) {\n return a - b;\n }); // 计算 Q 中所有 label2 节点到 beginPNode 的 NDS 距离\n // 所有 label2 节点到 beginPNode 的邻居相交诱导子图:\n // key: node1.id-node2.id\n\n patternIntGraphMap = getIntersectNeighborInducedGraph(patternNodePairMap, patternKNeighborUnits, pattern, patternIntGraphMap); // pattern 中 beginNode 到当前 label2 节点 的 NDS 距离(数组,无需关心具体对应到哪个节点)\n\n var currentPatternNDSDistArray = [];\n Object.keys(patternNodePairMap).forEach(function (key) {\n if (patternNDSDist[key]) {\n currentPatternNDSDistArray.push(patternNDSDist[key]);\n return; // 缓存过则不需要再次计算\n }\n\n var patternIntGraph = patternIntGraphMap[key];\n patternNDSDist[key] = getMatchedCount(patternIntGraph, dsG, nodeLabelProp, edgeLabelProp);\n currentPatternNDSDistArray.push(patternNDSDist[key]);\n }); // 根据值为 currentPatternNDSDist 从大到小排序\n\n currentPatternNDSDistArray = currentPatternNDSDistArray.sort(function (a, b) {\n return b - a;\n });\n patternNDSDistMap[\"\".concat(beginPNode.id, \"-\").concat(label2)] = currentPatternNDSDistArray;\n if (label2 === label) return;\n var candidatesNum = (candidates === null || candidates === void 0 ? void 0 : candidates.length) || 0;\n\n var _loop_4 = function _loop_4(m) {\n var cNode = candidates[m]; // prune1:若 candidates 中节点 cNode 的 kNeighborUnits 中标签为 label2 的节点个数少于 pattern 中 label2 个数,删去它\n\n var graphNeighborUnit = kNeighborUnits[nodeMap[cNode.id].idx];\n var graphNeighborUnitCountMap = graphNeighborUnit.nodeLabelCountMap[label2];\n var patternLabel2Num = patternNodeLabelMap[label2].length;\n\n if (!graphNeighborUnitCountMap || graphNeighborUnitCountMap.count < patternLabel2Num) {\n candidates.splice(m, 1);\n return \"continue\";\n } // prune2:若 candidates 中节点 cNode 到 kNeighborUnits 中标签为 label2 的节点最短路径大于 patternSpDist[label2],删去它\n // (prune2 规则即:candidate 相关的最短路径的最大 spDist[label2].length 个,按照大小顺序依次和 patternSpDist[label2] 中的值比较,只要遇到一个是 G > Q 的,就删去这个 candidate)\n\n\n var prune2Invalid = false;\n\n for (var n = 0; n < patternLabel2Num; n++) {\n if (graphNeighborUnitCountMap.dists[n] > patternSpDist[label2][n]) {\n prune2Invalid = true;\n break;\n }\n }\n\n if (prune2Invalid) {\n candidates.splice(m, 1);\n return \"continue\";\n } // prune3:若 candidates 中节点 cNode 到 kNeighborUnits 中标签为 label2 的节点 NDS 距离小于 patternNDSDist[beginNode.id-label2],删去它\n // TODO:prune3,currentPatternNDSDistArray 与 currentNDSDist 的比较\n // 计算 G 中所有 label2 节点到 cNode 的 NDS 距离\n // 所有 label2 节点到 cNode 的邻居相交诱导子图:\n\n\n var cNodePairMap = {};\n graphNeighborUnit.neighbors.forEach(function (neighborNode) {\n var dist = spmMap[\"\".concat(cNode.id, \"-\").concat(neighborNode.id)];\n cNodePairMap[\"\".concat(cNode.id, \"-\").concat(neighborNode.id)] = {\n start: nodeMap[cNode.id].idx,\n end: nodeMap[neighborNode.id].idx,\n distance: dist\n };\n }); // 更新 intGMap\n\n intGMap = getIntersectNeighborInducedGraph(cNodePairMap, kNeighborUnits, graphData, intGMap); // candidate 到它周围 label2 节点的 NDS 距离, key 是 node.id-node.id\n\n var currentNDSDistArray = [];\n Object.keys(cNodePairMap).forEach(function (key) {\n if (ndsDist[key]) {\n currentNDSDistArray.push(ndsDist[key]);\n return; // 缓存过则不需要再次计算\n }\n\n var intGraph = intGMap[key];\n ndsDist[key] = getMatchedCount(intGraph, dsG, nodeLabelProp, edgeLabelProp);\n currentNDSDistArray.push(ndsDist[key]);\n }); // 根据值为 currentNDSDistArray 从大到小排序\n\n currentNDSDistArray = currentNDSDistArray.sort(function (a, b) {\n return b - a;\n });\n var prune3Invalid = false;\n\n for (var n = 0; n < patternLabel2Num; n++) {\n if (currentNDSDistArray[n] < currentPatternNDSDistArray[n]) {\n prune3Invalid = true;\n break;\n }\n }\n\n if (prune3Invalid) {\n candidates.splice(m, 1);\n return \"continue\";\n }\n };\n\n for (var m = candidatesNum - 1; m >= 0; m--) {\n _loop_4(m);\n }\n });\n var candidateGraphs = []; // console.log(\n // \"----- stage3: going to splice neighbors for each candidate graph -------\"\n // );\n // candidates 经过筛选后,以每个 candidate 为中心,生成 Length-neighbor 的邻居诱导子图\n // 并在诱导子图中去除不可能在 Q 上找到匹配的点:在 Q 上不存在的 label,其他 label 到 candidate 的最大最短距离符合 Q、NDS 距离符合 Q\n\n candidates === null || candidates === void 0 ? void 0 : candidates.forEach(function (candidate) {\n var nodeIdx = nodeMap[candidate.id].idx;\n var lengthNeighborUnit = findKNeighborUnit(graphData.nodes, spm[nodeIdx], nodeIdx, nodeLabelProp, length);\n var neighborNodes = lengthNeighborUnit.neighbors; // 删除不可能找到匹配的邻居点\n\n var neighborNum = neighborNodes.length;\n var unmatched = false;\n\n for (var i = neighborNum - 1; i >= 0; i--) {\n // 如果通过裁剪,符合条件的节点数量已过少,说明不能匹配这个 candidate 相关的图\n if (neighborNodes.length + 1 < pattern.nodes.length) {\n unmatched = true;\n return;\n }\n\n var neighborNode = neighborNodes[i];\n var neighborLabel = neighborNode[nodeLabelProp]; // prune1: 若该邻居点的 label 不存在于 pattern 中,移除这个点\n\n if (!patternNodeLabelMap[neighborLabel] || !patternNodeLabelMap[neighborLabel].length) {\n neighborNodes.splice(i, 1);\n continue;\n } // prune2: 若该邻居点到 candidate 的最短路径比和它有相同 label 的节点到 beginPNode 的最大最短路径长度长,移除这个点\n // prune2.1: 如果没有这个标签到 beginPNode 的距离记录,说明 pattern 上(可能 beginPNode 是这个 label)没有其他这个 label 的节点\n\n\n if (!patternSpDist[neighborLabel] || !patternSpDist[neighborLabel].length) {\n neighborNodes.splice(i, 1);\n continue;\n }\n\n var key = \"\".concat(candidate.id, \"-\").concat(neighborNode.id); // prune2.2\n\n var distToCandidate = spmMap[key];\n var idx = patternSpDist[neighborLabel].length - 1;\n var maxDistWithLabelInPattern = patternSpDist[neighborLabel][idx]; // patternSpDist[neighborLabel] 已经按照从小到大排序\n\n if (distToCandidate > maxDistWithLabelInPattern) {\n neighborNodes.splice(i, 1);\n continue;\n }\n\n if (directed) {\n var keyBack = \"\".concat(neighborNode.id, \"-\").concat(candidate.id);\n var distFromCandidate = spmMap[keyBack];\n idx = patternSpDistBack[neighborLabel].length - 1;\n var maxBackDistWithLabelInPattern = patternSpDistBack[neighborLabel][idx];\n\n if (distFromCandidate > maxBackDistWithLabelInPattern) {\n neighborNodes.splice(i, 1);\n continue;\n }\n } // prune3: 若该邻居点到 candidate 的 NDS 距离比和它有相同 label 的节点到 beginPNode 的最小 NDS 距离小,移除这个点\n\n\n var ndsToCandidate = ndsDist[key] ? ndsDist[key] : getNDSDist(graphData, candidate, neighborNode, nodeMap, distToCandidate, kNeighborUnits, dsG, nodeLabelProp, edgeLabelProp, ndsDist, intGMap);\n var patternKey = \"\".concat(beginPNode.id, \"-\").concat(neighborLabel);\n var minNdsWithLabelInPattern = patternNDSDistMap[patternKey][patternNDSDistMap[patternKey].length - 1]; // patternNDSDist[key] 一定存在\n\n if (ndsToCandidate < minNdsWithLabelInPattern) {\n neighborNodes.splice(i, 1);\n continue;\n } // prune4: 若该邻居点的度数小于 pattern 同 label 节点最小度数,删去该点\n\n\n var _a = stashPatternNodeLabelDegreeMap(minPatternNodeLabelDegreeMap, neighborLabel, patternNodeMap, patternNodeLabelMap),\n minPatternNodeLabelDegree = _a.minPatternNodeLabelDegree,\n minPatternNodeLabelInDegree = _a.minPatternNodeLabelInDegree,\n minPatternNodeLabelOutDegree = _a.minPatternNodeLabelOutDegree;\n\n if (nodeMap[neighborNode.id].degree < minPatternNodeLabelDegree) {\n neighborNodes.splice(i, 1);\n continue;\n }\n } // 节点在个数上符合匹配(不少于 pattern 的节点个数),现在筛选相关边\n\n\n if (!unmatched) {\n candidateGraphs.push({\n nodes: [candidate].concat(neighborNodes)\n });\n }\n }); // console.log(\n // \"----- stage4: going to splice edges and neighbors for each candidate graph -------\"\n // );\n\n var undirectedLengthsToBeginPNode = Object(_dijkstra__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(pattern, beginPNode.id, false).length;\n var undirectedLengthsToBeginPNodeLabelMap = {};\n\n if (directed) {\n Object.keys(undirectedLengthsToBeginPNode).forEach(function (nodeId) {\n var nodeLabel = patternNodeMap[nodeId].node[nodeLabelProp];\n if (!undirectedLengthsToBeginPNodeLabelMap[nodeLabel]) undirectedLengthsToBeginPNodeLabelMap[nodeLabel] = [undirectedLengthsToBeginPNode[nodeId]];else undirectedLengthsToBeginPNodeLabelMap[nodeLabel].push(undirectedLengthsToBeginPNode[nodeId]);\n });\n Object.keys(undirectedLengthsToBeginPNodeLabelMap).forEach(function (pLabel) {\n undirectedLengthsToBeginPNodeLabelMap[pLabel].sort(function (a, b) {\n return a - b;\n });\n });\n } else {\n undirectedLengthsToBeginPNodeLabelMap = patternSpDist;\n } // 现在 candidateGraphs 里面只有节点,进行边的筛选\n\n\n var candidateGraphNum = candidateGraphs.length;\n\n var _loop_2 = function _loop_2(i) {\n var candidateGraph = candidateGraphs[i];\n var candidate = candidateGraph.nodes[0];\n var candidateNodeLabelCountMap = {};\n var candidateNodeMap = {};\n candidateGraph.nodes.forEach(function (node, q) {\n candidateNodeMap[node.id] = {\n idx: q,\n node: node,\n degree: 0,\n inDegree: 0,\n outDegree: 0\n };\n var cNodeLabel = node[nodeLabelProp];\n if (!candidateNodeLabelCountMap[cNodeLabel]) candidateNodeLabelCountMap[cNodeLabel] = 1;else candidateNodeLabelCountMap[cNodeLabel]++;\n }); // 根据 candidate 和 neighborNodes 中的节点生成 G 的诱导子图\n // 即,将 graphData 上两端都在 candidateGraph.nodes 中的边放入 candidateEdges\n\n var candidateEdges = [];\n var edgeLabelCountMap = {};\n graphData.edges.forEach(function (edge) {\n if (candidateNodeMap[edge.source] && candidateNodeMap[edge.target]) {\n candidateEdges.push(edge);\n if (!edgeLabelCountMap[edge[edgeLabelProp]]) edgeLabelCountMap[edge[edgeLabelProp]] = 1;else edgeLabelCountMap[edge[edgeLabelProp]]++;\n candidateNodeMap[edge.source].degree++;\n candidateNodeMap[edge.target].degree++;\n candidateNodeMap[edge.source].outDegree++;\n candidateNodeMap[edge.target].inDegree++;\n }\n }); // prune:若有一个 edgeLabel 在 candidateGraph 上的个数少于 pattern,去除该图\n\n var pattenrEdgeLabelNum = Object.keys(patternEdgeLabelMap).length;\n var prunedByEdgeLabel = false;\n\n for (var e = 0; e < pattenrEdgeLabelNum; e++) {\n var label_1 = Object.keys(patternEdgeLabelMap)[e];\n\n if (!edgeLabelCountMap[label_1] || edgeLabelCountMap[label_1] < patternEdgeLabelMap[label_1].length) {\n prunedByEdgeLabel = true;\n break;\n }\n }\n\n if (prunedByEdgeLabel) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n } // 遍历 candidateEdges,进行边的筛选\n\n\n var candidateEdgeNum = candidateEdges.length; // prune:若边数过少,去除该图\n\n if (candidateEdgeNum < pattern.edges.length) {\n candidateGraphs.splice(i, 1);\n return \"break\";\n }\n\n var candidateGraphInvalid = false;\n\n var _loop_5 = function _loop_5(e) {\n var edge = candidateEdges[e];\n var edgeLabel = edge[edgeLabelProp];\n var patternEdgesWithLabel = patternEdgeLabelMap[edgeLabel]; // prune 1: 若边的 label 不存在于 pattern 边 label 中,去除该边\n\n if (!patternEdgesWithLabel || !patternEdgesWithLabel.length) {\n edgeLabelCountMap[edgeLabel]--; // 若这个 label 的 count 减少之后,该 label 的边数不足,去除该图\n\n if (patternEdgesWithLabel && edgeLabelCountMap[edgeLabel] < patternEdgesWithLabel.length) {\n candidateGraphInvalid = true;\n return \"break\";\n }\n\n candidateEdges.splice(e, 1);\n candidateNodeMap[edge.source].degree--;\n candidateNodeMap[edge.target].degree--;\n candidateNodeMap[edge.source].outDegree--;\n candidateNodeMap[edge.target].inDegree--;\n return \"continue\";\n } // prune 2: 若边的 label +两端 label 的三元组关系不能在 pattern 中找到,去除该边\n\n\n var sourceLabel = candidateNodeMap[edge.source].node[nodeLabelProp];\n var targetLabel = candidateNodeMap[edge.target].node[nodeLabelProp];\n var edgeMatched = false;\n patternEdgesWithLabel.forEach(function (patternEdge) {\n var patternSource = patternNodeMap[patternEdge.source].node;\n var patternTarget = patternNodeMap[patternEdge.target].node;\n if (patternSource[nodeLabelProp] === sourceLabel && patternTarget[nodeLabelProp] === targetLabel) edgeMatched = true;\n if (!directed && patternSource[nodeLabelProp] === targetLabel && patternTarget[nodeLabelProp] === sourceLabel) edgeMatched = true;\n });\n\n if (!edgeMatched) {\n edgeLabelCountMap[edgeLabel]--; // 若这个 label 的 count 减少之后,该 label 的边数不足,去除该图\n\n if (patternEdgesWithLabel && edgeLabelCountMap[edgeLabel] < patternEdgesWithLabel.length) {\n candidateGraphInvalid = true;\n return \"break\";\n }\n\n candidateEdges.splice(e, 1);\n candidateNodeMap[edge.source].degree--;\n candidateNodeMap[edge.target].degree--;\n candidateNodeMap[edge.source].outDegree--;\n candidateNodeMap[edge.target].inDegree--;\n return \"continue\";\n }\n };\n\n for (var e = candidateEdgeNum - 1; e >= 0; e--) {\n var state_2 = _loop_5(e);\n\n if (state_2 === \"break\") break;\n } // prune2: 删除边的过程中,发现边数过少/边 label 数过少时,去除该图\n\n\n if (candidateGraphInvalid) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n }\n\n candidateGraph.edges = candidateEdges;\n var lengthsToCandidate = Object(_dijkstra__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(candidateGraph, candidateGraph.nodes[0].id, false).length;\n Object.keys(lengthsToCandidate).reverse().forEach(function (targetId) {\n if (targetId === candidateGraph.nodes[0].id || candidateGraphInvalid) return; // prune4: 通过上述裁剪,可能导致该邻居子图变为不连通。裁剪掉目前在这个邻居子图中和 candidate(第一个节点)不连通的节点\n\n if (lengthsToCandidate[targetId] === Infinity) {\n var targetNodeLabel = candidateNodeMap[targetId].node[nodeLabelProp];\n candidateNodeLabelCountMap[targetNodeLabel]--;\n\n if (candidateNodeLabelCountMap[targetNodeLabel] < patternNodeLabelMap[targetNodeLabel].length) {\n candidateGraphInvalid = true;\n return;\n }\n\n var idx = candidateGraph.nodes.indexOf(candidateNodeMap[targetId].node);\n candidateGraph.nodes.splice(idx, 1);\n candidateNodeMap[targetId] = undefined;\n return;\n } // prune5: 经过边裁剪后,可能又出现了最短路径过长的节点 (比 pattern 中同 label 的节点到 beginNode 最大最短距离远),删去这些节点\n\n\n var nLabel = nodeMap[targetId].node[nodeLabelProp];\n\n if (!undirectedLengthsToBeginPNodeLabelMap[nLabel] || !undirectedLengthsToBeginPNodeLabelMap[nLabel].length || lengthsToCandidate[targetId] > undirectedLengthsToBeginPNodeLabelMap[nLabel][undirectedLengthsToBeginPNodeLabelMap[nLabel].length - 1]) {\n var targetNodeLabel = candidateNodeMap[targetId].node[nodeLabelProp];\n candidateNodeLabelCountMap[targetNodeLabel]--;\n\n if (candidateNodeLabelCountMap[targetNodeLabel] < patternNodeLabelMap[targetNodeLabel].length) {\n candidateGraphInvalid = true;\n return;\n }\n\n var idx = candidateGraph.nodes.indexOf(candidateNodeMap[targetId].node);\n candidateGraph.nodes.splice(idx, 1);\n candidateNodeMap[targetId] = undefined;\n }\n });\n\n if (candidateGraphInvalid) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n }\n\n var degreeChanged = true;\n var loopCount = 0;\n\n while (degreeChanged && !candidateGraphInvalid) {\n degreeChanged = false; // candidate 度数不足,删去该图\n\n var condition = directed ? candidateNodeMap[candidate.id].degree < patternNodeMap[beginPNode.id].degree || candidateNodeMap[candidate.id].inDegree < patternNodeMap[beginPNode.id].inDegree || candidateNodeMap[candidate.id].outDegree < patternNodeMap[beginPNode.id].outDegree : candidateNodeMap[candidate.id].degree < patternNodeMap[beginPNode.id].degree;\n\n if (condition) {\n candidateGraphInvalid = true;\n break;\n } // candidate label 个数不足,删去该图\n\n\n if (candidateNodeLabelCountMap[candidate[nodeLabelProp]] < patternNodeLabelMap[candidate[nodeLabelProp]].length) {\n candidateGraphInvalid = true;\n break;\n } // prune6:去除度数过小的节点\n\n\n var currentCandidateNodeNum = candidateGraph.nodes.length;\n\n for (var o = currentCandidateNodeNum - 1; o >= 0; o--) {\n var cgNode = candidateGraph.nodes[o];\n var nodeDegree = candidateNodeMap[cgNode.id].degree;\n var nodeInDegree = candidateNodeMap[cgNode.id].inDegree;\n var nodeOutDegree = candidateNodeMap[cgNode.id].outDegree;\n var cNodeLabel = cgNode[nodeLabelProp];\n\n var _e = stashPatternNodeLabelDegreeMap(minPatternNodeLabelDegreeMap, cNodeLabel, patternNodeMap, patternNodeLabelMap),\n minPatternNodeLabelDegree = _e.minPatternNodeLabelDegree,\n minPatternNodeLabelInDegree = _e.minPatternNodeLabelInDegree,\n minPatternNodeLabelOutDegree = _e.minPatternNodeLabelOutDegree;\n\n var deleteCondition = directed ? nodeDegree < minPatternNodeLabelDegree || nodeInDegree < minPatternNodeLabelInDegree || nodeOutDegree < minPatternNodeLabelOutDegree : nodeDegree < minPatternNodeLabelDegree;\n\n if (deleteCondition) {\n candidateNodeLabelCountMap[cgNode[nodeLabelProp]]--; // 节点 label 个数不足\n\n if (candidateNodeLabelCountMap[cgNode[nodeLabelProp]] < patternNodeLabelMap[cgNode[nodeLabelProp]].length) {\n candidateGraphInvalid = true;\n break;\n }\n\n candidateGraph.nodes.splice(o, 1);\n candidateNodeMap[cgNode.id] = undefined;\n degreeChanged = true;\n }\n }\n\n if (candidateGraphInvalid || !degreeChanged && loopCount !== 0) break; // 经过 prune5 节点裁剪,删去端点已经不在 candidateGraph 中的边\n\n candidateEdgeNum = candidateEdges.length;\n\n for (var y = candidateEdgeNum - 1; y >= 0; y--) {\n var cedge = candidateEdges[y];\n\n if (!candidateNodeMap[cedge.source] || !candidateNodeMap[cedge.target]) {\n candidateEdges.splice(y, 1);\n var edgeLabel = cedge[edgeLabelProp];\n edgeLabelCountMap[edgeLabel]--;\n\n if (candidateNodeMap[cedge.source]) {\n candidateNodeMap[cedge.source].degree--;\n candidateNodeMap[cedge.source].outDegree--;\n }\n\n if (candidateNodeMap[cedge.target]) {\n candidateNodeMap[cedge.target].degree--;\n candidateNodeMap[cedge.target].inDegree--;\n } // 边 label 数量不足\n\n\n if (patternEdgeLabelMap[edgeLabel] && edgeLabelCountMap[edgeLabel] < patternEdgeLabelMap[edgeLabel].length) {\n candidateGraphInvalid = true;\n break;\n }\n\n degreeChanged = true;\n }\n }\n\n loopCount++;\n }\n\n if (candidateGraphInvalid) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n } // prune: 若节点/边数过少,节点/边 label 过少,去掉这个图\n\n\n if (candidateGraphInvalid || candidateGraph.nodes.length < pattern.nodes.length || candidateEdges.length < pattern.edges.length) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n }\n };\n\n for (var i = candidateGraphNum - 1; i >= 0; i--) {\n var state_1 = _loop_2(i);\n\n if (state_1 === \"break\") break;\n } // 此时已经生成的多个 candidateGraphs,可能有重复\n // console.log(\n // \"----- stage5: going to splice dulplicated candidate graphs -------\"\n // );\n // 删去 candidateGraphs 中一模一样的子图,通过边的 node-node-edgeLabel 作为 key,这类边个数作为 value,进行匹配\n\n\n var currentLength = candidateGraphs.length;\n\n var _loop_3 = function _loop_3(i) {\n var cg1 = candidateGraphs[i];\n var cg1EdgeMap = {}; // [node1.id-node2.id-edge.label]: count\n\n cg1.edges.forEach(function (edge) {\n var key = \"\".concat(edge.source, \"-\").concat(edge.target, \"-\").concat(edge.label);\n if (!cg1EdgeMap[key]) cg1EdgeMap[key] = 1;else cg1EdgeMap[key]++;\n });\n\n var _loop_6 = function _loop_6(j) {\n var cg2 = candidateGraphs[j];\n var cg2EdgeMap = {}; // [node1.id-node2.id-edge.label]: count\n\n cg2.edges.forEach(function (edge) {\n var key = \"\".concat(edge.source, \"-\").concat(edge.target, \"-\").concat(edge.label);\n if (!cg2EdgeMap[key]) cg2EdgeMap[key] = 1;else cg2EdgeMap[key]++;\n });\n var same = true;\n\n if (Object.keys(cg2EdgeMap).length !== Object.keys(cg1EdgeMap).length) {\n same = false;\n } else {\n Object.keys(cg1EdgeMap).forEach(function (key) {\n if (cg2EdgeMap[key] !== cg1EdgeMap[key]) same = false;\n });\n }\n\n if (same) {\n candidateGraphs.splice(j, 1);\n }\n };\n\n for (var j = currentLength - 1; j > i; j--) {\n _loop_6(j);\n }\n\n currentLength = candidateGraphs.length;\n };\n\n for (var i = 0; i <= currentLength - 1; i++) {\n _loop_3(i);\n }\n\n return candidateGraphs;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (GADDI);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2dhZGRpLmpzPzljZjEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXNDO0FBQ007QUFDVjtBQUNBO0FBQ0E7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyxFQUFFOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCOztBQUU3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCOztBQUU3QjtBQUNBO0FBQ0E7QUFDQSxnREFBZ0Q7QUFDaEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2Qjs7QUFFN0I7QUFDQTs7QUFFQTtBQUNBLDhDQUE4QztBQUM5QyxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtEQUErRDtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxREFBcUQ7O0FBRXJEO0FBQ0E7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUCxnREFBZ0Q7O0FBRWhEO0FBQ0E7O0FBRUEsbUJBQW1CLHFCQUFxQjtBQUN4QztBQUNBLGtEQUFrRDs7QUFFbEQ7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzREFBc0Qsa0JBQWtCLGdDQUFnQztBQUN4RztBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsdUNBQXVDOztBQUV2QztBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0Esc0JBQXNCOztBQUV0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQLHlCQUF5Qjs7QUFFekIsdUJBQXVCOztBQUV2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQjs7QUFFL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsb0NBQW9DOztBQUVwQyx5QkFBeUI7O0FBRXpCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsS0FBSyxFQUFFOztBQUVQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLGtCQUFrQjtBQUNuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBLHNCQUFzQiw4Q0FBUTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsdUJBQXVCLFlBQVk7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDZGQUE2Rjs7QUFFN0Y7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHVCQUF1Qjs7QUFFdkIsWUFBWSw4REFBYSxzQkFBc0I7QUFDL0M7QUFDQTs7QUFFQSxtQkFBbUIsOERBQWEsb0JBQW9CO0FBQ3BEO0FBQ0E7O0FBRUEseURBQXlEO0FBQ3pEO0FBQ0E7O0FBRUEscUVBQXFFO0FBQ3JFOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNENBQTRDOzs7QUFHNUM7QUFDQSxtR0FBbUc7O0FBRW5HO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCw2Q0FBNkMsMkRBQWEsQ0FBQywyREFBYTtBQUN4RSxxQkFBcUI7QUFDckI7QUFDQTs7QUFFQTtBQUNBLHdGQUF3RjtBQUN4RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtR0FBbUc7QUFDbkc7QUFDQTtBQUNBLGtDQUFrQyw0QkFBNEI7O0FBRTlELDBGQUEwRjs7QUFFMUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHNCQUFzQiw0REFBSyx1QkFBdUI7O0FBRWxELDBDQUEwQzs7QUFFMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRyxFQUFFO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHFDQUFxQztBQUNyQzs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyxFQUFFO0FBQ0w7O0FBRUEsd0NBQXdDOztBQUV4Qyw2QkFBNkI7QUFDN0IseUJBQXlCO0FBQ3pCO0FBQ0EseUJBQXlCO0FBQ3pCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSyxFQUFFO0FBQ1A7QUFDQTs7QUFFQSxrSUFBa0k7O0FBRWxJO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGdDQUFnQzs7QUFFaEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7O0FBR0E7O0FBRUEscUJBQXFCLHNCQUFzQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQsbUdBQW1HOztBQUVuRztBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQSxxQkFBcUIsc0JBQXNCO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQ0FBbUMsUUFBUTtBQUMzQztBQUNBO0FBQ0EsR0FBRztBQUNILDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxREFBcUQ7O0FBRXJEO0FBQ0E7O0FBRUEsaUNBQWlDLFFBQVE7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNEQUFzRDs7QUFFdEQ7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxRUFBcUU7O0FBRXJFO0FBQ0E7QUFDQSx3RUFBd0U7O0FBRXhFO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0EsNkdBQTZHOztBQUU3RztBQUNBO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUcsRUFBRTtBQUNMO0FBQ0E7O0FBRUEsc0NBQXNDLHlEQUFRO0FBQzlDOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHdKQUF3SjtBQUN4SixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxHQUFHOzs7QUFHSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEZBQThGO0FBQzlGLEtBQUssRUFBRTtBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnR0FBZ0c7QUFDaEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBOztBQUVBLG1CQUFtQix5QkFBeUI7QUFDNUM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTCxpREFBaUQ7O0FBRWpEO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGlFQUFpRTs7QUFFakU7QUFDQSx1Q0FBdUM7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0EsdUNBQXVDOztBQUV2QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHNDQUFzQyxRQUFRO0FBQzlDOztBQUVBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw2QkFBNkIseURBQVE7QUFDckM7QUFDQSxtRkFBbUY7O0FBRW5GO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLDRCQUE0Qjs7QUFFNUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7O0FBRUEsK0NBQStDLFFBQVE7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLDhEQUE4RDs7QUFFOUQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw0RUFBNEU7O0FBRTVFOztBQUVBLHdDQUF3QyxRQUFRO0FBQ2hEOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7OztBQUdYO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUNBQXFDLFFBQVE7QUFDN0M7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQSx3QkFBd0I7O0FBRXhCO0FBQ0E7QUFDQSxnREFBZ0Q7QUFDaEQsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsMEJBQTBCOztBQUUxQjtBQUNBO0FBQ0Esa0RBQWtEO0FBQ2xELE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUNBQW1DLE9BQU87QUFDMUM7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGlCQUFpQix3QkFBd0I7QUFDekM7QUFDQTs7QUFFQTtBQUNBOztBQUVlLG9FQUFLIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9lcy9nYWRkaS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fc3ByZWFkQXJyYXkgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCBmbG95ZFdhcnNoYWxsIGZyb20gJy4vZmxveWRXYXJzaGFsbCc7XG5pbXBvcnQgZ1NwYW4gZnJvbSAnLi9nU3Bhbi9nU3Bhbic7XG5pbXBvcnQgZGlqa3N0cmEgZnJvbSAnLi9kaWprc3RyYSc7XG5pbXBvcnQgeyB1bmlxdWVJZCB9IGZyb20gJy4vdXRpbCc7XG4vKipcbiAqIOS4uiBncmFwaERhdGEg5Lit5q+P5Liq6IqC54K555Sf5oiQ6YK75bGF5Y2V5YWD5pWw57uEXG4gKiBAcGFyYW0gZ3JhcGhEYXRhXG4gKiBAcGFyYW0gc3BtXG4gKiBAcGFyYW0gbm9kZUxhYmVsUHJvcFxuICogQHBhcmFtIGsgay3ov5HpgrtcbiAqL1xuXG52YXIgZmluZEtOZWlnaGJvclVuaXRzID0gZnVuY3Rpb24gZmluZEtOZWlnaGJvclVuaXRzKGdyYXBoRGF0YSwgc3BtLCBub2RlTGFiZWxQcm9wLCBrKSB7XG4gIGlmIChub2RlTGFiZWxQcm9wID09PSB2b2lkIDApIHtcbiAgICBub2RlTGFiZWxQcm9wID0gJ2NsdXN0ZXInO1xuICB9XG5cbiAgaWYgKGsgPT09IHZvaWQgMCkge1xuICAgIGsgPSAyO1xuICB9XG5cbiAgdmFyIHVuaXRzID0gW107XG4gIHZhciBub2RlcyA9IGdyYXBoRGF0YS5ub2RlcztcbiAgc3BtLmZvckVhY2goZnVuY3Rpb24gKHJvdywgaSkge1xuICAgIHVuaXRzLnB1c2goZmluZEtOZWlnaGJvclVuaXQobm9kZXMsIHJvdywgaSwgbm9kZUxhYmVsUHJvcCwgaykpO1xuICB9KTtcbiAgcmV0dXJuIHVuaXRzO1xufTtcblxudmFyIGZpbmRLTmVpZ2hib3JVbml0ID0gZnVuY3Rpb24gZmluZEtOZWlnaGJvclVuaXQobm9kZXMsIHJvdywgaSwgbm9kZUxhYmVsUHJvcCwgaykge1xuICB2YXIgdW5pdE5vZGVJZHhzID0gW2ldO1xuICB2YXIgbmVpZ2hib3JzID0gW107XG4gIHZhciBsYWJlbENvdW50TWFwID0ge307XG4gIHJvdy5mb3JFYWNoKGZ1bmN0aW9uICh2LCBqKSB7XG4gICAgaWYgKHYgPD0gayAmJiBpICE9PSBqKSB7XG4gICAgICB1bml0Tm9kZUlkeHMucHVzaChqKTtcbiAgICAgIG5laWdoYm9ycy5wdXNoKG5vZGVzW2pdKTtcbiAgICAgIHZhciBsYWJlbCA9IG5vZGVzW2pdW25vZGVMYWJlbFByb3BdO1xuICAgICAgaWYgKCFsYWJlbENvdW50TWFwW2xhYmVsXSkgbGFiZWxDb3VudE1hcFtsYWJlbF0gPSB7XG4gICAgICAgIGNvdW50OiAxLFxuICAgICAgICBkaXN0czogW3ZdXG4gICAgICB9O2Vsc2Uge1xuICAgICAgICBsYWJlbENvdW50TWFwW2xhYmVsXS5jb3VudCsrO1xuICAgICAgICBsYWJlbENvdW50TWFwW2xhYmVsXS5kaXN0cy5wdXNoKHYpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7IC8vIOWwhiBsYWJlbENvdW50TWFwIOS4reeahCBkaXN0cyDmjInnhafku47lsI/liLDlpKfmjpLluo/vvIzmlrnkvr/lkI7pnaLkvb/nlKhcblxuICBPYmplY3Qua2V5cyhsYWJlbENvdW50TWFwKS5mb3JFYWNoKGZ1bmN0aW9uIChsYWJlbCkge1xuICAgIGxhYmVsQ291bnRNYXBbbGFiZWxdLmRpc3RzID0gbGFiZWxDb3VudE1hcFtsYWJlbF0uZGlzdHMuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGEgLSBiO1xuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBub2RlSWR4OiBpLFxuICAgIG5vZGVJZDogbm9kZXNbaV0uaWQsXG4gICAgbm9kZUlkeHM6IHVuaXROb2RlSWR4cyxcbiAgICBuZWlnaGJvcnM6IG5laWdoYm9ycyxcbiAgICBuZWlnaGJvck51bTogdW5pdE5vZGVJZHhzLmxlbmd0aCAtIDEsXG4gICAgbm9kZUxhYmVsQ291bnRNYXA6IGxhYmVsQ291bnRNYXBcbiAgfTtcbn07XG4vKipcbiAqIOmaj+acuuWvu+aJvueCueWvue+8jOa7oei2s+i3neemu+Wwj+S6jiBrXG4gKiBAcGFyYW0gayDlj4LmlbAga++8jOihqOekuiBrLei/kemCu1xuICogQHBhcmFtIG5vZGVOdW0g5Y+C5pWwIGxlbmd0aFxuICogQHBhcmFtIG1heE5vZGVQYWlyTnVtIOWvu+aJvueCueWvueeahOaVsOmHj+S4jei2hei/hyBtYXhOb2RlUGFpck51bVxuICogQHBhcmFtIHNwbSDmnIDnn63ot6/lvoTnn6npmLVcbiAqL1xuXG5cbnZhciBmaW5kTm9kZVBhaXJzUmFuZG9tbHkgPSBmdW5jdGlvbiBmaW5kTm9kZVBhaXJzUmFuZG9tbHkoaywgbm9kZU51bSwgbWF4Tm9kZVBhaXJOdW0sIGtOZWlnaGJvclVuaXRzLCBzcG0pIHtcbiAgLy8g5q+P5Liq6IqC54K56ZyA6KaB6ZqP5py65om+5Ye655qE54K55a+55pWwXG4gIHZhciBub2RlUGFpck51bUVhY2hOb2RlID0gTWF0aC5jZWlsKG1heE5vZGVQYWlyTnVtIC8gbm9kZU51bSk7XG4gIHZhciBub2RlUGFpck1hcCA9IHt9O1xuICB2YXIgZm91bmROb2RlUGFpckNvdW50ID0gMDsgLy8g6YGN5Y6G6IqC54K577yM5Li65q+P5Liq6IqC54K56ZqP5py65om+5Ye6IG5vZGVQYWlyTnVtRWFjaE5vZGUg5Liq54K55a+577yM5ruh6Laz6Led56a75bCP5LqOIGvjgILmib7liLDnmoTngrnlr7nmlbDph4/otoXov4cgbWF4Tm9kZVBhaXJOdW0g5oiW5omA5pyJ6IqC54K56YGN5Y6G57uT5p2f5pe257uI5q2iXG5cbiAga05laWdoYm9yVW5pdHMuZm9yRWFjaChmdW5jdGlvbiAodW5pdCwgaSkge1xuICAgIC8vIOiLpeacqui+vuWIsCBub2RlUGFpck51bUVhY2hOb2Rl77yM5oiW5b6q546v5qyh5pWw5bCP5LqO5pyA5aSn5b6q546v5qyh5pWwKDIgKiBub2RlTnVtKe+8jOe7p+e7reW+queOr1xuICAgIHZhciBub2RlUGFpckZvcklDb3VudCA9IDA7XG4gICAgdmFyIG91dGVyTG9vcENvdW50ID0gMDtcbiAgICB2YXIgbmVpZ2hib3JzID0gdW5pdC5ub2RlSWR4czsgLy8gdGhlIGZpcnN0IG9uZSBpcyB0aGUgY2VudGVyIG5vZGVcblxuICAgIHZhciBuZWlnaGJvck51bSA9IHVuaXQubmVpZ2hib3JOdW0gLSAxO1xuXG4gICAgd2hpbGUgKG5vZGVQYWlyRm9ySUNvdW50IDwgbm9kZVBhaXJOdW1FYWNoTm9kZSkge1xuICAgICAgLy8g5Y+m5LiA56uv6IqC54K55Zyo6IqC54K55pWw57uE5Lit55qE55qEIGluZGV4XG4gICAgICB2YXIgb2lkeCA9IG5laWdoYm9yc1sxICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogbmVpZ2hib3JOdW0pXTtcbiAgICAgIHZhciBpbm5lckxvb3BDb3VudCA9IDA7IC8vIOiLpemaj+acuuW+l+WIsOeahOWPpuS4gOerryBpZHgg5LiN56ym5ZCI5p2h5Lu277yM5YiZ57un57utIHJhbmRvbeOAguadoeS7tuaYr+S4jeaYr+WQjOS4gOS4quiKgueCueOAgei/meS4queCueWvueayoeacieiiq+iusOW9lei/h+OAgei3neemu+Wwj+S6jiBrXG5cbiAgICAgIHdoaWxlIChub2RlUGFpck1hcFtcIlwiLmNvbmNhdChpLCBcIi1cIikuY29uY2F0KG9pZHgpXSB8fCBub2RlUGFpck1hcFtcIlwiLmNvbmNhdChvaWR4LCBcIi1cIikuY29uY2F0KGkpXSkge1xuICAgICAgICBvaWR4ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogbm9kZU51bSk7XG4gICAgICAgIGlubmVyTG9vcENvdW50Kys7XG4gICAgICAgIGlmIChpbm5lckxvb3BDb3VudCA+IDIgKiBub2RlTnVtKSBicmVhazsgLy8g5b6q546v5qyh5pWw5aSn5LqO5pyA5aSn5b6q546v5qyh5pWwKDIgKiBub2RlTnVtKei3s+WHuuW+queOr++8jOmBv+WFjeatu+W+queOr1xuICAgICAgfVxuXG4gICAgICBpZiAoaW5uZXJMb29wQ291bnQgPCAyICogbm9kZU51bSkge1xuICAgICAgICAvLyDmnKrovr7liLDmnIDlpKflvqrnjq/mrKHmlbDvvIzor7TmmI7mib7liLDkuoblkIjpgILnmoTlj6bkuIDnq69cbiAgICAgICAgbm9kZVBhaXJNYXBbXCJcIi5jb25jYXQoaSwgXCItXCIpLmNvbmNhdChvaWR4KV0gPSB7XG4gICAgICAgICAgc3RhcnQ6IGksXG4gICAgICAgICAgZW5kOiBvaWR4LFxuICAgICAgICAgIGRpc3RhbmNlOiBzcG1baV1bb2lkeF1cbiAgICAgICAgfTtcbiAgICAgICAgbm9kZVBhaXJGb3JJQ291bnQrKztcbiAgICAgICAgZm91bmROb2RlUGFpckNvdW50Kys7IC8vIOWmguaenOW9k+WJjeaJvuWIsOeahOeCueWvueaVsOmHj+i+vuWIsOS6huS4iumZkO+8jOi/lOWbnue7k+aenFxuXG4gICAgICAgIGlmIChmb3VuZE5vZGVQYWlyQ291bnQgPj0gbWF4Tm9kZVBhaXJOdW0pIHJldHVybiBub2RlUGFpck1hcDtcbiAgICAgIH1cblxuICAgICAgb3V0ZXJMb29wQ291bnQrKztcbiAgICAgIGlmIChvdXRlckxvb3BDb3VudCA+IDIgKiBub2RlTnVtKSBicmVhazsgLy8g5b6q546v5qyh5pWw5aSn5LqO5pyA5aSn5b6q546v5qyh5pWwKDIgKiBub2RlTnVtKei3s+WHuuW+queOr++8jOmBv+WFjeatu+W+queOr1xuICAgIH0gLy8g6L+Z5Liq6IqC54K55rKh5pyJ5om+5Yiw6Laz5aSfIG5vZGVQYWlyTnVtRWFjaE5vZGUg55qE54K55a+544CC5pu05pawIG5vZGVQYWlyTnVtRWFjaE5vZGXvvIzorqnlkI7nu63oioLngrnmib7mm7TlpJrnmoTngrnlr7lcblxuXG4gICAgaWYgKG5vZGVQYWlyRm9ySUNvdW50IDwgbm9kZVBhaXJOdW1FYWNoTm9kZSkge1xuICAgICAgdmFyIGdhcCA9IG5vZGVQYWlyTnVtRWFjaE5vZGUgLSBub2RlUGFpckZvcklDb3VudDtcbiAgICAgIG5vZGVQYWlyTnVtRWFjaE5vZGUgPSAobm9kZVBhaXJOdW1FYWNoTm9kZSArIGdhcCkgLyAobm9kZU51bSAtIGkgLSAxKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gbm9kZVBhaXJNYXA7XG59O1xuLyoqXG4gKiDorqHnrpfmiYDmnIkgbm9kZVBhaXJNYXAg5Lit6IqC54K55a+555qE55u45Lqk6YK75bGF6K+x5a+85a2Q5Zu+XG4gKiBAcGFyYW0gbm9kZVBhaXJNYXAg6IqC54K55a+5IG1hcO+8jGtleSDkuLogbm9kZTEuaWQtbm9kZTIuaWTvvIx2YWx1ZSDkuLogeyBzdGFydE5vZGVJZHgsIGVuZE5vZGVJZHgsIGRpc3RhbmNlIH1cbiAqIEBwYXJhbSBuZWlnaGJvclVuaXRzIOavj+S4quiKgueCueeahOmCu+WxheWFg+aVsOe7hFxuICogQHBhcmFtIGdyYXBoRGF0YSDljp/lm77mlbDmja5cbiAqIEBwYXJhbSBlZGdlTWFwIOi+ueeahCBtYXDvvIzmlrnkvr/mo4DntKJcbiAqIEBwYXJhbSBjYWNoZWRJbmR1Y2VkR3JhcGhNYXAg57yT5a2Y55qE57uT5p6c77yM5LiL5qyh6L+b5YWl6K+l5Ye95pWw5bCG57un57ut5pu05paw6K+l57yT5a2Y77yM6IulIGtleSDlnKjnvJPlrZjkuK3lrZjlnKjliJnkuI3pnIDopoHph43lpI3orqHnrpdcbiAqL1xuXG5cbnZhciBnZXRJbnRlcnNlY3ROZWlnaGJvckluZHVjZWRHcmFwaCA9IGZ1bmN0aW9uIGdldEludGVyc2VjdE5laWdoYm9ySW5kdWNlZEdyYXBoKG5vZGVQYWlyTWFwLCBuZWlnaGJvclVuaXRzLCBncmFwaERhdGEsIGNhY2hlZEluZHVjZWRHcmFwaE1hcCkge1xuICB2YXIgbm9kZXMgPSBncmFwaERhdGEubm9kZXM7XG4gIGlmICghY2FjaGVkSW5kdWNlZEdyYXBoTWFwKSBjYWNoZWRJbmR1Y2VkR3JhcGhNYXAgPSB7fTtcbiAgT2JqZWN0LmtleXMobm9kZVBhaXJNYXApLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciBfYSwgX2I7XG5cbiAgICBpZiAoY2FjaGVkSW5kdWNlZEdyYXBoTWFwICYmIGNhY2hlZEluZHVjZWRHcmFwaE1hcFtrZXldKSByZXR1cm47XG4gICAgY2FjaGVkSW5kdWNlZEdyYXBoTWFwW2tleV0gPSB7XG4gICAgICBub2RlczogW10sXG4gICAgICBlZGdlczogW11cbiAgICB9O1xuICAgIHZhciBwYWlyID0gbm9kZVBhaXJNYXBba2V5XTtcbiAgICB2YXIgc3RhcnRVbml0Tm9kZUlkcyA9IChfYSA9IG5laWdoYm9yVW5pdHNbcGFpci5zdGFydF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5ub2RlSWR4cztcbiAgICB2YXIgZW5kVW5pdE5vZGVJZHMgPSAoX2IgPSBuZWlnaGJvclVuaXRzW3BhaXIuZW5kXSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLm5vZGVJZHhzO1xuICAgIGlmICghc3RhcnRVbml0Tm9kZUlkcyB8fCAhZW5kVW5pdE5vZGVJZHMpIHJldHVybjsgLy8g5LiN5a2Y5Zyo6YK75YWD77yM6L+U5Zue56m65Zu+XG5cbiAgICB2YXIgZW5kU2V0ID0gbmV3IFNldChlbmRVbml0Tm9kZUlkcyk7XG4gICAgdmFyIGludGVyc2VjdCA9IHN0YXJ0VW5pdE5vZGVJZHMuZmlsdGVyKGZ1bmN0aW9uICh4KSB7XG4gICAgICByZXR1cm4gZW5kU2V0Lmhhcyh4KTtcbiAgICB9KTsgLy8g5Y+v6IO95Lya54iG5qCI77yI5ZyoIDE1ODAgKyA2IG5vZGVzIGZ1bGwtY29ubmVjdGVkIOaXtuWHuueOsO+8iVxuXG4gICAgaWYgKCFpbnRlcnNlY3QgfHwgIWludGVyc2VjdC5sZW5ndGgpIHJldHVybjsgLy8g5rKh5pyJ5Lqk6ZuG77yM6L+U5Zue56m65Zu+XG5cbiAgICB2YXIgaW50ZXJzZWN0SWRNYXAgPSB7fTtcbiAgICB2YXIgaW50ZXJzZWN0TGVuZ3RoID0gaW50ZXJzZWN0Lmxlbmd0aDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW50ZXJzZWN0TGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBub2RlID0gbm9kZXNbaW50ZXJzZWN0W2ldXTtcbiAgICAgIGNhY2hlZEluZHVjZWRHcmFwaE1hcFtrZXldLm5vZGVzLnB1c2gobm9kZSk7IC8vIOWwhuS6pOmbhuS4reeahOeCueWKoOWFpeivseWvvOWtkOWbvlxuXG4gICAgICBpbnRlcnNlY3RJZE1hcFtub2RlLmlkXSA9IHRydWU7XG4gICAgfSAvLyDpgY3ljobmiYDmnInovrnmlbDmja7vvIzlpoLmnpzovrnnmoTkuKTnq6/pg73lnKjkuqTpm4bkuK3vvIzlsIbor6XovrnliqDlhaXor7Hlr7zlrZDlm75cblxuXG4gICAgZ3JhcGhEYXRhLmVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIGlmIChpbnRlcnNlY3RJZE1hcFtlZGdlLnNvdXJjZV0gJiYgaW50ZXJzZWN0SWRNYXBbZWRnZS50YXJnZXRdKSBjYWNoZWRJbmR1Y2VkR3JhcGhNYXBba2V5XS5lZGdlcy5wdXNoKGVkZ2UpO1xuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIGNhY2hlZEluZHVjZWRHcmFwaE1hcDtcbn07XG4vKipcbiAqIOiuoeeulyBzdHJjdXRyZSDlnKggZ3JhcGgg5LiK55qE5Yy56YWN5pWw6YePXG4gKiBAcGFyYW0gZ3JhcGgg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gc3RydWN0dXJlIOebruWJjeaUr+aMgeWPquacieS4pOS4quiKgueCueS4gOadoei+ueeahOacgOeugOWNlee7k+aehFxuICogQHBhcmFtIG5vZGVMYWJlbFByb3Ag6IqC54K557G75Z6L5a2X5q615ZCNXG4gKiBAcGFyYW0gZWRnZUxhYmVsUHJvcCDovrnnsbvlnovlrZfmrrXlkI1cbiAqL1xuXG5cbnZhciBnZXRNYXRjaGVkQ291bnQgPSBmdW5jdGlvbiBnZXRNYXRjaGVkQ291bnQoZ3JhcGgsIHN0cnVjdHVyZSwgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcCkge1xuICB2YXIgX2EsIF9iO1xuXG4gIHZhciBub2RlTWFwID0ge307XG4gIGdyYXBoLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICBub2RlTWFwW25vZGUuaWRdID0gbm9kZTtcbiAgfSk7XG4gIHZhciBjb3VudCA9IDA7XG4gIGlmICghKChfYSA9IHN0cnVjdHVyZSA9PT0gbnVsbCB8fCBzdHJ1Y3R1cmUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0cnVjdHVyZS5lZGdlcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aCkgfHwgKChfYiA9IHN0cnVjdHVyZSA9PT0gbnVsbCB8fCBzdHJ1Y3R1cmUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0cnVjdHVyZS5ub2RlcykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmxlbmd0aCkgPCAyKSByZXR1cm4gMDtcbiAgZ3JhcGguZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xuICAgIHZhciBzb3VyY2VMYWJlbCA9IG5vZGVNYXBbZS5zb3VyY2VdW25vZGVMYWJlbFByb3BdO1xuICAgIHZhciB0YXJnZXRMYWJlbCA9IG5vZGVNYXBbZS50YXJnZXRdW25vZGVMYWJlbFByb3BdO1xuICAgIHZhciBzdHJOb2RlTGFiZWwxID0gc3RydWN0dXJlID09PSBudWxsIHx8IHN0cnVjdHVyZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3RydWN0dXJlLm5vZGVzWzBdW25vZGVMYWJlbFByb3BdO1xuICAgIHZhciBzdHJOb2RlTGFiZWwyID0gc3RydWN0dXJlID09PSBudWxsIHx8IHN0cnVjdHVyZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3RydWN0dXJlLm5vZGVzWzFdW25vZGVMYWJlbFByb3BdO1xuICAgIHZhciBzdHJFZGdlTGFiZWwgPSBzdHJ1Y3R1cmUgPT09IG51bGwgfHwgc3RydWN0dXJlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdHJ1Y3R1cmUuZWRnZXNbMF1bZWRnZUxhYmVsUHJvcF07XG4gICAgaWYgKGVbZWRnZUxhYmVsUHJvcF0gIT09IHN0ckVkZ2VMYWJlbCkgcmV0dXJuO1xuXG4gICAgaWYgKHNvdXJjZUxhYmVsID09PSBzdHJOb2RlTGFiZWwxICYmIHRhcmdldExhYmVsID09PSBzdHJOb2RlTGFiZWwyIHx8IHNvdXJjZUxhYmVsID09PSBzdHJOb2RlTGFiZWwyICYmIHRhcmdldExhYmVsID09PSBzdHJOb2RlTGFiZWwxKSB7XG4gICAgICBjb3VudCsrO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBjb3VudDtcbn07XG4vKipcbiAqIHN0cnVjdHVyZXMg5Lit5a+75om+5pyA5YW35pyJ5Luj6KGo5oCn55qE5LiA5Liq44CC6L+Z5Liq57uT5p6E5piv5L2/5b6XIG1hdGNoZWRDb3VudE1hcCDnmoTliIbnu4TmlrnlvI/nsbvlhoXpl7Tot53mnIDlsI/vvIznsbvpl7Tpl7Tot53mnIDlpKdcbiAqIEBwYXJhbSBtYXRjaGVkQ291bnRNYXAg5q+P5LiqIHN0cnVjdHVyZSDliIbnsbvlkI7nmoTlkITlm77ljLnphY3mlbDph4/vvIzmoLzlvI8geyBbc3RyY3R1cmUuaWR4XTogeyBbaW50ZXJJbmR1Y2VkR3JhcGhLZXldOiBjb3VudCB9IH1cbiAqIEBwYXJhbSBzdHJ1Y3R1cmVOdW0gc3RyY3V0dXJlIOS4quaVsO+8jOS4jiBtYXRjaGVkQ291bnRNYXAubGVuZ3RoIOWvueW6lFxuICogQHBhcmFtIHN0cnVjdHVyZXNcbiAqL1xuXG5cbnZhciBmaW5kUmVwcmVzZW50U3RydWN0dXJlID0gZnVuY3Rpb24gZmluZFJlcHJlc2VudFN0cnVjdHVyZShtYXRjaGVkQ291bnRNYXAsIHN0cnVjdHVyZU51bSwgc3RydWN0dXJlcykge1xuICB2YXIgbWF4T2Zmc2V0ID0gSW5maW5pdHksXG4gICAgICByZXByZXNlbnRDbHVzdGVyVHlwZSA9IDA7XG5cbiAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiBfbG9vcF8xKGkpIHtcbiAgICAvLyDkuIDnp43liIbnu4TnmoQgbWFw77yMa2V5IOaYryBpbnRHcmFwaCDnmoQga2V577yMdmFsdWUg5pivIHN0cnVjdHVyZXNbaV0g55qE5Yy56YWN5Liq5pWwXG4gICAgdmFyIGNvdW50TWFwSSA9IG1hdGNoZWRDb3VudE1hcFtpXTsgLy8g5oyJ54WnIHZhbHVlIOS4uuivpee7hOaOkuW6j++8jOeUn+aIkCBrZXlzIOeahOaVsOe7hO+8mlxuXG4gICAgdmFyIHNvcnRlZEdyYXBoS2V5cyA9IE9iamVjdC5rZXlzKGNvdW50TWFwSSkuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGNvdW50TWFwSVthXSAtIGNvdW50TWFwSVtiXTtcbiAgICB9KTsgLy8g5YWxIDEwMCDkuKogZ3JhcGhLZXlz77yM5bCGIGdyYXBoS2V5cyDmjInpobrluo/liIbkuLogZ3JvdXBOdW0g57uEXG5cbiAgICB2YXIgZ3JvdXBOdW0gPSAxMDtcbiAgICB2YXIgY2x1c3RlcnMgPSBbXTsgLy8g5oC75YWx5pyJIGdyb3VwTnVtIOS4qumhuVxuXG4gICAgc29ydGVkR3JhcGhLZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSwgaikge1xuICAgICAgaWYgKCFjbHVzdGVyc1tqICUgZ3JvdXBOdW1dKSBjbHVzdGVyc1tqICUgZ3JvdXBOdW1dID0ge1xuICAgICAgICBncmFwaHM6IFtdLFxuICAgICAgICB0b3RhbENvdW50OiAwLFxuICAgICAgICBhdmVDb3VudDogMFxuICAgICAgfTtcbiAgICAgIGNsdXN0ZXJzW2ogJSBncm91cE51bV0uZ3JhcGhzLnB1c2goa2V5KTtcbiAgICAgIGNsdXN0ZXJzW2ogJSBncm91cE51bV0udG90YWxDb3VudCArPSBjb3VudE1hcElba2V5XTtcbiAgICB9KTsgLy8g6K6h566XIGNsdXN0ZXIg5LiOIGNsdXN0ZXIg5LmL6Ze055qE6Led56a7IGlubmVyRGlzdO+8jOavj+S4qiBjbHVzdGVyIOWGhemDqOeahOi3neemuyBpbnRyYURpc3RcblxuICAgIHZhciBhdmVJbnRyYURpc3QgPSAwOyAvLyDor6XnsbvnmoTnsbvlhoXlubPlnYflgLxcblxuICAgIHZhciBhdmVDb3VudHMgPSBbXTsgLy8g57G75YaF5bmz5Z2H5Yy56YWN5pWw6YeP77yM5bCG55So5LqO6K6h566X57G76Ze06Led56a7XG5cbiAgICBjbHVzdGVycy5mb3JFYWNoKGZ1bmN0aW9uIChncmFwaHNJbkNsdXN0ZXIpIHtcbiAgICAgIC8vIOexu+WGheWdh+WAvFxuICAgICAgdmFyIGF2ZUNvdW50ID0gZ3JhcGhzSW5DbHVzdGVyLnRvdGFsQ291bnQgLyBncmFwaHNJbkNsdXN0ZXIuZ3JhcGhzLmxlbmd0aDtcbiAgICAgIGdyYXBoc0luQ2x1c3Rlci5hdmVDb3VudCA9IGF2ZUNvdW50O1xuICAgICAgYXZlQ291bnRzLnB1c2goYXZlQ291bnQpOyAvLyDlr7nkuo7mr4/nsbvvvIzorqHnrpfnsbvlhoXpl7Tot53lubPlnYflgLxcblxuICAgICAgdmFyIGF2ZUludHJhUGVyQ2x1c3RlciA9IDA7XG4gICAgICB2YXIgZ3JhcGhzTnVtID0gZ3JhcGhzSW5DbHVzdGVyLmxlbmd0aDtcbiAgICAgIGdyYXBoc0luQ2x1c3Rlci5ncmFwaHMuZm9yRWFjaChmdW5jdGlvbiAoZ3JhcGhLZXkxLCBqKSB7XG4gICAgICAgIHZhciBncmFwaDFDb3VudCA9IGNvdW50TWFwSVtncmFwaEtleTFdO1xuICAgICAgICBncmFwaHNJbkNsdXN0ZXIuZ3JhcGhzLmZvckVhY2goZnVuY3Rpb24gKGdyYXBoS2V5Miwgaykge1xuICAgICAgICAgIGlmIChqID09PSBrKSByZXR1cm47XG4gICAgICAgICAgYXZlSW50cmFQZXJDbHVzdGVyICs9IE1hdGguYWJzKGdyYXBoMUNvdW50IC0gY291bnRNYXBJW2dyYXBoS2V5Ml0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgYXZlSW50cmFQZXJDbHVzdGVyIC89IGdyYXBoc051bSAqIChncmFwaHNOdW0gLSAxKSAvIDI7XG4gICAgICBhdmVJbnRyYURpc3QgKz0gYXZlSW50cmFQZXJDbHVzdGVyO1xuICAgIH0pO1xuICAgIGF2ZUludHJhRGlzdCAvPSBjbHVzdGVycy5sZW5ndGg7IC8vIOeUqOexu+WGheWdh+WAvOiuoeeul+exu+mXtOi3nVxuXG4gICAgdmFyIGF2ZUludGVyRGlzdCA9IDA7IC8vIOexu+mXtOmXtOi3neW5s+Wdh+WAvFxuXG4gICAgYXZlQ291bnRzLmZvckVhY2goZnVuY3Rpb24gKGF2ZUNvdW50MSwgaikge1xuICAgICAgYXZlQ291bnRzLmZvckVhY2goZnVuY3Rpb24gKGF2ZUNvdW50Miwgaykge1xuICAgICAgICBpZiAoaiA9PT0gaykgcmV0dXJuO1xuICAgICAgICBhdmVJbnRlckRpc3QgKz0gTWF0aC5hYnMoYXZlQ291bnQxIC0gYXZlQ291bnQyKTtcbiAgICAgIH0pO1xuICAgICAgYXZlSW50ZXJEaXN0IC89IGF2ZUNvdW50cy5sZW5ndGggKiAoYXZlQ291bnRzLmxlbmd0aCAtIDEpIC8gMjtcbiAgICB9KTsgLy8g5a+75om+ICjnsbvpl7Tpl7Tot53lnYflgLwt57G75YaF6Ze06Led5Z2H5YC8KSDmnIDlpKfnmoTkuIDnp43liIbnu4TmlrnlvI/vvIjlr7nlupTnmoQgc3RydWN0dXJlIOWwseaYr+acgOe7iOimgeaJvueahOWUr+S4gCBEUyhHKe+8iVxuXG4gICAgdmFyIG9mZnNldCA9IGF2ZUludGVyRGlzdCAtIGF2ZUludHJhRGlzdDtcblxuICAgIGlmIChtYXhPZmZzZXQgPCBvZmZzZXQpIHtcbiAgICAgIG1heE9mZnNldCA9IG9mZnNldDtcbiAgICAgIHJlcHJlc2VudENsdXN0ZXJUeXBlID0gaTtcbiAgICB9XG4gIH07XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHJ1Y3R1cmVOdW07IGkrKykge1xuICAgIF9sb29wXzEoaSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHN0cnVjdHVyZTogc3RydWN0dXJlc1tyZXByZXNlbnRDbHVzdGVyVHlwZV0sXG4gICAgc3RydWN0dXJlQ291bnRNYXA6IG1hdGNoZWRDb3VudE1hcFtyZXByZXNlbnRDbHVzdGVyVHlwZV1cbiAgfTtcbn07XG5cbnZhciBnZXROb2RlTWFwcyA9IGZ1bmN0aW9uIGdldE5vZGVNYXBzKG5vZGVzLCBub2RlTGFiZWxQcm9wKSB7XG4gIHZhciBub2RlTWFwID0ge30sXG4gICAgICBub2RlTGFiZWxNYXAgPSB7fTtcbiAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaSkge1xuICAgIG5vZGVNYXBbbm9kZS5pZF0gPSB7XG4gICAgICBpZHg6IGksXG4gICAgICBub2RlOiBub2RlLFxuICAgICAgZGVncmVlOiAwLFxuICAgICAgaW5EZWdyZWU6IDAsXG4gICAgICBvdXREZWdyZWU6IDBcbiAgICB9O1xuICAgIHZhciBsYWJlbCA9IG5vZGVbbm9kZUxhYmVsUHJvcF07XG4gICAgaWYgKCFub2RlTGFiZWxNYXBbbGFiZWxdKSBub2RlTGFiZWxNYXBbbGFiZWxdID0gW107XG4gICAgbm9kZUxhYmVsTWFwW2xhYmVsXS5wdXNoKG5vZGUpO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBub2RlTWFwOiBub2RlTWFwLFxuICAgIG5vZGVMYWJlbE1hcDogbm9kZUxhYmVsTWFwXG4gIH07XG59O1xuXG52YXIgZ2V0RWRnZU1hcHMgPSBmdW5jdGlvbiBnZXRFZGdlTWFwcyhlZGdlcywgZWRnZUxhYmVsUHJvcCwgbm9kZU1hcCkge1xuICB2YXIgZWRnZU1hcCA9IHt9LFxuICAgICAgZWRnZUxhYmVsTWFwID0ge307XG4gIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UsIGkpIHtcbiAgICBlZGdlTWFwW1wiXCIuY29uY2F0KHVuaXF1ZUlkKV0gPSB7XG4gICAgICBpZHg6IGksXG4gICAgICBlZGdlOiBlZGdlXG4gICAgfTtcbiAgICB2YXIgbGFiZWwgPSBlZGdlW2VkZ2VMYWJlbFByb3BdO1xuICAgIGlmICghZWRnZUxhYmVsTWFwW2xhYmVsXSkgZWRnZUxhYmVsTWFwW2xhYmVsXSA9IFtdO1xuICAgIGVkZ2VMYWJlbE1hcFtsYWJlbF0ucHVzaChlZGdlKTtcbiAgICB2YXIgc291cmNlTm9kZSA9IG5vZGVNYXBbZWRnZS5zb3VyY2VdO1xuXG4gICAgaWYgKHNvdXJjZU5vZGUpIHtcbiAgICAgIHNvdXJjZU5vZGUuZGVncmVlKys7XG4gICAgICBzb3VyY2VOb2RlLm91dERlZ3JlZSsrO1xuICAgIH1cblxuICAgIHZhciB0YXJnZXROb2RlID0gbm9kZU1hcFtlZGdlLnRhcmdldF07XG5cbiAgICBpZiAodGFyZ2V0Tm9kZSkge1xuICAgICAgdGFyZ2V0Tm9kZS5kZWdyZWUrKztcbiAgICAgIHRhcmdldE5vZGUuaW5EZWdyZWUrKztcbiAgICB9XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGVkZ2VNYXA6IGVkZ2VNYXAsXG4gICAgZWRnZUxhYmVsTWFwOiBlZGdlTGFiZWxNYXBcbiAgfTtcbn07XG4vKipcbiAqIOi+k+WHuuacgOefrei3r+W+hOeahCBtYXDvvIxrZXkg5Li6IHNvdXJjZU5vZGUuaWQtdGFyZ2V0Tm9kZS5pZO+8jHZhbHVlIOS4uui/meS4pOS4quiKgueCueeahOacgOefrei3r+W+hOmVv+W6plxuICogQHBhcmFtIG5vZGVzXG4gKiBAcGFyYW0gc3BtXG4gKiBAcGFyYW0gZGlyZWN0ZWRcbiAqL1xuXG5cbnZhciBnZXRTcG1NYXAgPSBmdW5jdGlvbiBnZXRTcG1NYXAobm9kZXMsIHNwbSwgZGlyZWN0ZWQpIHtcbiAgdmFyIGxlbmd0aCA9IHNwbS5sZW5ndGg7XG4gIHZhciBtYXAgPSB7fTtcbiAgc3BtLmZvckVhY2goZnVuY3Rpb24gKHJvdywgaSkge1xuICAgIHZhciBzdGFydCA9IGRpcmVjdGVkID8gMCA6IGkgKyAxO1xuICAgIHZhciBpSWQgPSBub2Rlc1tpXS5pZDtcblxuICAgIGZvciAodmFyIGogPSBzdGFydDsgaiA8IGxlbmd0aDsgaisrKSB7XG4gICAgICBpZiAoaSA9PT0gaikgY29udGludWU7XG4gICAgICB2YXIgaklkID0gbm9kZXNbal0uaWQ7XG4gICAgICB2YXIgZGlzdCA9IHJvd1tqXTtcbiAgICAgIG1hcFtcIlwiLmNvbmNhdChpSWQsIFwiLVwiKS5jb25jYXQoaklkKV0gPSBkaXN0O1xuICAgICAgaWYgKCFkaXJlY3RlZCkgbWFwW1wiXCIuY29uY2F0KGpJZCwgXCItXCIpLmNvbmNhdChpSWQpXSA9IGRpc3Q7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIG1hcDtcbn07XG4vKipcbiAqIOiuoeeul+S4gOWvueiKgueCue+8iG5vZGUx77yMbm9kZTLvvInnmoQgTkRTIOi3neemu1xuICogQHBhcmFtIGdyYXBoIOWOn+WbvuaVsOaNrlxuICogQHBhcmFtIG5vZGUxXG4gKiBAcGFyYW0gbm9kZTJcbiAqL1xuXG5cbnZhciBnZXRORFNEaXN0ID0gZnVuY3Rpb24gZ2V0TkRTRGlzdChncmFwaCwgbm9kZTEsIG5vZGUyLCBub2RlTWFwLCBzcERpc3QsIGtOZWlnaGJvclVuaXRzLCBzdHJ1Y3R1cmUsIG5vZGVMYWJlbFByb3AsIGVkZ2VMYWJlbFByb3AsIGNhY2hlZE5EU01hcCwgY2FjaGVkSW50ZXJJbmR1Y2VkR3JhcGgpIHtcbiAgdmFyIF9hO1xuXG4gIHZhciBrZXkgPSBcIlwiLmNvbmNhdChub2RlMS5pZCwgXCItXCIpLmNvbmNhdChub2RlMi5pZCk7XG4gIGlmIChjYWNoZWRORFNNYXAgJiYgY2FjaGVkTkRTTWFwW2tleV0pIHJldHVybiBjYWNoZWRORFNNYXBba2V5XTtcbiAgdmFyIGludGVySW5kdWNlZEdyYXBoID0gY2FjaGVkSW50ZXJJbmR1Y2VkR3JhcGggPyBjYWNoZWRJbnRlckluZHVjZWRHcmFwaFtrZXldIDogdW5kZWZpbmVkOyAvLyDoi6XmsqHmnInnvJPlrZjnm7jkuqTpgrvlsYXor7Hlr7zlrZDlm77vvIzorqHnrpdcblxuICBpZiAoIWludGVySW5kdWNlZEdyYXBoKSB7XG4gICAgdmFyIHBhaXJNYXAgPSAoX2EgPSB7fSwgX2Fba2V5XSA9IHtcbiAgICAgIHN0YXJ0OiBub2RlTWFwW25vZGUxLmlkXS5pZHgsXG4gICAgICBlbmQ6IG5vZGVNYXBbbm9kZTIuaWRdLmlkeCxcbiAgICAgIGRpc3RhbmNlOiBzcERpc3RcbiAgICB9LCBfYSk7XG4gICAgY2FjaGVkSW50ZXJJbmR1Y2VkR3JhcGggPSBnZXRJbnRlcnNlY3ROZWlnaGJvckluZHVjZWRHcmFwaChwYWlyTWFwLCBrTmVpZ2hib3JVbml0cywgZ3JhcGgsIGNhY2hlZEludGVySW5kdWNlZEdyYXBoKTtcbiAgICBpbnRlckluZHVjZWRHcmFwaCA9IGNhY2hlZEludGVySW5kdWNlZEdyYXBoW2tleV07XG4gIH1cblxuICByZXR1cm4gZ2V0TWF0Y2hlZENvdW50KGludGVySW5kdWNlZEdyYXBoLCBzdHJ1Y3R1cmUsIG5vZGVMYWJlbFByb3AsIGVkZ2VMYWJlbFByb3ApO1xufTtcbi8qKlxuICog6K6h566XIHBhdHRlcm4g5LiK57up54K555qE5bqm5pWw5bm25a2Y5YKo5YiwIG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXBcbiAqL1xuXG5cbnZhciBzdGFzaFBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXAgPSBmdW5jdGlvbiBzdGFzaFBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXAobWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcCwgbmVpZ2hib3JMYWJlbCwgcGF0dGVybk5vZGVNYXAsIHBhdHRlcm5Ob2RlTGFiZWxNYXApIHtcbiAgdmFyIF9hLCBfYiwgX2M7XG5cbiAgdmFyIG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWUgPSAoX2EgPSBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlTWFwW25laWdoYm9yTGFiZWxdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGVncmVlO1xuICB2YXIgbWluUGF0dGVybk5vZGVMYWJlbEluRGVncmVlID0gKF9iID0gbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcFtuZWlnaGJvckxhYmVsXSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmluRGVncmVlO1xuICB2YXIgbWluUGF0dGVybk5vZGVMYWJlbE91dERlZ3JlZSA9IChfYyA9IG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXBbbmVpZ2hib3JMYWJlbF0pID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5vdXREZWdyZWU7XG5cbiAgaWYgKG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXBbbmVpZ2hib3JMYWJlbF0gPT09IHVuZGVmaW5lZCkge1xuICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWUgPSBJbmZpbml0eTtcbiAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsSW5EZWdyZWUgPSBJbmZpbml0eTtcbiAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsT3V0RGVncmVlID0gSW5maW5pdHk7XG4gICAgcGF0dGVybk5vZGVMYWJlbE1hcFtuZWlnaGJvckxhYmVsXS5mb3JFYWNoKGZ1bmN0aW9uIChwYXR0ZXJuTm9kZVdpdGhMYWJlbCkge1xuICAgICAgdmFyIHBhdHRlcm5Ob2RlRGVncmVlID0gcGF0dGVybk5vZGVNYXBbcGF0dGVybk5vZGVXaXRoTGFiZWwuaWRdLmRlZ3JlZTtcbiAgICAgIGlmIChtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlID4gcGF0dGVybk5vZGVEZWdyZWUpIG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWUgPSBwYXR0ZXJuTm9kZURlZ3JlZTtcbiAgICAgIHZhciBwYXR0ZXJuTm9kZUluRGVncmVlID0gcGF0dGVybk5vZGVNYXBbcGF0dGVybk5vZGVXaXRoTGFiZWwuaWRdLmluRGVncmVlO1xuICAgICAgaWYgKG1pblBhdHRlcm5Ob2RlTGFiZWxJbkRlZ3JlZSA+IHBhdHRlcm5Ob2RlSW5EZWdyZWUpIG1pblBhdHRlcm5Ob2RlTGFiZWxJbkRlZ3JlZSA9IHBhdHRlcm5Ob2RlSW5EZWdyZWU7XG4gICAgICB2YXIgcGF0dGVybk5vZGVPdXREZWdyZWUgPSBwYXR0ZXJuTm9kZU1hcFtwYXR0ZXJuTm9kZVdpdGhMYWJlbC5pZF0ub3V0RGVncmVlO1xuICAgICAgaWYgKG1pblBhdHRlcm5Ob2RlTGFiZWxPdXREZWdyZWUgPiBwYXR0ZXJuTm9kZU91dERlZ3JlZSkgbWluUGF0dGVybk5vZGVMYWJlbE91dERlZ3JlZSA9IHBhdHRlcm5Ob2RlT3V0RGVncmVlO1xuICAgIH0pO1xuICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXBbbmVpZ2hib3JMYWJlbF0gPSB7XG4gICAgICBkZWdyZWU6IG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWUsXG4gICAgICBpbkRlZ3JlZTogbWluUGF0dGVybk5vZGVMYWJlbEluRGVncmVlLFxuICAgICAgb3V0RGVncmVlOiBtaW5QYXR0ZXJuTm9kZUxhYmVsT3V0RGVncmVlXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZTogbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSxcbiAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsSW5EZWdyZWU6IG1pblBhdHRlcm5Ob2RlTGFiZWxJbkRlZ3JlZSxcbiAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsT3V0RGVncmVlOiBtaW5QYXR0ZXJuTm9kZUxhYmVsT3V0RGVncmVlXG4gIH07XG59O1xuLyoqXG4gKiBHQURESSDmqKHlvI/ljLnphY1cbiAqIEBwYXJhbSBncmFwaERhdGEg5Y6f5Zu+5pWw5o2uXG4gKiBAcGFyYW0gcGF0dGVybiDmkJzntKLlm77vvIjpnIDopoHlnKjljp/lm77kuIrmkJzntKLnmoTmqKHlvI/vvInmlbDmja5cbiAqIEBwYXJhbSBkaXJlY3RlZCDmmK/lkKborqHnrpfmnInlkJHlm77vvIzpu5jorqQgZmFsc2VcbiAqIEBwYXJhbSBrIOWPguaVsCBr77yM6KGo56S6IGst6L+R6YK7XG4gKiBAcGFyYW0gbGVuZ3RoIOWPguaVsCBsZW5ndGhcbiAqIEBwYXJhbSBub2RlTGFiZWxQcm9wIOiKgueCueaVsOaNruS4reS7o+ihqOiKgueCueagh+etvu+8iOWIhuexu+S/oeaBr++8ieeahOWxnuaAp+WQjeOAgum7mOiupOS4uiBjbHVzdGVyXG4gKiBAcGFyYW0gZWRnZUxhYmVsUHJvcCDovrnmlbDmja7kuK3ku6PooajovrnmoIfnrb7vvIjliIbnsbvkv6Hmga/vvInnmoTlsZ7mgKflkI3jgILpu5jorqTkuLogY2x1c3RlclxuICovXG5cblxudmFyIEdBRERJID0gZnVuY3Rpb24gR0FEREkoZ3JhcGhEYXRhLCBwYXR0ZXJuLCBkaXJlY3RlZCwgaywgbGVuZ3RoLCBub2RlTGFiZWxQcm9wLCBlZGdlTGFiZWxQcm9wKSB7XG4gIHZhciBfYTtcblxuICBpZiAoZGlyZWN0ZWQgPT09IHZvaWQgMCkge1xuICAgIGRpcmVjdGVkID0gZmFsc2U7XG4gIH1cblxuICBpZiAobm9kZUxhYmVsUHJvcCA9PT0gdm9pZCAwKSB7XG4gICAgbm9kZUxhYmVsUHJvcCA9ICdjbHVzdGVyJztcbiAgfVxuXG4gIGlmIChlZGdlTGFiZWxQcm9wID09PSB2b2lkIDApIHtcbiAgICBlZGdlTGFiZWxQcm9wID0gJ2NsdXN0ZXInO1xuICB9XG5cbiAgaWYgKCFncmFwaERhdGEgfHwgIWdyYXBoRGF0YS5ub2RlcykgcmV0dXJuOyAvLyDliIbkuLrkuInmraXvvJpcbiAgLy8gMC4g6aKE6K6h566X77ya6IqC54K5L+i+ueaVsO+8jOmCu+aOpeefqemYteOAgeacgOefrei3r+W+hOefqemYtVxuICAvLyAxLiDlpITnkIbljp/lm74gZ3JhcGhEYXRh44CC5YaN5YiG5Li6IDF+NSDlsI/mraVcbiAgLy8gMi4g5Yy56YWNXG4gIC8vIGNvbnNvbGUubG9nKFwiLS0tLS0gc3RhZ2UtcHJlOiBwcmVwcm9jZXNzaW5nIC0tLS0tLS1cIik7XG4gIC8vIC0tLS0tLS0tIOesrOmbtuatpe+8jOmihOiuoeeul++8muiKgueCuS/ovrnmlbDvvIzpgrvmjqXnn6npmLXjgIHmnIDnn63ot6/lvoTnn6npmLUtLS0tLS0tXG5cbiAgdmFyIG5vZGVOdW0gPSBncmFwaERhdGEubm9kZXMubGVuZ3RoO1xuICBpZiAoIW5vZGVOdW0pIHJldHVybjsgLy8gY29uc29sZS5sb2coXCItLS0tLSBzdGFnZS1wcmUuMTogY2FsYyBzaG9ydGVzdCBwYXRoIG1hdHJpeCBmb3IgZ3JhcGggLS0tLS0tLVwiKTtcblxuICB2YXIgc3BtID0gZmxveWRXYXJzaGFsbChncmFwaERhdGEsIGRpcmVjdGVkKTsgLy8gY29uc29sZS5sb2coXG4gIC8vICAgXCItLS0tLSBzdGFnZS1wcmUuMjogY2FsYyBzaG9ydGVzdCBwYXRoIG1hdHJpeCBmb3IgcGF0dGVybiAtLS0tLS0tXCJcbiAgLy8gKTtcblxuICB2YXIgcGF0dGVyblNwbSA9IGZsb3lkV2Fyc2hhbGwocGF0dGVybiwgZGlyZWN0ZWQpOyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlLXByZS4zOiBjYWxjIHNob3J0ZXN0IHBhdGggbWF0cml4IG1hcCBmb3IgZ3JhcGggLS0tLS0tLVwiXG4gIC8vICk7XG5cbiAgdmFyIHNwbU1hcCA9IGdldFNwbU1hcChncmFwaERhdGEubm9kZXMsIHNwbSwgZGlyZWN0ZWQpOyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlLXByZS40OiBjYWxjIHNob3J0ZXN0IHBhdGggbWF0cml4IG1hcCBmb3IgcGF0dGVybiAtLS0tLS0tXCJcbiAgLy8gKTtcblxuICB2YXIgcGF0dGVyblNwbU1hcCA9IGdldFNwbU1hcChwYXR0ZXJuLm5vZGVzLCBwYXR0ZXJuU3BtLCBkaXJlY3RlZCk7IC8vIGNvbnNvbGUubG9nKFwiLS0tLS0gc3RhZ2UtcHJlLjU6IGVzdGFibGlzaCBtYXBzIC0tLS0tLS1cIik7XG4gIC8vIOiKgueCueeahCBtYXDvvIzku6UgaWQg5Li6IGlkIOaYoOWwhO+8jOaWueS+v+WQjue7reW/q+mAn+ajgOe0olxuXG4gIHZhciBfYiA9IGdldE5vZGVNYXBzKGdyYXBoRGF0YS5ub2Rlcywgbm9kZUxhYmVsUHJvcCksXG4gICAgICBub2RlTWFwID0gX2Iubm9kZU1hcCxcbiAgICAgIG5vZGVMYWJlbE1hcCA9IF9iLm5vZGVMYWJlbE1hcDtcblxuICB2YXIgX2MgPSBnZXROb2RlTWFwcyhwYXR0ZXJuLm5vZGVzLCBub2RlTGFiZWxQcm9wKSxcbiAgICAgIHBhdHRlcm5Ob2RlTWFwID0gX2Mubm9kZU1hcCxcbiAgICAgIHBhdHRlcm5Ob2RlTGFiZWxNYXAgPSBfYy5ub2RlTGFiZWxNYXA7IC8vIOiuoeeul+iKgueCueW6puaVsFxuXG5cbiAgZ2V0RWRnZU1hcHMoZ3JhcGhEYXRhLmVkZ2VzLCBlZGdlTGFiZWxQcm9wLCBub2RlTWFwKTtcbiAgdmFyIHBhdHRlcm5FZGdlTGFiZWxNYXAgPSBnZXRFZGdlTWFwcyhwYXR0ZXJuLmVkZ2VzLCBlZGdlTGFiZWxQcm9wLCBwYXR0ZXJuTm9kZU1hcCkuZWRnZUxhYmVsTWFwOyAvLyDoi6XmnKrmjIflrpogbGVuZ3Ro77yM6Ieq5Yqo6K6h566XIHBhdHRlcm4g5Y2K5b6E77yI5pyA55+t6Lev5b6E5pyA5aSn5YC877yJXG5cbiAgdmFyIHBhdHRlcm5TcG1TcHJlYWQgPSBbXTtcbiAgcGF0dGVyblNwbSA9PT0gbnVsbCB8fCBwYXR0ZXJuU3BtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYXR0ZXJuU3BtLmZvckVhY2goZnVuY3Rpb24gKHJvdykge1xuICAgIHBhdHRlcm5TcG1TcHJlYWQgPSBwYXR0ZXJuU3BtU3ByZWFkLmNvbmNhdChyb3cpO1xuICB9KTtcbiAgaWYgKCFsZW5ndGgpIGxlbmd0aCA9IE1hdGgubWF4LmFwcGx5KE1hdGgsIF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgcGF0dGVyblNwbVNwcmVhZCwgZmFsc2UpLCBbMl0sIGZhbHNlKSk7XG4gIGlmICghaykgayA9IGxlbmd0aDsgLy8gY29uc29sZS5sb2coXCJwYXJhbXNcIiwgZGlyZWN0ZWQsIGxlbmd0aCwgayk7XG4gIC8vIGNvbnNvbGUubG9nKFwiLS0tLS0gc3RhZ2UtcHJlLjY6IGNhbGMgayBuZWlnaGJvciB1bml0cyAtLS0tLS0tXCIpO1xuICAvLyDorqHnrpfmr4/kuKroioLngrnnmoQgayDpgrvlhYPpm4blkIhcblxuICB2YXIga05laWdoYm9yVW5pdHMgPSBmaW5kS05laWdoYm9yVW5pdHMoZ3JhcGhEYXRhLCBzcG0sIG5vZGVMYWJlbFByb3AsIGspO1xuICB2YXIgcGF0dGVybktOZWlnaGJvclVuaXRzID0gZmluZEtOZWlnaGJvclVuaXRzKHBhdHRlcm4sIHBhdHRlcm5TcG0sIG5vZGVMYWJlbFByb3AsIGspOyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlMDogZ29pbmcgdG8gcHJvY2Vzc2luZyBncmFwaCBhbmQgZmluZCBpbnRlcnNlY3QgbmVpZ2hib3IgaW5kdWNlZCBncmFwaHMgLS0tLS0tLVwiXG4gIC8vICk7XG4gIC8vIGNvbnNvbGUubG9nKFwiLS0tLS0gc3RhZ2UwLjE6IGdvaW5nIHRvIHNlbGVjdCByYW5kb20gbm9kZSBwYWlycyAtLS0tLS0tXCIpO1xuICAvLyAtLS0tLS0tLSDnrKzkuIDmraXvvIzlpITnkIbljp/lm74gZ3JhcGhEYXRhLS0tLS0tLVxuICAvLyAxLjEuIOmaj+acuumAieaLqeacgOWkmiAxMDAg5Liq54K55a+577yM5ruh6Laz6Led56a75bCP5LqOIExlbmd0aCDlkowga1xuICAvLyDlvZMgZ3JhcGhEYXRhIOWwkeS6jiAyMCDkuKroioLngrnvvIzliJnkuI3og73mib7lh7ogMTAwIOS4queCueWvue+8jOWPquaJvuWHuuS4jeWkmuS6jiBuKG4tMSkvMiDkuKrngrnlr7lcblxuICB2YXIgbWF4Tm9kZVBhaXJOdW0gPSBNYXRoLm1pbigxMDAsIG5vZGVOdW0gKiAobm9kZU51bSAtIDEpIC8gMik7XG4gIHZhciBub2RlUGFpcnNNYXAgPSBmaW5kTm9kZVBhaXJzUmFuZG9tbHkoaywgbm9kZU51bSwgbWF4Tm9kZVBhaXJOdW0sIHBhdHRlcm5LTmVpZ2hib3JVbml0cywgc3BtKTsgLy8gY29uc29sZS5sb2coXG4gIC8vICAgXCItLS0tLSBzdGFnZTAuMjogZ29pbmcgdG8gY2FsY3VsYXRlIGludGVyc2VjdCBuZWlnaGJvciBpbmR1Y2VkIGdyYXBocyAtLS0tLS0tXCJcbiAgLy8gKTtcbiAgLy8gMS4yLiDnlJ/miJDkuIrpnaLoioLngrnlr7nnmoTnm7jlupTnm7jkuqTpgrvlsYXor7Hlr7zlrZDlm77jgILmoLzlvI/kuLogeydiZWdpbk5vZGVJZHgtZW5kTm9kZUlkeCc6IHtub2RlczogW10sIGVkZ2VzOiBbXX19XG5cbiAgdmFyIGludEdNYXAgPSBnZXRJbnRlcnNlY3ROZWlnaGJvckluZHVjZWRHcmFwaChub2RlUGFpcnNNYXAsIGtOZWlnaGJvclVuaXRzLCBncmFwaERhdGEpOyAvLyAxLjMuIOS9v+eUqCBnU3BhbiDnrpfms5XvvIhmcmVxdWVudCBncmFwaCBtaW5pbmfvvInorqHnrpcgSVNJbnRHIOeahOWJjSAxMCDkuKrpopHnjofmnIDpq5jnmoTlrZDnu5PmnoTvvIgzLTTmnaHovrnvvIlcblxuICB2YXIgdG9wID0gMTAsXG4gICAgICBtaW5TdXBwb3J0ID0gMSxcbiAgICAgIG1pbk5vZGVOdW0gPSAxLFxuICAgICAgbWF4Tm9kZU51bSA9IDQ7XG4gIHZhciBwYXJhbXMgPSB7XG4gICAgZ3JhcGhzOiBpbnRHTWFwLFxuICAgIG5vZGVMYWJlbFByb3A6IG5vZGVMYWJlbFByb3AsXG4gICAgZWRnZUxhYmVsUHJvcDogZWRnZUxhYmVsUHJvcCxcbiAgICBtaW5TdXBwb3J0OiBtaW5TdXBwb3J0LFxuICAgIG1pbk5vZGVOdW06IG1pbk5vZGVOdW0sXG4gICAgbWF4Tm9kZU51bTogbWF4Tm9kZU51bSxcbiAgICBkaXJlY3RlZDogZGlyZWN0ZWRcbiAgfTsgLy8gY29uc29sZS5sb2coXG4gIC8vICAgXCItLS0tLSBzdGFnZTE6IChnU3BhbikgZ29pbmcgdG8gZmluZCBmcmVxdWVudCBzdHJ1Y3R1cmUgZHNHIC0tLS0tLS1cIlxuICAvLyApO1xuICAvLyBjb25zb2xlLmxvZyhcIi0tLS0tIHN0YWdlMS4xOiBnb2luZyB0byBydW4gZ1NwYW4gLS0tLS0tLVwiKTtcbiAgLy8g5pqC5pe25YGH6K6+55Sf5oiQ55qEIHN1YiBzdHJ1Y3R1cmUg6YO95Y+q5pyJ5LiA5p2h6L65XG5cbiAgdmFyIGZyZVN0cnVjdHVyZXMgPSBnU3BhbihwYXJhbXMpLnNsaWNlKDAsIHRvcCk7IC8vIHN0cnVjdHVyZU51bSDlj6/og73lsI/kuo4gdG9wXG5cbiAgdmFyIHN0cnVjdHVyZU51bSA9IGZyZVN0cnVjdHVyZXMubGVuZ3RoOyAvLyAxLjQuIOiuoeeul+S4iui/sCAxMCDkuKrlrZDnu5PmnoTlnKggaW50R01hcCDkuK3mr4/kuKror7Hlr7zlrZDlm77nmoTljLnphY3kuKrmlbBcblxuICB2YXIgbWF0Y2hlZENvdW50TWFwID0gW107XG4gIGZyZVN0cnVjdHVyZXMuZm9yRWFjaChmdW5jdGlvbiAoc3RydWN0dXJlLCBpKSB7XG4gICAgbWF0Y2hlZENvdW50TWFwW2ldID0ge307XG4gICAgT2JqZWN0LmtleXMoaW50R01hcCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICB2YXIgZ3JhcGggPSBpbnRHTWFwW2tleV07XG4gICAgICB2YXIgc3ViU3RydWN0dXJlQ291bnQgPSBnZXRNYXRjaGVkQ291bnQoZ3JhcGgsIHN0cnVjdHVyZSwgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcCk7XG4gICAgICBtYXRjaGVkQ291bnRNYXBbaV1ba2V5XSA9IHN1YlN0cnVjdHVyZUNvdW50O1xuICAgIH0pO1xuICB9KTsgLy8gY29uc29sZS5sb2coXG4gIC8vICAgXCItLS0tLSBzdGFnZTEuMTogZ29pbmcgdG8gZmluZCB0aGUgbW9zdCByZXByZXNlbnQgc3RydWN1dHJlIC0tLS0tLS1cIlxuICAvLyApO1xuICAvLyAxLjUuIOWvueS6juavj+S4quWtkOe7k+aehO+8jOagueaNruWMuemFjeS4quaVsOS4uiBpbnRHTWFwIOS4reeahOivseWvvOWtkOWbvuWIhue7hO+8jOeUn+aIkCBzdHJ1Y3R1cmVOdW0g56eN5YiG57uEXG4gIC8vIOiuoeeul+avj+enjeWIhue7hOeahOexu+mXtOi3neWSjOexu+WGhemXtOi3ne+8jOaJvuWIsOexu+mXtOi3neacgOWkp+OAgeexu+WGhemXtOi3neacgOWwj+eahOS4gOenjeWIhue7hO+8jOi/meenjeWIhue7hOWvueW6lOeahOWtkOe7k+aehOiiq+mAieS4uuWUr+S4gOS7o+ihqOaAp+WtkOe7k+aehCBEUyhHKVxuXG4gIHZhciBfZCA9IGZpbmRSZXByZXNlbnRTdHJ1Y3R1cmUobWF0Y2hlZENvdW50TWFwLCBzdHJ1Y3R1cmVOdW0sIGZyZVN0cnVjdHVyZXMpLFxuICAgICAgZHNHID0gX2Quc3RydWN0dXJlLFxuICAgICAgbmRzRGlzdCA9IF9kLnN0cnVjdHVyZUNvdW50TWFwOyAvLyAtLS0tLS0tLSDnrKzkuozmraXvvIzljLnphY0tLS0tLS0tXG4gIC8vIDIuMSDmib7liLDku44gUSDkuK3nmoTkuIDkuKroioLngrnkvZzkuLrotbflp4voioLngrnvvIzlr7vmib4gRyDkuK3nmoTljLnphY3jgILov5nkuKrlhbblrp7oioLngrnnmoTmoIfnrb7lj6/ku6XlnKggRyDkuK3mib7liLDmnIDlpJrnmoToioLngrlcblxuXG4gIHZhciBiZWdpblBOb2RlID0gcGF0dGVybi5ub2Rlc1swXSxcbiAgICAgIGNhbmRpZGF0ZXMgPSBbXSxcbiAgICAgIGxhYmVsID0gKF9hID0gcGF0dGVybi5ub2Rlc1swXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hW25vZGVMYWJlbFByb3BdLFxuICAgICAgbWF4Tm9kZU51bVdpdGhTYW1lTGFiZWwgPSAtSW5maW5pdHk7XG4gIHBhdHRlcm4ubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgIHZhciBwTGFiZWwgPSBub2RlW25vZGVMYWJlbFByb3BdO1xuICAgIHZhciBub2Rlc1dpdGhTYW1lTGFiZWwgPSBub2RlTGFiZWxNYXBbcExhYmVsXTtcblxuICAgIGlmICgobm9kZXNXaXRoU2FtZUxhYmVsID09PSBudWxsIHx8IG5vZGVzV2l0aFNhbWVMYWJlbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogbm9kZXNXaXRoU2FtZUxhYmVsLmxlbmd0aCkgPiBtYXhOb2RlTnVtV2l0aFNhbWVMYWJlbCkge1xuICAgICAgbWF4Tm9kZU51bVdpdGhTYW1lTGFiZWwgPSBub2Rlc1dpdGhTYW1lTGFiZWwubGVuZ3RoO1xuICAgICAgY2FuZGlkYXRlcyA9IG5vZGVzV2l0aFNhbWVMYWJlbDtcbiAgICAgIGxhYmVsID0gcExhYmVsO1xuICAgICAgYmVnaW5QTm9kZSA9IG5vZGU7XG4gICAgfVxuICB9KTsgLy8gY29uc29sZS5sb2coXCItLS0tLSBzdGFnZTI6IGdvaW5nIHRvIGZpbmQgY2FuZGlkYXRlcyAtLS0tLS0tXCIpO1xuICAvLyDlhajlsYDnvJPlrZjvvIzpgb/lhY3ph43lpI3orqHnrpdcblxuICB2YXIgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcCA9IHt9OyAvLyBrZXkg5pivIGxhYmVs77yMdmFsdWUg5piv6K+lIGxhYmVsIOiKgueCueeahOacgOWwj+W6puaVsFxuXG4gIHZhciBwYXR0ZXJuSW50R3JhcGhNYXAgPSB7fSxcbiAgICAgIHBhdHRlcm5ORFNEaXN0ID0ge30sXG4gICAgICAvLyBrZXkg5Li6IG5vZGUuaWQtbm9kZS5pZFxuICBwYXR0ZXJuTkRTRGlzdE1hcCA9IHt9OyAvLyBrZXkg5Li6IG5vZGUuaWQtbGFiZWwy77yMdmFsdWUgbmRz6Led56a75YC85pWw57uE77yI5oyJ5LuO5aSn5Yiw5bCP5o6S5bqP77yM5peg6ZyA5YWz5b+D5YW35L2T5a+55bqU5ZOq5LiqIG5vZGUy77yJXG4gIC8vIDIuMi4yIOWvueS6jiBRIOS4reeahOWPpuS4gOS4quagh+etvueahCBrIOS4quiKgueCue+8jOiuoeeul+Wug+S7rOWIsCBub2RlIOeahOacgOefrei3r+W+hOS7peWPiiBORFMg6Led56a7XG5cbiAgdmFyIHBhdHRlcm5TcERpc3QgPSB7fTtcbiAgdmFyIHBhdHRlcm5TcERpc3RCYWNrID0ge307XG4gIE9iamVjdC5rZXlzKHBhdHRlcm5Ob2RlTGFiZWxNYXApLmZvckVhY2goZnVuY3Rpb24gKGxhYmVsMiwgaikge1xuICAgIHBhdHRlcm5TcERpc3RbbGFiZWwyXSA9IFtdO1xuXG4gICAgaWYgKGRpcmVjdGVkKSB7XG4gICAgICBwYXR0ZXJuU3BEaXN0QmFja1tsYWJlbDJdID0gW107XG4gICAgfVxuXG4gICAgdmFyIG1heERpc3QgPSAtSW5maW5pdHk7XG4gICAgdmFyIHBhdHRlcm5Ob2Rlc1dpdGhMYWJlbDIgPSBwYXR0ZXJuTm9kZUxhYmVsTWFwW2xhYmVsMl07XG4gICAgdmFyIHBhdHRlcm5Ob2RlUGFpck1hcCA9IHt9O1xuICAgIHBhdHRlcm5Ob2Rlc1dpdGhMYWJlbDIuZm9yRWFjaChmdW5jdGlvbiAobm9kZVdpdGhMYWJlbDIpIHtcbiAgICAgIHZhciBkaXN0ID0gcGF0dGVyblNwbU1hcFtcIlwiLmNvbmNhdChiZWdpblBOb2RlLmlkLCBcIi1cIikuY29uY2F0KG5vZGVXaXRoTGFiZWwyLmlkKV07XG4gICAgICBkaXN0ICYmIHBhdHRlcm5TcERpc3RbbGFiZWwyXS5wdXNoKGRpc3QpO1xuICAgICAgaWYgKG1heERpc3QgPCBkaXN0KSBtYXhEaXN0ID0gZGlzdDtcbiAgICAgIHBhdHRlcm5Ob2RlUGFpck1hcFtcIlwiLmNvbmNhdChiZWdpblBOb2RlLmlkLCBcIi1cIikuY29uY2F0KG5vZGVXaXRoTGFiZWwyLmlkKV0gPSB7XG4gICAgICAgIHN0YXJ0OiAwLFxuICAgICAgICBlbmQ6IHBhdHRlcm5Ob2RlTWFwW25vZGVXaXRoTGFiZWwyLmlkXS5pZHgsXG4gICAgICAgIGRpc3RhbmNlOiBkaXN0XG4gICAgICB9O1xuXG4gICAgICBpZiAoZGlyZWN0ZWQpIHtcbiAgICAgICAgdmFyIGRpc3RCYWNrID0gcGF0dGVyblNwbU1hcFtcIlwiLmNvbmNhdChub2RlV2l0aExhYmVsMi5pZCwgXCItXCIpLmNvbmNhdChiZWdpblBOb2RlLmlkKV07XG4gICAgICAgIGRpc3RCYWNrICYmIHBhdHRlcm5TcERpc3RCYWNrW2xhYmVsMl0ucHVzaChkaXN0QmFjayk7XG4gICAgICB9XG4gICAgfSk7IC8vIHNwRGlzdFtsYWJlbDJdIOaMieeFp+S7juWwj+WIsOWkp+aOkuW6j1xuXG4gICAgcGF0dGVyblNwRGlzdFtsYWJlbDJdID0gcGF0dGVyblNwRGlzdFtsYWJlbDJdLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBhIC0gYjtcbiAgICB9KTtcbiAgICBpZiAoZGlyZWN0ZWQpIHBhdHRlcm5TcERpc3RCYWNrW2xhYmVsMl0gPSBwYXR0ZXJuU3BEaXN0QmFja1tsYWJlbDJdLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBhIC0gYjtcbiAgICB9KTsgLy8g6K6h566XIFEg5Lit5omA5pyJIGxhYmVsMiDoioLngrnliLAgYmVnaW5QTm9kZSDnmoQgTkRTIOi3neemu1xuICAgIC8vIOaJgOaciSBsYWJlbDIg6IqC54K55YiwIGJlZ2luUE5vZGUg55qE6YK75bGF55u45Lqk6K+x5a+85a2Q5Zu+77yaXG4gICAgLy8ga2V5OiBub2RlMS5pZC1ub2RlMi5pZFxuXG4gICAgcGF0dGVybkludEdyYXBoTWFwID0gZ2V0SW50ZXJzZWN0TmVpZ2hib3JJbmR1Y2VkR3JhcGgocGF0dGVybk5vZGVQYWlyTWFwLCBwYXR0ZXJuS05laWdoYm9yVW5pdHMsIHBhdHRlcm4sIHBhdHRlcm5JbnRHcmFwaE1hcCk7IC8vIHBhdHRlcm4g5LitIGJlZ2luTm9kZSDliLDlvZPliY0gbGFiZWwyIOiKgueCuSDnmoQgTkRTIOi3neemu++8iOaVsOe7hO+8jOaXoOmcgOWFs+W/g+WFt+S9k+WvueW6lOWIsOWTquS4quiKgueCue+8iVxuXG4gICAgdmFyIGN1cnJlbnRQYXR0ZXJuTkRTRGlzdEFycmF5ID0gW107XG4gICAgT2JqZWN0LmtleXMocGF0dGVybk5vZGVQYWlyTWFwKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIGlmIChwYXR0ZXJuTkRTRGlzdFtrZXldKSB7XG4gICAgICAgIGN1cnJlbnRQYXR0ZXJuTkRTRGlzdEFycmF5LnB1c2gocGF0dGVybk5EU0Rpc3Rba2V5XSk7XG4gICAgICAgIHJldHVybjsgLy8g57yT5a2Y6L+H5YiZ5LiN6ZyA6KaB5YaN5qyh6K6h566XXG4gICAgICB9XG5cbiAgICAgIHZhciBwYXR0ZXJuSW50R3JhcGggPSBwYXR0ZXJuSW50R3JhcGhNYXBba2V5XTtcbiAgICAgIHBhdHRlcm5ORFNEaXN0W2tleV0gPSBnZXRNYXRjaGVkQ291bnQocGF0dGVybkludEdyYXBoLCBkc0csIG5vZGVMYWJlbFByb3AsIGVkZ2VMYWJlbFByb3ApO1xuICAgICAgY3VycmVudFBhdHRlcm5ORFNEaXN0QXJyYXkucHVzaChwYXR0ZXJuTkRTRGlzdFtrZXldKTtcbiAgICB9KTsgLy8g5qC55o2u5YC85Li6IGN1cnJlbnRQYXR0ZXJuTkRTRGlzdCDku47lpKfliLDlsI/mjpLluo9cblxuICAgIGN1cnJlbnRQYXR0ZXJuTkRTRGlzdEFycmF5ID0gY3VycmVudFBhdHRlcm5ORFNEaXN0QXJyYXkuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGIgLSBhO1xuICAgIH0pO1xuICAgIHBhdHRlcm5ORFNEaXN0TWFwW1wiXCIuY29uY2F0KGJlZ2luUE5vZGUuaWQsIFwiLVwiKS5jb25jYXQobGFiZWwyKV0gPSBjdXJyZW50UGF0dGVybk5EU0Rpc3RBcnJheTtcbiAgICBpZiAobGFiZWwyID09PSBsYWJlbCkgcmV0dXJuO1xuICAgIHZhciBjYW5kaWRhdGVzTnVtID0gKGNhbmRpZGF0ZXMgPT09IG51bGwgfHwgY2FuZGlkYXRlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2FuZGlkYXRlcy5sZW5ndGgpIHx8IDA7XG5cbiAgICB2YXIgX2xvb3BfNCA9IGZ1bmN0aW9uIF9sb29wXzQobSkge1xuICAgICAgdmFyIGNOb2RlID0gY2FuZGlkYXRlc1ttXTsgLy8gcHJ1bmUx77ya6IulIGNhbmRpZGF0ZXMg5Lit6IqC54K5IGNOb2RlIOeahCBrTmVpZ2hib3JVbml0cyDkuK3moIfnrb7kuLogbGFiZWwyIOeahOiKgueCueS4quaVsOWwkeS6jiBwYXR0ZXJuIOS4rSBsYWJlbDIg5Liq5pWw77yM5Yig5Y675a6DXG5cbiAgICAgIHZhciBncmFwaE5laWdoYm9yVW5pdCA9IGtOZWlnaGJvclVuaXRzW25vZGVNYXBbY05vZGUuaWRdLmlkeF07XG4gICAgICB2YXIgZ3JhcGhOZWlnaGJvclVuaXRDb3VudE1hcCA9IGdyYXBoTmVpZ2hib3JVbml0Lm5vZGVMYWJlbENvdW50TWFwW2xhYmVsMl07XG4gICAgICB2YXIgcGF0dGVybkxhYmVsMk51bSA9IHBhdHRlcm5Ob2RlTGFiZWxNYXBbbGFiZWwyXS5sZW5ndGg7XG5cbiAgICAgIGlmICghZ3JhcGhOZWlnaGJvclVuaXRDb3VudE1hcCB8fCBncmFwaE5laWdoYm9yVW5pdENvdW50TWFwLmNvdW50IDwgcGF0dGVybkxhYmVsMk51bSkge1xuICAgICAgICBjYW5kaWRhdGVzLnNwbGljZShtLCAxKTtcbiAgICAgICAgcmV0dXJuIFwiY29udGludWVcIjtcbiAgICAgIH0gLy8gcHJ1bmUy77ya6IulIGNhbmRpZGF0ZXMg5Lit6IqC54K5IGNOb2RlIOWIsCBrTmVpZ2hib3JVbml0cyDkuK3moIfnrb7kuLogbGFiZWwyIOeahOiKgueCueacgOefrei3r+W+hOWkp+S6jiBwYXR0ZXJuU3BEaXN0W2xhYmVsMl3vvIzliKDljrvlroNcbiAgICAgIC8vIChwcnVuZTIg6KeE5YiZ5Y2z77yaY2FuZGlkYXRlIOebuOWFs+eahOacgOefrei3r+W+hOeahOacgOWkpyBzcERpc3RbbGFiZWwyXS5sZW5ndGgg5Liq77yM5oyJ54Wn5aSn5bCP6aG65bqP5L6d5qyh5ZKMIHBhdHRlcm5TcERpc3RbbGFiZWwyXSDkuK3nmoTlgLzmr5TovoPvvIzlj6ropoHpgYfliLDkuIDkuKrmmK8gRyA+IFEg55qE77yM5bCx5Yig5Y676L+Z5LiqIGNhbmRpZGF0ZSlcblxuXG4gICAgICB2YXIgcHJ1bmUySW52YWxpZCA9IGZhbHNlO1xuXG4gICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHBhdHRlcm5MYWJlbDJOdW07IG4rKykge1xuICAgICAgICBpZiAoZ3JhcGhOZWlnaGJvclVuaXRDb3VudE1hcC5kaXN0c1tuXSA+IHBhdHRlcm5TcERpc3RbbGFiZWwyXVtuXSkge1xuICAgICAgICAgIHBydW5lMkludmFsaWQgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChwcnVuZTJJbnZhbGlkKSB7XG4gICAgICAgIGNhbmRpZGF0ZXMuc3BsaWNlKG0sIDEpO1xuICAgICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgICAgfSAvLyBwcnVuZTPvvJroi6UgY2FuZGlkYXRlcyDkuK3oioLngrkgY05vZGUg5YiwIGtOZWlnaGJvclVuaXRzIOS4reagh+etvuS4uiBsYWJlbDIg55qE6IqC54K5IE5EUyDot53nprvlsI/kuo4gcGF0dGVybk5EU0Rpc3RbYmVnaW5Ob2RlLmlkLWxhYmVsMl3vvIzliKDljrvlroNcbiAgICAgIC8vIFRPRE/vvJpwcnVuZTPvvIxjdXJyZW50UGF0dGVybk5EU0Rpc3RBcnJheSDkuI4gY3VycmVudE5EU0Rpc3Qg55qE5q+U6L6DXG4gICAgICAvLyDorqHnrpcgRyDkuK3miYDmnIkgbGFiZWwyIOiKgueCueWIsCBjTm9kZSDnmoQgTkRTIOi3neemu1xuICAgICAgLy8g5omA5pyJIGxhYmVsMiDoioLngrnliLAgY05vZGUg55qE6YK75bGF55u45Lqk6K+x5a+85a2Q5Zu+77yaXG5cblxuICAgICAgdmFyIGNOb2RlUGFpck1hcCA9IHt9O1xuICAgICAgZ3JhcGhOZWlnaGJvclVuaXQubmVpZ2hib3JzLmZvckVhY2goZnVuY3Rpb24gKG5laWdoYm9yTm9kZSkge1xuICAgICAgICB2YXIgZGlzdCA9IHNwbU1hcFtcIlwiLmNvbmNhdChjTm9kZS5pZCwgXCItXCIpLmNvbmNhdChuZWlnaGJvck5vZGUuaWQpXTtcbiAgICAgICAgY05vZGVQYWlyTWFwW1wiXCIuY29uY2F0KGNOb2RlLmlkLCBcIi1cIikuY29uY2F0KG5laWdoYm9yTm9kZS5pZCldID0ge1xuICAgICAgICAgIHN0YXJ0OiBub2RlTWFwW2NOb2RlLmlkXS5pZHgsXG4gICAgICAgICAgZW5kOiBub2RlTWFwW25laWdoYm9yTm9kZS5pZF0uaWR4LFxuICAgICAgICAgIGRpc3RhbmNlOiBkaXN0XG4gICAgICAgIH07XG4gICAgICB9KTsgLy8g5pu05pawIGludEdNYXBcblxuICAgICAgaW50R01hcCA9IGdldEludGVyc2VjdE5laWdoYm9ySW5kdWNlZEdyYXBoKGNOb2RlUGFpck1hcCwga05laWdoYm9yVW5pdHMsIGdyYXBoRGF0YSwgaW50R01hcCk7IC8vIGNhbmRpZGF0ZSDliLDlroPlkajlm7QgbGFiZWwyIOiKgueCueeahCBORFMg6Led56a7LCBrZXkg5pivIG5vZGUuaWQtbm9kZS5pZFxuXG4gICAgICB2YXIgY3VycmVudE5EU0Rpc3RBcnJheSA9IFtdO1xuICAgICAgT2JqZWN0LmtleXMoY05vZGVQYWlyTWFwKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgaWYgKG5kc0Rpc3Rba2V5XSkge1xuICAgICAgICAgIGN1cnJlbnRORFNEaXN0QXJyYXkucHVzaChuZHNEaXN0W2tleV0pO1xuICAgICAgICAgIHJldHVybjsgLy8g57yT5a2Y6L+H5YiZ5LiN6ZyA6KaB5YaN5qyh6K6h566XXG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaW50R3JhcGggPSBpbnRHTWFwW2tleV07XG4gICAgICAgIG5kc0Rpc3Rba2V5XSA9IGdldE1hdGNoZWRDb3VudChpbnRHcmFwaCwgZHNHLCBub2RlTGFiZWxQcm9wLCBlZGdlTGFiZWxQcm9wKTtcbiAgICAgICAgY3VycmVudE5EU0Rpc3RBcnJheS5wdXNoKG5kc0Rpc3Rba2V5XSk7XG4gICAgICB9KTsgLy8g5qC55o2u5YC85Li6IGN1cnJlbnRORFNEaXN0QXJyYXkg5LuO5aSn5Yiw5bCP5o6S5bqPXG5cbiAgICAgIGN1cnJlbnRORFNEaXN0QXJyYXkgPSBjdXJyZW50TkRTRGlzdEFycmF5LnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGIgLSBhO1xuICAgICAgfSk7XG4gICAgICB2YXIgcHJ1bmUzSW52YWxpZCA9IGZhbHNlO1xuXG4gICAgICBmb3IgKHZhciBuID0gMDsgbiA8IHBhdHRlcm5MYWJlbDJOdW07IG4rKykge1xuICAgICAgICBpZiAoY3VycmVudE5EU0Rpc3RBcnJheVtuXSA8IGN1cnJlbnRQYXR0ZXJuTkRTRGlzdEFycmF5W25dKSB7XG4gICAgICAgICAgcHJ1bmUzSW52YWxpZCA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHBydW5lM0ludmFsaWQpIHtcbiAgICAgICAgY2FuZGlkYXRlcy5zcGxpY2UobSwgMSk7XG4gICAgICAgIHJldHVybiBcImNvbnRpbnVlXCI7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGZvciAodmFyIG0gPSBjYW5kaWRhdGVzTnVtIC0gMTsgbSA+PSAwOyBtLS0pIHtcbiAgICAgIF9sb29wXzQobSk7XG4gICAgfVxuICB9KTtcbiAgdmFyIGNhbmRpZGF0ZUdyYXBocyA9IFtdOyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlMzogZ29pbmcgdG8gc3BsaWNlIG5laWdoYm9ycyBmb3IgZWFjaCBjYW5kaWRhdGUgZ3JhcGggLS0tLS0tLVwiXG4gIC8vICk7XG4gIC8vIGNhbmRpZGF0ZXMg57uP6L+H562b6YCJ5ZCO77yM5Lul5q+P5LiqIGNhbmRpZGF0ZSDkuLrkuK3lv4PvvIznlJ/miJAgTGVuZ3RoLW5laWdoYm9yIOeahOmCu+WxheivseWvvOWtkOWbvlxuICAvLyDlubblnKjor7Hlr7zlrZDlm77kuK3ljrvpmaTkuI3lj6/og73lnKggUSDkuIrmib7liLDljLnphY3nmoTngrnvvJrlnKggUSDkuIrkuI3lrZjlnKjnmoQgbGFiZWzvvIzlhbbku5YgbGFiZWwg5YiwIGNhbmRpZGF0ZSDnmoTmnIDlpKfmnIDnn63ot53nprvnrKblkIggUeOAgU5EUyDot53nprvnrKblkIggUVxuXG4gIGNhbmRpZGF0ZXMgPT09IG51bGwgfHwgY2FuZGlkYXRlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2FuZGlkYXRlcy5mb3JFYWNoKGZ1bmN0aW9uIChjYW5kaWRhdGUpIHtcbiAgICB2YXIgbm9kZUlkeCA9IG5vZGVNYXBbY2FuZGlkYXRlLmlkXS5pZHg7XG4gICAgdmFyIGxlbmd0aE5laWdoYm9yVW5pdCA9IGZpbmRLTmVpZ2hib3JVbml0KGdyYXBoRGF0YS5ub2Rlcywgc3BtW25vZGVJZHhdLCBub2RlSWR4LCBub2RlTGFiZWxQcm9wLCBsZW5ndGgpO1xuICAgIHZhciBuZWlnaGJvck5vZGVzID0gbGVuZ3RoTmVpZ2hib3JVbml0Lm5laWdoYm9yczsgLy8g5Yig6Zmk5LiN5Y+v6IO95om+5Yiw5Yy56YWN55qE6YK75bGF54K5XG5cbiAgICB2YXIgbmVpZ2hib3JOdW0gPSBuZWlnaGJvck5vZGVzLmxlbmd0aDtcbiAgICB2YXIgdW5tYXRjaGVkID0gZmFsc2U7XG5cbiAgICBmb3IgKHZhciBpID0gbmVpZ2hib3JOdW0gLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgLy8g5aaC5p6c6YCa6L+H6KOB5Ymq77yM56ym5ZCI5p2h5Lu255qE6IqC54K55pWw6YeP5bey6L+H5bCR77yM6K+05piO5LiN6IO95Yy56YWN6L+Z5LiqIGNhbmRpZGF0ZSDnm7jlhbPnmoTlm75cbiAgICAgIGlmIChuZWlnaGJvck5vZGVzLmxlbmd0aCArIDEgPCBwYXR0ZXJuLm5vZGVzLmxlbmd0aCkge1xuICAgICAgICB1bm1hdGNoZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBuZWlnaGJvck5vZGUgPSBuZWlnaGJvck5vZGVzW2ldO1xuICAgICAgdmFyIG5laWdoYm9yTGFiZWwgPSBuZWlnaGJvck5vZGVbbm9kZUxhYmVsUHJvcF07IC8vIHBydW5lMTog6Iul6K+l6YK75bGF54K555qEIGxhYmVsIOS4jeWtmOWcqOS6jiBwYXR0ZXJuIOS4re+8jOenu+mZpOi/meS4queCuVxuXG4gICAgICBpZiAoIXBhdHRlcm5Ob2RlTGFiZWxNYXBbbmVpZ2hib3JMYWJlbF0gfHwgIXBhdHRlcm5Ob2RlTGFiZWxNYXBbbmVpZ2hib3JMYWJlbF0ubGVuZ3RoKSB7XG4gICAgICAgIG5laWdoYm9yTm9kZXMuc3BsaWNlKGksIDEpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gLy8gcHJ1bmUyOiDoi6Xor6XpgrvlsYXngrnliLAgY2FuZGlkYXRlIOeahOacgOefrei3r+W+hOavlOWSjOWug+acieebuOWQjCBsYWJlbCDnmoToioLngrnliLAgYmVnaW5QTm9kZSDnmoTmnIDlpKfmnIDnn63ot6/lvoTplb/luqbplb/vvIznp7vpmaTov5nkuKrngrlcbiAgICAgIC8vIHBydW5lMi4xOiDlpoLmnpzmsqHmnInov5nkuKrmoIfnrb7liLAgYmVnaW5QTm9kZSDnmoTot53nprvorrDlvZXvvIzor7TmmI4gcGF0dGVybiDkuIrvvIjlj6/og70gYmVnaW5QTm9kZSDmmK/ov5nkuKogbGFiZWzvvInmsqHmnInlhbbku5bov5nkuKogbGFiZWwg55qE6IqC54K5XG5cblxuICAgICAgaWYgKCFwYXR0ZXJuU3BEaXN0W25laWdoYm9yTGFiZWxdIHx8ICFwYXR0ZXJuU3BEaXN0W25laWdoYm9yTGFiZWxdLmxlbmd0aCkge1xuICAgICAgICBuZWlnaGJvck5vZGVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChjYW5kaWRhdGUuaWQsIFwiLVwiKS5jb25jYXQobmVpZ2hib3JOb2RlLmlkKTsgLy8gcHJ1bmUyLjJcblxuICAgICAgdmFyIGRpc3RUb0NhbmRpZGF0ZSA9IHNwbU1hcFtrZXldO1xuICAgICAgdmFyIGlkeCA9IHBhdHRlcm5TcERpc3RbbmVpZ2hib3JMYWJlbF0ubGVuZ3RoIC0gMTtcbiAgICAgIHZhciBtYXhEaXN0V2l0aExhYmVsSW5QYXR0ZXJuID0gcGF0dGVyblNwRGlzdFtuZWlnaGJvckxhYmVsXVtpZHhdOyAvLyBwYXR0ZXJuU3BEaXN0W25laWdoYm9yTGFiZWxdIOW3sue7j+aMieeFp+S7juWwj+WIsOWkp+aOkuW6j1xuXG4gICAgICBpZiAoZGlzdFRvQ2FuZGlkYXRlID4gbWF4RGlzdFdpdGhMYWJlbEluUGF0dGVybikge1xuICAgICAgICBuZWlnaGJvck5vZGVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChkaXJlY3RlZCkge1xuICAgICAgICB2YXIga2V5QmFjayA9IFwiXCIuY29uY2F0KG5laWdoYm9yTm9kZS5pZCwgXCItXCIpLmNvbmNhdChjYW5kaWRhdGUuaWQpO1xuICAgICAgICB2YXIgZGlzdEZyb21DYW5kaWRhdGUgPSBzcG1NYXBba2V5QmFja107XG4gICAgICAgIGlkeCA9IHBhdHRlcm5TcERpc3RCYWNrW25laWdoYm9yTGFiZWxdLmxlbmd0aCAtIDE7XG4gICAgICAgIHZhciBtYXhCYWNrRGlzdFdpdGhMYWJlbEluUGF0dGVybiA9IHBhdHRlcm5TcERpc3RCYWNrW25laWdoYm9yTGFiZWxdW2lkeF07XG5cbiAgICAgICAgaWYgKGRpc3RGcm9tQ2FuZGlkYXRlID4gbWF4QmFja0Rpc3RXaXRoTGFiZWxJblBhdHRlcm4pIHtcbiAgICAgICAgICBuZWlnaGJvck5vZGVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBwcnVuZTM6IOiLpeivpemCu+WxheeCueWIsCBjYW5kaWRhdGUg55qEIE5EUyDot53nprvmr5TlkozlroPmnInnm7jlkIwgbGFiZWwg55qE6IqC54K55YiwIGJlZ2luUE5vZGUg55qE5pyA5bCPIE5EUyDot53nprvlsI/vvIznp7vpmaTov5nkuKrngrlcblxuXG4gICAgICB2YXIgbmRzVG9DYW5kaWRhdGUgPSBuZHNEaXN0W2tleV0gPyBuZHNEaXN0W2tleV0gOiBnZXRORFNEaXN0KGdyYXBoRGF0YSwgY2FuZGlkYXRlLCBuZWlnaGJvck5vZGUsIG5vZGVNYXAsIGRpc3RUb0NhbmRpZGF0ZSwga05laWdoYm9yVW5pdHMsIGRzRywgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcCwgbmRzRGlzdCwgaW50R01hcCk7XG4gICAgICB2YXIgcGF0dGVybktleSA9IFwiXCIuY29uY2F0KGJlZ2luUE5vZGUuaWQsIFwiLVwiKS5jb25jYXQobmVpZ2hib3JMYWJlbCk7XG4gICAgICB2YXIgbWluTmRzV2l0aExhYmVsSW5QYXR0ZXJuID0gcGF0dGVybk5EU0Rpc3RNYXBbcGF0dGVybktleV1bcGF0dGVybk5EU0Rpc3RNYXBbcGF0dGVybktleV0ubGVuZ3RoIC0gMV07IC8vIHBhdHRlcm5ORFNEaXN0W2tleV0g5LiA5a6a5a2Y5ZyoXG5cbiAgICAgIGlmIChuZHNUb0NhbmRpZGF0ZSA8IG1pbk5kc1dpdGhMYWJlbEluUGF0dGVybikge1xuICAgICAgICBuZWlnaGJvck5vZGVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IC8vIHBydW5lNDog6Iul6K+l6YK75bGF54K555qE5bqm5pWw5bCP5LqOIHBhdHRlcm4g5ZCMIGxhYmVsIOiKgueCueacgOWwj+W6puaVsO+8jOWIoOWOu+ivpeeCuVxuXG5cbiAgICAgIHZhciBfYSA9IHN0YXNoUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcChtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlTWFwLCBuZWlnaGJvckxhYmVsLCBwYXR0ZXJuTm9kZU1hcCwgcGF0dGVybk5vZGVMYWJlbE1hcCksXG4gICAgICAgICAgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSA9IF9hLm1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWUsXG4gICAgICAgICAgbWluUGF0dGVybk5vZGVMYWJlbEluRGVncmVlID0gX2EubWluUGF0dGVybk5vZGVMYWJlbEluRGVncmVlLFxuICAgICAgICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxPdXREZWdyZWUgPSBfYS5taW5QYXR0ZXJuTm9kZUxhYmVsT3V0RGVncmVlO1xuXG4gICAgICBpZiAobm9kZU1hcFtuZWlnaGJvck5vZGUuaWRdLmRlZ3JlZSA8IG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWUpIHtcbiAgICAgICAgbmVpZ2hib3JOb2Rlcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgIH0gLy8g6IqC54K55Zyo5Liq5pWw5LiK56ym5ZCI5Yy56YWN77yI5LiN5bCR5LqOIHBhdHRlcm4g55qE6IqC54K55Liq5pWw77yJ77yM546w5Zyo562b6YCJ55u45YWz6L65XG5cblxuICAgIGlmICghdW5tYXRjaGVkKSB7XG4gICAgICBjYW5kaWRhdGVHcmFwaHMucHVzaCh7XG4gICAgICAgIG5vZGVzOiBbY2FuZGlkYXRlXS5jb25jYXQobmVpZ2hib3JOb2RlcylcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7IC8vIGNvbnNvbGUubG9nKFxuICAvLyAgIFwiLS0tLS0gc3RhZ2U0OiBnb2luZyB0byBzcGxpY2UgZWRnZXMgYW5kIG5laWdoYm9ycyBmb3IgZWFjaCBjYW5kaWRhdGUgZ3JhcGggLS0tLS0tLVwiXG4gIC8vICk7XG5cbiAgdmFyIHVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlID0gZGlqa3N0cmEocGF0dGVybiwgYmVnaW5QTm9kZS5pZCwgZmFsc2UpLmxlbmd0aDtcbiAgdmFyIHVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXAgPSB7fTtcblxuICBpZiAoZGlyZWN0ZWQpIHtcbiAgICBPYmplY3Qua2V5cyh1bmRpcmVjdGVkTGVuZ3Roc1RvQmVnaW5QTm9kZSkuZm9yRWFjaChmdW5jdGlvbiAobm9kZUlkKSB7XG4gICAgICB2YXIgbm9kZUxhYmVsID0gcGF0dGVybk5vZGVNYXBbbm9kZUlkXS5ub2RlW25vZGVMYWJlbFByb3BdO1xuICAgICAgaWYgKCF1bmRpcmVjdGVkTGVuZ3Roc1RvQmVnaW5QTm9kZUxhYmVsTWFwW25vZGVMYWJlbF0pIHVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXBbbm9kZUxhYmVsXSA9IFt1bmRpcmVjdGVkTGVuZ3Roc1RvQmVnaW5QTm9kZVtub2RlSWRdXTtlbHNlIHVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXBbbm9kZUxhYmVsXS5wdXNoKHVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlW25vZGVJZF0pO1xuICAgIH0pO1xuICAgIE9iamVjdC5rZXlzKHVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXApLmZvckVhY2goZnVuY3Rpb24gKHBMYWJlbCkge1xuICAgICAgdW5kaXJlY3RlZExlbmd0aHNUb0JlZ2luUE5vZGVMYWJlbE1hcFtwTGFiZWxdLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGEgLSBiO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgdW5kaXJlY3RlZExlbmd0aHNUb0JlZ2luUE5vZGVMYWJlbE1hcCA9IHBhdHRlcm5TcERpc3Q7XG4gIH0gLy8g546w5ZyoIGNhbmRpZGF0ZUdyYXBocyDph4zpnaLlj6rmnInoioLngrnvvIzov5vooYzovrnnmoTnrZvpgIlcblxuXG4gIHZhciBjYW5kaWRhdGVHcmFwaE51bSA9IGNhbmRpZGF0ZUdyYXBocy5sZW5ndGg7XG5cbiAgdmFyIF9sb29wXzIgPSBmdW5jdGlvbiBfbG9vcF8yKGkpIHtcbiAgICB2YXIgY2FuZGlkYXRlR3JhcGggPSBjYW5kaWRhdGVHcmFwaHNbaV07XG4gICAgdmFyIGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZUdyYXBoLm5vZGVzWzBdO1xuICAgIHZhciBjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcCA9IHt9O1xuICAgIHZhciBjYW5kaWRhdGVOb2RlTWFwID0ge307XG4gICAgY2FuZGlkYXRlR3JhcGgubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgcSkge1xuICAgICAgY2FuZGlkYXRlTm9kZU1hcFtub2RlLmlkXSA9IHtcbiAgICAgICAgaWR4OiBxLFxuICAgICAgICBub2RlOiBub2RlLFxuICAgICAgICBkZWdyZWU6IDAsXG4gICAgICAgIGluRGVncmVlOiAwLFxuICAgICAgICBvdXREZWdyZWU6IDBcbiAgICAgIH07XG4gICAgICB2YXIgY05vZGVMYWJlbCA9IG5vZGVbbm9kZUxhYmVsUHJvcF07XG4gICAgICBpZiAoIWNhbmRpZGF0ZU5vZGVMYWJlbENvdW50TWFwW2NOb2RlTGFiZWxdKSBjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcFtjTm9kZUxhYmVsXSA9IDE7ZWxzZSBjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcFtjTm9kZUxhYmVsXSsrO1xuICAgIH0pOyAvLyDmoLnmja4gY2FuZGlkYXRlIOWSjCBuZWlnaGJvck5vZGVzIOS4reeahOiKgueCueeUn+aIkCBHIOeahOivseWvvOWtkOWbvlxuICAgIC8vIOWNs++8jOWwhiBncmFwaERhdGEg5LiK5Lik56uv6YO95ZyoIGNhbmRpZGF0ZUdyYXBoLm5vZGVzIOS4reeahOi+ueaUvuWFpSBjYW5kaWRhdGVFZGdlc1xuXG4gICAgdmFyIGNhbmRpZGF0ZUVkZ2VzID0gW107XG4gICAgdmFyIGVkZ2VMYWJlbENvdW50TWFwID0ge307XG4gICAgZ3JhcGhEYXRhLmVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIGlmIChjYW5kaWRhdGVOb2RlTWFwW2VkZ2Uuc291cmNlXSAmJiBjYW5kaWRhdGVOb2RlTWFwW2VkZ2UudGFyZ2V0XSkge1xuICAgICAgICBjYW5kaWRhdGVFZGdlcy5wdXNoKGVkZ2UpO1xuICAgICAgICBpZiAoIWVkZ2VMYWJlbENvdW50TWFwW2VkZ2VbZWRnZUxhYmVsUHJvcF1dKSBlZGdlTGFiZWxDb3VudE1hcFtlZGdlW2VkZ2VMYWJlbFByb3BdXSA9IDE7ZWxzZSBlZGdlTGFiZWxDb3VudE1hcFtlZGdlW2VkZ2VMYWJlbFByb3BdXSsrO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2VkZ2Uuc291cmNlXS5kZWdyZWUrKztcbiAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnRhcmdldF0uZGVncmVlKys7XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS5zb3VyY2VdLm91dERlZ3JlZSsrO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2VkZ2UudGFyZ2V0XS5pbkRlZ3JlZSsrO1xuICAgICAgfVxuICAgIH0pOyAvLyBwcnVuZe+8muiLpeacieS4gOS4qiBlZGdlTGFiZWwg5ZyoIGNhbmRpZGF0ZUdyYXBoIOS4iueahOS4quaVsOWwkeS6jiBwYXR0ZXJu77yM5Y676Zmk6K+l5Zu+XG5cbiAgICB2YXIgcGF0dGVuckVkZ2VMYWJlbE51bSA9IE9iamVjdC5rZXlzKHBhdHRlcm5FZGdlTGFiZWxNYXApLmxlbmd0aDtcbiAgICB2YXIgcHJ1bmVkQnlFZGdlTGFiZWwgPSBmYWxzZTtcblxuICAgIGZvciAodmFyIGUgPSAwOyBlIDwgcGF0dGVuckVkZ2VMYWJlbE51bTsgZSsrKSB7XG4gICAgICB2YXIgbGFiZWxfMSA9IE9iamVjdC5rZXlzKHBhdHRlcm5FZGdlTGFiZWxNYXApW2VdO1xuXG4gICAgICBpZiAoIWVkZ2VMYWJlbENvdW50TWFwW2xhYmVsXzFdIHx8IGVkZ2VMYWJlbENvdW50TWFwW2xhYmVsXzFdIDwgcGF0dGVybkVkZ2VMYWJlbE1hcFtsYWJlbF8xXS5sZW5ndGgpIHtcbiAgICAgICAgcHJ1bmVkQnlFZGdlTGFiZWwgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHJ1bmVkQnlFZGdlTGFiZWwpIHtcbiAgICAgIGNhbmRpZGF0ZUdyYXBocy5zcGxpY2UoaSwgMSk7XG4gICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgIH0gLy8g6YGN5Y6GIGNhbmRpZGF0ZUVkZ2Vz77yM6L+b6KGM6L6555qE562b6YCJXG5cblxuICAgIHZhciBjYW5kaWRhdGVFZGdlTnVtID0gY2FuZGlkYXRlRWRnZXMubGVuZ3RoOyAvLyBwcnVuZe+8muiLpei+ueaVsOi/h+Wwke+8jOWOu+mZpOivpeWbvlxuXG4gICAgaWYgKGNhbmRpZGF0ZUVkZ2VOdW0gPCBwYXR0ZXJuLmVkZ2VzLmxlbmd0aCkge1xuICAgICAgY2FuZGlkYXRlR3JhcGhzLnNwbGljZShpLCAxKTtcbiAgICAgIHJldHVybiBcImJyZWFrXCI7XG4gICAgfVxuXG4gICAgdmFyIGNhbmRpZGF0ZUdyYXBoSW52YWxpZCA9IGZhbHNlO1xuXG4gICAgdmFyIF9sb29wXzUgPSBmdW5jdGlvbiBfbG9vcF81KGUpIHtcbiAgICAgIHZhciBlZGdlID0gY2FuZGlkYXRlRWRnZXNbZV07XG4gICAgICB2YXIgZWRnZUxhYmVsID0gZWRnZVtlZGdlTGFiZWxQcm9wXTtcbiAgICAgIHZhciBwYXR0ZXJuRWRnZXNXaXRoTGFiZWwgPSBwYXR0ZXJuRWRnZUxhYmVsTWFwW2VkZ2VMYWJlbF07IC8vIHBydW5lIDE6IOiLpei+ueeahCBsYWJlbCDkuI3lrZjlnKjkuo4gcGF0dGVybiDovrkgbGFiZWwg5Lit77yM5Y676Zmk6K+l6L65XG5cbiAgICAgIGlmICghcGF0dGVybkVkZ2VzV2l0aExhYmVsIHx8ICFwYXR0ZXJuRWRnZXNXaXRoTGFiZWwubGVuZ3RoKSB7XG4gICAgICAgIGVkZ2VMYWJlbENvdW50TWFwW2VkZ2VMYWJlbF0tLTsgLy8g6Iul6L+Z5LiqIGxhYmVsIOeahCBjb3VudCDlh4/lsJHkuYvlkI7vvIzor6UgbGFiZWwg55qE6L655pWw5LiN6Laz77yM5Y676Zmk6K+l5Zu+XG5cbiAgICAgICAgaWYgKHBhdHRlcm5FZGdlc1dpdGhMYWJlbCAmJiBlZGdlTGFiZWxDb3VudE1hcFtlZGdlTGFiZWxdIDwgcGF0dGVybkVkZ2VzV2l0aExhYmVsLmxlbmd0aCkge1xuICAgICAgICAgIGNhbmRpZGF0ZUdyYXBoSW52YWxpZCA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuIFwiYnJlYWtcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNhbmRpZGF0ZUVkZ2VzLnNwbGljZShlLCAxKTtcbiAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnNvdXJjZV0uZGVncmVlLS07XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS50YXJnZXRdLmRlZ3JlZS0tO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2VkZ2Uuc291cmNlXS5vdXREZWdyZWUtLTtcbiAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnRhcmdldF0uaW5EZWdyZWUtLTtcbiAgICAgICAgcmV0dXJuIFwiY29udGludWVcIjtcbiAgICAgIH0gLy8gcHJ1bmUgMjog6Iul6L6555qEIGxhYmVsICvkuKTnq68gbGFiZWwg55qE5LiJ5YWD57uE5YWz57O75LiN6IO95ZyoIHBhdHRlcm4g5Lit5om+5Yiw77yM5Y676Zmk6K+l6L65XG5cblxuICAgICAgdmFyIHNvdXJjZUxhYmVsID0gY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnNvdXJjZV0ubm9kZVtub2RlTGFiZWxQcm9wXTtcbiAgICAgIHZhciB0YXJnZXRMYWJlbCA9IGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS50YXJnZXRdLm5vZGVbbm9kZUxhYmVsUHJvcF07XG4gICAgICB2YXIgZWRnZU1hdGNoZWQgPSBmYWxzZTtcbiAgICAgIHBhdHRlcm5FZGdlc1dpdGhMYWJlbC5mb3JFYWNoKGZ1bmN0aW9uIChwYXR0ZXJuRWRnZSkge1xuICAgICAgICB2YXIgcGF0dGVyblNvdXJjZSA9IHBhdHRlcm5Ob2RlTWFwW3BhdHRlcm5FZGdlLnNvdXJjZV0ubm9kZTtcbiAgICAgICAgdmFyIHBhdHRlcm5UYXJnZXQgPSBwYXR0ZXJuTm9kZU1hcFtwYXR0ZXJuRWRnZS50YXJnZXRdLm5vZGU7XG4gICAgICAgIGlmIChwYXR0ZXJuU291cmNlW25vZGVMYWJlbFByb3BdID09PSBzb3VyY2VMYWJlbCAmJiBwYXR0ZXJuVGFyZ2V0W25vZGVMYWJlbFByb3BdID09PSB0YXJnZXRMYWJlbCkgZWRnZU1hdGNoZWQgPSB0cnVlO1xuICAgICAgICBpZiAoIWRpcmVjdGVkICYmIHBhdHRlcm5Tb3VyY2Vbbm9kZUxhYmVsUHJvcF0gPT09IHRhcmdldExhYmVsICYmIHBhdHRlcm5UYXJnZXRbbm9kZUxhYmVsUHJvcF0gPT09IHNvdXJjZUxhYmVsKSBlZGdlTWF0Y2hlZCA9IHRydWU7XG4gICAgICB9KTtcblxuICAgICAgaWYgKCFlZGdlTWF0Y2hlZCkge1xuICAgICAgICBlZGdlTGFiZWxDb3VudE1hcFtlZGdlTGFiZWxdLS07IC8vIOiLpei/meS4qiBsYWJlbCDnmoQgY291bnQg5YeP5bCR5LmL5ZCO77yM6K+lIGxhYmVsIOeahOi+ueaVsOS4jei2s++8jOWOu+mZpOivpeWbvlxuXG4gICAgICAgIGlmIChwYXR0ZXJuRWRnZXNXaXRoTGFiZWwgJiYgZWRnZUxhYmVsQ291bnRNYXBbZWRnZUxhYmVsXSA8IHBhdHRlcm5FZGdlc1dpdGhMYWJlbC5sZW5ndGgpIHtcbiAgICAgICAgICBjYW5kaWRhdGVHcmFwaEludmFsaWQgPSB0cnVlO1xuICAgICAgICAgIHJldHVybiBcImJyZWFrXCI7XG4gICAgICAgIH1cblxuICAgICAgICBjYW5kaWRhdGVFZGdlcy5zcGxpY2UoZSwgMSk7XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS5zb3VyY2VdLmRlZ3JlZS0tO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2VkZ2UudGFyZ2V0XS5kZWdyZWUtLTtcbiAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnNvdXJjZV0ub3V0RGVncmVlLS07XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS50YXJnZXRdLmluRGVncmVlLS07XG4gICAgICAgIHJldHVybiBcImNvbnRpbnVlXCI7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGZvciAodmFyIGUgPSBjYW5kaWRhdGVFZGdlTnVtIC0gMTsgZSA+PSAwOyBlLS0pIHtcbiAgICAgIHZhciBzdGF0ZV8yID0gX2xvb3BfNShlKTtcblxuICAgICAgaWYgKHN0YXRlXzIgPT09IFwiYnJlYWtcIikgYnJlYWs7XG4gICAgfSAvLyBwcnVuZTI6IOWIoOmZpOi+ueeahOi/h+eoi+S4re+8jOWPkeeOsOi+ueaVsOi/h+WwkS/ovrkgbGFiZWwg5pWw6L+H5bCR5pe277yM5Y676Zmk6K+l5Zu+XG5cblxuICAgIGlmIChjYW5kaWRhdGVHcmFwaEludmFsaWQpIHtcbiAgICAgIGNhbmRpZGF0ZUdyYXBocy5zcGxpY2UoaSwgMSk7XG4gICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgIH1cblxuICAgIGNhbmRpZGF0ZUdyYXBoLmVkZ2VzID0gY2FuZGlkYXRlRWRnZXM7XG4gICAgdmFyIGxlbmd0aHNUb0NhbmRpZGF0ZSA9IGRpamtzdHJhKGNhbmRpZGF0ZUdyYXBoLCBjYW5kaWRhdGVHcmFwaC5ub2Rlc1swXS5pZCwgZmFsc2UpLmxlbmd0aDtcbiAgICBPYmplY3Qua2V5cyhsZW5ndGhzVG9DYW5kaWRhdGUpLnJldmVyc2UoKS5mb3JFYWNoKGZ1bmN0aW9uICh0YXJnZXRJZCkge1xuICAgICAgaWYgKHRhcmdldElkID09PSBjYW5kaWRhdGVHcmFwaC5ub2Rlc1swXS5pZCB8fCBjYW5kaWRhdGVHcmFwaEludmFsaWQpIHJldHVybjsgLy8gcHJ1bmU0OiDpgJrov4fkuIrov7Doo4HliarvvIzlj6/og73lr7zoh7Tor6XpgrvlsYXlrZDlm77lj5jkuLrkuI3ov57pgJrjgILoo4Hliarmjonnm67liY3lnKjov5nkuKrpgrvlsYXlrZDlm77kuK3lkowgY2FuZGlkYXRl77yI56ys5LiA5Liq6IqC54K577yJ5LiN6L+e6YCa55qE6IqC54K5XG5cbiAgICAgIGlmIChsZW5ndGhzVG9DYW5kaWRhdGVbdGFyZ2V0SWRdID09PSBJbmZpbml0eSkge1xuICAgICAgICB2YXIgdGFyZ2V0Tm9kZUxhYmVsID0gY2FuZGlkYXRlTm9kZU1hcFt0YXJnZXRJZF0ubm9kZVtub2RlTGFiZWxQcm9wXTtcbiAgICAgICAgY2FuZGlkYXRlTm9kZUxhYmVsQ291bnRNYXBbdGFyZ2V0Tm9kZUxhYmVsXS0tO1xuXG4gICAgICAgIGlmIChjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcFt0YXJnZXROb2RlTGFiZWxdIDwgcGF0dGVybk5vZGVMYWJlbE1hcFt0YXJnZXROb2RlTGFiZWxdLmxlbmd0aCkge1xuICAgICAgICAgIGNhbmRpZGF0ZUdyYXBoSW52YWxpZCA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGlkeCA9IGNhbmRpZGF0ZUdyYXBoLm5vZGVzLmluZGV4T2YoY2FuZGlkYXRlTm9kZU1hcFt0YXJnZXRJZF0ubm9kZSk7XG4gICAgICAgIGNhbmRpZGF0ZUdyYXBoLm5vZGVzLnNwbGljZShpZHgsIDEpO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW3RhcmdldElkXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvLyBwcnVuZTU6IOe7j+i/h+i+ueijgeWJquWQju+8jOWPr+iDveWPiOWHuueOsOS6huacgOefrei3r+W+hOi/h+mVv+eahOiKgueCuSDvvIjmr5QgcGF0dGVybiDkuK3lkIwgbGFiZWwg55qE6IqC54K55YiwIGJlZ2luTm9kZSDmnIDlpKfmnIDnn63ot53nprvov5zvvInvvIzliKDljrvov5nkupvoioLngrlcblxuXG4gICAgICB2YXIgbkxhYmVsID0gbm9kZU1hcFt0YXJnZXRJZF0ubm9kZVtub2RlTGFiZWxQcm9wXTtcblxuICAgICAgaWYgKCF1bmRpcmVjdGVkTGVuZ3Roc1RvQmVnaW5QTm9kZUxhYmVsTWFwW25MYWJlbF0gfHwgIXVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXBbbkxhYmVsXS5sZW5ndGggfHwgbGVuZ3Roc1RvQ2FuZGlkYXRlW3RhcmdldElkXSA+IHVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXBbbkxhYmVsXVt1bmRpcmVjdGVkTGVuZ3Roc1RvQmVnaW5QTm9kZUxhYmVsTWFwW25MYWJlbF0ubGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgdmFyIHRhcmdldE5vZGVMYWJlbCA9IGNhbmRpZGF0ZU5vZGVNYXBbdGFyZ2V0SWRdLm5vZGVbbm9kZUxhYmVsUHJvcF07XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVMYWJlbENvdW50TWFwW3RhcmdldE5vZGVMYWJlbF0tLTtcblxuICAgICAgICBpZiAoY2FuZGlkYXRlTm9kZUxhYmVsQ291bnRNYXBbdGFyZ2V0Tm9kZUxhYmVsXSA8IHBhdHRlcm5Ob2RlTGFiZWxNYXBbdGFyZ2V0Tm9kZUxhYmVsXS5sZW5ndGgpIHtcbiAgICAgICAgICBjYW5kaWRhdGVHcmFwaEludmFsaWQgPSB0cnVlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpZHggPSBjYW5kaWRhdGVHcmFwaC5ub2Rlcy5pbmRleE9mKGNhbmRpZGF0ZU5vZGVNYXBbdGFyZ2V0SWRdLm5vZGUpO1xuICAgICAgICBjYW5kaWRhdGVHcmFwaC5ub2Rlcy5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFt0YXJnZXRJZF0gPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoY2FuZGlkYXRlR3JhcGhJbnZhbGlkKSB7XG4gICAgICBjYW5kaWRhdGVHcmFwaHMuc3BsaWNlKGksIDEpO1xuICAgICAgcmV0dXJuIFwiY29udGludWVcIjtcbiAgICB9XG5cbiAgICB2YXIgZGVncmVlQ2hhbmdlZCA9IHRydWU7XG4gICAgdmFyIGxvb3BDb3VudCA9IDA7XG5cbiAgICB3aGlsZSAoZGVncmVlQ2hhbmdlZCAmJiAhY2FuZGlkYXRlR3JhcGhJbnZhbGlkKSB7XG4gICAgICBkZWdyZWVDaGFuZ2VkID0gZmFsc2U7IC8vIGNhbmRpZGF0ZSDluqbmlbDkuI3otrPvvIzliKDljrvor6Xlm75cblxuICAgICAgdmFyIGNvbmRpdGlvbiA9IGRpcmVjdGVkID8gY2FuZGlkYXRlTm9kZU1hcFtjYW5kaWRhdGUuaWRdLmRlZ3JlZSA8IHBhdHRlcm5Ob2RlTWFwW2JlZ2luUE5vZGUuaWRdLmRlZ3JlZSB8fCBjYW5kaWRhdGVOb2RlTWFwW2NhbmRpZGF0ZS5pZF0uaW5EZWdyZWUgPCBwYXR0ZXJuTm9kZU1hcFtiZWdpblBOb2RlLmlkXS5pbkRlZ3JlZSB8fCBjYW5kaWRhdGVOb2RlTWFwW2NhbmRpZGF0ZS5pZF0ub3V0RGVncmVlIDwgcGF0dGVybk5vZGVNYXBbYmVnaW5QTm9kZS5pZF0ub3V0RGVncmVlIDogY2FuZGlkYXRlTm9kZU1hcFtjYW5kaWRhdGUuaWRdLmRlZ3JlZSA8IHBhdHRlcm5Ob2RlTWFwW2JlZ2luUE5vZGUuaWRdLmRlZ3JlZTtcblxuICAgICAgaWYgKGNvbmRpdGlvbikge1xuICAgICAgICBjYW5kaWRhdGVHcmFwaEludmFsaWQgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH0gLy8gY2FuZGlkYXRlIGxhYmVsIOS4quaVsOS4jei2s++8jOWIoOWOu+ivpeWbvlxuXG5cbiAgICAgIGlmIChjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcFtjYW5kaWRhdGVbbm9kZUxhYmVsUHJvcF1dIDwgcGF0dGVybk5vZGVMYWJlbE1hcFtjYW5kaWRhdGVbbm9kZUxhYmVsUHJvcF1dLmxlbmd0aCkge1xuICAgICAgICBjYW5kaWRhdGVHcmFwaEludmFsaWQgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH0gLy8gcHJ1bmU277ya5Y676Zmk5bqm5pWw6L+H5bCP55qE6IqC54K5XG5cblxuICAgICAgdmFyIGN1cnJlbnRDYW5kaWRhdGVOb2RlTnVtID0gY2FuZGlkYXRlR3JhcGgubm9kZXMubGVuZ3RoO1xuXG4gICAgICBmb3IgKHZhciBvID0gY3VycmVudENhbmRpZGF0ZU5vZGVOdW0gLSAxOyBvID49IDA7IG8tLSkge1xuICAgICAgICB2YXIgY2dOb2RlID0gY2FuZGlkYXRlR3JhcGgubm9kZXNbb107XG4gICAgICAgIHZhciBub2RlRGVncmVlID0gY2FuZGlkYXRlTm9kZU1hcFtjZ05vZGUuaWRdLmRlZ3JlZTtcbiAgICAgICAgdmFyIG5vZGVJbkRlZ3JlZSA9IGNhbmRpZGF0ZU5vZGVNYXBbY2dOb2RlLmlkXS5pbkRlZ3JlZTtcbiAgICAgICAgdmFyIG5vZGVPdXREZWdyZWUgPSBjYW5kaWRhdGVOb2RlTWFwW2NnTm9kZS5pZF0ub3V0RGVncmVlO1xuICAgICAgICB2YXIgY05vZGVMYWJlbCA9IGNnTm9kZVtub2RlTGFiZWxQcm9wXTtcblxuICAgICAgICB2YXIgX2UgPSBzdGFzaFBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXAobWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcCwgY05vZGVMYWJlbCwgcGF0dGVybk5vZGVNYXAsIHBhdHRlcm5Ob2RlTGFiZWxNYXApLFxuICAgICAgICAgICAgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSA9IF9lLm1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWUsXG4gICAgICAgICAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsSW5EZWdyZWUgPSBfZS5taW5QYXR0ZXJuTm9kZUxhYmVsSW5EZWdyZWUsXG4gICAgICAgICAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsT3V0RGVncmVlID0gX2UubWluUGF0dGVybk5vZGVMYWJlbE91dERlZ3JlZTtcblxuICAgICAgICB2YXIgZGVsZXRlQ29uZGl0aW9uID0gZGlyZWN0ZWQgPyBub2RlRGVncmVlIDwgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSB8fCBub2RlSW5EZWdyZWUgPCBtaW5QYXR0ZXJuTm9kZUxhYmVsSW5EZWdyZWUgfHwgbm9kZU91dERlZ3JlZSA8IG1pblBhdHRlcm5Ob2RlTGFiZWxPdXREZWdyZWUgOiBub2RlRGVncmVlIDwgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZTtcblxuICAgICAgICBpZiAoZGVsZXRlQ29uZGl0aW9uKSB7XG4gICAgICAgICAgY2FuZGlkYXRlTm9kZUxhYmVsQ291bnRNYXBbY2dOb2RlW25vZGVMYWJlbFByb3BdXS0tOyAvLyDoioLngrkgbGFiZWwg5Liq5pWw5LiN6LazXG5cbiAgICAgICAgICBpZiAoY2FuZGlkYXRlTm9kZUxhYmVsQ291bnRNYXBbY2dOb2RlW25vZGVMYWJlbFByb3BdXSA8IHBhdHRlcm5Ob2RlTGFiZWxNYXBbY2dOb2RlW25vZGVMYWJlbFByb3BdXS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhbmRpZGF0ZUdyYXBoSW52YWxpZCA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYW5kaWRhdGVHcmFwaC5ub2Rlcy5zcGxpY2UobywgMSk7XG4gICAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtjZ05vZGUuaWRdID0gdW5kZWZpbmVkO1xuICAgICAgICAgIGRlZ3JlZUNoYW5nZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChjYW5kaWRhdGVHcmFwaEludmFsaWQgfHwgIWRlZ3JlZUNoYW5nZWQgJiYgbG9vcENvdW50ICE9PSAwKSBicmVhazsgLy8g57uP6L+HIHBydW5lNSDoioLngrnoo4HliarvvIzliKDljrvnq6/ngrnlt7Lnu4/kuI3lnKggY2FuZGlkYXRlR3JhcGgg5Lit55qE6L65XG5cbiAgICAgIGNhbmRpZGF0ZUVkZ2VOdW0gPSBjYW5kaWRhdGVFZGdlcy5sZW5ndGg7XG5cbiAgICAgIGZvciAodmFyIHkgPSBjYW5kaWRhdGVFZGdlTnVtIC0gMTsgeSA+PSAwOyB5LS0pIHtcbiAgICAgICAgdmFyIGNlZGdlID0gY2FuZGlkYXRlRWRnZXNbeV07XG5cbiAgICAgICAgaWYgKCFjYW5kaWRhdGVOb2RlTWFwW2NlZGdlLnNvdXJjZV0gfHwgIWNhbmRpZGF0ZU5vZGVNYXBbY2VkZ2UudGFyZ2V0XSkge1xuICAgICAgICAgIGNhbmRpZGF0ZUVkZ2VzLnNwbGljZSh5LCAxKTtcbiAgICAgICAgICB2YXIgZWRnZUxhYmVsID0gY2VkZ2VbZWRnZUxhYmVsUHJvcF07XG4gICAgICAgICAgZWRnZUxhYmVsQ291bnRNYXBbZWRnZUxhYmVsXS0tO1xuXG4gICAgICAgICAgaWYgKGNhbmRpZGF0ZU5vZGVNYXBbY2VkZ2Uuc291cmNlXSkge1xuICAgICAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtjZWRnZS5zb3VyY2VdLmRlZ3JlZS0tO1xuICAgICAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtjZWRnZS5zb3VyY2VdLm91dERlZ3JlZS0tO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChjYW5kaWRhdGVOb2RlTWFwW2NlZGdlLnRhcmdldF0pIHtcbiAgICAgICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbY2VkZ2UudGFyZ2V0XS5kZWdyZWUtLTtcbiAgICAgICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbY2VkZ2UudGFyZ2V0XS5pbkRlZ3JlZS0tO1xuICAgICAgICAgIH0gLy8g6L65IGxhYmVsIOaVsOmHj+S4jei2s1xuXG5cbiAgICAgICAgICBpZiAocGF0dGVybkVkZ2VMYWJlbE1hcFtlZGdlTGFiZWxdICYmIGVkZ2VMYWJlbENvdW50TWFwW2VkZ2VMYWJlbF0gPCBwYXR0ZXJuRWRnZUxhYmVsTWFwW2VkZ2VMYWJlbF0ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjYW5kaWRhdGVHcmFwaEludmFsaWQgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZGVncmVlQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbG9vcENvdW50Kys7XG4gICAgfVxuXG4gICAgaWYgKGNhbmRpZGF0ZUdyYXBoSW52YWxpZCkge1xuICAgICAgY2FuZGlkYXRlR3JhcGhzLnNwbGljZShpLCAxKTtcbiAgICAgIHJldHVybiBcImNvbnRpbnVlXCI7XG4gICAgfSAvLyBwcnVuZTog6Iul6IqC54K5L+i+ueaVsOi/h+Wwke+8jOiKgueCuS/ovrkgbGFiZWwg6L+H5bCR77yM5Y675o6J6L+Z5Liq5Zu+XG5cblxuICAgIGlmIChjYW5kaWRhdGVHcmFwaEludmFsaWQgfHwgY2FuZGlkYXRlR3JhcGgubm9kZXMubGVuZ3RoIDwgcGF0dGVybi5ub2Rlcy5sZW5ndGggfHwgY2FuZGlkYXRlRWRnZXMubGVuZ3RoIDwgcGF0dGVybi5lZGdlcy5sZW5ndGgpIHtcbiAgICAgIGNhbmRpZGF0ZUdyYXBocy5zcGxpY2UoaSwgMSk7XG4gICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgIH1cbiAgfTtcblxuICBmb3IgKHZhciBpID0gY2FuZGlkYXRlR3JhcGhOdW0gLSAxOyBpID49IDA7IGktLSkge1xuICAgIHZhciBzdGF0ZV8xID0gX2xvb3BfMihpKTtcblxuICAgIGlmIChzdGF0ZV8xID09PSBcImJyZWFrXCIpIGJyZWFrO1xuICB9IC8vIOatpOaXtuW3sue7j+eUn+aIkOeahOWkmuS4qiBjYW5kaWRhdGVHcmFwaHPvvIzlj6/og73mnInph43lpI1cbiAgLy8gY29uc29sZS5sb2coXG4gIC8vICAgXCItLS0tLSBzdGFnZTU6IGdvaW5nIHRvIHNwbGljZSBkdWxwbGljYXRlZCBjYW5kaWRhdGUgZ3JhcGhzIC0tLS0tLS1cIlxuICAvLyApO1xuICAvLyDliKDljrsgY2FuZGlkYXRlR3JhcGhzIOS4reS4gOaooeS4gOagt+eahOWtkOWbvu+8jOmAmui/h+i+ueeahCBub2RlLW5vZGUtZWRnZUxhYmVsIOS9nOS4uiBrZXnvvIzov5nnsbvovrnkuKrmlbDkvZzkuLogdmFsdWXvvIzov5vooYzljLnphY1cblxuXG4gIHZhciBjdXJyZW50TGVuZ3RoID0gY2FuZGlkYXRlR3JhcGhzLmxlbmd0aDtcblxuICB2YXIgX2xvb3BfMyA9IGZ1bmN0aW9uIF9sb29wXzMoaSkge1xuICAgIHZhciBjZzEgPSBjYW5kaWRhdGVHcmFwaHNbaV07XG4gICAgdmFyIGNnMUVkZ2VNYXAgPSB7fTsgLy8gW25vZGUxLmlkLW5vZGUyLmlkLWVkZ2UubGFiZWxdOiBjb3VudFxuXG4gICAgY2cxLmVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChlZGdlLnNvdXJjZSwgXCItXCIpLmNvbmNhdChlZGdlLnRhcmdldCwgXCItXCIpLmNvbmNhdChlZGdlLmxhYmVsKTtcbiAgICAgIGlmICghY2cxRWRnZU1hcFtrZXldKSBjZzFFZGdlTWFwW2tleV0gPSAxO2Vsc2UgY2cxRWRnZU1hcFtrZXldKys7XG4gICAgfSk7XG5cbiAgICB2YXIgX2xvb3BfNiA9IGZ1bmN0aW9uIF9sb29wXzYoaikge1xuICAgICAgdmFyIGNnMiA9IGNhbmRpZGF0ZUdyYXBoc1tqXTtcbiAgICAgIHZhciBjZzJFZGdlTWFwID0ge307IC8vIFtub2RlMS5pZC1ub2RlMi5pZC1lZGdlLmxhYmVsXTogY291bnRcblxuICAgICAgY2cyLmVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgdmFyIGtleSA9IFwiXCIuY29uY2F0KGVkZ2Uuc291cmNlLCBcIi1cIikuY29uY2F0KGVkZ2UudGFyZ2V0LCBcIi1cIikuY29uY2F0KGVkZ2UubGFiZWwpO1xuICAgICAgICBpZiAoIWNnMkVkZ2VNYXBba2V5XSkgY2cyRWRnZU1hcFtrZXldID0gMTtlbHNlIGNnMkVkZ2VNYXBba2V5XSsrO1xuICAgICAgfSk7XG4gICAgICB2YXIgc2FtZSA9IHRydWU7XG5cbiAgICAgIGlmIChPYmplY3Qua2V5cyhjZzJFZGdlTWFwKS5sZW5ndGggIT09IE9iamVjdC5rZXlzKGNnMUVkZ2VNYXApLmxlbmd0aCkge1xuICAgICAgICBzYW1lID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBPYmplY3Qua2V5cyhjZzFFZGdlTWFwKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICBpZiAoY2cyRWRnZU1hcFtrZXldICE9PSBjZzFFZGdlTWFwW2tleV0pIHNhbWUgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzYW1lKSB7XG4gICAgICAgIGNhbmRpZGF0ZUdyYXBocy5zcGxpY2UoaiwgMSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGZvciAodmFyIGogPSBjdXJyZW50TGVuZ3RoIC0gMTsgaiA+IGk7IGotLSkge1xuICAgICAgX2xvb3BfNihqKTtcbiAgICB9XG5cbiAgICBjdXJyZW50TGVuZ3RoID0gY2FuZGlkYXRlR3JhcGhzLmxlbmd0aDtcbiAgfTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8PSBjdXJyZW50TGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgX2xvb3BfMyhpKTtcbiAgfVxuXG4gIHJldHVybiBjYW5kaWRhdGVHcmFwaHM7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBHQURESTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/gaddi.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/index.js":
/*!**************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/index.js ***!
\**************************************************************************/
/*! exports provided: getAdjMatrix, breadthFirstSearch, connectedComponent, getDegree, getInDegree, getOutDegree, detectCycle, detectDirectedCycle, detectAllCycles, detectAllDirectedCycle, detectAllUndirectedCycle, depthFirstSearch, dijkstra, findAllPath, findShortestPath, floydWarshall, labelPropagation, louvain, minimumSpanningTree, pageRank, getNeighbors, Stack, GADDI, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"detectDirectedCycle\", function() { return detectDirectedCycle; });\n/* harmony import */ var _adjacent_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./adjacent-matrix */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/adjacent-matrix.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getAdjMatrix\", function() { return _adjacent_matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _bfs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./bfs */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/bfs.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"breadthFirstSearch\", function() { return _bfs__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _connected_component__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./connected-component */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/connected-component.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"connectedComponent\", function() { return _connected_component__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _degree__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./degree */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/degree.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getDegree\", function() { return _degree__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getInDegree\", function() { return _degree__WEBPACK_IMPORTED_MODULE_3__[\"getInDegree\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getOutDegree\", function() { return _degree__WEBPACK_IMPORTED_MODULE_3__[\"getOutDegree\"]; });\n\n/* harmony import */ var _detect_cycle__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./detect-cycle */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/detect-cycle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"detectCycle\", function() { return _detect_cycle__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"detectAllCycles\", function() { return _detect_cycle__WEBPACK_IMPORTED_MODULE_4__[\"detectAllCycles\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"detectAllDirectedCycle\", function() { return _detect_cycle__WEBPACK_IMPORTED_MODULE_4__[\"detectAllDirectedCycle\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"detectAllUndirectedCycle\", function() { return _detect_cycle__WEBPACK_IMPORTED_MODULE_4__[\"detectAllUndirectedCycle\"]; });\n\n/* harmony import */ var _dfs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./dfs */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/dfs.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"depthFirstSearch\", function() { return _dfs__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _dijkstra__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./dijkstra */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/dijkstra.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"dijkstra\", function() { return _dijkstra__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _find_path__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./find-path */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/find-path.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"findAllPath\", function() { return _find_path__WEBPACK_IMPORTED_MODULE_7__[\"findAllPath\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"findShortestPath\", function() { return _find_path__WEBPACK_IMPORTED_MODULE_7__[\"findShortestPath\"]; });\n\n/* harmony import */ var _floydWarshall__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./floydWarshall */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/floydWarshall.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"floydWarshall\", function() { return _floydWarshall__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _label_propagation__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./label-propagation */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/label-propagation.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"labelPropagation\", function() { return _label_propagation__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _louvain__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./louvain */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/louvain.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"louvain\", function() { return _louvain__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _mts__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./mts */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/mts.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"minimumSpanningTree\", function() { return _mts__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _pageRank__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./pageRank */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/pageRank.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"pageRank\", function() { return _pageRank__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony import */ var _gaddi__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./gaddi */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/gaddi.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GADDI\", function() { return _gaddi__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _structs_stack__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./structs/stack */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/stack.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Stack\", function() { return _structs_stack__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/util.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getNeighbors\", function() { return _util__WEBPACK_IMPORTED_MODULE_15__[\"getNeighbors\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar detectDirectedCycle = _detect_cycle__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getAdjMatrix: _adjacent_matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n breadthFirstSearch: _bfs__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n connectedComponent: _connected_component__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n getDegree: _degree__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n getInDegree: _degree__WEBPACK_IMPORTED_MODULE_3__[\"getInDegree\"],\n getOutDegree: _degree__WEBPACK_IMPORTED_MODULE_3__[\"getOutDegree\"],\n detectCycle: _detect_cycle__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n detectDirectedCycle: detectDirectedCycle,\n detectAllCycles: _detect_cycle__WEBPACK_IMPORTED_MODULE_4__[\"detectAllCycles\"],\n detectAllDirectedCycle: _detect_cycle__WEBPACK_IMPORTED_MODULE_4__[\"detectAllDirectedCycle\"],\n detectAllUndirectedCycle: _detect_cycle__WEBPACK_IMPORTED_MODULE_4__[\"detectAllUndirectedCycle\"],\n depthFirstSearch: _dfs__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n dijkstra: _dijkstra__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n findAllPath: _find_path__WEBPACK_IMPORTED_MODULE_7__[\"findAllPath\"],\n findShortestPath: _find_path__WEBPACK_IMPORTED_MODULE_7__[\"findShortestPath\"],\n floydWarshall: _floydWarshall__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n labelPropagation: _label_propagation__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n louvain: _louvain__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n minimumSpanningTree: _mts__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n pageRank: _pageRank__WEBPACK_IMPORTED_MODULE_12__[\"default\"],\n getNeighbors: _util__WEBPACK_IMPORTED_MODULE_15__[\"getNeighbors\"],\n Stack: _structs_stack__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n GADDI: _gaddi__WEBPACK_IMPORTED_MODULE_13__[\"default\"]\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2luZGV4LmpzPzdjNzEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE2QztBQUNOO0FBQ2dCO0FBQ3RCO0FBQ29CO0FBQzJEO0FBQzNFO0FBQ0g7QUFDMEI7QUFDaEI7QUFDTztBQUNuQjtBQUNRO0FBQ047QUFDTjtBQUNRO0FBQ0U7QUFDdEMsMEJBQTBCLHFEQUFXO0FBQ3NVO0FBQzVWO0FBQ2YsZ0JBQWdCLHdEQUFZO0FBQzVCLHNCQUFzQiw0Q0FBa0I7QUFDeEMsc0JBQXNCLDREQUFrQjtBQUN4QyxhQUFhLCtDQUFTO0FBQ3RCLGVBQWUsbURBQVc7QUFDMUIsZ0JBQWdCLG9EQUFZO0FBQzVCLGVBQWUscURBQVc7QUFDMUI7QUFDQSxtQkFBbUIsNkRBQWU7QUFDbEMsMEJBQTBCLG9FQUFzQjtBQUNoRCw0QkFBNEIsc0VBQXdCO0FBQ3BELG9CQUFvQiw0Q0FBZ0I7QUFDcEMsWUFBWSxpREFBUTtBQUNwQixlQUFlLHNEQUFXO0FBQzFCLG9CQUFvQiwyREFBZ0I7QUFDcEMsaUJBQWlCLHNEQUFhO0FBQzlCLG9CQUFvQiwwREFBZ0I7QUFDcEMsV0FBVyxpREFBTztBQUNsQix1QkFBdUIsNkNBQW1CO0FBQzFDLFlBQVksa0RBQVE7QUFDcEIsZ0JBQWdCLG1EQUFZO0FBQzVCLFNBQVMsdURBQUs7QUFDZCxTQUFTLCtDQUFLO0FBQ2QsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfYWxnb3JpdGhtQDAuMS4xNEBAYW50di9hbGdvcml0aG0vZXMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ2V0QWRqTWF0cml4IGZyb20gJy4vYWRqYWNlbnQtbWF0cml4JztcbmltcG9ydCBicmVhZHRoRmlyc3RTZWFyY2ggZnJvbSAnLi9iZnMnO1xuaW1wb3J0IGNvbm5lY3RlZENvbXBvbmVudCBmcm9tICcuL2Nvbm5lY3RlZC1jb21wb25lbnQnO1xuaW1wb3J0IGdldERlZ3JlZSBmcm9tICcuL2RlZ3JlZSc7XG5pbXBvcnQgeyBnZXRJbkRlZ3JlZSwgZ2V0T3V0RGVncmVlIH0gZnJvbSAnLi9kZWdyZWUnO1xuaW1wb3J0IGRldGVjdEN5Y2xlLCB7IGRldGVjdEFsbEN5Y2xlcywgZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZSwgZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlIH0gZnJvbSAnLi9kZXRlY3QtY3ljbGUnO1xuaW1wb3J0IGRlcHRoRmlyc3RTZWFyY2ggZnJvbSAnLi9kZnMnO1xuaW1wb3J0IGRpamtzdHJhIGZyb20gJy4vZGlqa3N0cmEnO1xuaW1wb3J0IHsgZmluZEFsbFBhdGgsIGZpbmRTaG9ydGVzdFBhdGggfSBmcm9tICcuL2ZpbmQtcGF0aCc7XG5pbXBvcnQgZmxveWRXYXJzaGFsbCBmcm9tICcuL2Zsb3lkV2Fyc2hhbGwnO1xuaW1wb3J0IGxhYmVsUHJvcGFnYXRpb24gZnJvbSAnLi9sYWJlbC1wcm9wYWdhdGlvbic7XG5pbXBvcnQgbG91dmFpbiBmcm9tICcuL2xvdXZhaW4nO1xuaW1wb3J0IG1pbmltdW1TcGFubmluZ1RyZWUgZnJvbSAnLi9tdHMnO1xuaW1wb3J0IHBhZ2VSYW5rIGZyb20gJy4vcGFnZVJhbmsnO1xuaW1wb3J0IEdBRERJIGZyb20gJy4vZ2FkZGknO1xuaW1wb3J0IFN0YWNrIGZyb20gJy4vc3RydWN0cy9zdGFjayc7XG5pbXBvcnQgeyBnZXROZWlnaGJvcnMgfSBmcm9tICcuL3V0aWwnO1xudmFyIGRldGVjdERpcmVjdGVkQ3ljbGUgPSBkZXRlY3RDeWNsZTtcbmV4cG9ydCB7IGdldEFkak1hdHJpeCwgYnJlYWR0aEZpcnN0U2VhcmNoLCBjb25uZWN0ZWRDb21wb25lbnQsIGdldERlZ3JlZSwgZ2V0SW5EZWdyZWUsIGdldE91dERlZ3JlZSwgZGV0ZWN0Q3ljbGUsIGRldGVjdERpcmVjdGVkQ3ljbGUsIGRldGVjdEFsbEN5Y2xlcywgZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZSwgZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlLCBkZXB0aEZpcnN0U2VhcmNoLCBkaWprc3RyYSwgZmluZEFsbFBhdGgsIGZpbmRTaG9ydGVzdFBhdGgsIGZsb3lkV2Fyc2hhbGwsIGxhYmVsUHJvcGFnYXRpb24sIGxvdXZhaW4sIG1pbmltdW1TcGFubmluZ1RyZWUsIHBhZ2VSYW5rLCBnZXROZWlnaGJvcnMsIFN0YWNrLCBHQURESSB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBnZXRBZGpNYXRyaXg6IGdldEFkak1hdHJpeCxcbiAgYnJlYWR0aEZpcnN0U2VhcmNoOiBicmVhZHRoRmlyc3RTZWFyY2gsXG4gIGNvbm5lY3RlZENvbXBvbmVudDogY29ubmVjdGVkQ29tcG9uZW50LFxuICBnZXREZWdyZWU6IGdldERlZ3JlZSxcbiAgZ2V0SW5EZWdyZWU6IGdldEluRGVncmVlLFxuICBnZXRPdXREZWdyZWU6IGdldE91dERlZ3JlZSxcbiAgZGV0ZWN0Q3ljbGU6IGRldGVjdEN5Y2xlLFxuICBkZXRlY3REaXJlY3RlZEN5Y2xlOiBkZXRlY3REaXJlY3RlZEN5Y2xlLFxuICBkZXRlY3RBbGxDeWNsZXM6IGRldGVjdEFsbEN5Y2xlcyxcbiAgZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZTogZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZSxcbiAgZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlOiBkZXRlY3RBbGxVbmRpcmVjdGVkQ3ljbGUsXG4gIGRlcHRoRmlyc3RTZWFyY2g6IGRlcHRoRmlyc3RTZWFyY2gsXG4gIGRpamtzdHJhOiBkaWprc3RyYSxcbiAgZmluZEFsbFBhdGg6IGZpbmRBbGxQYXRoLFxuICBmaW5kU2hvcnRlc3RQYXRoOiBmaW5kU2hvcnRlc3RQYXRoLFxuICBmbG95ZFdhcnNoYWxsOiBmbG95ZFdhcnNoYWxsLFxuICBsYWJlbFByb3BhZ2F0aW9uOiBsYWJlbFByb3BhZ2F0aW9uLFxuICBsb3V2YWluOiBsb3V2YWluLFxuICBtaW5pbXVtU3Bhbm5pbmdUcmVlOiBtaW5pbXVtU3Bhbm5pbmdUcmVlLFxuICBwYWdlUmFuazogcGFnZVJhbmssXG4gIGdldE5laWdoYm9yczogZ2V0TmVpZ2hib3JzLFxuICBTdGFjazogU3RhY2ssXG4gIEdBRERJOiBHQURESVxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/label-propagation.js":
/*!**************************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/label-propagation.js ***!
\**************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _adjacent_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./adjacent-matrix */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/adjacent-matrix.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/util.js\");\n\n\n/**\n * 标签传播算法\n * @param graphData 图数据\n * @param directed 是否有向图,默认为 false\n * @param weightPropertyName 权重的属性字段\n * @param maxIteration 最大迭代次数\n */\n\nvar labelPropagation = function labelPropagation(graphData, directed, weightPropertyName, maxIteration) {\n if (directed === void 0) {\n directed = false;\n }\n\n if (weightPropertyName === void 0) {\n weightPropertyName = 'weight';\n }\n\n if (maxIteration === void 0) {\n maxIteration = 1000;\n } // the origin data\n\n\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var clusters = {};\n var nodeMap = {}; // init the clusters and nodeMap\n\n nodes.forEach(function (node, i) {\n var cid = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"uniqueId\"])();\n node.clusterId = cid;\n clusters[cid] = {\n id: cid,\n nodes: [node]\n };\n nodeMap[node.id] = {\n node: node,\n idx: i\n };\n }); // the adjacent matrix of calNodes inside clusters\n\n var adjMatrix = Object(_adjacent_matrix__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(graphData, directed); // the sum of each row in adjacent matrix\n\n var ks = [];\n /**\n * neighbor nodes (id for key and weight for value) for each node\n * neighbors = {\n * id(node_id): { id(neighbor_1_id): weight(weight of the edge), id(neighbor_2_id): weight(weight of the edge), ... },\n * ...\n * }\n */\n\n var neighbors = {};\n adjMatrix.forEach(function (row, i) {\n var k = 0;\n var iid = nodes[i].id;\n neighbors[iid] = {};\n row.forEach(function (entry, j) {\n if (!entry) return;\n k += entry;\n var jid = nodes[j].id;\n neighbors[iid][jid] = entry;\n });\n ks.push(k);\n });\n var iter = 0;\n\n var _loop_1 = function _loop_1() {\n var changed = false;\n nodes.forEach(function (node) {\n var neighborClusters = {};\n Object.keys(neighbors[node.id]).forEach(function (neighborId) {\n var neighborWeight = neighbors[node.id][neighborId];\n var neighborNode = nodeMap[neighborId].node;\n var neighborClusterId = neighborNode.clusterId;\n if (!neighborClusters[neighborClusterId]) neighborClusters[neighborClusterId] = 0;\n neighborClusters[neighborClusterId] += neighborWeight;\n }); // find the cluster with max weight\n\n var maxWeight = -Infinity;\n var bestClusterIds = [];\n Object.keys(neighborClusters).forEach(function (clusterId) {\n if (maxWeight < neighborClusters[clusterId]) {\n maxWeight = neighborClusters[clusterId];\n bestClusterIds = [clusterId];\n } else if (maxWeight === neighborClusters[clusterId]) {\n bestClusterIds.push(clusterId);\n }\n });\n if (bestClusterIds.length === 1 && bestClusterIds[0] === node.clusterId) return;\n var selfClusterIdx = bestClusterIds.indexOf(node.clusterId);\n if (selfClusterIdx >= 0) bestClusterIds.splice(selfClusterIdx, 1);\n\n if (bestClusterIds && bestClusterIds.length) {\n changed = true; // remove from origin cluster\n\n var selfCluster = clusters[node.clusterId];\n var nodeInSelfClusterIdx = selfCluster.nodes.indexOf(node);\n selfCluster.nodes.splice(nodeInSelfClusterIdx, 1); // move the node to the best cluster\n\n var randomIdx = Math.floor(Math.random() * bestClusterIds.length);\n var bestCluster = clusters[bestClusterIds[randomIdx]];\n bestCluster.nodes.push(node);\n node.clusterId = bestCluster.id;\n }\n });\n if (!changed) return \"break\";\n iter++;\n };\n\n while (iter < maxIteration) {\n var state_1 = _loop_1();\n\n if (state_1 === \"break\") break;\n } // delete the empty clusters\n\n\n Object.keys(clusters).forEach(function (clusterId) {\n var cluster = clusters[clusterId];\n\n if (!cluster.nodes || !cluster.nodes.length) {\n delete clusters[clusterId];\n }\n }); // get the cluster edges\n\n var clusterEdges = [];\n var clusterEdgeMap = {};\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var weight = edge[weightPropertyName] || 1;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n var newEdgeId = \"\".concat(sourceClusterId, \"---\").concat(targetClusterId);\n\n if (clusterEdgeMap[newEdgeId]) {\n clusterEdgeMap[newEdgeId].weight += weight;\n clusterEdgeMap[newEdgeId].count++;\n } else {\n var newEdge = {\n source: sourceClusterId,\n target: targetClusterId,\n weight: weight,\n count: 1\n };\n clusterEdgeMap[newEdgeId] = newEdge;\n clusterEdges.push(newEdge);\n }\n });\n var clustersArray = [];\n Object.keys(clusters).forEach(function (clusterId) {\n clustersArray.push(clusters[clusterId]);\n });\n return {\n clusters: clustersArray,\n clusterEdges: clusterEdges\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (labelPropagation);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2xhYmVsLXByb3BhZ2F0aW9uLmpzPzU0NmEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQTZDO0FBQ1g7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1COztBQUVuQjtBQUNBLGNBQWMsc0RBQVE7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyxFQUFFOztBQUVMLGtCQUFrQixnRUFBWSxzQkFBc0I7O0FBRXBEO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG9HQUFvRztBQUN4SDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUJBQXVCOztBQUV2QjtBQUNBO0FBQ0EsMERBQTBEOztBQUUxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWUsK0VBQWdCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9lcy9sYWJlbC1wcm9wYWdhdGlvbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXRBZGpNYXRyaXggZnJvbSAnLi9hZGphY2VudC1tYXRyaXgnO1xuaW1wb3J0IHsgdW5pcXVlSWQgfSBmcm9tICcuL3V0aWwnO1xuLyoqXG4gKiDmoIfnrb7kvKDmkq3nrpfms5VcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gZGlyZWN0ZWQg5piv5ZCm5pyJ5ZCR5Zu+77yM6buY6K6k5Li6IGZhbHNlXG4gKiBAcGFyYW0gd2VpZ2h0UHJvcGVydHlOYW1lIOadg+mHjeeahOWxnuaAp+Wtl+autVxuICogQHBhcmFtIG1heEl0ZXJhdGlvbiDmnIDlpKfov63ku6PmrKHmlbBcbiAqL1xuXG52YXIgbGFiZWxQcm9wYWdhdGlvbiA9IGZ1bmN0aW9uIGxhYmVsUHJvcGFnYXRpb24oZ3JhcGhEYXRhLCBkaXJlY3RlZCwgd2VpZ2h0UHJvcGVydHlOYW1lLCBtYXhJdGVyYXRpb24pIHtcbiAgaWYgKGRpcmVjdGVkID09PSB2b2lkIDApIHtcbiAgICBkaXJlY3RlZCA9IGZhbHNlO1xuICB9XG5cbiAgaWYgKHdlaWdodFByb3BlcnR5TmFtZSA9PT0gdm9pZCAwKSB7XG4gICAgd2VpZ2h0UHJvcGVydHlOYW1lID0gJ3dlaWdodCc7XG4gIH1cblxuICBpZiAobWF4SXRlcmF0aW9uID09PSB2b2lkIDApIHtcbiAgICBtYXhJdGVyYXRpb24gPSAxMDAwO1xuICB9IC8vIHRoZSBvcmlnaW4gZGF0YVxuXG5cbiAgdmFyIF9hID0gZ3JhcGhEYXRhLm5vZGVzLFxuICAgICAgbm9kZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYSxcbiAgICAgIF9iID0gZ3JhcGhEYXRhLmVkZ2VzLFxuICAgICAgZWRnZXMgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYjtcbiAgdmFyIGNsdXN0ZXJzID0ge307XG4gIHZhciBub2RlTWFwID0ge307IC8vIGluaXQgdGhlIGNsdXN0ZXJzIGFuZCBub2RlTWFwXG5cbiAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaSkge1xuICAgIHZhciBjaWQgPSB1bmlxdWVJZCgpO1xuICAgIG5vZGUuY2x1c3RlcklkID0gY2lkO1xuICAgIGNsdXN0ZXJzW2NpZF0gPSB7XG4gICAgICBpZDogY2lkLFxuICAgICAgbm9kZXM6IFtub2RlXVxuICAgIH07XG4gICAgbm9kZU1hcFtub2RlLmlkXSA9IHtcbiAgICAgIG5vZGU6IG5vZGUsXG4gICAgICBpZHg6IGlcbiAgICB9O1xuICB9KTsgLy8gdGhlIGFkamFjZW50IG1hdHJpeCBvZiBjYWxOb2RlcyBpbnNpZGUgY2x1c3RlcnNcblxuICB2YXIgYWRqTWF0cml4ID0gZ2V0QWRqTWF0cml4KGdyYXBoRGF0YSwgZGlyZWN0ZWQpOyAvLyB0aGUgc3VtIG9mIGVhY2ggcm93IGluIGFkamFjZW50IG1hdHJpeFxuXG4gIHZhciBrcyA9IFtdO1xuICAvKipcbiAgICogbmVpZ2hib3Igbm9kZXMgKGlkIGZvciBrZXkgYW5kIHdlaWdodCBmb3IgdmFsdWUpIGZvciBlYWNoIG5vZGVcbiAgICogbmVpZ2hib3JzID0ge1xuICAgKiAgaWQobm9kZV9pZCk6IHsgaWQobmVpZ2hib3JfMV9pZCk6IHdlaWdodCh3ZWlnaHQgb2YgdGhlIGVkZ2UpLCBpZChuZWlnaGJvcl8yX2lkKTogd2VpZ2h0KHdlaWdodCBvZiB0aGUgZWRnZSksIC4uLiB9LFxuICAgKiAgLi4uXG4gICAqIH1cbiAgICovXG5cbiAgdmFyIG5laWdoYm9ycyA9IHt9O1xuICBhZGpNYXRyaXguZm9yRWFjaChmdW5jdGlvbiAocm93LCBpKSB7XG4gICAgdmFyIGsgPSAwO1xuICAgIHZhciBpaWQgPSBub2Rlc1tpXS5pZDtcbiAgICBuZWlnaGJvcnNbaWlkXSA9IHt9O1xuICAgIHJvdy5mb3JFYWNoKGZ1bmN0aW9uIChlbnRyeSwgaikge1xuICAgICAgaWYgKCFlbnRyeSkgcmV0dXJuO1xuICAgICAgayArPSBlbnRyeTtcbiAgICAgIHZhciBqaWQgPSBub2Rlc1tqXS5pZDtcbiAgICAgIG5laWdoYm9yc1tpaWRdW2ppZF0gPSBlbnRyeTtcbiAgICB9KTtcbiAgICBrcy5wdXNoKGspO1xuICB9KTtcbiAgdmFyIGl0ZXIgPSAwO1xuXG4gIHZhciBfbG9vcF8xID0gZnVuY3Rpb24gX2xvb3BfMSgpIHtcbiAgICB2YXIgY2hhbmdlZCA9IGZhbHNlO1xuICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHZhciBuZWlnaGJvckNsdXN0ZXJzID0ge307XG4gICAgICBPYmplY3Qua2V5cyhuZWlnaGJvcnNbbm9kZS5pZF0pLmZvckVhY2goZnVuY3Rpb24gKG5laWdoYm9ySWQpIHtcbiAgICAgICAgdmFyIG5laWdoYm9yV2VpZ2h0ID0gbmVpZ2hib3JzW25vZGUuaWRdW25laWdoYm9ySWRdO1xuICAgICAgICB2YXIgbmVpZ2hib3JOb2RlID0gbm9kZU1hcFtuZWlnaGJvcklkXS5ub2RlO1xuICAgICAgICB2YXIgbmVpZ2hib3JDbHVzdGVySWQgPSBuZWlnaGJvck5vZGUuY2x1c3RlcklkO1xuICAgICAgICBpZiAoIW5laWdoYm9yQ2x1c3RlcnNbbmVpZ2hib3JDbHVzdGVySWRdKSBuZWlnaGJvckNsdXN0ZXJzW25laWdoYm9yQ2x1c3RlcklkXSA9IDA7XG4gICAgICAgIG5laWdoYm9yQ2x1c3RlcnNbbmVpZ2hib3JDbHVzdGVySWRdICs9IG5laWdoYm9yV2VpZ2h0O1xuICAgICAgfSk7IC8vIGZpbmQgdGhlIGNsdXN0ZXIgd2l0aCBtYXggd2VpZ2h0XG5cbiAgICAgIHZhciBtYXhXZWlnaHQgPSAtSW5maW5pdHk7XG4gICAgICB2YXIgYmVzdENsdXN0ZXJJZHMgPSBbXTtcbiAgICAgIE9iamVjdC5rZXlzKG5laWdoYm9yQ2x1c3RlcnMpLmZvckVhY2goZnVuY3Rpb24gKGNsdXN0ZXJJZCkge1xuICAgICAgICBpZiAobWF4V2VpZ2h0IDwgbmVpZ2hib3JDbHVzdGVyc1tjbHVzdGVySWRdKSB7XG4gICAgICAgICAgbWF4V2VpZ2h0ID0gbmVpZ2hib3JDbHVzdGVyc1tjbHVzdGVySWRdO1xuICAgICAgICAgIGJlc3RDbHVzdGVySWRzID0gW2NsdXN0ZXJJZF07XG4gICAgICAgIH0gZWxzZSBpZiAobWF4V2VpZ2h0ID09PSBuZWlnaGJvckNsdXN0ZXJzW2NsdXN0ZXJJZF0pIHtcbiAgICAgICAgICBiZXN0Q2x1c3Rlcklkcy5wdXNoKGNsdXN0ZXJJZCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgaWYgKGJlc3RDbHVzdGVySWRzLmxlbmd0aCA9PT0gMSAmJiBiZXN0Q2x1c3Rlcklkc1swXSA9PT0gbm9kZS5jbHVzdGVySWQpIHJldHVybjtcbiAgICAgIHZhciBzZWxmQ2x1c3RlcklkeCA9IGJlc3RDbHVzdGVySWRzLmluZGV4T2Yobm9kZS5jbHVzdGVySWQpO1xuICAgICAgaWYgKHNlbGZDbHVzdGVySWR4ID49IDApIGJlc3RDbHVzdGVySWRzLnNwbGljZShzZWxmQ2x1c3RlcklkeCwgMSk7XG5cbiAgICAgIGlmIChiZXN0Q2x1c3RlcklkcyAmJiBiZXN0Q2x1c3Rlcklkcy5sZW5ndGgpIHtcbiAgICAgICAgY2hhbmdlZCA9IHRydWU7IC8vIHJlbW92ZSBmcm9tIG9yaWdpbiBjbHVzdGVyXG5cbiAgICAgICAgdmFyIHNlbGZDbHVzdGVyID0gY2x1c3RlcnNbbm9kZS5jbHVzdGVySWRdO1xuICAgICAgICB2YXIgbm9kZUluU2VsZkNsdXN0ZXJJZHggPSBzZWxmQ2x1c3Rlci5ub2Rlcy5pbmRleE9mKG5vZGUpO1xuICAgICAgICBzZWxmQ2x1c3Rlci5ub2Rlcy5zcGxpY2Uobm9kZUluU2VsZkNsdXN0ZXJJZHgsIDEpOyAvLyBtb3ZlIHRoZSBub2RlIHRvIHRoZSBiZXN0IGNsdXN0ZXJcblxuICAgICAgICB2YXIgcmFuZG9tSWR4ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogYmVzdENsdXN0ZXJJZHMubGVuZ3RoKTtcbiAgICAgICAgdmFyIGJlc3RDbHVzdGVyID0gY2x1c3RlcnNbYmVzdENsdXN0ZXJJZHNbcmFuZG9tSWR4XV07XG4gICAgICAgIGJlc3RDbHVzdGVyLm5vZGVzLnB1c2gobm9kZSk7XG4gICAgICAgIG5vZGUuY2x1c3RlcklkID0gYmVzdENsdXN0ZXIuaWQ7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKCFjaGFuZ2VkKSByZXR1cm4gXCJicmVha1wiO1xuICAgIGl0ZXIrKztcbiAgfTtcblxuICB3aGlsZSAoaXRlciA8IG1heEl0ZXJhdGlvbikge1xuICAgIHZhciBzdGF0ZV8xID0gX2xvb3BfMSgpO1xuXG4gICAgaWYgKHN0YXRlXzEgPT09IFwiYnJlYWtcIikgYnJlYWs7XG4gIH0gLy8gZGVsZXRlIHRoZSBlbXB0eSBjbHVzdGVyc1xuXG5cbiAgT2JqZWN0LmtleXMoY2x1c3RlcnMpLmZvckVhY2goZnVuY3Rpb24gKGNsdXN0ZXJJZCkge1xuICAgIHZhciBjbHVzdGVyID0gY2x1c3RlcnNbY2x1c3RlcklkXTtcblxuICAgIGlmICghY2x1c3Rlci5ub2RlcyB8fCAhY2x1c3Rlci5ub2Rlcy5sZW5ndGgpIHtcbiAgICAgIGRlbGV0ZSBjbHVzdGVyc1tjbHVzdGVySWRdO1xuICAgIH1cbiAgfSk7IC8vIGdldCB0aGUgY2x1c3RlciBlZGdlc1xuXG4gIHZhciBjbHVzdGVyRWRnZXMgPSBbXTtcbiAgdmFyIGNsdXN0ZXJFZGdlTWFwID0ge307XG4gIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICB2YXIgc291cmNlID0gZWRnZS5zb3VyY2UsXG4gICAgICAgIHRhcmdldCA9IGVkZ2UudGFyZ2V0O1xuICAgIHZhciB3ZWlnaHQgPSBlZGdlW3dlaWdodFByb3BlcnR5TmFtZV0gfHwgMTtcbiAgICB2YXIgc291cmNlQ2x1c3RlcklkID0gbm9kZU1hcFtzb3VyY2VdLm5vZGUuY2x1c3RlcklkO1xuICAgIHZhciB0YXJnZXRDbHVzdGVySWQgPSBub2RlTWFwW3RhcmdldF0ubm9kZS5jbHVzdGVySWQ7XG4gICAgdmFyIG5ld0VkZ2VJZCA9IFwiXCIuY29uY2F0KHNvdXJjZUNsdXN0ZXJJZCwgXCItLS1cIikuY29uY2F0KHRhcmdldENsdXN0ZXJJZCk7XG5cbiAgICBpZiAoY2x1c3RlckVkZ2VNYXBbbmV3RWRnZUlkXSkge1xuICAgICAgY2x1c3RlckVkZ2VNYXBbbmV3RWRnZUlkXS53ZWlnaHQgKz0gd2VpZ2h0O1xuICAgICAgY2x1c3RlckVkZ2VNYXBbbmV3RWRnZUlkXS5jb3VudCsrO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbmV3RWRnZSA9IHtcbiAgICAgICAgc291cmNlOiBzb3VyY2VDbHVzdGVySWQsXG4gICAgICAgIHRhcmdldDogdGFyZ2V0Q2x1c3RlcklkLFxuICAgICAgICB3ZWlnaHQ6IHdlaWdodCxcbiAgICAgICAgY291bnQ6IDFcbiAgICAgIH07XG4gICAgICBjbHVzdGVyRWRnZU1hcFtuZXdFZGdlSWRdID0gbmV3RWRnZTtcbiAgICAgIGNsdXN0ZXJFZGdlcy5wdXNoKG5ld0VkZ2UpO1xuICAgIH1cbiAgfSk7XG4gIHZhciBjbHVzdGVyc0FycmF5ID0gW107XG4gIE9iamVjdC5rZXlzKGNsdXN0ZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChjbHVzdGVySWQpIHtcbiAgICBjbHVzdGVyc0FycmF5LnB1c2goY2x1c3RlcnNbY2x1c3RlcklkXSk7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGNsdXN0ZXJzOiBjbHVzdGVyc0FycmF5LFxuICAgIGNsdXN0ZXJFZGdlczogY2x1c3RlckVkZ2VzXG4gIH07XG59O1xuXG5leHBvcnQgZGVmYXVsdCBsYWJlbFByb3BhZ2F0aW9uOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/label-propagation.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/louvain.js":
/*!****************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/louvain.js ***!
\****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _adjacent_matrix__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./adjacent-matrix */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/adjacent-matrix.js\");\n/* harmony import */ var _utils_vector__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/vector */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/utils/vector.js\");\n/* harmony import */ var _constants_time__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constants/time */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/constants/time.js\");\n\n\n\n\n\nvar getModularity = function getModularity(nodes, adjMatrix, ks, m) {\n var length = adjMatrix.length;\n var param = 2 * m;\n var modularity = 0;\n\n for (var i = 0; i < length; i++) {\n var clusteri = nodes[i].clusterId;\n\n for (var j = 0; j < length; j++) {\n var clusterj = nodes[j].clusterId;\n if (clusteri !== clusterj) continue;\n var entry = adjMatrix[i][j] || 0;\n var ki = ks[i] || 0;\n var kj = ks[j] || 0;\n modularity += entry - ki * kj / param;\n }\n }\n\n modularity *= 1 / param;\n return modularity;\n}; // 获取所有属性并排序\n\n\nvar getAllSortProperties = function getAllSortProperties(nodes) {\n if (nodes === void 0) {\n nodes = [];\n }\n\n var propertyKeyInfo = {};\n nodes.forEach(function (node) {\n Object.keys(node.properties).forEach(function (propertyKey) {\n // 目前过滤只保留可以转成数值型的或日期型的, todo: 统一转成one-hot特征向量\n if (!\"\".concat(node.properties[propertyKey]).match(_constants_time__WEBPACK_IMPORTED_MODULE_3__[\"secondReg\"]) && !\"\".concat(node.properties[propertyKey]).match(_constants_time__WEBPACK_IMPORTED_MODULE_3__[\"dateReg\"]) && isNaN(Number(node.properties[propertyKey])) || propertyKey === 'id') {\n if (propertyKeyInfo.hasOwnProperty(propertyKey)) {\n delete propertyKeyInfo[propertyKey];\n }\n\n return;\n }\n\n if (propertyKeyInfo.hasOwnProperty(propertyKey)) {\n propertyKeyInfo[propertyKey] += 1;\n } else {\n propertyKeyInfo[propertyKey] = 1;\n }\n });\n }); // 取top50的属性\n\n var sortKeys = Object.keys(propertyKeyInfo).sort(function (a, b) {\n return propertyKeyInfo[b] - propertyKeyInfo[a];\n });\n return sortKeys.length < 100 ? sortKeys : sortKeys.slice(0, 100);\n};\n\nvar processProperty = function processProperty(properties, propertyKeys) {\n return propertyKeys.map(function (key) {\n if (properties.hasOwnProperty(key)) {\n // 可以转成数值的直接转成数值\n if (!isNaN(Number(properties[key]))) {\n return Number(properties[key]);\n } // 时间型的转成时间戳\n\n\n if (properties[key].match(_constants_time__WEBPACK_IMPORTED_MODULE_3__[\"secondReg\"]) || properties[key].match(_constants_time__WEBPACK_IMPORTED_MODULE_3__[\"dateReg\"])) {\n // @ts-ignore\n return Number(Date.parse(new Date(properties[key]))) / 1000;\n }\n }\n\n return 0;\n });\n}; // 获取属性特征权重\n\n\nvar getPropertyWeight = function getPropertyWeight(propertyKeys, nodes) {\n var allPropertiesWeight = [];\n\n for (var i = 0; i < nodes.length; i++) {\n allPropertiesWeight[i] = processProperty(nodes[i].properties, propertyKeys);\n }\n\n return allPropertiesWeight;\n}; // 模块惯性度,衡量属性相似度\n\n\nvar getInertialModularity = function getInertialModularity(nodes, allPropertiesWeight) {\n if (nodes === void 0) {\n nodes = [];\n }\n\n var length = nodes.length;\n var totalProperties = new _utils_vector__WEBPACK_IMPORTED_MODULE_2__[\"default\"]([]);\n\n for (var i = 0; i < length; i++) {\n totalProperties = totalProperties.add(new _utils_vector__WEBPACK_IMPORTED_MODULE_2__[\"default\"](allPropertiesWeight[i]));\n } // 均值向量\n\n\n var avgProperties = totalProperties.avg(length);\n avgProperties.normalize(); // 节点集合的方差: 节点v与均值向量的平方欧式距离之和\n\n var variance = 0;\n\n for (var i = 0; i < length; i++) {\n var propertiesi = new _utils_vector__WEBPACK_IMPORTED_MODULE_2__[\"default\"](allPropertiesWeight[i]);\n var squareEuclideanDistance = propertiesi.squareEuclideanDistance(avgProperties);\n variance += squareEuclideanDistance;\n } // 任意两点间的欧式平方距离\n\n\n var squareEuclideanDistanceInfo = [];\n nodes.forEach(function () {\n squareEuclideanDistanceInfo.push([]);\n });\n\n for (var i = 0; i < length; i++) {\n var propertiesi = new _utils_vector__WEBPACK_IMPORTED_MODULE_2__[\"default\"](allPropertiesWeight[i]);\n nodes[i]['clusterInertial'] = 0;\n\n for (var j = 0; j < length; j++) {\n if (i === j) {\n squareEuclideanDistanceInfo[i][j] = 0;\n continue;\n }\n\n var propertiesj = new _utils_vector__WEBPACK_IMPORTED_MODULE_2__[\"default\"](allPropertiesWeight[j]);\n squareEuclideanDistanceInfo[i][j] = propertiesi.squareEuclideanDistance(propertiesj);\n nodes[i]['clusterInertial'] += squareEuclideanDistanceInfo[i][j];\n }\n } // 计算模块惯性度\n\n\n var inertialModularity = 0;\n var param = 2 * length * variance;\n\n for (var i = 0; i < length; i++) {\n var clusteri = nodes[i].clusterId;\n\n for (var j = 0; j < length; j++) {\n var clusterj = nodes[j].clusterId;\n if (i === j || clusteri !== clusterj) continue;\n var inertial = nodes[i].clusterInertial * nodes[j].clusterInertial / Math.pow(param, 2) - squareEuclideanDistanceInfo[i][j] / param;\n inertialModularity += inertial;\n }\n }\n\n return Number(inertialModularity.toFixed(4));\n};\n/**\n * 社区发现 louvain 算法\n * @param graphData 图数据\n * @param directed 是否有向图,默认为 false\n * @param weightPropertyName 权重的属性字段\n * @param threshold 差值阈值\n * @param inertialModularity 是否使用惯性模块度(即节点属性相似性)\n */\n\n\nvar louvain = function louvain(graphData, directed, weightPropertyName, threshold, inertialModularity, inertialWeight) {\n if (directed === void 0) {\n directed = false;\n }\n\n if (weightPropertyName === void 0) {\n weightPropertyName = 'weight';\n }\n\n if (threshold === void 0) {\n threshold = 0.0001;\n }\n\n if (inertialModularity === void 0) {\n inertialModularity = false;\n }\n\n if (inertialWeight === void 0) {\n inertialWeight = 1;\n } // the origin data\n\n\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var allPropertiesWeight = [];\n\n if (inertialModularity) {\n nodes.forEach(function (node, index) {\n node.properties = node.properties || {};\n node.originIndex = index;\n });\n var nodeTypeInfo_1 = [];\n\n if (nodes.every(function (node) {\n return node.hasOwnProperty('nodeType');\n })) {\n nodeTypeInfo_1 = Array.from(new Set(nodes.map(function (node) {\n return node.nodeType;\n })));\n nodes.forEach(function (node) {\n node.properties.nodeType = nodeTypeInfo_1.findIndex(function (nodeType) {\n return nodeType === node.nodeType;\n });\n });\n }\n\n var propertyKeys = getAllSortProperties(nodes); // 所有节点属性特征向量集合\n\n allPropertiesWeight = getPropertyWeight(propertyKeys, nodes);\n }\n\n var uniqueId = 1;\n var clusters = {};\n var nodeMap = {}; // init the clusters and nodeMap\n\n nodes.forEach(function (node, i) {\n var cid = String(uniqueId++);\n node.clusterId = cid;\n clusters[cid] = {\n id: cid,\n nodes: [node]\n };\n nodeMap[node.id] = {\n node: node,\n idx: i\n };\n }); // the adjacent matrix of calNodes inside clusters\n\n var adjMatrix = Object(_adjacent_matrix__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(graphData, directed); // the sum of each row in adjacent matrix\n\n var ks = [];\n /**\n * neighbor nodes (id for key and weight for value) for each node\n * neighbors = {\n * id(node_id): { id(neighbor_1_id): weight(weight of the edge), id(neighbor_2_id): weight(weight of the edge), ... },\n * ...\n * }\n */\n\n var neighbors = {}; // the sum of the weights of all edges in the graph\n\n var m = 0;\n adjMatrix.forEach(function (row, i) {\n var k = 0;\n var iid = nodes[i].id;\n neighbors[iid] = {};\n row.forEach(function (entry, j) {\n if (!entry) return;\n k += entry;\n var jid = nodes[j].id;\n neighbors[iid][jid] = entry;\n m += entry;\n });\n ks.push(k);\n });\n m /= 2;\n var totalModularity = Infinity;\n var previousModularity = Infinity;\n var iter = 0;\n var finalNodes = [];\n var finalClusters = {};\n\n while (true) {\n if (inertialModularity && nodes.every(function (node) {\n return node.hasOwnProperty('properties');\n })) {\n totalModularity = getModularity(nodes, adjMatrix, ks, m) + getInertialModularity(nodes, allPropertiesWeight) * inertialWeight;\n } else {\n totalModularity = getModularity(nodes, adjMatrix, ks, m);\n } // 第一次迭代previousModularity直接赋值\n\n\n if (iter === 0) {\n previousModularity = totalModularity;\n finalNodes = nodes;\n finalClusters = clusters;\n }\n\n var increaseWithinThreshold = totalModularity > 0 && totalModularity > previousModularity && totalModularity - previousModularity < threshold; // 总模块度增加才更新最优解\n\n if (totalModularity > previousModularity) {\n finalNodes = nodes.map(function (node) {\n return {\n node: node,\n clusterId: node.clusterId\n };\n });\n finalClusters = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"clone\"])(clusters);\n previousModularity = totalModularity;\n } // whether to terminate the iterations\n\n\n if (increaseWithinThreshold || iter > 100) {\n break;\n }\n\n ;\n iter++; // pre compute some values for current clusters\n\n Object.keys(clusters).forEach(function (clusterId) {\n // sum of weights of edges to nodes in cluster\n var sumTot = 0;\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n\n if (sourceClusterId === clusterId && targetClusterId !== clusterId || targetClusterId === clusterId && sourceClusterId !== clusterId) {\n sumTot = sumTot + (edge[weightPropertyName] || 1);\n }\n });\n clusters[clusterId].sumTot = sumTot;\n }); // move the nodes to increase the delta modularity\n\n nodes.forEach(function (node, i) {\n var selfCluster = clusters[node.clusterId];\n var bestIncrease = 0;\n var bestCluster;\n var commonParam = ks[i] / (2 * m); // sum of weights of edges from node to nodes in cluster\n\n var kiin = 0;\n var selfClusterNodes = selfCluster.nodes;\n selfClusterNodes.forEach(function (scNode) {\n var scNodeIdx = nodeMap[scNode.id].idx;\n kiin += adjMatrix[i][scNodeIdx] || 0;\n }); // the modurarity for **removing** the node i from the origin cluster of node i\n\n var removeModurarity = kiin - selfCluster.sumTot * commonParam; // nodes for **removing** node i into this neighbor cluster\n\n var selfClusterNodesAfterRemove = selfClusterNodes.filter(function (scNode) {\n return scNode.id !== node.id;\n });\n var propertiesWeightRemove = [];\n selfClusterNodesAfterRemove.forEach(function (nodeRemove, index) {\n propertiesWeightRemove[index] = allPropertiesWeight[nodeRemove.originIndex];\n }); // the inertialModularity for **removing** the node i from the origin cluster of node i\n\n var removeInertialModularity = getInertialModularity(selfClusterNodesAfterRemove, allPropertiesWeight) * inertialWeight; // the neightbors of the node\n\n var nodeNeighborIds = neighbors[node.id];\n Object.keys(nodeNeighborIds).forEach(function (neighborNodeId) {\n var neighborNode = nodeMap[neighborNodeId].node;\n var neighborClusterId = neighborNode.clusterId; // if the node and the neighbor of node are in the same cluster, reutrn\n\n if (neighborClusterId === node.clusterId) return;\n var neighborCluster = clusters[neighborClusterId];\n var clusterNodes = neighborCluster.nodes; // if the cluster is empty, remove the cluster and return\n\n if (!clusterNodes || !clusterNodes.length) return; // sum of weights of edges from node to nodes in cluster\n\n var neighborClusterKiin = 0;\n clusterNodes.forEach(function (cNode) {\n var cNodeIdx = nodeMap[cNode.id].idx;\n neighborClusterKiin += adjMatrix[i][cNodeIdx] || 0;\n }); // the modurarity for **adding** node i into this neighbor cluster\n\n var addModurarity = neighborClusterKiin - neighborCluster.sumTot * commonParam; // nodes for **adding** node i into this neighbor cluster\n\n var clusterNodesAfterAdd = clusterNodes.concat([node]);\n var propertiesWeightAdd = [];\n clusterNodesAfterAdd.forEach(function (nodeAdd, index) {\n propertiesWeightAdd[index] = allPropertiesWeight[nodeAdd.originIndex];\n }); // the inertialModularity for **adding** node i into this neighbor cluster\n\n var addInertialModularity = getInertialModularity(clusterNodesAfterAdd, allPropertiesWeight) * inertialWeight; // the increase modurarity is the difference between addModurarity and removeModurarity\n\n var increase = addModurarity - removeModurarity;\n\n if (inertialModularity) {\n increase = addModurarity + addInertialModularity - (removeModurarity + removeInertialModularity);\n } // find the best cluster to move node i into\n\n\n if (increase > bestIncrease) {\n bestIncrease = increase;\n bestCluster = neighborCluster;\n }\n }); // if found a best cluster to move into\n\n if (bestIncrease > 0) {\n bestCluster.nodes.push(node);\n var previousClusterId_1 = node.clusterId;\n node.clusterId = bestCluster.id; // move the node to the best cluster\n\n var nodeInSelfClusterIdx = selfCluster.nodes.indexOf(node); // remove from origin cluster\n\n selfCluster.nodes.splice(nodeInSelfClusterIdx, 1); // update sumTot for clusters\n // sum of weights of edges to nodes in cluster\n\n var neighborClusterSumTot_1 = 0;\n var selfClusterSumTot_1 = 0;\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n\n if (sourceClusterId === bestCluster.id && targetClusterId !== bestCluster.id || targetClusterId === bestCluster.id && sourceClusterId !== bestCluster.id) {\n neighborClusterSumTot_1 = neighborClusterSumTot_1 + (edge[weightPropertyName] || 1);\n }\n\n if (sourceClusterId === previousClusterId_1 && targetClusterId !== previousClusterId_1 || targetClusterId === previousClusterId_1 && sourceClusterId !== previousClusterId_1) {\n selfClusterSumTot_1 = selfClusterSumTot_1 + (edge[weightPropertyName] || 1);\n }\n }); // the nodes of the clusters to move into and remove are changed, update their sumTot\n\n bestCluster.sumTot = neighborClusterSumTot_1;\n selfCluster.sumTot = selfClusterSumTot_1;\n }\n });\n } // delete the empty clusters, assign increasing clusterId\n\n\n var newClusterIdMap = {};\n var clusterIdx = 0;\n Object.keys(finalClusters).forEach(function (clusterId) {\n var cluster = finalClusters[clusterId];\n\n if (!cluster.nodes || !cluster.nodes.length) {\n delete finalClusters[clusterId];\n return;\n }\n\n var newId = String(clusterIdx + 1);\n\n if (newId === clusterId) {\n return;\n }\n\n cluster.id = newId;\n cluster.nodes = cluster.nodes.map(function (item) {\n return {\n id: item.id,\n clusterId: newId\n };\n });\n finalClusters[newId] = cluster;\n newClusterIdMap[clusterId] = newId;\n delete finalClusters[clusterId];\n clusterIdx++;\n }); // restore node clusterId\n\n finalNodes.forEach(function (nodeInfo) {\n var node = nodeInfo.node,\n clusterId = nodeInfo.clusterId;\n node.clusterId = clusterId;\n if (node.clusterId && newClusterIdMap[node.clusterId]) node.clusterId = newClusterIdMap[node.clusterId];\n }); // get the cluster edges\n\n var clusterEdges = [];\n var clusterEdgeMap = {};\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var weight = edge[weightPropertyName] || 1;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n var newEdgeId = \"\".concat(sourceClusterId, \"---\").concat(targetClusterId);\n\n if (clusterEdgeMap[newEdgeId]) {\n clusterEdgeMap[newEdgeId].weight += weight;\n clusterEdgeMap[newEdgeId].count++;\n } else {\n var newEdge = {\n source: sourceClusterId,\n target: targetClusterId,\n weight: weight,\n count: 1\n };\n clusterEdgeMap[newEdgeId] = newEdge;\n clusterEdges.push(newEdge);\n }\n });\n var clustersArray = [];\n Object.keys(finalClusters).forEach(function (clusterId) {\n clustersArray.push(finalClusters[clusterId]);\n });\n return {\n clusters: clustersArray,\n clusterEdges: clusterEdges\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (louvain);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2xvdXZhaW4uanM/MzZiOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW1DO0FBQ1U7QUFDVDtBQUNrQjs7QUFFdEQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLFlBQVk7QUFDN0I7O0FBRUEsbUJBQW1CLFlBQVk7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7O0FBR0Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5REFBeUQseURBQVMsb0RBQW9ELHVEQUFPO0FBQzdIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHLEVBQUU7O0FBRUw7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQLGdDQUFnQyx5REFBUywyQkFBMkIsdURBQU87QUFDM0U7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0gsRUFBRTs7O0FBR0Y7QUFDQTs7QUFFQSxpQkFBaUIsa0JBQWtCO0FBQ25DO0FBQ0E7O0FBRUE7QUFDQSxFQUFFOzs7QUFHRjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDRCQUE0QixxREFBTTs7QUFFbEMsaUJBQWlCLFlBQVk7QUFDN0IsOENBQThDLHFEQUFNO0FBQ3BELEdBQUc7OztBQUdIO0FBQ0EsNEJBQTRCOztBQUU1Qjs7QUFFQSxpQkFBaUIsWUFBWTtBQUM3QiwwQkFBMEIscURBQU07QUFDaEM7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUgsaUJBQWlCLFlBQVk7QUFDN0IsMEJBQTBCLHFEQUFNO0FBQ2hDOztBQUVBLG1CQUFtQixZQUFZO0FBQy9CO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDRCQUE0QixxREFBTTtBQUNsQztBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBOztBQUVBLGlCQUFpQixZQUFZO0FBQzdCOztBQUVBLG1CQUFtQixZQUFZO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7O0FBRUEsbURBQW1EOztBQUVuRDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxtQkFBbUI7O0FBRW5CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7O0FBRUwsa0JBQWtCLGdFQUFZLHNCQUFzQjs7QUFFcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isb0dBQW9HO0FBQ3hIO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUI7O0FBRXJCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsa0pBQWtKOztBQUVsSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1Asc0JBQXNCLHdEQUFLO0FBQzNCO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBOztBQUVBO0FBQ0EsV0FBVzs7QUFFWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3Qzs7QUFFeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sRUFBRTs7QUFFVCxxRUFBcUU7O0FBRXJFO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTyxFQUFFOztBQUVULDhIQUE4SDs7QUFFOUg7QUFDQTtBQUNBO0FBQ0EsdURBQXVEOztBQUV2RDtBQUNBO0FBQ0EsaURBQWlEOztBQUVqRCwwREFBMEQ7O0FBRTFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxFQUFFOztBQUVYLHVGQUF1Rjs7QUFFdkY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEVBQUU7O0FBRVgsc0hBQXNIOztBQUV0SDs7QUFFQTtBQUNBO0FBQ0EsU0FBUzs7O0FBR1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDOztBQUV4QyxtRUFBbUU7O0FBRW5FLDBEQUEwRDtBQUMxRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUyxFQUFFOztBQUVYO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyxFQUFFOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWUsc0VBQU8iLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL2xvdXZhaW4uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjbG9uZSB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IGdldEFkak1hdHJpeCBmcm9tICcuL2FkamFjZW50LW1hdHJpeCc7XG5pbXBvcnQgVmVjdG9yIGZyb20gJy4vdXRpbHMvdmVjdG9yJztcbmltcG9ydCB7IHNlY29uZFJlZywgZGF0ZVJlZyB9IGZyb20gJy4vY29uc3RhbnRzL3RpbWUnO1xuXG52YXIgZ2V0TW9kdWxhcml0eSA9IGZ1bmN0aW9uIGdldE1vZHVsYXJpdHkobm9kZXMsIGFkak1hdHJpeCwga3MsIG0pIHtcbiAgdmFyIGxlbmd0aCA9IGFkak1hdHJpeC5sZW5ndGg7XG4gIHZhciBwYXJhbSA9IDIgKiBtO1xuICB2YXIgbW9kdWxhcml0eSA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIHZhciBjbHVzdGVyaSA9IG5vZGVzW2ldLmNsdXN0ZXJJZDtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBjbHVzdGVyaiA9IG5vZGVzW2pdLmNsdXN0ZXJJZDtcbiAgICAgIGlmIChjbHVzdGVyaSAhPT0gY2x1c3RlcmopIGNvbnRpbnVlO1xuICAgICAgdmFyIGVudHJ5ID0gYWRqTWF0cml4W2ldW2pdIHx8IDA7XG4gICAgICB2YXIga2kgPSBrc1tpXSB8fCAwO1xuICAgICAgdmFyIGtqID0ga3Nbal0gfHwgMDtcbiAgICAgIG1vZHVsYXJpdHkgKz0gZW50cnkgLSBraSAqIGtqIC8gcGFyYW07XG4gICAgfVxuICB9XG5cbiAgbW9kdWxhcml0eSAqPSAxIC8gcGFyYW07XG4gIHJldHVybiBtb2R1bGFyaXR5O1xufTsgLy8g6I635Y+W5omA5pyJ5bGe5oCn5bm25o6S5bqPXG5cblxudmFyIGdldEFsbFNvcnRQcm9wZXJ0aWVzID0gZnVuY3Rpb24gZ2V0QWxsU29ydFByb3BlcnRpZXMobm9kZXMpIHtcbiAgaWYgKG5vZGVzID09PSB2b2lkIDApIHtcbiAgICBub2RlcyA9IFtdO1xuICB9XG5cbiAgdmFyIHByb3BlcnR5S2V5SW5mbyA9IHt9O1xuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgT2JqZWN0LmtleXMobm9kZS5wcm9wZXJ0aWVzKS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wZXJ0eUtleSkge1xuICAgICAgLy8g55uu5YmN6L+H5ruk5Y+q5L+d55WZ5Y+v5Lul6L2s5oiQ5pWw5YC85Z6L55qE5oiW5pel5pyf5Z6L55qELCB0b2RvOiDnu5/kuIDovazmiJBvbmUtaG9054m55b6B5ZCR6YePXG4gICAgICBpZiAoIVwiXCIuY29uY2F0KG5vZGUucHJvcGVydGllc1twcm9wZXJ0eUtleV0pLm1hdGNoKHNlY29uZFJlZykgJiYgIVwiXCIuY29uY2F0KG5vZGUucHJvcGVydGllc1twcm9wZXJ0eUtleV0pLm1hdGNoKGRhdGVSZWcpICYmIGlzTmFOKE51bWJlcihub2RlLnByb3BlcnRpZXNbcHJvcGVydHlLZXldKSkgfHwgcHJvcGVydHlLZXkgPT09ICdpZCcpIHtcbiAgICAgICAgaWYgKHByb3BlcnR5S2V5SW5mby5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eUtleSkpIHtcbiAgICAgICAgICBkZWxldGUgcHJvcGVydHlLZXlJbmZvW3Byb3BlcnR5S2V5XTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHByb3BlcnR5S2V5SW5mby5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eUtleSkpIHtcbiAgICAgICAgcHJvcGVydHlLZXlJbmZvW3Byb3BlcnR5S2V5XSArPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvcGVydHlLZXlJbmZvW3Byb3BlcnR5S2V5XSA9IDE7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pOyAvLyDlj5Z0b3A1MOeahOWxnuaAp1xuXG4gIHZhciBzb3J0S2V5cyA9IE9iamVjdC5rZXlzKHByb3BlcnR5S2V5SW5mbykuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgIHJldHVybiBwcm9wZXJ0eUtleUluZm9bYl0gLSBwcm9wZXJ0eUtleUluZm9bYV07XG4gIH0pO1xuICByZXR1cm4gc29ydEtleXMubGVuZ3RoIDwgMTAwID8gc29ydEtleXMgOiBzb3J0S2V5cy5zbGljZSgwLCAxMDApO1xufTtcblxudmFyIHByb2Nlc3NQcm9wZXJ0eSA9IGZ1bmN0aW9uIHByb2Nlc3NQcm9wZXJ0eShwcm9wZXJ0aWVzLCBwcm9wZXJ0eUtleXMpIHtcbiAgcmV0dXJuIHByb3BlcnR5S2V5cy5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgIGlmIChwcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIC8vIOWPr+S7pei9rOaIkOaVsOWAvOeahOebtOaOpei9rOaIkOaVsOWAvFxuICAgICAgaWYgKCFpc05hTihOdW1iZXIocHJvcGVydGllc1trZXldKSkpIHtcbiAgICAgICAgcmV0dXJuIE51bWJlcihwcm9wZXJ0aWVzW2tleV0pO1xuICAgICAgfSAvLyDml7bpl7TlnovnmoTovazmiJDml7bpl7TmiLNcblxuXG4gICAgICBpZiAocHJvcGVydGllc1trZXldLm1hdGNoKHNlY29uZFJlZykgfHwgcHJvcGVydGllc1trZXldLm1hdGNoKGRhdGVSZWcpKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcmV0dXJuIE51bWJlcihEYXRlLnBhcnNlKG5ldyBEYXRlKHByb3BlcnRpZXNba2V5XSkpKSAvIDEwMDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG4gIH0pO1xufTsgLy8g6I635Y+W5bGe5oCn54m55b6B5p2D6YeNXG5cblxudmFyIGdldFByb3BlcnR5V2VpZ2h0ID0gZnVuY3Rpb24gZ2V0UHJvcGVydHlXZWlnaHQocHJvcGVydHlLZXlzLCBub2Rlcykge1xuICB2YXIgYWxsUHJvcGVydGllc1dlaWdodCA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICBhbGxQcm9wZXJ0aWVzV2VpZ2h0W2ldID0gcHJvY2Vzc1Byb3BlcnR5KG5vZGVzW2ldLnByb3BlcnRpZXMsIHByb3BlcnR5S2V5cyk7XG4gIH1cblxuICByZXR1cm4gYWxsUHJvcGVydGllc1dlaWdodDtcbn07IC8vIOaooeWdl+aDr+aAp+W6pu+8jOihoemHj+WxnuaAp+ebuOS8vOW6plxuXG5cbnZhciBnZXRJbmVydGlhbE1vZHVsYXJpdHkgPSBmdW5jdGlvbiBnZXRJbmVydGlhbE1vZHVsYXJpdHkobm9kZXMsIGFsbFByb3BlcnRpZXNXZWlnaHQpIHtcbiAgaWYgKG5vZGVzID09PSB2b2lkIDApIHtcbiAgICBub2RlcyA9IFtdO1xuICB9XG5cbiAgdmFyIGxlbmd0aCA9IG5vZGVzLmxlbmd0aDtcbiAgdmFyIHRvdGFsUHJvcGVydGllcyA9IG5ldyBWZWN0b3IoW10pO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICB0b3RhbFByb3BlcnRpZXMgPSB0b3RhbFByb3BlcnRpZXMuYWRkKG5ldyBWZWN0b3IoYWxsUHJvcGVydGllc1dlaWdodFtpXSkpO1xuICB9IC8vIOWdh+WAvOWQkemHj1xuXG5cbiAgdmFyIGF2Z1Byb3BlcnRpZXMgPSB0b3RhbFByb3BlcnRpZXMuYXZnKGxlbmd0aCk7XG4gIGF2Z1Byb3BlcnRpZXMubm9ybWFsaXplKCk7IC8vIOiKgueCuembhuWQiOeahOaWueW3rjog6IqC54K5duS4juWdh+WAvOWQkemHj+eahOW5s+aWueasp+W8j+i3neemu+S5i+WSjFxuXG4gIHZhciB2YXJpYW5jZSA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIHZhciBwcm9wZXJ0aWVzaSA9IG5ldyBWZWN0b3IoYWxsUHJvcGVydGllc1dlaWdodFtpXSk7XG4gICAgdmFyIHNxdWFyZUV1Y2xpZGVhbkRpc3RhbmNlID0gcHJvcGVydGllc2kuc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2UoYXZnUHJvcGVydGllcyk7XG4gICAgdmFyaWFuY2UgKz0gc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2U7XG4gIH0gLy8g5Lu75oSP5Lik54K56Ze055qE5qyn5byP5bmz5pa56Led56a7XG5cblxuICB2YXIgc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2VJbmZvID0gW107XG4gIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKCkge1xuICAgIHNxdWFyZUV1Y2xpZGVhbkRpc3RhbmNlSW5mby5wdXNoKFtdKTtcbiAgfSk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIHZhciBwcm9wZXJ0aWVzaSA9IG5ldyBWZWN0b3IoYWxsUHJvcGVydGllc1dlaWdodFtpXSk7XG4gICAgbm9kZXNbaV1bJ2NsdXN0ZXJJbmVydGlhbCddID0gMDtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGVuZ3RoOyBqKyspIHtcbiAgICAgIGlmIChpID09PSBqKSB7XG4gICAgICAgIHNxdWFyZUV1Y2xpZGVhbkRpc3RhbmNlSW5mb1tpXVtqXSA9IDA7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgcHJvcGVydGllc2ogPSBuZXcgVmVjdG9yKGFsbFByb3BlcnRpZXNXZWlnaHRbal0pO1xuICAgICAgc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2VJbmZvW2ldW2pdID0gcHJvcGVydGllc2kuc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2UocHJvcGVydGllc2opO1xuICAgICAgbm9kZXNbaV1bJ2NsdXN0ZXJJbmVydGlhbCddICs9IHNxdWFyZUV1Y2xpZGVhbkRpc3RhbmNlSW5mb1tpXVtqXTtcbiAgICB9XG4gIH0gLy8g6K6h566X5qih5Z2X5oOv5oCn5bqmXG5cblxuICB2YXIgaW5lcnRpYWxNb2R1bGFyaXR5ID0gMDtcbiAgdmFyIHBhcmFtID0gMiAqIGxlbmd0aCAqIHZhcmlhbmNlO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgY2x1c3RlcmkgPSBub2Rlc1tpXS5jbHVzdGVySWQ7XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGxlbmd0aDsgaisrKSB7XG4gICAgICB2YXIgY2x1c3RlcmogPSBub2Rlc1tqXS5jbHVzdGVySWQ7XG4gICAgICBpZiAoaSA9PT0gaiB8fCBjbHVzdGVyaSAhPT0gY2x1c3RlcmopIGNvbnRpbnVlO1xuICAgICAgdmFyIGluZXJ0aWFsID0gbm9kZXNbaV0uY2x1c3RlckluZXJ0aWFsICogbm9kZXNbal0uY2x1c3RlckluZXJ0aWFsIC8gTWF0aC5wb3cocGFyYW0sIDIpIC0gc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2VJbmZvW2ldW2pdIC8gcGFyYW07XG4gICAgICBpbmVydGlhbE1vZHVsYXJpdHkgKz0gaW5lcnRpYWw7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIE51bWJlcihpbmVydGlhbE1vZHVsYXJpdHkudG9GaXhlZCg0KSk7XG59O1xuLyoqXG4gKiDnpL7ljLrlj5HnjrAgbG91dmFpbiDnrpfms5VcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gZGlyZWN0ZWQg5piv5ZCm5pyJ5ZCR5Zu+77yM6buY6K6k5Li6IGZhbHNlXG4gKiBAcGFyYW0gd2VpZ2h0UHJvcGVydHlOYW1lIOadg+mHjeeahOWxnuaAp+Wtl+autVxuICogQHBhcmFtIHRocmVzaG9sZCDlt67lgLzpmIjlgLxcbiAqIEBwYXJhbSBpbmVydGlhbE1vZHVsYXJpdHkg5piv5ZCm5L2/55So5oOv5oCn5qih5Z2X5bqm77yI5Y2z6IqC54K55bGe5oCn55u45Ly85oCn77yJXG4gKi9cblxuXG52YXIgbG91dmFpbiA9IGZ1bmN0aW9uIGxvdXZhaW4oZ3JhcGhEYXRhLCBkaXJlY3RlZCwgd2VpZ2h0UHJvcGVydHlOYW1lLCB0aHJlc2hvbGQsIGluZXJ0aWFsTW9kdWxhcml0eSwgaW5lcnRpYWxXZWlnaHQpIHtcbiAgaWYgKGRpcmVjdGVkID09PSB2b2lkIDApIHtcbiAgICBkaXJlY3RlZCA9IGZhbHNlO1xuICB9XG5cbiAgaWYgKHdlaWdodFByb3BlcnR5TmFtZSA9PT0gdm9pZCAwKSB7XG4gICAgd2VpZ2h0UHJvcGVydHlOYW1lID0gJ3dlaWdodCc7XG4gIH1cblxuICBpZiAodGhyZXNob2xkID09PSB2b2lkIDApIHtcbiAgICB0aHJlc2hvbGQgPSAwLjAwMDE7XG4gIH1cblxuICBpZiAoaW5lcnRpYWxNb2R1bGFyaXR5ID09PSB2b2lkIDApIHtcbiAgICBpbmVydGlhbE1vZHVsYXJpdHkgPSBmYWxzZTtcbiAgfVxuXG4gIGlmIChpbmVydGlhbFdlaWdodCA9PT0gdm9pZCAwKSB7XG4gICAgaW5lcnRpYWxXZWlnaHQgPSAxO1xuICB9IC8vIHRoZSBvcmlnaW4gZGF0YVxuXG5cbiAgdmFyIF9hID0gZ3JhcGhEYXRhLm5vZGVzLFxuICAgICAgbm9kZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYSxcbiAgICAgIF9iID0gZ3JhcGhEYXRhLmVkZ2VzLFxuICAgICAgZWRnZXMgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYjtcbiAgdmFyIGFsbFByb3BlcnRpZXNXZWlnaHQgPSBbXTtcblxuICBpZiAoaW5lcnRpYWxNb2R1bGFyaXR5KSB7XG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaW5kZXgpIHtcbiAgICAgIG5vZGUucHJvcGVydGllcyA9IG5vZGUucHJvcGVydGllcyB8fCB7fTtcbiAgICAgIG5vZGUub3JpZ2luSW5kZXggPSBpbmRleDtcbiAgICB9KTtcbiAgICB2YXIgbm9kZVR5cGVJbmZvXzEgPSBbXTtcblxuICAgIGlmIChub2Rlcy5ldmVyeShmdW5jdGlvbiAobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUuaGFzT3duUHJvcGVydHkoJ25vZGVUeXBlJyk7XG4gICAgfSkpIHtcbiAgICAgIG5vZGVUeXBlSW5mb18xID0gQXJyYXkuZnJvbShuZXcgU2V0KG5vZGVzLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICByZXR1cm4gbm9kZS5ub2RlVHlwZTtcbiAgICAgIH0pKSk7XG4gICAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIG5vZGUucHJvcGVydGllcy5ub2RlVHlwZSA9IG5vZGVUeXBlSW5mb18xLmZpbmRJbmRleChmdW5jdGlvbiAobm9kZVR5cGUpIHtcbiAgICAgICAgICByZXR1cm4gbm9kZVR5cGUgPT09IG5vZGUubm9kZVR5cGU7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdmFyIHByb3BlcnR5S2V5cyA9IGdldEFsbFNvcnRQcm9wZXJ0aWVzKG5vZGVzKTsgLy8g5omA5pyJ6IqC54K55bGe5oCn54m55b6B5ZCR6YeP6ZuG5ZCIXG5cbiAgICBhbGxQcm9wZXJ0aWVzV2VpZ2h0ID0gZ2V0UHJvcGVydHlXZWlnaHQocHJvcGVydHlLZXlzLCBub2Rlcyk7XG4gIH1cblxuICB2YXIgdW5pcXVlSWQgPSAxO1xuICB2YXIgY2x1c3RlcnMgPSB7fTtcbiAgdmFyIG5vZGVNYXAgPSB7fTsgLy8gaW5pdCB0aGUgY2x1c3RlcnMgYW5kIG5vZGVNYXBcblxuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlLCBpKSB7XG4gICAgdmFyIGNpZCA9IFN0cmluZyh1bmlxdWVJZCsrKTtcbiAgICBub2RlLmNsdXN0ZXJJZCA9IGNpZDtcbiAgICBjbHVzdGVyc1tjaWRdID0ge1xuICAgICAgaWQ6IGNpZCxcbiAgICAgIG5vZGVzOiBbbm9kZV1cbiAgICB9O1xuICAgIG5vZGVNYXBbbm9kZS5pZF0gPSB7XG4gICAgICBub2RlOiBub2RlLFxuICAgICAgaWR4OiBpXG4gICAgfTtcbiAgfSk7IC8vIHRoZSBhZGphY2VudCBtYXRyaXggb2YgY2FsTm9kZXMgaW5zaWRlIGNsdXN0ZXJzXG5cbiAgdmFyIGFkak1hdHJpeCA9IGdldEFkak1hdHJpeChncmFwaERhdGEsIGRpcmVjdGVkKTsgLy8gdGhlIHN1bSBvZiBlYWNoIHJvdyBpbiBhZGphY2VudCBtYXRyaXhcblxuICB2YXIga3MgPSBbXTtcbiAgLyoqXG4gICAqIG5laWdoYm9yIG5vZGVzIChpZCBmb3Iga2V5IGFuZCB3ZWlnaHQgZm9yIHZhbHVlKSBmb3IgZWFjaCBub2RlXG4gICAqIG5laWdoYm9ycyA9IHtcbiAgICogIGlkKG5vZGVfaWQpOiB7IGlkKG5laWdoYm9yXzFfaWQpOiB3ZWlnaHQod2VpZ2h0IG9mIHRoZSBlZGdlKSwgaWQobmVpZ2hib3JfMl9pZCk6IHdlaWdodCh3ZWlnaHQgb2YgdGhlIGVkZ2UpLCAuLi4gfSxcbiAgICogIC4uLlxuICAgKiB9XG4gICAqL1xuXG4gIHZhciBuZWlnaGJvcnMgPSB7fTsgLy8gdGhlIHN1bSBvZiB0aGUgd2VpZ2h0cyBvZiBhbGwgZWRnZXMgaW4gdGhlIGdyYXBoXG5cbiAgdmFyIG0gPSAwO1xuICBhZGpNYXRyaXguZm9yRWFjaChmdW5jdGlvbiAocm93LCBpKSB7XG4gICAgdmFyIGsgPSAwO1xuICAgIHZhciBpaWQgPSBub2Rlc1tpXS5pZDtcbiAgICBuZWlnaGJvcnNbaWlkXSA9IHt9O1xuICAgIHJvdy5mb3JFYWNoKGZ1bmN0aW9uIChlbnRyeSwgaikge1xuICAgICAgaWYgKCFlbnRyeSkgcmV0dXJuO1xuICAgICAgayArPSBlbnRyeTtcbiAgICAgIHZhciBqaWQgPSBub2Rlc1tqXS5pZDtcbiAgICAgIG5laWdoYm9yc1tpaWRdW2ppZF0gPSBlbnRyeTtcbiAgICAgIG0gKz0gZW50cnk7XG4gICAgfSk7XG4gICAga3MucHVzaChrKTtcbiAgfSk7XG4gIG0gLz0gMjtcbiAgdmFyIHRvdGFsTW9kdWxhcml0eSA9IEluZmluaXR5O1xuICB2YXIgcHJldmlvdXNNb2R1bGFyaXR5ID0gSW5maW5pdHk7XG4gIHZhciBpdGVyID0gMDtcbiAgdmFyIGZpbmFsTm9kZXMgPSBbXTtcbiAgdmFyIGZpbmFsQ2x1c3RlcnMgPSB7fTtcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGlmIChpbmVydGlhbE1vZHVsYXJpdHkgJiYgbm9kZXMuZXZlcnkoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLmhhc093blByb3BlcnR5KCdwcm9wZXJ0aWVzJyk7XG4gICAgfSkpIHtcbiAgICAgIHRvdGFsTW9kdWxhcml0eSA9IGdldE1vZHVsYXJpdHkobm9kZXMsIGFkak1hdHJpeCwga3MsIG0pICsgZ2V0SW5lcnRpYWxNb2R1bGFyaXR5KG5vZGVzLCBhbGxQcm9wZXJ0aWVzV2VpZ2h0KSAqIGluZXJ0aWFsV2VpZ2h0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0b3RhbE1vZHVsYXJpdHkgPSBnZXRNb2R1bGFyaXR5KG5vZGVzLCBhZGpNYXRyaXgsIGtzLCBtKTtcbiAgICB9IC8vIOesrOS4gOasoei/reS7o3ByZXZpb3VzTW9kdWxhcml0eeebtOaOpei1i+WAvFxuXG5cbiAgICBpZiAoaXRlciA9PT0gMCkge1xuICAgICAgcHJldmlvdXNNb2R1bGFyaXR5ID0gdG90YWxNb2R1bGFyaXR5O1xuICAgICAgZmluYWxOb2RlcyA9IG5vZGVzO1xuICAgICAgZmluYWxDbHVzdGVycyA9IGNsdXN0ZXJzO1xuICAgIH1cblxuICAgIHZhciBpbmNyZWFzZVdpdGhpblRocmVzaG9sZCA9IHRvdGFsTW9kdWxhcml0eSA+IDAgJiYgdG90YWxNb2R1bGFyaXR5ID4gcHJldmlvdXNNb2R1bGFyaXR5ICYmIHRvdGFsTW9kdWxhcml0eSAtIHByZXZpb3VzTW9kdWxhcml0eSA8IHRocmVzaG9sZDsgLy8g5oC75qih5Z2X5bqm5aKe5Yqg5omN5pu05paw5pyA5LyY6KejXG5cbiAgICBpZiAodG90YWxNb2R1bGFyaXR5ID4gcHJldmlvdXNNb2R1bGFyaXR5KSB7XG4gICAgICBmaW5hbE5vZGVzID0gbm9kZXMubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbm9kZTogbm9kZSxcbiAgICAgICAgICBjbHVzdGVySWQ6IG5vZGUuY2x1c3RlcklkXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICAgIGZpbmFsQ2x1c3RlcnMgPSBjbG9uZShjbHVzdGVycyk7XG4gICAgICBwcmV2aW91c01vZHVsYXJpdHkgPSB0b3RhbE1vZHVsYXJpdHk7XG4gICAgfSAvLyB3aGV0aGVyIHRvIHRlcm1pbmF0ZSB0aGUgaXRlcmF0aW9uc1xuXG5cbiAgICBpZiAoaW5jcmVhc2VXaXRoaW5UaHJlc2hvbGQgfHwgaXRlciA+IDEwMCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgO1xuICAgIGl0ZXIrKzsgLy8gcHJlIGNvbXB1dGUgc29tZSB2YWx1ZXMgZm9yIGN1cnJlbnQgY2x1c3RlcnNcblxuICAgIE9iamVjdC5rZXlzKGNsdXN0ZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChjbHVzdGVySWQpIHtcbiAgICAgIC8vIHN1bSBvZiB3ZWlnaHRzIG9mIGVkZ2VzIHRvIG5vZGVzIGluIGNsdXN0ZXJcbiAgICAgIHZhciBzdW1Ub3QgPSAwO1xuICAgICAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICB2YXIgc291cmNlID0gZWRnZS5zb3VyY2UsXG4gICAgICAgICAgICB0YXJnZXQgPSBlZGdlLnRhcmdldDtcbiAgICAgICAgdmFyIHNvdXJjZUNsdXN0ZXJJZCA9IG5vZGVNYXBbc291cmNlXS5ub2RlLmNsdXN0ZXJJZDtcbiAgICAgICAgdmFyIHRhcmdldENsdXN0ZXJJZCA9IG5vZGVNYXBbdGFyZ2V0XS5ub2RlLmNsdXN0ZXJJZDtcblxuICAgICAgICBpZiAoc291cmNlQ2x1c3RlcklkID09PSBjbHVzdGVySWQgJiYgdGFyZ2V0Q2x1c3RlcklkICE9PSBjbHVzdGVySWQgfHwgdGFyZ2V0Q2x1c3RlcklkID09PSBjbHVzdGVySWQgJiYgc291cmNlQ2x1c3RlcklkICE9PSBjbHVzdGVySWQpIHtcbiAgICAgICAgICBzdW1Ub3QgPSBzdW1Ub3QgKyAoZWRnZVt3ZWlnaHRQcm9wZXJ0eU5hbWVdIHx8IDEpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGNsdXN0ZXJzW2NsdXN0ZXJJZF0uc3VtVG90ID0gc3VtVG90O1xuICAgIH0pOyAvLyBtb3ZlIHRoZSBub2RlcyB0byBpbmNyZWFzZSB0aGUgZGVsdGEgbW9kdWxhcml0eVxuXG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaSkge1xuICAgICAgdmFyIHNlbGZDbHVzdGVyID0gY2x1c3RlcnNbbm9kZS5jbHVzdGVySWRdO1xuICAgICAgdmFyIGJlc3RJbmNyZWFzZSA9IDA7XG4gICAgICB2YXIgYmVzdENsdXN0ZXI7XG4gICAgICB2YXIgY29tbW9uUGFyYW0gPSBrc1tpXSAvICgyICogbSk7IC8vIHN1bSBvZiB3ZWlnaHRzIG9mIGVkZ2VzIGZyb20gbm9kZSB0byBub2RlcyBpbiBjbHVzdGVyXG5cbiAgICAgIHZhciBraWluID0gMDtcbiAgICAgIHZhciBzZWxmQ2x1c3Rlck5vZGVzID0gc2VsZkNsdXN0ZXIubm9kZXM7XG4gICAgICBzZWxmQ2x1c3Rlck5vZGVzLmZvckVhY2goZnVuY3Rpb24gKHNjTm9kZSkge1xuICAgICAgICB2YXIgc2NOb2RlSWR4ID0gbm9kZU1hcFtzY05vZGUuaWRdLmlkeDtcbiAgICAgICAga2lpbiArPSBhZGpNYXRyaXhbaV1bc2NOb2RlSWR4XSB8fCAwO1xuICAgICAgfSk7IC8vIHRoZSBtb2R1cmFyaXR5IGZvciAqKnJlbW92aW5nKiogdGhlIG5vZGUgaSBmcm9tIHRoZSBvcmlnaW4gY2x1c3RlciBvZiBub2RlIGlcblxuICAgICAgdmFyIHJlbW92ZU1vZHVyYXJpdHkgPSBraWluIC0gc2VsZkNsdXN0ZXIuc3VtVG90ICogY29tbW9uUGFyYW07IC8vIG5vZGVzIGZvciAqKnJlbW92aW5nKiogbm9kZSBpIGludG8gdGhpcyBuZWlnaGJvciBjbHVzdGVyXG5cbiAgICAgIHZhciBzZWxmQ2x1c3Rlck5vZGVzQWZ0ZXJSZW1vdmUgPSBzZWxmQ2x1c3Rlck5vZGVzLmZpbHRlcihmdW5jdGlvbiAoc2NOb2RlKSB7XG4gICAgICAgIHJldHVybiBzY05vZGUuaWQgIT09IG5vZGUuaWQ7XG4gICAgICB9KTtcbiAgICAgIHZhciBwcm9wZXJ0aWVzV2VpZ2h0UmVtb3ZlID0gW107XG4gICAgICBzZWxmQ2x1c3Rlck5vZGVzQWZ0ZXJSZW1vdmUuZm9yRWFjaChmdW5jdGlvbiAobm9kZVJlbW92ZSwgaW5kZXgpIHtcbiAgICAgICAgcHJvcGVydGllc1dlaWdodFJlbW92ZVtpbmRleF0gPSBhbGxQcm9wZXJ0aWVzV2VpZ2h0W25vZGVSZW1vdmUub3JpZ2luSW5kZXhdO1xuICAgICAgfSk7IC8vIHRoZSBpbmVydGlhbE1vZHVsYXJpdHkgZm9yICoqcmVtb3ZpbmcqKiB0aGUgbm9kZSBpIGZyb20gdGhlIG9yaWdpbiBjbHVzdGVyIG9mIG5vZGUgaVxuXG4gICAgICB2YXIgcmVtb3ZlSW5lcnRpYWxNb2R1bGFyaXR5ID0gZ2V0SW5lcnRpYWxNb2R1bGFyaXR5KHNlbGZDbHVzdGVyTm9kZXNBZnRlclJlbW92ZSwgYWxsUHJvcGVydGllc1dlaWdodCkgKiBpbmVydGlhbFdlaWdodDsgLy8gdGhlIG5laWdodGJvcnMgb2YgdGhlIG5vZGVcblxuICAgICAgdmFyIG5vZGVOZWlnaGJvcklkcyA9IG5laWdoYm9yc1tub2RlLmlkXTtcbiAgICAgIE9iamVjdC5rZXlzKG5vZGVOZWlnaGJvcklkcykuZm9yRWFjaChmdW5jdGlvbiAobmVpZ2hib3JOb2RlSWQpIHtcbiAgICAgICAgdmFyIG5laWdoYm9yTm9kZSA9IG5vZGVNYXBbbmVpZ2hib3JOb2RlSWRdLm5vZGU7XG4gICAgICAgIHZhciBuZWlnaGJvckNsdXN0ZXJJZCA9IG5laWdoYm9yTm9kZS5jbHVzdGVySWQ7IC8vIGlmIHRoZSBub2RlIGFuZCB0aGUgbmVpZ2hib3Igb2Ygbm9kZSBhcmUgaW4gdGhlIHNhbWUgY2x1c3RlciwgcmV1dHJuXG5cbiAgICAgICAgaWYgKG5laWdoYm9yQ2x1c3RlcklkID09PSBub2RlLmNsdXN0ZXJJZCkgcmV0dXJuO1xuICAgICAgICB2YXIgbmVpZ2hib3JDbHVzdGVyID0gY2x1c3RlcnNbbmVpZ2hib3JDbHVzdGVySWRdO1xuICAgICAgICB2YXIgY2x1c3Rlck5vZGVzID0gbmVpZ2hib3JDbHVzdGVyLm5vZGVzOyAvLyBpZiB0aGUgY2x1c3RlciBpcyBlbXB0eSwgcmVtb3ZlIHRoZSBjbHVzdGVyIGFuZCByZXR1cm5cblxuICAgICAgICBpZiAoIWNsdXN0ZXJOb2RlcyB8fCAhY2x1c3Rlck5vZGVzLmxlbmd0aCkgcmV0dXJuOyAvLyBzdW0gb2Ygd2VpZ2h0cyBvZiBlZGdlcyBmcm9tIG5vZGUgdG8gbm9kZXMgaW4gY2x1c3RlclxuXG4gICAgICAgIHZhciBuZWlnaGJvckNsdXN0ZXJLaWluID0gMDtcbiAgICAgICAgY2x1c3Rlck5vZGVzLmZvckVhY2goZnVuY3Rpb24gKGNOb2RlKSB7XG4gICAgICAgICAgdmFyIGNOb2RlSWR4ID0gbm9kZU1hcFtjTm9kZS5pZF0uaWR4O1xuICAgICAgICAgIG5laWdoYm9yQ2x1c3RlcktpaW4gKz0gYWRqTWF0cml4W2ldW2NOb2RlSWR4XSB8fCAwO1xuICAgICAgICB9KTsgLy8gdGhlIG1vZHVyYXJpdHkgZm9yICoqYWRkaW5nKiogbm9kZSBpIGludG8gdGhpcyBuZWlnaGJvciBjbHVzdGVyXG5cbiAgICAgICAgdmFyIGFkZE1vZHVyYXJpdHkgPSBuZWlnaGJvckNsdXN0ZXJLaWluIC0gbmVpZ2hib3JDbHVzdGVyLnN1bVRvdCAqIGNvbW1vblBhcmFtOyAvLyBub2RlcyBmb3IgKiphZGRpbmcqKiBub2RlIGkgaW50byB0aGlzIG5laWdoYm9yIGNsdXN0ZXJcblxuICAgICAgICB2YXIgY2x1c3Rlck5vZGVzQWZ0ZXJBZGQgPSBjbHVzdGVyTm9kZXMuY29uY2F0KFtub2RlXSk7XG4gICAgICAgIHZhciBwcm9wZXJ0aWVzV2VpZ2h0QWRkID0gW107XG4gICAgICAgIGNsdXN0ZXJOb2Rlc0FmdGVyQWRkLmZvckVhY2goZnVuY3Rpb24gKG5vZGVBZGQsIGluZGV4KSB7XG4gICAgICAgICAgcHJvcGVydGllc1dlaWdodEFkZFtpbmRleF0gPSBhbGxQcm9wZXJ0aWVzV2VpZ2h0W25vZGVBZGQub3JpZ2luSW5kZXhdO1xuICAgICAgICB9KTsgLy8gdGhlIGluZXJ0aWFsTW9kdWxhcml0eSBmb3IgKiphZGRpbmcqKiBub2RlIGkgaW50byB0aGlzIG5laWdoYm9yIGNsdXN0ZXJcblxuICAgICAgICB2YXIgYWRkSW5lcnRpYWxNb2R1bGFyaXR5ID0gZ2V0SW5lcnRpYWxNb2R1bGFyaXR5KGNsdXN0ZXJOb2Rlc0FmdGVyQWRkLCBhbGxQcm9wZXJ0aWVzV2VpZ2h0KSAqIGluZXJ0aWFsV2VpZ2h0OyAvLyB0aGUgaW5jcmVhc2UgbW9kdXJhcml0eSBpcyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGFkZE1vZHVyYXJpdHkgYW5kIHJlbW92ZU1vZHVyYXJpdHlcblxuICAgICAgICB2YXIgaW5jcmVhc2UgPSBhZGRNb2R1cmFyaXR5IC0gcmVtb3ZlTW9kdXJhcml0eTtcblxuICAgICAgICBpZiAoaW5lcnRpYWxNb2R1bGFyaXR5KSB7XG4gICAgICAgICAgaW5jcmVhc2UgPSBhZGRNb2R1cmFyaXR5ICsgYWRkSW5lcnRpYWxNb2R1bGFyaXR5IC0gKHJlbW92ZU1vZHVyYXJpdHkgKyByZW1vdmVJbmVydGlhbE1vZHVsYXJpdHkpO1xuICAgICAgICB9IC8vIGZpbmQgdGhlIGJlc3QgY2x1c3RlciB0byBtb3ZlIG5vZGUgaSBpbnRvXG5cblxuICAgICAgICBpZiAoaW5jcmVhc2UgPiBiZXN0SW5jcmVhc2UpIHtcbiAgICAgICAgICBiZXN0SW5jcmVhc2UgPSBpbmNyZWFzZTtcbiAgICAgICAgICBiZXN0Q2x1c3RlciA9IG5laWdoYm9yQ2x1c3RlcjtcbiAgICAgICAgfVxuICAgICAgfSk7IC8vIGlmIGZvdW5kIGEgYmVzdCBjbHVzdGVyIHRvIG1vdmUgaW50b1xuXG4gICAgICBpZiAoYmVzdEluY3JlYXNlID4gMCkge1xuICAgICAgICBiZXN0Q2x1c3Rlci5ub2Rlcy5wdXNoKG5vZGUpO1xuICAgICAgICB2YXIgcHJldmlvdXNDbHVzdGVySWRfMSA9IG5vZGUuY2x1c3RlcklkO1xuICAgICAgICBub2RlLmNsdXN0ZXJJZCA9IGJlc3RDbHVzdGVyLmlkOyAvLyBtb3ZlIHRoZSBub2RlIHRvIHRoZSBiZXN0IGNsdXN0ZXJcblxuICAgICAgICB2YXIgbm9kZUluU2VsZkNsdXN0ZXJJZHggPSBzZWxmQ2x1c3Rlci5ub2Rlcy5pbmRleE9mKG5vZGUpOyAvLyByZW1vdmUgZnJvbSBvcmlnaW4gY2x1c3RlclxuXG4gICAgICAgIHNlbGZDbHVzdGVyLm5vZGVzLnNwbGljZShub2RlSW5TZWxmQ2x1c3RlcklkeCwgMSk7IC8vIHVwZGF0ZSBzdW1Ub3QgZm9yIGNsdXN0ZXJzXG4gICAgICAgIC8vIHN1bSBvZiB3ZWlnaHRzIG9mIGVkZ2VzIHRvIG5vZGVzIGluIGNsdXN0ZXJcblxuICAgICAgICB2YXIgbmVpZ2hib3JDbHVzdGVyU3VtVG90XzEgPSAwO1xuICAgICAgICB2YXIgc2VsZkNsdXN0ZXJTdW1Ub3RfMSA9IDA7XG4gICAgICAgIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICB2YXIgc291cmNlID0gZWRnZS5zb3VyY2UsXG4gICAgICAgICAgICAgIHRhcmdldCA9IGVkZ2UudGFyZ2V0O1xuICAgICAgICAgIHZhciBzb3VyY2VDbHVzdGVySWQgPSBub2RlTWFwW3NvdXJjZV0ubm9kZS5jbHVzdGVySWQ7XG4gICAgICAgICAgdmFyIHRhcmdldENsdXN0ZXJJZCA9IG5vZGVNYXBbdGFyZ2V0XS5ub2RlLmNsdXN0ZXJJZDtcblxuICAgICAgICAgIGlmIChzb3VyY2VDbHVzdGVySWQgPT09IGJlc3RDbHVzdGVyLmlkICYmIHRhcmdldENsdXN0ZXJJZCAhPT0gYmVzdENsdXN0ZXIuaWQgfHwgdGFyZ2V0Q2x1c3RlcklkID09PSBiZXN0Q2x1c3Rlci5pZCAmJiBzb3VyY2VDbHVzdGVySWQgIT09IGJlc3RDbHVzdGVyLmlkKSB7XG4gICAgICAgICAgICBuZWlnaGJvckNsdXN0ZXJTdW1Ub3RfMSA9IG5laWdoYm9yQ2x1c3RlclN1bVRvdF8xICsgKGVkZ2Vbd2VpZ2h0UHJvcGVydHlOYW1lXSB8fCAxKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc291cmNlQ2x1c3RlcklkID09PSBwcmV2aW91c0NsdXN0ZXJJZF8xICYmIHRhcmdldENsdXN0ZXJJZCAhPT0gcHJldmlvdXNDbHVzdGVySWRfMSB8fCB0YXJnZXRDbHVzdGVySWQgPT09IHByZXZpb3VzQ2x1c3RlcklkXzEgJiYgc291cmNlQ2x1c3RlcklkICE9PSBwcmV2aW91c0NsdXN0ZXJJZF8xKSB7XG4gICAgICAgICAgICBzZWxmQ2x1c3RlclN1bVRvdF8xID0gc2VsZkNsdXN0ZXJTdW1Ub3RfMSArIChlZGdlW3dlaWdodFByb3BlcnR5TmFtZV0gfHwgMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTsgLy8gdGhlIG5vZGVzIG9mIHRoZSBjbHVzdGVycyB0byBtb3ZlIGludG8gYW5kIHJlbW92ZSBhcmUgY2hhbmdlZCwgdXBkYXRlIHRoZWlyIHN1bVRvdFxuXG4gICAgICAgIGJlc3RDbHVzdGVyLnN1bVRvdCA9IG5laWdoYm9yQ2x1c3RlclN1bVRvdF8xO1xuICAgICAgICBzZWxmQ2x1c3Rlci5zdW1Ub3QgPSBzZWxmQ2x1c3RlclN1bVRvdF8xO1xuICAgICAgfVxuICAgIH0pO1xuICB9IC8vIGRlbGV0ZSB0aGUgZW1wdHkgY2x1c3RlcnMsIGFzc2lnbiBpbmNyZWFzaW5nIGNsdXN0ZXJJZFxuXG5cbiAgdmFyIG5ld0NsdXN0ZXJJZE1hcCA9IHt9O1xuICB2YXIgY2x1c3RlcklkeCA9IDA7XG4gIE9iamVjdC5rZXlzKGZpbmFsQ2x1c3RlcnMpLmZvckVhY2goZnVuY3Rpb24gKGNsdXN0ZXJJZCkge1xuICAgIHZhciBjbHVzdGVyID0gZmluYWxDbHVzdGVyc1tjbHVzdGVySWRdO1xuXG4gICAgaWYgKCFjbHVzdGVyLm5vZGVzIHx8ICFjbHVzdGVyLm5vZGVzLmxlbmd0aCkge1xuICAgICAgZGVsZXRlIGZpbmFsQ2x1c3RlcnNbY2x1c3RlcklkXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgbmV3SWQgPSBTdHJpbmcoY2x1c3RlcklkeCArIDEpO1xuXG4gICAgaWYgKG5ld0lkID09PSBjbHVzdGVySWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjbHVzdGVyLmlkID0gbmV3SWQ7XG4gICAgY2x1c3Rlci5ub2RlcyA9IGNsdXN0ZXIubm9kZXMubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgY2x1c3RlcklkOiBuZXdJZFxuICAgICAgfTtcbiAgICB9KTtcbiAgICBmaW5hbENsdXN0ZXJzW25ld0lkXSA9IGNsdXN0ZXI7XG4gICAgbmV3Q2x1c3RlcklkTWFwW2NsdXN0ZXJJZF0gPSBuZXdJZDtcbiAgICBkZWxldGUgZmluYWxDbHVzdGVyc1tjbHVzdGVySWRdO1xuICAgIGNsdXN0ZXJJZHgrKztcbiAgfSk7IC8vIHJlc3RvcmUgbm9kZSBjbHVzdGVySWRcblxuICBmaW5hbE5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGVJbmZvKSB7XG4gICAgdmFyIG5vZGUgPSBub2RlSW5mby5ub2RlLFxuICAgICAgICBjbHVzdGVySWQgPSBub2RlSW5mby5jbHVzdGVySWQ7XG4gICAgbm9kZS5jbHVzdGVySWQgPSBjbHVzdGVySWQ7XG4gICAgaWYgKG5vZGUuY2x1c3RlcklkICYmIG5ld0NsdXN0ZXJJZE1hcFtub2RlLmNsdXN0ZXJJZF0pIG5vZGUuY2x1c3RlcklkID0gbmV3Q2x1c3RlcklkTWFwW25vZGUuY2x1c3RlcklkXTtcbiAgfSk7IC8vIGdldCB0aGUgY2x1c3RlciBlZGdlc1xuXG4gIHZhciBjbHVzdGVyRWRnZXMgPSBbXTtcbiAgdmFyIGNsdXN0ZXJFZGdlTWFwID0ge307XG4gIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICB2YXIgc291cmNlID0gZWRnZS5zb3VyY2UsXG4gICAgICAgIHRhcmdldCA9IGVkZ2UudGFyZ2V0O1xuICAgIHZhciB3ZWlnaHQgPSBlZGdlW3dlaWdodFByb3BlcnR5TmFtZV0gfHwgMTtcbiAgICB2YXIgc291cmNlQ2x1c3RlcklkID0gbm9kZU1hcFtzb3VyY2VdLm5vZGUuY2x1c3RlcklkO1xuICAgIHZhciB0YXJnZXRDbHVzdGVySWQgPSBub2RlTWFwW3RhcmdldF0ubm9kZS5jbHVzdGVySWQ7XG4gICAgdmFyIG5ld0VkZ2VJZCA9IFwiXCIuY29uY2F0KHNvdXJjZUNsdXN0ZXJJZCwgXCItLS1cIikuY29uY2F0KHRhcmdldENsdXN0ZXJJZCk7XG5cbiAgICBpZiAoY2x1c3RlckVkZ2VNYXBbbmV3RWRnZUlkXSkge1xuICAgICAgY2x1c3RlckVkZ2VNYXBbbmV3RWRnZUlkXS53ZWlnaHQgKz0gd2VpZ2h0O1xuICAgICAgY2x1c3RlckVkZ2VNYXBbbmV3RWRnZUlkXS5jb3VudCsrO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbmV3RWRnZSA9IHtcbiAgICAgICAgc291cmNlOiBzb3VyY2VDbHVzdGVySWQsXG4gICAgICAgIHRhcmdldDogdGFyZ2V0Q2x1c3RlcklkLFxuICAgICAgICB3ZWlnaHQ6IHdlaWdodCxcbiAgICAgICAgY291bnQ6IDFcbiAgICAgIH07XG4gICAgICBjbHVzdGVyRWRnZU1hcFtuZXdFZGdlSWRdID0gbmV3RWRnZTtcbiAgICAgIGNsdXN0ZXJFZGdlcy5wdXNoKG5ld0VkZ2UpO1xuICAgIH1cbiAgfSk7XG4gIHZhciBjbHVzdGVyc0FycmF5ID0gW107XG4gIE9iamVjdC5rZXlzKGZpbmFsQ2x1c3RlcnMpLmZvckVhY2goZnVuY3Rpb24gKGNsdXN0ZXJJZCkge1xuICAgIGNsdXN0ZXJzQXJyYXkucHVzaChmaW5hbENsdXN0ZXJzW2NsdXN0ZXJJZF0pO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBjbHVzdGVyczogY2x1c3RlcnNBcnJheSxcbiAgICBjbHVzdGVyRWRnZXM6IGNsdXN0ZXJFZGdlc1xuICB9O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgbG91dmFpbjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/louvain.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/mts.js":
/*!************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/mts.js ***!
\************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_union_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./structs/union-find */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/union-find.js\");\n/* harmony import */ var _structs_binary_heap__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./structs/binary-heap */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/binary-heap.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/util.js\");\n\n\n\n/**\n * Prim algorithm,use priority queue,复杂度 O(E+V*logV), V: 节点数量,E: 边的数量\n * refer: https://en.wikipedia.org/wiki/Prim%27s_algorithm\n * @param graph\n * @param weight 指定用于作为边权重的属性,若不指定,则认为所有边权重一致\n */\n\nvar primMST = function primMST(graphData, weight) {\n var selectedEdges = [];\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n\n if (nodes.length === 0) {\n return selectedEdges;\n } // 从nodes[0]开始\n\n\n var currNode = nodes[0];\n var visited = new Set();\n visited.add(currNode); // 用二叉堆维护距已加入节点的其他节点的边的权值\n\n var compareWeight = function compareWeight(a, b) {\n if (weight) {\n return a.weight - b.weight;\n }\n\n return 0;\n };\n\n var edgeQueue = new _structs_binary_heap__WEBPACK_IMPORTED_MODULE_1__[\"default\"](compareWeight);\n Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"getEdgesByNodeId\"])(currNode.id, edges).forEach(function (edge) {\n edgeQueue.insert(edge);\n });\n\n while (!edgeQueue.isEmpty()) {\n // 选取与已加入的结点之间边权最小的结点\n var currEdge = edgeQueue.delMin();\n var source = currEdge.source;\n var target = currEdge.target;\n if (visited.has(source) && visited.has(target)) continue;\n selectedEdges.push(currEdge);\n\n if (!visited.has(source)) {\n visited.add(source);\n Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"getEdgesByNodeId\"])(source, edges).forEach(function (edge) {\n edgeQueue.insert(edge);\n });\n }\n\n if (!visited.has(target)) {\n visited.add(target);\n Object(_util__WEBPACK_IMPORTED_MODULE_2__[\"getEdgesByNodeId\"])(target, edges).forEach(function (edge) {\n edgeQueue.insert(edge);\n });\n }\n }\n\n return selectedEdges;\n};\n/**\n * Kruskal algorithm,复杂度 O(E*logE), E: 边的数量\n * refer: https://en.wikipedia.org/wiki/Kruskal%27s_algorithm\n * @param graph\n * @param weight 指定用于作为边权重的属性,若不指定,则认为所有边权重一致\n * @return IEdge[] 返回构成MST的边的数组\n */\n\n\nvar kruskalMST = function kruskalMST(graphData, weight) {\n var selectedEdges = [];\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n\n if (nodes.length === 0) {\n return selectedEdges;\n } // 若指定weight,则将所有的边按权值从小到大排序\n\n\n var weightEdges = edges.map(function (edge) {\n return edge;\n });\n\n if (weight) {\n weightEdges.sort(function (a, b) {\n return a.weight - b.weight;\n });\n }\n\n var disjointSet = new _structs_union_find__WEBPACK_IMPORTED_MODULE_0__[\"default\"](nodes.map(function (n) {\n return n.id;\n })); // 从权值最小的边开始,如果这条边连接的两个节点于图G中不在同一个连通分量中,则添加这条边\n // 直到遍历完所有点或边\n\n while (weightEdges.length > 0) {\n var curEdge = weightEdges.shift();\n var source = curEdge.source;\n var target = curEdge.target;\n\n if (!disjointSet.connected(source, target)) {\n selectedEdges.push(curEdge);\n disjointSet.union(source, target);\n }\n }\n\n return selectedEdges;\n};\n/**\n * 最小生成树\n * refer: https://en.wikipedia.org/wiki/Kruskal%27s_algorithm\n * @param graph\n * @param weight 指定用于作为边权重的属性,若不指定,则认为所有边权重一致\n * @param algo 'prim' | 'kruskal' 算法类型\n * @return EdgeConfig[] 返回构成MST的边的数组\n */\n\n\nvar minimumSpanningTree = function minimumSpanningTree(graphData, weight, algo) {\n var algos = {\n prim: primMST,\n kruskal: kruskalMST\n };\n if (!algo) return kruskalMST(graphData, weight);\n return algos[algo](graphData, weight);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (minimumSpanningTree);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL210cy5qcz83MmY2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZDO0FBQ0s7QUFDUjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0Esd0JBQXdCOztBQUV4QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHNCQUFzQiw0REFBYTtBQUNuQyxFQUFFLDhEQUFnQjtBQUNsQjtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU0sOERBQWdCO0FBQ3RCO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQSxNQUFNLDhEQUFnQjtBQUN0QjtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUEsd0JBQXdCLDJEQUFTO0FBQ2pDO0FBQ0EsR0FBRyxHQUFHO0FBQ047O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFZSxrRkFBbUIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL210cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBVbmlvbkZpbmQgZnJvbSAnLi9zdHJ1Y3RzL3VuaW9uLWZpbmQnO1xuaW1wb3J0IE1pbkJpbmFyeUhlYXAgZnJvbSAnLi9zdHJ1Y3RzL2JpbmFyeS1oZWFwJztcbmltcG9ydCB7IGdldEVkZ2VzQnlOb2RlSWQgfSBmcm9tICcuL3V0aWwnO1xuLyoqXG4gKiBQcmltIGFsZ29yaXRobe+8jHVzZSBwcmlvcml0eSBxdWV1Ze+8jOWkjeadguW6piBPKEUrVipsb2dWKSwgVjog6IqC54K55pWw6YeP77yMRTog6L6555qE5pWw6YePXG4gKiByZWZlcjogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHJpbSUyN3NfYWxnb3JpdGhtXG4gKiBAcGFyYW0gZ3JhcGhcbiAqIEBwYXJhbSB3ZWlnaHQg5oyH5a6a55So5LqO5L2c5Li66L655p2D6YeN55qE5bGe5oCn77yM6Iul5LiN5oyH5a6a77yM5YiZ6K6k5Li65omA5pyJ6L655p2D6YeN5LiA6Ie0XG4gKi9cblxudmFyIHByaW1NU1QgPSBmdW5jdGlvbiBwcmltTVNUKGdyYXBoRGF0YSwgd2VpZ2h0KSB7XG4gIHZhciBzZWxlY3RlZEVkZ2VzID0gW107XG4gIHZhciBfYSA9IGdyYXBoRGF0YS5ub2RlcyxcbiAgICAgIG5vZGVzID0gX2EgPT09IHZvaWQgMCA/IFtdIDogX2EsXG4gICAgICBfYiA9IGdyYXBoRGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2IgPT09IHZvaWQgMCA/IFtdIDogX2I7XG5cbiAgaWYgKG5vZGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBzZWxlY3RlZEVkZ2VzO1xuICB9IC8vIOS7jm5vZGVzWzBd5byA5aeLXG5cblxuICB2YXIgY3Vyck5vZGUgPSBub2Rlc1swXTtcbiAgdmFyIHZpc2l0ZWQgPSBuZXcgU2V0KCk7XG4gIHZpc2l0ZWQuYWRkKGN1cnJOb2RlKTsgLy8g55So5LqM5Y+J5aCG57u05oqk6Led5bey5Yqg5YWl6IqC54K555qE5YW25LuW6IqC54K555qE6L6555qE5p2D5YC8XG5cbiAgdmFyIGNvbXBhcmVXZWlnaHQgPSBmdW5jdGlvbiBjb21wYXJlV2VpZ2h0KGEsIGIpIHtcbiAgICBpZiAod2VpZ2h0KSB7XG4gICAgICByZXR1cm4gYS53ZWlnaHQgLSBiLndlaWdodDtcbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfTtcblxuICB2YXIgZWRnZVF1ZXVlID0gbmV3IE1pbkJpbmFyeUhlYXAoY29tcGFyZVdlaWdodCk7XG4gIGdldEVkZ2VzQnlOb2RlSWQoY3Vyck5vZGUuaWQsIGVkZ2VzKS5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgZWRnZVF1ZXVlLmluc2VydChlZGdlKTtcbiAgfSk7XG5cbiAgd2hpbGUgKCFlZGdlUXVldWUuaXNFbXB0eSgpKSB7XG4gICAgLy8g6YCJ5Y+W5LiO5bey5Yqg5YWl55qE57uT54K55LmL6Ze06L655p2D5pyA5bCP55qE57uT54K5XG4gICAgdmFyIGN1cnJFZGdlID0gZWRnZVF1ZXVlLmRlbE1pbigpO1xuICAgIHZhciBzb3VyY2UgPSBjdXJyRWRnZS5zb3VyY2U7XG4gICAgdmFyIHRhcmdldCA9IGN1cnJFZGdlLnRhcmdldDtcbiAgICBpZiAodmlzaXRlZC5oYXMoc291cmNlKSAmJiB2aXNpdGVkLmhhcyh0YXJnZXQpKSBjb250aW51ZTtcbiAgICBzZWxlY3RlZEVkZ2VzLnB1c2goY3VyckVkZ2UpO1xuXG4gICAgaWYgKCF2aXNpdGVkLmhhcyhzb3VyY2UpKSB7XG4gICAgICB2aXNpdGVkLmFkZChzb3VyY2UpO1xuICAgICAgZ2V0RWRnZXNCeU5vZGVJZChzb3VyY2UsIGVkZ2VzKS5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgIGVkZ2VRdWV1ZS5pbnNlcnQoZWRnZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoIXZpc2l0ZWQuaGFzKHRhcmdldCkpIHtcbiAgICAgIHZpc2l0ZWQuYWRkKHRhcmdldCk7XG4gICAgICBnZXRFZGdlc0J5Tm9kZUlkKHRhcmdldCwgZWRnZXMpLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgZWRnZVF1ZXVlLmluc2VydChlZGdlKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzZWxlY3RlZEVkZ2VzO1xufTtcbi8qKlxuICogS3J1c2thbCBhbGdvcml0aG3vvIzlpI3mnYLluqYgTyhFKmxvZ0UpLCBFOiDovrnnmoTmlbDph49cbiAqIHJlZmVyOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9LcnVza2FsJTI3c19hbGdvcml0aG1cbiAqIEBwYXJhbSBncmFwaFxuICogQHBhcmFtIHdlaWdodCDmjIflrprnlKjkuo7kvZzkuLrovrnmnYPph43nmoTlsZ7mgKfvvIzoi6XkuI3mjIflrprvvIzliJnorqTkuLrmiYDmnInovrnmnYPph43kuIDoh7RcbiAqIEByZXR1cm4gSUVkZ2VbXSDov5Tlm57mnoTmiJBNU1TnmoTovrnnmoTmlbDnu4RcbiAqL1xuXG5cbnZhciBrcnVza2FsTVNUID0gZnVuY3Rpb24ga3J1c2thbE1TVChncmFwaERhdGEsIHdlaWdodCkge1xuICB2YXIgc2VsZWN0ZWRFZGdlcyA9IFtdO1xuICB2YXIgX2EgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBub2RlcyA9IF9hID09PSB2b2lkIDAgPyBbXSA6IF9hLFxuICAgICAgX2IgPSBncmFwaERhdGEuZWRnZXMsXG4gICAgICBlZGdlcyA9IF9iID09PSB2b2lkIDAgPyBbXSA6IF9iO1xuXG4gIGlmIChub2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gc2VsZWN0ZWRFZGdlcztcbiAgfSAvLyDoi6XmjIflrpp3ZWlnaHTvvIzliJnlsIbmiYDmnInnmoTovrnmjInmnYPlgLzku47lsI/liLDlpKfmjpLluo9cblxuXG4gIHZhciB3ZWlnaHRFZGdlcyA9IGVkZ2VzLm1hcChmdW5jdGlvbiAoZWRnZSkge1xuICAgIHJldHVybiBlZGdlO1xuICB9KTtcblxuICBpZiAod2VpZ2h0KSB7XG4gICAgd2VpZ2h0RWRnZXMuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGEud2VpZ2h0IC0gYi53ZWlnaHQ7XG4gICAgfSk7XG4gIH1cblxuICB2YXIgZGlzam9pbnRTZXQgPSBuZXcgVW5pb25GaW5kKG5vZGVzLm1hcChmdW5jdGlvbiAobikge1xuICAgIHJldHVybiBuLmlkO1xuICB9KSk7IC8vIOS7juadg+WAvOacgOWwj+eahOi+ueW8gOWni++8jOWmguaenOi/meadoei+uei/nuaOpeeahOS4pOS4quiKgueCueS6juWbvkfkuK3kuI3lnKjlkIzkuIDkuKrov57pgJrliIbph4/kuK3vvIzliJnmt7vliqDov5nmnaHovrlcbiAgLy8g55u05Yiw6YGN5Y6G5a6M5omA5pyJ54K55oiW6L65XG5cbiAgd2hpbGUgKHdlaWdodEVkZ2VzLmxlbmd0aCA+IDApIHtcbiAgICB2YXIgY3VyRWRnZSA9IHdlaWdodEVkZ2VzLnNoaWZ0KCk7XG4gICAgdmFyIHNvdXJjZSA9IGN1ckVkZ2Uuc291cmNlO1xuICAgIHZhciB0YXJnZXQgPSBjdXJFZGdlLnRhcmdldDtcblxuICAgIGlmICghZGlzam9pbnRTZXQuY29ubmVjdGVkKHNvdXJjZSwgdGFyZ2V0KSkge1xuICAgICAgc2VsZWN0ZWRFZGdlcy5wdXNoKGN1ckVkZ2UpO1xuICAgICAgZGlzam9pbnRTZXQudW5pb24oc291cmNlLCB0YXJnZXQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzZWxlY3RlZEVkZ2VzO1xufTtcbi8qKlxuICog5pyA5bCP55Sf5oiQ5qCRXG4gKiByZWZlcjogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvS3J1c2thbCUyN3NfYWxnb3JpdGhtXG4gKiBAcGFyYW0gZ3JhcGhcbiAqIEBwYXJhbSB3ZWlnaHQg5oyH5a6a55So5LqO5L2c5Li66L655p2D6YeN55qE5bGe5oCn77yM6Iul5LiN5oyH5a6a77yM5YiZ6K6k5Li65omA5pyJ6L655p2D6YeN5LiA6Ie0XG4gKiBAcGFyYW0gYWxnbyAncHJpbScgfCAna3J1c2thbCcg566X5rOV57G75Z6LXG4gKiBAcmV0dXJuIEVkZ2VDb25maWdbXSDov5Tlm57mnoTmiJBNU1TnmoTovrnnmoTmlbDnu4RcbiAqL1xuXG5cbnZhciBtaW5pbXVtU3Bhbm5pbmdUcmVlID0gZnVuY3Rpb24gbWluaW11bVNwYW5uaW5nVHJlZShncmFwaERhdGEsIHdlaWdodCwgYWxnbykge1xuICB2YXIgYWxnb3MgPSB7XG4gICAgcHJpbTogcHJpbU1TVCxcbiAgICBrcnVza2FsOiBrcnVza2FsTVNUXG4gIH07XG4gIGlmICghYWxnbykgcmV0dXJuIGtydXNrYWxNU1QoZ3JhcGhEYXRhLCB3ZWlnaHQpO1xuICByZXR1cm4gYWxnb3NbYWxnb10oZ3JhcGhEYXRhLCB3ZWlnaHQpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgbWluaW11bVNwYW5uaW5nVHJlZTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/mts.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/pageRank.js":
/*!*****************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/pageRank.js ***!
\*****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _degree__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./degree */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/degree.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/util.js\");\n\n\n/**\n * PageRank https://en.wikipedia.org/wiki/PageRank\n * refer: https://github.com/anvaka/ngraph.pagerank\n * @param graph\n * @param epsilon 判断是否收敛的精度值,默认 0.000001\n * @param linkProb 阻尼系数(dumping factor),指任意时刻,用户访问到某节点后继续访问该节点链接的下一个节点的概率,经验值 0.85\n */\n\nvar pageRank = function pageRank(graphData, epsilon, linkProb) {\n if (typeof epsilon !== 'number') epsilon = 0.000001;\n if (typeof linkProb !== 'number') linkProb = 0.85;\n var distance = 1;\n var leakedRank = 0;\n var maxIterations = 1000;\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var nodesCount = nodes.length;\n var currentRank;\n var curRanks = {};\n var prevRanks = {}; // Initialize pageranks 初始化\n\n for (var j = 0; j < nodesCount; ++j) {\n var node = nodes[j];\n var nodeId = node.id;\n curRanks[nodeId] = 1 / nodesCount;\n prevRanks[nodeId] = 1 / nodesCount;\n }\n\n var nodeDegree = Object(_degree__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(graphData);\n\n while (maxIterations > 0 && distance > epsilon) {\n leakedRank = 0;\n\n for (var j = 0; j < nodesCount; ++j) {\n var node = nodes[j];\n var nodeId = node.id;\n currentRank = 0;\n\n if (nodeDegree[node.id].inDegree === 0) {\n curRanks[nodeId] = 0;\n } else {\n var neighbors = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getNeighbors\"])(nodeId, edges, 'source');\n\n for (var i = 0; i < neighbors.length; ++i) {\n var neighbor = neighbors[i];\n var outDegree = nodeDegree[neighbor].outDegree;\n if (outDegree > 0) currentRank += prevRanks[neighbor] / outDegree;\n }\n\n curRanks[nodeId] = linkProb * currentRank;\n leakedRank += curRanks[nodeId];\n }\n }\n\n leakedRank = (1 - leakedRank) / nodesCount;\n distance = 0;\n\n for (var j = 0; j < nodesCount; ++j) {\n var node = nodes[j];\n var nodeId = node.id;\n currentRank = curRanks[nodeId] + leakedRank;\n distance += Math.abs(currentRank - prevRanks[nodeId]);\n prevRanks[nodeId] = currentRank;\n }\n\n maxIterations -= 1;\n }\n\n return prevRanks;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (pageRank);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL3BhZ2VSYW5rLmpzP2Y1ZjgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQThCO0FBQ1E7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7O0FBRXJCLGlCQUFpQixnQkFBZ0I7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsdURBQU07O0FBRXpCO0FBQ0E7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUCx3QkFBd0IsMERBQVk7O0FBRXBDLHVCQUF1QixzQkFBc0I7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxtQkFBbUIsZ0JBQWdCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRWUsdUVBQVEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL3BhZ2VSYW5rLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlZ3JlZSBmcm9tICcuL2RlZ3JlZSc7XG5pbXBvcnQgeyBnZXROZWlnaGJvcnMgfSBmcm9tIFwiLi91dGlsXCI7XG4vKipcbiAqIFBhZ2VSYW5rIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BhZ2VSYW5rXG4gKiByZWZlcjogaHR0cHM6Ly9naXRodWIuY29tL2FudmFrYS9uZ3JhcGgucGFnZXJhbmtcbiAqIEBwYXJhbSBncmFwaFxuICogQHBhcmFtIGVwc2lsb24g5Yik5pat5piv5ZCm5pS25pWb55qE57K+5bqm5YC877yM6buY6K6kIDAuMDAwMDAxXG4gKiBAcGFyYW0gbGlua1Byb2Ig6Zi75bC857O75pWw77yIZHVtcGluZyBmYWN0b3LvvInvvIzmjIfku7vmhI/ml7bliLvvvIznlKjmiLforr/pl67liLDmn5DoioLngrnlkI7nu6fnu63orr/pl67or6XoioLngrnpk77mjqXnmoTkuIvkuIDkuKroioLngrnnmoTmpoLnjofvvIznu4/pqozlgLwgMC44NVxuICovXG5cbnZhciBwYWdlUmFuayA9IGZ1bmN0aW9uIHBhZ2VSYW5rKGdyYXBoRGF0YSwgZXBzaWxvbiwgbGlua1Byb2IpIHtcbiAgaWYgKHR5cGVvZiBlcHNpbG9uICE9PSAnbnVtYmVyJykgZXBzaWxvbiA9IDAuMDAwMDAxO1xuICBpZiAodHlwZW9mIGxpbmtQcm9iICE9PSAnbnVtYmVyJykgbGlua1Byb2IgPSAwLjg1O1xuICB2YXIgZGlzdGFuY2UgPSAxO1xuICB2YXIgbGVha2VkUmFuayA9IDA7XG4gIHZhciBtYXhJdGVyYXRpb25zID0gMTAwMDtcbiAgdmFyIF9hID0gZ3JhcGhEYXRhLm5vZGVzLFxuICAgICAgbm9kZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYSxcbiAgICAgIF9iID0gZ3JhcGhEYXRhLmVkZ2VzLFxuICAgICAgZWRnZXMgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYjtcbiAgdmFyIG5vZGVzQ291bnQgPSBub2Rlcy5sZW5ndGg7XG4gIHZhciBjdXJyZW50UmFuaztcbiAgdmFyIGN1clJhbmtzID0ge307XG4gIHZhciBwcmV2UmFua3MgPSB7fTsgLy8gSW5pdGlhbGl6ZSBwYWdlcmFua3Mg5Yid5aeL5YyWXG5cbiAgZm9yICh2YXIgaiA9IDA7IGogPCBub2Rlc0NvdW50OyArK2opIHtcbiAgICB2YXIgbm9kZSA9IG5vZGVzW2pdO1xuICAgIHZhciBub2RlSWQgPSBub2RlLmlkO1xuICAgIGN1clJhbmtzW25vZGVJZF0gPSAxIC8gbm9kZXNDb3VudDtcbiAgICBwcmV2UmFua3Nbbm9kZUlkXSA9IDEgLyBub2Rlc0NvdW50O1xuICB9XG5cbiAgdmFyIG5vZGVEZWdyZWUgPSBkZWdyZWUoZ3JhcGhEYXRhKTtcblxuICB3aGlsZSAobWF4SXRlcmF0aW9ucyA+IDAgJiYgZGlzdGFuY2UgPiBlcHNpbG9uKSB7XG4gICAgbGVha2VkUmFuayA9IDA7XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IG5vZGVzQ291bnQ7ICsraikge1xuICAgICAgdmFyIG5vZGUgPSBub2Rlc1tqXTtcbiAgICAgIHZhciBub2RlSWQgPSBub2RlLmlkO1xuICAgICAgY3VycmVudFJhbmsgPSAwO1xuXG4gICAgICBpZiAobm9kZURlZ3JlZVtub2RlLmlkXS5pbkRlZ3JlZSA9PT0gMCkge1xuICAgICAgICBjdXJSYW5rc1tub2RlSWRdID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBuZWlnaGJvcnMgPSBnZXROZWlnaGJvcnMobm9kZUlkLCBlZGdlcywgJ3NvdXJjZScpO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmVpZ2hib3JzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgdmFyIG5laWdoYm9yID0gbmVpZ2hib3JzW2ldO1xuICAgICAgICAgIHZhciBvdXREZWdyZWUgPSBub2RlRGVncmVlW25laWdoYm9yXS5vdXREZWdyZWU7XG4gICAgICAgICAgaWYgKG91dERlZ3JlZSA+IDApIGN1cnJlbnRSYW5rICs9IHByZXZSYW5rc1tuZWlnaGJvcl0gLyBvdXREZWdyZWU7XG4gICAgICAgIH1cblxuICAgICAgICBjdXJSYW5rc1tub2RlSWRdID0gbGlua1Byb2IgKiBjdXJyZW50UmFuaztcbiAgICAgICAgbGVha2VkUmFuayArPSBjdXJSYW5rc1tub2RlSWRdO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxlYWtlZFJhbmsgPSAoMSAtIGxlYWtlZFJhbmspIC8gbm9kZXNDb3VudDtcbiAgICBkaXN0YW5jZSA9IDA7XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IG5vZGVzQ291bnQ7ICsraikge1xuICAgICAgdmFyIG5vZGUgPSBub2Rlc1tqXTtcbiAgICAgIHZhciBub2RlSWQgPSBub2RlLmlkO1xuICAgICAgY3VycmVudFJhbmsgPSBjdXJSYW5rc1tub2RlSWRdICsgbGVha2VkUmFuaztcbiAgICAgIGRpc3RhbmNlICs9IE1hdGguYWJzKGN1cnJlbnRSYW5rIC0gcHJldlJhbmtzW25vZGVJZF0pO1xuICAgICAgcHJldlJhbmtzW25vZGVJZF0gPSBjdXJyZW50UmFuaztcbiAgICB9XG5cbiAgICBtYXhJdGVyYXRpb25zIC09IDE7XG4gIH1cblxuICByZXR1cm4gcHJldlJhbmtzO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgcGFnZVJhbms7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/pageRank.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/binary-heap.js":
/*!****************************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/binary-heap.js ***!
\****************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar defaultCompare = function defaultCompare(a, b) {\n return a - b;\n};\n\nvar MinBinaryHeap =\n/** @class */\nfunction () {\n function MinBinaryHeap(compareFn) {\n if (compareFn === void 0) {\n compareFn = defaultCompare;\n }\n\n this.compareFn = compareFn;\n this.list = [];\n }\n\n MinBinaryHeap.prototype.getLeft = function (index) {\n return 2 * index + 1;\n };\n\n MinBinaryHeap.prototype.getRight = function (index) {\n return 2 * index + 2;\n };\n\n MinBinaryHeap.prototype.getParent = function (index) {\n if (index === 0) {\n return null;\n }\n\n return Math.floor((index - 1) / 2);\n };\n\n MinBinaryHeap.prototype.isEmpty = function () {\n return this.list.length <= 0;\n };\n\n MinBinaryHeap.prototype.top = function () {\n return this.isEmpty() ? undefined : this.list[0];\n };\n\n MinBinaryHeap.prototype.delMin = function () {\n var top = this.top();\n var bottom = this.list.pop();\n\n if (this.list.length > 0) {\n this.list[0] = bottom;\n this.moveDown(0);\n }\n\n return top;\n };\n\n MinBinaryHeap.prototype.insert = function (value) {\n if (value !== null) {\n this.list.push(value);\n var index = this.list.length - 1;\n this.moveUp(index);\n return true;\n }\n\n return false;\n };\n\n MinBinaryHeap.prototype.moveUp = function (index) {\n var parent = this.getParent(index);\n\n while (index && index > 0 && this.compareFn(this.list[parent], this.list[index]) > 0) {\n // swap\n var tmp = this.list[parent];\n this.list[parent] = this.list[index];\n this.list[index] = tmp; // [this.list[index], this.list[parent]] = [this.list[parent], this.list[index]]\n\n index = parent;\n parent = this.getParent(index);\n }\n };\n\n MinBinaryHeap.prototype.moveDown = function (index) {\n var _a;\n\n var element = index;\n var left = this.getLeft(index);\n var right = this.getRight(index);\n var size = this.list.length;\n\n if (left !== null && left < size && this.compareFn(this.list[element], this.list[left]) > 0) {\n element = left;\n } else if (right !== null && right < size && this.compareFn(this.list[element], this.list[right]) > 0) {\n element = right;\n }\n\n if (index !== element) {\n _a = [this.list[element], this.list[index]], this.list[index] = _a[0], this.list[element] = _a[1];\n this.moveDown(element);\n }\n };\n\n return MinBinaryHeap;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (MinBinaryHeap);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL3N0cnVjdHMvYmluYXJ5LWhlYXAuanM/OWZiOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCOztBQUU3QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFYyw0RUFBYSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfYWxnb3JpdGhtQDAuMS4xNEBAYW50di9hbGdvcml0aG0vZXMvc3RydWN0cy9iaW5hcnktaGVhcC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBkZWZhdWx0Q29tcGFyZSA9IGZ1bmN0aW9uIGRlZmF1bHRDb21wYXJlKGEsIGIpIHtcbiAgcmV0dXJuIGEgLSBiO1xufTtcblxudmFyIE1pbkJpbmFyeUhlYXAgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBNaW5CaW5hcnlIZWFwKGNvbXBhcmVGbikge1xuICAgIGlmIChjb21wYXJlRm4gPT09IHZvaWQgMCkge1xuICAgICAgY29tcGFyZUZuID0gZGVmYXVsdENvbXBhcmU7XG4gICAgfVxuXG4gICAgdGhpcy5jb21wYXJlRm4gPSBjb21wYXJlRm47XG4gICAgdGhpcy5saXN0ID0gW107XG4gIH1cblxuICBNaW5CaW5hcnlIZWFwLnByb3RvdHlwZS5nZXRMZWZ0ID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgcmV0dXJuIDIgKiBpbmRleCArIDE7XG4gIH07XG5cbiAgTWluQmluYXJ5SGVhcC5wcm90b3R5cGUuZ2V0UmlnaHQgPSBmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICByZXR1cm4gMiAqIGluZGV4ICsgMjtcbiAgfTtcblxuICBNaW5CaW5hcnlIZWFwLnByb3RvdHlwZS5nZXRQYXJlbnQgPSBmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBNYXRoLmZsb29yKChpbmRleCAtIDEpIC8gMik7XG4gIH07XG5cbiAgTWluQmluYXJ5SGVhcC5wcm90b3R5cGUuaXNFbXB0eSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5saXN0Lmxlbmd0aCA8PSAwO1xuICB9O1xuXG4gIE1pbkJpbmFyeUhlYXAucHJvdG90eXBlLnRvcCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5pc0VtcHR5KCkgPyB1bmRlZmluZWQgOiB0aGlzLmxpc3RbMF07XG4gIH07XG5cbiAgTWluQmluYXJ5SGVhcC5wcm90b3R5cGUuZGVsTWluID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciB0b3AgPSB0aGlzLnRvcCgpO1xuICAgIHZhciBib3R0b20gPSB0aGlzLmxpc3QucG9wKCk7XG5cbiAgICBpZiAodGhpcy5saXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMubGlzdFswXSA9IGJvdHRvbTtcbiAgICAgIHRoaXMubW92ZURvd24oMCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRvcDtcbiAgfTtcblxuICBNaW5CaW5hcnlIZWFwLnByb3RvdHlwZS5pbnNlcnQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgIHRoaXMubGlzdC5wdXNoKHZhbHVlKTtcbiAgICAgIHZhciBpbmRleCA9IHRoaXMubGlzdC5sZW5ndGggLSAxO1xuICAgICAgdGhpcy5tb3ZlVXAoaW5kZXgpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG4gIE1pbkJpbmFyeUhlYXAucHJvdG90eXBlLm1vdmVVcCA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgIHZhciBwYXJlbnQgPSB0aGlzLmdldFBhcmVudChpbmRleCk7XG5cbiAgICB3aGlsZSAoaW5kZXggJiYgaW5kZXggPiAwICYmIHRoaXMuY29tcGFyZUZuKHRoaXMubGlzdFtwYXJlbnRdLCB0aGlzLmxpc3RbaW5kZXhdKSA+IDApIHtcbiAgICAgIC8vIHN3YXBcbiAgICAgIHZhciB0bXAgPSB0aGlzLmxpc3RbcGFyZW50XTtcbiAgICAgIHRoaXMubGlzdFtwYXJlbnRdID0gdGhpcy5saXN0W2luZGV4XTtcbiAgICAgIHRoaXMubGlzdFtpbmRleF0gPSB0bXA7IC8vIFt0aGlzLmxpc3RbaW5kZXhdLCB0aGlzLmxpc3RbcGFyZW50XV0gPSBbdGhpcy5saXN0W3BhcmVudF0sIHRoaXMubGlzdFtpbmRleF1dXG5cbiAgICAgIGluZGV4ID0gcGFyZW50O1xuICAgICAgcGFyZW50ID0gdGhpcy5nZXRQYXJlbnQoaW5kZXgpO1xuICAgIH1cbiAgfTtcblxuICBNaW5CaW5hcnlIZWFwLnByb3RvdHlwZS5tb3ZlRG93biA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgIHZhciBfYTtcblxuICAgIHZhciBlbGVtZW50ID0gaW5kZXg7XG4gICAgdmFyIGxlZnQgPSB0aGlzLmdldExlZnQoaW5kZXgpO1xuICAgIHZhciByaWdodCA9IHRoaXMuZ2V0UmlnaHQoaW5kZXgpO1xuICAgIHZhciBzaXplID0gdGhpcy5saXN0Lmxlbmd0aDtcblxuICAgIGlmIChsZWZ0ICE9PSBudWxsICYmIGxlZnQgPCBzaXplICYmIHRoaXMuY29tcGFyZUZuKHRoaXMubGlzdFtlbGVtZW50XSwgdGhpcy5saXN0W2xlZnRdKSA+IDApIHtcbiAgICAgIGVsZW1lbnQgPSBsZWZ0O1xuICAgIH0gZWxzZSBpZiAocmlnaHQgIT09IG51bGwgJiYgcmlnaHQgPCBzaXplICYmIHRoaXMuY29tcGFyZUZuKHRoaXMubGlzdFtlbGVtZW50XSwgdGhpcy5saXN0W3JpZ2h0XSkgPiAwKSB7XG4gICAgICBlbGVtZW50ID0gcmlnaHQ7XG4gICAgfVxuXG4gICAgaWYgKGluZGV4ICE9PSBlbGVtZW50KSB7XG4gICAgICBfYSA9IFt0aGlzLmxpc3RbZWxlbWVudF0sIHRoaXMubGlzdFtpbmRleF1dLCB0aGlzLmxpc3RbaW5kZXhdID0gX2FbMF0sIHRoaXMubGlzdFtlbGVtZW50XSA9IF9hWzFdO1xuICAgICAgdGhpcy5tb3ZlRG93bihlbGVtZW50KTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIE1pbkJpbmFyeUhlYXA7XG59KCk7XG5cbmV4cG9ydCBkZWZhdWx0IE1pbkJpbmFyeUhlYXA7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/binary-heap.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/linked-list.js":
/*!****************************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/linked-list.js ***!
\****************************************************************************************/
/*! exports provided: LinkedListNode, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LinkedListNode\", function() { return LinkedListNode; });\nvar defaultComparator = function defaultComparator(a, b) {\n if (a === b) {\n return true;\n }\n\n return false;\n};\n/**\n * 链表中单个元素节点\n */\n\n\nvar LinkedListNode =\n/** @class */\nfunction () {\n function LinkedListNode(value, next) {\n if (next === void 0) {\n next = null;\n }\n\n this.value = value;\n this.next = next;\n }\n\n LinkedListNode.prototype.toString = function (callback) {\n return callback ? callback(this.value) : \"\".concat(this.value);\n };\n\n return LinkedListNode;\n}();\n\n\n\nvar LinkedList =\n/** @class */\nfunction () {\n function LinkedList(comparator) {\n if (comparator === void 0) {\n comparator = defaultComparator;\n }\n\n this.head = null;\n this.tail = null;\n this.compare = comparator;\n }\n /**\n * 将指定元素添加到链表头部\n * @param value\n */\n\n\n LinkedList.prototype.prepend = function (value) {\n // 在头部添加一个节点\n var newNode = new LinkedListNode(value, this.head);\n this.head = newNode;\n\n if (!this.tail) {\n this.tail = newNode;\n }\n\n return this;\n };\n /**\n * 将指定元素添加到链表中\n * @param value\n */\n\n\n LinkedList.prototype.append = function (value) {\n var newNode = new LinkedListNode(value); // 如果不存在头节点,则将创建的新节点作为头节点\n\n if (!this.head) {\n this.head = newNode;\n this.tail = newNode;\n return this;\n } // 将新节点附加到链表末尾\n\n\n this.tail.next = newNode;\n this.tail = newNode;\n return this;\n };\n /**\n * 删除指定元素\n * @param value 要删除的元素\n */\n\n\n LinkedList.prototype.delete = function (value) {\n if (!this.head) {\n return null;\n }\n\n var deleteNode = null; // 如果删除的是头部元素,则将next作为头元素\n\n while (this.head && this.compare(this.head.value, value)) {\n deleteNode = this.head;\n this.head = this.head.next;\n }\n\n var currentNode = this.head;\n\n if (currentNode !== null) {\n // 如果删除了节点以后,将next节点前移\n while (currentNode.next) {\n if (this.compare(currentNode.next.value, value)) {\n deleteNode = currentNode.next;\n currentNode.next = currentNode.next.next;\n } else {\n currentNode = currentNode.next;\n }\n }\n } // 检查尾部节点是否被删除\n\n\n if (this.compare(this.tail.value, value)) {\n this.tail = currentNode;\n }\n\n return deleteNode;\n };\n /**\n * 查找指定的元素\n * @param param0\n */\n\n\n LinkedList.prototype.find = function (_a) {\n var _b = _a.value,\n value = _b === void 0 ? undefined : _b,\n _c = _a.callback,\n callback = _c === void 0 ? undefined : _c;\n\n if (!this.head) {\n return null;\n }\n\n var currentNode = this.head;\n\n while (currentNode) {\n // 如果指定了 callback,则按指定的 callback 查找\n if (callback && callback(currentNode.value)) {\n return currentNode;\n } // 如果指定了 value,则按 value 查找\n\n\n if (value !== undefined && this.compare(currentNode.value, value)) {\n return currentNode;\n }\n\n currentNode = currentNode.next;\n }\n\n return null;\n };\n /**\n * 删除尾部节点\n */\n\n\n LinkedList.prototype.deleteTail = function () {\n var deletedTail = this.tail;\n\n if (this.head === this.tail) {\n // 链表中只有一个元素\n this.head = null;\n this.tail = null;\n return deletedTail;\n }\n\n var currentNode = this.head;\n\n while (currentNode.next) {\n if (!currentNode.next.next) {\n currentNode.next = null;\n } else {\n currentNode = currentNode.next;\n }\n }\n\n this.tail = currentNode;\n return deletedTail;\n };\n /**\n * 删除头部节点\n */\n\n\n LinkedList.prototype.deleteHead = function () {\n if (!this.head) {\n return null;\n }\n\n var deletedHead = this.head;\n\n if (this.head.next) {\n this.head = this.head.next;\n } else {\n this.head = null;\n this.tail = null;\n }\n\n return deletedHead;\n };\n /**\n * 将一组元素转成链表中的节点\n * @param values 链表中的元素\n */\n\n\n LinkedList.prototype.fromArray = function (values) {\n var _this = this;\n\n values.forEach(function (value) {\n return _this.append(value);\n });\n return this;\n };\n /**\n * 将链表中的节点转成数组元素\n */\n\n\n LinkedList.prototype.toArray = function () {\n var nodes = [];\n var currentNode = this.head;\n\n while (currentNode) {\n nodes.push(currentNode);\n currentNode = currentNode.next;\n }\n\n return nodes;\n };\n /**\n * 反转链表中的元素节点\n */\n\n\n LinkedList.prototype.reverse = function () {\n var currentNode = this.head;\n var prevNode = null;\n var nextNode = null;\n\n while (currentNode) {\n // 存储下一个元素节点\n nextNode = currentNode.next; // 更改当前节点的下一个节点,以便将它连接到上一个节点上\n\n currentNode.next = prevNode; // 将 prevNode 和 currentNode 向前移动一步\n\n prevNode = currentNode;\n currentNode = nextNode;\n }\n\n this.tail = this.head;\n this.head = prevNode;\n };\n\n LinkedList.prototype.toString = function (callback) {\n if (callback === void 0) {\n callback = undefined;\n }\n\n return this.toArray().map(function (node) {\n return node.toString(callback);\n }).toString();\n };\n\n return LinkedList;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (LinkedList);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL3N0cnVjdHMvbGlua2VkLWxpc3QuanM/ODY4NiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRXlCOztBQUUxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBLDRDQUE0Qzs7QUFFNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwwQkFBMEI7O0FBRTFCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEMsa0NBQWtDOztBQUVsQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSxDQUFDOztBQUVjLHlFQUFVIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9lcy9zdHJ1Y3RzL2xpbmtlZC1saXN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGRlZmF1bHRDb21wYXJhdG9yID0gZnVuY3Rpb24gZGVmYXVsdENvbXBhcmF0b3IoYSwgYikge1xuICBpZiAoYSA9PT0gYikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcbi8qKlxuICog6ZO+6KGo5Lit5Y2V5Liq5YWD57Sg6IqC54K5XG4gKi9cblxuXG52YXIgTGlua2VkTGlzdE5vZGUgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBMaW5rZWRMaXN0Tm9kZSh2YWx1ZSwgbmV4dCkge1xuICAgIGlmIChuZXh0ID09PSB2b2lkIDApIHtcbiAgICAgIG5leHQgPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLm5leHQgPSBuZXh0O1xuICB9XG5cbiAgTGlua2VkTGlzdE5vZGUucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIGNhbGxiYWNrID8gY2FsbGJhY2sodGhpcy52YWx1ZSkgOiBcIlwiLmNvbmNhdCh0aGlzLnZhbHVlKTtcbiAgfTtcblxuICByZXR1cm4gTGlua2VkTGlzdE5vZGU7XG59KCk7XG5cbmV4cG9ydCB7IExpbmtlZExpc3ROb2RlIH07XG5cbnZhciBMaW5rZWRMaXN0ID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gTGlua2VkTGlzdChjb21wYXJhdG9yKSB7XG4gICAgaWYgKGNvbXBhcmF0b3IgPT09IHZvaWQgMCkge1xuICAgICAgY29tcGFyYXRvciA9IGRlZmF1bHRDb21wYXJhdG9yO1xuICAgIH1cblxuICAgIHRoaXMuaGVhZCA9IG51bGw7XG4gICAgdGhpcy50YWlsID0gbnVsbDtcbiAgICB0aGlzLmNvbXBhcmUgPSBjb21wYXJhdG9yO1xuICB9XG4gIC8qKlxuICAgKiDlsIbmjIflrprlhYPntKDmt7vliqDliLDpk77ooajlpLTpg6hcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqL1xuXG5cbiAgTGlua2VkTGlzdC5wcm90b3R5cGUucHJlcGVuZCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIC8vIOWcqOWktOmDqOa3u+WKoOS4gOS4quiKgueCuVxuICAgIHZhciBuZXdOb2RlID0gbmV3IExpbmtlZExpc3ROb2RlKHZhbHVlLCB0aGlzLmhlYWQpO1xuICAgIHRoaXMuaGVhZCA9IG5ld05vZGU7XG5cbiAgICBpZiAoIXRoaXMudGFpbCkge1xuICAgICAgdGhpcy50YWlsID0gbmV3Tm9kZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgLyoqXG4gICAqIOWwhuaMh+WumuWFg+e0oOa3u+WKoOWIsOmTvuihqOS4rVxuICAgKiBAcGFyYW0gdmFsdWVcbiAgICovXG5cblxuICBMaW5rZWRMaXN0LnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICB2YXIgbmV3Tm9kZSA9IG5ldyBMaW5rZWRMaXN0Tm9kZSh2YWx1ZSk7IC8vIOWmguaenOS4jeWtmOWcqOWktOiKgueCue+8jOWImeWwhuWIm+W7uueahOaWsOiKgueCueS9nOS4uuWktOiKgueCuVxuXG4gICAgaWYgKCF0aGlzLmhlYWQpIHtcbiAgICAgIHRoaXMuaGVhZCA9IG5ld05vZGU7XG4gICAgICB0aGlzLnRhaWwgPSBuZXdOb2RlO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSAvLyDlsIbmlrDoioLngrnpmYTliqDliLDpk77ooajmnKvlsL5cblxuXG4gICAgdGhpcy50YWlsLm5leHQgPSBuZXdOb2RlO1xuICAgIHRoaXMudGFpbCA9IG5ld05vZGU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG4gIC8qKlxuICAgKiDliKDpmaTmjIflrprlhYPntKBcbiAgICogQHBhcmFtIHZhbHVlIOimgeWIoOmZpOeahOWFg+e0oFxuICAgKi9cblxuXG4gIExpbmtlZExpc3QucHJvdG90eXBlLmRlbGV0ZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIGlmICghdGhpcy5oZWFkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgZGVsZXRlTm9kZSA9IG51bGw7IC8vIOWmguaenOWIoOmZpOeahOaYr+WktOmDqOWFg+e0oO+8jOWImeWwhm5leHTkvZzkuLrlpLTlhYPntKBcblxuICAgIHdoaWxlICh0aGlzLmhlYWQgJiYgdGhpcy5jb21wYXJlKHRoaXMuaGVhZC52YWx1ZSwgdmFsdWUpKSB7XG4gICAgICBkZWxldGVOb2RlID0gdGhpcy5oZWFkO1xuICAgICAgdGhpcy5oZWFkID0gdGhpcy5oZWFkLm5leHQ7XG4gICAgfVxuXG4gICAgdmFyIGN1cnJlbnROb2RlID0gdGhpcy5oZWFkO1xuXG4gICAgaWYgKGN1cnJlbnROb2RlICE9PSBudWxsKSB7XG4gICAgICAvLyDlpoLmnpzliKDpmaTkuoboioLngrnku6XlkI7vvIzlsIZuZXh06IqC54K55YmN56e7XG4gICAgICB3aGlsZSAoY3VycmVudE5vZGUubmV4dCkge1xuICAgICAgICBpZiAodGhpcy5jb21wYXJlKGN1cnJlbnROb2RlLm5leHQudmFsdWUsIHZhbHVlKSkge1xuICAgICAgICAgIGRlbGV0ZU5vZGUgPSBjdXJyZW50Tm9kZS5uZXh0O1xuICAgICAgICAgIGN1cnJlbnROb2RlLm5leHQgPSBjdXJyZW50Tm9kZS5uZXh0Lm5leHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5uZXh0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSAvLyDmo4Dmn6XlsL7pg6joioLngrnmmK/lkKbooqvliKDpmaRcblxuXG4gICAgaWYgKHRoaXMuY29tcGFyZSh0aGlzLnRhaWwudmFsdWUsIHZhbHVlKSkge1xuICAgICAgdGhpcy50YWlsID0gY3VycmVudE5vZGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlbGV0ZU5vZGU7XG4gIH07XG4gIC8qKlxuICAgKiDmn6Xmib7mjIflrprnmoTlhYPntKBcbiAgICogQHBhcmFtIHBhcmFtMFxuICAgKi9cblxuXG4gIExpbmtlZExpc3QucHJvdG90eXBlLmZpbmQgPSBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgX2IgPSBfYS52YWx1ZSxcbiAgICAgICAgdmFsdWUgPSBfYiA9PT0gdm9pZCAwID8gdW5kZWZpbmVkIDogX2IsXG4gICAgICAgIF9jID0gX2EuY2FsbGJhY2ssXG4gICAgICAgIGNhbGxiYWNrID0gX2MgPT09IHZvaWQgMCA/IHVuZGVmaW5lZCA6IF9jO1xuXG4gICAgaWYgKCF0aGlzLmhlYWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciBjdXJyZW50Tm9kZSA9IHRoaXMuaGVhZDtcblxuICAgIHdoaWxlIChjdXJyZW50Tm9kZSkge1xuICAgICAgLy8g5aaC5p6c5oyH5a6a5LqGIGNhbGxiYWNr77yM5YiZ5oyJ5oyH5a6a55qEIGNhbGxiYWNrIOafpeaJvlxuICAgICAgaWYgKGNhbGxiYWNrICYmIGNhbGxiYWNrKGN1cnJlbnROb2RlLnZhbHVlKSkge1xuICAgICAgICByZXR1cm4gY3VycmVudE5vZGU7XG4gICAgICB9IC8vIOWmguaenOaMh+WumuS6hiB2YWx1Ze+8jOWImeaMiSB2YWx1ZSDmn6Xmib5cblxuXG4gICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmNvbXBhcmUoY3VycmVudE5vZGUudmFsdWUsIHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gY3VycmVudE5vZGU7XG4gICAgICB9XG5cbiAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUubmV4dDtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcbiAgLyoqXG4gICAqIOWIoOmZpOWwvumDqOiKgueCuVxuICAgKi9cblxuXG4gIExpbmtlZExpc3QucHJvdG90eXBlLmRlbGV0ZVRhaWwgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGRlbGV0ZWRUYWlsID0gdGhpcy50YWlsO1xuXG4gICAgaWYgKHRoaXMuaGVhZCA9PT0gdGhpcy50YWlsKSB7XG4gICAgICAvLyDpk77ooajkuK3lj6rmnInkuIDkuKrlhYPntKBcbiAgICAgIHRoaXMuaGVhZCA9IG51bGw7XG4gICAgICB0aGlzLnRhaWwgPSBudWxsO1xuICAgICAgcmV0dXJuIGRlbGV0ZWRUYWlsO1xuICAgIH1cblxuICAgIHZhciBjdXJyZW50Tm9kZSA9IHRoaXMuaGVhZDtcblxuICAgIHdoaWxlIChjdXJyZW50Tm9kZS5uZXh0KSB7XG4gICAgICBpZiAoIWN1cnJlbnROb2RlLm5leHQubmV4dCkge1xuICAgICAgICBjdXJyZW50Tm9kZS5uZXh0ID0gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUubmV4dDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnRhaWwgPSBjdXJyZW50Tm9kZTtcbiAgICByZXR1cm4gZGVsZXRlZFRhaWw7XG4gIH07XG4gIC8qKlxuICAgKiDliKDpmaTlpLTpg6joioLngrlcbiAgICovXG5cblxuICBMaW5rZWRMaXN0LnByb3RvdHlwZS5kZWxldGVIZWFkID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghdGhpcy5oZWFkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgZGVsZXRlZEhlYWQgPSB0aGlzLmhlYWQ7XG5cbiAgICBpZiAodGhpcy5oZWFkLm5leHQpIHtcbiAgICAgIHRoaXMuaGVhZCA9IHRoaXMuaGVhZC5uZXh0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhlYWQgPSBudWxsO1xuICAgICAgdGhpcy50YWlsID0gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVsZXRlZEhlYWQ7XG4gIH07XG4gIC8qKlxuICAgKiDlsIbkuIDnu4TlhYPntKDovazmiJDpk77ooajkuK3nmoToioLngrlcbiAgICogQHBhcmFtIHZhbHVlcyDpk77ooajkuK3nmoTlhYPntKBcbiAgICovXG5cblxuICBMaW5rZWRMaXN0LnByb3RvdHlwZS5mcm9tQXJyYXkgPSBmdW5jdGlvbiAodmFsdWVzKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgcmV0dXJuIF90aGlzLmFwcGVuZCh2YWx1ZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG4gIC8qKlxuICAgKiDlsIbpk77ooajkuK3nmoToioLngrnovazmiJDmlbDnu4TlhYPntKBcbiAgICovXG5cblxuICBMaW5rZWRMaXN0LnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBub2RlcyA9IFtdO1xuICAgIHZhciBjdXJyZW50Tm9kZSA9IHRoaXMuaGVhZDtcblxuICAgIHdoaWxlIChjdXJyZW50Tm9kZSkge1xuICAgICAgbm9kZXMucHVzaChjdXJyZW50Tm9kZSk7XG4gICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLm5leHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGVzO1xuICB9O1xuICAvKipcbiAgICog5Y+N6L2s6ZO+6KGo5Lit55qE5YWD57Sg6IqC54K5XG4gICAqL1xuXG5cbiAgTGlua2VkTGlzdC5wcm90b3R5cGUucmV2ZXJzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgY3VycmVudE5vZGUgPSB0aGlzLmhlYWQ7XG4gICAgdmFyIHByZXZOb2RlID0gbnVsbDtcbiAgICB2YXIgbmV4dE5vZGUgPSBudWxsO1xuXG4gICAgd2hpbGUgKGN1cnJlbnROb2RlKSB7XG4gICAgICAvLyDlrZjlgqjkuIvkuIDkuKrlhYPntKDoioLngrlcbiAgICAgIG5leHROb2RlID0gY3VycmVudE5vZGUubmV4dDsgLy8g5pu05pS55b2T5YmN6IqC54K555qE5LiL5LiA5Liq6IqC54K577yM5Lul5L6/5bCG5a6D6L+e5o6l5Yiw5LiK5LiA5Liq6IqC54K55LiKXG5cbiAgICAgIGN1cnJlbnROb2RlLm5leHQgPSBwcmV2Tm9kZTsgLy8g5bCGIHByZXZOb2RlIOWSjCBjdXJyZW50Tm9kZSDlkJHliY3np7vliqjkuIDmraVcblxuICAgICAgcHJldk5vZGUgPSBjdXJyZW50Tm9kZTtcbiAgICAgIGN1cnJlbnROb2RlID0gbmV4dE5vZGU7XG4gICAgfVxuXG4gICAgdGhpcy50YWlsID0gdGhpcy5oZWFkO1xuICAgIHRoaXMuaGVhZCA9IHByZXZOb2RlO1xuICB9O1xuXG4gIExpbmtlZExpc3QucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgaWYgKGNhbGxiYWNrID09PSB2b2lkIDApIHtcbiAgICAgIGNhbGxiYWNrID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnRvQXJyYXkoKS5tYXAoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLnRvU3RyaW5nKGNhbGxiYWNrKTtcbiAgICB9KS50b1N0cmluZygpO1xuICB9O1xuXG4gIHJldHVybiBMaW5rZWRMaXN0O1xufSgpO1xuXG5leHBvcnQgZGVmYXVsdCBMaW5rZWRMaXN0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/linked-list.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/queue.js":
/*!**********************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/queue.js ***!
\**********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _linked_list__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./linked-list */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/linked-list.js\");\n\n\nvar Queue =\n/** @class */\nfunction () {\n function Queue() {\n this.linkedList = new _linked_list__WEBPACK_IMPORTED_MODULE_0__[\"default\"]();\n }\n /**\n * 队列是否为空\n */\n\n\n Queue.prototype.isEmpty = function () {\n return !this.linkedList.head;\n };\n /**\n * 读取队列头部的元素, 不删除队列中的元素\n */\n\n\n Queue.prototype.peek = function () {\n if (!this.linkedList.head) {\n return null;\n }\n\n return this.linkedList.head.value;\n };\n /**\n * 在队列的尾部新增一个元素\n * @param value\n */\n\n\n Queue.prototype.enqueue = function (value) {\n this.linkedList.append(value);\n };\n /**\n * 删除队列中的头部元素,如果队列为空,则返回 null\n */\n\n\n Queue.prototype.dequeue = function () {\n var removeHead = this.linkedList.deleteHead();\n return removeHead ? removeHead.value : null;\n };\n\n Queue.prototype.toString = function (callback) {\n return this.linkedList.toString(callback);\n };\n\n return Queue;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Queue);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL3N0cnVjdHMvcXVldWUuanM/OTM3MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQXVDOztBQUV2QztBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixvREFBVTtBQUNwQztBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFYyxvRUFBSyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfYWxnb3JpdGhtQDAuMS4xNEBAYW50di9hbGdvcml0aG0vZXMvc3RydWN0cy9xdWV1ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMaW5rZWRMaXN0IGZyb20gJy4vbGlua2VkLWxpc3QnO1xuXG52YXIgUXVldWUgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBRdWV1ZSgpIHtcbiAgICB0aGlzLmxpbmtlZExpc3QgPSBuZXcgTGlua2VkTGlzdCgpO1xuICB9XG4gIC8qKlxuICAgKiDpmJ/liJfmmK/lkKbkuLrnqbpcbiAgICovXG5cblxuICBRdWV1ZS5wcm90b3R5cGUuaXNFbXB0eSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gIXRoaXMubGlua2VkTGlzdC5oZWFkO1xuICB9O1xuICAvKipcbiAgICog6K+75Y+W6Zif5YiX5aS06YOo55qE5YWD57Sg77yMIOS4jeWIoOmZpOmYn+WIl+S4reeahOWFg+e0oFxuICAgKi9cblxuXG4gIFF1ZXVlLnByb3RvdHlwZS5wZWVrID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghdGhpcy5saW5rZWRMaXN0LmhlYWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmxpbmtlZExpc3QuaGVhZC52YWx1ZTtcbiAgfTtcbiAgLyoqXG4gICAqIOWcqOmYn+WIl+eahOWwvumDqOaWsOWinuS4gOS4quWFg+e0oFxuICAgKiBAcGFyYW0gdmFsdWVcbiAgICovXG5cblxuICBRdWV1ZS5wcm90b3R5cGUuZW5xdWV1ZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHRoaXMubGlua2VkTGlzdC5hcHBlbmQodmFsdWUpO1xuICB9O1xuICAvKipcbiAgICog5Yig6Zmk6Zif5YiX5Lit55qE5aS06YOo5YWD57Sg77yM5aaC5p6c6Zif5YiX5Li656m677yM5YiZ6L+U5ZueIG51bGxcbiAgICovXG5cblxuICBRdWV1ZS5wcm90b3R5cGUuZGVxdWV1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcmVtb3ZlSGVhZCA9IHRoaXMubGlua2VkTGlzdC5kZWxldGVIZWFkKCk7XG4gICAgcmV0dXJuIHJlbW92ZUhlYWQgPyByZW1vdmVIZWFkLnZhbHVlIDogbnVsbDtcbiAgfTtcblxuICBRdWV1ZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgICByZXR1cm4gdGhpcy5saW5rZWRMaXN0LnRvU3RyaW5nKGNhbGxiYWNrKTtcbiAgfTtcblxuICByZXR1cm4gUXVldWU7XG59KCk7XG5cbmV4cG9ydCBkZWZhdWx0IFF1ZXVlOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/queue.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/stack.js":
/*!**********************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/stack.js ***!
\**********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _linked_list__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./linked-list */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/linked-list.js\");\n\n\nvar Stack =\n/** @class */\nfunction () {\n function Stack(maxStep) {\n if (maxStep === void 0) {\n maxStep = 10;\n }\n\n this.linkedList = new _linked_list__WEBPACK_IMPORTED_MODULE_0__[\"default\"]();\n this.maxStep = maxStep;\n }\n\n Object.defineProperty(Stack.prototype, \"length\", {\n get: function get() {\n return this.linkedList.toArray().length;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * 判断栈是否为空,如果链表中没有头部元素,则栈为空\n */\n\n Stack.prototype.isEmpty = function () {\n return !this.linkedList.head;\n };\n /**\n * 是否到定义的栈的最大长度,如果达到最大长度后,不再允许入栈\n */\n\n\n Stack.prototype.isMaxStack = function () {\n return this.toArray().length >= this.maxStep;\n };\n /**\n * 访问顶端元素\n */\n\n\n Stack.prototype.peek = function () {\n if (this.isEmpty()) {\n return null;\n } // 返回头部元素,不删除元素\n\n\n return this.linkedList.head.value;\n };\n\n Stack.prototype.push = function (value) {\n this.linkedList.prepend(value);\n\n if (this.length > this.maxStep) {\n this.linkedList.deleteTail();\n }\n };\n\n Stack.prototype.pop = function () {\n var removeHead = this.linkedList.deleteHead();\n return removeHead ? removeHead.value : null;\n };\n\n Stack.prototype.toArray = function () {\n return this.linkedList.toArray().map(function (node) {\n return node.value;\n });\n };\n\n Stack.prototype.clear = function () {\n while (!this.isEmpty()) {\n this.pop();\n }\n };\n\n return Stack;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Stack);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL3N0cnVjdHMvc3RhY2suanM/MjAxNCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQXVDOztBQUV2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwwQkFBMEIsb0RBQVU7QUFDcEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRWMsb0VBQUsiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL3N0cnVjdHMvc3RhY2suanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTGlua2VkTGlzdCBmcm9tICcuL2xpbmtlZC1saXN0JztcblxudmFyIFN0YWNrID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gU3RhY2sobWF4U3RlcCkge1xuICAgIGlmIChtYXhTdGVwID09PSB2b2lkIDApIHtcbiAgICAgIG1heFN0ZXAgPSAxMDtcbiAgICB9XG5cbiAgICB0aGlzLmxpbmtlZExpc3QgPSBuZXcgTGlua2VkTGlzdCgpO1xuICAgIHRoaXMubWF4U3RlcCA9IG1heFN0ZXA7XG4gIH1cblxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoU3RhY2sucHJvdG90eXBlLCBcImxlbmd0aFwiLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5saW5rZWRMaXN0LnRvQXJyYXkoKS5sZW5ndGg7XG4gICAgfSxcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICBjb25maWd1cmFibGU6IHRydWVcbiAgfSk7XG4gIC8qKlxuICAgKiDliKTmlq3moIjmmK/lkKbkuLrnqbrvvIzlpoLmnpzpk77ooajkuK3msqHmnInlpLTpg6jlhYPntKDvvIzliJnmoIjkuLrnqbpcbiAgICovXG5cbiAgU3RhY2sucHJvdG90eXBlLmlzRW1wdHkgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICF0aGlzLmxpbmtlZExpc3QuaGVhZDtcbiAgfTtcbiAgLyoqXG4gICAqIOaYr+WQpuWIsOWumuS5ieeahOagiOeahOacgOWkp+mVv+W6pu+8jOWmguaenOi+vuWIsOacgOWkp+mVv+W6puWQju+8jOS4jeWGjeWFgeiuuOWFpeagiFxuICAgKi9cblxuXG4gIFN0YWNrLnByb3RvdHlwZS5pc01heFN0YWNrID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLnRvQXJyYXkoKS5sZW5ndGggPj0gdGhpcy5tYXhTdGVwO1xuICB9O1xuICAvKipcbiAgICog6K6/6Zeu6aG256uv5YWD57SgXG4gICAqL1xuXG5cbiAgU3RhY2sucHJvdG90eXBlLnBlZWsgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuaXNFbXB0eSgpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IC8vIOi/lOWbnuWktOmDqOWFg+e0oO+8jOS4jeWIoOmZpOWFg+e0oFxuXG5cbiAgICByZXR1cm4gdGhpcy5saW5rZWRMaXN0LmhlYWQudmFsdWU7XG4gIH07XG5cbiAgU3RhY2sucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICB0aGlzLmxpbmtlZExpc3QucHJlcGVuZCh2YWx1ZSk7XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPiB0aGlzLm1heFN0ZXApIHtcbiAgICAgIHRoaXMubGlua2VkTGlzdC5kZWxldGVUYWlsKCk7XG4gICAgfVxuICB9O1xuXG4gIFN0YWNrLnByb3RvdHlwZS5wb3AgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJlbW92ZUhlYWQgPSB0aGlzLmxpbmtlZExpc3QuZGVsZXRlSGVhZCgpO1xuICAgIHJldHVybiByZW1vdmVIZWFkID8gcmVtb3ZlSGVhZC52YWx1ZSA6IG51bGw7XG4gIH07XG5cbiAgU3RhY2sucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMubGlua2VkTGlzdC50b0FycmF5KCkubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS52YWx1ZTtcbiAgICB9KTtcbiAgfTtcblxuICBTdGFjay5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgd2hpbGUgKCF0aGlzLmlzRW1wdHkoKSkge1xuICAgICAgdGhpcy5wb3AoKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIFN0YWNrO1xufSgpO1xuXG5leHBvcnQgZGVmYXVsdCBTdGFjazsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/stack.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/union-find.js":
/*!***************************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/union-find.js ***!
\***************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/**\n * 并查集 Disjoint set to support quick union\n */\nvar UnionFind =\n/** @class */\nfunction () {\n function UnionFind(items) {\n this.count = items.length;\n this.parent = {};\n\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var i = items_1[_i];\n this.parent[i] = i;\n }\n } // find the root of the item\n\n\n UnionFind.prototype.find = function (item) {\n while (this.parent[item] !== item) {\n item = this.parent[item];\n }\n\n return item;\n };\n\n UnionFind.prototype.union = function (a, b) {\n var rootA = this.find(a);\n var rootB = this.find(b);\n if (rootA === rootB) return; // make the element with smaller root the parent\n\n if (rootA < rootB) {\n if (this.parent[b] !== b) this.union(this.parent[b], a);\n this.parent[b] = this.parent[a];\n } else {\n if (this.parent[a] !== a) this.union(this.parent[a], b);\n this.parent[a] = this.parent[b];\n }\n }; // whether a and b are connected, i.e. a and b have the same root\n\n\n UnionFind.prototype.connected = function (a, b) {\n return this.find(a) === this.find(b);\n };\n\n return UnionFind;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (UnionFind);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL3N0cnVjdHMvdW5pb24tZmluZC5qcz82ZTQwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHFDQUFxQyxxQkFBcUI7QUFDMUQ7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0M7O0FBRWhDO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVjLHdFQUFTIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9lcy9zdHJ1Y3RzL3VuaW9uLWZpbmQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIOW5tuafpembhiBEaXNqb2ludCBzZXQgdG8gc3VwcG9ydCBxdWljayB1bmlvblxuICovXG52YXIgVW5pb25GaW5kID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gVW5pb25GaW5kKGl0ZW1zKSB7XG4gICAgdGhpcy5jb3VudCA9IGl0ZW1zLmxlbmd0aDtcbiAgICB0aGlzLnBhcmVudCA9IHt9O1xuXG4gICAgZm9yICh2YXIgX2kgPSAwLCBpdGVtc18xID0gaXRlbXM7IF9pIDwgaXRlbXNfMS5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBpID0gaXRlbXNfMVtfaV07XG4gICAgICB0aGlzLnBhcmVudFtpXSA9IGk7XG4gICAgfVxuICB9IC8vIGZpbmQgdGhlIHJvb3Qgb2YgdGhlIGl0ZW1cblxuXG4gIFVuaW9uRmluZC5wcm90b3R5cGUuZmluZCA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgd2hpbGUgKHRoaXMucGFyZW50W2l0ZW1dICE9PSBpdGVtKSB7XG4gICAgICBpdGVtID0gdGhpcy5wYXJlbnRbaXRlbV07XG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW07XG4gIH07XG5cbiAgVW5pb25GaW5kLnByb3RvdHlwZS51bmlvbiA9IGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgdmFyIHJvb3RBID0gdGhpcy5maW5kKGEpO1xuICAgIHZhciByb290QiA9IHRoaXMuZmluZChiKTtcbiAgICBpZiAocm9vdEEgPT09IHJvb3RCKSByZXR1cm47IC8vIG1ha2UgdGhlIGVsZW1lbnQgd2l0aCBzbWFsbGVyIHJvb3QgdGhlIHBhcmVudFxuXG4gICAgaWYgKHJvb3RBIDwgcm9vdEIpIHtcbiAgICAgIGlmICh0aGlzLnBhcmVudFtiXSAhPT0gYikgdGhpcy51bmlvbih0aGlzLnBhcmVudFtiXSwgYSk7XG4gICAgICB0aGlzLnBhcmVudFtiXSA9IHRoaXMucGFyZW50W2FdO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5wYXJlbnRbYV0gIT09IGEpIHRoaXMudW5pb24odGhpcy5wYXJlbnRbYV0sIGIpO1xuICAgICAgdGhpcy5wYXJlbnRbYV0gPSB0aGlzLnBhcmVudFtiXTtcbiAgICB9XG4gIH07IC8vIHdoZXRoZXIgYSBhbmQgYiBhcmUgY29ubmVjdGVkLCBpLmUuIGEgYW5kIGIgaGF2ZSB0aGUgc2FtZSByb290XG5cblxuICBVbmlvbkZpbmQucHJvdG90eXBlLmNvbm5lY3RlZCA9IGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIHRoaXMuZmluZChhKSA9PT0gdGhpcy5maW5kKGIpO1xuICB9O1xuXG4gIHJldHVybiBVbmlvbkZpbmQ7XG59KCk7XG5cbmV4cG9ydCBkZWZhdWx0IFVuaW9uRmluZDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/structs/union-find.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/util.js":
/*!*************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/util.js ***!
\*************************************************************************/
/*! exports provided: getNeighbors, getOutEdgesNodeId, getEdgesByNodeId, uniqueId */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getNeighbors\", function() { return getNeighbors; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getOutEdgesNodeId\", function() { return getOutEdgesNodeId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEdgesByNodeId\", function() { return getEdgesByNodeId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uniqueId\", function() { return uniqueId; });\n/**\n * 获取指定节点的所有邻居\n * @param nodeId 节点 ID\n * @param edges 图中的所有边数据\n * @param type 邻居类型\n */\nvar getNeighbors = function getNeighbors(nodeId, edges, type) {\n if (edges === void 0) {\n edges = [];\n }\n\n var currentEdges = edges.filter(function (edge) {\n return edge.source === nodeId || edge.target === nodeId;\n });\n\n if (type === 'target') {\n // 当前节点为 source,它所指向的目标节点\n var neighhborsConverter_1 = function neighhborsConverter_1(edge) {\n return edge.source === nodeId;\n };\n\n return currentEdges.filter(neighhborsConverter_1).map(function (edge) {\n return edge.target;\n });\n }\n\n if (type === 'source') {\n // 当前节点为 target,它所指向的源节点\n var neighhborsConverter_2 = function neighhborsConverter_2(edge) {\n return edge.target === nodeId;\n };\n\n return currentEdges.filter(neighhborsConverter_2).map(function (edge) {\n return edge.source;\n });\n } // 若未指定 type ,则返回所有邻居\n\n\n var neighhborsConverter = function neighhborsConverter(edge) {\n return edge.source === nodeId ? edge.target : edge.source;\n };\n\n return currentEdges.map(neighhborsConverter);\n};\n/**\n * 获取指定节点的出边\n * @param nodeId 节点 ID\n * @param edges 图中的所有边数据\n */\n\nvar getOutEdgesNodeId = function getOutEdgesNodeId(nodeId, edges) {\n return edges.filter(function (edge) {\n return edge.source === nodeId;\n });\n};\n/**\n * 获取指定节点的边,包括出边和入边\n * @param nodeId 节点 ID\n * @param edges 图中的所有边数据\n */\n\nvar getEdgesByNodeId = function getEdgesByNodeId(nodeId, edges) {\n return edges.filter(function (edge) {\n return edge.source === nodeId || edge.target === nodeId;\n });\n};\n/**\n * 生成唯一的 ID,规则是序号 + 时间戳\n * @param index 序号\n */\n\nvar uniqueId = function uniqueId(index) {\n if (index === void 0) {\n index = 0;\n }\n\n var random1 = \"\".concat(Math.random()).split('.')[1].substr(0, 5);\n var random2 = \"\".concat(Math.random()).split('.')[1].substr(0, 5);\n return \"\".concat(index, \"-\").concat(random1).concat(random2);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL3V0aWwuanM/YzdlZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfYWxnb3JpdGhtQDAuMS4xNEBAYW50di9hbGdvcml0aG0vZXMvdXRpbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog6I635Y+W5oyH5a6a6IqC54K555qE5omA5pyJ6YK75bGFXG4gKiBAcGFyYW0gbm9kZUlkIOiKgueCuSBJRFxuICogQHBhcmFtIGVkZ2VzIOWbvuS4reeahOaJgOaciei+ueaVsOaNrlxuICogQHBhcmFtIHR5cGUg6YK75bGF57G75Z6LXG4gKi9cbmV4cG9ydCB2YXIgZ2V0TmVpZ2hib3JzID0gZnVuY3Rpb24gZ2V0TmVpZ2hib3JzKG5vZGVJZCwgZWRnZXMsIHR5cGUpIHtcbiAgaWYgKGVkZ2VzID09PSB2b2lkIDApIHtcbiAgICBlZGdlcyA9IFtdO1xuICB9XG5cbiAgdmFyIGN1cnJlbnRFZGdlcyA9IGVkZ2VzLmZpbHRlcihmdW5jdGlvbiAoZWRnZSkge1xuICAgIHJldHVybiBlZGdlLnNvdXJjZSA9PT0gbm9kZUlkIHx8IGVkZ2UudGFyZ2V0ID09PSBub2RlSWQ7XG4gIH0pO1xuXG4gIGlmICh0eXBlID09PSAndGFyZ2V0Jykge1xuICAgIC8vIOW9k+WJjeiKgueCueS4uiBzb3VyY2XvvIzlroPmiYDmjIflkJHnmoTnm67moIfoioLngrlcbiAgICB2YXIgbmVpZ2hoYm9yc0NvbnZlcnRlcl8xID0gZnVuY3Rpb24gbmVpZ2hoYm9yc0NvbnZlcnRlcl8xKGVkZ2UpIHtcbiAgICAgIHJldHVybiBlZGdlLnNvdXJjZSA9PT0gbm9kZUlkO1xuICAgIH07XG5cbiAgICByZXR1cm4gY3VycmVudEVkZ2VzLmZpbHRlcihuZWlnaGhib3JzQ29udmVydGVyXzEpLm1hcChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgcmV0dXJuIGVkZ2UudGFyZ2V0O1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKHR5cGUgPT09ICdzb3VyY2UnKSB7XG4gICAgLy8g5b2T5YmN6IqC54K55Li6IHRhcmdldO+8jOWug+aJgOaMh+WQkeeahOa6kOiKgueCuVxuICAgIHZhciBuZWlnaGhib3JzQ29udmVydGVyXzIgPSBmdW5jdGlvbiBuZWlnaGhib3JzQ29udmVydGVyXzIoZWRnZSkge1xuICAgICAgcmV0dXJuIGVkZ2UudGFyZ2V0ID09PSBub2RlSWQ7XG4gICAgfTtcblxuICAgIHJldHVybiBjdXJyZW50RWRnZXMuZmlsdGVyKG5laWdoaGJvcnNDb252ZXJ0ZXJfMikubWFwKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICByZXR1cm4gZWRnZS5zb3VyY2U7XG4gICAgfSk7XG4gIH0gLy8g6Iul5pyq5oyH5a6aIHR5cGUg77yM5YiZ6L+U5Zue5omA5pyJ6YK75bGFXG5cblxuICB2YXIgbmVpZ2hoYm9yc0NvbnZlcnRlciA9IGZ1bmN0aW9uIG5laWdoaGJvcnNDb252ZXJ0ZXIoZWRnZSkge1xuICAgIHJldHVybiBlZGdlLnNvdXJjZSA9PT0gbm9kZUlkID8gZWRnZS50YXJnZXQgOiBlZGdlLnNvdXJjZTtcbiAgfTtcblxuICByZXR1cm4gY3VycmVudEVkZ2VzLm1hcChuZWlnaGhib3JzQ29udmVydGVyKTtcbn07XG4vKipcbiAqIOiOt+WPluaMh+WumuiKgueCueeahOWHuui+uVxuICogQHBhcmFtIG5vZGVJZCDoioLngrkgSURcbiAqIEBwYXJhbSBlZGdlcyDlm77kuK3nmoTmiYDmnInovrnmlbDmja5cbiAqL1xuXG5leHBvcnQgdmFyIGdldE91dEVkZ2VzTm9kZUlkID0gZnVuY3Rpb24gZ2V0T3V0RWRnZXNOb2RlSWQobm9kZUlkLCBlZGdlcykge1xuICByZXR1cm4gZWRnZXMuZmlsdGVyKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgcmV0dXJuIGVkZ2Uuc291cmNlID09PSBub2RlSWQ7XG4gIH0pO1xufTtcbi8qKlxuICog6I635Y+W5oyH5a6a6IqC54K555qE6L6577yM5YyF5ous5Ye66L655ZKM5YWl6L65XG4gKiBAcGFyYW0gbm9kZUlkIOiKgueCuSBJRFxuICogQHBhcmFtIGVkZ2VzIOWbvuS4reeahOaJgOaciei+ueaVsOaNrlxuICovXG5cbmV4cG9ydCB2YXIgZ2V0RWRnZXNCeU5vZGVJZCA9IGZ1bmN0aW9uIGdldEVkZ2VzQnlOb2RlSWQobm9kZUlkLCBlZGdlcykge1xuICByZXR1cm4gZWRnZXMuZmlsdGVyKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgcmV0dXJuIGVkZ2Uuc291cmNlID09PSBub2RlSWQgfHwgZWRnZS50YXJnZXQgPT09IG5vZGVJZDtcbiAgfSk7XG59O1xuLyoqXG4gKiDnlJ/miJDllK/kuIDnmoQgSUTvvIzop4TliJnmmK/luo/lj7cgKyDml7bpl7TmiLNcbiAqIEBwYXJhbSBpbmRleCDluo/lj7dcbiAqL1xuXG5leHBvcnQgdmFyIHVuaXF1ZUlkID0gZnVuY3Rpb24gdW5pcXVlSWQoaW5kZXgpIHtcbiAgaWYgKGluZGV4ID09PSB2b2lkIDApIHtcbiAgICBpbmRleCA9IDA7XG4gIH1cblxuICB2YXIgcmFuZG9tMSA9IFwiXCIuY29uY2F0KE1hdGgucmFuZG9tKCkpLnNwbGl0KCcuJylbMV0uc3Vic3RyKDAsIDUpO1xuICB2YXIgcmFuZG9tMiA9IFwiXCIuY29uY2F0KE1hdGgucmFuZG9tKCkpLnNwbGl0KCcuJylbMV0uc3Vic3RyKDAsIDUpO1xuICByZXR1cm4gXCJcIi5jb25jYXQoaW5kZXgsIFwiLVwiKS5jb25jYXQocmFuZG9tMSkuY29uY2F0KHJhbmRvbTIpO1xufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/util.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/utils/vector.js":
/*!*********************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/utils/vector.js ***!
\*********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/**\n * 向量运算\n */\n\n\nvar Vector =\n/** @class */\nfunction () {\n function Vector(arr) {\n this.arr = arr;\n }\n\n Vector.prototype.add = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length)) {\n return new Vector(otherArr);\n }\n\n if (!(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return new Vector(this.arr);\n }\n\n if (this.arr.length === otherArr.length) {\n var res = [];\n\n for (var key in this.arr) {\n res[key] = this.arr[key] + otherArr[key];\n }\n\n return new Vector(res);\n }\n };\n\n Vector.prototype.subtract = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length)) {\n return new Vector(otherArr);\n }\n\n if (!(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return new Vector(this.arr);\n }\n\n if (this.arr.length === otherArr.length) {\n var res = [];\n\n for (var key in this.arr) {\n res[key] = this.arr[key] - otherArr[key];\n }\n\n return new Vector(res);\n }\n };\n\n Vector.prototype.avg = function (length) {\n var res = [];\n\n for (var key in this.arr) {\n res[key] = this.arr[key] / length;\n }\n\n return new Vector(res);\n };\n\n Vector.prototype.negate = function () {\n var res = [];\n\n for (var key in this.arr) {\n res[key] = -this.arr[key];\n }\n\n return new Vector(res);\n }; // 平方欧式距离\n\n\n Vector.prototype.squareEuclideanDistance = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length) || !(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return 0;\n }\n\n if (this.arr.length === otherArr.length) {\n var res = 0;\n\n for (var key in this.arr) {\n res += Math.pow(this.arr[key] - otherVector.arr[key], 2);\n }\n\n return res;\n }\n }; // 归一化处理\n\n\n Vector.prototype.normalize = function () {\n var res = [];\n var cloneArr = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"clone\"])(this.arr);\n cloneArr.sort(function (a, b) {\n return a - b;\n });\n var max = cloneArr[cloneArr.length - 1];\n var min = cloneArr[0];\n\n for (var key in this.arr) {\n res[key] = (this.arr[key] - min) / (max - min);\n }\n\n return new Vector(res);\n };\n\n return Vector;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Vector);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL3V0aWxzL3ZlY3Rvci5qcz9lNDk1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDbUM7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0EsbUJBQW1CLHdEQUFLO0FBQ3hCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRWMscUVBQU0iLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2VzL3V0aWxzL3ZlY3Rvci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog5ZCR6YeP6L+Q566XXG4gKi9cbmltcG9ydCB7IGNsb25lIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5cbnZhciBWZWN0b3IgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBWZWN0b3IoYXJyKSB7XG4gICAgdGhpcy5hcnIgPSBhcnI7XG4gIH1cblxuICBWZWN0b3IucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChvdGhlclZlY3Rvcikge1xuICAgIHZhciBfYTtcblxuICAgIHZhciBvdGhlckFyciA9IG90aGVyVmVjdG9yLmFycjtcblxuICAgIGlmICghKChfYSA9IHRoaXMuYXJyKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSkge1xuICAgICAgcmV0dXJuIG5ldyBWZWN0b3Iob3RoZXJBcnIpO1xuICAgIH1cblxuICAgIGlmICghKG90aGVyQXJyID09PSBudWxsIHx8IG90aGVyQXJyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvdGhlckFyci5sZW5ndGgpKSB7XG4gICAgICByZXR1cm4gbmV3IFZlY3Rvcih0aGlzLmFycik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYXJyLmxlbmd0aCA9PT0gb3RoZXJBcnIubGVuZ3RoKSB7XG4gICAgICB2YXIgcmVzID0gW107XG5cbiAgICAgIGZvciAodmFyIGtleSBpbiB0aGlzLmFycikge1xuICAgICAgICByZXNba2V5XSA9IHRoaXMuYXJyW2tleV0gKyBvdGhlckFycltrZXldO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3IFZlY3RvcihyZXMpO1xuICAgIH1cbiAgfTtcblxuICBWZWN0b3IucHJvdG90eXBlLnN1YnRyYWN0ID0gZnVuY3Rpb24gKG90aGVyVmVjdG9yKSB7XG4gICAgdmFyIF9hO1xuXG4gICAgdmFyIG90aGVyQXJyID0gb3RoZXJWZWN0b3IuYXJyO1xuXG4gICAgaWYgKCEoKF9hID0gdGhpcy5hcnIpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGgpKSB7XG4gICAgICByZXR1cm4gbmV3IFZlY3RvcihvdGhlckFycik7XG4gICAgfVxuXG4gICAgaWYgKCEob3RoZXJBcnIgPT09IG51bGwgfHwgb3RoZXJBcnIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG90aGVyQXJyLmxlbmd0aCkpIHtcbiAgICAgIHJldHVybiBuZXcgVmVjdG9yKHRoaXMuYXJyKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hcnIubGVuZ3RoID09PSBvdGhlckFyci5sZW5ndGgpIHtcbiAgICAgIHZhciByZXMgPSBbXTtcblxuICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMuYXJyKSB7XG4gICAgICAgIHJlc1trZXldID0gdGhpcy5hcnJba2V5XSAtIG90aGVyQXJyW2tleV07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXcgVmVjdG9yKHJlcyk7XG4gICAgfVxuICB9O1xuXG4gIFZlY3Rvci5wcm90b3R5cGUuYXZnID0gZnVuY3Rpb24gKGxlbmd0aCkge1xuICAgIHZhciByZXMgPSBbXTtcblxuICAgIGZvciAodmFyIGtleSBpbiB0aGlzLmFycikge1xuICAgICAgcmVzW2tleV0gPSB0aGlzLmFycltrZXldIC8gbGVuZ3RoO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgVmVjdG9yKHJlcyk7XG4gIH07XG5cbiAgVmVjdG9yLnByb3RvdHlwZS5uZWdhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJlcyA9IFtdO1xuXG4gICAgZm9yICh2YXIga2V5IGluIHRoaXMuYXJyKSB7XG4gICAgICByZXNba2V5XSA9IC10aGlzLmFycltrZXldO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgVmVjdG9yKHJlcyk7XG4gIH07IC8vIOW5s+aWueasp+W8j+i3neemu1xuXG5cbiAgVmVjdG9yLnByb3RvdHlwZS5zcXVhcmVFdWNsaWRlYW5EaXN0YW5jZSA9IGZ1bmN0aW9uIChvdGhlclZlY3Rvcikge1xuICAgIHZhciBfYTtcblxuICAgIHZhciBvdGhlckFyciA9IG90aGVyVmVjdG9yLmFycjtcblxuICAgIGlmICghKChfYSA9IHRoaXMuYXJyKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSB8fCAhKG90aGVyQXJyID09PSBudWxsIHx8IG90aGVyQXJyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvdGhlckFyci5sZW5ndGgpKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hcnIubGVuZ3RoID09PSBvdGhlckFyci5sZW5ndGgpIHtcbiAgICAgIHZhciByZXMgPSAwO1xuXG4gICAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5hcnIpIHtcbiAgICAgICAgcmVzICs9IE1hdGgucG93KHRoaXMuYXJyW2tleV0gLSBvdGhlclZlY3Rvci5hcnJba2V5XSwgMik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXM7XG4gICAgfVxuICB9OyAvLyDlvZLkuIDljJblpITnkIZcblxuXG4gIFZlY3Rvci5wcm90b3R5cGUubm9ybWFsaXplID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciByZXMgPSBbXTtcbiAgICB2YXIgY2xvbmVBcnIgPSBjbG9uZSh0aGlzLmFycik7XG4gICAgY2xvbmVBcnIuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGEgLSBiO1xuICAgIH0pO1xuICAgIHZhciBtYXggPSBjbG9uZUFycltjbG9uZUFyci5sZW5ndGggLSAxXTtcbiAgICB2YXIgbWluID0gY2xvbmVBcnJbMF07XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5hcnIpIHtcbiAgICAgIHJlc1trZXldID0gKHRoaXMuYXJyW2tleV0gLSBtaW4pIC8gKG1heCAtIG1pbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBWZWN0b3IocmVzKTtcbiAgfTtcblxuICByZXR1cm4gVmVjdG9yO1xufSgpO1xuXG5leHBvcnQgZGVmYXVsdCBWZWN0b3I7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/utils/vector.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/adjacent-matrix.js":
/*!*************************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/adjacent-matrix.js ***!
\*************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar adjMatrix = function adjMatrix(graphData, directed) {\n var nodes = graphData.nodes,\n edges = graphData.edges;\n var matrix = []; // map node with index in data.nodes\n\n var nodeMap = {};\n\n if (!nodes) {\n throw new Error(\"invalid nodes data!\");\n }\n\n if (nodes) {\n nodes.forEach(function (node, i) {\n nodeMap[node.id] = i;\n var row = [];\n matrix.push(row);\n });\n }\n\n if (edges) {\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var sIndex = nodeMap[source];\n var tIndex = nodeMap[target];\n if (!sIndex && sIndex !== 0 || !tIndex && tIndex !== 0) return;\n matrix[sIndex][tIndex] = 1;\n\n if (!directed) {\n matrix[tIndex][sIndex] = 1;\n }\n });\n }\n\n return matrix;\n};\n\nvar _default = adjMatrix;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9hZGphY2VudC1tYXRyaXguanM/YTNlYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjs7QUFFbEI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9saWIvYWRqYWNlbnQtbWF0cml4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBhZGpNYXRyaXggPSBmdW5jdGlvbiBhZGpNYXRyaXgoZ3JhcGhEYXRhLCBkaXJlY3RlZCkge1xuICB2YXIgbm9kZXMgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBlZGdlcyA9IGdyYXBoRGF0YS5lZGdlcztcbiAgdmFyIG1hdHJpeCA9IFtdOyAvLyBtYXAgbm9kZSB3aXRoIGluZGV4IGluIGRhdGEubm9kZXNcblxuICB2YXIgbm9kZU1hcCA9IHt9O1xuXG4gIGlmICghbm9kZXMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIG5vZGVzIGRhdGEhXCIpO1xuICB9XG5cbiAgaWYgKG5vZGVzKSB7XG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaSkge1xuICAgICAgbm9kZU1hcFtub2RlLmlkXSA9IGk7XG4gICAgICB2YXIgcm93ID0gW107XG4gICAgICBtYXRyaXgucHVzaChyb3cpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKGVkZ2VzKSB7XG4gICAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgdmFyIHNvdXJjZSA9IGVkZ2Uuc291cmNlLFxuICAgICAgICAgIHRhcmdldCA9IGVkZ2UudGFyZ2V0O1xuICAgICAgdmFyIHNJbmRleCA9IG5vZGVNYXBbc291cmNlXTtcbiAgICAgIHZhciB0SW5kZXggPSBub2RlTWFwW3RhcmdldF07XG4gICAgICBpZiAoIXNJbmRleCAmJiBzSW5kZXggIT09IDAgfHwgIXRJbmRleCAmJiB0SW5kZXggIT09IDApIHJldHVybjtcbiAgICAgIG1hdHJpeFtzSW5kZXhdW3RJbmRleF0gPSAxO1xuXG4gICAgICBpZiAoIWRpcmVjdGVkKSB7XG4gICAgICAgIG1hdHJpeFt0SW5kZXhdW3NJbmRleF0gPSAxO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG1hdHJpeDtcbn07XG5cbnZhciBfZGVmYXVsdCA9IGFkak1hdHJpeDtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/adjacent-matrix.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/asyncIndex.js":
/*!********************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/asyncIndex.js ***!
\********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"GADDIAsync\", {\n enumerable: true,\n get: function get() {\n return _index.GADDIAsync;\n }\n});\nObject.defineProperty(exports, \"connectedComponentAsync\", {\n enumerable: true,\n get: function get() {\n return _index.connectedComponentAsync;\n }\n});\nexports.default = void 0;\nObject.defineProperty(exports, \"detectAllCyclesAsync\", {\n enumerable: true,\n get: function get() {\n return _index.detectAllCyclesAsync;\n }\n});\nObject.defineProperty(exports, \"detectAllDirectedCycleAsync\", {\n enumerable: true,\n get: function get() {\n return _index.detectAllDirectedCycleAsync;\n }\n});\nObject.defineProperty(exports, \"detectAllUndirectedCycleAsync\", {\n enumerable: true,\n get: function get() {\n return _index.detectAllUndirectedCycleAsync;\n }\n});\nObject.defineProperty(exports, \"detectCycleAsync\", {\n enumerable: true,\n get: function get() {\n return _index.detectCycleAsync;\n }\n});\nexports.detectDirectedCycleAsync = void 0;\nObject.defineProperty(exports, \"dijkstraAsync\", {\n enumerable: true,\n get: function get() {\n return _index.dijkstraAsync;\n }\n});\nObject.defineProperty(exports, \"findAllPathAsync\", {\n enumerable: true,\n get: function get() {\n return _index.findAllPathAsync;\n }\n});\nObject.defineProperty(exports, \"findShortestPathAsync\", {\n enumerable: true,\n get: function get() {\n return _index.findShortestPathAsync;\n }\n});\nObject.defineProperty(exports, \"floydWarshallAsync\", {\n enumerable: true,\n get: function get() {\n return _index.floydWarshallAsync;\n }\n});\nObject.defineProperty(exports, \"getAdjMatrixAsync\", {\n enumerable: true,\n get: function get() {\n return _index.getAdjMatrixAsync;\n }\n});\nObject.defineProperty(exports, \"getDegreeAsync\", {\n enumerable: true,\n get: function get() {\n return _index.getDegreeAsync;\n }\n});\nObject.defineProperty(exports, \"getInDegreeAsync\", {\n enumerable: true,\n get: function get() {\n return _index.getInDegreeAsync;\n }\n});\nObject.defineProperty(exports, \"getNeighborsAsync\", {\n enumerable: true,\n get: function get() {\n return _index.getNeighborsAsync;\n }\n});\nObject.defineProperty(exports, \"getOutDegreeAsync\", {\n enumerable: true,\n get: function get() {\n return _index.getOutDegreeAsync;\n }\n});\nObject.defineProperty(exports, \"labelPropagationAsync\", {\n enumerable: true,\n get: function get() {\n return _index.labelPropagationAsync;\n }\n});\nObject.defineProperty(exports, \"louvainAsync\", {\n enumerable: true,\n get: function get() {\n return _index.louvainAsync;\n }\n});\nObject.defineProperty(exports, \"minimumSpanningTreeAsync\", {\n enumerable: true,\n get: function get() {\n return _index.minimumSpanningTreeAsync;\n }\n});\nObject.defineProperty(exports, \"pageRankAsync\", {\n enumerable: true,\n get: function get() {\n return _index.pageRankAsync;\n }\n});\n\nvar _index = __webpack_require__(/*! ./workers/index */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/index.js\");\n\nvar detectDirectedCycleAsync = _index.detectCycleAsync;\nexports.detectDirectedCycleAsync = detectDirectedCycleAsync;\nvar _default = {\n getAdjMatrixAsync: _index.getAdjMatrixAsync,\n connectedComponentAsync: _index.connectedComponentAsync,\n getDegreeAsync: _index.getDegreeAsync,\n getInDegreeAsync: _index.getInDegreeAsync,\n getOutDegreeAsync: _index.getOutDegreeAsync,\n detectCycleAsync: _index.detectCycleAsync,\n detectDirectedCycleAsync: detectDirectedCycleAsync,\n detectAllCyclesAsync: _index.detectAllCyclesAsync,\n detectAllDirectedCycleAsync: _index.detectAllDirectedCycleAsync,\n detectAllUndirectedCycleAsync: _index.detectAllUndirectedCycleAsync,\n dijkstraAsync: _index.dijkstraAsync,\n findAllPathAsync: _index.findAllPathAsync,\n findShortestPathAsync: _index.findShortestPathAsync,\n floydWarshallAsync: _index.floydWarshallAsync,\n labelPropagationAsync: _index.labelPropagationAsync,\n louvainAsync: _index.louvainAsync,\n minimumSpanningTreeAsync: _index.minimumSpanningTreeAsync,\n pageRankAsync: _index.pageRankAsync,\n getNeighborsAsync: _index.getNeighborsAsync,\n GADDIAsync: _index.GADDIAsync\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9hc3luY0luZGV4LmpzPzM0NTEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQsYUFBYSxtQkFBTyxDQUFDLG9HQUFpQjs7QUFFdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9hc3luY0luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJHQURESUFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5HQURESUFzeW5jO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImNvbm5lY3RlZENvbXBvbmVudEFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5jb25uZWN0ZWRDb21wb25lbnRBc3luYztcbiAgfVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJkZXRlY3RBbGxDeWNsZXNBc3luY1wiLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiBfaW5kZXguZGV0ZWN0QWxsQ3ljbGVzQXN5bmM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZUFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5kZXRlY3RBbGxEaXJlY3RlZEN5Y2xlQXN5bmM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlQXN5bmNcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2luZGV4LmRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZUFzeW5jO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRldGVjdEN5Y2xlQXN5bmNcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2luZGV4LmRldGVjdEN5Y2xlQXN5bmM7XG4gIH1cbn0pO1xuZXhwb3J0cy5kZXRlY3REaXJlY3RlZEN5Y2xlQXN5bmMgPSB2b2lkIDA7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJkaWprc3RyYUFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5kaWprc3RyYUFzeW5jO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImZpbmRBbGxQYXRoQXN5bmNcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2luZGV4LmZpbmRBbGxQYXRoQXN5bmM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZmluZFNob3J0ZXN0UGF0aEFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5maW5kU2hvcnRlc3RQYXRoQXN5bmM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZmxveWRXYXJzaGFsbEFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5mbG95ZFdhcnNoYWxsQXN5bmM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZ2V0QWRqTWF0cml4QXN5bmNcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2luZGV4LmdldEFkak1hdHJpeEFzeW5jO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImdldERlZ3JlZUFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5nZXREZWdyZWVBc3luYztcbiAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJnZXRJbkRlZ3JlZUFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5nZXRJbkRlZ3JlZUFzeW5jO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImdldE5laWdoYm9yc0FzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5nZXROZWlnaGJvcnNBc3luYztcbiAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJnZXRPdXREZWdyZWVBc3luY1wiLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiBfaW5kZXguZ2V0T3V0RGVncmVlQXN5bmM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwibGFiZWxQcm9wYWdhdGlvbkFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5sYWJlbFByb3BhZ2F0aW9uQXN5bmM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwibG91dmFpbkFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5sb3V2YWluQXN5bmM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwibWluaW11bVNwYW5uaW5nVHJlZUFzeW5jXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9pbmRleC5taW5pbXVtU3Bhbm5pbmdUcmVlQXN5bmM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwicGFnZVJhbmtBc3luY1wiLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiBfaW5kZXgucGFnZVJhbmtBc3luYztcbiAgfVxufSk7XG5cbnZhciBfaW5kZXggPSByZXF1aXJlKFwiLi93b3JrZXJzL2luZGV4XCIpO1xuXG52YXIgZGV0ZWN0RGlyZWN0ZWRDeWNsZUFzeW5jID0gX2luZGV4LmRldGVjdEN5Y2xlQXN5bmM7XG5leHBvcnRzLmRldGVjdERpcmVjdGVkQ3ljbGVBc3luYyA9IGRldGVjdERpcmVjdGVkQ3ljbGVBc3luYztcbnZhciBfZGVmYXVsdCA9IHtcbiAgZ2V0QWRqTWF0cml4QXN5bmM6IF9pbmRleC5nZXRBZGpNYXRyaXhBc3luYyxcbiAgY29ubmVjdGVkQ29tcG9uZW50QXN5bmM6IF9pbmRleC5jb25uZWN0ZWRDb21wb25lbnRBc3luYyxcbiAgZ2V0RGVncmVlQXN5bmM6IF9pbmRleC5nZXREZWdyZWVBc3luYyxcbiAgZ2V0SW5EZWdyZWVBc3luYzogX2luZGV4LmdldEluRGVncmVlQXN5bmMsXG4gIGdldE91dERlZ3JlZUFzeW5jOiBfaW5kZXguZ2V0T3V0RGVncmVlQXN5bmMsXG4gIGRldGVjdEN5Y2xlQXN5bmM6IF9pbmRleC5kZXRlY3RDeWNsZUFzeW5jLFxuICBkZXRlY3REaXJlY3RlZEN5Y2xlQXN5bmM6IGRldGVjdERpcmVjdGVkQ3ljbGVBc3luYyxcbiAgZGV0ZWN0QWxsQ3ljbGVzQXN5bmM6IF9pbmRleC5kZXRlY3RBbGxDeWNsZXNBc3luYyxcbiAgZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZUFzeW5jOiBfaW5kZXguZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZUFzeW5jLFxuICBkZXRlY3RBbGxVbmRpcmVjdGVkQ3ljbGVBc3luYzogX2luZGV4LmRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZUFzeW5jLFxuICBkaWprc3RyYUFzeW5jOiBfaW5kZXguZGlqa3N0cmFBc3luYyxcbiAgZmluZEFsbFBhdGhBc3luYzogX2luZGV4LmZpbmRBbGxQYXRoQXN5bmMsXG4gIGZpbmRTaG9ydGVzdFBhdGhBc3luYzogX2luZGV4LmZpbmRTaG9ydGVzdFBhdGhBc3luYyxcbiAgZmxveWRXYXJzaGFsbEFzeW5jOiBfaW5kZXguZmxveWRXYXJzaGFsbEFzeW5jLFxuICBsYWJlbFByb3BhZ2F0aW9uQXN5bmM6IF9pbmRleC5sYWJlbFByb3BhZ2F0aW9uQXN5bmMsXG4gIGxvdXZhaW5Bc3luYzogX2luZGV4LmxvdXZhaW5Bc3luYyxcbiAgbWluaW11bVNwYW5uaW5nVHJlZUFzeW5jOiBfaW5kZXgubWluaW11bVNwYW5uaW5nVHJlZUFzeW5jLFxuICBwYWdlUmFua0FzeW5jOiBfaW5kZXgucGFnZVJhbmtBc3luYyxcbiAgZ2V0TmVpZ2hib3JzQXN5bmM6IF9pbmRleC5nZXROZWlnaGJvcnNBc3luYyxcbiAgR0FERElBc3luYzogX2luZGV4LkdBRERJQXN5bmNcbn07XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/asyncIndex.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/bfs.js":
/*!*************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/bfs.js ***!
\*************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _queue = _interopRequireDefault(__webpack_require__(/*! ./structs/queue */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/structs/queue.js\"));\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/util.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n *\n * @param callbacks\n * allowTraversal: 确定 BFS 是否从顶点沿着边遍历到其邻居,默认情况下,同一个节点只能遍历一次\n * enterNode: 当 BFS 访问某个节点时调用\n * leaveNode: 当 BFS 访问访问结束某个节点时调用\n */\nfunction initCallbacks(callbacks) {\n if (callbacks === void 0) {\n callbacks = {};\n }\n\n var initiatedCallback = callbacks;\n\n var stubCallback = function stubCallback() {};\n\n var allowTraversalCallback = function () {\n var seen = {};\n return function (_a) {\n var next = _a.next;\n var id = next;\n\n if (!seen[id]) {\n seen[id] = true;\n return true;\n }\n\n return false;\n };\n }();\n\n initiatedCallback.allowTraversal = callbacks.allowTraversal || allowTraversalCallback;\n initiatedCallback.enter = callbacks.enter || stubCallback;\n initiatedCallback.leave = callbacks.leave || stubCallback;\n return initiatedCallback;\n}\n/**\n * 广度优先遍历图\n * @param graph Graph 图实例\n * @param startNode 开始遍历的节点\n * @param originalCallbacks 回调\n */\n\n\nvar breadthFirstSearch = function breadthFirstSearch(graphData, startNodeId, originalCallbacks, directed) {\n if (directed === void 0) {\n directed = true;\n }\n\n var callbacks = initCallbacks(originalCallbacks);\n var nodeQueue = new _queue.default();\n var _a = graphData.edges,\n edges = _a === void 0 ? [] : _a; // 初始化队列元素\n\n nodeQueue.enqueue(startNodeId);\n var previousNode = '';\n\n var _loop_1 = function _loop_1() {\n var currentNode = nodeQueue.dequeue();\n callbacks.enter({\n current: currentNode,\n previous: previousNode\n }); // 将所有邻居添加到队列中以便遍历\n\n (0, _util.getNeighbors)(currentNode, edges, directed ? 'target' : undefined).forEach(function (nextNode) {\n if (callbacks.allowTraversal({\n previous: previousNode,\n current: currentNode,\n next: nextNode\n })) {\n nodeQueue.enqueue(nextNode);\n }\n });\n callbacks.leave({\n current: currentNode,\n previous: previousNode\n }); // 下一次循环之前存储当前顶点\n\n previousNode = currentNode;\n }; // 遍历队列中的所有顶点\n\n\n while (!nodeQueue.isEmpty()) {\n _loop_1();\n }\n};\n\nvar _default = breadthFirstSearch;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9iZnMuanM/MDY2MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBLG9DQUFvQyxtQkFBTyxDQUFDLG9HQUFpQjs7QUFFN0QsWUFBWSxtQkFBTyxDQUFDLGtGQUFROztBQUU1QixzQ0FBc0MsdUNBQXVDLGdCQUFnQjs7QUFFN0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQzs7QUFFdEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9saWIvYmZzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBfcXVldWUgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3N0cnVjdHMvcXVldWVcIikpO1xuXG52YXIgX3V0aWwgPSByZXF1aXJlKFwiLi91dGlsXCIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vKipcbiAqXG4gKiBAcGFyYW0gY2FsbGJhY2tzXG4gKiBhbGxvd1RyYXZlcnNhbDog56Gu5a6aIEJGUyDmmK/lkKbku47pobbngrnmsr/nnYDovrnpgY3ljobliLDlhbbpgrvlsYXvvIzpu5jorqTmg4XlhrXkuIvvvIzlkIzkuIDkuKroioLngrnlj6rog73pgY3ljobkuIDmrKFcbiAqIGVudGVyTm9kZTog5b2TIEJGUyDorr/pl67mn5DkuKroioLngrnml7bosIPnlKhcbiAqIGxlYXZlTm9kZTog5b2TIEJGUyDorr/pl67orr/pl67nu5PmnZ/mn5DkuKroioLngrnml7bosIPnlKhcbiAqL1xuZnVuY3Rpb24gaW5pdENhbGxiYWNrcyhjYWxsYmFja3MpIHtcbiAgaWYgKGNhbGxiYWNrcyA9PT0gdm9pZCAwKSB7XG4gICAgY2FsbGJhY2tzID0ge307XG4gIH1cblxuICB2YXIgaW5pdGlhdGVkQ2FsbGJhY2sgPSBjYWxsYmFja3M7XG5cbiAgdmFyIHN0dWJDYWxsYmFjayA9IGZ1bmN0aW9uIHN0dWJDYWxsYmFjaygpIHt9O1xuXG4gIHZhciBhbGxvd1RyYXZlcnNhbENhbGxiYWNrID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWVuID0ge307XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChfYSkge1xuICAgICAgdmFyIG5leHQgPSBfYS5uZXh0O1xuICAgICAgdmFyIGlkID0gbmV4dDtcblxuICAgICAgaWYgKCFzZWVuW2lkXSkge1xuICAgICAgICBzZWVuW2lkXSA9IHRydWU7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgfSgpO1xuXG4gIGluaXRpYXRlZENhbGxiYWNrLmFsbG93VHJhdmVyc2FsID0gY2FsbGJhY2tzLmFsbG93VHJhdmVyc2FsIHx8IGFsbG93VHJhdmVyc2FsQ2FsbGJhY2s7XG4gIGluaXRpYXRlZENhbGxiYWNrLmVudGVyID0gY2FsbGJhY2tzLmVudGVyIHx8IHN0dWJDYWxsYmFjaztcbiAgaW5pdGlhdGVkQ2FsbGJhY2subGVhdmUgPSBjYWxsYmFja3MubGVhdmUgfHwgc3R1YkNhbGxiYWNrO1xuICByZXR1cm4gaW5pdGlhdGVkQ2FsbGJhY2s7XG59XG4vKipcbiAqIOW5v+W6puS8mOWFiOmBjeWOhuWbvlxuICogQHBhcmFtIGdyYXBoIEdyYXBoIOWbvuWunuS+i1xuICogQHBhcmFtIHN0YXJ0Tm9kZSDlvIDlp4vpgY3ljobnmoToioLngrlcbiAqIEBwYXJhbSBvcmlnaW5hbENhbGxiYWNrcyDlm57osINcbiAqL1xuXG5cbnZhciBicmVhZHRoRmlyc3RTZWFyY2ggPSBmdW5jdGlvbiBicmVhZHRoRmlyc3RTZWFyY2goZ3JhcGhEYXRhLCBzdGFydE5vZGVJZCwgb3JpZ2luYWxDYWxsYmFja3MsIGRpcmVjdGVkKSB7XG4gIGlmIChkaXJlY3RlZCA9PT0gdm9pZCAwKSB7XG4gICAgZGlyZWN0ZWQgPSB0cnVlO1xuICB9XG5cbiAgdmFyIGNhbGxiYWNrcyA9IGluaXRDYWxsYmFja3Mob3JpZ2luYWxDYWxsYmFja3MpO1xuICB2YXIgbm9kZVF1ZXVlID0gbmV3IF9xdWV1ZS5kZWZhdWx0KCk7XG4gIHZhciBfYSA9IGdyYXBoRGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2EgPT09IHZvaWQgMCA/IFtdIDogX2E7IC8vIOWIneWni+WMlumYn+WIl+WFg+e0oFxuXG4gIG5vZGVRdWV1ZS5lbnF1ZXVlKHN0YXJ0Tm9kZUlkKTtcbiAgdmFyIHByZXZpb3VzTm9kZSA9ICcnO1xuXG4gIHZhciBfbG9vcF8xID0gZnVuY3Rpb24gX2xvb3BfMSgpIHtcbiAgICB2YXIgY3VycmVudE5vZGUgPSBub2RlUXVldWUuZGVxdWV1ZSgpO1xuICAgIGNhbGxiYWNrcy5lbnRlcih7XG4gICAgICBjdXJyZW50OiBjdXJyZW50Tm9kZSxcbiAgICAgIHByZXZpb3VzOiBwcmV2aW91c05vZGVcbiAgICB9KTsgLy8g5bCG5omA5pyJ6YK75bGF5re75Yqg5Yiw6Zif5YiX5Lit5Lul5L6/6YGN5Y6GXG5cbiAgICAoMCwgX3V0aWwuZ2V0TmVpZ2hib3JzKShjdXJyZW50Tm9kZSwgZWRnZXMsIGRpcmVjdGVkID8gJ3RhcmdldCcgOiB1bmRlZmluZWQpLmZvckVhY2goZnVuY3Rpb24gKG5leHROb2RlKSB7XG4gICAgICBpZiAoY2FsbGJhY2tzLmFsbG93VHJhdmVyc2FsKHtcbiAgICAgICAgcHJldmlvdXM6IHByZXZpb3VzTm9kZSxcbiAgICAgICAgY3VycmVudDogY3VycmVudE5vZGUsXG4gICAgICAgIG5leHQ6IG5leHROb2RlXG4gICAgICB9KSkge1xuICAgICAgICBub2RlUXVldWUuZW5xdWV1ZShuZXh0Tm9kZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY2FsbGJhY2tzLmxlYXZlKHtcbiAgICAgIGN1cnJlbnQ6IGN1cnJlbnROb2RlLFxuICAgICAgcHJldmlvdXM6IHByZXZpb3VzTm9kZVxuICAgIH0pOyAvLyDkuIvkuIDmrKHlvqrnjq/kuYvliY3lrZjlgqjlvZPliY3pobbngrlcblxuICAgIHByZXZpb3VzTm9kZSA9IGN1cnJlbnROb2RlO1xuICB9OyAvLyDpgY3ljobpmJ/liJfkuK3nmoTmiYDmnInpobbngrlcblxuXG4gIHdoaWxlICghbm9kZVF1ZXVlLmlzRW1wdHkoKSkge1xuICAgIF9sb29wXzEoKTtcbiAgfVxufTtcblxudmFyIF9kZWZhdWx0ID0gYnJlYWR0aEZpcnN0U2VhcmNoO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/bfs.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/connected-component.js":
/*!*****************************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/connected-component.js ***!
\*****************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getConnectedComponents;\nexports.detectStrongConnectComponents = exports.detectConnectedComponents = void 0;\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/util.js\");\n\n/**\n * Generate all connected components for an undirected graph\n * @param graph\n */\nvar detectConnectedComponents = function detectConnectedComponents(graphData) {\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var allComponents = [];\n var visited = {};\n var nodeStack = [];\n\n var getComponent = function getComponent(node) {\n nodeStack.push(node);\n visited[node.id] = true;\n var neighbors = (0, _util.getNeighbors)(node.id, edges);\n\n var _loop_1 = function _loop_1(i) {\n var neighbor = neighbors[i];\n\n if (!visited[neighbor]) {\n var targetNode = nodes.filter(function (node) {\n return node.id === neighbor;\n });\n\n if (targetNode.length > 0) {\n getComponent(targetNode[0]);\n }\n }\n };\n\n for (var i = 0; i < neighbors.length; ++i) {\n _loop_1(i);\n }\n };\n\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n\n if (!visited[node.id]) {\n // 对于无向图进行dfs遍历,每一次调用后都得到一个连通分量\n getComponent(node);\n var component = [];\n\n while (nodeStack.length > 0) {\n component.push(nodeStack.pop());\n }\n\n allComponents.push(component);\n }\n }\n\n return allComponents;\n};\n/**\n * Tarjan's Algorithm 复杂度 O(|V|+|E|)\n * For directed graph only\n * a directed graph is said to be strongly connected if \"every vertex is reachable from every other vertex\".\n * refer: http://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm\n * @param graph\n * @return a list of strongly connected components\n */\n\n\nexports.detectConnectedComponents = detectConnectedComponents;\n\nvar detectStrongConnectComponents = function detectStrongConnectComponents(graphData) {\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var nodeStack = [];\n var inStack = {}; // 辅助判断是否已经在stack中,减少查找开销\n\n var indices = {};\n var lowLink = {};\n var allComponents = [];\n var index = 0;\n\n var getComponent = function getComponent(node) {\n // Set the depth index for v to the smallest unused index\n indices[node.id] = index;\n lowLink[node.id] = index;\n index += 1;\n nodeStack.push(node);\n inStack[node.id] = true; // 考虑每个邻接点\n\n var neighbors = (0, _util.getNeighbors)(node.id, edges, 'target').filter(function (n) {\n return nodes.map(function (node) {\n return node.id;\n }).indexOf(n) > -1;\n });\n\n var _loop_2 = function _loop_2(i) {\n var targetNodeID = neighbors[i];\n\n if (!indices[targetNodeID] && indices[targetNodeID] !== 0) {\n var targetNode = nodes.filter(function (node) {\n return node.id === targetNodeID;\n });\n\n if (targetNode.length > 0) {\n getComponent(targetNode[0]);\n } // tree edge\n\n\n lowLink[node.id] = Math.min(lowLink[node.id], lowLink[targetNodeID]);\n } else if (inStack[targetNodeID]) {\n // back edge, target node is in the current SCC\n lowLink[node.id] = Math.min(lowLink[node.id], indices[targetNodeID]);\n }\n };\n\n for (var i = 0; i < neighbors.length; i++) {\n _loop_2(i);\n } // If node is a root node, generate an SCC\n\n\n if (lowLink[node.id] === indices[node.id]) {\n var component = [];\n\n while (nodeStack.length > 0) {\n var tmpNode = nodeStack.pop();\n inStack[tmpNode.id] = false;\n component.push(tmpNode);\n if (tmpNode === node) break;\n }\n\n if (component.length > 0) {\n allComponents.push(component);\n }\n }\n };\n\n for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {\n var node = nodes_1[_i];\n\n if (!indices[node.id] && indices[node.id] !== 0) {\n getComponent(node);\n }\n }\n\n return allComponents;\n};\n\nexports.detectStrongConnectComponents = detectStrongConnectComponents;\n\nfunction getConnectedComponents(graphData, directed) {\n if (directed) return detectStrongConnectComponents(graphData);\n return detectConnectedComponents(graphData);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9jb25uZWN0ZWQtY29tcG9uZW50LmpzPzMyMDUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBOztBQUVBLFlBQVksbUJBQU8sQ0FBQyxrRkFBUTs7QUFFNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixzQkFBc0I7QUFDekM7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixrQkFBa0I7QUFDbkM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1COztBQUVuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7O0FBRTVCO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0EsU0FBUzs7O0FBR1Q7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLHNCQUFzQjtBQUN6QztBQUNBLEtBQUs7OztBQUdMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUNBQW1DLHFCQUFxQjtBQUN4RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9saWIvY29ubmVjdGVkLWNvbXBvbmVudC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gZ2V0Q29ubmVjdGVkQ29tcG9uZW50cztcbmV4cG9ydHMuZGV0ZWN0U3Ryb25nQ29ubmVjdENvbXBvbmVudHMgPSBleHBvcnRzLmRldGVjdENvbm5lY3RlZENvbXBvbmVudHMgPSB2b2lkIDA7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5cbi8qKlxuICogR2VuZXJhdGUgYWxsIGNvbm5lY3RlZCBjb21wb25lbnRzIGZvciBhbiB1bmRpcmVjdGVkIGdyYXBoXG4gKiBAcGFyYW0gZ3JhcGhcbiAqL1xudmFyIGRldGVjdENvbm5lY3RlZENvbXBvbmVudHMgPSBmdW5jdGlvbiBkZXRlY3RDb25uZWN0ZWRDb21wb25lbnRzKGdyYXBoRGF0YSkge1xuICB2YXIgX2EgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBub2RlcyA9IF9hID09PSB2b2lkIDAgPyBbXSA6IF9hLFxuICAgICAgX2IgPSBncmFwaERhdGEuZWRnZXMsXG4gICAgICBlZGdlcyA9IF9iID09PSB2b2lkIDAgPyBbXSA6IF9iO1xuICB2YXIgYWxsQ29tcG9uZW50cyA9IFtdO1xuICB2YXIgdmlzaXRlZCA9IHt9O1xuICB2YXIgbm9kZVN0YWNrID0gW107XG5cbiAgdmFyIGdldENvbXBvbmVudCA9IGZ1bmN0aW9uIGdldENvbXBvbmVudChub2RlKSB7XG4gICAgbm9kZVN0YWNrLnB1c2gobm9kZSk7XG4gICAgdmlzaXRlZFtub2RlLmlkXSA9IHRydWU7XG4gICAgdmFyIG5laWdoYm9ycyA9ICgwLCBfdXRpbC5nZXROZWlnaGJvcnMpKG5vZGUuaWQsIGVkZ2VzKTtcblxuICAgIHZhciBfbG9vcF8xID0gZnVuY3Rpb24gX2xvb3BfMShpKSB7XG4gICAgICB2YXIgbmVpZ2hib3IgPSBuZWlnaGJvcnNbaV07XG5cbiAgICAgIGlmICghdmlzaXRlZFtuZWlnaGJvcl0pIHtcbiAgICAgICAgdmFyIHRhcmdldE5vZGUgPSBub2Rlcy5maWx0ZXIoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICByZXR1cm4gbm9kZS5pZCA9PT0gbmVpZ2hib3I7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0YXJnZXROb2RlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBnZXRDb21wb25lbnQodGFyZ2V0Tm9kZVswXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZWlnaGJvcnMubGVuZ3RoOyArK2kpIHtcbiAgICAgIF9sb29wXzEoaSk7XG4gICAgfVxuICB9O1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbm9kZSA9IG5vZGVzW2ldO1xuXG4gICAgaWYgKCF2aXNpdGVkW25vZGUuaWRdKSB7XG4gICAgICAvLyDlr7nkuo7ml6DlkJHlm77ov5vooYxkZnPpgY3ljobvvIzmr4/kuIDmrKHosIPnlKjlkI7pg73lvpfliLDkuIDkuKrov57pgJrliIbph49cbiAgICAgIGdldENvbXBvbmVudChub2RlKTtcbiAgICAgIHZhciBjb21wb25lbnQgPSBbXTtcblxuICAgICAgd2hpbGUgKG5vZGVTdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbXBvbmVudC5wdXNoKG5vZGVTdGFjay5wb3AoKSk7XG4gICAgICB9XG5cbiAgICAgIGFsbENvbXBvbmVudHMucHVzaChjb21wb25lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhbGxDb21wb25lbnRzO1xufTtcbi8qKlxuICogVGFyamFuJ3MgQWxnb3JpdGhtIOWkjeadguW6piAgTyh8VnwrfEV8KVxuICogRm9yIGRpcmVjdGVkIGdyYXBoIG9ubHlcbiAqIGEgZGlyZWN0ZWQgZ3JhcGggaXMgc2FpZCB0byBiZSBzdHJvbmdseSBjb25uZWN0ZWQgaWYgXCJldmVyeSB2ZXJ0ZXggaXMgcmVhY2hhYmxlIGZyb20gZXZlcnkgb3RoZXIgdmVydGV4XCIuXG4gKiByZWZlcjogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UYXJqYW4lMjdzX3N0cm9uZ2x5X2Nvbm5lY3RlZF9jb21wb25lbnRzX2FsZ29yaXRobVxuICogQHBhcmFtIGdyYXBoXG4gKiBAcmV0dXJuIGEgbGlzdCBvZiBzdHJvbmdseSBjb25uZWN0ZWQgY29tcG9uZW50c1xuICovXG5cblxuZXhwb3J0cy5kZXRlY3RDb25uZWN0ZWRDb21wb25lbnRzID0gZGV0ZWN0Q29ubmVjdGVkQ29tcG9uZW50cztcblxudmFyIGRldGVjdFN0cm9uZ0Nvbm5lY3RDb21wb25lbnRzID0gZnVuY3Rpb24gZGV0ZWN0U3Ryb25nQ29ubmVjdENvbXBvbmVudHMoZ3JhcGhEYXRhKSB7XG4gIHZhciBfYSA9IGdyYXBoRGF0YS5ub2RlcyxcbiAgICAgIG5vZGVzID0gX2EgPT09IHZvaWQgMCA/IFtdIDogX2EsXG4gICAgICBfYiA9IGdyYXBoRGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2IgPT09IHZvaWQgMCA/IFtdIDogX2I7XG4gIHZhciBub2RlU3RhY2sgPSBbXTtcbiAgdmFyIGluU3RhY2sgPSB7fTsgLy8g6L6F5Yqp5Yik5pat5piv5ZCm5bey57uP5Zyoc3RhY2vkuK3vvIzlh4/lsJHmn6Xmib7lvIDplIBcblxuICB2YXIgaW5kaWNlcyA9IHt9O1xuICB2YXIgbG93TGluayA9IHt9O1xuICB2YXIgYWxsQ29tcG9uZW50cyA9IFtdO1xuICB2YXIgaW5kZXggPSAwO1xuXG4gIHZhciBnZXRDb21wb25lbnQgPSBmdW5jdGlvbiBnZXRDb21wb25lbnQobm9kZSkge1xuICAgIC8vIFNldCB0aGUgZGVwdGggaW5kZXggZm9yIHYgdG8gdGhlIHNtYWxsZXN0IHVudXNlZCBpbmRleFxuICAgIGluZGljZXNbbm9kZS5pZF0gPSBpbmRleDtcbiAgICBsb3dMaW5rW25vZGUuaWRdID0gaW5kZXg7XG4gICAgaW5kZXggKz0gMTtcbiAgICBub2RlU3RhY2sucHVzaChub2RlKTtcbiAgICBpblN0YWNrW25vZGUuaWRdID0gdHJ1ZTsgLy8g6ICD6JmR5q+P5Liq6YK75o6l54K5XG5cbiAgICB2YXIgbmVpZ2hib3JzID0gKDAsIF91dGlsLmdldE5laWdoYm9ycykobm9kZS5pZCwgZWRnZXMsICd0YXJnZXQnKS5maWx0ZXIoZnVuY3Rpb24gKG4pIHtcbiAgICAgIHJldHVybiBub2Rlcy5tYXAoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUuaWQ7XG4gICAgICB9KS5pbmRleE9mKG4pID4gLTE7XG4gICAgfSk7XG5cbiAgICB2YXIgX2xvb3BfMiA9IGZ1bmN0aW9uIF9sb29wXzIoaSkge1xuICAgICAgdmFyIHRhcmdldE5vZGVJRCA9IG5laWdoYm9yc1tpXTtcblxuICAgICAgaWYgKCFpbmRpY2VzW3RhcmdldE5vZGVJRF0gJiYgaW5kaWNlc1t0YXJnZXROb2RlSURdICE9PSAwKSB7XG4gICAgICAgIHZhciB0YXJnZXROb2RlID0gbm9kZXMuZmlsdGVyKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgcmV0dXJuIG5vZGUuaWQgPT09IHRhcmdldE5vZGVJRDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRhcmdldE5vZGUubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGdldENvbXBvbmVudCh0YXJnZXROb2RlWzBdKTtcbiAgICAgICAgfSAvLyB0cmVlIGVkZ2VcblxuXG4gICAgICAgIGxvd0xpbmtbbm9kZS5pZF0gPSBNYXRoLm1pbihsb3dMaW5rW25vZGUuaWRdLCBsb3dMaW5rW3RhcmdldE5vZGVJRF0pO1xuICAgICAgfSBlbHNlIGlmIChpblN0YWNrW3RhcmdldE5vZGVJRF0pIHtcbiAgICAgICAgLy8gYmFjayBlZGdlLCB0YXJnZXQgbm9kZSBpcyBpbiB0aGUgY3VycmVudCBTQ0NcbiAgICAgICAgbG93TGlua1tub2RlLmlkXSA9IE1hdGgubWluKGxvd0xpbmtbbm9kZS5pZF0sIGluZGljZXNbdGFyZ2V0Tm9kZUlEXSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmVpZ2hib3JzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBfbG9vcF8yKGkpO1xuICAgIH0gLy8gSWYgbm9kZSBpcyBhIHJvb3Qgbm9kZSwgZ2VuZXJhdGUgYW4gU0NDXG5cblxuICAgIGlmIChsb3dMaW5rW25vZGUuaWRdID09PSBpbmRpY2VzW25vZGUuaWRdKSB7XG4gICAgICB2YXIgY29tcG9uZW50ID0gW107XG5cbiAgICAgIHdoaWxlIChub2RlU3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgICB2YXIgdG1wTm9kZSA9IG5vZGVTdGFjay5wb3AoKTtcbiAgICAgICAgaW5TdGFja1t0bXBOb2RlLmlkXSA9IGZhbHNlO1xuICAgICAgICBjb21wb25lbnQucHVzaCh0bXBOb2RlKTtcbiAgICAgICAgaWYgKHRtcE5vZGUgPT09IG5vZGUpIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29tcG9uZW50Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgYWxsQ29tcG9uZW50cy5wdXNoKGNvbXBvbmVudCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGZvciAodmFyIF9pID0gMCwgbm9kZXNfMSA9IG5vZGVzOyBfaSA8IG5vZGVzXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgdmFyIG5vZGUgPSBub2Rlc18xW19pXTtcblxuICAgIGlmICghaW5kaWNlc1tub2RlLmlkXSAmJiBpbmRpY2VzW25vZGUuaWRdICE9PSAwKSB7XG4gICAgICBnZXRDb21wb25lbnQobm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFsbENvbXBvbmVudHM7XG59O1xuXG5leHBvcnRzLmRldGVjdFN0cm9uZ0Nvbm5lY3RDb21wb25lbnRzID0gZGV0ZWN0U3Ryb25nQ29ubmVjdENvbXBvbmVudHM7XG5cbmZ1bmN0aW9uIGdldENvbm5lY3RlZENvbXBvbmVudHMoZ3JhcGhEYXRhLCBkaXJlY3RlZCkge1xuICBpZiAoZGlyZWN0ZWQpIHJldHVybiBkZXRlY3RTdHJvbmdDb25uZWN0Q29tcG9uZW50cyhncmFwaERhdGEpO1xuICByZXR1cm4gZGV0ZWN0Q29ubmVjdGVkQ29tcG9uZW50cyhncmFwaERhdGEpO1xufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/connected-component.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/constants/time.js":
/*!************************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/constants/time.js ***!
\************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.secondReg = exports.dateReg = void 0;\nvar secondReg = /^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2})$/;\nexports.secondReg = secondReg;\nvar dateReg = /^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2}) (\\d{1,2}):(\\d{1,2}):(\\d{1,2})$/;\nexports.dateReg = dateReg;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9jb25zdGFudHMvdGltZS5qcz84NzdiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQSxzQkFBc0IsSUFBSSxXQUFXLElBQUksT0FBTyxJQUFJO0FBQ3BEO0FBQ0Esb0JBQW9CLElBQUksV0FBVyxJQUFJLE9BQU8sSUFBSSxNQUFNLElBQUksTUFBTSxJQUFJLE1BQU0sSUFBSTtBQUNoRiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfYWxnb3JpdGhtQDAuMS4xNEBAYW50di9hbGdvcml0aG0vbGliL2NvbnN0YW50cy90aW1lLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLnNlY29uZFJlZyA9IGV4cG9ydHMuZGF0ZVJlZyA9IHZvaWQgMDtcbnZhciBzZWNvbmRSZWcgPSAvXihcXGR7MSw0fSkoLXxcXC8pKFxcZHsxLDJ9KVxcMihcXGR7MSwyfSkkLztcbmV4cG9ydHMuc2Vjb25kUmVnID0gc2Vjb25kUmVnO1xudmFyIGRhdGVSZWcgPSAvXihcXGR7MSw0fSkoLXxcXC8pKFxcZHsxLDJ9KVxcMihcXGR7MSwyfSkgKFxcZHsxLDJ9KTooXFxkezEsMn0pOihcXGR7MSwyfSkkLztcbmV4cG9ydHMuZGF0ZVJlZyA9IGRhdGVSZWc7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/constants/time.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/degree.js":
/*!****************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/degree.js ***!
\****************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getOutDegree = exports.getInDegree = exports.default = void 0;\n\nvar degree = function degree(graphData) {\n var degrees = {};\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n nodes.forEach(function (node) {\n degrees[node.id] = {\n degree: 0,\n inDegree: 0,\n outDegree: 0\n };\n });\n edges.forEach(function (edge) {\n degrees[edge.source].degree++;\n degrees[edge.source].outDegree++;\n degrees[edge.target].degree++;\n degrees[edge.target].inDegree++;\n });\n return degrees;\n};\n\nvar _default = degree;\n/**\n * 获取指定节点的入度\n * @param graphData 图数据\n * @param nodeId 节点ID\n */\n\nexports.default = _default;\n\nvar getInDegree = function getInDegree(graphData, nodeId) {\n var nodeDegree = degree(graphData);\n\n if (nodeDegree[nodeId]) {\n return degree(graphData)[nodeId].inDegree;\n }\n\n return 0;\n};\n/**\n * 获取指定节点的出度\n * @param graphData 图数据\n * @param nodeId 节点ID\n */\n\n\nexports.getInDegree = getInDegree;\n\nvar getOutDegree = function getOutDegree(graphData, nodeId) {\n var nodeDegree = degree(graphData);\n\n if (nodeDegree[nodeId]) {\n return degree(graphData)[nodeId].outDegree;\n }\n\n return 0;\n};\n\nexports.getOutDegree = getOutDegree;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9kZWdyZWUuanM/MWY4ZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9saWIvZGVncmVlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmdldE91dERlZ3JlZSA9IGV4cG9ydHMuZ2V0SW5EZWdyZWUgPSBleHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBkZWdyZWUgPSBmdW5jdGlvbiBkZWdyZWUoZ3JhcGhEYXRhKSB7XG4gIHZhciBkZWdyZWVzID0ge307XG4gIHZhciBfYSA9IGdyYXBoRGF0YS5ub2RlcyxcbiAgICAgIG5vZGVzID0gX2EgPT09IHZvaWQgMCA/IFtdIDogX2EsXG4gICAgICBfYiA9IGdyYXBoRGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2IgPT09IHZvaWQgMCA/IFtdIDogX2I7XG4gIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICBkZWdyZWVzW25vZGUuaWRdID0ge1xuICAgICAgZGVncmVlOiAwLFxuICAgICAgaW5EZWdyZWU6IDAsXG4gICAgICBvdXREZWdyZWU6IDBcbiAgICB9O1xuICB9KTtcbiAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgIGRlZ3JlZXNbZWRnZS5zb3VyY2VdLmRlZ3JlZSsrO1xuICAgIGRlZ3JlZXNbZWRnZS5zb3VyY2VdLm91dERlZ3JlZSsrO1xuICAgIGRlZ3JlZXNbZWRnZS50YXJnZXRdLmRlZ3JlZSsrO1xuICAgIGRlZ3JlZXNbZWRnZS50YXJnZXRdLmluRGVncmVlKys7XG4gIH0pO1xuICByZXR1cm4gZGVncmVlcztcbn07XG5cbnZhciBfZGVmYXVsdCA9IGRlZ3JlZTtcbi8qKlxuICog6I635Y+W5oyH5a6a6IqC54K555qE5YWl5bqmXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICogQHBhcmFtIG5vZGVJZCDoioLngrlJRFxuICovXG5cbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0O1xuXG52YXIgZ2V0SW5EZWdyZWUgPSBmdW5jdGlvbiBnZXRJbkRlZ3JlZShncmFwaERhdGEsIG5vZGVJZCkge1xuICB2YXIgbm9kZURlZ3JlZSA9IGRlZ3JlZShncmFwaERhdGEpO1xuXG4gIGlmIChub2RlRGVncmVlW25vZGVJZF0pIHtcbiAgICByZXR1cm4gZGVncmVlKGdyYXBoRGF0YSlbbm9kZUlkXS5pbkRlZ3JlZTtcbiAgfVxuXG4gIHJldHVybiAwO1xufTtcbi8qKlxuICog6I635Y+W5oyH5a6a6IqC54K555qE5Ye65bqmXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICogQHBhcmFtIG5vZGVJZCDoioLngrlJRFxuICovXG5cblxuZXhwb3J0cy5nZXRJbkRlZ3JlZSA9IGdldEluRGVncmVlO1xuXG52YXIgZ2V0T3V0RGVncmVlID0gZnVuY3Rpb24gZ2V0T3V0RGVncmVlKGdyYXBoRGF0YSwgbm9kZUlkKSB7XG4gIHZhciBub2RlRGVncmVlID0gZGVncmVlKGdyYXBoRGF0YSk7XG5cbiAgaWYgKG5vZGVEZWdyZWVbbm9kZUlkXSkge1xuICAgIHJldHVybiBkZWdyZWUoZ3JhcGhEYXRhKVtub2RlSWRdLm91dERlZ3JlZTtcbiAgfVxuXG4gIHJldHVybiAwO1xufTtcblxuZXhwb3J0cy5nZXRPdXREZWdyZWUgPSBnZXRPdXREZWdyZWU7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/degree.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/detect-cycle.js":
/*!**********************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/detect-cycle.js ***!
\**********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.detectAllUndirectedCycle = exports.detectAllDirectedCycle = exports.detectAllCycles = exports.default = void 0;\n\nvar _dfs = _interopRequireDefault(__webpack_require__(/*! ./dfs */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/dfs.js\"));\n\nvar _connectedComponent = _interopRequireWildcard(__webpack_require__(/*! ./connected-component */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/connected-component.js\"));\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/util.js\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar detectDirectedCycle = function detectDirectedCycle(graphData) {\n var cycle = null;\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a;\n var dfsParentMap = {}; // 所有没有被访问的节点集合\n\n var unvisitedSet = {}; // 正在被访问的节点集合\n\n var visitingSet = {}; // 所有已经被访问过的节点集合\n\n var visitedSet = {}; // 初始化 unvisitedSet\n\n nodes.forEach(function (node) {\n unvisitedSet[node.id] = node;\n });\n var callbacks = {\n enter: function enter(_a) {\n var currentNode = _a.current,\n previousNode = _a.previous;\n\n if (visitingSet[currentNode]) {\n // 如果当前节点正在访问中,则说明检测到环路了\n cycle = {};\n var currentCycleNode = currentNode;\n var previousCycleNode = previousNode;\n\n while (previousCycleNode !== currentNode) {\n cycle[currentCycleNode] = previousCycleNode;\n currentCycleNode = previousCycleNode;\n previousCycleNode = dfsParentMap[previousCycleNode];\n }\n\n cycle[currentCycleNode] = previousCycleNode;\n } else {\n // 如果不存在正在访问集合中,则将其放入正在访问集合,并从未访问集合中删除\n visitingSet[currentNode] = currentNode;\n delete unvisitedSet[currentNode]; // 更新 DSF parents 列表\n\n dfsParentMap[currentNode] = previousNode;\n }\n },\n leave: function leave(_a) {\n var currentNode = _a.current; // 如果所有的节点的子节点都已经访问过了,则从正在访问集合中删除掉,并将其移入到已访问集合中,\n // 同时也意味着当前节点的所有邻居节点都被访问过了\n\n visitedSet[currentNode] = currentNode;\n delete visitingSet[currentNode];\n },\n allowTraversal: function allowTraversal(_a) {\n var nextNode = _a.next; // 如果检测到环路则需要终止所有进一步的遍历,否则会导致无限循环遍历\n\n if (cycle) {\n return false;\n } // 仅允许遍历没有访问的节点,visitedSet 中的都已经访问过了\n\n\n return !visitedSet[nextNode];\n }\n }; // 开始遍历节点\n\n while (Object.keys(unvisitedSet).length) {\n // 从第一个节点开始进行 DFS 遍历\n var firsetUnVisitedKey = Object.keys(unvisitedSet)[0];\n (0, _dfs.default)(graphData, firsetUnVisitedKey, callbacks);\n }\n\n return cycle;\n};\n/**\n * 检测无向图中的所有Base cycles\n * refer: https://www.codeproject.com/Articles/1158232/Enumerating-All-Cycles-in-an-Undirected-Graph\n * @param graph\n * @param nodeIds 节点 ID 的数组\n * @param include 包含或排除指定的节点\n * @return [{[key: string]: INode}] 返回一组base cycles\n */\n\n\nvar detectAllUndirectedCycle = function detectAllUndirectedCycle(graphData, nodeIds, include) {\n var _a, _b;\n\n if (include === void 0) {\n include = true;\n }\n\n var allCycles = [];\n var components = (0, _connectedComponent.default)(graphData, false); // loop through all connected components\n\n for (var _i = 0, components_1 = components; _i < components_1.length; _i++) {\n var component = components_1[_i];\n if (!component.length) continue;\n var root = component[0];\n var rootId = root.id;\n var stack = [root];\n var parent_1 = (_a = {}, _a[rootId] = root, _a);\n var used = (_b = {}, _b[rootId] = new Set(), _b); // walk a spanning tree to find cycles\n\n while (stack.length > 0) {\n var curNode = stack.pop();\n var curNodeId = curNode.id;\n var neighbors = (0, _util.getNeighbors)(curNodeId, graphData.edges);\n\n var _loop_1 = function _loop_1(i) {\n var _c;\n\n var neighborId = neighbors[i];\n var neighbor = graphData.nodes.find(function (node) {\n return node.id === neighborId;\n }); // const neighborId = neighbor.get('id');\n\n if (neighborId === curNodeId) {\n // 自环\n allCycles.push((_c = {}, _c[neighborId] = curNode, _c));\n } else if (!(neighborId in used)) {\n // visit a new node\n parent_1[neighborId] = curNode;\n stack.push(neighbor);\n used[neighborId] = new Set([curNode]);\n } else if (!used[curNodeId].has(neighbor)) {\n // a cycle found\n var cycleValid = true;\n var cyclePath = [neighbor, curNode];\n var p = parent_1[curNodeId];\n\n while (used[neighborId].size && !used[neighborId].has(p)) {\n cyclePath.push(p);\n if (p === parent_1[p.id]) break;else p = parent_1[p.id];\n }\n\n cyclePath.push(p);\n\n if (nodeIds && include) {\n // 如果有指定包含的节点\n cycleValid = false;\n\n if (cyclePath.findIndex(function (node) {\n return nodeIds.indexOf(node.id) > -1;\n }) > -1) {\n cycleValid = true;\n }\n } else if (nodeIds && !include) {\n // 如果有指定不包含的节点\n if (cyclePath.findIndex(function (node) {\n return nodeIds.indexOf(node.id) > -1;\n }) > -1) {\n cycleValid = false;\n }\n } // 把 node list 形式转换为 cycle 的格式\n\n\n if (cycleValid) {\n var cycle = {};\n\n for (var index = 1; index < cyclePath.length; index += 1) {\n cycle[cyclePath[index - 1].id] = cyclePath[index];\n }\n\n if (cyclePath.length) {\n cycle[cyclePath[cyclePath.length - 1].id] = cyclePath[0];\n }\n\n allCycles.push(cycle);\n }\n\n used[neighborId].add(curNode);\n }\n };\n\n for (var i = 0; i < neighbors.length; i += 1) {\n _loop_1(i);\n }\n }\n }\n\n return allCycles;\n};\n/**\n * Johnson's algorithm, 时间复杂度 O((V + E)(C + 1))$ and space bounded by O(V + E)\n * refer: https://www.cs.tufts.edu/comp/150GA/homeworks/hw1/Johnson%2075.PDF\n * refer: https://networkx.github.io/documentation/stable/_modules/networkx/algorithms/cycles.html#simple_cycles\n * @param graph\n * @param nodeIds 节点 ID 的数组\n * @param include 包含或排除指定的节点\n * @return [{[key: string]: INode}] 返回所有的 simple cycles\n */\n\n\nexports.detectAllUndirectedCycle = detectAllUndirectedCycle;\n\nvar detectAllDirectedCycle = function detectAllDirectedCycle(graphData, nodeIds, include) {\n if (include === void 0) {\n include = true;\n }\n\n var path = []; // stack of nodes in current path\n\n var blocked = new Set();\n var B = []; // remember portions of the graph that yield no elementary circuit\n\n var allCycles = [];\n var idx2Node = {};\n var node2Idx = {}; // 辅助函数: unblock all blocked nodes\n\n var unblock = function unblock(thisNode) {\n var stack = [thisNode];\n\n while (stack.length > 0) {\n var node = stack.pop();\n\n if (blocked.has(node)) {\n blocked.delete(node);\n B[node.id].forEach(function (n) {\n stack.push(n);\n });\n B[node.id].clear();\n }\n }\n };\n\n var circuit = function circuit(node, start, adjList) {\n var closed = false; // whether a path is closed\n\n if (nodeIds && include === false && nodeIds.indexOf(node.id) > -1) return closed;\n path.push(node);\n blocked.add(node);\n var neighbors = adjList[node.id];\n\n for (var i = 0; i < neighbors.length; i += 1) {\n var neighbor = idx2Node[neighbors[i]];\n\n if (neighbor === start) {\n var cycle = {};\n\n for (var index = 1; index < path.length; index += 1) {\n cycle[path[index - 1].id] = path[index];\n }\n\n if (path.length) {\n cycle[path[path.length - 1].id] = path[0];\n }\n\n allCycles.push(cycle);\n closed = true;\n } else if (!blocked.has(neighbor)) {\n if (circuit(neighbor, start, adjList)) {\n closed = true;\n }\n }\n }\n\n if (closed) {\n unblock(node);\n } else {\n for (var i = 0; i < neighbors.length; i += 1) {\n var neighbor = idx2Node[neighbors[i]];\n\n if (!B[neighbor.id].has(node)) {\n B[neighbor.id].add(node);\n }\n }\n }\n\n path.pop();\n return closed;\n };\n\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a; // Johnson's algorithm 要求给节点赋顺序,先按节点在数组中的顺序\n\n for (var i = 0; i < nodes.length; i += 1) {\n var node = nodes[i];\n var nodeId = node.id;\n node2Idx[nodeId] = i;\n idx2Node[i] = node;\n } // 如果有指定包含的节点,则把指定节点排序在前,以便提早结束搜索\n\n\n if (nodeIds && include) {\n var _loop_2 = function _loop_2(i) {\n var nodeId = nodeIds[i];\n node2Idx[nodes[i].id] = node2Idx[nodeId];\n node2Idx[nodeId] = 0;\n idx2Node[0] = nodes.find(function (node) {\n return node.id === nodeId;\n });\n idx2Node[node2Idx[nodes[i].id]] = nodes[i];\n };\n\n for (var i = 0; i < nodeIds.length; i++) {\n _loop_2(i);\n }\n } // 返回 节点顺序 >= nodeOrder 的强连通分量的adjList\n\n\n var getMinComponentAdj = function getMinComponentAdj(components) {\n var _a;\n\n var minCompIdx;\n var minIdx = Infinity; // Find least component and the lowest node\n\n for (var i = 0; i < components.length; i += 1) {\n var comp = components[i];\n\n for (var j = 0; j < comp.length; j++) {\n var nodeIdx_1 = node2Idx[comp[j].id];\n\n if (nodeIdx_1 < minIdx) {\n minIdx = nodeIdx_1;\n minCompIdx = i;\n }\n }\n }\n\n var component = components[minCompIdx];\n var adjList = [];\n\n for (var i = 0; i < component.length; i += 1) {\n var node = component[i];\n adjList[node.id] = [];\n\n for (var _i = 0, _b = (0, _util.getNeighbors)(node.id, graphData.edges, 'target').filter(function (n) {\n return component.map(function (c) {\n return c.id;\n }).indexOf(n) > -1;\n }); _i < _b.length; _i++) {\n var neighbor = _b[_i]; // 对自环情况 (点连向自身) 特殊处理:记录自环,但不加入adjList\n\n if (neighbor === node.id && !(include === false && nodeIds.indexOf(node.id) > -1)) {\n allCycles.push((_a = {}, _a[node.id] = node, _a));\n } else {\n adjList[node.id].push(node2Idx[neighbor]);\n }\n }\n }\n\n return {\n component: component,\n adjList: adjList,\n minIdx: minIdx\n };\n };\n\n var nodeIdx = 0;\n\n while (nodeIdx < nodes.length) {\n var subgraphNodes = nodes.filter(function (n) {\n return node2Idx[n.id] >= nodeIdx;\n });\n var sccs = (0, _connectedComponent.detectStrongConnectComponents)({\n nodes: subgraphNodes,\n edges: graphData.edges\n }).filter(function (component) {\n return component.length > 1;\n });\n if (sccs.length === 0) break;\n var scc = getMinComponentAdj(sccs);\n var minIdx = scc.minIdx,\n adjList = scc.adjList,\n component = scc.component;\n\n if (component.length > 1) {\n component.forEach(function (node) {\n B[node.id] = new Set();\n });\n var startNode = idx2Node[minIdx]; // startNode 不在指定要包含的节点中,提前结束搜索\n\n if (nodeIds && include && nodeIds.indexOf(startNode.id) === -1) return allCycles;\n circuit(startNode, startNode, adjList);\n nodeIdx = minIdx + 1;\n } else {\n break;\n }\n }\n\n return allCycles;\n};\n/**\n * 查找图中所有满足要求的圈\n * @param graph\n * @param directed 是否为有向图\n * @param nodeIds 节点 ID 的数组,若不指定,则返回图中所有的圈\n * @param include 包含或排除指定的节点\n * @return [{[key: string]: Node}] 包含所有环的数组,每个环用一个Object表示,其中key为节点id,value为该节点在环中指向的下一个节点\n */\n\n\nexports.detectAllDirectedCycle = detectAllDirectedCycle;\n\nvar detectAllCycles = function detectAllCycles(graphData, directed, nodeIds, include) {\n if (include === void 0) {\n include = true;\n }\n\n if (directed) return detectAllDirectedCycle(graphData, nodeIds, include);\n return detectAllUndirectedCycle(graphData, nodeIds, include);\n};\n\nexports.detectAllCycles = detectAllCycles;\nvar _default = detectDirectedCycle;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9kZXRlY3QtY3ljbGUuanM/MDA1OCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYix1QkFBdUIsMkJBQTJCLDJFQUEyRSxrQ0FBa0MsbUJBQW1CLEdBQUcsRUFBRSxPQUFPLGtDQUFrQyw4SEFBOEgsR0FBRyxFQUFFLHFCQUFxQjs7QUFFeFg7QUFDQTtBQUNBLENBQUM7QUFDRDs7QUFFQSxrQ0FBa0MsbUJBQU8sQ0FBQyxnRkFBTzs7QUFFakQsa0RBQWtELG1CQUFPLENBQUMsZ0hBQXVCOztBQUVqRixZQUFZLG1CQUFPLENBQUMsa0ZBQVE7O0FBRTVCLGdEQUFnRCxnREFBZ0QsdUNBQXVDLHNDQUFzQyxvRkFBb0YsMkRBQTJELEVBQUUsZUFBZTs7QUFFN1Usb0RBQW9ELDZDQUE2QyxZQUFZLEVBQUUsOEVBQThFLFNBQVMsZ0JBQWdCLEVBQUUsbURBQW1ELCtCQUErQix1QkFBdUIsRUFBRSxpQkFBaUIsc0ZBQXNGLHVCQUF1QiwyRUFBMkUscUZBQXFGLHNDQUFzQywwQ0FBMEMsRUFBRSxPQUFPLHdCQUF3QixFQUFFLEVBQUUsRUFBRSxzQkFBc0IsYUFBYSx3QkFBd0IsRUFBRSxlQUFlOztBQUVweUIsc0NBQXNDLHVDQUF1QyxnQkFBZ0I7O0FBRTdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCOztBQUV4Qix3QkFBd0I7O0FBRXhCLHVCQUF1Qjs7QUFFdkIsc0JBQXNCOztBQUV0QjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EseUNBQXlDOztBQUV6QztBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsbUNBQW1DO0FBQ25DOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSw2QkFBNkI7O0FBRTdCO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHFCQUFxQjtBQUNsQzs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxzRUFBc0U7O0FBRXRFLDZDQUE2QywwQkFBMEI7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQix1QkFBdUIsOEJBQThCOztBQUVyRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsRUFBRTs7QUFFWDtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNENBQTRDO0FBQzVDOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxXQUFXOzs7QUFHWDtBQUNBOztBQUVBLCtCQUErQiwwQkFBMEI7QUFDekQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCLHNCQUFzQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHFCQUFxQjtBQUNsQzs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsZ0JBQWdCOztBQUVoQjtBQUNBLGFBQWE7O0FBRWI7QUFDQTtBQUNBLG9CQUFvQjs7QUFFcEI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUJBQXVCOztBQUV2QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsc0JBQXNCO0FBQ3pDOztBQUVBO0FBQ0E7O0FBRUEsMkJBQTJCLHFCQUFxQjtBQUNoRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTCxxQkFBcUIsc0JBQXNCO0FBQzNDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0Esc0NBQXNDOztBQUV0QyxpQkFBaUIsa0JBQWtCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQSxtQkFBbUIsb0JBQW9CO0FBQ3ZDO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBOztBQUVBO0FBQ0EsMEJBQTBCOztBQUUxQixtQkFBbUIsdUJBQXVCO0FBQzFDOztBQUVBLHFCQUFxQixpQkFBaUI7QUFDdEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsbUJBQW1CLHNCQUFzQjtBQUN6QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPLEVBQUUsZ0JBQWdCO0FBQ3pCLDhCQUE4Qjs7QUFFOUI7QUFDQSxpQ0FBaUM7QUFDakMsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLHVDQUF1Qzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxvQkFBb0I7QUFDakM7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9kZXRlY3QtY3ljbGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZXRlY3RBbGxVbmRpcmVjdGVkQ3ljbGUgPSBleHBvcnRzLmRldGVjdEFsbERpcmVjdGVkQ3ljbGUgPSBleHBvcnRzLmRldGVjdEFsbEN5Y2xlcyA9IGV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIF9kZnMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2Rmc1wiKSk7XG5cbnZhciBfY29ubmVjdGVkQ29tcG9uZW50ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcIi4vY29ubmVjdGVkLWNvbXBvbmVudFwiKSk7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZUJhYmVsSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7IHZhciBjYWNoZU5vZGVJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgcmV0dXJuIChfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHsgcmV0dXJuIG5vZGVJbnRlcm9wID8gY2FjaGVOb2RlSW50ZXJvcCA6IGNhY2hlQmFiZWxJbnRlcm9wOyB9KShub2RlSW50ZXJvcCk7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqLCBub2RlSW50ZXJvcCkgeyBpZiAoIW5vZGVJbnRlcm9wICYmIG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBkZWZhdWx0OiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqLmRlZmF1bHQgPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIGRldGVjdERpcmVjdGVkQ3ljbGUgPSBmdW5jdGlvbiBkZXRlY3REaXJlY3RlZEN5Y2xlKGdyYXBoRGF0YSkge1xuICB2YXIgY3ljbGUgPSBudWxsO1xuICB2YXIgX2EgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBub2RlcyA9IF9hID09PSB2b2lkIDAgPyBbXSA6IF9hO1xuICB2YXIgZGZzUGFyZW50TWFwID0ge307IC8vIOaJgOacieayoeacieiiq+iuv+mXrueahOiKgueCuembhuWQiFxuXG4gIHZhciB1bnZpc2l0ZWRTZXQgPSB7fTsgLy8g5q2j5Zyo6KKr6K6/6Zeu55qE6IqC54K56ZuG5ZCIXG5cbiAgdmFyIHZpc2l0aW5nU2V0ID0ge307IC8vIOaJgOacieW3sue7j+iiq+iuv+mXrui/h+eahOiKgueCuembhuWQiFxuXG4gIHZhciB2aXNpdGVkU2V0ID0ge307IC8vIOWIneWni+WMliB1bnZpc2l0ZWRTZXRcblxuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgdW52aXNpdGVkU2V0W25vZGUuaWRdID0gbm9kZTtcbiAgfSk7XG4gIHZhciBjYWxsYmFja3MgPSB7XG4gICAgZW50ZXI6IGZ1bmN0aW9uIGVudGVyKF9hKSB7XG4gICAgICB2YXIgY3VycmVudE5vZGUgPSBfYS5jdXJyZW50LFxuICAgICAgICAgIHByZXZpb3VzTm9kZSA9IF9hLnByZXZpb3VzO1xuXG4gICAgICBpZiAodmlzaXRpbmdTZXRbY3VycmVudE5vZGVdKSB7XG4gICAgICAgIC8vIOWmguaenOW9k+WJjeiKgueCueato+WcqOiuv+mXruS4re+8jOWImeivtOaYjuajgOa1i+WIsOeOr+i3r+S6hlxuICAgICAgICBjeWNsZSA9IHt9O1xuICAgICAgICB2YXIgY3VycmVudEN5Y2xlTm9kZSA9IGN1cnJlbnROb2RlO1xuICAgICAgICB2YXIgcHJldmlvdXNDeWNsZU5vZGUgPSBwcmV2aW91c05vZGU7XG5cbiAgICAgICAgd2hpbGUgKHByZXZpb3VzQ3ljbGVOb2RlICE9PSBjdXJyZW50Tm9kZSkge1xuICAgICAgICAgIGN5Y2xlW2N1cnJlbnRDeWNsZU5vZGVdID0gcHJldmlvdXNDeWNsZU5vZGU7XG4gICAgICAgICAgY3VycmVudEN5Y2xlTm9kZSA9IHByZXZpb3VzQ3ljbGVOb2RlO1xuICAgICAgICAgIHByZXZpb3VzQ3ljbGVOb2RlID0gZGZzUGFyZW50TWFwW3ByZXZpb3VzQ3ljbGVOb2RlXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGN5Y2xlW2N1cnJlbnRDeWNsZU5vZGVdID0gcHJldmlvdXNDeWNsZU5vZGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyDlpoLmnpzkuI3lrZjlnKjmraPlnKjorr/pl67pm4blkIjkuK3vvIzliJnlsIblhbbmlL7lhaXmraPlnKjorr/pl67pm4blkIjvvIzlubbku47mnKrorr/pl67pm4blkIjkuK3liKDpmaRcbiAgICAgICAgdmlzaXRpbmdTZXRbY3VycmVudE5vZGVdID0gY3VycmVudE5vZGU7XG4gICAgICAgIGRlbGV0ZSB1bnZpc2l0ZWRTZXRbY3VycmVudE5vZGVdOyAvLyDmm7TmlrAgRFNGIHBhcmVudHMg5YiX6KGoXG5cbiAgICAgICAgZGZzUGFyZW50TWFwW2N1cnJlbnROb2RlXSA9IHByZXZpb3VzTm9kZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGxlYXZlOiBmdW5jdGlvbiBsZWF2ZShfYSkge1xuICAgICAgdmFyIGN1cnJlbnROb2RlID0gX2EuY3VycmVudDsgLy8g5aaC5p6c5omA5pyJ55qE6IqC54K555qE5a2Q6IqC54K56YO95bey57uP6K6/6Zeu6L+H5LqG77yM5YiZ5LuO5q2j5Zyo6K6/6Zeu6ZuG5ZCI5Lit5Yig6Zmk5o6J77yM5bm25bCG5YW256e75YWl5Yiw5bey6K6/6Zeu6ZuG5ZCI5Lit77yMXG4gICAgICAvLyDlkIzml7bkuZ/mhI/lkbPnnYDlvZPliY3oioLngrnnmoTmiYDmnInpgrvlsYXoioLngrnpg73ooqvorr/pl67ov4fkuoZcblxuICAgICAgdmlzaXRlZFNldFtjdXJyZW50Tm9kZV0gPSBjdXJyZW50Tm9kZTtcbiAgICAgIGRlbGV0ZSB2aXNpdGluZ1NldFtjdXJyZW50Tm9kZV07XG4gICAgfSxcbiAgICBhbGxvd1RyYXZlcnNhbDogZnVuY3Rpb24gYWxsb3dUcmF2ZXJzYWwoX2EpIHtcbiAgICAgIHZhciBuZXh0Tm9kZSA9IF9hLm5leHQ7IC8vIOWmguaenOajgOa1i+WIsOeOr+i3r+WImemcgOimgee7iOatouaJgOaciei/m+S4gOatpeeahOmBjeWOhu+8jOWQpuWImeS8muWvvOiHtOaXoOmZkOW+queOr+mBjeWOhlxuXG4gICAgICBpZiAoY3ljbGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSAvLyDku4XlhYHorrjpgY3ljobmsqHmnInorr/pl67nmoToioLngrnvvIx2aXNpdGVkU2V0IOS4reeahOmDveW3sue7j+iuv+mXrui/h+S6hlxuXG5cbiAgICAgIHJldHVybiAhdmlzaXRlZFNldFtuZXh0Tm9kZV07XG4gICAgfVxuICB9OyAvLyDlvIDlp4vpgY3ljoboioLngrlcblxuICB3aGlsZSAoT2JqZWN0LmtleXModW52aXNpdGVkU2V0KS5sZW5ndGgpIHtcbiAgICAvLyDku47nrKzkuIDkuKroioLngrnlvIDlp4vov5vooYwgREZTIOmBjeWOhlxuICAgIHZhciBmaXJzZXRVblZpc2l0ZWRLZXkgPSBPYmplY3Qua2V5cyh1bnZpc2l0ZWRTZXQpWzBdO1xuICAgICgwLCBfZGZzLmRlZmF1bHQpKGdyYXBoRGF0YSwgZmlyc2V0VW5WaXNpdGVkS2V5LCBjYWxsYmFja3MpO1xuICB9XG5cbiAgcmV0dXJuIGN5Y2xlO1xufTtcbi8qKlxuICog5qOA5rWL5peg5ZCR5Zu+5Lit55qE5omA5pyJQmFzZSBjeWNsZXNcbiAqIHJlZmVyOiBodHRwczovL3d3dy5jb2RlcHJvamVjdC5jb20vQXJ0aWNsZXMvMTE1ODIzMi9FbnVtZXJhdGluZy1BbGwtQ3ljbGVzLWluLWFuLVVuZGlyZWN0ZWQtR3JhcGhcbiAqIEBwYXJhbSBncmFwaFxuICogQHBhcmFtIG5vZGVJZHMg6IqC54K5IElEIOeahOaVsOe7hFxuICogQHBhcmFtIGluY2x1ZGUg5YyF5ZCr5oiW5o6S6Zmk5oyH5a6a55qE6IqC54K5XG4gKiBAcmV0dXJuIFt7W2tleTogc3RyaW5nXTogSU5vZGV9XSDov5Tlm57kuIDnu4RiYXNlIGN5Y2xlc1xuICovXG5cblxudmFyIGRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZSA9IGZ1bmN0aW9uIGRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZShncmFwaERhdGEsIG5vZGVJZHMsIGluY2x1ZGUpIHtcbiAgdmFyIF9hLCBfYjtcblxuICBpZiAoaW5jbHVkZSA9PT0gdm9pZCAwKSB7XG4gICAgaW5jbHVkZSA9IHRydWU7XG4gIH1cblxuICB2YXIgYWxsQ3ljbGVzID0gW107XG4gIHZhciBjb21wb25lbnRzID0gKDAsIF9jb25uZWN0ZWRDb21wb25lbnQuZGVmYXVsdCkoZ3JhcGhEYXRhLCBmYWxzZSk7IC8vIGxvb3AgdGhyb3VnaCBhbGwgY29ubmVjdGVkIGNvbXBvbmVudHNcblxuICBmb3IgKHZhciBfaSA9IDAsIGNvbXBvbmVudHNfMSA9IGNvbXBvbmVudHM7IF9pIDwgY29tcG9uZW50c18xLmxlbmd0aDsgX2krKykge1xuICAgIHZhciBjb21wb25lbnQgPSBjb21wb25lbnRzXzFbX2ldO1xuICAgIGlmICghY29tcG9uZW50Lmxlbmd0aCkgY29udGludWU7XG4gICAgdmFyIHJvb3QgPSBjb21wb25lbnRbMF07XG4gICAgdmFyIHJvb3RJZCA9IHJvb3QuaWQ7XG4gICAgdmFyIHN0YWNrID0gW3Jvb3RdO1xuICAgIHZhciBwYXJlbnRfMSA9IChfYSA9IHt9LCBfYVtyb290SWRdID0gcm9vdCwgX2EpO1xuICAgIHZhciB1c2VkID0gKF9iID0ge30sIF9iW3Jvb3RJZF0gPSBuZXcgU2V0KCksIF9iKTsgLy8gd2FsayBhIHNwYW5uaW5nIHRyZWUgdG8gZmluZCBjeWNsZXNcblxuICAgIHdoaWxlIChzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICB2YXIgY3VyTm9kZSA9IHN0YWNrLnBvcCgpO1xuICAgICAgdmFyIGN1ck5vZGVJZCA9IGN1ck5vZGUuaWQ7XG4gICAgICB2YXIgbmVpZ2hib3JzID0gKDAsIF91dGlsLmdldE5laWdoYm9ycykoY3VyTm9kZUlkLCBncmFwaERhdGEuZWRnZXMpO1xuXG4gICAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIF9sb29wXzEoaSkge1xuICAgICAgICB2YXIgX2M7XG5cbiAgICAgICAgdmFyIG5laWdoYm9ySWQgPSBuZWlnaGJvcnNbaV07XG4gICAgICAgIHZhciBuZWlnaGJvciA9IGdyYXBoRGF0YS5ub2Rlcy5maW5kKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgcmV0dXJuIG5vZGUuaWQgPT09IG5laWdoYm9ySWQ7XG4gICAgICAgIH0pOyAvLyBjb25zdCBuZWlnaGJvcklkID0gbmVpZ2hib3IuZ2V0KCdpZCcpO1xuXG4gICAgICAgIGlmIChuZWlnaGJvcklkID09PSBjdXJOb2RlSWQpIHtcbiAgICAgICAgICAvLyDoh6rnjq9cbiAgICAgICAgICBhbGxDeWNsZXMucHVzaCgoX2MgPSB7fSwgX2NbbmVpZ2hib3JJZF0gPSBjdXJOb2RlLCBfYykpO1xuICAgICAgICB9IGVsc2UgaWYgKCEobmVpZ2hib3JJZCBpbiB1c2VkKSkge1xuICAgICAgICAgIC8vIHZpc2l0IGEgbmV3IG5vZGVcbiAgICAgICAgICBwYXJlbnRfMVtuZWlnaGJvcklkXSA9IGN1ck5vZGU7XG4gICAgICAgICAgc3RhY2sucHVzaChuZWlnaGJvcik7XG4gICAgICAgICAgdXNlZFtuZWlnaGJvcklkXSA9IG5ldyBTZXQoW2N1ck5vZGVdKTtcbiAgICAgICAgfSBlbHNlIGlmICghdXNlZFtjdXJOb2RlSWRdLmhhcyhuZWlnaGJvcikpIHtcbiAgICAgICAgICAvLyBhIGN5Y2xlIGZvdW5kXG4gICAgICAgICAgdmFyIGN5Y2xlVmFsaWQgPSB0cnVlO1xuICAgICAgICAgIHZhciBjeWNsZVBhdGggPSBbbmVpZ2hib3IsIGN1ck5vZGVdO1xuICAgICAgICAgIHZhciBwID0gcGFyZW50XzFbY3VyTm9kZUlkXTtcblxuICAgICAgICAgIHdoaWxlICh1c2VkW25laWdoYm9ySWRdLnNpemUgJiYgIXVzZWRbbmVpZ2hib3JJZF0uaGFzKHApKSB7XG4gICAgICAgICAgICBjeWNsZVBhdGgucHVzaChwKTtcbiAgICAgICAgICAgIGlmIChwID09PSBwYXJlbnRfMVtwLmlkXSkgYnJlYWs7ZWxzZSBwID0gcGFyZW50XzFbcC5pZF07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY3ljbGVQYXRoLnB1c2gocCk7XG5cbiAgICAgICAgICBpZiAobm9kZUlkcyAmJiBpbmNsdWRlKSB7XG4gICAgICAgICAgICAvLyDlpoLmnpzmnInmjIflrprljIXlkKvnmoToioLngrlcbiAgICAgICAgICAgIGN5Y2xlVmFsaWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKGN5Y2xlUGF0aC5maW5kSW5kZXgoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG5vZGVJZHMuaW5kZXhPZihub2RlLmlkKSA+IC0xO1xuICAgICAgICAgICAgfSkgPiAtMSkge1xuICAgICAgICAgICAgICBjeWNsZVZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKG5vZGVJZHMgJiYgIWluY2x1ZGUpIHtcbiAgICAgICAgICAgIC8vIOWmguaenOacieaMh+WumuS4jeWMheWQq+eahOiKgueCuVxuICAgICAgICAgICAgaWYgKGN5Y2xlUGF0aC5maW5kSW5kZXgoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG5vZGVJZHMuaW5kZXhPZihub2RlLmlkKSA+IC0xO1xuICAgICAgICAgICAgfSkgPiAtMSkge1xuICAgICAgICAgICAgICBjeWNsZVZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSAvLyDmioogbm9kZSBsaXN0IOW9ouW8j+i9rOaNouS4uiBjeWNsZSDnmoTmoLzlvI9cblxuXG4gICAgICAgICAgaWYgKGN5Y2xlVmFsaWQpIHtcbiAgICAgICAgICAgIHZhciBjeWNsZSA9IHt9O1xuXG4gICAgICAgICAgICBmb3IgKHZhciBpbmRleCA9IDE7IGluZGV4IDwgY3ljbGVQYXRoLmxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAgICAgICAgICBjeWNsZVtjeWNsZVBhdGhbaW5kZXggLSAxXS5pZF0gPSBjeWNsZVBhdGhbaW5kZXhdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY3ljbGVQYXRoLmxlbmd0aCkge1xuICAgICAgICAgICAgICBjeWNsZVtjeWNsZVBhdGhbY3ljbGVQYXRoLmxlbmd0aCAtIDFdLmlkXSA9IGN5Y2xlUGF0aFswXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYWxsQ3ljbGVzLnB1c2goY3ljbGUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHVzZWRbbmVpZ2hib3JJZF0uYWRkKGN1ck5vZGUpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5laWdoYm9ycy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICBfbG9vcF8xKGkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhbGxDeWNsZXM7XG59O1xuLyoqXG4gKiBKb2huc29uJ3MgYWxnb3JpdGhtLCDml7bpl7TlpI3mnYLluqYgTygoViArIEUpKEMgKyAxKSkkIGFuZCBzcGFjZSBib3VuZGVkIGJ5IE8oViArIEUpXG4gKiByZWZlcjogaHR0cHM6Ly93d3cuY3MudHVmdHMuZWR1L2NvbXAvMTUwR0EvaG9tZXdvcmtzL2h3MS9Kb2huc29uJTIwNzUuUERGXG4gKiByZWZlcjogaHR0cHM6Ly9uZXR3b3JreC5naXRodWIuaW8vZG9jdW1lbnRhdGlvbi9zdGFibGUvX21vZHVsZXMvbmV0d29ya3gvYWxnb3JpdGhtcy9jeWNsZXMuaHRtbCNzaW1wbGVfY3ljbGVzXG4gKiBAcGFyYW0gZ3JhcGhcbiAqIEBwYXJhbSBub2RlSWRzIOiKgueCuSBJRCDnmoTmlbDnu4RcbiAqIEBwYXJhbSBpbmNsdWRlIOWMheWQq+aIluaOkumZpOaMh+WumueahOiKgueCuVxuICogQHJldHVybiBbe1trZXk6IHN0cmluZ106IElOb2RlfV0g6L+U5Zue5omA5pyJ55qEIHNpbXBsZSBjeWNsZXNcbiAqL1xuXG5cbmV4cG9ydHMuZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlID0gZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlO1xuXG52YXIgZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZSA9IGZ1bmN0aW9uIGRldGVjdEFsbERpcmVjdGVkQ3ljbGUoZ3JhcGhEYXRhLCBub2RlSWRzLCBpbmNsdWRlKSB7XG4gIGlmIChpbmNsdWRlID09PSB2b2lkIDApIHtcbiAgICBpbmNsdWRlID0gdHJ1ZTtcbiAgfVxuXG4gIHZhciBwYXRoID0gW107IC8vIHN0YWNrIG9mIG5vZGVzIGluIGN1cnJlbnQgcGF0aFxuXG4gIHZhciBibG9ja2VkID0gbmV3IFNldCgpO1xuICB2YXIgQiA9IFtdOyAvLyByZW1lbWJlciBwb3J0aW9ucyBvZiB0aGUgZ3JhcGggdGhhdCB5aWVsZCBubyBlbGVtZW50YXJ5IGNpcmN1aXRcblxuICB2YXIgYWxsQ3ljbGVzID0gW107XG4gIHZhciBpZHgyTm9kZSA9IHt9O1xuICB2YXIgbm9kZTJJZHggPSB7fTsgLy8g6L6F5Yqp5Ye95pWw77yaIHVuYmxvY2sgYWxsIGJsb2NrZWQgbm9kZXNcblxuICB2YXIgdW5ibG9jayA9IGZ1bmN0aW9uIHVuYmxvY2sodGhpc05vZGUpIHtcbiAgICB2YXIgc3RhY2sgPSBbdGhpc05vZGVdO1xuXG4gICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhciBub2RlID0gc3RhY2sucG9wKCk7XG5cbiAgICAgIGlmIChibG9ja2VkLmhhcyhub2RlKSkge1xuICAgICAgICBibG9ja2VkLmRlbGV0ZShub2RlKTtcbiAgICAgICAgQltub2RlLmlkXS5mb3JFYWNoKGZ1bmN0aW9uIChuKSB7XG4gICAgICAgICAgc3RhY2sucHVzaChuKTtcbiAgICAgICAgfSk7XG4gICAgICAgIEJbbm9kZS5pZF0uY2xlYXIoKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgdmFyIGNpcmN1aXQgPSBmdW5jdGlvbiBjaXJjdWl0KG5vZGUsIHN0YXJ0LCBhZGpMaXN0KSB7XG4gICAgdmFyIGNsb3NlZCA9IGZhbHNlOyAvLyB3aGV0aGVyIGEgcGF0aCBpcyBjbG9zZWRcblxuICAgIGlmIChub2RlSWRzICYmIGluY2x1ZGUgPT09IGZhbHNlICYmIG5vZGVJZHMuaW5kZXhPZihub2RlLmlkKSA+IC0xKSByZXR1cm4gY2xvc2VkO1xuICAgIHBhdGgucHVzaChub2RlKTtcbiAgICBibG9ja2VkLmFkZChub2RlKTtcbiAgICB2YXIgbmVpZ2hib3JzID0gYWRqTGlzdFtub2RlLmlkXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmVpZ2hib3JzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICB2YXIgbmVpZ2hib3IgPSBpZHgyTm9kZVtuZWlnaGJvcnNbaV1dO1xuXG4gICAgICBpZiAobmVpZ2hib3IgPT09IHN0YXJ0KSB7XG4gICAgICAgIHZhciBjeWNsZSA9IHt9O1xuXG4gICAgICAgIGZvciAodmFyIGluZGV4ID0gMTsgaW5kZXggPCBwYXRoLmxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAgICAgIGN5Y2xlW3BhdGhbaW5kZXggLSAxXS5pZF0gPSBwYXRoW2luZGV4XTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXRoLmxlbmd0aCkge1xuICAgICAgICAgIGN5Y2xlW3BhdGhbcGF0aC5sZW5ndGggLSAxXS5pZF0gPSBwYXRoWzBdO1xuICAgICAgICB9XG5cbiAgICAgICAgYWxsQ3ljbGVzLnB1c2goY3ljbGUpO1xuICAgICAgICBjbG9zZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmICghYmxvY2tlZC5oYXMobmVpZ2hib3IpKSB7XG4gICAgICAgIGlmIChjaXJjdWl0KG5laWdoYm9yLCBzdGFydCwgYWRqTGlzdCkpIHtcbiAgICAgICAgICBjbG9zZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNsb3NlZCkge1xuICAgICAgdW5ibG9jayhub2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZWlnaGJvcnMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgdmFyIG5laWdoYm9yID0gaWR4Mk5vZGVbbmVpZ2hib3JzW2ldXTtcblxuICAgICAgICBpZiAoIUJbbmVpZ2hib3IuaWRdLmhhcyhub2RlKSkge1xuICAgICAgICAgIEJbbmVpZ2hib3IuaWRdLmFkZChub2RlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHBhdGgucG9wKCk7XG4gICAgcmV0dXJuIGNsb3NlZDtcbiAgfTtcblxuICB2YXIgX2EgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBub2RlcyA9IF9hID09PSB2b2lkIDAgPyBbXSA6IF9hOyAvLyBKb2huc29uJ3MgYWxnb3JpdGhtIOimgeaxgue7meiKgueCuei1i+mhuuW6j++8jOWFiOaMieiKgueCueWcqOaVsOe7hOS4reeahOmhuuW6j1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICB2YXIgbm9kZSA9IG5vZGVzW2ldO1xuICAgIHZhciBub2RlSWQgPSBub2RlLmlkO1xuICAgIG5vZGUySWR4W25vZGVJZF0gPSBpO1xuICAgIGlkeDJOb2RlW2ldID0gbm9kZTtcbiAgfSAvLyDlpoLmnpzmnInmjIflrprljIXlkKvnmoToioLngrnvvIzliJnmiormjIflrproioLngrnmjpLluo/lnKjliY3vvIzku6Xkvr/mj5Dml6nnu5PmnZ/mkJzntKJcblxuXG4gIGlmIChub2RlSWRzICYmIGluY2x1ZGUpIHtcbiAgICB2YXIgX2xvb3BfMiA9IGZ1bmN0aW9uIF9sb29wXzIoaSkge1xuICAgICAgdmFyIG5vZGVJZCA9IG5vZGVJZHNbaV07XG4gICAgICBub2RlMklkeFtub2Rlc1tpXS5pZF0gPSBub2RlMklkeFtub2RlSWRdO1xuICAgICAgbm9kZTJJZHhbbm9kZUlkXSA9IDA7XG4gICAgICBpZHgyTm9kZVswXSA9IG5vZGVzLmZpbmQoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUuaWQgPT09IG5vZGVJZDtcbiAgICAgIH0pO1xuICAgICAgaWR4Mk5vZGVbbm9kZTJJZHhbbm9kZXNbaV0uaWRdXSA9IG5vZGVzW2ldO1xuICAgIH07XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVJZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIF9sb29wXzIoaSk7XG4gICAgfVxuICB9IC8vIOi/lOWbniDoioLngrnpobrluo8gPj0gbm9kZU9yZGVyIOeahOW8uui/numAmuWIhumHj+eahGFkakxpc3RcblxuXG4gIHZhciBnZXRNaW5Db21wb25lbnRBZGogPSBmdW5jdGlvbiBnZXRNaW5Db21wb25lbnRBZGooY29tcG9uZW50cykge1xuICAgIHZhciBfYTtcblxuICAgIHZhciBtaW5Db21wSWR4O1xuICAgIHZhciBtaW5JZHggPSBJbmZpbml0eTsgLy8gRmluZCBsZWFzdCBjb21wb25lbnQgYW5kIHRoZSBsb3dlc3Qgbm9kZVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21wb25lbnRzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICB2YXIgY29tcCA9IGNvbXBvbmVudHNbaV07XG5cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY29tcC5sZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgbm9kZUlkeF8xID0gbm9kZTJJZHhbY29tcFtqXS5pZF07XG5cbiAgICAgICAgaWYgKG5vZGVJZHhfMSA8IG1pbklkeCkge1xuICAgICAgICAgIG1pbklkeCA9IG5vZGVJZHhfMTtcbiAgICAgICAgICBtaW5Db21wSWR4ID0gaTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBjb21wb25lbnQgPSBjb21wb25lbnRzW21pbkNvbXBJZHhdO1xuICAgIHZhciBhZGpMaXN0ID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbXBvbmVudC5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgdmFyIG5vZGUgPSBjb21wb25lbnRbaV07XG4gICAgICBhZGpMaXN0W25vZGUuaWRdID0gW107XG5cbiAgICAgIGZvciAodmFyIF9pID0gMCwgX2IgPSAoMCwgX3V0aWwuZ2V0TmVpZ2hib3JzKShub2RlLmlkLCBncmFwaERhdGEuZWRnZXMsICd0YXJnZXQnKS5maWx0ZXIoZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudC5tYXAoZnVuY3Rpb24gKGMpIHtcbiAgICAgICAgICByZXR1cm4gYy5pZDtcbiAgICAgICAgfSkuaW5kZXhPZihuKSA+IC0xO1xuICAgICAgfSk7IF9pIDwgX2IubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciBuZWlnaGJvciA9IF9iW19pXTsgLy8g5a+56Ieq546v5oOF5Ya1ICjngrnov57lkJHoh6rouqspIOeJueauiuWkhOeQhu+8muiusOW9leiHqueOr++8jOS9huS4jeWKoOWFpWFkakxpc3RcblxuICAgICAgICBpZiAobmVpZ2hib3IgPT09IG5vZGUuaWQgJiYgIShpbmNsdWRlID09PSBmYWxzZSAmJiBub2RlSWRzLmluZGV4T2Yobm9kZS5pZCkgPiAtMSkpIHtcbiAgICAgICAgICBhbGxDeWNsZXMucHVzaCgoX2EgPSB7fSwgX2Fbbm9kZS5pZF0gPSBub2RlLCBfYSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFkakxpc3Rbbm9kZS5pZF0ucHVzaChub2RlMklkeFtuZWlnaGJvcl0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbXBvbmVudDogY29tcG9uZW50LFxuICAgICAgYWRqTGlzdDogYWRqTGlzdCxcbiAgICAgIG1pbklkeDogbWluSWR4XG4gICAgfTtcbiAgfTtcblxuICB2YXIgbm9kZUlkeCA9IDA7XG5cbiAgd2hpbGUgKG5vZGVJZHggPCBub2Rlcy5sZW5ndGgpIHtcbiAgICB2YXIgc3ViZ3JhcGhOb2RlcyA9IG5vZGVzLmZpbHRlcihmdW5jdGlvbiAobikge1xuICAgICAgcmV0dXJuIG5vZGUySWR4W24uaWRdID49IG5vZGVJZHg7XG4gICAgfSk7XG4gICAgdmFyIHNjY3MgPSAoMCwgX2Nvbm5lY3RlZENvbXBvbmVudC5kZXRlY3RTdHJvbmdDb25uZWN0Q29tcG9uZW50cykoe1xuICAgICAgbm9kZXM6IHN1YmdyYXBoTm9kZXMsXG4gICAgICBlZGdlczogZ3JhcGhEYXRhLmVkZ2VzXG4gICAgfSkuZmlsdGVyKGZ1bmN0aW9uIChjb21wb25lbnQpIHtcbiAgICAgIHJldHVybiBjb21wb25lbnQubGVuZ3RoID4gMTtcbiAgICB9KTtcbiAgICBpZiAoc2Njcy5sZW5ndGggPT09IDApIGJyZWFrO1xuICAgIHZhciBzY2MgPSBnZXRNaW5Db21wb25lbnRBZGooc2Njcyk7XG4gICAgdmFyIG1pbklkeCA9IHNjYy5taW5JZHgsXG4gICAgICAgIGFkakxpc3QgPSBzY2MuYWRqTGlzdCxcbiAgICAgICAgY29tcG9uZW50ID0gc2NjLmNvbXBvbmVudDtcblxuICAgIGlmIChjb21wb25lbnQubGVuZ3RoID4gMSkge1xuICAgICAgY29tcG9uZW50LmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgQltub2RlLmlkXSA9IG5ldyBTZXQoKTtcbiAgICAgIH0pO1xuICAgICAgdmFyIHN0YXJ0Tm9kZSA9IGlkeDJOb2RlW21pbklkeF07IC8vIHN0YXJ0Tm9kZSDkuI3lnKjmjIflrpropoHljIXlkKvnmoToioLngrnkuK3vvIzmj5DliY3nu5PmnZ/mkJzntKJcblxuICAgICAgaWYgKG5vZGVJZHMgJiYgaW5jbHVkZSAmJiBub2RlSWRzLmluZGV4T2Yoc3RhcnROb2RlLmlkKSA9PT0gLTEpIHJldHVybiBhbGxDeWNsZXM7XG4gICAgICBjaXJjdWl0KHN0YXJ0Tm9kZSwgc3RhcnROb2RlLCBhZGpMaXN0KTtcbiAgICAgIG5vZGVJZHggPSBtaW5JZHggKyAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWxsQ3ljbGVzO1xufTtcbi8qKlxuICog5p+l5om+5Zu+5Lit5omA5pyJ5ruh6Laz6KaB5rGC55qE5ZyIXG4gKiBAcGFyYW0gZ3JhcGhcbiAqIEBwYXJhbSBkaXJlY3RlZCDmmK/lkKbkuLrmnInlkJHlm75cbiAqIEBwYXJhbSBub2RlSWRzIOiKgueCuSBJRCDnmoTmlbDnu4TvvIzoi6XkuI3mjIflrprvvIzliJnov5Tlm57lm77kuK3miYDmnInnmoTlnIhcbiAqIEBwYXJhbSBpbmNsdWRlIOWMheWQq+aIluaOkumZpOaMh+WumueahOiKgueCuVxuICogQHJldHVybiBbe1trZXk6IHN0cmluZ106IE5vZGV9XSDljIXlkKvmiYDmnInnjq/nmoTmlbDnu4TvvIzmr4/kuKrnjq/nlKjkuIDkuKpPYmplY3TooajnpLrvvIzlhbbkuK1rZXnkuLroioLngrlpZO+8jHZhbHVl5Li66K+l6IqC54K55Zyo546v5Lit5oyH5ZCR55qE5LiL5LiA5Liq6IqC54K5XG4gKi9cblxuXG5leHBvcnRzLmRldGVjdEFsbERpcmVjdGVkQ3ljbGUgPSBkZXRlY3RBbGxEaXJlY3RlZEN5Y2xlO1xuXG52YXIgZGV0ZWN0QWxsQ3ljbGVzID0gZnVuY3Rpb24gZGV0ZWN0QWxsQ3ljbGVzKGdyYXBoRGF0YSwgZGlyZWN0ZWQsIG5vZGVJZHMsIGluY2x1ZGUpIHtcbiAgaWYgKGluY2x1ZGUgPT09IHZvaWQgMCkge1xuICAgIGluY2x1ZGUgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGRpcmVjdGVkKSByZXR1cm4gZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZShncmFwaERhdGEsIG5vZGVJZHMsIGluY2x1ZGUpO1xuICByZXR1cm4gZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlKGdyYXBoRGF0YSwgbm9kZUlkcywgaW5jbHVkZSk7XG59O1xuXG5leHBvcnRzLmRldGVjdEFsbEN5Y2xlcyA9IGRldGVjdEFsbEN5Y2xlcztcbnZhciBfZGVmYXVsdCA9IGRldGVjdERpcmVjdGVkQ3ljbGU7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/detect-cycle.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/dfs.js":
/*!*************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/dfs.js ***!
\*************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = depthFirstSearch;\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/util.js\");\n\nfunction initCallbacks(callbacks) {\n if (callbacks === void 0) {\n callbacks = {};\n }\n\n var initiatedCallback = callbacks;\n\n var stubCallback = function stubCallback() {};\n\n var allowTraversalCallback = function () {\n var seen = {};\n return function (_a) {\n var next = _a.next;\n\n if (!seen[next]) {\n seen[next] = true;\n return true;\n }\n\n return false;\n };\n }();\n\n initiatedCallback.allowTraversal = callbacks.allowTraversal || allowTraversalCallback;\n initiatedCallback.enter = callbacks.enter || stubCallback;\n initiatedCallback.leave = callbacks.leave || stubCallback;\n return initiatedCallback;\n}\n/**\n * @param {Graph} graph\n * @param {GraphNode} currentNode\n * @param {GraphNode} previousNode\n * @param {Callbacks} callbacks\n */\n\n\nfunction depthFirstSearchRecursive(graphData, currentNode, previousNode, callbacks) {\n callbacks.enter({\n current: currentNode,\n previous: previousNode\n });\n var _a = graphData.edges,\n edges = _a === void 0 ? [] : _a;\n (0, _util.getNeighbors)(currentNode, edges, 'target').forEach(function (nextNode) {\n if (callbacks.allowTraversal({\n previous: previousNode,\n current: currentNode,\n next: nextNode\n })) {\n depthFirstSearchRecursive(graphData, nextNode, currentNode, callbacks);\n }\n });\n callbacks.leave({\n current: currentNode,\n previous: previousNode\n });\n}\n/**\n * 深度优先遍历图\n * @param data GraphData 图数据\n * @param startNodeId 开始遍历的节点的 ID\n * @param originalCallbacks 回调\n */\n\n\nfunction depthFirstSearch(graphData, startNodeId, callbacks) {\n depthFirstSearchRecursive(graphData, startNodeId, '', initCallbacks(callbacks));\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9kZnMuanM/YzJjNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBLFlBQVksbUJBQU8sQ0FBQyxrRkFBUTs7QUFFNUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsVUFBVTtBQUNyQixXQUFXLFVBQVU7QUFDckIsV0FBVyxVQUFVO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9saWIvZGZzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBkZXB0aEZpcnN0U2VhcmNoO1xuXG52YXIgX3V0aWwgPSByZXF1aXJlKFwiLi91dGlsXCIpO1xuXG5mdW5jdGlvbiBpbml0Q2FsbGJhY2tzKGNhbGxiYWNrcykge1xuICBpZiAoY2FsbGJhY2tzID09PSB2b2lkIDApIHtcbiAgICBjYWxsYmFja3MgPSB7fTtcbiAgfVxuXG4gIHZhciBpbml0aWF0ZWRDYWxsYmFjayA9IGNhbGxiYWNrcztcblxuICB2YXIgc3R1YkNhbGxiYWNrID0gZnVuY3Rpb24gc3R1YkNhbGxiYWNrKCkge307XG5cbiAgdmFyIGFsbG93VHJhdmVyc2FsQ2FsbGJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlZW4gPSB7fTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKF9hKSB7XG4gICAgICB2YXIgbmV4dCA9IF9hLm5leHQ7XG5cbiAgICAgIGlmICghc2VlbltuZXh0XSkge1xuICAgICAgICBzZWVuW25leHRdID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICB9KCk7XG5cbiAgaW5pdGlhdGVkQ2FsbGJhY2suYWxsb3dUcmF2ZXJzYWwgPSBjYWxsYmFja3MuYWxsb3dUcmF2ZXJzYWwgfHwgYWxsb3dUcmF2ZXJzYWxDYWxsYmFjaztcbiAgaW5pdGlhdGVkQ2FsbGJhY2suZW50ZXIgPSBjYWxsYmFja3MuZW50ZXIgfHwgc3R1YkNhbGxiYWNrO1xuICBpbml0aWF0ZWRDYWxsYmFjay5sZWF2ZSA9IGNhbGxiYWNrcy5sZWF2ZSB8fCBzdHViQ2FsbGJhY2s7XG4gIHJldHVybiBpbml0aWF0ZWRDYWxsYmFjaztcbn1cbi8qKlxuICogQHBhcmFtIHtHcmFwaH0gZ3JhcGhcbiAqIEBwYXJhbSB7R3JhcGhOb2RlfSBjdXJyZW50Tm9kZVxuICogQHBhcmFtIHtHcmFwaE5vZGV9IHByZXZpb3VzTm9kZVxuICogQHBhcmFtIHtDYWxsYmFja3N9IGNhbGxiYWNrc1xuICovXG5cblxuZnVuY3Rpb24gZGVwdGhGaXJzdFNlYXJjaFJlY3Vyc2l2ZShncmFwaERhdGEsIGN1cnJlbnROb2RlLCBwcmV2aW91c05vZGUsIGNhbGxiYWNrcykge1xuICBjYWxsYmFja3MuZW50ZXIoe1xuICAgIGN1cnJlbnQ6IGN1cnJlbnROb2RlLFxuICAgIHByZXZpb3VzOiBwcmV2aW91c05vZGVcbiAgfSk7XG4gIHZhciBfYSA9IGdyYXBoRGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2EgPT09IHZvaWQgMCA/IFtdIDogX2E7XG4gICgwLCBfdXRpbC5nZXROZWlnaGJvcnMpKGN1cnJlbnROb2RlLCBlZGdlcywgJ3RhcmdldCcpLmZvckVhY2goZnVuY3Rpb24gKG5leHROb2RlKSB7XG4gICAgaWYgKGNhbGxiYWNrcy5hbGxvd1RyYXZlcnNhbCh7XG4gICAgICBwcmV2aW91czogcHJldmlvdXNOb2RlLFxuICAgICAgY3VycmVudDogY3VycmVudE5vZGUsXG4gICAgICBuZXh0OiBuZXh0Tm9kZVxuICAgIH0pKSB7XG4gICAgICBkZXB0aEZpcnN0U2VhcmNoUmVjdXJzaXZlKGdyYXBoRGF0YSwgbmV4dE5vZGUsIGN1cnJlbnROb2RlLCBjYWxsYmFja3MpO1xuICAgIH1cbiAgfSk7XG4gIGNhbGxiYWNrcy5sZWF2ZSh7XG4gICAgY3VycmVudDogY3VycmVudE5vZGUsXG4gICAgcHJldmlvdXM6IHByZXZpb3VzTm9kZVxuICB9KTtcbn1cbi8qKlxuICog5rex5bqm5LyY5YWI6YGN5Y6G5Zu+XG4gKiBAcGFyYW0gZGF0YSBHcmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gc3RhcnROb2RlSWQg5byA5aeL6YGN5Y6G55qE6IqC54K555qEIElEXG4gKiBAcGFyYW0gb3JpZ2luYWxDYWxsYmFja3Mg5Zue6LCDXG4gKi9cblxuXG5mdW5jdGlvbiBkZXB0aEZpcnN0U2VhcmNoKGdyYXBoRGF0YSwgc3RhcnROb2RlSWQsIGNhbGxiYWNrcykge1xuICBkZXB0aEZpcnN0U2VhcmNoUmVjdXJzaXZlKGdyYXBoRGF0YSwgc3RhcnROb2RlSWQsICcnLCBpbml0Q2FsbGJhY2tzKGNhbGxiYWNrcykpO1xufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/dfs.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/dijkstra.js":
/*!******************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/dijkstra.js ***!
\******************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _tslib = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n\nvar _util = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\nvar _util2 = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/util.js\");\n\nvar minVertex = function minVertex(D, nodes, marks) {\n // 找出最小的点\n var minDis = Infinity;\n var minNode;\n\n for (var i = 0; i < nodes.length; i++) {\n var nodeId = nodes[i].id;\n\n if (!marks[nodeId] && D[nodeId] <= minDis) {\n minDis = D[nodeId];\n minNode = nodes[i];\n }\n }\n\n return minNode;\n};\n\nvar dijkstra = function dijkstra(graphData, source, directed, weightPropertyName) {\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var nodeIds = [];\n var marks = {};\n var D = {};\n var prevs = {}; // key: 顶点, value: 顶点的前驱点数组(可能有多条等长的最短路径)\n\n nodes.forEach(function (node, i) {\n var id = node.id;\n nodeIds.push(id);\n D[id] = Infinity;\n if (id === source) D[id] = 0;\n });\n var nodeNum = nodes.length;\n\n var _loop_1 = function _loop_1(i) {\n // Process the vertices\n var minNode = minVertex(D, nodes, marks);\n var minNodeId = minNode.id;\n marks[minNodeId] = true;\n if (D[minNodeId] === Infinity) return \"continue\"; // Unreachable vertices cannot be the intermediate point\n\n var relatedEdges = [];\n if (directed) relatedEdges = (0, _util2.getOutEdgesNodeId)(minNodeId, edges);else relatedEdges = (0, _util2.getEdgesByNodeId)(minNodeId, edges);\n relatedEdges.forEach(function (edge) {\n var edgeTarget = edge.target;\n var edgeSource = edge.source;\n var w = edgeTarget === minNodeId ? edgeSource : edgeTarget;\n var weight = weightPropertyName && edge[weightPropertyName] ? edge[weightPropertyName] : 1;\n\n if (D[w] > D[minNode.id] + weight) {\n D[w] = D[minNode.id] + weight;\n prevs[w] = [minNode.id];\n } else if (D[w] === D[minNode.id] + weight) {\n prevs[w].push(minNode.id);\n }\n });\n };\n\n for (var i = 0; i < nodeNum; i++) {\n _loop_1(i);\n }\n\n prevs[source] = [source]; // 每个节点存可能存在多条最短路径\n\n var paths = {};\n\n for (var target in D) {\n if (D[target] !== Infinity) {\n findAllPaths(source, target, prevs, paths);\n }\n } // 兼容之前单路径\n\n\n var path = {};\n\n for (var target in paths) {\n path[target] = paths[target][0];\n }\n\n return {\n length: D,\n path: path,\n allPath: paths\n };\n};\n\nvar _default = dijkstra;\nexports.default = _default;\n\nfunction findAllPaths(source, target, prevs, foundPaths) {\n if (source === target) {\n return [source];\n }\n\n if (foundPaths[target]) {\n return foundPaths[target];\n }\n\n var paths = [];\n\n for (var _i = 0, _a = prevs[target]; _i < _a.length; _i++) {\n var prev = _a[_i];\n var prevPaths = findAllPaths(source, prev, prevs, foundPaths);\n if (!prevPaths) return;\n\n for (var _b = 0, prevPaths_1 = prevPaths; _b < prevPaths_1.length; _b++) {\n var prePath = prevPaths_1[_b];\n if ((0, _util.isArray)(prePath)) paths.push((0, _tslib.__spreadArray)((0, _tslib.__spreadArray)([], prePath, true), [target], false));else paths.push([prePath, target]);\n }\n }\n\n foundPaths[target] = paths;\n return foundPaths[target];\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9kaWprc3RyYS5qcz80N2M5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7O0FBRUEsYUFBYSxtQkFBTyxDQUFDLDZEQUFPOztBQUU1QixZQUFZLG1CQUFPLENBQUMsNkVBQVk7O0FBRWhDLGFBQWEsbUJBQU8sQ0FBQyxrRkFBUTs7QUFFN0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLGtCQUFrQjtBQUNuQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscURBQXFEOztBQUVyRDtBQUNBLGlGQUFpRjtBQUNqRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBLGlCQUFpQixhQUFhO0FBQzlCO0FBQ0E7O0FBRUEsMkJBQTJCOztBQUUzQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsc0NBQXNDLGdCQUFnQjtBQUN0RDtBQUNBO0FBQ0E7O0FBRUEsNkNBQTZDLHlCQUF5QjtBQUN0RTtBQUNBLDRJQUE0STtBQUM1STtBQUNBOztBQUVBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfYWxnb3JpdGhtQDAuMS4xNEBAYW50di9hbGdvcml0aG0vbGliL2RpamtzdHJhLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBfdHNsaWIgPSByZXF1aXJlKFwidHNsaWJcIik7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoXCJAYW50di91dGlsXCIpO1xuXG52YXIgX3V0aWwyID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcblxudmFyIG1pblZlcnRleCA9IGZ1bmN0aW9uIG1pblZlcnRleChELCBub2RlcywgbWFya3MpIHtcbiAgLy8g5om+5Ye65pyA5bCP55qE54K5XG4gIHZhciBtaW5EaXMgPSBJbmZpbml0eTtcbiAgdmFyIG1pbk5vZGU7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBub2RlSWQgPSBub2Rlc1tpXS5pZDtcblxuICAgIGlmICghbWFya3Nbbm9kZUlkXSAmJiBEW25vZGVJZF0gPD0gbWluRGlzKSB7XG4gICAgICBtaW5EaXMgPSBEW25vZGVJZF07XG4gICAgICBtaW5Ob2RlID0gbm9kZXNbaV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1pbk5vZGU7XG59O1xuXG52YXIgZGlqa3N0cmEgPSBmdW5jdGlvbiBkaWprc3RyYShncmFwaERhdGEsIHNvdXJjZSwgZGlyZWN0ZWQsIHdlaWdodFByb3BlcnR5TmFtZSkge1xuICB2YXIgX2EgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBub2RlcyA9IF9hID09PSB2b2lkIDAgPyBbXSA6IF9hLFxuICAgICAgX2IgPSBncmFwaERhdGEuZWRnZXMsXG4gICAgICBlZGdlcyA9IF9iID09PSB2b2lkIDAgPyBbXSA6IF9iO1xuICB2YXIgbm9kZUlkcyA9IFtdO1xuICB2YXIgbWFya3MgPSB7fTtcbiAgdmFyIEQgPSB7fTtcbiAgdmFyIHByZXZzID0ge307IC8vIGtleTog6aG254K5LCB2YWx1ZTog6aG254K555qE5YmN6amx54K55pWw57uE77yI5Y+v6IO95pyJ5aSa5p2h562J6ZW/55qE5pyA55+t6Lev5b6E77yJXG5cbiAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaSkge1xuICAgIHZhciBpZCA9IG5vZGUuaWQ7XG4gICAgbm9kZUlkcy5wdXNoKGlkKTtcbiAgICBEW2lkXSA9IEluZmluaXR5O1xuICAgIGlmIChpZCA9PT0gc291cmNlKSBEW2lkXSA9IDA7XG4gIH0pO1xuICB2YXIgbm9kZU51bSA9IG5vZGVzLmxlbmd0aDtcblxuICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIF9sb29wXzEoaSkge1xuICAgIC8vIFByb2Nlc3MgdGhlIHZlcnRpY2VzXG4gICAgdmFyIG1pbk5vZGUgPSBtaW5WZXJ0ZXgoRCwgbm9kZXMsIG1hcmtzKTtcbiAgICB2YXIgbWluTm9kZUlkID0gbWluTm9kZS5pZDtcbiAgICBtYXJrc1ttaW5Ob2RlSWRdID0gdHJ1ZTtcbiAgICBpZiAoRFttaW5Ob2RlSWRdID09PSBJbmZpbml0eSkgcmV0dXJuIFwiY29udGludWVcIjsgLy8gVW5yZWFjaGFibGUgdmVydGljZXMgY2Fubm90IGJlIHRoZSBpbnRlcm1lZGlhdGUgcG9pbnRcblxuICAgIHZhciByZWxhdGVkRWRnZXMgPSBbXTtcbiAgICBpZiAoZGlyZWN0ZWQpIHJlbGF0ZWRFZGdlcyA9ICgwLCBfdXRpbDIuZ2V0T3V0RWRnZXNOb2RlSWQpKG1pbk5vZGVJZCwgZWRnZXMpO2Vsc2UgcmVsYXRlZEVkZ2VzID0gKDAsIF91dGlsMi5nZXRFZGdlc0J5Tm9kZUlkKShtaW5Ob2RlSWQsIGVkZ2VzKTtcbiAgICByZWxhdGVkRWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgdmFyIGVkZ2VUYXJnZXQgPSBlZGdlLnRhcmdldDtcbiAgICAgIHZhciBlZGdlU291cmNlID0gZWRnZS5zb3VyY2U7XG4gICAgICB2YXIgdyA9IGVkZ2VUYXJnZXQgPT09IG1pbk5vZGVJZCA/IGVkZ2VTb3VyY2UgOiBlZGdlVGFyZ2V0O1xuICAgICAgdmFyIHdlaWdodCA9IHdlaWdodFByb3BlcnR5TmFtZSAmJiBlZGdlW3dlaWdodFByb3BlcnR5TmFtZV0gPyBlZGdlW3dlaWdodFByb3BlcnR5TmFtZV0gOiAxO1xuXG4gICAgICBpZiAoRFt3XSA+IERbbWluTm9kZS5pZF0gKyB3ZWlnaHQpIHtcbiAgICAgICAgRFt3XSA9IERbbWluTm9kZS5pZF0gKyB3ZWlnaHQ7XG4gICAgICAgIHByZXZzW3ddID0gW21pbk5vZGUuaWRdO1xuICAgICAgfSBlbHNlIGlmIChEW3ddID09PSBEW21pbk5vZGUuaWRdICsgd2VpZ2h0KSB7XG4gICAgICAgIHByZXZzW3ddLnB1c2gobWluTm9kZS5pZCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlTnVtOyBpKyspIHtcbiAgICBfbG9vcF8xKGkpO1xuICB9XG5cbiAgcHJldnNbc291cmNlXSA9IFtzb3VyY2VdOyAvLyDmr4/kuKroioLngrnlrZjlj6/og73lrZjlnKjlpJrmnaHmnIDnn63ot6/lvoRcblxuICB2YXIgcGF0aHMgPSB7fTtcblxuICBmb3IgKHZhciB0YXJnZXQgaW4gRCkge1xuICAgIGlmIChEW3RhcmdldF0gIT09IEluZmluaXR5KSB7XG4gICAgICBmaW5kQWxsUGF0aHMoc291cmNlLCB0YXJnZXQsIHByZXZzLCBwYXRocyk7XG4gICAgfVxuICB9IC8vIOWFvOWuueS5i+WJjeWNlei3r+W+hFxuXG5cbiAgdmFyIHBhdGggPSB7fTtcblxuICBmb3IgKHZhciB0YXJnZXQgaW4gcGF0aHMpIHtcbiAgICBwYXRoW3RhcmdldF0gPSBwYXRoc1t0YXJnZXRdWzBdO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBsZW5ndGg6IEQsXG4gICAgcGF0aDogcGF0aCxcbiAgICBhbGxQYXRoOiBwYXRoc1xuICB9O1xufTtcblxudmFyIF9kZWZhdWx0ID0gZGlqa3N0cmE7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDtcblxuZnVuY3Rpb24gZmluZEFsbFBhdGhzKHNvdXJjZSwgdGFyZ2V0LCBwcmV2cywgZm91bmRQYXRocykge1xuICBpZiAoc291cmNlID09PSB0YXJnZXQpIHtcbiAgICByZXR1cm4gW3NvdXJjZV07XG4gIH1cblxuICBpZiAoZm91bmRQYXRoc1t0YXJnZXRdKSB7XG4gICAgcmV0dXJuIGZvdW5kUGF0aHNbdGFyZ2V0XTtcbiAgfVxuXG4gIHZhciBwYXRocyA9IFtdO1xuXG4gIGZvciAodmFyIF9pID0gMCwgX2EgPSBwcmV2c1t0YXJnZXRdOyBfaSA8IF9hLmxlbmd0aDsgX2krKykge1xuICAgIHZhciBwcmV2ID0gX2FbX2ldO1xuICAgIHZhciBwcmV2UGF0aHMgPSBmaW5kQWxsUGF0aHMoc291cmNlLCBwcmV2LCBwcmV2cywgZm91bmRQYXRocyk7XG4gICAgaWYgKCFwcmV2UGF0aHMpIHJldHVybjtcblxuICAgIGZvciAodmFyIF9iID0gMCwgcHJldlBhdGhzXzEgPSBwcmV2UGF0aHM7IF9iIDwgcHJldlBhdGhzXzEubGVuZ3RoOyBfYisrKSB7XG4gICAgICB2YXIgcHJlUGF0aCA9IHByZXZQYXRoc18xW19iXTtcbiAgICAgIGlmICgoMCwgX3V0aWwuaXNBcnJheSkocHJlUGF0aCkpIHBhdGhzLnB1c2goKDAsIF90c2xpYi5fX3NwcmVhZEFycmF5KSgoMCwgX3RzbGliLl9fc3ByZWFkQXJyYXkpKFtdLCBwcmVQYXRoLCB0cnVlKSwgW3RhcmdldF0sIGZhbHNlKSk7ZWxzZSBwYXRocy5wdXNoKFtwcmVQYXRoLCB0YXJnZXRdKTtcbiAgICB9XG4gIH1cblxuICBmb3VuZFBhdGhzW3RhcmdldF0gPSBwYXRocztcbiAgcmV0dXJuIGZvdW5kUGF0aHNbdGFyZ2V0XTtcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/dijkstra.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/find-path.js":
/*!*******************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/find-path.js ***!
\*******************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.findShortestPath = exports.findAllPath = void 0;\n\nvar _dijkstra = _interopRequireDefault(__webpack_require__(/*! ./dijkstra */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/dijkstra.js\"));\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/util.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar findShortestPath = function findShortestPath(graphData, start, end, directed, weightPropertyName) {\n var _a = (0, _dijkstra.default)(graphData, start, directed, weightPropertyName),\n length = _a.length,\n path = _a.path,\n allPath = _a.allPath;\n\n return {\n length: length[end],\n path: path[end],\n allPath: allPath[end]\n };\n};\n\nexports.findShortestPath = findShortestPath;\n\nvar findAllPath = function findAllPath(graphData, start, end, directed) {\n var _a;\n\n if (start === end) return [[start]];\n var _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var visited = [start];\n var isVisited = (_a = {}, _a[start] = true, _a);\n var stack = []; // 辅助栈,用于存储访问过的节点的邻居节点\n\n var allPath = [];\n var neighbors = directed ? (0, _util.getNeighbors)(start, edges, 'target') : (0, _util.getNeighbors)(start, edges);\n stack.push(neighbors);\n\n while (visited.length > 0 && stack.length > 0) {\n var children = stack[stack.length - 1];\n\n if (children.length) {\n var child = children.shift();\n\n if (child) {\n visited.push(child);\n isVisited[child] = true;\n neighbors = directed ? (0, _util.getNeighbors)(child, edges, 'target') : (0, _util.getNeighbors)(child, edges);\n stack.push(neighbors.filter(function (neighbor) {\n return !isVisited[neighbor];\n }));\n }\n } else {\n var node = visited.pop();\n isVisited[node] = false;\n stack.pop();\n continue;\n }\n\n if (visited[visited.length - 1] === end) {\n var path = visited.map(function (node) {\n return node;\n });\n allPath.push(path);\n var node = visited.pop();\n isVisited[node] = false;\n stack.pop();\n }\n }\n\n return allPath;\n};\n\nexports.findAllPath = findAllPath;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9maW5kLXBhdGguanM/YjBiNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBLHVDQUF1QyxtQkFBTyxDQUFDLDBGQUFZOztBQUUzRCxZQUFZLG1CQUFPLENBQUMsa0ZBQVE7O0FBRTVCLHNDQUFzQyx1Q0FBdUMsZ0JBQWdCOztBQUU3RjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9maW5kLXBhdGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZmluZFNob3J0ZXN0UGF0aCA9IGV4cG9ydHMuZmluZEFsbFBhdGggPSB2b2lkIDA7XG5cbnZhciBfZGlqa3N0cmEgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2RpamtzdHJhXCIpKTtcblxudmFyIF91dGlsID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIGZpbmRTaG9ydGVzdFBhdGggPSBmdW5jdGlvbiBmaW5kU2hvcnRlc3RQYXRoKGdyYXBoRGF0YSwgc3RhcnQsIGVuZCwgZGlyZWN0ZWQsIHdlaWdodFByb3BlcnR5TmFtZSkge1xuICB2YXIgX2EgPSAoMCwgX2RpamtzdHJhLmRlZmF1bHQpKGdyYXBoRGF0YSwgc3RhcnQsIGRpcmVjdGVkLCB3ZWlnaHRQcm9wZXJ0eU5hbWUpLFxuICAgICAgbGVuZ3RoID0gX2EubGVuZ3RoLFxuICAgICAgcGF0aCA9IF9hLnBhdGgsXG4gICAgICBhbGxQYXRoID0gX2EuYWxsUGF0aDtcblxuICByZXR1cm4ge1xuICAgIGxlbmd0aDogbGVuZ3RoW2VuZF0sXG4gICAgcGF0aDogcGF0aFtlbmRdLFxuICAgIGFsbFBhdGg6IGFsbFBhdGhbZW5kXVxuICB9O1xufTtcblxuZXhwb3J0cy5maW5kU2hvcnRlc3RQYXRoID0gZmluZFNob3J0ZXN0UGF0aDtcblxudmFyIGZpbmRBbGxQYXRoID0gZnVuY3Rpb24gZmluZEFsbFBhdGgoZ3JhcGhEYXRhLCBzdGFydCwgZW5kLCBkaXJlY3RlZCkge1xuICB2YXIgX2E7XG5cbiAgaWYgKHN0YXJ0ID09PSBlbmQpIHJldHVybiBbW3N0YXJ0XV07XG4gIHZhciBfYiA9IGdyYXBoRGF0YS5lZGdlcyxcbiAgICAgIGVkZ2VzID0gX2IgPT09IHZvaWQgMCA/IFtdIDogX2I7XG4gIHZhciB2aXNpdGVkID0gW3N0YXJ0XTtcbiAgdmFyIGlzVmlzaXRlZCA9IChfYSA9IHt9LCBfYVtzdGFydF0gPSB0cnVlLCBfYSk7XG4gIHZhciBzdGFjayA9IFtdOyAvLyDovoXliqnmoIjvvIznlKjkuo7lrZjlgqjorr/pl67ov4fnmoToioLngrnnmoTpgrvlsYXoioLngrlcblxuICB2YXIgYWxsUGF0aCA9IFtdO1xuICB2YXIgbmVpZ2hib3JzID0gZGlyZWN0ZWQgPyAoMCwgX3V0aWwuZ2V0TmVpZ2hib3JzKShzdGFydCwgZWRnZXMsICd0YXJnZXQnKSA6ICgwLCBfdXRpbC5nZXROZWlnaGJvcnMpKHN0YXJ0LCBlZGdlcyk7XG4gIHN0YWNrLnB1c2gobmVpZ2hib3JzKTtcblxuICB3aGlsZSAodmlzaXRlZC5sZW5ndGggPiAwICYmIHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICB2YXIgY2hpbGRyZW4gPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcblxuICAgIGlmIChjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuLnNoaWZ0KCk7XG5cbiAgICAgIGlmIChjaGlsZCkge1xuICAgICAgICB2aXNpdGVkLnB1c2goY2hpbGQpO1xuICAgICAgICBpc1Zpc2l0ZWRbY2hpbGRdID0gdHJ1ZTtcbiAgICAgICAgbmVpZ2hib3JzID0gZGlyZWN0ZWQgPyAoMCwgX3V0aWwuZ2V0TmVpZ2hib3JzKShjaGlsZCwgZWRnZXMsICd0YXJnZXQnKSA6ICgwLCBfdXRpbC5nZXROZWlnaGJvcnMpKGNoaWxkLCBlZGdlcyk7XG4gICAgICAgIHN0YWNrLnB1c2gobmVpZ2hib3JzLmZpbHRlcihmdW5jdGlvbiAobmVpZ2hib3IpIHtcbiAgICAgICAgICByZXR1cm4gIWlzVmlzaXRlZFtuZWlnaGJvcl07XG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG5vZGUgPSB2aXNpdGVkLnBvcCgpO1xuICAgICAgaXNWaXNpdGVkW25vZGVdID0gZmFsc2U7XG4gICAgICBzdGFjay5wb3AoKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICh2aXNpdGVkW3Zpc2l0ZWQubGVuZ3RoIC0gMV0gPT09IGVuZCkge1xuICAgICAgdmFyIHBhdGggPSB2aXNpdGVkLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgIH0pO1xuICAgICAgYWxsUGF0aC5wdXNoKHBhdGgpO1xuICAgICAgdmFyIG5vZGUgPSB2aXNpdGVkLnBvcCgpO1xuICAgICAgaXNWaXNpdGVkW25vZGVdID0gZmFsc2U7XG4gICAgICBzdGFjay5wb3AoKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWxsUGF0aDtcbn07XG5cbmV4cG9ydHMuZmluZEFsbFBhdGggPSBmaW5kQWxsUGF0aDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/find-path.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/floydWarshall.js":
/*!***********************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/floydWarshall.js ***!
\***********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _adjacentMatrix = _interopRequireDefault(__webpack_require__(/*! ./adjacent-matrix */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/adjacent-matrix.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar floydWarshall = function floydWarshall(graphData, directed) {\n var adjacentMatrix = (0, _adjacentMatrix.default)(graphData, directed);\n var dist = [];\n var size = adjacentMatrix.length;\n\n for (var i = 0; i < size; i += 1) {\n dist[i] = [];\n\n for (var j = 0; j < size; j += 1) {\n if (i === j) {\n dist[i][j] = 0;\n } else if (adjacentMatrix[i][j] === 0 || !adjacentMatrix[i][j]) {\n dist[i][j] = Infinity;\n } else {\n dist[i][j] = adjacentMatrix[i][j];\n }\n }\n } // floyd\n\n\n for (var k = 0; k < size; k += 1) {\n for (var i = 0; i < size; i += 1) {\n for (var j = 0; j < size; j += 1) {\n if (dist[i][j] > dist[i][k] + dist[k][j]) {\n dist[i][j] = dist[i][k] + dist[k][j];\n }\n }\n }\n }\n\n return dist;\n};\n\nvar _default = floydWarshall;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9mbG95ZFdhcnNoYWxsLmpzP2M0ZjEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDs7QUFFQSw2Q0FBNkMsbUJBQU8sQ0FBQyx3R0FBbUI7O0FBRXhFLHNDQUFzQyx1Q0FBdUMsZ0JBQWdCOztBQUU3RjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsVUFBVTtBQUMzQjs7QUFFQSxtQkFBbUIsVUFBVTtBQUM3QjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdILGlCQUFpQixVQUFVO0FBQzNCLG1CQUFtQixVQUFVO0FBQzdCLHFCQUFxQixVQUFVO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9mbG95ZFdhcnNoYWxsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBfYWRqYWNlbnRNYXRyaXggPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2FkamFjZW50LW1hdHJpeFwiKSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBmbG95ZFdhcnNoYWxsID0gZnVuY3Rpb24gZmxveWRXYXJzaGFsbChncmFwaERhdGEsIGRpcmVjdGVkKSB7XG4gIHZhciBhZGphY2VudE1hdHJpeCA9ICgwLCBfYWRqYWNlbnRNYXRyaXguZGVmYXVsdCkoZ3JhcGhEYXRhLCBkaXJlY3RlZCk7XG4gIHZhciBkaXN0ID0gW107XG4gIHZhciBzaXplID0gYWRqYWNlbnRNYXRyaXgubGVuZ3RoO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSArPSAxKSB7XG4gICAgZGlzdFtpXSA9IFtdO1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBzaXplOyBqICs9IDEpIHtcbiAgICAgIGlmIChpID09PSBqKSB7XG4gICAgICAgIGRpc3RbaV1bal0gPSAwO1xuICAgICAgfSBlbHNlIGlmIChhZGphY2VudE1hdHJpeFtpXVtqXSA9PT0gMCB8fCAhYWRqYWNlbnRNYXRyaXhbaV1bal0pIHtcbiAgICAgICAgZGlzdFtpXVtqXSA9IEluZmluaXR5O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzdFtpXVtqXSA9IGFkamFjZW50TWF0cml4W2ldW2pdO1xuICAgICAgfVxuICAgIH1cbiAgfSAvLyBmbG95ZFxuXG5cbiAgZm9yICh2YXIgayA9IDA7IGsgPCBzaXplOyBrICs9IDEpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkgKz0gMSkge1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzaXplOyBqICs9IDEpIHtcbiAgICAgICAgaWYgKGRpc3RbaV1bal0gPiBkaXN0W2ldW2tdICsgZGlzdFtrXVtqXSkge1xuICAgICAgICAgIGRpc3RbaV1bal0gPSBkaXN0W2ldW2tdICsgZGlzdFtrXVtqXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkaXN0O1xufTtcblxudmFyIF9kZWZhdWx0ID0gZmxveWRXYXJzaGFsbDtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/floydWarshall.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/gSpan/gSpan.js":
/*!*********************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/gSpan/gSpan.js ***!
\*********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _util = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\nvar _struct = __webpack_require__(/*! ./struct */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/gSpan/struct.js\");\n\nvar DFSedge =\n/** @class */\nfunction () {\n function DFSedge(fromNode, toNode, fromNodeLabel, edgeLabel, toNodeLabel) {\n this.fromNode = fromNode;\n this.toNode = toNode;\n this.nodeEdgeNodeLabel = {\n nodeLabel1: fromNodeLabel || _struct.VACANT_NODE_LABEL,\n edgeLabel: edgeLabel || _struct.VACANT_EDGE_LABEL,\n nodeLabel2: toNodeLabel || _struct.VACANT_NODE_LABEL\n };\n }\n\n DFSedge.prototype.equalTo = function (other) {\n return this.fromNode === other.formNode && this.toNode === other.toNode && this.nodeEdgeNodeLabel === other.nodeEdgeNodeLabel;\n };\n\n DFSedge.prototype.notEqualTo = function (other) {\n return !this.equalTo(other);\n };\n\n return DFSedge;\n}(); // DFScode 是 DESedge 的数组\n\n\nvar DFScode =\n/** @class */\nfunction () {\n function DFScode() {\n this.rmpath = [];\n this.dfsEdgeList = [];\n }\n\n DFScode.prototype.equalTo = function (other) {\n var aLength = this.dfsEdgeList.length;\n var bLength = other.length;\n if (aLength !== bLength) return false;\n\n for (var i = 0; i < aLength; i++) {\n if (this.dfsEdgeList[i] !== other[i]) return false;\n }\n\n return true;\n };\n\n DFScode.prototype.notEqualTo = function (other) {\n return !this.equalTo(other);\n };\n /** 增加一条 edge 到 DFScode */\n\n\n DFScode.prototype.pushBack = function (fromNode, toNode, fromNodeLabel, edgeLabel, toNodeLabel) {\n this.dfsEdgeList.push(new DFSedge(fromNode, toNode, fromNodeLabel, edgeLabel, toNodeLabel));\n return this.dfsEdgeList;\n };\n /** 根据 dfs 构建图 */\n\n\n DFScode.prototype.toGraph = function (graphId, directed) {\n if (graphId === void 0) {\n graphId = _struct.VACANT_GRAPH_ID;\n }\n\n if (directed === void 0) {\n directed = false;\n }\n\n var graph = new _struct.Graph(graphId, true, directed);\n this.dfsEdgeList.forEach(function (dfsEdge) {\n var fromNodeId = dfsEdge.fromNode;\n var toNodeId = dfsEdge.toNode;\n var _a = dfsEdge.nodeEdgeNodeLabel,\n nodeLabel1 = _a.nodeLabel1,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n if (nodeLabel1 !== _struct.VACANT_NODE_LABEL) graph.addNode(fromNodeId, nodeLabel1);\n if (nodeLabel2 !== _struct.VACANT_NODE_LABEL) graph.addNode(toNodeId, nodeLabel2);\n if (nodeLabel1 !== _struct.VACANT_NODE_LABEL && nodeLabel2 !== nodeLabel1) graph.addEdge(undefined, fromNodeId, toNodeId, edgeLabel);\n });\n return graph;\n }; // 建立 rightmost path\n\n\n DFScode.prototype.buildRmpath = function () {\n this.rmpath = [];\n var oldFrom = undefined;\n var selfLength = this.dfsEdgeList.length;\n\n for (var i = selfLength - 1; i >= 0; i--) {\n var dfsEdge = this.dfsEdgeList[i];\n var fromNodeIdx = dfsEdge.fromNode;\n var toNodeIdx = dfsEdge.toNode;\n\n if (fromNodeIdx < toNodeIdx && (oldFrom === undefined || toNodeIdx === oldFrom)) {\n this.rmpath.push(i);\n oldFrom = fromNodeIdx;\n }\n }\n\n return this.rmpath;\n };\n\n DFScode.prototype.getNodeNum = function () {\n var nodeMap = {};\n this.dfsEdgeList.forEach(function (dfsEdge) {\n if (!nodeMap[dfsEdge.fromNode]) nodeMap[dfsEdge.fromNode] = true;\n if (!nodeMap[dfsEdge.toNode]) nodeMap[dfsEdge.toNode] = true;\n });\n return Object.keys(nodeMap).length;\n };\n\n return DFScode;\n}();\n\nvar History =\n/** @class */\nfunction () {\n function History(pdfs) {\n this.his = {};\n this.nodesUsed = {};\n this.edgesUsed = {};\n this.edges = [];\n if (!pdfs) return;\n\n while (pdfs) {\n var e = pdfs.edge;\n this.edges.push(e);\n this.nodesUsed[e.from] = 1;\n this.nodesUsed[e.to] = 1;\n this.edgesUsed[e.id] = 1;\n pdfs = pdfs.preNode;\n } // 倒序\n\n\n this.edges = this.edges.reverse();\n }\n\n History.prototype.hasNode = function (node) {\n return this.nodesUsed[node.id] === 1;\n };\n\n History.prototype.hasEdge = function (edge) {\n return this.edgesUsed[edge.id] === 1;\n };\n\n return History;\n}();\n\nvar GSpan =\n/** @class */\nfunction () {\n function GSpan(_a) {\n var graphs = _a.graphs,\n _b = _a.minSupport,\n minSupport = _b === void 0 ? 2 : _b,\n _c = _a.minNodeNum,\n minNodeNum = _c === void 0 ? 1 : _c,\n _d = _a.maxNodeNum,\n maxNodeNum = _d === void 0 ? 4 : _d,\n _e = _a.top,\n top = _e === void 0 ? 10 : _e,\n _f = _a.directed,\n directed = _f === void 0 ? false : _f,\n _g = _a.verbose,\n verbose = _g === void 0 ? false : _g; // -------- 第零步,初始化-------\n\n this.graphs = graphs;\n this.dfsCode = new DFScode();\n this.support = 0;\n this.frequentSize1Subgraphs = [];\n this.frequentSubgraphs = [];\n this.minSupport = minSupport;\n this.top = top;\n this.directed = directed;\n this.counter = 0; // TODO? timestamp = {}\n\n this.maxNodeNum = maxNodeNum;\n this.minNodeNum = minNodeNum;\n this.verbose = verbose;\n if (this.maxNodeNum < this.minNodeNum) this.maxNodeNum = this.minNodeNum;\n this.reportDF = []; // matrix\n } // Line 352\n\n\n GSpan.prototype.findForwardRootEdges = function (graph, fromNode) {\n var _this = this;\n\n var result = [];\n var nodeMap = graph.nodeMap;\n fromNode.edges.forEach(function (edge) {\n if (_this.directed || fromNode.label <= nodeMap[edge.to].label) result.push(edge);\n });\n return result;\n };\n\n GSpan.prototype.findBackwardEdge = function (graph, edge1, edge2, history) {\n if (!this.directed && edge1 === edge2) return null;\n var nodeMap = graph.nodeMap;\n var edge2To = nodeMap[edge2.to];\n var edge2ToEdges = edge2To.edges;\n var edgeLength = edge2ToEdges.length;\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edge2ToEdges[i];\n if (history.hasEdge(edge) || edge.to !== edge1.from) continue;\n\n if (!this.directed) {\n if (edge1.label < edge.label || edge1.label === edge.label && nodeMap[edge1.to].label <= nodeMap[edge2.to].label) {\n return edge;\n }\n } else {\n if (nodeMap[edge1.from].label < nodeMap[edge2.to].label || nodeMap[edge1.from].label === nodeMap[edge2.to].label && edge1.label <= edge.label) {\n return edge;\n }\n }\n }\n\n return null;\n };\n\n GSpan.prototype.findForwardPureEdges = function (graph, rightmostEdge, minNodeLabel, history) {\n var result = [];\n var rightmostEdgeToId = rightmostEdge.to;\n var edges = graph.nodeMap[rightmostEdgeToId].edges;\n var edgeLength = edges.length;\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edges[i];\n var toNode = graph.nodeMap[edge.to];\n\n if (minNodeLabel <= toNode.label && !history.hasNode(toNode)) {\n result.push(edge);\n }\n }\n\n return result;\n };\n\n GSpan.prototype.findForwardRmpathEdges = function (graph, rightmostEdge, minNodeLabel, history) {\n var result = [];\n var nodeMap = graph.nodeMap;\n var toNodeLabel = nodeMap[rightmostEdge.to].label;\n var fromNode = nodeMap[rightmostEdge.from];\n var edges = fromNode.edges;\n var edgeLength = edges.length;\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edges[i];\n var newToNodeLabel = nodeMap[edge.to].label;\n\n if (rightmostEdge.to === edge.to || minNodeLabel > newToNodeLabel || history.hasNode(nodeMap[edge.to])) {\n continue;\n }\n\n if (rightmostEdge.label < edge.label || rightmostEdge.label === edge.label && toNodeLabel <= newToNodeLabel) {\n result.push(edge);\n }\n }\n\n return result;\n };\n\n GSpan.prototype.getSupport = function (projected) {\n var graphMap = {};\n projected.forEach(function (pro) {\n if (!graphMap[pro.graphId]) graphMap[pro.graphId] = true;\n });\n return Object.keys(graphMap).length;\n };\n\n GSpan.prototype.findMinLabel = function (obj) {\n var minLabel = undefined;\n Object.keys(obj).forEach(function (nodeEdgeNodeLabel) {\n var _a = obj[nodeEdgeNodeLabel],\n nodeLabel1 = _a.nodeLabel1,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n\n if (!minLabel) {\n minLabel = {\n nodeLabel1: nodeLabel1,\n edgeLabel: edgeLabel,\n nodeLabel2: nodeLabel2\n };\n return;\n }\n\n if (nodeLabel1 < minLabel.nodeLabel1 || nodeLabel1 === minLabel.nodeLabel1 && edgeLabel < minLabel.edgeLabel || nodeLabel1 === minLabel.nodeLabel1 && edgeLabel === minLabel.edgeLabel && nodeLabel2 < minLabel.nodeLabel2) {\n minLabel = {\n nodeLabel1: nodeLabel1,\n edgeLabel: edgeLabel,\n nodeLabel2: nodeLabel2\n };\n }\n });\n return minLabel;\n };\n\n GSpan.prototype.isMin = function () {\n var _this = this;\n\n var dfsCode = this.dfsCode;\n if (this.verbose) console.log(\"isMin checking\", dfsCode);\n if (dfsCode.dfsEdgeList.length === 1) return true;\n var directed = this.directed;\n var graph = dfsCode.toGraph(_struct.VACANT_GRAPH_ID, directed);\n var nodeMap = graph.nodeMap;\n var dfsCodeMin = new DFScode();\n var root = {};\n graph.nodes.forEach(function (node) {\n var forwardEdges = _this.findForwardRootEdges(graph, node);\n\n forwardEdges.forEach(function (edge) {\n var otherNode = nodeMap[edge.to];\n var nodeEdgeNodeLabel = \"\".concat(node.label, \"-\").concat(edge.label, \"-\").concat(otherNode.label);\n if (!root[nodeEdgeNodeLabel]) root[nodeEdgeNodeLabel] = {\n projected: [],\n nodeLabel1: node.label,\n edgeLabel: edge.label,\n nodeLabel2: otherNode.label\n };\n var pdfs = {\n graphId: graph.id,\n edge: edge,\n preNode: null\n };\n root[nodeEdgeNodeLabel].projected.push(pdfs);\n });\n }); // 比较 root 中每一项的 nodeEdgeNodeLabel 大小,按照 nodeLabel1、edgeLabe、nodeLabel2 的顺序比较\n\n var minLabel = this.findMinLabel(root); // line 419\n\n if (!minLabel) return;\n dfsCodeMin.dfsEdgeList.push(new DFSedge(0, 1, minLabel.nodeLabel1, minLabel.edgeLabel, minLabel.nodeLabel2)); // line 423\n\n var projectIsMin = function projectIsMin(projected) {\n // right most path\n var rmpath = dfsCodeMin.buildRmpath();\n var minNodeLabel = dfsCodeMin.dfsEdgeList[0].nodeEdgeNodeLabel.nodeLabel1;\n var maxToC = dfsCodeMin.dfsEdgeList[rmpath[0]].toNode; // node id\n\n var backwardRoot = {};\n var flag = false,\n newTo = 0;\n var end = directed ? -1 : 0; // 遍历到 1 还是到 0\n\n var _loop_1 = function _loop_1(i) {\n if (flag) return \"break\"; // line 435\n\n projected.forEach(function (p) {\n var history = new History(p);\n\n var backwardEdge = _this.findBackwardEdge(graph, history.edges[rmpath[i]], history.edges[rmpath[0]], history);\n\n if (backwardEdge) {\n // Line 441\n if (!backwardRoot[backwardEdge.label]) {\n backwardRoot[backwardEdge.label] = {\n projected: [],\n edgeLabel: backwardEdge.label\n };\n }\n\n backwardRoot[backwardEdge.label].projected.push({\n graphId: graph.id,\n edge: backwardRoot,\n preNode: p\n });\n newTo = dfsCodeMin.dfsEdgeList[rmpath[i]].fromNode;\n flag = true;\n }\n });\n };\n\n for (var i = rmpath.length - 1; i > end; i--) {\n var state_1 = _loop_1(i);\n\n if (state_1 === \"break\") break;\n }\n\n if (flag) {\n var minBackwardEdgeLabel = _this.findMinLabel(backwardRoot);\n\n dfsCodeMin.dfsEdgeList.push(new DFSedge(maxToC, newTo, _struct.VACANT_NODE_LABEL, minBackwardEdgeLabel.edgeLabel, _struct.VACANT_NODE_LABEL));\n var idx_1 = dfsCodeMin.dfsEdgeList.length - 1;\n if (_this.dfsCode.dfsEdgeList[idx_1] !== dfsCodeMin.dfsEdgeList[idx_1]) return false;\n return projectIsMin(backwardRoot[minBackwardEdgeLabel.edgeLabel].projected);\n }\n\n var forwardRoot = {};\n flag = false;\n var newFrom = 0;\n projected.forEach(function (p) {\n var history = new History(p);\n\n var forwardPureEdges = _this.findForwardPureEdges(graph, history.edges[rmpath[0]], minNodeLabel, history);\n\n if (forwardPureEdges.length > 0) {\n flag = true;\n newFrom = maxToC;\n forwardPureEdges.forEach(function (edge) {\n var key = \"\".concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: graph.id,\n edge: edge,\n preNode: p\n });\n });\n }\n });\n var pathLength = rmpath.length;\n\n var _loop_2 = function _loop_2(i) {\n if (flag) return \"break\";\n var value = rmpath[i];\n projected.forEach(function (p) {\n var history = new History(p);\n\n var forwardRmpathEdges = _this.findForwardRmpathEdges(graph, history.edges[value], minNodeLabel, history);\n\n if (forwardRmpathEdges.length > 0) {\n flag = true;\n newFrom = dfsCodeMin.dfsEdgeList[value].fromNode;\n forwardRmpathEdges.forEach(function (edge) {\n var key = \"\".concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: graph.id,\n edge: edge,\n preNode: p\n });\n });\n }\n });\n };\n\n for (var i = 0; i < pathLength; i++) {\n var state_2 = _loop_2(i);\n\n if (state_2 === \"break\") break;\n }\n\n if (!flag) return true;\n\n var forwardMinEdgeNodeLabel = _this.findMinLabel(forwardRoot);\n\n dfsCodeMin.dfsEdgeList.push(new DFSedge(newFrom, maxToC + 1, _struct.VACANT_NODE_LABEL, forwardMinEdgeNodeLabel.edgeLabel, forwardMinEdgeNodeLabel.nodeLabel2));\n var idx = dfsCodeMin.dfsEdgeList.length - 1;\n if (dfsCode.dfsEdgeList[idx] !== dfsCodeMin.dfsEdgeList[idx]) return false;\n return projectIsMin(forwardRoot[\"\".concat(forwardMinEdgeNodeLabel.edgeLabel, \"-\").concat(forwardMinEdgeNodeLabel.nodeLabel2)].projected);\n };\n\n var key = \"\".concat(minLabel.nodeLabel1, \"-\").concat(minLabel.edgeLabel, \"-\").concat(minLabel.nodeLabel2);\n return projectIsMin(root[key].projected);\n };\n\n GSpan.prototype.report = function () {\n if (this.dfsCode.getNodeNum() < this.minNodeNum) return;\n this.counter++;\n var graph = this.dfsCode.toGraph(this.counter, this.directed);\n this.frequentSubgraphs.push((0, _util.clone)(graph));\n };\n\n GSpan.prototype.subGraphMining = function (projected) {\n var _this = this;\n\n var support = this.getSupport(projected);\n if (support < this.minSupport) return;\n if (!this.isMin()) return;\n this.report();\n var nodeNum = this.dfsCode.getNodeNum();\n var rmpath = this.dfsCode.buildRmpath();\n var maxToC = this.dfsCode.dfsEdgeList[rmpath[0]].toNode;\n var minNodeLabel = this.dfsCode.dfsEdgeList[0].nodeEdgeNodeLabel.nodeLabel1;\n var forwardRoot = {};\n var backwardRoot = {};\n projected.forEach(function (p) {\n var graph = _this.graphs[p.graphId];\n var nodeMap = graph.nodeMap;\n var history = new History(p); // backward Line 526\n\n for (var i = rmpath.length - 1; i >= 0; i--) {\n var backwardEdge = _this.findBackwardEdge(graph, history.edges[rmpath[i]], history.edges[rmpath[0]], history);\n\n if (backwardEdge) {\n var key = \"\".concat(_this.dfsCode.dfsEdgeList[rmpath[i]].fromNode, \"-\").concat(backwardEdge.label);\n if (!backwardRoot[key]) backwardRoot[key] = {\n projected: [],\n toNodeId: _this.dfsCode.dfsEdgeList[rmpath[i]].fromNode,\n edgeLabel: backwardEdge.label\n };\n backwardRoot[key].projected.push({\n graphId: p.graphId,\n edge: backwardEdge,\n preNode: p\n });\n }\n } // pure forward\n\n\n if (nodeNum >= _this.maxNodeNum) return;\n\n var forwardPureEdges = _this.findForwardPureEdges(graph, history.edges[rmpath[0]], minNodeLabel, history);\n\n forwardPureEdges.forEach(function (edge) {\n var key = \"\".concat(maxToC, \"-\").concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n fromNodeId: maxToC,\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: p.graphId,\n edge: edge,\n preNode: p\n });\n });\n\n var _loop_3 = function _loop_3(i) {\n var forwardRmpathEdges = _this.findForwardRmpathEdges(graph, history.edges[rmpath[i]], minNodeLabel, history);\n\n forwardRmpathEdges.forEach(function (edge) {\n var key = \"\".concat(_this.dfsCode.dfsEdgeList[rmpath[i]].fromNode, \"-\").concat(edge.label, \"-\").concat(nodeMap[edge.to].label);\n if (!forwardRoot[key]) forwardRoot[key] = {\n projected: [],\n fromNodeId: _this.dfsCode.dfsEdgeList[rmpath[i]].fromNode,\n edgeLabel: edge.label,\n nodeLabel2: nodeMap[edge.to].label\n };\n forwardRoot[key].projected.push({\n graphId: p.graphId,\n edge: edge,\n preNode: p\n });\n });\n }; // rmpath forward\n\n\n for (var i = 0; i < rmpath.length; i++) {\n _loop_3(i);\n }\n }); // backward\n\n Object.keys(backwardRoot).forEach(function (key) {\n var _a = backwardRoot[key],\n toNodeId = _a.toNodeId,\n edgeLabel = _a.edgeLabel;\n\n _this.dfsCode.dfsEdgeList.push(new DFSedge(maxToC, toNodeId, \"-1\", edgeLabel, \"-1\"));\n\n _this.subGraphMining(backwardRoot[key].projected);\n\n _this.dfsCode.dfsEdgeList.pop();\n }); // forward\n\n Object.keys(forwardRoot).forEach(function (key) {\n var _a = forwardRoot[key],\n fromNodeId = _a.fromNodeId,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n\n _this.dfsCode.dfsEdgeList.push(new DFSedge(fromNodeId, maxToC + 1, _struct.VACANT_NODE_LABEL, edgeLabel, nodeLabel2));\n\n _this.subGraphMining(forwardRoot[key].projected);\n\n _this.dfsCode.dfsEdgeList.pop();\n });\n };\n\n GSpan.prototype.generate1EdgeFrequentSubGraphs = function () {\n var graphs = this.graphs;\n var directed = this.directed;\n var minSupport = this.minSupport;\n var frequentSize1Subgraphs = this.frequentSize1Subgraphs;\n var nodeLabelCounter = {},\n nodeEdgeNodeCounter = {}; // 保存各个图和各自节点的关系 map,key 格式为 graphKey-node类型\n\n var nodeLableCounted = {}; // 保存各个图和各自边的关系 map,key 格式为 graphKey-fromNode类型-edge类型-toNode类型\n\n var nodeEdgeNodeLabelCounted = {};\n Object.keys(graphs).forEach(function (key) {\n // Line 271\n var graph = graphs[key];\n var nodeMap = graph.nodeMap; // 遍历节点,记录对应图 与 每个节点的 label 到 nodeLableCounted\n\n graph.nodes.forEach(function (node, i) {\n // Line 272\n var nodeLabel = node.label;\n var graphNodeKey = \"\".concat(key, \"-\").concat(nodeLabel);\n\n if (!nodeLableCounted[graphNodeKey]) {\n var counter = nodeLabelCounter[nodeLabel] || 0;\n counter++;\n nodeLabelCounter[nodeLabel] = counter;\n }\n\n nodeLableCounted[graphNodeKey] = {\n graphKey: key,\n label: nodeLabel\n }; // 遍历该节点的所有边,记录各个图和各自边的关系到 nodeEdgeNodeLabelCounted. Line 276\n\n node.edges.forEach(function (edge) {\n var nodeLabel1 = nodeLabel;\n var nodeLabel2 = nodeMap[edge.to].label;\n\n if (!directed && nodeLabel1 > nodeLabel2) {\n var tmp = nodeLabel2;\n nodeLabel2 = nodeLabel1;\n nodeLabel1 = tmp;\n }\n\n var edgeLabel = edge.label;\n var graphNodeEdgeNodeKey = \"\".concat(key, \"-\").concat(nodeLabel1, \"-\").concat(edgeLabel, \"-\").concat(nodeLabel2);\n var nodeEdgeNodeKey = \"\".concat(nodeLabel1, \"-\").concat(edgeLabel, \"-\").concat(nodeLabel2);\n\n if (!nodeEdgeNodeCounter[nodeEdgeNodeKey]) {\n var counter = nodeEdgeNodeCounter[nodeEdgeNodeKey] || 0;\n counter++;\n nodeEdgeNodeCounter[nodeEdgeNodeKey] = counter; // Line281\n }\n\n nodeEdgeNodeLabelCounted[graphNodeEdgeNodeKey] = {\n graphId: key,\n nodeLabel1: nodeLabel1,\n edgeLabel: edgeLabel,\n nodeLabel2: nodeLabel2\n };\n });\n });\n }); // 计算频繁的节点\n\n Object.keys(nodeLabelCounter).forEach(function (label) {\n var count = nodeLabelCounter[label];\n if (count < minSupport) return;\n var g = {\n nodes: [],\n edges: []\n };\n g.nodes.push({\n id: \"0\",\n label: label\n });\n frequentSize1Subgraphs.push(g); // if (minNodeNum <= 1) reportSize1 TODO\n });\n return frequentSize1Subgraphs;\n };\n\n GSpan.prototype.run = function () {\n var _this = this; // -------- 第一步, _generate_1edge_frequent_subgraphs:频繁的单个节点-------\n\n\n this.frequentSize1Subgraphs = this.generate1EdgeFrequentSubGraphs();\n if (this.maxNodeNum < 2) return;\n var graphs = this.graphs;\n var directed = this.directed; // PDFS 数组的 map Line 304\n\n var root = {};\n Object.keys(graphs).forEach(function (graphId) {\n var graph = graphs[graphId];\n var nodeMap = graph.nodeMap; // Line 306\n\n graph.nodes.forEach(function (node) {\n var forwardRootEdges = _this.findForwardRootEdges(graph, node); // Line 308\n\n\n forwardRootEdges.forEach(function (edge) {\n var toNode = nodeMap[edge.to];\n var nodeEdgeNodeLabel = \"\".concat(node.label, \"-\").concat(edge.label, \"-\").concat(toNode.label);\n if (!root[nodeEdgeNodeLabel]) root[nodeEdgeNodeLabel] = {\n projected: [],\n nodeLabel1: node.label,\n edgeLabel: edge.label,\n nodeLabel2: toNode.label\n };\n var pdfs = {\n graphId: graphId,\n edge: edge,\n preNode: null\n };\n root[nodeEdgeNodeLabel].projected.push(pdfs);\n });\n });\n }); // Line 313\n\n Object.keys(root).forEach(function (nodeEdgeNodeLabel) {\n var _a = root[nodeEdgeNodeLabel],\n projected = _a.projected,\n nodeLabel1 = _a.nodeLabel1,\n edgeLabel = _a.edgeLabel,\n nodeLabel2 = _a.nodeLabel2;\n\n _this.dfsCode.dfsEdgeList.push(new DFSedge(0, 1, nodeLabel1, edgeLabel, nodeLabel2));\n\n _this.subGraphMining(projected);\n\n _this.dfsCode.dfsEdgeList.pop();\n });\n };\n\n return GSpan;\n}();\n\nvar formatGraphs = function formatGraphs(graphs, directed, nodeLabelProp, edgeLabelProp) {\n var result = {};\n Object.keys(graphs).forEach(function (key, i) {\n var graph = graphs[key];\n var fGraph = new _struct.Graph(i, true, directed);\n var nodeIdxMap = {};\n graph.nodes.forEach(function (node, j) {\n fGraph.addNode(j, node[nodeLabelProp]);\n nodeIdxMap[node.id] = j;\n });\n graph.edges.forEach(function (edge, k) {\n var sourceIdx = nodeIdxMap[edge.source];\n var targetIdx = nodeIdxMap[edge.target];\n fGraph.addEdge(-1, sourceIdx, targetIdx, edge[edgeLabelProp]);\n });\n if (fGraph && fGraph.getNodeNum()) result[fGraph.id] = fGraph;\n });\n return result;\n};\n\nvar toGraphDatas = function toGraphDatas(graphs, nodeLabelProp, edgeLabelProp) {\n var result = [];\n graphs.forEach(function (graph) {\n var graphData = {\n nodes: [],\n edges: []\n };\n graph.nodes.forEach(function (node) {\n var _a;\n\n graphData.nodes.push((_a = {\n id: \"\".concat(node.id)\n }, _a[nodeLabelProp] = node.label, _a));\n });\n graph.edges.forEach(function (edge) {\n var _a;\n\n graphData.edges.push((_a = {\n source: \"\".concat(edge.from),\n target: \"\".concat(edge.to)\n }, _a[edgeLabelProp] = edge.label, _a));\n });\n result.push(graphData);\n });\n return result;\n};\n\nvar DEFAULT_LABEL_NAME = \"cluster\";\n/**\n * gSpan 频繁子图计算算法(frequent graph mining)\n * @param params 参数\n */\n\nvar gSpan = function gSpan(params) {\n // ------- 将图数据 GraphData 的 map 转换为格式 -------\n var graphs = params.graphs,\n _a = params.directed,\n directed = _a === void 0 ? false : _a,\n _b = params.nodeLabelProp,\n nodeLabelProp = _b === void 0 ? DEFAULT_LABEL_NAME : _b,\n _c = params.edgeLabelProp,\n edgeLabelProp = _c === void 0 ? DEFAULT_LABEL_NAME : _c;\n var formattedGraphs = formatGraphs(graphs, directed, nodeLabelProp, edgeLabelProp);\n var minSupport = params.minSupport,\n maxNodeNum = params.maxNodeNum,\n minNodeNum = params.minNodeNum,\n verbose = params.verbose,\n top = params.top; // ------- 初始化与执行算法 -------\n\n var algoParams = {\n graphs: formattedGraphs,\n minSupport: minSupport,\n maxNodeNum: maxNodeNum,\n minNodeNum: minNodeNum,\n top: top,\n verbose: verbose,\n directed: directed\n };\n var calculator = new GSpan(algoParams);\n calculator.run();\n var result = toGraphDatas(calculator.frequentSubgraphs, nodeLabelProp, edgeLabelProp);\n return result;\n};\n\nvar _default = gSpan;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9nU3Bhbi9nU3Bhbi5qcz84YTMyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7O0FBRUEsWUFBWSxtQkFBTyxDQUFDLDZFQUFZOztBQUVoQyxjQUFjLG1CQUFPLENBQUMsNEZBQVU7O0FBRWhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyxHQUFHOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsYUFBYTtBQUNoQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsZ0NBQWdDLFFBQVE7QUFDeEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7O0FBRTdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7O0FBRXJCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCLEdBQUc7OztBQUdIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLLEVBQUU7O0FBRVAsMkNBQTJDOztBQUUzQztBQUNBLGlIQUFpSDs7QUFFakg7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0REFBNEQ7O0FBRTVEO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEM7QUFDQSxpQ0FBaUM7O0FBRWpDO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUEscUNBQXFDLFNBQVM7QUFDOUM7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2YsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNUOztBQUVBLHFCQUFxQixnQkFBZ0I7QUFDckM7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQzs7QUFFbkMscUNBQXFDLFFBQVE7QUFDN0M7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87OztBQUdQOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYLFNBQVM7QUFDVCxRQUFROzs7QUFHUixxQkFBcUIsbUJBQW1CO0FBQ3hDO0FBQ0E7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCLGlDQUFpQzs7QUFFakMsOEJBQThCOztBQUU5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVOztBQUVWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSwyREFBMkQ7QUFDM0Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AscUNBQXFDO0FBQ3JDLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EscUJBQXFCOzs7QUFHckI7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDOztBQUVqQztBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7O0FBRWxDO0FBQ0EsdUVBQXVFOzs7QUFHdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCOztBQUV2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9nU3Bhbi9nU3Bhbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX3V0aWwgPSByZXF1aXJlKFwiQGFudHYvdXRpbFwiKTtcblxudmFyIF9zdHJ1Y3QgPSByZXF1aXJlKFwiLi9zdHJ1Y3RcIik7XG5cbnZhciBERlNlZGdlID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gREZTZWRnZShmcm9tTm9kZSwgdG9Ob2RlLCBmcm9tTm9kZUxhYmVsLCBlZGdlTGFiZWwsIHRvTm9kZUxhYmVsKSB7XG4gICAgdGhpcy5mcm9tTm9kZSA9IGZyb21Ob2RlO1xuICAgIHRoaXMudG9Ob2RlID0gdG9Ob2RlO1xuICAgIHRoaXMubm9kZUVkZ2VOb2RlTGFiZWwgPSB7XG4gICAgICBub2RlTGFiZWwxOiBmcm9tTm9kZUxhYmVsIHx8IF9zdHJ1Y3QuVkFDQU5UX05PREVfTEFCRUwsXG4gICAgICBlZGdlTGFiZWw6IGVkZ2VMYWJlbCB8fCBfc3RydWN0LlZBQ0FOVF9FREdFX0xBQkVMLFxuICAgICAgbm9kZUxhYmVsMjogdG9Ob2RlTGFiZWwgfHwgX3N0cnVjdC5WQUNBTlRfTk9ERV9MQUJFTFxuICAgIH07XG4gIH1cblxuICBERlNlZGdlLnByb3RvdHlwZS5lcXVhbFRvID0gZnVuY3Rpb24gKG90aGVyKSB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbU5vZGUgPT09IG90aGVyLmZvcm1Ob2RlICYmIHRoaXMudG9Ob2RlID09PSBvdGhlci50b05vZGUgJiYgdGhpcy5ub2RlRWRnZU5vZGVMYWJlbCA9PT0gb3RoZXIubm9kZUVkZ2VOb2RlTGFiZWw7XG4gIH07XG5cbiAgREZTZWRnZS5wcm90b3R5cGUubm90RXF1YWxUbyA9IGZ1bmN0aW9uIChvdGhlcikge1xuICAgIHJldHVybiAhdGhpcy5lcXVhbFRvKG90aGVyKTtcbiAgfTtcblxuICByZXR1cm4gREZTZWRnZTtcbn0oKTsgLy8gREZTY29kZSDmmK8gREVTZWRnZSDnmoTmlbDnu4RcblxuXG52YXIgREZTY29kZSA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIERGU2NvZGUoKSB7XG4gICAgdGhpcy5ybXBhdGggPSBbXTtcbiAgICB0aGlzLmRmc0VkZ2VMaXN0ID0gW107XG4gIH1cblxuICBERlNjb2RlLnByb3RvdHlwZS5lcXVhbFRvID0gZnVuY3Rpb24gKG90aGVyKSB7XG4gICAgdmFyIGFMZW5ndGggPSB0aGlzLmRmc0VkZ2VMaXN0Lmxlbmd0aDtcbiAgICB2YXIgYkxlbmd0aCA9IG90aGVyLmxlbmd0aDtcbiAgICBpZiAoYUxlbmd0aCAhPT0gYkxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhTGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmRmc0VkZ2VMaXN0W2ldICE9PSBvdGhlcltpXSkgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIERGU2NvZGUucHJvdG90eXBlLm5vdEVxdWFsVG8gPSBmdW5jdGlvbiAob3RoZXIpIHtcbiAgICByZXR1cm4gIXRoaXMuZXF1YWxUbyhvdGhlcik7XG4gIH07XG4gIC8qKiDlop7liqDkuIDmnaEgZWRnZSDliLAgREZTY29kZSAqL1xuXG5cbiAgREZTY29kZS5wcm90b3R5cGUucHVzaEJhY2sgPSBmdW5jdGlvbiAoZnJvbU5vZGUsIHRvTm9kZSwgZnJvbU5vZGVMYWJlbCwgZWRnZUxhYmVsLCB0b05vZGVMYWJlbCkge1xuICAgIHRoaXMuZGZzRWRnZUxpc3QucHVzaChuZXcgREZTZWRnZShmcm9tTm9kZSwgdG9Ob2RlLCBmcm9tTm9kZUxhYmVsLCBlZGdlTGFiZWwsIHRvTm9kZUxhYmVsKSk7XG4gICAgcmV0dXJuIHRoaXMuZGZzRWRnZUxpc3Q7XG4gIH07XG4gIC8qKiDmoLnmja4gZGZzIOaehOW7uuWbviAqL1xuXG5cbiAgREZTY29kZS5wcm90b3R5cGUudG9HcmFwaCA9IGZ1bmN0aW9uIChncmFwaElkLCBkaXJlY3RlZCkge1xuICAgIGlmIChncmFwaElkID09PSB2b2lkIDApIHtcbiAgICAgIGdyYXBoSWQgPSBfc3RydWN0LlZBQ0FOVF9HUkFQSF9JRDtcbiAgICB9XG5cbiAgICBpZiAoZGlyZWN0ZWQgPT09IHZvaWQgMCkge1xuICAgICAgZGlyZWN0ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIgZ3JhcGggPSBuZXcgX3N0cnVjdC5HcmFwaChncmFwaElkLCB0cnVlLCBkaXJlY3RlZCk7XG4gICAgdGhpcy5kZnNFZGdlTGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChkZnNFZGdlKSB7XG4gICAgICB2YXIgZnJvbU5vZGVJZCA9IGRmc0VkZ2UuZnJvbU5vZGU7XG4gICAgICB2YXIgdG9Ob2RlSWQgPSBkZnNFZGdlLnRvTm9kZTtcbiAgICAgIHZhciBfYSA9IGRmc0VkZ2Uubm9kZUVkZ2VOb2RlTGFiZWwsXG4gICAgICAgICAgbm9kZUxhYmVsMSA9IF9hLm5vZGVMYWJlbDEsXG4gICAgICAgICAgZWRnZUxhYmVsID0gX2EuZWRnZUxhYmVsLFxuICAgICAgICAgIG5vZGVMYWJlbDIgPSBfYS5ub2RlTGFiZWwyO1xuICAgICAgaWYgKG5vZGVMYWJlbDEgIT09IF9zdHJ1Y3QuVkFDQU5UX05PREVfTEFCRUwpIGdyYXBoLmFkZE5vZGUoZnJvbU5vZGVJZCwgbm9kZUxhYmVsMSk7XG4gICAgICBpZiAobm9kZUxhYmVsMiAhPT0gX3N0cnVjdC5WQUNBTlRfTk9ERV9MQUJFTCkgZ3JhcGguYWRkTm9kZSh0b05vZGVJZCwgbm9kZUxhYmVsMik7XG4gICAgICBpZiAobm9kZUxhYmVsMSAhPT0gX3N0cnVjdC5WQUNBTlRfTk9ERV9MQUJFTCAmJiBub2RlTGFiZWwyICE9PSBub2RlTGFiZWwxKSBncmFwaC5hZGRFZGdlKHVuZGVmaW5lZCwgZnJvbU5vZGVJZCwgdG9Ob2RlSWQsIGVkZ2VMYWJlbCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGdyYXBoO1xuICB9OyAvLyDlu7rnq4sgcmlnaHRtb3N0IHBhdGhcblxuXG4gIERGU2NvZGUucHJvdG90eXBlLmJ1aWxkUm1wYXRoID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMucm1wYXRoID0gW107XG4gICAgdmFyIG9sZEZyb20gPSB1bmRlZmluZWQ7XG4gICAgdmFyIHNlbGZMZW5ndGggPSB0aGlzLmRmc0VkZ2VMaXN0Lmxlbmd0aDtcblxuICAgIGZvciAodmFyIGkgPSBzZWxmTGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBkZnNFZGdlID0gdGhpcy5kZnNFZGdlTGlzdFtpXTtcbiAgICAgIHZhciBmcm9tTm9kZUlkeCA9IGRmc0VkZ2UuZnJvbU5vZGU7XG4gICAgICB2YXIgdG9Ob2RlSWR4ID0gZGZzRWRnZS50b05vZGU7XG5cbiAgICAgIGlmIChmcm9tTm9kZUlkeCA8IHRvTm9kZUlkeCAmJiAob2xkRnJvbSA9PT0gdW5kZWZpbmVkIHx8IHRvTm9kZUlkeCA9PT0gb2xkRnJvbSkpIHtcbiAgICAgICAgdGhpcy5ybXBhdGgucHVzaChpKTtcbiAgICAgICAgb2xkRnJvbSA9IGZyb21Ob2RlSWR4O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnJtcGF0aDtcbiAgfTtcblxuICBERlNjb2RlLnByb3RvdHlwZS5nZXROb2RlTnVtID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBub2RlTWFwID0ge307XG4gICAgdGhpcy5kZnNFZGdlTGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChkZnNFZGdlKSB7XG4gICAgICBpZiAoIW5vZGVNYXBbZGZzRWRnZS5mcm9tTm9kZV0pIG5vZGVNYXBbZGZzRWRnZS5mcm9tTm9kZV0gPSB0cnVlO1xuICAgICAgaWYgKCFub2RlTWFwW2Rmc0VkZ2UudG9Ob2RlXSkgbm9kZU1hcFtkZnNFZGdlLnRvTm9kZV0gPSB0cnVlO1xuICAgIH0pO1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhub2RlTWFwKS5sZW5ndGg7XG4gIH07XG5cbiAgcmV0dXJuIERGU2NvZGU7XG59KCk7XG5cbnZhciBIaXN0b3J5ID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gSGlzdG9yeShwZGZzKSB7XG4gICAgdGhpcy5oaXMgPSB7fTtcbiAgICB0aGlzLm5vZGVzVXNlZCA9IHt9O1xuICAgIHRoaXMuZWRnZXNVc2VkID0ge307XG4gICAgdGhpcy5lZGdlcyA9IFtdO1xuICAgIGlmICghcGRmcykgcmV0dXJuO1xuXG4gICAgd2hpbGUgKHBkZnMpIHtcbiAgICAgIHZhciBlID0gcGRmcy5lZGdlO1xuICAgICAgdGhpcy5lZGdlcy5wdXNoKGUpO1xuICAgICAgdGhpcy5ub2Rlc1VzZWRbZS5mcm9tXSA9IDE7XG4gICAgICB0aGlzLm5vZGVzVXNlZFtlLnRvXSA9IDE7XG4gICAgICB0aGlzLmVkZ2VzVXNlZFtlLmlkXSA9IDE7XG4gICAgICBwZGZzID0gcGRmcy5wcmVOb2RlO1xuICAgIH0gLy8g5YCS5bqPXG5cblxuICAgIHRoaXMuZWRnZXMgPSB0aGlzLmVkZ2VzLnJldmVyc2UoKTtcbiAgfVxuXG4gIEhpc3RvcnkucHJvdG90eXBlLmhhc05vZGUgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgIHJldHVybiB0aGlzLm5vZGVzVXNlZFtub2RlLmlkXSA9PT0gMTtcbiAgfTtcblxuICBIaXN0b3J5LnByb3RvdHlwZS5oYXNFZGdlID0gZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICByZXR1cm4gdGhpcy5lZGdlc1VzZWRbZWRnZS5pZF0gPT09IDE7XG4gIH07XG5cbiAgcmV0dXJuIEhpc3Rvcnk7XG59KCk7XG5cbnZhciBHU3BhbiA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEdTcGFuKF9hKSB7XG4gICAgdmFyIGdyYXBocyA9IF9hLmdyYXBocyxcbiAgICAgICAgX2IgPSBfYS5taW5TdXBwb3J0LFxuICAgICAgICBtaW5TdXBwb3J0ID0gX2IgPT09IHZvaWQgMCA/IDIgOiBfYixcbiAgICAgICAgX2MgPSBfYS5taW5Ob2RlTnVtLFxuICAgICAgICBtaW5Ob2RlTnVtID0gX2MgPT09IHZvaWQgMCA/IDEgOiBfYyxcbiAgICAgICAgX2QgPSBfYS5tYXhOb2RlTnVtLFxuICAgICAgICBtYXhOb2RlTnVtID0gX2QgPT09IHZvaWQgMCA/IDQgOiBfZCxcbiAgICAgICAgX2UgPSBfYS50b3AsXG4gICAgICAgIHRvcCA9IF9lID09PSB2b2lkIDAgPyAxMCA6IF9lLFxuICAgICAgICBfZiA9IF9hLmRpcmVjdGVkLFxuICAgICAgICBkaXJlY3RlZCA9IF9mID09PSB2b2lkIDAgPyBmYWxzZSA6IF9mLFxuICAgICAgICBfZyA9IF9hLnZlcmJvc2UsXG4gICAgICAgIHZlcmJvc2UgPSBfZyA9PT0gdm9pZCAwID8gZmFsc2UgOiBfZzsgLy8gLS0tLS0tLS0g56ys6Zu25q2l77yM5Yid5aeL5YyWLS0tLS0tLVxuXG4gICAgdGhpcy5ncmFwaHMgPSBncmFwaHM7XG4gICAgdGhpcy5kZnNDb2RlID0gbmV3IERGU2NvZGUoKTtcbiAgICB0aGlzLnN1cHBvcnQgPSAwO1xuICAgIHRoaXMuZnJlcXVlbnRTaXplMVN1YmdyYXBocyA9IFtdO1xuICAgIHRoaXMuZnJlcXVlbnRTdWJncmFwaHMgPSBbXTtcbiAgICB0aGlzLm1pblN1cHBvcnQgPSBtaW5TdXBwb3J0O1xuICAgIHRoaXMudG9wID0gdG9wO1xuICAgIHRoaXMuZGlyZWN0ZWQgPSBkaXJlY3RlZDtcbiAgICB0aGlzLmNvdW50ZXIgPSAwOyAvLyBUT0RPPyB0aW1lc3RhbXAgPSB7fVxuXG4gICAgdGhpcy5tYXhOb2RlTnVtID0gbWF4Tm9kZU51bTtcbiAgICB0aGlzLm1pbk5vZGVOdW0gPSBtaW5Ob2RlTnVtO1xuICAgIHRoaXMudmVyYm9zZSA9IHZlcmJvc2U7XG4gICAgaWYgKHRoaXMubWF4Tm9kZU51bSA8IHRoaXMubWluTm9kZU51bSkgdGhpcy5tYXhOb2RlTnVtID0gdGhpcy5taW5Ob2RlTnVtO1xuICAgIHRoaXMucmVwb3J0REYgPSBbXTsgLy8gbWF0cml4XG4gIH0gLy8gTGluZSAzNTJcblxuXG4gIEdTcGFuLnByb3RvdHlwZS5maW5kRm9yd2FyZFJvb3RFZGdlcyA9IGZ1bmN0aW9uIChncmFwaCwgZnJvbU5vZGUpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIHZhciBub2RlTWFwID0gZ3JhcGgubm9kZU1hcDtcbiAgICBmcm9tTm9kZS5lZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICBpZiAoX3RoaXMuZGlyZWN0ZWQgfHwgZnJvbU5vZGUubGFiZWwgPD0gbm9kZU1hcFtlZGdlLnRvXS5sYWJlbCkgcmVzdWx0LnB1c2goZWRnZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICBHU3Bhbi5wcm90b3R5cGUuZmluZEJhY2t3YXJkRWRnZSA9IGZ1bmN0aW9uIChncmFwaCwgZWRnZTEsIGVkZ2UyLCBoaXN0b3J5KSB7XG4gICAgaWYgKCF0aGlzLmRpcmVjdGVkICYmIGVkZ2UxID09PSBlZGdlMikgcmV0dXJuIG51bGw7XG4gICAgdmFyIG5vZGVNYXAgPSBncmFwaC5ub2RlTWFwO1xuICAgIHZhciBlZGdlMlRvID0gbm9kZU1hcFtlZGdlMi50b107XG4gICAgdmFyIGVkZ2UyVG9FZGdlcyA9IGVkZ2UyVG8uZWRnZXM7XG4gICAgdmFyIGVkZ2VMZW5ndGggPSBlZGdlMlRvRWRnZXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlZGdlTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlZGdlID0gZWRnZTJUb0VkZ2VzW2ldO1xuICAgICAgaWYgKGhpc3RvcnkuaGFzRWRnZShlZGdlKSB8fCBlZGdlLnRvICE9PSBlZGdlMS5mcm9tKSBjb250aW51ZTtcblxuICAgICAgaWYgKCF0aGlzLmRpcmVjdGVkKSB7XG4gICAgICAgIGlmIChlZGdlMS5sYWJlbCA8IGVkZ2UubGFiZWwgfHwgZWRnZTEubGFiZWwgPT09IGVkZ2UubGFiZWwgJiYgbm9kZU1hcFtlZGdlMS50b10ubGFiZWwgPD0gbm9kZU1hcFtlZGdlMi50b10ubGFiZWwpIHtcbiAgICAgICAgICByZXR1cm4gZWRnZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKG5vZGVNYXBbZWRnZTEuZnJvbV0ubGFiZWwgPCBub2RlTWFwW2VkZ2UyLnRvXS5sYWJlbCB8fCBub2RlTWFwW2VkZ2UxLmZyb21dLmxhYmVsID09PSBub2RlTWFwW2VkZ2UyLnRvXS5sYWJlbCAmJiBlZGdlMS5sYWJlbCA8PSBlZGdlLmxhYmVsKSB7XG4gICAgICAgICAgcmV0dXJuIGVkZ2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcblxuICBHU3Bhbi5wcm90b3R5cGUuZmluZEZvcndhcmRQdXJlRWRnZXMgPSBmdW5jdGlvbiAoZ3JhcGgsIHJpZ2h0bW9zdEVkZ2UsIG1pbk5vZGVMYWJlbCwgaGlzdG9yeSkge1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICB2YXIgcmlnaHRtb3N0RWRnZVRvSWQgPSByaWdodG1vc3RFZGdlLnRvO1xuICAgIHZhciBlZGdlcyA9IGdyYXBoLm5vZGVNYXBbcmlnaHRtb3N0RWRnZVRvSWRdLmVkZ2VzO1xuICAgIHZhciBlZGdlTGVuZ3RoID0gZWRnZXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlZGdlTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlZGdlID0gZWRnZXNbaV07XG4gICAgICB2YXIgdG9Ob2RlID0gZ3JhcGgubm9kZU1hcFtlZGdlLnRvXTtcblxuICAgICAgaWYgKG1pbk5vZGVMYWJlbCA8PSB0b05vZGUubGFiZWwgJiYgIWhpc3RvcnkuaGFzTm9kZSh0b05vZGUpKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGVkZ2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgR1NwYW4ucHJvdG90eXBlLmZpbmRGb3J3YXJkUm1wYXRoRWRnZXMgPSBmdW5jdGlvbiAoZ3JhcGgsIHJpZ2h0bW9zdEVkZ2UsIG1pbk5vZGVMYWJlbCwgaGlzdG9yeSkge1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICB2YXIgbm9kZU1hcCA9IGdyYXBoLm5vZGVNYXA7XG4gICAgdmFyIHRvTm9kZUxhYmVsID0gbm9kZU1hcFtyaWdodG1vc3RFZGdlLnRvXS5sYWJlbDtcbiAgICB2YXIgZnJvbU5vZGUgPSBub2RlTWFwW3JpZ2h0bW9zdEVkZ2UuZnJvbV07XG4gICAgdmFyIGVkZ2VzID0gZnJvbU5vZGUuZWRnZXM7XG4gICAgdmFyIGVkZ2VMZW5ndGggPSBlZGdlcy5sZW5ndGg7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVkZ2VMZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVkZ2UgPSBlZGdlc1tpXTtcbiAgICAgIHZhciBuZXdUb05vZGVMYWJlbCA9IG5vZGVNYXBbZWRnZS50b10ubGFiZWw7XG5cbiAgICAgIGlmIChyaWdodG1vc3RFZGdlLnRvID09PSBlZGdlLnRvIHx8IG1pbk5vZGVMYWJlbCA+IG5ld1RvTm9kZUxhYmVsIHx8IGhpc3RvcnkuaGFzTm9kZShub2RlTWFwW2VkZ2UudG9dKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJpZ2h0bW9zdEVkZ2UubGFiZWwgPCBlZGdlLmxhYmVsIHx8IHJpZ2h0bW9zdEVkZ2UubGFiZWwgPT09IGVkZ2UubGFiZWwgJiYgdG9Ob2RlTGFiZWwgPD0gbmV3VG9Ob2RlTGFiZWwpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goZWRnZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICBHU3Bhbi5wcm90b3R5cGUuZ2V0U3VwcG9ydCA9IGZ1bmN0aW9uIChwcm9qZWN0ZWQpIHtcbiAgICB2YXIgZ3JhcGhNYXAgPSB7fTtcbiAgICBwcm9qZWN0ZWQuZm9yRWFjaChmdW5jdGlvbiAocHJvKSB7XG4gICAgICBpZiAoIWdyYXBoTWFwW3Byby5ncmFwaElkXSkgZ3JhcGhNYXBbcHJvLmdyYXBoSWRdID0gdHJ1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoZ3JhcGhNYXApLmxlbmd0aDtcbiAgfTtcblxuICBHU3Bhbi5wcm90b3R5cGUuZmluZE1pbkxhYmVsID0gZnVuY3Rpb24gKG9iaikge1xuICAgIHZhciBtaW5MYWJlbCA9IHVuZGVmaW5lZDtcbiAgICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goZnVuY3Rpb24gKG5vZGVFZGdlTm9kZUxhYmVsKSB7XG4gICAgICB2YXIgX2EgPSBvYmpbbm9kZUVkZ2VOb2RlTGFiZWxdLFxuICAgICAgICAgIG5vZGVMYWJlbDEgPSBfYS5ub2RlTGFiZWwxLFxuICAgICAgICAgIGVkZ2VMYWJlbCA9IF9hLmVkZ2VMYWJlbCxcbiAgICAgICAgICBub2RlTGFiZWwyID0gX2Eubm9kZUxhYmVsMjtcblxuICAgICAgaWYgKCFtaW5MYWJlbCkge1xuICAgICAgICBtaW5MYWJlbCA9IHtcbiAgICAgICAgICBub2RlTGFiZWwxOiBub2RlTGFiZWwxLFxuICAgICAgICAgIGVkZ2VMYWJlbDogZWRnZUxhYmVsLFxuICAgICAgICAgIG5vZGVMYWJlbDI6IG5vZGVMYWJlbDJcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAobm9kZUxhYmVsMSA8IG1pbkxhYmVsLm5vZGVMYWJlbDEgfHwgbm9kZUxhYmVsMSA9PT0gbWluTGFiZWwubm9kZUxhYmVsMSAmJiBlZGdlTGFiZWwgPCBtaW5MYWJlbC5lZGdlTGFiZWwgfHwgbm9kZUxhYmVsMSA9PT0gbWluTGFiZWwubm9kZUxhYmVsMSAmJiBlZGdlTGFiZWwgPT09IG1pbkxhYmVsLmVkZ2VMYWJlbCAmJiBub2RlTGFiZWwyIDwgbWluTGFiZWwubm9kZUxhYmVsMikge1xuICAgICAgICBtaW5MYWJlbCA9IHtcbiAgICAgICAgICBub2RlTGFiZWwxOiBub2RlTGFiZWwxLFxuICAgICAgICAgIGVkZ2VMYWJlbDogZWRnZUxhYmVsLFxuICAgICAgICAgIG5vZGVMYWJlbDI6IG5vZGVMYWJlbDJcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gbWluTGFiZWw7XG4gIH07XG5cbiAgR1NwYW4ucHJvdG90eXBlLmlzTWluID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgZGZzQ29kZSA9IHRoaXMuZGZzQ29kZTtcbiAgICBpZiAodGhpcy52ZXJib3NlKSBjb25zb2xlLmxvZyhcImlzTWluIGNoZWNraW5nXCIsIGRmc0NvZGUpO1xuICAgIGlmIChkZnNDb2RlLmRmc0VkZ2VMaXN0Lmxlbmd0aCA9PT0gMSkgcmV0dXJuIHRydWU7XG4gICAgdmFyIGRpcmVjdGVkID0gdGhpcy5kaXJlY3RlZDtcbiAgICB2YXIgZ3JhcGggPSBkZnNDb2RlLnRvR3JhcGgoX3N0cnVjdC5WQUNBTlRfR1JBUEhfSUQsIGRpcmVjdGVkKTtcbiAgICB2YXIgbm9kZU1hcCA9IGdyYXBoLm5vZGVNYXA7XG4gICAgdmFyIGRmc0NvZGVNaW4gPSBuZXcgREZTY29kZSgpO1xuICAgIHZhciByb290ID0ge307XG4gICAgZ3JhcGgubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgdmFyIGZvcndhcmRFZGdlcyA9IF90aGlzLmZpbmRGb3J3YXJkUm9vdEVkZ2VzKGdyYXBoLCBub2RlKTtcblxuICAgICAgZm9yd2FyZEVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgdmFyIG90aGVyTm9kZSA9IG5vZGVNYXBbZWRnZS50b107XG4gICAgICAgIHZhciBub2RlRWRnZU5vZGVMYWJlbCA9IFwiXCIuY29uY2F0KG5vZGUubGFiZWwsIFwiLVwiKS5jb25jYXQoZWRnZS5sYWJlbCwgXCItXCIpLmNvbmNhdChvdGhlck5vZGUubGFiZWwpO1xuICAgICAgICBpZiAoIXJvb3Rbbm9kZUVkZ2VOb2RlTGFiZWxdKSByb290W25vZGVFZGdlTm9kZUxhYmVsXSA9IHtcbiAgICAgICAgICBwcm9qZWN0ZWQ6IFtdLFxuICAgICAgICAgIG5vZGVMYWJlbDE6IG5vZGUubGFiZWwsXG4gICAgICAgICAgZWRnZUxhYmVsOiBlZGdlLmxhYmVsLFxuICAgICAgICAgIG5vZGVMYWJlbDI6IG90aGVyTm9kZS5sYWJlbFxuICAgICAgICB9O1xuICAgICAgICB2YXIgcGRmcyA9IHtcbiAgICAgICAgICBncmFwaElkOiBncmFwaC5pZCxcbiAgICAgICAgICBlZGdlOiBlZGdlLFxuICAgICAgICAgIHByZU5vZGU6IG51bGxcbiAgICAgICAgfTtcbiAgICAgICAgcm9vdFtub2RlRWRnZU5vZGVMYWJlbF0ucHJvamVjdGVkLnB1c2gocGRmcyk7XG4gICAgICB9KTtcbiAgICB9KTsgLy8g5q+U6L6DIHJvb3Qg5Lit5q+P5LiA6aG555qEIG5vZGVFZGdlTm9kZUxhYmVsIOWkp+Wwj++8jOaMieeFpyBub2RlTGFiZWwx44CBZWRnZUxhYmXjgIFub2RlTGFiZWwyIOeahOmhuuW6j+avlOi+g1xuXG4gICAgdmFyIG1pbkxhYmVsID0gdGhpcy5maW5kTWluTGFiZWwocm9vdCk7IC8vIGxpbmUgNDE5XG5cbiAgICBpZiAoIW1pbkxhYmVsKSByZXR1cm47XG4gICAgZGZzQ29kZU1pbi5kZnNFZGdlTGlzdC5wdXNoKG5ldyBERlNlZGdlKDAsIDEsIG1pbkxhYmVsLm5vZGVMYWJlbDEsIG1pbkxhYmVsLmVkZ2VMYWJlbCwgbWluTGFiZWwubm9kZUxhYmVsMikpOyAvLyBsaW5lIDQyM1xuXG4gICAgdmFyIHByb2plY3RJc01pbiA9IGZ1bmN0aW9uIHByb2plY3RJc01pbihwcm9qZWN0ZWQpIHtcbiAgICAgIC8vIHJpZ2h0IG1vc3QgcGF0aFxuICAgICAgdmFyIHJtcGF0aCA9IGRmc0NvZGVNaW4uYnVpbGRSbXBhdGgoKTtcbiAgICAgIHZhciBtaW5Ob2RlTGFiZWwgPSBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0WzBdLm5vZGVFZGdlTm9kZUxhYmVsLm5vZGVMYWJlbDE7XG4gICAgICB2YXIgbWF4VG9DID0gZGZzQ29kZU1pbi5kZnNFZGdlTGlzdFtybXBhdGhbMF1dLnRvTm9kZTsgLy8gbm9kZSBpZFxuXG4gICAgICB2YXIgYmFja3dhcmRSb290ID0ge307XG4gICAgICB2YXIgZmxhZyA9IGZhbHNlLFxuICAgICAgICAgIG5ld1RvID0gMDtcbiAgICAgIHZhciBlbmQgPSBkaXJlY3RlZCA/IC0xIDogMDsgLy8g6YGN5Y6G5YiwIDEg6L+Y5piv5YiwIDBcblxuICAgICAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiBfbG9vcF8xKGkpIHtcbiAgICAgICAgaWYgKGZsYWcpIHJldHVybiBcImJyZWFrXCI7IC8vIGxpbmUgNDM1XG5cbiAgICAgICAgcHJvamVjdGVkLmZvckVhY2goZnVuY3Rpb24gKHApIHtcbiAgICAgICAgICB2YXIgaGlzdG9yeSA9IG5ldyBIaXN0b3J5KHApO1xuXG4gICAgICAgICAgdmFyIGJhY2t3YXJkRWRnZSA9IF90aGlzLmZpbmRCYWNrd2FyZEVkZ2UoZ3JhcGgsIGhpc3RvcnkuZWRnZXNbcm1wYXRoW2ldXSwgaGlzdG9yeS5lZGdlc1tybXBhdGhbMF1dLCBoaXN0b3J5KTtcblxuICAgICAgICAgIGlmIChiYWNrd2FyZEVkZ2UpIHtcbiAgICAgICAgICAgIC8vIExpbmUgNDQxXG4gICAgICAgICAgICBpZiAoIWJhY2t3YXJkUm9vdFtiYWNrd2FyZEVkZ2UubGFiZWxdKSB7XG4gICAgICAgICAgICAgIGJhY2t3YXJkUm9vdFtiYWNrd2FyZEVkZ2UubGFiZWxdID0ge1xuICAgICAgICAgICAgICAgIHByb2plY3RlZDogW10sXG4gICAgICAgICAgICAgICAgZWRnZUxhYmVsOiBiYWNrd2FyZEVkZ2UubGFiZWxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYmFja3dhcmRSb290W2JhY2t3YXJkRWRnZS5sYWJlbF0ucHJvamVjdGVkLnB1c2goe1xuICAgICAgICAgICAgICBncmFwaElkOiBncmFwaC5pZCxcbiAgICAgICAgICAgICAgZWRnZTogYmFja3dhcmRSb290LFxuICAgICAgICAgICAgICBwcmVOb2RlOiBwXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIG5ld1RvID0gZGZzQ29kZU1pbi5kZnNFZGdlTGlzdFtybXBhdGhbaV1dLmZyb21Ob2RlO1xuICAgICAgICAgICAgZmxhZyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIGZvciAodmFyIGkgPSBybXBhdGgubGVuZ3RoIC0gMTsgaSA+IGVuZDsgaS0tKSB7XG4gICAgICAgIHZhciBzdGF0ZV8xID0gX2xvb3BfMShpKTtcblxuICAgICAgICBpZiAoc3RhdGVfMSA9PT0gXCJicmVha1wiKSBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKGZsYWcpIHtcbiAgICAgICAgdmFyIG1pbkJhY2t3YXJkRWRnZUxhYmVsID0gX3RoaXMuZmluZE1pbkxhYmVsKGJhY2t3YXJkUm9vdCk7XG5cbiAgICAgICAgZGZzQ29kZU1pbi5kZnNFZGdlTGlzdC5wdXNoKG5ldyBERlNlZGdlKG1heFRvQywgbmV3VG8sIF9zdHJ1Y3QuVkFDQU5UX05PREVfTEFCRUwsIG1pbkJhY2t3YXJkRWRnZUxhYmVsLmVkZ2VMYWJlbCwgX3N0cnVjdC5WQUNBTlRfTk9ERV9MQUJFTCkpO1xuICAgICAgICB2YXIgaWR4XzEgPSBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0Lmxlbmd0aCAtIDE7XG4gICAgICAgIGlmIChfdGhpcy5kZnNDb2RlLmRmc0VkZ2VMaXN0W2lkeF8xXSAhPT0gZGZzQ29kZU1pbi5kZnNFZGdlTGlzdFtpZHhfMV0pIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHByb2plY3RJc01pbihiYWNrd2FyZFJvb3RbbWluQmFja3dhcmRFZGdlTGFiZWwuZWRnZUxhYmVsXS5wcm9qZWN0ZWQpO1xuICAgICAgfVxuXG4gICAgICB2YXIgZm9yd2FyZFJvb3QgPSB7fTtcbiAgICAgIGZsYWcgPSBmYWxzZTtcbiAgICAgIHZhciBuZXdGcm9tID0gMDtcbiAgICAgIHByb2plY3RlZC5mb3JFYWNoKGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHZhciBoaXN0b3J5ID0gbmV3IEhpc3RvcnkocCk7XG5cbiAgICAgICAgdmFyIGZvcndhcmRQdXJlRWRnZXMgPSBfdGhpcy5maW5kRm9yd2FyZFB1cmVFZGdlcyhncmFwaCwgaGlzdG9yeS5lZGdlc1tybXBhdGhbMF1dLCBtaW5Ob2RlTGFiZWwsIGhpc3RvcnkpO1xuXG4gICAgICAgIGlmIChmb3J3YXJkUHVyZUVkZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBmbGFnID0gdHJ1ZTtcbiAgICAgICAgICBuZXdGcm9tID0gbWF4VG9DO1xuICAgICAgICAgIGZvcndhcmRQdXJlRWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgICAgdmFyIGtleSA9IFwiXCIuY29uY2F0KGVkZ2UubGFiZWwsIFwiLVwiKS5jb25jYXQobm9kZU1hcFtlZGdlLnRvXS5sYWJlbCk7XG4gICAgICAgICAgICBpZiAoIWZvcndhcmRSb290W2tleV0pIGZvcndhcmRSb290W2tleV0gPSB7XG4gICAgICAgICAgICAgIHByb2plY3RlZDogW10sXG4gICAgICAgICAgICAgIGVkZ2VMYWJlbDogZWRnZS5sYWJlbCxcbiAgICAgICAgICAgICAgbm9kZUxhYmVsMjogbm9kZU1hcFtlZGdlLnRvXS5sYWJlbFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGZvcndhcmRSb290W2tleV0ucHJvamVjdGVkLnB1c2goe1xuICAgICAgICAgICAgICBncmFwaElkOiBncmFwaC5pZCxcbiAgICAgICAgICAgICAgZWRnZTogZWRnZSxcbiAgICAgICAgICAgICAgcHJlTm9kZTogcFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdmFyIHBhdGhMZW5ndGggPSBybXBhdGgubGVuZ3RoO1xuXG4gICAgICB2YXIgX2xvb3BfMiA9IGZ1bmN0aW9uIF9sb29wXzIoaSkge1xuICAgICAgICBpZiAoZmxhZykgcmV0dXJuIFwiYnJlYWtcIjtcbiAgICAgICAgdmFyIHZhbHVlID0gcm1wYXRoW2ldO1xuICAgICAgICBwcm9qZWN0ZWQuZm9yRWFjaChmdW5jdGlvbiAocCkge1xuICAgICAgICAgIHZhciBoaXN0b3J5ID0gbmV3IEhpc3RvcnkocCk7XG5cbiAgICAgICAgICB2YXIgZm9yd2FyZFJtcGF0aEVkZ2VzID0gX3RoaXMuZmluZEZvcndhcmRSbXBhdGhFZGdlcyhncmFwaCwgaGlzdG9yeS5lZGdlc1t2YWx1ZV0sIG1pbk5vZGVMYWJlbCwgaGlzdG9yeSk7XG5cbiAgICAgICAgICBpZiAoZm9yd2FyZFJtcGF0aEVkZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZsYWcgPSB0cnVlO1xuICAgICAgICAgICAgbmV3RnJvbSA9IGRmc0NvZGVNaW4uZGZzRWRnZUxpc3RbdmFsdWVdLmZyb21Ob2RlO1xuICAgICAgICAgICAgZm9yd2FyZFJtcGF0aEVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICAgICAgdmFyIGtleSA9IFwiXCIuY29uY2F0KGVkZ2UubGFiZWwsIFwiLVwiKS5jb25jYXQobm9kZU1hcFtlZGdlLnRvXS5sYWJlbCk7XG4gICAgICAgICAgICAgIGlmICghZm9yd2FyZFJvb3Rba2V5XSkgZm9yd2FyZFJvb3Rba2V5XSA9IHtcbiAgICAgICAgICAgICAgICBwcm9qZWN0ZWQ6IFtdLFxuICAgICAgICAgICAgICAgIGVkZ2VMYWJlbDogZWRnZS5sYWJlbCxcbiAgICAgICAgICAgICAgICBub2RlTGFiZWwyOiBub2RlTWFwW2VkZ2UudG9dLmxhYmVsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIGZvcndhcmRSb290W2tleV0ucHJvamVjdGVkLnB1c2goe1xuICAgICAgICAgICAgICAgIGdyYXBoSWQ6IGdyYXBoLmlkLFxuICAgICAgICAgICAgICAgIGVkZ2U6IGVkZ2UsXG4gICAgICAgICAgICAgICAgcHJlTm9kZTogcFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9O1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhdGhMZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgc3RhdGVfMiA9IF9sb29wXzIoaSk7XG5cbiAgICAgICAgaWYgKHN0YXRlXzIgPT09IFwiYnJlYWtcIikgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmICghZmxhZykgcmV0dXJuIHRydWU7XG5cbiAgICAgIHZhciBmb3J3YXJkTWluRWRnZU5vZGVMYWJlbCA9IF90aGlzLmZpbmRNaW5MYWJlbChmb3J3YXJkUm9vdCk7XG5cbiAgICAgIGRmc0NvZGVNaW4uZGZzRWRnZUxpc3QucHVzaChuZXcgREZTZWRnZShuZXdGcm9tLCBtYXhUb0MgKyAxLCBfc3RydWN0LlZBQ0FOVF9OT0RFX0xBQkVMLCBmb3J3YXJkTWluRWRnZU5vZGVMYWJlbC5lZGdlTGFiZWwsIGZvcndhcmRNaW5FZGdlTm9kZUxhYmVsLm5vZGVMYWJlbDIpKTtcbiAgICAgIHZhciBpZHggPSBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0Lmxlbmd0aCAtIDE7XG4gICAgICBpZiAoZGZzQ29kZS5kZnNFZGdlTGlzdFtpZHhdICE9PSBkZnNDb2RlTWluLmRmc0VkZ2VMaXN0W2lkeF0pIHJldHVybiBmYWxzZTtcbiAgICAgIHJldHVybiBwcm9qZWN0SXNNaW4oZm9yd2FyZFJvb3RbXCJcIi5jb25jYXQoZm9yd2FyZE1pbkVkZ2VOb2RlTGFiZWwuZWRnZUxhYmVsLCBcIi1cIikuY29uY2F0KGZvcndhcmRNaW5FZGdlTm9kZUxhYmVsLm5vZGVMYWJlbDIpXS5wcm9qZWN0ZWQpO1xuICAgIH07XG5cbiAgICB2YXIga2V5ID0gXCJcIi5jb25jYXQobWluTGFiZWwubm9kZUxhYmVsMSwgXCItXCIpLmNvbmNhdChtaW5MYWJlbC5lZGdlTGFiZWwsIFwiLVwiKS5jb25jYXQobWluTGFiZWwubm9kZUxhYmVsMik7XG4gICAgcmV0dXJuIHByb2plY3RJc01pbihyb290W2tleV0ucHJvamVjdGVkKTtcbiAgfTtcblxuICBHU3Bhbi5wcm90b3R5cGUucmVwb3J0ID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLmRmc0NvZGUuZ2V0Tm9kZU51bSgpIDwgdGhpcy5taW5Ob2RlTnVtKSByZXR1cm47XG4gICAgdGhpcy5jb3VudGVyKys7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5kZnNDb2RlLnRvR3JhcGgodGhpcy5jb3VudGVyLCB0aGlzLmRpcmVjdGVkKTtcbiAgICB0aGlzLmZyZXF1ZW50U3ViZ3JhcGhzLnB1c2goKDAsIF91dGlsLmNsb25lKShncmFwaCkpO1xuICB9O1xuXG4gIEdTcGFuLnByb3RvdHlwZS5zdWJHcmFwaE1pbmluZyA9IGZ1bmN0aW9uIChwcm9qZWN0ZWQpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIHN1cHBvcnQgPSB0aGlzLmdldFN1cHBvcnQocHJvamVjdGVkKTtcbiAgICBpZiAoc3VwcG9ydCA8IHRoaXMubWluU3VwcG9ydCkgcmV0dXJuO1xuICAgIGlmICghdGhpcy5pc01pbigpKSByZXR1cm47XG4gICAgdGhpcy5yZXBvcnQoKTtcbiAgICB2YXIgbm9kZU51bSA9IHRoaXMuZGZzQ29kZS5nZXROb2RlTnVtKCk7XG4gICAgdmFyIHJtcGF0aCA9IHRoaXMuZGZzQ29kZS5idWlsZFJtcGF0aCgpO1xuICAgIHZhciBtYXhUb0MgPSB0aGlzLmRmc0NvZGUuZGZzRWRnZUxpc3Rbcm1wYXRoWzBdXS50b05vZGU7XG4gICAgdmFyIG1pbk5vZGVMYWJlbCA9IHRoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdFswXS5ub2RlRWRnZU5vZGVMYWJlbC5ub2RlTGFiZWwxO1xuICAgIHZhciBmb3J3YXJkUm9vdCA9IHt9O1xuICAgIHZhciBiYWNrd2FyZFJvb3QgPSB7fTtcbiAgICBwcm9qZWN0ZWQuZm9yRWFjaChmdW5jdGlvbiAocCkge1xuICAgICAgdmFyIGdyYXBoID0gX3RoaXMuZ3JhcGhzW3AuZ3JhcGhJZF07XG4gICAgICB2YXIgbm9kZU1hcCA9IGdyYXBoLm5vZGVNYXA7XG4gICAgICB2YXIgaGlzdG9yeSA9IG5ldyBIaXN0b3J5KHApOyAvLyBiYWNrd2FyZCBMaW5lIDUyNlxuXG4gICAgICBmb3IgKHZhciBpID0gcm1wYXRoLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHZhciBiYWNrd2FyZEVkZ2UgPSBfdGhpcy5maW5kQmFja3dhcmRFZGdlKGdyYXBoLCBoaXN0b3J5LmVkZ2VzW3JtcGF0aFtpXV0sIGhpc3RvcnkuZWRnZXNbcm1wYXRoWzBdXSwgaGlzdG9yeSk7XG5cbiAgICAgICAgaWYgKGJhY2t3YXJkRWRnZSkge1xuICAgICAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChfdGhpcy5kZnNDb2RlLmRmc0VkZ2VMaXN0W3JtcGF0aFtpXV0uZnJvbU5vZGUsIFwiLVwiKS5jb25jYXQoYmFja3dhcmRFZGdlLmxhYmVsKTtcbiAgICAgICAgICBpZiAoIWJhY2t3YXJkUm9vdFtrZXldKSBiYWNrd2FyZFJvb3Rba2V5XSA9IHtcbiAgICAgICAgICAgIHByb2plY3RlZDogW10sXG4gICAgICAgICAgICB0b05vZGVJZDogX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdFtybXBhdGhbaV1dLmZyb21Ob2RlLFxuICAgICAgICAgICAgZWRnZUxhYmVsOiBiYWNrd2FyZEVkZ2UubGFiZWxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGJhY2t3YXJkUm9vdFtrZXldLnByb2plY3RlZC5wdXNoKHtcbiAgICAgICAgICAgIGdyYXBoSWQ6IHAuZ3JhcGhJZCxcbiAgICAgICAgICAgIGVkZ2U6IGJhY2t3YXJkRWRnZSxcbiAgICAgICAgICAgIHByZU5vZGU6IHBcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBwdXJlIGZvcndhcmRcblxuXG4gICAgICBpZiAobm9kZU51bSA+PSBfdGhpcy5tYXhOb2RlTnVtKSByZXR1cm47XG5cbiAgICAgIHZhciBmb3J3YXJkUHVyZUVkZ2VzID0gX3RoaXMuZmluZEZvcndhcmRQdXJlRWRnZXMoZ3JhcGgsIGhpc3RvcnkuZWRnZXNbcm1wYXRoWzBdXSwgbWluTm9kZUxhYmVsLCBoaXN0b3J5KTtcblxuICAgICAgZm9yd2FyZFB1cmVFZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChtYXhUb0MsIFwiLVwiKS5jb25jYXQoZWRnZS5sYWJlbCwgXCItXCIpLmNvbmNhdChub2RlTWFwW2VkZ2UudG9dLmxhYmVsKTtcbiAgICAgICAgaWYgKCFmb3J3YXJkUm9vdFtrZXldKSBmb3J3YXJkUm9vdFtrZXldID0ge1xuICAgICAgICAgIHByb2plY3RlZDogW10sXG4gICAgICAgICAgZnJvbU5vZGVJZDogbWF4VG9DLFxuICAgICAgICAgIGVkZ2VMYWJlbDogZWRnZS5sYWJlbCxcbiAgICAgICAgICBub2RlTGFiZWwyOiBub2RlTWFwW2VkZ2UudG9dLmxhYmVsXG4gICAgICAgIH07XG4gICAgICAgIGZvcndhcmRSb290W2tleV0ucHJvamVjdGVkLnB1c2goe1xuICAgICAgICAgIGdyYXBoSWQ6IHAuZ3JhcGhJZCxcbiAgICAgICAgICBlZGdlOiBlZGdlLFxuICAgICAgICAgIHByZU5vZGU6IHBcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgdmFyIF9sb29wXzMgPSBmdW5jdGlvbiBfbG9vcF8zKGkpIHtcbiAgICAgICAgdmFyIGZvcndhcmRSbXBhdGhFZGdlcyA9IF90aGlzLmZpbmRGb3J3YXJkUm1wYXRoRWRnZXMoZ3JhcGgsIGhpc3RvcnkuZWRnZXNbcm1wYXRoW2ldXSwgbWluTm9kZUxhYmVsLCBoaXN0b3J5KTtcblxuICAgICAgICBmb3J3YXJkUm1wYXRoRWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChfdGhpcy5kZnNDb2RlLmRmc0VkZ2VMaXN0W3JtcGF0aFtpXV0uZnJvbU5vZGUsIFwiLVwiKS5jb25jYXQoZWRnZS5sYWJlbCwgXCItXCIpLmNvbmNhdChub2RlTWFwW2VkZ2UudG9dLmxhYmVsKTtcbiAgICAgICAgICBpZiAoIWZvcndhcmRSb290W2tleV0pIGZvcndhcmRSb290W2tleV0gPSB7XG4gICAgICAgICAgICBwcm9qZWN0ZWQ6IFtdLFxuICAgICAgICAgICAgZnJvbU5vZGVJZDogX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdFtybXBhdGhbaV1dLmZyb21Ob2RlLFxuICAgICAgICAgICAgZWRnZUxhYmVsOiBlZGdlLmxhYmVsLFxuICAgICAgICAgICAgbm9kZUxhYmVsMjogbm9kZU1hcFtlZGdlLnRvXS5sYWJlbFxuICAgICAgICAgIH07XG4gICAgICAgICAgZm9yd2FyZFJvb3Rba2V5XS5wcm9qZWN0ZWQucHVzaCh7XG4gICAgICAgICAgICBncmFwaElkOiBwLmdyYXBoSWQsXG4gICAgICAgICAgICBlZGdlOiBlZGdlLFxuICAgICAgICAgICAgcHJlTm9kZTogcFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH07IC8vIHJtcGF0aCBmb3J3YXJkXG5cblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBybXBhdGgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgX2xvb3BfMyhpKTtcbiAgICAgIH1cbiAgICB9KTsgLy8gYmFja3dhcmRcblxuICAgIE9iamVjdC5rZXlzKGJhY2t3YXJkUm9vdCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICB2YXIgX2EgPSBiYWNrd2FyZFJvb3Rba2V5XSxcbiAgICAgICAgICB0b05vZGVJZCA9IF9hLnRvTm9kZUlkLFxuICAgICAgICAgIGVkZ2VMYWJlbCA9IF9hLmVkZ2VMYWJlbDtcblxuICAgICAgX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdC5wdXNoKG5ldyBERlNlZGdlKG1heFRvQywgdG9Ob2RlSWQsIFwiLTFcIiwgZWRnZUxhYmVsLCBcIi0xXCIpKTtcblxuICAgICAgX3RoaXMuc3ViR3JhcGhNaW5pbmcoYmFja3dhcmRSb290W2tleV0ucHJvamVjdGVkKTtcblxuICAgICAgX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdC5wb3AoKTtcbiAgICB9KTsgLy8gZm9yd2FyZFxuXG4gICAgT2JqZWN0LmtleXMoZm9yd2FyZFJvb3QpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgdmFyIF9hID0gZm9yd2FyZFJvb3Rba2V5XSxcbiAgICAgICAgICBmcm9tTm9kZUlkID0gX2EuZnJvbU5vZGVJZCxcbiAgICAgICAgICBlZGdlTGFiZWwgPSBfYS5lZGdlTGFiZWwsXG4gICAgICAgICAgbm9kZUxhYmVsMiA9IF9hLm5vZGVMYWJlbDI7XG5cbiAgICAgIF90aGlzLmRmc0NvZGUuZGZzRWRnZUxpc3QucHVzaChuZXcgREZTZWRnZShmcm9tTm9kZUlkLCBtYXhUb0MgKyAxLCBfc3RydWN0LlZBQ0FOVF9OT0RFX0xBQkVMLCBlZGdlTGFiZWwsIG5vZGVMYWJlbDIpKTtcblxuICAgICAgX3RoaXMuc3ViR3JhcGhNaW5pbmcoZm9yd2FyZFJvb3Rba2V5XS5wcm9qZWN0ZWQpO1xuXG4gICAgICBfdGhpcy5kZnNDb2RlLmRmc0VkZ2VMaXN0LnBvcCgpO1xuICAgIH0pO1xuICB9O1xuXG4gIEdTcGFuLnByb3RvdHlwZS5nZW5lcmF0ZTFFZGdlRnJlcXVlbnRTdWJHcmFwaHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGdyYXBocyA9IHRoaXMuZ3JhcGhzO1xuICAgIHZhciBkaXJlY3RlZCA9IHRoaXMuZGlyZWN0ZWQ7XG4gICAgdmFyIG1pblN1cHBvcnQgPSB0aGlzLm1pblN1cHBvcnQ7XG4gICAgdmFyIGZyZXF1ZW50U2l6ZTFTdWJncmFwaHMgPSB0aGlzLmZyZXF1ZW50U2l6ZTFTdWJncmFwaHM7XG4gICAgdmFyIG5vZGVMYWJlbENvdW50ZXIgPSB7fSxcbiAgICAgICAgbm9kZUVkZ2VOb2RlQ291bnRlciA9IHt9OyAvLyDkv53lrZjlkITkuKrlm77lkozlkIToh6roioLngrnnmoTlhbPns7sgbWFw77yMa2V5IOagvOW8j+S4uiBncmFwaEtleS1ub2Rl57G75Z6LXG5cbiAgICB2YXIgbm9kZUxhYmxlQ291bnRlZCA9IHt9OyAvLyDkv53lrZjlkITkuKrlm77lkozlkIToh6rovrnnmoTlhbPns7sgbWFw77yMa2V5IOagvOW8j+S4uiBncmFwaEtleS1mcm9tTm9kZeexu+Weiy1lZGdl57G75Z6LLXRvTm9kZeexu+Wei1xuXG4gICAgdmFyIG5vZGVFZGdlTm9kZUxhYmVsQ291bnRlZCA9IHt9O1xuICAgIE9iamVjdC5rZXlzKGdyYXBocykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAvLyBMaW5lIDI3MVxuICAgICAgdmFyIGdyYXBoID0gZ3JhcGhzW2tleV07XG4gICAgICB2YXIgbm9kZU1hcCA9IGdyYXBoLm5vZGVNYXA7IC8vIOmBjeWOhuiKgueCue+8jOiusOW9leWvueW6lOWbviDkuI4g5q+P5Liq6IqC54K555qEIGxhYmVsIOWIsCBub2RlTGFibGVDb3VudGVkXG5cbiAgICAgIGdyYXBoLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUsIGkpIHtcbiAgICAgICAgLy8gTGluZSAyNzJcbiAgICAgICAgdmFyIG5vZGVMYWJlbCA9IG5vZGUubGFiZWw7XG4gICAgICAgIHZhciBncmFwaE5vZGVLZXkgPSBcIlwiLmNvbmNhdChrZXksIFwiLVwiKS5jb25jYXQobm9kZUxhYmVsKTtcblxuICAgICAgICBpZiAoIW5vZGVMYWJsZUNvdW50ZWRbZ3JhcGhOb2RlS2V5XSkge1xuICAgICAgICAgIHZhciBjb3VudGVyID0gbm9kZUxhYmVsQ291bnRlcltub2RlTGFiZWxdIHx8IDA7XG4gICAgICAgICAgY291bnRlcisrO1xuICAgICAgICAgIG5vZGVMYWJlbENvdW50ZXJbbm9kZUxhYmVsXSA9IGNvdW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICBub2RlTGFibGVDb3VudGVkW2dyYXBoTm9kZUtleV0gPSB7XG4gICAgICAgICAgZ3JhcGhLZXk6IGtleSxcbiAgICAgICAgICBsYWJlbDogbm9kZUxhYmVsXG4gICAgICAgIH07IC8vIOmBjeWOhuivpeiKgueCueeahOaJgOaciei+ue+8jOiusOW9leWQhOS4quWbvuWSjOWQhOiHqui+ueeahOWFs+ezu+WIsCBub2RlRWRnZU5vZGVMYWJlbENvdW50ZWQuIExpbmUgMjc2XG5cbiAgICAgICAgbm9kZS5lZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgICAgdmFyIG5vZGVMYWJlbDEgPSBub2RlTGFiZWw7XG4gICAgICAgICAgdmFyIG5vZGVMYWJlbDIgPSBub2RlTWFwW2VkZ2UudG9dLmxhYmVsO1xuXG4gICAgICAgICAgaWYgKCFkaXJlY3RlZCAmJiBub2RlTGFiZWwxID4gbm9kZUxhYmVsMikge1xuICAgICAgICAgICAgdmFyIHRtcCA9IG5vZGVMYWJlbDI7XG4gICAgICAgICAgICBub2RlTGFiZWwyID0gbm9kZUxhYmVsMTtcbiAgICAgICAgICAgIG5vZGVMYWJlbDEgPSB0bXA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIGVkZ2VMYWJlbCA9IGVkZ2UubGFiZWw7XG4gICAgICAgICAgdmFyIGdyYXBoTm9kZUVkZ2VOb2RlS2V5ID0gXCJcIi5jb25jYXQoa2V5LCBcIi1cIikuY29uY2F0KG5vZGVMYWJlbDEsIFwiLVwiKS5jb25jYXQoZWRnZUxhYmVsLCBcIi1cIikuY29uY2F0KG5vZGVMYWJlbDIpO1xuICAgICAgICAgIHZhciBub2RlRWRnZU5vZGVLZXkgPSBcIlwiLmNvbmNhdChub2RlTGFiZWwxLCBcIi1cIikuY29uY2F0KGVkZ2VMYWJlbCwgXCItXCIpLmNvbmNhdChub2RlTGFiZWwyKTtcblxuICAgICAgICAgIGlmICghbm9kZUVkZ2VOb2RlQ291bnRlcltub2RlRWRnZU5vZGVLZXldKSB7XG4gICAgICAgICAgICB2YXIgY291bnRlciA9IG5vZGVFZGdlTm9kZUNvdW50ZXJbbm9kZUVkZ2VOb2RlS2V5XSB8fCAwO1xuICAgICAgICAgICAgY291bnRlcisrO1xuICAgICAgICAgICAgbm9kZUVkZ2VOb2RlQ291bnRlcltub2RlRWRnZU5vZGVLZXldID0gY291bnRlcjsgLy8gTGluZTI4MVxuICAgICAgICAgIH1cblxuICAgICAgICAgIG5vZGVFZGdlTm9kZUxhYmVsQ291bnRlZFtncmFwaE5vZGVFZGdlTm9kZUtleV0gPSB7XG4gICAgICAgICAgICBncmFwaElkOiBrZXksXG4gICAgICAgICAgICBub2RlTGFiZWwxOiBub2RlTGFiZWwxLFxuICAgICAgICAgICAgZWRnZUxhYmVsOiBlZGdlTGFiZWwsXG4gICAgICAgICAgICBub2RlTGFiZWwyOiBub2RlTGFiZWwyXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTsgLy8g6K6h566X6aKR57mB55qE6IqC54K5XG5cbiAgICBPYmplY3Qua2V5cyhub2RlTGFiZWxDb3VudGVyKS5mb3JFYWNoKGZ1bmN0aW9uIChsYWJlbCkge1xuICAgICAgdmFyIGNvdW50ID0gbm9kZUxhYmVsQ291bnRlcltsYWJlbF07XG4gICAgICBpZiAoY291bnQgPCBtaW5TdXBwb3J0KSByZXR1cm47XG4gICAgICB2YXIgZyA9IHtcbiAgICAgICAgbm9kZXM6IFtdLFxuICAgICAgICBlZGdlczogW11cbiAgICAgIH07XG4gICAgICBnLm5vZGVzLnB1c2goe1xuICAgICAgICBpZDogXCIwXCIsXG4gICAgICAgIGxhYmVsOiBsYWJlbFxuICAgICAgfSk7XG4gICAgICBmcmVxdWVudFNpemUxU3ViZ3JhcGhzLnB1c2goZyk7IC8vIGlmIChtaW5Ob2RlTnVtIDw9IDEpIHJlcG9ydFNpemUxIFRPRE9cbiAgICB9KTtcbiAgICByZXR1cm4gZnJlcXVlbnRTaXplMVN1YmdyYXBocztcbiAgfTtcblxuICBHU3Bhbi5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7IC8vIC0tLS0tLS0tIOesrOS4gOatpSwgX2dlbmVyYXRlXzFlZGdlX2ZyZXF1ZW50X3N1YmdyYXBoc++8mumikee5geeahOWNleS4quiKgueCuS0tLS0tLS1cblxuXG4gICAgdGhpcy5mcmVxdWVudFNpemUxU3ViZ3JhcGhzID0gdGhpcy5nZW5lcmF0ZTFFZGdlRnJlcXVlbnRTdWJHcmFwaHMoKTtcbiAgICBpZiAodGhpcy5tYXhOb2RlTnVtIDwgMikgcmV0dXJuO1xuICAgIHZhciBncmFwaHMgPSB0aGlzLmdyYXBocztcbiAgICB2YXIgZGlyZWN0ZWQgPSB0aGlzLmRpcmVjdGVkOyAvLyBQREZTIOaVsOe7hOeahCBtYXAgTGluZSAzMDRcblxuICAgIHZhciByb290ID0ge307XG4gICAgT2JqZWN0LmtleXMoZ3JhcGhzKS5mb3JFYWNoKGZ1bmN0aW9uIChncmFwaElkKSB7XG4gICAgICB2YXIgZ3JhcGggPSBncmFwaHNbZ3JhcGhJZF07XG4gICAgICB2YXIgbm9kZU1hcCA9IGdyYXBoLm5vZGVNYXA7IC8vIExpbmUgMzA2XG5cbiAgICAgIGdyYXBoLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgdmFyIGZvcndhcmRSb290RWRnZXMgPSBfdGhpcy5maW5kRm9yd2FyZFJvb3RFZGdlcyhncmFwaCwgbm9kZSk7IC8vIExpbmUgMzA4XG5cblxuICAgICAgICBmb3J3YXJkUm9vdEVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICB2YXIgdG9Ob2RlID0gbm9kZU1hcFtlZGdlLnRvXTtcbiAgICAgICAgICB2YXIgbm9kZUVkZ2VOb2RlTGFiZWwgPSBcIlwiLmNvbmNhdChub2RlLmxhYmVsLCBcIi1cIikuY29uY2F0KGVkZ2UubGFiZWwsIFwiLVwiKS5jb25jYXQodG9Ob2RlLmxhYmVsKTtcbiAgICAgICAgICBpZiAoIXJvb3Rbbm9kZUVkZ2VOb2RlTGFiZWxdKSByb290W25vZGVFZGdlTm9kZUxhYmVsXSA9IHtcbiAgICAgICAgICAgIHByb2plY3RlZDogW10sXG4gICAgICAgICAgICBub2RlTGFiZWwxOiBub2RlLmxhYmVsLFxuICAgICAgICAgICAgZWRnZUxhYmVsOiBlZGdlLmxhYmVsLFxuICAgICAgICAgICAgbm9kZUxhYmVsMjogdG9Ob2RlLmxhYmVsXG4gICAgICAgICAgfTtcbiAgICAgICAgICB2YXIgcGRmcyA9IHtcbiAgICAgICAgICAgIGdyYXBoSWQ6IGdyYXBoSWQsXG4gICAgICAgICAgICBlZGdlOiBlZGdlLFxuICAgICAgICAgICAgcHJlTm9kZTogbnVsbFxuICAgICAgICAgIH07XG4gICAgICAgICAgcm9vdFtub2RlRWRnZU5vZGVMYWJlbF0ucHJvamVjdGVkLnB1c2gocGRmcyk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7IC8vIExpbmUgMzEzXG5cbiAgICBPYmplY3Qua2V5cyhyb290KS5mb3JFYWNoKGZ1bmN0aW9uIChub2RlRWRnZU5vZGVMYWJlbCkge1xuICAgICAgdmFyIF9hID0gcm9vdFtub2RlRWRnZU5vZGVMYWJlbF0sXG4gICAgICAgICAgcHJvamVjdGVkID0gX2EucHJvamVjdGVkLFxuICAgICAgICAgIG5vZGVMYWJlbDEgPSBfYS5ub2RlTGFiZWwxLFxuICAgICAgICAgIGVkZ2VMYWJlbCA9IF9hLmVkZ2VMYWJlbCxcbiAgICAgICAgICBub2RlTGFiZWwyID0gX2Eubm9kZUxhYmVsMjtcblxuICAgICAgX3RoaXMuZGZzQ29kZS5kZnNFZGdlTGlzdC5wdXNoKG5ldyBERlNlZGdlKDAsIDEsIG5vZGVMYWJlbDEsIGVkZ2VMYWJlbCwgbm9kZUxhYmVsMikpO1xuXG4gICAgICBfdGhpcy5zdWJHcmFwaE1pbmluZyhwcm9qZWN0ZWQpO1xuXG4gICAgICBfdGhpcy5kZnNDb2RlLmRmc0VkZ2VMaXN0LnBvcCgpO1xuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiBHU3Bhbjtcbn0oKTtcblxudmFyIGZvcm1hdEdyYXBocyA9IGZ1bmN0aW9uIGZvcm1hdEdyYXBocyhncmFwaHMsIGRpcmVjdGVkLCBub2RlTGFiZWxQcm9wLCBlZGdlTGFiZWxQcm9wKSB7XG4gIHZhciByZXN1bHQgPSB7fTtcbiAgT2JqZWN0LmtleXMoZ3JhcGhzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXksIGkpIHtcbiAgICB2YXIgZ3JhcGggPSBncmFwaHNba2V5XTtcbiAgICB2YXIgZkdyYXBoID0gbmV3IF9zdHJ1Y3QuR3JhcGgoaSwgdHJ1ZSwgZGlyZWN0ZWQpO1xuICAgIHZhciBub2RlSWR4TWFwID0ge307XG4gICAgZ3JhcGgubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaikge1xuICAgICAgZkdyYXBoLmFkZE5vZGUoaiwgbm9kZVtub2RlTGFiZWxQcm9wXSk7XG4gICAgICBub2RlSWR4TWFwW25vZGUuaWRdID0gajtcbiAgICB9KTtcbiAgICBncmFwaC5lZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlLCBrKSB7XG4gICAgICB2YXIgc291cmNlSWR4ID0gbm9kZUlkeE1hcFtlZGdlLnNvdXJjZV07XG4gICAgICB2YXIgdGFyZ2V0SWR4ID0gbm9kZUlkeE1hcFtlZGdlLnRhcmdldF07XG4gICAgICBmR3JhcGguYWRkRWRnZSgtMSwgc291cmNlSWR4LCB0YXJnZXRJZHgsIGVkZ2VbZWRnZUxhYmVsUHJvcF0pO1xuICAgIH0pO1xuICAgIGlmIChmR3JhcGggJiYgZkdyYXBoLmdldE5vZGVOdW0oKSkgcmVzdWx0W2ZHcmFwaC5pZF0gPSBmR3JhcGg7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxudmFyIHRvR3JhcGhEYXRhcyA9IGZ1bmN0aW9uIHRvR3JhcGhEYXRhcyhncmFwaHMsIG5vZGVMYWJlbFByb3AsIGVkZ2VMYWJlbFByb3ApIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBncmFwaHMuZm9yRWFjaChmdW5jdGlvbiAoZ3JhcGgpIHtcbiAgICB2YXIgZ3JhcGhEYXRhID0ge1xuICAgICAgbm9kZXM6IFtdLFxuICAgICAgZWRnZXM6IFtdXG4gICAgfTtcbiAgICBncmFwaC5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICB2YXIgX2E7XG5cbiAgICAgIGdyYXBoRGF0YS5ub2Rlcy5wdXNoKChfYSA9IHtcbiAgICAgICAgaWQ6IFwiXCIuY29uY2F0KG5vZGUuaWQpXG4gICAgICB9LCBfYVtub2RlTGFiZWxQcm9wXSA9IG5vZGUubGFiZWwsIF9hKSk7XG4gICAgfSk7XG4gICAgZ3JhcGguZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgdmFyIF9hO1xuXG4gICAgICBncmFwaERhdGEuZWRnZXMucHVzaCgoX2EgPSB7XG4gICAgICAgIHNvdXJjZTogXCJcIi5jb25jYXQoZWRnZS5mcm9tKSxcbiAgICAgICAgdGFyZ2V0OiBcIlwiLmNvbmNhdChlZGdlLnRvKVxuICAgICAgfSwgX2FbZWRnZUxhYmVsUHJvcF0gPSBlZGdlLmxhYmVsLCBfYSkpO1xuICAgIH0pO1xuICAgIHJlc3VsdC5wdXNoKGdyYXBoRGF0YSk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxudmFyIERFRkFVTFRfTEFCRUxfTkFNRSA9IFwiY2x1c3RlclwiO1xuLyoqXG4gKiBnU3BhbiDpopHnuYHlrZDlm77orqHnrpfnrpfms5XvvIhmcmVxdWVudCBncmFwaCBtaW5pbmfvvIlcbiAqIEBwYXJhbSBwYXJhbXMg5Y+C5pWwXG4gKi9cblxudmFyIGdTcGFuID0gZnVuY3Rpb24gZ1NwYW4ocGFyYW1zKSB7XG4gIC8vIC0tLS0tLS0g5bCG5Zu+5pWw5o2uIEdyYXBoRGF0YSDnmoQgbWFwIOi9rOaNouS4uuagvOW8jyAtLS0tLS0tXG4gIHZhciBncmFwaHMgPSBwYXJhbXMuZ3JhcGhzLFxuICAgICAgX2EgPSBwYXJhbXMuZGlyZWN0ZWQsXG4gICAgICBkaXJlY3RlZCA9IF9hID09PSB2b2lkIDAgPyBmYWxzZSA6IF9hLFxuICAgICAgX2IgPSBwYXJhbXMubm9kZUxhYmVsUHJvcCxcbiAgICAgIG5vZGVMYWJlbFByb3AgPSBfYiA9PT0gdm9pZCAwID8gREVGQVVMVF9MQUJFTF9OQU1FIDogX2IsXG4gICAgICBfYyA9IHBhcmFtcy5lZGdlTGFiZWxQcm9wLFxuICAgICAgZWRnZUxhYmVsUHJvcCA9IF9jID09PSB2b2lkIDAgPyBERUZBVUxUX0xBQkVMX05BTUUgOiBfYztcbiAgdmFyIGZvcm1hdHRlZEdyYXBocyA9IGZvcm1hdEdyYXBocyhncmFwaHMsIGRpcmVjdGVkLCBub2RlTGFiZWxQcm9wLCBlZGdlTGFiZWxQcm9wKTtcbiAgdmFyIG1pblN1cHBvcnQgPSBwYXJhbXMubWluU3VwcG9ydCxcbiAgICAgIG1heE5vZGVOdW0gPSBwYXJhbXMubWF4Tm9kZU51bSxcbiAgICAgIG1pbk5vZGVOdW0gPSBwYXJhbXMubWluTm9kZU51bSxcbiAgICAgIHZlcmJvc2UgPSBwYXJhbXMudmVyYm9zZSxcbiAgICAgIHRvcCA9IHBhcmFtcy50b3A7IC8vIC0tLS0tLS0g5Yid5aeL5YyW5LiO5omn6KGM566X5rOVIC0tLS0tLS1cblxuICB2YXIgYWxnb1BhcmFtcyA9IHtcbiAgICBncmFwaHM6IGZvcm1hdHRlZEdyYXBocyxcbiAgICBtaW5TdXBwb3J0OiBtaW5TdXBwb3J0LFxuICAgIG1heE5vZGVOdW06IG1heE5vZGVOdW0sXG4gICAgbWluTm9kZU51bTogbWluTm9kZU51bSxcbiAgICB0b3A6IHRvcCxcbiAgICB2ZXJib3NlOiB2ZXJib3NlLFxuICAgIGRpcmVjdGVkOiBkaXJlY3RlZFxuICB9O1xuICB2YXIgY2FsY3VsYXRvciA9IG5ldyBHU3BhbihhbGdvUGFyYW1zKTtcbiAgY2FsY3VsYXRvci5ydW4oKTtcbiAgdmFyIHJlc3VsdCA9IHRvR3JhcGhEYXRhcyhjYWxjdWxhdG9yLmZyZXF1ZW50U3ViZ3JhcGhzLCBub2RlTGFiZWxQcm9wLCBlZGdlTGFiZWxQcm9wKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbnZhciBfZGVmYXVsdCA9IGdTcGFuO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/gSpan/gSpan.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/gSpan/struct.js":
/*!**********************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/gSpan/struct.js ***!
\**********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.VACANT_NODE_LABEL = exports.VACANT_NODE_ID = exports.VACANT_GRAPH_ID = exports.VACANT_EDGE_LABEL = exports.VACANT_EDGE_ID = exports.Node = exports.Graph = exports.Edge = exports.AUTO_EDGE_ID = void 0;\nvar VACANT_EDGE_ID = -1;\nexports.VACANT_EDGE_ID = VACANT_EDGE_ID;\nvar VACANT_NODE_ID = -1;\nexports.VACANT_NODE_ID = VACANT_NODE_ID;\nvar VACANT_EDGE_LABEL = \"-1\";\nexports.VACANT_EDGE_LABEL = VACANT_EDGE_LABEL;\nvar VACANT_NODE_LABEL = \"-1\";\nexports.VACANT_NODE_LABEL = VACANT_NODE_LABEL;\nvar VACANT_GRAPH_ID = -1;\nexports.VACANT_GRAPH_ID = VACANT_GRAPH_ID;\nvar AUTO_EDGE_ID = \"-1\";\nexports.AUTO_EDGE_ID = AUTO_EDGE_ID;\n\nvar Edge =\n/** @class */\nfunction () {\n function Edge(id, from, to, label) {\n if (id === void 0) {\n id = VACANT_EDGE_ID;\n }\n\n if (from === void 0) {\n from = VACANT_NODE_ID;\n }\n\n if (to === void 0) {\n to = VACANT_NODE_ID;\n }\n\n if (label === void 0) {\n label = VACANT_EDGE_LABEL;\n }\n\n this.id = id;\n this.from = from;\n this.to = to;\n this.label = label;\n }\n\n return Edge;\n}();\n\nexports.Edge = Edge;\n\nvar Node =\n/** @class */\nfunction () {\n function Node(id, label) {\n if (id === void 0) {\n id = VACANT_NODE_ID;\n }\n\n if (label === void 0) {\n label = VACANT_NODE_LABEL;\n }\n\n this.id = id;\n this.label = label;\n this.edges = [];\n this.edgeMap = {};\n }\n\n Node.prototype.addEdge = function (edge) {\n this.edges.push(edge);\n this.edgeMap[edge.id] = edge;\n };\n\n return Node;\n}();\n\nexports.Node = Node;\n\nvar Graph =\n/** @class */\nfunction () {\n function Graph(id, edgeIdAutoIncrease, directed) {\n if (id === void 0) {\n id = VACANT_NODE_ID;\n }\n\n if (edgeIdAutoIncrease === void 0) {\n edgeIdAutoIncrease = true;\n }\n\n if (directed === void 0) {\n directed = false;\n }\n\n this.id = id;\n this.edgeIdAutoIncrease = edgeIdAutoIncrease;\n this.edges = [];\n this.nodes = [];\n this.nodeMap = {};\n this.edgeMap = {};\n this.nodeLabelMap = {};\n this.edgeLabelMap = {};\n this.counter = 0;\n this.directed = directed;\n }\n\n Graph.prototype.getNodeNum = function () {\n return this.nodes.length;\n };\n\n Graph.prototype.addNode = function (id, label) {\n if (this.nodeMap[id]) return;\n var node = new Node(id, label);\n this.nodes.push(node);\n this.nodeMap[id] = node;\n if (!this.nodeLabelMap[label]) this.nodeLabelMap[label] = [];\n this.nodeLabelMap[label].push(id);\n };\n\n Graph.prototype.addEdge = function (id, from, to, label) {\n if (this.edgeIdAutoIncrease || id === undefined) id = this.counter++;\n if (this.nodeMap[from] && this.nodeMap[to] && this.nodeMap[to].edgeMap[id]) return;\n var edge = new Edge(id, from, to, label);\n this.edges.push(edge);\n this.edgeMap[id] = edge;\n this.nodeMap[from].addEdge(edge);\n if (!this.edgeLabelMap[label]) this.edgeLabelMap[label] = [];\n this.edgeLabelMap[label].push(edge);\n\n if (!this.directed) {\n var rEdge = new Edge(id, to, from, label);\n this.nodeMap[to].addEdge(rEdge);\n this.edgeLabelMap[label].push(rEdge);\n }\n };\n\n return Graph;\n}();\n\nexports.Graph = Graph;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9nU3Bhbi9zdHJ1Y3QuanM/NGQzNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9nU3Bhbi9zdHJ1Y3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuVkFDQU5UX05PREVfTEFCRUwgPSBleHBvcnRzLlZBQ0FOVF9OT0RFX0lEID0gZXhwb3J0cy5WQUNBTlRfR1JBUEhfSUQgPSBleHBvcnRzLlZBQ0FOVF9FREdFX0xBQkVMID0gZXhwb3J0cy5WQUNBTlRfRURHRV9JRCA9IGV4cG9ydHMuTm9kZSA9IGV4cG9ydHMuR3JhcGggPSBleHBvcnRzLkVkZ2UgPSBleHBvcnRzLkFVVE9fRURHRV9JRCA9IHZvaWQgMDtcbnZhciBWQUNBTlRfRURHRV9JRCA9IC0xO1xuZXhwb3J0cy5WQUNBTlRfRURHRV9JRCA9IFZBQ0FOVF9FREdFX0lEO1xudmFyIFZBQ0FOVF9OT0RFX0lEID0gLTE7XG5leHBvcnRzLlZBQ0FOVF9OT0RFX0lEID0gVkFDQU5UX05PREVfSUQ7XG52YXIgVkFDQU5UX0VER0VfTEFCRUwgPSBcIi0xXCI7XG5leHBvcnRzLlZBQ0FOVF9FREdFX0xBQkVMID0gVkFDQU5UX0VER0VfTEFCRUw7XG52YXIgVkFDQU5UX05PREVfTEFCRUwgPSBcIi0xXCI7XG5leHBvcnRzLlZBQ0FOVF9OT0RFX0xBQkVMID0gVkFDQU5UX05PREVfTEFCRUw7XG52YXIgVkFDQU5UX0dSQVBIX0lEID0gLTE7XG5leHBvcnRzLlZBQ0FOVF9HUkFQSF9JRCA9IFZBQ0FOVF9HUkFQSF9JRDtcbnZhciBBVVRPX0VER0VfSUQgPSBcIi0xXCI7XG5leHBvcnRzLkFVVE9fRURHRV9JRCA9IEFVVE9fRURHRV9JRDtcblxudmFyIEVkZ2UgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBFZGdlKGlkLCBmcm9tLCB0bywgbGFiZWwpIHtcbiAgICBpZiAoaWQgPT09IHZvaWQgMCkge1xuICAgICAgaWQgPSBWQUNBTlRfRURHRV9JRDtcbiAgICB9XG5cbiAgICBpZiAoZnJvbSA9PT0gdm9pZCAwKSB7XG4gICAgICBmcm9tID0gVkFDQU5UX05PREVfSUQ7XG4gICAgfVxuXG4gICAgaWYgKHRvID09PSB2b2lkIDApIHtcbiAgICAgIHRvID0gVkFDQU5UX05PREVfSUQ7XG4gICAgfVxuXG4gICAgaWYgKGxhYmVsID09PSB2b2lkIDApIHtcbiAgICAgIGxhYmVsID0gVkFDQU5UX0VER0VfTEFCRUw7XG4gICAgfVxuXG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMuZnJvbSA9IGZyb207XG4gICAgdGhpcy50byA9IHRvO1xuICAgIHRoaXMubGFiZWwgPSBsYWJlbDtcbiAgfVxuXG4gIHJldHVybiBFZGdlO1xufSgpO1xuXG5leHBvcnRzLkVkZ2UgPSBFZGdlO1xuXG52YXIgTm9kZSA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIE5vZGUoaWQsIGxhYmVsKSB7XG4gICAgaWYgKGlkID09PSB2b2lkIDApIHtcbiAgICAgIGlkID0gVkFDQU5UX05PREVfSUQ7XG4gICAgfVxuXG4gICAgaWYgKGxhYmVsID09PSB2b2lkIDApIHtcbiAgICAgIGxhYmVsID0gVkFDQU5UX05PREVfTEFCRUw7XG4gICAgfVxuXG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMubGFiZWwgPSBsYWJlbDtcbiAgICB0aGlzLmVkZ2VzID0gW107XG4gICAgdGhpcy5lZGdlTWFwID0ge307XG4gIH1cblxuICBOb2RlLnByb3RvdHlwZS5hZGRFZGdlID0gZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICB0aGlzLmVkZ2VzLnB1c2goZWRnZSk7XG4gICAgdGhpcy5lZGdlTWFwW2VkZ2UuaWRdID0gZWRnZTtcbiAgfTtcblxuICByZXR1cm4gTm9kZTtcbn0oKTtcblxuZXhwb3J0cy5Ob2RlID0gTm9kZTtcblxudmFyIEdyYXBoID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gR3JhcGgoaWQsIGVkZ2VJZEF1dG9JbmNyZWFzZSwgZGlyZWN0ZWQpIHtcbiAgICBpZiAoaWQgPT09IHZvaWQgMCkge1xuICAgICAgaWQgPSBWQUNBTlRfTk9ERV9JRDtcbiAgICB9XG5cbiAgICBpZiAoZWRnZUlkQXV0b0luY3JlYXNlID09PSB2b2lkIDApIHtcbiAgICAgIGVkZ2VJZEF1dG9JbmNyZWFzZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGRpcmVjdGVkID09PSB2b2lkIDApIHtcbiAgICAgIGRpcmVjdGVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMuZWRnZUlkQXV0b0luY3JlYXNlID0gZWRnZUlkQXV0b0luY3JlYXNlO1xuICAgIHRoaXMuZWRnZXMgPSBbXTtcbiAgICB0aGlzLm5vZGVzID0gW107XG4gICAgdGhpcy5ub2RlTWFwID0ge307XG4gICAgdGhpcy5lZGdlTWFwID0ge307XG4gICAgdGhpcy5ub2RlTGFiZWxNYXAgPSB7fTtcbiAgICB0aGlzLmVkZ2VMYWJlbE1hcCA9IHt9O1xuICAgIHRoaXMuY291bnRlciA9IDA7XG4gICAgdGhpcy5kaXJlY3RlZCA9IGRpcmVjdGVkO1xuICB9XG5cbiAgR3JhcGgucHJvdG90eXBlLmdldE5vZGVOdW0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZXMubGVuZ3RoO1xuICB9O1xuXG4gIEdyYXBoLnByb3RvdHlwZS5hZGROb2RlID0gZnVuY3Rpb24gKGlkLCBsYWJlbCkge1xuICAgIGlmICh0aGlzLm5vZGVNYXBbaWRdKSByZXR1cm47XG4gICAgdmFyIG5vZGUgPSBuZXcgTm9kZShpZCwgbGFiZWwpO1xuICAgIHRoaXMubm9kZXMucHVzaChub2RlKTtcbiAgICB0aGlzLm5vZGVNYXBbaWRdID0gbm9kZTtcbiAgICBpZiAoIXRoaXMubm9kZUxhYmVsTWFwW2xhYmVsXSkgdGhpcy5ub2RlTGFiZWxNYXBbbGFiZWxdID0gW107XG4gICAgdGhpcy5ub2RlTGFiZWxNYXBbbGFiZWxdLnB1c2goaWQpO1xuICB9O1xuXG4gIEdyYXBoLnByb3RvdHlwZS5hZGRFZGdlID0gZnVuY3Rpb24gKGlkLCBmcm9tLCB0bywgbGFiZWwpIHtcbiAgICBpZiAodGhpcy5lZGdlSWRBdXRvSW5jcmVhc2UgfHwgaWQgPT09IHVuZGVmaW5lZCkgaWQgPSB0aGlzLmNvdW50ZXIrKztcbiAgICBpZiAodGhpcy5ub2RlTWFwW2Zyb21dICYmIHRoaXMubm9kZU1hcFt0b10gJiYgdGhpcy5ub2RlTWFwW3RvXS5lZGdlTWFwW2lkXSkgcmV0dXJuO1xuICAgIHZhciBlZGdlID0gbmV3IEVkZ2UoaWQsIGZyb20sIHRvLCBsYWJlbCk7XG4gICAgdGhpcy5lZGdlcy5wdXNoKGVkZ2UpO1xuICAgIHRoaXMuZWRnZU1hcFtpZF0gPSBlZGdlO1xuICAgIHRoaXMubm9kZU1hcFtmcm9tXS5hZGRFZGdlKGVkZ2UpO1xuICAgIGlmICghdGhpcy5lZGdlTGFiZWxNYXBbbGFiZWxdKSB0aGlzLmVkZ2VMYWJlbE1hcFtsYWJlbF0gPSBbXTtcbiAgICB0aGlzLmVkZ2VMYWJlbE1hcFtsYWJlbF0ucHVzaChlZGdlKTtcblxuICAgIGlmICghdGhpcy5kaXJlY3RlZCkge1xuICAgICAgdmFyIHJFZGdlID0gbmV3IEVkZ2UoaWQsIHRvLCBmcm9tLCBsYWJlbCk7XG4gICAgICB0aGlzLm5vZGVNYXBbdG9dLmFkZEVkZ2UockVkZ2UpO1xuICAgICAgdGhpcy5lZGdlTGFiZWxNYXBbbGFiZWxdLnB1c2gockVkZ2UpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gR3JhcGg7XG59KCk7XG5cbmV4cG9ydHMuR3JhcGggPSBHcmFwaDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/gSpan/struct.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/gaddi.js":
/*!***************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/gaddi.js ***!
\***************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _tslib = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n\nvar _floydWarshall = _interopRequireDefault(__webpack_require__(/*! ./floydWarshall */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/floydWarshall.js\"));\n\nvar _gSpan = _interopRequireDefault(__webpack_require__(/*! ./gSpan/gSpan */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/gSpan/gSpan.js\"));\n\nvar _dijkstra = _interopRequireDefault(__webpack_require__(/*! ./dijkstra */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/dijkstra.js\"));\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/util.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * 为 graphData 中每个节点生成邻居单元数组\n * @param graphData\n * @param spm\n * @param nodeLabelProp\n * @param k k-近邻\n */\nvar findKNeighborUnits = function findKNeighborUnits(graphData, spm, nodeLabelProp, k) {\n if (nodeLabelProp === void 0) {\n nodeLabelProp = 'cluster';\n }\n\n if (k === void 0) {\n k = 2;\n }\n\n var units = [];\n var nodes = graphData.nodes;\n spm.forEach(function (row, i) {\n units.push(findKNeighborUnit(nodes, row, i, nodeLabelProp, k));\n });\n return units;\n};\n\nvar findKNeighborUnit = function findKNeighborUnit(nodes, row, i, nodeLabelProp, k) {\n var unitNodeIdxs = [i];\n var neighbors = [];\n var labelCountMap = {};\n row.forEach(function (v, j) {\n if (v <= k && i !== j) {\n unitNodeIdxs.push(j);\n neighbors.push(nodes[j]);\n var label = nodes[j][nodeLabelProp];\n if (!labelCountMap[label]) labelCountMap[label] = {\n count: 1,\n dists: [v]\n };else {\n labelCountMap[label].count++;\n labelCountMap[label].dists.push(v);\n }\n }\n }); // 将 labelCountMap 中的 dists 按照从小到大排序,方便后面使用\n\n Object.keys(labelCountMap).forEach(function (label) {\n labelCountMap[label].dists = labelCountMap[label].dists.sort(function (a, b) {\n return a - b;\n });\n });\n return {\n nodeIdx: i,\n nodeId: nodes[i].id,\n nodeIdxs: unitNodeIdxs,\n neighbors: neighbors,\n neighborNum: unitNodeIdxs.length - 1,\n nodeLabelCountMap: labelCountMap\n };\n};\n/**\n * 随机寻找点对,满足距离小于 k\n * @param k 参数 k,表示 k-近邻\n * @param nodeNum 参数 length\n * @param maxNodePairNum 寻找点对的数量不超过 maxNodePairNum\n * @param spm 最短路径矩阵\n */\n\n\nvar findNodePairsRandomly = function findNodePairsRandomly(k, nodeNum, maxNodePairNum, kNeighborUnits, spm) {\n // 每个节点需要随机找出的点对数\n var nodePairNumEachNode = Math.ceil(maxNodePairNum / nodeNum);\n var nodePairMap = {};\n var foundNodePairCount = 0; // 遍历节点,为每个节点随机找出 nodePairNumEachNode 个点对,满足距离小于 k。找到的点对数量超过 maxNodePairNum 或所有节点遍历结束时终止\n\n kNeighborUnits.forEach(function (unit, i) {\n // 若未达到 nodePairNumEachNode,或循环次数小于最大循环次数(2 * nodeNum),继续循环\n var nodePairForICount = 0;\n var outerLoopCount = 0;\n var neighbors = unit.nodeIdxs; // the first one is the center node\n\n var neighborNum = unit.neighborNum - 1;\n\n while (nodePairForICount < nodePairNumEachNode) {\n // 另一端节点在节点数组中的的 index\n var oidx = neighbors[1 + Math.floor(Math.random() * neighborNum)];\n var innerLoopCount = 0; // 若随机得到的另一端 idx 不符合条件,则继续 random。条件是不是同一个节点、这个点对没有被记录过、距离小于 k\n\n while (nodePairMap[\"\".concat(i, \"-\").concat(oidx)] || nodePairMap[\"\".concat(oidx, \"-\").concat(i)]) {\n oidx = Math.floor(Math.random() * nodeNum);\n innerLoopCount++;\n if (innerLoopCount > 2 * nodeNum) break; // 循环次数大于最大循环次数(2 * nodeNum)跳出循环,避免死循环\n }\n\n if (innerLoopCount < 2 * nodeNum) {\n // 未达到最大循环次数,说明找到了合适的另一端\n nodePairMap[\"\".concat(i, \"-\").concat(oidx)] = {\n start: i,\n end: oidx,\n distance: spm[i][oidx]\n };\n nodePairForICount++;\n foundNodePairCount++; // 如果当前找到的点对数量达到了上限,返回结果\n\n if (foundNodePairCount >= maxNodePairNum) return nodePairMap;\n }\n\n outerLoopCount++;\n if (outerLoopCount > 2 * nodeNum) break; // 循环次数大于最大循环次数(2 * nodeNum)跳出循环,避免死循环\n } // 这个节点没有找到足够 nodePairNumEachNode 的点对。更新 nodePairNumEachNode,让后续节点找更多的点对\n\n\n if (nodePairForICount < nodePairNumEachNode) {\n var gap = nodePairNumEachNode - nodePairForICount;\n nodePairNumEachNode = (nodePairNumEachNode + gap) / (nodeNum - i - 1);\n }\n });\n return nodePairMap;\n};\n/**\n * 计算所有 nodePairMap 中节点对的相交邻居诱导子图\n * @param nodePairMap 节点对 map,key 为 node1.id-node2.id,value 为 { startNodeIdx, endNodeIdx, distance }\n * @param neighborUnits 每个节点的邻居元数组\n * @param graphData 原图数据\n * @param edgeMap 边的 map,方便检索\n * @param cachedInducedGraphMap 缓存的结果,下次进入该函数将继续更新该缓存,若 key 在缓存中存在则不需要重复计算\n */\n\n\nvar getIntersectNeighborInducedGraph = function getIntersectNeighborInducedGraph(nodePairMap, neighborUnits, graphData, cachedInducedGraphMap) {\n var nodes = graphData.nodes;\n if (!cachedInducedGraphMap) cachedInducedGraphMap = {};\n Object.keys(nodePairMap).forEach(function (key) {\n var _a, _b;\n\n if (cachedInducedGraphMap && cachedInducedGraphMap[key]) return;\n cachedInducedGraphMap[key] = {\n nodes: [],\n edges: []\n };\n var pair = nodePairMap[key];\n var startUnitNodeIds = (_a = neighborUnits[pair.start]) === null || _a === void 0 ? void 0 : _a.nodeIdxs;\n var endUnitNodeIds = (_b = neighborUnits[pair.end]) === null || _b === void 0 ? void 0 : _b.nodeIdxs;\n if (!startUnitNodeIds || !endUnitNodeIds) return; // 不存在邻元,返回空图\n\n var endSet = new Set(endUnitNodeIds);\n var intersect = startUnitNodeIds.filter(function (x) {\n return endSet.has(x);\n }); // 可能会爆栈(在 1580 + 6 nodes full-connected 时出现)\n\n if (!intersect || !intersect.length) return; // 没有交集,返回空图\n\n var intersectIdMap = {};\n var intersectLength = intersect.length;\n\n for (var i = 0; i < intersectLength; i++) {\n var node = nodes[intersect[i]];\n cachedInducedGraphMap[key].nodes.push(node); // 将交集中的点加入诱导子图\n\n intersectIdMap[node.id] = true;\n } // 遍历所有边数据,如果边的两端都在交集中,将该边加入诱导子图\n\n\n graphData.edges.forEach(function (edge) {\n if (intersectIdMap[edge.source] && intersectIdMap[edge.target]) cachedInducedGraphMap[key].edges.push(edge);\n });\n });\n return cachedInducedGraphMap;\n};\n/**\n * 计算 strcutre 在 graph 上的匹配数量\n * @param graph 图数据\n * @param structure 目前支持只有两个节点一条边的最简单结构\n * @param nodeLabelProp 节点类型字段名\n * @param edgeLabelProp 边类型字段名\n */\n\n\nvar getMatchedCount = function getMatchedCount(graph, structure, nodeLabelProp, edgeLabelProp) {\n var _a, _b;\n\n var nodeMap = {};\n graph.nodes.forEach(function (node) {\n nodeMap[node.id] = node;\n });\n var count = 0;\n if (!((_a = structure === null || structure === void 0 ? void 0 : structure.edges) === null || _a === void 0 ? void 0 : _a.length) || ((_b = structure === null || structure === void 0 ? void 0 : structure.nodes) === null || _b === void 0 ? void 0 : _b.length) < 2) return 0;\n graph.edges.forEach(function (e) {\n var sourceLabel = nodeMap[e.source][nodeLabelProp];\n var targetLabel = nodeMap[e.target][nodeLabelProp];\n var strNodeLabel1 = structure === null || structure === void 0 ? void 0 : structure.nodes[0][nodeLabelProp];\n var strNodeLabel2 = structure === null || structure === void 0 ? void 0 : structure.nodes[1][nodeLabelProp];\n var strEdgeLabel = structure === null || structure === void 0 ? void 0 : structure.edges[0][edgeLabelProp];\n if (e[edgeLabelProp] !== strEdgeLabel) return;\n\n if (sourceLabel === strNodeLabel1 && targetLabel === strNodeLabel2 || sourceLabel === strNodeLabel2 && targetLabel === strNodeLabel1) {\n count++;\n }\n });\n return count;\n};\n/**\n * structures 中寻找最具有代表性的一个。这个结构是使得 matchedCountMap 的分组方式类内间距最小,类间间距最大\n * @param matchedCountMap 每个 structure 分类后的各图匹配数量,格式 { [strcture.idx]: { [interInducedGraphKey]: count } }\n * @param structureNum strcuture 个数,与 matchedCountMap.length 对应\n * @param structures\n */\n\n\nvar findRepresentStructure = function findRepresentStructure(matchedCountMap, structureNum, structures) {\n var maxOffset = Infinity,\n representClusterType = 0;\n\n var _loop_1 = function _loop_1(i) {\n // 一种分组的 map,key 是 intGraph 的 key,value 是 structures[i] 的匹配个数\n var countMapI = matchedCountMap[i]; // 按照 value 为该组排序,生成 keys 的数组:\n\n var sortedGraphKeys = Object.keys(countMapI).sort(function (a, b) {\n return countMapI[a] - countMapI[b];\n }); // 共 100 个 graphKeys,将 graphKeys 按顺序分为 groupNum 组\n\n var groupNum = 10;\n var clusters = []; // 总共有 groupNum 个项\n\n sortedGraphKeys.forEach(function (key, j) {\n if (!clusters[j % groupNum]) clusters[j % groupNum] = {\n graphs: [],\n totalCount: 0,\n aveCount: 0\n };\n clusters[j % groupNum].graphs.push(key);\n clusters[j % groupNum].totalCount += countMapI[key];\n }); // 计算 cluster 与 cluster 之间的距离 innerDist,每个 cluster 内部的距离 intraDist\n\n var aveIntraDist = 0; // 该类的类内平均值\n\n var aveCounts = []; // 类内平均匹配数量,将用于计算类间距离\n\n clusters.forEach(function (graphsInCluster) {\n // 类内均值\n var aveCount = graphsInCluster.totalCount / graphsInCluster.graphs.length;\n graphsInCluster.aveCount = aveCount;\n aveCounts.push(aveCount); // 对于每类,计算类内间距平均值\n\n var aveIntraPerCluster = 0;\n var graphsNum = graphsInCluster.length;\n graphsInCluster.graphs.forEach(function (graphKey1, j) {\n var graph1Count = countMapI[graphKey1];\n graphsInCluster.graphs.forEach(function (graphKey2, k) {\n if (j === k) return;\n aveIntraPerCluster += Math.abs(graph1Count - countMapI[graphKey2]);\n });\n });\n aveIntraPerCluster /= graphsNum * (graphsNum - 1) / 2;\n aveIntraDist += aveIntraPerCluster;\n });\n aveIntraDist /= clusters.length; // 用类内均值计算类间距\n\n var aveInterDist = 0; // 类间间距平均值\n\n aveCounts.forEach(function (aveCount1, j) {\n aveCounts.forEach(function (aveCount2, k) {\n if (j === k) return;\n aveInterDist += Math.abs(aveCount1 - aveCount2);\n });\n aveInterDist /= aveCounts.length * (aveCounts.length - 1) / 2;\n }); // 寻找 (类间间距均值-类内间距均值) 最大的一种分组方式(对应的 structure 就是最终要找的唯一 DS(G))\n\n var offset = aveInterDist - aveIntraDist;\n\n if (maxOffset < offset) {\n maxOffset = offset;\n representClusterType = i;\n }\n };\n\n for (var i = 0; i < structureNum; i++) {\n _loop_1(i);\n }\n\n return {\n structure: structures[representClusterType],\n structureCountMap: matchedCountMap[representClusterType]\n };\n};\n\nvar getNodeMaps = function getNodeMaps(nodes, nodeLabelProp) {\n var nodeMap = {},\n nodeLabelMap = {};\n nodes.forEach(function (node, i) {\n nodeMap[node.id] = {\n idx: i,\n node: node,\n degree: 0,\n inDegree: 0,\n outDegree: 0\n };\n var label = node[nodeLabelProp];\n if (!nodeLabelMap[label]) nodeLabelMap[label] = [];\n nodeLabelMap[label].push(node);\n });\n return {\n nodeMap: nodeMap,\n nodeLabelMap: nodeLabelMap\n };\n};\n\nvar getEdgeMaps = function getEdgeMaps(edges, edgeLabelProp, nodeMap) {\n var edgeMap = {},\n edgeLabelMap = {};\n edges.forEach(function (edge, i) {\n edgeMap[\"\".concat(_util.uniqueId)] = {\n idx: i,\n edge: edge\n };\n var label = edge[edgeLabelProp];\n if (!edgeLabelMap[label]) edgeLabelMap[label] = [];\n edgeLabelMap[label].push(edge);\n var sourceNode = nodeMap[edge.source];\n\n if (sourceNode) {\n sourceNode.degree++;\n sourceNode.outDegree++;\n }\n\n var targetNode = nodeMap[edge.target];\n\n if (targetNode) {\n targetNode.degree++;\n targetNode.inDegree++;\n }\n });\n return {\n edgeMap: edgeMap,\n edgeLabelMap: edgeLabelMap\n };\n};\n/**\n * 输出最短路径的 map,key 为 sourceNode.id-targetNode.id,value 为这两个节点的最短路径长度\n * @param nodes\n * @param spm\n * @param directed\n */\n\n\nvar getSpmMap = function getSpmMap(nodes, spm, directed) {\n var length = spm.length;\n var map = {};\n spm.forEach(function (row, i) {\n var start = directed ? 0 : i + 1;\n var iId = nodes[i].id;\n\n for (var j = start; j < length; j++) {\n if (i === j) continue;\n var jId = nodes[j].id;\n var dist = row[j];\n map[\"\".concat(iId, \"-\").concat(jId)] = dist;\n if (!directed) map[\"\".concat(jId, \"-\").concat(iId)] = dist;\n }\n });\n return map;\n};\n/**\n * 计算一对节点(node1,node2)的 NDS 距离\n * @param graph 原图数据\n * @param node1\n * @param node2\n */\n\n\nvar getNDSDist = function getNDSDist(graph, node1, node2, nodeMap, spDist, kNeighborUnits, structure, nodeLabelProp, edgeLabelProp, cachedNDSMap, cachedInterInducedGraph) {\n var _a;\n\n var key = \"\".concat(node1.id, \"-\").concat(node2.id);\n if (cachedNDSMap && cachedNDSMap[key]) return cachedNDSMap[key];\n var interInducedGraph = cachedInterInducedGraph ? cachedInterInducedGraph[key] : undefined; // 若没有缓存相交邻居诱导子图,计算\n\n if (!interInducedGraph) {\n var pairMap = (_a = {}, _a[key] = {\n start: nodeMap[node1.id].idx,\n end: nodeMap[node2.id].idx,\n distance: spDist\n }, _a);\n cachedInterInducedGraph = getIntersectNeighborInducedGraph(pairMap, kNeighborUnits, graph, cachedInterInducedGraph);\n interInducedGraph = cachedInterInducedGraph[key];\n }\n\n return getMatchedCount(interInducedGraph, structure, nodeLabelProp, edgeLabelProp);\n};\n/**\n * 计算 pattern 上绩点的度数并存储到 minPatternNodeLabelDegreeMap\n */\n\n\nvar stashPatternNodeLabelDegreeMap = function stashPatternNodeLabelDegreeMap(minPatternNodeLabelDegreeMap, neighborLabel, patternNodeMap, patternNodeLabelMap) {\n var _a, _b, _c;\n\n var minPatternNodeLabelDegree = (_a = minPatternNodeLabelDegreeMap[neighborLabel]) === null || _a === void 0 ? void 0 : _a.degree;\n var minPatternNodeLabelInDegree = (_b = minPatternNodeLabelDegreeMap[neighborLabel]) === null || _b === void 0 ? void 0 : _b.inDegree;\n var minPatternNodeLabelOutDegree = (_c = minPatternNodeLabelDegreeMap[neighborLabel]) === null || _c === void 0 ? void 0 : _c.outDegree;\n\n if (minPatternNodeLabelDegreeMap[neighborLabel] === undefined) {\n minPatternNodeLabelDegree = Infinity;\n minPatternNodeLabelInDegree = Infinity;\n minPatternNodeLabelOutDegree = Infinity;\n patternNodeLabelMap[neighborLabel].forEach(function (patternNodeWithLabel) {\n var patternNodeDegree = patternNodeMap[patternNodeWithLabel.id].degree;\n if (minPatternNodeLabelDegree > patternNodeDegree) minPatternNodeLabelDegree = patternNodeDegree;\n var patternNodeInDegree = patternNodeMap[patternNodeWithLabel.id].inDegree;\n if (minPatternNodeLabelInDegree > patternNodeInDegree) minPatternNodeLabelInDegree = patternNodeInDegree;\n var patternNodeOutDegree = patternNodeMap[patternNodeWithLabel.id].outDegree;\n if (minPatternNodeLabelOutDegree > patternNodeOutDegree) minPatternNodeLabelOutDegree = patternNodeOutDegree;\n });\n minPatternNodeLabelDegreeMap[neighborLabel] = {\n degree: minPatternNodeLabelDegree,\n inDegree: minPatternNodeLabelInDegree,\n outDegree: minPatternNodeLabelOutDegree\n };\n }\n\n return {\n minPatternNodeLabelDegree: minPatternNodeLabelDegree,\n minPatternNodeLabelInDegree: minPatternNodeLabelInDegree,\n minPatternNodeLabelOutDegree: minPatternNodeLabelOutDegree\n };\n};\n/**\n * GADDI 模式匹配\n * @param graphData 原图数据\n * @param pattern 搜索图(需要在原图上搜索的模式)数据\n * @param directed 是否计算有向图,默认 false\n * @param k 参数 k,表示 k-近邻\n * @param length 参数 length\n * @param nodeLabelProp 节点数据中代表节点标签(分类信息)的属性名。默认为 cluster\n * @param edgeLabelProp 边数据中代表边标签(分类信息)的属性名。默认为 cluster\n */\n\n\nvar GADDI = function GADDI(graphData, pattern, directed, k, length, nodeLabelProp, edgeLabelProp) {\n var _a;\n\n if (directed === void 0) {\n directed = false;\n }\n\n if (nodeLabelProp === void 0) {\n nodeLabelProp = 'cluster';\n }\n\n if (edgeLabelProp === void 0) {\n edgeLabelProp = 'cluster';\n }\n\n if (!graphData || !graphData.nodes) return; // 分为三步:\n // 0. 预计算:节点/边数,邻接矩阵、最短路径矩阵\n // 1. 处理原图 graphData。再分为 1~5 小步\n // 2. 匹配\n // console.log(\"----- stage-pre: preprocessing -------\");\n // -------- 第零步,预计算:节点/边数,邻接矩阵、最短路径矩阵-------\n\n var nodeNum = graphData.nodes.length;\n if (!nodeNum) return; // console.log(\"----- stage-pre.1: calc shortest path matrix for graph -------\");\n\n var spm = (0, _floydWarshall.default)(graphData, directed); // console.log(\n // \"----- stage-pre.2: calc shortest path matrix for pattern -------\"\n // );\n\n var patternSpm = (0, _floydWarshall.default)(pattern, directed); // console.log(\n // \"----- stage-pre.3: calc shortest path matrix map for graph -------\"\n // );\n\n var spmMap = getSpmMap(graphData.nodes, spm, directed); // console.log(\n // \"----- stage-pre.4: calc shortest path matrix map for pattern -------\"\n // );\n\n var patternSpmMap = getSpmMap(pattern.nodes, patternSpm, directed); // console.log(\"----- stage-pre.5: establish maps -------\");\n // 节点的 map,以 id 为 id 映射,方便后续快速检索\n\n var _b = getNodeMaps(graphData.nodes, nodeLabelProp),\n nodeMap = _b.nodeMap,\n nodeLabelMap = _b.nodeLabelMap;\n\n var _c = getNodeMaps(pattern.nodes, nodeLabelProp),\n patternNodeMap = _c.nodeMap,\n patternNodeLabelMap = _c.nodeLabelMap; // 计算节点度数\n\n\n getEdgeMaps(graphData.edges, edgeLabelProp, nodeMap);\n var patternEdgeLabelMap = getEdgeMaps(pattern.edges, edgeLabelProp, patternNodeMap).edgeLabelMap; // 若未指定 length,自动计算 pattern 半径(最短路径最大值)\n\n var patternSpmSpread = [];\n patternSpm === null || patternSpm === void 0 ? void 0 : patternSpm.forEach(function (row) {\n patternSpmSpread = patternSpmSpread.concat(row);\n });\n if (!length) length = Math.max.apply(Math, (0, _tslib.__spreadArray)((0, _tslib.__spreadArray)([], patternSpmSpread, false), [2], false));\n if (!k) k = length; // console.log(\"params\", directed, length, k);\n // console.log(\"----- stage-pre.6: calc k neighbor units -------\");\n // 计算每个节点的 k 邻元集合\n\n var kNeighborUnits = findKNeighborUnits(graphData, spm, nodeLabelProp, k);\n var patternKNeighborUnits = findKNeighborUnits(pattern, patternSpm, nodeLabelProp, k); // console.log(\n // \"----- stage0: going to processing graph and find intersect neighbor induced graphs -------\"\n // );\n // console.log(\"----- stage0.1: going to select random node pairs -------\");\n // -------- 第一步,处理原图 graphData-------\n // 1.1. 随机选择最多 100 个点对,满足距离小于 Length 和 k\n // 当 graphData 少于 20 个节点,则不能找出 100 个点对,只找出不多于 n(n-1)/2 个点对\n\n var maxNodePairNum = Math.min(100, nodeNum * (nodeNum - 1) / 2);\n var nodePairsMap = findNodePairsRandomly(k, nodeNum, maxNodePairNum, patternKNeighborUnits, spm); // console.log(\n // \"----- stage0.2: going to calculate intersect neighbor induced graphs -------\"\n // );\n // 1.2. 生成上面节点对的相应相交邻居诱导子图。格式为 {'beginNodeIdx-endNodeIdx': {nodes: [], edges: []}}\n\n var intGMap = getIntersectNeighborInducedGraph(nodePairsMap, kNeighborUnits, graphData); // 1.3. 使用 gSpan 算法(frequent graph mining)计算 ISIntG 的前 10 个频率最高的子结构(3-4条边)\n\n var top = 10,\n minSupport = 1,\n minNodeNum = 1,\n maxNodeNum = 4;\n var params = {\n graphs: intGMap,\n nodeLabelProp: nodeLabelProp,\n edgeLabelProp: edgeLabelProp,\n minSupport: minSupport,\n minNodeNum: minNodeNum,\n maxNodeNum: maxNodeNum,\n directed: directed\n }; // console.log(\n // \"----- stage1: (gSpan) going to find frequent structure dsG -------\"\n // );\n // console.log(\"----- stage1.1: going to run gSpan -------\");\n // 暂时假设生成的 sub structure 都只有一条边\n\n var freStructures = (0, _gSpan.default)(params).slice(0, top); // structureNum 可能小于 top\n\n var structureNum = freStructures.length; // 1.4. 计算上述 10 个子结构在 intGMap 中每个诱导子图的匹配个数\n\n var matchedCountMap = [];\n freStructures.forEach(function (structure, i) {\n matchedCountMap[i] = {};\n Object.keys(intGMap).forEach(function (key) {\n var graph = intGMap[key];\n var subStructureCount = getMatchedCount(graph, structure, nodeLabelProp, edgeLabelProp);\n matchedCountMap[i][key] = subStructureCount;\n });\n }); // console.log(\n // \"----- stage1.1: going to find the most represent strucutre -------\"\n // );\n // 1.5. 对于每个子结构,根据匹配个数为 intGMap 中的诱导子图分组,生成 structureNum 种分组\n // 计算每种分组的类间距和类内间距,找到类间距最大、类内间距最小的一种分组,这种分组对应的子结构被选为唯一代表性子结构 DS(G)\n\n var _d = findRepresentStructure(matchedCountMap, structureNum, freStructures),\n dsG = _d.structure,\n ndsDist = _d.structureCountMap; // -------- 第二步,匹配-------\n // 2.1 找到从 Q 中的一个节点作为起始节点,寻找 G 中的匹配。这个其实节点的标签可以在 G 中找到最多的节点\n\n\n var beginPNode = pattern.nodes[0],\n candidates = [],\n label = (_a = pattern.nodes[0]) === null || _a === void 0 ? void 0 : _a[nodeLabelProp],\n maxNodeNumWithSameLabel = -Infinity;\n pattern.nodes.forEach(function (node) {\n var pLabel = node[nodeLabelProp];\n var nodesWithSameLabel = nodeLabelMap[pLabel];\n\n if ((nodesWithSameLabel === null || nodesWithSameLabel === void 0 ? void 0 : nodesWithSameLabel.length) > maxNodeNumWithSameLabel) {\n maxNodeNumWithSameLabel = nodesWithSameLabel.length;\n candidates = nodesWithSameLabel;\n label = pLabel;\n beginPNode = node;\n }\n }); // console.log(\"----- stage2: going to find candidates -------\");\n // 全局缓存,避免重复计算\n\n var minPatternNodeLabelDegreeMap = {}; // key 是 label,value 是该 label 节点的最小度数\n\n var patternIntGraphMap = {},\n patternNDSDist = {},\n // key 为 node.id-node.id\n patternNDSDistMap = {}; // key 为 node.id-label2,value nds距离值数组(按从大到小排序,无需关心具体对应哪个 node2)\n // 2.2.2 对于 Q 中的另一个标签的 k 个节点,计算它们到 node 的最短路径以及 NDS 距离\n\n var patternSpDist = {};\n var patternSpDistBack = {};\n Object.keys(patternNodeLabelMap).forEach(function (label2, j) {\n patternSpDist[label2] = [];\n\n if (directed) {\n patternSpDistBack[label2] = [];\n }\n\n var maxDist = -Infinity;\n var patternNodesWithLabel2 = patternNodeLabelMap[label2];\n var patternNodePairMap = {};\n patternNodesWithLabel2.forEach(function (nodeWithLabel2) {\n var dist = patternSpmMap[\"\".concat(beginPNode.id, \"-\").concat(nodeWithLabel2.id)];\n dist && patternSpDist[label2].push(dist);\n if (maxDist < dist) maxDist = dist;\n patternNodePairMap[\"\".concat(beginPNode.id, \"-\").concat(nodeWithLabel2.id)] = {\n start: 0,\n end: patternNodeMap[nodeWithLabel2.id].idx,\n distance: dist\n };\n\n if (directed) {\n var distBack = patternSpmMap[\"\".concat(nodeWithLabel2.id, \"-\").concat(beginPNode.id)];\n distBack && patternSpDistBack[label2].push(distBack);\n }\n }); // spDist[label2] 按照从小到大排序\n\n patternSpDist[label2] = patternSpDist[label2].sort(function (a, b) {\n return a - b;\n });\n if (directed) patternSpDistBack[label2] = patternSpDistBack[label2].sort(function (a, b) {\n return a - b;\n }); // 计算 Q 中所有 label2 节点到 beginPNode 的 NDS 距离\n // 所有 label2 节点到 beginPNode 的邻居相交诱导子图:\n // key: node1.id-node2.id\n\n patternIntGraphMap = getIntersectNeighborInducedGraph(patternNodePairMap, patternKNeighborUnits, pattern, patternIntGraphMap); // pattern 中 beginNode 到当前 label2 节点 的 NDS 距离(数组,无需关心具体对应到哪个节点)\n\n var currentPatternNDSDistArray = [];\n Object.keys(patternNodePairMap).forEach(function (key) {\n if (patternNDSDist[key]) {\n currentPatternNDSDistArray.push(patternNDSDist[key]);\n return; // 缓存过则不需要再次计算\n }\n\n var patternIntGraph = patternIntGraphMap[key];\n patternNDSDist[key] = getMatchedCount(patternIntGraph, dsG, nodeLabelProp, edgeLabelProp);\n currentPatternNDSDistArray.push(patternNDSDist[key]);\n }); // 根据值为 currentPatternNDSDist 从大到小排序\n\n currentPatternNDSDistArray = currentPatternNDSDistArray.sort(function (a, b) {\n return b - a;\n });\n patternNDSDistMap[\"\".concat(beginPNode.id, \"-\").concat(label2)] = currentPatternNDSDistArray;\n if (label2 === label) return;\n var candidatesNum = (candidates === null || candidates === void 0 ? void 0 : candidates.length) || 0;\n\n var _loop_4 = function _loop_4(m) {\n var cNode = candidates[m]; // prune1:若 candidates 中节点 cNode 的 kNeighborUnits 中标签为 label2 的节点个数少于 pattern 中 label2 个数,删去它\n\n var graphNeighborUnit = kNeighborUnits[nodeMap[cNode.id].idx];\n var graphNeighborUnitCountMap = graphNeighborUnit.nodeLabelCountMap[label2];\n var patternLabel2Num = patternNodeLabelMap[label2].length;\n\n if (!graphNeighborUnitCountMap || graphNeighborUnitCountMap.count < patternLabel2Num) {\n candidates.splice(m, 1);\n return \"continue\";\n } // prune2:若 candidates 中节点 cNode 到 kNeighborUnits 中标签为 label2 的节点最短路径大于 patternSpDist[label2],删去它\n // (prune2 规则即:candidate 相关的最短路径的最大 spDist[label2].length 个,按照大小顺序依次和 patternSpDist[label2] 中的值比较,只要遇到一个是 G > Q 的,就删去这个 candidate)\n\n\n var prune2Invalid = false;\n\n for (var n = 0; n < patternLabel2Num; n++) {\n if (graphNeighborUnitCountMap.dists[n] > patternSpDist[label2][n]) {\n prune2Invalid = true;\n break;\n }\n }\n\n if (prune2Invalid) {\n candidates.splice(m, 1);\n return \"continue\";\n } // prune3:若 candidates 中节点 cNode 到 kNeighborUnits 中标签为 label2 的节点 NDS 距离小于 patternNDSDist[beginNode.id-label2],删去它\n // TODO:prune3,currentPatternNDSDistArray 与 currentNDSDist 的比较\n // 计算 G 中所有 label2 节点到 cNode 的 NDS 距离\n // 所有 label2 节点到 cNode 的邻居相交诱导子图:\n\n\n var cNodePairMap = {};\n graphNeighborUnit.neighbors.forEach(function (neighborNode) {\n var dist = spmMap[\"\".concat(cNode.id, \"-\").concat(neighborNode.id)];\n cNodePairMap[\"\".concat(cNode.id, \"-\").concat(neighborNode.id)] = {\n start: nodeMap[cNode.id].idx,\n end: nodeMap[neighborNode.id].idx,\n distance: dist\n };\n }); // 更新 intGMap\n\n intGMap = getIntersectNeighborInducedGraph(cNodePairMap, kNeighborUnits, graphData, intGMap); // candidate 到它周围 label2 节点的 NDS 距离, key 是 node.id-node.id\n\n var currentNDSDistArray = [];\n Object.keys(cNodePairMap).forEach(function (key) {\n if (ndsDist[key]) {\n currentNDSDistArray.push(ndsDist[key]);\n return; // 缓存过则不需要再次计算\n }\n\n var intGraph = intGMap[key];\n ndsDist[key] = getMatchedCount(intGraph, dsG, nodeLabelProp, edgeLabelProp);\n currentNDSDistArray.push(ndsDist[key]);\n }); // 根据值为 currentNDSDistArray 从大到小排序\n\n currentNDSDistArray = currentNDSDistArray.sort(function (a, b) {\n return b - a;\n });\n var prune3Invalid = false;\n\n for (var n = 0; n < patternLabel2Num; n++) {\n if (currentNDSDistArray[n] < currentPatternNDSDistArray[n]) {\n prune3Invalid = true;\n break;\n }\n }\n\n if (prune3Invalid) {\n candidates.splice(m, 1);\n return \"continue\";\n }\n };\n\n for (var m = candidatesNum - 1; m >= 0; m--) {\n _loop_4(m);\n }\n });\n var candidateGraphs = []; // console.log(\n // \"----- stage3: going to splice neighbors for each candidate graph -------\"\n // );\n // candidates 经过筛选后,以每个 candidate 为中心,生成 Length-neighbor 的邻居诱导子图\n // 并在诱导子图中去除不可能在 Q 上找到匹配的点:在 Q 上不存在的 label,其他 label 到 candidate 的最大最短距离符合 Q、NDS 距离符合 Q\n\n candidates === null || candidates === void 0 ? void 0 : candidates.forEach(function (candidate) {\n var nodeIdx = nodeMap[candidate.id].idx;\n var lengthNeighborUnit = findKNeighborUnit(graphData.nodes, spm[nodeIdx], nodeIdx, nodeLabelProp, length);\n var neighborNodes = lengthNeighborUnit.neighbors; // 删除不可能找到匹配的邻居点\n\n var neighborNum = neighborNodes.length;\n var unmatched = false;\n\n for (var i = neighborNum - 1; i >= 0; i--) {\n // 如果通过裁剪,符合条件的节点数量已过少,说明不能匹配这个 candidate 相关的图\n if (neighborNodes.length + 1 < pattern.nodes.length) {\n unmatched = true;\n return;\n }\n\n var neighborNode = neighborNodes[i];\n var neighborLabel = neighborNode[nodeLabelProp]; // prune1: 若该邻居点的 label 不存在于 pattern 中,移除这个点\n\n if (!patternNodeLabelMap[neighborLabel] || !patternNodeLabelMap[neighborLabel].length) {\n neighborNodes.splice(i, 1);\n continue;\n } // prune2: 若该邻居点到 candidate 的最短路径比和它有相同 label 的节点到 beginPNode 的最大最短路径长度长,移除这个点\n // prune2.1: 如果没有这个标签到 beginPNode 的距离记录,说明 pattern 上(可能 beginPNode 是这个 label)没有其他这个 label 的节点\n\n\n if (!patternSpDist[neighborLabel] || !patternSpDist[neighborLabel].length) {\n neighborNodes.splice(i, 1);\n continue;\n }\n\n var key = \"\".concat(candidate.id, \"-\").concat(neighborNode.id); // prune2.2\n\n var distToCandidate = spmMap[key];\n var idx = patternSpDist[neighborLabel].length - 1;\n var maxDistWithLabelInPattern = patternSpDist[neighborLabel][idx]; // patternSpDist[neighborLabel] 已经按照从小到大排序\n\n if (distToCandidate > maxDistWithLabelInPattern) {\n neighborNodes.splice(i, 1);\n continue;\n }\n\n if (directed) {\n var keyBack = \"\".concat(neighborNode.id, \"-\").concat(candidate.id);\n var distFromCandidate = spmMap[keyBack];\n idx = patternSpDistBack[neighborLabel].length - 1;\n var maxBackDistWithLabelInPattern = patternSpDistBack[neighborLabel][idx];\n\n if (distFromCandidate > maxBackDistWithLabelInPattern) {\n neighborNodes.splice(i, 1);\n continue;\n }\n } // prune3: 若该邻居点到 candidate 的 NDS 距离比和它有相同 label 的节点到 beginPNode 的最小 NDS 距离小,移除这个点\n\n\n var ndsToCandidate = ndsDist[key] ? ndsDist[key] : getNDSDist(graphData, candidate, neighborNode, nodeMap, distToCandidate, kNeighborUnits, dsG, nodeLabelProp, edgeLabelProp, ndsDist, intGMap);\n var patternKey = \"\".concat(beginPNode.id, \"-\").concat(neighborLabel);\n var minNdsWithLabelInPattern = patternNDSDistMap[patternKey][patternNDSDistMap[patternKey].length - 1]; // patternNDSDist[key] 一定存在\n\n if (ndsToCandidate < minNdsWithLabelInPattern) {\n neighborNodes.splice(i, 1);\n continue;\n } // prune4: 若该邻居点的度数小于 pattern 同 label 节点最小度数,删去该点\n\n\n var _a = stashPatternNodeLabelDegreeMap(minPatternNodeLabelDegreeMap, neighborLabel, patternNodeMap, patternNodeLabelMap),\n minPatternNodeLabelDegree = _a.minPatternNodeLabelDegree,\n minPatternNodeLabelInDegree = _a.minPatternNodeLabelInDegree,\n minPatternNodeLabelOutDegree = _a.minPatternNodeLabelOutDegree;\n\n if (nodeMap[neighborNode.id].degree < minPatternNodeLabelDegree) {\n neighborNodes.splice(i, 1);\n continue;\n }\n } // 节点在个数上符合匹配(不少于 pattern 的节点个数),现在筛选相关边\n\n\n if (!unmatched) {\n candidateGraphs.push({\n nodes: [candidate].concat(neighborNodes)\n });\n }\n }); // console.log(\n // \"----- stage4: going to splice edges and neighbors for each candidate graph -------\"\n // );\n\n var undirectedLengthsToBeginPNode = (0, _dijkstra.default)(pattern, beginPNode.id, false).length;\n var undirectedLengthsToBeginPNodeLabelMap = {};\n\n if (directed) {\n Object.keys(undirectedLengthsToBeginPNode).forEach(function (nodeId) {\n var nodeLabel = patternNodeMap[nodeId].node[nodeLabelProp];\n if (!undirectedLengthsToBeginPNodeLabelMap[nodeLabel]) undirectedLengthsToBeginPNodeLabelMap[nodeLabel] = [undirectedLengthsToBeginPNode[nodeId]];else undirectedLengthsToBeginPNodeLabelMap[nodeLabel].push(undirectedLengthsToBeginPNode[nodeId]);\n });\n Object.keys(undirectedLengthsToBeginPNodeLabelMap).forEach(function (pLabel) {\n undirectedLengthsToBeginPNodeLabelMap[pLabel].sort(function (a, b) {\n return a - b;\n });\n });\n } else {\n undirectedLengthsToBeginPNodeLabelMap = patternSpDist;\n } // 现在 candidateGraphs 里面只有节点,进行边的筛选\n\n\n var candidateGraphNum = candidateGraphs.length;\n\n var _loop_2 = function _loop_2(i) {\n var candidateGraph = candidateGraphs[i];\n var candidate = candidateGraph.nodes[0];\n var candidateNodeLabelCountMap = {};\n var candidateNodeMap = {};\n candidateGraph.nodes.forEach(function (node, q) {\n candidateNodeMap[node.id] = {\n idx: q,\n node: node,\n degree: 0,\n inDegree: 0,\n outDegree: 0\n };\n var cNodeLabel = node[nodeLabelProp];\n if (!candidateNodeLabelCountMap[cNodeLabel]) candidateNodeLabelCountMap[cNodeLabel] = 1;else candidateNodeLabelCountMap[cNodeLabel]++;\n }); // 根据 candidate 和 neighborNodes 中的节点生成 G 的诱导子图\n // 即,将 graphData 上两端都在 candidateGraph.nodes 中的边放入 candidateEdges\n\n var candidateEdges = [];\n var edgeLabelCountMap = {};\n graphData.edges.forEach(function (edge) {\n if (candidateNodeMap[edge.source] && candidateNodeMap[edge.target]) {\n candidateEdges.push(edge);\n if (!edgeLabelCountMap[edge[edgeLabelProp]]) edgeLabelCountMap[edge[edgeLabelProp]] = 1;else edgeLabelCountMap[edge[edgeLabelProp]]++;\n candidateNodeMap[edge.source].degree++;\n candidateNodeMap[edge.target].degree++;\n candidateNodeMap[edge.source].outDegree++;\n candidateNodeMap[edge.target].inDegree++;\n }\n }); // prune:若有一个 edgeLabel 在 candidateGraph 上的个数少于 pattern,去除该图\n\n var pattenrEdgeLabelNum = Object.keys(patternEdgeLabelMap).length;\n var prunedByEdgeLabel = false;\n\n for (var e = 0; e < pattenrEdgeLabelNum; e++) {\n var label_1 = Object.keys(patternEdgeLabelMap)[e];\n\n if (!edgeLabelCountMap[label_1] || edgeLabelCountMap[label_1] < patternEdgeLabelMap[label_1].length) {\n prunedByEdgeLabel = true;\n break;\n }\n }\n\n if (prunedByEdgeLabel) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n } // 遍历 candidateEdges,进行边的筛选\n\n\n var candidateEdgeNum = candidateEdges.length; // prune:若边数过少,去除该图\n\n if (candidateEdgeNum < pattern.edges.length) {\n candidateGraphs.splice(i, 1);\n return \"break\";\n }\n\n var candidateGraphInvalid = false;\n\n var _loop_5 = function _loop_5(e) {\n var edge = candidateEdges[e];\n var edgeLabel = edge[edgeLabelProp];\n var patternEdgesWithLabel = patternEdgeLabelMap[edgeLabel]; // prune 1: 若边的 label 不存在于 pattern 边 label 中,去除该边\n\n if (!patternEdgesWithLabel || !patternEdgesWithLabel.length) {\n edgeLabelCountMap[edgeLabel]--; // 若这个 label 的 count 减少之后,该 label 的边数不足,去除该图\n\n if (patternEdgesWithLabel && edgeLabelCountMap[edgeLabel] < patternEdgesWithLabel.length) {\n candidateGraphInvalid = true;\n return \"break\";\n }\n\n candidateEdges.splice(e, 1);\n candidateNodeMap[edge.source].degree--;\n candidateNodeMap[edge.target].degree--;\n candidateNodeMap[edge.source].outDegree--;\n candidateNodeMap[edge.target].inDegree--;\n return \"continue\";\n } // prune 2: 若边的 label +两端 label 的三元组关系不能在 pattern 中找到,去除该边\n\n\n var sourceLabel = candidateNodeMap[edge.source].node[nodeLabelProp];\n var targetLabel = candidateNodeMap[edge.target].node[nodeLabelProp];\n var edgeMatched = false;\n patternEdgesWithLabel.forEach(function (patternEdge) {\n var patternSource = patternNodeMap[patternEdge.source].node;\n var patternTarget = patternNodeMap[patternEdge.target].node;\n if (patternSource[nodeLabelProp] === sourceLabel && patternTarget[nodeLabelProp] === targetLabel) edgeMatched = true;\n if (!directed && patternSource[nodeLabelProp] === targetLabel && patternTarget[nodeLabelProp] === sourceLabel) edgeMatched = true;\n });\n\n if (!edgeMatched) {\n edgeLabelCountMap[edgeLabel]--; // 若这个 label 的 count 减少之后,该 label 的边数不足,去除该图\n\n if (patternEdgesWithLabel && edgeLabelCountMap[edgeLabel] < patternEdgesWithLabel.length) {\n candidateGraphInvalid = true;\n return \"break\";\n }\n\n candidateEdges.splice(e, 1);\n candidateNodeMap[edge.source].degree--;\n candidateNodeMap[edge.target].degree--;\n candidateNodeMap[edge.source].outDegree--;\n candidateNodeMap[edge.target].inDegree--;\n return \"continue\";\n }\n };\n\n for (var e = candidateEdgeNum - 1; e >= 0; e--) {\n var state_2 = _loop_5(e);\n\n if (state_2 === \"break\") break;\n } // prune2: 删除边的过程中,发现边数过少/边 label 数过少时,去除该图\n\n\n if (candidateGraphInvalid) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n }\n\n candidateGraph.edges = candidateEdges;\n var lengthsToCandidate = (0, _dijkstra.default)(candidateGraph, candidateGraph.nodes[0].id, false).length;\n Object.keys(lengthsToCandidate).reverse().forEach(function (targetId) {\n if (targetId === candidateGraph.nodes[0].id || candidateGraphInvalid) return; // prune4: 通过上述裁剪,可能导致该邻居子图变为不连通。裁剪掉目前在这个邻居子图中和 candidate(第一个节点)不连通的节点\n\n if (lengthsToCandidate[targetId] === Infinity) {\n var targetNodeLabel = candidateNodeMap[targetId].node[nodeLabelProp];\n candidateNodeLabelCountMap[targetNodeLabel]--;\n\n if (candidateNodeLabelCountMap[targetNodeLabel] < patternNodeLabelMap[targetNodeLabel].length) {\n candidateGraphInvalid = true;\n return;\n }\n\n var idx = candidateGraph.nodes.indexOf(candidateNodeMap[targetId].node);\n candidateGraph.nodes.splice(idx, 1);\n candidateNodeMap[targetId] = undefined;\n return;\n } // prune5: 经过边裁剪后,可能又出现了最短路径过长的节点 (比 pattern 中同 label 的节点到 beginNode 最大最短距离远),删去这些节点\n\n\n var nLabel = nodeMap[targetId].node[nodeLabelProp];\n\n if (!undirectedLengthsToBeginPNodeLabelMap[nLabel] || !undirectedLengthsToBeginPNodeLabelMap[nLabel].length || lengthsToCandidate[targetId] > undirectedLengthsToBeginPNodeLabelMap[nLabel][undirectedLengthsToBeginPNodeLabelMap[nLabel].length - 1]) {\n var targetNodeLabel = candidateNodeMap[targetId].node[nodeLabelProp];\n candidateNodeLabelCountMap[targetNodeLabel]--;\n\n if (candidateNodeLabelCountMap[targetNodeLabel] < patternNodeLabelMap[targetNodeLabel].length) {\n candidateGraphInvalid = true;\n return;\n }\n\n var idx = candidateGraph.nodes.indexOf(candidateNodeMap[targetId].node);\n candidateGraph.nodes.splice(idx, 1);\n candidateNodeMap[targetId] = undefined;\n }\n });\n\n if (candidateGraphInvalid) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n }\n\n var degreeChanged = true;\n var loopCount = 0;\n\n while (degreeChanged && !candidateGraphInvalid) {\n degreeChanged = false; // candidate 度数不足,删去该图\n\n var condition = directed ? candidateNodeMap[candidate.id].degree < patternNodeMap[beginPNode.id].degree || candidateNodeMap[candidate.id].inDegree < patternNodeMap[beginPNode.id].inDegree || candidateNodeMap[candidate.id].outDegree < patternNodeMap[beginPNode.id].outDegree : candidateNodeMap[candidate.id].degree < patternNodeMap[beginPNode.id].degree;\n\n if (condition) {\n candidateGraphInvalid = true;\n break;\n } // candidate label 个数不足,删去该图\n\n\n if (candidateNodeLabelCountMap[candidate[nodeLabelProp]] < patternNodeLabelMap[candidate[nodeLabelProp]].length) {\n candidateGraphInvalid = true;\n break;\n } // prune6:去除度数过小的节点\n\n\n var currentCandidateNodeNum = candidateGraph.nodes.length;\n\n for (var o = currentCandidateNodeNum - 1; o >= 0; o--) {\n var cgNode = candidateGraph.nodes[o];\n var nodeDegree = candidateNodeMap[cgNode.id].degree;\n var nodeInDegree = candidateNodeMap[cgNode.id].inDegree;\n var nodeOutDegree = candidateNodeMap[cgNode.id].outDegree;\n var cNodeLabel = cgNode[nodeLabelProp];\n\n var _e = stashPatternNodeLabelDegreeMap(minPatternNodeLabelDegreeMap, cNodeLabel, patternNodeMap, patternNodeLabelMap),\n minPatternNodeLabelDegree = _e.minPatternNodeLabelDegree,\n minPatternNodeLabelInDegree = _e.minPatternNodeLabelInDegree,\n minPatternNodeLabelOutDegree = _e.minPatternNodeLabelOutDegree;\n\n var deleteCondition = directed ? nodeDegree < minPatternNodeLabelDegree || nodeInDegree < minPatternNodeLabelInDegree || nodeOutDegree < minPatternNodeLabelOutDegree : nodeDegree < minPatternNodeLabelDegree;\n\n if (deleteCondition) {\n candidateNodeLabelCountMap[cgNode[nodeLabelProp]]--; // 节点 label 个数不足\n\n if (candidateNodeLabelCountMap[cgNode[nodeLabelProp]] < patternNodeLabelMap[cgNode[nodeLabelProp]].length) {\n candidateGraphInvalid = true;\n break;\n }\n\n candidateGraph.nodes.splice(o, 1);\n candidateNodeMap[cgNode.id] = undefined;\n degreeChanged = true;\n }\n }\n\n if (candidateGraphInvalid || !degreeChanged && loopCount !== 0) break; // 经过 prune5 节点裁剪,删去端点已经不在 candidateGraph 中的边\n\n candidateEdgeNum = candidateEdges.length;\n\n for (var y = candidateEdgeNum - 1; y >= 0; y--) {\n var cedge = candidateEdges[y];\n\n if (!candidateNodeMap[cedge.source] || !candidateNodeMap[cedge.target]) {\n candidateEdges.splice(y, 1);\n var edgeLabel = cedge[edgeLabelProp];\n edgeLabelCountMap[edgeLabel]--;\n\n if (candidateNodeMap[cedge.source]) {\n candidateNodeMap[cedge.source].degree--;\n candidateNodeMap[cedge.source].outDegree--;\n }\n\n if (candidateNodeMap[cedge.target]) {\n candidateNodeMap[cedge.target].degree--;\n candidateNodeMap[cedge.target].inDegree--;\n } // 边 label 数量不足\n\n\n if (patternEdgeLabelMap[edgeLabel] && edgeLabelCountMap[edgeLabel] < patternEdgeLabelMap[edgeLabel].length) {\n candidateGraphInvalid = true;\n break;\n }\n\n degreeChanged = true;\n }\n }\n\n loopCount++;\n }\n\n if (candidateGraphInvalid) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n } // prune: 若节点/边数过少,节点/边 label 过少,去掉这个图\n\n\n if (candidateGraphInvalid || candidateGraph.nodes.length < pattern.nodes.length || candidateEdges.length < pattern.edges.length) {\n candidateGraphs.splice(i, 1);\n return \"continue\";\n }\n };\n\n for (var i = candidateGraphNum - 1; i >= 0; i--) {\n var state_1 = _loop_2(i);\n\n if (state_1 === \"break\") break;\n } // 此时已经生成的多个 candidateGraphs,可能有重复\n // console.log(\n // \"----- stage5: going to splice dulplicated candidate graphs -------\"\n // );\n // 删去 candidateGraphs 中一模一样的子图,通过边的 node-node-edgeLabel 作为 key,这类边个数作为 value,进行匹配\n\n\n var currentLength = candidateGraphs.length;\n\n var _loop_3 = function _loop_3(i) {\n var cg1 = candidateGraphs[i];\n var cg1EdgeMap = {}; // [node1.id-node2.id-edge.label]: count\n\n cg1.edges.forEach(function (edge) {\n var key = \"\".concat(edge.source, \"-\").concat(edge.target, \"-\").concat(edge.label);\n if (!cg1EdgeMap[key]) cg1EdgeMap[key] = 1;else cg1EdgeMap[key]++;\n });\n\n var _loop_6 = function _loop_6(j) {\n var cg2 = candidateGraphs[j];\n var cg2EdgeMap = {}; // [node1.id-node2.id-edge.label]: count\n\n cg2.edges.forEach(function (edge) {\n var key = \"\".concat(edge.source, \"-\").concat(edge.target, \"-\").concat(edge.label);\n if (!cg2EdgeMap[key]) cg2EdgeMap[key] = 1;else cg2EdgeMap[key]++;\n });\n var same = true;\n\n if (Object.keys(cg2EdgeMap).length !== Object.keys(cg1EdgeMap).length) {\n same = false;\n } else {\n Object.keys(cg1EdgeMap).forEach(function (key) {\n if (cg2EdgeMap[key] !== cg1EdgeMap[key]) same = false;\n });\n }\n\n if (same) {\n candidateGraphs.splice(j, 1);\n }\n };\n\n for (var j = currentLength - 1; j > i; j--) {\n _loop_6(j);\n }\n\n currentLength = candidateGraphs.length;\n };\n\n for (var i = 0; i <= currentLength - 1; i++) {\n _loop_3(i);\n }\n\n return candidateGraphs;\n};\n\nvar _default = GADDI;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9nYWRkaS5qcz9jOTEyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7O0FBRUEsYUFBYSxtQkFBTyxDQUFDLDZEQUFPOztBQUU1Qiw0Q0FBNEMsbUJBQU8sQ0FBQyxvR0FBaUI7O0FBRXJFLG9DQUFvQyxtQkFBTyxDQUFDLGdHQUFlOztBQUUzRCx1Q0FBdUMsbUJBQU8sQ0FBQywwRkFBWTs7QUFFM0QsWUFBWSxtQkFBTyxDQUFDLGtGQUFROztBQUU1QixzQ0FBc0MsdUNBQXVDLGdCQUFnQjs7QUFFN0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7O0FBRTdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDOztBQUVsQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7O0FBRTdCO0FBQ0E7QUFDQTtBQUNBLGdEQUFnRDtBQUNoRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCOztBQUU3QjtBQUNBOztBQUVBO0FBQ0EsOENBQThDO0FBQzlDLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0RBQStEO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRDs7QUFFckQ7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQLGdEQUFnRDs7QUFFaEQ7QUFDQTs7QUFFQSxtQkFBbUIscUJBQXFCO0FBQ3hDO0FBQ0Esa0RBQWtEOztBQUVsRDtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNEQUFzRCxrQkFBa0IsZ0NBQWdDO0FBQ3hHO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1Q0FBdUM7O0FBRXZDO0FBQ0E7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQSxzQkFBc0I7O0FBRXRCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLEVBQUU7O0FBRVAseUJBQXlCOztBQUV6Qix1QkFBdUI7O0FBRXZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCOztBQUUvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTCxvQ0FBb0M7O0FBRXBDLHlCQUF5Qjs7QUFFekI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLLEVBQUU7O0FBRVA7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsa0JBQWtCO0FBQ25DO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsdUJBQXVCLFlBQVk7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDZGQUE2Rjs7QUFFN0Y7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHVCQUF1Qjs7QUFFdkIsNkRBQTZEO0FBQzdEO0FBQ0E7O0FBRUEsa0VBQWtFO0FBQ2xFO0FBQ0E7O0FBRUEseURBQXlEO0FBQ3pEO0FBQ0E7O0FBRUEscUVBQXFFO0FBQ3JFOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNENBQTRDOzs7QUFHNUM7QUFDQSxtR0FBbUc7O0FBRW5HO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBOztBQUVBO0FBQ0Esd0ZBQXdGO0FBQ3hGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG1HQUFtRztBQUNuRztBQUNBO0FBQ0Esa0NBQWtDLDRCQUE0Qjs7QUFFOUQsMEZBQTBGOztBQUUxRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsZ0VBQWdFOztBQUVoRSwwQ0FBMEM7O0FBRTFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUcsRUFBRTtBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckM7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsRUFBRTtBQUNMOztBQUVBLHdDQUF3Qzs7QUFFeEMsNkJBQTZCO0FBQzdCLHlCQUF5QjtBQUN6QjtBQUNBLHlCQUF5QjtBQUN6Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUssRUFBRTtBQUNQO0FBQ0E7O0FBRUEsa0lBQWtJOztBQUVsSTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxnQ0FBZ0M7O0FBRWhDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7OztBQUdBOztBQUVBLHFCQUFxQixzQkFBc0I7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxFQUFFOztBQUVULG1HQUFtRzs7QUFFbkc7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTyxFQUFFOztBQUVUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUEscUJBQXFCLHNCQUFzQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUNBQW1DLFFBQVE7QUFDM0M7QUFDQTtBQUNBLEdBQUc7QUFDSCwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EscURBQXFEOztBQUVyRDtBQUNBOztBQUVBLGlDQUFpQyxRQUFRO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxzREFBc0Q7O0FBRXREO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUVBQXFFOztBQUVyRTtBQUNBO0FBQ0Esd0VBQXdFOztBQUV4RTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBLDZHQUE2Rzs7QUFFN0c7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHLEVBQUU7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esd0pBQXdKO0FBQ3hKLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBLEdBQUc7OztBQUdIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4RkFBOEY7QUFDOUYsS0FBSyxFQUFFO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdHQUFnRztBQUNoRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7O0FBRUEsbUJBQW1CLHlCQUF5QjtBQUM1Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMLGlEQUFpRDs7QUFFakQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUVBQWlFOztBQUVqRTtBQUNBLHVDQUF1Qzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQSx1Q0FBdUM7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsc0NBQXNDLFFBQVE7QUFDOUM7O0FBRUE7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtRkFBbUY7O0FBRW5GO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLDRCQUE0Qjs7QUFFNUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7O0FBRUEsK0NBQStDLFFBQVE7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLDhEQUE4RDs7QUFFOUQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw0RUFBNEU7O0FBRTVFOztBQUVBLHdDQUF3QyxRQUFRO0FBQ2hEOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7OztBQUdYO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUNBQXFDLFFBQVE7QUFDN0M7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQSx3QkFBd0I7O0FBRXhCO0FBQ0E7QUFDQSxnREFBZ0Q7QUFDaEQsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsMEJBQTBCOztBQUUxQjtBQUNBO0FBQ0Esa0RBQWtEO0FBQ2xELE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUNBQW1DLE9BQU87QUFDMUM7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGlCQUFpQix3QkFBd0I7QUFDekM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9nYWRkaS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX3RzbGliID0gcmVxdWlyZShcInRzbGliXCIpO1xuXG52YXIgX2Zsb3lkV2Fyc2hhbGwgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2Zsb3lkV2Fyc2hhbGxcIikpO1xuXG52YXIgX2dTcGFuID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9nU3Bhbi9nU3BhblwiKSk7XG5cbnZhciBfZGlqa3N0cmEgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2RpamtzdHJhXCIpKTtcblxudmFyIF91dGlsID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLyoqXG4gKiDkuLogZ3JhcGhEYXRhIOS4reavj+S4quiKgueCueeUn+aIkOmCu+WxheWNleWFg+aVsOe7hFxuICogQHBhcmFtIGdyYXBoRGF0YVxuICogQHBhcmFtIHNwbVxuICogQHBhcmFtIG5vZGVMYWJlbFByb3BcbiAqIEBwYXJhbSBrIGst6L+R6YK7XG4gKi9cbnZhciBmaW5kS05laWdoYm9yVW5pdHMgPSBmdW5jdGlvbiBmaW5kS05laWdoYm9yVW5pdHMoZ3JhcGhEYXRhLCBzcG0sIG5vZGVMYWJlbFByb3AsIGspIHtcbiAgaWYgKG5vZGVMYWJlbFByb3AgPT09IHZvaWQgMCkge1xuICAgIG5vZGVMYWJlbFByb3AgPSAnY2x1c3Rlcic7XG4gIH1cblxuICBpZiAoayA9PT0gdm9pZCAwKSB7XG4gICAgayA9IDI7XG4gIH1cblxuICB2YXIgdW5pdHMgPSBbXTtcbiAgdmFyIG5vZGVzID0gZ3JhcGhEYXRhLm5vZGVzO1xuICBzcG0uZm9yRWFjaChmdW5jdGlvbiAocm93LCBpKSB7XG4gICAgdW5pdHMucHVzaChmaW5kS05laWdoYm9yVW5pdChub2Rlcywgcm93LCBpLCBub2RlTGFiZWxQcm9wLCBrKSk7XG4gIH0pO1xuICByZXR1cm4gdW5pdHM7XG59O1xuXG52YXIgZmluZEtOZWlnaGJvclVuaXQgPSBmdW5jdGlvbiBmaW5kS05laWdoYm9yVW5pdChub2Rlcywgcm93LCBpLCBub2RlTGFiZWxQcm9wLCBrKSB7XG4gIHZhciB1bml0Tm9kZUlkeHMgPSBbaV07XG4gIHZhciBuZWlnaGJvcnMgPSBbXTtcbiAgdmFyIGxhYmVsQ291bnRNYXAgPSB7fTtcbiAgcm93LmZvckVhY2goZnVuY3Rpb24gKHYsIGopIHtcbiAgICBpZiAodiA8PSBrICYmIGkgIT09IGopIHtcbiAgICAgIHVuaXROb2RlSWR4cy5wdXNoKGopO1xuICAgICAgbmVpZ2hib3JzLnB1c2gobm9kZXNbal0pO1xuICAgICAgdmFyIGxhYmVsID0gbm9kZXNbal1bbm9kZUxhYmVsUHJvcF07XG4gICAgICBpZiAoIWxhYmVsQ291bnRNYXBbbGFiZWxdKSBsYWJlbENvdW50TWFwW2xhYmVsXSA9IHtcbiAgICAgICAgY291bnQ6IDEsXG4gICAgICAgIGRpc3RzOiBbdl1cbiAgICAgIH07ZWxzZSB7XG4gICAgICAgIGxhYmVsQ291bnRNYXBbbGFiZWxdLmNvdW50Kys7XG4gICAgICAgIGxhYmVsQ291bnRNYXBbbGFiZWxdLmRpc3RzLnB1c2godik7XG4gICAgICB9XG4gICAgfVxuICB9KTsgLy8g5bCGIGxhYmVsQ291bnRNYXAg5Lit55qEIGRpc3RzIOaMieeFp+S7juWwj+WIsOWkp+aOkuW6j++8jOaWueS+v+WQjumdouS9v+eUqFxuXG4gIE9iamVjdC5rZXlzKGxhYmVsQ291bnRNYXApLmZvckVhY2goZnVuY3Rpb24gKGxhYmVsKSB7XG4gICAgbGFiZWxDb3VudE1hcFtsYWJlbF0uZGlzdHMgPSBsYWJlbENvdW50TWFwW2xhYmVsXS5kaXN0cy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gYSAtIGI7XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIG5vZGVJZHg6IGksXG4gICAgbm9kZUlkOiBub2Rlc1tpXS5pZCxcbiAgICBub2RlSWR4czogdW5pdE5vZGVJZHhzLFxuICAgIG5laWdoYm9yczogbmVpZ2hib3JzLFxuICAgIG5laWdoYm9yTnVtOiB1bml0Tm9kZUlkeHMubGVuZ3RoIC0gMSxcbiAgICBub2RlTGFiZWxDb3VudE1hcDogbGFiZWxDb3VudE1hcFxuICB9O1xufTtcbi8qKlxuICog6ZqP5py65a+75om+54K55a+577yM5ruh6Laz6Led56a75bCP5LqOIGtcbiAqIEBwYXJhbSBrIOWPguaVsCBr77yM6KGo56S6IGst6L+R6YK7XG4gKiBAcGFyYW0gbm9kZU51bSDlj4LmlbAgbGVuZ3RoXG4gKiBAcGFyYW0gbWF4Tm9kZVBhaXJOdW0g5a+75om+54K55a+555qE5pWw6YeP5LiN6LaF6L+HIG1heE5vZGVQYWlyTnVtXG4gKiBAcGFyYW0gc3BtIOacgOefrei3r+W+hOefqemYtVxuICovXG5cblxudmFyIGZpbmROb2RlUGFpcnNSYW5kb21seSA9IGZ1bmN0aW9uIGZpbmROb2RlUGFpcnNSYW5kb21seShrLCBub2RlTnVtLCBtYXhOb2RlUGFpck51bSwga05laWdoYm9yVW5pdHMsIHNwbSkge1xuICAvLyDmr4/kuKroioLngrnpnIDopoHpmo/mnLrmib7lh7rnmoTngrnlr7nmlbBcbiAgdmFyIG5vZGVQYWlyTnVtRWFjaE5vZGUgPSBNYXRoLmNlaWwobWF4Tm9kZVBhaXJOdW0gLyBub2RlTnVtKTtcbiAgdmFyIG5vZGVQYWlyTWFwID0ge307XG4gIHZhciBmb3VuZE5vZGVQYWlyQ291bnQgPSAwOyAvLyDpgY3ljoboioLngrnvvIzkuLrmr4/kuKroioLngrnpmo/mnLrmib7lh7ogbm9kZVBhaXJOdW1FYWNoTm9kZSDkuKrngrnlr7nvvIzmu6HotrPot53nprvlsI/kuo4ga+OAguaJvuWIsOeahOeCueWvueaVsOmHj+i2hei/hyBtYXhOb2RlUGFpck51bSDmiJbmiYDmnInoioLngrnpgY3ljobnu5PmnZ/ml7bnu4jmraJcblxuICBrTmVpZ2hib3JVbml0cy5mb3JFYWNoKGZ1bmN0aW9uICh1bml0LCBpKSB7XG4gICAgLy8g6Iul5pyq6L6+5YiwIG5vZGVQYWlyTnVtRWFjaE5vZGXvvIzmiJblvqrnjq/mrKHmlbDlsI/kuo7mnIDlpKflvqrnjq/mrKHmlbAoMiAqIG5vZGVOdW0p77yM57un57ut5b6q546vXG4gICAgdmFyIG5vZGVQYWlyRm9ySUNvdW50ID0gMDtcbiAgICB2YXIgb3V0ZXJMb29wQ291bnQgPSAwO1xuICAgIHZhciBuZWlnaGJvcnMgPSB1bml0Lm5vZGVJZHhzOyAvLyB0aGUgZmlyc3Qgb25lIGlzIHRoZSBjZW50ZXIgbm9kZVxuXG4gICAgdmFyIG5laWdoYm9yTnVtID0gdW5pdC5uZWlnaGJvck51bSAtIDE7XG5cbiAgICB3aGlsZSAobm9kZVBhaXJGb3JJQ291bnQgPCBub2RlUGFpck51bUVhY2hOb2RlKSB7XG4gICAgICAvLyDlj6bkuIDnq6/oioLngrnlnKjoioLngrnmlbDnu4TkuK3nmoTnmoQgaW5kZXhcbiAgICAgIHZhciBvaWR4ID0gbmVpZ2hib3JzWzEgKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBuZWlnaGJvck51bSldO1xuICAgICAgdmFyIGlubmVyTG9vcENvdW50ID0gMDsgLy8g6Iul6ZqP5py65b6X5Yiw55qE5Y+m5LiA56uvIGlkeCDkuI3nrKblkIjmnaHku7bvvIzliJnnu6fnu60gcmFuZG9t44CC5p2h5Lu25piv5LiN5piv5ZCM5LiA5Liq6IqC54K544CB6L+Z5Liq54K55a+55rKh5pyJ6KKr6K6w5b2V6L+H44CB6Led56a75bCP5LqOIGtcblxuICAgICAgd2hpbGUgKG5vZGVQYWlyTWFwW1wiXCIuY29uY2F0KGksIFwiLVwiKS5jb25jYXQob2lkeCldIHx8IG5vZGVQYWlyTWFwW1wiXCIuY29uY2F0KG9pZHgsIFwiLVwiKS5jb25jYXQoaSldKSB7XG4gICAgICAgIG9pZHggPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBub2RlTnVtKTtcbiAgICAgICAgaW5uZXJMb29wQ291bnQrKztcbiAgICAgICAgaWYgKGlubmVyTG9vcENvdW50ID4gMiAqIG5vZGVOdW0pIGJyZWFrOyAvLyDlvqrnjq/mrKHmlbDlpKfkuo7mnIDlpKflvqrnjq/mrKHmlbAoMiAqIG5vZGVOdW0p6Lez5Ye65b6q546v77yM6YG/5YWN5q275b6q546vXG4gICAgICB9XG5cbiAgICAgIGlmIChpbm5lckxvb3BDb3VudCA8IDIgKiBub2RlTnVtKSB7XG4gICAgICAgIC8vIOacqui+vuWIsOacgOWkp+W+queOr+asoeaVsO+8jOivtOaYjuaJvuWIsOS6huWQiOmAgueahOWPpuS4gOerr1xuICAgICAgICBub2RlUGFpck1hcFtcIlwiLmNvbmNhdChpLCBcIi1cIikuY29uY2F0KG9pZHgpXSA9IHtcbiAgICAgICAgICBzdGFydDogaSxcbiAgICAgICAgICBlbmQ6IG9pZHgsXG4gICAgICAgICAgZGlzdGFuY2U6IHNwbVtpXVtvaWR4XVxuICAgICAgICB9O1xuICAgICAgICBub2RlUGFpckZvcklDb3VudCsrO1xuICAgICAgICBmb3VuZE5vZGVQYWlyQ291bnQrKzsgLy8g5aaC5p6c5b2T5YmN5om+5Yiw55qE54K55a+55pWw6YeP6L6+5Yiw5LqG5LiK6ZmQ77yM6L+U5Zue57uT5p6cXG5cbiAgICAgICAgaWYgKGZvdW5kTm9kZVBhaXJDb3VudCA+PSBtYXhOb2RlUGFpck51bSkgcmV0dXJuIG5vZGVQYWlyTWFwO1xuICAgICAgfVxuXG4gICAgICBvdXRlckxvb3BDb3VudCsrO1xuICAgICAgaWYgKG91dGVyTG9vcENvdW50ID4gMiAqIG5vZGVOdW0pIGJyZWFrOyAvLyDlvqrnjq/mrKHmlbDlpKfkuo7mnIDlpKflvqrnjq/mrKHmlbAoMiAqIG5vZGVOdW0p6Lez5Ye65b6q546v77yM6YG/5YWN5q275b6q546vXG4gICAgfSAvLyDov5nkuKroioLngrnmsqHmnInmib7liLDotrPlpJ8gbm9kZVBhaXJOdW1FYWNoTm9kZSDnmoTngrnlr7njgILmm7TmlrAgbm9kZVBhaXJOdW1FYWNoTm9kZe+8jOiuqeWQjue7reiKgueCueaJvuabtOWkmueahOeCueWvuVxuXG5cbiAgICBpZiAobm9kZVBhaXJGb3JJQ291bnQgPCBub2RlUGFpck51bUVhY2hOb2RlKSB7XG4gICAgICB2YXIgZ2FwID0gbm9kZVBhaXJOdW1FYWNoTm9kZSAtIG5vZGVQYWlyRm9ySUNvdW50O1xuICAgICAgbm9kZVBhaXJOdW1FYWNoTm9kZSA9IChub2RlUGFpck51bUVhY2hOb2RlICsgZ2FwKSAvIChub2RlTnVtIC0gaSAtIDEpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBub2RlUGFpck1hcDtcbn07XG4vKipcbiAqIOiuoeeul+aJgOaciSBub2RlUGFpck1hcCDkuK3oioLngrnlr7nnmoTnm7jkuqTpgrvlsYXor7Hlr7zlrZDlm75cbiAqIEBwYXJhbSBub2RlUGFpck1hcCDoioLngrnlr7kgbWFw77yMa2V5IOS4uiBub2RlMS5pZC1ub2RlMi5pZO+8jHZhbHVlIOS4uiB7IHN0YXJ0Tm9kZUlkeCwgZW5kTm9kZUlkeCwgZGlzdGFuY2UgfVxuICogQHBhcmFtIG5laWdoYm9yVW5pdHMg5q+P5Liq6IqC54K555qE6YK75bGF5YWD5pWw57uEXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWOn+WbvuaVsOaNrlxuICogQHBhcmFtIGVkZ2VNYXAg6L6555qEIG1hcO+8jOaWueS+v+ajgOe0olxuICogQHBhcmFtIGNhY2hlZEluZHVjZWRHcmFwaE1hcCDnvJPlrZjnmoTnu5PmnpzvvIzkuIvmrKHov5vlhaXor6Xlh73mlbDlsIbnu6fnu63mm7TmlrDor6XnvJPlrZjvvIzoi6Uga2V5IOWcqOe8k+WtmOS4reWtmOWcqOWImeS4jemcgOimgemHjeWkjeiuoeeul1xuICovXG5cblxudmFyIGdldEludGVyc2VjdE5laWdoYm9ySW5kdWNlZEdyYXBoID0gZnVuY3Rpb24gZ2V0SW50ZXJzZWN0TmVpZ2hib3JJbmR1Y2VkR3JhcGgobm9kZVBhaXJNYXAsIG5laWdoYm9yVW5pdHMsIGdyYXBoRGF0YSwgY2FjaGVkSW5kdWNlZEdyYXBoTWFwKSB7XG4gIHZhciBub2RlcyA9IGdyYXBoRGF0YS5ub2RlcztcbiAgaWYgKCFjYWNoZWRJbmR1Y2VkR3JhcGhNYXApIGNhY2hlZEluZHVjZWRHcmFwaE1hcCA9IHt9O1xuICBPYmplY3Qua2V5cyhub2RlUGFpck1hcCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgdmFyIF9hLCBfYjtcblxuICAgIGlmIChjYWNoZWRJbmR1Y2VkR3JhcGhNYXAgJiYgY2FjaGVkSW5kdWNlZEdyYXBoTWFwW2tleV0pIHJldHVybjtcbiAgICBjYWNoZWRJbmR1Y2VkR3JhcGhNYXBba2V5XSA9IHtcbiAgICAgIG5vZGVzOiBbXSxcbiAgICAgIGVkZ2VzOiBbXVxuICAgIH07XG4gICAgdmFyIHBhaXIgPSBub2RlUGFpck1hcFtrZXldO1xuICAgIHZhciBzdGFydFVuaXROb2RlSWRzID0gKF9hID0gbmVpZ2hib3JVbml0c1twYWlyLnN0YXJ0XSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm5vZGVJZHhzO1xuICAgIHZhciBlbmRVbml0Tm9kZUlkcyA9IChfYiA9IG5laWdoYm9yVW5pdHNbcGFpci5lbmRdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Iubm9kZUlkeHM7XG4gICAgaWYgKCFzdGFydFVuaXROb2RlSWRzIHx8ICFlbmRVbml0Tm9kZUlkcykgcmV0dXJuOyAvLyDkuI3lrZjlnKjpgrvlhYPvvIzov5Tlm57nqbrlm75cblxuICAgIHZhciBlbmRTZXQgPSBuZXcgU2V0KGVuZFVuaXROb2RlSWRzKTtcbiAgICB2YXIgaW50ZXJzZWN0ID0gc3RhcnRVbml0Tm9kZUlkcy5maWx0ZXIoZnVuY3Rpb24gKHgpIHtcbiAgICAgIHJldHVybiBlbmRTZXQuaGFzKHgpO1xuICAgIH0pOyAvLyDlj6/og73kvJrniIbmoIjvvIjlnKggMTU4MCArIDYgbm9kZXMgZnVsbC1jb25uZWN0ZWQg5pe25Ye6546w77yJXG5cbiAgICBpZiAoIWludGVyc2VjdCB8fCAhaW50ZXJzZWN0Lmxlbmd0aCkgcmV0dXJuOyAvLyDmsqHmnInkuqTpm4bvvIzov5Tlm57nqbrlm75cblxuICAgIHZhciBpbnRlcnNlY3RJZE1hcCA9IHt9O1xuICAgIHZhciBpbnRlcnNlY3RMZW5ndGggPSBpbnRlcnNlY3QubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbnRlcnNlY3RMZW5ndGg7IGkrKykge1xuICAgICAgdmFyIG5vZGUgPSBub2Rlc1tpbnRlcnNlY3RbaV1dO1xuICAgICAgY2FjaGVkSW5kdWNlZEdyYXBoTWFwW2tleV0ubm9kZXMucHVzaChub2RlKTsgLy8g5bCG5Lqk6ZuG5Lit55qE54K55Yqg5YWl6K+x5a+85a2Q5Zu+XG5cbiAgICAgIGludGVyc2VjdElkTWFwW25vZGUuaWRdID0gdHJ1ZTtcbiAgICB9IC8vIOmBjeWOhuaJgOaciei+ueaVsOaNru+8jOWmguaenOi+ueeahOS4pOerr+mDveWcqOS6pOmbhuS4re+8jOWwhuivpei+ueWKoOWFpeivseWvvOWtkOWbvlxuXG5cbiAgICBncmFwaERhdGEuZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgaWYgKGludGVyc2VjdElkTWFwW2VkZ2Uuc291cmNlXSAmJiBpbnRlcnNlY3RJZE1hcFtlZGdlLnRhcmdldF0pIGNhY2hlZEluZHVjZWRHcmFwaE1hcFtrZXldLmVkZ2VzLnB1c2goZWRnZSk7XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gY2FjaGVkSW5kdWNlZEdyYXBoTWFwO1xufTtcbi8qKlxuICog6K6h566XIHN0cmN1dHJlIOWcqCBncmFwaCDkuIrnmoTljLnphY3mlbDph49cbiAqIEBwYXJhbSBncmFwaCDlm77mlbDmja5cbiAqIEBwYXJhbSBzdHJ1Y3R1cmUg55uu5YmN5pSv5oyB5Y+q5pyJ5Lik5Liq6IqC54K55LiA5p2h6L6555qE5pyA566A5Y2V57uT5p6EXG4gKiBAcGFyYW0gbm9kZUxhYmVsUHJvcCDoioLngrnnsbvlnovlrZfmrrXlkI1cbiAqIEBwYXJhbSBlZGdlTGFiZWxQcm9wIOi+ueexu+Wei+Wtl+auteWQjVxuICovXG5cblxudmFyIGdldE1hdGNoZWRDb3VudCA9IGZ1bmN0aW9uIGdldE1hdGNoZWRDb3VudChncmFwaCwgc3RydWN0dXJlLCBub2RlTGFiZWxQcm9wLCBlZGdlTGFiZWxQcm9wKSB7XG4gIHZhciBfYSwgX2I7XG5cbiAgdmFyIG5vZGVNYXAgPSB7fTtcbiAgZ3JhcGgubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgIG5vZGVNYXBbbm9kZS5pZF0gPSBub2RlO1xuICB9KTtcbiAgdmFyIGNvdW50ID0gMDtcbiAgaWYgKCEoKF9hID0gc3RydWN0dXJlID09PSBudWxsIHx8IHN0cnVjdHVyZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3RydWN0dXJlLmVkZ2VzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSB8fCAoKF9iID0gc3RydWN0dXJlID09PSBudWxsIHx8IHN0cnVjdHVyZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3RydWN0dXJlLm5vZGVzKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubGVuZ3RoKSA8IDIpIHJldHVybiAwO1xuICBncmFwaC5lZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XG4gICAgdmFyIHNvdXJjZUxhYmVsID0gbm9kZU1hcFtlLnNvdXJjZV1bbm9kZUxhYmVsUHJvcF07XG4gICAgdmFyIHRhcmdldExhYmVsID0gbm9kZU1hcFtlLnRhcmdldF1bbm9kZUxhYmVsUHJvcF07XG4gICAgdmFyIHN0ck5vZGVMYWJlbDEgPSBzdHJ1Y3R1cmUgPT09IG51bGwgfHwgc3RydWN0dXJlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdHJ1Y3R1cmUubm9kZXNbMF1bbm9kZUxhYmVsUHJvcF07XG4gICAgdmFyIHN0ck5vZGVMYWJlbDIgPSBzdHJ1Y3R1cmUgPT09IG51bGwgfHwgc3RydWN0dXJlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdHJ1Y3R1cmUubm9kZXNbMV1bbm9kZUxhYmVsUHJvcF07XG4gICAgdmFyIHN0ckVkZ2VMYWJlbCA9IHN0cnVjdHVyZSA9PT0gbnVsbCB8fCBzdHJ1Y3R1cmUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0cnVjdHVyZS5lZGdlc1swXVtlZGdlTGFiZWxQcm9wXTtcbiAgICBpZiAoZVtlZGdlTGFiZWxQcm9wXSAhPT0gc3RyRWRnZUxhYmVsKSByZXR1cm47XG5cbiAgICBpZiAoc291cmNlTGFiZWwgPT09IHN0ck5vZGVMYWJlbDEgJiYgdGFyZ2V0TGFiZWwgPT09IHN0ck5vZGVMYWJlbDIgfHwgc291cmNlTGFiZWwgPT09IHN0ck5vZGVMYWJlbDIgJiYgdGFyZ2V0TGFiZWwgPT09IHN0ck5vZGVMYWJlbDEpIHtcbiAgICAgIGNvdW50Kys7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGNvdW50O1xufTtcbi8qKlxuICogc3RydWN0dXJlcyDkuK3lr7vmib7mnIDlhbfmnInku6PooajmgKfnmoTkuIDkuKrjgILov5nkuKrnu5PmnoTmmK/kvb/lvpcgbWF0Y2hlZENvdW50TWFwIOeahOWIhue7hOaWueW8j+exu+WGhemXtOi3neacgOWwj++8jOexu+mXtOmXtOi3neacgOWkp1xuICogQHBhcmFtIG1hdGNoZWRDb3VudE1hcCDmr4/kuKogc3RydWN0dXJlIOWIhuexu+WQjueahOWQhOWbvuWMuemFjeaVsOmHj++8jOagvOW8jyB7IFtzdHJjdHVyZS5pZHhdOiB7IFtpbnRlckluZHVjZWRHcmFwaEtleV06IGNvdW50IH0gfVxuICogQHBhcmFtIHN0cnVjdHVyZU51bSBzdHJjdXR1cmUg5Liq5pWw77yM5LiOIG1hdGNoZWRDb3VudE1hcC5sZW5ndGgg5a+55bqUXG4gKiBAcGFyYW0gc3RydWN0dXJlc1xuICovXG5cblxudmFyIGZpbmRSZXByZXNlbnRTdHJ1Y3R1cmUgPSBmdW5jdGlvbiBmaW5kUmVwcmVzZW50U3RydWN0dXJlKG1hdGNoZWRDb3VudE1hcCwgc3RydWN0dXJlTnVtLCBzdHJ1Y3R1cmVzKSB7XG4gIHZhciBtYXhPZmZzZXQgPSBJbmZpbml0eSxcbiAgICAgIHJlcHJlc2VudENsdXN0ZXJUeXBlID0gMDtcblxuICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIF9sb29wXzEoaSkge1xuICAgIC8vIOS4gOenjeWIhue7hOeahCBtYXDvvIxrZXkg5pivIGludEdyYXBoIOeahCBrZXnvvIx2YWx1ZSDmmK8gc3RydWN0dXJlc1tpXSDnmoTljLnphY3kuKrmlbBcbiAgICB2YXIgY291bnRNYXBJID0gbWF0Y2hlZENvdW50TWFwW2ldOyAvLyDmjInnhacgdmFsdWUg5Li66K+l57uE5o6S5bqP77yM55Sf5oiQIGtleXMg55qE5pWw57uE77yaXG5cbiAgICB2YXIgc29ydGVkR3JhcGhLZXlzID0gT2JqZWN0LmtleXMoY291bnRNYXBJKS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gY291bnRNYXBJW2FdIC0gY291bnRNYXBJW2JdO1xuICAgIH0pOyAvLyDlhbEgMTAwIOS4qiBncmFwaEtleXPvvIzlsIYgZ3JhcGhLZXlzIOaMiemhuuW6j+WIhuS4uiBncm91cE51bSDnu4RcblxuICAgIHZhciBncm91cE51bSA9IDEwO1xuICAgIHZhciBjbHVzdGVycyA9IFtdOyAvLyDmgLvlhbHmnIkgZ3JvdXBOdW0g5Liq6aG5XG5cbiAgICBzb3J0ZWRHcmFwaEtleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5LCBqKSB7XG4gICAgICBpZiAoIWNsdXN0ZXJzW2ogJSBncm91cE51bV0pIGNsdXN0ZXJzW2ogJSBncm91cE51bV0gPSB7XG4gICAgICAgIGdyYXBoczogW10sXG4gICAgICAgIHRvdGFsQ291bnQ6IDAsXG4gICAgICAgIGF2ZUNvdW50OiAwXG4gICAgICB9O1xuICAgICAgY2x1c3RlcnNbaiAlIGdyb3VwTnVtXS5ncmFwaHMucHVzaChrZXkpO1xuICAgICAgY2x1c3RlcnNbaiAlIGdyb3VwTnVtXS50b3RhbENvdW50ICs9IGNvdW50TWFwSVtrZXldO1xuICAgIH0pOyAvLyDorqHnrpcgY2x1c3RlciDkuI4gY2x1c3RlciDkuYvpl7TnmoTot53nprsgaW5uZXJEaXN077yM5q+P5LiqIGNsdXN0ZXIg5YaF6YOo55qE6Led56a7IGludHJhRGlzdFxuXG4gICAgdmFyIGF2ZUludHJhRGlzdCA9IDA7IC8vIOivpeexu+eahOexu+WGheW5s+Wdh+WAvFxuXG4gICAgdmFyIGF2ZUNvdW50cyA9IFtdOyAvLyDnsbvlhoXlubPlnYfljLnphY3mlbDph4/vvIzlsIbnlKjkuo7orqHnrpfnsbvpl7Tot53nprtcblxuICAgIGNsdXN0ZXJzLmZvckVhY2goZnVuY3Rpb24gKGdyYXBoc0luQ2x1c3Rlcikge1xuICAgICAgLy8g57G75YaF5Z2H5YC8XG4gICAgICB2YXIgYXZlQ291bnQgPSBncmFwaHNJbkNsdXN0ZXIudG90YWxDb3VudCAvIGdyYXBoc0luQ2x1c3Rlci5ncmFwaHMubGVuZ3RoO1xuICAgICAgZ3JhcGhzSW5DbHVzdGVyLmF2ZUNvdW50ID0gYXZlQ291bnQ7XG4gICAgICBhdmVDb3VudHMucHVzaChhdmVDb3VudCk7IC8vIOWvueS6juavj+exu++8jOiuoeeul+exu+WGhemXtOi3neW5s+Wdh+WAvFxuXG4gICAgICB2YXIgYXZlSW50cmFQZXJDbHVzdGVyID0gMDtcbiAgICAgIHZhciBncmFwaHNOdW0gPSBncmFwaHNJbkNsdXN0ZXIubGVuZ3RoO1xuICAgICAgZ3JhcGhzSW5DbHVzdGVyLmdyYXBocy5mb3JFYWNoKGZ1bmN0aW9uIChncmFwaEtleTEsIGopIHtcbiAgICAgICAgdmFyIGdyYXBoMUNvdW50ID0gY291bnRNYXBJW2dyYXBoS2V5MV07XG4gICAgICAgIGdyYXBoc0luQ2x1c3Rlci5ncmFwaHMuZm9yRWFjaChmdW5jdGlvbiAoZ3JhcGhLZXkyLCBrKSB7XG4gICAgICAgICAgaWYgKGogPT09IGspIHJldHVybjtcbiAgICAgICAgICBhdmVJbnRyYVBlckNsdXN0ZXIgKz0gTWF0aC5hYnMoZ3JhcGgxQ291bnQgLSBjb3VudE1hcElbZ3JhcGhLZXkyXSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBhdmVJbnRyYVBlckNsdXN0ZXIgLz0gZ3JhcGhzTnVtICogKGdyYXBoc051bSAtIDEpIC8gMjtcbiAgICAgIGF2ZUludHJhRGlzdCArPSBhdmVJbnRyYVBlckNsdXN0ZXI7XG4gICAgfSk7XG4gICAgYXZlSW50cmFEaXN0IC89IGNsdXN0ZXJzLmxlbmd0aDsgLy8g55So57G75YaF5Z2H5YC86K6h566X57G76Ze06LedXG5cbiAgICB2YXIgYXZlSW50ZXJEaXN0ID0gMDsgLy8g57G76Ze06Ze06Led5bmz5Z2H5YC8XG5cbiAgICBhdmVDb3VudHMuZm9yRWFjaChmdW5jdGlvbiAoYXZlQ291bnQxLCBqKSB7XG4gICAgICBhdmVDb3VudHMuZm9yRWFjaChmdW5jdGlvbiAoYXZlQ291bnQyLCBrKSB7XG4gICAgICAgIGlmIChqID09PSBrKSByZXR1cm47XG4gICAgICAgIGF2ZUludGVyRGlzdCArPSBNYXRoLmFicyhhdmVDb3VudDEgLSBhdmVDb3VudDIpO1xuICAgICAgfSk7XG4gICAgICBhdmVJbnRlckRpc3QgLz0gYXZlQ291bnRzLmxlbmd0aCAqIChhdmVDb3VudHMubGVuZ3RoIC0gMSkgLyAyO1xuICAgIH0pOyAvLyDlr7vmib4gKOexu+mXtOmXtOi3neWdh+WAvC3nsbvlhoXpl7Tot53lnYflgLwpIOacgOWkp+eahOS4gOenjeWIhue7hOaWueW8j++8iOWvueW6lOeahCBzdHJ1Y3R1cmUg5bCx5piv5pyA57uI6KaB5om+55qE5ZSv5LiAIERTKEcp77yJXG5cbiAgICB2YXIgb2Zmc2V0ID0gYXZlSW50ZXJEaXN0IC0gYXZlSW50cmFEaXN0O1xuXG4gICAgaWYgKG1heE9mZnNldCA8IG9mZnNldCkge1xuICAgICAgbWF4T2Zmc2V0ID0gb2Zmc2V0O1xuICAgICAgcmVwcmVzZW50Q2x1c3RlclR5cGUgPSBpO1xuICAgIH1cbiAgfTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0cnVjdHVyZU51bTsgaSsrKSB7XG4gICAgX2xvb3BfMShpKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc3RydWN0dXJlOiBzdHJ1Y3R1cmVzW3JlcHJlc2VudENsdXN0ZXJUeXBlXSxcbiAgICBzdHJ1Y3R1cmVDb3VudE1hcDogbWF0Y2hlZENvdW50TWFwW3JlcHJlc2VudENsdXN0ZXJUeXBlXVxuICB9O1xufTtcblxudmFyIGdldE5vZGVNYXBzID0gZnVuY3Rpb24gZ2V0Tm9kZU1hcHMobm9kZXMsIG5vZGVMYWJlbFByb3ApIHtcbiAgdmFyIG5vZGVNYXAgPSB7fSxcbiAgICAgIG5vZGVMYWJlbE1hcCA9IHt9O1xuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlLCBpKSB7XG4gICAgbm9kZU1hcFtub2RlLmlkXSA9IHtcbiAgICAgIGlkeDogaSxcbiAgICAgIG5vZGU6IG5vZGUsXG4gICAgICBkZWdyZWU6IDAsXG4gICAgICBpbkRlZ3JlZTogMCxcbiAgICAgIG91dERlZ3JlZTogMFxuICAgIH07XG4gICAgdmFyIGxhYmVsID0gbm9kZVtub2RlTGFiZWxQcm9wXTtcbiAgICBpZiAoIW5vZGVMYWJlbE1hcFtsYWJlbF0pIG5vZGVMYWJlbE1hcFtsYWJlbF0gPSBbXTtcbiAgICBub2RlTGFiZWxNYXBbbGFiZWxdLnB1c2gobm9kZSk7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIG5vZGVNYXA6IG5vZGVNYXAsXG4gICAgbm9kZUxhYmVsTWFwOiBub2RlTGFiZWxNYXBcbiAgfTtcbn07XG5cbnZhciBnZXRFZGdlTWFwcyA9IGZ1bmN0aW9uIGdldEVkZ2VNYXBzKGVkZ2VzLCBlZGdlTGFiZWxQcm9wLCBub2RlTWFwKSB7XG4gIHZhciBlZGdlTWFwID0ge30sXG4gICAgICBlZGdlTGFiZWxNYXAgPSB7fTtcbiAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSwgaSkge1xuICAgIGVkZ2VNYXBbXCJcIi5jb25jYXQoX3V0aWwudW5pcXVlSWQpXSA9IHtcbiAgICAgIGlkeDogaSxcbiAgICAgIGVkZ2U6IGVkZ2VcbiAgICB9O1xuICAgIHZhciBsYWJlbCA9IGVkZ2VbZWRnZUxhYmVsUHJvcF07XG4gICAgaWYgKCFlZGdlTGFiZWxNYXBbbGFiZWxdKSBlZGdlTGFiZWxNYXBbbGFiZWxdID0gW107XG4gICAgZWRnZUxhYmVsTWFwW2xhYmVsXS5wdXNoKGVkZ2UpO1xuICAgIHZhciBzb3VyY2VOb2RlID0gbm9kZU1hcFtlZGdlLnNvdXJjZV07XG5cbiAgICBpZiAoc291cmNlTm9kZSkge1xuICAgICAgc291cmNlTm9kZS5kZWdyZWUrKztcbiAgICAgIHNvdXJjZU5vZGUub3V0RGVncmVlKys7XG4gICAgfVxuXG4gICAgdmFyIHRhcmdldE5vZGUgPSBub2RlTWFwW2VkZ2UudGFyZ2V0XTtcblxuICAgIGlmICh0YXJnZXROb2RlKSB7XG4gICAgICB0YXJnZXROb2RlLmRlZ3JlZSsrO1xuICAgICAgdGFyZ2V0Tm9kZS5pbkRlZ3JlZSsrO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiB7XG4gICAgZWRnZU1hcDogZWRnZU1hcCxcbiAgICBlZGdlTGFiZWxNYXA6IGVkZ2VMYWJlbE1hcFxuICB9O1xufTtcbi8qKlxuICog6L6T5Ye65pyA55+t6Lev5b6E55qEIG1hcO+8jGtleSDkuLogc291cmNlTm9kZS5pZC10YXJnZXROb2RlLmlk77yMdmFsdWUg5Li66L+Z5Lik5Liq6IqC54K555qE5pyA55+t6Lev5b6E6ZW/5bqmXG4gKiBAcGFyYW0gbm9kZXNcbiAqIEBwYXJhbSBzcG1cbiAqIEBwYXJhbSBkaXJlY3RlZFxuICovXG5cblxudmFyIGdldFNwbU1hcCA9IGZ1bmN0aW9uIGdldFNwbU1hcChub2Rlcywgc3BtLCBkaXJlY3RlZCkge1xuICB2YXIgbGVuZ3RoID0gc3BtLmxlbmd0aDtcbiAgdmFyIG1hcCA9IHt9O1xuICBzcG0uZm9yRWFjaChmdW5jdGlvbiAocm93LCBpKSB7XG4gICAgdmFyIHN0YXJ0ID0gZGlyZWN0ZWQgPyAwIDogaSArIDE7XG4gICAgdmFyIGlJZCA9IG5vZGVzW2ldLmlkO1xuXG4gICAgZm9yICh2YXIgaiA9IHN0YXJ0OyBqIDwgbGVuZ3RoOyBqKyspIHtcbiAgICAgIGlmIChpID09PSBqKSBjb250aW51ZTtcbiAgICAgIHZhciBqSWQgPSBub2Rlc1tqXS5pZDtcbiAgICAgIHZhciBkaXN0ID0gcm93W2pdO1xuICAgICAgbWFwW1wiXCIuY29uY2F0KGlJZCwgXCItXCIpLmNvbmNhdChqSWQpXSA9IGRpc3Q7XG4gICAgICBpZiAoIWRpcmVjdGVkKSBtYXBbXCJcIi5jb25jYXQoaklkLCBcIi1cIikuY29uY2F0KGlJZCldID0gZGlzdDtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gbWFwO1xufTtcbi8qKlxuICog6K6h566X5LiA5a+56IqC54K577yIbm9kZTHvvIxub2RlMu+8ieeahCBORFMg6Led56a7XG4gKiBAcGFyYW0gZ3JhcGgg5Y6f5Zu+5pWw5o2uXG4gKiBAcGFyYW0gbm9kZTFcbiAqIEBwYXJhbSBub2RlMlxuICovXG5cblxudmFyIGdldE5EU0Rpc3QgPSBmdW5jdGlvbiBnZXRORFNEaXN0KGdyYXBoLCBub2RlMSwgbm9kZTIsIG5vZGVNYXAsIHNwRGlzdCwga05laWdoYm9yVW5pdHMsIHN0cnVjdHVyZSwgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcCwgY2FjaGVkTkRTTWFwLCBjYWNoZWRJbnRlckluZHVjZWRHcmFwaCkge1xuICB2YXIgX2E7XG5cbiAgdmFyIGtleSA9IFwiXCIuY29uY2F0KG5vZGUxLmlkLCBcIi1cIikuY29uY2F0KG5vZGUyLmlkKTtcbiAgaWYgKGNhY2hlZE5EU01hcCAmJiBjYWNoZWRORFNNYXBba2V5XSkgcmV0dXJuIGNhY2hlZE5EU01hcFtrZXldO1xuICB2YXIgaW50ZXJJbmR1Y2VkR3JhcGggPSBjYWNoZWRJbnRlckluZHVjZWRHcmFwaCA/IGNhY2hlZEludGVySW5kdWNlZEdyYXBoW2tleV0gOiB1bmRlZmluZWQ7IC8vIOiLpeayoeaciee8k+WtmOebuOS6pOmCu+WxheivseWvvOWtkOWbvu+8jOiuoeeul1xuXG4gIGlmICghaW50ZXJJbmR1Y2VkR3JhcGgpIHtcbiAgICB2YXIgcGFpck1hcCA9IChfYSA9IHt9LCBfYVtrZXldID0ge1xuICAgICAgc3RhcnQ6IG5vZGVNYXBbbm9kZTEuaWRdLmlkeCxcbiAgICAgIGVuZDogbm9kZU1hcFtub2RlMi5pZF0uaWR4LFxuICAgICAgZGlzdGFuY2U6IHNwRGlzdFxuICAgIH0sIF9hKTtcbiAgICBjYWNoZWRJbnRlckluZHVjZWRHcmFwaCA9IGdldEludGVyc2VjdE5laWdoYm9ySW5kdWNlZEdyYXBoKHBhaXJNYXAsIGtOZWlnaGJvclVuaXRzLCBncmFwaCwgY2FjaGVkSW50ZXJJbmR1Y2VkR3JhcGgpO1xuICAgIGludGVySW5kdWNlZEdyYXBoID0gY2FjaGVkSW50ZXJJbmR1Y2VkR3JhcGhba2V5XTtcbiAgfVxuXG4gIHJldHVybiBnZXRNYXRjaGVkQ291bnQoaW50ZXJJbmR1Y2VkR3JhcGgsIHN0cnVjdHVyZSwgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcCk7XG59O1xuLyoqXG4gKiDorqHnrpcgcGF0dGVybiDkuIrnu6nngrnnmoTluqbmlbDlubblrZjlgqjliLAgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcFxuICovXG5cblxudmFyIHN0YXNoUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcCA9IGZ1bmN0aW9uIHN0YXNoUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcChtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlTWFwLCBuZWlnaGJvckxhYmVsLCBwYXR0ZXJuTm9kZU1hcCwgcGF0dGVybk5vZGVMYWJlbE1hcCkge1xuICB2YXIgX2EsIF9iLCBfYztcblxuICB2YXIgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSA9IChfYSA9IG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXBbbmVpZ2hib3JMYWJlbF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5kZWdyZWU7XG4gIHZhciBtaW5QYXR0ZXJuTm9kZUxhYmVsSW5EZWdyZWUgPSAoX2IgPSBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlTWFwW25laWdoYm9yTGFiZWxdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuaW5EZWdyZWU7XG4gIHZhciBtaW5QYXR0ZXJuTm9kZUxhYmVsT3V0RGVncmVlID0gKF9jID0gbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcFtuZWlnaGJvckxhYmVsXSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLm91dERlZ3JlZTtcblxuICBpZiAobWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcFtuZWlnaGJvckxhYmVsXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSA9IEluZmluaXR5O1xuICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxJbkRlZ3JlZSA9IEluZmluaXR5O1xuICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxPdXREZWdyZWUgPSBJbmZpbml0eTtcbiAgICBwYXR0ZXJuTm9kZUxhYmVsTWFwW25laWdoYm9yTGFiZWxdLmZvckVhY2goZnVuY3Rpb24gKHBhdHRlcm5Ob2RlV2l0aExhYmVsKSB7XG4gICAgICB2YXIgcGF0dGVybk5vZGVEZWdyZWUgPSBwYXR0ZXJuTm9kZU1hcFtwYXR0ZXJuTm9kZVdpdGhMYWJlbC5pZF0uZGVncmVlO1xuICAgICAgaWYgKG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWUgPiBwYXR0ZXJuTm9kZURlZ3JlZSkgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSA9IHBhdHRlcm5Ob2RlRGVncmVlO1xuICAgICAgdmFyIHBhdHRlcm5Ob2RlSW5EZWdyZWUgPSBwYXR0ZXJuTm9kZU1hcFtwYXR0ZXJuTm9kZVdpdGhMYWJlbC5pZF0uaW5EZWdyZWU7XG4gICAgICBpZiAobWluUGF0dGVybk5vZGVMYWJlbEluRGVncmVlID4gcGF0dGVybk5vZGVJbkRlZ3JlZSkgbWluUGF0dGVybk5vZGVMYWJlbEluRGVncmVlID0gcGF0dGVybk5vZGVJbkRlZ3JlZTtcbiAgICAgIHZhciBwYXR0ZXJuTm9kZU91dERlZ3JlZSA9IHBhdHRlcm5Ob2RlTWFwW3BhdHRlcm5Ob2RlV2l0aExhYmVsLmlkXS5vdXREZWdyZWU7XG4gICAgICBpZiAobWluUGF0dGVybk5vZGVMYWJlbE91dERlZ3JlZSA+IHBhdHRlcm5Ob2RlT3V0RGVncmVlKSBtaW5QYXR0ZXJuTm9kZUxhYmVsT3V0RGVncmVlID0gcGF0dGVybk5vZGVPdXREZWdyZWU7XG4gICAgfSk7XG4gICAgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcFtuZWlnaGJvckxhYmVsXSA9IHtcbiAgICAgIGRlZ3JlZTogbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSxcbiAgICAgIGluRGVncmVlOiBtaW5QYXR0ZXJuTm9kZUxhYmVsSW5EZWdyZWUsXG4gICAgICBvdXREZWdyZWU6IG1pblBhdHRlcm5Ob2RlTGFiZWxPdXREZWdyZWVcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlOiBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlLFxuICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxJbkRlZ3JlZTogbWluUGF0dGVybk5vZGVMYWJlbEluRGVncmVlLFxuICAgIG1pblBhdHRlcm5Ob2RlTGFiZWxPdXREZWdyZWU6IG1pblBhdHRlcm5Ob2RlTGFiZWxPdXREZWdyZWVcbiAgfTtcbn07XG4vKipcbiAqIEdBRERJIOaooeW8j+WMuemFjVxuICogQHBhcmFtIGdyYXBoRGF0YSDljp/lm77mlbDmja5cbiAqIEBwYXJhbSBwYXR0ZXJuIOaQnOe0ouWbvu+8iOmcgOimgeWcqOWOn+WbvuS4iuaQnOe0oueahOaooeW8j++8ieaVsOaNrlxuICogQHBhcmFtIGRpcmVjdGVkIOaYr+WQpuiuoeeul+acieWQkeWbvu+8jOm7mOiupCBmYWxzZVxuICogQHBhcmFtIGsg5Y+C5pWwIGvvvIzooajnpLogay3ov5HpgrtcbiAqIEBwYXJhbSBsZW5ndGgg5Y+C5pWwIGxlbmd0aFxuICogQHBhcmFtIG5vZGVMYWJlbFByb3Ag6IqC54K55pWw5o2u5Lit5Luj6KGo6IqC54K55qCH562+77yI5YiG57G75L+h5oGv77yJ55qE5bGe5oCn5ZCN44CC6buY6K6k5Li6IGNsdXN0ZXJcbiAqIEBwYXJhbSBlZGdlTGFiZWxQcm9wIOi+ueaVsOaNruS4reS7o+ihqOi+ueagh+etvu+8iOWIhuexu+S/oeaBr++8ieeahOWxnuaAp+WQjeOAgum7mOiupOS4uiBjbHVzdGVyXG4gKi9cblxuXG52YXIgR0FEREkgPSBmdW5jdGlvbiBHQURESShncmFwaERhdGEsIHBhdHRlcm4sIGRpcmVjdGVkLCBrLCBsZW5ndGgsIG5vZGVMYWJlbFByb3AsIGVkZ2VMYWJlbFByb3ApIHtcbiAgdmFyIF9hO1xuXG4gIGlmIChkaXJlY3RlZCA9PT0gdm9pZCAwKSB7XG4gICAgZGlyZWN0ZWQgPSBmYWxzZTtcbiAgfVxuXG4gIGlmIChub2RlTGFiZWxQcm9wID09PSB2b2lkIDApIHtcbiAgICBub2RlTGFiZWxQcm9wID0gJ2NsdXN0ZXInO1xuICB9XG5cbiAgaWYgKGVkZ2VMYWJlbFByb3AgPT09IHZvaWQgMCkge1xuICAgIGVkZ2VMYWJlbFByb3AgPSAnY2x1c3Rlcic7XG4gIH1cblxuICBpZiAoIWdyYXBoRGF0YSB8fCAhZ3JhcGhEYXRhLm5vZGVzKSByZXR1cm47IC8vIOWIhuS4uuS4ieatpe+8mlxuICAvLyAwLiDpooTorqHnrpfvvJroioLngrkv6L655pWw77yM6YK75o6l55+p6Zi144CB5pyA55+t6Lev5b6E55+p6Zi1XG4gIC8vIDEuIOWkhOeQhuWOn+WbviBncmFwaERhdGHjgILlho3liIbkuLogMX41IOWwj+atpVxuICAvLyAyLiDljLnphY1cbiAgLy8gY29uc29sZS5sb2coXCItLS0tLSBzdGFnZS1wcmU6IHByZXByb2Nlc3NpbmcgLS0tLS0tLVwiKTtcbiAgLy8gLS0tLS0tLS0g56ys6Zu25q2l77yM6aKE6K6h566X77ya6IqC54K5L+i+ueaVsO+8jOmCu+aOpeefqemYteOAgeacgOefrei3r+W+hOefqemYtS0tLS0tLS1cblxuICB2YXIgbm9kZU51bSA9IGdyYXBoRGF0YS5ub2Rlcy5sZW5ndGg7XG4gIGlmICghbm9kZU51bSkgcmV0dXJuOyAvLyBjb25zb2xlLmxvZyhcIi0tLS0tIHN0YWdlLXByZS4xOiBjYWxjIHNob3J0ZXN0IHBhdGggbWF0cml4IGZvciBncmFwaCAtLS0tLS0tXCIpO1xuXG4gIHZhciBzcG0gPSAoMCwgX2Zsb3lkV2Fyc2hhbGwuZGVmYXVsdCkoZ3JhcGhEYXRhLCBkaXJlY3RlZCk7IC8vIGNvbnNvbGUubG9nKFxuICAvLyAgIFwiLS0tLS0gc3RhZ2UtcHJlLjI6IGNhbGMgc2hvcnRlc3QgcGF0aCBtYXRyaXggZm9yIHBhdHRlcm4gLS0tLS0tLVwiXG4gIC8vICk7XG5cbiAgdmFyIHBhdHRlcm5TcG0gPSAoMCwgX2Zsb3lkV2Fyc2hhbGwuZGVmYXVsdCkocGF0dGVybiwgZGlyZWN0ZWQpOyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlLXByZS4zOiBjYWxjIHNob3J0ZXN0IHBhdGggbWF0cml4IG1hcCBmb3IgZ3JhcGggLS0tLS0tLVwiXG4gIC8vICk7XG5cbiAgdmFyIHNwbU1hcCA9IGdldFNwbU1hcChncmFwaERhdGEubm9kZXMsIHNwbSwgZGlyZWN0ZWQpOyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlLXByZS40OiBjYWxjIHNob3J0ZXN0IHBhdGggbWF0cml4IG1hcCBmb3IgcGF0dGVybiAtLS0tLS0tXCJcbiAgLy8gKTtcblxuICB2YXIgcGF0dGVyblNwbU1hcCA9IGdldFNwbU1hcChwYXR0ZXJuLm5vZGVzLCBwYXR0ZXJuU3BtLCBkaXJlY3RlZCk7IC8vIGNvbnNvbGUubG9nKFwiLS0tLS0gc3RhZ2UtcHJlLjU6IGVzdGFibGlzaCBtYXBzIC0tLS0tLS1cIik7XG4gIC8vIOiKgueCueeahCBtYXDvvIzku6UgaWQg5Li6IGlkIOaYoOWwhO+8jOaWueS+v+WQjue7reW/q+mAn+ajgOe0olxuXG4gIHZhciBfYiA9IGdldE5vZGVNYXBzKGdyYXBoRGF0YS5ub2Rlcywgbm9kZUxhYmVsUHJvcCksXG4gICAgICBub2RlTWFwID0gX2Iubm9kZU1hcCxcbiAgICAgIG5vZGVMYWJlbE1hcCA9IF9iLm5vZGVMYWJlbE1hcDtcblxuICB2YXIgX2MgPSBnZXROb2RlTWFwcyhwYXR0ZXJuLm5vZGVzLCBub2RlTGFiZWxQcm9wKSxcbiAgICAgIHBhdHRlcm5Ob2RlTWFwID0gX2Mubm9kZU1hcCxcbiAgICAgIHBhdHRlcm5Ob2RlTGFiZWxNYXAgPSBfYy5ub2RlTGFiZWxNYXA7IC8vIOiuoeeul+iKgueCueW6puaVsFxuXG5cbiAgZ2V0RWRnZU1hcHMoZ3JhcGhEYXRhLmVkZ2VzLCBlZGdlTGFiZWxQcm9wLCBub2RlTWFwKTtcbiAgdmFyIHBhdHRlcm5FZGdlTGFiZWxNYXAgPSBnZXRFZGdlTWFwcyhwYXR0ZXJuLmVkZ2VzLCBlZGdlTGFiZWxQcm9wLCBwYXR0ZXJuTm9kZU1hcCkuZWRnZUxhYmVsTWFwOyAvLyDoi6XmnKrmjIflrpogbGVuZ3Ro77yM6Ieq5Yqo6K6h566XIHBhdHRlcm4g5Y2K5b6E77yI5pyA55+t6Lev5b6E5pyA5aSn5YC877yJXG5cbiAgdmFyIHBhdHRlcm5TcG1TcHJlYWQgPSBbXTtcbiAgcGF0dGVyblNwbSA9PT0gbnVsbCB8fCBwYXR0ZXJuU3BtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYXR0ZXJuU3BtLmZvckVhY2goZnVuY3Rpb24gKHJvdykge1xuICAgIHBhdHRlcm5TcG1TcHJlYWQgPSBwYXR0ZXJuU3BtU3ByZWFkLmNvbmNhdChyb3cpO1xuICB9KTtcbiAgaWYgKCFsZW5ndGgpIGxlbmd0aCA9IE1hdGgubWF4LmFwcGx5KE1hdGgsICgwLCBfdHNsaWIuX19zcHJlYWRBcnJheSkoKDAsIF90c2xpYi5fX3NwcmVhZEFycmF5KShbXSwgcGF0dGVyblNwbVNwcmVhZCwgZmFsc2UpLCBbMl0sIGZhbHNlKSk7XG4gIGlmICghaykgayA9IGxlbmd0aDsgLy8gY29uc29sZS5sb2coXCJwYXJhbXNcIiwgZGlyZWN0ZWQsIGxlbmd0aCwgayk7XG4gIC8vIGNvbnNvbGUubG9nKFwiLS0tLS0gc3RhZ2UtcHJlLjY6IGNhbGMgayBuZWlnaGJvciB1bml0cyAtLS0tLS0tXCIpO1xuICAvLyDorqHnrpfmr4/kuKroioLngrnnmoQgayDpgrvlhYPpm4blkIhcblxuICB2YXIga05laWdoYm9yVW5pdHMgPSBmaW5kS05laWdoYm9yVW5pdHMoZ3JhcGhEYXRhLCBzcG0sIG5vZGVMYWJlbFByb3AsIGspO1xuICB2YXIgcGF0dGVybktOZWlnaGJvclVuaXRzID0gZmluZEtOZWlnaGJvclVuaXRzKHBhdHRlcm4sIHBhdHRlcm5TcG0sIG5vZGVMYWJlbFByb3AsIGspOyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlMDogZ29pbmcgdG8gcHJvY2Vzc2luZyBncmFwaCBhbmQgZmluZCBpbnRlcnNlY3QgbmVpZ2hib3IgaW5kdWNlZCBncmFwaHMgLS0tLS0tLVwiXG4gIC8vICk7XG4gIC8vIGNvbnNvbGUubG9nKFwiLS0tLS0gc3RhZ2UwLjE6IGdvaW5nIHRvIHNlbGVjdCByYW5kb20gbm9kZSBwYWlycyAtLS0tLS0tXCIpO1xuICAvLyAtLS0tLS0tLSDnrKzkuIDmraXvvIzlpITnkIbljp/lm74gZ3JhcGhEYXRhLS0tLS0tLVxuICAvLyAxLjEuIOmaj+acuumAieaLqeacgOWkmiAxMDAg5Liq54K55a+577yM5ruh6Laz6Led56a75bCP5LqOIExlbmd0aCDlkowga1xuICAvLyDlvZMgZ3JhcGhEYXRhIOWwkeS6jiAyMCDkuKroioLngrnvvIzliJnkuI3og73mib7lh7ogMTAwIOS4queCueWvue+8jOWPquaJvuWHuuS4jeWkmuS6jiBuKG4tMSkvMiDkuKrngrnlr7lcblxuICB2YXIgbWF4Tm9kZVBhaXJOdW0gPSBNYXRoLm1pbigxMDAsIG5vZGVOdW0gKiAobm9kZU51bSAtIDEpIC8gMik7XG4gIHZhciBub2RlUGFpcnNNYXAgPSBmaW5kTm9kZVBhaXJzUmFuZG9tbHkoaywgbm9kZU51bSwgbWF4Tm9kZVBhaXJOdW0sIHBhdHRlcm5LTmVpZ2hib3JVbml0cywgc3BtKTsgLy8gY29uc29sZS5sb2coXG4gIC8vICAgXCItLS0tLSBzdGFnZTAuMjogZ29pbmcgdG8gY2FsY3VsYXRlIGludGVyc2VjdCBuZWlnaGJvciBpbmR1Y2VkIGdyYXBocyAtLS0tLS0tXCJcbiAgLy8gKTtcbiAgLy8gMS4yLiDnlJ/miJDkuIrpnaLoioLngrnlr7nnmoTnm7jlupTnm7jkuqTpgrvlsYXor7Hlr7zlrZDlm77jgILmoLzlvI/kuLogeydiZWdpbk5vZGVJZHgtZW5kTm9kZUlkeCc6IHtub2RlczogW10sIGVkZ2VzOiBbXX19XG5cbiAgdmFyIGludEdNYXAgPSBnZXRJbnRlcnNlY3ROZWlnaGJvckluZHVjZWRHcmFwaChub2RlUGFpcnNNYXAsIGtOZWlnaGJvclVuaXRzLCBncmFwaERhdGEpOyAvLyAxLjMuIOS9v+eUqCBnU3BhbiDnrpfms5XvvIhmcmVxdWVudCBncmFwaCBtaW5pbmfvvInorqHnrpcgSVNJbnRHIOeahOWJjSAxMCDkuKrpopHnjofmnIDpq5jnmoTlrZDnu5PmnoTvvIgzLTTmnaHovrnvvIlcblxuICB2YXIgdG9wID0gMTAsXG4gICAgICBtaW5TdXBwb3J0ID0gMSxcbiAgICAgIG1pbk5vZGVOdW0gPSAxLFxuICAgICAgbWF4Tm9kZU51bSA9IDQ7XG4gIHZhciBwYXJhbXMgPSB7XG4gICAgZ3JhcGhzOiBpbnRHTWFwLFxuICAgIG5vZGVMYWJlbFByb3A6IG5vZGVMYWJlbFByb3AsXG4gICAgZWRnZUxhYmVsUHJvcDogZWRnZUxhYmVsUHJvcCxcbiAgICBtaW5TdXBwb3J0OiBtaW5TdXBwb3J0LFxuICAgIG1pbk5vZGVOdW06IG1pbk5vZGVOdW0sXG4gICAgbWF4Tm9kZU51bTogbWF4Tm9kZU51bSxcbiAgICBkaXJlY3RlZDogZGlyZWN0ZWRcbiAgfTsgLy8gY29uc29sZS5sb2coXG4gIC8vICAgXCItLS0tLSBzdGFnZTE6IChnU3BhbikgZ29pbmcgdG8gZmluZCBmcmVxdWVudCBzdHJ1Y3R1cmUgZHNHIC0tLS0tLS1cIlxuICAvLyApO1xuICAvLyBjb25zb2xlLmxvZyhcIi0tLS0tIHN0YWdlMS4xOiBnb2luZyB0byBydW4gZ1NwYW4gLS0tLS0tLVwiKTtcbiAgLy8g5pqC5pe25YGH6K6+55Sf5oiQ55qEIHN1YiBzdHJ1Y3R1cmUg6YO95Y+q5pyJ5LiA5p2h6L65XG5cbiAgdmFyIGZyZVN0cnVjdHVyZXMgPSAoMCwgX2dTcGFuLmRlZmF1bHQpKHBhcmFtcykuc2xpY2UoMCwgdG9wKTsgLy8gc3RydWN0dXJlTnVtIOWPr+iDveWwj+S6jiB0b3BcblxuICB2YXIgc3RydWN0dXJlTnVtID0gZnJlU3RydWN0dXJlcy5sZW5ndGg7IC8vIDEuNC4g6K6h566X5LiK6L+wIDEwIOS4quWtkOe7k+aehOWcqCBpbnRHTWFwIOS4reavj+S4quivseWvvOWtkOWbvueahOWMuemFjeS4quaVsFxuXG4gIHZhciBtYXRjaGVkQ291bnRNYXAgPSBbXTtcbiAgZnJlU3RydWN0dXJlcy5mb3JFYWNoKGZ1bmN0aW9uIChzdHJ1Y3R1cmUsIGkpIHtcbiAgICBtYXRjaGVkQ291bnRNYXBbaV0gPSB7fTtcbiAgICBPYmplY3Qua2V5cyhpbnRHTWFwKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHZhciBncmFwaCA9IGludEdNYXBba2V5XTtcbiAgICAgIHZhciBzdWJTdHJ1Y3R1cmVDb3VudCA9IGdldE1hdGNoZWRDb3VudChncmFwaCwgc3RydWN0dXJlLCBub2RlTGFiZWxQcm9wLCBlZGdlTGFiZWxQcm9wKTtcbiAgICAgIG1hdGNoZWRDb3VudE1hcFtpXVtrZXldID0gc3ViU3RydWN0dXJlQ291bnQ7XG4gICAgfSk7XG4gIH0pOyAvLyBjb25zb2xlLmxvZyhcbiAgLy8gICBcIi0tLS0tIHN0YWdlMS4xOiBnb2luZyB0byBmaW5kIHRoZSBtb3N0IHJlcHJlc2VudCBzdHJ1Y3V0cmUgLS0tLS0tLVwiXG4gIC8vICk7XG4gIC8vIDEuNS4g5a+55LqO5q+P5Liq5a2Q57uT5p6E77yM5qC55o2u5Yy56YWN5Liq5pWw5Li6IGludEdNYXAg5Lit55qE6K+x5a+85a2Q5Zu+5YiG57uE77yM55Sf5oiQIHN0cnVjdHVyZU51bSDnp43liIbnu4RcbiAgLy8g6K6h566X5q+P56eN5YiG57uE55qE57G76Ze06Led5ZKM57G75YaF6Ze06Led77yM5om+5Yiw57G76Ze06Led5pyA5aSn44CB57G75YaF6Ze06Led5pyA5bCP55qE5LiA56eN5YiG57uE77yM6L+Z56eN5YiG57uE5a+55bqU55qE5a2Q57uT5p6E6KKr6YCJ5Li65ZSv5LiA5Luj6KGo5oCn5a2Q57uT5p6EIERTKEcpXG5cbiAgdmFyIF9kID0gZmluZFJlcHJlc2VudFN0cnVjdHVyZShtYXRjaGVkQ291bnRNYXAsIHN0cnVjdHVyZU51bSwgZnJlU3RydWN0dXJlcyksXG4gICAgICBkc0cgPSBfZC5zdHJ1Y3R1cmUsXG4gICAgICBuZHNEaXN0ID0gX2Quc3RydWN0dXJlQ291bnRNYXA7IC8vIC0tLS0tLS0tIOesrOS6jOatpe+8jOWMuemFjS0tLS0tLS1cbiAgLy8gMi4xIOaJvuWIsOS7jiBRIOS4reeahOS4gOS4quiKgueCueS9nOS4uui1t+Wni+iKgueCue+8jOWvu+aJviBHIOS4reeahOWMuemFjeOAgui/meS4quWFtuWunuiKgueCueeahOagh+etvuWPr+S7peWcqCBHIOS4reaJvuWIsOacgOWkmueahOiKgueCuVxuXG5cbiAgdmFyIGJlZ2luUE5vZGUgPSBwYXR0ZXJuLm5vZGVzWzBdLFxuICAgICAgY2FuZGlkYXRlcyA9IFtdLFxuICAgICAgbGFiZWwgPSAoX2EgPSBwYXR0ZXJuLm5vZGVzWzBdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Fbbm9kZUxhYmVsUHJvcF0sXG4gICAgICBtYXhOb2RlTnVtV2l0aFNhbWVMYWJlbCA9IC1JbmZpbml0eTtcbiAgcGF0dGVybi5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgdmFyIHBMYWJlbCA9IG5vZGVbbm9kZUxhYmVsUHJvcF07XG4gICAgdmFyIG5vZGVzV2l0aFNhbWVMYWJlbCA9IG5vZGVMYWJlbE1hcFtwTGFiZWxdO1xuXG4gICAgaWYgKChub2Rlc1dpdGhTYW1lTGFiZWwgPT09IG51bGwgfHwgbm9kZXNXaXRoU2FtZUxhYmVsID09PSB2b2lkIDAgPyB2b2lkIDAgOiBub2Rlc1dpdGhTYW1lTGFiZWwubGVuZ3RoKSA+IG1heE5vZGVOdW1XaXRoU2FtZUxhYmVsKSB7XG4gICAgICBtYXhOb2RlTnVtV2l0aFNhbWVMYWJlbCA9IG5vZGVzV2l0aFNhbWVMYWJlbC5sZW5ndGg7XG4gICAgICBjYW5kaWRhdGVzID0gbm9kZXNXaXRoU2FtZUxhYmVsO1xuICAgICAgbGFiZWwgPSBwTGFiZWw7XG4gICAgICBiZWdpblBOb2RlID0gbm9kZTtcbiAgICB9XG4gIH0pOyAvLyBjb25zb2xlLmxvZyhcIi0tLS0tIHN0YWdlMjogZ29pbmcgdG8gZmluZCBjYW5kaWRhdGVzIC0tLS0tLS1cIik7XG4gIC8vIOWFqOWxgOe8k+WtmO+8jOmBv+WFjemHjeWkjeiuoeeul1xuXG4gIHZhciBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlTWFwID0ge307IC8vIGtleSDmmK8gbGFiZWzvvIx2YWx1ZSDmmK/or6UgbGFiZWwg6IqC54K555qE5pyA5bCP5bqm5pWwXG5cbiAgdmFyIHBhdHRlcm5JbnRHcmFwaE1hcCA9IHt9LFxuICAgICAgcGF0dGVybk5EU0Rpc3QgPSB7fSxcbiAgICAgIC8vIGtleSDkuLogbm9kZS5pZC1ub2RlLmlkXG4gIHBhdHRlcm5ORFNEaXN0TWFwID0ge307IC8vIGtleSDkuLogbm9kZS5pZC1sYWJlbDLvvIx2YWx1ZSBuZHPot53nprvlgLzmlbDnu4TvvIjmjInku47lpKfliLDlsI/mjpLluo/vvIzml6DpnIDlhbPlv4PlhbfkvZPlr7nlupTlk6rkuKogbm9kZTLvvIlcbiAgLy8gMi4yLjIg5a+55LqOIFEg5Lit55qE5Y+m5LiA5Liq5qCH562+55qEIGsg5Liq6IqC54K577yM6K6h566X5a6D5Lus5YiwIG5vZGUg55qE5pyA55+t6Lev5b6E5Lul5Y+KIE5EUyDot53nprtcblxuICB2YXIgcGF0dGVyblNwRGlzdCA9IHt9O1xuICB2YXIgcGF0dGVyblNwRGlzdEJhY2sgPSB7fTtcbiAgT2JqZWN0LmtleXMocGF0dGVybk5vZGVMYWJlbE1hcCkuZm9yRWFjaChmdW5jdGlvbiAobGFiZWwyLCBqKSB7XG4gICAgcGF0dGVyblNwRGlzdFtsYWJlbDJdID0gW107XG5cbiAgICBpZiAoZGlyZWN0ZWQpIHtcbiAgICAgIHBhdHRlcm5TcERpc3RCYWNrW2xhYmVsMl0gPSBbXTtcbiAgICB9XG5cbiAgICB2YXIgbWF4RGlzdCA9IC1JbmZpbml0eTtcbiAgICB2YXIgcGF0dGVybk5vZGVzV2l0aExhYmVsMiA9IHBhdHRlcm5Ob2RlTGFiZWxNYXBbbGFiZWwyXTtcbiAgICB2YXIgcGF0dGVybk5vZGVQYWlyTWFwID0ge307XG4gICAgcGF0dGVybk5vZGVzV2l0aExhYmVsMi5mb3JFYWNoKGZ1bmN0aW9uIChub2RlV2l0aExhYmVsMikge1xuICAgICAgdmFyIGRpc3QgPSBwYXR0ZXJuU3BtTWFwW1wiXCIuY29uY2F0KGJlZ2luUE5vZGUuaWQsIFwiLVwiKS5jb25jYXQobm9kZVdpdGhMYWJlbDIuaWQpXTtcbiAgICAgIGRpc3QgJiYgcGF0dGVyblNwRGlzdFtsYWJlbDJdLnB1c2goZGlzdCk7XG4gICAgICBpZiAobWF4RGlzdCA8IGRpc3QpIG1heERpc3QgPSBkaXN0O1xuICAgICAgcGF0dGVybk5vZGVQYWlyTWFwW1wiXCIuY29uY2F0KGJlZ2luUE5vZGUuaWQsIFwiLVwiKS5jb25jYXQobm9kZVdpdGhMYWJlbDIuaWQpXSA9IHtcbiAgICAgICAgc3RhcnQ6IDAsXG4gICAgICAgIGVuZDogcGF0dGVybk5vZGVNYXBbbm9kZVdpdGhMYWJlbDIuaWRdLmlkeCxcbiAgICAgICAgZGlzdGFuY2U6IGRpc3RcbiAgICAgIH07XG5cbiAgICAgIGlmIChkaXJlY3RlZCkge1xuICAgICAgICB2YXIgZGlzdEJhY2sgPSBwYXR0ZXJuU3BtTWFwW1wiXCIuY29uY2F0KG5vZGVXaXRoTGFiZWwyLmlkLCBcIi1cIikuY29uY2F0KGJlZ2luUE5vZGUuaWQpXTtcbiAgICAgICAgZGlzdEJhY2sgJiYgcGF0dGVyblNwRGlzdEJhY2tbbGFiZWwyXS5wdXNoKGRpc3RCYWNrKTtcbiAgICAgIH1cbiAgICB9KTsgLy8gc3BEaXN0W2xhYmVsMl0g5oyJ54Wn5LuO5bCP5Yiw5aSn5o6S5bqPXG5cbiAgICBwYXR0ZXJuU3BEaXN0W2xhYmVsMl0gPSBwYXR0ZXJuU3BEaXN0W2xhYmVsMl0uc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGEgLSBiO1xuICAgIH0pO1xuICAgIGlmIChkaXJlY3RlZCkgcGF0dGVyblNwRGlzdEJhY2tbbGFiZWwyXSA9IHBhdHRlcm5TcERpc3RCYWNrW2xhYmVsMl0uc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGEgLSBiO1xuICAgIH0pOyAvLyDorqHnrpcgUSDkuK3miYDmnIkgbGFiZWwyIOiKgueCueWIsCBiZWdpblBOb2RlIOeahCBORFMg6Led56a7XG4gICAgLy8g5omA5pyJIGxhYmVsMiDoioLngrnliLAgYmVnaW5QTm9kZSDnmoTpgrvlsYXnm7jkuqTor7Hlr7zlrZDlm77vvJpcbiAgICAvLyBrZXk6IG5vZGUxLmlkLW5vZGUyLmlkXG5cbiAgICBwYXR0ZXJuSW50R3JhcGhNYXAgPSBnZXRJbnRlcnNlY3ROZWlnaGJvckluZHVjZWRHcmFwaChwYXR0ZXJuTm9kZVBhaXJNYXAsIHBhdHRlcm5LTmVpZ2hib3JVbml0cywgcGF0dGVybiwgcGF0dGVybkludEdyYXBoTWFwKTsgLy8gcGF0dGVybiDkuK0gYmVnaW5Ob2RlIOWIsOW9k+WJjSBsYWJlbDIg6IqC54K5IOeahCBORFMg6Led56a777yI5pWw57uE77yM5peg6ZyA5YWz5b+D5YW35L2T5a+55bqU5Yiw5ZOq5Liq6IqC54K577yJXG5cbiAgICB2YXIgY3VycmVudFBhdHRlcm5ORFNEaXN0QXJyYXkgPSBbXTtcbiAgICBPYmplY3Qua2V5cyhwYXR0ZXJuTm9kZVBhaXJNYXApLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgaWYgKHBhdHRlcm5ORFNEaXN0W2tleV0pIHtcbiAgICAgICAgY3VycmVudFBhdHRlcm5ORFNEaXN0QXJyYXkucHVzaChwYXR0ZXJuTkRTRGlzdFtrZXldKTtcbiAgICAgICAgcmV0dXJuOyAvLyDnvJPlrZjov4fliJnkuI3pnIDopoHlho3mrKHorqHnrpdcbiAgICAgIH1cblxuICAgICAgdmFyIHBhdHRlcm5JbnRHcmFwaCA9IHBhdHRlcm5JbnRHcmFwaE1hcFtrZXldO1xuICAgICAgcGF0dGVybk5EU0Rpc3Rba2V5XSA9IGdldE1hdGNoZWRDb3VudChwYXR0ZXJuSW50R3JhcGgsIGRzRywgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcCk7XG4gICAgICBjdXJyZW50UGF0dGVybk5EU0Rpc3RBcnJheS5wdXNoKHBhdHRlcm5ORFNEaXN0W2tleV0pO1xuICAgIH0pOyAvLyDmoLnmja7lgLzkuLogY3VycmVudFBhdHRlcm5ORFNEaXN0IOS7juWkp+WIsOWwj+aOkuW6j1xuXG4gICAgY3VycmVudFBhdHRlcm5ORFNEaXN0QXJyYXkgPSBjdXJyZW50UGF0dGVybk5EU0Rpc3RBcnJheS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gYiAtIGE7XG4gICAgfSk7XG4gICAgcGF0dGVybk5EU0Rpc3RNYXBbXCJcIi5jb25jYXQoYmVnaW5QTm9kZS5pZCwgXCItXCIpLmNvbmNhdChsYWJlbDIpXSA9IGN1cnJlbnRQYXR0ZXJuTkRTRGlzdEFycmF5O1xuICAgIGlmIChsYWJlbDIgPT09IGxhYmVsKSByZXR1cm47XG4gICAgdmFyIGNhbmRpZGF0ZXNOdW0gPSAoY2FuZGlkYXRlcyA9PT0gbnVsbCB8fCBjYW5kaWRhdGVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjYW5kaWRhdGVzLmxlbmd0aCkgfHwgMDtcblxuICAgIHZhciBfbG9vcF80ID0gZnVuY3Rpb24gX2xvb3BfNChtKSB7XG4gICAgICB2YXIgY05vZGUgPSBjYW5kaWRhdGVzW21dOyAvLyBwcnVuZTHvvJroi6UgY2FuZGlkYXRlcyDkuK3oioLngrkgY05vZGUg55qEIGtOZWlnaGJvclVuaXRzIOS4reagh+etvuS4uiBsYWJlbDIg55qE6IqC54K55Liq5pWw5bCR5LqOIHBhdHRlcm4g5LitIGxhYmVsMiDkuKrmlbDvvIzliKDljrvlroNcblxuICAgICAgdmFyIGdyYXBoTmVpZ2hib3JVbml0ID0ga05laWdoYm9yVW5pdHNbbm9kZU1hcFtjTm9kZS5pZF0uaWR4XTtcbiAgICAgIHZhciBncmFwaE5laWdoYm9yVW5pdENvdW50TWFwID0gZ3JhcGhOZWlnaGJvclVuaXQubm9kZUxhYmVsQ291bnRNYXBbbGFiZWwyXTtcbiAgICAgIHZhciBwYXR0ZXJuTGFiZWwyTnVtID0gcGF0dGVybk5vZGVMYWJlbE1hcFtsYWJlbDJdLmxlbmd0aDtcblxuICAgICAgaWYgKCFncmFwaE5laWdoYm9yVW5pdENvdW50TWFwIHx8IGdyYXBoTmVpZ2hib3JVbml0Q291bnRNYXAuY291bnQgPCBwYXR0ZXJuTGFiZWwyTnVtKSB7XG4gICAgICAgIGNhbmRpZGF0ZXMuc3BsaWNlKG0sIDEpO1xuICAgICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgICAgfSAvLyBwcnVuZTLvvJroi6UgY2FuZGlkYXRlcyDkuK3oioLngrkgY05vZGUg5YiwIGtOZWlnaGJvclVuaXRzIOS4reagh+etvuS4uiBsYWJlbDIg55qE6IqC54K55pyA55+t6Lev5b6E5aSn5LqOIHBhdHRlcm5TcERpc3RbbGFiZWwyXe+8jOWIoOWOu+Wug1xuICAgICAgLy8gKHBydW5lMiDop4TliJnljbPvvJpjYW5kaWRhdGUg55u45YWz55qE5pyA55+t6Lev5b6E55qE5pyA5aSnIHNwRGlzdFtsYWJlbDJdLmxlbmd0aCDkuKrvvIzmjInnhaflpKflsI/pobrluo/kvp3mrKHlkowgcGF0dGVyblNwRGlzdFtsYWJlbDJdIOS4reeahOWAvOavlOi+g++8jOWPquimgemBh+WIsOS4gOS4quaYryBHID4gUSDnmoTvvIzlsLHliKDljrvov5nkuKogY2FuZGlkYXRlKVxuXG5cbiAgICAgIHZhciBwcnVuZTJJbnZhbGlkID0gZmFsc2U7XG5cbiAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgcGF0dGVybkxhYmVsMk51bTsgbisrKSB7XG4gICAgICAgIGlmIChncmFwaE5laWdoYm9yVW5pdENvdW50TWFwLmRpc3RzW25dID4gcGF0dGVyblNwRGlzdFtsYWJlbDJdW25dKSB7XG4gICAgICAgICAgcHJ1bmUySW52YWxpZCA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHBydW5lMkludmFsaWQpIHtcbiAgICAgICAgY2FuZGlkYXRlcy5zcGxpY2UobSwgMSk7XG4gICAgICAgIHJldHVybiBcImNvbnRpbnVlXCI7XG4gICAgICB9IC8vIHBydW5lM++8muiLpSBjYW5kaWRhdGVzIOS4reiKgueCuSBjTm9kZSDliLAga05laWdoYm9yVW5pdHMg5Lit5qCH562+5Li6IGxhYmVsMiDnmoToioLngrkgTkRTIOi3neemu+Wwj+S6jiBwYXR0ZXJuTkRTRGlzdFtiZWdpbk5vZGUuaWQtbGFiZWwyXe+8jOWIoOWOu+Wug1xuICAgICAgLy8gVE9ET++8mnBydW5lM++8jGN1cnJlbnRQYXR0ZXJuTkRTRGlzdEFycmF5IOS4jiBjdXJyZW50TkRTRGlzdCDnmoTmr5TovoNcbiAgICAgIC8vIOiuoeeulyBHIOS4reaJgOaciSBsYWJlbDIg6IqC54K55YiwIGNOb2RlIOeahCBORFMg6Led56a7XG4gICAgICAvLyDmiYDmnIkgbGFiZWwyIOiKgueCueWIsCBjTm9kZSDnmoTpgrvlsYXnm7jkuqTor7Hlr7zlrZDlm77vvJpcblxuXG4gICAgICB2YXIgY05vZGVQYWlyTWFwID0ge307XG4gICAgICBncmFwaE5laWdoYm9yVW5pdC5uZWlnaGJvcnMuZm9yRWFjaChmdW5jdGlvbiAobmVpZ2hib3JOb2RlKSB7XG4gICAgICAgIHZhciBkaXN0ID0gc3BtTWFwW1wiXCIuY29uY2F0KGNOb2RlLmlkLCBcIi1cIikuY29uY2F0KG5laWdoYm9yTm9kZS5pZCldO1xuICAgICAgICBjTm9kZVBhaXJNYXBbXCJcIi5jb25jYXQoY05vZGUuaWQsIFwiLVwiKS5jb25jYXQobmVpZ2hib3JOb2RlLmlkKV0gPSB7XG4gICAgICAgICAgc3RhcnQ6IG5vZGVNYXBbY05vZGUuaWRdLmlkeCxcbiAgICAgICAgICBlbmQ6IG5vZGVNYXBbbmVpZ2hib3JOb2RlLmlkXS5pZHgsXG4gICAgICAgICAgZGlzdGFuY2U6IGRpc3RcbiAgICAgICAgfTtcbiAgICAgIH0pOyAvLyDmm7TmlrAgaW50R01hcFxuXG4gICAgICBpbnRHTWFwID0gZ2V0SW50ZXJzZWN0TmVpZ2hib3JJbmR1Y2VkR3JhcGgoY05vZGVQYWlyTWFwLCBrTmVpZ2hib3JVbml0cywgZ3JhcGhEYXRhLCBpbnRHTWFwKTsgLy8gY2FuZGlkYXRlIOWIsOWug+WRqOWbtCBsYWJlbDIg6IqC54K555qEIE5EUyDot53nprssIGtleSDmmK8gbm9kZS5pZC1ub2RlLmlkXG5cbiAgICAgIHZhciBjdXJyZW50TkRTRGlzdEFycmF5ID0gW107XG4gICAgICBPYmplY3Qua2V5cyhjTm9kZVBhaXJNYXApLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBpZiAobmRzRGlzdFtrZXldKSB7XG4gICAgICAgICAgY3VycmVudE5EU0Rpc3RBcnJheS5wdXNoKG5kc0Rpc3Rba2V5XSk7XG4gICAgICAgICAgcmV0dXJuOyAvLyDnvJPlrZjov4fliJnkuI3pnIDopoHlho3mrKHorqHnrpdcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpbnRHcmFwaCA9IGludEdNYXBba2V5XTtcbiAgICAgICAgbmRzRGlzdFtrZXldID0gZ2V0TWF0Y2hlZENvdW50KGludEdyYXBoLCBkc0csIG5vZGVMYWJlbFByb3AsIGVkZ2VMYWJlbFByb3ApO1xuICAgICAgICBjdXJyZW50TkRTRGlzdEFycmF5LnB1c2gobmRzRGlzdFtrZXldKTtcbiAgICAgIH0pOyAvLyDmoLnmja7lgLzkuLogY3VycmVudE5EU0Rpc3RBcnJheSDku47lpKfliLDlsI/mjpLluo9cblxuICAgICAgY3VycmVudE5EU0Rpc3RBcnJheSA9IGN1cnJlbnRORFNEaXN0QXJyYXkuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICByZXR1cm4gYiAtIGE7XG4gICAgICB9KTtcbiAgICAgIHZhciBwcnVuZTNJbnZhbGlkID0gZmFsc2U7XG5cbiAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgcGF0dGVybkxhYmVsMk51bTsgbisrKSB7XG4gICAgICAgIGlmIChjdXJyZW50TkRTRGlzdEFycmF5W25dIDwgY3VycmVudFBhdHRlcm5ORFNEaXN0QXJyYXlbbl0pIHtcbiAgICAgICAgICBwcnVuZTNJbnZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocHJ1bmUzSW52YWxpZCkge1xuICAgICAgICBjYW5kaWRhdGVzLnNwbGljZShtLCAxKTtcbiAgICAgICAgcmV0dXJuIFwiY29udGludWVcIjtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgbSA9IGNhbmRpZGF0ZXNOdW0gLSAxOyBtID49IDA7IG0tLSkge1xuICAgICAgX2xvb3BfNChtKTtcbiAgICB9XG4gIH0pO1xuICB2YXIgY2FuZGlkYXRlR3JhcGhzID0gW107IC8vIGNvbnNvbGUubG9nKFxuICAvLyAgIFwiLS0tLS0gc3RhZ2UzOiBnb2luZyB0byBzcGxpY2UgbmVpZ2hib3JzIGZvciBlYWNoIGNhbmRpZGF0ZSBncmFwaCAtLS0tLS0tXCJcbiAgLy8gKTtcbiAgLy8gY2FuZGlkYXRlcyDnu4/ov4fnrZvpgInlkI7vvIzku6Xmr4/kuKogY2FuZGlkYXRlIOS4uuS4reW/g++8jOeUn+aIkCBMZW5ndGgtbmVpZ2hib3Ig55qE6YK75bGF6K+x5a+85a2Q5Zu+XG4gIC8vIOW5tuWcqOivseWvvOWtkOWbvuS4reWOu+mZpOS4jeWPr+iDveWcqCBRIOS4iuaJvuWIsOWMuemFjeeahOeCue+8muWcqCBRIOS4iuS4jeWtmOWcqOeahCBsYWJlbO+8jOWFtuS7liBsYWJlbCDliLAgY2FuZGlkYXRlIOeahOacgOWkp+acgOefrei3neemu+espuWQiCBR44CBTkRTIOi3neemu+espuWQiCBRXG5cbiAgY2FuZGlkYXRlcyA9PT0gbnVsbCB8fCBjYW5kaWRhdGVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjYW5kaWRhdGVzLmZvckVhY2goZnVuY3Rpb24gKGNhbmRpZGF0ZSkge1xuICAgIHZhciBub2RlSWR4ID0gbm9kZU1hcFtjYW5kaWRhdGUuaWRdLmlkeDtcbiAgICB2YXIgbGVuZ3RoTmVpZ2hib3JVbml0ID0gZmluZEtOZWlnaGJvclVuaXQoZ3JhcGhEYXRhLm5vZGVzLCBzcG1bbm9kZUlkeF0sIG5vZGVJZHgsIG5vZGVMYWJlbFByb3AsIGxlbmd0aCk7XG4gICAgdmFyIG5laWdoYm9yTm9kZXMgPSBsZW5ndGhOZWlnaGJvclVuaXQubmVpZ2hib3JzOyAvLyDliKDpmaTkuI3lj6/og73mib7liLDljLnphY3nmoTpgrvlsYXngrlcblxuICAgIHZhciBuZWlnaGJvck51bSA9IG5laWdoYm9yTm9kZXMubGVuZ3RoO1xuICAgIHZhciB1bm1hdGNoZWQgPSBmYWxzZTtcblxuICAgIGZvciAodmFyIGkgPSBuZWlnaGJvck51bSAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAvLyDlpoLmnpzpgJrov4foo4HliarvvIznrKblkIjmnaHku7bnmoToioLngrnmlbDph4/lt7Lov4flsJHvvIzor7TmmI7kuI3og73ljLnphY3ov5nkuKogY2FuZGlkYXRlIOebuOWFs+eahOWbvlxuICAgICAgaWYgKG5laWdoYm9yTm9kZXMubGVuZ3RoICsgMSA8IHBhdHRlcm4ubm9kZXMubGVuZ3RoKSB7XG4gICAgICAgIHVubWF0Y2hlZCA9IHRydWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIG5laWdoYm9yTm9kZSA9IG5laWdoYm9yTm9kZXNbaV07XG4gICAgICB2YXIgbmVpZ2hib3JMYWJlbCA9IG5laWdoYm9yTm9kZVtub2RlTGFiZWxQcm9wXTsgLy8gcHJ1bmUxOiDoi6Xor6XpgrvlsYXngrnnmoQgbGFiZWwg5LiN5a2Y5Zyo5LqOIHBhdHRlcm4g5Lit77yM56e76Zmk6L+Z5Liq54K5XG5cbiAgICAgIGlmICghcGF0dGVybk5vZGVMYWJlbE1hcFtuZWlnaGJvckxhYmVsXSB8fCAhcGF0dGVybk5vZGVMYWJlbE1hcFtuZWlnaGJvckxhYmVsXS5sZW5ndGgpIHtcbiAgICAgICAgbmVpZ2hib3JOb2Rlcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSAvLyBwcnVuZTI6IOiLpeivpemCu+WxheeCueWIsCBjYW5kaWRhdGUg55qE5pyA55+t6Lev5b6E5q+U5ZKM5a6D5pyJ55u45ZCMIGxhYmVsIOeahOiKgueCueWIsCBiZWdpblBOb2RlIOeahOacgOWkp+acgOefrei3r+W+hOmVv+W6pumVv++8jOenu+mZpOi/meS4queCuVxuICAgICAgLy8gcHJ1bmUyLjE6IOWmguaenOayoeaciei/meS4quagh+etvuWIsCBiZWdpblBOb2RlIOeahOi3neemu+iusOW9le+8jOivtOaYjiBwYXR0ZXJuIOS4iu+8iOWPr+iDvSBiZWdpblBOb2RlIOaYr+i/meS4qiBsYWJlbO+8ieayoeacieWFtuS7lui/meS4qiBsYWJlbCDnmoToioLngrlcblxuXG4gICAgICBpZiAoIXBhdHRlcm5TcERpc3RbbmVpZ2hib3JMYWJlbF0gfHwgIXBhdHRlcm5TcERpc3RbbmVpZ2hib3JMYWJlbF0ubGVuZ3RoKSB7XG4gICAgICAgIG5laWdoYm9yTm9kZXMuc3BsaWNlKGksIDEpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGtleSA9IFwiXCIuY29uY2F0KGNhbmRpZGF0ZS5pZCwgXCItXCIpLmNvbmNhdChuZWlnaGJvck5vZGUuaWQpOyAvLyBwcnVuZTIuMlxuXG4gICAgICB2YXIgZGlzdFRvQ2FuZGlkYXRlID0gc3BtTWFwW2tleV07XG4gICAgICB2YXIgaWR4ID0gcGF0dGVyblNwRGlzdFtuZWlnaGJvckxhYmVsXS5sZW5ndGggLSAxO1xuICAgICAgdmFyIG1heERpc3RXaXRoTGFiZWxJblBhdHRlcm4gPSBwYXR0ZXJuU3BEaXN0W25laWdoYm9yTGFiZWxdW2lkeF07IC8vIHBhdHRlcm5TcERpc3RbbmVpZ2hib3JMYWJlbF0g5bey57uP5oyJ54Wn5LuO5bCP5Yiw5aSn5o6S5bqPXG5cbiAgICAgIGlmIChkaXN0VG9DYW5kaWRhdGUgPiBtYXhEaXN0V2l0aExhYmVsSW5QYXR0ZXJuKSB7XG4gICAgICAgIG5laWdoYm9yTm9kZXMuc3BsaWNlKGksIDEpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRpcmVjdGVkKSB7XG4gICAgICAgIHZhciBrZXlCYWNrID0gXCJcIi5jb25jYXQobmVpZ2hib3JOb2RlLmlkLCBcIi1cIikuY29uY2F0KGNhbmRpZGF0ZS5pZCk7XG4gICAgICAgIHZhciBkaXN0RnJvbUNhbmRpZGF0ZSA9IHNwbU1hcFtrZXlCYWNrXTtcbiAgICAgICAgaWR4ID0gcGF0dGVyblNwRGlzdEJhY2tbbmVpZ2hib3JMYWJlbF0ubGVuZ3RoIC0gMTtcbiAgICAgICAgdmFyIG1heEJhY2tEaXN0V2l0aExhYmVsSW5QYXR0ZXJuID0gcGF0dGVyblNwRGlzdEJhY2tbbmVpZ2hib3JMYWJlbF1baWR4XTtcblxuICAgICAgICBpZiAoZGlzdEZyb21DYW5kaWRhdGUgPiBtYXhCYWNrRGlzdFdpdGhMYWJlbEluUGF0dGVybikge1xuICAgICAgICAgIG5laWdoYm9yTm9kZXMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9IC8vIHBydW5lMzog6Iul6K+l6YK75bGF54K55YiwIGNhbmRpZGF0ZSDnmoQgTkRTIOi3neemu+avlOWSjOWug+acieebuOWQjCBsYWJlbCDnmoToioLngrnliLAgYmVnaW5QTm9kZSDnmoTmnIDlsI8gTkRTIOi3neemu+Wwj++8jOenu+mZpOi/meS4queCuVxuXG5cbiAgICAgIHZhciBuZHNUb0NhbmRpZGF0ZSA9IG5kc0Rpc3Rba2V5XSA/IG5kc0Rpc3Rba2V5XSA6IGdldE5EU0Rpc3QoZ3JhcGhEYXRhLCBjYW5kaWRhdGUsIG5laWdoYm9yTm9kZSwgbm9kZU1hcCwgZGlzdFRvQ2FuZGlkYXRlLCBrTmVpZ2hib3JVbml0cywgZHNHLCBub2RlTGFiZWxQcm9wLCBlZGdlTGFiZWxQcm9wLCBuZHNEaXN0LCBpbnRHTWFwKTtcbiAgICAgIHZhciBwYXR0ZXJuS2V5ID0gXCJcIi5jb25jYXQoYmVnaW5QTm9kZS5pZCwgXCItXCIpLmNvbmNhdChuZWlnaGJvckxhYmVsKTtcbiAgICAgIHZhciBtaW5OZHNXaXRoTGFiZWxJblBhdHRlcm4gPSBwYXR0ZXJuTkRTRGlzdE1hcFtwYXR0ZXJuS2V5XVtwYXR0ZXJuTkRTRGlzdE1hcFtwYXR0ZXJuS2V5XS5sZW5ndGggLSAxXTsgLy8gcGF0dGVybk5EU0Rpc3Rba2V5XSDkuIDlrprlrZjlnKhcblxuICAgICAgaWYgKG5kc1RvQ2FuZGlkYXRlIDwgbWluTmRzV2l0aExhYmVsSW5QYXR0ZXJuKSB7XG4gICAgICAgIG5laWdoYm9yTm9kZXMuc3BsaWNlKGksIDEpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gLy8gcHJ1bmU0OiDoi6Xor6XpgrvlsYXngrnnmoTluqbmlbDlsI/kuo4gcGF0dGVybiDlkIwgbGFiZWwg6IqC54K55pyA5bCP5bqm5pWw77yM5Yig5Y676K+l54K5XG5cblxuICAgICAgdmFyIF9hID0gc3Rhc2hQYXR0ZXJuTm9kZUxhYmVsRGVncmVlTWFwKG1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXAsIG5laWdoYm9yTGFiZWwsIHBhdHRlcm5Ob2RlTWFwLCBwYXR0ZXJuTm9kZUxhYmVsTWFwKSxcbiAgICAgICAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsRGVncmVlID0gX2EubWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSxcbiAgICAgICAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsSW5EZWdyZWUgPSBfYS5taW5QYXR0ZXJuTm9kZUxhYmVsSW5EZWdyZWUsXG4gICAgICAgICAgbWluUGF0dGVybk5vZGVMYWJlbE91dERlZ3JlZSA9IF9hLm1pblBhdHRlcm5Ob2RlTGFiZWxPdXREZWdyZWU7XG5cbiAgICAgIGlmIChub2RlTWFwW25laWdoYm9yTm9kZS5pZF0uZGVncmVlIDwgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSkge1xuICAgICAgICBuZWlnaGJvck5vZGVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfSAvLyDoioLngrnlnKjkuKrmlbDkuIrnrKblkIjljLnphY3vvIjkuI3lsJHkuo4gcGF0dGVybiDnmoToioLngrnkuKrmlbDvvInvvIznjrDlnKjnrZvpgInnm7jlhbPovrlcblxuXG4gICAgaWYgKCF1bm1hdGNoZWQpIHtcbiAgICAgIGNhbmRpZGF0ZUdyYXBocy5wdXNoKHtcbiAgICAgICAgbm9kZXM6IFtjYW5kaWRhdGVdLmNvbmNhdChuZWlnaGJvck5vZGVzKVxuICAgICAgfSk7XG4gICAgfVxuICB9KTsgLy8gY29uc29sZS5sb2coXG4gIC8vICAgXCItLS0tLSBzdGFnZTQ6IGdvaW5nIHRvIHNwbGljZSBlZGdlcyBhbmQgbmVpZ2hib3JzIGZvciBlYWNoIGNhbmRpZGF0ZSBncmFwaCAtLS0tLS0tXCJcbiAgLy8gKTtcblxuICB2YXIgdW5kaXJlY3RlZExlbmd0aHNUb0JlZ2luUE5vZGUgPSAoMCwgX2RpamtzdHJhLmRlZmF1bHQpKHBhdHRlcm4sIGJlZ2luUE5vZGUuaWQsIGZhbHNlKS5sZW5ndGg7XG4gIHZhciB1bmRpcmVjdGVkTGVuZ3Roc1RvQmVnaW5QTm9kZUxhYmVsTWFwID0ge307XG5cbiAgaWYgKGRpcmVjdGVkKSB7XG4gICAgT2JqZWN0LmtleXModW5kaXJlY3RlZExlbmd0aHNUb0JlZ2luUE5vZGUpLmZvckVhY2goZnVuY3Rpb24gKG5vZGVJZCkge1xuICAgICAgdmFyIG5vZGVMYWJlbCA9IHBhdHRlcm5Ob2RlTWFwW25vZGVJZF0ubm9kZVtub2RlTGFiZWxQcm9wXTtcbiAgICAgIGlmICghdW5kaXJlY3RlZExlbmd0aHNUb0JlZ2luUE5vZGVMYWJlbE1hcFtub2RlTGFiZWxdKSB1bmRpcmVjdGVkTGVuZ3Roc1RvQmVnaW5QTm9kZUxhYmVsTWFwW25vZGVMYWJlbF0gPSBbdW5kaXJlY3RlZExlbmd0aHNUb0JlZ2luUE5vZGVbbm9kZUlkXV07ZWxzZSB1bmRpcmVjdGVkTGVuZ3Roc1RvQmVnaW5QTm9kZUxhYmVsTWFwW25vZGVMYWJlbF0ucHVzaCh1bmRpcmVjdGVkTGVuZ3Roc1RvQmVnaW5QTm9kZVtub2RlSWRdKTtcbiAgICB9KTtcbiAgICBPYmplY3Qua2V5cyh1bmRpcmVjdGVkTGVuZ3Roc1RvQmVnaW5QTm9kZUxhYmVsTWFwKS5mb3JFYWNoKGZ1bmN0aW9uIChwTGFiZWwpIHtcbiAgICAgIHVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXBbcExhYmVsXS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgIHJldHVybiBhIC0gYjtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIHVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXAgPSBwYXR0ZXJuU3BEaXN0O1xuICB9IC8vIOeOsOWcqCBjYW5kaWRhdGVHcmFwaHMg6YeM6Z2i5Y+q5pyJ6IqC54K577yM6L+b6KGM6L6555qE562b6YCJXG5cblxuICB2YXIgY2FuZGlkYXRlR3JhcGhOdW0gPSBjYW5kaWRhdGVHcmFwaHMubGVuZ3RoO1xuXG4gIHZhciBfbG9vcF8yID0gZnVuY3Rpb24gX2xvb3BfMihpKSB7XG4gICAgdmFyIGNhbmRpZGF0ZUdyYXBoID0gY2FuZGlkYXRlR3JhcGhzW2ldO1xuICAgIHZhciBjYW5kaWRhdGUgPSBjYW5kaWRhdGVHcmFwaC5ub2Rlc1swXTtcbiAgICB2YXIgY2FuZGlkYXRlTm9kZUxhYmVsQ291bnRNYXAgPSB7fTtcbiAgICB2YXIgY2FuZGlkYXRlTm9kZU1hcCA9IHt9O1xuICAgIGNhbmRpZGF0ZUdyYXBoLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUsIHEpIHtcbiAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbbm9kZS5pZF0gPSB7XG4gICAgICAgIGlkeDogcSxcbiAgICAgICAgbm9kZTogbm9kZSxcbiAgICAgICAgZGVncmVlOiAwLFxuICAgICAgICBpbkRlZ3JlZTogMCxcbiAgICAgICAgb3V0RGVncmVlOiAwXG4gICAgICB9O1xuICAgICAgdmFyIGNOb2RlTGFiZWwgPSBub2RlW25vZGVMYWJlbFByb3BdO1xuICAgICAgaWYgKCFjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcFtjTm9kZUxhYmVsXSkgY2FuZGlkYXRlTm9kZUxhYmVsQ291bnRNYXBbY05vZGVMYWJlbF0gPSAxO2Vsc2UgY2FuZGlkYXRlTm9kZUxhYmVsQ291bnRNYXBbY05vZGVMYWJlbF0rKztcbiAgICB9KTsgLy8g5qC55o2uIGNhbmRpZGF0ZSDlkowgbmVpZ2hib3JOb2RlcyDkuK3nmoToioLngrnnlJ/miJAgRyDnmoTor7Hlr7zlrZDlm75cbiAgICAvLyDljbPvvIzlsIYgZ3JhcGhEYXRhIOS4iuS4pOerr+mDveWcqCBjYW5kaWRhdGVHcmFwaC5ub2RlcyDkuK3nmoTovrnmlL7lhaUgY2FuZGlkYXRlRWRnZXNcblxuICAgIHZhciBjYW5kaWRhdGVFZGdlcyA9IFtdO1xuICAgIHZhciBlZGdlTGFiZWxDb3VudE1hcCA9IHt9O1xuICAgIGdyYXBoRGF0YS5lZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICBpZiAoY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnNvdXJjZV0gJiYgY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnRhcmdldF0pIHtcbiAgICAgICAgY2FuZGlkYXRlRWRnZXMucHVzaChlZGdlKTtcbiAgICAgICAgaWYgKCFlZGdlTGFiZWxDb3VudE1hcFtlZGdlW2VkZ2VMYWJlbFByb3BdXSkgZWRnZUxhYmVsQ291bnRNYXBbZWRnZVtlZGdlTGFiZWxQcm9wXV0gPSAxO2Vsc2UgZWRnZUxhYmVsQ291bnRNYXBbZWRnZVtlZGdlTGFiZWxQcm9wXV0rKztcbiAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnNvdXJjZV0uZGVncmVlKys7XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS50YXJnZXRdLmRlZ3JlZSsrO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2VkZ2Uuc291cmNlXS5vdXREZWdyZWUrKztcbiAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnRhcmdldF0uaW5EZWdyZWUrKztcbiAgICAgIH1cbiAgICB9KTsgLy8gcHJ1bmXvvJroi6XmnInkuIDkuKogZWRnZUxhYmVsIOWcqCBjYW5kaWRhdGVHcmFwaCDkuIrnmoTkuKrmlbDlsJHkuo4gcGF0dGVybu+8jOWOu+mZpOivpeWbvlxuXG4gICAgdmFyIHBhdHRlbnJFZGdlTGFiZWxOdW0gPSBPYmplY3Qua2V5cyhwYXR0ZXJuRWRnZUxhYmVsTWFwKS5sZW5ndGg7XG4gICAgdmFyIHBydW5lZEJ5RWRnZUxhYmVsID0gZmFsc2U7XG5cbiAgICBmb3IgKHZhciBlID0gMDsgZSA8IHBhdHRlbnJFZGdlTGFiZWxOdW07IGUrKykge1xuICAgICAgdmFyIGxhYmVsXzEgPSBPYmplY3Qua2V5cyhwYXR0ZXJuRWRnZUxhYmVsTWFwKVtlXTtcblxuICAgICAgaWYgKCFlZGdlTGFiZWxDb3VudE1hcFtsYWJlbF8xXSB8fCBlZGdlTGFiZWxDb3VudE1hcFtsYWJlbF8xXSA8IHBhdHRlcm5FZGdlTGFiZWxNYXBbbGFiZWxfMV0ubGVuZ3RoKSB7XG4gICAgICAgIHBydW5lZEJ5RWRnZUxhYmVsID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBydW5lZEJ5RWRnZUxhYmVsKSB7XG4gICAgICBjYW5kaWRhdGVHcmFwaHMuc3BsaWNlKGksIDEpO1xuICAgICAgcmV0dXJuIFwiY29udGludWVcIjtcbiAgICB9IC8vIOmBjeWOhiBjYW5kaWRhdGVFZGdlc++8jOi/m+ihjOi+ueeahOetm+mAiVxuXG5cbiAgICB2YXIgY2FuZGlkYXRlRWRnZU51bSA9IGNhbmRpZGF0ZUVkZ2VzLmxlbmd0aDsgLy8gcHJ1bmXvvJroi6XovrnmlbDov4flsJHvvIzljrvpmaTor6Xlm75cblxuICAgIGlmIChjYW5kaWRhdGVFZGdlTnVtIDwgcGF0dGVybi5lZGdlcy5sZW5ndGgpIHtcbiAgICAgIGNhbmRpZGF0ZUdyYXBocy5zcGxpY2UoaSwgMSk7XG4gICAgICByZXR1cm4gXCJicmVha1wiO1xuICAgIH1cblxuICAgIHZhciBjYW5kaWRhdGVHcmFwaEludmFsaWQgPSBmYWxzZTtcblxuICAgIHZhciBfbG9vcF81ID0gZnVuY3Rpb24gX2xvb3BfNShlKSB7XG4gICAgICB2YXIgZWRnZSA9IGNhbmRpZGF0ZUVkZ2VzW2VdO1xuICAgICAgdmFyIGVkZ2VMYWJlbCA9IGVkZ2VbZWRnZUxhYmVsUHJvcF07XG4gICAgICB2YXIgcGF0dGVybkVkZ2VzV2l0aExhYmVsID0gcGF0dGVybkVkZ2VMYWJlbE1hcFtlZGdlTGFiZWxdOyAvLyBwcnVuZSAxOiDoi6XovrnnmoQgbGFiZWwg5LiN5a2Y5Zyo5LqOIHBhdHRlcm4g6L65IGxhYmVsIOS4re+8jOWOu+mZpOivpei+uVxuXG4gICAgICBpZiAoIXBhdHRlcm5FZGdlc1dpdGhMYWJlbCB8fCAhcGF0dGVybkVkZ2VzV2l0aExhYmVsLmxlbmd0aCkge1xuICAgICAgICBlZGdlTGFiZWxDb3VudE1hcFtlZGdlTGFiZWxdLS07IC8vIOiLpei/meS4qiBsYWJlbCDnmoQgY291bnQg5YeP5bCR5LmL5ZCO77yM6K+lIGxhYmVsIOeahOi+ueaVsOS4jei2s++8jOWOu+mZpOivpeWbvlxuXG4gICAgICAgIGlmIChwYXR0ZXJuRWRnZXNXaXRoTGFiZWwgJiYgZWRnZUxhYmVsQ291bnRNYXBbZWRnZUxhYmVsXSA8IHBhdHRlcm5FZGdlc1dpdGhMYWJlbC5sZW5ndGgpIHtcbiAgICAgICAgICBjYW5kaWRhdGVHcmFwaEludmFsaWQgPSB0cnVlO1xuICAgICAgICAgIHJldHVybiBcImJyZWFrXCI7XG4gICAgICAgIH1cblxuICAgICAgICBjYW5kaWRhdGVFZGdlcy5zcGxpY2UoZSwgMSk7XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS5zb3VyY2VdLmRlZ3JlZS0tO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2VkZ2UudGFyZ2V0XS5kZWdyZWUtLTtcbiAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnNvdXJjZV0ub3V0RGVncmVlLS07XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS50YXJnZXRdLmluRGVncmVlLS07XG4gICAgICAgIHJldHVybiBcImNvbnRpbnVlXCI7XG4gICAgICB9IC8vIHBydW5lIDI6IOiLpei+ueeahCBsYWJlbCAr5Lik56uvIGxhYmVsIOeahOS4ieWFg+e7hOWFs+ezu+S4jeiDveWcqCBwYXR0ZXJuIOS4reaJvuWIsO+8jOWOu+mZpOivpei+uVxuXG5cbiAgICAgIHZhciBzb3VyY2VMYWJlbCA9IGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS5zb3VyY2VdLm5vZGVbbm9kZUxhYmVsUHJvcF07XG4gICAgICB2YXIgdGFyZ2V0TGFiZWwgPSBjYW5kaWRhdGVOb2RlTWFwW2VkZ2UudGFyZ2V0XS5ub2RlW25vZGVMYWJlbFByb3BdO1xuICAgICAgdmFyIGVkZ2VNYXRjaGVkID0gZmFsc2U7XG4gICAgICBwYXR0ZXJuRWRnZXNXaXRoTGFiZWwuZm9yRWFjaChmdW5jdGlvbiAocGF0dGVybkVkZ2UpIHtcbiAgICAgICAgdmFyIHBhdHRlcm5Tb3VyY2UgPSBwYXR0ZXJuTm9kZU1hcFtwYXR0ZXJuRWRnZS5zb3VyY2VdLm5vZGU7XG4gICAgICAgIHZhciBwYXR0ZXJuVGFyZ2V0ID0gcGF0dGVybk5vZGVNYXBbcGF0dGVybkVkZ2UudGFyZ2V0XS5ub2RlO1xuICAgICAgICBpZiAocGF0dGVyblNvdXJjZVtub2RlTGFiZWxQcm9wXSA9PT0gc291cmNlTGFiZWwgJiYgcGF0dGVyblRhcmdldFtub2RlTGFiZWxQcm9wXSA9PT0gdGFyZ2V0TGFiZWwpIGVkZ2VNYXRjaGVkID0gdHJ1ZTtcbiAgICAgICAgaWYgKCFkaXJlY3RlZCAmJiBwYXR0ZXJuU291cmNlW25vZGVMYWJlbFByb3BdID09PSB0YXJnZXRMYWJlbCAmJiBwYXR0ZXJuVGFyZ2V0W25vZGVMYWJlbFByb3BdID09PSBzb3VyY2VMYWJlbCkgZWRnZU1hdGNoZWQgPSB0cnVlO1xuICAgICAgfSk7XG5cbiAgICAgIGlmICghZWRnZU1hdGNoZWQpIHtcbiAgICAgICAgZWRnZUxhYmVsQ291bnRNYXBbZWRnZUxhYmVsXS0tOyAvLyDoi6Xov5nkuKogbGFiZWwg55qEIGNvdW50IOWHj+WwkeS5i+WQju+8jOivpSBsYWJlbCDnmoTovrnmlbDkuI3otrPvvIzljrvpmaTor6Xlm75cblxuICAgICAgICBpZiAocGF0dGVybkVkZ2VzV2l0aExhYmVsICYmIGVkZ2VMYWJlbENvdW50TWFwW2VkZ2VMYWJlbF0gPCBwYXR0ZXJuRWRnZXNXaXRoTGFiZWwubGVuZ3RoKSB7XG4gICAgICAgICAgY2FuZGlkYXRlR3JhcGhJbnZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICByZXR1cm4gXCJicmVha1wiO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FuZGlkYXRlRWRnZXMuc3BsaWNlKGUsIDEpO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2VkZ2Uuc291cmNlXS5kZWdyZWUtLTtcbiAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtlZGdlLnRhcmdldF0uZGVncmVlLS07XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbZWRnZS5zb3VyY2VdLm91dERlZ3JlZS0tO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW2VkZ2UudGFyZ2V0XS5pbkRlZ3JlZS0tO1xuICAgICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBmb3IgKHZhciBlID0gY2FuZGlkYXRlRWRnZU51bSAtIDE7IGUgPj0gMDsgZS0tKSB7XG4gICAgICB2YXIgc3RhdGVfMiA9IF9sb29wXzUoZSk7XG5cbiAgICAgIGlmIChzdGF0ZV8yID09PSBcImJyZWFrXCIpIGJyZWFrO1xuICAgIH0gLy8gcHJ1bmUyOiDliKDpmaTovrnnmoTov4fnqIvkuK3vvIzlj5HnjrDovrnmlbDov4flsJEv6L65IGxhYmVsIOaVsOi/h+WwkeaXtu+8jOWOu+mZpOivpeWbvlxuXG5cbiAgICBpZiAoY2FuZGlkYXRlR3JhcGhJbnZhbGlkKSB7XG4gICAgICBjYW5kaWRhdGVHcmFwaHMuc3BsaWNlKGksIDEpO1xuICAgICAgcmV0dXJuIFwiY29udGludWVcIjtcbiAgICB9XG5cbiAgICBjYW5kaWRhdGVHcmFwaC5lZGdlcyA9IGNhbmRpZGF0ZUVkZ2VzO1xuICAgIHZhciBsZW5ndGhzVG9DYW5kaWRhdGUgPSAoMCwgX2RpamtzdHJhLmRlZmF1bHQpKGNhbmRpZGF0ZUdyYXBoLCBjYW5kaWRhdGVHcmFwaC5ub2Rlc1swXS5pZCwgZmFsc2UpLmxlbmd0aDtcbiAgICBPYmplY3Qua2V5cyhsZW5ndGhzVG9DYW5kaWRhdGUpLnJldmVyc2UoKS5mb3JFYWNoKGZ1bmN0aW9uICh0YXJnZXRJZCkge1xuICAgICAgaWYgKHRhcmdldElkID09PSBjYW5kaWRhdGVHcmFwaC5ub2Rlc1swXS5pZCB8fCBjYW5kaWRhdGVHcmFwaEludmFsaWQpIHJldHVybjsgLy8gcHJ1bmU0OiDpgJrov4fkuIrov7Doo4HliarvvIzlj6/og73lr7zoh7Tor6XpgrvlsYXlrZDlm77lj5jkuLrkuI3ov57pgJrjgILoo4Hliarmjonnm67liY3lnKjov5nkuKrpgrvlsYXlrZDlm77kuK3lkowgY2FuZGlkYXRl77yI56ys5LiA5Liq6IqC54K577yJ5LiN6L+e6YCa55qE6IqC54K5XG5cbiAgICAgIGlmIChsZW5ndGhzVG9DYW5kaWRhdGVbdGFyZ2V0SWRdID09PSBJbmZpbml0eSkge1xuICAgICAgICB2YXIgdGFyZ2V0Tm9kZUxhYmVsID0gY2FuZGlkYXRlTm9kZU1hcFt0YXJnZXRJZF0ubm9kZVtub2RlTGFiZWxQcm9wXTtcbiAgICAgICAgY2FuZGlkYXRlTm9kZUxhYmVsQ291bnRNYXBbdGFyZ2V0Tm9kZUxhYmVsXS0tO1xuXG4gICAgICAgIGlmIChjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcFt0YXJnZXROb2RlTGFiZWxdIDwgcGF0dGVybk5vZGVMYWJlbE1hcFt0YXJnZXROb2RlTGFiZWxdLmxlbmd0aCkge1xuICAgICAgICAgIGNhbmRpZGF0ZUdyYXBoSW52YWxpZCA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGlkeCA9IGNhbmRpZGF0ZUdyYXBoLm5vZGVzLmluZGV4T2YoY2FuZGlkYXRlTm9kZU1hcFt0YXJnZXRJZF0ubm9kZSk7XG4gICAgICAgIGNhbmRpZGF0ZUdyYXBoLm5vZGVzLnNwbGljZShpZHgsIDEpO1xuICAgICAgICBjYW5kaWRhdGVOb2RlTWFwW3RhcmdldElkXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvLyBwcnVuZTU6IOe7j+i/h+i+ueijgeWJquWQju+8jOWPr+iDveWPiOWHuueOsOS6huacgOefrei3r+W+hOi/h+mVv+eahOiKgueCuSDvvIjmr5QgcGF0dGVybiDkuK3lkIwgbGFiZWwg55qE6IqC54K55YiwIGJlZ2luTm9kZSDmnIDlpKfmnIDnn63ot53nprvov5zvvInvvIzliKDljrvov5nkupvoioLngrlcblxuXG4gICAgICB2YXIgbkxhYmVsID0gbm9kZU1hcFt0YXJnZXRJZF0ubm9kZVtub2RlTGFiZWxQcm9wXTtcblxuICAgICAgaWYgKCF1bmRpcmVjdGVkTGVuZ3Roc1RvQmVnaW5QTm9kZUxhYmVsTWFwW25MYWJlbF0gfHwgIXVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXBbbkxhYmVsXS5sZW5ndGggfHwgbGVuZ3Roc1RvQ2FuZGlkYXRlW3RhcmdldElkXSA+IHVuZGlyZWN0ZWRMZW5ndGhzVG9CZWdpblBOb2RlTGFiZWxNYXBbbkxhYmVsXVt1bmRpcmVjdGVkTGVuZ3Roc1RvQmVnaW5QTm9kZUxhYmVsTWFwW25MYWJlbF0ubGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgdmFyIHRhcmdldE5vZGVMYWJlbCA9IGNhbmRpZGF0ZU5vZGVNYXBbdGFyZ2V0SWRdLm5vZGVbbm9kZUxhYmVsUHJvcF07XG4gICAgICAgIGNhbmRpZGF0ZU5vZGVMYWJlbENvdW50TWFwW3RhcmdldE5vZGVMYWJlbF0tLTtcblxuICAgICAgICBpZiAoY2FuZGlkYXRlTm9kZUxhYmVsQ291bnRNYXBbdGFyZ2V0Tm9kZUxhYmVsXSA8IHBhdHRlcm5Ob2RlTGFiZWxNYXBbdGFyZ2V0Tm9kZUxhYmVsXS5sZW5ndGgpIHtcbiAgICAgICAgICBjYW5kaWRhdGVHcmFwaEludmFsaWQgPSB0cnVlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpZHggPSBjYW5kaWRhdGVHcmFwaC5ub2Rlcy5pbmRleE9mKGNhbmRpZGF0ZU5vZGVNYXBbdGFyZ2V0SWRdLm5vZGUpO1xuICAgICAgICBjYW5kaWRhdGVHcmFwaC5ub2Rlcy5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFt0YXJnZXRJZF0gPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoY2FuZGlkYXRlR3JhcGhJbnZhbGlkKSB7XG4gICAgICBjYW5kaWRhdGVHcmFwaHMuc3BsaWNlKGksIDEpO1xuICAgICAgcmV0dXJuIFwiY29udGludWVcIjtcbiAgICB9XG5cbiAgICB2YXIgZGVncmVlQ2hhbmdlZCA9IHRydWU7XG4gICAgdmFyIGxvb3BDb3VudCA9IDA7XG5cbiAgICB3aGlsZSAoZGVncmVlQ2hhbmdlZCAmJiAhY2FuZGlkYXRlR3JhcGhJbnZhbGlkKSB7XG4gICAgICBkZWdyZWVDaGFuZ2VkID0gZmFsc2U7IC8vIGNhbmRpZGF0ZSDluqbmlbDkuI3otrPvvIzliKDljrvor6Xlm75cblxuICAgICAgdmFyIGNvbmRpdGlvbiA9IGRpcmVjdGVkID8gY2FuZGlkYXRlTm9kZU1hcFtjYW5kaWRhdGUuaWRdLmRlZ3JlZSA8IHBhdHRlcm5Ob2RlTWFwW2JlZ2luUE5vZGUuaWRdLmRlZ3JlZSB8fCBjYW5kaWRhdGVOb2RlTWFwW2NhbmRpZGF0ZS5pZF0uaW5EZWdyZWUgPCBwYXR0ZXJuTm9kZU1hcFtiZWdpblBOb2RlLmlkXS5pbkRlZ3JlZSB8fCBjYW5kaWRhdGVOb2RlTWFwW2NhbmRpZGF0ZS5pZF0ub3V0RGVncmVlIDwgcGF0dGVybk5vZGVNYXBbYmVnaW5QTm9kZS5pZF0ub3V0RGVncmVlIDogY2FuZGlkYXRlTm9kZU1hcFtjYW5kaWRhdGUuaWRdLmRlZ3JlZSA8IHBhdHRlcm5Ob2RlTWFwW2JlZ2luUE5vZGUuaWRdLmRlZ3JlZTtcblxuICAgICAgaWYgKGNvbmRpdGlvbikge1xuICAgICAgICBjYW5kaWRhdGVHcmFwaEludmFsaWQgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH0gLy8gY2FuZGlkYXRlIGxhYmVsIOS4quaVsOS4jei2s++8jOWIoOWOu+ivpeWbvlxuXG5cbiAgICAgIGlmIChjYW5kaWRhdGVOb2RlTGFiZWxDb3VudE1hcFtjYW5kaWRhdGVbbm9kZUxhYmVsUHJvcF1dIDwgcGF0dGVybk5vZGVMYWJlbE1hcFtjYW5kaWRhdGVbbm9kZUxhYmVsUHJvcF1dLmxlbmd0aCkge1xuICAgICAgICBjYW5kaWRhdGVHcmFwaEludmFsaWQgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH0gLy8gcHJ1bmU277ya5Y676Zmk5bqm5pWw6L+H5bCP55qE6IqC54K5XG5cblxuICAgICAgdmFyIGN1cnJlbnRDYW5kaWRhdGVOb2RlTnVtID0gY2FuZGlkYXRlR3JhcGgubm9kZXMubGVuZ3RoO1xuXG4gICAgICBmb3IgKHZhciBvID0gY3VycmVudENhbmRpZGF0ZU5vZGVOdW0gLSAxOyBvID49IDA7IG8tLSkge1xuICAgICAgICB2YXIgY2dOb2RlID0gY2FuZGlkYXRlR3JhcGgubm9kZXNbb107XG4gICAgICAgIHZhciBub2RlRGVncmVlID0gY2FuZGlkYXRlTm9kZU1hcFtjZ05vZGUuaWRdLmRlZ3JlZTtcbiAgICAgICAgdmFyIG5vZGVJbkRlZ3JlZSA9IGNhbmRpZGF0ZU5vZGVNYXBbY2dOb2RlLmlkXS5pbkRlZ3JlZTtcbiAgICAgICAgdmFyIG5vZGVPdXREZWdyZWUgPSBjYW5kaWRhdGVOb2RlTWFwW2NnTm9kZS5pZF0ub3V0RGVncmVlO1xuICAgICAgICB2YXIgY05vZGVMYWJlbCA9IGNnTm9kZVtub2RlTGFiZWxQcm9wXTtcblxuICAgICAgICB2YXIgX2UgPSBzdGFzaFBhdHRlcm5Ob2RlTGFiZWxEZWdyZWVNYXAobWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZU1hcCwgY05vZGVMYWJlbCwgcGF0dGVybk5vZGVNYXAsIHBhdHRlcm5Ob2RlTGFiZWxNYXApLFxuICAgICAgICAgICAgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSA9IF9lLm1pblBhdHRlcm5Ob2RlTGFiZWxEZWdyZWUsXG4gICAgICAgICAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsSW5EZWdyZWUgPSBfZS5taW5QYXR0ZXJuTm9kZUxhYmVsSW5EZWdyZWUsXG4gICAgICAgICAgICBtaW5QYXR0ZXJuTm9kZUxhYmVsT3V0RGVncmVlID0gX2UubWluUGF0dGVybk5vZGVMYWJlbE91dERlZ3JlZTtcblxuICAgICAgICB2YXIgZGVsZXRlQ29uZGl0aW9uID0gZGlyZWN0ZWQgPyBub2RlRGVncmVlIDwgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZSB8fCBub2RlSW5EZWdyZWUgPCBtaW5QYXR0ZXJuTm9kZUxhYmVsSW5EZWdyZWUgfHwgbm9kZU91dERlZ3JlZSA8IG1pblBhdHRlcm5Ob2RlTGFiZWxPdXREZWdyZWUgOiBub2RlRGVncmVlIDwgbWluUGF0dGVybk5vZGVMYWJlbERlZ3JlZTtcblxuICAgICAgICBpZiAoZGVsZXRlQ29uZGl0aW9uKSB7XG4gICAgICAgICAgY2FuZGlkYXRlTm9kZUxhYmVsQ291bnRNYXBbY2dOb2RlW25vZGVMYWJlbFByb3BdXS0tOyAvLyDoioLngrkgbGFiZWwg5Liq5pWw5LiN6LazXG5cbiAgICAgICAgICBpZiAoY2FuZGlkYXRlTm9kZUxhYmVsQ291bnRNYXBbY2dOb2RlW25vZGVMYWJlbFByb3BdXSA8IHBhdHRlcm5Ob2RlTGFiZWxNYXBbY2dOb2RlW25vZGVMYWJlbFByb3BdXS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhbmRpZGF0ZUdyYXBoSW52YWxpZCA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYW5kaWRhdGVHcmFwaC5ub2Rlcy5zcGxpY2UobywgMSk7XG4gICAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtjZ05vZGUuaWRdID0gdW5kZWZpbmVkO1xuICAgICAgICAgIGRlZ3JlZUNoYW5nZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChjYW5kaWRhdGVHcmFwaEludmFsaWQgfHwgIWRlZ3JlZUNoYW5nZWQgJiYgbG9vcENvdW50ICE9PSAwKSBicmVhazsgLy8g57uP6L+HIHBydW5lNSDoioLngrnoo4HliarvvIzliKDljrvnq6/ngrnlt7Lnu4/kuI3lnKggY2FuZGlkYXRlR3JhcGgg5Lit55qE6L65XG5cbiAgICAgIGNhbmRpZGF0ZUVkZ2VOdW0gPSBjYW5kaWRhdGVFZGdlcy5sZW5ndGg7XG5cbiAgICAgIGZvciAodmFyIHkgPSBjYW5kaWRhdGVFZGdlTnVtIC0gMTsgeSA+PSAwOyB5LS0pIHtcbiAgICAgICAgdmFyIGNlZGdlID0gY2FuZGlkYXRlRWRnZXNbeV07XG5cbiAgICAgICAgaWYgKCFjYW5kaWRhdGVOb2RlTWFwW2NlZGdlLnNvdXJjZV0gfHwgIWNhbmRpZGF0ZU5vZGVNYXBbY2VkZ2UudGFyZ2V0XSkge1xuICAgICAgICAgIGNhbmRpZGF0ZUVkZ2VzLnNwbGljZSh5LCAxKTtcbiAgICAgICAgICB2YXIgZWRnZUxhYmVsID0gY2VkZ2VbZWRnZUxhYmVsUHJvcF07XG4gICAgICAgICAgZWRnZUxhYmVsQ291bnRNYXBbZWRnZUxhYmVsXS0tO1xuXG4gICAgICAgICAgaWYgKGNhbmRpZGF0ZU5vZGVNYXBbY2VkZ2Uuc291cmNlXSkge1xuICAgICAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtjZWRnZS5zb3VyY2VdLmRlZ3JlZS0tO1xuICAgICAgICAgICAgY2FuZGlkYXRlTm9kZU1hcFtjZWRnZS5zb3VyY2VdLm91dERlZ3JlZS0tO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChjYW5kaWRhdGVOb2RlTWFwW2NlZGdlLnRhcmdldF0pIHtcbiAgICAgICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbY2VkZ2UudGFyZ2V0XS5kZWdyZWUtLTtcbiAgICAgICAgICAgIGNhbmRpZGF0ZU5vZGVNYXBbY2VkZ2UudGFyZ2V0XS5pbkRlZ3JlZS0tO1xuICAgICAgICAgIH0gLy8g6L65IGxhYmVsIOaVsOmHj+S4jei2s1xuXG5cbiAgICAgICAgICBpZiAocGF0dGVybkVkZ2VMYWJlbE1hcFtlZGdlTGFiZWxdICYmIGVkZ2VMYWJlbENvdW50TWFwW2VkZ2VMYWJlbF0gPCBwYXR0ZXJuRWRnZUxhYmVsTWFwW2VkZ2VMYWJlbF0ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjYW5kaWRhdGVHcmFwaEludmFsaWQgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZGVncmVlQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbG9vcENvdW50Kys7XG4gICAgfVxuXG4gICAgaWYgKGNhbmRpZGF0ZUdyYXBoSW52YWxpZCkge1xuICAgICAgY2FuZGlkYXRlR3JhcGhzLnNwbGljZShpLCAxKTtcbiAgICAgIHJldHVybiBcImNvbnRpbnVlXCI7XG4gICAgfSAvLyBwcnVuZTog6Iul6IqC54K5L+i+ueaVsOi/h+Wwke+8jOiKgueCuS/ovrkgbGFiZWwg6L+H5bCR77yM5Y675o6J6L+Z5Liq5Zu+XG5cblxuICAgIGlmIChjYW5kaWRhdGVHcmFwaEludmFsaWQgfHwgY2FuZGlkYXRlR3JhcGgubm9kZXMubGVuZ3RoIDwgcGF0dGVybi5ub2Rlcy5sZW5ndGggfHwgY2FuZGlkYXRlRWRnZXMubGVuZ3RoIDwgcGF0dGVybi5lZGdlcy5sZW5ndGgpIHtcbiAgICAgIGNhbmRpZGF0ZUdyYXBocy5zcGxpY2UoaSwgMSk7XG4gICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgIH1cbiAgfTtcblxuICBmb3IgKHZhciBpID0gY2FuZGlkYXRlR3JhcGhOdW0gLSAxOyBpID49IDA7IGktLSkge1xuICAgIHZhciBzdGF0ZV8xID0gX2xvb3BfMihpKTtcblxuICAgIGlmIChzdGF0ZV8xID09PSBcImJyZWFrXCIpIGJyZWFrO1xuICB9IC8vIOatpOaXtuW3sue7j+eUn+aIkOeahOWkmuS4qiBjYW5kaWRhdGVHcmFwaHPvvIzlj6/og73mnInph43lpI1cbiAgLy8gY29uc29sZS5sb2coXG4gIC8vICAgXCItLS0tLSBzdGFnZTU6IGdvaW5nIHRvIHNwbGljZSBkdWxwbGljYXRlZCBjYW5kaWRhdGUgZ3JhcGhzIC0tLS0tLS1cIlxuICAvLyApO1xuICAvLyDliKDljrsgY2FuZGlkYXRlR3JhcGhzIOS4reS4gOaooeS4gOagt+eahOWtkOWbvu+8jOmAmui/h+i+ueeahCBub2RlLW5vZGUtZWRnZUxhYmVsIOS9nOS4uiBrZXnvvIzov5nnsbvovrnkuKrmlbDkvZzkuLogdmFsdWXvvIzov5vooYzljLnphY1cblxuXG4gIHZhciBjdXJyZW50TGVuZ3RoID0gY2FuZGlkYXRlR3JhcGhzLmxlbmd0aDtcblxuICB2YXIgX2xvb3BfMyA9IGZ1bmN0aW9uIF9sb29wXzMoaSkge1xuICAgIHZhciBjZzEgPSBjYW5kaWRhdGVHcmFwaHNbaV07XG4gICAgdmFyIGNnMUVkZ2VNYXAgPSB7fTsgLy8gW25vZGUxLmlkLW5vZGUyLmlkLWVkZ2UubGFiZWxdOiBjb3VudFxuXG4gICAgY2cxLmVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIHZhciBrZXkgPSBcIlwiLmNvbmNhdChlZGdlLnNvdXJjZSwgXCItXCIpLmNvbmNhdChlZGdlLnRhcmdldCwgXCItXCIpLmNvbmNhdChlZGdlLmxhYmVsKTtcbiAgICAgIGlmICghY2cxRWRnZU1hcFtrZXldKSBjZzFFZGdlTWFwW2tleV0gPSAxO2Vsc2UgY2cxRWRnZU1hcFtrZXldKys7XG4gICAgfSk7XG5cbiAgICB2YXIgX2xvb3BfNiA9IGZ1bmN0aW9uIF9sb29wXzYoaikge1xuICAgICAgdmFyIGNnMiA9IGNhbmRpZGF0ZUdyYXBoc1tqXTtcbiAgICAgIHZhciBjZzJFZGdlTWFwID0ge307IC8vIFtub2RlMS5pZC1ub2RlMi5pZC1lZGdlLmxhYmVsXTogY291bnRcblxuICAgICAgY2cyLmVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgdmFyIGtleSA9IFwiXCIuY29uY2F0KGVkZ2Uuc291cmNlLCBcIi1cIikuY29uY2F0KGVkZ2UudGFyZ2V0LCBcIi1cIikuY29uY2F0KGVkZ2UubGFiZWwpO1xuICAgICAgICBpZiAoIWNnMkVkZ2VNYXBba2V5XSkgY2cyRWRnZU1hcFtrZXldID0gMTtlbHNlIGNnMkVkZ2VNYXBba2V5XSsrO1xuICAgICAgfSk7XG4gICAgICB2YXIgc2FtZSA9IHRydWU7XG5cbiAgICAgIGlmIChPYmplY3Qua2V5cyhjZzJFZGdlTWFwKS5sZW5ndGggIT09IE9iamVjdC5rZXlzKGNnMUVkZ2VNYXApLmxlbmd0aCkge1xuICAgICAgICBzYW1lID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBPYmplY3Qua2V5cyhjZzFFZGdlTWFwKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICBpZiAoY2cyRWRnZU1hcFtrZXldICE9PSBjZzFFZGdlTWFwW2tleV0pIHNhbWUgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzYW1lKSB7XG4gICAgICAgIGNhbmRpZGF0ZUdyYXBocy5zcGxpY2UoaiwgMSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGZvciAodmFyIGogPSBjdXJyZW50TGVuZ3RoIC0gMTsgaiA+IGk7IGotLSkge1xuICAgICAgX2xvb3BfNihqKTtcbiAgICB9XG5cbiAgICBjdXJyZW50TGVuZ3RoID0gY2FuZGlkYXRlR3JhcGhzLmxlbmd0aDtcbiAgfTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8PSBjdXJyZW50TGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgX2xvb3BfMyhpKTtcbiAgfVxuXG4gIHJldHVybiBjYW5kaWRhdGVHcmFwaHM7XG59O1xuXG52YXIgX2RlZmF1bHQgPSBHQURESTtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/gaddi.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/label-propagation.js":
/*!***************************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/label-propagation.js ***!
\***************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _adjacentMatrix = _interopRequireDefault(__webpack_require__(/*! ./adjacent-matrix */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/adjacent-matrix.js\"));\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/util.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * 标签传播算法\n * @param graphData 图数据\n * @param directed 是否有向图,默认为 false\n * @param weightPropertyName 权重的属性字段\n * @param maxIteration 最大迭代次数\n */\nvar labelPropagation = function labelPropagation(graphData, directed, weightPropertyName, maxIteration) {\n if (directed === void 0) {\n directed = false;\n }\n\n if (weightPropertyName === void 0) {\n weightPropertyName = 'weight';\n }\n\n if (maxIteration === void 0) {\n maxIteration = 1000;\n } // the origin data\n\n\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var clusters = {};\n var nodeMap = {}; // init the clusters and nodeMap\n\n nodes.forEach(function (node, i) {\n var cid = (0, _util.uniqueId)();\n node.clusterId = cid;\n clusters[cid] = {\n id: cid,\n nodes: [node]\n };\n nodeMap[node.id] = {\n node: node,\n idx: i\n };\n }); // the adjacent matrix of calNodes inside clusters\n\n var adjMatrix = (0, _adjacentMatrix.default)(graphData, directed); // the sum of each row in adjacent matrix\n\n var ks = [];\n /**\n * neighbor nodes (id for key and weight for value) for each node\n * neighbors = {\n * id(node_id): { id(neighbor_1_id): weight(weight of the edge), id(neighbor_2_id): weight(weight of the edge), ... },\n * ...\n * }\n */\n\n var neighbors = {};\n adjMatrix.forEach(function (row, i) {\n var k = 0;\n var iid = nodes[i].id;\n neighbors[iid] = {};\n row.forEach(function (entry, j) {\n if (!entry) return;\n k += entry;\n var jid = nodes[j].id;\n neighbors[iid][jid] = entry;\n });\n ks.push(k);\n });\n var iter = 0;\n\n var _loop_1 = function _loop_1() {\n var changed = false;\n nodes.forEach(function (node) {\n var neighborClusters = {};\n Object.keys(neighbors[node.id]).forEach(function (neighborId) {\n var neighborWeight = neighbors[node.id][neighborId];\n var neighborNode = nodeMap[neighborId].node;\n var neighborClusterId = neighborNode.clusterId;\n if (!neighborClusters[neighborClusterId]) neighborClusters[neighborClusterId] = 0;\n neighborClusters[neighborClusterId] += neighborWeight;\n }); // find the cluster with max weight\n\n var maxWeight = -Infinity;\n var bestClusterIds = [];\n Object.keys(neighborClusters).forEach(function (clusterId) {\n if (maxWeight < neighborClusters[clusterId]) {\n maxWeight = neighborClusters[clusterId];\n bestClusterIds = [clusterId];\n } else if (maxWeight === neighborClusters[clusterId]) {\n bestClusterIds.push(clusterId);\n }\n });\n if (bestClusterIds.length === 1 && bestClusterIds[0] === node.clusterId) return;\n var selfClusterIdx = bestClusterIds.indexOf(node.clusterId);\n if (selfClusterIdx >= 0) bestClusterIds.splice(selfClusterIdx, 1);\n\n if (bestClusterIds && bestClusterIds.length) {\n changed = true; // remove from origin cluster\n\n var selfCluster = clusters[node.clusterId];\n var nodeInSelfClusterIdx = selfCluster.nodes.indexOf(node);\n selfCluster.nodes.splice(nodeInSelfClusterIdx, 1); // move the node to the best cluster\n\n var randomIdx = Math.floor(Math.random() * bestClusterIds.length);\n var bestCluster = clusters[bestClusterIds[randomIdx]];\n bestCluster.nodes.push(node);\n node.clusterId = bestCluster.id;\n }\n });\n if (!changed) return \"break\";\n iter++;\n };\n\n while (iter < maxIteration) {\n var state_1 = _loop_1();\n\n if (state_1 === \"break\") break;\n } // delete the empty clusters\n\n\n Object.keys(clusters).forEach(function (clusterId) {\n var cluster = clusters[clusterId];\n\n if (!cluster.nodes || !cluster.nodes.length) {\n delete clusters[clusterId];\n }\n }); // get the cluster edges\n\n var clusterEdges = [];\n var clusterEdgeMap = {};\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var weight = edge[weightPropertyName] || 1;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n var newEdgeId = \"\".concat(sourceClusterId, \"---\").concat(targetClusterId);\n\n if (clusterEdgeMap[newEdgeId]) {\n clusterEdgeMap[newEdgeId].weight += weight;\n clusterEdgeMap[newEdgeId].count++;\n } else {\n var newEdge = {\n source: sourceClusterId,\n target: targetClusterId,\n weight: weight,\n count: 1\n };\n clusterEdgeMap[newEdgeId] = newEdge;\n clusterEdges.push(newEdge);\n }\n });\n var clustersArray = [];\n Object.keys(clusters).forEach(function (clusterId) {\n clustersArray.push(clusters[clusterId]);\n });\n return {\n clusters: clustersArray,\n clusterEdges: clusterEdges\n };\n};\n\nvar _default = labelPropagation;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9sYWJlbC1wcm9wYWdhdGlvbi5qcz82NTgzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7O0FBRUEsNkNBQTZDLG1CQUFPLENBQUMsd0dBQW1COztBQUV4RSxZQUFZLG1CQUFPLENBQUMsa0ZBQVE7O0FBRTVCLHNDQUFzQyx1Q0FBdUMsZ0JBQWdCOztBQUU3RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsRUFBRTs7QUFFTCxvRUFBb0U7O0FBRXBFO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG9HQUFvRztBQUN4SDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUJBQXVCOztBQUV2QjtBQUNBO0FBQ0EsMERBQTBEOztBQUUxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfYWxnb3JpdGhtQDAuMS4xNEBAYW50di9hbGdvcml0aG0vbGliL2xhYmVsLXByb3BhZ2F0aW9uLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBfYWRqYWNlbnRNYXRyaXggPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2FkamFjZW50LW1hdHJpeFwiKSk7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbi8qKlxuICog5qCH562+5Lyg5pKt566X5rOVXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICogQHBhcmFtIGRpcmVjdGVkIOaYr+WQpuacieWQkeWbvu+8jOm7mOiupOS4uiBmYWxzZVxuICogQHBhcmFtIHdlaWdodFByb3BlcnR5TmFtZSDmnYPph43nmoTlsZ7mgKflrZfmrrVcbiAqIEBwYXJhbSBtYXhJdGVyYXRpb24g5pyA5aSn6L+t5Luj5qyh5pWwXG4gKi9cbnZhciBsYWJlbFByb3BhZ2F0aW9uID0gZnVuY3Rpb24gbGFiZWxQcm9wYWdhdGlvbihncmFwaERhdGEsIGRpcmVjdGVkLCB3ZWlnaHRQcm9wZXJ0eU5hbWUsIG1heEl0ZXJhdGlvbikge1xuICBpZiAoZGlyZWN0ZWQgPT09IHZvaWQgMCkge1xuICAgIGRpcmVjdGVkID0gZmFsc2U7XG4gIH1cblxuICBpZiAod2VpZ2h0UHJvcGVydHlOYW1lID09PSB2b2lkIDApIHtcbiAgICB3ZWlnaHRQcm9wZXJ0eU5hbWUgPSAnd2VpZ2h0JztcbiAgfVxuXG4gIGlmIChtYXhJdGVyYXRpb24gPT09IHZvaWQgMCkge1xuICAgIG1heEl0ZXJhdGlvbiA9IDEwMDA7XG4gIH0gLy8gdGhlIG9yaWdpbiBkYXRhXG5cblxuICB2YXIgX2EgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBub2RlcyA9IF9hID09PSB2b2lkIDAgPyBbXSA6IF9hLFxuICAgICAgX2IgPSBncmFwaERhdGEuZWRnZXMsXG4gICAgICBlZGdlcyA9IF9iID09PSB2b2lkIDAgPyBbXSA6IF9iO1xuICB2YXIgY2x1c3RlcnMgPSB7fTtcbiAgdmFyIG5vZGVNYXAgPSB7fTsgLy8gaW5pdCB0aGUgY2x1c3RlcnMgYW5kIG5vZGVNYXBcblxuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlLCBpKSB7XG4gICAgdmFyIGNpZCA9ICgwLCBfdXRpbC51bmlxdWVJZCkoKTtcbiAgICBub2RlLmNsdXN0ZXJJZCA9IGNpZDtcbiAgICBjbHVzdGVyc1tjaWRdID0ge1xuICAgICAgaWQ6IGNpZCxcbiAgICAgIG5vZGVzOiBbbm9kZV1cbiAgICB9O1xuICAgIG5vZGVNYXBbbm9kZS5pZF0gPSB7XG4gICAgICBub2RlOiBub2RlLFxuICAgICAgaWR4OiBpXG4gICAgfTtcbiAgfSk7IC8vIHRoZSBhZGphY2VudCBtYXRyaXggb2YgY2FsTm9kZXMgaW5zaWRlIGNsdXN0ZXJzXG5cbiAgdmFyIGFkak1hdHJpeCA9ICgwLCBfYWRqYWNlbnRNYXRyaXguZGVmYXVsdCkoZ3JhcGhEYXRhLCBkaXJlY3RlZCk7IC8vIHRoZSBzdW0gb2YgZWFjaCByb3cgaW4gYWRqYWNlbnQgbWF0cml4XG5cbiAgdmFyIGtzID0gW107XG4gIC8qKlxuICAgKiBuZWlnaGJvciBub2RlcyAoaWQgZm9yIGtleSBhbmQgd2VpZ2h0IGZvciB2YWx1ZSkgZm9yIGVhY2ggbm9kZVxuICAgKiBuZWlnaGJvcnMgPSB7XG4gICAqICBpZChub2RlX2lkKTogeyBpZChuZWlnaGJvcl8xX2lkKTogd2VpZ2h0KHdlaWdodCBvZiB0aGUgZWRnZSksIGlkKG5laWdoYm9yXzJfaWQpOiB3ZWlnaHQod2VpZ2h0IG9mIHRoZSBlZGdlKSwgLi4uIH0sXG4gICAqICAuLi5cbiAgICogfVxuICAgKi9cblxuICB2YXIgbmVpZ2hib3JzID0ge307XG4gIGFkak1hdHJpeC5mb3JFYWNoKGZ1bmN0aW9uIChyb3csIGkpIHtcbiAgICB2YXIgayA9IDA7XG4gICAgdmFyIGlpZCA9IG5vZGVzW2ldLmlkO1xuICAgIG5laWdoYm9yc1tpaWRdID0ge307XG4gICAgcm93LmZvckVhY2goZnVuY3Rpb24gKGVudHJ5LCBqKSB7XG4gICAgICBpZiAoIWVudHJ5KSByZXR1cm47XG4gICAgICBrICs9IGVudHJ5O1xuICAgICAgdmFyIGppZCA9IG5vZGVzW2pdLmlkO1xuICAgICAgbmVpZ2hib3JzW2lpZF1bamlkXSA9IGVudHJ5O1xuICAgIH0pO1xuICAgIGtzLnB1c2goayk7XG4gIH0pO1xuICB2YXIgaXRlciA9IDA7XG5cbiAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiBfbG9vcF8xKCkge1xuICAgIHZhciBjaGFuZ2VkID0gZmFsc2U7XG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgdmFyIG5laWdoYm9yQ2x1c3RlcnMgPSB7fTtcbiAgICAgIE9iamVjdC5rZXlzKG5laWdoYm9yc1tub2RlLmlkXSkuZm9yRWFjaChmdW5jdGlvbiAobmVpZ2hib3JJZCkge1xuICAgICAgICB2YXIgbmVpZ2hib3JXZWlnaHQgPSBuZWlnaGJvcnNbbm9kZS5pZF1bbmVpZ2hib3JJZF07XG4gICAgICAgIHZhciBuZWlnaGJvck5vZGUgPSBub2RlTWFwW25laWdoYm9ySWRdLm5vZGU7XG4gICAgICAgIHZhciBuZWlnaGJvckNsdXN0ZXJJZCA9IG5laWdoYm9yTm9kZS5jbHVzdGVySWQ7XG4gICAgICAgIGlmICghbmVpZ2hib3JDbHVzdGVyc1tuZWlnaGJvckNsdXN0ZXJJZF0pIG5laWdoYm9yQ2x1c3RlcnNbbmVpZ2hib3JDbHVzdGVySWRdID0gMDtcbiAgICAgICAgbmVpZ2hib3JDbHVzdGVyc1tuZWlnaGJvckNsdXN0ZXJJZF0gKz0gbmVpZ2hib3JXZWlnaHQ7XG4gICAgICB9KTsgLy8gZmluZCB0aGUgY2x1c3RlciB3aXRoIG1heCB3ZWlnaHRcblxuICAgICAgdmFyIG1heFdlaWdodCA9IC1JbmZpbml0eTtcbiAgICAgIHZhciBiZXN0Q2x1c3RlcklkcyA9IFtdO1xuICAgICAgT2JqZWN0LmtleXMobmVpZ2hib3JDbHVzdGVycykuZm9yRWFjaChmdW5jdGlvbiAoY2x1c3RlcklkKSB7XG4gICAgICAgIGlmIChtYXhXZWlnaHQgPCBuZWlnaGJvckNsdXN0ZXJzW2NsdXN0ZXJJZF0pIHtcbiAgICAgICAgICBtYXhXZWlnaHQgPSBuZWlnaGJvckNsdXN0ZXJzW2NsdXN0ZXJJZF07XG4gICAgICAgICAgYmVzdENsdXN0ZXJJZHMgPSBbY2x1c3RlcklkXTtcbiAgICAgICAgfSBlbHNlIGlmIChtYXhXZWlnaHQgPT09IG5laWdoYm9yQ2x1c3RlcnNbY2x1c3RlcklkXSkge1xuICAgICAgICAgIGJlc3RDbHVzdGVySWRzLnB1c2goY2x1c3RlcklkKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZiAoYmVzdENsdXN0ZXJJZHMubGVuZ3RoID09PSAxICYmIGJlc3RDbHVzdGVySWRzWzBdID09PSBub2RlLmNsdXN0ZXJJZCkgcmV0dXJuO1xuICAgICAgdmFyIHNlbGZDbHVzdGVySWR4ID0gYmVzdENsdXN0ZXJJZHMuaW5kZXhPZihub2RlLmNsdXN0ZXJJZCk7XG4gICAgICBpZiAoc2VsZkNsdXN0ZXJJZHggPj0gMCkgYmVzdENsdXN0ZXJJZHMuc3BsaWNlKHNlbGZDbHVzdGVySWR4LCAxKTtcblxuICAgICAgaWYgKGJlc3RDbHVzdGVySWRzICYmIGJlc3RDbHVzdGVySWRzLmxlbmd0aCkge1xuICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsgLy8gcmVtb3ZlIGZyb20gb3JpZ2luIGNsdXN0ZXJcblxuICAgICAgICB2YXIgc2VsZkNsdXN0ZXIgPSBjbHVzdGVyc1tub2RlLmNsdXN0ZXJJZF07XG4gICAgICAgIHZhciBub2RlSW5TZWxmQ2x1c3RlcklkeCA9IHNlbGZDbHVzdGVyLm5vZGVzLmluZGV4T2Yobm9kZSk7XG4gICAgICAgIHNlbGZDbHVzdGVyLm5vZGVzLnNwbGljZShub2RlSW5TZWxmQ2x1c3RlcklkeCwgMSk7IC8vIG1vdmUgdGhlIG5vZGUgdG8gdGhlIGJlc3QgY2x1c3RlclxuXG4gICAgICAgIHZhciByYW5kb21JZHggPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBiZXN0Q2x1c3Rlcklkcy5sZW5ndGgpO1xuICAgICAgICB2YXIgYmVzdENsdXN0ZXIgPSBjbHVzdGVyc1tiZXN0Q2x1c3Rlcklkc1tyYW5kb21JZHhdXTtcbiAgICAgICAgYmVzdENsdXN0ZXIubm9kZXMucHVzaChub2RlKTtcbiAgICAgICAgbm9kZS5jbHVzdGVySWQgPSBiZXN0Q2x1c3Rlci5pZDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoIWNoYW5nZWQpIHJldHVybiBcImJyZWFrXCI7XG4gICAgaXRlcisrO1xuICB9O1xuXG4gIHdoaWxlIChpdGVyIDwgbWF4SXRlcmF0aW9uKSB7XG4gICAgdmFyIHN0YXRlXzEgPSBfbG9vcF8xKCk7XG5cbiAgICBpZiAoc3RhdGVfMSA9PT0gXCJicmVha1wiKSBicmVhaztcbiAgfSAvLyBkZWxldGUgdGhlIGVtcHR5IGNsdXN0ZXJzXG5cblxuICBPYmplY3Qua2V5cyhjbHVzdGVycykuZm9yRWFjaChmdW5jdGlvbiAoY2x1c3RlcklkKSB7XG4gICAgdmFyIGNsdXN0ZXIgPSBjbHVzdGVyc1tjbHVzdGVySWRdO1xuXG4gICAgaWYgKCFjbHVzdGVyLm5vZGVzIHx8ICFjbHVzdGVyLm5vZGVzLmxlbmd0aCkge1xuICAgICAgZGVsZXRlIGNsdXN0ZXJzW2NsdXN0ZXJJZF07XG4gICAgfVxuICB9KTsgLy8gZ2V0IHRoZSBjbHVzdGVyIGVkZ2VzXG5cbiAgdmFyIGNsdXN0ZXJFZGdlcyA9IFtdO1xuICB2YXIgY2x1c3RlckVkZ2VNYXAgPSB7fTtcbiAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgIHZhciBzb3VyY2UgPSBlZGdlLnNvdXJjZSxcbiAgICAgICAgdGFyZ2V0ID0gZWRnZS50YXJnZXQ7XG4gICAgdmFyIHdlaWdodCA9IGVkZ2Vbd2VpZ2h0UHJvcGVydHlOYW1lXSB8fCAxO1xuICAgIHZhciBzb3VyY2VDbHVzdGVySWQgPSBub2RlTWFwW3NvdXJjZV0ubm9kZS5jbHVzdGVySWQ7XG4gICAgdmFyIHRhcmdldENsdXN0ZXJJZCA9IG5vZGVNYXBbdGFyZ2V0XS5ub2RlLmNsdXN0ZXJJZDtcbiAgICB2YXIgbmV3RWRnZUlkID0gXCJcIi5jb25jYXQoc291cmNlQ2x1c3RlcklkLCBcIi0tLVwiKS5jb25jYXQodGFyZ2V0Q2x1c3RlcklkKTtcblxuICAgIGlmIChjbHVzdGVyRWRnZU1hcFtuZXdFZGdlSWRdKSB7XG4gICAgICBjbHVzdGVyRWRnZU1hcFtuZXdFZGdlSWRdLndlaWdodCArPSB3ZWlnaHQ7XG4gICAgICBjbHVzdGVyRWRnZU1hcFtuZXdFZGdlSWRdLmNvdW50Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBuZXdFZGdlID0ge1xuICAgICAgICBzb3VyY2U6IHNvdXJjZUNsdXN0ZXJJZCxcbiAgICAgICAgdGFyZ2V0OiB0YXJnZXRDbHVzdGVySWQsXG4gICAgICAgIHdlaWdodDogd2VpZ2h0LFxuICAgICAgICBjb3VudDogMVxuICAgICAgfTtcbiAgICAgIGNsdXN0ZXJFZGdlTWFwW25ld0VkZ2VJZF0gPSBuZXdFZGdlO1xuICAgICAgY2x1c3RlckVkZ2VzLnB1c2gobmV3RWRnZSk7XG4gICAgfVxuICB9KTtcbiAgdmFyIGNsdXN0ZXJzQXJyYXkgPSBbXTtcbiAgT2JqZWN0LmtleXMoY2x1c3RlcnMpLmZvckVhY2goZnVuY3Rpb24gKGNsdXN0ZXJJZCkge1xuICAgIGNsdXN0ZXJzQXJyYXkucHVzaChjbHVzdGVyc1tjbHVzdGVySWRdKTtcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgY2x1c3RlcnM6IGNsdXN0ZXJzQXJyYXksXG4gICAgY2x1c3RlckVkZ2VzOiBjbHVzdGVyRWRnZXNcbiAgfTtcbn07XG5cbnZhciBfZGVmYXVsdCA9IGxhYmVsUHJvcGFnYXRpb247XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/label-propagation.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/louvain.js":
/*!*****************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/louvain.js ***!
\*****************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _util = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\nvar _adjacentMatrix = _interopRequireDefault(__webpack_require__(/*! ./adjacent-matrix */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/adjacent-matrix.js\"));\n\nvar _vector = _interopRequireDefault(__webpack_require__(/*! ./utils/vector */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/utils/vector.js\"));\n\nvar _time = __webpack_require__(/*! ./constants/time */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/constants/time.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar getModularity = function getModularity(nodes, adjMatrix, ks, m) {\n var length = adjMatrix.length;\n var param = 2 * m;\n var modularity = 0;\n\n for (var i = 0; i < length; i++) {\n var clusteri = nodes[i].clusterId;\n\n for (var j = 0; j < length; j++) {\n var clusterj = nodes[j].clusterId;\n if (clusteri !== clusterj) continue;\n var entry = adjMatrix[i][j] || 0;\n var ki = ks[i] || 0;\n var kj = ks[j] || 0;\n modularity += entry - ki * kj / param;\n }\n }\n\n modularity *= 1 / param;\n return modularity;\n}; // 获取所有属性并排序\n\n\nvar getAllSortProperties = function getAllSortProperties(nodes) {\n if (nodes === void 0) {\n nodes = [];\n }\n\n var propertyKeyInfo = {};\n nodes.forEach(function (node) {\n Object.keys(node.properties).forEach(function (propertyKey) {\n // 目前过滤只保留可以转成数值型的或日期型的, todo: 统一转成one-hot特征向量\n if (!\"\".concat(node.properties[propertyKey]).match(_time.secondReg) && !\"\".concat(node.properties[propertyKey]).match(_time.dateReg) && isNaN(Number(node.properties[propertyKey])) || propertyKey === 'id') {\n if (propertyKeyInfo.hasOwnProperty(propertyKey)) {\n delete propertyKeyInfo[propertyKey];\n }\n\n return;\n }\n\n if (propertyKeyInfo.hasOwnProperty(propertyKey)) {\n propertyKeyInfo[propertyKey] += 1;\n } else {\n propertyKeyInfo[propertyKey] = 1;\n }\n });\n }); // 取top50的属性\n\n var sortKeys = Object.keys(propertyKeyInfo).sort(function (a, b) {\n return propertyKeyInfo[b] - propertyKeyInfo[a];\n });\n return sortKeys.length < 100 ? sortKeys : sortKeys.slice(0, 100);\n};\n\nvar processProperty = function processProperty(properties, propertyKeys) {\n return propertyKeys.map(function (key) {\n if (properties.hasOwnProperty(key)) {\n // 可以转成数值的直接转成数值\n if (!isNaN(Number(properties[key]))) {\n return Number(properties[key]);\n } // 时间型的转成时间戳\n\n\n if (properties[key].match(_time.secondReg) || properties[key].match(_time.dateReg)) {\n // @ts-ignore\n return Number(Date.parse(new Date(properties[key]))) / 1000;\n }\n }\n\n return 0;\n });\n}; // 获取属性特征权重\n\n\nvar getPropertyWeight = function getPropertyWeight(propertyKeys, nodes) {\n var allPropertiesWeight = [];\n\n for (var i = 0; i < nodes.length; i++) {\n allPropertiesWeight[i] = processProperty(nodes[i].properties, propertyKeys);\n }\n\n return allPropertiesWeight;\n}; // 模块惯性度,衡量属性相似度\n\n\nvar getInertialModularity = function getInertialModularity(nodes, allPropertiesWeight) {\n if (nodes === void 0) {\n nodes = [];\n }\n\n var length = nodes.length;\n var totalProperties = new _vector.default([]);\n\n for (var i = 0; i < length; i++) {\n totalProperties = totalProperties.add(new _vector.default(allPropertiesWeight[i]));\n } // 均值向量\n\n\n var avgProperties = totalProperties.avg(length);\n avgProperties.normalize(); // 节点集合的方差: 节点v与均值向量的平方欧式距离之和\n\n var variance = 0;\n\n for (var i = 0; i < length; i++) {\n var propertiesi = new _vector.default(allPropertiesWeight[i]);\n var squareEuclideanDistance = propertiesi.squareEuclideanDistance(avgProperties);\n variance += squareEuclideanDistance;\n } // 任意两点间的欧式平方距离\n\n\n var squareEuclideanDistanceInfo = [];\n nodes.forEach(function () {\n squareEuclideanDistanceInfo.push([]);\n });\n\n for (var i = 0; i < length; i++) {\n var propertiesi = new _vector.default(allPropertiesWeight[i]);\n nodes[i]['clusterInertial'] = 0;\n\n for (var j = 0; j < length; j++) {\n if (i === j) {\n squareEuclideanDistanceInfo[i][j] = 0;\n continue;\n }\n\n var propertiesj = new _vector.default(allPropertiesWeight[j]);\n squareEuclideanDistanceInfo[i][j] = propertiesi.squareEuclideanDistance(propertiesj);\n nodes[i]['clusterInertial'] += squareEuclideanDistanceInfo[i][j];\n }\n } // 计算模块惯性度\n\n\n var inertialModularity = 0;\n var param = 2 * length * variance;\n\n for (var i = 0; i < length; i++) {\n var clusteri = nodes[i].clusterId;\n\n for (var j = 0; j < length; j++) {\n var clusterj = nodes[j].clusterId;\n if (i === j || clusteri !== clusterj) continue;\n var inertial = nodes[i].clusterInertial * nodes[j].clusterInertial / Math.pow(param, 2) - squareEuclideanDistanceInfo[i][j] / param;\n inertialModularity += inertial;\n }\n }\n\n return Number(inertialModularity.toFixed(4));\n};\n/**\n * 社区发现 louvain 算法\n * @param graphData 图数据\n * @param directed 是否有向图,默认为 false\n * @param weightPropertyName 权重的属性字段\n * @param threshold 差值阈值\n * @param inertialModularity 是否使用惯性模块度(即节点属性相似性)\n */\n\n\nvar louvain = function louvain(graphData, directed, weightPropertyName, threshold, inertialModularity, inertialWeight) {\n if (directed === void 0) {\n directed = false;\n }\n\n if (weightPropertyName === void 0) {\n weightPropertyName = 'weight';\n }\n\n if (threshold === void 0) {\n threshold = 0.0001;\n }\n\n if (inertialModularity === void 0) {\n inertialModularity = false;\n }\n\n if (inertialWeight === void 0) {\n inertialWeight = 1;\n } // the origin data\n\n\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var allPropertiesWeight = [];\n\n if (inertialModularity) {\n nodes.forEach(function (node, index) {\n node.properties = node.properties || {};\n node.originIndex = index;\n });\n var nodeTypeInfo_1 = [];\n\n if (nodes.every(function (node) {\n return node.hasOwnProperty('nodeType');\n })) {\n nodeTypeInfo_1 = Array.from(new Set(nodes.map(function (node) {\n return node.nodeType;\n })));\n nodes.forEach(function (node) {\n node.properties.nodeType = nodeTypeInfo_1.findIndex(function (nodeType) {\n return nodeType === node.nodeType;\n });\n });\n }\n\n var propertyKeys = getAllSortProperties(nodes); // 所有节点属性特征向量集合\n\n allPropertiesWeight = getPropertyWeight(propertyKeys, nodes);\n }\n\n var uniqueId = 1;\n var clusters = {};\n var nodeMap = {}; // init the clusters and nodeMap\n\n nodes.forEach(function (node, i) {\n var cid = String(uniqueId++);\n node.clusterId = cid;\n clusters[cid] = {\n id: cid,\n nodes: [node]\n };\n nodeMap[node.id] = {\n node: node,\n idx: i\n };\n }); // the adjacent matrix of calNodes inside clusters\n\n var adjMatrix = (0, _adjacentMatrix.default)(graphData, directed); // the sum of each row in adjacent matrix\n\n var ks = [];\n /**\n * neighbor nodes (id for key and weight for value) for each node\n * neighbors = {\n * id(node_id): { id(neighbor_1_id): weight(weight of the edge), id(neighbor_2_id): weight(weight of the edge), ... },\n * ...\n * }\n */\n\n var neighbors = {}; // the sum of the weights of all edges in the graph\n\n var m = 0;\n adjMatrix.forEach(function (row, i) {\n var k = 0;\n var iid = nodes[i].id;\n neighbors[iid] = {};\n row.forEach(function (entry, j) {\n if (!entry) return;\n k += entry;\n var jid = nodes[j].id;\n neighbors[iid][jid] = entry;\n m += entry;\n });\n ks.push(k);\n });\n m /= 2;\n var totalModularity = Infinity;\n var previousModularity = Infinity;\n var iter = 0;\n var finalNodes = [];\n var finalClusters = {};\n\n while (true) {\n if (inertialModularity && nodes.every(function (node) {\n return node.hasOwnProperty('properties');\n })) {\n totalModularity = getModularity(nodes, adjMatrix, ks, m) + getInertialModularity(nodes, allPropertiesWeight) * inertialWeight;\n } else {\n totalModularity = getModularity(nodes, adjMatrix, ks, m);\n } // 第一次迭代previousModularity直接赋值\n\n\n if (iter === 0) {\n previousModularity = totalModularity;\n finalNodes = nodes;\n finalClusters = clusters;\n }\n\n var increaseWithinThreshold = totalModularity > 0 && totalModularity > previousModularity && totalModularity - previousModularity < threshold; // 总模块度增加才更新最优解\n\n if (totalModularity > previousModularity) {\n finalNodes = nodes.map(function (node) {\n return {\n node: node,\n clusterId: node.clusterId\n };\n });\n finalClusters = (0, _util.clone)(clusters);\n previousModularity = totalModularity;\n } // whether to terminate the iterations\n\n\n if (increaseWithinThreshold || iter > 100) {\n break;\n }\n\n ;\n iter++; // pre compute some values for current clusters\n\n Object.keys(clusters).forEach(function (clusterId) {\n // sum of weights of edges to nodes in cluster\n var sumTot = 0;\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n\n if (sourceClusterId === clusterId && targetClusterId !== clusterId || targetClusterId === clusterId && sourceClusterId !== clusterId) {\n sumTot = sumTot + (edge[weightPropertyName] || 1);\n }\n });\n clusters[clusterId].sumTot = sumTot;\n }); // move the nodes to increase the delta modularity\n\n nodes.forEach(function (node, i) {\n var selfCluster = clusters[node.clusterId];\n var bestIncrease = 0;\n var bestCluster;\n var commonParam = ks[i] / (2 * m); // sum of weights of edges from node to nodes in cluster\n\n var kiin = 0;\n var selfClusterNodes = selfCluster.nodes;\n selfClusterNodes.forEach(function (scNode) {\n var scNodeIdx = nodeMap[scNode.id].idx;\n kiin += adjMatrix[i][scNodeIdx] || 0;\n }); // the modurarity for **removing** the node i from the origin cluster of node i\n\n var removeModurarity = kiin - selfCluster.sumTot * commonParam; // nodes for **removing** node i into this neighbor cluster\n\n var selfClusterNodesAfterRemove = selfClusterNodes.filter(function (scNode) {\n return scNode.id !== node.id;\n });\n var propertiesWeightRemove = [];\n selfClusterNodesAfterRemove.forEach(function (nodeRemove, index) {\n propertiesWeightRemove[index] = allPropertiesWeight[nodeRemove.originIndex];\n }); // the inertialModularity for **removing** the node i from the origin cluster of node i\n\n var removeInertialModularity = getInertialModularity(selfClusterNodesAfterRemove, allPropertiesWeight) * inertialWeight; // the neightbors of the node\n\n var nodeNeighborIds = neighbors[node.id];\n Object.keys(nodeNeighborIds).forEach(function (neighborNodeId) {\n var neighborNode = nodeMap[neighborNodeId].node;\n var neighborClusterId = neighborNode.clusterId; // if the node and the neighbor of node are in the same cluster, reutrn\n\n if (neighborClusterId === node.clusterId) return;\n var neighborCluster = clusters[neighborClusterId];\n var clusterNodes = neighborCluster.nodes; // if the cluster is empty, remove the cluster and return\n\n if (!clusterNodes || !clusterNodes.length) return; // sum of weights of edges from node to nodes in cluster\n\n var neighborClusterKiin = 0;\n clusterNodes.forEach(function (cNode) {\n var cNodeIdx = nodeMap[cNode.id].idx;\n neighborClusterKiin += adjMatrix[i][cNodeIdx] || 0;\n }); // the modurarity for **adding** node i into this neighbor cluster\n\n var addModurarity = neighborClusterKiin - neighborCluster.sumTot * commonParam; // nodes for **adding** node i into this neighbor cluster\n\n var clusterNodesAfterAdd = clusterNodes.concat([node]);\n var propertiesWeightAdd = [];\n clusterNodesAfterAdd.forEach(function (nodeAdd, index) {\n propertiesWeightAdd[index] = allPropertiesWeight[nodeAdd.originIndex];\n }); // the inertialModularity for **adding** node i into this neighbor cluster\n\n var addInertialModularity = getInertialModularity(clusterNodesAfterAdd, allPropertiesWeight) * inertialWeight; // the increase modurarity is the difference between addModurarity and removeModurarity\n\n var increase = addModurarity - removeModurarity;\n\n if (inertialModularity) {\n increase = addModurarity + addInertialModularity - (removeModurarity + removeInertialModularity);\n } // find the best cluster to move node i into\n\n\n if (increase > bestIncrease) {\n bestIncrease = increase;\n bestCluster = neighborCluster;\n }\n }); // if found a best cluster to move into\n\n if (bestIncrease > 0) {\n bestCluster.nodes.push(node);\n var previousClusterId_1 = node.clusterId;\n node.clusterId = bestCluster.id; // move the node to the best cluster\n\n var nodeInSelfClusterIdx = selfCluster.nodes.indexOf(node); // remove from origin cluster\n\n selfCluster.nodes.splice(nodeInSelfClusterIdx, 1); // update sumTot for clusters\n // sum of weights of edges to nodes in cluster\n\n var neighborClusterSumTot_1 = 0;\n var selfClusterSumTot_1 = 0;\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n\n if (sourceClusterId === bestCluster.id && targetClusterId !== bestCluster.id || targetClusterId === bestCluster.id && sourceClusterId !== bestCluster.id) {\n neighborClusterSumTot_1 = neighborClusterSumTot_1 + (edge[weightPropertyName] || 1);\n }\n\n if (sourceClusterId === previousClusterId_1 && targetClusterId !== previousClusterId_1 || targetClusterId === previousClusterId_1 && sourceClusterId !== previousClusterId_1) {\n selfClusterSumTot_1 = selfClusterSumTot_1 + (edge[weightPropertyName] || 1);\n }\n }); // the nodes of the clusters to move into and remove are changed, update their sumTot\n\n bestCluster.sumTot = neighborClusterSumTot_1;\n selfCluster.sumTot = selfClusterSumTot_1;\n }\n });\n } // delete the empty clusters, assign increasing clusterId\n\n\n var newClusterIdMap = {};\n var clusterIdx = 0;\n Object.keys(finalClusters).forEach(function (clusterId) {\n var cluster = finalClusters[clusterId];\n\n if (!cluster.nodes || !cluster.nodes.length) {\n delete finalClusters[clusterId];\n return;\n }\n\n var newId = String(clusterIdx + 1);\n\n if (newId === clusterId) {\n return;\n }\n\n cluster.id = newId;\n cluster.nodes = cluster.nodes.map(function (item) {\n return {\n id: item.id,\n clusterId: newId\n };\n });\n finalClusters[newId] = cluster;\n newClusterIdMap[clusterId] = newId;\n delete finalClusters[clusterId];\n clusterIdx++;\n }); // restore node clusterId\n\n finalNodes.forEach(function (nodeInfo) {\n var node = nodeInfo.node,\n clusterId = nodeInfo.clusterId;\n node.clusterId = clusterId;\n if (node.clusterId && newClusterIdMap[node.clusterId]) node.clusterId = newClusterIdMap[node.clusterId];\n }); // get the cluster edges\n\n var clusterEdges = [];\n var clusterEdgeMap = {};\n edges.forEach(function (edge) {\n var source = edge.source,\n target = edge.target;\n var weight = edge[weightPropertyName] || 1;\n var sourceClusterId = nodeMap[source].node.clusterId;\n var targetClusterId = nodeMap[target].node.clusterId;\n var newEdgeId = \"\".concat(sourceClusterId, \"---\").concat(targetClusterId);\n\n if (clusterEdgeMap[newEdgeId]) {\n clusterEdgeMap[newEdgeId].weight += weight;\n clusterEdgeMap[newEdgeId].count++;\n } else {\n var newEdge = {\n source: sourceClusterId,\n target: targetClusterId,\n weight: weight,\n count: 1\n };\n clusterEdgeMap[newEdgeId] = newEdge;\n clusterEdges.push(newEdge);\n }\n });\n var clustersArray = [];\n Object.keys(finalClusters).forEach(function (clusterId) {\n clustersArray.push(finalClusters[clusterId]);\n });\n return {\n clusters: clustersArray,\n clusterEdges: clusterEdges\n };\n};\n\nvar _default = louvain;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9sb3V2YWluLmpzP2UyNjMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDs7QUFFQSxZQUFZLG1CQUFPLENBQUMsNkVBQVk7O0FBRWhDLDZDQUE2QyxtQkFBTyxDQUFDLHdHQUFtQjs7QUFFeEUscUNBQXFDLG1CQUFPLENBQUMsa0dBQWdCOztBQUU3RCxZQUFZLG1CQUFPLENBQUMsc0dBQWtCOztBQUV0QyxzQ0FBc0MsdUNBQXVDLGdCQUFnQjs7QUFFN0Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLFlBQVk7QUFDN0I7O0FBRUEsbUJBQW1CLFlBQVk7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7O0FBR0Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHLEVBQUU7O0FBRUw7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0gsRUFBRTs7O0FBR0Y7QUFDQTs7QUFFQSxpQkFBaUIsa0JBQWtCO0FBQ25DO0FBQ0E7O0FBRUE7QUFDQSxFQUFFOzs7QUFHRjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGlCQUFpQixZQUFZO0FBQzdCO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQSw0QkFBNEI7O0FBRTVCOztBQUVBLGlCQUFpQixZQUFZO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUgsaUJBQWlCLFlBQVk7QUFDN0I7QUFDQTs7QUFFQSxtQkFBbUIsWUFBWTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7O0FBRUEsaUJBQWlCLFlBQVk7QUFDN0I7O0FBRUEsbUJBQW1CLFlBQVk7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDs7QUFFQSxtREFBbUQ7O0FBRW5EO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG1CQUFtQjs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsRUFBRTs7QUFFTCxvRUFBb0U7O0FBRXBFO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG9HQUFvRztBQUN4SDtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCOztBQUVyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtKQUFrSjs7QUFFbEo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXOztBQUVYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDOztBQUV4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxFQUFFOztBQUVULHFFQUFxRTs7QUFFckU7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQsOEhBQThIOztBQUU5SDtBQUNBO0FBQ0E7QUFDQSx1REFBdUQ7O0FBRXZEO0FBQ0E7QUFDQSxpREFBaUQ7O0FBRWpELDBEQUEwRDs7QUFFMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEVBQUU7O0FBRVgsdUZBQXVGOztBQUV2RjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsRUFBRTs7QUFFWCxzSEFBc0g7O0FBRXRIOztBQUVBO0FBQ0E7QUFDQSxTQUFTOzs7QUFHVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sRUFBRTs7QUFFVDtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7O0FBRXhDLG1FQUFtRTs7QUFFbkUsMERBQTBEO0FBQzFEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEVBQUU7O0FBRVg7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsRUFBRTs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9saWIvbG91dmFpbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX3V0aWwgPSByZXF1aXJlKFwiQGFudHYvdXRpbFwiKTtcblxudmFyIF9hZGphY2VudE1hdHJpeCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vYWRqYWNlbnQtbWF0cml4XCIpKTtcblxudmFyIF92ZWN0b3IgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWxzL3ZlY3RvclwiKSk7XG5cbnZhciBfdGltZSA9IHJlcXVpcmUoXCIuL2NvbnN0YW50cy90aW1lXCIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG52YXIgZ2V0TW9kdWxhcml0eSA9IGZ1bmN0aW9uIGdldE1vZHVsYXJpdHkobm9kZXMsIGFkak1hdHJpeCwga3MsIG0pIHtcbiAgdmFyIGxlbmd0aCA9IGFkak1hdHJpeC5sZW5ndGg7XG4gIHZhciBwYXJhbSA9IDIgKiBtO1xuICB2YXIgbW9kdWxhcml0eSA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIHZhciBjbHVzdGVyaSA9IG5vZGVzW2ldLmNsdXN0ZXJJZDtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBjbHVzdGVyaiA9IG5vZGVzW2pdLmNsdXN0ZXJJZDtcbiAgICAgIGlmIChjbHVzdGVyaSAhPT0gY2x1c3RlcmopIGNvbnRpbnVlO1xuICAgICAgdmFyIGVudHJ5ID0gYWRqTWF0cml4W2ldW2pdIHx8IDA7XG4gICAgICB2YXIga2kgPSBrc1tpXSB8fCAwO1xuICAgICAgdmFyIGtqID0ga3Nbal0gfHwgMDtcbiAgICAgIG1vZHVsYXJpdHkgKz0gZW50cnkgLSBraSAqIGtqIC8gcGFyYW07XG4gICAgfVxuICB9XG5cbiAgbW9kdWxhcml0eSAqPSAxIC8gcGFyYW07XG4gIHJldHVybiBtb2R1bGFyaXR5O1xufTsgLy8g6I635Y+W5omA5pyJ5bGe5oCn5bm25o6S5bqPXG5cblxudmFyIGdldEFsbFNvcnRQcm9wZXJ0aWVzID0gZnVuY3Rpb24gZ2V0QWxsU29ydFByb3BlcnRpZXMobm9kZXMpIHtcbiAgaWYgKG5vZGVzID09PSB2b2lkIDApIHtcbiAgICBub2RlcyA9IFtdO1xuICB9XG5cbiAgdmFyIHByb3BlcnR5S2V5SW5mbyA9IHt9O1xuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgT2JqZWN0LmtleXMobm9kZS5wcm9wZXJ0aWVzKS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wZXJ0eUtleSkge1xuICAgICAgLy8g55uu5YmN6L+H5ruk5Y+q5L+d55WZ5Y+v5Lul6L2s5oiQ5pWw5YC85Z6L55qE5oiW5pel5pyf5Z6L55qELCB0b2RvOiDnu5/kuIDovazmiJBvbmUtaG9054m55b6B5ZCR6YePXG4gICAgICBpZiAoIVwiXCIuY29uY2F0KG5vZGUucHJvcGVydGllc1twcm9wZXJ0eUtleV0pLm1hdGNoKF90aW1lLnNlY29uZFJlZykgJiYgIVwiXCIuY29uY2F0KG5vZGUucHJvcGVydGllc1twcm9wZXJ0eUtleV0pLm1hdGNoKF90aW1lLmRhdGVSZWcpICYmIGlzTmFOKE51bWJlcihub2RlLnByb3BlcnRpZXNbcHJvcGVydHlLZXldKSkgfHwgcHJvcGVydHlLZXkgPT09ICdpZCcpIHtcbiAgICAgICAgaWYgKHByb3BlcnR5S2V5SW5mby5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eUtleSkpIHtcbiAgICAgICAgICBkZWxldGUgcHJvcGVydHlLZXlJbmZvW3Byb3BlcnR5S2V5XTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHByb3BlcnR5S2V5SW5mby5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eUtleSkpIHtcbiAgICAgICAgcHJvcGVydHlLZXlJbmZvW3Byb3BlcnR5S2V5XSArPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvcGVydHlLZXlJbmZvW3Byb3BlcnR5S2V5XSA9IDE7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pOyAvLyDlj5Z0b3A1MOeahOWxnuaAp1xuXG4gIHZhciBzb3J0S2V5cyA9IE9iamVjdC5rZXlzKHByb3BlcnR5S2V5SW5mbykuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgIHJldHVybiBwcm9wZXJ0eUtleUluZm9bYl0gLSBwcm9wZXJ0eUtleUluZm9bYV07XG4gIH0pO1xuICByZXR1cm4gc29ydEtleXMubGVuZ3RoIDwgMTAwID8gc29ydEtleXMgOiBzb3J0S2V5cy5zbGljZSgwLCAxMDApO1xufTtcblxudmFyIHByb2Nlc3NQcm9wZXJ0eSA9IGZ1bmN0aW9uIHByb2Nlc3NQcm9wZXJ0eShwcm9wZXJ0aWVzLCBwcm9wZXJ0eUtleXMpIHtcbiAgcmV0dXJuIHByb3BlcnR5S2V5cy5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgIGlmIChwcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIC8vIOWPr+S7pei9rOaIkOaVsOWAvOeahOebtOaOpei9rOaIkOaVsOWAvFxuICAgICAgaWYgKCFpc05hTihOdW1iZXIocHJvcGVydGllc1trZXldKSkpIHtcbiAgICAgICAgcmV0dXJuIE51bWJlcihwcm9wZXJ0aWVzW2tleV0pO1xuICAgICAgfSAvLyDml7bpl7TlnovnmoTovazmiJDml7bpl7TmiLNcblxuXG4gICAgICBpZiAocHJvcGVydGllc1trZXldLm1hdGNoKF90aW1lLnNlY29uZFJlZykgfHwgcHJvcGVydGllc1trZXldLm1hdGNoKF90aW1lLmRhdGVSZWcpKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcmV0dXJuIE51bWJlcihEYXRlLnBhcnNlKG5ldyBEYXRlKHByb3BlcnRpZXNba2V5XSkpKSAvIDEwMDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG4gIH0pO1xufTsgLy8g6I635Y+W5bGe5oCn54m55b6B5p2D6YeNXG5cblxudmFyIGdldFByb3BlcnR5V2VpZ2h0ID0gZnVuY3Rpb24gZ2V0UHJvcGVydHlXZWlnaHQocHJvcGVydHlLZXlzLCBub2Rlcykge1xuICB2YXIgYWxsUHJvcGVydGllc1dlaWdodCA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICBhbGxQcm9wZXJ0aWVzV2VpZ2h0W2ldID0gcHJvY2Vzc1Byb3BlcnR5KG5vZGVzW2ldLnByb3BlcnRpZXMsIHByb3BlcnR5S2V5cyk7XG4gIH1cblxuICByZXR1cm4gYWxsUHJvcGVydGllc1dlaWdodDtcbn07IC8vIOaooeWdl+aDr+aAp+W6pu+8jOihoemHj+WxnuaAp+ebuOS8vOW6plxuXG5cbnZhciBnZXRJbmVydGlhbE1vZHVsYXJpdHkgPSBmdW5jdGlvbiBnZXRJbmVydGlhbE1vZHVsYXJpdHkobm9kZXMsIGFsbFByb3BlcnRpZXNXZWlnaHQpIHtcbiAgaWYgKG5vZGVzID09PSB2b2lkIDApIHtcbiAgICBub2RlcyA9IFtdO1xuICB9XG5cbiAgdmFyIGxlbmd0aCA9IG5vZGVzLmxlbmd0aDtcbiAgdmFyIHRvdGFsUHJvcGVydGllcyA9IG5ldyBfdmVjdG9yLmRlZmF1bHQoW10pO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICB0b3RhbFByb3BlcnRpZXMgPSB0b3RhbFByb3BlcnRpZXMuYWRkKG5ldyBfdmVjdG9yLmRlZmF1bHQoYWxsUHJvcGVydGllc1dlaWdodFtpXSkpO1xuICB9IC8vIOWdh+WAvOWQkemHj1xuXG5cbiAgdmFyIGF2Z1Byb3BlcnRpZXMgPSB0b3RhbFByb3BlcnRpZXMuYXZnKGxlbmd0aCk7XG4gIGF2Z1Byb3BlcnRpZXMubm9ybWFsaXplKCk7IC8vIOiKgueCuembhuWQiOeahOaWueW3rjog6IqC54K5duS4juWdh+WAvOWQkemHj+eahOW5s+aWueasp+W8j+i3neemu+S5i+WSjFxuXG4gIHZhciB2YXJpYW5jZSA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIHZhciBwcm9wZXJ0aWVzaSA9IG5ldyBfdmVjdG9yLmRlZmF1bHQoYWxsUHJvcGVydGllc1dlaWdodFtpXSk7XG4gICAgdmFyIHNxdWFyZUV1Y2xpZGVhbkRpc3RhbmNlID0gcHJvcGVydGllc2kuc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2UoYXZnUHJvcGVydGllcyk7XG4gICAgdmFyaWFuY2UgKz0gc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2U7XG4gIH0gLy8g5Lu75oSP5Lik54K56Ze055qE5qyn5byP5bmz5pa56Led56a7XG5cblxuICB2YXIgc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2VJbmZvID0gW107XG4gIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKCkge1xuICAgIHNxdWFyZUV1Y2xpZGVhbkRpc3RhbmNlSW5mby5wdXNoKFtdKTtcbiAgfSk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIHZhciBwcm9wZXJ0aWVzaSA9IG5ldyBfdmVjdG9yLmRlZmF1bHQoYWxsUHJvcGVydGllc1dlaWdodFtpXSk7XG4gICAgbm9kZXNbaV1bJ2NsdXN0ZXJJbmVydGlhbCddID0gMDtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGVuZ3RoOyBqKyspIHtcbiAgICAgIGlmIChpID09PSBqKSB7XG4gICAgICAgIHNxdWFyZUV1Y2xpZGVhbkRpc3RhbmNlSW5mb1tpXVtqXSA9IDA7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgcHJvcGVydGllc2ogPSBuZXcgX3ZlY3Rvci5kZWZhdWx0KGFsbFByb3BlcnRpZXNXZWlnaHRbal0pO1xuICAgICAgc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2VJbmZvW2ldW2pdID0gcHJvcGVydGllc2kuc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2UocHJvcGVydGllc2opO1xuICAgICAgbm9kZXNbaV1bJ2NsdXN0ZXJJbmVydGlhbCddICs9IHNxdWFyZUV1Y2xpZGVhbkRpc3RhbmNlSW5mb1tpXVtqXTtcbiAgICB9XG4gIH0gLy8g6K6h566X5qih5Z2X5oOv5oCn5bqmXG5cblxuICB2YXIgaW5lcnRpYWxNb2R1bGFyaXR5ID0gMDtcbiAgdmFyIHBhcmFtID0gMiAqIGxlbmd0aCAqIHZhcmlhbmNlO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgY2x1c3RlcmkgPSBub2Rlc1tpXS5jbHVzdGVySWQ7XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGxlbmd0aDsgaisrKSB7XG4gICAgICB2YXIgY2x1c3RlcmogPSBub2Rlc1tqXS5jbHVzdGVySWQ7XG4gICAgICBpZiAoaSA9PT0gaiB8fCBjbHVzdGVyaSAhPT0gY2x1c3RlcmopIGNvbnRpbnVlO1xuICAgICAgdmFyIGluZXJ0aWFsID0gbm9kZXNbaV0uY2x1c3RlckluZXJ0aWFsICogbm9kZXNbal0uY2x1c3RlckluZXJ0aWFsIC8gTWF0aC5wb3cocGFyYW0sIDIpIC0gc3F1YXJlRXVjbGlkZWFuRGlzdGFuY2VJbmZvW2ldW2pdIC8gcGFyYW07XG4gICAgICBpbmVydGlhbE1vZHVsYXJpdHkgKz0gaW5lcnRpYWw7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIE51bWJlcihpbmVydGlhbE1vZHVsYXJpdHkudG9GaXhlZCg0KSk7XG59O1xuLyoqXG4gKiDnpL7ljLrlj5HnjrAgbG91dmFpbiDnrpfms5VcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gZGlyZWN0ZWQg5piv5ZCm5pyJ5ZCR5Zu+77yM6buY6K6k5Li6IGZhbHNlXG4gKiBAcGFyYW0gd2VpZ2h0UHJvcGVydHlOYW1lIOadg+mHjeeahOWxnuaAp+Wtl+autVxuICogQHBhcmFtIHRocmVzaG9sZCDlt67lgLzpmIjlgLxcbiAqIEBwYXJhbSBpbmVydGlhbE1vZHVsYXJpdHkg5piv5ZCm5L2/55So5oOv5oCn5qih5Z2X5bqm77yI5Y2z6IqC54K55bGe5oCn55u45Ly85oCn77yJXG4gKi9cblxuXG52YXIgbG91dmFpbiA9IGZ1bmN0aW9uIGxvdXZhaW4oZ3JhcGhEYXRhLCBkaXJlY3RlZCwgd2VpZ2h0UHJvcGVydHlOYW1lLCB0aHJlc2hvbGQsIGluZXJ0aWFsTW9kdWxhcml0eSwgaW5lcnRpYWxXZWlnaHQpIHtcbiAgaWYgKGRpcmVjdGVkID09PSB2b2lkIDApIHtcbiAgICBkaXJlY3RlZCA9IGZhbHNlO1xuICB9XG5cbiAgaWYgKHdlaWdodFByb3BlcnR5TmFtZSA9PT0gdm9pZCAwKSB7XG4gICAgd2VpZ2h0UHJvcGVydHlOYW1lID0gJ3dlaWdodCc7XG4gIH1cblxuICBpZiAodGhyZXNob2xkID09PSB2b2lkIDApIHtcbiAgICB0aHJlc2hvbGQgPSAwLjAwMDE7XG4gIH1cblxuICBpZiAoaW5lcnRpYWxNb2R1bGFyaXR5ID09PSB2b2lkIDApIHtcbiAgICBpbmVydGlhbE1vZHVsYXJpdHkgPSBmYWxzZTtcbiAgfVxuXG4gIGlmIChpbmVydGlhbFdlaWdodCA9PT0gdm9pZCAwKSB7XG4gICAgaW5lcnRpYWxXZWlnaHQgPSAxO1xuICB9IC8vIHRoZSBvcmlnaW4gZGF0YVxuXG5cbiAgdmFyIF9hID0gZ3JhcGhEYXRhLm5vZGVzLFxuICAgICAgbm9kZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYSxcbiAgICAgIF9iID0gZ3JhcGhEYXRhLmVkZ2VzLFxuICAgICAgZWRnZXMgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYjtcbiAgdmFyIGFsbFByb3BlcnRpZXNXZWlnaHQgPSBbXTtcblxuICBpZiAoaW5lcnRpYWxNb2R1bGFyaXR5KSB7XG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaW5kZXgpIHtcbiAgICAgIG5vZGUucHJvcGVydGllcyA9IG5vZGUucHJvcGVydGllcyB8fCB7fTtcbiAgICAgIG5vZGUub3JpZ2luSW5kZXggPSBpbmRleDtcbiAgICB9KTtcbiAgICB2YXIgbm9kZVR5cGVJbmZvXzEgPSBbXTtcblxuICAgIGlmIChub2Rlcy5ldmVyeShmdW5jdGlvbiAobm9kZSkge1xuICAgICAgcmV0dXJuIG5vZGUuaGFzT3duUHJvcGVydHkoJ25vZGVUeXBlJyk7XG4gICAgfSkpIHtcbiAgICAgIG5vZGVUeXBlSW5mb18xID0gQXJyYXkuZnJvbShuZXcgU2V0KG5vZGVzLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICByZXR1cm4gbm9kZS5ub2RlVHlwZTtcbiAgICAgIH0pKSk7XG4gICAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIG5vZGUucHJvcGVydGllcy5ub2RlVHlwZSA9IG5vZGVUeXBlSW5mb18xLmZpbmRJbmRleChmdW5jdGlvbiAobm9kZVR5cGUpIHtcbiAgICAgICAgICByZXR1cm4gbm9kZVR5cGUgPT09IG5vZGUubm9kZVR5cGU7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdmFyIHByb3BlcnR5S2V5cyA9IGdldEFsbFNvcnRQcm9wZXJ0aWVzKG5vZGVzKTsgLy8g5omA5pyJ6IqC54K55bGe5oCn54m55b6B5ZCR6YeP6ZuG5ZCIXG5cbiAgICBhbGxQcm9wZXJ0aWVzV2VpZ2h0ID0gZ2V0UHJvcGVydHlXZWlnaHQocHJvcGVydHlLZXlzLCBub2Rlcyk7XG4gIH1cblxuICB2YXIgdW5pcXVlSWQgPSAxO1xuICB2YXIgY2x1c3RlcnMgPSB7fTtcbiAgdmFyIG5vZGVNYXAgPSB7fTsgLy8gaW5pdCB0aGUgY2x1c3RlcnMgYW5kIG5vZGVNYXBcblxuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlLCBpKSB7XG4gICAgdmFyIGNpZCA9IFN0cmluZyh1bmlxdWVJZCsrKTtcbiAgICBub2RlLmNsdXN0ZXJJZCA9IGNpZDtcbiAgICBjbHVzdGVyc1tjaWRdID0ge1xuICAgICAgaWQ6IGNpZCxcbiAgICAgIG5vZGVzOiBbbm9kZV1cbiAgICB9O1xuICAgIG5vZGVNYXBbbm9kZS5pZF0gPSB7XG4gICAgICBub2RlOiBub2RlLFxuICAgICAgaWR4OiBpXG4gICAgfTtcbiAgfSk7IC8vIHRoZSBhZGphY2VudCBtYXRyaXggb2YgY2FsTm9kZXMgaW5zaWRlIGNsdXN0ZXJzXG5cbiAgdmFyIGFkak1hdHJpeCA9ICgwLCBfYWRqYWNlbnRNYXRyaXguZGVmYXVsdCkoZ3JhcGhEYXRhLCBkaXJlY3RlZCk7IC8vIHRoZSBzdW0gb2YgZWFjaCByb3cgaW4gYWRqYWNlbnQgbWF0cml4XG5cbiAgdmFyIGtzID0gW107XG4gIC8qKlxuICAgKiBuZWlnaGJvciBub2RlcyAoaWQgZm9yIGtleSBhbmQgd2VpZ2h0IGZvciB2YWx1ZSkgZm9yIGVhY2ggbm9kZVxuICAgKiBuZWlnaGJvcnMgPSB7XG4gICAqICBpZChub2RlX2lkKTogeyBpZChuZWlnaGJvcl8xX2lkKTogd2VpZ2h0KHdlaWdodCBvZiB0aGUgZWRnZSksIGlkKG5laWdoYm9yXzJfaWQpOiB3ZWlnaHQod2VpZ2h0IG9mIHRoZSBlZGdlKSwgLi4uIH0sXG4gICAqICAuLi5cbiAgICogfVxuICAgKi9cblxuICB2YXIgbmVpZ2hib3JzID0ge307IC8vIHRoZSBzdW0gb2YgdGhlIHdlaWdodHMgb2YgYWxsIGVkZ2VzIGluIHRoZSBncmFwaFxuXG4gIHZhciBtID0gMDtcbiAgYWRqTWF0cml4LmZvckVhY2goZnVuY3Rpb24gKHJvdywgaSkge1xuICAgIHZhciBrID0gMDtcbiAgICB2YXIgaWlkID0gbm9kZXNbaV0uaWQ7XG4gICAgbmVpZ2hib3JzW2lpZF0gPSB7fTtcbiAgICByb3cuZm9yRWFjaChmdW5jdGlvbiAoZW50cnksIGopIHtcbiAgICAgIGlmICghZW50cnkpIHJldHVybjtcbiAgICAgIGsgKz0gZW50cnk7XG4gICAgICB2YXIgamlkID0gbm9kZXNbal0uaWQ7XG4gICAgICBuZWlnaGJvcnNbaWlkXVtqaWRdID0gZW50cnk7XG4gICAgICBtICs9IGVudHJ5O1xuICAgIH0pO1xuICAgIGtzLnB1c2goayk7XG4gIH0pO1xuICBtIC89IDI7XG4gIHZhciB0b3RhbE1vZHVsYXJpdHkgPSBJbmZpbml0eTtcbiAgdmFyIHByZXZpb3VzTW9kdWxhcml0eSA9IEluZmluaXR5O1xuICB2YXIgaXRlciA9IDA7XG4gIHZhciBmaW5hbE5vZGVzID0gW107XG4gIHZhciBmaW5hbENsdXN0ZXJzID0ge307XG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBpZiAoaW5lcnRpYWxNb2R1bGFyaXR5ICYmIG5vZGVzLmV2ZXJ5KGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS5oYXNPd25Qcm9wZXJ0eSgncHJvcGVydGllcycpO1xuICAgIH0pKSB7XG4gICAgICB0b3RhbE1vZHVsYXJpdHkgPSBnZXRNb2R1bGFyaXR5KG5vZGVzLCBhZGpNYXRyaXgsIGtzLCBtKSArIGdldEluZXJ0aWFsTW9kdWxhcml0eShub2RlcywgYWxsUHJvcGVydGllc1dlaWdodCkgKiBpbmVydGlhbFdlaWdodDtcbiAgICB9IGVsc2Uge1xuICAgICAgdG90YWxNb2R1bGFyaXR5ID0gZ2V0TW9kdWxhcml0eShub2RlcywgYWRqTWF0cml4LCBrcywgbSk7XG4gICAgfSAvLyDnrKzkuIDmrKHov63ku6NwcmV2aW91c01vZHVsYXJpdHnnm7TmjqXotYvlgLxcblxuXG4gICAgaWYgKGl0ZXIgPT09IDApIHtcbiAgICAgIHByZXZpb3VzTW9kdWxhcml0eSA9IHRvdGFsTW9kdWxhcml0eTtcbiAgICAgIGZpbmFsTm9kZXMgPSBub2RlcztcbiAgICAgIGZpbmFsQ2x1c3RlcnMgPSBjbHVzdGVycztcbiAgICB9XG5cbiAgICB2YXIgaW5jcmVhc2VXaXRoaW5UaHJlc2hvbGQgPSB0b3RhbE1vZHVsYXJpdHkgPiAwICYmIHRvdGFsTW9kdWxhcml0eSA+IHByZXZpb3VzTW9kdWxhcml0eSAmJiB0b3RhbE1vZHVsYXJpdHkgLSBwcmV2aW91c01vZHVsYXJpdHkgPCB0aHJlc2hvbGQ7IC8vIOaAu+aooeWdl+W6puWinuWKoOaJjeabtOaWsOacgOS8mOino1xuXG4gICAgaWYgKHRvdGFsTW9kdWxhcml0eSA+IHByZXZpb3VzTW9kdWxhcml0eSkge1xuICAgICAgZmluYWxOb2RlcyA9IG5vZGVzLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5vZGU6IG5vZGUsXG4gICAgICAgICAgY2x1c3RlcklkOiBub2RlLmNsdXN0ZXJJZFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgICBmaW5hbENsdXN0ZXJzID0gKDAsIF91dGlsLmNsb25lKShjbHVzdGVycyk7XG4gICAgICBwcmV2aW91c01vZHVsYXJpdHkgPSB0b3RhbE1vZHVsYXJpdHk7XG4gICAgfSAvLyB3aGV0aGVyIHRvIHRlcm1pbmF0ZSB0aGUgaXRlcmF0aW9uc1xuXG5cbiAgICBpZiAoaW5jcmVhc2VXaXRoaW5UaHJlc2hvbGQgfHwgaXRlciA+IDEwMCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgO1xuICAgIGl0ZXIrKzsgLy8gcHJlIGNvbXB1dGUgc29tZSB2YWx1ZXMgZm9yIGN1cnJlbnQgY2x1c3RlcnNcblxuICAgIE9iamVjdC5rZXlzKGNsdXN0ZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChjbHVzdGVySWQpIHtcbiAgICAgIC8vIHN1bSBvZiB3ZWlnaHRzIG9mIGVkZ2VzIHRvIG5vZGVzIGluIGNsdXN0ZXJcbiAgICAgIHZhciBzdW1Ub3QgPSAwO1xuICAgICAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICB2YXIgc291cmNlID0gZWRnZS5zb3VyY2UsXG4gICAgICAgICAgICB0YXJnZXQgPSBlZGdlLnRhcmdldDtcbiAgICAgICAgdmFyIHNvdXJjZUNsdXN0ZXJJZCA9IG5vZGVNYXBbc291cmNlXS5ub2RlLmNsdXN0ZXJJZDtcbiAgICAgICAgdmFyIHRhcmdldENsdXN0ZXJJZCA9IG5vZGVNYXBbdGFyZ2V0XS5ub2RlLmNsdXN0ZXJJZDtcblxuICAgICAgICBpZiAoc291cmNlQ2x1c3RlcklkID09PSBjbHVzdGVySWQgJiYgdGFyZ2V0Q2x1c3RlcklkICE9PSBjbHVzdGVySWQgfHwgdGFyZ2V0Q2x1c3RlcklkID09PSBjbHVzdGVySWQgJiYgc291cmNlQ2x1c3RlcklkICE9PSBjbHVzdGVySWQpIHtcbiAgICAgICAgICBzdW1Ub3QgPSBzdW1Ub3QgKyAoZWRnZVt3ZWlnaHRQcm9wZXJ0eU5hbWVdIHx8IDEpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGNsdXN0ZXJzW2NsdXN0ZXJJZF0uc3VtVG90ID0gc3VtVG90O1xuICAgIH0pOyAvLyBtb3ZlIHRoZSBub2RlcyB0byBpbmNyZWFzZSB0aGUgZGVsdGEgbW9kdWxhcml0eVxuXG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaSkge1xuICAgICAgdmFyIHNlbGZDbHVzdGVyID0gY2x1c3RlcnNbbm9kZS5jbHVzdGVySWRdO1xuICAgICAgdmFyIGJlc3RJbmNyZWFzZSA9IDA7XG4gICAgICB2YXIgYmVzdENsdXN0ZXI7XG4gICAgICB2YXIgY29tbW9uUGFyYW0gPSBrc1tpXSAvICgyICogbSk7IC8vIHN1bSBvZiB3ZWlnaHRzIG9mIGVkZ2VzIGZyb20gbm9kZSB0byBub2RlcyBpbiBjbHVzdGVyXG5cbiAgICAgIHZhciBraWluID0gMDtcbiAgICAgIHZhciBzZWxmQ2x1c3Rlck5vZGVzID0gc2VsZkNsdXN0ZXIubm9kZXM7XG4gICAgICBzZWxmQ2x1c3Rlck5vZGVzLmZvckVhY2goZnVuY3Rpb24gKHNjTm9kZSkge1xuICAgICAgICB2YXIgc2NOb2RlSWR4ID0gbm9kZU1hcFtzY05vZGUuaWRdLmlkeDtcbiAgICAgICAga2lpbiArPSBhZGpNYXRyaXhbaV1bc2NOb2RlSWR4XSB8fCAwO1xuICAgICAgfSk7IC8vIHRoZSBtb2R1cmFyaXR5IGZvciAqKnJlbW92aW5nKiogdGhlIG5vZGUgaSBmcm9tIHRoZSBvcmlnaW4gY2x1c3RlciBvZiBub2RlIGlcblxuICAgICAgdmFyIHJlbW92ZU1vZHVyYXJpdHkgPSBraWluIC0gc2VsZkNsdXN0ZXIuc3VtVG90ICogY29tbW9uUGFyYW07IC8vIG5vZGVzIGZvciAqKnJlbW92aW5nKiogbm9kZSBpIGludG8gdGhpcyBuZWlnaGJvciBjbHVzdGVyXG5cbiAgICAgIHZhciBzZWxmQ2x1c3Rlck5vZGVzQWZ0ZXJSZW1vdmUgPSBzZWxmQ2x1c3Rlck5vZGVzLmZpbHRlcihmdW5jdGlvbiAoc2NOb2RlKSB7XG4gICAgICAgIHJldHVybiBzY05vZGUuaWQgIT09IG5vZGUuaWQ7XG4gICAgICB9KTtcbiAgICAgIHZhciBwcm9wZXJ0aWVzV2VpZ2h0UmVtb3ZlID0gW107XG4gICAgICBzZWxmQ2x1c3Rlck5vZGVzQWZ0ZXJSZW1vdmUuZm9yRWFjaChmdW5jdGlvbiAobm9kZVJlbW92ZSwgaW5kZXgpIHtcbiAgICAgICAgcHJvcGVydGllc1dlaWdodFJlbW92ZVtpbmRleF0gPSBhbGxQcm9wZXJ0aWVzV2VpZ2h0W25vZGVSZW1vdmUub3JpZ2luSW5kZXhdO1xuICAgICAgfSk7IC8vIHRoZSBpbmVydGlhbE1vZHVsYXJpdHkgZm9yICoqcmVtb3ZpbmcqKiB0aGUgbm9kZSBpIGZyb20gdGhlIG9yaWdpbiBjbHVzdGVyIG9mIG5vZGUgaVxuXG4gICAgICB2YXIgcmVtb3ZlSW5lcnRpYWxNb2R1bGFyaXR5ID0gZ2V0SW5lcnRpYWxNb2R1bGFyaXR5KHNlbGZDbHVzdGVyTm9kZXNBZnRlclJlbW92ZSwgYWxsUHJvcGVydGllc1dlaWdodCkgKiBpbmVydGlhbFdlaWdodDsgLy8gdGhlIG5laWdodGJvcnMgb2YgdGhlIG5vZGVcblxuICAgICAgdmFyIG5vZGVOZWlnaGJvcklkcyA9IG5laWdoYm9yc1tub2RlLmlkXTtcbiAgICAgIE9iamVjdC5rZXlzKG5vZGVOZWlnaGJvcklkcykuZm9yRWFjaChmdW5jdGlvbiAobmVpZ2hib3JOb2RlSWQpIHtcbiAgICAgICAgdmFyIG5laWdoYm9yTm9kZSA9IG5vZGVNYXBbbmVpZ2hib3JOb2RlSWRdLm5vZGU7XG4gICAgICAgIHZhciBuZWlnaGJvckNsdXN0ZXJJZCA9IG5laWdoYm9yTm9kZS5jbHVzdGVySWQ7IC8vIGlmIHRoZSBub2RlIGFuZCB0aGUgbmVpZ2hib3Igb2Ygbm9kZSBhcmUgaW4gdGhlIHNhbWUgY2x1c3RlciwgcmV1dHJuXG5cbiAgICAgICAgaWYgKG5laWdoYm9yQ2x1c3RlcklkID09PSBub2RlLmNsdXN0ZXJJZCkgcmV0dXJuO1xuICAgICAgICB2YXIgbmVpZ2hib3JDbHVzdGVyID0gY2x1c3RlcnNbbmVpZ2hib3JDbHVzdGVySWRdO1xuICAgICAgICB2YXIgY2x1c3Rlck5vZGVzID0gbmVpZ2hib3JDbHVzdGVyLm5vZGVzOyAvLyBpZiB0aGUgY2x1c3RlciBpcyBlbXB0eSwgcmVtb3ZlIHRoZSBjbHVzdGVyIGFuZCByZXR1cm5cblxuICAgICAgICBpZiAoIWNsdXN0ZXJOb2RlcyB8fCAhY2x1c3Rlck5vZGVzLmxlbmd0aCkgcmV0dXJuOyAvLyBzdW0gb2Ygd2VpZ2h0cyBvZiBlZGdlcyBmcm9tIG5vZGUgdG8gbm9kZXMgaW4gY2x1c3RlclxuXG4gICAgICAgIHZhciBuZWlnaGJvckNsdXN0ZXJLaWluID0gMDtcbiAgICAgICAgY2x1c3Rlck5vZGVzLmZvckVhY2goZnVuY3Rpb24gKGNOb2RlKSB7XG4gICAgICAgICAgdmFyIGNOb2RlSWR4ID0gbm9kZU1hcFtjTm9kZS5pZF0uaWR4O1xuICAgICAgICAgIG5laWdoYm9yQ2x1c3RlcktpaW4gKz0gYWRqTWF0cml4W2ldW2NOb2RlSWR4XSB8fCAwO1xuICAgICAgICB9KTsgLy8gdGhlIG1vZHVyYXJpdHkgZm9yICoqYWRkaW5nKiogbm9kZSBpIGludG8gdGhpcyBuZWlnaGJvciBjbHVzdGVyXG5cbiAgICAgICAgdmFyIGFkZE1vZHVyYXJpdHkgPSBuZWlnaGJvckNsdXN0ZXJLaWluIC0gbmVpZ2hib3JDbHVzdGVyLnN1bVRvdCAqIGNvbW1vblBhcmFtOyAvLyBub2RlcyBmb3IgKiphZGRpbmcqKiBub2RlIGkgaW50byB0aGlzIG5laWdoYm9yIGNsdXN0ZXJcblxuICAgICAgICB2YXIgY2x1c3Rlck5vZGVzQWZ0ZXJBZGQgPSBjbHVzdGVyTm9kZXMuY29uY2F0KFtub2RlXSk7XG4gICAgICAgIHZhciBwcm9wZXJ0aWVzV2VpZ2h0QWRkID0gW107XG4gICAgICAgIGNsdXN0ZXJOb2Rlc0FmdGVyQWRkLmZvckVhY2goZnVuY3Rpb24gKG5vZGVBZGQsIGluZGV4KSB7XG4gICAgICAgICAgcHJvcGVydGllc1dlaWdodEFkZFtpbmRleF0gPSBhbGxQcm9wZXJ0aWVzV2VpZ2h0W25vZGVBZGQub3JpZ2luSW5kZXhdO1xuICAgICAgICB9KTsgLy8gdGhlIGluZXJ0aWFsTW9kdWxhcml0eSBmb3IgKiphZGRpbmcqKiBub2RlIGkgaW50byB0aGlzIG5laWdoYm9yIGNsdXN0ZXJcblxuICAgICAgICB2YXIgYWRkSW5lcnRpYWxNb2R1bGFyaXR5ID0gZ2V0SW5lcnRpYWxNb2R1bGFyaXR5KGNsdXN0ZXJOb2Rlc0FmdGVyQWRkLCBhbGxQcm9wZXJ0aWVzV2VpZ2h0KSAqIGluZXJ0aWFsV2VpZ2h0OyAvLyB0aGUgaW5jcmVhc2UgbW9kdXJhcml0eSBpcyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGFkZE1vZHVyYXJpdHkgYW5kIHJlbW92ZU1vZHVyYXJpdHlcblxuICAgICAgICB2YXIgaW5jcmVhc2UgPSBhZGRNb2R1cmFyaXR5IC0gcmVtb3ZlTW9kdXJhcml0eTtcblxuICAgICAgICBpZiAoaW5lcnRpYWxNb2R1bGFyaXR5KSB7XG4gICAgICAgICAgaW5jcmVhc2UgPSBhZGRNb2R1cmFyaXR5ICsgYWRkSW5lcnRpYWxNb2R1bGFyaXR5IC0gKHJlbW92ZU1vZHVyYXJpdHkgKyByZW1vdmVJbmVydGlhbE1vZHVsYXJpdHkpO1xuICAgICAgICB9IC8vIGZpbmQgdGhlIGJlc3QgY2x1c3RlciB0byBtb3ZlIG5vZGUgaSBpbnRvXG5cblxuICAgICAgICBpZiAoaW5jcmVhc2UgPiBiZXN0SW5jcmVhc2UpIHtcbiAgICAgICAgICBiZXN0SW5jcmVhc2UgPSBpbmNyZWFzZTtcbiAgICAgICAgICBiZXN0Q2x1c3RlciA9IG5laWdoYm9yQ2x1c3RlcjtcbiAgICAgICAgfVxuICAgICAgfSk7IC8vIGlmIGZvdW5kIGEgYmVzdCBjbHVzdGVyIHRvIG1vdmUgaW50b1xuXG4gICAgICBpZiAoYmVzdEluY3JlYXNlID4gMCkge1xuICAgICAgICBiZXN0Q2x1c3Rlci5ub2Rlcy5wdXNoKG5vZGUpO1xuICAgICAgICB2YXIgcHJldmlvdXNDbHVzdGVySWRfMSA9IG5vZGUuY2x1c3RlcklkO1xuICAgICAgICBub2RlLmNsdXN0ZXJJZCA9IGJlc3RDbHVzdGVyLmlkOyAvLyBtb3ZlIHRoZSBub2RlIHRvIHRoZSBiZXN0IGNsdXN0ZXJcblxuICAgICAgICB2YXIgbm9kZUluU2VsZkNsdXN0ZXJJZHggPSBzZWxmQ2x1c3Rlci5ub2Rlcy5pbmRleE9mKG5vZGUpOyAvLyByZW1vdmUgZnJvbSBvcmlnaW4gY2x1c3RlclxuXG4gICAgICAgIHNlbGZDbHVzdGVyLm5vZGVzLnNwbGljZShub2RlSW5TZWxmQ2x1c3RlcklkeCwgMSk7IC8vIHVwZGF0ZSBzdW1Ub3QgZm9yIGNsdXN0ZXJzXG4gICAgICAgIC8vIHN1bSBvZiB3ZWlnaHRzIG9mIGVkZ2VzIHRvIG5vZGVzIGluIGNsdXN0ZXJcblxuICAgICAgICB2YXIgbmVpZ2hib3JDbHVzdGVyU3VtVG90XzEgPSAwO1xuICAgICAgICB2YXIgc2VsZkNsdXN0ZXJTdW1Ub3RfMSA9IDA7XG4gICAgICAgIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICB2YXIgc291cmNlID0gZWRnZS5zb3VyY2UsXG4gICAgICAgICAgICAgIHRhcmdldCA9IGVkZ2UudGFyZ2V0O1xuICAgICAgICAgIHZhciBzb3VyY2VDbHVzdGVySWQgPSBub2RlTWFwW3NvdXJjZV0ubm9kZS5jbHVzdGVySWQ7XG4gICAgICAgICAgdmFyIHRhcmdldENsdXN0ZXJJZCA9IG5vZGVNYXBbdGFyZ2V0XS5ub2RlLmNsdXN0ZXJJZDtcblxuICAgICAgICAgIGlmIChzb3VyY2VDbHVzdGVySWQgPT09IGJlc3RDbHVzdGVyLmlkICYmIHRhcmdldENsdXN0ZXJJZCAhPT0gYmVzdENsdXN0ZXIuaWQgfHwgdGFyZ2V0Q2x1c3RlcklkID09PSBiZXN0Q2x1c3Rlci5pZCAmJiBzb3VyY2VDbHVzdGVySWQgIT09IGJlc3RDbHVzdGVyLmlkKSB7XG4gICAgICAgICAgICBuZWlnaGJvckNsdXN0ZXJTdW1Ub3RfMSA9IG5laWdoYm9yQ2x1c3RlclN1bVRvdF8xICsgKGVkZ2Vbd2VpZ2h0UHJvcGVydHlOYW1lXSB8fCAxKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc291cmNlQ2x1c3RlcklkID09PSBwcmV2aW91c0NsdXN0ZXJJZF8xICYmIHRhcmdldENsdXN0ZXJJZCAhPT0gcHJldmlvdXNDbHVzdGVySWRfMSB8fCB0YXJnZXRDbHVzdGVySWQgPT09IHByZXZpb3VzQ2x1c3RlcklkXzEgJiYgc291cmNlQ2x1c3RlcklkICE9PSBwcmV2aW91c0NsdXN0ZXJJZF8xKSB7XG4gICAgICAgICAgICBzZWxmQ2x1c3RlclN1bVRvdF8xID0gc2VsZkNsdXN0ZXJTdW1Ub3RfMSArIChlZGdlW3dlaWdodFByb3BlcnR5TmFtZV0gfHwgMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTsgLy8gdGhlIG5vZGVzIG9mIHRoZSBjbHVzdGVycyB0byBtb3ZlIGludG8gYW5kIHJlbW92ZSBhcmUgY2hhbmdlZCwgdXBkYXRlIHRoZWlyIHN1bVRvdFxuXG4gICAgICAgIGJlc3RDbHVzdGVyLnN1bVRvdCA9IG5laWdoYm9yQ2x1c3RlclN1bVRvdF8xO1xuICAgICAgICBzZWxmQ2x1c3Rlci5zdW1Ub3QgPSBzZWxmQ2x1c3RlclN1bVRvdF8xO1xuICAgICAgfVxuICAgIH0pO1xuICB9IC8vIGRlbGV0ZSB0aGUgZW1wdHkgY2x1c3RlcnMsIGFzc2lnbiBpbmNyZWFzaW5nIGNsdXN0ZXJJZFxuXG5cbiAgdmFyIG5ld0NsdXN0ZXJJZE1hcCA9IHt9O1xuICB2YXIgY2x1c3RlcklkeCA9IDA7XG4gIE9iamVjdC5rZXlzKGZpbmFsQ2x1c3RlcnMpLmZvckVhY2goZnVuY3Rpb24gKGNsdXN0ZXJJZCkge1xuICAgIHZhciBjbHVzdGVyID0gZmluYWxDbHVzdGVyc1tjbHVzdGVySWRdO1xuXG4gICAgaWYgKCFjbHVzdGVyLm5vZGVzIHx8ICFjbHVzdGVyLm5vZGVzLmxlbmd0aCkge1xuICAgICAgZGVsZXRlIGZpbmFsQ2x1c3RlcnNbY2x1c3RlcklkXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgbmV3SWQgPSBTdHJpbmcoY2x1c3RlcklkeCArIDEpO1xuXG4gICAgaWYgKG5ld0lkID09PSBjbHVzdGVySWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjbHVzdGVyLmlkID0gbmV3SWQ7XG4gICAgY2x1c3Rlci5ub2RlcyA9IGNsdXN0ZXIubm9kZXMubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgY2x1c3RlcklkOiBuZXdJZFxuICAgICAgfTtcbiAgICB9KTtcbiAgICBmaW5hbENsdXN0ZXJzW25ld0lkXSA9IGNsdXN0ZXI7XG4gICAgbmV3Q2x1c3RlcklkTWFwW2NsdXN0ZXJJZF0gPSBuZXdJZDtcbiAgICBkZWxldGUgZmluYWxDbHVzdGVyc1tjbHVzdGVySWRdO1xuICAgIGNsdXN0ZXJJZHgrKztcbiAgfSk7IC8vIHJlc3RvcmUgbm9kZSBjbHVzdGVySWRcblxuICBmaW5hbE5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGVJbmZvKSB7XG4gICAgdmFyIG5vZGUgPSBub2RlSW5mby5ub2RlLFxuICAgICAgICBjbHVzdGVySWQgPSBub2RlSW5mby5jbHVzdGVySWQ7XG4gICAgbm9kZS5jbHVzdGVySWQgPSBjbHVzdGVySWQ7XG4gICAgaWYgKG5vZGUuY2x1c3RlcklkICYmIG5ld0NsdXN0ZXJJZE1hcFtub2RlLmNsdXN0ZXJJZF0pIG5vZGUuY2x1c3RlcklkID0gbmV3Q2x1c3RlcklkTWFwW25vZGUuY2x1c3RlcklkXTtcbiAgfSk7IC8vIGdldCB0aGUgY2x1c3RlciBlZGdlc1xuXG4gIHZhciBjbHVzdGVyRWRnZXMgPSBbXTtcbiAgdmFyIGNsdXN0ZXJFZGdlTWFwID0ge307XG4gIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICB2YXIgc291cmNlID0gZWRnZS5zb3VyY2UsXG4gICAgICAgIHRhcmdldCA9IGVkZ2UudGFyZ2V0O1xuICAgIHZhciB3ZWlnaHQgPSBlZGdlW3dlaWdodFByb3BlcnR5TmFtZV0gfHwgMTtcbiAgICB2YXIgc291cmNlQ2x1c3RlcklkID0gbm9kZU1hcFtzb3VyY2VdLm5vZGUuY2x1c3RlcklkO1xuICAgIHZhciB0YXJnZXRDbHVzdGVySWQgPSBub2RlTWFwW3RhcmdldF0ubm9kZS5jbHVzdGVySWQ7XG4gICAgdmFyIG5ld0VkZ2VJZCA9IFwiXCIuY29uY2F0KHNvdXJjZUNsdXN0ZXJJZCwgXCItLS1cIikuY29uY2F0KHRhcmdldENsdXN0ZXJJZCk7XG5cbiAgICBpZiAoY2x1c3RlckVkZ2VNYXBbbmV3RWRnZUlkXSkge1xuICAgICAgY2x1c3RlckVkZ2VNYXBbbmV3RWRnZUlkXS53ZWlnaHQgKz0gd2VpZ2h0O1xuICAgICAgY2x1c3RlckVkZ2VNYXBbbmV3RWRnZUlkXS5jb3VudCsrO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbmV3RWRnZSA9IHtcbiAgICAgICAgc291cmNlOiBzb3VyY2VDbHVzdGVySWQsXG4gICAgICAgIHRhcmdldDogdGFyZ2V0Q2x1c3RlcklkLFxuICAgICAgICB3ZWlnaHQ6IHdlaWdodCxcbiAgICAgICAgY291bnQ6IDFcbiAgICAgIH07XG4gICAgICBjbHVzdGVyRWRnZU1hcFtuZXdFZGdlSWRdID0gbmV3RWRnZTtcbiAgICAgIGNsdXN0ZXJFZGdlcy5wdXNoKG5ld0VkZ2UpO1xuICAgIH1cbiAgfSk7XG4gIHZhciBjbHVzdGVyc0FycmF5ID0gW107XG4gIE9iamVjdC5rZXlzKGZpbmFsQ2x1c3RlcnMpLmZvckVhY2goZnVuY3Rpb24gKGNsdXN0ZXJJZCkge1xuICAgIGNsdXN0ZXJzQXJyYXkucHVzaChmaW5hbENsdXN0ZXJzW2NsdXN0ZXJJZF0pO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBjbHVzdGVyczogY2x1c3RlcnNBcnJheSxcbiAgICBjbHVzdGVyRWRnZXM6IGNsdXN0ZXJFZGdlc1xuICB9O1xufTtcblxudmFyIF9kZWZhdWx0ID0gbG91dmFpbjtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/louvain.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/mts.js":
/*!*************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/mts.js ***!
\*************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _unionFind = _interopRequireDefault(__webpack_require__(/*! ./structs/union-find */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/structs/union-find.js\"));\n\nvar _binaryHeap = _interopRequireDefault(__webpack_require__(/*! ./structs/binary-heap */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/structs/binary-heap.js\"));\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/util.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Prim algorithm,use priority queue,复杂度 O(E+V*logV), V: 节点数量,E: 边的数量\n * refer: https://en.wikipedia.org/wiki/Prim%27s_algorithm\n * @param graph\n * @param weight 指定用于作为边权重的属性,若不指定,则认为所有边权重一致\n */\nvar primMST = function primMST(graphData, weight) {\n var selectedEdges = [];\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n\n if (nodes.length === 0) {\n return selectedEdges;\n } // 从nodes[0]开始\n\n\n var currNode = nodes[0];\n var visited = new Set();\n visited.add(currNode); // 用二叉堆维护距已加入节点的其他节点的边的权值\n\n var compareWeight = function compareWeight(a, b) {\n if (weight) {\n return a.weight - b.weight;\n }\n\n return 0;\n };\n\n var edgeQueue = new _binaryHeap.default(compareWeight);\n (0, _util.getEdgesByNodeId)(currNode.id, edges).forEach(function (edge) {\n edgeQueue.insert(edge);\n });\n\n while (!edgeQueue.isEmpty()) {\n // 选取与已加入的结点之间边权最小的结点\n var currEdge = edgeQueue.delMin();\n var source = currEdge.source;\n var target = currEdge.target;\n if (visited.has(source) && visited.has(target)) continue;\n selectedEdges.push(currEdge);\n\n if (!visited.has(source)) {\n visited.add(source);\n (0, _util.getEdgesByNodeId)(source, edges).forEach(function (edge) {\n edgeQueue.insert(edge);\n });\n }\n\n if (!visited.has(target)) {\n visited.add(target);\n (0, _util.getEdgesByNodeId)(target, edges).forEach(function (edge) {\n edgeQueue.insert(edge);\n });\n }\n }\n\n return selectedEdges;\n};\n/**\n * Kruskal algorithm,复杂度 O(E*logE), E: 边的数量\n * refer: https://en.wikipedia.org/wiki/Kruskal%27s_algorithm\n * @param graph\n * @param weight 指定用于作为边权重的属性,若不指定,则认为所有边权重一致\n * @return IEdge[] 返回构成MST的边的数组\n */\n\n\nvar kruskalMST = function kruskalMST(graphData, weight) {\n var selectedEdges = [];\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n\n if (nodes.length === 0) {\n return selectedEdges;\n } // 若指定weight,则将所有的边按权值从小到大排序\n\n\n var weightEdges = edges.map(function (edge) {\n return edge;\n });\n\n if (weight) {\n weightEdges.sort(function (a, b) {\n return a.weight - b.weight;\n });\n }\n\n var disjointSet = new _unionFind.default(nodes.map(function (n) {\n return n.id;\n })); // 从权值最小的边开始,如果这条边连接的两个节点于图G中不在同一个连通分量中,则添加这条边\n // 直到遍历完所有点或边\n\n while (weightEdges.length > 0) {\n var curEdge = weightEdges.shift();\n var source = curEdge.source;\n var target = curEdge.target;\n\n if (!disjointSet.connected(source, target)) {\n selectedEdges.push(curEdge);\n disjointSet.union(source, target);\n }\n }\n\n return selectedEdges;\n};\n/**\n * 最小生成树\n * refer: https://en.wikipedia.org/wiki/Kruskal%27s_algorithm\n * @param graph\n * @param weight 指定用于作为边权重的属性,若不指定,则认为所有边权重一致\n * @param algo 'prim' | 'kruskal' 算法类型\n * @return EdgeConfig[] 返回构成MST的边的数组\n */\n\n\nvar minimumSpanningTree = function minimumSpanningTree(graphData, weight, algo) {\n var algos = {\n prim: primMST,\n kruskal: kruskalMST\n };\n if (!algo) return kruskalMST(graphData, weight);\n return algos[algo](graphData, weight);\n};\n\nvar _default = minimumSpanningTree;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9tdHMuanM/ZTY2MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBLHdDQUF3QyxtQkFBTyxDQUFDLDhHQUFzQjs7QUFFdEUseUNBQXlDLG1CQUFPLENBQUMsZ0hBQXVCOztBQUV4RSxZQUFZLG1CQUFPLENBQUMsa0ZBQVE7O0FBRTVCLHNDQUFzQyx1Q0FBdUMsZ0JBQWdCOztBQUU3RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQSx3QkFBd0I7O0FBRXhCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBLEdBQUcsR0FBRztBQUNOOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfYWxnb3JpdGhtQDAuMS4xNEBAYW50di9hbGdvcml0aG0vbGliL210cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX3VuaW9uRmluZCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vc3RydWN0cy91bmlvbi1maW5kXCIpKTtcblxudmFyIF9iaW5hcnlIZWFwID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9zdHJ1Y3RzL2JpbmFyeS1oZWFwXCIpKTtcblxudmFyIF91dGlsID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLyoqXG4gKiBQcmltIGFsZ29yaXRobe+8jHVzZSBwcmlvcml0eSBxdWV1Ze+8jOWkjeadguW6piBPKEUrVipsb2dWKSwgVjog6IqC54K55pWw6YeP77yMRTog6L6555qE5pWw6YePXG4gKiByZWZlcjogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHJpbSUyN3NfYWxnb3JpdGhtXG4gKiBAcGFyYW0gZ3JhcGhcbiAqIEBwYXJhbSB3ZWlnaHQg5oyH5a6a55So5LqO5L2c5Li66L655p2D6YeN55qE5bGe5oCn77yM6Iul5LiN5oyH5a6a77yM5YiZ6K6k5Li65omA5pyJ6L655p2D6YeN5LiA6Ie0XG4gKi9cbnZhciBwcmltTVNUID0gZnVuY3Rpb24gcHJpbU1TVChncmFwaERhdGEsIHdlaWdodCkge1xuICB2YXIgc2VsZWN0ZWRFZGdlcyA9IFtdO1xuICB2YXIgX2EgPSBncmFwaERhdGEubm9kZXMsXG4gICAgICBub2RlcyA9IF9hID09PSB2b2lkIDAgPyBbXSA6IF9hLFxuICAgICAgX2IgPSBncmFwaERhdGEuZWRnZXMsXG4gICAgICBlZGdlcyA9IF9iID09PSB2b2lkIDAgPyBbXSA6IF9iO1xuXG4gIGlmIChub2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gc2VsZWN0ZWRFZGdlcztcbiAgfSAvLyDku45ub2Rlc1swXeW8gOWni1xuXG5cbiAgdmFyIGN1cnJOb2RlID0gbm9kZXNbMF07XG4gIHZhciB2aXNpdGVkID0gbmV3IFNldCgpO1xuICB2aXNpdGVkLmFkZChjdXJyTm9kZSk7IC8vIOeUqOS6jOWPieWghue7tOaKpOi3neW3suWKoOWFpeiKgueCueeahOWFtuS7luiKgueCueeahOi+ueeahOadg+WAvFxuXG4gIHZhciBjb21wYXJlV2VpZ2h0ID0gZnVuY3Rpb24gY29tcGFyZVdlaWdodChhLCBiKSB7XG4gICAgaWYgKHdlaWdodCkge1xuICAgICAgcmV0dXJuIGEud2VpZ2h0IC0gYi53ZWlnaHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG4gIH07XG5cbiAgdmFyIGVkZ2VRdWV1ZSA9IG5ldyBfYmluYXJ5SGVhcC5kZWZhdWx0KGNvbXBhcmVXZWlnaHQpO1xuICAoMCwgX3V0aWwuZ2V0RWRnZXNCeU5vZGVJZCkoY3Vyck5vZGUuaWQsIGVkZ2VzKS5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgZWRnZVF1ZXVlLmluc2VydChlZGdlKTtcbiAgfSk7XG5cbiAgd2hpbGUgKCFlZGdlUXVldWUuaXNFbXB0eSgpKSB7XG4gICAgLy8g6YCJ5Y+W5LiO5bey5Yqg5YWl55qE57uT54K55LmL6Ze06L655p2D5pyA5bCP55qE57uT54K5XG4gICAgdmFyIGN1cnJFZGdlID0gZWRnZVF1ZXVlLmRlbE1pbigpO1xuICAgIHZhciBzb3VyY2UgPSBjdXJyRWRnZS5zb3VyY2U7XG4gICAgdmFyIHRhcmdldCA9IGN1cnJFZGdlLnRhcmdldDtcbiAgICBpZiAodmlzaXRlZC5oYXMoc291cmNlKSAmJiB2aXNpdGVkLmhhcyh0YXJnZXQpKSBjb250aW51ZTtcbiAgICBzZWxlY3RlZEVkZ2VzLnB1c2goY3VyckVkZ2UpO1xuXG4gICAgaWYgKCF2aXNpdGVkLmhhcyhzb3VyY2UpKSB7XG4gICAgICB2aXNpdGVkLmFkZChzb3VyY2UpO1xuICAgICAgKDAsIF91dGlsLmdldEVkZ2VzQnlOb2RlSWQpKHNvdXJjZSwgZWRnZXMpLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgZWRnZVF1ZXVlLmluc2VydChlZGdlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICghdmlzaXRlZC5oYXModGFyZ2V0KSkge1xuICAgICAgdmlzaXRlZC5hZGQodGFyZ2V0KTtcbiAgICAgICgwLCBfdXRpbC5nZXRFZGdlc0J5Tm9kZUlkKSh0YXJnZXQsIGVkZ2VzKS5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgIGVkZ2VRdWV1ZS5pbnNlcnQoZWRnZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc2VsZWN0ZWRFZGdlcztcbn07XG4vKipcbiAqIEtydXNrYWwgYWxnb3JpdGht77yM5aSN5p2C5bqmIE8oRSpsb2dFKSwgRTog6L6555qE5pWw6YePXG4gKiByZWZlcjogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvS3J1c2thbCUyN3NfYWxnb3JpdGhtXG4gKiBAcGFyYW0gZ3JhcGhcbiAqIEBwYXJhbSB3ZWlnaHQg5oyH5a6a55So5LqO5L2c5Li66L655p2D6YeN55qE5bGe5oCn77yM6Iul5LiN5oyH5a6a77yM5YiZ6K6k5Li65omA5pyJ6L655p2D6YeN5LiA6Ie0XG4gKiBAcmV0dXJuIElFZGdlW10g6L+U5Zue5p6E5oiQTVNU55qE6L6555qE5pWw57uEXG4gKi9cblxuXG52YXIga3J1c2thbE1TVCA9IGZ1bmN0aW9uIGtydXNrYWxNU1QoZ3JhcGhEYXRhLCB3ZWlnaHQpIHtcbiAgdmFyIHNlbGVjdGVkRWRnZXMgPSBbXTtcbiAgdmFyIF9hID0gZ3JhcGhEYXRhLm5vZGVzLFxuICAgICAgbm9kZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYSxcbiAgICAgIF9iID0gZ3JhcGhEYXRhLmVkZ2VzLFxuICAgICAgZWRnZXMgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYjtcblxuICBpZiAobm9kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHNlbGVjdGVkRWRnZXM7XG4gIH0gLy8g6Iul5oyH5a6ad2VpZ2h077yM5YiZ5bCG5omA5pyJ55qE6L655oyJ5p2D5YC85LuO5bCP5Yiw5aSn5o6S5bqPXG5cblxuICB2YXIgd2VpZ2h0RWRnZXMgPSBlZGdlcy5tYXAoZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICByZXR1cm4gZWRnZTtcbiAgfSk7XG5cbiAgaWYgKHdlaWdodCkge1xuICAgIHdlaWdodEVkZ2VzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBhLndlaWdodCAtIGIud2VpZ2h0O1xuICAgIH0pO1xuICB9XG5cbiAgdmFyIGRpc2pvaW50U2V0ID0gbmV3IF91bmlvbkZpbmQuZGVmYXVsdChub2Rlcy5tYXAoZnVuY3Rpb24gKG4pIHtcbiAgICByZXR1cm4gbi5pZDtcbiAgfSkpOyAvLyDku47mnYPlgLzmnIDlsI/nmoTovrnlvIDlp4vvvIzlpoLmnpzov5nmnaHovrnov57mjqXnmoTkuKTkuKroioLngrnkuo7lm75H5Lit5LiN5Zyo5ZCM5LiA5Liq6L+e6YCa5YiG6YeP5Lit77yM5YiZ5re75Yqg6L+Z5p2h6L65XG4gIC8vIOebtOWIsOmBjeWOhuWujOaJgOacieeCueaIlui+uVxuXG4gIHdoaWxlICh3ZWlnaHRFZGdlcy5sZW5ndGggPiAwKSB7XG4gICAgdmFyIGN1ckVkZ2UgPSB3ZWlnaHRFZGdlcy5zaGlmdCgpO1xuICAgIHZhciBzb3VyY2UgPSBjdXJFZGdlLnNvdXJjZTtcbiAgICB2YXIgdGFyZ2V0ID0gY3VyRWRnZS50YXJnZXQ7XG5cbiAgICBpZiAoIWRpc2pvaW50U2V0LmNvbm5lY3RlZChzb3VyY2UsIHRhcmdldCkpIHtcbiAgICAgIHNlbGVjdGVkRWRnZXMucHVzaChjdXJFZGdlKTtcbiAgICAgIGRpc2pvaW50U2V0LnVuaW9uKHNvdXJjZSwgdGFyZ2V0KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc2VsZWN0ZWRFZGdlcztcbn07XG4vKipcbiAqIOacgOWwj+eUn+aIkOagkVxuICogcmVmZXI6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0tydXNrYWwlMjdzX2FsZ29yaXRobVxuICogQHBhcmFtIGdyYXBoXG4gKiBAcGFyYW0gd2VpZ2h0IOaMh+WumueUqOS6juS9nOS4uui+ueadg+mHjeeahOWxnuaAp++8jOiLpeS4jeaMh+Wumu+8jOWImeiupOS4uuaJgOaciei+ueadg+mHjeS4gOiHtFxuICogQHBhcmFtIGFsZ28gJ3ByaW0nIHwgJ2tydXNrYWwnIOeul+azleexu+Wei1xuICogQHJldHVybiBFZGdlQ29uZmlnW10g6L+U5Zue5p6E5oiQTVNU55qE6L6555qE5pWw57uEXG4gKi9cblxuXG52YXIgbWluaW11bVNwYW5uaW5nVHJlZSA9IGZ1bmN0aW9uIG1pbmltdW1TcGFubmluZ1RyZWUoZ3JhcGhEYXRhLCB3ZWlnaHQsIGFsZ28pIHtcbiAgdmFyIGFsZ29zID0ge1xuICAgIHByaW06IHByaW1NU1QsXG4gICAga3J1c2thbDoga3J1c2thbE1TVFxuICB9O1xuICBpZiAoIWFsZ28pIHJldHVybiBrcnVza2FsTVNUKGdyYXBoRGF0YSwgd2VpZ2h0KTtcbiAgcmV0dXJuIGFsZ29zW2FsZ29dKGdyYXBoRGF0YSwgd2VpZ2h0KTtcbn07XG5cbnZhciBfZGVmYXVsdCA9IG1pbmltdW1TcGFubmluZ1RyZWU7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/mts.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/pageRank.js":
/*!******************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/pageRank.js ***!
\******************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _degree = _interopRequireDefault(__webpack_require__(/*! ./degree */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/degree.js\"));\n\nvar _util = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/util.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * PageRank https://en.wikipedia.org/wiki/PageRank\n * refer: https://github.com/anvaka/ngraph.pagerank\n * @param graph\n * @param epsilon 判断是否收敛的精度值,默认 0.000001\n * @param linkProb 阻尼系数(dumping factor),指任意时刻,用户访问到某节点后继续访问该节点链接的下一个节点的概率,经验值 0.85\n */\nvar pageRank = function pageRank(graphData, epsilon, linkProb) {\n if (typeof epsilon !== 'number') epsilon = 0.000001;\n if (typeof linkProb !== 'number') linkProb = 0.85;\n var distance = 1;\n var leakedRank = 0;\n var maxIterations = 1000;\n var _a = graphData.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = graphData.edges,\n edges = _b === void 0 ? [] : _b;\n var nodesCount = nodes.length;\n var currentRank;\n var curRanks = {};\n var prevRanks = {}; // Initialize pageranks 初始化\n\n for (var j = 0; j < nodesCount; ++j) {\n var node = nodes[j];\n var nodeId = node.id;\n curRanks[nodeId] = 1 / nodesCount;\n prevRanks[nodeId] = 1 / nodesCount;\n }\n\n var nodeDegree = (0, _degree.default)(graphData);\n\n while (maxIterations > 0 && distance > epsilon) {\n leakedRank = 0;\n\n for (var j = 0; j < nodesCount; ++j) {\n var node = nodes[j];\n var nodeId = node.id;\n currentRank = 0;\n\n if (nodeDegree[node.id].inDegree === 0) {\n curRanks[nodeId] = 0;\n } else {\n var neighbors = (0, _util.getNeighbors)(nodeId, edges, 'source');\n\n for (var i = 0; i < neighbors.length; ++i) {\n var neighbor = neighbors[i];\n var outDegree = nodeDegree[neighbor].outDegree;\n if (outDegree > 0) currentRank += prevRanks[neighbor] / outDegree;\n }\n\n curRanks[nodeId] = linkProb * currentRank;\n leakedRank += curRanks[nodeId];\n }\n }\n\n leakedRank = (1 - leakedRank) / nodesCount;\n distance = 0;\n\n for (var j = 0; j < nodesCount; ++j) {\n var node = nodes[j];\n var nodeId = node.id;\n currentRank = curRanks[nodeId] + leakedRank;\n distance += Math.abs(currentRank - prevRanks[nodeId]);\n prevRanks[nodeId] = currentRank;\n }\n\n maxIterations -= 1;\n }\n\n return prevRanks;\n};\n\nvar _default = pageRank;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9wYWdlUmFuay5qcz82M2RjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7O0FBRUEscUNBQXFDLG1CQUFPLENBQUMsc0ZBQVU7O0FBRXZELFlBQVksbUJBQU8sQ0FBQyxrRkFBUTs7QUFFNUIsc0NBQXNDLHVDQUF1QyxnQkFBZ0I7O0FBRTdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7O0FBRXJCLGlCQUFpQixnQkFBZ0I7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUEsdUJBQXVCLHNCQUFzQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9saWIvcGFnZVJhbmsuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIF9kZWdyZWUgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2RlZ3JlZVwiKSk7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbi8qKlxuICogUGFnZVJhbmsgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGFnZVJhbmtcbiAqIHJlZmVyOiBodHRwczovL2dpdGh1Yi5jb20vYW52YWthL25ncmFwaC5wYWdlcmFua1xuICogQHBhcmFtIGdyYXBoXG4gKiBAcGFyYW0gZXBzaWxvbiDliKTmlq3mmK/lkKbmlLbmlZvnmoTnsr7luqblgLzvvIzpu5jorqQgMC4wMDAwMDFcbiAqIEBwYXJhbSBsaW5rUHJvYiDpmLvlsLzns7vmlbDvvIhkdW1waW5nIGZhY3Rvcu+8ie+8jOaMh+S7u+aEj+aXtuWIu++8jOeUqOaIt+iuv+mXruWIsOafkOiKgueCueWQjue7p+e7reiuv+mXruivpeiKgueCuemTvuaOpeeahOS4i+S4gOS4quiKgueCueeahOamgueOh++8jOe7j+mqjOWAvCAwLjg1XG4gKi9cbnZhciBwYWdlUmFuayA9IGZ1bmN0aW9uIHBhZ2VSYW5rKGdyYXBoRGF0YSwgZXBzaWxvbiwgbGlua1Byb2IpIHtcbiAgaWYgKHR5cGVvZiBlcHNpbG9uICE9PSAnbnVtYmVyJykgZXBzaWxvbiA9IDAuMDAwMDAxO1xuICBpZiAodHlwZW9mIGxpbmtQcm9iICE9PSAnbnVtYmVyJykgbGlua1Byb2IgPSAwLjg1O1xuICB2YXIgZGlzdGFuY2UgPSAxO1xuICB2YXIgbGVha2VkUmFuayA9IDA7XG4gIHZhciBtYXhJdGVyYXRpb25zID0gMTAwMDtcbiAgdmFyIF9hID0gZ3JhcGhEYXRhLm5vZGVzLFxuICAgICAgbm9kZXMgPSBfYSA9PT0gdm9pZCAwID8gW10gOiBfYSxcbiAgICAgIF9iID0gZ3JhcGhEYXRhLmVkZ2VzLFxuICAgICAgZWRnZXMgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYjtcbiAgdmFyIG5vZGVzQ291bnQgPSBub2Rlcy5sZW5ndGg7XG4gIHZhciBjdXJyZW50UmFuaztcbiAgdmFyIGN1clJhbmtzID0ge307XG4gIHZhciBwcmV2UmFua3MgPSB7fTsgLy8gSW5pdGlhbGl6ZSBwYWdlcmFua3Mg5Yid5aeL5YyWXG5cbiAgZm9yICh2YXIgaiA9IDA7IGogPCBub2Rlc0NvdW50OyArK2opIHtcbiAgICB2YXIgbm9kZSA9IG5vZGVzW2pdO1xuICAgIHZhciBub2RlSWQgPSBub2RlLmlkO1xuICAgIGN1clJhbmtzW25vZGVJZF0gPSAxIC8gbm9kZXNDb3VudDtcbiAgICBwcmV2UmFua3Nbbm9kZUlkXSA9IDEgLyBub2Rlc0NvdW50O1xuICB9XG5cbiAgdmFyIG5vZGVEZWdyZWUgPSAoMCwgX2RlZ3JlZS5kZWZhdWx0KShncmFwaERhdGEpO1xuXG4gIHdoaWxlIChtYXhJdGVyYXRpb25zID4gMCAmJiBkaXN0YW5jZSA+IGVwc2lsb24pIHtcbiAgICBsZWFrZWRSYW5rID0gMDtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbm9kZXNDb3VudDsgKytqKSB7XG4gICAgICB2YXIgbm9kZSA9IG5vZGVzW2pdO1xuICAgICAgdmFyIG5vZGVJZCA9IG5vZGUuaWQ7XG4gICAgICBjdXJyZW50UmFuayA9IDA7XG5cbiAgICAgIGlmIChub2RlRGVncmVlW25vZGUuaWRdLmluRGVncmVlID09PSAwKSB7XG4gICAgICAgIGN1clJhbmtzW25vZGVJZF0gPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIG5laWdoYm9ycyA9ICgwLCBfdXRpbC5nZXROZWlnaGJvcnMpKG5vZGVJZCwgZWRnZXMsICdzb3VyY2UnKTtcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5laWdoYm9ycy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgIHZhciBuZWlnaGJvciA9IG5laWdoYm9yc1tpXTtcbiAgICAgICAgICB2YXIgb3V0RGVncmVlID0gbm9kZURlZ3JlZVtuZWlnaGJvcl0ub3V0RGVncmVlO1xuICAgICAgICAgIGlmIChvdXREZWdyZWUgPiAwKSBjdXJyZW50UmFuayArPSBwcmV2UmFua3NbbmVpZ2hib3JdIC8gb3V0RGVncmVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY3VyUmFua3Nbbm9kZUlkXSA9IGxpbmtQcm9iICogY3VycmVudFJhbms7XG4gICAgICAgIGxlYWtlZFJhbmsgKz0gY3VyUmFua3Nbbm9kZUlkXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZWFrZWRSYW5rID0gKDEgLSBsZWFrZWRSYW5rKSAvIG5vZGVzQ291bnQ7XG4gICAgZGlzdGFuY2UgPSAwO1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBub2Rlc0NvdW50OyArK2opIHtcbiAgICAgIHZhciBub2RlID0gbm9kZXNbal07XG4gICAgICB2YXIgbm9kZUlkID0gbm9kZS5pZDtcbiAgICAgIGN1cnJlbnRSYW5rID0gY3VyUmFua3Nbbm9kZUlkXSArIGxlYWtlZFJhbms7XG4gICAgICBkaXN0YW5jZSArPSBNYXRoLmFicyhjdXJyZW50UmFuayAtIHByZXZSYW5rc1tub2RlSWRdKTtcbiAgICAgIHByZXZSYW5rc1tub2RlSWRdID0gY3VycmVudFJhbms7XG4gICAgfVxuXG4gICAgbWF4SXRlcmF0aW9ucyAtPSAxO1xuICB9XG5cbiAgcmV0dXJuIHByZXZSYW5rcztcbn07XG5cbnZhciBfZGVmYXVsdCA9IHBhZ2VSYW5rO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/pageRank.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/structs/binary-heap.js":
/*!*****************************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/structs/binary-heap.js ***!
\*****************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar defaultCompare = function defaultCompare(a, b) {\n return a - b;\n};\n\nvar MinBinaryHeap =\n/** @class */\nfunction () {\n function MinBinaryHeap(compareFn) {\n if (compareFn === void 0) {\n compareFn = defaultCompare;\n }\n\n this.compareFn = compareFn;\n this.list = [];\n }\n\n MinBinaryHeap.prototype.getLeft = function (index) {\n return 2 * index + 1;\n };\n\n MinBinaryHeap.prototype.getRight = function (index) {\n return 2 * index + 2;\n };\n\n MinBinaryHeap.prototype.getParent = function (index) {\n if (index === 0) {\n return null;\n }\n\n return Math.floor((index - 1) / 2);\n };\n\n MinBinaryHeap.prototype.isEmpty = function () {\n return this.list.length <= 0;\n };\n\n MinBinaryHeap.prototype.top = function () {\n return this.isEmpty() ? undefined : this.list[0];\n };\n\n MinBinaryHeap.prototype.delMin = function () {\n var top = this.top();\n var bottom = this.list.pop();\n\n if (this.list.length > 0) {\n this.list[0] = bottom;\n this.moveDown(0);\n }\n\n return top;\n };\n\n MinBinaryHeap.prototype.insert = function (value) {\n if (value !== null) {\n this.list.push(value);\n var index = this.list.length - 1;\n this.moveUp(index);\n return true;\n }\n\n return false;\n };\n\n MinBinaryHeap.prototype.moveUp = function (index) {\n var parent = this.getParent(index);\n\n while (index && index > 0 && this.compareFn(this.list[parent], this.list[index]) > 0) {\n // swap\n var tmp = this.list[parent];\n this.list[parent] = this.list[index];\n this.list[index] = tmp; // [this.list[index], this.list[parent]] = [this.list[parent], this.list[index]]\n\n index = parent;\n parent = this.getParent(index);\n }\n };\n\n MinBinaryHeap.prototype.moveDown = function (index) {\n var _a;\n\n var element = index;\n var left = this.getLeft(index);\n var right = this.getRight(index);\n var size = this.list.length;\n\n if (left !== null && left < size && this.compareFn(this.list[element], this.list[left]) > 0) {\n element = left;\n } else if (right !== null && right < size && this.compareFn(this.list[element], this.list[right]) > 0) {\n element = right;\n }\n\n if (index !== element) {\n _a = [this.list[element], this.list[index]], this.list[index] = _a[0], this.list[element] = _a[1];\n this.moveDown(element);\n }\n };\n\n return MinBinaryHeap;\n}();\n\nvar _default = MinBinaryHeap;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9zdHJ1Y3RzL2JpbmFyeS1oZWFwLmpzPzY2N2EiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2Qjs7QUFFN0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfYWxnb3JpdGhtQDAuMS4xNEBAYW50di9hbGdvcml0aG0vbGliL3N0cnVjdHMvYmluYXJ5LWhlYXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIGRlZmF1bHRDb21wYXJlID0gZnVuY3Rpb24gZGVmYXVsdENvbXBhcmUoYSwgYikge1xuICByZXR1cm4gYSAtIGI7XG59O1xuXG52YXIgTWluQmluYXJ5SGVhcCA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIE1pbkJpbmFyeUhlYXAoY29tcGFyZUZuKSB7XG4gICAgaWYgKGNvbXBhcmVGbiA9PT0gdm9pZCAwKSB7XG4gICAgICBjb21wYXJlRm4gPSBkZWZhdWx0Q29tcGFyZTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbXBhcmVGbiA9IGNvbXBhcmVGbjtcbiAgICB0aGlzLmxpc3QgPSBbXTtcbiAgfVxuXG4gIE1pbkJpbmFyeUhlYXAucHJvdG90eXBlLmdldExlZnQgPSBmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICByZXR1cm4gMiAqIGluZGV4ICsgMTtcbiAgfTtcblxuICBNaW5CaW5hcnlIZWFwLnByb3RvdHlwZS5nZXRSaWdodCA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgIHJldHVybiAyICogaW5kZXggKyAyO1xuICB9O1xuXG4gIE1pbkJpbmFyeUhlYXAucHJvdG90eXBlLmdldFBhcmVudCA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIE1hdGguZmxvb3IoKGluZGV4IC0gMSkgLyAyKTtcbiAgfTtcblxuICBNaW5CaW5hcnlIZWFwLnByb3RvdHlwZS5pc0VtcHR5ID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmxpc3QubGVuZ3RoIDw9IDA7XG4gIH07XG5cbiAgTWluQmluYXJ5SGVhcC5wcm90b3R5cGUudG9wID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmlzRW1wdHkoKSA/IHVuZGVmaW5lZCA6IHRoaXMubGlzdFswXTtcbiAgfTtcblxuICBNaW5CaW5hcnlIZWFwLnByb3RvdHlwZS5kZWxNaW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHRvcCA9IHRoaXMudG9wKCk7XG4gICAgdmFyIGJvdHRvbSA9IHRoaXMubGlzdC5wb3AoKTtcblxuICAgIGlmICh0aGlzLmxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5saXN0WzBdID0gYm90dG9tO1xuICAgICAgdGhpcy5tb3ZlRG93bigwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdG9wO1xuICB9O1xuXG4gIE1pbkJpbmFyeUhlYXAucHJvdG90eXBlLmluc2VydCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5saXN0LnB1c2godmFsdWUpO1xuICAgICAgdmFyIGluZGV4ID0gdGhpcy5saXN0Lmxlbmd0aCAtIDE7XG4gICAgICB0aGlzLm1vdmVVcChpbmRleCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cbiAgTWluQmluYXJ5SGVhcC5wcm90b3R5cGUubW92ZVVwID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgdmFyIHBhcmVudCA9IHRoaXMuZ2V0UGFyZW50KGluZGV4KTtcblxuICAgIHdoaWxlIChpbmRleCAmJiBpbmRleCA+IDAgJiYgdGhpcy5jb21wYXJlRm4odGhpcy5saXN0W3BhcmVudF0sIHRoaXMubGlzdFtpbmRleF0pID4gMCkge1xuICAgICAgLy8gc3dhcFxuICAgICAgdmFyIHRtcCA9IHRoaXMubGlzdFtwYXJlbnRdO1xuICAgICAgdGhpcy5saXN0W3BhcmVudF0gPSB0aGlzLmxpc3RbaW5kZXhdO1xuICAgICAgdGhpcy5saXN0W2luZGV4XSA9IHRtcDsgLy8gW3RoaXMubGlzdFtpbmRleF0sIHRoaXMubGlzdFtwYXJlbnRdXSA9IFt0aGlzLmxpc3RbcGFyZW50XSwgdGhpcy5saXN0W2luZGV4XV1cblxuICAgICAgaW5kZXggPSBwYXJlbnQ7XG4gICAgICBwYXJlbnQgPSB0aGlzLmdldFBhcmVudChpbmRleCk7XG4gICAgfVxuICB9O1xuXG4gIE1pbkJpbmFyeUhlYXAucHJvdG90eXBlLm1vdmVEb3duID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgdmFyIF9hO1xuXG4gICAgdmFyIGVsZW1lbnQgPSBpbmRleDtcbiAgICB2YXIgbGVmdCA9IHRoaXMuZ2V0TGVmdChpbmRleCk7XG4gICAgdmFyIHJpZ2h0ID0gdGhpcy5nZXRSaWdodChpbmRleCk7XG4gICAgdmFyIHNpemUgPSB0aGlzLmxpc3QubGVuZ3RoO1xuXG4gICAgaWYgKGxlZnQgIT09IG51bGwgJiYgbGVmdCA8IHNpemUgJiYgdGhpcy5jb21wYXJlRm4odGhpcy5saXN0W2VsZW1lbnRdLCB0aGlzLmxpc3RbbGVmdF0pID4gMCkge1xuICAgICAgZWxlbWVudCA9IGxlZnQ7XG4gICAgfSBlbHNlIGlmIChyaWdodCAhPT0gbnVsbCAmJiByaWdodCA8IHNpemUgJiYgdGhpcy5jb21wYXJlRm4odGhpcy5saXN0W2VsZW1lbnRdLCB0aGlzLmxpc3RbcmlnaHRdKSA+IDApIHtcbiAgICAgIGVsZW1lbnQgPSByaWdodDtcbiAgICB9XG5cbiAgICBpZiAoaW5kZXggIT09IGVsZW1lbnQpIHtcbiAgICAgIF9hID0gW3RoaXMubGlzdFtlbGVtZW50XSwgdGhpcy5saXN0W2luZGV4XV0sIHRoaXMubGlzdFtpbmRleF0gPSBfYVswXSwgdGhpcy5saXN0W2VsZW1lbnRdID0gX2FbMV07XG4gICAgICB0aGlzLm1vdmVEb3duKGVsZW1lbnQpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gTWluQmluYXJ5SGVhcDtcbn0oKTtcblxudmFyIF9kZWZhdWx0ID0gTWluQmluYXJ5SGVhcDtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/structs/binary-heap.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/structs/linked-list.js":
/*!*****************************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/structs/linked-list.js ***!
\*****************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.LinkedListNode = void 0;\n\nvar defaultComparator = function defaultComparator(a, b) {\n if (a === b) {\n return true;\n }\n\n return false;\n};\n/**\n * 链表中单个元素节点\n */\n\n\nvar LinkedListNode =\n/** @class */\nfunction () {\n function LinkedListNode(value, next) {\n if (next === void 0) {\n next = null;\n }\n\n this.value = value;\n this.next = next;\n }\n\n LinkedListNode.prototype.toString = function (callback) {\n return callback ? callback(this.value) : \"\".concat(this.value);\n };\n\n return LinkedListNode;\n}();\n\nexports.LinkedListNode = LinkedListNode;\n\nvar LinkedList =\n/** @class */\nfunction () {\n function LinkedList(comparator) {\n if (comparator === void 0) {\n comparator = defaultComparator;\n }\n\n this.head = null;\n this.tail = null;\n this.compare = comparator;\n }\n /**\n * 将指定元素添加到链表头部\n * @param value\n */\n\n\n LinkedList.prototype.prepend = function (value) {\n // 在头部添加一个节点\n var newNode = new LinkedListNode(value, this.head);\n this.head = newNode;\n\n if (!this.tail) {\n this.tail = newNode;\n }\n\n return this;\n };\n /**\n * 将指定元素添加到链表中\n * @param value\n */\n\n\n LinkedList.prototype.append = function (value) {\n var newNode = new LinkedListNode(value); // 如果不存在头节点,则将创建的新节点作为头节点\n\n if (!this.head) {\n this.head = newNode;\n this.tail = newNode;\n return this;\n } // 将新节点附加到链表末尾\n\n\n this.tail.next = newNode;\n this.tail = newNode;\n return this;\n };\n /**\n * 删除指定元素\n * @param value 要删除的元素\n */\n\n\n LinkedList.prototype.delete = function (value) {\n if (!this.head) {\n return null;\n }\n\n var deleteNode = null; // 如果删除的是头部元素,则将next作为头元素\n\n while (this.head && this.compare(this.head.value, value)) {\n deleteNode = this.head;\n this.head = this.head.next;\n }\n\n var currentNode = this.head;\n\n if (currentNode !== null) {\n // 如果删除了节点以后,将next节点前移\n while (currentNode.next) {\n if (this.compare(currentNode.next.value, value)) {\n deleteNode = currentNode.next;\n currentNode.next = currentNode.next.next;\n } else {\n currentNode = currentNode.next;\n }\n }\n } // 检查尾部节点是否被删除\n\n\n if (this.compare(this.tail.value, value)) {\n this.tail = currentNode;\n }\n\n return deleteNode;\n };\n /**\n * 查找指定的元素\n * @param param0\n */\n\n\n LinkedList.prototype.find = function (_a) {\n var _b = _a.value,\n value = _b === void 0 ? undefined : _b,\n _c = _a.callback,\n callback = _c === void 0 ? undefined : _c;\n\n if (!this.head) {\n return null;\n }\n\n var currentNode = this.head;\n\n while (currentNode) {\n // 如果指定了 callback,则按指定的 callback 查找\n if (callback && callback(currentNode.value)) {\n return currentNode;\n } // 如果指定了 value,则按 value 查找\n\n\n if (value !== undefined && this.compare(currentNode.value, value)) {\n return currentNode;\n }\n\n currentNode = currentNode.next;\n }\n\n return null;\n };\n /**\n * 删除尾部节点\n */\n\n\n LinkedList.prototype.deleteTail = function () {\n var deletedTail = this.tail;\n\n if (this.head === this.tail) {\n // 链表中只有一个元素\n this.head = null;\n this.tail = null;\n return deletedTail;\n }\n\n var currentNode = this.head;\n\n while (currentNode.next) {\n if (!currentNode.next.next) {\n currentNode.next = null;\n } else {\n currentNode = currentNode.next;\n }\n }\n\n this.tail = currentNode;\n return deletedTail;\n };\n /**\n * 删除头部节点\n */\n\n\n LinkedList.prototype.deleteHead = function () {\n if (!this.head) {\n return null;\n }\n\n var deletedHead = this.head;\n\n if (this.head.next) {\n this.head = this.head.next;\n } else {\n this.head = null;\n this.tail = null;\n }\n\n return deletedHead;\n };\n /**\n * 将一组元素转成链表中的节点\n * @param values 链表中的元素\n */\n\n\n LinkedList.prototype.fromArray = function (values) {\n var _this = this;\n\n values.forEach(function (value) {\n return _this.append(value);\n });\n return this;\n };\n /**\n * 将链表中的节点转成数组元素\n */\n\n\n LinkedList.prototype.toArray = function () {\n var nodes = [];\n var currentNode = this.head;\n\n while (currentNode) {\n nodes.push(currentNode);\n currentNode = currentNode.next;\n }\n\n return nodes;\n };\n /**\n * 反转链表中的元素节点\n */\n\n\n LinkedList.prototype.reverse = function () {\n var currentNode = this.head;\n var prevNode = null;\n var nextNode = null;\n\n while (currentNode) {\n // 存储下一个元素节点\n nextNode = currentNode.next; // 更改当前节点的下一个节点,以便将它连接到上一个节点上\n\n currentNode.next = prevNode; // 将 prevNode 和 currentNode 向前移动一步\n\n prevNode = currentNode;\n currentNode = nextNode;\n }\n\n this.tail = this.head;\n this.head = prevNode;\n };\n\n LinkedList.prototype.toString = function (callback) {\n if (callback === void 0) {\n callback = undefined;\n }\n\n return this.toArray().map(function (node) {\n return node.toString(callback);\n }).toString();\n };\n\n return LinkedList;\n}();\n\nvar _default = LinkedList;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9zdHJ1Y3RzL2xpbmtlZC1saXN0LmpzPzVkNTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBLDRDQUE0Qzs7QUFFNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwwQkFBMEI7O0FBRTFCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEMsa0NBQWtDOztBQUVsQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9zdHJ1Y3RzL2xpbmtlZC1saXN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBleHBvcnRzLkxpbmtlZExpc3ROb2RlID0gdm9pZCAwO1xuXG52YXIgZGVmYXVsdENvbXBhcmF0b3IgPSBmdW5jdGlvbiBkZWZhdWx0Q29tcGFyYXRvcihhLCBiKSB7XG4gIGlmIChhID09PSBiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59O1xuLyoqXG4gKiDpk77ooajkuK3ljZXkuKrlhYPntKDoioLngrlcbiAqL1xuXG5cbnZhciBMaW5rZWRMaXN0Tm9kZSA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIExpbmtlZExpc3ROb2RlKHZhbHVlLCBuZXh0KSB7XG4gICAgaWYgKG5leHQgPT09IHZvaWQgMCkge1xuICAgICAgbmV4dCA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMubmV4dCA9IG5leHQ7XG4gIH1cblxuICBMaW5rZWRMaXN0Tm9kZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgICByZXR1cm4gY2FsbGJhY2sgPyBjYWxsYmFjayh0aGlzLnZhbHVlKSA6IFwiXCIuY29uY2F0KHRoaXMudmFsdWUpO1xuICB9O1xuXG4gIHJldHVybiBMaW5rZWRMaXN0Tm9kZTtcbn0oKTtcblxuZXhwb3J0cy5MaW5rZWRMaXN0Tm9kZSA9IExpbmtlZExpc3ROb2RlO1xuXG52YXIgTGlua2VkTGlzdCA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIExpbmtlZExpc3QoY29tcGFyYXRvcikge1xuICAgIGlmIChjb21wYXJhdG9yID09PSB2b2lkIDApIHtcbiAgICAgIGNvbXBhcmF0b3IgPSBkZWZhdWx0Q29tcGFyYXRvcjtcbiAgICB9XG5cbiAgICB0aGlzLmhlYWQgPSBudWxsO1xuICAgIHRoaXMudGFpbCA9IG51bGw7XG4gICAgdGhpcy5jb21wYXJlID0gY29tcGFyYXRvcjtcbiAgfVxuICAvKipcbiAgICog5bCG5oyH5a6a5YWD57Sg5re75Yqg5Yiw6ZO+6KGo5aS06YOoXG4gICAqIEBwYXJhbSB2YWx1ZVxuICAgKi9cblxuXG4gIExpbmtlZExpc3QucHJvdG90eXBlLnByZXBlbmQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAvLyDlnKjlpLTpg6jmt7vliqDkuIDkuKroioLngrlcbiAgICB2YXIgbmV3Tm9kZSA9IG5ldyBMaW5rZWRMaXN0Tm9kZSh2YWx1ZSwgdGhpcy5oZWFkKTtcbiAgICB0aGlzLmhlYWQgPSBuZXdOb2RlO1xuXG4gICAgaWYgKCF0aGlzLnRhaWwpIHtcbiAgICAgIHRoaXMudGFpbCA9IG5ld05vZGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG4gIC8qKlxuICAgKiDlsIbmjIflrprlhYPntKDmt7vliqDliLDpk77ooajkuK1cbiAgICogQHBhcmFtIHZhbHVlXG4gICAqL1xuXG5cbiAgTGlua2VkTGlzdC5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgdmFyIG5ld05vZGUgPSBuZXcgTGlua2VkTGlzdE5vZGUodmFsdWUpOyAvLyDlpoLmnpzkuI3lrZjlnKjlpLToioLngrnvvIzliJnlsIbliJvlu7rnmoTmlrDoioLngrnkvZzkuLrlpLToioLngrlcblxuICAgIGlmICghdGhpcy5oZWFkKSB7XG4gICAgICB0aGlzLmhlYWQgPSBuZXdOb2RlO1xuICAgICAgdGhpcy50YWlsID0gbmV3Tm9kZTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0gLy8g5bCG5paw6IqC54K56ZmE5Yqg5Yiw6ZO+6KGo5pyr5bC+XG5cblxuICAgIHRoaXMudGFpbC5uZXh0ID0gbmV3Tm9kZTtcbiAgICB0aGlzLnRhaWwgPSBuZXdOb2RlO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuICAvKipcbiAgICog5Yig6Zmk5oyH5a6a5YWD57SgXG4gICAqIEBwYXJhbSB2YWx1ZSDopoHliKDpmaTnmoTlhYPntKBcbiAgICovXG5cblxuICBMaW5rZWRMaXN0LnByb3RvdHlwZS5kZWxldGUgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICBpZiAoIXRoaXMuaGVhZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdmFyIGRlbGV0ZU5vZGUgPSBudWxsOyAvLyDlpoLmnpzliKDpmaTnmoTmmK/lpLTpg6jlhYPntKDvvIzliJnlsIZuZXh05L2c5Li65aS05YWD57SgXG5cbiAgICB3aGlsZSAodGhpcy5oZWFkICYmIHRoaXMuY29tcGFyZSh0aGlzLmhlYWQudmFsdWUsIHZhbHVlKSkge1xuICAgICAgZGVsZXRlTm9kZSA9IHRoaXMuaGVhZDtcbiAgICAgIHRoaXMuaGVhZCA9IHRoaXMuaGVhZC5uZXh0O1xuICAgIH1cblxuICAgIHZhciBjdXJyZW50Tm9kZSA9IHRoaXMuaGVhZDtcblxuICAgIGlmIChjdXJyZW50Tm9kZSAhPT0gbnVsbCkge1xuICAgICAgLy8g5aaC5p6c5Yig6Zmk5LqG6IqC54K55Lul5ZCO77yM5bCGbmV4dOiKgueCueWJjeenu1xuICAgICAgd2hpbGUgKGN1cnJlbnROb2RlLm5leHQpIHtcbiAgICAgICAgaWYgKHRoaXMuY29tcGFyZShjdXJyZW50Tm9kZS5uZXh0LnZhbHVlLCB2YWx1ZSkpIHtcbiAgICAgICAgICBkZWxldGVOb2RlID0gY3VycmVudE5vZGUubmV4dDtcbiAgICAgICAgICBjdXJyZW50Tm9kZS5uZXh0ID0gY3VycmVudE5vZGUubmV4dC5uZXh0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUubmV4dDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gLy8g5qOA5p+l5bC+6YOo6IqC54K55piv5ZCm6KKr5Yig6ZmkXG5cblxuICAgIGlmICh0aGlzLmNvbXBhcmUodGhpcy50YWlsLnZhbHVlLCB2YWx1ZSkpIHtcbiAgICAgIHRoaXMudGFpbCA9IGN1cnJlbnROb2RlO1xuICAgIH1cblxuICAgIHJldHVybiBkZWxldGVOb2RlO1xuICB9O1xuICAvKipcbiAgICog5p+l5om+5oyH5a6a55qE5YWD57SgXG4gICAqIEBwYXJhbSBwYXJhbTBcbiAgICovXG5cblxuICBMaW5rZWRMaXN0LnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIF9iID0gX2EudmFsdWUsXG4gICAgICAgIHZhbHVlID0gX2IgPT09IHZvaWQgMCA/IHVuZGVmaW5lZCA6IF9iLFxuICAgICAgICBfYyA9IF9hLmNhbGxiYWNrLFxuICAgICAgICBjYWxsYmFjayA9IF9jID09PSB2b2lkIDAgPyB1bmRlZmluZWQgOiBfYztcblxuICAgIGlmICghdGhpcy5oZWFkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgY3VycmVudE5vZGUgPSB0aGlzLmhlYWQ7XG5cbiAgICB3aGlsZSAoY3VycmVudE5vZGUpIHtcbiAgICAgIC8vIOWmguaenOaMh+WumuS6hiBjYWxsYmFja++8jOWImeaMieaMh+WumueahCBjYWxsYmFjayDmn6Xmib5cbiAgICAgIGlmIChjYWxsYmFjayAmJiBjYWxsYmFjayhjdXJyZW50Tm9kZS52YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnROb2RlO1xuICAgICAgfSAvLyDlpoLmnpzmjIflrprkuoYgdmFsdWXvvIzliJnmjIkgdmFsdWUg5p+l5om+XG5cblxuICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdGhpcy5jb21wYXJlKGN1cnJlbnROb2RlLnZhbHVlLCB2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnROb2RlO1xuICAgICAgfVxuXG4gICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLm5leHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG4gIC8qKlxuICAgKiDliKDpmaTlsL7pg6joioLngrlcbiAgICovXG5cblxuICBMaW5rZWRMaXN0LnByb3RvdHlwZS5kZWxldGVUYWlsID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBkZWxldGVkVGFpbCA9IHRoaXMudGFpbDtcblxuICAgIGlmICh0aGlzLmhlYWQgPT09IHRoaXMudGFpbCkge1xuICAgICAgLy8g6ZO+6KGo5Lit5Y+q5pyJ5LiA5Liq5YWD57SgXG4gICAgICB0aGlzLmhlYWQgPSBudWxsO1xuICAgICAgdGhpcy50YWlsID0gbnVsbDtcbiAgICAgIHJldHVybiBkZWxldGVkVGFpbDtcbiAgICB9XG5cbiAgICB2YXIgY3VycmVudE5vZGUgPSB0aGlzLmhlYWQ7XG5cbiAgICB3aGlsZSAoY3VycmVudE5vZGUubmV4dCkge1xuICAgICAgaWYgKCFjdXJyZW50Tm9kZS5uZXh0Lm5leHQpIHtcbiAgICAgICAgY3VycmVudE5vZGUubmV4dCA9IG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLm5leHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy50YWlsID0gY3VycmVudE5vZGU7XG4gICAgcmV0dXJuIGRlbGV0ZWRUYWlsO1xuICB9O1xuICAvKipcbiAgICog5Yig6Zmk5aS06YOo6IqC54K5XG4gICAqL1xuXG5cbiAgTGlua2VkTGlzdC5wcm90b3R5cGUuZGVsZXRlSGVhZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXRoaXMuaGVhZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdmFyIGRlbGV0ZWRIZWFkID0gdGhpcy5oZWFkO1xuXG4gICAgaWYgKHRoaXMuaGVhZC5uZXh0KSB7XG4gICAgICB0aGlzLmhlYWQgPSB0aGlzLmhlYWQubmV4dDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oZWFkID0gbnVsbDtcbiAgICAgIHRoaXMudGFpbCA9IG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlbGV0ZWRIZWFkO1xuICB9O1xuICAvKipcbiAgICog5bCG5LiA57uE5YWD57Sg6L2s5oiQ6ZO+6KGo5Lit55qE6IqC54K5XG4gICAqIEBwYXJhbSB2YWx1ZXMg6ZO+6KGo5Lit55qE5YWD57SgXG4gICAqL1xuXG5cbiAgTGlua2VkTGlzdC5wcm90b3R5cGUuZnJvbUFycmF5ID0gZnVuY3Rpb24gKHZhbHVlcykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YWx1ZXMuZm9yRWFjaChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgIHJldHVybiBfdGhpcy5hcHBlbmQodmFsdWUpO1xuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuICAvKipcbiAgICog5bCG6ZO+6KGo5Lit55qE6IqC54K56L2s5oiQ5pWw57uE5YWD57SgXG4gICAqL1xuXG5cbiAgTGlua2VkTGlzdC5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbm9kZXMgPSBbXTtcbiAgICB2YXIgY3VycmVudE5vZGUgPSB0aGlzLmhlYWQ7XG5cbiAgICB3aGlsZSAoY3VycmVudE5vZGUpIHtcbiAgICAgIG5vZGVzLnB1c2goY3VycmVudE5vZGUpO1xuICAgICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5uZXh0O1xuICAgIH1cblxuICAgIHJldHVybiBub2RlcztcbiAgfTtcbiAgLyoqXG4gICAqIOWPjei9rOmTvuihqOS4reeahOWFg+e0oOiKgueCuVxuICAgKi9cblxuXG4gIExpbmtlZExpc3QucHJvdG90eXBlLnJldmVyc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGN1cnJlbnROb2RlID0gdGhpcy5oZWFkO1xuICAgIHZhciBwcmV2Tm9kZSA9IG51bGw7XG4gICAgdmFyIG5leHROb2RlID0gbnVsbDtcblxuICAgIHdoaWxlIChjdXJyZW50Tm9kZSkge1xuICAgICAgLy8g5a2Y5YKo5LiL5LiA5Liq5YWD57Sg6IqC54K5XG4gICAgICBuZXh0Tm9kZSA9IGN1cnJlbnROb2RlLm5leHQ7IC8vIOabtOaUueW9k+WJjeiKgueCueeahOS4i+S4gOS4quiKgueCue+8jOS7peS+v+WwhuWug+i/nuaOpeWIsOS4iuS4gOS4quiKgueCueS4ilxuXG4gICAgICBjdXJyZW50Tm9kZS5uZXh0ID0gcHJldk5vZGU7IC8vIOWwhiBwcmV2Tm9kZSDlkowgY3VycmVudE5vZGUg5ZCR5YmN56e75Yqo5LiA5q2lXG5cbiAgICAgIHByZXZOb2RlID0gY3VycmVudE5vZGU7XG4gICAgICBjdXJyZW50Tm9kZSA9IG5leHROb2RlO1xuICAgIH1cblxuICAgIHRoaXMudGFpbCA9IHRoaXMuaGVhZDtcbiAgICB0aGlzLmhlYWQgPSBwcmV2Tm9kZTtcbiAgfTtcblxuICBMaW5rZWRMaXN0LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICAgIGlmIChjYWxsYmFjayA9PT0gdm9pZCAwKSB7XG4gICAgICBjYWxsYmFjayA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50b0FycmF5KCkubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS50b1N0cmluZyhjYWxsYmFjayk7XG4gICAgfSkudG9TdHJpbmcoKTtcbiAgfTtcblxuICByZXR1cm4gTGlua2VkTGlzdDtcbn0oKTtcblxudmFyIF9kZWZhdWx0ID0gTGlua2VkTGlzdDtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/structs/linked-list.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/structs/queue.js":
/*!***********************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/structs/queue.js ***!
\***********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _linkedList = _interopRequireDefault(__webpack_require__(/*! ./linked-list */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/structs/linked-list.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Queue =\n/** @class */\nfunction () {\n function Queue() {\n this.linkedList = new _linkedList.default();\n }\n /**\n * 队列是否为空\n */\n\n\n Queue.prototype.isEmpty = function () {\n return !this.linkedList.head;\n };\n /**\n * 读取队列头部的元素, 不删除队列中的元素\n */\n\n\n Queue.prototype.peek = function () {\n if (!this.linkedList.head) {\n return null;\n }\n\n return this.linkedList.head.value;\n };\n /**\n * 在队列的尾部新增一个元素\n * @param value\n */\n\n\n Queue.prototype.enqueue = function (value) {\n this.linkedList.append(value);\n };\n /**\n * 删除队列中的头部元素,如果队列为空,则返回 null\n */\n\n\n Queue.prototype.dequeue = function () {\n var removeHead = this.linkedList.deleteHead();\n return removeHead ? removeHead.value : null;\n };\n\n Queue.prototype.toString = function (callback) {\n return this.linkedList.toString(callback);\n };\n\n return Queue;\n}();\n\nvar _default = Queue;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9zdHJ1Y3RzL3F1ZXVlLmpzPzc0NWIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDs7QUFFQSx5Q0FBeUMsbUJBQU8sQ0FBQyx3R0FBZTs7QUFFaEUsc0NBQXNDLHVDQUF1QyxnQkFBZ0I7O0FBRTdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9saWIvc3RydWN0cy9xdWV1ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX2xpbmtlZExpc3QgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpbmtlZC1saXN0XCIpKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIFF1ZXVlID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gUXVldWUoKSB7XG4gICAgdGhpcy5saW5rZWRMaXN0ID0gbmV3IF9saW5rZWRMaXN0LmRlZmF1bHQoKTtcbiAgfVxuICAvKipcbiAgICog6Zif5YiX5piv5ZCm5Li656m6XG4gICAqL1xuXG5cbiAgUXVldWUucHJvdG90eXBlLmlzRW1wdHkgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICF0aGlzLmxpbmtlZExpc3QuaGVhZDtcbiAgfTtcbiAgLyoqXG4gICAqIOivu+WPlumYn+WIl+WktOmDqOeahOWFg+e0oO+8jCDkuI3liKDpmaTpmJ/liJfkuK3nmoTlhYPntKBcbiAgICovXG5cblxuICBRdWV1ZS5wcm90b3R5cGUucGVlayA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXRoaXMubGlua2VkTGlzdC5oZWFkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5saW5rZWRMaXN0LmhlYWQudmFsdWU7XG4gIH07XG4gIC8qKlxuICAgKiDlnKjpmJ/liJfnmoTlsL7pg6jmlrDlop7kuIDkuKrlhYPntKBcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqL1xuXG5cbiAgUXVldWUucHJvdG90eXBlLmVucXVldWUgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICB0aGlzLmxpbmtlZExpc3QuYXBwZW5kKHZhbHVlKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWIoOmZpOmYn+WIl+S4reeahOWktOmDqOWFg+e0oO+8jOWmguaenOmYn+WIl+S4uuepuu+8jOWImei/lOWbniBudWxsXG4gICAqL1xuXG5cbiAgUXVldWUucHJvdG90eXBlLmRlcXVldWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJlbW92ZUhlYWQgPSB0aGlzLmxpbmtlZExpc3QuZGVsZXRlSGVhZCgpO1xuICAgIHJldHVybiByZW1vdmVIZWFkID8gcmVtb3ZlSGVhZC52YWx1ZSA6IG51bGw7XG4gIH07XG5cbiAgUXVldWUucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIHRoaXMubGlua2VkTGlzdC50b1N0cmluZyhjYWxsYmFjayk7XG4gIH07XG5cbiAgcmV0dXJuIFF1ZXVlO1xufSgpO1xuXG52YXIgX2RlZmF1bHQgPSBRdWV1ZTtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/structs/queue.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/structs/union-find.js":
/*!****************************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/structs/union-find.js ***!
\****************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n/**\n * 并查集 Disjoint set to support quick union\n */\nvar UnionFind =\n/** @class */\nfunction () {\n function UnionFind(items) {\n this.count = items.length;\n this.parent = {};\n\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var i = items_1[_i];\n this.parent[i] = i;\n }\n } // find the root of the item\n\n\n UnionFind.prototype.find = function (item) {\n while (this.parent[item] !== item) {\n item = this.parent[item];\n }\n\n return item;\n };\n\n UnionFind.prototype.union = function (a, b) {\n var rootA = this.find(a);\n var rootB = this.find(b);\n if (rootA === rootB) return; // make the element with smaller root the parent\n\n if (rootA < rootB) {\n if (this.parent[b] !== b) this.union(this.parent[b], a);\n this.parent[b] = this.parent[a];\n } else {\n if (this.parent[a] !== a) this.union(this.parent[a], b);\n this.parent[a] = this.parent[b];\n }\n }; // whether a and b are connected, i.e. a and b have the same root\n\n\n UnionFind.prototype.connected = function (a, b) {\n return this.find(a) === this.find(b);\n };\n\n return UnionFind;\n}();\n\nvar _default = UnionFind;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi9zdHJ1Y3RzL3VuaW9uLWZpbmQuanM/ZGM0MiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxQ0FBcUMscUJBQXFCO0FBQzFEO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDOztBQUVoQztBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9saWIvc3RydWN0cy91bmlvbi1maW5kLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbi8qKlxuICog5bm25p+l6ZuGIERpc2pvaW50IHNldCB0byBzdXBwb3J0IHF1aWNrIHVuaW9uXG4gKi9cbnZhciBVbmlvbkZpbmQgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBVbmlvbkZpbmQoaXRlbXMpIHtcbiAgICB0aGlzLmNvdW50ID0gaXRlbXMubGVuZ3RoO1xuICAgIHRoaXMucGFyZW50ID0ge307XG5cbiAgICBmb3IgKHZhciBfaSA9IDAsIGl0ZW1zXzEgPSBpdGVtczsgX2kgPCBpdGVtc18xLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIGkgPSBpdGVtc18xW19pXTtcbiAgICAgIHRoaXMucGFyZW50W2ldID0gaTtcbiAgICB9XG4gIH0gLy8gZmluZCB0aGUgcm9vdCBvZiB0aGUgaXRlbVxuXG5cbiAgVW5pb25GaW5kLnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICB3aGlsZSAodGhpcy5wYXJlbnRbaXRlbV0gIT09IGl0ZW0pIHtcbiAgICAgIGl0ZW0gPSB0aGlzLnBhcmVudFtpdGVtXTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXRlbTtcbiAgfTtcblxuICBVbmlvbkZpbmQucHJvdG90eXBlLnVuaW9uID0gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICB2YXIgcm9vdEEgPSB0aGlzLmZpbmQoYSk7XG4gICAgdmFyIHJvb3RCID0gdGhpcy5maW5kKGIpO1xuICAgIGlmIChyb290QSA9PT0gcm9vdEIpIHJldHVybjsgLy8gbWFrZSB0aGUgZWxlbWVudCB3aXRoIHNtYWxsZXIgcm9vdCB0aGUgcGFyZW50XG5cbiAgICBpZiAocm9vdEEgPCByb290Qikge1xuICAgICAgaWYgKHRoaXMucGFyZW50W2JdICE9PSBiKSB0aGlzLnVuaW9uKHRoaXMucGFyZW50W2JdLCBhKTtcbiAgICAgIHRoaXMucGFyZW50W2JdID0gdGhpcy5wYXJlbnRbYV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLnBhcmVudFthXSAhPT0gYSkgdGhpcy51bmlvbih0aGlzLnBhcmVudFthXSwgYik7XG4gICAgICB0aGlzLnBhcmVudFthXSA9IHRoaXMucGFyZW50W2JdO1xuICAgIH1cbiAgfTsgLy8gd2hldGhlciBhIGFuZCBiIGFyZSBjb25uZWN0ZWQsIGkuZS4gYSBhbmQgYiBoYXZlIHRoZSBzYW1lIHJvb3RcblxuXG4gIFVuaW9uRmluZC5wcm90b3R5cGUuY29ubmVjdGVkID0gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gdGhpcy5maW5kKGEpID09PSB0aGlzLmZpbmQoYik7XG4gIH07XG5cbiAgcmV0dXJuIFVuaW9uRmluZDtcbn0oKTtcblxudmFyIF9kZWZhdWx0ID0gVW5pb25GaW5kO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/structs/union-find.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/util.js":
/*!**************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/util.js ***!
\**************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.uniqueId = exports.getOutEdgesNodeId = exports.getNeighbors = exports.getEdgesByNodeId = void 0;\n\n/**\n * 获取指定节点的所有邻居\n * @param nodeId 节点 ID\n * @param edges 图中的所有边数据\n * @param type 邻居类型\n */\nvar getNeighbors = function getNeighbors(nodeId, edges, type) {\n if (edges === void 0) {\n edges = [];\n }\n\n var currentEdges = edges.filter(function (edge) {\n return edge.source === nodeId || edge.target === nodeId;\n });\n\n if (type === 'target') {\n // 当前节点为 source,它所指向的目标节点\n var neighhborsConverter_1 = function neighhborsConverter_1(edge) {\n return edge.source === nodeId;\n };\n\n return currentEdges.filter(neighhborsConverter_1).map(function (edge) {\n return edge.target;\n });\n }\n\n if (type === 'source') {\n // 当前节点为 target,它所指向的源节点\n var neighhborsConverter_2 = function neighhborsConverter_2(edge) {\n return edge.target === nodeId;\n };\n\n return currentEdges.filter(neighhborsConverter_2).map(function (edge) {\n return edge.source;\n });\n } // 若未指定 type ,则返回所有邻居\n\n\n var neighhborsConverter = function neighhborsConverter(edge) {\n return edge.source === nodeId ? edge.target : edge.source;\n };\n\n return currentEdges.map(neighhborsConverter);\n};\n/**\n * 获取指定节点的出边\n * @param nodeId 节点 ID\n * @param edges 图中的所有边数据\n */\n\n\nexports.getNeighbors = getNeighbors;\n\nvar getOutEdgesNodeId = function getOutEdgesNodeId(nodeId, edges) {\n return edges.filter(function (edge) {\n return edge.source === nodeId;\n });\n};\n/**\n * 获取指定节点的边,包括出边和入边\n * @param nodeId 节点 ID\n * @param edges 图中的所有边数据\n */\n\n\nexports.getOutEdgesNodeId = getOutEdgesNodeId;\n\nvar getEdgesByNodeId = function getEdgesByNodeId(nodeId, edges) {\n return edges.filter(function (edge) {\n return edge.source === nodeId || edge.target === nodeId;\n });\n};\n/**\n * 生成唯一的 ID,规则是序号 + 时间戳\n * @param index 序号\n */\n\n\nexports.getEdgesByNodeId = getEdgesByNodeId;\n\nvar uniqueId = function uniqueId(index) {\n if (index === void 0) {\n index = 0;\n }\n\n var random1 = \"\".concat(Math.random()).split('.')[1].substr(0, 5);\n var random2 = \"\".concat(Math.random()).split('.')[1].substr(0, 5);\n return \"\".concat(index, \"-\").concat(random1).concat(random2);\n};\n\nexports.uniqueId = uniqueId;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi91dGlsLmpzPzgxZTgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9saWIvdXRpbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy51bmlxdWVJZCA9IGV4cG9ydHMuZ2V0T3V0RWRnZXNOb2RlSWQgPSBleHBvcnRzLmdldE5laWdoYm9ycyA9IGV4cG9ydHMuZ2V0RWRnZXNCeU5vZGVJZCA9IHZvaWQgMDtcblxuLyoqXG4gKiDojrflj5bmjIflrproioLngrnnmoTmiYDmnInpgrvlsYVcbiAqIEBwYXJhbSBub2RlSWQg6IqC54K5IElEXG4gKiBAcGFyYW0gZWRnZXMg5Zu+5Lit55qE5omA5pyJ6L655pWw5o2uXG4gKiBAcGFyYW0gdHlwZSDpgrvlsYXnsbvlnotcbiAqL1xudmFyIGdldE5laWdoYm9ycyA9IGZ1bmN0aW9uIGdldE5laWdoYm9ycyhub2RlSWQsIGVkZ2VzLCB0eXBlKSB7XG4gIGlmIChlZGdlcyA9PT0gdm9pZCAwKSB7XG4gICAgZWRnZXMgPSBbXTtcbiAgfVxuXG4gIHZhciBjdXJyZW50RWRnZXMgPSBlZGdlcy5maWx0ZXIoZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICByZXR1cm4gZWRnZS5zb3VyY2UgPT09IG5vZGVJZCB8fCBlZGdlLnRhcmdldCA9PT0gbm9kZUlkO1xuICB9KTtcblxuICBpZiAodHlwZSA9PT0gJ3RhcmdldCcpIHtcbiAgICAvLyDlvZPliY3oioLngrnkuLogc291cmNl77yM5a6D5omA5oyH5ZCR55qE55uu5qCH6IqC54K5XG4gICAgdmFyIG5laWdoaGJvcnNDb252ZXJ0ZXJfMSA9IGZ1bmN0aW9uIG5laWdoaGJvcnNDb252ZXJ0ZXJfMShlZGdlKSB7XG4gICAgICByZXR1cm4gZWRnZS5zb3VyY2UgPT09IG5vZGVJZDtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGN1cnJlbnRFZGdlcy5maWx0ZXIobmVpZ2hoYm9yc0NvbnZlcnRlcl8xKS5tYXAoZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIHJldHVybiBlZGdlLnRhcmdldDtcbiAgICB9KTtcbiAgfVxuXG4gIGlmICh0eXBlID09PSAnc291cmNlJykge1xuICAgIC8vIOW9k+WJjeiKgueCueS4uiB0YXJnZXTvvIzlroPmiYDmjIflkJHnmoTmupDoioLngrlcbiAgICB2YXIgbmVpZ2hoYm9yc0NvbnZlcnRlcl8yID0gZnVuY3Rpb24gbmVpZ2hoYm9yc0NvbnZlcnRlcl8yKGVkZ2UpIHtcbiAgICAgIHJldHVybiBlZGdlLnRhcmdldCA9PT0gbm9kZUlkO1xuICAgIH07XG5cbiAgICByZXR1cm4gY3VycmVudEVkZ2VzLmZpbHRlcihuZWlnaGhib3JzQ29udmVydGVyXzIpLm1hcChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgcmV0dXJuIGVkZ2Uuc291cmNlO1xuICAgIH0pO1xuICB9IC8vIOiLpeacquaMh+WumiB0eXBlIO+8jOWImei/lOWbnuaJgOaciemCu+WxhVxuXG5cbiAgdmFyIG5laWdoaGJvcnNDb252ZXJ0ZXIgPSBmdW5jdGlvbiBuZWlnaGhib3JzQ29udmVydGVyKGVkZ2UpIHtcbiAgICByZXR1cm4gZWRnZS5zb3VyY2UgPT09IG5vZGVJZCA/IGVkZ2UudGFyZ2V0IDogZWRnZS5zb3VyY2U7XG4gIH07XG5cbiAgcmV0dXJuIGN1cnJlbnRFZGdlcy5tYXAobmVpZ2hoYm9yc0NvbnZlcnRlcik7XG59O1xuLyoqXG4gKiDojrflj5bmjIflrproioLngrnnmoTlh7rovrlcbiAqIEBwYXJhbSBub2RlSWQg6IqC54K5IElEXG4gKiBAcGFyYW0gZWRnZXMg5Zu+5Lit55qE5omA5pyJ6L655pWw5o2uXG4gKi9cblxuXG5leHBvcnRzLmdldE5laWdoYm9ycyA9IGdldE5laWdoYm9ycztcblxudmFyIGdldE91dEVkZ2VzTm9kZUlkID0gZnVuY3Rpb24gZ2V0T3V0RWRnZXNOb2RlSWQobm9kZUlkLCBlZGdlcykge1xuICByZXR1cm4gZWRnZXMuZmlsdGVyKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgcmV0dXJuIGVkZ2Uuc291cmNlID09PSBub2RlSWQ7XG4gIH0pO1xufTtcbi8qKlxuICog6I635Y+W5oyH5a6a6IqC54K555qE6L6577yM5YyF5ous5Ye66L655ZKM5YWl6L65XG4gKiBAcGFyYW0gbm9kZUlkIOiKgueCuSBJRFxuICogQHBhcmFtIGVkZ2VzIOWbvuS4reeahOaJgOaciei+ueaVsOaNrlxuICovXG5cblxuZXhwb3J0cy5nZXRPdXRFZGdlc05vZGVJZCA9IGdldE91dEVkZ2VzTm9kZUlkO1xuXG52YXIgZ2V0RWRnZXNCeU5vZGVJZCA9IGZ1bmN0aW9uIGdldEVkZ2VzQnlOb2RlSWQobm9kZUlkLCBlZGdlcykge1xuICByZXR1cm4gZWRnZXMuZmlsdGVyKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgcmV0dXJuIGVkZ2Uuc291cmNlID09PSBub2RlSWQgfHwgZWRnZS50YXJnZXQgPT09IG5vZGVJZDtcbiAgfSk7XG59O1xuLyoqXG4gKiDnlJ/miJDllK/kuIDnmoQgSUTvvIzop4TliJnmmK/luo/lj7cgKyDml7bpl7TmiLNcbiAqIEBwYXJhbSBpbmRleCDluo/lj7dcbiAqL1xuXG5cbmV4cG9ydHMuZ2V0RWRnZXNCeU5vZGVJZCA9IGdldEVkZ2VzQnlOb2RlSWQ7XG5cbnZhciB1bmlxdWVJZCA9IGZ1bmN0aW9uIHVuaXF1ZUlkKGluZGV4KSB7XG4gIGlmIChpbmRleCA9PT0gdm9pZCAwKSB7XG4gICAgaW5kZXggPSAwO1xuICB9XG5cbiAgdmFyIHJhbmRvbTEgPSBcIlwiLmNvbmNhdChNYXRoLnJhbmRvbSgpKS5zcGxpdCgnLicpWzFdLnN1YnN0cigwLCA1KTtcbiAgdmFyIHJhbmRvbTIgPSBcIlwiLmNvbmNhdChNYXRoLnJhbmRvbSgpKS5zcGxpdCgnLicpWzFdLnN1YnN0cigwLCA1KTtcbiAgcmV0dXJuIFwiXCIuY29uY2F0KGluZGV4LCBcIi1cIikuY29uY2F0KHJhbmRvbTEpLmNvbmNhdChyYW5kb20yKTtcbn07XG5cbmV4cG9ydHMudW5pcXVlSWQgPSB1bmlxdWVJZDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/util.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/utils/vector.js":
/*!**********************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/utils/vector.js ***!
\**********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _util = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\n/**\n * 向量运算\n */\nvar Vector =\n/** @class */\nfunction () {\n function Vector(arr) {\n this.arr = arr;\n }\n\n Vector.prototype.add = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length)) {\n return new Vector(otherArr);\n }\n\n if (!(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return new Vector(this.arr);\n }\n\n if (this.arr.length === otherArr.length) {\n var res = [];\n\n for (var key in this.arr) {\n res[key] = this.arr[key] + otherArr[key];\n }\n\n return new Vector(res);\n }\n };\n\n Vector.prototype.subtract = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length)) {\n return new Vector(otherArr);\n }\n\n if (!(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return new Vector(this.arr);\n }\n\n if (this.arr.length === otherArr.length) {\n var res = [];\n\n for (var key in this.arr) {\n res[key] = this.arr[key] - otherArr[key];\n }\n\n return new Vector(res);\n }\n };\n\n Vector.prototype.avg = function (length) {\n var res = [];\n\n for (var key in this.arr) {\n res[key] = this.arr[key] / length;\n }\n\n return new Vector(res);\n };\n\n Vector.prototype.negate = function () {\n var res = [];\n\n for (var key in this.arr) {\n res[key] = -this.arr[key];\n }\n\n return new Vector(res);\n }; // 平方欧式距离\n\n\n Vector.prototype.squareEuclideanDistance = function (otherVector) {\n var _a;\n\n var otherArr = otherVector.arr;\n\n if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length) || !(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) {\n return 0;\n }\n\n if (this.arr.length === otherArr.length) {\n var res = 0;\n\n for (var key in this.arr) {\n res += Math.pow(this.arr[key] - otherVector.arr[key], 2);\n }\n\n return res;\n }\n }; // 归一化处理\n\n\n Vector.prototype.normalize = function () {\n var res = [];\n var cloneArr = (0, _util.clone)(this.arr);\n cloneArr.sort(function (a, b) {\n return a - b;\n });\n var max = cloneArr[cloneArr.length - 1];\n var min = cloneArr[0];\n\n for (var key in this.arr) {\n res[key] = (this.arr[key] - min) / (max - min);\n }\n\n return new Vector(res);\n };\n\n return Vector;\n}();\n\nvar _default = Vector;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi91dGlscy92ZWN0b3IuanM/ODJmMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBLFlBQVksbUJBQU8sQ0FBQyw2RUFBWTs7QUFFaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfYWxnb3JpdGhtQDAuMS4xNEBAYW50di9hbGdvcml0aG0vbGliL3V0aWxzL3ZlY3Rvci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX3V0aWwgPSByZXF1aXJlKFwiQGFudHYvdXRpbFwiKTtcblxuLyoqXG4gKiDlkJHph4/ov5DnrpdcbiAqL1xudmFyIFZlY3RvciA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFZlY3RvcihhcnIpIHtcbiAgICB0aGlzLmFyciA9IGFycjtcbiAgfVxuXG4gIFZlY3Rvci5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKG90aGVyVmVjdG9yKSB7XG4gICAgdmFyIF9hO1xuXG4gICAgdmFyIG90aGVyQXJyID0gb3RoZXJWZWN0b3IuYXJyO1xuXG4gICAgaWYgKCEoKF9hID0gdGhpcy5hcnIpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGgpKSB7XG4gICAgICByZXR1cm4gbmV3IFZlY3RvcihvdGhlckFycik7XG4gICAgfVxuXG4gICAgaWYgKCEob3RoZXJBcnIgPT09IG51bGwgfHwgb3RoZXJBcnIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG90aGVyQXJyLmxlbmd0aCkpIHtcbiAgICAgIHJldHVybiBuZXcgVmVjdG9yKHRoaXMuYXJyKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hcnIubGVuZ3RoID09PSBvdGhlckFyci5sZW5ndGgpIHtcbiAgICAgIHZhciByZXMgPSBbXTtcblxuICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMuYXJyKSB7XG4gICAgICAgIHJlc1trZXldID0gdGhpcy5hcnJba2V5XSArIG90aGVyQXJyW2tleV07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXcgVmVjdG9yKHJlcyk7XG4gICAgfVxuICB9O1xuXG4gIFZlY3Rvci5wcm90b3R5cGUuc3VidHJhY3QgPSBmdW5jdGlvbiAob3RoZXJWZWN0b3IpIHtcbiAgICB2YXIgX2E7XG5cbiAgICB2YXIgb3RoZXJBcnIgPSBvdGhlclZlY3Rvci5hcnI7XG5cbiAgICBpZiAoISgoX2EgPSB0aGlzLmFycikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aCkpIHtcbiAgICAgIHJldHVybiBuZXcgVmVjdG9yKG90aGVyQXJyKTtcbiAgICB9XG5cbiAgICBpZiAoIShvdGhlckFyciA9PT0gbnVsbCB8fCBvdGhlckFyciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3RoZXJBcnIubGVuZ3RoKSkge1xuICAgICAgcmV0dXJuIG5ldyBWZWN0b3IodGhpcy5hcnIpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFyci5sZW5ndGggPT09IG90aGVyQXJyLmxlbmd0aCkge1xuICAgICAgdmFyIHJlcyA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5hcnIpIHtcbiAgICAgICAgcmVzW2tleV0gPSB0aGlzLmFycltrZXldIC0gb3RoZXJBcnJba2V5XTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ldyBWZWN0b3IocmVzKTtcbiAgICB9XG4gIH07XG5cbiAgVmVjdG9yLnByb3RvdHlwZS5hdmcgPSBmdW5jdGlvbiAobGVuZ3RoKSB7XG4gICAgdmFyIHJlcyA9IFtdO1xuXG4gICAgZm9yICh2YXIga2V5IGluIHRoaXMuYXJyKSB7XG4gICAgICByZXNba2V5XSA9IHRoaXMuYXJyW2tleV0gLyBsZW5ndGg7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBWZWN0b3IocmVzKTtcbiAgfTtcblxuICBWZWN0b3IucHJvdG90eXBlLm5lZ2F0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcmVzID0gW107XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5hcnIpIHtcbiAgICAgIHJlc1trZXldID0gLXRoaXMuYXJyW2tleV07XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBWZWN0b3IocmVzKTtcbiAgfTsgLy8g5bmz5pa55qyn5byP6Led56a7XG5cblxuICBWZWN0b3IucHJvdG90eXBlLnNxdWFyZUV1Y2xpZGVhbkRpc3RhbmNlID0gZnVuY3Rpb24gKG90aGVyVmVjdG9yKSB7XG4gICAgdmFyIF9hO1xuXG4gICAgdmFyIG90aGVyQXJyID0gb3RoZXJWZWN0b3IuYXJyO1xuXG4gICAgaWYgKCEoKF9hID0gdGhpcy5hcnIpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGgpIHx8ICEob3RoZXJBcnIgPT09IG51bGwgfHwgb3RoZXJBcnIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG90aGVyQXJyLmxlbmd0aCkpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFyci5sZW5ndGggPT09IG90aGVyQXJyLmxlbmd0aCkge1xuICAgICAgdmFyIHJlcyA9IDA7XG5cbiAgICAgIGZvciAodmFyIGtleSBpbiB0aGlzLmFycikge1xuICAgICAgICByZXMgKz0gTWF0aC5wb3codGhpcy5hcnJba2V5XSAtIG90aGVyVmVjdG9yLmFycltrZXldLCAyKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gIH07IC8vIOW9kuS4gOWMluWkhOeQhlxuXG5cbiAgVmVjdG9yLnByb3RvdHlwZS5ub3JtYWxpemUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJlcyA9IFtdO1xuICAgIHZhciBjbG9uZUFyciA9ICgwLCBfdXRpbC5jbG9uZSkodGhpcy5hcnIpO1xuICAgIGNsb25lQXJyLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBhIC0gYjtcbiAgICB9KTtcbiAgICB2YXIgbWF4ID0gY2xvbmVBcnJbY2xvbmVBcnIubGVuZ3RoIC0gMV07XG4gICAgdmFyIG1pbiA9IGNsb25lQXJyWzBdO1xuXG4gICAgZm9yICh2YXIga2V5IGluIHRoaXMuYXJyKSB7XG4gICAgICByZXNba2V5XSA9ICh0aGlzLmFycltrZXldIC0gbWluKSAvIChtYXggLSBtaW4pO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgVmVjdG9yKHJlcyk7XG4gIH07XG5cbiAgcmV0dXJuIFZlY3Rvcjtcbn0oKTtcblxudmFyIF9kZWZhdWx0ID0gVmVjdG9yO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/utils/vector.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/algorithm.js":
/*!***************************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/algorithm.js ***!
\***************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"GADDI\", {\n enumerable: true,\n get: function get() {\n return _gaddi.default;\n }\n});\nObject.defineProperty(exports, \"breadthFirstSearch\", {\n enumerable: true,\n get: function get() {\n return _bfs.default;\n }\n});\nObject.defineProperty(exports, \"connectedComponent\", {\n enumerable: true,\n get: function get() {\n return _connectedComponent.default;\n }\n});\nObject.defineProperty(exports, \"depthFirstSearch\", {\n enumerable: true,\n get: function get() {\n return _dfs.default;\n }\n});\nObject.defineProperty(exports, \"detectCycle\", {\n enumerable: true,\n get: function get() {\n return _detectCycle.default;\n }\n});\nObject.defineProperty(exports, \"dijkstra\", {\n enumerable: true,\n get: function get() {\n return _dijkstra.default;\n }\n});\nObject.defineProperty(exports, \"findAllPath\", {\n enumerable: true,\n get: function get() {\n return _findPath.findAllPath;\n }\n});\nObject.defineProperty(exports, \"findShortestPath\", {\n enumerable: true,\n get: function get() {\n return _findPath.findShortestPath;\n }\n});\nObject.defineProperty(exports, \"floydWarshall\", {\n enumerable: true,\n get: function get() {\n return _floydWarshall.default;\n }\n});\nObject.defineProperty(exports, \"getAdjMatrix\", {\n enumerable: true,\n get: function get() {\n return _adjacentMatrix.default;\n }\n});\nObject.defineProperty(exports, \"getDegree\", {\n enumerable: true,\n get: function get() {\n return _degree.default;\n }\n});\nObject.defineProperty(exports, \"getInDegree\", {\n enumerable: true,\n get: function get() {\n return _degree.getInDegree;\n }\n});\nObject.defineProperty(exports, \"getNeighbors\", {\n enumerable: true,\n get: function get() {\n return _util.getNeighbors;\n }\n});\nObject.defineProperty(exports, \"getOutDegree\", {\n enumerable: true,\n get: function get() {\n return _degree.getOutDegree;\n }\n});\nObject.defineProperty(exports, \"labelPropagation\", {\n enumerable: true,\n get: function get() {\n return _labelPropagation.default;\n }\n});\nObject.defineProperty(exports, \"louvain\", {\n enumerable: true,\n get: function get() {\n return _louvain.default;\n }\n});\nObject.defineProperty(exports, \"minimumSpanningTree\", {\n enumerable: true,\n get: function get() {\n return _mts.default;\n }\n});\nObject.defineProperty(exports, \"pageRank\", {\n enumerable: true,\n get: function get() {\n return _pageRank.default;\n }\n});\n\nvar _adjacentMatrix = _interopRequireDefault(__webpack_require__(/*! ../adjacent-matrix */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/adjacent-matrix.js\"));\n\nvar _bfs = _interopRequireDefault(__webpack_require__(/*! ../bfs */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/bfs.js\"));\n\nvar _connectedComponent = _interopRequireDefault(__webpack_require__(/*! ../connected-component */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/connected-component.js\"));\n\nvar _degree = _interopRequireWildcard(__webpack_require__(/*! ../degree */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/degree.js\"));\n\nvar _detectCycle = _interopRequireDefault(__webpack_require__(/*! ../detect-cycle */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/detect-cycle.js\"));\n\nvar _dfs = _interopRequireDefault(__webpack_require__(/*! ../dfs */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/dfs.js\"));\n\nvar _dijkstra = _interopRequireDefault(__webpack_require__(/*! ../dijkstra */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/dijkstra.js\"));\n\nvar _findPath = __webpack_require__(/*! ../find-path */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/find-path.js\");\n\nvar _floydWarshall = _interopRequireDefault(__webpack_require__(/*! ../floydWarshall */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/floydWarshall.js\"));\n\nvar _labelPropagation = _interopRequireDefault(__webpack_require__(/*! ../label-propagation */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/label-propagation.js\"));\n\nvar _louvain = _interopRequireDefault(__webpack_require__(/*! ../louvain */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/louvain.js\"));\n\nvar _mts = _interopRequireDefault(__webpack_require__(/*! ../mts */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/mts.js\"));\n\nvar _pageRank = _interopRequireDefault(__webpack_require__(/*! ../pageRank */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/pageRank.js\"));\n\nvar _gaddi = _interopRequireDefault(__webpack_require__(/*! ../gaddi */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/gaddi.js\"));\n\nvar _util = __webpack_require__(/*! ../util */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/util.js\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi93b3JrZXJzL2FsZ29yaXRobS5qcz8yM2JmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViLHVCQUF1QiwyQkFBMkIsMkVBQTJFLGtDQUFrQyxtQkFBbUIsR0FBRyxFQUFFLE9BQU8sa0NBQWtDLDhIQUE4SCxHQUFHLEVBQUUscUJBQXFCOztBQUV4WDtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCw2Q0FBNkMsbUJBQU8sQ0FBQyx5R0FBb0I7O0FBRXpFLGtDQUFrQyxtQkFBTyxDQUFDLGlGQUFROztBQUVsRCxpREFBaUQsbUJBQU8sQ0FBQyxpSEFBd0I7O0FBRWpGLHNDQUFzQyxtQkFBTyxDQUFDLHVGQUFXOztBQUV6RCwwQ0FBMEMsbUJBQU8sQ0FBQyxtR0FBaUI7O0FBRW5FLGtDQUFrQyxtQkFBTyxDQUFDLGlGQUFROztBQUVsRCx1Q0FBdUMsbUJBQU8sQ0FBQywyRkFBYTs7QUFFNUQsZ0JBQWdCLG1CQUFPLENBQUMsNkZBQWM7O0FBRXRDLDRDQUE0QyxtQkFBTyxDQUFDLHFHQUFrQjs7QUFFdEUsK0NBQStDLG1CQUFPLENBQUMsNkdBQXNCOztBQUU3RSxzQ0FBc0MsbUJBQU8sQ0FBQyx5RkFBWTs7QUFFMUQsa0NBQWtDLG1CQUFPLENBQUMsaUZBQVE7O0FBRWxELHVDQUF1QyxtQkFBTyxDQUFDLDJGQUFhOztBQUU1RCxvQ0FBb0MsbUJBQU8sQ0FBQyxxRkFBVTs7QUFFdEQsWUFBWSxtQkFBTyxDQUFDLG1GQUFTOztBQUU3QixnREFBZ0QsZ0RBQWdELHVDQUF1QyxzQ0FBc0Msb0ZBQW9GLDJEQUEyRCxFQUFFLGVBQWU7O0FBRTdVLG9EQUFvRCw2Q0FBNkMsWUFBWSxFQUFFLDhFQUE4RSxTQUFTLGdCQUFnQixFQUFFLG1EQUFtRCwrQkFBK0IsdUJBQXVCLEVBQUUsaUJBQWlCLHNGQUFzRix1QkFBdUIsMkVBQTJFLHFGQUFxRixzQ0FBc0MsMENBQTBDLEVBQUUsT0FBTyx3QkFBd0IsRUFBRSxFQUFFLEVBQUUsc0JBQXNCLGFBQWEsd0JBQXdCLEVBQUUsZUFBZTs7QUFFcHlCLHNDQUFzQyx1Q0FBdUMsZ0JBQWdCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9saWIvd29ya2Vycy9hbGdvcml0aG0uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiR0FERElcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2dhZGRpLmRlZmF1bHQ7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiYnJlYWR0aEZpcnN0U2VhcmNoXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9iZnMuZGVmYXVsdDtcbiAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJjb25uZWN0ZWRDb21wb25lbnRcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2Nvbm5lY3RlZENvbXBvbmVudC5kZWZhdWx0O1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRlcHRoRmlyc3RTZWFyY2hcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2Rmcy5kZWZhdWx0O1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRldGVjdEN5Y2xlXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9kZXRlY3RDeWNsZS5kZWZhdWx0O1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRpamtzdHJhXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9kaWprc3RyYS5kZWZhdWx0O1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImZpbmRBbGxQYXRoXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9maW5kUGF0aC5maW5kQWxsUGF0aDtcbiAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJmaW5kU2hvcnRlc3RQYXRoXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9maW5kUGF0aC5maW5kU2hvcnRlc3RQYXRoO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImZsb3lkV2Fyc2hhbGxcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2Zsb3lkV2Fyc2hhbGwuZGVmYXVsdDtcbiAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJnZXRBZGpNYXRyaXhcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2FkamFjZW50TWF0cml4LmRlZmF1bHQ7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZ2V0RGVncmVlXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9kZWdyZWUuZGVmYXVsdDtcbiAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJnZXRJbkRlZ3JlZVwiLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiBfZGVncmVlLmdldEluRGVncmVlO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImdldE5laWdoYm9yc1wiLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiBfdXRpbC5nZXROZWlnaGJvcnM7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZ2V0T3V0RGVncmVlXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9kZWdyZWUuZ2V0T3V0RGVncmVlO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImxhYmVsUHJvcGFnYXRpb25cIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX2xhYmVsUHJvcGFnYXRpb24uZGVmYXVsdDtcbiAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJsb3V2YWluXCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIF9sb3V2YWluLmRlZmF1bHQ7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwibWluaW11bVNwYW5uaW5nVHJlZVwiLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiBfbXRzLmRlZmF1bHQ7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwicGFnZVJhbmtcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gX3BhZ2VSYW5rLmRlZmF1bHQ7XG4gIH1cbn0pO1xuXG52YXIgX2FkamFjZW50TWF0cml4ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vYWRqYWNlbnQtbWF0cml4XCIpKTtcblxudmFyIF9iZnMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9iZnNcIikpO1xuXG52YXIgX2Nvbm5lY3RlZENvbXBvbmVudCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2Nvbm5lY3RlZC1jb21wb25lbnRcIikpO1xuXG52YXIgX2RlZ3JlZSA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCIuLi9kZWdyZWVcIikpO1xuXG52YXIgX2RldGVjdEN5Y2xlID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vZGV0ZWN0LWN5Y2xlXCIpKTtcblxudmFyIF9kZnMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuLi9kZnNcIikpO1xuXG52YXIgX2RpamtzdHJhID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vZGlqa3N0cmFcIikpO1xuXG52YXIgX2ZpbmRQYXRoID0gcmVxdWlyZShcIi4uL2ZpbmQtcGF0aFwiKTtcblxudmFyIF9mbG95ZFdhcnNoYWxsID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vZmxveWRXYXJzaGFsbFwiKSk7XG5cbnZhciBfbGFiZWxQcm9wYWdhdGlvbiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2xhYmVsLXByb3BhZ2F0aW9uXCIpKTtcblxudmFyIF9sb3V2YWluID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vbG91dmFpblwiKSk7XG5cbnZhciBfbXRzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi4vbXRzXCIpKTtcblxudmFyIF9wYWdlUmFuayA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL3BhZ2VSYW5rXCIpKTtcblxudmFyIF9nYWRkaSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4uL2dhZGRpXCIpKTtcblxudmFyIF91dGlsID0gcmVxdWlyZShcIi4uL3V0aWxcIik7XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShub2RlSW50ZXJvcCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZUJhYmVsSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7IHZhciBjYWNoZU5vZGVJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTsgcmV0dXJuIChfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHsgcmV0dXJuIG5vZGVJbnRlcm9wID8gY2FjaGVOb2RlSW50ZXJvcCA6IGNhY2hlQmFiZWxJbnRlcm9wOyB9KShub2RlSW50ZXJvcCk7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqLCBub2RlSW50ZXJvcCkgeyBpZiAoIW5vZGVJbnRlcm9wICYmIG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBkZWZhdWx0OiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChrZXkgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqLmRlZmF1bHQgPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/algorithm.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/constant.js":
/*!**************************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/constant.js ***!
\**************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MESSAGE = exports.ALGORITHM = void 0;\nvar ALGORITHM = {\n pageRank: 'pageRank',\n breadthFirstSearch: 'breadthFirstSearch',\n connectedComponent: 'connectedComponent',\n depthFirstSearch: 'depthFirstSearch',\n detectCycle: 'detectCycle',\n detectDirectedCycle: 'detectDirectedCycle',\n detectAllCycles: 'detectAllCycles',\n detectAllDirectedCycle: 'detectAllDirectedCycle',\n detectAllUndirectedCycle: 'detectAllUndirectedCycle',\n dijkstra: 'dijkstra',\n findAllPath: 'findAllPath',\n findShortestPath: 'findShortestPath',\n floydWarshall: 'floydWarshall',\n getAdjMatrix: 'getAdjMatrix',\n getDegree: 'getDegree',\n getInDegree: 'getInDegree',\n getNeighbors: 'getNeighbors',\n getOutDegree: 'getOutDegree',\n labelPropagation: 'labelPropagation',\n louvain: 'louvain',\n GADDI: 'GADDI',\n minimumSpanningTree: 'minimumSpanningTree',\n SUCCESS: 'SUCCESS',\n FAILURE: 'FAILURE'\n};\nexports.ALGORITHM = ALGORITHM;\nvar MESSAGE = {\n SUCCESS: 'SUCCESS',\n FAILURE: 'FAILURE'\n};\nexports.MESSAGE = MESSAGE;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi93b3JrZXJzL2NvbnN0YW50LmpzPzE0MTMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi93b3JrZXJzL2NvbnN0YW50LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLk1FU1NBR0UgPSBleHBvcnRzLkFMR09SSVRITSA9IHZvaWQgMDtcbnZhciBBTEdPUklUSE0gPSB7XG4gIHBhZ2VSYW5rOiAncGFnZVJhbmsnLFxuICBicmVhZHRoRmlyc3RTZWFyY2g6ICdicmVhZHRoRmlyc3RTZWFyY2gnLFxuICBjb25uZWN0ZWRDb21wb25lbnQ6ICdjb25uZWN0ZWRDb21wb25lbnQnLFxuICBkZXB0aEZpcnN0U2VhcmNoOiAnZGVwdGhGaXJzdFNlYXJjaCcsXG4gIGRldGVjdEN5Y2xlOiAnZGV0ZWN0Q3ljbGUnLFxuICBkZXRlY3REaXJlY3RlZEN5Y2xlOiAnZGV0ZWN0RGlyZWN0ZWRDeWNsZScsXG4gIGRldGVjdEFsbEN5Y2xlczogJ2RldGVjdEFsbEN5Y2xlcycsXG4gIGRldGVjdEFsbERpcmVjdGVkQ3ljbGU6ICdkZXRlY3RBbGxEaXJlY3RlZEN5Y2xlJyxcbiAgZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlOiAnZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlJyxcbiAgZGlqa3N0cmE6ICdkaWprc3RyYScsXG4gIGZpbmRBbGxQYXRoOiAnZmluZEFsbFBhdGgnLFxuICBmaW5kU2hvcnRlc3RQYXRoOiAnZmluZFNob3J0ZXN0UGF0aCcsXG4gIGZsb3lkV2Fyc2hhbGw6ICdmbG95ZFdhcnNoYWxsJyxcbiAgZ2V0QWRqTWF0cml4OiAnZ2V0QWRqTWF0cml4JyxcbiAgZ2V0RGVncmVlOiAnZ2V0RGVncmVlJyxcbiAgZ2V0SW5EZWdyZWU6ICdnZXRJbkRlZ3JlZScsXG4gIGdldE5laWdoYm9yczogJ2dldE5laWdoYm9ycycsXG4gIGdldE91dERlZ3JlZTogJ2dldE91dERlZ3JlZScsXG4gIGxhYmVsUHJvcGFnYXRpb246ICdsYWJlbFByb3BhZ2F0aW9uJyxcbiAgbG91dmFpbjogJ2xvdXZhaW4nLFxuICBHQURESTogJ0dBRERJJyxcbiAgbWluaW11bVNwYW5uaW5nVHJlZTogJ21pbmltdW1TcGFubmluZ1RyZWUnLFxuICBTVUNDRVNTOiAnU1VDQ0VTUycsXG4gIEZBSUxVUkU6ICdGQUlMVVJFJ1xufTtcbmV4cG9ydHMuQUxHT1JJVEhNID0gQUxHT1JJVEhNO1xudmFyIE1FU1NBR0UgPSB7XG4gIFNVQ0NFU1M6ICdTVUNDRVNTJyxcbiAgRkFJTFVSRTogJ0ZBSUxVUkUnXG59O1xuZXhwb3J0cy5NRVNTQUdFID0gTUVTU0FHRTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/constant.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/createWorker.js":
/*!******************************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/createWorker.js ***!
\******************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _constant = __webpack_require__(/*! ./constant */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/constant.js\");\n\nvar _index = _interopRequireDefault(__webpack_require__(/*! ./index.worker */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/index.worker.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * 创建一个在worker中运行的算法\n * @param type 算法类型\n */\nvar createWorker = function createWorker(type) {\n return function () {\n var data = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n data[_i] = arguments[_i];\n }\n\n return new Promise(function (resolve, reject) {\n var worker = new _index.default();\n worker.postMessage({\n _algorithmType: type,\n data: data\n });\n\n worker.onmessage = function (event) {\n var _a = event.data,\n data = _a.data,\n _algorithmType = _a._algorithmType;\n\n if (_constant.MESSAGE.SUCCESS === _algorithmType) {\n resolve(data);\n } else {\n reject();\n }\n\n worker.terminate();\n };\n });\n };\n};\n\nvar _default = createWorker;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi93b3JrZXJzL2NyZWF0ZVdvcmtlci5qcz84MTdiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7O0FBRUEsZ0JBQWdCLG1CQUFPLENBQUMsa0dBQVk7O0FBRXBDLG9DQUFvQyxtQkFBTyxDQUFDLDBHQUFnQjs7QUFFNUQsc0NBQXNDLHVDQUF1QyxnQkFBZ0I7O0FBRTdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG9CQUFvQix1QkFBdUI7QUFDM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi93b3JrZXJzL2NyZWF0ZVdvcmtlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX2NvbnN0YW50ID0gcmVxdWlyZShcIi4vY29uc3RhbnRcIik7XG5cbnZhciBfaW5kZXggPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2luZGV4LndvcmtlclwiKSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbi8qKlxuICog5Yib5bu65LiA5Liq5Zyod29ya2Vy5Lit6L+Q6KGM55qE566X5rOVXG4gKiBAcGFyYW0gdHlwZSDnrpfms5XnsbvlnotcbiAqL1xudmFyIGNyZWF0ZVdvcmtlciA9IGZ1bmN0aW9uIGNyZWF0ZVdvcmtlcih0eXBlKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGRhdGEgPSBbXTtcblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICBkYXRhW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciB3b3JrZXIgPSBuZXcgX2luZGV4LmRlZmF1bHQoKTtcbiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7XG4gICAgICAgIF9hbGdvcml0aG1UeXBlOiB0eXBlLFxuICAgICAgICBkYXRhOiBkYXRhXG4gICAgICB9KTtcblxuICAgICAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICB2YXIgX2EgPSBldmVudC5kYXRhLFxuICAgICAgICAgICAgZGF0YSA9IF9hLmRhdGEsXG4gICAgICAgICAgICBfYWxnb3JpdGhtVHlwZSA9IF9hLl9hbGdvcml0aG1UeXBlO1xuXG4gICAgICAgIGlmIChfY29uc3RhbnQuTUVTU0FHRS5TVUNDRVNTID09PSBfYWxnb3JpdGhtVHlwZSkge1xuICAgICAgICAgIHJlc29sdmUoZGF0YSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVqZWN0KCk7XG4gICAgICAgIH1cblxuICAgICAgICB3b3JrZXIudGVybWluYXRlKCk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9O1xufTtcblxudmFyIF9kZWZhdWx0ID0gY3JlYXRlV29ya2VyO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/createWorker.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/index.js":
/*!***********************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/index.js ***!
\***********************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.pageRankAsync = exports.minimumSpanningTreeAsync = exports.louvainAsync = exports.labelPropagationAsync = exports.getOutDegreeAsync = exports.getNeighborsAsync = exports.getInDegreeAsync = exports.getDegreeAsync = exports.getAdjMatrixAsync = exports.floydWarshallAsync = exports.findShortestPathAsync = exports.findAllPathAsync = exports.dijkstraAsync = exports.detectCycleAsync = exports.detectAllUndirectedCycleAsync = exports.detectAllDirectedCycleAsync = exports.detectAllCyclesAsync = exports.connectedComponentAsync = exports.GADDIAsync = void 0;\n\nvar _createWorker = _interopRequireDefault(__webpack_require__(/*! ./createWorker */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/createWorker.js\"));\n\nvar _constant = __webpack_require__(/*! ./constant */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/constant.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @param graphData 图数据\n * @param directed 是否为有向图\n */\nvar getAdjMatrixAsync = function getAdjMatrixAsync(graphData, directed) {\n return (0, _createWorker.default)(_constant.ALGORITHM.getAdjMatrix).apply(void 0, [graphData, directed]);\n};\n/**\n * 图的连通分量\n * @param graphData 图数据\n * @param directed 是否为有向图\n */\n\n\nexports.getAdjMatrixAsync = getAdjMatrixAsync;\n\nvar connectedComponentAsync = function connectedComponentAsync(graphData, directed) {\n return (0, _createWorker.default)(_constant.ALGORITHM.connectedComponent).apply(void 0, [graphData, directed]);\n};\n/**\n * 获取节点的度\n * @param graphData 图数据\n */\n\n\nexports.connectedComponentAsync = connectedComponentAsync;\n\nvar getDegreeAsync = function getDegreeAsync(graphData) {\n return (0, _createWorker.default)(_constant.ALGORITHM.getDegree)(graphData);\n};\n/**\n * 获取节点的入度\n * @param graphData 图数据\n * @param nodeId 节点ID\n */\n\n\nexports.getDegreeAsync = getDegreeAsync;\n\nvar getInDegreeAsync = function getInDegreeAsync(graphData, nodeId) {\n return (0, _createWorker.default)(_constant.ALGORITHM.getInDegree)(graphData, nodeId);\n};\n/**\n * 获取节点的出度\n * @param graphData 图数据\n * @param nodeId 节点ID\n */\n\n\nexports.getInDegreeAsync = getInDegreeAsync;\n\nvar getOutDegreeAsync = function getOutDegreeAsync(graphData, nodeId) {\n return (0, _createWorker.default)(_constant.ALGORITHM.getOutDegree)(graphData, nodeId);\n};\n/**\n * 检测图中的(有向) Cycle\n * @param graphData 图数据\n */\n\n\nexports.getOutDegreeAsync = getOutDegreeAsync;\n\nvar detectCycleAsync = function detectCycleAsync(graphData) {\n return (0, _createWorker.default)(_constant.ALGORITHM.detectCycle)(graphData);\n};\n/**\n * 检测图中的(无向) Cycle\n * @param graphData 图数据\n */\n\n\nexports.detectCycleAsync = detectCycleAsync;\n\nvar detectAllCyclesAsync = function detectAllCyclesAsync(graphData) {\n return (0, _createWorker.default)(_constant.ALGORITHM.detectAllCycles)(graphData);\n};\n/**\n * 检测图中的所有(有向) Cycle\n * @param graphData 图数据\n */\n\n\nexports.detectAllCyclesAsync = detectAllCyclesAsync;\n\nvar detectAllDirectedCycleAsync = function detectAllDirectedCycleAsync(graphData) {\n return (0, _createWorker.default)(_constant.ALGORITHM.detectAllDirectedCycle)(graphData);\n};\n/**\n * 检测图中的所有(无向) Cycle\n * @param graphData 图数据\n */\n\n\nexports.detectAllDirectedCycleAsync = detectAllDirectedCycleAsync;\n\nvar detectAllUndirectedCycleAsync = function detectAllUndirectedCycleAsync(graphData) {\n return (0, _createWorker.default)(_constant.ALGORITHM.detectAllUndirectedCycle)(graphData);\n};\n/**\n * Dijkstra's algorithm, See {@link https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm}\n * @param graphData 图数据\n */\n\n\nexports.detectAllUndirectedCycleAsync = detectAllUndirectedCycleAsync;\n\nvar dijkstraAsync = function dijkstraAsync(graphData, source, directed, weightPropertyName) {\n return (0, _createWorker.default)(_constant.ALGORITHM.dijkstra).apply(void 0, [graphData, source, directed, weightPropertyName]);\n};\n/**\n * 查找两点之间的所有路径\n * @param graphData 图数据\n * @param start 路径起始点ID\n * @param end 路径终点ID\n * @param directed 是否为有向图\n */\n\n\nexports.dijkstraAsync = dijkstraAsync;\n\nvar findAllPathAsync = function findAllPathAsync(graphData, start, end, directed) {\n return (0, _createWorker.default)(_constant.ALGORITHM.findAllPath).apply(void 0, [graphData, start, end, directed]);\n};\n/**\n * 查找两点之间的所有路径\n * @param graphData 图数据\n * @param start 路径起始点ID\n * @param end 路径终点ID\n * @param directed 是否为有向图\n * @param weightPropertyName 边权重的属名称,若数据中没有权重,则默认每条边权重为 1\n */\n\n\nexports.findAllPathAsync = findAllPathAsync;\n\nvar findShortestPathAsync = function findShortestPathAsync(graphData, start, end, directed, weightPropertyName) {\n return (0, _createWorker.default)(_constant.ALGORITHM.findShortestPath).apply(void 0, [graphData, start, end, directed, weightPropertyName]);\n};\n/**\n * Floyd–Warshall algorithm, See {@link https://en.wikipedia.org/wiki/Floyd%E2%80%93Warshall_algorithm}\n * @param graphData 图数据\n * @param directed 是否为有向图\n */\n\n\nexports.findShortestPathAsync = findShortestPathAsync;\n\nvar floydWarshallAsync = function floydWarshallAsync(graphData, directed) {\n return (0, _createWorker.default)(_constant.ALGORITHM.floydWarshall).apply(void 0, [graphData, directed]);\n};\n/**\n * 标签传播算法\n * @param graphData 图数据\n * @param directed 是否有向图,默认为 false\n * @param weightPropertyName 权重的属性字段\n * @param maxIteration 最大迭代次数\n */\n\n\nexports.floydWarshallAsync = floydWarshallAsync;\n\nvar labelPropagationAsync = function labelPropagationAsync(graphData, directed, weightPropertyName, maxIteration) {\n if (maxIteration === void 0) {\n maxIteration = 1000;\n }\n\n return (0, _createWorker.default)(_constant.ALGORITHM.labelPropagation)(graphData, directed, weightPropertyName, maxIteration);\n};\n/**\n * 社区发现 louvain 算法\n * @param graphData 图数据\n * @param directed 是否有向图,默认为 false\n * @param weightPropertyName 权重的属性字段\n * @param threshold\n */\n\n\nexports.labelPropagationAsync = labelPropagationAsync;\n\nvar louvainAsync = function louvainAsync(graphData, directed, weightPropertyName, threshold) {\n return (0, _createWorker.default)(_constant.ALGORITHM.louvain)(graphData, directed, weightPropertyName, threshold);\n};\n/**\n * 最小生成树,See {@link https://en.wikipedia.org/wiki/Kruskal%27s_algorithm}\n * @param graph\n * @param weight 指定用于作为边权重的属性,若不指定,则认为所有边权重一致\n * @param algo 'prim' | 'kruskal' 算法类型\n * @return EdgeConfig[] 返回构成MST的边的数组\n */\n\n\nexports.louvainAsync = louvainAsync;\n\nvar minimumSpanningTreeAsync = function minimumSpanningTreeAsync(graphData, weight, algo) {\n return (0, _createWorker.default)(_constant.ALGORITHM.minimumSpanningTree).apply(void 0, [graphData, weight, algo]);\n};\n/**\n * PageRank https://en.wikipedia.org/wiki/PageRank\n * refer: https://github.com/anvaka/ngraph.pagerank\n * @param graph\n * @param epsilon 判断是否收敛的精度值,默认 0.000001\n * @param linkProb 阻尼系数(dumping factor),指任意时刻,用户访问到某节点后继续访问该节点链接的下一个节点的概率,经验值 0.85\n */\n\n\nexports.minimumSpanningTreeAsync = minimumSpanningTreeAsync;\n\nvar pageRankAsync = function pageRankAsync(graphData, epsilon, linkProb) {\n return (0, _createWorker.default)(_constant.ALGORITHM.pageRank).apply(void 0, [graphData, epsilon, linkProb]);\n};\n/**\n * 获取指定节点的所有邻居\n * @param nodeId 节点 ID\n * @param edges 图中的所有边数据\n * @param type 邻居类型\n */\n\n\nexports.pageRankAsync = pageRankAsync;\n\nvar getNeighborsAsync = function getNeighborsAsync(nodeId, edges, type) {\n return (0, _createWorker.default)(_constant.ALGORITHM.getNeighbors).apply(void 0, [nodeId, edges, type]);\n};\n/**\n * GADDI 图模式匹配\n * @param graphData 原图数据\n * @param pattern 搜索图(需要在原图上搜索的模式)数据\n * @param directed 是否计算有向图,默认 false\n * @param k 参数 k,表示 k-近邻\n * @param length 参数 length\n * @param nodeLabelProp 节点数据中代表节点标签(分类信息)的属性名。默认为 cluster\n * @param edgeLabelProp 边数据中代表边标签(分类信息)的属性名。默认为 cluster\n */\n\n\nexports.getNeighborsAsync = getNeighborsAsync;\n\nvar GADDIAsync = function GADDIAsync(graphData, pattern, directed, k, length, nodeLabelProp, edgeLabelProp) {\n if (directed === void 0) {\n directed = false;\n }\n\n if (nodeLabelProp === void 0) {\n nodeLabelProp = 'cluster';\n }\n\n if (edgeLabelProp === void 0) {\n edgeLabelProp = 'cluster';\n }\n\n return (0, _createWorker.default)(_constant.ALGORITHM.GADDI).apply(void 0, [graphData, pattern, directed, k, length, nodeLabelProp, edgeLabelProp]);\n};\n\nexports.GADDIAsync = GADDIAsync;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi93b3JrZXJzL2luZGV4LmpzPzBiNjciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLENBQUM7QUFDRDs7QUFFQSwyQ0FBMkMsbUJBQU8sQ0FBQywwR0FBZ0I7O0FBRW5FLGdCQUFnQixtQkFBTyxDQUFDLGtHQUFZOztBQUVwQyxzQ0FBc0MsdUNBQXVDLGdCQUFnQjs7QUFFN0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi93b3JrZXJzL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLnBhZ2VSYW5rQXN5bmMgPSBleHBvcnRzLm1pbmltdW1TcGFubmluZ1RyZWVBc3luYyA9IGV4cG9ydHMubG91dmFpbkFzeW5jID0gZXhwb3J0cy5sYWJlbFByb3BhZ2F0aW9uQXN5bmMgPSBleHBvcnRzLmdldE91dERlZ3JlZUFzeW5jID0gZXhwb3J0cy5nZXROZWlnaGJvcnNBc3luYyA9IGV4cG9ydHMuZ2V0SW5EZWdyZWVBc3luYyA9IGV4cG9ydHMuZ2V0RGVncmVlQXN5bmMgPSBleHBvcnRzLmdldEFkak1hdHJpeEFzeW5jID0gZXhwb3J0cy5mbG95ZFdhcnNoYWxsQXN5bmMgPSBleHBvcnRzLmZpbmRTaG9ydGVzdFBhdGhBc3luYyA9IGV4cG9ydHMuZmluZEFsbFBhdGhBc3luYyA9IGV4cG9ydHMuZGlqa3N0cmFBc3luYyA9IGV4cG9ydHMuZGV0ZWN0Q3ljbGVBc3luYyA9IGV4cG9ydHMuZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlQXN5bmMgPSBleHBvcnRzLmRldGVjdEFsbERpcmVjdGVkQ3ljbGVBc3luYyA9IGV4cG9ydHMuZGV0ZWN0QWxsQ3ljbGVzQXN5bmMgPSBleHBvcnRzLmNvbm5lY3RlZENvbXBvbmVudEFzeW5jID0gZXhwb3J0cy5HQURESUFzeW5jID0gdm9pZCAwO1xuXG52YXIgX2NyZWF0ZVdvcmtlciA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vY3JlYXRlV29ya2VyXCIpKTtcblxudmFyIF9jb25zdGFudCA9IHJlcXVpcmUoXCIuL2NvbnN0YW50XCIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vKipcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gZGlyZWN0ZWQg5piv5ZCm5Li65pyJ5ZCR5Zu+XG4gKi9cbnZhciBnZXRBZGpNYXRyaXhBc3luYyA9IGZ1bmN0aW9uIGdldEFkak1hdHJpeEFzeW5jKGdyYXBoRGF0YSwgZGlyZWN0ZWQpIHtcbiAgcmV0dXJuICgwLCBfY3JlYXRlV29ya2VyLmRlZmF1bHQpKF9jb25zdGFudC5BTEdPUklUSE0uZ2V0QWRqTWF0cml4KS5hcHBseSh2b2lkIDAsIFtncmFwaERhdGEsIGRpcmVjdGVkXSk7XG59O1xuLyoqXG4gKiDlm77nmoTov57pgJrliIbph49cbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gZGlyZWN0ZWQg5piv5ZCm5Li65pyJ5ZCR5Zu+XG4gKi9cblxuXG5leHBvcnRzLmdldEFkak1hdHJpeEFzeW5jID0gZ2V0QWRqTWF0cml4QXN5bmM7XG5cbnZhciBjb25uZWN0ZWRDb21wb25lbnRBc3luYyA9IGZ1bmN0aW9uIGNvbm5lY3RlZENvbXBvbmVudEFzeW5jKGdyYXBoRGF0YSwgZGlyZWN0ZWQpIHtcbiAgcmV0dXJuICgwLCBfY3JlYXRlV29ya2VyLmRlZmF1bHQpKF9jb25zdGFudC5BTEdPUklUSE0uY29ubmVjdGVkQ29tcG9uZW50KS5hcHBseSh2b2lkIDAsIFtncmFwaERhdGEsIGRpcmVjdGVkXSk7XG59O1xuLyoqXG4gKiDojrflj5boioLngrnnmoTluqZcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKi9cblxuXG5leHBvcnRzLmNvbm5lY3RlZENvbXBvbmVudEFzeW5jID0gY29ubmVjdGVkQ29tcG9uZW50QXN5bmM7XG5cbnZhciBnZXREZWdyZWVBc3luYyA9IGZ1bmN0aW9uIGdldERlZ3JlZUFzeW5jKGdyYXBoRGF0YSkge1xuICByZXR1cm4gKDAsIF9jcmVhdGVXb3JrZXIuZGVmYXVsdCkoX2NvbnN0YW50LkFMR09SSVRITS5nZXREZWdyZWUpKGdyYXBoRGF0YSk7XG59O1xuLyoqXG4gKiDojrflj5boioLngrnnmoTlhaXluqZcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gbm9kZUlkIOiKgueCuUlEXG4gKi9cblxuXG5leHBvcnRzLmdldERlZ3JlZUFzeW5jID0gZ2V0RGVncmVlQXN5bmM7XG5cbnZhciBnZXRJbkRlZ3JlZUFzeW5jID0gZnVuY3Rpb24gZ2V0SW5EZWdyZWVBc3luYyhncmFwaERhdGEsIG5vZGVJZCkge1xuICByZXR1cm4gKDAsIF9jcmVhdGVXb3JrZXIuZGVmYXVsdCkoX2NvbnN0YW50LkFMR09SSVRITS5nZXRJbkRlZ3JlZSkoZ3JhcGhEYXRhLCBub2RlSWQpO1xufTtcbi8qKlxuICog6I635Y+W6IqC54K555qE5Ye65bqmXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICogQHBhcmFtIG5vZGVJZCDoioLngrlJRFxuICovXG5cblxuZXhwb3J0cy5nZXRJbkRlZ3JlZUFzeW5jID0gZ2V0SW5EZWdyZWVBc3luYztcblxudmFyIGdldE91dERlZ3JlZUFzeW5jID0gZnVuY3Rpb24gZ2V0T3V0RGVncmVlQXN5bmMoZ3JhcGhEYXRhLCBub2RlSWQpIHtcbiAgcmV0dXJuICgwLCBfY3JlYXRlV29ya2VyLmRlZmF1bHQpKF9jb25zdGFudC5BTEdPUklUSE0uZ2V0T3V0RGVncmVlKShncmFwaERhdGEsIG5vZGVJZCk7XG59O1xuLyoqXG4gKiDmo4DmtYvlm77kuK3nmoQo5pyJ5ZCRKSBDeWNsZVxuICogQHBhcmFtIGdyYXBoRGF0YSDlm77mlbDmja5cbiAqL1xuXG5cbmV4cG9ydHMuZ2V0T3V0RGVncmVlQXN5bmMgPSBnZXRPdXREZWdyZWVBc3luYztcblxudmFyIGRldGVjdEN5Y2xlQXN5bmMgPSBmdW5jdGlvbiBkZXRlY3RDeWNsZUFzeW5jKGdyYXBoRGF0YSkge1xuICByZXR1cm4gKDAsIF9jcmVhdGVXb3JrZXIuZGVmYXVsdCkoX2NvbnN0YW50LkFMR09SSVRITS5kZXRlY3RDeWNsZSkoZ3JhcGhEYXRhKTtcbn07XG4vKipcbiAqIOajgOa1i+WbvuS4reeahCjml6DlkJEpIEN5Y2xlXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICovXG5cblxuZXhwb3J0cy5kZXRlY3RDeWNsZUFzeW5jID0gZGV0ZWN0Q3ljbGVBc3luYztcblxudmFyIGRldGVjdEFsbEN5Y2xlc0FzeW5jID0gZnVuY3Rpb24gZGV0ZWN0QWxsQ3ljbGVzQXN5bmMoZ3JhcGhEYXRhKSB7XG4gIHJldHVybiAoMCwgX2NyZWF0ZVdvcmtlci5kZWZhdWx0KShfY29uc3RhbnQuQUxHT1JJVEhNLmRldGVjdEFsbEN5Y2xlcykoZ3JhcGhEYXRhKTtcbn07XG4vKipcbiAqIOajgOa1i+WbvuS4reeahOaJgOaciSjmnInlkJEpIEN5Y2xlXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICovXG5cblxuZXhwb3J0cy5kZXRlY3RBbGxDeWNsZXNBc3luYyA9IGRldGVjdEFsbEN5Y2xlc0FzeW5jO1xuXG52YXIgZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZUFzeW5jID0gZnVuY3Rpb24gZGV0ZWN0QWxsRGlyZWN0ZWRDeWNsZUFzeW5jKGdyYXBoRGF0YSkge1xuICByZXR1cm4gKDAsIF9jcmVhdGVXb3JrZXIuZGVmYXVsdCkoX2NvbnN0YW50LkFMR09SSVRITS5kZXRlY3RBbGxEaXJlY3RlZEN5Y2xlKShncmFwaERhdGEpO1xufTtcbi8qKlxuICog5qOA5rWL5Zu+5Lit55qE5omA5pyJKOaXoOWQkSkgQ3ljbGVcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKi9cblxuXG5leHBvcnRzLmRldGVjdEFsbERpcmVjdGVkQ3ljbGVBc3luYyA9IGRldGVjdEFsbERpcmVjdGVkQ3ljbGVBc3luYztcblxudmFyIGRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZUFzeW5jID0gZnVuY3Rpb24gZGV0ZWN0QWxsVW5kaXJlY3RlZEN5Y2xlQXN5bmMoZ3JhcGhEYXRhKSB7XG4gIHJldHVybiAoMCwgX2NyZWF0ZVdvcmtlci5kZWZhdWx0KShfY29uc3RhbnQuQUxHT1JJVEhNLmRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZSkoZ3JhcGhEYXRhKTtcbn07XG4vKipcbiAqIERpamtzdHJhJ3MgYWxnb3JpdGhtLCBTZWUge0BsaW5rIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RpamtzdHJhJTI3c19hbGdvcml0aG19XG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICovXG5cblxuZXhwb3J0cy5kZXRlY3RBbGxVbmRpcmVjdGVkQ3ljbGVBc3luYyA9IGRldGVjdEFsbFVuZGlyZWN0ZWRDeWNsZUFzeW5jO1xuXG52YXIgZGlqa3N0cmFBc3luYyA9IGZ1bmN0aW9uIGRpamtzdHJhQXN5bmMoZ3JhcGhEYXRhLCBzb3VyY2UsIGRpcmVjdGVkLCB3ZWlnaHRQcm9wZXJ0eU5hbWUpIHtcbiAgcmV0dXJuICgwLCBfY3JlYXRlV29ya2VyLmRlZmF1bHQpKF9jb25zdGFudC5BTEdPUklUSE0uZGlqa3N0cmEpLmFwcGx5KHZvaWQgMCwgW2dyYXBoRGF0YSwgc291cmNlLCBkaXJlY3RlZCwgd2VpZ2h0UHJvcGVydHlOYW1lXSk7XG59O1xuLyoqXG4gKiDmn6Xmib7kuKTngrnkuYvpl7TnmoTmiYDmnInot6/lvoRcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gc3RhcnQg6Lev5b6E6LW35aeL54K5SURcbiAqIEBwYXJhbSBlbmQg6Lev5b6E57uI54K5SURcbiAqIEBwYXJhbSBkaXJlY3RlZCDmmK/lkKbkuLrmnInlkJHlm75cbiAqL1xuXG5cbmV4cG9ydHMuZGlqa3N0cmFBc3luYyA9IGRpamtzdHJhQXN5bmM7XG5cbnZhciBmaW5kQWxsUGF0aEFzeW5jID0gZnVuY3Rpb24gZmluZEFsbFBhdGhBc3luYyhncmFwaERhdGEsIHN0YXJ0LCBlbmQsIGRpcmVjdGVkKSB7XG4gIHJldHVybiAoMCwgX2NyZWF0ZVdvcmtlci5kZWZhdWx0KShfY29uc3RhbnQuQUxHT1JJVEhNLmZpbmRBbGxQYXRoKS5hcHBseSh2b2lkIDAsIFtncmFwaERhdGEsIHN0YXJ0LCBlbmQsIGRpcmVjdGVkXSk7XG59O1xuLyoqXG4gKiDmn6Xmib7kuKTngrnkuYvpl7TnmoTmiYDmnInot6/lvoRcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gc3RhcnQg6Lev5b6E6LW35aeL54K5SURcbiAqIEBwYXJhbSBlbmQg6Lev5b6E57uI54K5SURcbiAqIEBwYXJhbSBkaXJlY3RlZCDmmK/lkKbkuLrmnInlkJHlm75cbiAqIEBwYXJhbSB3ZWlnaHRQcm9wZXJ0eU5hbWUg6L655p2D6YeN55qE5bGe5ZCN56ew77yM6Iul5pWw5o2u5Lit5rKh5pyJ5p2D6YeN77yM5YiZ6buY6K6k5q+P5p2h6L655p2D6YeN5Li6IDFcbiAqL1xuXG5cbmV4cG9ydHMuZmluZEFsbFBhdGhBc3luYyA9IGZpbmRBbGxQYXRoQXN5bmM7XG5cbnZhciBmaW5kU2hvcnRlc3RQYXRoQXN5bmMgPSBmdW5jdGlvbiBmaW5kU2hvcnRlc3RQYXRoQXN5bmMoZ3JhcGhEYXRhLCBzdGFydCwgZW5kLCBkaXJlY3RlZCwgd2VpZ2h0UHJvcGVydHlOYW1lKSB7XG4gIHJldHVybiAoMCwgX2NyZWF0ZVdvcmtlci5kZWZhdWx0KShfY29uc3RhbnQuQUxHT1JJVEhNLmZpbmRTaG9ydGVzdFBhdGgpLmFwcGx5KHZvaWQgMCwgW2dyYXBoRGF0YSwgc3RhcnQsIGVuZCwgZGlyZWN0ZWQsIHdlaWdodFByb3BlcnR5TmFtZV0pO1xufTtcbi8qKlxuICogRmxveWTigJNXYXJzaGFsbCBhbGdvcml0aG0sIFNlZSB7QGxpbmsgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmxveWQlRTIlODAlOTNXYXJzaGFsbF9hbGdvcml0aG19XG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWbvuaVsOaNrlxuICogQHBhcmFtIGRpcmVjdGVkIOaYr+WQpuS4uuacieWQkeWbvlxuICovXG5cblxuZXhwb3J0cy5maW5kU2hvcnRlc3RQYXRoQXN5bmMgPSBmaW5kU2hvcnRlc3RQYXRoQXN5bmM7XG5cbnZhciBmbG95ZFdhcnNoYWxsQXN5bmMgPSBmdW5jdGlvbiBmbG95ZFdhcnNoYWxsQXN5bmMoZ3JhcGhEYXRhLCBkaXJlY3RlZCkge1xuICByZXR1cm4gKDAsIF9jcmVhdGVXb3JrZXIuZGVmYXVsdCkoX2NvbnN0YW50LkFMR09SSVRITS5mbG95ZFdhcnNoYWxsKS5hcHBseSh2b2lkIDAsIFtncmFwaERhdGEsIGRpcmVjdGVkXSk7XG59O1xuLyoqXG4gKiDmoIfnrb7kvKDmkq3nrpfms5VcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gZGlyZWN0ZWQg5piv5ZCm5pyJ5ZCR5Zu+77yM6buY6K6k5Li6IGZhbHNlXG4gKiBAcGFyYW0gd2VpZ2h0UHJvcGVydHlOYW1lIOadg+mHjeeahOWxnuaAp+Wtl+autVxuICogQHBhcmFtIG1heEl0ZXJhdGlvbiDmnIDlpKfov63ku6PmrKHmlbBcbiAqL1xuXG5cbmV4cG9ydHMuZmxveWRXYXJzaGFsbEFzeW5jID0gZmxveWRXYXJzaGFsbEFzeW5jO1xuXG52YXIgbGFiZWxQcm9wYWdhdGlvbkFzeW5jID0gZnVuY3Rpb24gbGFiZWxQcm9wYWdhdGlvbkFzeW5jKGdyYXBoRGF0YSwgZGlyZWN0ZWQsIHdlaWdodFByb3BlcnR5TmFtZSwgbWF4SXRlcmF0aW9uKSB7XG4gIGlmIChtYXhJdGVyYXRpb24gPT09IHZvaWQgMCkge1xuICAgIG1heEl0ZXJhdGlvbiA9IDEwMDA7XG4gIH1cblxuICByZXR1cm4gKDAsIF9jcmVhdGVXb3JrZXIuZGVmYXVsdCkoX2NvbnN0YW50LkFMR09SSVRITS5sYWJlbFByb3BhZ2F0aW9uKShncmFwaERhdGEsIGRpcmVjdGVkLCB3ZWlnaHRQcm9wZXJ0eU5hbWUsIG1heEl0ZXJhdGlvbik7XG59O1xuLyoqXG4gKiDnpL7ljLrlj5HnjrAgbG91dmFpbiDnrpfms5VcbiAqIEBwYXJhbSBncmFwaERhdGEg5Zu+5pWw5o2uXG4gKiBAcGFyYW0gZGlyZWN0ZWQg5piv5ZCm5pyJ5ZCR5Zu+77yM6buY6K6k5Li6IGZhbHNlXG4gKiBAcGFyYW0gd2VpZ2h0UHJvcGVydHlOYW1lIOadg+mHjeeahOWxnuaAp+Wtl+autVxuICogQHBhcmFtIHRocmVzaG9sZFxuICovXG5cblxuZXhwb3J0cy5sYWJlbFByb3BhZ2F0aW9uQXN5bmMgPSBsYWJlbFByb3BhZ2F0aW9uQXN5bmM7XG5cbnZhciBsb3V2YWluQXN5bmMgPSBmdW5jdGlvbiBsb3V2YWluQXN5bmMoZ3JhcGhEYXRhLCBkaXJlY3RlZCwgd2VpZ2h0UHJvcGVydHlOYW1lLCB0aHJlc2hvbGQpIHtcbiAgcmV0dXJuICgwLCBfY3JlYXRlV29ya2VyLmRlZmF1bHQpKF9jb25zdGFudC5BTEdPUklUSE0ubG91dmFpbikoZ3JhcGhEYXRhLCBkaXJlY3RlZCwgd2VpZ2h0UHJvcGVydHlOYW1lLCB0aHJlc2hvbGQpO1xufTtcbi8qKlxuICog5pyA5bCP55Sf5oiQ5qCR77yMU2VlIHtAbGluayBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9LcnVza2FsJTI3c19hbGdvcml0aG19XG4gKiBAcGFyYW0gZ3JhcGhcbiAqIEBwYXJhbSB3ZWlnaHQg5oyH5a6a55So5LqO5L2c5Li66L655p2D6YeN55qE5bGe5oCn77yM6Iul5LiN5oyH5a6a77yM5YiZ6K6k5Li65omA5pyJ6L655p2D6YeN5LiA6Ie0XG4gKiBAcGFyYW0gYWxnbyAncHJpbScgfCAna3J1c2thbCcg566X5rOV57G75Z6LXG4gKiBAcmV0dXJuIEVkZ2VDb25maWdbXSDov5Tlm57mnoTmiJBNU1TnmoTovrnnmoTmlbDnu4RcbiAqL1xuXG5cbmV4cG9ydHMubG91dmFpbkFzeW5jID0gbG91dmFpbkFzeW5jO1xuXG52YXIgbWluaW11bVNwYW5uaW5nVHJlZUFzeW5jID0gZnVuY3Rpb24gbWluaW11bVNwYW5uaW5nVHJlZUFzeW5jKGdyYXBoRGF0YSwgd2VpZ2h0LCBhbGdvKSB7XG4gIHJldHVybiAoMCwgX2NyZWF0ZVdvcmtlci5kZWZhdWx0KShfY29uc3RhbnQuQUxHT1JJVEhNLm1pbmltdW1TcGFubmluZ1RyZWUpLmFwcGx5KHZvaWQgMCwgW2dyYXBoRGF0YSwgd2VpZ2h0LCBhbGdvXSk7XG59O1xuLyoqXG4gKiBQYWdlUmFuayBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QYWdlUmFua1xuICogcmVmZXI6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbnZha2EvbmdyYXBoLnBhZ2VyYW5rXG4gKiBAcGFyYW0gZ3JhcGhcbiAqIEBwYXJhbSBlcHNpbG9uIOWIpOaWreaYr+WQpuaUtuaVm+eahOeyvuW6puWAvO+8jOm7mOiupCAwLjAwMDAwMVxuICogQHBhcmFtIGxpbmtQcm9iIOmYu+WwvOezu+aVsO+8iGR1bXBpbmcgZmFjdG9y77yJ77yM5oyH5Lu75oSP5pe25Yi777yM55So5oi36K6/6Zeu5Yiw5p+Q6IqC54K55ZCO57un57ut6K6/6Zeu6K+l6IqC54K56ZO+5o6l55qE5LiL5LiA5Liq6IqC54K555qE5qaC546H77yM57uP6aqM5YC8IDAuODVcbiAqL1xuXG5cbmV4cG9ydHMubWluaW11bVNwYW5uaW5nVHJlZUFzeW5jID0gbWluaW11bVNwYW5uaW5nVHJlZUFzeW5jO1xuXG52YXIgcGFnZVJhbmtBc3luYyA9IGZ1bmN0aW9uIHBhZ2VSYW5rQXN5bmMoZ3JhcGhEYXRhLCBlcHNpbG9uLCBsaW5rUHJvYikge1xuICByZXR1cm4gKDAsIF9jcmVhdGVXb3JrZXIuZGVmYXVsdCkoX2NvbnN0YW50LkFMR09SSVRITS5wYWdlUmFuaykuYXBwbHkodm9pZCAwLCBbZ3JhcGhEYXRhLCBlcHNpbG9uLCBsaW5rUHJvYl0pO1xufTtcbi8qKlxuICog6I635Y+W5oyH5a6a6IqC54K555qE5omA5pyJ6YK75bGFXG4gKiBAcGFyYW0gbm9kZUlkIOiKgueCuSBJRFxuICogQHBhcmFtIGVkZ2VzIOWbvuS4reeahOaJgOaciei+ueaVsOaNrlxuICogQHBhcmFtIHR5cGUg6YK75bGF57G75Z6LXG4gKi9cblxuXG5leHBvcnRzLnBhZ2VSYW5rQXN5bmMgPSBwYWdlUmFua0FzeW5jO1xuXG52YXIgZ2V0TmVpZ2hib3JzQXN5bmMgPSBmdW5jdGlvbiBnZXROZWlnaGJvcnNBc3luYyhub2RlSWQsIGVkZ2VzLCB0eXBlKSB7XG4gIHJldHVybiAoMCwgX2NyZWF0ZVdvcmtlci5kZWZhdWx0KShfY29uc3RhbnQuQUxHT1JJVEhNLmdldE5laWdoYm9ycykuYXBwbHkodm9pZCAwLCBbbm9kZUlkLCBlZGdlcywgdHlwZV0pO1xufTtcbi8qKlxuICogR0FEREkg5Zu+5qih5byP5Yy56YWNXG4gKiBAcGFyYW0gZ3JhcGhEYXRhIOWOn+WbvuaVsOaNrlxuICogQHBhcmFtIHBhdHRlcm4g5pCc57Si5Zu+77yI6ZyA6KaB5Zyo5Y6f5Zu+5LiK5pCc57Si55qE5qih5byP77yJ5pWw5o2uXG4gKiBAcGFyYW0gZGlyZWN0ZWQg5piv5ZCm6K6h566X5pyJ5ZCR5Zu+77yM6buY6K6kIGZhbHNlXG4gKiBAcGFyYW0gayDlj4LmlbAga++8jOihqOekuiBrLei/kemCu1xuICogQHBhcmFtIGxlbmd0aCDlj4LmlbAgbGVuZ3RoXG4gKiBAcGFyYW0gbm9kZUxhYmVsUHJvcCDoioLngrnmlbDmja7kuK3ku6PooajoioLngrnmoIfnrb7vvIjliIbnsbvkv6Hmga/vvInnmoTlsZ7mgKflkI3jgILpu5jorqTkuLogY2x1c3RlclxuICogQHBhcmFtIGVkZ2VMYWJlbFByb3Ag6L655pWw5o2u5Lit5Luj6KGo6L655qCH562+77yI5YiG57G75L+h5oGv77yJ55qE5bGe5oCn5ZCN44CC6buY6K6k5Li6IGNsdXN0ZXJcbiAqL1xuXG5cbmV4cG9ydHMuZ2V0TmVpZ2hib3JzQXN5bmMgPSBnZXROZWlnaGJvcnNBc3luYztcblxudmFyIEdBRERJQXN5bmMgPSBmdW5jdGlvbiBHQURESUFzeW5jKGdyYXBoRGF0YSwgcGF0dGVybiwgZGlyZWN0ZWQsIGssIGxlbmd0aCwgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcCkge1xuICBpZiAoZGlyZWN0ZWQgPT09IHZvaWQgMCkge1xuICAgIGRpcmVjdGVkID0gZmFsc2U7XG4gIH1cblxuICBpZiAobm9kZUxhYmVsUHJvcCA9PT0gdm9pZCAwKSB7XG4gICAgbm9kZUxhYmVsUHJvcCA9ICdjbHVzdGVyJztcbiAgfVxuXG4gIGlmIChlZGdlTGFiZWxQcm9wID09PSB2b2lkIDApIHtcbiAgICBlZGdlTGFiZWxQcm9wID0gJ2NsdXN0ZXInO1xuICB9XG5cbiAgcmV0dXJuICgwLCBfY3JlYXRlV29ya2VyLmRlZmF1bHQpKF9jb25zdGFudC5BTEdPUklUSE0uR0FEREkpLmFwcGx5KHZvaWQgMCwgW2dyYXBoRGF0YSwgcGF0dGVybiwgZGlyZWN0ZWQsIGssIGxlbmd0aCwgbm9kZUxhYmVsUHJvcCwgZWRnZUxhYmVsUHJvcF0pO1xufTtcblxuZXhwb3J0cy5HQURESUFzeW5jID0gR0FERElBc3luYzsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/index.worker.js":
/*!******************************************************************************************!*\
!*** ./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/index.worker.js ***!
\******************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar algorithm = _interopRequireWildcard(__webpack_require__(/*! ./algorithm */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/algorithm.js\"));\n\nvar _constant = __webpack_require__(/*! ./constant */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/constant.js\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar ctx = typeof self !== 'undefined' ? self : {};\n\nctx.onmessage = function (event) {\n var _a = event.data,\n _algorithmType = _a._algorithmType,\n data = _a.data; // 如果发送内容没有私有类型。说明不是自己发的。不管\n // fix: https://github.com/antvis/algorithm/issues/25\n\n if (!_algorithmType) {\n return;\n }\n\n if (typeof algorithm[_algorithmType] === 'function') {\n var result = algorithm[_algorithmType].apply(algorithm, data);\n\n ctx.postMessage({\n _algorithmType: _constant.MESSAGE.SUCCESS,\n data: result\n });\n return;\n }\n\n ctx.postMessage({\n _algorithmType: _constant.MESSAGE.FAILURE\n });\n}; // https://stackoverflow.com/questions/50210416/webpack-worker-loader-fails-to-compile-typescript-worker\n\n\nvar _default = null;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2FsZ29yaXRobUAwLjEuMTRAQGFudHYvYWxnb3JpdGhtL2xpYi93b3JrZXJzL2luZGV4Lndvcmtlci5qcz8wYTYzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhOztBQUViLHVCQUF1QiwyQkFBMkIsMkVBQTJFLGtDQUFrQyxtQkFBbUIsR0FBRyxFQUFFLE9BQU8sa0NBQWtDLDhIQUE4SCxHQUFHLEVBQUUscUJBQXFCOztBQUV4WDtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBLHdDQUF3QyxtQkFBTyxDQUFDLG9HQUFhOztBQUU3RCxnQkFBZ0IsbUJBQU8sQ0FBQyxrR0FBWTs7QUFFcEMsZ0RBQWdELGdEQUFnRCx1Q0FBdUMsc0NBQXNDLG9GQUFvRiwyREFBMkQsRUFBRSxlQUFlOztBQUU3VSxvREFBb0QsNkNBQTZDLFlBQVksRUFBRSw4RUFBOEUsU0FBUyxnQkFBZ0IsRUFBRSxtREFBbUQsK0JBQStCLHVCQUF1QixFQUFFLGlCQUFpQixzRkFBc0YsdUJBQXVCLDJFQUEyRSxxRkFBcUYsc0NBQXNDLDBDQUEwQyxFQUFFLE9BQU8sd0JBQXdCLEVBQUUsRUFBRSxFQUFFLHNCQUFzQixhQUFhLHdCQUF3QixFQUFFLGVBQWU7O0FBRXB5Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSCxFQUFFOzs7QUFHRjtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9hbGdvcml0aG1AMC4xLjE0QEBhbnR2L2FsZ29yaXRobS9saWIvd29ya2Vycy9pbmRleC53b3JrZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgYWxnb3JpdGhtID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcIi4vYWxnb3JpdGhtXCIpKTtcblxudmFyIF9jb25zdGFudCA9IHJlcXVpcmUoXCIuL2NvbnN0YW50XCIpO1xuXG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHsgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsOyB2YXIgY2FjaGVCYWJlbEludGVyb3AgPSBuZXcgV2Vha01hcCgpOyB2YXIgY2FjaGVOb2RlSW50ZXJvcCA9IG5ldyBXZWFrTWFwKCk7IHJldHVybiAoX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKSB7IHJldHVybiBub2RlSW50ZXJvcCA/IGNhY2hlTm9kZUludGVyb3AgOiBjYWNoZUJhYmVsSW50ZXJvcDsgfSkobm9kZUludGVyb3ApOyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaiwgbm9kZUludGVyb3ApIHsgaWYgKCFub2RlSW50ZXJvcCAmJiBvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBpZiAob2JqID09PSBudWxsIHx8IF90eXBlb2Yob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgZGVmYXVsdDogb2JqIH07IH0gdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKTsgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7IHJldHVybiBjYWNoZS5nZXQob2JqKTsgfSB2YXIgbmV3T2JqID0ge307IHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoa2V5ICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7IHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsOyBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7IH0gZWxzZSB7IG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSB9IG5ld09iai5kZWZhdWx0ID0gb2JqOyBpZiAoY2FjaGUpIHsgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTsgfSByZXR1cm4gbmV3T2JqOyB9XG5cbnZhciBjdHggPSB0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgPyBzZWxmIDoge307XG5cbmN0eC5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgdmFyIF9hID0gZXZlbnQuZGF0YSxcbiAgICAgIF9hbGdvcml0aG1UeXBlID0gX2EuX2FsZ29yaXRobVR5cGUsXG4gICAgICBkYXRhID0gX2EuZGF0YTsgLy8g5aaC5p6c5Y+R6YCB5YaF5a655rKh5pyJ56eB5pyJ57G75Z6L44CC6K+05piO5LiN5piv6Ieq5bex5Y+R55qE44CC5LiN566hXG4gIC8vIGZpeDogaHR0cHM6Ly9naXRodWIuY29tL2FudHZpcy9hbGdvcml0aG0vaXNzdWVzLzI1XG5cbiAgaWYgKCFfYWxnb3JpdGhtVHlwZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICh0eXBlb2YgYWxnb3JpdGhtW19hbGdvcml0aG1UeXBlXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHZhciByZXN1bHQgPSBhbGdvcml0aG1bX2FsZ29yaXRobVR5cGVdLmFwcGx5KGFsZ29yaXRobSwgZGF0YSk7XG5cbiAgICBjdHgucG9zdE1lc3NhZ2Uoe1xuICAgICAgX2FsZ29yaXRobVR5cGU6IF9jb25zdGFudC5NRVNTQUdFLlNVQ0NFU1MsXG4gICAgICBkYXRhOiByZXN1bHRcbiAgICB9KTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjdHgucG9zdE1lc3NhZ2Uoe1xuICAgIF9hbGdvcml0aG1UeXBlOiBfY29uc3RhbnQuTUVTU0FHRS5GQUlMVVJFXG4gIH0pO1xufTsgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNTAyMTA0MTYvd2VicGFjay13b3JrZXItbG9hZGVyLWZhaWxzLXRvLWNvbXBpbGUtdHlwZXNjcmlwdC13b3JrZXJcblxuXG52YXIgX2RlZmF1bHQgPSBudWxsO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/lib/workers/index.worker.js\n");
/***/ }),
/***/ "./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/add-event-listener.js":
/*!*************************************************************************************!*\
!*** ./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/add-event-listener.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 addEventListener; });\nfunction addEventListener(target, eventType, callback) {\n if (target) {\n if (typeof target.addEventListener === 'function') {\n target.addEventListener(eventType, callback, false);\n return {\n remove: function () {\n target.removeEventListener(eventType, callback, false);\n },\n };\n // @ts-ignore\n }\n if (typeof target.attachEvent === 'function') {\n // @ts-ignore\n target.attachEvent('on' + eventType, callback);\n return {\n remove: function () {\n // @ts-ignore\n target.detachEvent('on' + eventType, callback);\n },\n };\n }\n }\n}\n//# sourceMappingURL=add-event-listener.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2RvbS11dGlsQDIuMC4zQEBhbnR2L2RvbS11dGlsL2VzbS9hZGQtZXZlbnQtbGlzdGVuZXIuanM/NmM2ZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZG9tLXV0aWxAMi4wLjNAQGFudHYvZG9tLXV0aWwvZXNtL2FkZC1ldmVudC1saXN0ZW5lci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFkZEV2ZW50TGlzdGVuZXIodGFyZ2V0LCBldmVudFR5cGUsIGNhbGxiYWNrKSB7XG4gICAgaWYgKHRhcmdldCkge1xuICAgICAgICBpZiAodHlwZW9mIHRhcmdldC5hZGRFdmVudExpc3RlbmVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGNhbGxiYWNrLCBmYWxzZSk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHJlbW92ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGNhbGxiYWNrLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB0YXJnZXQuYXR0YWNoRXZlbnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHRhcmdldC5hdHRhY2hFdmVudCgnb24nICsgZXZlbnRUeXBlLCBjYWxsYmFjayk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHJlbW92ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5kZXRhY2hFdmVudCgnb24nICsgZXZlbnRUeXBlLCBjYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1hZGQtZXZlbnQtbGlzdGVuZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/add-event-listener.js\n");
/***/ }),
/***/ "./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/create-dom.js":
/*!*****************************************************************************!*\
!*** ./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/create-dom.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 createDom; });\n/**\n * 创建DOM 节点\n * @param {String} str Dom 字符串\n * @return {HTMLElement} DOM 节点\n */\nvar TABLE;\nvar TABLE_TR;\nvar FRAGMENT_REG;\nvar CONTAINERS;\nfunction initConstants() {\n TABLE = document.createElement('table');\n TABLE_TR = document.createElement('tr');\n FRAGMENT_REG = /^\\s*<(\\w+|!)[^>]*>/;\n CONTAINERS = {\n tr: document.createElement('tbody'),\n tbody: TABLE,\n thead: TABLE,\n tfoot: TABLE,\n td: TABLE_TR,\n th: TABLE_TR,\n '*': document.createElement('div'),\n };\n}\nfunction createDom(str) {\n if (!TABLE) {\n initConstants();\n }\n var name = FRAGMENT_REG.test(str) && RegExp.$1;\n if (!name || !(name in CONTAINERS)) {\n name = '*';\n }\n var container = CONTAINERS[name];\n str = str.replace(/(^\\s*)|(\\s*$)/g, '');\n container.innerHTML = '' + str;\n var dom = container.childNodes[0];\n container.removeChild(dom);\n return dom;\n}\n//# sourceMappingURL=create-dom.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2RvbS11dGlsQDIuMC4zQEBhbnR2L2RvbS11dGlsL2VzbS9jcmVhdGUtZG9tLmpzPzBkYjciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQSxZQUFZLE9BQU87QUFDbkIsWUFBWSxZQUFZO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2RvbS11dGlsQDIuMC4zQEBhbnR2L2RvbS11dGlsL2VzbS9jcmVhdGUtZG9tLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDliJvlu7pET00g6IqC54K5XG4gKiBAcGFyYW0gIHtTdHJpbmd9IHN0ciBEb20g5a2X56ym5LiyXG4gKiBAcmV0dXJuIHtIVE1MRWxlbWVudH0gIERPTSDoioLngrlcbiAqL1xudmFyIFRBQkxFO1xudmFyIFRBQkxFX1RSO1xudmFyIEZSQUdNRU5UX1JFRztcbnZhciBDT05UQUlORVJTO1xuZnVuY3Rpb24gaW5pdENvbnN0YW50cygpIHtcbiAgICBUQUJMRSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RhYmxlJyk7XG4gICAgVEFCTEVfVFIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpO1xuICAgIEZSQUdNRU5UX1JFRyA9IC9eXFxzKjwoXFx3K3whKVtePl0qPi87XG4gICAgQ09OVEFJTkVSUyA9IHtcbiAgICAgICAgdHI6IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3Rib2R5JyksXG4gICAgICAgIHRib2R5OiBUQUJMRSxcbiAgICAgICAgdGhlYWQ6IFRBQkxFLFxuICAgICAgICB0Zm9vdDogVEFCTEUsXG4gICAgICAgIHRkOiBUQUJMRV9UUixcbiAgICAgICAgdGg6IFRBQkxFX1RSLFxuICAgICAgICAnKic6IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLFxuICAgIH07XG59XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVEb20oc3RyKSB7XG4gICAgaWYgKCFUQUJMRSkge1xuICAgICAgICBpbml0Q29uc3RhbnRzKCk7XG4gICAgfVxuICAgIHZhciBuYW1lID0gRlJBR01FTlRfUkVHLnRlc3Qoc3RyKSAmJiBSZWdFeHAuJDE7XG4gICAgaWYgKCFuYW1lIHx8ICEobmFtZSBpbiBDT05UQUlORVJTKSkge1xuICAgICAgICBuYW1lID0gJyonO1xuICAgIH1cbiAgICB2YXIgY29udGFpbmVyID0gQ09OVEFJTkVSU1tuYW1lXTtcbiAgICBzdHIgPSBzdHIucmVwbGFjZSgvKF5cXHMqKXwoXFxzKiQpL2csICcnKTtcbiAgICBjb250YWluZXIuaW5uZXJIVE1MID0gJycgKyBzdHI7XG4gICAgdmFyIGRvbSA9IGNvbnRhaW5lci5jaGlsZE5vZGVzWzBdO1xuICAgIGNvbnRhaW5lci5yZW1vdmVDaGlsZChkb20pO1xuICAgIHJldHVybiBkb207XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jcmVhdGUtZG9tLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/create-dom.js\n");
/***/ }),
/***/ "./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-height.js":
/*!*****************************************************************************!*\
!*** ./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-height.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 getHeight; });\n/* harmony import */ var _get_style__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./get-style */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-style.js\");\n\nfunction getHeight(el, defaultValue) {\n var height = Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'height', defaultValue);\n if (height === 'auto') {\n height = el.offsetHeight;\n }\n return parseFloat(height);\n}\n//# sourceMappingURL=get-height.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2RvbS11dGlsQDIuMC4zQEBhbnR2L2RvbS11dGlsL2VzbS9nZXQtaGVpZ2h0LmpzPzgxNWEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQW1DO0FBQ3BCO0FBQ2YsaUJBQWlCLDBEQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZG9tLXV0aWxAMi4wLjNAQGFudHYvZG9tLXV0aWwvZXNtL2dldC1oZWlnaHQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ2V0U3R5bGUgZnJvbSAnLi9nZXQtc3R5bGUnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0SGVpZ2h0KGVsLCBkZWZhdWx0VmFsdWUpIHtcbiAgICB2YXIgaGVpZ2h0ID0gZ2V0U3R5bGUoZWwsICdoZWlnaHQnLCBkZWZhdWx0VmFsdWUpO1xuICAgIGlmIChoZWlnaHQgPT09ICdhdXRvJykge1xuICAgICAgICBoZWlnaHQgPSBlbC5vZmZzZXRIZWlnaHQ7XG4gICAgfVxuICAgIHJldHVybiBwYXJzZUZsb2F0KGhlaWdodCk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXQtaGVpZ2h0LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-height.js\n");
/***/ }),
/***/ "./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-outer-height.js":
/*!***********************************************************************************!*\
!*** ./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-outer-height.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 getOuterHeight; });\n/* harmony import */ var _get_style__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./get-style */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-style.js\");\n/* harmony import */ var _get_height__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./get-height */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-height.js\");\n\n\nfunction getOuterHeight(el, defaultValue) {\n var height = Object(_get_height__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(el, defaultValue);\n var bTop = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'borderTopWidth')) || 0;\n var pTop = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'paddingTop')) || 0;\n var pBottom = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'paddingBottom')) || 0;\n var bBottom = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'borderBottomWidth')) || 0;\n var mTop = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'marginTop')) || 0;\n var mBottom = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'marginBottom')) || 0;\n return height + bTop + bBottom + pTop + pBottom + mTop + mBottom;\n}\n//# sourceMappingURL=get-outer-height.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2RvbS11dGlsQDIuMC4zQEBhbnR2L2RvbS11dGlsL2VzbS9nZXQtb3V0ZXItaGVpZ2h0LmpzPzFhMDciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBbUM7QUFDRTtBQUN0QjtBQUNmLGlCQUFpQiwyREFBUztBQUMxQiwwQkFBMEIsMERBQVE7QUFDbEMsMEJBQTBCLDBEQUFRO0FBQ2xDLDZCQUE2QiwwREFBUTtBQUNyQyw2QkFBNkIsMERBQVE7QUFDckMsMEJBQTBCLDBEQUFRO0FBQ2xDLDZCQUE2QiwwREFBUTtBQUNyQztBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2RvbS11dGlsQDIuMC4zQEBhbnR2L2RvbS11dGlsL2VzbS9nZXQtb3V0ZXItaGVpZ2h0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGdldFN0eWxlIGZyb20gJy4vZ2V0LXN0eWxlJztcbmltcG9ydCBnZXRIZWlnaHQgZnJvbSAnLi9nZXQtaGVpZ2h0JztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE91dGVySGVpZ2h0KGVsLCBkZWZhdWx0VmFsdWUpIHtcbiAgICB2YXIgaGVpZ2h0ID0gZ2V0SGVpZ2h0KGVsLCBkZWZhdWx0VmFsdWUpO1xuICAgIHZhciBiVG9wID0gcGFyc2VGbG9hdChnZXRTdHlsZShlbCwgJ2JvcmRlclRvcFdpZHRoJykpIHx8IDA7XG4gICAgdmFyIHBUb3AgPSBwYXJzZUZsb2F0KGdldFN0eWxlKGVsLCAncGFkZGluZ1RvcCcpKSB8fCAwO1xuICAgIHZhciBwQm90dG9tID0gcGFyc2VGbG9hdChnZXRTdHlsZShlbCwgJ3BhZGRpbmdCb3R0b20nKSkgfHwgMDtcbiAgICB2YXIgYkJvdHRvbSA9IHBhcnNlRmxvYXQoZ2V0U3R5bGUoZWwsICdib3JkZXJCb3R0b21XaWR0aCcpKSB8fCAwO1xuICAgIHZhciBtVG9wID0gcGFyc2VGbG9hdChnZXRTdHlsZShlbCwgJ21hcmdpblRvcCcpKSB8fCAwO1xuICAgIHZhciBtQm90dG9tID0gcGFyc2VGbG9hdChnZXRTdHlsZShlbCwgJ21hcmdpbkJvdHRvbScpKSB8fCAwO1xuICAgIHJldHVybiBoZWlnaHQgKyBiVG9wICsgYkJvdHRvbSArIHBUb3AgKyBwQm90dG9tICsgbVRvcCArIG1Cb3R0b207XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXQtb3V0ZXItaGVpZ2h0LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-outer-height.js\n");
/***/ }),
/***/ "./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-outer-width.js":
/*!**********************************************************************************!*\
!*** ./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-outer-width.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 getOuterWidth; });\n/* harmony import */ var _get_style__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./get-style */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-style.js\");\n/* harmony import */ var _get_width__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./get-width */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-width.js\");\n\n\nfunction getOuterWidth(el, defaultValue) {\n var width = Object(_get_width__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(el, defaultValue);\n var bLeft = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'borderLeftWidth')) || 0;\n var pLeft = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'paddingLeft')) || 0;\n var pRight = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'paddingRight')) || 0;\n var bRight = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'borderRightWidth')) || 0;\n var mRight = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'marginRight')) || 0;\n var mLeft = parseFloat(Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'marginLeft')) || 0;\n return width + bLeft + bRight + pLeft + pRight + mLeft + mRight;\n}\n//# sourceMappingURL=get-outer-width.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2RvbS11dGlsQDIuMC4zQEBhbnR2L2RvbS11dGlsL2VzbS9nZXQtb3V0ZXItd2lkdGguanM/OTgyNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFtQztBQUNBO0FBQ3BCO0FBQ2YsZ0JBQWdCLDBEQUFRO0FBQ3hCLDJCQUEyQiwwREFBUTtBQUNuQywyQkFBMkIsMERBQVE7QUFDbkMsNEJBQTRCLDBEQUFRO0FBQ3BDLDRCQUE0QiwwREFBUTtBQUNwQyw0QkFBNEIsMERBQVE7QUFDcEMsMkJBQTJCLDBEQUFRO0FBQ25DO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZG9tLXV0aWxAMi4wLjNAQGFudHYvZG9tLXV0aWwvZXNtL2dldC1vdXRlci13aWR0aC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXRTdHlsZSBmcm9tICcuL2dldC1zdHlsZSc7XG5pbXBvcnQgZ2V0V2lkdGggZnJvbSAnLi9nZXQtd2lkdGgnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0T3V0ZXJXaWR0aChlbCwgZGVmYXVsdFZhbHVlKSB7XG4gICAgdmFyIHdpZHRoID0gZ2V0V2lkdGgoZWwsIGRlZmF1bHRWYWx1ZSk7XG4gICAgdmFyIGJMZWZ0ID0gcGFyc2VGbG9hdChnZXRTdHlsZShlbCwgJ2JvcmRlckxlZnRXaWR0aCcpKSB8fCAwO1xuICAgIHZhciBwTGVmdCA9IHBhcnNlRmxvYXQoZ2V0U3R5bGUoZWwsICdwYWRkaW5nTGVmdCcpKSB8fCAwO1xuICAgIHZhciBwUmlnaHQgPSBwYXJzZUZsb2F0KGdldFN0eWxlKGVsLCAncGFkZGluZ1JpZ2h0JykpIHx8IDA7XG4gICAgdmFyIGJSaWdodCA9IHBhcnNlRmxvYXQoZ2V0U3R5bGUoZWwsICdib3JkZXJSaWdodFdpZHRoJykpIHx8IDA7XG4gICAgdmFyIG1SaWdodCA9IHBhcnNlRmxvYXQoZ2V0U3R5bGUoZWwsICdtYXJnaW5SaWdodCcpKSB8fCAwO1xuICAgIHZhciBtTGVmdCA9IHBhcnNlRmxvYXQoZ2V0U3R5bGUoZWwsICdtYXJnaW5MZWZ0JykpIHx8IDA7XG4gICAgcmV0dXJuIHdpZHRoICsgYkxlZnQgKyBiUmlnaHQgKyBwTGVmdCArIHBSaWdodCArIG1MZWZ0ICsgbVJpZ2h0O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0LW91dGVyLXdpZHRoLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-outer-width.js\n");
/***/ }),
/***/ "./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-ratio.js":
/*!****************************************************************************!*\
!*** ./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-ratio.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 getRatio; });\nfunction getRatio() {\n return window.devicePixelRatio ? window.devicePixelRatio : 2;\n}\n//# sourceMappingURL=get-ratio.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2RvbS11dGlsQDIuMC4zQEBhbnR2L2RvbS11dGlsL2VzbS9nZXQtcmF0aW8uanM/NDBlMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQWU7QUFDZjtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2RvbS11dGlsQDIuMC4zQEBhbnR2L2RvbS11dGlsL2VzbS9nZXQtcmF0aW8uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRSYXRpbygpIHtcbiAgICByZXR1cm4gd2luZG93LmRldmljZVBpeGVsUmF0aW8gPyB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyA6IDI7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXQtcmF0aW8uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-ratio.js\n");
/***/ }),
/***/ "./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-style.js":
/*!****************************************************************************!*\
!*** ./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-style.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 getStyle; });\n/**\n * 获取样式\n * @param {Object} dom DOM节点\n * @param {String} name 样式名\n * @param {Any} defaultValue 默认值\n * @return {String} 属性值\n */\nfunction getStyle(dom, name, defaultValue) {\n var v;\n try {\n v = window.getComputedStyle ?\n window.getComputedStyle(dom, null)[name] :\n dom.style[name]; // 一般不会走到这个逻辑,dom.style 获取的是标签 style 属性,也不准确\n }\n catch (e) {\n // do nothing\n }\n finally {\n v = v === undefined ? defaultValue : v;\n }\n return v;\n}\n//# sourceMappingURL=get-style.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2RvbS11dGlsQDIuMC4zQEBhbnR2L2RvbS11dGlsL2VzbS9nZXQtc3R5bGUuanM/ZDYzYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBLFlBQVksT0FBTztBQUNuQixZQUFZLE9BQU87QUFDbkIsWUFBWSxJQUFJO0FBQ2hCLFlBQVksT0FBTztBQUNuQjtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2RvbS11dGlsQDIuMC4zQEBhbnR2L2RvbS11dGlsL2VzbS9nZXQtc3R5bGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIOiOt+WPluagt+W8j1xuICogQHBhcmFtICB7T2JqZWN0fSBkb20gRE9N6IqC54K5XG4gKiBAcGFyYW0gIHtTdHJpbmd9IG5hbWUg5qC35byP5ZCNXG4gKiBAcGFyYW0gIHtBbnl9IGRlZmF1bHRWYWx1ZSDpu5jorqTlgLxcbiAqIEByZXR1cm4ge1N0cmluZ30g5bGe5oCn5YC8XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFN0eWxlKGRvbSwgbmFtZSwgZGVmYXVsdFZhbHVlKSB7XG4gICAgdmFyIHY7XG4gICAgdHJ5IHtcbiAgICAgICAgdiA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlID9cbiAgICAgICAgICAgIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvbSwgbnVsbClbbmFtZV0gOlxuICAgICAgICAgICAgZG9tLnN0eWxlW25hbWVdOyAvLyDkuIDoiKzkuI3kvJrotbDliLDov5nkuKrpgLvovpHvvIxkb20uc3R5bGUg6I635Y+W55qE5piv5qCH562+IHN0eWxlIOWxnuaAp++8jOS5n+S4jeWHhuehrlxuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgICAvLyBkbyBub3RoaW5nXG4gICAgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB2ID0gdiA9PT0gdW5kZWZpbmVkID8gZGVmYXVsdFZhbHVlIDogdjtcbiAgICB9XG4gICAgcmV0dXJuIHY7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXQtc3R5bGUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-style.js\n");
/***/ }),
/***/ "./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-width.js":
/*!****************************************************************************!*\
!*** ./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-width.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 getHeight; });\n/* harmony import */ var _get_style__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./get-style */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-style.js\");\n\nfunction getHeight(el, defaultValue) {\n var width = Object(_get_style__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(el, 'width', defaultValue);\n if (width === 'auto') {\n width = el.offsetWidth;\n }\n return parseFloat(width);\n}\n//# sourceMappingURL=get-width.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2RvbS11dGlsQDIuMC4zQEBhbnR2L2RvbS11dGlsL2VzbS9nZXQtd2lkdGguanM/YmQwNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBbUM7QUFDcEI7QUFDZixnQkFBZ0IsMERBQVE7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9kb20tdXRpbEAyLjAuM0BAYW50di9kb20tdXRpbC9lc20vZ2V0LXdpZHRoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGdldFN0eWxlIGZyb20gJy4vZ2V0LXN0eWxlJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEhlaWdodChlbCwgZGVmYXVsdFZhbHVlKSB7XG4gICAgdmFyIHdpZHRoID0gZ2V0U3R5bGUoZWwsICd3aWR0aCcsIGRlZmF1bHRWYWx1ZSk7XG4gICAgaWYgKHdpZHRoID09PSAnYXV0bycpIHtcbiAgICAgICAgd2lkdGggPSBlbC5vZmZzZXRXaWR0aDtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnNlRmxvYXQod2lkdGgpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0LXdpZHRoLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-width.js\n");
/***/ }),
/***/ "./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/index.js":
/*!************************************************************************!*\
!*** ./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/index.js ***!
\************************************************************************/
/*! exports provided: addEventListener, createDom, getHeight, getOuterHeight, getOuterWidth, getRatio, getStyle, getWidth, modifyCSS */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _add_event_listener__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./add-event-listener */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/add-event-listener.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"addEventListener\", function() { return _add_event_listener__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _create_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./create-dom */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/create-dom.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createDom\", function() { return _create_dom__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _get_height__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./get-height */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-height.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getHeight\", function() { return _get_height__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _get_outer_height__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./get-outer-height */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-outer-height.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getOuterHeight\", function() { return _get_outer_height__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _get_outer_width__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./get-outer-width */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-outer-width.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getOuterWidth\", function() { return _get_outer_width__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _get_ratio__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./get-ratio */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-ratio.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getRatio\", function() { return _get_ratio__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _get_style__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./get-style */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-style.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getStyle\", function() { return _get_style__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _get_width__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./get-width */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/get-width.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getWidth\", function() { return _get_width__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _modify_css__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./modify-css */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/modify-css.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"modifyCSS\", function() { return _modify_css__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n// dom\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2RvbS11dGlsQDIuMC4zQEBhbnR2L2RvbS11dGlsL2VzbS9pbmRleC5qcz85YmNjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDbUU7QUFDZjtBQUNBO0FBQ1c7QUFDRjtBQUNYO0FBQ0E7QUFDQTtBQUNFO0FBQ3BEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9kb20tdXRpbEAyLjAuM0BAYW50di9kb20tdXRpbC9lc20vaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBkb21cbmV4cG9ydCB7IGRlZmF1bHQgYXMgYWRkRXZlbnRMaXN0ZW5lciB9IGZyb20gJy4vYWRkLWV2ZW50LWxpc3RlbmVyJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY3JlYXRlRG9tIH0gZnJvbSAnLi9jcmVhdGUtZG9tJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0SGVpZ2h0IH0gZnJvbSAnLi9nZXQtaGVpZ2h0JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0T3V0ZXJIZWlnaHQgfSBmcm9tICcuL2dldC1vdXRlci1oZWlnaHQnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXRPdXRlcldpZHRoIH0gZnJvbSAnLi9nZXQtb3V0ZXItd2lkdGgnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnZXRSYXRpbyB9IGZyb20gJy4vZ2V0LXJhdGlvJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0U3R5bGUgfSBmcm9tICcuL2dldC1zdHlsZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldFdpZHRoIH0gZnJvbSAnLi9nZXQtd2lkdGgnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtb2RpZnlDU1MgfSBmcm9tICcuL21vZGlmeS1jc3MnO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/modify-css.js":
/*!*****************************************************************************!*\
!*** ./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/modify-css.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 modifyCSS; });\nfunction modifyCSS(dom, css) {\n if (dom) {\n for (var key in css) {\n if (css.hasOwnProperty(key)) {\n dom.style[key] = css[key];\n }\n }\n }\n return dom;\n}\n//# sourceMappingURL=modify-css.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2RvbS11dGlsQDIuMC4zQEBhbnR2L2RvbS11dGlsL2VzbS9tb2RpZnktY3NzLmpzP2QzNzMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2RvbS11dGlsQDIuMC4zQEBhbnR2L2RvbS11dGlsL2VzbS9tb2RpZnktY3NzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbW9kaWZ5Q1NTKGRvbSwgY3NzKSB7XG4gICAgaWYgKGRvbSkge1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gY3NzKSB7XG4gICAgICAgICAgICBpZiAoY3NzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgICAgICBkb20uc3R5bGVba2V5XSA9IGNzc1trZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkb207XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1tb2RpZnktY3NzLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/modify-css.js\n");
/***/ }),
/***/ "./node_modules/_@antv_event-emitter@0.1.2@@antv/event-emitter/esm/index.js":
/*!**********************************************************************************!*\
!*** ./node_modules/_@antv_event-emitter@0.1.2@@antv/event-emitter/esm/index.js ***!
\**********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar WILDCARD = '*';\n/* event-emitter */\nvar EventEmitter = /** @class */ (function () {\n function EventEmitter() {\n this._events = {};\n }\n /**\n * 监听一个事件\n * @param evt\n * @param callback\n * @param once\n */\n EventEmitter.prototype.on = function (evt, callback, once) {\n if (!this._events[evt]) {\n this._events[evt] = [];\n }\n this._events[evt].push({\n callback: callback,\n once: !!once,\n });\n return this;\n };\n /**\n * 监听一个事件一次\n * @param evt\n * @param callback\n */\n EventEmitter.prototype.once = function (evt, callback) {\n this.on(evt, callback, true);\n return this;\n };\n /**\n * 触发一个事件\n * @param evt\n * @param args\n */\n EventEmitter.prototype.emit = function (evt) {\n var _this = this;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var events = this._events[evt] || [];\n var wildcardEvents = this._events[WILDCARD] || [];\n // 实际的处理 emit 方法\n var doEmit = function (es) {\n var length = es.length;\n for (var i = 0; i < length; i++) {\n if (!es[i]) {\n continue;\n }\n var _a = es[i], callback = _a.callback, once = _a.once;\n if (once) {\n es.splice(i, 1);\n if (es.length === 0) {\n delete _this._events[evt];\n }\n length--;\n i--;\n }\n callback.apply(_this, args);\n }\n };\n doEmit(events);\n doEmit(wildcardEvents);\n };\n /**\n * 取消监听一个事件,或者一个channel\n * @param evt\n * @param callback\n */\n EventEmitter.prototype.off = function (evt, callback) {\n if (!evt) {\n // evt 为空全部清除\n this._events = {};\n }\n else {\n if (!callback) {\n // evt 存在,callback 为空,清除事件所有方法\n delete this._events[evt];\n }\n else {\n // evt 存在,callback 存在,清除匹配的\n var events = this._events[evt] || [];\n var length_1 = events.length;\n for (var i = 0; i < length_1; i++) {\n if (events[i].callback === callback) {\n events.splice(i, 1);\n length_1--;\n i--;\n }\n }\n if (events.length === 0) {\n delete this._events[evt];\n }\n }\n }\n return this;\n };\n /* 当前所有的事件 */\n EventEmitter.prototype.getEvents = function () {\n return this._events;\n };\n return EventEmitter;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (EventEmitter);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2V2ZW50LWVtaXR0ZXJAMC4xLjJAQGFudHYvZXZlbnQtZW1pdHRlci9lc20vaW5kZXguanM/OWQ5OCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLHVCQUF1QjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixZQUFZO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLGNBQWM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNjLDJFQUFZLEVBQUM7QUFDNUIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2V2ZW50LWVtaXR0ZXJAMC4xLjJAQGFudHYvZXZlbnQtZW1pdHRlci9lc20vaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgV0lMRENBUkQgPSAnKic7XG4vKiBldmVudC1lbWl0dGVyICovXG52YXIgRXZlbnRFbWl0dGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEV2ZW50RW1pdHRlcigpIHtcbiAgICAgICAgdGhpcy5fZXZlbnRzID0ge307XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOebkeWQrOS4gOS4quS6i+S7tlxuICAgICAqIEBwYXJhbSBldnRcbiAgICAgKiBAcGFyYW0gY2FsbGJhY2tcbiAgICAgKiBAcGFyYW0gb25jZVxuICAgICAqL1xuICAgIEV2ZW50RW1pdHRlci5wcm90b3R5cGUub24gPSBmdW5jdGlvbiAoZXZ0LCBjYWxsYmFjaywgb25jZSkge1xuICAgICAgICBpZiAoIXRoaXMuX2V2ZW50c1tldnRdKSB7XG4gICAgICAgICAgICB0aGlzLl9ldmVudHNbZXZ0XSA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2V2ZW50c1tldnRdLnB1c2goe1xuICAgICAgICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrLFxuICAgICAgICAgICAgb25jZTogISFvbmNlLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDnm5HlkKzkuIDkuKrkuovku7bkuIDmrKFcbiAgICAgKiBAcGFyYW0gZXZ0XG4gICAgICogQHBhcmFtIGNhbGxiYWNrXG4gICAgICovXG4gICAgRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vbmNlID0gZnVuY3Rpb24gKGV2dCwgY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5vbihldnQsIGNhbGxiYWNrLCB0cnVlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDop6blj5HkuIDkuKrkuovku7ZcbiAgICAgKiBAcGFyYW0gZXZ0XG4gICAgICogQHBhcmFtIGFyZ3NcbiAgICAgKi9cbiAgICBFdmVudEVtaXR0ZXIucHJvdG90eXBlLmVtaXQgPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBhcmdzW19pIC0gMV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICB9XG4gICAgICAgIHZhciBldmVudHMgPSB0aGlzLl9ldmVudHNbZXZ0XSB8fCBbXTtcbiAgICAgICAgdmFyIHdpbGRjYXJkRXZlbnRzID0gdGhpcy5fZXZlbnRzW1dJTERDQVJEXSB8fCBbXTtcbiAgICAgICAgLy8g5a6e6ZmF55qE5aSE55CGIGVtaXQg5pa55rOVXG4gICAgICAgIHZhciBkb0VtaXQgPSBmdW5jdGlvbiAoZXMpIHtcbiAgICAgICAgICAgIHZhciBsZW5ndGggPSBlcy5sZW5ndGg7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFlc1tpXSkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIF9hID0gZXNbaV0sIGNhbGxiYWNrID0gX2EuY2FsbGJhY2ssIG9uY2UgPSBfYS5vbmNlO1xuICAgICAgICAgICAgICAgIGlmIChvbmNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIF90aGlzLl9ldmVudHNbZXZ0XTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBsZW5ndGgtLTtcbiAgICAgICAgICAgICAgICAgICAgaS0tO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYWxsYmFjay5hcHBseShfdGhpcywgYXJncyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGRvRW1pdChldmVudHMpO1xuICAgICAgICBkb0VtaXQod2lsZGNhcmRFdmVudHMpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5Y+W5raI55uR5ZCs5LiA5Liq5LqL5Lu277yM5oiW6ICF5LiA5LiqY2hhbm5lbFxuICAgICAqIEBwYXJhbSBldnRcbiAgICAgKiBAcGFyYW0gY2FsbGJhY2tcbiAgICAgKi9cbiAgICBFdmVudEVtaXR0ZXIucHJvdG90eXBlLm9mZiA9IGZ1bmN0aW9uIChldnQsIGNhbGxiYWNrKSB7XG4gICAgICAgIGlmICghZXZ0KSB7XG4gICAgICAgICAgICAvLyBldnQg5Li656m65YWo6YOo5riF6ZmkXG4gICAgICAgICAgICB0aGlzLl9ldmVudHMgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAvLyBldnQg5a2Y5Zyo77yMY2FsbGJhY2sg5Li656m677yM5riF6Zmk5LqL5Lu25omA5pyJ5pa55rOVXG4gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2V2ZW50c1tldnRdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gZXZ0IOWtmOWcqO+8jGNhbGxiYWNrIOWtmOWcqO+8jOa4hemZpOWMuemFjeeahFxuICAgICAgICAgICAgICAgIHZhciBldmVudHMgPSB0aGlzLl9ldmVudHNbZXZ0XSB8fCBbXTtcbiAgICAgICAgICAgICAgICB2YXIgbGVuZ3RoXzEgPSBldmVudHMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoXzE7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnRzW2ldLmNhbGxiYWNrID09PSBjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRzLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aF8xLS07XG4gICAgICAgICAgICAgICAgICAgICAgICBpLS07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2V2ZW50c1tldnRdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIC8qIOW9k+WJjeaJgOacieeahOS6i+S7tiAqL1xuICAgIEV2ZW50RW1pdHRlci5wcm90b3R5cGUuZ2V0RXZlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZXZlbnRzO1xuICAgIH07XG4gICAgcmV0dXJuIEV2ZW50RW1pdHRlcjtcbn0oKSk7XG5leHBvcnQgZGVmYXVsdCBFdmVudEVtaXR0ZXI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_event-emitter@0.1.2@@antv/event-emitter/esm/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/base.js":
/*!****************************************************************************!*\
!*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/base.js ***!
\****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_event_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/event-emitter */ \"./node_modules/_@antv_event-emitter@0.1.2@@antv/event-emitter/esm/index.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/util */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/util.js\");\n\n\n\nvar Base = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Base, _super);\n function Base(cfg) {\n var _this = _super.call(this) || this;\n /**\n * 是否被销毁\n * @type {boolean}\n */\n _this.destroyed = false;\n var defaultCfg = _this.getDefaultCfg();\n _this.cfg = Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])(defaultCfg, cfg);\n return _this;\n }\n /**\n * @protected\n * 默认的配置项\n * @returns {object} 默认的配置项\n */\n Base.prototype.getDefaultCfg = function () {\n return {};\n };\n // 实现接口的方法\n Base.prototype.get = function (name) {\n return this.cfg[name];\n };\n // 实现接口的方法\n Base.prototype.set = function (name, value) {\n this.cfg[name] = value;\n };\n // 实现接口的方法\n Base.prototype.destroy = function () {\n this.cfg = {\n destroyed: true,\n };\n this.off();\n this.destroyed = true;\n };\n return Base;\n}(_antv_event_emitter__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Base);\n//# sourceMappingURL=base.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Fic3RyYWN0L2Jhc2UuanM/YzRlOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNHO0FBQ0Y7QUFDbkM7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHNEQUFHO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsT0FBTztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsMkRBQUU7QUFDVyxtRUFBSSxFQUFDO0FBQ3BCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWJhc2VAMC41LjlAQGFudHYvZy1iYXNlL2VzbS9hYnN0cmFjdC9iYXNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgRUUgZnJvbSAnQGFudHYvZXZlbnQtZW1pdHRlcic7XG5pbXBvcnQgeyBtaXggfSBmcm9tICcuLi91dGlsL3V0aWwnO1xudmFyIEJhc2UgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEJhc2UsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQmFzZShjZmcpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpcztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIOaYr+WQpuiiq+mUgOavgVxuICAgICAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgICAgICovXG4gICAgICAgIF90aGlzLmRlc3Ryb3llZCA9IGZhbHNlO1xuICAgICAgICB2YXIgZGVmYXVsdENmZyA9IF90aGlzLmdldERlZmF1bHRDZmcoKTtcbiAgICAgICAgX3RoaXMuY2ZnID0gbWl4KGRlZmF1bHRDZmcsIGNmZyk7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqIOm7mOiupOeahOmFjee9rumhuVxuICAgICAqIEByZXR1cm5zIHtvYmplY3R9IOm7mOiupOeahOmFjee9rumhuVxuICAgICAqL1xuICAgIEJhc2UucHJvdG90eXBlLmdldERlZmF1bHRDZmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9O1xuICAgIC8vIOWunueOsOaOpeWPo+eahOaWueazlVxuICAgIEJhc2UucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNmZ1tuYW1lXTtcbiAgICB9O1xuICAgIC8vIOWunueOsOaOpeWPo+eahOaWueazlVxuICAgIEJhc2UucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xuICAgICAgICB0aGlzLmNmZ1tuYW1lXSA9IHZhbHVlO1xuICAgIH07XG4gICAgLy8g5a6e546w5o6l5Y+j55qE5pa55rOVXG4gICAgQmFzZS5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5jZmcgPSB7XG4gICAgICAgICAgICBkZXN0cm95ZWQ6IHRydWUsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMub2ZmKCk7XG4gICAgICAgIHRoaXMuZGVzdHJveWVkID0gdHJ1ZTtcbiAgICB9O1xuICAgIHJldHVybiBCYXNlO1xufShFRSkpO1xuZXhwb3J0IGRlZmF1bHQgQmFzZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJhc2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/base.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/canvas.js":
/*!******************************************************************************!*\
!*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/canvas.js ***!
\******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var detect_browser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! detect-browser */ \"./node_modules/_detect-browser@5.3.0@detect-browser/es/index.js\");\n/* harmony import */ var _container__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./container */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/container.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/util */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/util.js\");\n/* harmony import */ var _animate_timeline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../animate/timeline */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/animate/timeline.js\");\n/* harmony import */ var _event_event_contoller__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../event/event-contoller */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/event/event-contoller.js\");\n\n\n\n\n\n\nvar PX_SUFFIX = 'px';\nvar browser = Object(detect_browser__WEBPACK_IMPORTED_MODULE_1__[\"detect\"])();\nvar isFirefox = browser && browser.name === 'firefox';\nvar Canvas = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Canvas, _super);\n function Canvas(cfg) {\n var _this = _super.call(this, cfg) || this;\n _this.initContainer();\n _this.initDom();\n _this.initEvents();\n _this.initTimeline();\n return _this;\n }\n Canvas.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n // set default cursor style for canvas\n cfg['cursor'] = 'default';\n // CSS transform 目前尚未经过长时间验证,为了避免影响上层业务,默认关闭,上层按需开启\n cfg['supportCSSTransform'] = false;\n return cfg;\n };\n /**\n * @protected\n * 初始化容器\n */\n Canvas.prototype.initContainer = function () {\n var container = this.get('container');\n if (Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(container)) {\n container = document.getElementById(container);\n this.set('container', container);\n }\n };\n /**\n * @protected\n * 初始化 DOM\n */\n Canvas.prototype.initDom = function () {\n var el = this.createDom();\n this.set('el', el);\n // 附加到容器\n var container = this.get('container');\n container.appendChild(el);\n // 设置初始宽度\n this.setDOMSize(this.get('width'), this.get('height'));\n };\n /**\n * @protected\n * 初始化绑定的事件\n */\n Canvas.prototype.initEvents = function () {\n var eventController = new _event_event_contoller__WEBPACK_IMPORTED_MODULE_5__[\"default\"]({\n canvas: this,\n });\n eventController.init();\n this.set('eventController', eventController);\n };\n /**\n * @protected\n * 初始化时间轴\n */\n Canvas.prototype.initTimeline = function () {\n var timeline = new _animate_timeline__WEBPACK_IMPORTED_MODULE_4__[\"default\"](this);\n this.set('timeline', timeline);\n };\n /**\n * @protected\n * 修改画布对应的 DOM 的大小\n * @param {number} width 宽度\n * @param {number} height 高度\n */\n Canvas.prototype.setDOMSize = function (width, height) {\n var el = this.get('el');\n if (_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isBrowser\"]) {\n el.style.width = width + PX_SUFFIX;\n el.style.height = height + PX_SUFFIX;\n }\n };\n // 实现接口\n Canvas.prototype.changeSize = function (width, height) {\n this.setDOMSize(width, height);\n this.set('width', width);\n this.set('height', height);\n this.onCanvasChange('changeSize');\n };\n /**\n * 获取当前的渲染引擎\n * @return {Renderer} 返回当前的渲染引擎\n */\n Canvas.prototype.getRenderer = function () {\n return this.get('renderer');\n };\n /**\n * 获取画布的 cursor 样式\n * @return {Cursor}\n */\n Canvas.prototype.getCursor = function () {\n return this.get('cursor');\n };\n /**\n * 设置画布的 cursor 样式\n * @param {Cursor} cursor cursor 样式\n */\n Canvas.prototype.setCursor = function (cursor) {\n this.set('cursor', cursor);\n var el = this.get('el');\n if (_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isBrowser\"] && el) {\n // 直接设置样式,不等待鼠标移动时再设置\n el.style.cursor = cursor;\n }\n };\n // 实现接口\n Canvas.prototype.getPointByEvent = function (ev) {\n var supportCSSTransform = this.get('supportCSSTransform');\n if (supportCSSTransform) {\n // For Firefox <= 38\n if (isFirefox && !Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isNil\"])(ev.layerX) && ev.layerX !== ev.offsetX) {\n return {\n x: ev.layerX,\n y: ev.layerY,\n };\n }\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isNil\"])(ev.offsetX)) {\n // For IE6+, Firefox >= 39, Chrome, Safari, Opera\n return {\n x: ev.offsetX,\n y: ev.offsetY,\n };\n }\n }\n // should calculate by self for other cases, like Safari in ios\n // TODO: support CSS transform\n var _a = this.getClientByEvent(ev), clientX = _a.x, clientY = _a.y;\n return this.getPointByClient(clientX, clientY);\n };\n // 获取 touch 事件的 clientX 和 clientY 需要单独处理\n Canvas.prototype.getClientByEvent = function (ev) {\n var clientInfo = ev;\n if (ev.touches) {\n if (ev.type === 'touchend') {\n clientInfo = ev.changedTouches[0];\n }\n else {\n clientInfo = ev.touches[0];\n }\n }\n return {\n x: clientInfo.clientX,\n y: clientInfo.clientY,\n };\n };\n // 实现接口\n Canvas.prototype.getPointByClient = function (clientX, clientY) {\n var el = this.get('el');\n var bbox = el.getBoundingClientRect();\n return {\n x: clientX - bbox.left,\n y: clientY - bbox.top,\n };\n };\n // 实现接口\n Canvas.prototype.getClientByPoint = function (x, y) {\n var el = this.get('el');\n var bbox = el.getBoundingClientRect();\n return {\n x: x + bbox.left,\n y: y + bbox.top,\n };\n };\n // 实现接口\n Canvas.prototype.draw = function () { };\n /**\n * @protected\n * 销毁 DOM 容器\n */\n Canvas.prototype.removeDom = function () {\n var el = this.get('el');\n el.parentNode.removeChild(el);\n };\n /**\n * @protected\n * 清理所有的事件\n */\n Canvas.prototype.clearEvents = function () {\n var eventController = this.get('eventController');\n eventController.destroy();\n };\n Canvas.prototype.isCanvas = function () {\n return true;\n };\n Canvas.prototype.getParent = function () {\n return null;\n };\n Canvas.prototype.destroy = function () {\n var timeline = this.get('timeline');\n if (this.get('destroyed')) {\n return;\n }\n this.clear();\n // 同初始化时相反顺序调用\n if (timeline) {\n // 画布销毁时自动停止动画\n timeline.stop();\n }\n this.clearEvents();\n this.removeDom();\n _super.prototype.destroy.call(this);\n };\n return Canvas;\n}(_container__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Canvas);\n//# sourceMappingURL=canvas.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Fic3RyYWN0L2NhbnZhcy5qcz85ZjFjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ007QUFDSjtBQUNzQjtBQUNmO0FBQ1k7QUFDdkQ7QUFDQSxjQUFjLDZEQUFNO0FBQ3BCO0FBQ0E7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDJEQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLDhEQUFlO0FBQ2pEO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIseURBQVE7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEI7QUFDQTtBQUNBO0FBQ0EsWUFBWSxvREFBUztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixTQUFTO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLG9EQUFTO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4Qix3REFBSztBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHdEQUFLO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyxrREFBUztBQUNJLHFFQUFNLEVBQUM7QUFDdEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Fic3RyYWN0L2NhbnZhcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgZGV0ZWN0IH0gZnJvbSAnZGV0ZWN0LWJyb3dzZXInO1xuaW1wb3J0IENvbnRhaW5lciBmcm9tICcuL2NvbnRhaW5lcic7XG5pbXBvcnQgeyBpc0Jyb3dzZXIsIGlzTmlsLCBpc1N0cmluZyB9IGZyb20gJy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgVGltZWxpbmUgZnJvbSAnLi4vYW5pbWF0ZS90aW1lbGluZSc7XG5pbXBvcnQgRXZlbnRDb250cm9sbGVyIGZyb20gJy4uL2V2ZW50L2V2ZW50LWNvbnRvbGxlcic7XG52YXIgUFhfU1VGRklYID0gJ3B4JztcbnZhciBicm93c2VyID0gZGV0ZWN0KCk7XG52YXIgaXNGaXJlZm94ID0gYnJvd3NlciAmJiBicm93c2VyLm5hbWUgPT09ICdmaXJlZm94JztcbnZhciBDYW52YXMgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKENhbnZhcywgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBDYW52YXMoY2ZnKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIGNmZykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuaW5pdENvbnRhaW5lcigpO1xuICAgICAgICBfdGhpcy5pbml0RG9tKCk7XG4gICAgICAgIF90aGlzLmluaXRFdmVudHMoKTtcbiAgICAgICAgX3RoaXMuaW5pdFRpbWVsaW5lKCk7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgQ2FudmFzLnByb3RvdHlwZS5nZXREZWZhdWx0Q2ZnID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgY2ZnID0gX3N1cGVyLnByb3RvdHlwZS5nZXREZWZhdWx0Q2ZnLmNhbGwodGhpcyk7XG4gICAgICAgIC8vIHNldCBkZWZhdWx0IGN1cnNvciBzdHlsZSBmb3IgY2FudmFzXG4gICAgICAgIGNmZ1snY3Vyc29yJ10gPSAnZGVmYXVsdCc7XG4gICAgICAgIC8vIENTUyB0cmFuc2Zvcm0g55uu5YmN5bCa5pyq57uP6L+H6ZW/5pe26Ze06aqM6K+B77yM5Li65LqG6YG/5YWN5b2x5ZON5LiK5bGC5Lia5Yqh77yM6buY6K6k5YWz6Zet77yM5LiK5bGC5oyJ6ZyA5byA5ZCvXG4gICAgICAgIGNmZ1snc3VwcG9ydENTU1RyYW5zZm9ybSddID0gZmFsc2U7XG4gICAgICAgIHJldHVybiBjZmc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICog5Yid5aeL5YyW5a655ZmoXG4gICAgICovXG4gICAgQ2FudmFzLnByb3RvdHlwZS5pbml0Q29udGFpbmVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgY29udGFpbmVyID0gdGhpcy5nZXQoJ2NvbnRhaW5lcicpO1xuICAgICAgICBpZiAoaXNTdHJpbmcoY29udGFpbmVyKSkge1xuICAgICAgICAgICAgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY29udGFpbmVyKTtcbiAgICAgICAgICAgIHRoaXMuc2V0KCdjb250YWluZXInLCBjb250YWluZXIpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICog5Yid5aeL5YyWIERPTVxuICAgICAqL1xuICAgIENhbnZhcy5wcm90b3R5cGUuaW5pdERvbSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5jcmVhdGVEb20oKTtcbiAgICAgICAgdGhpcy5zZXQoJ2VsJywgZWwpO1xuICAgICAgICAvLyDpmYTliqDliLDlrrnlmahcbiAgICAgICAgdmFyIGNvbnRhaW5lciA9IHRoaXMuZ2V0KCdjb250YWluZXInKTtcbiAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGVsKTtcbiAgICAgICAgLy8g6K6+572u5Yid5aeL5a695bqmXG4gICAgICAgIHRoaXMuc2V0RE9NU2l6ZSh0aGlzLmdldCgnd2lkdGgnKSwgdGhpcy5nZXQoJ2hlaWdodCcpKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiDliJ3lp4vljJbnu5HlrprnmoTkuovku7ZcbiAgICAgKi9cbiAgICBDYW52YXMucHJvdG90eXBlLmluaXRFdmVudHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBldmVudENvbnRyb2xsZXIgPSBuZXcgRXZlbnRDb250cm9sbGVyKHtcbiAgICAgICAgICAgIGNhbnZhczogdGhpcyxcbiAgICAgICAgfSk7XG4gICAgICAgIGV2ZW50Q29udHJvbGxlci5pbml0KCk7XG4gICAgICAgIHRoaXMuc2V0KCdldmVudENvbnRyb2xsZXInLCBldmVudENvbnRyb2xsZXIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqIOWIneWni+WMluaXtumXtOi9tFxuICAgICAqL1xuICAgIENhbnZhcy5wcm90b3R5cGUuaW5pdFRpbWVsaW5lID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdGltZWxpbmUgPSBuZXcgVGltZWxpbmUodGhpcyk7XG4gICAgICAgIHRoaXMuc2V0KCd0aW1lbGluZScsIHRpbWVsaW5lKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiDkv67mlLnnlLvluIPlr7nlupTnmoQgRE9NIOeahOWkp+Wwj1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aCAg5a695bqmXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodCDpq5jluqZcbiAgICAgKi9cbiAgICBDYW52YXMucHJvdG90eXBlLnNldERPTVNpemUgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCkge1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgaWYgKGlzQnJvd3Nlcikge1xuICAgICAgICAgICAgZWwuc3R5bGUud2lkdGggPSB3aWR0aCArIFBYX1NVRkZJWDtcbiAgICAgICAgICAgIGVsLnN0eWxlLmhlaWdodCA9IGhlaWdodCArIFBYX1NVRkZJWDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8g5a6e546w5o6l5Y+jXG4gICAgQ2FudmFzLnByb3RvdHlwZS5jaGFuZ2VTaXplID0gZnVuY3Rpb24gKHdpZHRoLCBoZWlnaHQpIHtcbiAgICAgICAgdGhpcy5zZXRET01TaXplKHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICB0aGlzLnNldCgnd2lkdGgnLCB3aWR0aCk7XG4gICAgICAgIHRoaXMuc2V0KCdoZWlnaHQnLCBoZWlnaHQpO1xuICAgICAgICB0aGlzLm9uQ2FudmFzQ2hhbmdlKCdjaGFuZ2VTaXplJyk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDojrflj5blvZPliY3nmoTmuLLmn5PlvJXmk45cbiAgICAgKiBAcmV0dXJuIHtSZW5kZXJlcn0g6L+U5Zue5b2T5YmN55qE5riy5p+T5byV5pOOXG4gICAgICovXG4gICAgQ2FudmFzLnByb3RvdHlwZS5nZXRSZW5kZXJlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdyZW5kZXJlcicpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog6I635Y+W55S75biD55qEIGN1cnNvciDmoLflvI9cbiAgICAgKiBAcmV0dXJuIHtDdXJzb3J9XG4gICAgICovXG4gICAgQ2FudmFzLnByb3RvdHlwZS5nZXRDdXJzb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldCgnY3Vyc29yJyk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDorr7nva7nlLvluIPnmoQgY3Vyc29yIOagt+W8j1xuICAgICAqIEBwYXJhbSB7Q3Vyc29yfSBjdXJzb3IgIGN1cnNvciDmoLflvI9cbiAgICAgKi9cbiAgICBDYW52YXMucHJvdG90eXBlLnNldEN1cnNvciA9IGZ1bmN0aW9uIChjdXJzb3IpIHtcbiAgICAgICAgdGhpcy5zZXQoJ2N1cnNvcicsIGN1cnNvcik7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICBpZiAoaXNCcm93c2VyICYmIGVsKSB7XG4gICAgICAgICAgICAvLyDnm7TmjqXorr7nva7moLflvI/vvIzkuI3nrYnlvoXpvKDmoIfnp7vliqjml7blho3orr7nva5cbiAgICAgICAgICAgIGVsLnN0eWxlLmN1cnNvciA9IGN1cnNvcjtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8g5a6e546w5o6l5Y+jXG4gICAgQ2FudmFzLnByb3RvdHlwZS5nZXRQb2ludEJ5RXZlbnQgPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgdmFyIHN1cHBvcnRDU1NUcmFuc2Zvcm0gPSB0aGlzLmdldCgnc3VwcG9ydENTU1RyYW5zZm9ybScpO1xuICAgICAgICBpZiAoc3VwcG9ydENTU1RyYW5zZm9ybSkge1xuICAgICAgICAgICAgLy8gRm9yIEZpcmVmb3ggPD0gMzhcbiAgICAgICAgICAgIGlmIChpc0ZpcmVmb3ggJiYgIWlzTmlsKGV2LmxheWVyWCkgJiYgZXYubGF5ZXJYICE9PSBldi5vZmZzZXRYKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgeDogZXYubGF5ZXJYLFxuICAgICAgICAgICAgICAgICAgICB5OiBldi5sYXllclksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghaXNOaWwoZXYub2Zmc2V0WCkpIHtcbiAgICAgICAgICAgICAgICAvLyBGb3IgSUU2KywgRmlyZWZveCA+PSAzOSwgQ2hyb21lLCBTYWZhcmksIE9wZXJhXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgeDogZXYub2Zmc2V0WCxcbiAgICAgICAgICAgICAgICAgICAgeTogZXYub2Zmc2V0WSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIHNob3VsZCBjYWxjdWxhdGUgYnkgc2VsZiBmb3Igb3RoZXIgY2FzZXMsIGxpa2UgU2FmYXJpIGluIGlvc1xuICAgICAgICAvLyBUT0RPOiBzdXBwb3J0IENTUyB0cmFuc2Zvcm1cbiAgICAgICAgdmFyIF9hID0gdGhpcy5nZXRDbGllbnRCeUV2ZW50KGV2KSwgY2xpZW50WCA9IF9hLngsIGNsaWVudFkgPSBfYS55O1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRQb2ludEJ5Q2xpZW50KGNsaWVudFgsIGNsaWVudFkpO1xuICAgIH07XG4gICAgLy8g6I635Y+WIHRvdWNoIOS6i+S7tueahCBjbGllbnRYIOWSjCBjbGllbnRZIOmcgOimgeWNleeLrOWkhOeQhlxuICAgIENhbnZhcy5wcm90b3R5cGUuZ2V0Q2xpZW50QnlFdmVudCA9IGZ1bmN0aW9uIChldikge1xuICAgICAgICB2YXIgY2xpZW50SW5mbyA9IGV2O1xuICAgICAgICBpZiAoZXYudG91Y2hlcykge1xuICAgICAgICAgICAgaWYgKGV2LnR5cGUgPT09ICd0b3VjaGVuZCcpIHtcbiAgICAgICAgICAgICAgICBjbGllbnRJbmZvID0gZXYuY2hhbmdlZFRvdWNoZXNbMF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjbGllbnRJbmZvID0gZXYudG91Y2hlc1swXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogY2xpZW50SW5mby5jbGllbnRYLFxuICAgICAgICAgICAgeTogY2xpZW50SW5mby5jbGllbnRZLFxuICAgICAgICB9O1xuICAgIH07XG4gICAgLy8g5a6e546w5o6l5Y+jXG4gICAgQ2FudmFzLnByb3RvdHlwZS5nZXRQb2ludEJ5Q2xpZW50ID0gZnVuY3Rpb24gKGNsaWVudFgsIGNsaWVudFkpIHtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIHZhciBiYm94ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiBjbGllbnRYIC0gYmJveC5sZWZ0LFxuICAgICAgICAgICAgeTogY2xpZW50WSAtIGJib3gudG9wLFxuICAgICAgICB9O1xuICAgIH07XG4gICAgLy8g5a6e546w5o6l5Y+jXG4gICAgQ2FudmFzLnByb3RvdHlwZS5nZXRDbGllbnRCeVBvaW50ID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIHZhciBiYm94ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiB4ICsgYmJveC5sZWZ0LFxuICAgICAgICAgICAgeTogeSArIGJib3gudG9wLFxuICAgICAgICB9O1xuICAgIH07XG4gICAgLy8g5a6e546w5o6l5Y+jXG4gICAgQ2FudmFzLnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24gKCkgeyB9O1xuICAgIC8qKlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiDplIDmr4EgRE9NIOWuueWZqFxuICAgICAqL1xuICAgIENhbnZhcy5wcm90b3R5cGUucmVtb3ZlRG9tID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbCk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICog5riF55CG5omA5pyJ55qE5LqL5Lu2XG4gICAgICovXG4gICAgQ2FudmFzLnByb3RvdHlwZS5jbGVhckV2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGV2ZW50Q29udHJvbGxlciA9IHRoaXMuZ2V0KCdldmVudENvbnRyb2xsZXInKTtcbiAgICAgICAgZXZlbnRDb250cm9sbGVyLmRlc3Ryb3koKTtcbiAgICB9O1xuICAgIENhbnZhcy5wcm90b3R5cGUuaXNDYW52YXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gICAgQ2FudmFzLnByb3RvdHlwZS5nZXRQYXJlbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gICAgQ2FudmFzLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdGltZWxpbmUgPSB0aGlzLmdldCgndGltZWxpbmUnKTtcbiAgICAgICAgaWYgKHRoaXMuZ2V0KCdkZXN0cm95ZWQnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICAgICAgLy8g5ZCM5Yid5aeL5YyW5pe255u45Y+N6aG65bqP6LCD55SoXG4gICAgICAgIGlmICh0aW1lbGluZSkge1xuICAgICAgICAgICAgLy8g55S75biD6ZSA5q+B5pe26Ieq5Yqo5YGc5q2i5Yqo55S7XG4gICAgICAgICAgICB0aW1lbGluZS5zdG9wKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jbGVhckV2ZW50cygpO1xuICAgICAgICB0aGlzLnJlbW92ZURvbSgpO1xuICAgICAgICBfc3VwZXIucHJvdG90eXBlLmRlc3Ryb3kuY2FsbCh0aGlzKTtcbiAgICB9O1xuICAgIHJldHVybiBDYW52YXM7XG59KENvbnRhaW5lcikpO1xuZXhwb3J0IGRlZmF1bHQgQ2FudmFzO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y2FudmFzLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/canvas.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/container.js":
/*!*********************************************************************************!*\
!*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/container.js ***!
\*********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./element */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/element.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/util */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/util.js\");\n\n\n\n\nvar SHAPE_MAP = {};\nvar INDEX = '_INDEX';\n/**\n * 设置 canvas\n * @param {IElement} element 元素\n * @param {ICanvas} canvas 画布\n */\nfunction setCanvas(element, canvas) {\n element.set('canvas', canvas);\n if (element.isGroup()) {\n var children = element.get('children');\n if (children.length) {\n children.forEach(function (child) {\n setCanvas(child, canvas);\n });\n }\n }\n}\n/**\n * 设置 timeline\n * @param {IElement} element 元素\n * @param {Timeline} timeline 时间轴\n */\nfunction setTimeline(element, timeline) {\n element.set('timeline', timeline);\n if (element.isGroup()) {\n var children = element.get('children');\n if (children.length) {\n children.forEach(function (child) {\n setTimeline(child, timeline);\n });\n }\n }\n}\nfunction contains(container, element) {\n var children = container.getChildren();\n return children.indexOf(element) >= 0;\n}\nfunction removeChild(container, element, destroy) {\n if (destroy === void 0) { destroy = true; }\n // 不再调用 element.remove() 方法,会出现循环调用\n if (destroy) {\n element.destroy();\n }\n else {\n element.set('parent', null);\n element.set('canvas', null);\n }\n Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"removeFromArray\"])(container.getChildren(), element);\n}\nfunction getComparer(compare) {\n return function (left, right) {\n var result = compare(left, right);\n return result === 0 ? left[INDEX] - right[INDEX] : result;\n };\n}\nvar Container = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Container, _super);\n function Container() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Container.prototype.isCanvas = function () {\n return false;\n };\n // 根据子节点确定 BBox\n Container.prototype.getBBox = function () {\n // 所有的值可能在画布的可视区外\n var minX = Infinity;\n var maxX = -Infinity;\n var minY = Infinity;\n var maxY = -Infinity;\n var xArr = [];\n var yArr = [];\n // 将可见元素、图形以及不为空的图形分组筛选出来,用于包围盒合并\n var children = this.getChildren().filter(function (child) {\n return child.get('visible') && (!child.isGroup() || (child.isGroup() && child.getChildren().length > 0));\n });\n if (children.length > 0) {\n Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(children, function (child) {\n var box = child.getBBox();\n xArr.push(box.minX, box.maxX);\n yArr.push(box.minY, box.maxY);\n });\n minX = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"min\"])(xArr);\n maxX = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"max\"])(xArr);\n minY = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"min\"])(yArr);\n maxY = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"max\"])(yArr);\n }\n else {\n minX = 0;\n maxX = 0;\n minY = 0;\n maxY = 0;\n }\n var box = {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY,\n };\n return box;\n };\n // 获取画布的包围盒\n Container.prototype.getCanvasBBox = function () {\n var minX = Infinity;\n var maxX = -Infinity;\n var minY = Infinity;\n var maxY = -Infinity;\n var xArr = [];\n var yArr = [];\n // 将可见元素、图形以及不为空的图形分组筛选出来,用于包围盒合并\n var children = this.getChildren().filter(function (child) {\n return child.get('visible') && (!child.isGroup() || (child.isGroup() && child.getChildren().length > 0));\n });\n if (children.length > 0) {\n Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(children, function (child) {\n var box = child.getCanvasBBox();\n xArr.push(box.minX, box.maxX);\n yArr.push(box.minY, box.maxY);\n });\n minX = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"min\"])(xArr);\n maxX = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"max\"])(xArr);\n minY = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"min\"])(yArr);\n maxY = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"max\"])(yArr);\n }\n else {\n minX = 0;\n maxX = 0;\n minY = 0;\n maxY = 0;\n }\n var box = {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY,\n };\n return box;\n };\n Container.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n cfg['children'] = [];\n return cfg;\n };\n Container.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n if (name === 'matrix') {\n var totalMatrix = this.getTotalMatrix();\n this._applyChildrenMarix(totalMatrix);\n }\n };\n // 不但应用到自己身上还要应用于子元素\n Container.prototype.applyMatrix = function (matrix) {\n var preTotalMatrix = this.getTotalMatrix();\n _super.prototype.applyMatrix.call(this, matrix);\n var totalMatrix = this.getTotalMatrix();\n // totalMatrix 没有发生变化时,这里仅考虑两者都为 null 时\n // 不继续向下传递矩阵\n if (totalMatrix === preTotalMatrix) {\n return;\n }\n this._applyChildrenMarix(totalMatrix);\n };\n // 在子元素上设置矩阵\n Container.prototype._applyChildrenMarix = function (totalMatrix) {\n var children = this.getChildren();\n Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(children, function (child) {\n child.applyMatrix(totalMatrix);\n });\n };\n // 兼容老版本的接口\n Container.prototype.addShape = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var type = args[0];\n var cfg = args[1];\n if (Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isObject\"])(type)) {\n cfg = type;\n }\n else {\n cfg['type'] = type;\n }\n var shapeType = SHAPE_MAP[cfg.type];\n if (!shapeType) {\n shapeType = Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"upperFirst\"])(cfg.type);\n SHAPE_MAP[cfg.type] = shapeType;\n }\n var ShapeBase = this.getShapeBase();\n var shape = new ShapeBase[shapeType](cfg);\n this.add(shape);\n return shape;\n };\n Container.prototype.addGroup = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var groupClass = args[0], cfg = args[1];\n var group;\n if (Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isFunction\"])(groupClass)) {\n if (cfg) {\n group = new groupClass(cfg);\n }\n else {\n group = new groupClass({\n // canvas,\n parent: this,\n });\n }\n }\n else {\n var tmpCfg = groupClass || {};\n var TmpGroupClass = this.getGroupBase();\n group = new TmpGroupClass(tmpCfg);\n }\n this.add(group);\n return group;\n };\n Container.prototype.getCanvas = function () {\n var canvas;\n if (this.isCanvas()) {\n canvas = this;\n }\n else {\n canvas = this.get('canvas');\n }\n return canvas;\n };\n Container.prototype.getShape = function (x, y, ev) {\n // 如果不支持拾取,则直接返回\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isAllowCapture\"])(this)) {\n return null;\n }\n var children = this.getChildren();\n var shape;\n // 如果容器是 group\n if (!this.isCanvas()) {\n var v = [x, y, 1];\n // 将 x, y 转换成对应于 group 的局部坐标\n v = this.invertFromMatrix(v);\n if (!this.isClipped(v[0], v[1])) {\n shape = this._findShape(children, v[0], v[1], ev);\n }\n }\n else {\n shape = this._findShape(children, x, y, ev);\n }\n return shape;\n };\n Container.prototype._findShape = function (children, x, y, ev) {\n var shape = null;\n for (var i = children.length - 1; i >= 0; i--) {\n var child = children[i];\n if (Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isAllowCapture\"])(child)) {\n if (child.isGroup()) {\n shape = child.getShape(x, y, ev);\n }\n else if (child.isHit(x, y)) {\n shape = child;\n }\n }\n if (shape) {\n break;\n }\n }\n return shape;\n };\n Container.prototype.add = function (element) {\n var canvas = this.getCanvas();\n var children = this.getChildren();\n var timeline = this.get('timeline');\n var preParent = element.getParent();\n if (preParent) {\n removeChild(preParent, element, false);\n }\n element.set('parent', this);\n if (canvas) {\n setCanvas(element, canvas);\n }\n if (timeline) {\n setTimeline(element, timeline);\n }\n children.push(element);\n element.onCanvasChange('add');\n this._applyElementMatrix(element);\n };\n // 将当前容器的矩阵应用到子元素\n Container.prototype._applyElementMatrix = function (element) {\n var totalMatrix = this.getTotalMatrix();\n // 添加图形或者分组时,需要把当前图元的矩阵设置进去\n if (totalMatrix) {\n element.applyMatrix(totalMatrix);\n }\n };\n Container.prototype.getChildren = function () {\n return this.get('children');\n };\n Container.prototype.sort = function () {\n var children = this.getChildren();\n // 稳定排序\n Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(children, function (child, index) {\n child[INDEX] = index;\n return child;\n });\n children.sort(getComparer(function (obj1, obj2) {\n return obj1.get('zIndex') - obj2.get('zIndex');\n }));\n this.onCanvasChange('sort');\n };\n Container.prototype.clear = function () {\n this.set('clearing', true);\n if (this.destroyed) {\n return;\n }\n var children = this.getChildren();\n for (var i = children.length - 1; i >= 0; i--) {\n children[i].destroy(); // 销毁子元素\n }\n this.set('children', []);\n this.onCanvasChange('clear');\n this.set('clearing', false);\n };\n Container.prototype.destroy = function () {\n if (this.get('destroyed')) {\n return;\n }\n this.clear();\n _super.prototype.destroy.call(this);\n };\n /**\n * 获取第一个子元素\n * @return {IElement} 第一个元素\n */\n Container.prototype.getFirst = function () {\n return this.getChildByIndex(0);\n };\n /**\n * 获取最后一个子元素\n * @return {IElement} 元素\n */\n Container.prototype.getLast = function () {\n var children = this.getChildren();\n return this.getChildByIndex(children.length - 1);\n };\n /**\n * 根据索引获取子元素\n * @return {IElement} 第一个元素\n */\n Container.prototype.getChildByIndex = function (index) {\n var children = this.getChildren();\n return children[index];\n };\n /**\n * 子元素的数量\n * @return {number} 子元素数量\n */\n Container.prototype.getCount = function () {\n var children = this.getChildren();\n return children.length;\n };\n /**\n * 是否包含对应元素\n * @param {IElement} element 元素\n * @return {boolean}\n */\n Container.prototype.contain = function (element) {\n var children = this.getChildren();\n return children.indexOf(element) > -1;\n };\n /**\n * 移除对应子元素\n * @param {IElement} element 子元素\n * @param {boolean} destroy 是否销毁子元素,默认为 true\n */\n Container.prototype.removeChild = function (element, destroy) {\n if (destroy === void 0) { destroy = true; }\n if (this.contain(element)) {\n element.remove(destroy);\n }\n };\n /**\n * 查找所有匹配的元素\n * @param {ElementFilterFn} fn 匹配函数\n * @return {IElement[]} 元素数组\n */\n Container.prototype.findAll = function (fn) {\n var rst = [];\n var children = this.getChildren();\n Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(children, function (element) {\n if (fn(element)) {\n rst.push(element);\n }\n if (element.isGroup()) {\n rst = rst.concat(element.findAll(fn));\n }\n });\n return rst;\n };\n /**\n * 查找元素,找到第一个返回\n * @param {ElementFilterFn} fn 匹配函数\n * @return {IElement|null} 元素,可以为空\n */\n Container.prototype.find = function (fn) {\n var rst = null;\n var children = this.getChildren();\n Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(children, function (element) {\n if (fn(element)) {\n rst = element;\n }\n else if (element.isGroup()) {\n rst = element.find(fn);\n }\n if (rst) {\n return false;\n }\n });\n return rst;\n };\n /**\n * 根据 ID 查找元素\n * @param {string} id 元素 id\n * @return {IElement|null} 元素\n */\n Container.prototype.findById = function (id) {\n return this.find(function (element) {\n return element.get('id') === id;\n });\n };\n /**\n * 该方法即将废弃,不建议使用\n * 根据 className 查找元素\n * TODO: 该方式定义暂时只给 G6 3.3 以后的版本使用,待 G6 中的 findByClassName 方法移除后,G 也需要同步移除\n * @param {string} className 元素 className\n * @return {IElement | null} 元素\n */\n Container.prototype.findByClassName = function (className) {\n return this.find(function (element) {\n return element.get('className') === className;\n });\n };\n /**\n * 根据 name 查找元素列表\n * @param {string} name 元素名称\n * @return {IElement[]} 元素\n */\n Container.prototype.findAllByName = function (name) {\n return this.findAll(function (element) {\n return element.get('name') === name;\n });\n };\n return Container;\n}(_element__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Container);\n//# sourceMappingURL=container.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Fic3RyYWN0L2NvbnRhaW5lci5qcz8yZTE3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDSTtBQUNOO0FBQ3VFO0FBQ3ZHO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsUUFBUTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixnQkFBZ0I7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksa0VBQWU7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxZQUFZLHVEQUFJO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixtQkFBbUIsc0RBQUc7QUFDdEIsbUJBQW1CLHNEQUFHO0FBQ3RCLG1CQUFtQixzREFBRztBQUN0QixtQkFBbUIsc0RBQUc7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsWUFBWSx1REFBSTtBQUNoQjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsbUJBQW1CLHNEQUFHO0FBQ3RCLG1CQUFtQixzREFBRztBQUN0QixtQkFBbUIsc0RBQUc7QUFDdEIsbUJBQW1CLHNEQUFHO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLHVCQUF1QjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksMkRBQVE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsNkRBQVU7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLHVCQUF1QjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksNkRBQVU7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlFQUFjO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMsUUFBUTtBQUNqRDtBQUNBLGdCQUFnQixpRUFBYztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QyxRQUFRO0FBQ2pELGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLFNBQVM7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLFNBQVM7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsU0FBUztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxTQUFTO0FBQ3hCLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsU0FBUztBQUN4QixlQUFlLFFBQVE7QUFDdkI7QUFDQTtBQUNBLGlDQUFpQyxnQkFBZ0I7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGdCQUFnQjtBQUNoQyxnQkFBZ0IsV0FBVztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsZ0JBQWdCO0FBQ2hDLGdCQUFnQixjQUFjO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsY0FBYztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixnQkFBZ0I7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixXQUFXO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxDQUFDLENBQUMsZ0RBQU87QUFDTSx3RUFBUyxFQUFDO0FBQ3pCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWJhc2VAMC41LjlAQGFudHYvZy1iYXNlL2VzbS9hYnN0cmFjdC9jb250YWluZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IG1heCwgbWluIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgRWxlbWVudCBmcm9tICcuL2VsZW1lbnQnO1xuaW1wb3J0IHsgaXNGdW5jdGlvbiwgaXNPYmplY3QsIGVhY2gsIHJlbW92ZUZyb21BcnJheSwgdXBwZXJGaXJzdCwgaXNBbGxvd0NhcHR1cmUgfSBmcm9tICcuLi91dGlsL3V0aWwnO1xudmFyIFNIQVBFX01BUCA9IHt9O1xudmFyIElOREVYID0gJ19JTkRFWCc7XG4vKipcbiAqIOiuvue9riBjYW52YXNcbiAqIEBwYXJhbSB7SUVsZW1lbnR9IGVsZW1lbnQg5YWD57SgXG4gKiBAcGFyYW0ge0lDYW52YXN9ICBjYW52YXMgIOeUu+W4g1xuICovXG5mdW5jdGlvbiBzZXRDYW52YXMoZWxlbWVudCwgY2FudmFzKSB7XG4gICAgZWxlbWVudC5zZXQoJ2NhbnZhcycsIGNhbnZhcyk7XG4gICAgaWYgKGVsZW1lbnQuaXNHcm91cCgpKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IGVsZW1lbnQuZ2V0KCdjaGlsZHJlbicpO1xuICAgICAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICAgICAgICAgIHNldENhbnZhcyhjaGlsZCwgY2FudmFzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxufVxuLyoqXG4gKiDorr7nva4gdGltZWxpbmVcbiAqIEBwYXJhbSB7SUVsZW1lbnR9IGVsZW1lbnQgIOWFg+e0oFxuICogQHBhcmFtIHtUaW1lbGluZX0gdGltZWxpbmUg5pe26Ze06L20XG4gKi9cbmZ1bmN0aW9uIHNldFRpbWVsaW5lKGVsZW1lbnQsIHRpbWVsaW5lKSB7XG4gICAgZWxlbWVudC5zZXQoJ3RpbWVsaW5lJywgdGltZWxpbmUpO1xuICAgIGlmIChlbGVtZW50LmlzR3JvdXAoKSkge1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSBlbGVtZW50LmdldCgnY2hpbGRyZW4nKTtcbiAgICAgICAgaWYgKGNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lbGluZShjaGlsZCwgdGltZWxpbmUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBjb250YWlucyhjb250YWluZXIsIGVsZW1lbnQpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSBjb250YWluZXIuZ2V0Q2hpbGRyZW4oKTtcbiAgICByZXR1cm4gY2hpbGRyZW4uaW5kZXhPZihlbGVtZW50KSA+PSAwO1xufVxuZnVuY3Rpb24gcmVtb3ZlQ2hpbGQoY29udGFpbmVyLCBlbGVtZW50LCBkZXN0cm95KSB7XG4gICAgaWYgKGRlc3Ryb3kgPT09IHZvaWQgMCkgeyBkZXN0cm95ID0gdHJ1ZTsgfVxuICAgIC8vIOS4jeWGjeiwg+eUqCBlbGVtZW50LnJlbW92ZSgpIOaWueazle+8jOS8muWHuueOsOW+queOr+iwg+eUqFxuICAgIGlmIChkZXN0cm95KSB7XG4gICAgICAgIGVsZW1lbnQuZGVzdHJveSgpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgZWxlbWVudC5zZXQoJ3BhcmVudCcsIG51bGwpO1xuICAgICAgICBlbGVtZW50LnNldCgnY2FudmFzJywgbnVsbCk7XG4gICAgfVxuICAgIHJlbW92ZUZyb21BcnJheShjb250YWluZXIuZ2V0Q2hpbGRyZW4oKSwgZWxlbWVudCk7XG59XG5mdW5jdGlvbiBnZXRDb21wYXJlcihjb21wYXJlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChsZWZ0LCByaWdodCkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gY29tcGFyZShsZWZ0LCByaWdodCk7XG4gICAgICAgIHJldHVybiByZXN1bHQgPT09IDAgPyBsZWZ0W0lOREVYXSAtIHJpZ2h0W0lOREVYXSA6IHJlc3VsdDtcbiAgICB9O1xufVxudmFyIENvbnRhaW5lciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQ29udGFpbmVyLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIENvbnRhaW5lcigpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBDb250YWluZXIucHJvdG90eXBlLmlzQ2FudmFzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICAvLyDmoLnmja7lrZDoioLngrnnoa7lrpogQkJveFxuICAgIENvbnRhaW5lci5wcm90b3R5cGUuZ2V0QkJveCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8g5omA5pyJ55qE5YC85Y+v6IO95Zyo55S75biD55qE5Y+v6KeG5Yy65aSWXG4gICAgICAgIHZhciBtaW5YID0gSW5maW5pdHk7XG4gICAgICAgIHZhciBtYXhYID0gLUluZmluaXR5O1xuICAgICAgICB2YXIgbWluWSA9IEluZmluaXR5O1xuICAgICAgICB2YXIgbWF4WSA9IC1JbmZpbml0eTtcbiAgICAgICAgdmFyIHhBcnIgPSBbXTtcbiAgICAgICAgdmFyIHlBcnIgPSBbXTtcbiAgICAgICAgLy8g5bCG5Y+v6KeB5YWD57Sg44CB5Zu+5b2i5Lul5Y+K5LiN5Li656m655qE5Zu+5b2i5YiG57uE562b6YCJ5Ye65p2l77yM55So5LqO5YyF5Zu055uS5ZCI5bm2XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oKS5maWx0ZXIoZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gY2hpbGQuZ2V0KCd2aXNpYmxlJykgJiYgKCFjaGlsZC5pc0dyb3VwKCkgfHwgKGNoaWxkLmlzR3JvdXAoKSAmJiBjaGlsZC5nZXRDaGlsZHJlbigpLmxlbmd0aCA+IDApKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBlYWNoKGNoaWxkcmVuLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgICAgICAgICB2YXIgYm94ID0gY2hpbGQuZ2V0QkJveCgpO1xuICAgICAgICAgICAgICAgIHhBcnIucHVzaChib3gubWluWCwgYm94Lm1heFgpO1xuICAgICAgICAgICAgICAgIHlBcnIucHVzaChib3gubWluWSwgYm94Lm1heFkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBtaW5YID0gbWluKHhBcnIpO1xuICAgICAgICAgICAgbWF4WCA9IG1heCh4QXJyKTtcbiAgICAgICAgICAgIG1pblkgPSBtaW4oeUFycik7XG4gICAgICAgICAgICBtYXhZID0gbWF4KHlBcnIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbWluWCA9IDA7XG4gICAgICAgICAgICBtYXhYID0gMDtcbiAgICAgICAgICAgIG1pblkgPSAwO1xuICAgICAgICAgICAgbWF4WSA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGJveCA9IHtcbiAgICAgICAgICAgIHg6IG1pblgsXG4gICAgICAgICAgICB5OiBtaW5ZLFxuICAgICAgICAgICAgbWluWDogbWluWCxcbiAgICAgICAgICAgIG1pblk6IG1pblksXG4gICAgICAgICAgICBtYXhYOiBtYXhYLFxuICAgICAgICAgICAgbWF4WTogbWF4WSxcbiAgICAgICAgICAgIHdpZHRoOiBtYXhYIC0gbWluWCxcbiAgICAgICAgICAgIGhlaWdodDogbWF4WSAtIG1pblksXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBib3g7XG4gICAgfTtcbiAgICAvLyDojrflj5bnlLvluIPnmoTljIXlm7Tnm5JcbiAgICBDb250YWluZXIucHJvdG90eXBlLmdldENhbnZhc0JCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBtaW5YID0gSW5maW5pdHk7XG4gICAgICAgIHZhciBtYXhYID0gLUluZmluaXR5O1xuICAgICAgICB2YXIgbWluWSA9IEluZmluaXR5O1xuICAgICAgICB2YXIgbWF4WSA9IC1JbmZpbml0eTtcbiAgICAgICAgdmFyIHhBcnIgPSBbXTtcbiAgICAgICAgdmFyIHlBcnIgPSBbXTtcbiAgICAgICAgLy8g5bCG5Y+v6KeB5YWD57Sg44CB5Zu+5b2i5Lul5Y+K5LiN5Li656m655qE5Zu+5b2i5YiG57uE562b6YCJ5Ye65p2l77yM55So5LqO5YyF5Zu055uS5ZCI5bm2XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oKS5maWx0ZXIoZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gY2hpbGQuZ2V0KCd2aXNpYmxlJykgJiYgKCFjaGlsZC5pc0dyb3VwKCkgfHwgKGNoaWxkLmlzR3JvdXAoKSAmJiBjaGlsZC5nZXRDaGlsZHJlbigpLmxlbmd0aCA+IDApKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBlYWNoKGNoaWxkcmVuLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgICAgICAgICB2YXIgYm94ID0gY2hpbGQuZ2V0Q2FudmFzQkJveCgpO1xuICAgICAgICAgICAgICAgIHhBcnIucHVzaChib3gubWluWCwgYm94Lm1heFgpO1xuICAgICAgICAgICAgICAgIHlBcnIucHVzaChib3gubWluWSwgYm94Lm1heFkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBtaW5YID0gbWluKHhBcnIpO1xuICAgICAgICAgICAgbWF4WCA9IG1heCh4QXJyKTtcbiAgICAgICAgICAgIG1pblkgPSBtaW4oeUFycik7XG4gICAgICAgICAgICBtYXhZID0gbWF4KHlBcnIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbWluWCA9IDA7XG4gICAgICAgICAgICBtYXhYID0gMDtcbiAgICAgICAgICAgIG1pblkgPSAwO1xuICAgICAgICAgICAgbWF4WSA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGJveCA9IHtcbiAgICAgICAgICAgIHg6IG1pblgsXG4gICAgICAgICAgICB5OiBtaW5ZLFxuICAgICAgICAgICAgbWluWDogbWluWCxcbiAgICAgICAgICAgIG1pblk6IG1pblksXG4gICAgICAgICAgICBtYXhYOiBtYXhYLFxuICAgICAgICAgICAgbWF4WTogbWF4WSxcbiAgICAgICAgICAgIHdpZHRoOiBtYXhYIC0gbWluWCxcbiAgICAgICAgICAgIGhlaWdodDogbWF4WSAtIG1pblksXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBib3g7XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLmdldERlZmF1bHRDZmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjZmcgPSBfc3VwZXIucHJvdG90eXBlLmdldERlZmF1bHRDZmcuY2FsbCh0aGlzKTtcbiAgICAgICAgY2ZnWydjaGlsZHJlbiddID0gW107XG4gICAgICAgIHJldHVybiBjZmc7XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLm9uQXR0ckNoYW5nZSA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSwgb3JpZ2luVmFsdWUpIHtcbiAgICAgICAgX3N1cGVyLnByb3RvdHlwZS5vbkF0dHJDaGFuZ2UuY2FsbCh0aGlzLCBuYW1lLCB2YWx1ZSwgb3JpZ2luVmFsdWUpO1xuICAgICAgICBpZiAobmFtZSA9PT0gJ21hdHJpeCcpIHtcbiAgICAgICAgICAgIHZhciB0b3RhbE1hdHJpeCA9IHRoaXMuZ2V0VG90YWxNYXRyaXgoKTtcbiAgICAgICAgICAgIHRoaXMuX2FwcGx5Q2hpbGRyZW5NYXJpeCh0b3RhbE1hdHJpeCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIOS4jeS9huW6lOeUqOWIsOiHquW3sei6q+S4iui/mOimgeW6lOeUqOS6juWtkOWFg+e0oFxuICAgIENvbnRhaW5lci5wcm90b3R5cGUuYXBwbHlNYXRyaXggPSBmdW5jdGlvbiAobWF0cml4KSB7XG4gICAgICAgIHZhciBwcmVUb3RhbE1hdHJpeCA9IHRoaXMuZ2V0VG90YWxNYXRyaXgoKTtcbiAgICAgICAgX3N1cGVyLnByb3RvdHlwZS5hcHBseU1hdHJpeC5jYWxsKHRoaXMsIG1hdHJpeCk7XG4gICAgICAgIHZhciB0b3RhbE1hdHJpeCA9IHRoaXMuZ2V0VG90YWxNYXRyaXgoKTtcbiAgICAgICAgLy8gdG90YWxNYXRyaXgg5rKh5pyJ5Y+R55Sf5Y+Y5YyW5pe277yM6L+Z6YeM5LuF6ICD6JmR5Lik6ICF6YO95Li6IG51bGwg5pe2XG4gICAgICAgIC8vIOS4jee7p+e7reWQkeS4i+S8oOmAkuefqemYtVxuICAgICAgICBpZiAodG90YWxNYXRyaXggPT09IHByZVRvdGFsTWF0cml4KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fYXBwbHlDaGlsZHJlbk1hcml4KHRvdGFsTWF0cml4KTtcbiAgICB9O1xuICAgIC8vIOWcqOWtkOWFg+e0oOS4iuiuvue9ruefqemYtVxuICAgIENvbnRhaW5lci5wcm90b3R5cGUuX2FwcGx5Q2hpbGRyZW5NYXJpeCA9IGZ1bmN0aW9uICh0b3RhbE1hdHJpeCkge1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKCk7XG4gICAgICAgIGVhY2goY2hpbGRyZW4sIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICAgICAgY2hpbGQuYXBwbHlNYXRyaXgodG90YWxNYXRyaXgpO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIC8vIOWFvOWuueiAgeeJiOacrOeahOaOpeWPo1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuYWRkU2hhcGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHR5cGUgPSBhcmdzWzBdO1xuICAgICAgICB2YXIgY2ZnID0gYXJnc1sxXTtcbiAgICAgICAgaWYgKGlzT2JqZWN0KHR5cGUpKSB7XG4gICAgICAgICAgICBjZmcgPSB0eXBlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY2ZnWyd0eXBlJ10gPSB0eXBlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzaGFwZVR5cGUgPSBTSEFQRV9NQVBbY2ZnLnR5cGVdO1xuICAgICAgICBpZiAoIXNoYXBlVHlwZSkge1xuICAgICAgICAgICAgc2hhcGVUeXBlID0gdXBwZXJGaXJzdChjZmcudHlwZSk7XG4gICAgICAgICAgICBTSEFQRV9NQVBbY2ZnLnR5cGVdID0gc2hhcGVUeXBlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBTaGFwZUJhc2UgPSB0aGlzLmdldFNoYXBlQmFzZSgpO1xuICAgICAgICB2YXIgc2hhcGUgPSBuZXcgU2hhcGVCYXNlW3NoYXBlVHlwZV0oY2ZnKTtcbiAgICAgICAgdGhpcy5hZGQoc2hhcGUpO1xuICAgICAgICByZXR1cm4gc2hhcGU7XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLmFkZEdyb3VwID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXJncyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgYXJnc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICB9XG4gICAgICAgIHZhciBncm91cENsYXNzID0gYXJnc1swXSwgY2ZnID0gYXJnc1sxXTtcbiAgICAgICAgdmFyIGdyb3VwO1xuICAgICAgICBpZiAoaXNGdW5jdGlvbihncm91cENsYXNzKSkge1xuICAgICAgICAgICAgaWYgKGNmZykge1xuICAgICAgICAgICAgICAgIGdyb3VwID0gbmV3IGdyb3VwQ2xhc3MoY2ZnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGdyb3VwID0gbmV3IGdyb3VwQ2xhc3Moe1xuICAgICAgICAgICAgICAgICAgICAvLyBjYW52YXMsXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudDogdGhpcyxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciB0bXBDZmcgPSBncm91cENsYXNzIHx8IHt9O1xuICAgICAgICAgICAgdmFyIFRtcEdyb3VwQ2xhc3MgPSB0aGlzLmdldEdyb3VwQmFzZSgpO1xuICAgICAgICAgICAgZ3JvdXAgPSBuZXcgVG1wR3JvdXBDbGFzcyh0bXBDZmcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWRkKGdyb3VwKTtcbiAgICAgICAgcmV0dXJuIGdyb3VwO1xuICAgIH07XG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5nZXRDYW52YXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjYW52YXM7XG4gICAgICAgIGlmICh0aGlzLmlzQ2FudmFzKCkpIHtcbiAgICAgICAgICAgIGNhbnZhcyA9IHRoaXM7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjYW52YXMgPSB0aGlzLmdldCgnY2FudmFzJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNhbnZhcztcbiAgICB9O1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuZ2V0U2hhcGUgPSBmdW5jdGlvbiAoeCwgeSwgZXYpIHtcbiAgICAgICAgLy8g5aaC5p6c5LiN5pSv5oyB5ou+5Y+W77yM5YiZ55u05o6l6L+U5ZueXG4gICAgICAgIGlmICghaXNBbGxvd0NhcHR1cmUodGhpcykpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgdmFyIHNoYXBlO1xuICAgICAgICAvLyDlpoLmnpzlrrnlmajmmK8gZ3JvdXBcbiAgICAgICAgaWYgKCF0aGlzLmlzQ2FudmFzKCkpIHtcbiAgICAgICAgICAgIHZhciB2ID0gW3gsIHksIDFdO1xuICAgICAgICAgICAgLy8g5bCGIHgsIHkg6L2s5o2i5oiQ5a+55bqU5LqOIGdyb3VwIOeahOWxgOmDqOWdkOagh1xuICAgICAgICAgICAgdiA9IHRoaXMuaW52ZXJ0RnJvbU1hdHJpeCh2KTtcbiAgICAgICAgICAgIGlmICghdGhpcy5pc0NsaXBwZWQodlswXSwgdlsxXSkpIHtcbiAgICAgICAgICAgICAgICBzaGFwZSA9IHRoaXMuX2ZpbmRTaGFwZShjaGlsZHJlbiwgdlswXSwgdlsxXSwgZXYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc2hhcGUgPSB0aGlzLl9maW5kU2hhcGUoY2hpbGRyZW4sIHgsIHksIGV2KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2hhcGU7XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLl9maW5kU2hhcGUgPSBmdW5jdGlvbiAoY2hpbGRyZW4sIHgsIHksIGV2KSB7XG4gICAgICAgIHZhciBzaGFwZSA9IG51bGw7XG4gICAgICAgIGZvciAodmFyIGkgPSBjaGlsZHJlbi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5baV07XG4gICAgICAgICAgICBpZiAoaXNBbGxvd0NhcHR1cmUoY2hpbGQpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkLmlzR3JvdXAoKSkge1xuICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IGNoaWxkLmdldFNoYXBlKHgsIHksIGV2KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hpbGQuaXNIaXQoeCwgeSkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBjaGlsZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc2hhcGUpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2hhcGU7XG4gICAgfTtcbiAgICBDb250YWluZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgIHZhciBjYW52YXMgPSB0aGlzLmdldENhbnZhcygpO1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKCk7XG4gICAgICAgIHZhciB0aW1lbGluZSA9IHRoaXMuZ2V0KCd0aW1lbGluZScpO1xuICAgICAgICB2YXIgcHJlUGFyZW50ID0gZWxlbWVudC5nZXRQYXJlbnQoKTtcbiAgICAgICAgaWYgKHByZVBhcmVudCkge1xuICAgICAgICAgICAgcmVtb3ZlQ2hpbGQocHJlUGFyZW50LCBlbGVtZW50LCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxlbWVudC5zZXQoJ3BhcmVudCcsIHRoaXMpO1xuICAgICAgICBpZiAoY2FudmFzKSB7XG4gICAgICAgICAgICBzZXRDYW52YXMoZWxlbWVudCwgY2FudmFzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGltZWxpbmUpIHtcbiAgICAgICAgICAgIHNldFRpbWVsaW5lKGVsZW1lbnQsIHRpbWVsaW5lKTtcbiAgICAgICAgfVxuICAgICAgICBjaGlsZHJlbi5wdXNoKGVsZW1lbnQpO1xuICAgICAgICBlbGVtZW50Lm9uQ2FudmFzQ2hhbmdlKCdhZGQnKTtcbiAgICAgICAgdGhpcy5fYXBwbHlFbGVtZW50TWF0cml4KGVsZW1lbnQpO1xuICAgIH07XG4gICAgLy8g5bCG5b2T5YmN5a655Zmo55qE55+p6Zi15bqU55So5Yiw5a2Q5YWD57SgXG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5fYXBwbHlFbGVtZW50TWF0cml4ID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgdmFyIHRvdGFsTWF0cml4ID0gdGhpcy5nZXRUb3RhbE1hdHJpeCgpO1xuICAgICAgICAvLyDmt7vliqDlm77lvaLmiJbogIXliIbnu4Tml7bvvIzpnIDopoHmiorlvZPliY3lm77lhYPnmoTnn6npmLXorr7nva7ov5vljrtcbiAgICAgICAgaWYgKHRvdGFsTWF0cml4KSB7XG4gICAgICAgICAgICBlbGVtZW50LmFwcGx5TWF0cml4KHRvdGFsTWF0cml4KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5nZXRDaGlsZHJlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KCdjaGlsZHJlbicpO1xuICAgIH07XG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5zb3J0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKCk7XG4gICAgICAgIC8vIOeos+WumuaOkuW6j1xuICAgICAgICBlYWNoKGNoaWxkcmVuLCBmdW5jdGlvbiAoY2hpbGQsIGluZGV4KSB7XG4gICAgICAgICAgICBjaGlsZFtJTkRFWF0gPSBpbmRleDtcbiAgICAgICAgICAgIHJldHVybiBjaGlsZDtcbiAgICAgICAgfSk7XG4gICAgICAgIGNoaWxkcmVuLnNvcnQoZ2V0Q29tcGFyZXIoZnVuY3Rpb24gKG9iajEsIG9iajIpIHtcbiAgICAgICAgICAgIHJldHVybiBvYmoxLmdldCgnekluZGV4JykgLSBvYmoyLmdldCgnekluZGV4Jyk7XG4gICAgICAgIH0pKTtcbiAgICAgICAgdGhpcy5vbkNhbnZhc0NoYW5nZSgnc29ydCcpO1xuICAgIH07XG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5zZXQoJ2NsZWFyaW5nJywgdHJ1ZSk7XG4gICAgICAgIGlmICh0aGlzLmRlc3Ryb3llZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IGNoaWxkcmVuLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBjaGlsZHJlbltpXS5kZXN0cm95KCk7IC8vIOmUgOavgeWtkOWFg+e0oFxuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0KCdjaGlsZHJlbicsIFtdKTtcbiAgICAgICAgdGhpcy5vbkNhbnZhc0NoYW5nZSgnY2xlYXInKTtcbiAgICAgICAgdGhpcy5zZXQoJ2NsZWFyaW5nJywgZmFsc2UpO1xuICAgIH07XG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5nZXQoJ2Rlc3Ryb3llZCcpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgICBfc3VwZXIucHJvdG90eXBlLmRlc3Ryb3kuY2FsbCh0aGlzKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOiOt+WPluesrOS4gOS4quWtkOWFg+e0oFxuICAgICAqIEByZXR1cm4ge0lFbGVtZW50fSDnrKzkuIDkuKrlhYPntKBcbiAgICAgKi9cbiAgICBDb250YWluZXIucHJvdG90eXBlLmdldEZpcnN0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRDaGlsZEJ5SW5kZXgoMCk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDojrflj5bmnIDlkI7kuIDkuKrlrZDlhYPntKBcbiAgICAgKiBAcmV0dXJuIHtJRWxlbWVudH0g5YWD57SgXG4gICAgICovXG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5nZXRMYXN0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmdldENoaWxkQnlJbmRleChjaGlsZHJlbi5sZW5ndGggLSAxKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOagueaNrue0ouW8leiOt+WPluWtkOWFg+e0oFxuICAgICAqIEByZXR1cm4ge0lFbGVtZW50fSDnrKzkuIDkuKrlhYPntKBcbiAgICAgKi9cbiAgICBDb250YWluZXIucHJvdG90eXBlLmdldENoaWxkQnlJbmRleCA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKCk7XG4gICAgICAgIHJldHVybiBjaGlsZHJlbltpbmRleF07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDlrZDlhYPntKDnmoTmlbDph49cbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IOWtkOWFg+e0oOaVsOmHj1xuICAgICAqL1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuZ2V0Q291bnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuLmxlbmd0aDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOaYr+WQpuWMheWQq+WvueW6lOWFg+e0oFxuICAgICAqIEBwYXJhbSB7SUVsZW1lbnR9IGVsZW1lbnQg5YWD57SgXG4gICAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICBDb250YWluZXIucHJvdG90eXBlLmNvbnRhaW4gPSBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKCk7XG4gICAgICAgIHJldHVybiBjaGlsZHJlbi5pbmRleE9mKGVsZW1lbnQpID4gLTE7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDnp7vpmaTlr7nlupTlrZDlhYPntKBcbiAgICAgKiBAcGFyYW0ge0lFbGVtZW50fSBlbGVtZW50IOWtkOWFg+e0oFxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gZGVzdHJveSDmmK/lkKbplIDmr4HlrZDlhYPntKDvvIzpu5jorqTkuLogdHJ1ZVxuICAgICAqL1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUucmVtb3ZlQ2hpbGQgPSBmdW5jdGlvbiAoZWxlbWVudCwgZGVzdHJveSkge1xuICAgICAgICBpZiAoZGVzdHJveSA9PT0gdm9pZCAwKSB7IGRlc3Ryb3kgPSB0cnVlOyB9XG4gICAgICAgIGlmICh0aGlzLmNvbnRhaW4oZWxlbWVudCkpIHtcbiAgICAgICAgICAgIGVsZW1lbnQucmVtb3ZlKGRlc3Ryb3kpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDmn6Xmib7miYDmnInljLnphY3nmoTlhYPntKBcbiAgICAgKiBAcGFyYW0gIHtFbGVtZW50RmlsdGVyRm59ICAgZm4gIOWMuemFjeWHveaVsFxuICAgICAqIEByZXR1cm4ge0lFbGVtZW50W119IOWFg+e0oOaVsOe7hFxuICAgICAqL1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuZmluZEFsbCA9IGZ1bmN0aW9uIChmbikge1xuICAgICAgICB2YXIgcnN0ID0gW107XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgZWFjaChjaGlsZHJlbiwgZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIGlmIChmbihlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIHJzdC5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuaXNHcm91cCgpKSB7XG4gICAgICAgICAgICAgICAgcnN0ID0gcnN0LmNvbmNhdChlbGVtZW50LmZpbmRBbGwoZm4pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByc3Q7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDmn6Xmib7lhYPntKDvvIzmib7liLDnrKzkuIDkuKrov5Tlm55cbiAgICAgKiBAcGFyYW0gIHtFbGVtZW50RmlsdGVyRm59IGZuICAgIOWMuemFjeWHveaVsFxuICAgICAqIEByZXR1cm4ge0lFbGVtZW50fG51bGx9IOWFg+e0oO+8jOWPr+S7peS4uuepulxuICAgICAqL1xuICAgIENvbnRhaW5lci5wcm90b3R5cGUuZmluZCA9IGZ1bmN0aW9uIChmbikge1xuICAgICAgICB2YXIgcnN0ID0gbnVsbDtcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5nZXRDaGlsZHJlbigpO1xuICAgICAgICBlYWNoKGNoaWxkcmVuLCBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKGZuKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgcnN0ID0gZWxlbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGVsZW1lbnQuaXNHcm91cCgpKSB7XG4gICAgICAgICAgICAgICAgcnN0ID0gZWxlbWVudC5maW5kKGZuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChyc3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcnN0O1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5qC55o2uIElEIOafpeaJvuWFg+e0oFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBpZCDlhYPntKAgaWRcbiAgICAgKiBAcmV0dXJuIHtJRWxlbWVudHxudWxsfSDlhYPntKBcbiAgICAgKi9cbiAgICBDb250YWluZXIucHJvdG90eXBlLmZpbmRCeUlkID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmQoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50LmdldCgnaWQnKSA9PT0gaWQ7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog6K+l5pa55rOV5Y2z5bCG5bqf5byD77yM5LiN5bu66K6u5L2/55SoXG4gICAgICog5qC55o2uIGNsYXNzTmFtZSDmn6Xmib7lhYPntKBcbiAgICAgKiBUT0RPOiDor6XmlrnlvI/lrprkuYnmmoLml7blj6rnu5kgRzYgMy4zIOS7peWQjueahOeJiOacrOS9v+eUqO+8jOW+hSBHNiDkuK3nmoQgZmluZEJ5Q2xhc3NOYW1lIOaWueazleenu+mZpOWQju+8jEcg5Lmf6ZyA6KaB5ZCM5q2l56e76ZmkXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGNsYXNzTmFtZSDlhYPntKAgY2xhc3NOYW1lXG4gICAgICogQHJldHVybiB7SUVsZW1lbnQgfCBudWxsfSDlhYPntKBcbiAgICAgKi9cbiAgICBDb250YWluZXIucHJvdG90eXBlLmZpbmRCeUNsYXNzTmFtZSA9IGZ1bmN0aW9uIChjbGFzc05hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCdjbGFzc05hbWUnKSA9PT0gY2xhc3NOYW1lO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOagueaNriBuYW1lIOafpeaJvuWFg+e0oOWIl+ihqFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSAgICAgIG5hbWUg5YWD57Sg5ZCN56ewXG4gICAgICogQHJldHVybiB7SUVsZW1lbnRbXX0g5YWD57SgXG4gICAgICovXG4gICAgQ29udGFpbmVyLnByb3RvdHlwZS5maW5kQWxsQnlOYW1lID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZEFsbChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCduYW1lJykgPT09IG5hbWU7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgcmV0dXJuIENvbnRhaW5lcjtcbn0oRWxlbWVudCkpO1xuZXhwb3J0IGRlZmF1bHQgQ29udGFpbmVyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29udGFpbmVyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/container.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/element.js":
/*!*******************************************************************************!*\
!*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/element.js ***!
\*******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/_@antv_matrix-util@3.1.0-beta.3@@antv/matrix-util/esm/index.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/util */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/util.js\");\n/* harmony import */ var _util_matrix__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/matrix */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/matrix.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/base.js\");\n\n\n\n\n\n\nvar transform = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_2__[\"ext\"].transform;\nvar MATRIX = 'matrix';\nvar CLONE_CFGS = ['zIndex', 'capture', 'visible', 'type'];\n// 可以在 toAttrs 中设置,但不属于绘图属性的字段\nvar RESERVED_PORPS = ['repeat'];\nvar DELEGATION_SPLIT = ':';\nvar WILDCARD = '*';\n// 需要考虑数组嵌套数组的场景\n// 数组嵌套对象的场景不考虑\nfunction _cloneArrayAttr(arr) {\n var result = [];\n for (var i = 0; i < arr.length; i++) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(arr[i])) {\n result.push([].concat(arr[i]));\n }\n else {\n result.push(arr[i]);\n }\n }\n return result;\n}\nfunction getFormatFromAttrs(toAttrs, shape) {\n var fromAttrs = {};\n var attrs = shape.attrs;\n for (var k in toAttrs) {\n fromAttrs[k] = attrs[k];\n }\n return fromAttrs;\n}\nfunction getFormatToAttrs(props, shape) {\n var toAttrs = {};\n var attrs = shape.attr();\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(props, function (v, k) {\n if (RESERVED_PORPS.indexOf(k) === -1 && !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isEqual\"])(attrs[k], v)) {\n toAttrs[k] = v;\n }\n });\n return toAttrs;\n}\nfunction checkExistedAttrs(animations, animation) {\n if (animation.onFrame) {\n return animations;\n }\n var startTime = animation.startTime, delay = animation.delay, duration = animation.duration;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(animations, function (item) {\n // 后一个动画开始执行的时间 < 前一个动画的结束时间 && 后一个动画的执行时间 > 前一个动画的延迟\n if (startTime + delay < item.startTime + item.delay + item.duration && duration > item.delay) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(animation.toAttrs, function (v, k) {\n if (hasOwnProperty.call(item.toAttrs, k)) {\n delete item.toAttrs[k];\n delete item.fromAttrs[k];\n }\n });\n }\n });\n return animations;\n}\nvar Element = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Element, _super);\n function Element(cfg) {\n var _this = _super.call(this, cfg) || this;\n /**\n * @protected\n * 图形属性\n * @type {ShapeAttrs}\n */\n _this.attrs = {};\n var attrs = _this.getDefaultAttrs();\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])(attrs, cfg.attrs);\n _this.attrs = attrs;\n _this.initAttrs(attrs);\n _this.initAnimate(); // 初始化动画\n return _this;\n }\n // override\n Element.prototype.getDefaultCfg = function () {\n return {\n visible: true,\n capture: true,\n zIndex: 0,\n };\n };\n /**\n * @protected\n * 获取默认的属相\n */\n Element.prototype.getDefaultAttrs = function () {\n return {\n matrix: this.getDefaultMatrix(),\n opacity: 1,\n };\n };\n /**\n * @protected\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n Element.prototype.onCanvasChange = function (changeType) { };\n /**\n * @protected\n * 初始化属性,有些属性需要加工\n * @param {object} attrs 属性值\n */\n Element.prototype.initAttrs = function (attrs) { };\n /**\n * @protected\n * 初始化动画\n */\n Element.prototype.initAnimate = function () {\n this.set('animable', true);\n this.set('animating', false);\n };\n Element.prototype.isGroup = function () {\n return false;\n };\n Element.prototype.getParent = function () {\n return this.get('parent');\n };\n Element.prototype.getCanvas = function () {\n return this.get('canvas');\n };\n Element.prototype.attr = function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var name = args[0], value = args[1];\n if (!name)\n return this.attrs;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(name)) {\n for (var k in name) {\n this.setAttr(k, name[k]);\n }\n this.afterAttrsChange(name);\n return this;\n }\n if (args.length === 2) {\n this.setAttr(name, value);\n this.afterAttrsChange((_a = {},\n _a[name] = value,\n _a));\n return this;\n }\n return this.attrs[name];\n };\n // 是否被裁剪,被裁剪则不显示,不参与拾取\n Element.prototype.isClipped = function (refX, refY) {\n var clip = this.getClip();\n return clip && !clip.isHit(refX, refY);\n };\n /**\n * 内部设置属性值的接口\n * @param {string} name 属性名\n * @param {any} value 属性值\n */\n Element.prototype.setAttr = function (name, value) {\n var originValue = this.attrs[name];\n if (originValue !== value) {\n this.attrs[name] = value;\n this.onAttrChange(name, value, originValue);\n }\n };\n /**\n * @protected\n * 属性值发生改变\n * @param {string} name 属性名\n * @param {any} value 属性值\n * @param {any} originValue 属性值\n */\n Element.prototype.onAttrChange = function (name, value, originValue) {\n if (name === 'matrix') {\n this.set('totalMatrix', null);\n }\n };\n /**\n * 属性更改后需要做的事情\n * @protected\n */\n Element.prototype.afterAttrsChange = function (targetAttrs) {\n if (this.cfg.isClipShape) {\n var applyTo = this.cfg.applyTo;\n if (applyTo) {\n applyTo.onCanvasChange('clip');\n }\n }\n else {\n this.onCanvasChange('attr');\n }\n };\n Element.prototype.show = function () {\n // 不是高频操作直接使用 set\n this.set('visible', true);\n this.onCanvasChange('show');\n return this;\n };\n Element.prototype.hide = function () {\n // 不是高频操作直接使用 set\n this.set('visible', false);\n this.onCanvasChange('hide');\n return this;\n };\n Element.prototype.setZIndex = function (zIndex) {\n this.set('zIndex', zIndex);\n var parent = this.getParent();\n if (parent) {\n // 改变 zIndex 不应该立即触发渲染 (调用 onCanvasChange('zIndex')),需要经过 sort 再触发\n parent.sort();\n }\n return this;\n };\n Element.prototype.toFront = function () {\n var parent = this.getParent();\n if (!parent) {\n return;\n }\n var children = parent.getChildren();\n var el = this.get('el');\n var index = children.indexOf(this);\n children.splice(index, 1);\n children.push(this);\n this.onCanvasChange('zIndex');\n };\n Element.prototype.toBack = function () {\n var parent = this.getParent();\n if (!parent) {\n return;\n }\n var children = parent.getChildren();\n var el = this.get('el');\n var index = children.indexOf(this);\n children.splice(index, 1);\n children.unshift(this);\n this.onCanvasChange('zIndex');\n };\n Element.prototype.remove = function (destroy) {\n if (destroy === void 0) { destroy = true; }\n var parent = this.getParent();\n if (parent) {\n Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"removeFromArray\"])(parent.getChildren(), this);\n if (!parent.get('clearing')) {\n // 如果父元素正在清理,当前元素不触发 remove\n this.onCanvasChange('remove');\n }\n }\n else {\n this.onCanvasChange('remove');\n }\n if (destroy) {\n this.destroy();\n }\n };\n Element.prototype.resetMatrix = function () {\n this.attr(MATRIX, this.getDefaultMatrix());\n this.onCanvasChange('matrix');\n };\n Element.prototype.getMatrix = function () {\n return this.attr(MATRIX);\n };\n Element.prototype.setMatrix = function (m) {\n this.attr(MATRIX, m);\n this.onCanvasChange('matrix');\n };\n // 获取总的 matrix\n Element.prototype.getTotalMatrix = function () {\n var totalMatrix = this.cfg.totalMatrix;\n if (!totalMatrix) {\n var currentMatrix = this.attr('matrix');\n var parentMatrix = this.cfg.parentMatrix;\n if (parentMatrix && currentMatrix) {\n totalMatrix = Object(_util_matrix__WEBPACK_IMPORTED_MODULE_4__[\"multiplyMatrix\"])(parentMatrix, currentMatrix);\n }\n else {\n totalMatrix = currentMatrix || parentMatrix;\n }\n this.set('totalMatrix', totalMatrix);\n }\n return totalMatrix;\n };\n // 上层分组设置 matrix\n Element.prototype.applyMatrix = function (matrix) {\n var currentMatrix = this.attr('matrix');\n var totalMatrix = null;\n if (matrix && currentMatrix) {\n totalMatrix = Object(_util_matrix__WEBPACK_IMPORTED_MODULE_4__[\"multiplyMatrix\"])(matrix, currentMatrix);\n }\n else {\n totalMatrix = currentMatrix || matrix;\n }\n this.set('totalMatrix', totalMatrix);\n this.set('parentMatrix', matrix);\n };\n /**\n * @protected\n * 获取默认的矩阵\n * @returns {number[]|null} 默认的矩阵\n */\n Element.prototype.getDefaultMatrix = function () {\n return null;\n };\n // 将向量应用设置的矩阵\n Element.prototype.applyToMatrix = function (v) {\n var matrix = this.attr('matrix');\n if (matrix) {\n return Object(_util_matrix__WEBPACK_IMPORTED_MODULE_4__[\"multiplyVec2\"])(matrix, v);\n }\n return v;\n };\n // 根据设置的矩阵,将向量转换相对于图形/分组的位置\n Element.prototype.invertFromMatrix = function (v) {\n var matrix = this.attr('matrix');\n if (matrix) {\n var invertMatrix = Object(_util_matrix__WEBPACK_IMPORTED_MODULE_4__[\"invert\"])(matrix);\n if (invertMatrix) {\n return Object(_util_matrix__WEBPACK_IMPORTED_MODULE_4__[\"multiplyVec2\"])(invertMatrix, v);\n }\n }\n return v;\n };\n // 设置 clip\n Element.prototype.setClip = function (clipCfg) {\n var canvas = this.getCanvas();\n // 应该只设置当前元素的 clip,不应该去修改 clip 本身,方便 clip 被复用\n // TODO: setClip 的传参既 shape 配置,也支持 shape 对象\n // const preShape = this.get('clipShape');\n // if (preShape) {\n // // 将之前的 clipShape 销毁\n // preShape.destroy();\n // }\n var clipShape = null;\n // 如果配置项为 null,则不移除 clipShape\n if (clipCfg) {\n var ShapeBase = this.getShapeBase();\n var shapeType = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"upperFirst\"])(clipCfg.type);\n var Cons = ShapeBase[shapeType];\n if (Cons) {\n clipShape = new Cons({\n type: clipCfg.type,\n isClipShape: true,\n applyTo: this,\n attrs: clipCfg.attrs,\n canvas: canvas,\n });\n }\n }\n this.set('clipShape', clipShape);\n this.onCanvasChange('clip');\n return clipShape;\n };\n Element.prototype.getClip = function () {\n // 高频率调用的地方直接使用 this.cfg.xxx\n var clipShape = this.cfg.clipShape;\n // 未设置时返回 Null,保证一致性\n if (!clipShape) {\n return null;\n }\n return clipShape;\n };\n Element.prototype.clone = function () {\n var _this = this;\n var originAttrs = this.attrs;\n var attrs = {};\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(originAttrs, function (i, k) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(originAttrs[k])) {\n attrs[k] = _cloneArrayAttr(originAttrs[k]);\n }\n else {\n attrs[k] = originAttrs[k];\n }\n });\n var cons = this.constructor;\n // @ts-ignore\n var clone = new cons({ attrs: attrs });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(CLONE_CFGS, function (cfgName) {\n clone.set(cfgName, _this.get(cfgName));\n });\n return clone;\n };\n Element.prototype.destroy = function () {\n var destroyed = this.destroyed;\n if (destroyed) {\n return;\n }\n this.attrs = {};\n _super.prototype.destroy.call(this);\n // this.onCanvasChange('destroy');\n };\n /**\n * 是否处于动画暂停状态\n * @return {boolean} 是否处于动画暂停状态\n */\n Element.prototype.isAnimatePaused = function () {\n return this.get('_pause').isPaused;\n };\n /**\n * 执行动画,支持多种函数签名\n * 1. animate(toAttrs: ElementAttrs, duration: number, easing?: string, callback?: () => void, delay?: number)\n * 2. animate(onFrame: OnFrame, duration: number, easing?: string, callback?: () => void, delay?: number)\n * 3. animate(toAttrs: ElementAttrs, cfg: AnimateCfg)\n * 4. animate(onFrame: OnFrame, cfg: AnimateCfg)\n * 各个参数的含义为:\n * toAttrs 动画最终状态\n * onFrame 自定义帧动画函数\n * duration 动画执行时间\n * easing 动画缓动效果\n * callback 动画执行后的回调\n * delay 动画延迟时间\n */\n Element.prototype.animate = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!this.get('timeline') && !this.get('canvas')) {\n return;\n }\n this.set('animating', true);\n var timeline = this.get('timeline');\n if (!timeline) {\n timeline = this.get('canvas').get('timeline');\n this.set('timeline', timeline);\n }\n var animations = this.get('animations') || [];\n // 初始化 tick\n if (!timeline.timer) {\n timeline.initTimer();\n }\n var toAttrs = args[0], duration = args[1], _a = args[2], easing = _a === void 0 ? 'easeLinear' : _a, _b = args[3], callback = _b === void 0 ? _antv_util__WEBPACK_IMPORTED_MODULE_1__[\"noop\"] : _b, _c = args[4], delay = _c === void 0 ? 0 : _c;\n var onFrame;\n var repeat;\n var pauseCallback;\n var resumeCallback;\n var animateCfg;\n // 第二个参数,既可以是动画最终状态 toAttrs,也可以是自定义帧动画函数 onFrame\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(toAttrs)) {\n onFrame = toAttrs;\n toAttrs = {};\n }\n else if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(toAttrs) && toAttrs.onFrame) {\n // 兼容 3.0 中的写法,onFrame 和 repeat 可在 toAttrs 中设置\n onFrame = toAttrs.onFrame;\n repeat = toAttrs.repeat;\n }\n // 第二个参数,既可以是执行时间 duration,也可以是动画参数 animateCfg\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(duration)) {\n animateCfg = duration;\n duration = animateCfg.duration;\n easing = animateCfg.easing || 'easeLinear';\n delay = animateCfg.delay || 0;\n // animateCfg 中的设置优先级更高\n repeat = animateCfg.repeat || repeat || false;\n callback = animateCfg.callback || _antv_util__WEBPACK_IMPORTED_MODULE_1__[\"noop\"];\n pauseCallback = animateCfg.pauseCallback || _antv_util__WEBPACK_IMPORTED_MODULE_1__[\"noop\"];\n resumeCallback = animateCfg.resumeCallback || _antv_util__WEBPACK_IMPORTED_MODULE_1__[\"noop\"];\n }\n else {\n // 第四个参数,既可以是回调函数 callback,也可以是延迟时间 delay\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(callback)) {\n delay = callback;\n callback = null;\n }\n // 第三个参数,既可以是缓动参数 easing,也可以是回调函数 callback\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(easing)) {\n callback = easing;\n easing = 'easeLinear';\n }\n else {\n easing = easing || 'easeLinear';\n }\n }\n var formatToAttrs = getFormatToAttrs(toAttrs, this);\n var animation = {\n fromAttrs: getFormatFromAttrs(formatToAttrs, this),\n toAttrs: formatToAttrs,\n duration: duration,\n easing: easing,\n repeat: repeat,\n callback: callback,\n pauseCallback: pauseCallback,\n resumeCallback: resumeCallback,\n delay: delay,\n startTime: timeline.getTime(),\n id: Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"uniqueId\"])(),\n onFrame: onFrame,\n pathFormatted: false,\n };\n // 如果动画元素队列中已经有这个图形了\n if (animations.length > 0) {\n // 先检查是否需要合并属性。若有相同的动画,将该属性从前一个动画中删除,直接用后一个动画中\n animations = checkExistedAttrs(animations, animation);\n }\n else {\n // 否则将图形添加到动画元素队列\n timeline.addAnimator(this);\n }\n animations.push(animation);\n this.set('animations', animations);\n this.set('_pause', { isPaused: false });\n };\n /**\n * 停止动画\n * @param {boolean} toEnd 是否到动画的最终状态\n */\n Element.prototype.stopAnimate = function (toEnd) {\n var _this = this;\n if (toEnd === void 0) { toEnd = true; }\n var animations = this.get('animations');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(animations, function (animation) {\n // 将动画执行到最后一帧\n if (toEnd) {\n if (animation.onFrame) {\n _this.attr(animation.onFrame(1));\n }\n else {\n _this.attr(animation.toAttrs);\n }\n }\n if (animation.callback) {\n // 动画停止时的回调\n animation.callback();\n }\n });\n this.set('animating', false);\n this.set('animations', []);\n };\n /**\n * 暂停动画\n */\n Element.prototype.pauseAnimate = function () {\n var timeline = this.get('timeline');\n var animations = this.get('animations');\n var pauseTime = timeline.getTime();\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(animations, function (animation) {\n animation._paused = true;\n animation._pauseTime = pauseTime;\n if (animation.pauseCallback) {\n // 动画暂停时的回调\n animation.pauseCallback();\n }\n });\n // 记录下是在什么时候暂停的\n this.set('_pause', {\n isPaused: true,\n pauseTime: pauseTime,\n });\n return this;\n };\n /**\n * 恢复动画\n */\n Element.prototype.resumeAnimate = function () {\n var timeline = this.get('timeline');\n var current = timeline.getTime();\n var animations = this.get('animations');\n var pauseTime = this.get('_pause').pauseTime;\n // 之后更新属性需要计算动画已经执行的时长,如果暂停了,就把初始时间调后\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(animations, function (animation) {\n animation.startTime = animation.startTime + (current - pauseTime);\n animation._paused = false;\n animation._pauseTime = null;\n if (animation.resumeCallback) {\n animation.resumeCallback();\n }\n });\n this.set('_pause', {\n isPaused: false,\n });\n this.set('animations', animations);\n return this;\n };\n /**\n * 触发委托事件\n * @param {string} type 事件类型\n * @param {GraphEvent} eventObj 事件对象\n */\n Element.prototype.emitDelegation = function (type, eventObj) {\n var _this = this;\n var paths = eventObj.propagationPath;\n var events = this.getEvents();\n var relativeShape;\n if (type === 'mouseenter') {\n relativeShape = eventObj.fromShape;\n }\n else if (type === 'mouseleave') {\n relativeShape = eventObj.toShape;\n }\n var _loop_1 = function (i) {\n var element = paths[i];\n // 暂定跟 name 绑定\n var name_1 = element.get('name');\n if (name_1) {\n // 第一个 mouseenter 和 mouseleave 的停止即可,因为后面的都是前面的 Parent\n if (\n // 只有 element 是 Group 或者 Canvas 的时候,才需要判断 isParent\n (element.isGroup() || (element.isCanvas && element.isCanvas())) &&\n relativeShape &&\n Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"isParent\"])(element, relativeShape)) {\n return \"break\";\n }\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(name_1)) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(name_1, function (subName) {\n _this.emitDelegateEvent(element, subName, eventObj);\n });\n }\n else {\n this_1.emitDelegateEvent(element, name_1, eventObj);\n }\n }\n };\n var this_1 = this;\n // 至少有一个对象,且第一个对象为 shape\n for (var i = 0; i < paths.length; i++) {\n var state_1 = _loop_1(i);\n if (state_1 === \"break\")\n break;\n }\n };\n Element.prototype.emitDelegateEvent = function (element, name, eventObj) {\n var events = this.getEvents();\n // 事件委托的形式 name:type\n var eventName = name + DELEGATION_SPLIT + eventObj.type;\n if (events[eventName] || events[WILDCARD]) {\n // 对于通配符 *,事件名称 = 委托事件名称\n eventObj.name = eventName;\n eventObj.currentTarget = element;\n eventObj.delegateTarget = this;\n // 将委托事件的监听对象 delegateObject 挂载到事件对象上\n eventObj.delegateObject = element.get('delegateObject');\n this.emit(eventName, eventObj);\n }\n };\n /**\n * 移动元素\n * @param {number} translateX 水平移动距离\n * @param {number} translateY 垂直移动距离\n * @return {IElement} 元素\n */\n Element.prototype.translate = function (translateX, translateY) {\n if (translateX === void 0) { translateX = 0; }\n if (translateY === void 0) { translateY = 0; }\n var matrix = this.getMatrix();\n var newMatrix = transform(matrix, [['t', translateX, translateY]]);\n this.setMatrix(newMatrix);\n return this;\n };\n /**\n * 移动元素到目标位置\n * @param {number} targetX 目标位置的水平坐标\n * @param {number} targetX 目标位置的垂直坐标\n * @return {IElement} 元素\n */\n Element.prototype.move = function (targetX, targetY) {\n var x = this.attr('x') || 0;\n var y = this.attr('y') || 0;\n this.translate(targetX - x, targetY - y);\n return this;\n };\n /**\n * 移动元素到目标位置,等价于 move 方法。由于 moveTo 的语义性更强,因此在文档中推荐使用 moveTo 方法\n * @param {number} targetX 目标位置的 x 轴坐标\n * @param {number} targetY 目标位置的 y 轴坐标\n * @return {IElement} 元素\n */\n Element.prototype.moveTo = function (targetX, targetY) {\n return this.move(targetX, targetY);\n };\n /**\n * 缩放元素\n * @param {number} ratioX 水平缩放比例\n * @param {number} ratioY 垂直缩放比例\n * @return {IElement} 元素\n */\n Element.prototype.scale = function (ratioX, ratioY) {\n var matrix = this.getMatrix();\n var newMatrix = transform(matrix, [['s', ratioX, ratioY || ratioX]]);\n this.setMatrix(newMatrix);\n return this;\n };\n /**\n * 以画布左上角 (0, 0) 为中心旋转元素\n * @param {number} radian 旋转角度(弧度值)\n * @return {IElement} 元素\n */\n Element.prototype.rotate = function (radian) {\n var matrix = this.getMatrix();\n var newMatrix = transform(matrix, [['r', radian]]);\n this.setMatrix(newMatrix);\n return this;\n };\n /**\n * 以起始点为中心旋转元素\n * @param {number} radian 旋转角度(弧度值)\n * @return {IElement} 元素\n */\n Element.prototype.rotateAtStart = function (rotate) {\n var _a = this.attr(), x = _a.x, y = _a.y;\n var matrix = this.getMatrix();\n var newMatrix = transform(matrix, [\n ['t', -x, -y],\n ['r', rotate],\n ['t', x, y],\n ]);\n this.setMatrix(newMatrix);\n return this;\n };\n /**\n * 以任意点 (x, y) 为中心旋转元素\n * @param {number} radian 旋转角度(弧度值)\n * @return {IElement} 元素\n */\n Element.prototype.rotateAtPoint = function (x, y, rotate) {\n var matrix = this.getMatrix();\n var newMatrix = transform(matrix, [\n ['t', -x, -y],\n ['r', rotate],\n ['t', x, y],\n ]);\n this.setMatrix(newMatrix);\n return this;\n };\n return Element;\n}(_base__WEBPACK_IMPORTED_MODULE_5__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Element);\n//# sourceMappingURL=element.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Fic3RyYWN0L2VsZW1lbnQuanM/NjVkYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNtRjtBQUM3RTtBQUNpQjtBQUNhO0FBQzVDO0FBQzFCLGdCQUFnQixxREFBRztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixnQkFBZ0I7QUFDbkMsWUFBWSwwREFBTztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQUk7QUFDUixpREFBaUQsMERBQU87QUFDeEQ7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx1REFBSTtBQUNSO0FBQ0E7QUFDQSxZQUFZLHVEQUFJO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLFFBQVEsc0RBQUc7QUFDWDtBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFdBQVc7QUFDMUI7QUFDQSw4REFBOEQ7QUFDOUQ7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCO0FBQ0Esb0RBQW9EO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsdUJBQXVCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDJEQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEM7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxJQUFJO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxJQUFJO0FBQ25CLGVBQWUsSUFBSTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQyxnQkFBZ0I7QUFDakQ7QUFDQTtBQUNBLFlBQVksa0VBQWU7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLG1FQUFjO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLG1FQUFjO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGNBQWM7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixpRUFBWTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQiwyREFBTTtBQUNyQztBQUNBLHVCQUF1QixpRUFBWTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsNkRBQVU7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWixnQkFBZ0IsMERBQU87QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsOEJBQThCLGVBQWU7QUFDN0MsUUFBUSx1REFBSTtBQUNaO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLFFBQVE7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix1QkFBdUI7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzSkFBc0osK0NBQUk7QUFDMUo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSw2REFBVTtBQUN0QjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsMkRBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksMkRBQVE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDLCtDQUFJO0FBQ2xELHdEQUF3RCwrQ0FBSTtBQUM1RCwwREFBMEQsK0NBQUk7QUFDOUQ7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDJEQUFRO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDZEQUFVO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDJEQUFRO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsa0JBQWtCO0FBQzlDO0FBQ0E7QUFDQTtBQUNBLGVBQWUsUUFBUTtBQUN2QjtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsY0FBYztBQUM3QztBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLE9BQU87QUFDdkIsZ0JBQWdCLFdBQVc7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsMkRBQVE7QUFDNUI7QUFDQTtBQUNBLG9CQUFvQiwwREFBTztBQUMzQixvQkFBb0IsdURBQUk7QUFDeEI7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixrQkFBa0I7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsU0FBUztBQUN6QjtBQUNBO0FBQ0Esb0NBQW9DLGdCQUFnQjtBQUNwRCxvQ0FBb0MsZ0JBQWdCO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsU0FBUztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixTQUFTO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLFNBQVM7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixTQUFTO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsU0FBUztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixTQUFTO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyw2Q0FBSTtBQUNTLHNFQUFPLEVBQUM7QUFDdkIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Fic3RyYWN0L2VsZW1lbnQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGVhY2gsIGlzRXF1YWwsIGlzRnVuY3Rpb24sIGlzTnVtYmVyLCBpc09iamVjdCwgaXNBcnJheSwgbm9vcCwgbWl4LCB1cHBlckZpcnN0LCB1bmlxdWVJZCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgZXh0IH0gZnJvbSAnQGFudHYvbWF0cml4LXV0aWwnO1xuaW1wb3J0IHsgcmVtb3ZlRnJvbUFycmF5LCBpc1BhcmVudCB9IGZyb20gJy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBtdWx0aXBseU1hdHJpeCwgbXVsdGlwbHlWZWMyLCBpbnZlcnQgfSBmcm9tICcuLi91dGlsL21hdHJpeCc7XG5pbXBvcnQgQmFzZSBmcm9tICcuL2Jhc2UnO1xudmFyIHRyYW5zZm9ybSA9IGV4dC50cmFuc2Zvcm07XG52YXIgTUFUUklYID0gJ21hdHJpeCc7XG52YXIgQ0xPTkVfQ0ZHUyA9IFsnekluZGV4JywgJ2NhcHR1cmUnLCAndmlzaWJsZScsICd0eXBlJ107XG4vLyDlj6/ku6XlnKggdG9BdHRycyDkuK3orr7nva7vvIzkvYbkuI3lsZ7kuo7nu5jlm77lsZ7mgKfnmoTlrZfmrrVcbnZhciBSRVNFUlZFRF9QT1JQUyA9IFsncmVwZWF0J107XG52YXIgREVMRUdBVElPTl9TUExJVCA9ICc6JztcbnZhciBXSUxEQ0FSRCA9ICcqJztcbi8vIOmcgOimgeiAg+iZkeaVsOe7hOW1jOWll+aVsOe7hOeahOWcuuaZr1xuLy8g5pWw57uE5bWM5aWX5a+56LGh55qE5Zy65pmv5LiN6ICD6JmRXG5mdW5jdGlvbiBfY2xvbmVBcnJheUF0dHIoYXJyKSB7XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChpc0FycmF5KGFycltpXSkpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKFtdLmNvbmNhdChhcnJbaV0pKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGFycltpXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIGdldEZvcm1hdEZyb21BdHRycyh0b0F0dHJzLCBzaGFwZSkge1xuICAgIHZhciBmcm9tQXR0cnMgPSB7fTtcbiAgICB2YXIgYXR0cnMgPSBzaGFwZS5hdHRycztcbiAgICBmb3IgKHZhciBrIGluIHRvQXR0cnMpIHtcbiAgICAgICAgZnJvbUF0dHJzW2tdID0gYXR0cnNba107XG4gICAgfVxuICAgIHJldHVybiBmcm9tQXR0cnM7XG59XG5mdW5jdGlvbiBnZXRGb3JtYXRUb0F0dHJzKHByb3BzLCBzaGFwZSkge1xuICAgIHZhciB0b0F0dHJzID0ge307XG4gICAgdmFyIGF0dHJzID0gc2hhcGUuYXR0cigpO1xuICAgIGVhY2gocHJvcHMsIGZ1bmN0aW9uICh2LCBrKSB7XG4gICAgICAgIGlmIChSRVNFUlZFRF9QT1JQUy5pbmRleE9mKGspID09PSAtMSAmJiAhaXNFcXVhbChhdHRyc1trXSwgdikpIHtcbiAgICAgICAgICAgIHRvQXR0cnNba10gPSB2O1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHRvQXR0cnM7XG59XG5mdW5jdGlvbiBjaGVja0V4aXN0ZWRBdHRycyhhbmltYXRpb25zLCBhbmltYXRpb24pIHtcbiAgICBpZiAoYW5pbWF0aW9uLm9uRnJhbWUpIHtcbiAgICAgICAgcmV0dXJuIGFuaW1hdGlvbnM7XG4gICAgfVxuICAgIHZhciBzdGFydFRpbWUgPSBhbmltYXRpb24uc3RhcnRUaW1lLCBkZWxheSA9IGFuaW1hdGlvbi5kZWxheSwgZHVyYXRpb24gPSBhbmltYXRpb24uZHVyYXRpb247XG4gICAgdmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbiAgICBlYWNoKGFuaW1hdGlvbnMsIGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIC8vIOWQjuS4gOS4quWKqOeUu+W8gOWni+aJp+ihjOeahOaXtumXtCA8IOWJjeS4gOS4quWKqOeUu+eahOe7k+adn+aXtumXtCAmJiDlkI7kuIDkuKrliqjnlLvnmoTmiafooYzml7bpl7QgPiDliY3kuIDkuKrliqjnlLvnmoTlu7bov59cbiAgICAgICAgaWYgKHN0YXJ0VGltZSArIGRlbGF5IDwgaXRlbS5zdGFydFRpbWUgKyBpdGVtLmRlbGF5ICsgaXRlbS5kdXJhdGlvbiAmJiBkdXJhdGlvbiA+IGl0ZW0uZGVsYXkpIHtcbiAgICAgICAgICAgIGVhY2goYW5pbWF0aW9uLnRvQXR0cnMsIGZ1bmN0aW9uICh2LCBrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoaXRlbS50b0F0dHJzLCBrKSkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgaXRlbS50b0F0dHJzW2tdO1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgaXRlbS5mcm9tQXR0cnNba107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gYW5pbWF0aW9ucztcbn1cbnZhciBFbGVtZW50ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhFbGVtZW50LCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEVsZW1lbnQoY2ZnKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIGNmZykgfHwgdGhpcztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgICAgICog5Zu+5b2i5bGe5oCnXG4gICAgICAgICAqIEB0eXBlIHtTaGFwZUF0dHJzfVxuICAgICAgICAgKi9cbiAgICAgICAgX3RoaXMuYXR0cnMgPSB7fTtcbiAgICAgICAgdmFyIGF0dHJzID0gX3RoaXMuZ2V0RGVmYXVsdEF0dHJzKCk7XG4gICAgICAgIG1peChhdHRycywgY2ZnLmF0dHJzKTtcbiAgICAgICAgX3RoaXMuYXR0cnMgPSBhdHRycztcbiAgICAgICAgX3RoaXMuaW5pdEF0dHJzKGF0dHJzKTtcbiAgICAgICAgX3RoaXMuaW5pdEFuaW1hdGUoKTsgLy8g5Yid5aeL5YyW5Yqo55S7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgLy8gb3ZlcnJpZGVcbiAgICBFbGVtZW50LnByb3RvdHlwZS5nZXREZWZhdWx0Q2ZnID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGNhcHR1cmU6IHRydWUsXG4gICAgICAgICAgICB6SW5kZXg6IDAsXG4gICAgICAgIH07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICog6I635Y+W6buY6K6k55qE5bGe55u4XG4gICAgICovXG4gICAgRWxlbWVudC5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbWF0cml4OiB0aGlzLmdldERlZmF1bHRNYXRyaXgoKSxcbiAgICAgICAgICAgIG9wYWNpdHk6IDEsXG4gICAgICAgIH07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICog5LiA5Lqb5pa55rOV6LCD55So5Lya5byV6LW355S75biD5Y+Y5YyWXG4gICAgICogQHBhcmFtIHtDaGFuZ2VUeXBlfSBjaGFuZ2VUeXBlIOaUueWPmOeahOexu+Wei1xuICAgICAqL1xuICAgIEVsZW1lbnQucHJvdG90eXBlLm9uQ2FudmFzQ2hhbmdlID0gZnVuY3Rpb24gKGNoYW5nZVR5cGUpIHsgfTtcbiAgICAvKipcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICog5Yid5aeL5YyW5bGe5oCn77yM5pyJ5Lqb5bGe5oCn6ZyA6KaB5Yqg5belXG4gICAgICogQHBhcmFtIHtvYmplY3R9IGF0dHJzIOWxnuaAp+WAvFxuICAgICAqL1xuICAgIEVsZW1lbnQucHJvdG90eXBlLmluaXRBdHRycyA9IGZ1bmN0aW9uIChhdHRycykgeyB9O1xuICAgIC8qKlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiDliJ3lp4vljJbliqjnlLtcbiAgICAgKi9cbiAgICBFbGVtZW50LnByb3RvdHlwZS5pbml0QW5pbWF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5zZXQoJ2FuaW1hYmxlJywgdHJ1ZSk7XG4gICAgICAgIHRoaXMuc2V0KCdhbmltYXRpbmcnLCBmYWxzZSk7XG4gICAgfTtcbiAgICBFbGVtZW50LnByb3RvdHlwZS5pc0dyb3VwID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICBFbGVtZW50LnByb3RvdHlwZS5nZXRQYXJlbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldCgncGFyZW50Jyk7XG4gICAgfTtcbiAgICBFbGVtZW50LnByb3RvdHlwZS5nZXRDYW52YXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldCgnY2FudmFzJyk7XG4gICAgfTtcbiAgICBFbGVtZW50LnByb3RvdHlwZS5hdHRyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG5hbWUgPSBhcmdzWzBdLCB2YWx1ZSA9IGFyZ3NbMV07XG4gICAgICAgIGlmICghbmFtZSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmF0dHJzO1xuICAgICAgICBpZiAoaXNPYmplY3QobmFtZSkpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGsgaW4gbmFtZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0QXR0cihrLCBuYW1lW2tdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuYWZ0ZXJBdHRyc0NoYW5nZShuYW1lKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgdGhpcy5zZXRBdHRyKG5hbWUsIHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuYWZ0ZXJBdHRyc0NoYW5nZSgoX2EgPSB7fSxcbiAgICAgICAgICAgICAgICBfYVtuYW1lXSA9IHZhbHVlLFxuICAgICAgICAgICAgICAgIF9hKSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5hdHRyc1tuYW1lXTtcbiAgICB9O1xuICAgIC8vIOaYr+WQpuiiq+ijgeWJqu+8jOiiq+ijgeWJquWImeS4jeaYvuekuu+8jOS4jeWPguS4juaLvuWPllxuICAgIEVsZW1lbnQucHJvdG90eXBlLmlzQ2xpcHBlZCA9IGZ1bmN0aW9uIChyZWZYLCByZWZZKSB7XG4gICAgICAgIHZhciBjbGlwID0gdGhpcy5nZXRDbGlwKCk7XG4gICAgICAgIHJldHVybiBjbGlwICYmICFjbGlwLmlzSGl0KHJlZlgsIHJlZlkpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5YaF6YOo6K6+572u5bGe5oCn5YC855qE5o6l5Y+jXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUg5bGe5oCn5ZCNXG4gICAgICogQHBhcmFtIHthbnl9IHZhbHVlIOWxnuaAp+WAvFxuICAgICAqL1xuICAgIEVsZW1lbnQucHJvdG90eXBlLnNldEF0dHIgPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHtcbiAgICAgICAgdmFyIG9yaWdpblZhbHVlID0gdGhpcy5hdHRyc1tuYW1lXTtcbiAgICAgICAgaWYgKG9yaWdpblZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5hdHRyc1tuYW1lXSA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5vbkF0dHJDaGFuZ2UobmFtZSwgdmFsdWUsIG9yaWdpblZhbHVlKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqIOWxnuaAp+WAvOWPkeeUn+aUueWPmFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIOWxnuaAp+WQjVxuICAgICAqIEBwYXJhbSB7YW55fSB2YWx1ZSDlsZ7mgKflgLxcbiAgICAgKiBAcGFyYW0ge2FueX0gb3JpZ2luVmFsdWUg5bGe5oCn5YC8XG4gICAgICovXG4gICAgRWxlbWVudC5wcm90b3R5cGUub25BdHRyQ2hhbmdlID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlLCBvcmlnaW5WYWx1ZSkge1xuICAgICAgICBpZiAobmFtZSA9PT0gJ21hdHJpeCcpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0KCd0b3RhbE1hdHJpeCcsIG51bGwpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDlsZ7mgKfmm7TmlLnlkI7pnIDopoHlgZrnmoTkuovmg4VcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICovXG4gICAgRWxlbWVudC5wcm90b3R5cGUuYWZ0ZXJBdHRyc0NoYW5nZSA9IGZ1bmN0aW9uICh0YXJnZXRBdHRycykge1xuICAgICAgICBpZiAodGhpcy5jZmcuaXNDbGlwU2hhcGUpIHtcbiAgICAgICAgICAgIHZhciBhcHBseVRvID0gdGhpcy5jZmcuYXBwbHlUbztcbiAgICAgICAgICAgIGlmIChhcHBseVRvKSB7XG4gICAgICAgICAgICAgICAgYXBwbHlUby5vbkNhbnZhc0NoYW5nZSgnY2xpcCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vbkNhbnZhc0NoYW5nZSgnYXR0cicpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBFbGVtZW50LnByb3RvdHlwZS5zaG93ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyDkuI3mmK/pq5jpopHmk43kvZznm7TmjqXkvb/nlKggc2V0XG4gICAgICAgIHRoaXMuc2V0KCd2aXNpYmxlJywgdHJ1ZSk7XG4gICAgICAgIHRoaXMub25DYW52YXNDaGFuZ2UoJ3Nob3cnKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBFbGVtZW50LnByb3RvdHlwZS5oaWRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyDkuI3mmK/pq5jpopHmk43kvZznm7TmjqXkvb/nlKggc2V0XG4gICAgICAgIHRoaXMuc2V0KCd2aXNpYmxlJywgZmFsc2UpO1xuICAgICAgICB0aGlzLm9uQ2FudmFzQ2hhbmdlKCdoaWRlJyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRWxlbWVudC5wcm90b3R5cGUuc2V0WkluZGV4ID0gZnVuY3Rpb24gKHpJbmRleCkge1xuICAgICAgICB0aGlzLnNldCgnekluZGV4JywgekluZGV4KTtcbiAgICAgICAgdmFyIHBhcmVudCA9IHRoaXMuZ2V0UGFyZW50KCk7XG4gICAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgICAgIC8vIOaUueWPmCB6SW5kZXgg5LiN5bqU6K+l56uL5Y2z6Kem5Y+R5riy5p+TICjosIPnlKggb25DYW52YXNDaGFuZ2UoJ3pJbmRleCcpKe+8jOmcgOimgee7j+i/hyBzb3J0IOWGjeinpuWPkVxuICAgICAgICAgICAgcGFyZW50LnNvcnQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIEVsZW1lbnQucHJvdG90eXBlLnRvRnJvbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBwYXJlbnQgPSB0aGlzLmdldFBhcmVudCgpO1xuICAgICAgICBpZiAoIXBhcmVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHBhcmVudC5nZXRDaGlsZHJlbigpO1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgdmFyIGluZGV4ID0gY2hpbGRyZW4uaW5kZXhPZih0aGlzKTtcbiAgICAgICAgY2hpbGRyZW4uc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgY2hpbGRyZW4ucHVzaCh0aGlzKTtcbiAgICAgICAgdGhpcy5vbkNhbnZhc0NoYW5nZSgnekluZGV4Jyk7XG4gICAgfTtcbiAgICBFbGVtZW50LnByb3RvdHlwZS50b0JhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBwYXJlbnQgPSB0aGlzLmdldFBhcmVudCgpO1xuICAgICAgICBpZiAoIXBhcmVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHBhcmVudC5nZXRDaGlsZHJlbigpO1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgdmFyIGluZGV4ID0gY2hpbGRyZW4uaW5kZXhPZih0aGlzKTtcbiAgICAgICAgY2hpbGRyZW4uc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgY2hpbGRyZW4udW5zaGlmdCh0aGlzKTtcbiAgICAgICAgdGhpcy5vbkNhbnZhc0NoYW5nZSgnekluZGV4Jyk7XG4gICAgfTtcbiAgICBFbGVtZW50LnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbiAoZGVzdHJveSkge1xuICAgICAgICBpZiAoZGVzdHJveSA9PT0gdm9pZCAwKSB7IGRlc3Ryb3kgPSB0cnVlOyB9XG4gICAgICAgIHZhciBwYXJlbnQgPSB0aGlzLmdldFBhcmVudCgpO1xuICAgICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgICAgICByZW1vdmVGcm9tQXJyYXkocGFyZW50LmdldENoaWxkcmVuKCksIHRoaXMpO1xuICAgICAgICAgICAgaWYgKCFwYXJlbnQuZ2V0KCdjbGVhcmluZycpKSB7XG4gICAgICAgICAgICAgICAgLy8g5aaC5p6c54i25YWD57Sg5q2j5Zyo5riF55CG77yM5b2T5YmN5YWD57Sg5LiN6Kem5Y+RIHJlbW92ZVxuICAgICAgICAgICAgICAgIHRoaXMub25DYW52YXNDaGFuZ2UoJ3JlbW92ZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vbkNhbnZhc0NoYW5nZSgncmVtb3ZlJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRlc3Ryb3kpIHtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBFbGVtZW50LnByb3RvdHlwZS5yZXNldE1hdHJpeCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5hdHRyKE1BVFJJWCwgdGhpcy5nZXREZWZhdWx0TWF0cml4KCkpO1xuICAgICAgICB0aGlzLm9uQ2FudmFzQ2hhbmdlKCdtYXRyaXgnKTtcbiAgICB9O1xuICAgIEVsZW1lbnQucHJvdG90eXBlLmdldE1hdHJpeCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXR0cihNQVRSSVgpO1xuICAgIH07XG4gICAgRWxlbWVudC5wcm90b3R5cGUuc2V0TWF0cml4ID0gZnVuY3Rpb24gKG0pIHtcbiAgICAgICAgdGhpcy5hdHRyKE1BVFJJWCwgbSk7XG4gICAgICAgIHRoaXMub25DYW52YXNDaGFuZ2UoJ21hdHJpeCcpO1xuICAgIH07XG4gICAgLy8g6I635Y+W5oC755qEIG1hdHJpeFxuICAgIEVsZW1lbnQucHJvdG90eXBlLmdldFRvdGFsTWF0cml4ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdG90YWxNYXRyaXggPSB0aGlzLmNmZy50b3RhbE1hdHJpeDtcbiAgICAgICAgaWYgKCF0b3RhbE1hdHJpeCkge1xuICAgICAgICAgICAgdmFyIGN1cnJlbnRNYXRyaXggPSB0aGlzLmF0dHIoJ21hdHJpeCcpO1xuICAgICAgICAgICAgdmFyIHBhcmVudE1hdHJpeCA9IHRoaXMuY2ZnLnBhcmVudE1hdHJpeDtcbiAgICAgICAgICAgIGlmIChwYXJlbnRNYXRyaXggJiYgY3VycmVudE1hdHJpeCkge1xuICAgICAgICAgICAgICAgIHRvdGFsTWF0cml4ID0gbXVsdGlwbHlNYXRyaXgocGFyZW50TWF0cml4LCBjdXJyZW50TWF0cml4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRvdGFsTWF0cml4ID0gY3VycmVudE1hdHJpeCB8fCBwYXJlbnRNYXRyaXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNldCgndG90YWxNYXRyaXgnLCB0b3RhbE1hdHJpeCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRvdGFsTWF0cml4O1xuICAgIH07XG4gICAgLy8g5LiK5bGC5YiG57uE6K6+572uIG1hdHJpeFxuICAgIEVsZW1lbnQucHJvdG90eXBlLmFwcGx5TWF0cml4ID0gZnVuY3Rpb24gKG1hdHJpeCkge1xuICAgICAgICB2YXIgY3VycmVudE1hdHJpeCA9IHRoaXMuYXR0cignbWF0cml4Jyk7XG4gICAgICAgIHZhciB0b3RhbE1hdHJpeCA9IG51bGw7XG4gICAgICAgIGlmIChtYXRyaXggJiYgY3VycmVudE1hdHJpeCkge1xuICAgICAgICAgICAgdG90YWxNYXRyaXggPSBtdWx0aXBseU1hdHJpeChtYXRyaXgsIGN1cnJlbnRNYXRyaXgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdG90YWxNYXRyaXggPSBjdXJyZW50TWF0cml4IHx8IG1hdHJpeDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldCgndG90YWxNYXRyaXgnLCB0b3RhbE1hdHJpeCk7XG4gICAgICAgIHRoaXMuc2V0KCdwYXJlbnRNYXRyaXgnLCBtYXRyaXgpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqIOiOt+WPlum7mOiupOeahOefqemYtVxuICAgICAqIEByZXR1cm5zIHtudW1iZXJbXXxudWxsfSDpu5jorqTnmoTnn6npmLVcbiAgICAgKi9cbiAgICBFbGVtZW50LnByb3RvdHlwZS5nZXREZWZhdWx0TWF0cml4ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICAgIC8vIOWwhuWQkemHj+W6lOeUqOiuvue9rueahOefqemYtVxuICAgIEVsZW1lbnQucHJvdG90eXBlLmFwcGx5VG9NYXRyaXggPSBmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgbWF0cml4ID0gdGhpcy5hdHRyKCdtYXRyaXgnKTtcbiAgICAgICAgaWYgKG1hdHJpeCkge1xuICAgICAgICAgICAgcmV0dXJuIG11bHRpcGx5VmVjMihtYXRyaXgsIHYpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2O1xuICAgIH07XG4gICAgLy8g5qC55o2u6K6+572u55qE55+p6Zi177yM5bCG5ZCR6YeP6L2s5o2i55u45a+55LqO5Zu+5b2iL+WIhue7hOeahOS9jee9rlxuICAgIEVsZW1lbnQucHJvdG90eXBlLmludmVydEZyb21NYXRyaXggPSBmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgbWF0cml4ID0gdGhpcy5hdHRyKCdtYXRyaXgnKTtcbiAgICAgICAgaWYgKG1hdHJpeCkge1xuICAgICAgICAgICAgdmFyIGludmVydE1hdHJpeCA9IGludmVydChtYXRyaXgpO1xuICAgICAgICAgICAgaWYgKGludmVydE1hdHJpeCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtdWx0aXBseVZlYzIoaW52ZXJ0TWF0cml4LCB2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdjtcbiAgICB9O1xuICAgIC8vIOiuvue9riBjbGlwXG4gICAgRWxlbWVudC5wcm90b3R5cGUuc2V0Q2xpcCA9IGZ1bmN0aW9uIChjbGlwQ2ZnKSB7XG4gICAgICAgIHZhciBjYW52YXMgPSB0aGlzLmdldENhbnZhcygpO1xuICAgICAgICAvLyDlupTor6Xlj6rorr7nva7lvZPliY3lhYPntKDnmoQgY2xpcO+8jOS4jeW6lOivpeWOu+S/ruaUuSBjbGlwIOacrOi6q++8jOaWueS+vyBjbGlwIOiiq+WkjeeUqFxuICAgICAgICAvLyBUT0RPOiBzZXRDbGlwIOeahOS8oOWPguaXoiBzaGFwZSDphY3nva7vvIzkuZ/mlK/mjIEgc2hhcGUg5a+56LGhXG4gICAgICAgIC8vIGNvbnN0IHByZVNoYXBlID0gdGhpcy5nZXQoJ2NsaXBTaGFwZScpO1xuICAgICAgICAvLyBpZiAocHJlU2hhcGUpIHtcbiAgICAgICAgLy8gICAvLyDlsIbkuYvliY3nmoQgY2xpcFNoYXBlIOmUgOavgVxuICAgICAgICAvLyAgIHByZVNoYXBlLmRlc3Ryb3koKTtcbiAgICAgICAgLy8gfVxuICAgICAgICB2YXIgY2xpcFNoYXBlID0gbnVsbDtcbiAgICAgICAgLy8g5aaC5p6c6YWN572u6aG55Li6IG51bGzvvIzliJnkuI3np7vpmaQgY2xpcFNoYXBlXG4gICAgICAgIGlmIChjbGlwQ2ZnKSB7XG4gICAgICAgICAgICB2YXIgU2hhcGVCYXNlID0gdGhpcy5nZXRTaGFwZUJhc2UoKTtcbiAgICAgICAgICAgIHZhciBzaGFwZVR5cGUgPSB1cHBlckZpcnN0KGNsaXBDZmcudHlwZSk7XG4gICAgICAgICAgICB2YXIgQ29ucyA9IFNoYXBlQmFzZVtzaGFwZVR5cGVdO1xuICAgICAgICAgICAgaWYgKENvbnMpIHtcbiAgICAgICAgICAgICAgICBjbGlwU2hhcGUgPSBuZXcgQ29ucyh7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IGNsaXBDZmcudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgaXNDbGlwU2hhcGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGFwcGx5VG86IHRoaXMsXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzOiBjbGlwQ2ZnLmF0dHJzLFxuICAgICAgICAgICAgICAgICAgICBjYW52YXM6IGNhbnZhcyxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldCgnY2xpcFNoYXBlJywgY2xpcFNoYXBlKTtcbiAgICAgICAgdGhpcy5vbkNhbnZhc0NoYW5nZSgnY2xpcCcpO1xuICAgICAgICByZXR1cm4gY2xpcFNoYXBlO1xuICAgIH07XG4gICAgRWxlbWVudC5wcm90b3R5cGUuZ2V0Q2xpcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8g6auY6aKR546H6LCD55So55qE5Zyw5pa555u05o6l5L2/55SoIHRoaXMuY2ZnLnh4eFxuICAgICAgICB2YXIgY2xpcFNoYXBlID0gdGhpcy5jZmcuY2xpcFNoYXBlO1xuICAgICAgICAvLyDmnKrorr7nva7ml7bov5Tlm54gTnVsbO+8jOS/neivgeS4gOiHtOaAp1xuICAgICAgICBpZiAoIWNsaXBTaGFwZSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNsaXBTaGFwZTtcbiAgICB9O1xuICAgIEVsZW1lbnQucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgb3JpZ2luQXR0cnMgPSB0aGlzLmF0dHJzO1xuICAgICAgICB2YXIgYXR0cnMgPSB7fTtcbiAgICAgICAgZWFjaChvcmlnaW5BdHRycywgZnVuY3Rpb24gKGksIGspIHtcbiAgICAgICAgICAgIGlmIChpc0FycmF5KG9yaWdpbkF0dHJzW2tdKSkge1xuICAgICAgICAgICAgICAgIGF0dHJzW2tdID0gX2Nsb25lQXJyYXlBdHRyKG9yaWdpbkF0dHJzW2tdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGF0dHJzW2tdID0gb3JpZ2luQXR0cnNba107XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgY29ucyA9IHRoaXMuY29uc3RydWN0b3I7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdmFyIGNsb25lID0gbmV3IGNvbnMoeyBhdHRyczogYXR0cnMgfSk7XG4gICAgICAgIGVhY2goQ0xPTkVfQ0ZHUywgZnVuY3Rpb24gKGNmZ05hbWUpIHtcbiAgICAgICAgICAgIGNsb25lLnNldChjZmdOYW1lLCBfdGhpcy5nZXQoY2ZnTmFtZSkpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGNsb25lO1xuICAgIH07XG4gICAgRWxlbWVudC5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGRlc3Ryb3llZCA9IHRoaXMuZGVzdHJveWVkO1xuICAgICAgICBpZiAoZGVzdHJveWVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hdHRycyA9IHt9O1xuICAgICAgICBfc3VwZXIucHJvdG90eXBlLmRlc3Ryb3kuY2FsbCh0aGlzKTtcbiAgICAgICAgLy8gdGhpcy5vbkNhbnZhc0NoYW5nZSgnZGVzdHJveScpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5piv5ZCm5aSE5LqO5Yqo55S75pqC5YGc54q25oCBXG4gICAgICogQHJldHVybiB7Ym9vbGVhbn0g5piv5ZCm5aSE5LqO5Yqo55S75pqC5YGc54q25oCBXG4gICAgICovXG4gICAgRWxlbWVudC5wcm90b3R5cGUuaXNBbmltYXRlUGF1c2VkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXQoJ19wYXVzZScpLmlzUGF1c2VkO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5omn6KGM5Yqo55S777yM5pSv5oyB5aSa56eN5Ye95pWw562+5ZCNXG4gICAgICogMS4gYW5pbWF0ZSh0b0F0dHJzOiBFbGVtZW50QXR0cnMsIGR1cmF0aW9uOiBudW1iZXIsIGVhc2luZz86IHN0cmluZywgY2FsbGJhY2s/OiAoKSA9PiB2b2lkLCBkZWxheT86IG51bWJlcilcbiAgICAgKiAyLiBhbmltYXRlKG9uRnJhbWU6IE9uRnJhbWUsIGR1cmF0aW9uOiBudW1iZXIsIGVhc2luZz86IHN0cmluZywgY2FsbGJhY2s/OiAoKSA9PiB2b2lkLCBkZWxheT86IG51bWJlcilcbiAgICAgKiAzLiBhbmltYXRlKHRvQXR0cnM6IEVsZW1lbnRBdHRycywgY2ZnOiBBbmltYXRlQ2ZnKVxuICAgICAqIDQuIGFuaW1hdGUob25GcmFtZTogT25GcmFtZSwgY2ZnOiBBbmltYXRlQ2ZnKVxuICAgICAqIOWQhOS4quWPguaVsOeahOWQq+S5ieS4ujpcbiAgICAgKiAgIHRvQXR0cnMgIOWKqOeUu+acgOe7iOeKtuaAgVxuICAgICAqICAgb25GcmFtZSAg6Ieq5a6a5LmJ5bin5Yqo55S75Ye95pWwXG4gICAgICogICBkdXJhdGlvbiDliqjnlLvmiafooYzml7bpl7RcbiAgICAgKiAgIGVhc2luZyAgIOWKqOeUu+e8k+WKqOaViOaenFxuICAgICAqICAgY2FsbGJhY2sg5Yqo55S75omn6KGM5ZCO55qE5Zue6LCDXG4gICAgICogICBkZWxheSAgICDliqjnlLvlu7bov5/ml7bpl7RcbiAgICAgKi9cbiAgICBFbGVtZW50LnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXJncyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgYXJnc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5nZXQoJ3RpbWVsaW5lJykgJiYgIXRoaXMuZ2V0KCdjYW52YXMnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0KCdhbmltYXRpbmcnLCB0cnVlKTtcbiAgICAgICAgdmFyIHRpbWVsaW5lID0gdGhpcy5nZXQoJ3RpbWVsaW5lJyk7XG4gICAgICAgIGlmICghdGltZWxpbmUpIHtcbiAgICAgICAgICAgIHRpbWVsaW5lID0gdGhpcy5nZXQoJ2NhbnZhcycpLmdldCgndGltZWxpbmUnKTtcbiAgICAgICAgICAgIHRoaXMuc2V0KCd0aW1lbGluZScsIHRpbWVsaW5lKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYW5pbWF0aW9ucyA9IHRoaXMuZ2V0KCdhbmltYXRpb25zJykgfHwgW107XG4gICAgICAgIC8vIOWIneWni+WMliB0aWNrXG4gICAgICAgIGlmICghdGltZWxpbmUudGltZXIpIHtcbiAgICAgICAgICAgIHRpbWVsaW5lLmluaXRUaW1lcigpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0b0F0dHJzID0gYXJnc1swXSwgZHVyYXRpb24gPSBhcmdzWzFdLCBfYSA9IGFyZ3NbMl0sIGVhc2luZyA9IF9hID09PSB2b2lkIDAgPyAnZWFzZUxpbmVhcicgOiBfYSwgX2IgPSBhcmdzWzNdLCBjYWxsYmFjayA9IF9iID09PSB2b2lkIDAgPyBub29wIDogX2IsIF9jID0gYXJnc1s0XSwgZGVsYXkgPSBfYyA9PT0gdm9pZCAwID8gMCA6IF9jO1xuICAgICAgICB2YXIgb25GcmFtZTtcbiAgICAgICAgdmFyIHJlcGVhdDtcbiAgICAgICAgdmFyIHBhdXNlQ2FsbGJhY2s7XG4gICAgICAgIHZhciByZXN1bWVDYWxsYmFjaztcbiAgICAgICAgdmFyIGFuaW1hdGVDZmc7XG4gICAgICAgIC8vIOesrOS6jOS4quWPguaVsO+8jOaXouWPr+S7peaYr+WKqOeUu+acgOe7iOeKtuaAgSB0b0F0dHJz77yM5Lmf5Y+v5Lul5piv6Ieq5a6a5LmJ5bin5Yqo55S75Ye95pWwIG9uRnJhbWVcbiAgICAgICAgaWYgKGlzRnVuY3Rpb24odG9BdHRycykpIHtcbiAgICAgICAgICAgIG9uRnJhbWUgPSB0b0F0dHJzO1xuICAgICAgICAgICAgdG9BdHRycyA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzT2JqZWN0KHRvQXR0cnMpICYmIHRvQXR0cnMub25GcmFtZSkge1xuICAgICAgICAgICAgLy8g5YW85a65IDMuMCDkuK3nmoTlhpnms5XvvIxvbkZyYW1lIOWSjCByZXBlYXQg5Y+v5ZyoIHRvQXR0cnMg5Lit6K6+572uXG4gICAgICAgICAgICBvbkZyYW1lID0gdG9BdHRycy5vbkZyYW1lO1xuICAgICAgICAgICAgcmVwZWF0ID0gdG9BdHRycy5yZXBlYXQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8g56ys5LqM5Liq5Y+C5pWw77yM5pei5Y+v5Lul5piv5omn6KGM5pe26Ze0IGR1cmF0aW9u77yM5Lmf5Y+v5Lul5piv5Yqo55S75Y+C5pWwIGFuaW1hdGVDZmdcbiAgICAgICAgaWYgKGlzT2JqZWN0KGR1cmF0aW9uKSkge1xuICAgICAgICAgICAgYW5pbWF0ZUNmZyA9IGR1cmF0aW9uO1xuICAgICAgICAgICAgZHVyYXRpb24gPSBhbmltYXRlQ2ZnLmR1cmF0aW9uO1xuICAgICAgICAgICAgZWFzaW5nID0gYW5pbWF0ZUNmZy5lYXNpbmcgfHwgJ2Vhc2VMaW5lYXInO1xuICAgICAgICAgICAgZGVsYXkgPSBhbmltYXRlQ2ZnLmRlbGF5IHx8IDA7XG4gICAgICAgICAgICAvLyBhbmltYXRlQ2ZnIOS4reeahOiuvue9ruS8mOWFiOe6p+abtOmrmFxuICAgICAgICAgICAgcmVwZWF0ID0gYW5pbWF0ZUNmZy5yZXBlYXQgfHwgcmVwZWF0IHx8IGZhbHNlO1xuICAgICAgICAgICAgY2FsbGJhY2sgPSBhbmltYXRlQ2ZnLmNhbGxiYWNrIHx8IG5vb3A7XG4gICAgICAgICAgICBwYXVzZUNhbGxiYWNrID0gYW5pbWF0ZUNmZy5wYXVzZUNhbGxiYWNrIHx8IG5vb3A7XG4gICAgICAgICAgICByZXN1bWVDYWxsYmFjayA9IGFuaW1hdGVDZmcucmVzdW1lQ2FsbGJhY2sgfHwgbm9vcDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIOesrOWbm+S4quWPguaVsO+8jOaXouWPr+S7peaYr+Wbnuiwg+WHveaVsCBjYWxsYmFja++8jOS5n+WPr+S7peaYr+W7tui/n+aXtumXtCBkZWxheVxuICAgICAgICAgICAgaWYgKGlzTnVtYmVyKGNhbGxiYWNrKSkge1xuICAgICAgICAgICAgICAgIGRlbGF5ID0gY2FsbGJhY2s7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8g56ys5LiJ5Liq5Y+C5pWw77yM5pei5Y+v5Lul5piv57yT5Yqo5Y+C5pWwIGVhc2luZ++8jOS5n+WPr+S7peaYr+Wbnuiwg+WHveaVsCBjYWxsYmFja1xuICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24oZWFzaW5nKSkge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrID0gZWFzaW5nO1xuICAgICAgICAgICAgICAgIGVhc2luZyA9ICdlYXNlTGluZWFyJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGVhc2luZyA9IGVhc2luZyB8fCAnZWFzZUxpbmVhcic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGZvcm1hdFRvQXR0cnMgPSBnZXRGb3JtYXRUb0F0dHJzKHRvQXR0cnMsIHRoaXMpO1xuICAgICAgICB2YXIgYW5pbWF0aW9uID0ge1xuICAgICAgICAgICAgZnJvbUF0dHJzOiBnZXRGb3JtYXRGcm9tQXR0cnMoZm9ybWF0VG9BdHRycywgdGhpcyksXG4gICAgICAgICAgICB0b0F0dHJzOiBmb3JtYXRUb0F0dHJzLFxuICAgICAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxuICAgICAgICAgICAgZWFzaW5nOiBlYXNpbmcsXG4gICAgICAgICAgICByZXBlYXQ6IHJlcGVhdCxcbiAgICAgICAgICAgIGNhbGxiYWNrOiBjYWxsYmFjayxcbiAgICAgICAgICAgIHBhdXNlQ2FsbGJhY2s6IHBhdXNlQ2FsbGJhY2ssXG4gICAgICAgICAgICByZXN1bWVDYWxsYmFjazogcmVzdW1lQ2FsbGJhY2ssXG4gICAgICAgICAgICBkZWxheTogZGVsYXksXG4gICAgICAgICAgICBzdGFydFRpbWU6IHRpbWVsaW5lLmdldFRpbWUoKSxcbiAgICAgICAgICAgIGlkOiB1bmlxdWVJZCgpLFxuICAgICAgICAgICAgb25GcmFtZTogb25GcmFtZSxcbiAgICAgICAgICAgIHBhdGhGb3JtYXR0ZWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgICAvLyDlpoLmnpzliqjnlLvlhYPntKDpmJ/liJfkuK3lt7Lnu4/mnInov5nkuKrlm77lvaLkuoZcbiAgICAgICAgaWYgKGFuaW1hdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgLy8g5YWI5qOA5p+l5piv5ZCm6ZyA6KaB5ZCI5bm25bGe5oCn44CC6Iul5pyJ55u45ZCM55qE5Yqo55S777yM5bCG6K+l5bGe5oCn5LuO5YmN5LiA5Liq5Yqo55S75Lit5Yig6ZmkLOebtOaOpeeUqOWQjuS4gOS4quWKqOeUu+S4rVxuICAgICAgICAgICAgYW5pbWF0aW9ucyA9IGNoZWNrRXhpc3RlZEF0dHJzKGFuaW1hdGlvbnMsIGFuaW1hdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyDlkKbliJnlsIblm77lvaLmt7vliqDliLDliqjnlLvlhYPntKDpmJ/liJdcbiAgICAgICAgICAgIHRpbWVsaW5lLmFkZEFuaW1hdG9yKHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIGFuaW1hdGlvbnMucHVzaChhbmltYXRpb24pO1xuICAgICAgICB0aGlzLnNldCgnYW5pbWF0aW9ucycsIGFuaW1hdGlvbnMpO1xuICAgICAgICB0aGlzLnNldCgnX3BhdXNlJywgeyBpc1BhdXNlZDogZmFsc2UgfSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDlgZzmraLliqjnlLtcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHRvRW5kIOaYr+WQpuWIsOWKqOeUu+eahOacgOe7iOeKtuaAgVxuICAgICAqL1xuICAgIEVsZW1lbnQucHJvdG90eXBlLnN0b3BBbmltYXRlID0gZnVuY3Rpb24gKHRvRW5kKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGlmICh0b0VuZCA9PT0gdm9pZCAwKSB7IHRvRW5kID0gdHJ1ZTsgfVxuICAgICAgICB2YXIgYW5pbWF0aW9ucyA9IHRoaXMuZ2V0KCdhbmltYXRpb25zJyk7XG4gICAgICAgIGVhY2goYW5pbWF0aW9ucywgZnVuY3Rpb24gKGFuaW1hdGlvbikge1xuICAgICAgICAgICAgLy8g5bCG5Yqo55S75omn6KGM5Yiw5pyA5ZCO5LiA5binXG4gICAgICAgICAgICBpZiAodG9FbmQpIHtcbiAgICAgICAgICAgICAgICBpZiAoYW5pbWF0aW9uLm9uRnJhbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuYXR0cihhbmltYXRpb24ub25GcmFtZSgxKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5hdHRyKGFuaW1hdGlvbi50b0F0dHJzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYW5pbWF0aW9uLmNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgLy8g5Yqo55S75YGc5q2i5pe255qE5Zue6LCDXG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uLmNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNldCgnYW5pbWF0aW5nJywgZmFsc2UpO1xuICAgICAgICB0aGlzLnNldCgnYW5pbWF0aW9ucycsIFtdKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOaaguWBnOWKqOeUu1xuICAgICAqL1xuICAgIEVsZW1lbnQucHJvdG90eXBlLnBhdXNlQW5pbWF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHRpbWVsaW5lID0gdGhpcy5nZXQoJ3RpbWVsaW5lJyk7XG4gICAgICAgIHZhciBhbmltYXRpb25zID0gdGhpcy5nZXQoJ2FuaW1hdGlvbnMnKTtcbiAgICAgICAgdmFyIHBhdXNlVGltZSA9IHRpbWVsaW5lLmdldFRpbWUoKTtcbiAgICAgICAgZWFjaChhbmltYXRpb25zLCBmdW5jdGlvbiAoYW5pbWF0aW9uKSB7XG4gICAgICAgICAgICBhbmltYXRpb24uX3BhdXNlZCA9IHRydWU7XG4gICAgICAgICAgICBhbmltYXRpb24uX3BhdXNlVGltZSA9IHBhdXNlVGltZTtcbiAgICAgICAgICAgIGlmIChhbmltYXRpb24ucGF1c2VDYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIC8vIOWKqOeUu+aaguWBnOaXtueahOWbnuiwg1xuICAgICAgICAgICAgICAgIGFuaW1hdGlvbi5wYXVzZUNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvLyDorrDlvZXkuIvmmK/lnKjku4DkuYjml7blgJnmmoLlgZznmoRcbiAgICAgICAgdGhpcy5zZXQoJ19wYXVzZScsIHtcbiAgICAgICAgICAgIGlzUGF1c2VkOiB0cnVlLFxuICAgICAgICAgICAgcGF1c2VUaW1lOiBwYXVzZVRpbWUsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOaBouWkjeWKqOeUu1xuICAgICAqL1xuICAgIEVsZW1lbnQucHJvdG90eXBlLnJlc3VtZUFuaW1hdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0aW1lbGluZSA9IHRoaXMuZ2V0KCd0aW1lbGluZScpO1xuICAgICAgICB2YXIgY3VycmVudCA9IHRpbWVsaW5lLmdldFRpbWUoKTtcbiAgICAgICAgdmFyIGFuaW1hdGlvbnMgPSB0aGlzLmdldCgnYW5pbWF0aW9ucycpO1xuICAgICAgICB2YXIgcGF1c2VUaW1lID0gdGhpcy5nZXQoJ19wYXVzZScpLnBhdXNlVGltZTtcbiAgICAgICAgLy8g5LmL5ZCO5pu05paw5bGe5oCn6ZyA6KaB6K6h566X5Yqo55S75bey57uP5omn6KGM55qE5pe26ZW/77yM5aaC5p6c5pqC5YGc5LqG77yM5bCx5oqK5Yid5aeL5pe26Ze06LCD5ZCOXG4gICAgICAgIGVhY2goYW5pbWF0aW9ucywgZnVuY3Rpb24gKGFuaW1hdGlvbikge1xuICAgICAgICAgICAgYW5pbWF0aW9uLnN0YXJ0VGltZSA9IGFuaW1hdGlvbi5zdGFydFRpbWUgKyAoY3VycmVudCAtIHBhdXNlVGltZSk7XG4gICAgICAgICAgICBhbmltYXRpb24uX3BhdXNlZCA9IGZhbHNlO1xuICAgICAgICAgICAgYW5pbWF0aW9uLl9wYXVzZVRpbWUgPSBudWxsO1xuICAgICAgICAgICAgaWYgKGFuaW1hdGlvbi5yZXN1bWVDYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIGFuaW1hdGlvbi5yZXN1bWVDYWxsYmFjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZXQoJ19wYXVzZScsIHtcbiAgICAgICAgICAgIGlzUGF1c2VkOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2V0KCdhbmltYXRpb25zJywgYW5pbWF0aW9ucyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog6Kem5Y+R5aeU5omY5LqL5Lu2XG4gICAgICogQHBhcmFtICB7c3RyaW5nfSAgICAgdHlwZSDkuovku7bnsbvlnotcbiAgICAgKiBAcGFyYW0gIHtHcmFwaEV2ZW50fSBldmVudE9iaiDkuovku7blr7nosaFcbiAgICAgKi9cbiAgICBFbGVtZW50LnByb3RvdHlwZS5lbWl0RGVsZWdhdGlvbiA9IGZ1bmN0aW9uICh0eXBlLCBldmVudE9iaikge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgcGF0aHMgPSBldmVudE9iai5wcm9wYWdhdGlvblBhdGg7XG4gICAgICAgIHZhciBldmVudHMgPSB0aGlzLmdldEV2ZW50cygpO1xuICAgICAgICB2YXIgcmVsYXRpdmVTaGFwZTtcbiAgICAgICAgaWYgKHR5cGUgPT09ICdtb3VzZWVudGVyJykge1xuICAgICAgICAgICAgcmVsYXRpdmVTaGFwZSA9IGV2ZW50T2JqLmZyb21TaGFwZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0eXBlID09PSAnbW91c2VsZWF2ZScpIHtcbiAgICAgICAgICAgIHJlbGF0aXZlU2hhcGUgPSBldmVudE9iai50b1NoYXBlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfbG9vcF8xID0gZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICAgIHZhciBlbGVtZW50ID0gcGF0aHNbaV07XG4gICAgICAgICAgICAvLyDmmoLlrprot58gbmFtZSDnu5HlrppcbiAgICAgICAgICAgIHZhciBuYW1lXzEgPSBlbGVtZW50LmdldCgnbmFtZScpO1xuICAgICAgICAgICAgaWYgKG5hbWVfMSkge1xuICAgICAgICAgICAgICAgIC8vIOesrOS4gOS4qiBtb3VzZWVudGVyIOWSjCBtb3VzZWxlYXZlIOeahOWBnOatouWNs+WPr++8jOWboOS4uuWQjumdoueahOmDveaYr+WJjemdoueahCBQYXJlbnRcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgLy8g5Y+q5pyJIGVsZW1lbnQg5pivIEdyb3VwIOaIluiAhSBDYW52YXMg55qE5pe25YCZ77yM5omN6ZyA6KaB5Yik5patIGlzUGFyZW50XG4gICAgICAgICAgICAgICAgKGVsZW1lbnQuaXNHcm91cCgpIHx8IChlbGVtZW50LmlzQ2FudmFzICYmIGVsZW1lbnQuaXNDYW52YXMoKSkpICYmXG4gICAgICAgICAgICAgICAgICAgIHJlbGF0aXZlU2hhcGUgJiZcbiAgICAgICAgICAgICAgICAgICAgaXNQYXJlbnQoZWxlbWVudCwgcmVsYXRpdmVTaGFwZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiYnJlYWtcIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGlzQXJyYXkobmFtZV8xKSkge1xuICAgICAgICAgICAgICAgICAgICBlYWNoKG5hbWVfMSwgZnVuY3Rpb24gKHN1Yk5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLmVtaXREZWxlZ2F0ZUV2ZW50KGVsZW1lbnQsIHN1Yk5hbWUsIGV2ZW50T2JqKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzXzEuZW1pdERlbGVnYXRlRXZlbnQoZWxlbWVudCwgbmFtZV8xLCBldmVudE9iaik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgdGhpc18xID0gdGhpcztcbiAgICAgICAgLy8g6Iez5bCR5pyJ5LiA5Liq5a+56LGh77yM5LiU56ys5LiA5Liq5a+56LGh5Li6IHNoYXBlXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGF0aHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBzdGF0ZV8xID0gX2xvb3BfMShpKTtcbiAgICAgICAgICAgIGlmIChzdGF0ZV8xID09PSBcImJyZWFrXCIpXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEVsZW1lbnQucHJvdG90eXBlLmVtaXREZWxlZ2F0ZUV2ZW50ID0gZnVuY3Rpb24gKGVsZW1lbnQsIG5hbWUsIGV2ZW50T2JqKSB7XG4gICAgICAgIHZhciBldmVudHMgPSB0aGlzLmdldEV2ZW50cygpO1xuICAgICAgICAvLyDkuovku7blp5TmiZjnmoTlvaLlvI8gbmFtZTp0eXBlXG4gICAgICAgIHZhciBldmVudE5hbWUgPSBuYW1lICsgREVMRUdBVElPTl9TUExJVCArIGV2ZW50T2JqLnR5cGU7XG4gICAgICAgIGlmIChldmVudHNbZXZlbnROYW1lXSB8fCBldmVudHNbV0lMRENBUkRdKSB7XG4gICAgICAgICAgICAvLyDlr7nkuo7pgJrphY3nrKYgKu+8jOS6i+S7tuWQjeensCA9IOWnlOaJmOS6i+S7tuWQjeensFxuICAgICAgICAgICAgZXZlbnRPYmoubmFtZSA9IGV2ZW50TmFtZTtcbiAgICAgICAgICAgIGV2ZW50T2JqLmN1cnJlbnRUYXJnZXQgPSBlbGVtZW50O1xuICAgICAgICAgICAgZXZlbnRPYmouZGVsZWdhdGVUYXJnZXQgPSB0aGlzO1xuICAgICAgICAgICAgLy8g5bCG5aeU5omY5LqL5Lu255qE55uR5ZCs5a+56LGhIGRlbGVnYXRlT2JqZWN0IOaMgui9veWIsOS6i+S7tuWvueixoeS4ilxuICAgICAgICAgICAgZXZlbnRPYmouZGVsZWdhdGVPYmplY3QgPSBlbGVtZW50LmdldCgnZGVsZWdhdGVPYmplY3QnKTtcbiAgICAgICAgICAgIHRoaXMuZW1pdChldmVudE5hbWUsIGV2ZW50T2JqKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICog56e75Yqo5YWD57SgXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHRyYW5zbGF0ZVgg5rC05bmz56e75Yqo6Led56a7XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHRyYW5zbGF0ZVkg5Z6C55u056e75Yqo6Led56a7XG4gICAgICogQHJldHVybiB7SUVsZW1lbnR9IOWFg+e0oFxuICAgICAqL1xuICAgIEVsZW1lbnQucHJvdG90eXBlLnRyYW5zbGF0ZSA9IGZ1bmN0aW9uICh0cmFuc2xhdGVYLCB0cmFuc2xhdGVZKSB7XG4gICAgICAgIGlmICh0cmFuc2xhdGVYID09PSB2b2lkIDApIHsgdHJhbnNsYXRlWCA9IDA7IH1cbiAgICAgICAgaWYgKHRyYW5zbGF0ZVkgPT09IHZvaWQgMCkgeyB0cmFuc2xhdGVZID0gMDsgfVxuICAgICAgICB2YXIgbWF0cml4ID0gdGhpcy5nZXRNYXRyaXgoKTtcbiAgICAgICAgdmFyIG5ld01hdHJpeCA9IHRyYW5zZm9ybShtYXRyaXgsIFtbJ3QnLCB0cmFuc2xhdGVYLCB0cmFuc2xhdGVZXV0pO1xuICAgICAgICB0aGlzLnNldE1hdHJpeChuZXdNYXRyaXgpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOenu+WKqOWFg+e0oOWIsOebruagh+S9jee9rlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0YXJnZXRYIOebruagh+S9jee9rueahOawtOW5s+WdkOagh1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0YXJnZXRYIOebruagh+S9jee9rueahOWeguebtOWdkOagh1xuICAgICAqIEByZXR1cm4ge0lFbGVtZW50fSDlhYPntKBcbiAgICAgKi9cbiAgICBFbGVtZW50LnByb3RvdHlwZS5tb3ZlID0gZnVuY3Rpb24gKHRhcmdldFgsIHRhcmdldFkpIHtcbiAgICAgICAgdmFyIHggPSB0aGlzLmF0dHIoJ3gnKSB8fCAwO1xuICAgICAgICB2YXIgeSA9IHRoaXMuYXR0cigneScpIHx8IDA7XG4gICAgICAgIHRoaXMudHJhbnNsYXRlKHRhcmdldFggLSB4LCB0YXJnZXRZIC0geSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog56e75Yqo5YWD57Sg5Yiw55uu5qCH5L2N572u77yM562J5Lu35LqOIG1vdmUg5pa55rOV44CC55Sx5LqOIG1vdmVUbyDnmoTor63kuYnmgKfmm7TlvLrvvIzlm6DmraTlnKjmlofmoaPkuK3mjqjojZDkvb/nlKggbW92ZVRvIOaWueazlVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0YXJnZXRYIOebruagh+S9jee9rueahCB4IOi9tOWdkOagh1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0YXJnZXRZIOebruagh+S9jee9rueahCB5IOi9tOWdkOagh1xuICAgICAqIEByZXR1cm4ge0lFbGVtZW50fSDlhYPntKBcbiAgICAgKi9cbiAgICBFbGVtZW50LnByb3RvdHlwZS5tb3ZlVG8gPSBmdW5jdGlvbiAodGFyZ2V0WCwgdGFyZ2V0WSkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb3ZlKHRhcmdldFgsIHRhcmdldFkpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog57yp5pS+5YWD57SgXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJhdGlvWCDmsLTlubPnvKnmlL7mr5TkvotcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcmF0aW9ZIOWeguebtOe8qeaUvuavlOS+i1xuICAgICAqIEByZXR1cm4ge0lFbGVtZW50fSDlhYPntKBcbiAgICAgKi9cbiAgICBFbGVtZW50LnByb3RvdHlwZS5zY2FsZSA9IGZ1bmN0aW9uIChyYXRpb1gsIHJhdGlvWSkge1xuICAgICAgICB2YXIgbWF0cml4ID0gdGhpcy5nZXRNYXRyaXgoKTtcbiAgICAgICAgdmFyIG5ld01hdHJpeCA9IHRyYW5zZm9ybShtYXRyaXgsIFtbJ3MnLCByYXRpb1gsIHJhdGlvWSB8fCByYXRpb1hdXSk7XG4gICAgICAgIHRoaXMuc2V0TWF0cml4KG5ld01hdHJpeCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5Lul55S75biD5bem5LiK6KeSICgwLCAwKSDkuLrkuK3lv4Pml4vovazlhYPntKBcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcmFkaWFuIOaXi+i9rOinkuW6pijlvKfluqblgLwpXG4gICAgICogQHJldHVybiB7SUVsZW1lbnR9IOWFg+e0oFxuICAgICAqL1xuICAgIEVsZW1lbnQucHJvdG90eXBlLnJvdGF0ZSA9IGZ1bmN0aW9uIChyYWRpYW4pIHtcbiAgICAgICAgdmFyIG1hdHJpeCA9IHRoaXMuZ2V0TWF0cml4KCk7XG4gICAgICAgIHZhciBuZXdNYXRyaXggPSB0cmFuc2Zvcm0obWF0cml4LCBbWydyJywgcmFkaWFuXV0pO1xuICAgICAgICB0aGlzLnNldE1hdHJpeChuZXdNYXRyaXgpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOS7pei1t+Wni+eCueS4uuS4reW/g+aXi+i9rOWFg+e0oFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByYWRpYW4g5peL6L2s6KeS5bqmKOW8p+W6puWAvClcbiAgICAgKiBAcmV0dXJuIHtJRWxlbWVudH0g5YWD57SgXG4gICAgICovXG4gICAgRWxlbWVudC5wcm90b3R5cGUucm90YXRlQXRTdGFydCA9IGZ1bmN0aW9uIChyb3RhdGUpIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcy5hdHRyKCksIHggPSBfYS54LCB5ID0gX2EueTtcbiAgICAgICAgdmFyIG1hdHJpeCA9IHRoaXMuZ2V0TWF0cml4KCk7XG4gICAgICAgIHZhciBuZXdNYXRyaXggPSB0cmFuc2Zvcm0obWF0cml4LCBbXG4gICAgICAgICAgICBbJ3QnLCAteCwgLXldLFxuICAgICAgICAgICAgWydyJywgcm90YXRlXSxcbiAgICAgICAgICAgIFsndCcsIHgsIHldLFxuICAgICAgICBdKTtcbiAgICAgICAgdGhpcy5zZXRNYXRyaXgobmV3TWF0cml4KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDku6Xku7vmhI/ngrkgKHgsIHkpIOS4uuS4reW/g+aXi+i9rOWFg+e0oFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByYWRpYW4g5peL6L2s6KeS5bqmKOW8p+W6puWAvClcbiAgICAgKiBAcmV0dXJuIHtJRWxlbWVudH0g5YWD57SgXG4gICAgICovXG4gICAgRWxlbWVudC5wcm90b3R5cGUucm90YXRlQXRQb2ludCA9IGZ1bmN0aW9uICh4LCB5LCByb3RhdGUpIHtcbiAgICAgICAgdmFyIG1hdHJpeCA9IHRoaXMuZ2V0TWF0cml4KCk7XG4gICAgICAgIHZhciBuZXdNYXRyaXggPSB0cmFuc2Zvcm0obWF0cml4LCBbXG4gICAgICAgICAgICBbJ3QnLCAteCwgLXldLFxuICAgICAgICAgICAgWydyJywgcm90YXRlXSxcbiAgICAgICAgICAgIFsndCcsIHgsIHldLFxuICAgICAgICBdKTtcbiAgICAgICAgdGhpcy5zZXRNYXRyaXgobmV3TWF0cml4KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICByZXR1cm4gRWxlbWVudDtcbn0oQmFzZSkpO1xuZXhwb3J0IGRlZmF1bHQgRWxlbWVudDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWVsZW1lbnQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/element.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/group.js":
/*!*****************************************************************************!*\
!*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/group.js ***!
\*****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _container__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./container */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/container.js\");\n\n\nvar AbstractGroup = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(AbstractGroup, _super);\n function AbstractGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AbstractGroup.prototype.isGroup = function () {\n return true;\n };\n AbstractGroup.prototype.isEntityGroup = function () {\n return false;\n };\n AbstractGroup.prototype.clone = function () {\n var clone = _super.prototype.clone.call(this);\n // 获取构造函数\n var children = this.getChildren();\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n clone.add(child.clone());\n }\n return clone;\n };\n return AbstractGroup;\n}(_container__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (AbstractGroup);\n//# sourceMappingURL=group.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Fic3RyYWN0L2dyb3VwLmpzP2I3ZGEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ0U7QUFDcEM7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIscUJBQXFCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyxrREFBUztBQUNJLDRFQUFhLEVBQUM7QUFDN0IiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Fic3RyYWN0L2dyb3VwLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgQ29udGFpbmVyIGZyb20gJy4vY29udGFpbmVyJztcbnZhciBBYnN0cmFjdEdyb3VwID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhBYnN0cmFjdEdyb3VwLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEFic3RyYWN0R3JvdXAoKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgQWJzdHJhY3RHcm91cC5wcm90b3R5cGUuaXNHcm91cCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiAgICBBYnN0cmFjdEdyb3VwLnByb3RvdHlwZS5pc0VudGl0eUdyb3VwID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICBBYnN0cmFjdEdyb3VwLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGNsb25lID0gX3N1cGVyLnByb3RvdHlwZS5jbG9uZS5jYWxsKHRoaXMpO1xuICAgICAgICAvLyDojrflj5bmnoTpgKDlh73mlbBcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5nZXRDaGlsZHJlbigpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXTtcbiAgICAgICAgICAgIGNsb25lLmFkZChjaGlsZC5jbG9uZSgpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2xvbmU7XG4gICAgfTtcbiAgICByZXR1cm4gQWJzdHJhY3RHcm91cDtcbn0oQ29udGFpbmVyKSk7XG5leHBvcnQgZGVmYXVsdCBBYnN0cmFjdEdyb3VwO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z3JvdXAuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/group.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/shape.js":
/*!*****************************************************************************!*\
!*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/shape.js ***!
\*****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./element */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/element.js\");\n/* harmony import */ var _util_matrix__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/matrix */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/matrix.js\");\n\n\n\nvar AbstractShape = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(AbstractShape, _super);\n function AbstractShape(cfg) {\n return _super.call(this, cfg) || this;\n }\n // 是否在包围盒内\n AbstractShape.prototype._isInBBox = function (refX, refY) {\n var bbox = this.getBBox();\n return bbox.minX <= refX && bbox.maxX >= refX && bbox.minY <= refY && bbox.maxY >= refY;\n };\n /**\n * 属性更改后需要做的事情\n * @protected\n * @param {ShapeAttrs} targetAttrs 渲染的图像属性\n */\n AbstractShape.prototype.afterAttrsChange = function (targetAttrs) {\n _super.prototype.afterAttrsChange.call(this, targetAttrs);\n this.clearCacheBBox();\n };\n // 计算包围盒时,需要缓存,这是一个高频的操作\n AbstractShape.prototype.getBBox = function () {\n var bbox = this.cfg.bbox;\n if (!bbox) {\n bbox = this.calculateBBox();\n this.set('bbox', bbox);\n }\n return bbox;\n };\n // 计算相对于画布的包围盒\n AbstractShape.prototype.getCanvasBBox = function () {\n var canvasBBox = this.cfg.canvasBBox;\n if (!canvasBBox) {\n canvasBBox = this.calculateCanvasBBox();\n this.set('canvasBBox', canvasBBox);\n }\n return canvasBBox;\n };\n AbstractShape.prototype.applyMatrix = function (matrix) {\n _super.prototype.applyMatrix.call(this, matrix);\n // 清理掉缓存的包围盒\n this.set('canvasBBox', null);\n };\n /**\n * 计算相对于画布的包围盒,默认等同于 bbox\n * @return {BBox} 包围盒\n */\n AbstractShape.prototype.calculateCanvasBBox = function () {\n var bbox = this.getBBox();\n var totalMatrix = this.getTotalMatrix();\n var minX = bbox.minX, minY = bbox.minY, maxX = bbox.maxX, maxY = bbox.maxY;\n if (totalMatrix) {\n var topLeft = Object(_util_matrix__WEBPACK_IMPORTED_MODULE_2__[\"multiplyVec2\"])(totalMatrix, [bbox.minX, bbox.minY]);\n var topRight = Object(_util_matrix__WEBPACK_IMPORTED_MODULE_2__[\"multiplyVec2\"])(totalMatrix, [bbox.maxX, bbox.minY]);\n var bottomLeft = Object(_util_matrix__WEBPACK_IMPORTED_MODULE_2__[\"multiplyVec2\"])(totalMatrix, [bbox.minX, bbox.maxY]);\n var bottomRight = Object(_util_matrix__WEBPACK_IMPORTED_MODULE_2__[\"multiplyVec2\"])(totalMatrix, [bbox.maxX, bbox.maxY]);\n minX = Math.min(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]);\n maxX = Math.max(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]);\n minY = Math.min(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1]);\n maxY = Math.max(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1]);\n }\n var attrs = this.attrs;\n // 如果存在 shadow 则计算 shadow\n if (attrs.shadowColor) {\n var _a = attrs.shadowBlur, shadowBlur = _a === void 0 ? 0 : _a, _b = attrs.shadowOffsetX, shadowOffsetX = _b === void 0 ? 0 : _b, _c = attrs.shadowOffsetY, shadowOffsetY = _c === void 0 ? 0 : _c;\n var shadowLeft = minX - shadowBlur + shadowOffsetX;\n var shadowRight = maxX + shadowBlur + shadowOffsetX;\n var shadowTop = minY - shadowBlur + shadowOffsetY;\n var shadowBottom = maxY + shadowBlur + shadowOffsetY;\n minX = Math.min(minX, shadowLeft);\n maxX = Math.max(maxX, shadowRight);\n minY = Math.min(minY, shadowTop);\n maxY = Math.max(maxY, shadowBottom);\n }\n return {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY,\n };\n };\n /**\n * @protected\n * 清理缓存的 bbox\n */\n AbstractShape.prototype.clearCacheBBox = function () {\n this.set('bbox', null);\n this.set('canvasBBox', null);\n };\n // 实现接口\n AbstractShape.prototype.isClipShape = function () {\n return this.get('isClipShape');\n };\n /**\n * @protected\n * 不同的图形自己实现是否在图形内部的逻辑,要判断边和填充区域\n * @param {number} refX 相对于图形的坐标 x\n * @param {number} refY 相对于图形的坐标 Y\n * @return {boolean} 点是否在图形内部\n */\n AbstractShape.prototype.isInShape = function (refX, refY) {\n return false;\n };\n /**\n * 是否仅仅使用 BBox 检测就可以判定拾取到图形\n * 默认是 false,但是有些图形例如 image、marker 等都可直接使用 BBox 的检测而不需要使用图形拾取\n * @return {Boolean} 仅仅使用 BBox 进行拾取\n */\n AbstractShape.prototype.isOnlyHitBox = function () {\n return false;\n };\n // 不同的 Shape 各自实现\n AbstractShape.prototype.isHit = function (x, y) {\n var startArrowShape = this.get('startArrowShape');\n var endArrowShape = this.get('endArrowShape');\n var vec = [x, y, 1];\n vec = this.invertFromMatrix(vec);\n var refX = vec[0], refY = vec[1];\n var inBBox = this._isInBBox(refX, refY);\n // 跳过图形的拾取,在某些图形中可以省略一倍的检测成本\n if (this.isOnlyHitBox()) {\n return inBBox;\n }\n // 被裁减掉的和不在包围盒内的不进行计算\n if (inBBox && !this.isClipped(refX, refY)) {\n // 对图形进行拾取判断\n if (this.isInShape(refX, refY)) {\n return true;\n }\n // 对起始箭头进行拾取判断\n if (startArrowShape && startArrowShape.isHit(refX, refY)) {\n return true;\n }\n // 对结束箭头进行拾取判断\n if (endArrowShape && endArrowShape.isHit(refX, refY)) {\n return true;\n }\n }\n return false;\n };\n return AbstractShape;\n}(_element__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (AbstractShape);\n//# sourceMappingURL=shape.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Fic3RyYWN0L3NoYXBlLmpzPzZhMjYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDRjtBQUNjO0FBQzlDO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFdBQVc7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLEtBQUs7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLGlFQUFZO0FBQ3RDLDJCQUEyQixpRUFBWTtBQUN2Qyw2QkFBNkIsaUVBQVk7QUFDekMsOEJBQThCLGlFQUFZO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsT0FBTztBQUN2QixnQkFBZ0IsT0FBTztBQUN2QixnQkFBZ0IsUUFBUTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixRQUFRO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLGdEQUFPO0FBQ00sNEVBQWEsRUFBQztBQUM3QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1iYXNlQDAuNS45QEBhbnR2L2ctYmFzZS9lc20vYWJzdHJhY3Qvc2hhcGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCBFbGVtZW50IGZyb20gJy4vZWxlbWVudCc7XG5pbXBvcnQgeyBtdWx0aXBseVZlYzIgfSBmcm9tICcuLi91dGlsL21hdHJpeCc7XG52YXIgQWJzdHJhY3RTaGFwZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQWJzdHJhY3RTaGFwZSwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBBYnN0cmFjdFNoYXBlKGNmZykge1xuICAgICAgICByZXR1cm4gX3N1cGVyLmNhbGwodGhpcywgY2ZnKSB8fCB0aGlzO1xuICAgIH1cbiAgICAvLyDmmK/lkKblnKjljIXlm7Tnm5LlhoVcbiAgICBBYnN0cmFjdFNoYXBlLnByb3RvdHlwZS5faXNJbkJCb3ggPSBmdW5jdGlvbiAocmVmWCwgcmVmWSkge1xuICAgICAgICB2YXIgYmJveCA9IHRoaXMuZ2V0QkJveCgpO1xuICAgICAgICByZXR1cm4gYmJveC5taW5YIDw9IHJlZlggJiYgYmJveC5tYXhYID49IHJlZlggJiYgYmJveC5taW5ZIDw9IHJlZlkgJiYgYmJveC5tYXhZID49IHJlZlk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDlsZ7mgKfmm7TmlLnlkI7pnIDopoHlgZrnmoTkuovmg4VcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICogQHBhcmFtIHtTaGFwZUF0dHJzfSB0YXJnZXRBdHRycyDmuLLmn5PnmoTlm77lg4/lsZ7mgKdcbiAgICAgKi9cbiAgICBBYnN0cmFjdFNoYXBlLnByb3RvdHlwZS5hZnRlckF0dHJzQ2hhbmdlID0gZnVuY3Rpb24gKHRhcmdldEF0dHJzKSB7XG4gICAgICAgIF9zdXBlci5wcm90b3R5cGUuYWZ0ZXJBdHRyc0NoYW5nZS5jYWxsKHRoaXMsIHRhcmdldEF0dHJzKTtcbiAgICAgICAgdGhpcy5jbGVhckNhY2hlQkJveCgpO1xuICAgIH07XG4gICAgLy8g6K6h566X5YyF5Zu055uS5pe277yM6ZyA6KaB57yT5a2Y77yM6L+Z5piv5LiA5Liq6auY6aKR55qE5pON5L2cXG4gICAgQWJzdHJhY3RTaGFwZS5wcm90b3R5cGUuZ2V0QkJveCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGJib3ggPSB0aGlzLmNmZy5iYm94O1xuICAgICAgICBpZiAoIWJib3gpIHtcbiAgICAgICAgICAgIGJib3ggPSB0aGlzLmNhbGN1bGF0ZUJCb3goKTtcbiAgICAgICAgICAgIHRoaXMuc2V0KCdiYm94JywgYmJveCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJib3g7XG4gICAgfTtcbiAgICAvLyDorqHnrpfnm7jlr7nkuo7nlLvluIPnmoTljIXlm7Tnm5JcbiAgICBBYnN0cmFjdFNoYXBlLnByb3RvdHlwZS5nZXRDYW52YXNCQm94ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgY2FudmFzQkJveCA9IHRoaXMuY2ZnLmNhbnZhc0JCb3g7XG4gICAgICAgIGlmICghY2FudmFzQkJveCkge1xuICAgICAgICAgICAgY2FudmFzQkJveCA9IHRoaXMuY2FsY3VsYXRlQ2FudmFzQkJveCgpO1xuICAgICAgICAgICAgdGhpcy5zZXQoJ2NhbnZhc0JCb3gnLCBjYW52YXNCQm94KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2FudmFzQkJveDtcbiAgICB9O1xuICAgIEFic3RyYWN0U2hhcGUucHJvdG90eXBlLmFwcGx5TWF0cml4ID0gZnVuY3Rpb24gKG1hdHJpeCkge1xuICAgICAgICBfc3VwZXIucHJvdG90eXBlLmFwcGx5TWF0cml4LmNhbGwodGhpcywgbWF0cml4KTtcbiAgICAgICAgLy8g5riF55CG5o6J57yT5a2Y55qE5YyF5Zu055uSXG4gICAgICAgIHRoaXMuc2V0KCdjYW52YXNCQm94JywgbnVsbCk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDorqHnrpfnm7jlr7nkuo7nlLvluIPnmoTljIXlm7Tnm5LvvIzpu5jorqTnrYnlkIzkuo4gYmJveFxuICAgICAqIEByZXR1cm4ge0JCb3h9IOWMheWbtOebklxuICAgICAqL1xuICAgIEFic3RyYWN0U2hhcGUucHJvdG90eXBlLmNhbGN1bGF0ZUNhbnZhc0JCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBiYm94ID0gdGhpcy5nZXRCQm94KCk7XG4gICAgICAgIHZhciB0b3RhbE1hdHJpeCA9IHRoaXMuZ2V0VG90YWxNYXRyaXgoKTtcbiAgICAgICAgdmFyIG1pblggPSBiYm94Lm1pblgsIG1pblkgPSBiYm94Lm1pblksIG1heFggPSBiYm94Lm1heFgsIG1heFkgPSBiYm94Lm1heFk7XG4gICAgICAgIGlmICh0b3RhbE1hdHJpeCkge1xuICAgICAgICAgICAgdmFyIHRvcExlZnQgPSBtdWx0aXBseVZlYzIodG90YWxNYXRyaXgsIFtiYm94Lm1pblgsIGJib3gubWluWV0pO1xuICAgICAgICAgICAgdmFyIHRvcFJpZ2h0ID0gbXVsdGlwbHlWZWMyKHRvdGFsTWF0cml4LCBbYmJveC5tYXhYLCBiYm94Lm1pblldKTtcbiAgICAgICAgICAgIHZhciBib3R0b21MZWZ0ID0gbXVsdGlwbHlWZWMyKHRvdGFsTWF0cml4LCBbYmJveC5taW5YLCBiYm94Lm1heFldKTtcbiAgICAgICAgICAgIHZhciBib3R0b21SaWdodCA9IG11bHRpcGx5VmVjMih0b3RhbE1hdHJpeCwgW2Jib3gubWF4WCwgYmJveC5tYXhZXSk7XG4gICAgICAgICAgICBtaW5YID0gTWF0aC5taW4odG9wTGVmdFswXSwgdG9wUmlnaHRbMF0sIGJvdHRvbUxlZnRbMF0sIGJvdHRvbVJpZ2h0WzBdKTtcbiAgICAgICAgICAgIG1heFggPSBNYXRoLm1heCh0b3BMZWZ0WzBdLCB0b3BSaWdodFswXSwgYm90dG9tTGVmdFswXSwgYm90dG9tUmlnaHRbMF0pO1xuICAgICAgICAgICAgbWluWSA9IE1hdGgubWluKHRvcExlZnRbMV0sIHRvcFJpZ2h0WzFdLCBib3R0b21MZWZ0WzFdLCBib3R0b21SaWdodFsxXSk7XG4gICAgICAgICAgICBtYXhZID0gTWF0aC5tYXgodG9wTGVmdFsxXSwgdG9wUmlnaHRbMV0sIGJvdHRvbUxlZnRbMV0sIGJvdHRvbVJpZ2h0WzFdKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHJzO1xuICAgICAgICAvLyDlpoLmnpzlrZjlnKggc2hhZG93IOWImeiuoeeulyBzaGFkb3dcbiAgICAgICAgaWYgKGF0dHJzLnNoYWRvd0NvbG9yKSB7XG4gICAgICAgICAgICB2YXIgX2EgPSBhdHRycy5zaGFkb3dCbHVyLCBzaGFkb3dCbHVyID0gX2EgPT09IHZvaWQgMCA/IDAgOiBfYSwgX2IgPSBhdHRycy5zaGFkb3dPZmZzZXRYLCBzaGFkb3dPZmZzZXRYID0gX2IgPT09IHZvaWQgMCA/IDAgOiBfYiwgX2MgPSBhdHRycy5zaGFkb3dPZmZzZXRZLCBzaGFkb3dPZmZzZXRZID0gX2MgPT09IHZvaWQgMCA/IDAgOiBfYztcbiAgICAgICAgICAgIHZhciBzaGFkb3dMZWZ0ID0gbWluWCAtIHNoYWRvd0JsdXIgKyBzaGFkb3dPZmZzZXRYO1xuICAgICAgICAgICAgdmFyIHNoYWRvd1JpZ2h0ID0gbWF4WCArIHNoYWRvd0JsdXIgKyBzaGFkb3dPZmZzZXRYO1xuICAgICAgICAgICAgdmFyIHNoYWRvd1RvcCA9IG1pblkgLSBzaGFkb3dCbHVyICsgc2hhZG93T2Zmc2V0WTtcbiAgICAgICAgICAgIHZhciBzaGFkb3dCb3R0b20gPSBtYXhZICsgc2hhZG93Qmx1ciArIHNoYWRvd09mZnNldFk7XG4gICAgICAgICAgICBtaW5YID0gTWF0aC5taW4obWluWCwgc2hhZG93TGVmdCk7XG4gICAgICAgICAgICBtYXhYID0gTWF0aC5tYXgobWF4WCwgc2hhZG93UmlnaHQpO1xuICAgICAgICAgICAgbWluWSA9IE1hdGgubWluKG1pblksIHNoYWRvd1RvcCk7XG4gICAgICAgICAgICBtYXhZID0gTWF0aC5tYXgobWF4WSwgc2hhZG93Qm90dG9tKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogbWluWCxcbiAgICAgICAgICAgIHk6IG1pblksXG4gICAgICAgICAgICBtaW5YOiBtaW5YLFxuICAgICAgICAgICAgbWluWTogbWluWSxcbiAgICAgICAgICAgIG1heFg6IG1heFgsXG4gICAgICAgICAgICBtYXhZOiBtYXhZLFxuICAgICAgICAgICAgd2lkdGg6IG1heFggLSBtaW5YLFxuICAgICAgICAgICAgaGVpZ2h0OiBtYXhZIC0gbWluWSxcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiDmuIXnkIbnvJPlrZjnmoQgYmJveFxuICAgICAqL1xuICAgIEFic3RyYWN0U2hhcGUucHJvdG90eXBlLmNsZWFyQ2FjaGVCQm94ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnNldCgnYmJveCcsIG51bGwpO1xuICAgICAgICB0aGlzLnNldCgnY2FudmFzQkJveCcsIG51bGwpO1xuICAgIH07XG4gICAgLy8g5a6e546w5o6l5Y+jXG4gICAgQWJzdHJhY3RTaGFwZS5wcm90b3R5cGUuaXNDbGlwU2hhcGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldCgnaXNDbGlwU2hhcGUnKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiDkuI3lkIznmoTlm77lvaLoh6rlt7Hlrp7njrDmmK/lkKblnKjlm77lvaLlhoXpg6jnmoTpgLvovpHvvIzopoHliKTmlq3ovrnlkozloavlhYXljLrln59cbiAgICAgKiBAcGFyYW0gIHtudW1iZXJ9ICByZWZYIOebuOWvueS6juWbvuW9oueahOWdkOaghyB4XG4gICAgICogQHBhcmFtICB7bnVtYmVyfSAgcmVmWSDnm7jlr7nkuo7lm77lvaLnmoTlnZDmoIcgWVxuICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IOeCueaYr+WQpuWcqOWbvuW9ouWGhemDqFxuICAgICAqL1xuICAgIEFic3RyYWN0U2hhcGUucHJvdG90eXBlLmlzSW5TaGFwZSA9IGZ1bmN0aW9uIChyZWZYLCByZWZZKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOaYr+WQpuS7heS7heS9v+eUqCBCQm94IOajgOa1i+WwseWPr+S7peWIpOWumuaLvuWPluWIsOWbvuW9olxuICAgICAqIOm7mOiupOaYryBmYWxzZe+8jOS9huaYr+acieS6m+WbvuW9ouS+i+WmgiBpbWFnZeOAgW1hcmtlciDnrYnpg73lj6/nm7TmjqXkvb/nlKggQkJveCDnmoTmo4DmtYvogIzkuI3pnIDopoHkvb/nlKjlm77lvaLmi77lj5ZcbiAgICAgKiBAcmV0dXJuIHtCb29sZWFufSDku4Xku4Xkvb/nlKggQkJveCDov5vooYzmi77lj5ZcbiAgICAgKi9cbiAgICBBYnN0cmFjdFNoYXBlLnByb3RvdHlwZS5pc09ubHlIaXRCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIC8vIOS4jeWQjOeahCBTaGFwZSDlkIToh6rlrp7njrBcbiAgICBBYnN0cmFjdFNoYXBlLnByb3RvdHlwZS5pc0hpdCA9IGZ1bmN0aW9uICh4LCB5KSB7XG4gICAgICAgIHZhciBzdGFydEFycm93U2hhcGUgPSB0aGlzLmdldCgnc3RhcnRBcnJvd1NoYXBlJyk7XG4gICAgICAgIHZhciBlbmRBcnJvd1NoYXBlID0gdGhpcy5nZXQoJ2VuZEFycm93U2hhcGUnKTtcbiAgICAgICAgdmFyIHZlYyA9IFt4LCB5LCAxXTtcbiAgICAgICAgdmVjID0gdGhpcy5pbnZlcnRGcm9tTWF0cml4KHZlYyk7XG4gICAgICAgIHZhciByZWZYID0gdmVjWzBdLCByZWZZID0gdmVjWzFdO1xuICAgICAgICB2YXIgaW5CQm94ID0gdGhpcy5faXNJbkJCb3gocmVmWCwgcmVmWSk7XG4gICAgICAgIC8vIOi3s+i/h+WbvuW9oueahOaLvuWPlu+8jOWcqOafkOS6m+WbvuW9ouS4reWPr+S7peecgeeVpeS4gOWAjeeahOajgOa1i+aIkOacrFxuICAgICAgICBpZiAodGhpcy5pc09ubHlIaXRCb3goKSkge1xuICAgICAgICAgICAgcmV0dXJuIGluQkJveDtcbiAgICAgICAgfVxuICAgICAgICAvLyDooqvoo4Hlh4/mjonnmoTlkozkuI3lnKjljIXlm7Tnm5LlhoXnmoTkuI3ov5vooYzorqHnrpdcbiAgICAgICAgaWYgKGluQkJveCAmJiAhdGhpcy5pc0NsaXBwZWQocmVmWCwgcmVmWSkpIHtcbiAgICAgICAgICAgIC8vIOWvueWbvuW9oui/m+ihjOaLvuWPluWIpOaWrVxuICAgICAgICAgICAgaWYgKHRoaXMuaXNJblNoYXBlKHJlZlgsIHJlZlkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyDlr7notbflp4vnrq3lpLTov5vooYzmi77lj5bliKTmlq1cbiAgICAgICAgICAgIGlmIChzdGFydEFycm93U2hhcGUgJiYgc3RhcnRBcnJvd1NoYXBlLmlzSGl0KHJlZlgsIHJlZlkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyDlr7nnu5PmnZ/nrq3lpLTov5vooYzmi77lj5bliKTmlq1cbiAgICAgICAgICAgIGlmIChlbmRBcnJvd1NoYXBlICYmIGVuZEFycm93U2hhcGUuaXNIaXQocmVmWCwgcmVmWSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICByZXR1cm4gQWJzdHJhY3RTaGFwZTtcbn0oRWxlbWVudCkpO1xuZXhwb3J0IGRlZmF1bHQgQWJzdHJhY3RTaGFwZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNoYXBlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/shape.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/animate/timeline.js":
/*!*******************************************************************************!*\
!*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/animate/timeline.js ***!
\*******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var d3_timer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-timer */ \"./node_modules/_d3-timer@1.0.10@d3-timer/src/index.js\");\n/* harmony import */ var d3_ease__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-ease */ \"./node_modules/_d3-ease@1.0.7@d3-ease/src/index.js\");\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3-interpolate */ \"./node_modules/_d3-interpolate@1.4.0@d3-interpolate/src/index.js\");\n/* harmony import */ var _util_path__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/path */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/path.js\");\n/* harmony import */ var _util_color__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/color */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/color.js\");\n\n\n\n // 目前整体动画只需要数值和数组的差值计算\n\n\nvar IDENTITY_MATRIX = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n/**\n * 使用 ratio 进行插值计算来更新属性\n * @param {IElement} shape 元素\n * @param {Animation} animation 动画\n * @param {number} ratio 比例\n * @return {boolean} 动画是否执行完成\n */\nfunction _update(shape, animation, ratio) {\n var cProps = {}; // 此刻属性\n var fromAttrs = animation.fromAttrs, toAttrs = animation.toAttrs;\n if (shape.destroyed) {\n return;\n }\n var interf; // 差值函数\n for (var k in toAttrs) {\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isEqual\"])(fromAttrs[k], toAttrs[k])) {\n if (k === 'path') {\n var toPath = toAttrs[k];\n var fromPath = fromAttrs[k];\n if (toPath.length > fromPath.length) {\n toPath = _util_path__WEBPACK_IMPORTED_MODULE_4__[\"parsePathString\"](toAttrs[k]); // 终点状态\n fromPath = _util_path__WEBPACK_IMPORTED_MODULE_4__[\"parsePathString\"](fromAttrs[k]); // 起始状态\n fromPath = _util_path__WEBPACK_IMPORTED_MODULE_4__[\"fillPathByDiff\"](fromPath, toPath);\n fromPath = _util_path__WEBPACK_IMPORTED_MODULE_4__[\"formatPath\"](fromPath, toPath);\n animation.fromAttrs.path = fromPath;\n animation.toAttrs.path = toPath;\n }\n else if (!animation.pathFormatted) {\n toPath = _util_path__WEBPACK_IMPORTED_MODULE_4__[\"parsePathString\"](toAttrs[k]);\n fromPath = _util_path__WEBPACK_IMPORTED_MODULE_4__[\"parsePathString\"](fromAttrs[k]);\n fromPath = _util_path__WEBPACK_IMPORTED_MODULE_4__[\"formatPath\"](fromPath, toPath);\n animation.fromAttrs.path = fromPath;\n animation.toAttrs.path = toPath;\n animation.pathFormatted = true;\n }\n cProps[k] = [];\n for (var i = 0; i < toPath.length; i++) {\n var toPathPoint = toPath[i];\n var fromPathPoint = fromPath[i];\n var cPathPoint = [];\n for (var j = 0; j < toPathPoint.length; j++) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(toPathPoint[j]) && fromPathPoint && Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(fromPathPoint[j])) {\n interf = Object(d3_interpolate__WEBPACK_IMPORTED_MODULE_3__[\"interpolate\"])(fromPathPoint[j], toPathPoint[j]);\n cPathPoint.push(interf(ratio));\n }\n else {\n cPathPoint.push(toPathPoint[j]);\n }\n }\n cProps[k].push(cPathPoint);\n }\n }\n else if (k === 'matrix') {\n /*\n 对矩阵进行插值时,需要保证矩阵不为空,为空则使用单位矩阵\n TODO: 二维和三维场景下单位矩阵不同,之后 WebGL 版需要做进一步处理\n */\n var matrixFn = Object(d3_interpolate__WEBPACK_IMPORTED_MODULE_3__[\"interpolateArray\"])(fromAttrs[k] || IDENTITY_MATRIX, toAttrs[k] || IDENTITY_MATRIX);\n var currentMatrix = matrixFn(ratio);\n cProps[k] = currentMatrix;\n }\n else if (Object(_util_color__WEBPACK_IMPORTED_MODULE_5__[\"isColorProp\"])(k) && Object(_util_color__WEBPACK_IMPORTED_MODULE_5__[\"isGradientColor\"])(toAttrs[k])) {\n cProps[k] = toAttrs[k];\n }\n else if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(toAttrs[k])) {\n // 非函数类型的值才能做插值\n interf = Object(d3_interpolate__WEBPACK_IMPORTED_MODULE_3__[\"interpolate\"])(fromAttrs[k], toAttrs[k]);\n cProps[k] = interf(ratio);\n }\n }\n }\n shape.attr(cProps);\n}\n/**\n * 根据自定义帧动画函数 onFrame 来更新属性\n * @param {IElement} shape 元素\n * @param {Animation} animation 动画\n * @param {number} elapsed 动画执行时间(毫秒)\n * @return {boolean} 动画是否执行完成\n */\nfunction update(shape, animation, elapsed) {\n var startTime = animation.startTime, delay = animation.delay;\n // 如果还没有开始执行或暂停,先不更新\n if (elapsed < startTime + delay || animation._paused) {\n return false;\n }\n var ratio;\n var duration = animation.duration;\n var easing = animation.easing;\n // 已执行时间\n elapsed = elapsed - startTime - animation.delay;\n if (animation.repeat) {\n // 如果动画重复执行,则 elapsed > duration,计算 ratio 时需取模\n ratio = (elapsed % duration) / duration;\n ratio = d3_ease__WEBPACK_IMPORTED_MODULE_2__[easing](ratio);\n }\n else {\n ratio = elapsed / duration;\n if (ratio < 1) {\n // 动画未执行完\n ratio = d3_ease__WEBPACK_IMPORTED_MODULE_2__[easing](ratio);\n }\n else {\n // 动画已执行完\n if (animation.onFrame) {\n shape.attr(animation.onFrame(1));\n }\n else {\n shape.attr(animation.toAttrs);\n }\n return true;\n }\n }\n if (animation.onFrame) {\n var attrs = animation.onFrame(ratio);\n shape.attr(attrs);\n }\n else {\n _update(shape, animation, ratio);\n }\n return false;\n}\nvar Timeline = /** @class */ (function () {\n /**\n * 时间轴构造函数,依赖于画布\n * @param {}\n */\n function Timeline(canvas) {\n /**\n * 执行动画的元素列表\n * @type {IElement[]}\n */\n this.animators = [];\n /**\n * 当前时间\n * @type {number}\n */\n this.current = 0;\n /**\n * 定时器\n * @type {d3Timer.Timer}\n */\n this.timer = null;\n this.canvas = canvas;\n }\n /**\n * 初始化定时器\n */\n Timeline.prototype.initTimer = function () {\n var _this = this;\n var isFinished = false;\n var shape;\n var animations;\n var animation;\n this.timer = d3_timer__WEBPACK_IMPORTED_MODULE_1__[\"timer\"](function (elapsed) {\n _this.current = elapsed;\n if (_this.animators.length > 0) {\n for (var i = _this.animators.length - 1; i >= 0; i--) {\n shape = _this.animators[i];\n if (shape.destroyed) {\n // 如果已经被销毁,直接移出队列\n _this.removeAnimator(i);\n continue;\n }\n if (!shape.isAnimatePaused()) {\n animations = shape.get('animations');\n for (var j = animations.length - 1; j >= 0; j--) {\n animation = animations[j];\n isFinished = update(shape, animation, elapsed);\n if (isFinished) {\n animations.splice(j, 1);\n isFinished = false;\n if (animation.callback) {\n animation.callback();\n }\n }\n }\n }\n if (animations.length === 0) {\n _this.removeAnimator(i);\n }\n }\n var autoDraw = _this.canvas.get('autoDraw');\n // 非自动渲染模式下,手动调用 canvas.draw() 重新渲染\n if (!autoDraw) {\n _this.canvas.draw();\n }\n }\n });\n };\n /**\n * 增加动画元素\n */\n Timeline.prototype.addAnimator = function (shape) {\n this.animators.push(shape);\n };\n /**\n * 移除动画元素\n */\n Timeline.prototype.removeAnimator = function (index) {\n this.animators.splice(index, 1);\n };\n /**\n * 是否有动画在执行\n */\n Timeline.prototype.isAnimating = function () {\n return !!this.animators.length;\n };\n /**\n * 停止定时器\n */\n Timeline.prototype.stop = function () {\n if (this.timer) {\n this.timer.stop();\n }\n };\n /**\n * 停止时间轴上所有元素的动画,并置空动画元素列表\n * @param {boolean} toEnd 是否到动画的最终状态,用来透传给动画元素的 stopAnimate 方法\n */\n Timeline.prototype.stopAllAnimations = function (toEnd) {\n if (toEnd === void 0) { toEnd = true; }\n this.animators.forEach(function (animator) {\n animator.stopAnimate(toEnd);\n });\n this.animators = [];\n this.canvas.draw();\n };\n /**\n * 获取当前时间\n */\n Timeline.prototype.getTime = function () {\n return this.current;\n };\n return Timeline;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (Timeline);\n//# sourceMappingURL=timeline.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2FuaW1hdGUvdGltZWxpbmUuanM/NTExOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEyRDtBQUN2QjtBQUNGO0FBQzZCO0FBQ3RCO0FBQ29CO0FBQzdEO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLFVBQVU7QUFDckIsV0FBVyxPQUFPO0FBQ2xCLFlBQVksUUFBUTtBQUNwQjtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0EsYUFBYSwwREFBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QiwwREFBd0IsYUFBYTtBQUNsRSwrQkFBK0IsMERBQXdCLGVBQWU7QUFDdEUsK0JBQStCLHlEQUF1QjtBQUN0RCwrQkFBK0IscURBQW1CO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLDBEQUF3QjtBQUNyRCwrQkFBK0IsMERBQXdCO0FBQ3ZELCtCQUErQixxREFBbUI7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixtQkFBbUI7QUFDbEQ7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLHdCQUF3QjtBQUMzRCw0QkFBNEIsMkRBQVEscUNBQXFDLDJEQUFRO0FBQ2pGLHFDQUFxQyxrRUFBVztBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLHVFQUFnQjtBQUMvQztBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsK0RBQVcsT0FBTyxtRUFBZTtBQUN0RDtBQUNBO0FBQ0Esc0JBQXNCLDZEQUFVO0FBQ2hDO0FBQ0EseUJBQXlCLGtFQUFXO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsT0FBTztBQUNsQixZQUFZLFFBQVE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLG9DQUFNO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isb0NBQU07QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiw4Q0FBYTtBQUNsQztBQUNBO0FBQ0Esd0RBQXdELFFBQVE7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJEQUEyRCxRQUFRO0FBQ25FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxRQUFRO0FBQ3ZCO0FBQ0E7QUFDQSwrQkFBK0IsY0FBYztBQUM3QztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNjLHVFQUFRLEVBQUM7QUFDeEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2FuaW1hdGUvdGltZWxpbmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0VxdWFsLCBpc051bWJlciwgaXNGdW5jdGlvbiB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0ICogYXMgZDNUaW1lciBmcm9tICdkMy10aW1lcic7XG5pbXBvcnQgKiBhcyBkM0Vhc2UgZnJvbSAnZDMtZWFzZSc7XG5pbXBvcnQgeyBpbnRlcnBvbGF0ZSwgaW50ZXJwb2xhdGVBcnJheSB9IGZyb20gJ2QzLWludGVycG9sYXRlJzsgLy8g55uu5YmN5pW05L2T5Yqo55S75Y+q6ZyA6KaB5pWw5YC85ZKM5pWw57uE55qE5beu5YC86K6h566XXG5pbXBvcnQgKiBhcyBQYXRoVXRpbCBmcm9tICcuLi91dGlsL3BhdGgnO1xuaW1wb3J0IHsgaXNDb2xvclByb3AsIGlzR3JhZGllbnRDb2xvciB9IGZyb20gJy4uL3V0aWwvY29sb3InO1xudmFyIElERU5USVRZX01BVFJJWCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbi8qKlxuICog5L2/55SoIHJhdGlvIOi/m+ihjOaPkuWAvOiuoeeul+adpeabtOaWsOWxnuaAp1xuICogQHBhcmFtIHtJRWxlbWVudH0gIHNoYXBlICAgIOWFg+e0oFxuICogQHBhcmFtIHtBbmltYXRpb259IGFuaW1hdGlvbiDliqjnlLtcbiAqIEBwYXJhbSB7bnVtYmVyfSAgICByYXRpbyAgICDmr5TkvotcbiAqIEByZXR1cm4ge2Jvb2xlYW59ICDliqjnlLvmmK/lkKbmiafooYzlrozmiJBcbiAqL1xuZnVuY3Rpb24gX3VwZGF0ZShzaGFwZSwgYW5pbWF0aW9uLCByYXRpbykge1xuICAgIHZhciBjUHJvcHMgPSB7fTsgLy8g5q2k5Yi75bGe5oCnXG4gICAgdmFyIGZyb21BdHRycyA9IGFuaW1hdGlvbi5mcm9tQXR0cnMsIHRvQXR0cnMgPSBhbmltYXRpb24udG9BdHRycztcbiAgICBpZiAoc2hhcGUuZGVzdHJveWVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIGludGVyZjsgLy8gIOW3ruWAvOWHveaVsFxuICAgIGZvciAodmFyIGsgaW4gdG9BdHRycykge1xuICAgICAgICBpZiAoIWlzRXF1YWwoZnJvbUF0dHJzW2tdLCB0b0F0dHJzW2tdKSkge1xuICAgICAgICAgICAgaWYgKGsgPT09ICdwYXRoJykge1xuICAgICAgICAgICAgICAgIHZhciB0b1BhdGggPSB0b0F0dHJzW2tdO1xuICAgICAgICAgICAgICAgIHZhciBmcm9tUGF0aCA9IGZyb21BdHRyc1trXTtcbiAgICAgICAgICAgICAgICBpZiAodG9QYXRoLmxlbmd0aCA+IGZyb21QYXRoLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB0b1BhdGggPSBQYXRoVXRpbC5wYXJzZVBhdGhTdHJpbmcodG9BdHRyc1trXSk7IC8vIOe7iOeCueeKtuaAgVxuICAgICAgICAgICAgICAgICAgICBmcm9tUGF0aCA9IFBhdGhVdGlsLnBhcnNlUGF0aFN0cmluZyhmcm9tQXR0cnNba10pOyAvLyDotbflp4vnirbmgIFcbiAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGggPSBQYXRoVXRpbC5maWxsUGF0aEJ5RGlmZihmcm9tUGF0aCwgdG9QYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGggPSBQYXRoVXRpbC5mb3JtYXRQYXRoKGZyb21QYXRoLCB0b1BhdGgpO1xuICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24uZnJvbUF0dHJzLnBhdGggPSBmcm9tUGF0aDtcbiAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLnRvQXR0cnMucGF0aCA9IHRvUGF0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIWFuaW1hdGlvbi5wYXRoRm9ybWF0dGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvUGF0aCA9IFBhdGhVdGlsLnBhcnNlUGF0aFN0cmluZyh0b0F0dHJzW2tdKTtcbiAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGggPSBQYXRoVXRpbC5wYXJzZVBhdGhTdHJpbmcoZnJvbUF0dHJzW2tdKTtcbiAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGggPSBQYXRoVXRpbC5mb3JtYXRQYXRoKGZyb21QYXRoLCB0b1BhdGgpO1xuICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24uZnJvbUF0dHJzLnBhdGggPSBmcm9tUGF0aDtcbiAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLnRvQXR0cnMucGF0aCA9IHRvUGF0aDtcbiAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLnBhdGhGb3JtYXR0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjUHJvcHNba10gPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRvUGF0aC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdG9QYXRoUG9pbnQgPSB0b1BhdGhbaV07XG4gICAgICAgICAgICAgICAgICAgIHZhciBmcm9tUGF0aFBvaW50ID0gZnJvbVBhdGhbaV07XG4gICAgICAgICAgICAgICAgICAgIHZhciBjUGF0aFBvaW50ID0gW107XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdG9QYXRoUG9pbnQubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc051bWJlcih0b1BhdGhQb2ludFtqXSkgJiYgZnJvbVBhdGhQb2ludCAmJiBpc051bWJlcihmcm9tUGF0aFBvaW50W2pdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyZiA9IGludGVycG9sYXRlKGZyb21QYXRoUG9pbnRbal0sIHRvUGF0aFBvaW50W2pdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjUGF0aFBvaW50LnB1c2goaW50ZXJmKHJhdGlvKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjUGF0aFBvaW50LnB1c2godG9QYXRoUG9pbnRbal0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNQcm9wc1trXS5wdXNoKGNQYXRoUG9pbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGsgPT09ICdtYXRyaXgnKSB7XG4gICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAg5a+555+p6Zi16L+b6KGM5o+S5YC85pe277yM6ZyA6KaB5L+d6K+B55+p6Zi15LiN5Li656m677yM5Li656m65YiZ5L2/55So5Y2V5L2N55+p6Zi1XG4gICAgICAgICAgICAgICAgIFRPRE86IOS6jOe7tOWSjOS4iee7tOWcuuaZr+S4i+WNleS9jeefqemYteS4jeWQjO+8jOS5i+WQjiBXZWJHTCDniYjpnIDopoHlgZrov5vkuIDmraXlpITnkIZcbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICB2YXIgbWF0cml4Rm4gPSBpbnRlcnBvbGF0ZUFycmF5KGZyb21BdHRyc1trXSB8fCBJREVOVElUWV9NQVRSSVgsIHRvQXR0cnNba10gfHwgSURFTlRJVFlfTUFUUklYKTtcbiAgICAgICAgICAgICAgICB2YXIgY3VycmVudE1hdHJpeCA9IG1hdHJpeEZuKHJhdGlvKTtcbiAgICAgICAgICAgICAgICBjUHJvcHNba10gPSBjdXJyZW50TWF0cml4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaXNDb2xvclByb3AoaykgJiYgaXNHcmFkaWVudENvbG9yKHRvQXR0cnNba10pKSB7XG4gICAgICAgICAgICAgICAgY1Byb3BzW2tdID0gdG9BdHRyc1trXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCFpc0Z1bmN0aW9uKHRvQXR0cnNba10pKSB7XG4gICAgICAgICAgICAgICAgLy8g6Z2e5Ye95pWw57G75Z6L55qE5YC85omN6IO95YGa5o+S5YC8XG4gICAgICAgICAgICAgICAgaW50ZXJmID0gaW50ZXJwb2xhdGUoZnJvbUF0dHJzW2tdLCB0b0F0dHJzW2tdKTtcbiAgICAgICAgICAgICAgICBjUHJvcHNba10gPSBpbnRlcmYocmF0aW8pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHNoYXBlLmF0dHIoY1Byb3BzKTtcbn1cbi8qKlxuICog5qC55o2u6Ieq5a6a5LmJ5bin5Yqo55S75Ye95pWwIG9uRnJhbWUg5p2l5pu05paw5bGe5oCnXG4gKiBAcGFyYW0ge0lFbGVtZW50fSAgc2hhcGUgICAg5YWD57SgXG4gKiBAcGFyYW0ge0FuaW1hdGlvbn0gYW5pbWF0aW9uIOWKqOeUu1xuICogQHBhcmFtIHtudW1iZXJ9ICAgIGVsYXBzZWQgIOWKqOeUu+aJp+ihjOaXtumXtCjmr6vnp5IpXG4gKiBAcmV0dXJuIHtib29sZWFufSAg5Yqo55S75piv5ZCm5omn6KGM5a6M5oiQXG4gKi9cbmZ1bmN0aW9uIHVwZGF0ZShzaGFwZSwgYW5pbWF0aW9uLCBlbGFwc2VkKSB7XG4gICAgdmFyIHN0YXJ0VGltZSA9IGFuaW1hdGlvbi5zdGFydFRpbWUsIGRlbGF5ID0gYW5pbWF0aW9uLmRlbGF5O1xuICAgIC8vIOWmguaenOi/mOayoeacieW8gOWni+aJp+ihjOaIluaaguWBnO+8jOWFiOS4jeabtOaWsFxuICAgIGlmIChlbGFwc2VkIDwgc3RhcnRUaW1lICsgZGVsYXkgfHwgYW5pbWF0aW9uLl9wYXVzZWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB2YXIgcmF0aW87XG4gICAgdmFyIGR1cmF0aW9uID0gYW5pbWF0aW9uLmR1cmF0aW9uO1xuICAgIHZhciBlYXNpbmcgPSBhbmltYXRpb24uZWFzaW5nO1xuICAgIC8vIOW3suaJp+ihjOaXtumXtFxuICAgIGVsYXBzZWQgPSBlbGFwc2VkIC0gc3RhcnRUaW1lIC0gYW5pbWF0aW9uLmRlbGF5O1xuICAgIGlmIChhbmltYXRpb24ucmVwZWF0KSB7XG4gICAgICAgIC8vIOWmguaenOWKqOeUu+mHjeWkjeaJp+ihjO+8jOWImSBlbGFwc2VkID4gZHVyYXRpb27vvIzorqHnrpcgcmF0aW8g5pe26ZyA5Y+W5qihXG4gICAgICAgIHJhdGlvID0gKGVsYXBzZWQgJSBkdXJhdGlvbikgLyBkdXJhdGlvbjtcbiAgICAgICAgcmF0aW8gPSBkM0Vhc2VbZWFzaW5nXShyYXRpbyk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByYXRpbyA9IGVsYXBzZWQgLyBkdXJhdGlvbjtcbiAgICAgICAgaWYgKHJhdGlvIDwgMSkge1xuICAgICAgICAgICAgLy8g5Yqo55S75pyq5omn6KGM5a6MXG4gICAgICAgICAgICByYXRpbyA9IGQzRWFzZVtlYXNpbmddKHJhdGlvKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIOWKqOeUu+W3suaJp+ihjOWujFxuICAgICAgICAgICAgaWYgKGFuaW1hdGlvbi5vbkZyYW1lKSB7XG4gICAgICAgICAgICAgICAgc2hhcGUuYXR0cihhbmltYXRpb24ub25GcmFtZSgxKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzaGFwZS5hdHRyKGFuaW1hdGlvbi50b0F0dHJzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChhbmltYXRpb24ub25GcmFtZSkge1xuICAgICAgICB2YXIgYXR0cnMgPSBhbmltYXRpb24ub25GcmFtZShyYXRpbyk7XG4gICAgICAgIHNoYXBlLmF0dHIoYXR0cnMpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgX3VwZGF0ZShzaGFwZSwgYW5pbWF0aW9uLCByYXRpbyk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cbnZhciBUaW1lbGluZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICAvKipcbiAgICAgKiDml7bpl7TovbTmnoTpgKDlh73mlbDvvIzkvp3otZbkuo7nlLvluINcbiAgICAgKiBAcGFyYW0ge31cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBUaW1lbGluZShjYW52YXMpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIOaJp+ihjOWKqOeUu+eahOWFg+e0oOWIl+ihqFxuICAgICAgICAgKiBAdHlwZSB7SUVsZW1lbnRbXX1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuYW5pbWF0b3JzID0gW107XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDlvZPliY3ml7bpl7RcbiAgICAgICAgICogQHR5cGUge251bWJlcn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuY3VycmVudCA9IDA7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDlrprml7blmahcbiAgICAgICAgICogQHR5cGUge2QzVGltZXIuVGltZXJ9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnRpbWVyID0gbnVsbDtcbiAgICAgICAgdGhpcy5jYW52YXMgPSBjYW52YXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOWIneWni+WMluWumuaXtuWZqFxuICAgICAqL1xuICAgIFRpbWVsaW5lLnByb3RvdHlwZS5pbml0VGltZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBpc0ZpbmlzaGVkID0gZmFsc2U7XG4gICAgICAgIHZhciBzaGFwZTtcbiAgICAgICAgdmFyIGFuaW1hdGlvbnM7XG4gICAgICAgIHZhciBhbmltYXRpb247XG4gICAgICAgIHRoaXMudGltZXIgPSBkM1RpbWVyLnRpbWVyKGZ1bmN0aW9uIChlbGFwc2VkKSB7XG4gICAgICAgICAgICBfdGhpcy5jdXJyZW50ID0gZWxhcHNlZDtcbiAgICAgICAgICAgIGlmIChfdGhpcy5hbmltYXRvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSBfdGhpcy5hbmltYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBfdGhpcy5hbmltYXRvcnNbaV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChzaGFwZS5kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWmguaenOW3sue7j+iiq+mUgOavge+8jOebtOaOpeenu+WHuumYn+WIl1xuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMucmVtb3ZlQW5pbWF0b3IoaSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoIXNoYXBlLmlzQW5pbWF0ZVBhdXNlZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb25zID0gc2hhcGUuZ2V0KCdhbmltYXRpb25zJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gYW5pbWF0aW9ucy5sZW5ndGggLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbiA9IGFuaW1hdGlvbnNbal07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNGaW5pc2hlZCA9IHVwZGF0ZShzaGFwZSwgYW5pbWF0aW9uLCBlbGFwc2VkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNGaW5pc2hlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb25zLnNwbGljZShqLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNGaW5pc2hlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYW5pbWF0aW9uLmNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24uY2FsbGJhY2soKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoYW5pbWF0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLnJlbW92ZUFuaW1hdG9yKGkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBhdXRvRHJhdyA9IF90aGlzLmNhbnZhcy5nZXQoJ2F1dG9EcmF3Jyk7XG4gICAgICAgICAgICAgICAgLy8g6Z2e6Ieq5Yqo5riy5p+T5qih5byP5LiL77yM5omL5Yqo6LCD55SoIGNhbnZhcy5kcmF3KCkg6YeN5paw5riy5p+TXG4gICAgICAgICAgICAgICAgaWYgKCFhdXRvRHJhdykge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5jYW52YXMuZHJhdygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDlop7liqDliqjnlLvlhYPntKBcbiAgICAgKi9cbiAgICBUaW1lbGluZS5wcm90b3R5cGUuYWRkQW5pbWF0b3IgPSBmdW5jdGlvbiAoc2hhcGUpIHtcbiAgICAgICAgdGhpcy5hbmltYXRvcnMucHVzaChzaGFwZSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDnp7vpmaTliqjnlLvlhYPntKBcbiAgICAgKi9cbiAgICBUaW1lbGluZS5wcm90b3R5cGUucmVtb3ZlQW5pbWF0b3IgPSBmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICAgICAgdGhpcy5hbmltYXRvcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOaYr+WQpuacieWKqOeUu+WcqOaJp+ihjFxuICAgICAqL1xuICAgIFRpbWVsaW5lLnByb3RvdHlwZS5pc0FuaW1hdGluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5hbmltYXRvcnMubGVuZ3RoO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5YGc5q2i5a6a5pe25ZmoXG4gICAgICovXG4gICAgVGltZWxpbmUucHJvdG90eXBlLnN0b3AgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLnRpbWVyKSB7XG4gICAgICAgICAgICB0aGlzLnRpbWVyLnN0b3AoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICog5YGc5q2i5pe26Ze06L205LiK5omA5pyJ5YWD57Sg55qE5Yqo55S777yM5bm2572u56m65Yqo55S75YWD57Sg5YiX6KGoXG4gICAgICogQHBhcmFtIHtib29sZWFufSB0b0VuZCDmmK/lkKbliLDliqjnlLvnmoTmnIDnu4jnirbmgIHvvIznlKjmnaXpgI/kvKDnu5nliqjnlLvlhYPntKDnmoQgc3RvcEFuaW1hdGUg5pa55rOVXG4gICAgICovXG4gICAgVGltZWxpbmUucHJvdG90eXBlLnN0b3BBbGxBbmltYXRpb25zID0gZnVuY3Rpb24gKHRvRW5kKSB7XG4gICAgICAgIGlmICh0b0VuZCA9PT0gdm9pZCAwKSB7IHRvRW5kID0gdHJ1ZTsgfVxuICAgICAgICB0aGlzLmFuaW1hdG9ycy5mb3JFYWNoKGZ1bmN0aW9uIChhbmltYXRvcikge1xuICAgICAgICAgICAgYW5pbWF0b3Iuc3RvcEFuaW1hdGUodG9FbmQpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hbmltYXRvcnMgPSBbXTtcbiAgICAgICAgdGhpcy5jYW52YXMuZHJhdygpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog6I635Y+W5b2T5YmN5pe26Ze0XG4gICAgICovXG4gICAgVGltZWxpbmUucHJvdG90eXBlLmdldFRpbWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnQ7XG4gICAgfTtcbiAgICByZXR1cm4gVGltZWxpbmU7XG59KCkpO1xuZXhwb3J0IGRlZmF1bHQgVGltZWxpbmU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD10aW1lbGluZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/animate/timeline.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/circle.js":
/*!**************************************************************************!*\
!*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/circle.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\"] = (function (shape) {\n var _a = shape.attr(), x = _a.x, y = _a.y, r = _a.r;\n return {\n x: x - r,\n y: y - r,\n width: r * 2,\n height: r * 2,\n };\n});\n//# sourceMappingURL=circle.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Jib3gvY2lyY2xlLmpzPzA4NTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWJhc2VAMC41LjlAQGFudHYvZy1iYXNlL2VzbS9iYm94L2NpcmNsZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChzaGFwZSkge1xuICAgIHZhciBfYSA9IHNoYXBlLmF0dHIoKSwgeCA9IF9hLngsIHkgPSBfYS55LCByID0gX2EucjtcbiAgICByZXR1cm4ge1xuICAgICAgICB4OiB4IC0gcixcbiAgICAgICAgeTogeSAtIHIsXG4gICAgICAgIHdpZHRoOiByICogMixcbiAgICAgICAgaGVpZ2h0OiByICogMixcbiAgICB9O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y2lyY2xlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/circle.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/ellipse.js":
/*!***************************************************************************!*\
!*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/ellipse.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\"] = (function (shape) {\n var attrs = shape.attr();\n var x = attrs.x, y = attrs.y, rx = attrs.rx, ry = attrs.ry;\n return {\n x: x - rx,\n y: y - ry,\n width: rx * 2,\n height: ry * 2,\n };\n});\n//# sourceMappingURL=ellipse.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Jib3gvZWxsaXBzZS5qcz9hNDBjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWJhc2VAMC41LjlAQGFudHYvZy1iYXNlL2VzbS9iYm94L2VsbGlwc2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoc2hhcGUpIHtcbiAgICB2YXIgYXR0cnMgPSBzaGFwZS5hdHRyKCk7XG4gICAgdmFyIHggPSBhdHRycy54LCB5ID0gYXR0cnMueSwgcnggPSBhdHRycy5yeCwgcnkgPSBhdHRycy5yeTtcbiAgICByZXR1cm4ge1xuICAgICAgICB4OiB4IC0gcngsXG4gICAgICAgIHk6IHkgLSByeSxcbiAgICAgICAgd2lkdGg6IHJ4ICogMixcbiAgICAgICAgaGVpZ2h0OiByeSAqIDIsXG4gICAgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWVsbGlwc2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/ellipse.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/index.js":
/*!*************************************************************************!*\
!*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/index.js ***!
\*************************************************************************/
/*! exports provided: getBBoxMethod */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./register */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/register.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getBBoxMethod\", function() { return _register__WEBPACK_IMPORTED_MODULE_0__[\"getMethod\"]; });\n\n/* harmony import */ var _rect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rect */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/rect.js\");\n/* harmony import */ var _circle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./circle */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/circle.js\");\n/* harmony import */ var _polyline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./polyline */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/polyline.js\");\n/* harmony import */ var _polygon__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./polygon */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/polygon.js\");\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./text */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/text.js\");\n/* harmony import */ var _path__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./path */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/path.js\");\n/* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./line */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/line.js\");\n/* harmony import */ var _ellipse__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./ellipse */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/ellipse.js\");\n\n\n\n\n\n\n\n\n\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('rect', _rect__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('image', _rect__WEBPACK_IMPORTED_MODULE_1__[\"default\"]); // image 使用 rect 的包围盒计算\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('circle', _circle__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('marker', _circle__WEBPACK_IMPORTED_MODULE_2__[\"default\"]); // marker 使用 circle 的计算方案\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('polyline', _polyline__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('polygon', _polygon__WEBPACK_IMPORTED_MODULE_4__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('text', _text__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('path', _path__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('line', _line__WEBPACK_IMPORTED_MODULE_7__[\"default\"]);\nObject(_register__WEBPACK_IMPORTED_MODULE_0__[\"register\"])('ellipse', _ellipse__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Jib3gvaW5kZXguanM/ZTM0ZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUQ7QUFDdkI7QUFDSTtBQUNJO0FBQ0Y7QUFDTjtBQUNBO0FBQ0E7QUFDTTtBQUNoQywwREFBUSxTQUFTLDZDQUFJO0FBQ3JCLDBEQUFRLFVBQVUsNkNBQUksRUFBRTtBQUN4QiwwREFBUSxXQUFXLCtDQUFNO0FBQ3pCLDBEQUFRLFdBQVcsK0NBQU0sRUFBRTtBQUMzQiwwREFBUSxhQUFhLGlEQUFRO0FBQzdCLDBEQUFRLFlBQVksZ0RBQU87QUFDM0IsMERBQVEsU0FBUyw2Q0FBSTtBQUNyQiwwREFBUSxTQUFTLDZDQUFJO0FBQ3JCLDBEQUFRLFNBQVMsNkNBQUk7QUFDckIsMERBQVEsWUFBWSxnREFBTztBQUNXO0FBQ3RDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWJhc2VAMC41LjlAQGFudHYvZy1iYXNlL2VzbS9iYm94L2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVnaXN0ZXIsIGdldE1ldGhvZCB9IGZyb20gJy4vcmVnaXN0ZXInO1xuaW1wb3J0IHJlY3QgZnJvbSAnLi9yZWN0JztcbmltcG9ydCBjaXJjbGUgZnJvbSAnLi9jaXJjbGUnO1xuaW1wb3J0IHBvbHlsaW5lIGZyb20gJy4vcG9seWxpbmUnO1xuaW1wb3J0IHBvbHlnb24gZnJvbSAnLi9wb2x5Z29uJztcbmltcG9ydCB0ZXh0IGZyb20gJy4vdGV4dCc7XG5pbXBvcnQgcGF0aCBmcm9tICcuL3BhdGgnO1xuaW1wb3J0IGxpbmUgZnJvbSAnLi9saW5lJztcbmltcG9ydCBlbGxpcHNlIGZyb20gJy4vZWxsaXBzZSc7XG5yZWdpc3RlcigncmVjdCcsIHJlY3QpO1xucmVnaXN0ZXIoJ2ltYWdlJywgcmVjdCk7IC8vIGltYWdlIOS9v+eUqCByZWN0IOeahOWMheWbtOebkuiuoeeul1xucmVnaXN0ZXIoJ2NpcmNsZScsIGNpcmNsZSk7XG5yZWdpc3RlcignbWFya2VyJywgY2lyY2xlKTsgLy8gbWFya2VyIOS9v+eUqCBjaXJjbGUg55qE6K6h566X5pa55qGIXG5yZWdpc3RlcigncG9seWxpbmUnLCBwb2x5bGluZSk7XG5yZWdpc3RlcigncG9seWdvbicsIHBvbHlnb24pO1xucmVnaXN0ZXIoJ3RleHQnLCB0ZXh0KTtcbnJlZ2lzdGVyKCdwYXRoJywgcGF0aCk7XG5yZWdpc3RlcignbGluZScsIGxpbmUpO1xucmVnaXN0ZXIoJ2VsbGlwc2UnLCBlbGxpcHNlKTtcbmV4cG9ydCB7IGdldE1ldGhvZCBhcyBnZXRCQm94TWV0aG9kIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/line.js":
/*!************************************************************************!*\
!*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/line.js ***!
\************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/util.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (shape) {\n var attrs = shape.attr();\n var x1 = attrs.x1, y1 = attrs.y1, x2 = attrs.x2, y2 = attrs.y2;\n var minX = Math.min(x1, x2);\n var maxX = Math.max(x1, x2);\n var minY = Math.min(y1, y2);\n var maxY = Math.max(y1, y2);\n var bbox = {\n minX: minX,\n maxX: maxX,\n minY: minY,\n maxY: maxY,\n };\n bbox = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"mergeArrowBBox\"])(shape, bbox);\n return {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.maxX - bbox.minX,\n height: bbox.maxY - bbox.minY,\n };\n});\n//# sourceMappingURL=line.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Jib3gvbGluZS5qcz9iYjA1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBd0M7QUFDekI7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLDREQUFjO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1iYXNlQDAuNS45QEBhbnR2L2ctYmFzZS9lc20vYmJveC9saW5lLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWVyZ2VBcnJvd0JCb3ggfSBmcm9tICcuL3V0aWwnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHNoYXBlKSB7XG4gICAgdmFyIGF0dHJzID0gc2hhcGUuYXR0cigpO1xuICAgIHZhciB4MSA9IGF0dHJzLngxLCB5MSA9IGF0dHJzLnkxLCB4MiA9IGF0dHJzLngyLCB5MiA9IGF0dHJzLnkyO1xuICAgIHZhciBtaW5YID0gTWF0aC5taW4oeDEsIHgyKTtcbiAgICB2YXIgbWF4WCA9IE1hdGgubWF4KHgxLCB4Mik7XG4gICAgdmFyIG1pblkgPSBNYXRoLm1pbih5MSwgeTIpO1xuICAgIHZhciBtYXhZID0gTWF0aC5tYXgoeTEsIHkyKTtcbiAgICB2YXIgYmJveCA9IHtcbiAgICAgICAgbWluWDogbWluWCxcbiAgICAgICAgbWF4WDogbWF4WCxcbiAgICAgICAgbWluWTogbWluWSxcbiAgICAgICAgbWF4WTogbWF4WSxcbiAgICB9O1xuICAgIGJib3ggPSBtZXJnZUFycm93QkJveChzaGFwZSwgYmJveCk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgeDogYmJveC5taW5YLFxuICAgICAgICB5OiBiYm94Lm1pblksXG4gICAgICAgIHdpZHRoOiBiYm94Lm1heFggLSBiYm94Lm1pblgsXG4gICAgICAgIGhlaWdodDogYmJveC5tYXhZIC0gYmJveC5taW5ZLFxuICAgIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1saW5lLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/line.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/path.js":
/*!************************************************************************!*\
!*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/path.js ***!
\************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/index.js\");\n/* harmony import */ var _antv_path_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/path-util */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/util.js\");\n\n\n\n\nfunction getPathBox(segments, lineWidth) {\n var xArr = [];\n var yArr = [];\n var segmentsWithAngle = [];\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n var currentPoint = segment.currentPoint, params = segment.params, prePoint = segment.prePoint;\n var box = void 0;\n switch (segment.command) {\n case 'Q':\n box = _antv_g_math__WEBPACK_IMPORTED_MODULE_0__[\"Quad\"].box(prePoint[0], prePoint[1], params[1], params[2], params[3], params[4]);\n break;\n case 'C':\n box = _antv_g_math__WEBPACK_IMPORTED_MODULE_0__[\"Cubic\"].box(prePoint[0], prePoint[1], params[1], params[2], params[3], params[4], params[5], params[6]);\n break;\n case 'A':\n var arcParams = segment.arcParams;\n box = _antv_g_math__WEBPACK_IMPORTED_MODULE_0__[\"Arc\"].box(arcParams.cx, arcParams.cy, arcParams.rx, arcParams.ry, arcParams.xRotation, arcParams.startAngle, arcParams.endAngle);\n break;\n default:\n xArr.push(currentPoint[0]);\n yArr.push(currentPoint[1]);\n break;\n }\n if (box) {\n segment.box = box;\n xArr.push(box.x, box.x + box.width);\n yArr.push(box.y, box.y + box.height);\n }\n if (lineWidth && (segment.command === 'L' || segment.command === 'M') && segment.prePoint && segment.nextPoint) {\n segmentsWithAngle.push(segment);\n }\n }\n // bbox calculation should ignore NaN for path attribute\n // ref: https://github.com/antvis/g/issues/210\n xArr = xArr.filter(function (item) { return !Number.isNaN(item); });\n yArr = yArr.filter(function (item) { return !Number.isNaN(item); });\n var minX = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"min\"])(xArr);\n var minY = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"min\"])(yArr);\n var maxX = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"max\"])(xArr);\n var maxY = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"max\"])(yArr);\n if (segmentsWithAngle.length === 0) {\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n for (var i = 0; i < segmentsWithAngle.length; i++) {\n var segment = segmentsWithAngle[i];\n var currentPoint = segment.currentPoint;\n var extra = void 0;\n if (currentPoint[0] === minX) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n minX = minX - extra.xExtra;\n }\n else if (currentPoint[0] === maxX) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n maxX = maxX + extra.xExtra;\n }\n if (currentPoint[1] === minY) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n minY = minY - extra.yExtra;\n }\n else if (currentPoint[1] === maxY) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n maxY = maxY + extra.yExtra;\n }\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n}\nfunction getExtraFromSegmentWithAngle(segment, lineWidth) {\n var prePoint = segment.prePoint, currentPoint = segment.currentPoint, nextPoint = segment.nextPoint;\n var currentAndPre = Math.pow(currentPoint[0] - prePoint[0], 2) + Math.pow(currentPoint[1] - prePoint[1], 2);\n var currentAndNext = Math.pow(currentPoint[0] - nextPoint[0], 2) + Math.pow(currentPoint[1] - nextPoint[1], 2);\n var preAndNext = Math.pow(prePoint[0] - nextPoint[0], 2) + Math.pow(prePoint[1] - nextPoint[1], 2);\n // 以 currentPoint 为顶点的夹角\n var currentAngle = Math.acos((currentAndPre + currentAndNext - preAndNext) / (2 * Math.sqrt(currentAndPre) * Math.sqrt(currentAndNext)));\n // 夹角为空、 0 或 PI 时,不需要计算夹角处的额外宽度\n // 注意: 由于计算精度问题,夹角为 0 的情况计算出来的角度可能是一个很小的值,还需要判断其与 0 是否近似相等\n if (!currentAngle || Math.sin(currentAngle) === 0 || Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNumberEqual\"])(currentAngle, 0)) {\n return {\n xExtra: 0,\n yExtra: 0,\n };\n }\n var xAngle = Math.abs(Math.atan2(nextPoint[1] - currentPoint[1], nextPoint[0] - currentPoint[0]));\n var yAngle = Math.abs(Math.atan2(nextPoint[0] - currentPoint[0], nextPoint[1] - currentPoint[1]));\n // 将夹角转为锐角\n xAngle = xAngle > Math.PI / 2 ? Math.PI - xAngle : xAngle;\n yAngle = yAngle > Math.PI / 2 ? Math.PI - yAngle : yAngle;\n // 这里不考虑在水平和垂直方向的投影,直接使用最大差值\n // 由于上层统一加减了二分之一线宽,这里需要进行弥补\n var extra = {\n // 水平方向投影\n xExtra: Math.cos(currentAngle / 2 - xAngle) * ((lineWidth / 2) * (1 / Math.sin(currentAngle / 2))) - lineWidth / 2 || 0,\n // 垂直方向投影\n yExtra: Math.cos(yAngle - currentAngle / 2) * ((lineWidth / 2) * (1 / Math.sin(currentAngle / 2))) - lineWidth / 2 || 0,\n };\n return extra;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (shape) {\n var attrs = shape.attr();\n var path = attrs.path, stroke = attrs.stroke;\n var lineWidth = stroke ? attrs.lineWidth : 0; // 只有有 stroke 时,lineWidth 才生效\n var segments = shape.get('segments') || Object(_antv_path_util__WEBPACK_IMPORTED_MODULE_1__[\"path2Segments\"])(path);\n var _a = getPathBox(segments, lineWidth), x = _a.x, y = _a.y, width = _a.width, height = _a.height;\n var bbox = {\n minX: x,\n minY: y,\n maxX: x + width,\n maxY: y + height,\n };\n bbox = Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"mergeArrowBBox\"])(shape, bbox);\n return {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.maxX - bbox.minX,\n height: bbox.maxY - bbox.minY,\n };\n});\n//# sourceMappingURL=path.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Jib3gvcGF0aC5qcz9hN2EyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMkY7QUFDM0M7QUFDSztBQUNiO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHFCQUFxQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLGlEQUFRO0FBQzlCO0FBQ0E7QUFDQSxzQkFBc0Isa0RBQVM7QUFDL0I7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLGdEQUFjO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0MsNEJBQTRCLEVBQUU7QUFDdEUsd0NBQXdDLDRCQUE0QixFQUFFO0FBQ3RFLGVBQWUsc0RBQUc7QUFDbEIsZUFBZSxzREFBRztBQUNsQixlQUFlLHNEQUFHO0FBQ2xCLGVBQWUsc0RBQUc7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQiw4QkFBOEI7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseURBQXlELGdFQUFhO0FBQ3RFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQSxpREFBaUQ7QUFDakQsNENBQTRDLHFFQUFhO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyw0REFBYztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Jib3gvcGF0aC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFF1YWQgYXMgUXVhZFV0aWwsIEN1YmljIGFzIEN1YmljVXRpbCwgQXJjIGFzIEVsbGlwc2VBcmNVdGlsIH0gZnJvbSAnQGFudHYvZy1tYXRoJztcbmltcG9ydCB7IHBhdGgyU2VnbWVudHMgfSBmcm9tICdAYW50di9wYXRoLXV0aWwnO1xuaW1wb3J0IHsgaXNOdW1iZXJFcXVhbCwgbWF4LCBtaW4gfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IG1lcmdlQXJyb3dCQm94IH0gZnJvbSAnLi91dGlsJztcbmZ1bmN0aW9uIGdldFBhdGhCb3goc2VnbWVudHMsIGxpbmVXaWR0aCkge1xuICAgIHZhciB4QXJyID0gW107XG4gICAgdmFyIHlBcnIgPSBbXTtcbiAgICB2YXIgc2VnbWVudHNXaXRoQW5nbGUgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlZ21lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBzZWdtZW50ID0gc2VnbWVudHNbaV07XG4gICAgICAgIHZhciBjdXJyZW50UG9pbnQgPSBzZWdtZW50LmN1cnJlbnRQb2ludCwgcGFyYW1zID0gc2VnbWVudC5wYXJhbXMsIHByZVBvaW50ID0gc2VnbWVudC5wcmVQb2ludDtcbiAgICAgICAgdmFyIGJveCA9IHZvaWQgMDtcbiAgICAgICAgc3dpdGNoIChzZWdtZW50LmNvbW1hbmQpIHtcbiAgICAgICAgICAgIGNhc2UgJ1EnOlxuICAgICAgICAgICAgICAgIGJveCA9IFF1YWRVdGlsLmJveChwcmVQb2ludFswXSwgcHJlUG9pbnRbMV0sIHBhcmFtc1sxXSwgcGFyYW1zWzJdLCBwYXJhbXNbM10sIHBhcmFtc1s0XSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdDJzpcbiAgICAgICAgICAgICAgICBib3ggPSBDdWJpY1V0aWwuYm94KHByZVBvaW50WzBdLCBwcmVQb2ludFsxXSwgcGFyYW1zWzFdLCBwYXJhbXNbMl0sIHBhcmFtc1szXSwgcGFyYW1zWzRdLCBwYXJhbXNbNV0sIHBhcmFtc1s2XSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdBJzpcbiAgICAgICAgICAgICAgICB2YXIgYXJjUGFyYW1zID0gc2VnbWVudC5hcmNQYXJhbXM7XG4gICAgICAgICAgICAgICAgYm94ID0gRWxsaXBzZUFyY1V0aWwuYm94KGFyY1BhcmFtcy5jeCwgYXJjUGFyYW1zLmN5LCBhcmNQYXJhbXMucngsIGFyY1BhcmFtcy5yeSwgYXJjUGFyYW1zLnhSb3RhdGlvbiwgYXJjUGFyYW1zLnN0YXJ0QW5nbGUsIGFyY1BhcmFtcy5lbmRBbmdsZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHhBcnIucHVzaChjdXJyZW50UG9pbnRbMF0pO1xuICAgICAgICAgICAgICAgIHlBcnIucHVzaChjdXJyZW50UG9pbnRbMV0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChib3gpIHtcbiAgICAgICAgICAgIHNlZ21lbnQuYm94ID0gYm94O1xuICAgICAgICAgICAgeEFyci5wdXNoKGJveC54LCBib3gueCArIGJveC53aWR0aCk7XG4gICAgICAgICAgICB5QXJyLnB1c2goYm94LnksIGJveC55ICsgYm94LmhlaWdodCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxpbmVXaWR0aCAmJiAoc2VnbWVudC5jb21tYW5kID09PSAnTCcgfHwgc2VnbWVudC5jb21tYW5kID09PSAnTScpICYmIHNlZ21lbnQucHJlUG9pbnQgJiYgc2VnbWVudC5uZXh0UG9pbnQpIHtcbiAgICAgICAgICAgIHNlZ21lbnRzV2l0aEFuZ2xlLnB1c2goc2VnbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gYmJveCBjYWxjdWxhdGlvbiBzaG91bGQgaWdub3JlIE5hTiBmb3IgcGF0aCBhdHRyaWJ1dGVcbiAgICAvLyByZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbnR2aXMvZy9pc3N1ZXMvMjEwXG4gICAgeEFyciA9IHhBcnIuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7IHJldHVybiAhTnVtYmVyLmlzTmFOKGl0ZW0pOyB9KTtcbiAgICB5QXJyID0geUFyci5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHsgcmV0dXJuICFOdW1iZXIuaXNOYU4oaXRlbSk7IH0pO1xuICAgIHZhciBtaW5YID0gbWluKHhBcnIpO1xuICAgIHZhciBtaW5ZID0gbWluKHlBcnIpO1xuICAgIHZhciBtYXhYID0gbWF4KHhBcnIpO1xuICAgIHZhciBtYXhZID0gbWF4KHlBcnIpO1xuICAgIGlmIChzZWdtZW50c1dpdGhBbmdsZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IG1pblgsXG4gICAgICAgICAgICB5OiBtaW5ZLFxuICAgICAgICAgICAgd2lkdGg6IG1heFggLSBtaW5YLFxuICAgICAgICAgICAgaGVpZ2h0OiBtYXhZIC0gbWluWSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWdtZW50c1dpdGhBbmdsZS5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgc2VnbWVudCA9IHNlZ21lbnRzV2l0aEFuZ2xlW2ldO1xuICAgICAgICB2YXIgY3VycmVudFBvaW50ID0gc2VnbWVudC5jdXJyZW50UG9pbnQ7XG4gICAgICAgIHZhciBleHRyYSA9IHZvaWQgMDtcbiAgICAgICAgaWYgKGN1cnJlbnRQb2ludFswXSA9PT0gbWluWCkge1xuICAgICAgICAgICAgZXh0cmEgPSBnZXRFeHRyYUZyb21TZWdtZW50V2l0aEFuZ2xlKHNlZ21lbnQsIGxpbmVXaWR0aCk7XG4gICAgICAgICAgICBtaW5YID0gbWluWCAtIGV4dHJhLnhFeHRyYTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjdXJyZW50UG9pbnRbMF0gPT09IG1heFgpIHtcbiAgICAgICAgICAgIGV4dHJhID0gZ2V0RXh0cmFGcm9tU2VnbWVudFdpdGhBbmdsZShzZWdtZW50LCBsaW5lV2lkdGgpO1xuICAgICAgICAgICAgbWF4WCA9IG1heFggKyBleHRyYS54RXh0cmE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGN1cnJlbnRQb2ludFsxXSA9PT0gbWluWSkge1xuICAgICAgICAgICAgZXh0cmEgPSBnZXRFeHRyYUZyb21TZWdtZW50V2l0aEFuZ2xlKHNlZ21lbnQsIGxpbmVXaWR0aCk7XG4gICAgICAgICAgICBtaW5ZID0gbWluWSAtIGV4dHJhLnlFeHRyYTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjdXJyZW50UG9pbnRbMV0gPT09IG1heFkpIHtcbiAgICAgICAgICAgIGV4dHJhID0gZ2V0RXh0cmFGcm9tU2VnbWVudFdpdGhBbmdsZShzZWdtZW50LCBsaW5lV2lkdGgpO1xuICAgICAgICAgICAgbWF4WSA9IG1heFkgKyBleHRyYS55RXh0cmE7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgeDogbWluWCxcbiAgICAgICAgeTogbWluWSxcbiAgICAgICAgd2lkdGg6IG1heFggLSBtaW5YLFxuICAgICAgICBoZWlnaHQ6IG1heFkgLSBtaW5ZLFxuICAgIH07XG59XG5mdW5jdGlvbiBnZXRFeHRyYUZyb21TZWdtZW50V2l0aEFuZ2xlKHNlZ21lbnQsIGxpbmVXaWR0aCkge1xuICAgIHZhciBwcmVQb2ludCA9IHNlZ21lbnQucHJlUG9pbnQsIGN1cnJlbnRQb2ludCA9IHNlZ21lbnQuY3VycmVudFBvaW50LCBuZXh0UG9pbnQgPSBzZWdtZW50Lm5leHRQb2ludDtcbiAgICB2YXIgY3VycmVudEFuZFByZSA9IE1hdGgucG93KGN1cnJlbnRQb2ludFswXSAtIHByZVBvaW50WzBdLCAyKSArIE1hdGgucG93KGN1cnJlbnRQb2ludFsxXSAtIHByZVBvaW50WzFdLCAyKTtcbiAgICB2YXIgY3VycmVudEFuZE5leHQgPSBNYXRoLnBvdyhjdXJyZW50UG9pbnRbMF0gLSBuZXh0UG9pbnRbMF0sIDIpICsgTWF0aC5wb3coY3VycmVudFBvaW50WzFdIC0gbmV4dFBvaW50WzFdLCAyKTtcbiAgICB2YXIgcHJlQW5kTmV4dCA9IE1hdGgucG93KHByZVBvaW50WzBdIC0gbmV4dFBvaW50WzBdLCAyKSArIE1hdGgucG93KHByZVBvaW50WzFdIC0gbmV4dFBvaW50WzFdLCAyKTtcbiAgICAvLyDku6UgY3VycmVudFBvaW50IOS4uumhtueCueeahOWkueinklxuICAgIHZhciBjdXJyZW50QW5nbGUgPSBNYXRoLmFjb3MoKGN1cnJlbnRBbmRQcmUgKyBjdXJyZW50QW5kTmV4dCAtIHByZUFuZE5leHQpIC8gKDIgKiBNYXRoLnNxcnQoY3VycmVudEFuZFByZSkgKiBNYXRoLnNxcnQoY3VycmVudEFuZE5leHQpKSk7XG4gICAgLy8g5aS56KeS5Li656m644CBIDAg5oiWIFBJIOaXtu+8jOS4jemcgOimgeiuoeeul+WkueinkuWkhOeahOmineWkluWuveW6plxuICAgIC8vIOazqOaEjzog55Sx5LqO6K6h566X57K+5bqm6Zeu6aKY77yM5aS56KeS5Li6IDAg55qE5oOF5Ya16K6h566X5Ye65p2l55qE6KeS5bqm5Y+v6IO95piv5LiA5Liq5b6I5bCP55qE5YC877yM6L+Y6ZyA6KaB5Yik5pat5YW25LiOIDAg5piv5ZCm6L+R5Ly855u4562JXG4gICAgaWYgKCFjdXJyZW50QW5nbGUgfHwgTWF0aC5zaW4oY3VycmVudEFuZ2xlKSA9PT0gMCB8fCBpc051bWJlckVxdWFsKGN1cnJlbnRBbmdsZSwgMCkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHhFeHRyYTogMCxcbiAgICAgICAgICAgIHlFeHRyYTogMCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgdmFyIHhBbmdsZSA9IE1hdGguYWJzKE1hdGguYXRhbjIobmV4dFBvaW50WzFdIC0gY3VycmVudFBvaW50WzFdLCBuZXh0UG9pbnRbMF0gLSBjdXJyZW50UG9pbnRbMF0pKTtcbiAgICB2YXIgeUFuZ2xlID0gTWF0aC5hYnMoTWF0aC5hdGFuMihuZXh0UG9pbnRbMF0gLSBjdXJyZW50UG9pbnRbMF0sIG5leHRQb2ludFsxXSAtIGN1cnJlbnRQb2ludFsxXSkpO1xuICAgIC8vIOWwhuWkueinkui9rOS4uumUkOinklxuICAgIHhBbmdsZSA9IHhBbmdsZSA+IE1hdGguUEkgLyAyID8gTWF0aC5QSSAtIHhBbmdsZSA6IHhBbmdsZTtcbiAgICB5QW5nbGUgPSB5QW5nbGUgPiBNYXRoLlBJIC8gMiA/IE1hdGguUEkgLSB5QW5nbGUgOiB5QW5nbGU7XG4gICAgLy8g6L+Z6YeM5LiN6ICD6JmR5Zyo5rC05bmz5ZKM5Z6C55u05pa55ZCR55qE5oqV5b2x77yM55u05o6l5L2/55So5pyA5aSn5beu5YC8XG4gICAgLy8g55Sx5LqO5LiK5bGC57uf5LiA5Yqg5YeP5LqG5LqM5YiG5LmL5LiA57q/5a6977yM6L+Z6YeM6ZyA6KaB6L+b6KGM5byl6KGlXG4gICAgdmFyIGV4dHJhID0ge1xuICAgICAgICAvLyDmsLTlubPmlrnlkJHmipXlvbFcbiAgICAgICAgeEV4dHJhOiBNYXRoLmNvcyhjdXJyZW50QW5nbGUgLyAyIC0geEFuZ2xlKSAqICgobGluZVdpZHRoIC8gMikgKiAoMSAvIE1hdGguc2luKGN1cnJlbnRBbmdsZSAvIDIpKSkgLSBsaW5lV2lkdGggLyAyIHx8IDAsXG4gICAgICAgIC8vIOWeguebtOaWueWQkeaKleW9sVxuICAgICAgICB5RXh0cmE6IE1hdGguY29zKHlBbmdsZSAtIGN1cnJlbnRBbmdsZSAvIDIpICogKChsaW5lV2lkdGggLyAyKSAqICgxIC8gTWF0aC5zaW4oY3VycmVudEFuZ2xlIC8gMikpKSAtIGxpbmVXaWR0aCAvIDIgfHwgMCxcbiAgICB9O1xuICAgIHJldHVybiBleHRyYTtcbn1cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChzaGFwZSkge1xuICAgIHZhciBhdHRycyA9IHNoYXBlLmF0dHIoKTtcbiAgICB2YXIgcGF0aCA9IGF0dHJzLnBhdGgsIHN0cm9rZSA9IGF0dHJzLnN0cm9rZTtcbiAgICB2YXIgbGluZVdpZHRoID0gc3Ryb2tlID8gYXR0cnMubGluZVdpZHRoIDogMDsgLy8g5Y+q5pyJ5pyJIHN0cm9rZSDml7bvvIxsaW5lV2lkdGgg5omN55Sf5pWIXG4gICAgdmFyIHNlZ21lbnRzID0gc2hhcGUuZ2V0KCdzZWdtZW50cycpIHx8IHBhdGgyU2VnbWVudHMocGF0aCk7XG4gICAgdmFyIF9hID0gZ2V0UGF0aEJveChzZWdtZW50cywgbGluZVdpZHRoKSwgeCA9IF9hLngsIHkgPSBfYS55LCB3aWR0aCA9IF9hLndpZHRoLCBoZWlnaHQgPSBfYS5oZWlnaHQ7XG4gICAgdmFyIGJib3ggPSB7XG4gICAgICAgIG1pblg6IHgsXG4gICAgICAgIG1pblk6IHksXG4gICAgICAgIG1heFg6IHggKyB3aWR0aCxcbiAgICAgICAgbWF4WTogeSArIGhlaWdodCxcbiAgICB9O1xuICAgIGJib3ggPSBtZXJnZUFycm93QkJveChzaGFwZSwgYmJveCk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgeDogYmJveC5taW5YLFxuICAgICAgICB5OiBiYm94Lm1pblksXG4gICAgICAgIHdpZHRoOiBiYm94Lm1heFggLSBiYm94Lm1pblgsXG4gICAgICAgIGhlaWdodDogYmJveC5tYXhZIC0gYmJveC5taW5ZLFxuICAgIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wYXRoLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/path.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/polygon.js":
/*!***************************************************************************!*\
!*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/polygon.js ***!
\***************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/index.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (shape) {\n var attrs = shape.attr();\n var points = attrs.points;\n var xArr = [];\n var yArr = [];\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n xArr.push(point[0]);\n yArr.push(point[1]);\n }\n return _antv_g_math__WEBPACK_IMPORTED_MODULE_0__[\"Util\"].getBBoxByArray(xArr, yArr);\n});\n//# sourceMappingURL=polygon.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Jib3gvcG9seWdvbi5qcz85Nzc4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBb0M7QUFDckI7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixtQkFBbUI7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGlEQUFJO0FBQ2YsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWJhc2VAMC41LjlAQGFudHYvZy1iYXNlL2VzbS9iYm94L3BvbHlnb24uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVdGlsIH0gZnJvbSAnQGFudHYvZy1tYXRoJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChzaGFwZSkge1xuICAgIHZhciBhdHRycyA9IHNoYXBlLmF0dHIoKTtcbiAgICB2YXIgcG9pbnRzID0gYXR0cnMucG9pbnRzO1xuICAgIHZhciB4QXJyID0gW107XG4gICAgdmFyIHlBcnIgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgcG9pbnQgPSBwb2ludHNbaV07XG4gICAgICAgIHhBcnIucHVzaChwb2ludFswXSk7XG4gICAgICAgIHlBcnIucHVzaChwb2ludFsxXSk7XG4gICAgfVxuICAgIHJldHVybiBVdGlsLmdldEJCb3hCeUFycmF5KHhBcnIsIHlBcnIpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cG9seWdvbi5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/polygon.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/polyline.js":
/*!****************************************************************************!*\
!*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/polyline.js ***!
\****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/util.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (shape) {\n var attrs = shape.attr();\n var points = attrs.points;\n var xArr = [];\n var yArr = [];\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n xArr.push(point[0]);\n yArr.push(point[1]);\n }\n var _a = _antv_g_math__WEBPACK_IMPORTED_MODULE_0__[\"Util\"].getBBoxByArray(xArr, yArr), x = _a.x, y = _a.y, width = _a.width, height = _a.height;\n var bbox = {\n minX: x,\n minY: y,\n maxX: x + width,\n maxY: y + height,\n };\n bbox = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"mergeArrowBBox\"])(shape, bbox);\n return {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.maxX - bbox.minX,\n height: bbox.maxY - bbox.minY,\n };\n});\n//# sourceMappingURL=polyline.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Jib3gvcG9seWxpbmUuanM/NmU3MSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBb0M7QUFDSTtBQUN6QjtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLG1CQUFtQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsaURBQUk7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyw0REFBYztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Jib3gvcG9seWxpbmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVdGlsIH0gZnJvbSAnQGFudHYvZy1tYXRoJztcbmltcG9ydCB7IG1lcmdlQXJyb3dCQm94IH0gZnJvbSAnLi91dGlsJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChzaGFwZSkge1xuICAgIHZhciBhdHRycyA9IHNoYXBlLmF0dHIoKTtcbiAgICB2YXIgcG9pbnRzID0gYXR0cnMucG9pbnRzO1xuICAgIHZhciB4QXJyID0gW107XG4gICAgdmFyIHlBcnIgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgcG9pbnQgPSBwb2ludHNbaV07XG4gICAgICAgIHhBcnIucHVzaChwb2ludFswXSk7XG4gICAgICAgIHlBcnIucHVzaChwb2ludFsxXSk7XG4gICAgfVxuICAgIHZhciBfYSA9IFV0aWwuZ2V0QkJveEJ5QXJyYXkoeEFyciwgeUFyciksIHggPSBfYS54LCB5ID0gX2EueSwgd2lkdGggPSBfYS53aWR0aCwgaGVpZ2h0ID0gX2EuaGVpZ2h0O1xuICAgIHZhciBiYm94ID0ge1xuICAgICAgICBtaW5YOiB4LFxuICAgICAgICBtaW5ZOiB5LFxuICAgICAgICBtYXhYOiB4ICsgd2lkdGgsXG4gICAgICAgIG1heFk6IHkgKyBoZWlnaHQsXG4gICAgfTtcbiAgICBiYm94ID0gbWVyZ2VBcnJvd0JCb3goc2hhcGUsIGJib3gpO1xuICAgIHJldHVybiB7XG4gICAgICAgIHg6IGJib3gubWluWCxcbiAgICAgICAgeTogYmJveC5taW5ZLFxuICAgICAgICB3aWR0aDogYmJveC5tYXhYIC0gYmJveC5taW5YLFxuICAgICAgICBoZWlnaHQ6IGJib3gubWF4WSAtIGJib3gubWluWSxcbiAgICB9O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cG9seWxpbmUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/polyline.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/rect.js":
/*!************************************************************************!*\
!*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/rect.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\"] = (function (shape) {\n var attrs = shape.attr();\n var x = attrs.x, y = attrs.y, width = attrs.width, height = attrs.height;\n return {\n x: x,\n y: y,\n width: width,\n height: height,\n };\n});\n//# sourceMappingURL=rect.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Jib3gvcmVjdC5qcz9kOWYyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWJhc2VAMC41LjlAQGFudHYvZy1iYXNlL2VzbS9iYm94L3JlY3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoc2hhcGUpIHtcbiAgICB2YXIgYXR0cnMgPSBzaGFwZS5hdHRyKCk7XG4gICAgdmFyIHggPSBhdHRycy54LCB5ID0gYXR0cnMueSwgd2lkdGggPSBhdHRycy53aWR0aCwgaGVpZ2h0ID0gYXR0cnMuaGVpZ2h0O1xuICAgIHJldHVybiB7XG4gICAgICAgIHg6IHgsXG4gICAgICAgIHk6IHksXG4gICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlY3QuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/rect.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/register.js":
/*!****************************************************************************!*\
!*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/register.js ***!
\****************************************************************************/
/*! exports provided: register, getMethod */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"register\", function() { return register; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getMethod\", function() { return getMethod; });\nvar cache = new Map();\n/**\n * 注册计算包围盒的算法\n * @param type 方法名\n * @param method 方法\n */\nfunction register(type, method) {\n cache.set(type, method);\n}\n/**\n * 获取计算包围盒的算法\n * @param type 方法名\n */\nfunction getMethod(type) {\n return cache.get(type);\n}\n//# sourceMappingURL=register.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Jib3gvcmVnaXN0ZXIuanM/ZTY4NyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWJhc2VAMC41LjlAQGFudHYvZy1iYXNlL2VzbS9iYm94L3JlZ2lzdGVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGNhY2hlID0gbmV3IE1hcCgpO1xuLyoqXG4gKiDms6jlhozorqHnrpfljIXlm7Tnm5LnmoTnrpfms5VcbiAqIEBwYXJhbSB0eXBlIOaWueazleWQjVxuICogQHBhcmFtIG1ldGhvZCDmlrnms5VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyKHR5cGUsIG1ldGhvZCkge1xuICAgIGNhY2hlLnNldCh0eXBlLCBtZXRob2QpO1xufVxuLyoqXG4gKiDojrflj5borqHnrpfljIXlm7Tnm5LnmoTnrpfms5VcbiAqIEBwYXJhbSB0eXBlIOaWueazleWQjVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWV0aG9kKHR5cGUpIHtcbiAgICByZXR1cm4gY2FjaGUuZ2V0KHR5cGUpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVnaXN0ZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/register.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/text.js":
/*!************************************************************************!*\
!*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/text.js ***!
\************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util_text__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/text */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/text.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (shape) {\n var attrs = shape.attr();\n var x = attrs.x, y = attrs.y, text = attrs.text, fontSize = attrs.fontSize, lineHeight = attrs.lineHeight;\n var font = attrs.font;\n if (!font) {\n // 如果未组装 font\n font = Object(_util_text__WEBPACK_IMPORTED_MODULE_0__[\"assembleFont\"])(attrs);\n }\n var width = Object(_util_text__WEBPACK_IMPORTED_MODULE_0__[\"getTextWidth\"])(text, font);\n var bbox;\n if (!width) {\n // 如果width不存在,四点共其实点\n bbox = {\n x: x,\n y: y,\n width: 0,\n height: 0,\n };\n }\n else {\n var textAlign = attrs.textAlign, textBaseline = attrs.textBaseline;\n var height = Object(_util_text__WEBPACK_IMPORTED_MODULE_0__[\"getTextHeight\"])(text, fontSize, lineHeight); // attrs.height\n // 默认左右对齐:left, 默认上下对齐 bottom\n var point = {\n x: x,\n y: y - height,\n };\n if (textAlign) {\n if (textAlign === 'end' || textAlign === 'right') {\n point.x -= width;\n }\n else if (textAlign === 'center') {\n point.x -= width / 2;\n }\n }\n if (textBaseline) {\n if (textBaseline === 'top') {\n point.y += height;\n }\n else if (textBaseline === 'middle') {\n point.y += height / 2;\n }\n }\n bbox = {\n x: point.x,\n y: point.y,\n width: width,\n height: height,\n };\n }\n return bbox;\n});\n//# sourceMappingURL=text.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Jib3gvdGV4dC5qcz81YjEzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBeUU7QUFDMUQ7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSwrREFBWTtBQUMzQjtBQUNBLGdCQUFnQiwrREFBWTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsZ0VBQWEsNkJBQTZCO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Jib3gvdGV4dC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldFRleHRXaWR0aCwgZ2V0VGV4dEhlaWdodCwgYXNzZW1ibGVGb250IH0gZnJvbSAnLi4vdXRpbC90ZXh0JztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChzaGFwZSkge1xuICAgIHZhciBhdHRycyA9IHNoYXBlLmF0dHIoKTtcbiAgICB2YXIgeCA9IGF0dHJzLngsIHkgPSBhdHRycy55LCB0ZXh0ID0gYXR0cnMudGV4dCwgZm9udFNpemUgPSBhdHRycy5mb250U2l6ZSwgbGluZUhlaWdodCA9IGF0dHJzLmxpbmVIZWlnaHQ7XG4gICAgdmFyIGZvbnQgPSBhdHRycy5mb250O1xuICAgIGlmICghZm9udCkge1xuICAgICAgICAvLyDlpoLmnpzmnKrnu4Too4UgZm9udFxuICAgICAgICBmb250ID0gYXNzZW1ibGVGb250KGF0dHJzKTtcbiAgICB9XG4gICAgdmFyIHdpZHRoID0gZ2V0VGV4dFdpZHRoKHRleHQsIGZvbnQpO1xuICAgIHZhciBiYm94O1xuICAgIGlmICghd2lkdGgpIHtcbiAgICAgICAgLy8g5aaC5p6cd2lkdGjkuI3lrZjlnKjvvIzlm5vngrnlhbHlhbblrp7ngrlcbiAgICAgICAgYmJveCA9IHtcbiAgICAgICAgICAgIHg6IHgsXG4gICAgICAgICAgICB5OiB5LFxuICAgICAgICAgICAgd2lkdGg6IDAsXG4gICAgICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgIH07XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB2YXIgdGV4dEFsaWduID0gYXR0cnMudGV4dEFsaWduLCB0ZXh0QmFzZWxpbmUgPSBhdHRycy50ZXh0QmFzZWxpbmU7XG4gICAgICAgIHZhciBoZWlnaHQgPSBnZXRUZXh0SGVpZ2h0KHRleHQsIGZvbnRTaXplLCBsaW5lSGVpZ2h0KTsgLy8gYXR0cnMuaGVpZ2h0XG4gICAgICAgIC8vIOm7mOiupOW3puWPs+Wvuem9kO+8mmxlZnQsIOm7mOiupOS4iuS4i+Wvuem9kCBib3R0b21cbiAgICAgICAgdmFyIHBvaW50ID0ge1xuICAgICAgICAgICAgeDogeCxcbiAgICAgICAgICAgIHk6IHkgLSBoZWlnaHQsXG4gICAgICAgIH07XG4gICAgICAgIGlmICh0ZXh0QWxpZ24pIHtcbiAgICAgICAgICAgIGlmICh0ZXh0QWxpZ24gPT09ICdlbmQnIHx8IHRleHRBbGlnbiA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICAgICAgICAgIHBvaW50LnggLT0gd2lkdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0ZXh0QWxpZ24gPT09ICdjZW50ZXInKSB7XG4gICAgICAgICAgICAgICAgcG9pbnQueCAtPSB3aWR0aCAvIDI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRleHRCYXNlbGluZSkge1xuICAgICAgICAgICAgaWYgKHRleHRCYXNlbGluZSA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICAgICAgICBwb2ludC55ICs9IGhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRleHRCYXNlbGluZSA9PT0gJ21pZGRsZScpIHtcbiAgICAgICAgICAgICAgICBwb2ludC55ICs9IGhlaWdodCAvIDI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYmJveCA9IHtcbiAgICAgICAgICAgIHg6IHBvaW50LngsXG4gICAgICAgICAgICB5OiBwb2ludC55LFxuICAgICAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBiYm94O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGV4dC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/text.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/util.js":
/*!************************************************************************!*\
!*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/util.js ***!
\************************************************************************/
/*! exports provided: mergeBBox, mergeArrowBBox */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeBBox\", function() { return mergeBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeArrowBBox\", function() { return mergeArrowBBox; });\n// 合并包围盒\nfunction mergeBBox(bbox1, bbox2) {\n if (!bbox1 || !bbox2) {\n return bbox1 || bbox2;\n }\n return {\n minX: Math.min(bbox1.minX, bbox2.minX),\n minY: Math.min(bbox1.minY, bbox2.minY),\n maxX: Math.max(bbox1.maxX, bbox2.maxX),\n maxY: Math.max(bbox1.maxY, bbox2.maxY),\n };\n}\n// 合并箭头的包围盒\nfunction mergeArrowBBox(shape, bbox) {\n var startArrowShape = shape.get('startArrowShape');\n var endArrowShape = shape.get('endArrowShape');\n var startArrowBBox = null;\n var endArrowBBox = null;\n if (startArrowShape) {\n startArrowBBox = startArrowShape.getCanvasBBox();\n bbox = mergeBBox(bbox, startArrowBBox);\n }\n if (endArrowShape) {\n endArrowBBox = endArrowShape.getCanvasBBox();\n bbox = mergeBBox(bbox, endArrowBBox);\n }\n return bbox;\n}\n//# sourceMappingURL=util.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Jib3gvdXRpbC5qcz8yNmE0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2Jib3gvdXRpbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIOWQiOW5tuWMheWbtOebklxuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlQkJveChiYm94MSwgYmJveDIpIHtcbiAgICBpZiAoIWJib3gxIHx8ICFiYm94Mikge1xuICAgICAgICByZXR1cm4gYmJveDEgfHwgYmJveDI7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIG1pblg6IE1hdGgubWluKGJib3gxLm1pblgsIGJib3gyLm1pblgpLFxuICAgICAgICBtaW5ZOiBNYXRoLm1pbihiYm94MS5taW5ZLCBiYm94Mi5taW5ZKSxcbiAgICAgICAgbWF4WDogTWF0aC5tYXgoYmJveDEubWF4WCwgYmJveDIubWF4WCksXG4gICAgICAgIG1heFk6IE1hdGgubWF4KGJib3gxLm1heFksIGJib3gyLm1heFkpLFxuICAgIH07XG59XG4vLyDlkIjlubbnrq3lpLTnmoTljIXlm7Tnm5JcbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUFycm93QkJveChzaGFwZSwgYmJveCkge1xuICAgIHZhciBzdGFydEFycm93U2hhcGUgPSBzaGFwZS5nZXQoJ3N0YXJ0QXJyb3dTaGFwZScpO1xuICAgIHZhciBlbmRBcnJvd1NoYXBlID0gc2hhcGUuZ2V0KCdlbmRBcnJvd1NoYXBlJyk7XG4gICAgdmFyIHN0YXJ0QXJyb3dCQm94ID0gbnVsbDtcbiAgICB2YXIgZW5kQXJyb3dCQm94ID0gbnVsbDtcbiAgICBpZiAoc3RhcnRBcnJvd1NoYXBlKSB7XG4gICAgICAgIHN0YXJ0QXJyb3dCQm94ID0gc3RhcnRBcnJvd1NoYXBlLmdldENhbnZhc0JCb3goKTtcbiAgICAgICAgYmJveCA9IG1lcmdlQkJveChiYm94LCBzdGFydEFycm93QkJveCk7XG4gICAgfVxuICAgIGlmIChlbmRBcnJvd1NoYXBlKSB7XG4gICAgICAgIGVuZEFycm93QkJveCA9IGVuZEFycm93U2hhcGUuZ2V0Q2FudmFzQkJveCgpO1xuICAgICAgICBiYm94ID0gbWVyZ2VCQm94KGJib3gsIGVuZEFycm93QkJveCk7XG4gICAgfVxuICAgIHJldHVybiBiYm94O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXRpbC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/util.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/event/event-contoller.js":
/*!************************************************************************************!*\
!*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/event/event-contoller.js ***!
\************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _graph_event__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./graph-event */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/event/graph-event.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/util */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/util.js\");\n/**\n * @fileoverview 事件处理器\n * @author dxq613@gmail.com\n */\n\n\nvar CLICK_OFFSET = 40;\nvar LEFT_BTN_CODE = 0;\nvar DELEGATION_SPLIT = ':';\nvar EVENTS = [\n 'mousedown',\n 'mouseup',\n 'dblclick',\n 'mouseout',\n 'mouseover',\n 'mousemove',\n 'mouseleave',\n 'mouseenter',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'dragenter',\n 'dragover',\n 'dragleave',\n 'drop',\n 'contextmenu',\n 'mousewheel',\n];\n// 是否有委托事件监听\nfunction hasDelegation(events, type) {\n for (var key in events) {\n if (events.hasOwnProperty(key) && key.indexOf(DELEGATION_SPLIT + type) >= 0) {\n return true;\n }\n }\n return false;\n}\n// 触发目标事件,目标只能是 shape 或 canvas\nfunction emitTargetEvent(target, type, eventObj) {\n eventObj.name = type;\n eventObj.target = target;\n eventObj.currentTarget = target;\n eventObj.delegateTarget = target;\n target.emit(type, eventObj);\n}\n// 事件冒泡, enter 和 leave 需要对 fromShape 和 toShape 进行判同\nfunction bubbleEvent(container, type, eventObj) {\n if (eventObj.bubbles) {\n var relativeShape = void 0;\n var isOverEvent = false;\n if (type === 'mouseenter') {\n relativeShape = eventObj.fromShape;\n isOverEvent = true;\n }\n else if (type === 'mouseleave') {\n isOverEvent = true;\n relativeShape = eventObj.toShape;\n }\n // canvas 上的 mouseenter, mouseleave 事件,仅当进入或者移出 canvas 时触发\n if (container.isCanvas() && isOverEvent) {\n return;\n }\n // 如果相关图形同当前图形在同一个容器内,不触发事件\n if (relativeShape && Object(_util_util__WEBPACK_IMPORTED_MODULE_1__[\"isParent\"])(container, relativeShape)) {\n // 阻止继续向上冒泡\n eventObj.bubbles = false;\n return;\n }\n // 事件名称可能在委托过程中被修改,因此事件冒泡时需要重新设置事件名称\n eventObj.name = type;\n eventObj.currentTarget = container;\n eventObj.delegateTarget = container;\n container.emit(type, eventObj);\n }\n}\nvar EventController = /** @class */ (function () {\n function EventController(cfg) {\n var _this = this;\n // 正在被拖拽的图形\n this.draggingShape = null;\n this.dragging = false;\n // 当前鼠标/touch所在位置的图形\n this.currentShape = null;\n this.mousedownShape = null;\n this.mousedownPoint = null;\n // 统一处理所有的回调\n this._eventCallback = function (ev) {\n var type = ev.type;\n _this._triggerEvent(type, ev);\n };\n // 在 document 处理拖拽到画布外的事件,处理从图形上移除画布未被捕捉的问题\n this._onDocumentMove = function (ev) {\n var canvas = _this.canvas;\n var el = canvas.get('el');\n if (el !== ev.target) {\n // 不在 canvas 上移动\n if (_this.dragging || _this.currentShape) {\n var pointInfo = _this._getPointInfo(ev);\n // 还在拖拽过程中\n if (_this.dragging) {\n _this._emitEvent('drag', ev, pointInfo, _this.draggingShape);\n }\n // 说明从某个图形直接移动到了画布外面,\n // 修复了 mouseleave 的 bug 后不再出现这种情况\n // if (this.currentShape) {\n // this._emitEvent('mouseleave', ev, pointInfo, this.currentShape, this.currentShape, null);\n // this.currentShape = null;\n // }\n }\n }\n };\n // 在 document 上处理拖拽到外面,释放鼠标时触发 dragend\n this._onDocumentMouseUp = function (ev) {\n var canvas = _this.canvas;\n var el = canvas.get('el');\n if (el !== ev.target) {\n // 不在 canvas 上移动\n if (_this.dragging) {\n var pointInfo = _this._getPointInfo(ev);\n if (_this.draggingShape) {\n // 如果存在拖拽的图形,则也触发 drop 事件\n _this._emitEvent('drop', ev, pointInfo, null);\n }\n _this._emitEvent('dragend', ev, pointInfo, _this.draggingShape);\n _this._afterDrag(_this.draggingShape, pointInfo, ev);\n }\n }\n };\n this.canvas = cfg.canvas;\n }\n EventController.prototype.init = function () {\n this._bindEvents();\n };\n // 注册事件\n EventController.prototype._bindEvents = function () {\n var _this = this;\n var el = this.canvas.get('el');\n Object(_util_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(EVENTS, function (eventName) {\n el.addEventListener(eventName, _this._eventCallback);\n });\n if (document) {\n // 处理移动到外面没有触发 shape mouse leave 的事件\n // 处理拖拽到外部的问题\n document.addEventListener('mousemove', this._onDocumentMove);\n // 处理拖拽过程中在外部释放鼠标的问题\n document.addEventListener('mouseup', this._onDocumentMouseUp);\n }\n };\n // 清理事件\n EventController.prototype._clearEvents = function () {\n var _this = this;\n var el = this.canvas.get('el');\n Object(_util_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(EVENTS, function (eventName) {\n el.removeEventListener(eventName, _this._eventCallback);\n });\n if (document) {\n document.removeEventListener('mousemove', this._onDocumentMove);\n document.removeEventListener('mouseup', this._onDocumentMouseUp);\n }\n };\n EventController.prototype._getEventObj = function (type, event, point, target, fromShape, toShape) {\n var eventObj = new _graph_event__WEBPACK_IMPORTED_MODULE_0__[\"default\"](type, event);\n eventObj.fromShape = fromShape;\n eventObj.toShape = toShape;\n eventObj.x = point.x;\n eventObj.y = point.y;\n eventObj.clientX = point.clientX;\n eventObj.clientY = point.clientY;\n eventObj.propagationPath.push(target);\n // 事件的x,y应该是基于画布左上角的,与canvas的matrix无关\n return eventObj;\n };\n // 根据点获取图形,提取成独立方法,便于后续优化\n EventController.prototype._getShape = function (point, ev) {\n return this.canvas.getShape(point.x, point.y, ev);\n };\n // 获取事件的当前点的信息\n EventController.prototype._getPointInfo = function (ev) {\n var canvas = this.canvas;\n var clientPoint = canvas.getClientByEvent(ev);\n var point = canvas.getPointByEvent(ev);\n return {\n x: point.x,\n y: point.y,\n clientX: clientPoint.x,\n clientY: clientPoint.y,\n };\n };\n // 触发事件\n EventController.prototype._triggerEvent = function (type, ev) {\n var pointInfo = this._getPointInfo(ev);\n // 每次都获取图形有一定成本,后期可以考虑进行缓存策略\n var shape = this._getShape(pointInfo, ev);\n var method = this[\"_on\" + type];\n var leaveCanvas = false;\n if (method) {\n method.call(this, pointInfo, shape, ev);\n }\n else {\n var preShape = this.currentShape;\n // 如果进入、移出画布时存在图形,则要分别触发事件\n if (type === 'mouseenter' || type === 'dragenter' || type === 'mouseover') {\n this._emitEvent(type, ev, pointInfo, null, null, shape); // 先进入画布\n if (shape) {\n this._emitEvent(type, ev, pointInfo, shape, null, shape); // 再触发图形的事件\n }\n if (type === 'mouseenter' && this.draggingShape) {\n // 如果正在拖拽图形, 则触发 dragleave\n this._emitEvent('dragenter', ev, pointInfo, null);\n }\n }\n else if (type === 'mouseleave' || type === 'dragleave' || type === 'mouseout') {\n leaveCanvas = true;\n if (preShape) {\n this._emitEvent(type, ev, pointInfo, preShape, preShape, null); // 先触发图形的事件\n }\n this._emitEvent(type, ev, pointInfo, null, preShape, null); // 再触发离开画布事件\n if (type === 'mouseleave' && this.draggingShape) {\n this._emitEvent('dragleave', ev, pointInfo, null);\n }\n }\n else {\n this._emitEvent(type, ev, pointInfo, shape, null, null); // 一般事件中不需要考虑 from, to\n }\n }\n if (!leaveCanvas) {\n this.currentShape = shape;\n }\n // 当鼠标从画布移动到 shape 或者从 preShape 移动到 shape 时,应用 shape 上的鼠标样式\n if (shape && !shape.get('destroyed')) {\n var canvas = this.canvas;\n var el = canvas.get('el');\n el.style.cursor = shape.attr('cursor') || canvas.get('cursor');\n }\n };\n // 记录下点击的位置、图形,便于拖拽事件、click 事件的判定\n EventController.prototype._onmousedown = function (pointInfo, shape, event) {\n // 只有鼠标左键的 mousedown 事件才会设置 mousedownShape 等属性,避免鼠标右键的 mousedown 事件引起其他事件发生\n if (event.button === LEFT_BTN_CODE) {\n this.mousedownShape = shape;\n this.mousedownPoint = pointInfo;\n this.mousedownTimeStamp = event.timeStamp;\n }\n this._emitEvent('mousedown', event, pointInfo, shape, null, null); // mousedown 不考虑fromShape, toShape\n };\n // mouseleave 和 mouseenter 都是成对存在的\n // mouseenter 和 mouseover 同时触发\n EventController.prototype._emitMouseoverEvents = function (event, pointInfo, fromShape, toShape) {\n var el = this.canvas.get('el');\n if (fromShape !== toShape) {\n if (fromShape) {\n this._emitEvent('mouseout', event, pointInfo, fromShape, fromShape, toShape);\n this._emitEvent('mouseleave', event, pointInfo, fromShape, fromShape, toShape);\n // 当鼠标从 fromShape 移动到画布上时,重置鼠标样式\n if (!toShape || toShape.get('destroyed')) {\n el.style.cursor = this.canvas.get('cursor');\n }\n }\n if (toShape) {\n this._emitEvent('mouseover', event, pointInfo, toShape, fromShape, toShape);\n this._emitEvent('mouseenter', event, pointInfo, toShape, fromShape, toShape);\n }\n }\n };\n // dragover 不等同于 mouseover,而等同于 mousemove\n EventController.prototype._emitDragoverEvents = function (event, pointInfo, fromShape, toShape, isCanvasEmit) {\n if (toShape) {\n if (toShape !== fromShape) {\n if (fromShape) {\n this._emitEvent('dragleave', event, pointInfo, fromShape, fromShape, toShape);\n }\n this._emitEvent('dragenter', event, pointInfo, toShape, fromShape, toShape);\n }\n if (!isCanvasEmit) {\n this._emitEvent('dragover', event, pointInfo, toShape);\n }\n }\n else if (fromShape) {\n // TODO: 此处判断有问题,当 drag 图形时,也会触发一次 dragleave 事件,因为此时 toShape 为 null,这不是所期望的\n // 经过空白区域\n this._emitEvent('dragleave', event, pointInfo, fromShape, fromShape, toShape);\n }\n if (isCanvasEmit) {\n this._emitEvent('dragover', event, pointInfo, toShape);\n }\n };\n // drag 完成后,需要做一些清理工作\n EventController.prototype._afterDrag = function (draggingShape, pointInfo, event) {\n if (draggingShape) {\n draggingShape.set('capture', true); // 恢复可以拾取\n this.draggingShape = null;\n }\n this.dragging = false;\n // drag 完成后,有可能 draggingShape 已经移动到了当前位置,所以不能直接取当前图形\n var shape = this._getShape(pointInfo, event);\n // 拖拽完成后,进行 enter,leave 的判定\n if (shape !== draggingShape) {\n this._emitMouseoverEvents(event, pointInfo, draggingShape, shape);\n }\n this.currentShape = shape; // 更新当前 shape,如果不处理当前图形的 mouseleave 事件可能会出问题\n };\n // 按键抬起时,会终止拖拽、触发点击\n EventController.prototype._onmouseup = function (pointInfo, shape, event) {\n // eevent.button === 0 表示鼠标左键事件,此处加上判断主要是为了避免右键鼠标会触发 mouseup 和 click 事件\n // ref: https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button\n if (event.button === LEFT_BTN_CODE) {\n var draggingShape = this.draggingShape;\n if (this.dragging) {\n // 存在可以拖拽的图形,同时拖拽到其他图形上时触发 drag 事件\n if (draggingShape) {\n this._emitEvent('drop', event, pointInfo, shape);\n }\n this._emitEvent('dragend', event, pointInfo, draggingShape);\n this._afterDrag(draggingShape, pointInfo, event);\n }\n else {\n this._emitEvent('mouseup', event, pointInfo, shape); // 先触发 mouseup 再触发 click\n if (shape === this.mousedownShape) {\n this._emitEvent('click', event, pointInfo, shape);\n }\n this.mousedownShape = null;\n this.mousedownPoint = null;\n }\n }\n };\n // 当触发浏览器的 dragover 事件时,不会再触发 mousemove ,所以这时候的 dragenter, dragleave 事件需要重新处理\n EventController.prototype._ondragover = function (pointInfo, shape, event) {\n event.preventDefault(); // 如果不对 dragover 进行 preventDefault,则不会在 canvas 上触发 drop 事件\n var preShape = this.currentShape;\n this._emitDragoverEvents(event, pointInfo, preShape, shape, true);\n };\n // 大量的图形事件,都通过 mousemove 模拟\n EventController.prototype._onmousemove = function (pointInfo, shape, event) {\n var canvas = this.canvas;\n var preShape = this.currentShape;\n var draggingShape = this.draggingShape;\n // 正在拖拽时\n if (this.dragging) {\n // 正在拖拽中\n if (draggingShape) {\n // 如果拖拽了 shape 会触发 dragenter, dragleave, dragover 和 drag 事件\n this._emitDragoverEvents(event, pointInfo, preShape, shape, false);\n }\n // 如果存在 draggingShape 则会在 draggingShape 上触发 drag 事件,冒泡到 canvas 上\n // 否则在 canvas 上触发 drag 事件\n this._emitEvent('drag', event, pointInfo, draggingShape);\n }\n else {\n var mousedownPoint = this.mousedownPoint;\n if (mousedownPoint) {\n // 当鼠标点击下去,同时移动时,进行 drag 判定\n var mousedownShape = this.mousedownShape;\n var now = event.timeStamp;\n var timeWindow = now - this.mousedownTimeStamp;\n var dx = mousedownPoint.clientX - pointInfo.clientX;\n var dy = mousedownPoint.clientY - pointInfo.clientY;\n var dist = dx * dx + dy * dy;\n if (timeWindow > 120 || dist > CLICK_OFFSET) {\n if (mousedownShape && mousedownShape.get('draggable')) {\n // 设置了 draggable 的 shape 才能触发 drag 相关的事件\n draggingShape = this.mousedownShape; // 拖动鼠标点下时的 shape\n draggingShape.set('capture', false); // 禁止继续拾取,否则无法进行 dragover,dragenter,dragleave,drop的判定\n this.draggingShape = draggingShape;\n this.dragging = true;\n this._emitEvent('dragstart', event, pointInfo, draggingShape);\n // 清理按下鼠标时缓存的值\n this.mousedownShape = null;\n this.mousedownPoint = null;\n }\n else if (!mousedownShape && canvas.get('draggable')) {\n // 设置了 draggable 的 canvas 才能触发 drag 相关的事件\n this.dragging = true;\n this._emitEvent('dragstart', event, pointInfo, null);\n // 清理按下鼠标时缓存的值\n this.mousedownShape = null;\n this.mousedownPoint = null;\n }\n else {\n this._emitMouseoverEvents(event, pointInfo, preShape, shape);\n this._emitEvent('mousemove', event, pointInfo, shape);\n }\n }\n else {\n this._emitMouseoverEvents(event, pointInfo, preShape, shape);\n this._emitEvent('mousemove', event, pointInfo, shape);\n }\n }\n else {\n // 没有按键按下时,则直接触发 mouse over 相关的各种事件\n this._emitMouseoverEvents(event, pointInfo, preShape, shape);\n // 始终触发移动\n this._emitEvent('mousemove', event, pointInfo, shape);\n }\n }\n };\n // 触发事件\n EventController.prototype._emitEvent = function (type, event, pointInfo, shape, fromShape, toShape) {\n var eventObj = this._getEventObj(type, event, pointInfo, shape, fromShape, toShape);\n // 存在 shape 触发,则进行冒泡处理\n if (shape) {\n eventObj.shape = shape;\n // 触发 shape 上的事件\n emitTargetEvent(shape, type, eventObj);\n var parent_1 = shape.getParent();\n // 执行冒泡\n while (parent_1) {\n // 委托事件要先触发\n parent_1.emitDelegation(type, eventObj);\n // 事件冒泡停止,不能妨碍委托事件\n if (!eventObj.propagationStopped) {\n bubbleEvent(parent_1, type, eventObj);\n }\n eventObj.propagationPath.push(parent_1);\n parent_1 = parent_1.getParent();\n }\n }\n else {\n // 如果没有 shape 直接在 canvas 上触发\n var canvas = this.canvas;\n // 直接触发 canvas 上的事件\n emitTargetEvent(canvas, type, eventObj);\n }\n };\n EventController.prototype.destroy = function () {\n // 清理事件\n this._clearEvents();\n // 清理缓存的对象\n this.canvas = null;\n this.currentShape = null;\n this.draggingShape = null;\n this.mousedownPoint = null;\n this.mousedownShape = null;\n this.mousedownTimeStamp = null;\n };\n return EventController;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (EventController);\n//# sourceMappingURL=event-contoller.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2V2ZW50L2V2ZW50LWNvbnRvbGxlci5qcz85OTE5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ3VDO0FBQ087QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLDJEQUFRO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsb0RBQVU7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3RUFBd0U7QUFDeEU7QUFDQSw2RUFBNkU7QUFDN0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUZBQW1GO0FBQ25GO0FBQ0EsMkVBQTJFO0FBQzNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3RUFBd0U7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBFQUEwRTtBQUMxRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0M7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0VBQW9FO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0REFBNEQ7QUFDNUQsNERBQTREO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNjLDhFQUFlLEVBQUM7QUFDL0IiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2V2ZW50L2V2ZW50LWNvbnRvbGxlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVvdmVydmlldyDkuovku7blpITnkIblmahcbiAqIEBhdXRob3IgZHhxNjEzQGdtYWlsLmNvbVxuICovXG5pbXBvcnQgR3JhcGhFdmVudCBmcm9tICcuL2dyYXBoLWV2ZW50JztcbmltcG9ydCB7IGVhY2gsIGlzUGFyZW50IH0gZnJvbSAnLi4vdXRpbC91dGlsJztcbnZhciBDTElDS19PRkZTRVQgPSA0MDtcbnZhciBMRUZUX0JUTl9DT0RFID0gMDtcbnZhciBERUxFR0FUSU9OX1NQTElUID0gJzonO1xudmFyIEVWRU5UUyA9IFtcbiAgICAnbW91c2Vkb3duJyxcbiAgICAnbW91c2V1cCcsXG4gICAgJ2RibGNsaWNrJyxcbiAgICAnbW91c2VvdXQnLFxuICAgICdtb3VzZW92ZXInLFxuICAgICdtb3VzZW1vdmUnLFxuICAgICdtb3VzZWxlYXZlJyxcbiAgICAnbW91c2VlbnRlcicsXG4gICAgJ3RvdWNoc3RhcnQnLFxuICAgICd0b3VjaG1vdmUnLFxuICAgICd0b3VjaGVuZCcsXG4gICAgJ2RyYWdlbnRlcicsXG4gICAgJ2RyYWdvdmVyJyxcbiAgICAnZHJhZ2xlYXZlJyxcbiAgICAnZHJvcCcsXG4gICAgJ2NvbnRleHRtZW51JyxcbiAgICAnbW91c2V3aGVlbCcsXG5dO1xuLy8g5piv5ZCm5pyJ5aeU5omY5LqL5Lu255uR5ZCsXG5mdW5jdGlvbiBoYXNEZWxlZ2F0aW9uKGV2ZW50cywgdHlwZSkge1xuICAgIGZvciAodmFyIGtleSBpbiBldmVudHMpIHtcbiAgICAgICAgaWYgKGV2ZW50cy5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIGtleS5pbmRleE9mKERFTEVHQVRJT05fU1BMSVQgKyB0eXBlKSA+PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG4vLyDop6blj5Hnm67moIfkuovku7bvvIznm67moIflj6rog73mmK8gc2hhcGUg5oiWIGNhbnZhc1xuZnVuY3Rpb24gZW1pdFRhcmdldEV2ZW50KHRhcmdldCwgdHlwZSwgZXZlbnRPYmopIHtcbiAgICBldmVudE9iai5uYW1lID0gdHlwZTtcbiAgICBldmVudE9iai50YXJnZXQgPSB0YXJnZXQ7XG4gICAgZXZlbnRPYmouY3VycmVudFRhcmdldCA9IHRhcmdldDtcbiAgICBldmVudE9iai5kZWxlZ2F0ZVRhcmdldCA9IHRhcmdldDtcbiAgICB0YXJnZXQuZW1pdCh0eXBlLCBldmVudE9iaik7XG59XG4vLyDkuovku7blhpLms6EsIGVudGVyIOWSjCBsZWF2ZSDpnIDopoHlr7kgZnJvbVNoYXBlIOWSjCB0b1NoYXBlIOi/m+ihjOWIpOWQjFxuZnVuY3Rpb24gYnViYmxlRXZlbnQoY29udGFpbmVyLCB0eXBlLCBldmVudE9iaikge1xuICAgIGlmIChldmVudE9iai5idWJibGVzKSB7XG4gICAgICAgIHZhciByZWxhdGl2ZVNoYXBlID0gdm9pZCAwO1xuICAgICAgICB2YXIgaXNPdmVyRXZlbnQgPSBmYWxzZTtcbiAgICAgICAgaWYgKHR5cGUgPT09ICdtb3VzZWVudGVyJykge1xuICAgICAgICAgICAgcmVsYXRpdmVTaGFwZSA9IGV2ZW50T2JqLmZyb21TaGFwZTtcbiAgICAgICAgICAgIGlzT3ZlckV2ZW50ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0eXBlID09PSAnbW91c2VsZWF2ZScpIHtcbiAgICAgICAgICAgIGlzT3ZlckV2ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIHJlbGF0aXZlU2hhcGUgPSBldmVudE9iai50b1NoYXBlO1xuICAgICAgICB9XG4gICAgICAgIC8vIGNhbnZhcyDkuIrnmoQgbW91c2VlbnRlcu+8jCBtb3VzZWxlYXZlIOS6i+S7tu+8jOS7heW9k+i/m+WFpeaIluiAheenu+WHuiBjYW52YXMg5pe26Kem5Y+RXG4gICAgICAgIGlmIChjb250YWluZXIuaXNDYW52YXMoKSAmJiBpc092ZXJFdmVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIOWmguaenOebuOWFs+WbvuW9ouWQjOW9k+WJjeWbvuW9ouWcqOWQjOS4gOS4quWuueWZqOWGhe+8jOS4jeinpuWPkeS6i+S7tlxuICAgICAgICBpZiAocmVsYXRpdmVTaGFwZSAmJiBpc1BhcmVudChjb250YWluZXIsIHJlbGF0aXZlU2hhcGUpKSB7XG4gICAgICAgICAgICAvLyDpmLvmraLnu6fnu63lkJHkuIrlhpLms6FcbiAgICAgICAgICAgIGV2ZW50T2JqLmJ1YmJsZXMgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyDkuovku7blkI3np7Dlj6/og73lnKjlp5TmiZjov4fnqIvkuK3ooqvkv67mlLnvvIzlm6DmraTkuovku7blhpLms6Hml7bpnIDopoHph43mlrDorr7nva7kuovku7blkI3np7BcbiAgICAgICAgZXZlbnRPYmoubmFtZSA9IHR5cGU7XG4gICAgICAgIGV2ZW50T2JqLmN1cnJlbnRUYXJnZXQgPSBjb250YWluZXI7XG4gICAgICAgIGV2ZW50T2JqLmRlbGVnYXRlVGFyZ2V0ID0gY29udGFpbmVyO1xuICAgICAgICBjb250YWluZXIuZW1pdCh0eXBlLCBldmVudE9iaik7XG4gICAgfVxufVxudmFyIEV2ZW50Q29udHJvbGxlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBFdmVudENvbnRyb2xsZXIoY2ZnKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIC8vIOato+WcqOiiq+aLluaLveeahOWbvuW9olxuICAgICAgICB0aGlzLmRyYWdnaW5nU2hhcGUgPSBudWxsO1xuICAgICAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XG4gICAgICAgIC8vIOW9k+WJjem8oOaghy90b3VjaOaJgOWcqOS9jee9rueahOWbvuW9olxuICAgICAgICB0aGlzLmN1cnJlbnRTaGFwZSA9IG51bGw7XG4gICAgICAgIHRoaXMubW91c2Vkb3duU2hhcGUgPSBudWxsO1xuICAgICAgICB0aGlzLm1vdXNlZG93blBvaW50ID0gbnVsbDtcbiAgICAgICAgLy8g57uf5LiA5aSE55CG5omA5pyJ55qE5Zue6LCDXG4gICAgICAgIHRoaXMuX2V2ZW50Q2FsbGJhY2sgPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgICAgIHZhciB0eXBlID0gZXYudHlwZTtcbiAgICAgICAgICAgIF90aGlzLl90cmlnZ2VyRXZlbnQodHlwZSwgZXYpO1xuICAgICAgICB9O1xuICAgICAgICAvLyDlnKggZG9jdW1lbnQg5aSE55CG5ouW5ou95Yiw55S75biD5aSW55qE5LqL5Lu277yM5aSE55CG5LuO5Zu+5b2i5LiK56e76Zmk55S75biD5pyq6KKr5o2V5o2J55qE6Zeu6aKYXG4gICAgICAgIHRoaXMuX29uRG9jdW1lbnRNb3ZlID0gZnVuY3Rpb24gKGV2KSB7XG4gICAgICAgICAgICB2YXIgY2FudmFzID0gX3RoaXMuY2FudmFzO1xuICAgICAgICAgICAgdmFyIGVsID0gY2FudmFzLmdldCgnZWwnKTtcbiAgICAgICAgICAgIGlmIChlbCAhPT0gZXYudGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgLy8g5LiN5ZyoIGNhbnZhcyDkuIrnp7vliqhcbiAgICAgICAgICAgICAgICBpZiAoX3RoaXMuZHJhZ2dpbmcgfHwgX3RoaXMuY3VycmVudFNoYXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwb2ludEluZm8gPSBfdGhpcy5fZ2V0UG9pbnRJbmZvKGV2KTtcbiAgICAgICAgICAgICAgICAgICAgLy8g6L+Y5Zyo5ouW5ou96L+H56iL5LitXG4gICAgICAgICAgICAgICAgICAgIGlmIChfdGhpcy5kcmFnZ2luZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMuX2VtaXRFdmVudCgnZHJhZycsIGV2LCBwb2ludEluZm8sIF90aGlzLmRyYWdnaW5nU2hhcGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIOivtOaYjuS7juafkOS4quWbvuW9ouebtOaOpeenu+WKqOWIsOS6hueUu+W4g+Wklumdou+8jFxuICAgICAgICAgICAgICAgICAgICAvLyDkv67lpI3kuoYgbW91c2VsZWF2ZSDnmoQgYnVnIOWQjuS4jeWGjeWHuueOsOi/meenjeaDheWGtVxuICAgICAgICAgICAgICAgICAgICAvLyBpZiAodGhpcy5jdXJyZW50U2hhcGUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gICB0aGlzLl9lbWl0RXZlbnQoJ21vdXNlbGVhdmUnLCBldiwgcG9pbnRJbmZvLCB0aGlzLmN1cnJlbnRTaGFwZSwgdGhpcy5jdXJyZW50U2hhcGUsIG51bGwpO1xuICAgICAgICAgICAgICAgICAgICAvLyAgIHRoaXMuY3VycmVudFNoYXBlID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgLy8g5ZyoIGRvY3VtZW50IOS4iuWkhOeQhuaLluaLveWIsOWklumdou+8jOmHiuaUvum8oOagh+aXtuinpuWPkSBkcmFnZW5kXG4gICAgICAgIHRoaXMuX29uRG9jdW1lbnRNb3VzZVVwID0gZnVuY3Rpb24gKGV2KSB7XG4gICAgICAgICAgICB2YXIgY2FudmFzID0gX3RoaXMuY2FudmFzO1xuICAgICAgICAgICAgdmFyIGVsID0gY2FudmFzLmdldCgnZWwnKTtcbiAgICAgICAgICAgIGlmIChlbCAhPT0gZXYudGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgLy8g5LiN5ZyoIGNhbnZhcyDkuIrnp7vliqhcbiAgICAgICAgICAgICAgICBpZiAoX3RoaXMuZHJhZ2dpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBvaW50SW5mbyA9IF90aGlzLl9nZXRQb2ludEluZm8oZXYpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoX3RoaXMuZHJhZ2dpbmdTaGFwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5aaC5p6c5a2Y5Zyo5ouW5ou955qE5Zu+5b2i77yM5YiZ5Lmf6Kem5Y+RIGRyb3Ag5LqL5Lu2XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5fZW1pdEV2ZW50KCdkcm9wJywgZXYsIHBvaW50SW5mbywgbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuX2VtaXRFdmVudCgnZHJhZ2VuZCcsIGV2LCBwb2ludEluZm8sIF90aGlzLmRyYWdnaW5nU2hhcGUpO1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5fYWZ0ZXJEcmFnKF90aGlzLmRyYWdnaW5nU2hhcGUsIHBvaW50SW5mbywgZXYpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5jYW52YXMgPSBjZmcuY2FudmFzO1xuICAgIH1cbiAgICBFdmVudENvbnRyb2xsZXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuX2JpbmRFdmVudHMoKTtcbiAgICB9O1xuICAgIC8vIOazqOWGjOS6i+S7tlxuICAgIEV2ZW50Q29udHJvbGxlci5wcm90b3R5cGUuX2JpbmRFdmVudHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuY2FudmFzLmdldCgnZWwnKTtcbiAgICAgICAgZWFjaChFVkVOVFMsIGZ1bmN0aW9uIChldmVudE5hbWUpIHtcbiAgICAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBfdGhpcy5fZXZlbnRDYWxsYmFjayk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoZG9jdW1lbnQpIHtcbiAgICAgICAgICAgIC8vIOWkhOeQhuenu+WKqOWIsOWklumdouayoeacieinpuWPkSBzaGFwZSBtb3VzZSBsZWF2ZSDnmoTkuovku7ZcbiAgICAgICAgICAgIC8vIOWkhOeQhuaLluaLveWIsOWklumDqOeahOmXrumimFxuICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5fb25Eb2N1bWVudE1vdmUpO1xuICAgICAgICAgICAgLy8g5aSE55CG5ouW5ou96L+H56iL5Lit5Zyo5aSW6YOo6YeK5pS+6byg5qCH55qE6Zeu6aKYXG4gICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5fb25Eb2N1bWVudE1vdXNlVXApO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvLyDmuIXnkIbkuovku7ZcbiAgICBFdmVudENvbnRyb2xsZXIucHJvdG90eXBlLl9jbGVhckV2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGVsID0gdGhpcy5jYW52YXMuZ2V0KCdlbCcpO1xuICAgICAgICBlYWNoKEVWRU5UUywgZnVuY3Rpb24gKGV2ZW50TmFtZSkge1xuICAgICAgICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIF90aGlzLl9ldmVudENhbGxiYWNrKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChkb2N1bWVudCkge1xuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5fb25Eb2N1bWVudE1vdmUpO1xuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMuX29uRG9jdW1lbnRNb3VzZVVwKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgRXZlbnRDb250cm9sbGVyLnByb3RvdHlwZS5fZ2V0RXZlbnRPYmogPSBmdW5jdGlvbiAodHlwZSwgZXZlbnQsIHBvaW50LCB0YXJnZXQsIGZyb21TaGFwZSwgdG9TaGFwZSkge1xuICAgICAgICB2YXIgZXZlbnRPYmogPSBuZXcgR3JhcGhFdmVudCh0eXBlLCBldmVudCk7XG4gICAgICAgIGV2ZW50T2JqLmZyb21TaGFwZSA9IGZyb21TaGFwZTtcbiAgICAgICAgZXZlbnRPYmoudG9TaGFwZSA9IHRvU2hhcGU7XG4gICAgICAgIGV2ZW50T2JqLnggPSBwb2ludC54O1xuICAgICAgICBldmVudE9iai55ID0gcG9pbnQueTtcbiAgICAgICAgZXZlbnRPYmouY2xpZW50WCA9IHBvaW50LmNsaWVudFg7XG4gICAgICAgIGV2ZW50T2JqLmNsaWVudFkgPSBwb2ludC5jbGllbnRZO1xuICAgICAgICBldmVudE9iai5wcm9wYWdhdGlvblBhdGgucHVzaCh0YXJnZXQpO1xuICAgICAgICAvLyDkuovku7bnmoR4LHnlupTor6XmmK/ln7rkuo7nlLvluIPlt6bkuIrop5LnmoTvvIzkuI5jYW52YXPnmoRtYXRyaXjml6DlhbNcbiAgICAgICAgcmV0dXJuIGV2ZW50T2JqO1xuICAgIH07XG4gICAgLy8g5qC55o2u54K56I635Y+W5Zu+5b2i77yM5o+Q5Y+W5oiQ54us56uL5pa55rOV77yM5L6/5LqO5ZCO57ut5LyY5YyWXG4gICAgRXZlbnRDb250cm9sbGVyLnByb3RvdHlwZS5fZ2V0U2hhcGUgPSBmdW5jdGlvbiAocG9pbnQsIGV2KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbnZhcy5nZXRTaGFwZShwb2ludC54LCBwb2ludC55LCBldik7XG4gICAgfTtcbiAgICAvLyDojrflj5bkuovku7bnmoTlvZPliY3ngrnnmoTkv6Hmga9cbiAgICBFdmVudENvbnRyb2xsZXIucHJvdG90eXBlLl9nZXRQb2ludEluZm8gPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgdmFyIGNhbnZhcyA9IHRoaXMuY2FudmFzO1xuICAgICAgICB2YXIgY2xpZW50UG9pbnQgPSBjYW52YXMuZ2V0Q2xpZW50QnlFdmVudChldik7XG4gICAgICAgIHZhciBwb2ludCA9IGNhbnZhcy5nZXRQb2ludEJ5RXZlbnQoZXYpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogcG9pbnQueCxcbiAgICAgICAgICAgIHk6IHBvaW50LnksXG4gICAgICAgICAgICBjbGllbnRYOiBjbGllbnRQb2ludC54LFxuICAgICAgICAgICAgY2xpZW50WTogY2xpZW50UG9pbnQueSxcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIC8vIOinpuWPkeS6i+S7tlxuICAgIEV2ZW50Q29udHJvbGxlci5wcm90b3R5cGUuX3RyaWdnZXJFdmVudCA9IGZ1bmN0aW9uICh0eXBlLCBldikge1xuICAgICAgICB2YXIgcG9pbnRJbmZvID0gdGhpcy5fZ2V0UG9pbnRJbmZvKGV2KTtcbiAgICAgICAgLy8g5q+P5qyh6YO96I635Y+W5Zu+5b2i5pyJ5LiA5a6a5oiQ5pys77yM5ZCO5pyf5Y+v5Lul6ICD6JmR6L+b6KGM57yT5a2Y562W55WlXG4gICAgICAgIHZhciBzaGFwZSA9IHRoaXMuX2dldFNoYXBlKHBvaW50SW5mbywgZXYpO1xuICAgICAgICB2YXIgbWV0aG9kID0gdGhpc1tcIl9vblwiICsgdHlwZV07XG4gICAgICAgIHZhciBsZWF2ZUNhbnZhcyA9IGZhbHNlO1xuICAgICAgICBpZiAobWV0aG9kKSB7XG4gICAgICAgICAgICBtZXRob2QuY2FsbCh0aGlzLCBwb2ludEluZm8sIHNoYXBlLCBldik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgcHJlU2hhcGUgPSB0aGlzLmN1cnJlbnRTaGFwZTtcbiAgICAgICAgICAgIC8vIOWmguaenOi/m+WFpeOAgeenu+WHuueUu+W4g+aXtuWtmOWcqOWbvuW9ou+8jOWImeimgeWIhuWIq+inpuWPkeS6i+S7tlxuICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdtb3VzZWVudGVyJyB8fCB0eXBlID09PSAnZHJhZ2VudGVyJyB8fCB0eXBlID09PSAnbW91c2VvdmVyJykge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCh0eXBlLCBldiwgcG9pbnRJbmZvLCBudWxsLCBudWxsLCBzaGFwZSk7IC8vIOWFiOi/m+WFpeeUu+W4g1xuICAgICAgICAgICAgICAgIGlmIChzaGFwZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RXZlbnQodHlwZSwgZXYsIHBvaW50SW5mbywgc2hhcGUsIG51bGwsIHNoYXBlKTsgLy8g5YaN6Kem5Y+R5Zu+5b2i55qE5LqL5Lu2XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSAnbW91c2VlbnRlcicgJiYgdGhpcy5kcmFnZ2luZ1NoYXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIOWmguaenOato+WcqOaLluaLveWbvuW9oiwg5YiZ6Kem5Y+RIGRyYWdsZWF2ZVxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RXZlbnQoJ2RyYWdlbnRlcicsIGV2LCBwb2ludEluZm8sIG51bGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT09ICdtb3VzZWxlYXZlJyB8fCB0eXBlID09PSAnZHJhZ2xlYXZlJyB8fCB0eXBlID09PSAnbW91c2VvdXQnKSB7XG4gICAgICAgICAgICAgICAgbGVhdmVDYW52YXMgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChwcmVTaGFwZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RXZlbnQodHlwZSwgZXYsIHBvaW50SW5mbywgcHJlU2hhcGUsIHByZVNoYXBlLCBudWxsKTsgLy8g5YWI6Kem5Y+R5Zu+5b2i55qE5LqL5Lu2XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCh0eXBlLCBldiwgcG9pbnRJbmZvLCBudWxsLCBwcmVTaGFwZSwgbnVsbCk7IC8vIOWGjeinpuWPkeemu+W8gOeUu+W4g+S6i+S7tlxuICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSAnbW91c2VsZWF2ZScgJiYgdGhpcy5kcmFnZ2luZ1NoYXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCgnZHJhZ2xlYXZlJywgZXYsIHBvaW50SW5mbywgbnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEV2ZW50KHR5cGUsIGV2LCBwb2ludEluZm8sIHNoYXBlLCBudWxsLCBudWxsKTsgLy8g5LiA6Iis5LqL5Lu25Lit5LiN6ZyA6KaB6ICD6JmRIGZyb20sIHRvXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFsZWF2ZUNhbnZhcykge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50U2hhcGUgPSBzaGFwZTtcbiAgICAgICAgfVxuICAgICAgICAvLyDlvZPpvKDmoIfku47nlLvluIPnp7vliqjliLAgc2hhcGUg5oiW6ICF5LuOIHByZVNoYXBlIOenu+WKqOWIsCBzaGFwZSDml7bvvIzlupTnlKggc2hhcGUg5LiK55qE6byg5qCH5qC35byPXG4gICAgICAgIGlmIChzaGFwZSAmJiAhc2hhcGUuZ2V0KCdkZXN0cm95ZWQnKSkge1xuICAgICAgICAgICAgdmFyIGNhbnZhcyA9IHRoaXMuY2FudmFzO1xuICAgICAgICAgICAgdmFyIGVsID0gY2FudmFzLmdldCgnZWwnKTtcbiAgICAgICAgICAgIGVsLnN0eWxlLmN1cnNvciA9IHNoYXBlLmF0dHIoJ2N1cnNvcicpIHx8IGNhbnZhcy5nZXQoJ2N1cnNvcicpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvLyDorrDlvZXkuIvngrnlh7vnmoTkvY3nva7jgIHlm77lvaLvvIzkvr/kuo7mi5bmi73kuovku7bjgIFjbGljayDkuovku7bnmoTliKTlrppcbiAgICBFdmVudENvbnRyb2xsZXIucHJvdG90eXBlLl9vbm1vdXNlZG93biA9IGZ1bmN0aW9uIChwb2ludEluZm8sIHNoYXBlLCBldmVudCkge1xuICAgICAgICAvLyDlj6rmnInpvKDmoIflt6bplK7nmoQgbW91c2Vkb3duIOS6i+S7tuaJjeS8muiuvue9riBtb3VzZWRvd25TaGFwZSDnrYnlsZ7mgKfvvIzpgb/lhY3pvKDmoIflj7PplK7nmoQgbW91c2Vkb3duIOS6i+S7tuW8lei1t+WFtuS7luS6i+S7tuWPkeeUn1xuICAgICAgICBpZiAoZXZlbnQuYnV0dG9uID09PSBMRUZUX0JUTl9DT0RFKSB7XG4gICAgICAgICAgICB0aGlzLm1vdXNlZG93blNoYXBlID0gc2hhcGU7XG4gICAgICAgICAgICB0aGlzLm1vdXNlZG93blBvaW50ID0gcG9pbnRJbmZvO1xuICAgICAgICAgICAgdGhpcy5tb3VzZWRvd25UaW1lU3RhbXAgPSBldmVudC50aW1lU3RhbXA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZW1pdEV2ZW50KCdtb3VzZWRvd24nLCBldmVudCwgcG9pbnRJbmZvLCBzaGFwZSwgbnVsbCwgbnVsbCk7IC8vIG1vdXNlZG93biDkuI3ogIPomZFmcm9tU2hhcGUsIHRvU2hhcGVcbiAgICB9O1xuICAgIC8vIG1vdXNlbGVhdmUg5ZKMIG1vdXNlZW50ZXIg6YO95piv5oiQ5a+55a2Y5Zyo55qEXG4gICAgLy8gbW91c2VlbnRlciDlkowgbW91c2VvdmVyIOWQjOaXtuinpuWPkVxuICAgIEV2ZW50Q29udHJvbGxlci5wcm90b3R5cGUuX2VtaXRNb3VzZW92ZXJFdmVudHMgPSBmdW5jdGlvbiAoZXZlbnQsIHBvaW50SW5mbywgZnJvbVNoYXBlLCB0b1NoYXBlKSB7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuY2FudmFzLmdldCgnZWwnKTtcbiAgICAgICAgaWYgKGZyb21TaGFwZSAhPT0gdG9TaGFwZSkge1xuICAgICAgICAgICAgaWYgKGZyb21TaGFwZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCgnbW91c2VvdXQnLCBldmVudCwgcG9pbnRJbmZvLCBmcm9tU2hhcGUsIGZyb21TaGFwZSwgdG9TaGFwZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEV2ZW50KCdtb3VzZWxlYXZlJywgZXZlbnQsIHBvaW50SW5mbywgZnJvbVNoYXBlLCBmcm9tU2hhcGUsIHRvU2hhcGUpO1xuICAgICAgICAgICAgICAgIC8vIOW9k+m8oOagh+S7jiBmcm9tU2hhcGUg56e75Yqo5Yiw55S75biD5LiK5pe277yM6YeN572u6byg5qCH5qC35byPXG4gICAgICAgICAgICAgICAgaWYgKCF0b1NoYXBlIHx8IHRvU2hhcGUuZ2V0KCdkZXN0cm95ZWQnKSkge1xuICAgICAgICAgICAgICAgICAgICBlbC5zdHlsZS5jdXJzb3IgPSB0aGlzLmNhbnZhcy5nZXQoJ2N1cnNvcicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0b1NoYXBlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEV2ZW50KCdtb3VzZW92ZXInLCBldmVudCwgcG9pbnRJbmZvLCB0b1NoYXBlLCBmcm9tU2hhcGUsIHRvU2hhcGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCgnbW91c2VlbnRlcicsIGV2ZW50LCBwb2ludEluZm8sIHRvU2hhcGUsIGZyb21TaGFwZSwgdG9TaGFwZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIGRyYWdvdmVyIOS4jeetieWQjOS6jiBtb3VzZW92ZXLvvIzogIznrYnlkIzkuo4gbW91c2Vtb3ZlXG4gICAgRXZlbnRDb250cm9sbGVyLnByb3RvdHlwZS5fZW1pdERyYWdvdmVyRXZlbnRzID0gZnVuY3Rpb24gKGV2ZW50LCBwb2ludEluZm8sIGZyb21TaGFwZSwgdG9TaGFwZSwgaXNDYW52YXNFbWl0KSB7XG4gICAgICAgIGlmICh0b1NoYXBlKSB7XG4gICAgICAgICAgICBpZiAodG9TaGFwZSAhPT0gZnJvbVNoYXBlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZyb21TaGFwZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RXZlbnQoJ2RyYWdsZWF2ZScsIGV2ZW50LCBwb2ludEluZm8sIGZyb21TaGFwZSwgZnJvbVNoYXBlLCB0b1NoYXBlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEV2ZW50KCdkcmFnZW50ZXInLCBldmVudCwgcG9pbnRJbmZvLCB0b1NoYXBlLCBmcm9tU2hhcGUsIHRvU2hhcGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc0NhbnZhc0VtaXQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RXZlbnQoJ2RyYWdvdmVyJywgZXZlbnQsIHBvaW50SW5mbywgdG9TaGFwZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZnJvbVNoYXBlKSB7XG4gICAgICAgICAgICAvLyBUT0RPOiDmraTlpITliKTmlq3mnInpl67popjvvIzlvZMgZHJhZyDlm77lvaLml7bvvIzkuZ/kvJrop6blj5HkuIDmrKEgZHJhZ2xlYXZlIOS6i+S7tu+8jOWboOS4uuatpOaXtiB0b1NoYXBlIOS4uiBudWxs77yM6L+Z5LiN5piv5omA5pyf5pyb55qEXG4gICAgICAgICAgICAvLyDnu4/ov4fnqbrnmb3ljLrln59cbiAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCgnZHJhZ2xlYXZlJywgZXZlbnQsIHBvaW50SW5mbywgZnJvbVNoYXBlLCBmcm9tU2hhcGUsIHRvU2hhcGUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0NhbnZhc0VtaXQpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCgnZHJhZ292ZXInLCBldmVudCwgcG9pbnRJbmZvLCB0b1NoYXBlKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8gZHJhZyDlrozmiJDlkI7vvIzpnIDopoHlgZrkuIDkupvmuIXnkIblt6XkvZxcbiAgICBFdmVudENvbnRyb2xsZXIucHJvdG90eXBlLl9hZnRlckRyYWcgPSBmdW5jdGlvbiAoZHJhZ2dpbmdTaGFwZSwgcG9pbnRJbmZvLCBldmVudCkge1xuICAgICAgICBpZiAoZHJhZ2dpbmdTaGFwZSkge1xuICAgICAgICAgICAgZHJhZ2dpbmdTaGFwZS5zZXQoJ2NhcHR1cmUnLCB0cnVlKTsgLy8g5oGi5aSN5Y+v5Lul5ou+5Y+WXG4gICAgICAgICAgICB0aGlzLmRyYWdnaW5nU2hhcGUgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZHJhZ2dpbmcgPSBmYWxzZTtcbiAgICAgICAgLy8gZHJhZyDlrozmiJDlkI7vvIzmnInlj6/og70gZHJhZ2dpbmdTaGFwZSDlt7Lnu4/np7vliqjliLDkuoblvZPliY3kvY3nva7vvIzmiYDku6XkuI3og73nm7TmjqXlj5blvZPliY3lm77lvaJcbiAgICAgICAgdmFyIHNoYXBlID0gdGhpcy5fZ2V0U2hhcGUocG9pbnRJbmZvLCBldmVudCk7XG4gICAgICAgIC8vIOaLluaLveWujOaIkOWQju+8jOi/m+ihjCBlbnRlcu+8jGxlYXZlIOeahOWIpOWumlxuICAgICAgICBpZiAoc2hhcGUgIT09IGRyYWdnaW5nU2hhcGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRNb3VzZW92ZXJFdmVudHMoZXZlbnQsIHBvaW50SW5mbywgZHJhZ2dpbmdTaGFwZSwgc2hhcGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3VycmVudFNoYXBlID0gc2hhcGU7IC8vIOabtOaWsOW9k+WJjSBzaGFwZe+8jOWmguaenOS4jeWkhOeQhuW9k+WJjeWbvuW9oueahCBtb3VzZWxlYXZlIOS6i+S7tuWPr+iDveS8muWHuumXrumimFxuICAgIH07XG4gICAgLy8g5oyJ6ZSu5oqs6LW35pe277yM5Lya57uI5q2i5ouW5ou944CB6Kem5Y+R54K55Ye7XG4gICAgRXZlbnRDb250cm9sbGVyLnByb3RvdHlwZS5fb25tb3VzZXVwID0gZnVuY3Rpb24gKHBvaW50SW5mbywgc2hhcGUsIGV2ZW50KSB7XG4gICAgICAgIC8vIGVldmVudC5idXR0b24gPT09IDAg6KGo56S66byg5qCH5bem6ZSu5LqL5Lu277yM5q2k5aSE5Yqg5LiK5Yik5pat5Li76KaB5piv5Li65LqG6YG/5YWN5Y+z6ZSu6byg5qCH5Lya6Kem5Y+RIG1vdXNldXAg5ZKMIGNsaWNrIOS6i+S7tlxuICAgICAgICAvLyByZWY6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9Nb3VzZUV2ZW50L2J1dHRvblxuICAgICAgICBpZiAoZXZlbnQuYnV0dG9uID09PSBMRUZUX0JUTl9DT0RFKSB7XG4gICAgICAgICAgICB2YXIgZHJhZ2dpbmdTaGFwZSA9IHRoaXMuZHJhZ2dpbmdTaGFwZTtcbiAgICAgICAgICAgIGlmICh0aGlzLmRyYWdnaW5nKSB7XG4gICAgICAgICAgICAgICAgLy8g5a2Y5Zyo5Y+v5Lul5ouW5ou955qE5Zu+5b2i77yM5ZCM5pe25ouW5ou95Yiw5YW25LuW5Zu+5b2i5LiK5pe26Kem5Y+RIGRyYWcg5LqL5Lu2XG4gICAgICAgICAgICAgICAgaWYgKGRyYWdnaW5nU2hhcGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZW1pdEV2ZW50KCdkcm9wJywgZXZlbnQsIHBvaW50SW5mbywgc2hhcGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RXZlbnQoJ2RyYWdlbmQnLCBldmVudCwgcG9pbnRJbmZvLCBkcmFnZ2luZ1NoYXBlKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9hZnRlckRyYWcoZHJhZ2dpbmdTaGFwZSwgcG9pbnRJbmZvLCBldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RXZlbnQoJ21vdXNldXAnLCBldmVudCwgcG9pbnRJbmZvLCBzaGFwZSk7IC8vIOWFiOinpuWPkSBtb3VzZXVwIOWGjeinpuWPkSBjbGlja1xuICAgICAgICAgICAgICAgIGlmIChzaGFwZSA9PT0gdGhpcy5tb3VzZWRvd25TaGFwZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RXZlbnQoJ2NsaWNrJywgZXZlbnQsIHBvaW50SW5mbywgc2hhcGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLm1vdXNlZG93blNoYXBlID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLm1vdXNlZG93blBvaW50ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8g5b2T6Kem5Y+R5rWP6KeI5Zmo55qEIGRyYWdvdmVyIOS6i+S7tuaXtu+8jOS4jeS8muWGjeinpuWPkSBtb3VzZW1vdmUg77yM5omA5Lul6L+Z5pe25YCZ55qEIGRyYWdlbnRlciwgZHJhZ2xlYXZlIOS6i+S7tumcgOimgemHjeaWsOWkhOeQhlxuICAgIEV2ZW50Q29udHJvbGxlci5wcm90b3R5cGUuX29uZHJhZ292ZXIgPSBmdW5jdGlvbiAocG9pbnRJbmZvLCBzaGFwZSwgZXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8g5aaC5p6c5LiN5a+5IGRyYWdvdmVyIOi/m+ihjCBwcmV2ZW50RGVmYXVsdO+8jOWImeS4jeS8muWcqCBjYW52YXMg5LiK6Kem5Y+RIGRyb3Ag5LqL5Lu2XG4gICAgICAgIHZhciBwcmVTaGFwZSA9IHRoaXMuY3VycmVudFNoYXBlO1xuICAgICAgICB0aGlzLl9lbWl0RHJhZ292ZXJFdmVudHMoZXZlbnQsIHBvaW50SW5mbywgcHJlU2hhcGUsIHNoYXBlLCB0cnVlKTtcbiAgICB9O1xuICAgIC8vIOWkp+mHj+eahOWbvuW9ouS6i+S7tu+8jOmDvemAmui/hyBtb3VzZW1vdmUg5qih5oufXG4gICAgRXZlbnRDb250cm9sbGVyLnByb3RvdHlwZS5fb25tb3VzZW1vdmUgPSBmdW5jdGlvbiAocG9pbnRJbmZvLCBzaGFwZSwgZXZlbnQpIHtcbiAgICAgICAgdmFyIGNhbnZhcyA9IHRoaXMuY2FudmFzO1xuICAgICAgICB2YXIgcHJlU2hhcGUgPSB0aGlzLmN1cnJlbnRTaGFwZTtcbiAgICAgICAgdmFyIGRyYWdnaW5nU2hhcGUgPSB0aGlzLmRyYWdnaW5nU2hhcGU7XG4gICAgICAgIC8vIOato+WcqOaLluaLveaXtlxuICAgICAgICBpZiAodGhpcy5kcmFnZ2luZykge1xuICAgICAgICAgICAgLy8g5q2j5Zyo5ouW5ou95LitXG4gICAgICAgICAgICBpZiAoZHJhZ2dpbmdTaGFwZSkge1xuICAgICAgICAgICAgICAgIC8vIOWmguaenOaLluaLveS6hiBzaGFwZSDkvJrop6blj5EgZHJhZ2VudGVyLCBkcmFnbGVhdmUsIGRyYWdvdmVyIOWSjCBkcmFnIOS6i+S7tlxuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXREcmFnb3ZlckV2ZW50cyhldmVudCwgcG9pbnRJbmZvLCBwcmVTaGFwZSwgc2hhcGUsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIOWmguaenOWtmOWcqCBkcmFnZ2luZ1NoYXBlIOWImeS8muWcqCBkcmFnZ2luZ1NoYXBlIOS4iuinpuWPkSBkcmFnIOS6i+S7tu+8jOWGkuazoeWIsCBjYW52YXMg5LiKXG4gICAgICAgICAgICAvLyDlkKbliJnlnKggY2FudmFzIOS4iuinpuWPkSBkcmFnIOS6i+S7tlxuICAgICAgICAgICAgdGhpcy5fZW1pdEV2ZW50KCdkcmFnJywgZXZlbnQsIHBvaW50SW5mbywgZHJhZ2dpbmdTaGFwZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgbW91c2Vkb3duUG9pbnQgPSB0aGlzLm1vdXNlZG93blBvaW50O1xuICAgICAgICAgICAgaWYgKG1vdXNlZG93blBvaW50KSB7XG4gICAgICAgICAgICAgICAgLy8g5b2T6byg5qCH54K55Ye75LiL5Y6777yM5ZCM5pe256e75Yqo5pe277yM6L+b6KGMIGRyYWcg5Yik5a6aXG4gICAgICAgICAgICAgICAgdmFyIG1vdXNlZG93blNoYXBlID0gdGhpcy5tb3VzZWRvd25TaGFwZTtcbiAgICAgICAgICAgICAgICB2YXIgbm93ID0gZXZlbnQudGltZVN0YW1wO1xuICAgICAgICAgICAgICAgIHZhciB0aW1lV2luZG93ID0gbm93IC0gdGhpcy5tb3VzZWRvd25UaW1lU3RhbXA7XG4gICAgICAgICAgICAgICAgdmFyIGR4ID0gbW91c2Vkb3duUG9pbnQuY2xpZW50WCAtIHBvaW50SW5mby5jbGllbnRYO1xuICAgICAgICAgICAgICAgIHZhciBkeSA9IG1vdXNlZG93blBvaW50LmNsaWVudFkgLSBwb2ludEluZm8uY2xpZW50WTtcbiAgICAgICAgICAgICAgICB2YXIgZGlzdCA9IGR4ICogZHggKyBkeSAqIGR5O1xuICAgICAgICAgICAgICAgIGlmICh0aW1lV2luZG93ID4gMTIwIHx8IGRpc3QgPiBDTElDS19PRkZTRVQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1vdXNlZG93blNoYXBlICYmIG1vdXNlZG93blNoYXBlLmdldCgnZHJhZ2dhYmxlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOiuvue9ruS6hiBkcmFnZ2FibGUg55qEIHNoYXBlIOaJjeiDveinpuWPkSBkcmFnIOebuOWFs+eahOS6i+S7tlxuICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ2dpbmdTaGFwZSA9IHRoaXMubW91c2Vkb3duU2hhcGU7IC8vIOaLluWKqOm8oOagh+eCueS4i+aXtueahCBzaGFwZVxuICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ2dpbmdTaGFwZS5zZXQoJ2NhcHR1cmUnLCBmYWxzZSk7IC8vIOemgeatoue7p+e7reaLvuWPlu+8jOWQpuWImeaXoOazlei/m+ihjCBkcmFnb3ZlcixkcmFnZW50ZXIsZHJhZ2xlYXZlLGRyb3DnmoTliKTlrppcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhZ2dpbmdTaGFwZSA9IGRyYWdnaW5nU2hhcGU7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYWdnaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCgnZHJhZ3N0YXJ0JywgZXZlbnQsIHBvaW50SW5mbywgZHJhZ2dpbmdTaGFwZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDmuIXnkIbmjInkuIvpvKDmoIfml7bnvJPlrZjnmoTlgLxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW91c2Vkb3duU2hhcGUgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3VzZWRvd25Qb2ludCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIW1vdXNlZG93blNoYXBlICYmIGNhbnZhcy5nZXQoJ2RyYWdnYWJsZScpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDorr7nva7kuoYgZHJhZ2dhYmxlIOeahCBjYW52YXMg5omN6IO96Kem5Y+RIGRyYWcg55u45YWz55qE5LqL5Lu2XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYWdnaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFdmVudCgnZHJhZ3N0YXJ0JywgZXZlbnQsIHBvaW50SW5mbywgbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDmuIXnkIbmjInkuIvpvKDmoIfml7bnvJPlrZjnmoTlgLxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW91c2Vkb3duU2hhcGUgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3VzZWRvd25Qb2ludCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0TW91c2VvdmVyRXZlbnRzKGV2ZW50LCBwb2ludEluZm8sIHByZVNoYXBlLCBzaGFwZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RXZlbnQoJ21vdXNlbW92ZScsIGV2ZW50LCBwb2ludEluZm8sIHNoYXBlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZW1pdE1vdXNlb3ZlckV2ZW50cyhldmVudCwgcG9pbnRJbmZvLCBwcmVTaGFwZSwgc2hhcGUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RXZlbnQoJ21vdXNlbW92ZScsIGV2ZW50LCBwb2ludEluZm8sIHNoYXBlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyDmsqHmnInmjInplK7mjInkuIvml7bvvIzliJnnm7TmjqXop6blj5EgbW91c2Ugb3ZlciDnm7jlhbPnmoTlkITnp43kuovku7ZcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0TW91c2VvdmVyRXZlbnRzKGV2ZW50LCBwb2ludEluZm8sIHByZVNoYXBlLCBzaGFwZSk7XG4gICAgICAgICAgICAgICAgLy8g5aeL57uI6Kem5Y+R56e75YqoXG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEV2ZW50KCdtb3VzZW1vdmUnLCBldmVudCwgcG9pbnRJbmZvLCBzaGFwZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIOinpuWPkeS6i+S7tlxuICAgIEV2ZW50Q29udHJvbGxlci5wcm90b3R5cGUuX2VtaXRFdmVudCA9IGZ1bmN0aW9uICh0eXBlLCBldmVudCwgcG9pbnRJbmZvLCBzaGFwZSwgZnJvbVNoYXBlLCB0b1NoYXBlKSB7XG4gICAgICAgIHZhciBldmVudE9iaiA9IHRoaXMuX2dldEV2ZW50T2JqKHR5cGUsIGV2ZW50LCBwb2ludEluZm8sIHNoYXBlLCBmcm9tU2hhcGUsIHRvU2hhcGUpO1xuICAgICAgICAvLyDlrZjlnKggc2hhcGUg6Kem5Y+R77yM5YiZ6L+b6KGM5YaS5rOh5aSE55CGXG4gICAgICAgIGlmIChzaGFwZSkge1xuICAgICAgICAgICAgZXZlbnRPYmouc2hhcGUgPSBzaGFwZTtcbiAgICAgICAgICAgIC8vIOinpuWPkSBzaGFwZSDkuIrnmoTkuovku7ZcbiAgICAgICAgICAgIGVtaXRUYXJnZXRFdmVudChzaGFwZSwgdHlwZSwgZXZlbnRPYmopO1xuICAgICAgICAgICAgdmFyIHBhcmVudF8xID0gc2hhcGUuZ2V0UGFyZW50KCk7XG4gICAgICAgICAgICAvLyDmiafooYzlhpLms6FcbiAgICAgICAgICAgIHdoaWxlIChwYXJlbnRfMSkge1xuICAgICAgICAgICAgICAgIC8vIOWnlOaJmOS6i+S7tuimgeWFiOinpuWPkVxuICAgICAgICAgICAgICAgIHBhcmVudF8xLmVtaXREZWxlZ2F0aW9uKHR5cGUsIGV2ZW50T2JqKTtcbiAgICAgICAgICAgICAgICAvLyDkuovku7blhpLms6HlgZzmraLvvIzkuI3og73lpqjnoo3lp5TmiZjkuovku7ZcbiAgICAgICAgICAgICAgICBpZiAoIWV2ZW50T2JqLnByb3BhZ2F0aW9uU3RvcHBlZCkge1xuICAgICAgICAgICAgICAgICAgICBidWJibGVFdmVudChwYXJlbnRfMSwgdHlwZSwgZXZlbnRPYmopO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBldmVudE9iai5wcm9wYWdhdGlvblBhdGgucHVzaChwYXJlbnRfMSk7XG4gICAgICAgICAgICAgICAgcGFyZW50XzEgPSBwYXJlbnRfMS5nZXRQYXJlbnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIOWmguaenOayoeaciSBzaGFwZSDnm7TmjqXlnKggY2FudmFzIOS4iuinpuWPkVxuICAgICAgICAgICAgdmFyIGNhbnZhcyA9IHRoaXMuY2FudmFzO1xuICAgICAgICAgICAgLy8g55u05o6l6Kem5Y+RIGNhbnZhcyDkuIrnmoTkuovku7ZcbiAgICAgICAgICAgIGVtaXRUYXJnZXRFdmVudChjYW52YXMsIHR5cGUsIGV2ZW50T2JqKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgRXZlbnRDb250cm9sbGVyLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyDmuIXnkIbkuovku7ZcbiAgICAgICAgdGhpcy5fY2xlYXJFdmVudHMoKTtcbiAgICAgICAgLy8g5riF55CG57yT5a2Y55qE5a+56LGhXG4gICAgICAgIHRoaXMuY2FudmFzID0gbnVsbDtcbiAgICAgICAgdGhpcy5jdXJyZW50U2hhcGUgPSBudWxsO1xuICAgICAgICB0aGlzLmRyYWdnaW5nU2hhcGUgPSBudWxsO1xuICAgICAgICB0aGlzLm1vdXNlZG93blBvaW50ID0gbnVsbDtcbiAgICAgICAgdGhpcy5tb3VzZWRvd25TaGFwZSA9IG51bGw7XG4gICAgICAgIHRoaXMubW91c2Vkb3duVGltZVN0YW1wID0gbnVsbDtcbiAgICB9O1xuICAgIHJldHVybiBFdmVudENvbnRyb2xsZXI7XG59KCkpO1xuZXhwb3J0IGRlZmF1bHQgRXZlbnRDb250cm9sbGVyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXZlbnQtY29udG9sbGVyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/event/event-contoller.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/event/graph-event.js":
/*!********************************************************************************!*\
!*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/event/graph-event.js ***!
\********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar GraphEvent = /** @class */ (function () {\n function GraphEvent(type, event) {\n /**\n * 是否允许冒泡\n * @type {boolean}\n */\n this.bubbles = true;\n /**\n * 触发对象\n * @type {object}\n */\n this.target = null;\n /**\n * 监听对象\n * @type {object}\n */\n this.currentTarget = null;\n /**\n * 委托对象\n * @type {object}\n */\n this.delegateTarget = null;\n /**\n * 委托事件监听对象的代理对象,即 ev.delegateObject = ev.currentTarget.get('delegateObject')\n * @type {object}\n */\n this.delegateObject = null;\n /**\n * 是否阻止了原生事件\n * @type {boolean}\n */\n this.defaultPrevented = false;\n /**\n * 是否阻止传播(向上冒泡)\n * @type {boolean}\n */\n this.propagationStopped = false;\n /**\n * 触发事件的图形\n * @type {IShape}\n */\n this.shape = null;\n /**\n * 开始触发事件的图形\n * @type {IShape}\n */\n this.fromShape = null;\n /**\n * 事件结束时的触发图形\n * @type {IShape}\n */\n this.toShape = null;\n // 触发事件的路径\n this.propagationPath = [];\n this.type = type;\n this.name = type;\n this.originalEvent = event;\n this.timeStamp = event.timeStamp;\n }\n /**\n * 阻止浏览器默认的行为\n */\n GraphEvent.prototype.preventDefault = function () {\n this.defaultPrevented = true;\n if (this.originalEvent.preventDefault) {\n this.originalEvent.preventDefault();\n }\n };\n /**\n * 阻止冒泡\n */\n GraphEvent.prototype.stopPropagation = function () {\n this.propagationStopped = true;\n };\n GraphEvent.prototype.toString = function () {\n var type = this.type;\n return \"[Event (type=\" + type + \")]\";\n };\n GraphEvent.prototype.save = function () { };\n GraphEvent.prototype.restore = function () { };\n return GraphEvent;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (GraphEvent);\n//# sourceMappingURL=graph-event.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2V2ZW50L2dyYXBoLWV2ZW50LmpzPzJmMTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2QztBQUM3QyxnREFBZ0Q7QUFDaEQ7QUFDQSxDQUFDO0FBQ2MseUVBQVUsRUFBQztBQUMxQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1iYXNlQDAuNS45QEBhbnR2L2ctYmFzZS9lc20vZXZlbnQvZ3JhcGgtZXZlbnQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgR3JhcGhFdmVudCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBHcmFwaEV2ZW50KHR5cGUsIGV2ZW50KSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDmmK/lkKblhYHorrjlhpLms6FcbiAgICAgICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmJ1YmJsZXMgPSB0cnVlO1xuICAgICAgICAvKipcbiAgICAgICAgICog6Kem5Y+R5a+56LGhXG4gICAgICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnRhcmdldCA9IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDnm5HlkKzlr7nosaFcbiAgICAgICAgICogQHR5cGUge29iamVjdH1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuY3VycmVudFRhcmdldCA9IG51bGw7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDlp5TmiZjlr7nosaFcbiAgICAgICAgICogQHR5cGUge29iamVjdH1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuZGVsZWdhdGVUYXJnZXQgPSBudWxsO1xuICAgICAgICAvKipcbiAgICAgICAgICog5aeU5omY5LqL5Lu255uR5ZCs5a+56LGh55qE5Luj55CG5a+56LGh77yM5Y2zIGV2LmRlbGVnYXRlT2JqZWN0ID0gZXYuY3VycmVudFRhcmdldC5nZXQoJ2RlbGVnYXRlT2JqZWN0JylcbiAgICAgICAgICogQHR5cGUge29iamVjdH1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuZGVsZWdhdGVPYmplY3QgPSBudWxsO1xuICAgICAgICAvKipcbiAgICAgICAgICog5piv5ZCm6Zi75q2i5LqG5Y6f55Sf5LqL5Lu2XG4gICAgICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5kZWZhdWx0UHJldmVudGVkID0gZmFsc2U7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDmmK/lkKbpmLvmraLkvKDmkq3vvIjlkJHkuIrlhpLms6HvvIlcbiAgICAgICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnByb3BhZ2F0aW9uU3RvcHBlZCA9IGZhbHNlO1xuICAgICAgICAvKipcbiAgICAgICAgICog6Kem5Y+R5LqL5Lu255qE5Zu+5b2iXG4gICAgICAgICAqIEB0eXBlIHtJU2hhcGV9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnNoYXBlID0gbnVsbDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIOW8gOWni+inpuWPkeS6i+S7tueahOWbvuW9olxuICAgICAgICAgKiBAdHlwZSB7SVNoYXBlfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5mcm9tU2hhcGUgPSBudWxsO1xuICAgICAgICAvKipcbiAgICAgICAgICog5LqL5Lu257uT5p2f5pe255qE6Kem5Y+R5Zu+5b2iXG4gICAgICAgICAqIEB0eXBlIHtJU2hhcGV9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnRvU2hhcGUgPSBudWxsO1xuICAgICAgICAvLyDop6blj5Hkuovku7bnmoTot6/lvoRcbiAgICAgICAgdGhpcy5wcm9wYWdhdGlvblBhdGggPSBbXTtcbiAgICAgICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICAgICAgdGhpcy5uYW1lID0gdHlwZTtcbiAgICAgICAgdGhpcy5vcmlnaW5hbEV2ZW50ID0gZXZlbnQ7XG4gICAgICAgIHRoaXMudGltZVN0YW1wID0gZXZlbnQudGltZVN0YW1wO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDpmLvmraLmtY/op4jlmajpu5jorqTnmoTooYzkuLpcbiAgICAgKi9cbiAgICBHcmFwaEV2ZW50LnByb3RvdHlwZS5wcmV2ZW50RGVmYXVsdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5kZWZhdWx0UHJldmVudGVkID0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMub3JpZ2luYWxFdmVudC5wcmV2ZW50RGVmYXVsdCkge1xuICAgICAgICAgICAgdGhpcy5vcmlnaW5hbEV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOmYu+atouWGkuazoVxuICAgICAqL1xuICAgIEdyYXBoRXZlbnQucHJvdG90eXBlLnN0b3BQcm9wYWdhdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGlvblN0b3BwZWQgPSB0cnVlO1xuICAgIH07XG4gICAgR3JhcGhFdmVudC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0eXBlID0gdGhpcy50eXBlO1xuICAgICAgICByZXR1cm4gXCJbRXZlbnQgKHR5cGU9XCIgKyB0eXBlICsgXCIpXVwiO1xuICAgIH07XG4gICAgR3JhcGhFdmVudC5wcm90b3R5cGUuc2F2ZSA9IGZ1bmN0aW9uICgpIHsgfTtcbiAgICBHcmFwaEV2ZW50LnByb3RvdHlwZS5yZXN0b3JlID0gZnVuY3Rpb24gKCkgeyB9O1xuICAgIHJldHVybiBHcmFwaEV2ZW50O1xufSgpKTtcbmV4cG9ydCBkZWZhdWx0IEdyYXBoRXZlbnQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1ncmFwaC1ldmVudC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/event/graph-event.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/index.js":
/*!********************************************************************!*\
!*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/index.js ***!
\********************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"version\", function() { return version; });\n/* harmony import */ var _util_path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util/path */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/path.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"PathUtil\", function() { return _util_path__WEBPACK_IMPORTED_MODULE_0__; });\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./types */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/types.js\");\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _types__WEBPACK_IMPORTED_MODULE_1__) if([\"default\",\"Event\",\"Base\",\"AbstractCanvas\",\"AbstractGroup\",\"AbstractShape\",\"PathUtil\",\"getBBoxMethod\",\"getTextHeight\",\"assembleFont\",\"isAllowCapture\",\"multiplyVec2\",\"invert\",\"getOffScreenContext\",\"version\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _types__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _interfaces__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./interfaces */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/interfaces.js\");\n/* harmony import */ var _interfaces__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_interfaces__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _interfaces__WEBPACK_IMPORTED_MODULE_2__) if([\"default\",\"Event\",\"Base\",\"AbstractCanvas\",\"AbstractGroup\",\"AbstractShape\",\"PathUtil\",\"getBBoxMethod\",\"getTextHeight\",\"assembleFont\",\"isAllowCapture\",\"multiplyVec2\",\"invert\",\"getOffScreenContext\",\"version\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _interfaces__WEBPACK_IMPORTED_MODULE_2__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _event_graph_event__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./event/graph-event */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/event/graph-event.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Event\", function() { return _event_graph_event__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _abstract_base__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./abstract/base */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/base.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Base\", function() { return _abstract_base__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _abstract_canvas__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./abstract/canvas */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/canvas.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractCanvas\", function() { return _abstract_canvas__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _abstract_group__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./abstract/group */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/group.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractGroup\", function() { return _abstract_group__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _abstract_shape__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./abstract/shape */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/abstract/shape.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractShape\", function() { return _abstract_shape__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _bbox__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./bbox */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/bbox/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getBBoxMethod\", function() { return _bbox__WEBPACK_IMPORTED_MODULE_8__[\"getBBoxMethod\"]; });\n\n/* harmony import */ var _util_text__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./util/text */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/text.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getTextHeight\", function() { return _util_text__WEBPACK_IMPORTED_MODULE_9__[\"getTextHeight\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"assembleFont\", function() { return _util_text__WEBPACK_IMPORTED_MODULE_9__[\"assembleFont\"]; });\n\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./util/util */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/util.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isAllowCapture\", function() { return _util_util__WEBPACK_IMPORTED_MODULE_10__[\"isAllowCapture\"]; });\n\n/* harmony import */ var _util_matrix__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./util/matrix */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/matrix.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"multiplyVec2\", function() { return _util_matrix__WEBPACK_IMPORTED_MODULE_11__[\"multiplyVec2\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"invert\", function() { return _util_matrix__WEBPACK_IMPORTED_MODULE_11__[\"invert\"]; });\n\n/* harmony import */ var _util_offscreen__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./util/offscreen */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/offscreen.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getOffScreenContext\", function() { return _util_offscreen__WEBPACK_IMPORTED_MODULE_12__[\"getOffScreenContext\"]; });\n\n/**\n * @fileoverview G 的基础接口定义和所有的抽象类\n * @author dxq613@gmail.com\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar version = '0.5.6';\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2luZGV4LmpzPzUzY2MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ3dDO0FBQ2hCO0FBQ0s7QUFDMEI7QUFDTDtBQUNZO0FBQ0Y7QUFDQTtBQUN4QztBQUNtQjtBQUNtQjtBQUNiO0FBQ1E7QUFDRTtBQUNoRDtBQUNQIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWJhc2VAMC41LjlAQGFudHYvZy1iYXNlL2VzbS9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVvdmVydmlldyBHIOeahOWfuuehgOaOpeWPo+WumuS5ieWSjOaJgOacieeahOaKveixoeexu1xuICogQGF1dGhvciBkeHE2MTNAZ21haWwuY29tXG4gKi9cbmltcG9ydCAqIGFzIFBhdGhVdGlsIGZyb20gJy4vdXRpbC9wYXRoJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRXZlbnQgfSBmcm9tICcuL2V2ZW50L2dyYXBoLWV2ZW50JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQmFzZSB9IGZyb20gJy4vYWJzdHJhY3QvYmFzZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEFic3RyYWN0Q2FudmFzIH0gZnJvbSAnLi9hYnN0cmFjdC9jYW52YXMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBBYnN0cmFjdEdyb3VwIH0gZnJvbSAnLi9hYnN0cmFjdC9ncm91cCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEFic3RyYWN0U2hhcGUgfSBmcm9tICcuL2Fic3RyYWN0L3NoYXBlJztcbmV4cG9ydCB7IFBhdGhVdGlsIH07XG5leHBvcnQgeyBnZXRCQm94TWV0aG9kIH0gZnJvbSAnLi9iYm94JztcbmV4cG9ydCB7IGdldFRleHRIZWlnaHQsIGFzc2VtYmxlRm9udCB9IGZyb20gJy4vdXRpbC90ZXh0JztcbmV4cG9ydCB7IGlzQWxsb3dDYXB0dXJlIH0gZnJvbSAnLi91dGlsL3V0aWwnO1xuZXhwb3J0IHsgbXVsdGlwbHlWZWMyLCBpbnZlcnQgfSBmcm9tICcuL3V0aWwvbWF0cml4JztcbmV4cG9ydCB7IGdldE9mZlNjcmVlbkNvbnRleHQgfSBmcm9tICcuL3V0aWwvb2Zmc2NyZWVuJztcbmV4cG9ydCB2YXIgdmVyc2lvbiA9ICcwLjUuNic7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/interfaces.js":
/*!*************************************************************************!*\
!*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/interfaces.js ***!
\*************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("//# sourceMappingURL=interfaces.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL2ludGVyZmFjZXMuanM/NmQ4MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1iYXNlQDAuNS45QEBhbnR2L2ctYmFzZS9lc20vaW50ZXJmYWNlcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIyBzb3VyY2VNYXBwaW5nVVJMPWludGVyZmFjZXMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/interfaces.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/types.js":
/*!********************************************************************!*\
!*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/types.js ***!
\********************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("//# sourceMappingURL=types.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL3R5cGVzLmpzP2NkNjMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL3R5cGVzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8jIHNvdXJjZU1hcHBpbmdVUkw9dHlwZXMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/types.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/color.js":
/*!*************************************************************************!*\
!*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/color.js ***!
\*************************************************************************/
/*! exports provided: isColorProp, isGradientColor */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isColorProp\", function() { return isColorProp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isGradientColor\", function() { return isGradientColor; });\nvar isColorProp = function (prop) { return ['fill', 'stroke', 'fillStyle', 'strokeStyle'].includes(prop); };\nvar isGradientColor = function (val) { return /^[r,R,L,l]{1}[\\s]*\\(/.test(val); };\n//# sourceMappingURL=color.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL3V0aWwvY29sb3IuanM/NjM3ZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBTyxtQ0FBbUMsc0VBQXNFO0FBQ3pHLHNDQUFzQyxvQkFBb0IsRUFBRSxtQkFBbUI7QUFDdEYiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL3V0aWwvY29sb3IuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIGlzQ29sb3JQcm9wID0gZnVuY3Rpb24gKHByb3ApIHsgcmV0dXJuIFsnZmlsbCcsICdzdHJva2UnLCAnZmlsbFN0eWxlJywgJ3N0cm9rZVN0eWxlJ10uaW5jbHVkZXMocHJvcCk7IH07XG5leHBvcnQgdmFyIGlzR3JhZGllbnRDb2xvciA9IGZ1bmN0aW9uICh2YWwpIHsgcmV0dXJuIC9eW3IsUixMLGxdezF9W1xcc10qXFwoLy50ZXN0KHZhbCk7IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jb2xvci5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/color.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/matrix.js":
/*!**************************************************************************!*\
!*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/matrix.js ***!
\**************************************************************************/
/*! exports provided: multiplyMatrix, multiplyVec2, invert */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiplyMatrix\", function() { return multiplyMatrix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"multiplyVec2\", function() { return multiplyVec2; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"invert\", function() { return invert; });\n/**\n * @fileoverview 矩阵运算,本来是要引入 gl-matrix, 但是考虑到 g-mobile 对大小有限制,同时 g-webgl 使用的 matrix 不一致\n * 所以,这里仅实现 2D 几个运算,上层自己引入 gl-matrix\n * @author dxq613@gmail.com\n */\n/**\n * 3阶矩阵相乘\n * @param {number[]} a 矩阵1\n * @param {number[]} b 矩阵2\n */\nfunction multiplyMatrix(a, b) {\n var out = [];\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a10 = a[3];\n var a11 = a[4];\n var a12 = a[5];\n var a20 = a[6];\n var a21 = a[7];\n var a22 = a[8];\n var b00 = b[0];\n var b01 = b[1];\n var b02 = b[2];\n var b10 = b[3];\n var b11 = b[4];\n var b12 = b[5];\n var b20 = b[6];\n var b21 = b[7];\n var b22 = b[8];\n out[0] = b00 * a00 + b01 * a10 + b02 * a20;\n out[1] = b00 * a01 + b01 * a11 + b02 * a21;\n out[2] = b00 * a02 + b01 * a12 + b02 * a22;\n out[3] = b10 * a00 + b11 * a10 + b12 * a20;\n out[4] = b10 * a01 + b11 * a11 + b12 * a21;\n out[5] = b10 * a02 + b11 * a12 + b12 * a22;\n out[6] = b20 * a00 + b21 * a10 + b22 * a20;\n out[7] = b20 * a01 + b21 * a11 + b22 * a21;\n out[8] = b20 * a02 + b21 * a12 + b22 * a22;\n return out;\n}\n/**\n * 3阶矩阵同2阶向量相乘\n * @param {number[]} m 矩阵\n * @param {number[]} v 二阶向量\n */\nfunction multiplyVec2(m, v) {\n var out = [];\n var x = v[0];\n var y = v[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\n/**\n * 矩阵的逆\n * @param {number[]} a 矩阵\n */\nfunction invert(a) {\n var out = [];\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a10 = a[3];\n var a11 = a[4];\n var a12 = a[5];\n var a20 = a[6];\n var a21 = a[7];\n var a22 = a[8];\n var b01 = a22 * a11 - a12 * a21;\n var b11 = -a22 * a10 + a12 * a20;\n var b21 = a21 * a10 - a11 * a20;\n // Calculate the determinant\n var det = a00 * b01 + a01 * b11 + a02 * b21;\n if (!det) {\n return null;\n }\n det = 1.0 / det;\n out[0] = b01 * det;\n out[1] = (-a22 * a01 + a02 * a21) * det;\n out[2] = (a12 * a01 - a02 * a11) * det;\n out[3] = b11 * det;\n out[4] = (a22 * a00 - a02 * a20) * det;\n out[5] = (-a12 * a00 + a02 * a10) * det;\n out[6] = b21 * det;\n out[7] = (-a21 * a00 + a01 * a20) * det;\n out[8] = (a11 * a00 - a01 * a10) * det;\n return out;\n}\n//# sourceMappingURL=matrix.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL3V0aWwvbWF0cml4LmpzPzNjNzAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEI7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEI7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWJhc2VAMC41LjlAQGFudHYvZy1iYXNlL2VzbS91dGlsL21hdHJpeC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVvdmVydmlldyDnn6npmLXov5DnrpfvvIzmnKzmnaXmmK/opoHlvJXlhaUgZ2wtbWF0cml4LCDkvYbmmK/ogIPomZHliLAgZy1tb2JpbGUg5a+55aSn5bCP5pyJ6ZmQ5Yi277yM5ZCM5pe2IGctd2ViZ2wg5L2/55So55qEIG1hdHJpeCDkuI3kuIDoh7RcbiAqIOaJgOS7pe+8jOi/memHjOS7heWunueOsCAyRCDlh6DkuKrov5DnrpfvvIzkuIrlsYLoh6rlt7HlvJXlhaUgZ2wtbWF0cml4XG4gKiBAYXV0aG9yIGR4cTYxM0BnbWFpbC5jb21cbiAqL1xuLyoqXG4gKiAz6Zi255+p6Zi155u45LmYXG4gKiBAcGFyYW0ge251bWJlcltdfSBhIOefqemYtTFcbiAqIEBwYXJhbSB7bnVtYmVyW119IGIg55+p6Zi1MlxuICovXG5leHBvcnQgZnVuY3Rpb24gbXVsdGlwbHlNYXRyaXgoYSwgYikge1xuICAgIHZhciBvdXQgPSBbXTtcbiAgICB2YXIgYTAwID0gYVswXTtcbiAgICB2YXIgYTAxID0gYVsxXTtcbiAgICB2YXIgYTAyID0gYVsyXTtcbiAgICB2YXIgYTEwID0gYVszXTtcbiAgICB2YXIgYTExID0gYVs0XTtcbiAgICB2YXIgYTEyID0gYVs1XTtcbiAgICB2YXIgYTIwID0gYVs2XTtcbiAgICB2YXIgYTIxID0gYVs3XTtcbiAgICB2YXIgYTIyID0gYVs4XTtcbiAgICB2YXIgYjAwID0gYlswXTtcbiAgICB2YXIgYjAxID0gYlsxXTtcbiAgICB2YXIgYjAyID0gYlsyXTtcbiAgICB2YXIgYjEwID0gYlszXTtcbiAgICB2YXIgYjExID0gYls0XTtcbiAgICB2YXIgYjEyID0gYls1XTtcbiAgICB2YXIgYjIwID0gYls2XTtcbiAgICB2YXIgYjIxID0gYls3XTtcbiAgICB2YXIgYjIyID0gYls4XTtcbiAgICBvdXRbMF0gPSBiMDAgKiBhMDAgKyBiMDEgKiBhMTAgKyBiMDIgKiBhMjA7XG4gICAgb3V0WzFdID0gYjAwICogYTAxICsgYjAxICogYTExICsgYjAyICogYTIxO1xuICAgIG91dFsyXSA9IGIwMCAqIGEwMiArIGIwMSAqIGExMiArIGIwMiAqIGEyMjtcbiAgICBvdXRbM10gPSBiMTAgKiBhMDAgKyBiMTEgKiBhMTAgKyBiMTIgKiBhMjA7XG4gICAgb3V0WzRdID0gYjEwICogYTAxICsgYjExICogYTExICsgYjEyICogYTIxO1xuICAgIG91dFs1XSA9IGIxMCAqIGEwMiArIGIxMSAqIGExMiArIGIxMiAqIGEyMjtcbiAgICBvdXRbNl0gPSBiMjAgKiBhMDAgKyBiMjEgKiBhMTAgKyBiMjIgKiBhMjA7XG4gICAgb3V0WzddID0gYjIwICogYTAxICsgYjIxICogYTExICsgYjIyICogYTIxO1xuICAgIG91dFs4XSA9IGIyMCAqIGEwMiArIGIyMSAqIGExMiArIGIyMiAqIGEyMjtcbiAgICByZXR1cm4gb3V0O1xufVxuLyoqXG4gKiAz6Zi255+p6Zi15ZCMMumYtuWQkemHj+ebuOS5mFxuICogQHBhcmFtIHtudW1iZXJbXX0gbSDnn6npmLVcbiAqIEBwYXJhbSB7bnVtYmVyW119IHYg5LqM6Zi25ZCR6YePXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtdWx0aXBseVZlYzIobSwgdikge1xuICAgIHZhciBvdXQgPSBbXTtcbiAgICB2YXIgeCA9IHZbMF07XG4gICAgdmFyIHkgPSB2WzFdO1xuICAgIG91dFswXSA9IG1bMF0gKiB4ICsgbVszXSAqIHkgKyBtWzZdO1xuICAgIG91dFsxXSA9IG1bMV0gKiB4ICsgbVs0XSAqIHkgKyBtWzddO1xuICAgIHJldHVybiBvdXQ7XG59XG4vKipcbiAqIOefqemYteeahOmAhlxuICogQHBhcmFtIHtudW1iZXJbXX0gYSDnn6npmLVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGludmVydChhKSB7XG4gICAgdmFyIG91dCA9IFtdO1xuICAgIHZhciBhMDAgPSBhWzBdO1xuICAgIHZhciBhMDEgPSBhWzFdO1xuICAgIHZhciBhMDIgPSBhWzJdO1xuICAgIHZhciBhMTAgPSBhWzNdO1xuICAgIHZhciBhMTEgPSBhWzRdO1xuICAgIHZhciBhMTIgPSBhWzVdO1xuICAgIHZhciBhMjAgPSBhWzZdO1xuICAgIHZhciBhMjEgPSBhWzddO1xuICAgIHZhciBhMjIgPSBhWzhdO1xuICAgIHZhciBiMDEgPSBhMjIgKiBhMTEgLSBhMTIgKiBhMjE7XG4gICAgdmFyIGIxMSA9IC1hMjIgKiBhMTAgKyBhMTIgKiBhMjA7XG4gICAgdmFyIGIyMSA9IGEyMSAqIGExMCAtIGExMSAqIGEyMDtcbiAgICAvLyBDYWxjdWxhdGUgdGhlIGRldGVybWluYW50XG4gICAgdmFyIGRldCA9IGEwMCAqIGIwMSArIGEwMSAqIGIxMSArIGEwMiAqIGIyMTtcbiAgICBpZiAoIWRldCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZGV0ID0gMS4wIC8gZGV0O1xuICAgIG91dFswXSA9IGIwMSAqIGRldDtcbiAgICBvdXRbMV0gPSAoLWEyMiAqIGEwMSArIGEwMiAqIGEyMSkgKiBkZXQ7XG4gICAgb3V0WzJdID0gKGExMiAqIGEwMSAtIGEwMiAqIGExMSkgKiBkZXQ7XG4gICAgb3V0WzNdID0gYjExICogZGV0O1xuICAgIG91dFs0XSA9IChhMjIgKiBhMDAgLSBhMDIgKiBhMjApICogZGV0O1xuICAgIG91dFs1XSA9ICgtYTEyICogYTAwICsgYTAyICogYTEwKSAqIGRldDtcbiAgICBvdXRbNl0gPSBiMjEgKiBkZXQ7XG4gICAgb3V0WzddID0gKC1hMjEgKiBhMDAgKyBhMDEgKiBhMjApICogZGV0O1xuICAgIG91dFs4XSA9IChhMTEgKiBhMDAgLSBhMDEgKiBhMTApICogZGV0O1xuICAgIHJldHVybiBvdXQ7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1tYXRyaXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/matrix.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/offscreen.js":
/*!*****************************************************************************!*\
!*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/offscreen.js ***!
\*****************************************************************************/
/*! exports provided: getOffScreenContext */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getOffScreenContext\", function() { return getOffScreenContext; });\n// 全局设置一个唯一离屏的 ctx,用于计算 isPointInPath\nvar offScreenCtx = null;\nfunction getOffScreenContext() {\n if (!offScreenCtx) {\n var canvas = document.createElement('canvas');\n canvas.width = 1;\n canvas.height = 1;\n offScreenCtx = canvas.getContext('2d');\n }\n return offScreenCtx;\n}\n//# sourceMappingURL=offscreen.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL3V0aWwvb2Zmc2NyZWVuLmpzP2FmZGQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1iYXNlQDAuNS45QEBhbnR2L2ctYmFzZS9lc20vdXRpbC9vZmZzY3JlZW4uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyDlhajlsYDorr7nva7kuIDkuKrllK/kuIDnprvlsY/nmoQgY3R477yM55So5LqO6K6h566XIGlzUG9pbnRJblBhdGhcbnZhciBvZmZTY3JlZW5DdHggPSBudWxsO1xuZXhwb3J0IGZ1bmN0aW9uIGdldE9mZlNjcmVlbkNvbnRleHQoKSB7XG4gICAgaWYgKCFvZmZTY3JlZW5DdHgpIHtcbiAgICAgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgICBjYW52YXMud2lkdGggPSAxO1xuICAgICAgICBjYW52YXMuaGVpZ2h0ID0gMTtcbiAgICAgICAgb2ZmU2NyZWVuQ3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgfVxuICAgIHJldHVybiBvZmZTY3JlZW5DdHg7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1vZmZzY3JlZW4uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/offscreen.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/path.js":
/*!************************************************************************!*\
!*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/path.js ***!
\************************************************************************/
/*! exports provided: catmullRomToBezier, fillPath, fillPathByDiff, formatPath, intersection, parsePathArray, parsePathString, pathToAbsolute, pathToCurve, rectPath */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"catmullRomToBezier\", function() { return catmullRomToBezier; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fillPath\", function() { return fillPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fillPathByDiff\", function() { return fillPathByDiff; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatPath\", function() { return formatPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"intersection\", function() { return intersection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parsePathArray\", function() { return parsePathArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parsePathString\", function() { return parsePathString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathToAbsolute\", function() { return pathToAbsolute; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathToCurve\", function() { return pathToCurve; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rectPath\", function() { return rectPath; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\nvar SPACES = '\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029';\nvar PATH_COMMAND = new RegExp(\"([a-z])[\" + SPACES + \",]*((-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?[\" + SPACES + \"]*,?[\" + SPACES + \"]*)+)\", 'ig');\nvar PATH_VALUES = new RegExp(\"(-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?)[\" + SPACES + \"]*,?[\" + SPACES + \"]*\", 'ig');\n// Parse given path string into an array of arrays of path segments\nvar parsePathString = function (pathString) {\n if (!pathString) {\n return null;\n }\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(pathString)) {\n return pathString;\n }\n var paramCounts = {\n a: 7,\n c: 6,\n o: 2,\n h: 1,\n l: 2,\n m: 2,\n r: 4,\n q: 4,\n s: 4,\n t: 2,\n v: 1,\n u: 3,\n z: 0,\n };\n var data = [];\n String(pathString).replace(PATH_COMMAND, function (a, b, c) {\n var params = [];\n var name = b.toLowerCase();\n c.replace(PATH_VALUES, function (a, b) {\n b && params.push(+b);\n });\n if (name === 'm' && params.length > 2) {\n data.push([b].concat(params.splice(0, 2)));\n name = 'l';\n b = b === 'm' ? 'l' : 'L';\n }\n if (name === 'o' && params.length === 1) {\n data.push([b, params[0]]);\n }\n if (name === 'r') {\n data.push([b].concat(params));\n }\n else {\n while (params.length >= paramCounts[name]) {\n data.push([b].concat(params.splice(0, paramCounts[name])));\n if (!paramCounts[name]) {\n break;\n }\n }\n }\n return pathString;\n });\n return data;\n};\n// http://schepers.cc/getting-to-the-point\nvar catmullRomToBezier = function (crp, z) {\n var d = [];\n // @ts-ignore\n for (var i = 0, iLen = crp.length; iLen - 2 * !z > i; i += 2) {\n var p = [\n {\n x: +crp[i - 2],\n y: +crp[i - 1],\n },\n {\n x: +crp[i],\n y: +crp[i + 1],\n },\n {\n x: +crp[i + 2],\n y: +crp[i + 3],\n },\n {\n x: +crp[i + 4],\n y: +crp[i + 5],\n },\n ];\n if (z) {\n if (!i) {\n p[0] = {\n x: +crp[iLen - 2],\n y: +crp[iLen - 1],\n };\n }\n else if (iLen - 4 === i) {\n p[3] = {\n x: +crp[0],\n y: +crp[1],\n };\n }\n else if (iLen - 2 === i) {\n p[2] = {\n x: +crp[0],\n y: +crp[1],\n };\n p[3] = {\n x: +crp[2],\n y: +crp[3],\n };\n }\n }\n else {\n if (iLen - 4 === i) {\n p[3] = p[2];\n }\n else if (!i) {\n p[0] = {\n x: +crp[i],\n y: +crp[i + 1],\n };\n }\n }\n d.push([\n 'C',\n (-p[0].x + 6 * p[1].x + p[2].x) / 6,\n (-p[0].y + 6 * p[1].y + p[2].y) / 6,\n (p[1].x + 6 * p[2].x - p[3].x) / 6,\n (p[1].y + 6 * p[2].y - p[3].y) / 6,\n p[2].x,\n p[2].y,\n ]);\n }\n return d;\n};\nvar ellipsePath = function (x, y, rx, ry, a) {\n var res = [];\n if (a === null && ry === null) {\n ry = rx;\n }\n x = +x;\n y = +y;\n rx = +rx;\n ry = +ry;\n if (a !== null) {\n var rad = Math.PI / 180;\n var x1 = x + rx * Math.cos(-ry * rad);\n var x2 = x + rx * Math.cos(-a * rad);\n var y1 = y + rx * Math.sin(-ry * rad);\n var y2 = y + rx * Math.sin(-a * rad);\n res = [\n ['M', x1, y1],\n ['A', rx, rx, 0, +(a - ry > 180), 0, x2, y2],\n ];\n }\n else {\n res = [['M', x, y], ['m', 0, -ry], ['a', rx, ry, 0, 1, 1, 0, 2 * ry], ['a', rx, ry, 0, 1, 1, 0, -2 * ry], ['z']];\n }\n return res;\n};\nvar pathToAbsolute = function (pathArray) {\n pathArray = parsePathString(pathArray);\n if (!pathArray || !pathArray.length) {\n return [['M', 0, 0]];\n }\n var res = [];\n var x = 0;\n var y = 0;\n var mx = 0;\n var my = 0;\n var start = 0;\n var pa0;\n var dots;\n if (pathArray[0][0] === 'M') {\n x = +pathArray[0][1];\n y = +pathArray[0][2];\n mx = x;\n my = y;\n start++;\n res[0] = ['M', x, y];\n }\n var crz = pathArray.length === 3 &&\n pathArray[0][0] === 'M' &&\n pathArray[1][0].toUpperCase() === 'R' &&\n pathArray[2][0].toUpperCase() === 'Z';\n for (var r = void 0, pa = void 0, i = start, ii = pathArray.length; i < ii; i++) {\n res.push((r = []));\n pa = pathArray[i];\n pa0 = pa[0];\n if (pa0 !== pa0.toUpperCase()) {\n r[0] = pa0.toUpperCase();\n switch (r[0]) {\n case 'A':\n r[1] = pa[1];\n r[2] = pa[2];\n r[3] = pa[3];\n r[4] = pa[4];\n r[5] = pa[5];\n r[6] = +pa[6] + x;\n r[7] = +pa[7] + y;\n break;\n case 'V':\n r[1] = +pa[1] + y;\n break;\n case 'H':\n r[1] = +pa[1] + x;\n break;\n case 'R':\n dots = [x, y].concat(pa.slice(1));\n for (var j = 2, jj = dots.length; j < jj; j++) {\n dots[j] = +dots[j] + x;\n dots[++j] = +dots[j] + y;\n }\n res.pop();\n res = res.concat(catmullRomToBezier(dots, crz));\n break;\n case 'O':\n res.pop();\n dots = ellipsePath(x, y, pa[1], pa[2]);\n dots.push(dots[0]);\n res = res.concat(dots);\n break;\n case 'U':\n res.pop();\n res = res.concat(ellipsePath(x, y, pa[1], pa[2], pa[3]));\n r = ['U'].concat(res[res.length - 1].slice(-2));\n break;\n case 'M':\n mx = +pa[1] + x;\n my = +pa[2] + y;\n break; // for lint\n default:\n for (var j = 1, jj = pa.length; j < jj; j++) {\n r[j] = +pa[j] + (j % 2 ? x : y);\n }\n }\n }\n else if (pa0 === 'R') {\n dots = [x, y].concat(pa.slice(1));\n res.pop();\n res = res.concat(catmullRomToBezier(dots, crz));\n r = ['R'].concat(pa.slice(-2));\n }\n else if (pa0 === 'O') {\n res.pop();\n dots = ellipsePath(x, y, pa[1], pa[2]);\n dots.push(dots[0]);\n res = res.concat(dots);\n }\n else if (pa0 === 'U') {\n res.pop();\n res = res.concat(ellipsePath(x, y, pa[1], pa[2], pa[3]));\n r = ['U'].concat(res[res.length - 1].slice(-2));\n }\n else {\n for (var k = 0, kk = pa.length; k < kk; k++) {\n r[k] = pa[k];\n }\n }\n pa0 = pa0.toUpperCase();\n if (pa0 !== 'O') {\n switch (r[0]) {\n case 'Z':\n x = +mx;\n y = +my;\n break;\n case 'H':\n x = r[1];\n break;\n case 'V':\n y = r[1];\n break;\n case 'M':\n mx = r[r.length - 2];\n my = r[r.length - 1];\n break; // for lint\n default:\n x = r[r.length - 2];\n y = r[r.length - 1];\n }\n }\n }\n return res;\n};\nvar l2c = function (x1, y1, x2, y2) {\n return [x1, y1, x2, y2, x2, y2];\n};\nvar q2c = function (x1, y1, ax, ay, x2, y2) {\n var _13 = 1 / 3;\n var _23 = 2 / 3;\n return [_13 * x1 + _23 * ax, _13 * y1 + _23 * ay, _13 * x2 + _23 * ax, _13 * y2 + _23 * ay, x2, y2];\n};\nvar a2c = function (x1, y1, rx, ry, angle, large_arc_flag, sweep_flag, x2, y2, recursive) {\n // for more information of where this math came from visit:\n // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n if (rx === ry) {\n rx += 1;\n }\n var _120 = (Math.PI * 120) / 180;\n var rad = (Math.PI / 180) * (+angle || 0);\n var res = [];\n var xy;\n var f1;\n var f2;\n var cx;\n var cy;\n var rotate = function (x, y, rad) {\n var X = x * Math.cos(rad) - y * Math.sin(rad);\n var Y = x * Math.sin(rad) + y * Math.cos(rad);\n return {\n x: X,\n y: Y,\n };\n };\n if (!recursive) {\n xy = rotate(x1, y1, -rad);\n x1 = xy.x;\n y1 = xy.y;\n xy = rotate(x2, y2, -rad);\n x2 = xy.x;\n y2 = xy.y;\n if (x1 === x2 && y1 === y2) {\n // 若弧的起始点和终点重叠则错开一点\n x2 += 1;\n y2 += 1;\n }\n // const cos = Math.cos(Math.PI / 180 * angle);\n // const sin = Math.sin(Math.PI / 180 * angle);\n var x = (x1 - x2) / 2;\n var y = (y1 - y2) / 2;\n var h = (x * x) / (rx * rx) + (y * y) / (ry * ry);\n if (h > 1) {\n h = Math.sqrt(h);\n rx = h * rx;\n ry = h * ry;\n }\n var rx2 = rx * rx;\n var ry2 = ry * ry;\n var k = (large_arc_flag === sweep_flag ? -1 : 1) *\n Math.sqrt(Math.abs((rx2 * ry2 - rx2 * y * y - ry2 * x * x) / (rx2 * y * y + ry2 * x * x)));\n cx = (k * rx * y) / ry + (x1 + x2) / 2;\n cy = (k * -ry * x) / rx + (y1 + y2) / 2;\n // @ts-ignore\n f1 = Math.asin(((y1 - cy) / ry).toFixed(9));\n // @ts-ignore\n f2 = Math.asin(((y2 - cy) / ry).toFixed(9));\n f1 = x1 < cx ? Math.PI - f1 : f1;\n f2 = x2 < cx ? Math.PI - f2 : f2;\n f1 < 0 && (f1 = Math.PI * 2 + f1);\n f2 < 0 && (f2 = Math.PI * 2 + f2);\n if (sweep_flag && f1 > f2) {\n f1 = f1 - Math.PI * 2;\n }\n if (!sweep_flag && f2 > f1) {\n f2 = f2 - Math.PI * 2;\n }\n }\n else {\n f1 = recursive[0];\n f2 = recursive[1];\n cx = recursive[2];\n cy = recursive[3];\n }\n var df = f2 - f1;\n if (Math.abs(df) > _120) {\n var f2old = f2;\n var x2old = x2;\n var y2old = y2;\n f2 = f1 + _120 * (sweep_flag && f2 > f1 ? 1 : -1);\n x2 = cx + rx * Math.cos(f2);\n y2 = cy + ry * Math.sin(f2);\n res = a2c(x2, y2, rx, ry, angle, 0, sweep_flag, x2old, y2old, [f2, f2old, cx, cy]);\n }\n df = f2 - f1;\n var c1 = Math.cos(f1);\n var s1 = Math.sin(f1);\n var c2 = Math.cos(f2);\n var s2 = Math.sin(f2);\n var t = Math.tan(df / 4);\n var hx = (4 / 3) * rx * t;\n var hy = (4 / 3) * ry * t;\n var m1 = [x1, y1];\n var m2 = [x1 + hx * s1, y1 - hy * c1];\n var m3 = [x2 + hx * s2, y2 - hy * c2];\n var m4 = [x2, y2];\n m2[0] = 2 * m1[0] - m2[0];\n m2[1] = 2 * m1[1] - m2[1];\n if (recursive) {\n return [m2, m3, m4].concat(res);\n }\n res = [m2, m3, m4].concat(res).join().split(',');\n var newres = [];\n for (var i = 0, ii = res.length; i < ii; i++) {\n newres[i] = i % 2 ? rotate(res[i - 1], res[i], rad).y : rotate(res[i], res[i + 1], rad).x;\n }\n return newres;\n};\nvar pathToCurve = function (path, path2) {\n var p = pathToAbsolute(path);\n var p2 = path2 && pathToAbsolute(path2);\n var attrs = {\n x: 0,\n y: 0,\n bx: 0,\n by: 0,\n X: 0,\n Y: 0,\n qx: null,\n qy: null,\n };\n var attrs2 = {\n x: 0,\n y: 0,\n bx: 0,\n by: 0,\n X: 0,\n Y: 0,\n qx: null,\n qy: null,\n };\n var pcoms1 = []; // path commands of original path p\n var pcoms2 = []; // path commands of original path p2\n var pfirst = ''; // temporary holder for original path command\n var pcom = ''; // holder for previous path command of original path\n var ii;\n var processPath = function (path, d, pcom) {\n var nx;\n var ny;\n if (!path) {\n return ['C', d.x, d.y, d.x, d.y, d.x, d.y];\n }\n !(path[0] in\n {\n T: 1,\n Q: 1,\n }) && (d.qx = d.qy = null);\n switch (path[0]) {\n case 'M':\n d.X = path[1];\n d.Y = path[2];\n break;\n case 'A':\n path = ['C'].concat(a2c.apply(0, [d.x, d.y].concat(path.slice(1))));\n break;\n case 'S':\n if (pcom === 'C' || pcom === 'S') {\n // In \"S\" case we have to take into account, if the previous command is C/S.\n nx = d.x * 2 - d.bx; // And reflect the previous\n ny = d.y * 2 - d.by; // command's control point relative to the current point.\n }\n else {\n // or some else or nothing\n nx = d.x;\n ny = d.y;\n }\n path = ['C', nx, ny].concat(path.slice(1));\n break;\n case 'T':\n if (pcom === 'Q' || pcom === 'T') {\n // In \"T\" case we have to take into account, if the previous command is Q/T.\n d.qx = d.x * 2 - d.qx; // And make a reflection similar\n d.qy = d.y * 2 - d.qy; // to case \"S\".\n }\n else {\n // or something else or nothing\n d.qx = d.x;\n d.qy = d.y;\n }\n path = ['C'].concat(q2c(d.x, d.y, d.qx, d.qy, path[1], path[2]));\n break;\n case 'Q':\n d.qx = path[1];\n d.qy = path[2];\n path = ['C'].concat(q2c(d.x, d.y, path[1], path[2], path[3], path[4]));\n break;\n case 'L':\n path = ['C'].concat(l2c(d.x, d.y, path[1], path[2]));\n break;\n case 'H':\n path = ['C'].concat(l2c(d.x, d.y, path[1], d.y));\n break;\n case 'V':\n path = ['C'].concat(l2c(d.x, d.y, d.x, path[1]));\n break;\n case 'Z':\n path = ['C'].concat(l2c(d.x, d.y, d.X, d.Y));\n break;\n default:\n break;\n }\n return path;\n };\n var fixArc = function (pp, i) {\n if (pp[i].length > 7) {\n pp[i].shift();\n var pi = pp[i];\n while (pi.length) {\n pcoms1[i] = 'A'; // if created multiple C:s, their original seg is saved\n p2 && (pcoms2[i] = 'A'); // the same as above\n pp.splice(i++, 0, ['C'].concat(pi.splice(0, 6)));\n }\n pp.splice(i, 1);\n ii = Math.max(p.length, (p2 && p2.length) || 0);\n }\n };\n var fixM = function (path1, path2, a1, a2, i) {\n if (path1 && path2 && path1[i][0] === 'M' && path2[i][0] !== 'M') {\n path2.splice(i, 0, ['M', a2.x, a2.y]);\n a1.bx = 0;\n a1.by = 0;\n a1.x = path1[i][1];\n a1.y = path1[i][2];\n ii = Math.max(p.length, (p2 && p2.length) || 0);\n }\n };\n ii = Math.max(p.length, (p2 && p2.length) || 0);\n for (var i = 0; i < ii; i++) {\n p[i] && (pfirst = p[i][0]); // save current path command\n if (pfirst !== 'C') {\n // C is not saved yet, because it may be result of conversion\n pcoms1[i] = pfirst; // Save current path command\n i && (pcom = pcoms1[i - 1]); // Get previous path command pcom\n }\n p[i] = processPath(p[i], attrs, pcom); // Previous path command is inputted to processPath\n if (pcoms1[i] !== 'A' && pfirst === 'C')\n pcoms1[i] = 'C'; // A is the only command\n // which may produce multiple C:s\n // so we have to make sure that C is also C in original path\n fixArc(p, i); // fixArc adds also the right amount of A:s to pcoms1\n if (p2) {\n // the same procedures is done to p2\n p2[i] && (pfirst = p2[i][0]);\n if (pfirst !== 'C') {\n pcoms2[i] = pfirst;\n i && (pcom = pcoms2[i - 1]);\n }\n p2[i] = processPath(p2[i], attrs2, pcom);\n if (pcoms2[i] !== 'A' && pfirst === 'C') {\n pcoms2[i] = 'C';\n }\n fixArc(p2, i);\n }\n fixM(p, p2, attrs, attrs2, i);\n fixM(p2, p, attrs2, attrs, i);\n var seg = p[i];\n var seg2 = p2 && p2[i];\n var seglen = seg.length;\n var seg2len = p2 && seg2.length;\n attrs.x = seg[seglen - 2];\n attrs.y = seg[seglen - 1];\n attrs.bx = parseFloat(seg[seglen - 4]) || attrs.x;\n attrs.by = parseFloat(seg[seglen - 3]) || attrs.y;\n attrs2.bx = p2 && (parseFloat(seg2[seg2len - 4]) || attrs2.x);\n attrs2.by = p2 && (parseFloat(seg2[seg2len - 3]) || attrs2.y);\n attrs2.x = p2 && seg2[seg2len - 2];\n attrs2.y = p2 && seg2[seg2len - 1];\n }\n return p2 ? [p, p2] : p;\n};\nvar p2s = /,?([a-z]),?/gi;\nvar parsePathArray = function (path) {\n return path.join(',').replace(p2s, '$1');\n};\nvar base3 = function (t, p1, p2, p3, p4) {\n var t1 = -3 * p1 + 9 * p2 - 9 * p3 + 3 * p4;\n var t2 = t * t1 + 6 * p1 - 12 * p2 + 6 * p3;\n return t * t2 - 3 * p1 + 3 * p2;\n};\nvar bezlen = function (x1, y1, x2, y2, x3, y3, x4, y4, z) {\n if (z === null) {\n z = 1;\n }\n z = z > 1 ? 1 : z < 0 ? 0 : z;\n var z2 = z / 2;\n var n = 12;\n var Tvalues = [\n -0.1252,\n 0.1252,\n -0.3678,\n 0.3678,\n -0.5873,\n 0.5873,\n -0.7699,\n 0.7699,\n -0.9041,\n 0.9041,\n -0.9816,\n 0.9816,\n ];\n var Cvalues = [0.2491, 0.2491, 0.2335, 0.2335, 0.2032, 0.2032, 0.1601, 0.1601, 0.1069, 0.1069, 0.0472, 0.0472];\n var sum = 0;\n for (var i = 0; i < n; i++) {\n var ct = z2 * Tvalues[i] + z2;\n var xbase = base3(ct, x1, x2, x3, x4);\n var ybase = base3(ct, y1, y2, y3, y4);\n var comb = xbase * xbase + ybase * ybase;\n sum += Cvalues[i] * Math.sqrt(comb);\n }\n return z2 * sum;\n};\nvar curveDim = function (x0, y0, x1, y1, x2, y2, x3, y3) {\n var tvalues = [];\n var bounds = [[], []];\n var a;\n var b;\n var c;\n var t;\n for (var i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n }\n else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (t > 0 && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n var b2ac = b * b - 4 * c * a;\n var sqrtb2ac = Math.sqrt(b2ac);\n if (b2ac < 0) {\n continue;\n }\n var t1 = (-b + sqrtb2ac) / (2 * a);\n if (t1 > 0 && t1 < 1) {\n tvalues.push(t1);\n }\n var t2 = (-b - sqrtb2ac) / (2 * a);\n if (t2 > 0 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n var j = tvalues.length;\n var jlen = j;\n var mt;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] = mt * mt * mt * x0 + 3 * mt * mt * t * x1 + 3 * mt * t * t * x2 + t * t * t * x3;\n bounds[1][j] = mt * mt * mt * y0 + 3 * mt * mt * t * y1 + 3 * mt * t * t * y2 + t * t * t * y3;\n }\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n return {\n min: {\n x: Math.min.apply(0, bounds[0]),\n y: Math.min.apply(0, bounds[1]),\n },\n max: {\n x: Math.max.apply(0, bounds[0]),\n y: Math.max.apply(0, bounds[1]),\n },\n };\n};\nvar intersect = function (x1, y1, x2, y2, x3, y3, x4, y4) {\n if (Math.max(x1, x2) < Math.min(x3, x4) ||\n Math.min(x1, x2) > Math.max(x3, x4) ||\n Math.max(y1, y2) < Math.min(y3, y4) ||\n Math.min(y1, y2) > Math.max(y3, y4)) {\n return;\n }\n var nx = (x1 * y2 - y1 * x2) * (x3 - x4) - (x1 - x2) * (x3 * y4 - y3 * x4);\n var ny = (x1 * y2 - y1 * x2) * (y3 - y4) - (y1 - y2) * (x3 * y4 - y3 * x4);\n var denominator = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4);\n if (!denominator) {\n return;\n }\n var px = nx / denominator;\n var py = ny / denominator;\n var px2 = +px.toFixed(2);\n var py2 = +py.toFixed(2);\n if (px2 < +Math.min(x1, x2).toFixed(2) ||\n px2 > +Math.max(x1, x2).toFixed(2) ||\n px2 < +Math.min(x3, x4).toFixed(2) ||\n px2 > +Math.max(x3, x4).toFixed(2) ||\n py2 < +Math.min(y1, y2).toFixed(2) ||\n py2 > +Math.max(y1, y2).toFixed(2) ||\n py2 < +Math.min(y3, y4).toFixed(2) ||\n py2 > +Math.max(y3, y4).toFixed(2)) {\n return;\n }\n return {\n x: px,\n y: py,\n };\n};\nvar isPointInsideBBox = function (bbox, x, y) {\n return x >= bbox.x && x <= bbox.x + bbox.width && y >= bbox.y && y <= bbox.y + bbox.height;\n};\nvar rectPath = function (x, y, w, h, r) {\n if (r) {\n return [\n ['M', +x + +r, y],\n ['l', w - r * 2, 0],\n ['a', r, r, 0, 0, 1, r, r],\n ['l', 0, h - r * 2],\n ['a', r, r, 0, 0, 1, -r, r],\n ['l', r * 2 - w, 0],\n ['a', r, r, 0, 0, 1, -r, -r],\n ['l', 0, r * 2 - h],\n ['a', r, r, 0, 0, 1, r, -r],\n ['z'],\n ];\n }\n var res = [['M', x, y], ['l', w, 0], ['l', 0, h], ['l', -w, 0], ['z']];\n // @ts-ignore\n res.parsePathArray = parsePathArray;\n return res;\n};\nvar box = function (x, y, width, height) {\n if (x === null) {\n x = y = width = height = 0;\n }\n if (y === null) {\n y = x.y;\n width = x.width;\n height = x.height;\n x = x.x;\n }\n return {\n x: x,\n y: y,\n width: width,\n w: width,\n height: height,\n h: height,\n x2: x + width,\n y2: y + height,\n cx: x + width / 2,\n cy: y + height / 2,\n r1: Math.min(width, height) / 2,\n r2: Math.max(width, height) / 2,\n r0: Math.sqrt(width * width + height * height) / 2,\n path: rectPath(x, y, width, height),\n vb: [x, y, width, height].join(' '),\n };\n};\nvar isBBoxIntersect = function (bbox1, bbox2) {\n bbox1 = box(bbox1);\n bbox2 = box(bbox2);\n return (isPointInsideBBox(bbox2, bbox1.x, bbox1.y) ||\n isPointInsideBBox(bbox2, bbox1.x2, bbox1.y) ||\n isPointInsideBBox(bbox2, bbox1.x, bbox1.y2) ||\n isPointInsideBBox(bbox2, bbox1.x2, bbox1.y2) ||\n isPointInsideBBox(bbox1, bbox2.x, bbox2.y) ||\n isPointInsideBBox(bbox1, bbox2.x2, bbox2.y) ||\n isPointInsideBBox(bbox1, bbox2.x, bbox2.y2) ||\n isPointInsideBBox(bbox1, bbox2.x2, bbox2.y2) ||\n (((bbox1.x < bbox2.x2 && bbox1.x > bbox2.x) || (bbox2.x < bbox1.x2 && bbox2.x > bbox1.x)) &&\n ((bbox1.y < bbox2.y2 && bbox1.y > bbox2.y) || (bbox2.y < bbox1.y2 && bbox2.y > bbox1.y))));\n};\nvar bezierBBox = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y) {\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(p1x)) {\n p1x = [p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y];\n }\n var bbox = curveDim.apply(null, p1x);\n return box(bbox.min.x, bbox.min.y, bbox.max.x - bbox.min.x, bbox.max.y - bbox.min.y);\n};\nvar findDotsAtSegment = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t) {\n var t1 = 1 - t;\n var t13 = Math.pow(t1, 3);\n var t12 = Math.pow(t1, 2);\n var t2 = t * t;\n var t3 = t2 * t;\n var x = t13 * p1x + t12 * 3 * t * c1x + t1 * 3 * t * t * c2x + t3 * p2x;\n var y = t13 * p1y + t12 * 3 * t * c1y + t1 * 3 * t * t * c2y + t3 * p2y;\n var mx = p1x + 2 * t * (c1x - p1x) + t2 * (c2x - 2 * c1x + p1x);\n var my = p1y + 2 * t * (c1y - p1y) + t2 * (c2y - 2 * c1y + p1y);\n var nx = c1x + 2 * t * (c2x - c1x) + t2 * (p2x - 2 * c2x + c1x);\n var ny = c1y + 2 * t * (c2y - c1y) + t2 * (p2y - 2 * c2y + c1y);\n var ax = t1 * p1x + t * c1x;\n var ay = t1 * p1y + t * c1y;\n var cx = t1 * c2x + t * p2x;\n var cy = t1 * c2y + t * p2y;\n var alpha = 90 - (Math.atan2(mx - nx, my - ny) * 180) / Math.PI;\n // (mx > nx || my < ny) && (alpha += 180);\n return {\n x: x,\n y: y,\n m: {\n x: mx,\n y: my,\n },\n n: {\n x: nx,\n y: ny,\n },\n start: {\n x: ax,\n y: ay,\n },\n end: {\n x: cx,\n y: cy,\n },\n alpha: alpha,\n };\n};\nvar interHelper = function (bez1, bez2, justCount) {\n var bbox1 = bezierBBox(bez1);\n var bbox2 = bezierBBox(bez2);\n if (!isBBoxIntersect(bbox1, bbox2)) {\n return justCount ? 0 : [];\n }\n var l1 = bezlen.apply(0, bez1);\n var l2 = bezlen.apply(0, bez2);\n var n1 = ~~(l1 / 8);\n var n2 = ~~(l2 / 8);\n var dots1 = [];\n var dots2 = [];\n var xy = {};\n var res = justCount ? 0 : [];\n for (var i = 0; i < n1 + 1; i++) {\n var d = findDotsAtSegment.apply(0, bez1.concat(i / n1));\n dots1.push({\n x: d.x,\n y: d.y,\n t: i / n1,\n });\n }\n for (var i = 0; i < n2 + 1; i++) {\n var d = findDotsAtSegment.apply(0, bez2.concat(i / n2));\n dots2.push({\n x: d.x,\n y: d.y,\n t: i / n2,\n });\n }\n for (var i = 0; i < n1; i++) {\n for (var j = 0; j < n2; j++) {\n var di = dots1[i];\n var di1 = dots1[i + 1];\n var dj = dots2[j];\n var dj1 = dots2[j + 1];\n var ci = Math.abs(di1.x - di.x) < 0.001 ? 'y' : 'x';\n var cj = Math.abs(dj1.x - dj.x) < 0.001 ? 'y' : 'x';\n var is = intersect(di.x, di.y, di1.x, di1.y, dj.x, dj.y, dj1.x, dj1.y);\n if (is) {\n if (xy[is.x.toFixed(4)] === is.y.toFixed(4)) {\n continue;\n }\n xy[is.x.toFixed(4)] = is.y.toFixed(4);\n var t1 = di.t + Math.abs((is[ci] - di[ci]) / (di1[ci] - di[ci])) * (di1.t - di.t);\n var t2 = dj.t + Math.abs((is[cj] - dj[cj]) / (dj1[cj] - dj[cj])) * (dj1.t - dj.t);\n if (t1 >= 0 && t1 <= 1 && t2 >= 0 && t2 <= 1) {\n if (justCount) {\n // @ts-ignore\n res += 1;\n }\n else {\n // @ts-ignore\n res.push({\n x: is.x,\n y: is.y,\n t1: t1,\n t2: t2,\n });\n }\n }\n }\n }\n }\n return res;\n};\nvar interPathHelper = function (path1, path2, justCount) {\n path1 = pathToCurve(path1);\n path2 = pathToCurve(path2);\n var x1;\n var y1;\n var x2;\n var y2;\n var x1m;\n var y1m;\n var x2m;\n var y2m;\n var bez1;\n var bez2;\n var res = justCount ? 0 : [];\n for (var i = 0, ii = path1.length; i < ii; i++) {\n var pi = path1[i];\n if (pi[0] === 'M') {\n x1 = x1m = pi[1];\n y1 = y1m = pi[2];\n }\n else {\n if (pi[0] === 'C') {\n bez1 = [x1, y1].concat(pi.slice(1));\n x1 = bez1[6];\n y1 = bez1[7];\n }\n else {\n bez1 = [x1, y1, x1, y1, x1m, y1m, x1m, y1m];\n x1 = x1m;\n y1 = y1m;\n }\n for (var j = 0, jj = path2.length; j < jj; j++) {\n var pj = path2[j];\n if (pj[0] === 'M') {\n x2 = x2m = pj[1];\n y2 = y2m = pj[2];\n }\n else {\n if (pj[0] === 'C') {\n bez2 = [x2, y2].concat(pj.slice(1));\n x2 = bez2[6];\n y2 = bez2[7];\n }\n else {\n bez2 = [x2, y2, x2, y2, x2m, y2m, x2m, y2m];\n x2 = x2m;\n y2 = y2m;\n }\n var intr = interHelper(bez1, bez2, justCount);\n if (justCount) {\n // @ts-ignore\n res += intr;\n }\n else {\n // @ts-ignore\n for (var k = 0, kk = intr.length; k < kk; k++) {\n intr[k].segment1 = i;\n intr[k].segment2 = j;\n intr[k].bez1 = bez1;\n intr[k].bez2 = bez2;\n }\n // @ts-ignore\n res = res.concat(intr);\n }\n }\n }\n }\n }\n return res;\n};\nvar intersection = function (path1, path2) {\n return interPathHelper(path1, path2);\n};\nfunction decasteljau(points, t) {\n var left = [];\n var right = [];\n function recurse(points, t) {\n if (points.length === 1) {\n left.push(points[0]);\n right.push(points[0]);\n }\n else {\n var middlePoints = [];\n for (var i = 0; i < points.length - 1; i++) {\n if (i === 0) {\n left.push(points[0]);\n }\n if (i === points.length - 2) {\n right.push(points[i + 1]);\n }\n middlePoints[i] = [\n (1 - t) * points[i][0] + t * points[i + 1][0],\n (1 - t) * points[i][1] + t * points[i + 1][1],\n ];\n }\n recurse(middlePoints, t);\n }\n }\n if (points.length) {\n recurse(points, t);\n }\n return { left: left, right: right.reverse() };\n}\nfunction splitCurve(start, end, count) {\n var points = [[start[1], start[2]]];\n count = count || 2;\n var segments = [];\n if (end[0] === 'A') {\n points.push(end[6]);\n points.push(end[7]);\n }\n else if (end[0] === 'C') {\n points.push([end[1], end[2]]);\n points.push([end[3], end[4]]);\n points.push([end[5], end[6]]);\n }\n else if (end[0] === 'S' || end[0] === 'Q') {\n points.push([end[1], end[2]]);\n points.push([end[3], end[4]]);\n }\n else {\n points.push([end[1], end[2]]);\n }\n var leftSegments = points;\n var t = 1 / count;\n for (var i = 0; i < count - 1; i++) {\n var rt = t / (1 - t * i);\n var split = decasteljau(leftSegments, rt);\n segments.push(split.left);\n leftSegments = split.right;\n }\n segments.push(leftSegments);\n var result = segments.map(function (segment) {\n var cmd = [];\n if (segment.length === 4) {\n cmd.push('C');\n cmd = cmd.concat(segment[2]);\n }\n if (segment.length >= 3) {\n if (segment.length === 3) {\n cmd.push('Q');\n }\n cmd = cmd.concat(segment[1]);\n }\n if (segment.length === 2) {\n cmd.push('L');\n }\n cmd = cmd.concat(segment[segment.length - 1]);\n return cmd;\n });\n return result;\n}\nvar splitSegment = function (start, end, count) {\n if (count === 1) {\n return [[].concat(start)];\n }\n var segments = [];\n if (end[0] === 'L' || end[0] === 'C' || end[0] === 'Q') {\n segments = segments.concat(splitCurve(start, end, count));\n }\n else {\n var temp = [].concat(start);\n if (temp[0] === 'M') {\n temp[0] = 'L';\n }\n for (var i = 0; i <= count - 1; i++) {\n segments.push(temp);\n }\n }\n return segments;\n};\nvar fillPath = function (source, target) {\n if (source.length === 1) {\n return source;\n }\n var sourceLen = source.length - 1;\n var targetLen = target.length - 1;\n var ratio = sourceLen / targetLen;\n var segmentsToFill = [];\n if (source.length === 1 && source[0][0] === 'M') {\n for (var i = 0; i < targetLen - sourceLen; i++) {\n source.push(source[0]);\n }\n return source;\n }\n for (var i = 0; i < targetLen; i++) {\n var index = Math.floor(ratio * i);\n segmentsToFill[index] = (segmentsToFill[index] || 0) + 1;\n }\n var filled = segmentsToFill.reduce(function (filled, count, i) {\n if (i === sourceLen) {\n return filled.concat(source[sourceLen]);\n }\n return filled.concat(splitSegment(source[i], source[i + 1], count));\n }, []);\n filled.unshift(source[0]);\n if (target[targetLen] === 'Z' || target[targetLen] === 'z') {\n filled.push('Z');\n }\n return filled;\n};\nvar isEqual = function (obj1, obj2) {\n if (obj1.length !== obj2.length) {\n return false;\n }\n var result = true;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(obj1, function (item, i) {\n if (item !== obj2[i]) {\n result = false;\n return false;\n }\n });\n return result;\n};\nfunction getMinDiff(del, add, modify) {\n var type = null;\n var min = modify;\n if (add < min) {\n min = add;\n type = 'add';\n }\n if (del < min) {\n min = del;\n type = 'del';\n }\n return {\n type: type,\n min: min,\n };\n}\n/*\n * https://en.wikipedia.org/wiki/Levenshtein_distance\n * 计算两条path的编辑距离\n */\nvar levenshteinDistance = function (source, target) {\n var sourceLen = source.length;\n var targetLen = target.length;\n var sourceSegment;\n var targetSegment;\n var temp = 0;\n if (sourceLen === 0 || targetLen === 0) {\n return null;\n }\n var dist = [];\n for (var i = 0; i <= sourceLen; i++) {\n dist[i] = [];\n dist[i][0] = { min: i };\n }\n for (var j = 0; j <= targetLen; j++) {\n dist[0][j] = { min: j };\n }\n for (var i = 1; i <= sourceLen; i++) {\n sourceSegment = source[i - 1];\n for (var j = 1; j <= targetLen; j++) {\n targetSegment = target[j - 1];\n if (isEqual(sourceSegment, targetSegment)) {\n temp = 0;\n }\n else {\n temp = 1;\n }\n var del = dist[i - 1][j].min + 1;\n var add = dist[i][j - 1].min + 1;\n var modify = dist[i - 1][j - 1].min + temp;\n dist[i][j] = getMinDiff(del, add, modify);\n }\n }\n return dist;\n};\nvar fillPathByDiff = function (source, target) {\n var diffMatrix = levenshteinDistance(source, target);\n var sourceLen = source.length;\n var targetLen = target.length;\n var changes = [];\n var index = 1;\n var minPos = 1;\n // 如果source和target不是完全不相等\n if (diffMatrix[sourceLen][targetLen].min !== sourceLen) {\n // 获取从source到target所需改动\n for (var i = 1; i <= sourceLen; i++) {\n var min = diffMatrix[i][i].min;\n minPos = i;\n for (var j = index; j <= targetLen; j++) {\n if (diffMatrix[i][j].min < min) {\n min = diffMatrix[i][j].min;\n minPos = j;\n }\n }\n index = minPos;\n if (diffMatrix[i][index].type) {\n changes.push({ index: i - 1, type: diffMatrix[i][index].type });\n }\n }\n // 对source进行增删path\n for (var i = changes.length - 1; i >= 0; i--) {\n index = changes[i].index;\n if (changes[i].type === 'add') {\n source.splice(index, 0, [].concat(source[index]));\n }\n else {\n source.splice(index, 1);\n }\n }\n }\n // source尾部补齐\n sourceLen = source.length;\n var diff = targetLen - sourceLen;\n if (sourceLen < targetLen) {\n for (var i = 0; i < diff; i++) {\n if (source[sourceLen - 1][0] === 'z' || source[sourceLen - 1][0] === 'Z') {\n source.splice(sourceLen - 2, 0, source[sourceLen - 2]);\n }\n else {\n source.push(source[sourceLen - 1]);\n }\n sourceLen += 1;\n }\n }\n return source;\n};\n// 将两个点均分成count个点\nfunction _splitPoints(points, former, count) {\n var result = [].concat(points);\n var index;\n var t = 1 / (count + 1);\n var formerEnd = _getSegmentPoints(former)[0];\n for (var i = 1; i <= count; i++) {\n t *= i;\n index = Math.floor(points.length * t);\n if (index === 0) {\n result.unshift([formerEnd[0] * t + points[index][0] * (1 - t), formerEnd[1] * t + points[index][1] * (1 - t)]);\n }\n else {\n result.splice(index, 0, [\n formerEnd[0] * t + points[index][0] * (1 - t),\n formerEnd[1] * t + points[index][1] * (1 - t),\n ]);\n }\n }\n return result;\n}\n/*\n * 抽取pathSegment中的关键点\n * M,L,A,Q,H,V一个端点\n * Q, S抽取一个端点,一个控制点\n * C抽取一个端点,两个控制点\n */\nfunction _getSegmentPoints(segment) {\n var points = [];\n switch (segment[0]) {\n case 'M':\n points.push([segment[1], segment[2]]);\n break;\n case 'L':\n points.push([segment[1], segment[2]]);\n break;\n case 'A':\n points.push([segment[6], segment[7]]);\n break;\n case 'Q':\n points.push([segment[3], segment[4]]);\n points.push([segment[1], segment[2]]);\n break;\n case 'T':\n points.push([segment[1], segment[2]]);\n break;\n case 'C':\n points.push([segment[5], segment[6]]);\n points.push([segment[1], segment[2]]);\n points.push([segment[3], segment[4]]);\n break;\n case 'S':\n points.push([segment[3], segment[4]]);\n points.push([segment[1], segment[2]]);\n break;\n case 'H':\n points.push([segment[1], segment[1]]);\n break;\n case 'V':\n points.push([segment[1], segment[1]]);\n break;\n default:\n }\n return points;\n}\nvar formatPath = function (fromPath, toPath) {\n if (fromPath.length <= 1) {\n return fromPath;\n }\n var points;\n for (var i = 0; i < toPath.length; i++) {\n if (fromPath[i][0] !== toPath[i][0]) {\n // 获取fromPath的pathSegment的端点,根据toPath的指令对其改造\n points = _getSegmentPoints(fromPath[i]);\n switch (toPath[i][0]) {\n case 'M':\n fromPath[i] = ['M'].concat(points[0]);\n break;\n case 'L':\n fromPath[i] = ['L'].concat(points[0]);\n break;\n case 'A':\n fromPath[i] = [].concat(toPath[i]);\n fromPath[i][6] = points[0][0];\n fromPath[i][7] = points[0][1];\n break;\n case 'Q':\n if (points.length < 2) {\n if (i > 0) {\n points = _splitPoints(points, fromPath[i - 1], 1);\n }\n else {\n fromPath[i] = toPath[i];\n break;\n }\n }\n fromPath[i] = ['Q'].concat(points.reduce(function (arr, i) {\n return arr.concat(i);\n }, []));\n break;\n case 'T':\n fromPath[i] = ['T'].concat(points[0]);\n break;\n case 'C':\n if (points.length < 3) {\n if (i > 0) {\n points = _splitPoints(points, fromPath[i - 1], 2);\n }\n else {\n fromPath[i] = toPath[i];\n break;\n }\n }\n fromPath[i] = ['C'].concat(points.reduce(function (arr, i) {\n return arr.concat(i);\n }, []));\n break;\n case 'S':\n if (points.length < 2) {\n if (i > 0) {\n points = _splitPoints(points, fromPath[i - 1], 1);\n }\n else {\n fromPath[i] = toPath[i];\n break;\n }\n }\n fromPath[i] = ['S'].concat(points.reduce(function (arr, i) {\n return arr.concat(i);\n }, []));\n break;\n default:\n fromPath[i] = toPath[i];\n }\n }\n }\n return fromPath;\n};\n\n//# sourceMappingURL=path.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL3V0aWwvcGF0aC5qcz80Zjk4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEyQztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSwwREFBTztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0MsbUJBQW1CO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1RUFBdUUsUUFBUTtBQUMvRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscURBQXFELFFBQVE7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBLG1EQUFtRCxRQUFRO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDLFFBQVE7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxRQUFRO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQixvQkFBb0I7QUFDcEIsb0JBQW9CO0FBQ3BCLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7QUFDeEMsd0NBQXdDO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEM7QUFDMUMsMENBQTBDO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0M7QUFDaEMsd0NBQXdDO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsUUFBUTtBQUMzQixtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBLCtCQUErQjtBQUMvQix3Q0FBd0M7QUFDeEM7QUFDQSw4Q0FBOEM7QUFDOUM7QUFDQSw0QkFBNEI7QUFDNUI7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE9BQU87QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUywwREFBTztBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsWUFBWTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsbUJBQW1CLFlBQVk7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLG1CQUFtQixRQUFRO0FBQzNCLHVCQUF1QixRQUFRO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLFFBQVE7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMsUUFBUTtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseURBQXlELFFBQVE7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLHVCQUF1QjtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixnQkFBZ0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QiwyQkFBMkI7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsZUFBZTtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQSxtQkFBbUIsZ0JBQWdCO0FBQ25DLHNCQUFzQjtBQUN0QjtBQUNBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQSx1QkFBdUIsZ0JBQWdCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGdCQUFnQjtBQUN2QztBQUNBO0FBQ0EsK0JBQStCLGdCQUFnQjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixnREFBZ0Q7QUFDOUU7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLFFBQVE7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsVUFBVTtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFlBQVk7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLG1CQUFtQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUMySjtBQUMzSiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1iYXNlQDAuNS45QEBhbnR2L2ctYmFzZS9lc20vdXRpbC9wYXRoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZWFjaCwgaXNBcnJheSB9IGZyb20gJ0BhbnR2L3V0aWwnO1xudmFyIFNQQUNFUyA9ICdcXHgwOVxceDBhXFx4MGJcXHgwY1xceDBkXFx4MjBcXHhhMFxcdTE2ODBcXHUxODBlXFx1MjAwMFxcdTIwMDFcXHUyMDAyXFx1MjAwM1xcdTIwMDRcXHUyMDA1XFx1MjAwNlxcdTIwMDdcXHUyMDA4XFx1MjAwOVxcdTIwMGFcXHUyMDJmXFx1MjA1ZlxcdTMwMDBcXHUyMDI4XFx1MjAyOSc7XG52YXIgUEFUSF9DT01NQU5EID0gbmV3IFJlZ0V4cChcIihbYS16XSlbXCIgKyBTUEFDRVMgKyBcIixdKigoLT9cXFxcZCpcXFxcLj9cXFxcZCooPzplW1xcXFwtK10/XFxcXGQrKT9bXCIgKyBTUEFDRVMgKyBcIl0qLD9bXCIgKyBTUEFDRVMgKyBcIl0qKSspXCIsICdpZycpO1xudmFyIFBBVEhfVkFMVUVTID0gbmV3IFJlZ0V4cChcIigtP1xcXFxkKlxcXFwuP1xcXFxkKig/OmVbXFxcXC0rXT9cXFxcZCspPylbXCIgKyBTUEFDRVMgKyBcIl0qLD9bXCIgKyBTUEFDRVMgKyBcIl0qXCIsICdpZycpO1xuLy8gUGFyc2UgZ2l2ZW4gcGF0aCBzdHJpbmcgaW50byBhbiBhcnJheSBvZiBhcnJheXMgb2YgcGF0aCBzZWdtZW50c1xudmFyIHBhcnNlUGF0aFN0cmluZyA9IGZ1bmN0aW9uIChwYXRoU3RyaW5nKSB7XG4gICAgaWYgKCFwYXRoU3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAoaXNBcnJheShwYXRoU3RyaW5nKSkge1xuICAgICAgICByZXR1cm4gcGF0aFN0cmluZztcbiAgICB9XG4gICAgdmFyIHBhcmFtQ291bnRzID0ge1xuICAgICAgICBhOiA3LFxuICAgICAgICBjOiA2LFxuICAgICAgICBvOiAyLFxuICAgICAgICBoOiAxLFxuICAgICAgICBsOiAyLFxuICAgICAgICBtOiAyLFxuICAgICAgICByOiA0LFxuICAgICAgICBxOiA0LFxuICAgICAgICBzOiA0LFxuICAgICAgICB0OiAyLFxuICAgICAgICB2OiAxLFxuICAgICAgICB1OiAzLFxuICAgICAgICB6OiAwLFxuICAgIH07XG4gICAgdmFyIGRhdGEgPSBbXTtcbiAgICBTdHJpbmcocGF0aFN0cmluZykucmVwbGFjZShQQVRIX0NPTU1BTkQsIGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICAgIHZhciBwYXJhbXMgPSBbXTtcbiAgICAgICAgdmFyIG5hbWUgPSBiLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGMucmVwbGFjZShQQVRIX1ZBTFVFUywgZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgIGIgJiYgcGFyYW1zLnB1c2goK2IpO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKG5hbWUgPT09ICdtJyAmJiBwYXJhbXMubGVuZ3RoID4gMikge1xuICAgICAgICAgICAgZGF0YS5wdXNoKFtiXS5jb25jYXQocGFyYW1zLnNwbGljZSgwLCAyKSkpO1xuICAgICAgICAgICAgbmFtZSA9ICdsJztcbiAgICAgICAgICAgIGIgPSBiID09PSAnbScgPyAnbCcgOiAnTCc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5hbWUgPT09ICdvJyAmJiBwYXJhbXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBkYXRhLnB1c2goW2IsIHBhcmFtc1swXV0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuYW1lID09PSAncicpIHtcbiAgICAgICAgICAgIGRhdGEucHVzaChbYl0uY29uY2F0KHBhcmFtcykpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgd2hpbGUgKHBhcmFtcy5sZW5ndGggPj0gcGFyYW1Db3VudHNbbmFtZV0pIHtcbiAgICAgICAgICAgICAgICBkYXRhLnB1c2goW2JdLmNvbmNhdChwYXJhbXMuc3BsaWNlKDAsIHBhcmFtQ291bnRzW25hbWVdKSkpO1xuICAgICAgICAgICAgICAgIGlmICghcGFyYW1Db3VudHNbbmFtZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXRoU3RyaW5nO1xuICAgIH0pO1xuICAgIHJldHVybiBkYXRhO1xufTtcbi8vIGh0dHA6Ly9zY2hlcGVycy5jYy9nZXR0aW5nLXRvLXRoZS1wb2ludFxudmFyIGNhdG11bGxSb21Ub0JlemllciA9IGZ1bmN0aW9uIChjcnAsIHopIHtcbiAgICB2YXIgZCA9IFtdO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBmb3IgKHZhciBpID0gMCwgaUxlbiA9IGNycC5sZW5ndGg7IGlMZW4gLSAyICogIXogPiBpOyBpICs9IDIpIHtcbiAgICAgICAgdmFyIHAgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgeDogK2NycFtpIC0gMl0sXG4gICAgICAgICAgICAgICAgeTogK2NycFtpIC0gMV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHg6ICtjcnBbaV0sXG4gICAgICAgICAgICAgICAgeTogK2NycFtpICsgMV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHg6ICtjcnBbaSArIDJdLFxuICAgICAgICAgICAgICAgIHk6ICtjcnBbaSArIDNdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB4OiArY3JwW2kgKyA0XSxcbiAgICAgICAgICAgICAgICB5OiArY3JwW2kgKyA1XSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICAgIGlmICh6KSB7XG4gICAgICAgICAgICBpZiAoIWkpIHtcbiAgICAgICAgICAgICAgICBwWzBdID0ge1xuICAgICAgICAgICAgICAgICAgICB4OiArY3JwW2lMZW4gLSAyXSxcbiAgICAgICAgICAgICAgICAgICAgeTogK2NycFtpTGVuIC0gMV0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGlMZW4gLSA0ID09PSBpKSB7XG4gICAgICAgICAgICAgICAgcFszXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgeDogK2NycFswXSxcbiAgICAgICAgICAgICAgICAgICAgeTogK2NycFsxXSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaUxlbiAtIDIgPT09IGkpIHtcbiAgICAgICAgICAgICAgICBwWzJdID0ge1xuICAgICAgICAgICAgICAgICAgICB4OiArY3JwWzBdLFxuICAgICAgICAgICAgICAgICAgICB5OiArY3JwWzFdLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcFszXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgeDogK2NycFsyXSxcbiAgICAgICAgICAgICAgICAgICAgeTogK2NycFszXSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlMZW4gLSA0ID09PSBpKSB7XG4gICAgICAgICAgICAgICAgcFszXSA9IHBbMl07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICghaSkge1xuICAgICAgICAgICAgICAgIHBbMF0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHg6ICtjcnBbaV0sXG4gICAgICAgICAgICAgICAgICAgIHk6ICtjcnBbaSArIDFdLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZC5wdXNoKFtcbiAgICAgICAgICAgICdDJyxcbiAgICAgICAgICAgICgtcFswXS54ICsgNiAqIHBbMV0ueCArIHBbMl0ueCkgLyA2LFxuICAgICAgICAgICAgKC1wWzBdLnkgKyA2ICogcFsxXS55ICsgcFsyXS55KSAvIDYsXG4gICAgICAgICAgICAocFsxXS54ICsgNiAqIHBbMl0ueCAtIHBbM10ueCkgLyA2LFxuICAgICAgICAgICAgKHBbMV0ueSArIDYgKiBwWzJdLnkgLSBwWzNdLnkpIC8gNixcbiAgICAgICAgICAgIHBbMl0ueCxcbiAgICAgICAgICAgIHBbMl0ueSxcbiAgICAgICAgXSk7XG4gICAgfVxuICAgIHJldHVybiBkO1xufTtcbnZhciBlbGxpcHNlUGF0aCA9IGZ1bmN0aW9uICh4LCB5LCByeCwgcnksIGEpIHtcbiAgICB2YXIgcmVzID0gW107XG4gICAgaWYgKGEgPT09IG51bGwgJiYgcnkgPT09IG51bGwpIHtcbiAgICAgICAgcnkgPSByeDtcbiAgICB9XG4gICAgeCA9ICt4O1xuICAgIHkgPSAreTtcbiAgICByeCA9ICtyeDtcbiAgICByeSA9ICtyeTtcbiAgICBpZiAoYSAhPT0gbnVsbCkge1xuICAgICAgICB2YXIgcmFkID0gTWF0aC5QSSAvIDE4MDtcbiAgICAgICAgdmFyIHgxID0geCArIHJ4ICogTWF0aC5jb3MoLXJ5ICogcmFkKTtcbiAgICAgICAgdmFyIHgyID0geCArIHJ4ICogTWF0aC5jb3MoLWEgKiByYWQpO1xuICAgICAgICB2YXIgeTEgPSB5ICsgcnggKiBNYXRoLnNpbigtcnkgKiByYWQpO1xuICAgICAgICB2YXIgeTIgPSB5ICsgcnggKiBNYXRoLnNpbigtYSAqIHJhZCk7XG4gICAgICAgIHJlcyA9IFtcbiAgICAgICAgICAgIFsnTScsIHgxLCB5MV0sXG4gICAgICAgICAgICBbJ0EnLCByeCwgcngsIDAsICsoYSAtIHJ5ID4gMTgwKSwgMCwgeDIsIHkyXSxcbiAgICAgICAgXTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJlcyA9IFtbJ00nLCB4LCB5XSwgWydtJywgMCwgLXJ5XSwgWydhJywgcngsIHJ5LCAwLCAxLCAxLCAwLCAyICogcnldLCBbJ2EnLCByeCwgcnksIDAsIDEsIDEsIDAsIC0yICogcnldLCBbJ3onXV07XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59O1xudmFyIHBhdGhUb0Fic29sdXRlID0gZnVuY3Rpb24gKHBhdGhBcnJheSkge1xuICAgIHBhdGhBcnJheSA9IHBhcnNlUGF0aFN0cmluZyhwYXRoQXJyYXkpO1xuICAgIGlmICghcGF0aEFycmF5IHx8ICFwYXRoQXJyYXkubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBbWydNJywgMCwgMF1dO1xuICAgIH1cbiAgICB2YXIgcmVzID0gW107XG4gICAgdmFyIHggPSAwO1xuICAgIHZhciB5ID0gMDtcbiAgICB2YXIgbXggPSAwO1xuICAgIHZhciBteSA9IDA7XG4gICAgdmFyIHN0YXJ0ID0gMDtcbiAgICB2YXIgcGEwO1xuICAgIHZhciBkb3RzO1xuICAgIGlmIChwYXRoQXJyYXlbMF1bMF0gPT09ICdNJykge1xuICAgICAgICB4ID0gK3BhdGhBcnJheVswXVsxXTtcbiAgICAgICAgeSA9ICtwYXRoQXJyYXlbMF1bMl07XG4gICAgICAgIG14ID0geDtcbiAgICAgICAgbXkgPSB5O1xuICAgICAgICBzdGFydCsrO1xuICAgICAgICByZXNbMF0gPSBbJ00nLCB4LCB5XTtcbiAgICB9XG4gICAgdmFyIGNyeiA9IHBhdGhBcnJheS5sZW5ndGggPT09IDMgJiZcbiAgICAgICAgcGF0aEFycmF5WzBdWzBdID09PSAnTScgJiZcbiAgICAgICAgcGF0aEFycmF5WzFdWzBdLnRvVXBwZXJDYXNlKCkgPT09ICdSJyAmJlxuICAgICAgICBwYXRoQXJyYXlbMl1bMF0udG9VcHBlckNhc2UoKSA9PT0gJ1onO1xuICAgIGZvciAodmFyIHIgPSB2b2lkIDAsIHBhID0gdm9pZCAwLCBpID0gc3RhcnQsIGlpID0gcGF0aEFycmF5Lmxlbmd0aDsgaSA8IGlpOyBpKyspIHtcbiAgICAgICAgcmVzLnB1c2goKHIgPSBbXSkpO1xuICAgICAgICBwYSA9IHBhdGhBcnJheVtpXTtcbiAgICAgICAgcGEwID0gcGFbMF07XG4gICAgICAgIGlmIChwYTAgIT09IHBhMC50b1VwcGVyQ2FzZSgpKSB7XG4gICAgICAgICAgICByWzBdID0gcGEwLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICBzd2l0Y2ggKHJbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlICdBJzpcbiAgICAgICAgICAgICAgICAgICAgclsxXSA9IHBhWzFdO1xuICAgICAgICAgICAgICAgICAgICByWzJdID0gcGFbMl07XG4gICAgICAgICAgICAgICAgICAgIHJbM10gPSBwYVszXTtcbiAgICAgICAgICAgICAgICAgICAgcls0XSA9IHBhWzRdO1xuICAgICAgICAgICAgICAgICAgICByWzVdID0gcGFbNV07XG4gICAgICAgICAgICAgICAgICAgIHJbNl0gPSArcGFbNl0gKyB4O1xuICAgICAgICAgICAgICAgICAgICByWzddID0gK3BhWzddICsgeTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnVic6XG4gICAgICAgICAgICAgICAgICAgIHJbMV0gPSArcGFbMV0gKyB5O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdIJzpcbiAgICAgICAgICAgICAgICAgICAgclsxXSA9ICtwYVsxXSArIHg7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ1InOlxuICAgICAgICAgICAgICAgICAgICBkb3RzID0gW3gsIHldLmNvbmNhdChwYS5zbGljZSgxKSk7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAyLCBqaiA9IGRvdHMubGVuZ3RoOyBqIDwgamo7IGorKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZG90c1tqXSA9ICtkb3RzW2pdICsgeDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvdHNbKytqXSA9ICtkb3RzW2pdICsgeTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIHJlcyA9IHJlcy5jb25jYXQoY2F0bXVsbFJvbVRvQmV6aWVyKGRvdHMsIGNyeikpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdPJzpcbiAgICAgICAgICAgICAgICAgICAgcmVzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBkb3RzID0gZWxsaXBzZVBhdGgoeCwgeSwgcGFbMV0sIHBhWzJdKTtcbiAgICAgICAgICAgICAgICAgICAgZG90cy5wdXNoKGRvdHNbMF0pO1xuICAgICAgICAgICAgICAgICAgICByZXMgPSByZXMuY29uY2F0KGRvdHMpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdVJzpcbiAgICAgICAgICAgICAgICAgICAgcmVzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICByZXMgPSByZXMuY29uY2F0KGVsbGlwc2VQYXRoKHgsIHksIHBhWzFdLCBwYVsyXSwgcGFbM10pKTtcbiAgICAgICAgICAgICAgICAgICAgciA9IFsnVSddLmNvbmNhdChyZXNbcmVzLmxlbmd0aCAtIDFdLnNsaWNlKC0yKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgICAgICBteCA9ICtwYVsxXSArIHg7XG4gICAgICAgICAgICAgICAgICAgIG15ID0gK3BhWzJdICsgeTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIGZvciBsaW50XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDEsIGpqID0gcGEubGVuZ3RoOyBqIDwgamo7IGorKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcltqXSA9ICtwYVtqXSArIChqICUgMiA/IHggOiB5KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHBhMCA9PT0gJ1InKSB7XG4gICAgICAgICAgICBkb3RzID0gW3gsIHldLmNvbmNhdChwYS5zbGljZSgxKSk7XG4gICAgICAgICAgICByZXMucG9wKCk7XG4gICAgICAgICAgICByZXMgPSByZXMuY29uY2F0KGNhdG11bGxSb21Ub0Jlemllcihkb3RzLCBjcnopKTtcbiAgICAgICAgICAgIHIgPSBbJ1InXS5jb25jYXQocGEuc2xpY2UoLTIpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChwYTAgPT09ICdPJykge1xuICAgICAgICAgICAgcmVzLnBvcCgpO1xuICAgICAgICAgICAgZG90cyA9IGVsbGlwc2VQYXRoKHgsIHksIHBhWzFdLCBwYVsyXSk7XG4gICAgICAgICAgICBkb3RzLnB1c2goZG90c1swXSk7XG4gICAgICAgICAgICByZXMgPSByZXMuY29uY2F0KGRvdHMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHBhMCA9PT0gJ1UnKSB7XG4gICAgICAgICAgICByZXMucG9wKCk7XG4gICAgICAgICAgICByZXMgPSByZXMuY29uY2F0KGVsbGlwc2VQYXRoKHgsIHksIHBhWzFdLCBwYVsyXSwgcGFbM10pKTtcbiAgICAgICAgICAgIHIgPSBbJ1UnXS5jb25jYXQocmVzW3Jlcy5sZW5ndGggLSAxXS5zbGljZSgtMikpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZm9yICh2YXIgayA9IDAsIGtrID0gcGEubGVuZ3RoOyBrIDwga2s7IGsrKykge1xuICAgICAgICAgICAgICAgIHJba10gPSBwYVtrXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwYTAgPSBwYTAudG9VcHBlckNhc2UoKTtcbiAgICAgICAgaWYgKHBhMCAhPT0gJ08nKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHJbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlICdaJzpcbiAgICAgICAgICAgICAgICAgICAgeCA9ICtteDtcbiAgICAgICAgICAgICAgICAgICAgeSA9ICtteTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnSCc6XG4gICAgICAgICAgICAgICAgICAgIHggPSByWzFdO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdWJzpcbiAgICAgICAgICAgICAgICAgICAgeSA9IHJbMV07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgICAgICBteCA9IHJbci5sZW5ndGggLSAyXTtcbiAgICAgICAgICAgICAgICAgICAgbXkgPSByW3IubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyBmb3IgbGludFxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHggPSByW3IubGVuZ3RoIC0gMl07XG4gICAgICAgICAgICAgICAgICAgIHkgPSByW3IubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn07XG52YXIgbDJjID0gZnVuY3Rpb24gKHgxLCB5MSwgeDIsIHkyKSB7XG4gICAgcmV0dXJuIFt4MSwgeTEsIHgyLCB5MiwgeDIsIHkyXTtcbn07XG52YXIgcTJjID0gZnVuY3Rpb24gKHgxLCB5MSwgYXgsIGF5LCB4MiwgeTIpIHtcbiAgICB2YXIgXzEzID0gMSAvIDM7XG4gICAgdmFyIF8yMyA9IDIgLyAzO1xuICAgIHJldHVybiBbXzEzICogeDEgKyBfMjMgKiBheCwgXzEzICogeTEgKyBfMjMgKiBheSwgXzEzICogeDIgKyBfMjMgKiBheCwgXzEzICogeTIgKyBfMjMgKiBheSwgeDIsIHkyXTtcbn07XG52YXIgYTJjID0gZnVuY3Rpb24gKHgxLCB5MSwgcngsIHJ5LCBhbmdsZSwgbGFyZ2VfYXJjX2ZsYWcsIHN3ZWVwX2ZsYWcsIHgyLCB5MiwgcmVjdXJzaXZlKSB7XG4gICAgLy8gZm9yIG1vcmUgaW5mb3JtYXRpb24gb2Ygd2hlcmUgdGhpcyBtYXRoIGNhbWUgZnJvbSB2aXNpdDpcbiAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9pbXBsbm90ZS5odG1sI0FyY0ltcGxlbWVudGF0aW9uTm90ZXNcbiAgICBpZiAocnggPT09IHJ5KSB7XG4gICAgICAgIHJ4ICs9IDE7XG4gICAgfVxuICAgIHZhciBfMTIwID0gKE1hdGguUEkgKiAxMjApIC8gMTgwO1xuICAgIHZhciByYWQgPSAoTWF0aC5QSSAvIDE4MCkgKiAoK2FuZ2xlIHx8IDApO1xuICAgIHZhciByZXMgPSBbXTtcbiAgICB2YXIgeHk7XG4gICAgdmFyIGYxO1xuICAgIHZhciBmMjtcbiAgICB2YXIgY3g7XG4gICAgdmFyIGN5O1xuICAgIHZhciByb3RhdGUgPSBmdW5jdGlvbiAoeCwgeSwgcmFkKSB7XG4gICAgICAgIHZhciBYID0geCAqIE1hdGguY29zKHJhZCkgLSB5ICogTWF0aC5zaW4ocmFkKTtcbiAgICAgICAgdmFyIFkgPSB4ICogTWF0aC5zaW4ocmFkKSArIHkgKiBNYXRoLmNvcyhyYWQpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogWCxcbiAgICAgICAgICAgIHk6IFksXG4gICAgICAgIH07XG4gICAgfTtcbiAgICBpZiAoIXJlY3Vyc2l2ZSkge1xuICAgICAgICB4eSA9IHJvdGF0ZSh4MSwgeTEsIC1yYWQpO1xuICAgICAgICB4MSA9IHh5Lng7XG4gICAgICAgIHkxID0geHkueTtcbiAgICAgICAgeHkgPSByb3RhdGUoeDIsIHkyLCAtcmFkKTtcbiAgICAgICAgeDIgPSB4eS54O1xuICAgICAgICB5MiA9IHh5Lnk7XG4gICAgICAgIGlmICh4MSA9PT0geDIgJiYgeTEgPT09IHkyKSB7XG4gICAgICAgICAgICAvLyDoi6XlvKfnmoTotbflp4vngrnlkoznu4jngrnph43lj6DliJnplJnlvIDkuIDngrlcbiAgICAgICAgICAgIHgyICs9IDE7XG4gICAgICAgICAgICB5MiArPSAxO1xuICAgICAgICB9XG4gICAgICAgIC8vIGNvbnN0IGNvcyA9IE1hdGguY29zKE1hdGguUEkgLyAxODAgKiBhbmdsZSk7XG4gICAgICAgIC8vIGNvbnN0IHNpbiA9IE1hdGguc2luKE1hdGguUEkgLyAxODAgKiBhbmdsZSk7XG4gICAgICAgIHZhciB4ID0gKHgxIC0geDIpIC8gMjtcbiAgICAgICAgdmFyIHkgPSAoeTEgLSB5MikgLyAyO1xuICAgICAgICB2YXIgaCA9ICh4ICogeCkgLyAocnggKiByeCkgKyAoeSAqIHkpIC8gKHJ5ICogcnkpO1xuICAgICAgICBpZiAoaCA+IDEpIHtcbiAgICAgICAgICAgIGggPSBNYXRoLnNxcnQoaCk7XG4gICAgICAgICAgICByeCA9IGggKiByeDtcbiAgICAgICAgICAgIHJ5ID0gaCAqIHJ5O1xuICAgICAgICB9XG4gICAgICAgIHZhciByeDIgPSByeCAqIHJ4O1xuICAgICAgICB2YXIgcnkyID0gcnkgKiByeTtcbiAgICAgICAgdmFyIGsgPSAobGFyZ2VfYXJjX2ZsYWcgPT09IHN3ZWVwX2ZsYWcgPyAtMSA6IDEpICpcbiAgICAgICAgICAgIE1hdGguc3FydChNYXRoLmFicygocngyICogcnkyIC0gcngyICogeSAqIHkgLSByeTIgKiB4ICogeCkgLyAocngyICogeSAqIHkgKyByeTIgKiB4ICogeCkpKTtcbiAgICAgICAgY3ggPSAoayAqIHJ4ICogeSkgLyByeSArICh4MSArIHgyKSAvIDI7XG4gICAgICAgIGN5ID0gKGsgKiAtcnkgKiB4KSAvIHJ4ICsgKHkxICsgeTIpIC8gMjtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBmMSA9IE1hdGguYXNpbigoKHkxIC0gY3kpIC8gcnkpLnRvRml4ZWQoOSkpO1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGYyID0gTWF0aC5hc2luKCgoeTIgLSBjeSkgLyByeSkudG9GaXhlZCg5KSk7XG4gICAgICAgIGYxID0geDEgPCBjeCA/IE1hdGguUEkgLSBmMSA6IGYxO1xuICAgICAgICBmMiA9IHgyIDwgY3ggPyBNYXRoLlBJIC0gZjIgOiBmMjtcbiAgICAgICAgZjEgPCAwICYmIChmMSA9IE1hdGguUEkgKiAyICsgZjEpO1xuICAgICAgICBmMiA8IDAgJiYgKGYyID0gTWF0aC5QSSAqIDIgKyBmMik7XG4gICAgICAgIGlmIChzd2VlcF9mbGFnICYmIGYxID4gZjIpIHtcbiAgICAgICAgICAgIGYxID0gZjEgLSBNYXRoLlBJICogMjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXN3ZWVwX2ZsYWcgJiYgZjIgPiBmMSkge1xuICAgICAgICAgICAgZjIgPSBmMiAtIE1hdGguUEkgKiAyO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBmMSA9IHJlY3Vyc2l2ZVswXTtcbiAgICAgICAgZjIgPSByZWN1cnNpdmVbMV07XG4gICAgICAgIGN4ID0gcmVjdXJzaXZlWzJdO1xuICAgICAgICBjeSA9IHJlY3Vyc2l2ZVszXTtcbiAgICB9XG4gICAgdmFyIGRmID0gZjIgLSBmMTtcbiAgICBpZiAoTWF0aC5hYnMoZGYpID4gXzEyMCkge1xuICAgICAgICB2YXIgZjJvbGQgPSBmMjtcbiAgICAgICAgdmFyIHgyb2xkID0geDI7XG4gICAgICAgIHZhciB5Mm9sZCA9IHkyO1xuICAgICAgICBmMiA9IGYxICsgXzEyMCAqIChzd2VlcF9mbGFnICYmIGYyID4gZjEgPyAxIDogLTEpO1xuICAgICAgICB4MiA9IGN4ICsgcnggKiBNYXRoLmNvcyhmMik7XG4gICAgICAgIHkyID0gY3kgKyByeSAqIE1hdGguc2luKGYyKTtcbiAgICAgICAgcmVzID0gYTJjKHgyLCB5MiwgcngsIHJ5LCBhbmdsZSwgMCwgc3dlZXBfZmxhZywgeDJvbGQsIHkyb2xkLCBbZjIsIGYyb2xkLCBjeCwgY3ldKTtcbiAgICB9XG4gICAgZGYgPSBmMiAtIGYxO1xuICAgIHZhciBjMSA9IE1hdGguY29zKGYxKTtcbiAgICB2YXIgczEgPSBNYXRoLnNpbihmMSk7XG4gICAgdmFyIGMyID0gTWF0aC5jb3MoZjIpO1xuICAgIHZhciBzMiA9IE1hdGguc2luKGYyKTtcbiAgICB2YXIgdCA9IE1hdGgudGFuKGRmIC8gNCk7XG4gICAgdmFyIGh4ID0gKDQgLyAzKSAqIHJ4ICogdDtcbiAgICB2YXIgaHkgPSAoNCAvIDMpICogcnkgKiB0O1xuICAgIHZhciBtMSA9IFt4MSwgeTFdO1xuICAgIHZhciBtMiA9IFt4MSArIGh4ICogczEsIHkxIC0gaHkgKiBjMV07XG4gICAgdmFyIG0zID0gW3gyICsgaHggKiBzMiwgeTIgLSBoeSAqIGMyXTtcbiAgICB2YXIgbTQgPSBbeDIsIHkyXTtcbiAgICBtMlswXSA9IDIgKiBtMVswXSAtIG0yWzBdO1xuICAgIG0yWzFdID0gMiAqIG0xWzFdIC0gbTJbMV07XG4gICAgaWYgKHJlY3Vyc2l2ZSkge1xuICAgICAgICByZXR1cm4gW20yLCBtMywgbTRdLmNvbmNhdChyZXMpO1xuICAgIH1cbiAgICByZXMgPSBbbTIsIG0zLCBtNF0uY29uY2F0KHJlcykuam9pbigpLnNwbGl0KCcsJyk7XG4gICAgdmFyIG5ld3JlcyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IHJlcy5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7XG4gICAgICAgIG5ld3Jlc1tpXSA9IGkgJSAyID8gcm90YXRlKHJlc1tpIC0gMV0sIHJlc1tpXSwgcmFkKS55IDogcm90YXRlKHJlc1tpXSwgcmVzW2kgKyAxXSwgcmFkKS54O1xuICAgIH1cbiAgICByZXR1cm4gbmV3cmVzO1xufTtcbnZhciBwYXRoVG9DdXJ2ZSA9IGZ1bmN0aW9uIChwYXRoLCBwYXRoMikge1xuICAgIHZhciBwID0gcGF0aFRvQWJzb2x1dGUocGF0aCk7XG4gICAgdmFyIHAyID0gcGF0aDIgJiYgcGF0aFRvQWJzb2x1dGUocGF0aDIpO1xuICAgIHZhciBhdHRycyA9IHtcbiAgICAgICAgeDogMCxcbiAgICAgICAgeTogMCxcbiAgICAgICAgYng6IDAsXG4gICAgICAgIGJ5OiAwLFxuICAgICAgICBYOiAwLFxuICAgICAgICBZOiAwLFxuICAgICAgICBxeDogbnVsbCxcbiAgICAgICAgcXk6IG51bGwsXG4gICAgfTtcbiAgICB2YXIgYXR0cnMyID0ge1xuICAgICAgICB4OiAwLFxuICAgICAgICB5OiAwLFxuICAgICAgICBieDogMCxcbiAgICAgICAgYnk6IDAsXG4gICAgICAgIFg6IDAsXG4gICAgICAgIFk6IDAsXG4gICAgICAgIHF4OiBudWxsLFxuICAgICAgICBxeTogbnVsbCxcbiAgICB9O1xuICAgIHZhciBwY29tczEgPSBbXTsgLy8gcGF0aCBjb21tYW5kcyBvZiBvcmlnaW5hbCBwYXRoIHBcbiAgICB2YXIgcGNvbXMyID0gW107IC8vIHBhdGggY29tbWFuZHMgb2Ygb3JpZ2luYWwgcGF0aCBwMlxuICAgIHZhciBwZmlyc3QgPSAnJzsgLy8gdGVtcG9yYXJ5IGhvbGRlciBmb3Igb3JpZ2luYWwgcGF0aCBjb21tYW5kXG4gICAgdmFyIHBjb20gPSAnJzsgLy8gaG9sZGVyIGZvciBwcmV2aW91cyBwYXRoIGNvbW1hbmQgb2Ygb3JpZ2luYWwgcGF0aFxuICAgIHZhciBpaTtcbiAgICB2YXIgcHJvY2Vzc1BhdGggPSBmdW5jdGlvbiAocGF0aCwgZCwgcGNvbSkge1xuICAgICAgICB2YXIgbng7XG4gICAgICAgIHZhciBueTtcbiAgICAgICAgaWYgKCFwYXRoKSB7XG4gICAgICAgICAgICByZXR1cm4gWydDJywgZC54LCBkLnksIGQueCwgZC55LCBkLngsIGQueV07XG4gICAgICAgIH1cbiAgICAgICAgIShwYXRoWzBdIGluXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgVDogMSxcbiAgICAgICAgICAgICAgICBROiAxLFxuICAgICAgICAgICAgfSkgJiYgKGQucXggPSBkLnF5ID0gbnVsbCk7XG4gICAgICAgIHN3aXRjaCAocGF0aFswXSkge1xuICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgZC5YID0gcGF0aFsxXTtcbiAgICAgICAgICAgICAgICBkLlkgPSBwYXRoWzJdO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQSc6XG4gICAgICAgICAgICAgICAgcGF0aCA9IFsnQyddLmNvbmNhdChhMmMuYXBwbHkoMCwgW2QueCwgZC55XS5jb25jYXQocGF0aC5zbGljZSgxKSkpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1MnOlxuICAgICAgICAgICAgICAgIGlmIChwY29tID09PSAnQycgfHwgcGNvbSA9PT0gJ1MnKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEluIFwiU1wiIGNhc2Ugd2UgaGF2ZSB0byB0YWtlIGludG8gYWNjb3VudCwgaWYgdGhlIHByZXZpb3VzIGNvbW1hbmQgaXMgQy9TLlxuICAgICAgICAgICAgICAgICAgICBueCA9IGQueCAqIDIgLSBkLmJ4OyAvLyBBbmQgcmVmbGVjdCB0aGUgcHJldmlvdXNcbiAgICAgICAgICAgICAgICAgICAgbnkgPSBkLnkgKiAyIC0gZC5ieTsgLy8gY29tbWFuZCdzIGNvbnRyb2wgcG9pbnQgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgcG9pbnQuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBvciBzb21lIGVsc2Ugb3Igbm90aGluZ1xuICAgICAgICAgICAgICAgICAgICBueCA9IGQueDtcbiAgICAgICAgICAgICAgICAgICAgbnkgPSBkLnk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBhdGggPSBbJ0MnLCBueCwgbnldLmNvbmNhdChwYXRoLnNsaWNlKDEpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1QnOlxuICAgICAgICAgICAgICAgIGlmIChwY29tID09PSAnUScgfHwgcGNvbSA9PT0gJ1QnKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEluIFwiVFwiIGNhc2Ugd2UgaGF2ZSB0byB0YWtlIGludG8gYWNjb3VudCwgaWYgdGhlIHByZXZpb3VzIGNvbW1hbmQgaXMgUS9ULlxuICAgICAgICAgICAgICAgICAgICBkLnF4ID0gZC54ICogMiAtIGQucXg7IC8vIEFuZCBtYWtlIGEgcmVmbGVjdGlvbiBzaW1pbGFyXG4gICAgICAgICAgICAgICAgICAgIGQucXkgPSBkLnkgKiAyIC0gZC5xeTsgLy8gdG8gY2FzZSBcIlNcIi5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIG9yIHNvbWV0aGluZyBlbHNlIG9yIG5vdGhpbmdcbiAgICAgICAgICAgICAgICAgICAgZC5xeCA9IGQueDtcbiAgICAgICAgICAgICAgICAgICAgZC5xeSA9IGQueTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcGF0aCA9IFsnQyddLmNvbmNhdChxMmMoZC54LCBkLnksIGQucXgsIGQucXksIHBhdGhbMV0sIHBhdGhbMl0pKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1EnOlxuICAgICAgICAgICAgICAgIGQucXggPSBwYXRoWzFdO1xuICAgICAgICAgICAgICAgIGQucXkgPSBwYXRoWzJdO1xuICAgICAgICAgICAgICAgIHBhdGggPSBbJ0MnXS5jb25jYXQocTJjKGQueCwgZC55LCBwYXRoWzFdLCBwYXRoWzJdLCBwYXRoWzNdLCBwYXRoWzRdKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdMJzpcbiAgICAgICAgICAgICAgICBwYXRoID0gWydDJ10uY29uY2F0KGwyYyhkLngsIGQueSwgcGF0aFsxXSwgcGF0aFsyXSkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnSCc6XG4gICAgICAgICAgICAgICAgcGF0aCA9IFsnQyddLmNvbmNhdChsMmMoZC54LCBkLnksIHBhdGhbMV0sIGQueSkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnVic6XG4gICAgICAgICAgICAgICAgcGF0aCA9IFsnQyddLmNvbmNhdChsMmMoZC54LCBkLnksIGQueCwgcGF0aFsxXSkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnWic6XG4gICAgICAgICAgICAgICAgcGF0aCA9IFsnQyddLmNvbmNhdChsMmMoZC54LCBkLnksIGQuWCwgZC5ZKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgIH07XG4gICAgdmFyIGZpeEFyYyA9IGZ1bmN0aW9uIChwcCwgaSkge1xuICAgICAgICBpZiAocHBbaV0ubGVuZ3RoID4gNykge1xuICAgICAgICAgICAgcHBbaV0uc2hpZnQoKTtcbiAgICAgICAgICAgIHZhciBwaSA9IHBwW2ldO1xuICAgICAgICAgICAgd2hpbGUgKHBpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHBjb21zMVtpXSA9ICdBJzsgLy8gaWYgY3JlYXRlZCBtdWx0aXBsZSBDOnMsIHRoZWlyIG9yaWdpbmFsIHNlZyBpcyBzYXZlZFxuICAgICAgICAgICAgICAgIHAyICYmIChwY29tczJbaV0gPSAnQScpOyAvLyB0aGUgc2FtZSBhcyBhYm92ZVxuICAgICAgICAgICAgICAgIHBwLnNwbGljZShpKyssIDAsIFsnQyddLmNvbmNhdChwaS5zcGxpY2UoMCwgNikpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBwLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgIGlpID0gTWF0aC5tYXgocC5sZW5ndGgsIChwMiAmJiBwMi5sZW5ndGgpIHx8IDApO1xuICAgICAgICB9XG4gICAgfTtcbiAgICB2YXIgZml4TSA9IGZ1bmN0aW9uIChwYXRoMSwgcGF0aDIsIGExLCBhMiwgaSkge1xuICAgICAgICBpZiAocGF0aDEgJiYgcGF0aDIgJiYgcGF0aDFbaV1bMF0gPT09ICdNJyAmJiBwYXRoMltpXVswXSAhPT0gJ00nKSB7XG4gICAgICAgICAgICBwYXRoMi5zcGxpY2UoaSwgMCwgWydNJywgYTIueCwgYTIueV0pO1xuICAgICAgICAgICAgYTEuYnggPSAwO1xuICAgICAgICAgICAgYTEuYnkgPSAwO1xuICAgICAgICAgICAgYTEueCA9IHBhdGgxW2ldWzFdO1xuICAgICAgICAgICAgYTEueSA9IHBhdGgxW2ldWzJdO1xuICAgICAgICAgICAgaWkgPSBNYXRoLm1heChwLmxlbmd0aCwgKHAyICYmIHAyLmxlbmd0aCkgfHwgMCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGlpID0gTWF0aC5tYXgocC5sZW5ndGgsIChwMiAmJiBwMi5sZW5ndGgpIHx8IDApO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaWk7IGkrKykge1xuICAgICAgICBwW2ldICYmIChwZmlyc3QgPSBwW2ldWzBdKTsgLy8gc2F2ZSBjdXJyZW50IHBhdGggY29tbWFuZFxuICAgICAgICBpZiAocGZpcnN0ICE9PSAnQycpIHtcbiAgICAgICAgICAgIC8vIEMgaXMgbm90IHNhdmVkIHlldCwgYmVjYXVzZSBpdCBtYXkgYmUgcmVzdWx0IG9mIGNvbnZlcnNpb25cbiAgICAgICAgICAgIHBjb21zMVtpXSA9IHBmaXJzdDsgLy8gU2F2ZSBjdXJyZW50IHBhdGggY29tbWFuZFxuICAgICAgICAgICAgaSAmJiAocGNvbSA9IHBjb21zMVtpIC0gMV0pOyAvLyBHZXQgcHJldmlvdXMgcGF0aCBjb21tYW5kIHBjb21cbiAgICAgICAgfVxuICAgICAgICBwW2ldID0gcHJvY2Vzc1BhdGgocFtpXSwgYXR0cnMsIHBjb20pOyAvLyBQcmV2aW91cyBwYXRoIGNvbW1hbmQgaXMgaW5wdXR0ZWQgdG8gcHJvY2Vzc1BhdGhcbiAgICAgICAgaWYgKHBjb21zMVtpXSAhPT0gJ0EnICYmIHBmaXJzdCA9PT0gJ0MnKVxuICAgICAgICAgICAgcGNvbXMxW2ldID0gJ0MnOyAvLyBBIGlzIHRoZSBvbmx5IGNvbW1hbmRcbiAgICAgICAgLy8gd2hpY2ggbWF5IHByb2R1Y2UgbXVsdGlwbGUgQzpzXG4gICAgICAgIC8vIHNvIHdlIGhhdmUgdG8gbWFrZSBzdXJlIHRoYXQgQyBpcyBhbHNvIEMgaW4gb3JpZ2luYWwgcGF0aFxuICAgICAgICBmaXhBcmMocCwgaSk7IC8vIGZpeEFyYyBhZGRzIGFsc28gdGhlIHJpZ2h0IGFtb3VudCBvZiBBOnMgdG8gcGNvbXMxXG4gICAgICAgIGlmIChwMikge1xuICAgICAgICAgICAgLy8gdGhlIHNhbWUgcHJvY2VkdXJlcyBpcyBkb25lIHRvIHAyXG4gICAgICAgICAgICBwMltpXSAmJiAocGZpcnN0ID0gcDJbaV1bMF0pO1xuICAgICAgICAgICAgaWYgKHBmaXJzdCAhPT0gJ0MnKSB7XG4gICAgICAgICAgICAgICAgcGNvbXMyW2ldID0gcGZpcnN0O1xuICAgICAgICAgICAgICAgIGkgJiYgKHBjb20gPSBwY29tczJbaSAtIDFdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHAyW2ldID0gcHJvY2Vzc1BhdGgocDJbaV0sIGF0dHJzMiwgcGNvbSk7XG4gICAgICAgICAgICBpZiAocGNvbXMyW2ldICE9PSAnQScgJiYgcGZpcnN0ID09PSAnQycpIHtcbiAgICAgICAgICAgICAgICBwY29tczJbaV0gPSAnQyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaXhBcmMocDIsIGkpO1xuICAgICAgICB9XG4gICAgICAgIGZpeE0ocCwgcDIsIGF0dHJzLCBhdHRyczIsIGkpO1xuICAgICAgICBmaXhNKHAyLCBwLCBhdHRyczIsIGF0dHJzLCBpKTtcbiAgICAgICAgdmFyIHNlZyA9IHBbaV07XG4gICAgICAgIHZhciBzZWcyID0gcDIgJiYgcDJbaV07XG4gICAgICAgIHZhciBzZWdsZW4gPSBzZWcubGVuZ3RoO1xuICAgICAgICB2YXIgc2VnMmxlbiA9IHAyICYmIHNlZzIubGVuZ3RoO1xuICAgICAgICBhdHRycy54ID0gc2VnW3NlZ2xlbiAtIDJdO1xuICAgICAgICBhdHRycy55ID0gc2VnW3NlZ2xlbiAtIDFdO1xuICAgICAgICBhdHRycy5ieCA9IHBhcnNlRmxvYXQoc2VnW3NlZ2xlbiAtIDRdKSB8fCBhdHRycy54O1xuICAgICAgICBhdHRycy5ieSA9IHBhcnNlRmxvYXQoc2VnW3NlZ2xlbiAtIDNdKSB8fCBhdHRycy55O1xuICAgICAgICBhdHRyczIuYnggPSBwMiAmJiAocGFyc2VGbG9hdChzZWcyW3NlZzJsZW4gLSA0XSkgfHwgYXR0cnMyLngpO1xuICAgICAgICBhdHRyczIuYnkgPSBwMiAmJiAocGFyc2VGbG9hdChzZWcyW3NlZzJsZW4gLSAzXSkgfHwgYXR0cnMyLnkpO1xuICAgICAgICBhdHRyczIueCA9IHAyICYmIHNlZzJbc2VnMmxlbiAtIDJdO1xuICAgICAgICBhdHRyczIueSA9IHAyICYmIHNlZzJbc2VnMmxlbiAtIDFdO1xuICAgIH1cbiAgICByZXR1cm4gcDIgPyBbcCwgcDJdIDogcDtcbn07XG52YXIgcDJzID0gLyw/KFthLXpdKSw/L2dpO1xudmFyIHBhcnNlUGF0aEFycmF5ID0gZnVuY3Rpb24gKHBhdGgpIHtcbiAgICByZXR1cm4gcGF0aC5qb2luKCcsJykucmVwbGFjZShwMnMsICckMScpO1xufTtcbnZhciBiYXNlMyA9IGZ1bmN0aW9uICh0LCBwMSwgcDIsIHAzLCBwNCkge1xuICAgIHZhciB0MSA9IC0zICogcDEgKyA5ICogcDIgLSA5ICogcDMgKyAzICogcDQ7XG4gICAgdmFyIHQyID0gdCAqIHQxICsgNiAqIHAxIC0gMTIgKiBwMiArIDYgKiBwMztcbiAgICByZXR1cm4gdCAqIHQyIC0gMyAqIHAxICsgMyAqIHAyO1xufTtcbnZhciBiZXpsZW4gPSBmdW5jdGlvbiAoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgeDQsIHk0LCB6KSB7XG4gICAgaWYgKHogPT09IG51bGwpIHtcbiAgICAgICAgeiA9IDE7XG4gICAgfVxuICAgIHogPSB6ID4gMSA/IDEgOiB6IDwgMCA/IDAgOiB6O1xuICAgIHZhciB6MiA9IHogLyAyO1xuICAgIHZhciBuID0gMTI7XG4gICAgdmFyIFR2YWx1ZXMgPSBbXG4gICAgICAgIC0wLjEyNTIsXG4gICAgICAgIDAuMTI1MixcbiAgICAgICAgLTAuMzY3OCxcbiAgICAgICAgMC4zNjc4LFxuICAgICAgICAtMC41ODczLFxuICAgICAgICAwLjU4NzMsXG4gICAgICAgIC0wLjc2OTksXG4gICAgICAgIDAuNzY5OSxcbiAgICAgICAgLTAuOTA0MSxcbiAgICAgICAgMC45MDQxLFxuICAgICAgICAtMC45ODE2LFxuICAgICAgICAwLjk4MTYsXG4gICAgXTtcbiAgICB2YXIgQ3ZhbHVlcyA9IFswLjI0OTEsIDAuMjQ5MSwgMC4yMzM1LCAwLjIzMzUsIDAuMjAzMiwgMC4yMDMyLCAwLjE2MDEsIDAuMTYwMSwgMC4xMDY5LCAwLjEwNjksIDAuMDQ3MiwgMC4wNDcyXTtcbiAgICB2YXIgc3VtID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICB2YXIgY3QgPSB6MiAqIFR2YWx1ZXNbaV0gKyB6MjtcbiAgICAgICAgdmFyIHhiYXNlID0gYmFzZTMoY3QsIHgxLCB4MiwgeDMsIHg0KTtcbiAgICAgICAgdmFyIHliYXNlID0gYmFzZTMoY3QsIHkxLCB5MiwgeTMsIHk0KTtcbiAgICAgICAgdmFyIGNvbWIgPSB4YmFzZSAqIHhiYXNlICsgeWJhc2UgKiB5YmFzZTtcbiAgICAgICAgc3VtICs9IEN2YWx1ZXNbaV0gKiBNYXRoLnNxcnQoY29tYik7XG4gICAgfVxuICAgIHJldHVybiB6MiAqIHN1bTtcbn07XG52YXIgY3VydmVEaW0gPSBmdW5jdGlvbiAoeDAsIHkwLCB4MSwgeTEsIHgyLCB5MiwgeDMsIHkzKSB7XG4gICAgdmFyIHR2YWx1ZXMgPSBbXTtcbiAgICB2YXIgYm91bmRzID0gW1tdLCBbXV07XG4gICAgdmFyIGE7XG4gICAgdmFyIGI7XG4gICAgdmFyIGM7XG4gICAgdmFyIHQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyOyArK2kpIHtcbiAgICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICAgIGIgPSA2ICogeDAgLSAxMiAqIHgxICsgNiAqIHgyO1xuICAgICAgICAgICAgYSA9IC0zICogeDAgKyA5ICogeDEgLSA5ICogeDIgKyAzICogeDM7XG4gICAgICAgICAgICBjID0gMyAqIHgxIC0gMyAqIHgwO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYiA9IDYgKiB5MCAtIDEyICogeTEgKyA2ICogeTI7XG4gICAgICAgICAgICBhID0gLTMgKiB5MCArIDkgKiB5MSAtIDkgKiB5MiArIDMgKiB5MztcbiAgICAgICAgICAgIGMgPSAzICogeTEgLSAzICogeTA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE1hdGguYWJzKGEpIDwgMWUtMTIpIHtcbiAgICAgICAgICAgIGlmIChNYXRoLmFicyhiKSA8IDFlLTEyKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0ID0gLWMgLyBiO1xuICAgICAgICAgICAgaWYgKHQgPiAwICYmIHQgPCAxKSB7XG4gICAgICAgICAgICAgICAgdHZhbHVlcy5wdXNoKHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGIyYWMgPSBiICogYiAtIDQgKiBjICogYTtcbiAgICAgICAgdmFyIHNxcnRiMmFjID0gTWF0aC5zcXJ0KGIyYWMpO1xuICAgICAgICBpZiAoYjJhYyA8IDApIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0MSA9ICgtYiArIHNxcnRiMmFjKSAvICgyICogYSk7XG4gICAgICAgIGlmICh0MSA+IDAgJiYgdDEgPCAxKSB7XG4gICAgICAgICAgICB0dmFsdWVzLnB1c2godDEpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0MiA9ICgtYiAtIHNxcnRiMmFjKSAvICgyICogYSk7XG4gICAgICAgIGlmICh0MiA+IDAgJiYgdDIgPCAxKSB7XG4gICAgICAgICAgICB0dmFsdWVzLnB1c2godDIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHZhciBqID0gdHZhbHVlcy5sZW5ndGg7XG4gICAgdmFyIGpsZW4gPSBqO1xuICAgIHZhciBtdDtcbiAgICB3aGlsZSAoai0tKSB7XG4gICAgICAgIHQgPSB0dmFsdWVzW2pdO1xuICAgICAgICBtdCA9IDEgLSB0O1xuICAgICAgICBib3VuZHNbMF1bal0gPSBtdCAqIG10ICogbXQgKiB4MCArIDMgKiBtdCAqIG10ICogdCAqIHgxICsgMyAqIG10ICogdCAqIHQgKiB4MiArIHQgKiB0ICogdCAqIHgzO1xuICAgICAgICBib3VuZHNbMV1bal0gPSBtdCAqIG10ICogbXQgKiB5MCArIDMgKiBtdCAqIG10ICogdCAqIHkxICsgMyAqIG10ICogdCAqIHQgKiB5MiArIHQgKiB0ICogdCAqIHkzO1xuICAgIH1cbiAgICBib3VuZHNbMF1bamxlbl0gPSB4MDtcbiAgICBib3VuZHNbMV1bamxlbl0gPSB5MDtcbiAgICBib3VuZHNbMF1bamxlbiArIDFdID0geDM7XG4gICAgYm91bmRzWzFdW2psZW4gKyAxXSA9IHkzO1xuICAgIGJvdW5kc1swXS5sZW5ndGggPSBib3VuZHNbMV0ubGVuZ3RoID0gamxlbiArIDI7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbWluOiB7XG4gICAgICAgICAgICB4OiBNYXRoLm1pbi5hcHBseSgwLCBib3VuZHNbMF0pLFxuICAgICAgICAgICAgeTogTWF0aC5taW4uYXBwbHkoMCwgYm91bmRzWzFdKSxcbiAgICAgICAgfSxcbiAgICAgICAgbWF4OiB7XG4gICAgICAgICAgICB4OiBNYXRoLm1heC5hcHBseSgwLCBib3VuZHNbMF0pLFxuICAgICAgICAgICAgeTogTWF0aC5tYXguYXBwbHkoMCwgYm91bmRzWzFdKSxcbiAgICAgICAgfSxcbiAgICB9O1xufTtcbnZhciBpbnRlcnNlY3QgPSBmdW5jdGlvbiAoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgeDQsIHk0KSB7XG4gICAgaWYgKE1hdGgubWF4KHgxLCB4MikgPCBNYXRoLm1pbih4MywgeDQpIHx8XG4gICAgICAgIE1hdGgubWluKHgxLCB4MikgPiBNYXRoLm1heCh4MywgeDQpIHx8XG4gICAgICAgIE1hdGgubWF4KHkxLCB5MikgPCBNYXRoLm1pbih5MywgeTQpIHx8XG4gICAgICAgIE1hdGgubWluKHkxLCB5MikgPiBNYXRoLm1heCh5MywgeTQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIG54ID0gKHgxICogeTIgLSB5MSAqIHgyKSAqICh4MyAtIHg0KSAtICh4MSAtIHgyKSAqICh4MyAqIHk0IC0geTMgKiB4NCk7XG4gICAgdmFyIG55ID0gKHgxICogeTIgLSB5MSAqIHgyKSAqICh5MyAtIHk0KSAtICh5MSAtIHkyKSAqICh4MyAqIHk0IC0geTMgKiB4NCk7XG4gICAgdmFyIGRlbm9taW5hdG9yID0gKHgxIC0geDIpICogKHkzIC0geTQpIC0gKHkxIC0geTIpICogKHgzIC0geDQpO1xuICAgIGlmICghZGVub21pbmF0b3IpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgcHggPSBueCAvIGRlbm9taW5hdG9yO1xuICAgIHZhciBweSA9IG55IC8gZGVub21pbmF0b3I7XG4gICAgdmFyIHB4MiA9ICtweC50b0ZpeGVkKDIpO1xuICAgIHZhciBweTIgPSArcHkudG9GaXhlZCgyKTtcbiAgICBpZiAocHgyIDwgK01hdGgubWluKHgxLCB4MikudG9GaXhlZCgyKSB8fFxuICAgICAgICBweDIgPiArTWF0aC5tYXgoeDEsIHgyKS50b0ZpeGVkKDIpIHx8XG4gICAgICAgIHB4MiA8ICtNYXRoLm1pbih4MywgeDQpLnRvRml4ZWQoMikgfHxcbiAgICAgICAgcHgyID4gK01hdGgubWF4KHgzLCB4NCkudG9GaXhlZCgyKSB8fFxuICAgICAgICBweTIgPCArTWF0aC5taW4oeTEsIHkyKS50b0ZpeGVkKDIpIHx8XG4gICAgICAgIHB5MiA+ICtNYXRoLm1heCh5MSwgeTIpLnRvRml4ZWQoMikgfHxcbiAgICAgICAgcHkyIDwgK01hdGgubWluKHkzLCB5NCkudG9GaXhlZCgyKSB8fFxuICAgICAgICBweTIgPiArTWF0aC5tYXgoeTMsIHk0KS50b0ZpeGVkKDIpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgeDogcHgsXG4gICAgICAgIHk6IHB5LFxuICAgIH07XG59O1xudmFyIGlzUG9pbnRJbnNpZGVCQm94ID0gZnVuY3Rpb24gKGJib3gsIHgsIHkpIHtcbiAgICByZXR1cm4geCA+PSBiYm94LnggJiYgeCA8PSBiYm94LnggKyBiYm94LndpZHRoICYmIHkgPj0gYmJveC55ICYmIHkgPD0gYmJveC55ICsgYmJveC5oZWlnaHQ7XG59O1xudmFyIHJlY3RQYXRoID0gZnVuY3Rpb24gKHgsIHksIHcsIGgsIHIpIHtcbiAgICBpZiAocikge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgWydNJywgK3ggKyArciwgeV0sXG4gICAgICAgICAgICBbJ2wnLCB3IC0gciAqIDIsIDBdLFxuICAgICAgICAgICAgWydhJywgciwgciwgMCwgMCwgMSwgciwgcl0sXG4gICAgICAgICAgICBbJ2wnLCAwLCBoIC0gciAqIDJdLFxuICAgICAgICAgICAgWydhJywgciwgciwgMCwgMCwgMSwgLXIsIHJdLFxuICAgICAgICAgICAgWydsJywgciAqIDIgLSB3LCAwXSxcbiAgICAgICAgICAgIFsnYScsIHIsIHIsIDAsIDAsIDEsIC1yLCAtcl0sXG4gICAgICAgICAgICBbJ2wnLCAwLCByICogMiAtIGhdLFxuICAgICAgICAgICAgWydhJywgciwgciwgMCwgMCwgMSwgciwgLXJdLFxuICAgICAgICAgICAgWyd6J10sXG4gICAgICAgIF07XG4gICAgfVxuICAgIHZhciByZXMgPSBbWydNJywgeCwgeV0sIFsnbCcsIHcsIDBdLCBbJ2wnLCAwLCBoXSwgWydsJywgLXcsIDBdLCBbJ3onXV07XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJlcy5wYXJzZVBhdGhBcnJheSA9IHBhcnNlUGF0aEFycmF5O1xuICAgIHJldHVybiByZXM7XG59O1xudmFyIGJveCA9IGZ1bmN0aW9uICh4LCB5LCB3aWR0aCwgaGVpZ2h0KSB7XG4gICAgaWYgKHggPT09IG51bGwpIHtcbiAgICAgICAgeCA9IHkgPSB3aWR0aCA9IGhlaWdodCA9IDA7XG4gICAgfVxuICAgIGlmICh5ID09PSBudWxsKSB7XG4gICAgICAgIHkgPSB4Lnk7XG4gICAgICAgIHdpZHRoID0geC53aWR0aDtcbiAgICAgICAgaGVpZ2h0ID0geC5oZWlnaHQ7XG4gICAgICAgIHggPSB4Lng7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHg6IHgsXG4gICAgICAgIHk6IHksXG4gICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgdzogd2lkdGgsXG4gICAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgICBoOiBoZWlnaHQsXG4gICAgICAgIHgyOiB4ICsgd2lkdGgsXG4gICAgICAgIHkyOiB5ICsgaGVpZ2h0LFxuICAgICAgICBjeDogeCArIHdpZHRoIC8gMixcbiAgICAgICAgY3k6IHkgKyBoZWlnaHQgLyAyLFxuICAgICAgICByMTogTWF0aC5taW4od2lkdGgsIGhlaWdodCkgLyAyLFxuICAgICAgICByMjogTWF0aC5tYXgod2lkdGgsIGhlaWdodCkgLyAyLFxuICAgICAgICByMDogTWF0aC5zcXJ0KHdpZHRoICogd2lkdGggKyBoZWlnaHQgKiBoZWlnaHQpIC8gMixcbiAgICAgICAgcGF0aDogcmVjdFBhdGgoeCwgeSwgd2lkdGgsIGhlaWdodCksXG4gICAgICAgIHZiOiBbeCwgeSwgd2lkdGgsIGhlaWdodF0uam9pbignICcpLFxuICAgIH07XG59O1xudmFyIGlzQkJveEludGVyc2VjdCA9IGZ1bmN0aW9uIChiYm94MSwgYmJveDIpIHtcbiAgICBiYm94MSA9IGJveChiYm94MSk7XG4gICAgYmJveDIgPSBib3goYmJveDIpO1xuICAgIHJldHVybiAoaXNQb2ludEluc2lkZUJCb3goYmJveDIsIGJib3gxLngsIGJib3gxLnkpIHx8XG4gICAgICAgIGlzUG9pbnRJbnNpZGVCQm94KGJib3gyLCBiYm94MS54MiwgYmJveDEueSkgfHxcbiAgICAgICAgaXNQb2ludEluc2lkZUJCb3goYmJveDIsIGJib3gxLngsIGJib3gxLnkyKSB8fFxuICAgICAgICBpc1BvaW50SW5zaWRlQkJveChiYm94MiwgYmJveDEueDIsIGJib3gxLnkyKSB8fFxuICAgICAgICBpc1BvaW50SW5zaWRlQkJveChiYm94MSwgYmJveDIueCwgYmJveDIueSkgfHxcbiAgICAgICAgaXNQb2ludEluc2lkZUJCb3goYmJveDEsIGJib3gyLngyLCBiYm94Mi55KSB8fFxuICAgICAgICBpc1BvaW50SW5zaWRlQkJveChiYm94MSwgYmJveDIueCwgYmJveDIueTIpIHx8XG4gICAgICAgIGlzUG9pbnRJbnNpZGVCQm94KGJib3gxLCBiYm94Mi54MiwgYmJveDIueTIpIHx8XG4gICAgICAgICgoKGJib3gxLnggPCBiYm94Mi54MiAmJiBiYm94MS54ID4gYmJveDIueCkgfHwgKGJib3gyLnggPCBiYm94MS54MiAmJiBiYm94Mi54ID4gYmJveDEueCkpICYmXG4gICAgICAgICAgICAoKGJib3gxLnkgPCBiYm94Mi55MiAmJiBiYm94MS55ID4gYmJveDIueSkgfHwgKGJib3gyLnkgPCBiYm94MS55MiAmJiBiYm94Mi55ID4gYmJveDEueSkpKSk7XG59O1xudmFyIGJlemllckJCb3ggPSBmdW5jdGlvbiAocDF4LCBwMXksIGMxeCwgYzF5LCBjMngsIGMyeSwgcDJ4LCBwMnkpIHtcbiAgICBpZiAoIWlzQXJyYXkocDF4KSkge1xuICAgICAgICBwMXggPSBbcDF4LCBwMXksIGMxeCwgYzF5LCBjMngsIGMyeSwgcDJ4LCBwMnldO1xuICAgIH1cbiAgICB2YXIgYmJveCA9IGN1cnZlRGltLmFwcGx5KG51bGwsIHAxeCk7XG4gICAgcmV0dXJuIGJveChiYm94Lm1pbi54LCBiYm94Lm1pbi55LCBiYm94Lm1heC54IC0gYmJveC5taW4ueCwgYmJveC5tYXgueSAtIGJib3gubWluLnkpO1xufTtcbnZhciBmaW5kRG90c0F0U2VnbWVudCA9IGZ1bmN0aW9uIChwMXgsIHAxeSwgYzF4LCBjMXksIGMyeCwgYzJ5LCBwMngsIHAyeSwgdCkge1xuICAgIHZhciB0MSA9IDEgLSB0O1xuICAgIHZhciB0MTMgPSBNYXRoLnBvdyh0MSwgMyk7XG4gICAgdmFyIHQxMiA9IE1hdGgucG93KHQxLCAyKTtcbiAgICB2YXIgdDIgPSB0ICogdDtcbiAgICB2YXIgdDMgPSB0MiAqIHQ7XG4gICAgdmFyIHggPSB0MTMgKiBwMXggKyB0MTIgKiAzICogdCAqIGMxeCArIHQxICogMyAqIHQgKiB0ICogYzJ4ICsgdDMgKiBwMng7XG4gICAgdmFyIHkgPSB0MTMgKiBwMXkgKyB0MTIgKiAzICogdCAqIGMxeSArIHQxICogMyAqIHQgKiB0ICogYzJ5ICsgdDMgKiBwMnk7XG4gICAgdmFyIG14ID0gcDF4ICsgMiAqIHQgKiAoYzF4IC0gcDF4KSArIHQyICogKGMyeCAtIDIgKiBjMXggKyBwMXgpO1xuICAgIHZhciBteSA9IHAxeSArIDIgKiB0ICogKGMxeSAtIHAxeSkgKyB0MiAqIChjMnkgLSAyICogYzF5ICsgcDF5KTtcbiAgICB2YXIgbnggPSBjMXggKyAyICogdCAqIChjMnggLSBjMXgpICsgdDIgKiAocDJ4IC0gMiAqIGMyeCArIGMxeCk7XG4gICAgdmFyIG55ID0gYzF5ICsgMiAqIHQgKiAoYzJ5IC0gYzF5KSArIHQyICogKHAyeSAtIDIgKiBjMnkgKyBjMXkpO1xuICAgIHZhciBheCA9IHQxICogcDF4ICsgdCAqIGMxeDtcbiAgICB2YXIgYXkgPSB0MSAqIHAxeSArIHQgKiBjMXk7XG4gICAgdmFyIGN4ID0gdDEgKiBjMnggKyB0ICogcDJ4O1xuICAgIHZhciBjeSA9IHQxICogYzJ5ICsgdCAqIHAyeTtcbiAgICB2YXIgYWxwaGEgPSA5MCAtIChNYXRoLmF0YW4yKG14IC0gbngsIG15IC0gbnkpICogMTgwKSAvIE1hdGguUEk7XG4gICAgLy8gKG14ID4gbnggfHwgbXkgPCBueSkgJiYgKGFscGhhICs9IDE4MCk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgeDogeCxcbiAgICAgICAgeTogeSxcbiAgICAgICAgbToge1xuICAgICAgICAgICAgeDogbXgsXG4gICAgICAgICAgICB5OiBteSxcbiAgICAgICAgfSxcbiAgICAgICAgbjoge1xuICAgICAgICAgICAgeDogbngsXG4gICAgICAgICAgICB5OiBueSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhcnQ6IHtcbiAgICAgICAgICAgIHg6IGF4LFxuICAgICAgICAgICAgeTogYXksXG4gICAgICAgIH0sXG4gICAgICAgIGVuZDoge1xuICAgICAgICAgICAgeDogY3gsXG4gICAgICAgICAgICB5OiBjeSxcbiAgICAgICAgfSxcbiAgICAgICAgYWxwaGE6IGFscGhhLFxuICAgIH07XG59O1xudmFyIGludGVySGVscGVyID0gZnVuY3Rpb24gKGJlejEsIGJlejIsIGp1c3RDb3VudCkge1xuICAgIHZhciBiYm94MSA9IGJlemllckJCb3goYmV6MSk7XG4gICAgdmFyIGJib3gyID0gYmV6aWVyQkJveChiZXoyKTtcbiAgICBpZiAoIWlzQkJveEludGVyc2VjdChiYm94MSwgYmJveDIpKSB7XG4gICAgICAgIHJldHVybiBqdXN0Q291bnQgPyAwIDogW107XG4gICAgfVxuICAgIHZhciBsMSA9IGJlemxlbi5hcHBseSgwLCBiZXoxKTtcbiAgICB2YXIgbDIgPSBiZXpsZW4uYXBwbHkoMCwgYmV6Mik7XG4gICAgdmFyIG4xID0gfn4obDEgLyA4KTtcbiAgICB2YXIgbjIgPSB+fihsMiAvIDgpO1xuICAgIHZhciBkb3RzMSA9IFtdO1xuICAgIHZhciBkb3RzMiA9IFtdO1xuICAgIHZhciB4eSA9IHt9O1xuICAgIHZhciByZXMgPSBqdXN0Q291bnQgPyAwIDogW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuMSArIDE7IGkrKykge1xuICAgICAgICB2YXIgZCA9IGZpbmREb3RzQXRTZWdtZW50LmFwcGx5KDAsIGJlejEuY29uY2F0KGkgLyBuMSkpO1xuICAgICAgICBkb3RzMS5wdXNoKHtcbiAgICAgICAgICAgIHg6IGQueCxcbiAgICAgICAgICAgIHk6IGQueSxcbiAgICAgICAgICAgIHQ6IGkgLyBuMSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjIgKyAxOyBpKyspIHtcbiAgICAgICAgdmFyIGQgPSBmaW5kRG90c0F0U2VnbWVudC5hcHBseSgwLCBiZXoyLmNvbmNhdChpIC8gbjIpKTtcbiAgICAgICAgZG90czIucHVzaCh7XG4gICAgICAgICAgICB4OiBkLngsXG4gICAgICAgICAgICB5OiBkLnksXG4gICAgICAgICAgICB0OiBpIC8gbjIsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG4xOyBpKyspIHtcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBuMjsgaisrKSB7XG4gICAgICAgICAgICB2YXIgZGkgPSBkb3RzMVtpXTtcbiAgICAgICAgICAgIHZhciBkaTEgPSBkb3RzMVtpICsgMV07XG4gICAgICAgICAgICB2YXIgZGogPSBkb3RzMltqXTtcbiAgICAgICAgICAgIHZhciBkajEgPSBkb3RzMltqICsgMV07XG4gICAgICAgICAgICB2YXIgY2kgPSBNYXRoLmFicyhkaTEueCAtIGRpLngpIDwgMC4wMDEgPyAneScgOiAneCc7XG4gICAgICAgICAgICB2YXIgY2ogPSBNYXRoLmFicyhkajEueCAtIGRqLngpIDwgMC4wMDEgPyAneScgOiAneCc7XG4gICAgICAgICAgICB2YXIgaXMgPSBpbnRlcnNlY3QoZGkueCwgZGkueSwgZGkxLngsIGRpMS55LCBkai54LCBkai55LCBkajEueCwgZGoxLnkpO1xuICAgICAgICAgICAgaWYgKGlzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHh5W2lzLngudG9GaXhlZCg0KV0gPT09IGlzLnkudG9GaXhlZCg0KSkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeHlbaXMueC50b0ZpeGVkKDQpXSA9IGlzLnkudG9GaXhlZCg0KTtcbiAgICAgICAgICAgICAgICB2YXIgdDEgPSBkaS50ICsgTWF0aC5hYnMoKGlzW2NpXSAtIGRpW2NpXSkgLyAoZGkxW2NpXSAtIGRpW2NpXSkpICogKGRpMS50IC0gZGkudCk7XG4gICAgICAgICAgICAgICAgdmFyIHQyID0gZGoudCArIE1hdGguYWJzKChpc1tjal0gLSBkaltjal0pIC8gKGRqMVtjal0gLSBkaltjal0pKSAqIChkajEudCAtIGRqLnQpO1xuICAgICAgICAgICAgICAgIGlmICh0MSA+PSAwICYmIHQxIDw9IDEgJiYgdDIgPj0gMCAmJiB0MiA8PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChqdXN0Q291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcyArPSAxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IGlzLngsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogaXMueSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0MTogdDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdDI6IHQyLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn07XG52YXIgaW50ZXJQYXRoSGVscGVyID0gZnVuY3Rpb24gKHBhdGgxLCBwYXRoMiwganVzdENvdW50KSB7XG4gICAgcGF0aDEgPSBwYXRoVG9DdXJ2ZShwYXRoMSk7XG4gICAgcGF0aDIgPSBwYXRoVG9DdXJ2ZShwYXRoMik7XG4gICAgdmFyIHgxO1xuICAgIHZhciB5MTtcbiAgICB2YXIgeDI7XG4gICAgdmFyIHkyO1xuICAgIHZhciB4MW07XG4gICAgdmFyIHkxbTtcbiAgICB2YXIgeDJtO1xuICAgIHZhciB5Mm07XG4gICAgdmFyIGJlejE7XG4gICAgdmFyIGJlejI7XG4gICAgdmFyIHJlcyA9IGp1c3RDb3VudCA/IDAgOiBbXTtcbiAgICBmb3IgKHZhciBpID0gMCwgaWkgPSBwYXRoMS5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7XG4gICAgICAgIHZhciBwaSA9IHBhdGgxW2ldO1xuICAgICAgICBpZiAocGlbMF0gPT09ICdNJykge1xuICAgICAgICAgICAgeDEgPSB4MW0gPSBwaVsxXTtcbiAgICAgICAgICAgIHkxID0geTFtID0gcGlbMl07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAocGlbMF0gPT09ICdDJykge1xuICAgICAgICAgICAgICAgIGJlejEgPSBbeDEsIHkxXS5jb25jYXQocGkuc2xpY2UoMSkpO1xuICAgICAgICAgICAgICAgIHgxID0gYmV6MVs2XTtcbiAgICAgICAgICAgICAgICB5MSA9IGJlejFbN107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBiZXoxID0gW3gxLCB5MSwgeDEsIHkxLCB4MW0sIHkxbSwgeDFtLCB5MW1dO1xuICAgICAgICAgICAgICAgIHgxID0geDFtO1xuICAgICAgICAgICAgICAgIHkxID0geTFtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDAsIGpqID0gcGF0aDIubGVuZ3RoOyBqIDwgamo7IGorKykge1xuICAgICAgICAgICAgICAgIHZhciBwaiA9IHBhdGgyW2pdO1xuICAgICAgICAgICAgICAgIGlmIChwalswXSA9PT0gJ00nKSB7XG4gICAgICAgICAgICAgICAgICAgIHgyID0geDJtID0gcGpbMV07XG4gICAgICAgICAgICAgICAgICAgIHkyID0geTJtID0gcGpbMl07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAocGpbMF0gPT09ICdDJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmV6MiA9IFt4MiwgeTJdLmNvbmNhdChwai5zbGljZSgxKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB4MiA9IGJlejJbNl07XG4gICAgICAgICAgICAgICAgICAgICAgICB5MiA9IGJlejJbN107XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiZXoyID0gW3gyLCB5MiwgeDIsIHkyLCB4Mm0sIHkybSwgeDJtLCB5Mm1dO1xuICAgICAgICAgICAgICAgICAgICAgICAgeDIgPSB4Mm07XG4gICAgICAgICAgICAgICAgICAgICAgICB5MiA9IHkybTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2YXIgaW50ciA9IGludGVySGVscGVyKGJlejEsIGJlejIsIGp1c3RDb3VudCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChqdXN0Q291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcyArPSBpbnRyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgayA9IDAsIGtrID0gaW50ci5sZW5ndGg7IGsgPCBrazsgaysrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50cltrXS5zZWdtZW50MSA9IGk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50cltrXS5zZWdtZW50MiA9IGo7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50cltrXS5iZXoxID0gYmV6MTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRyW2tdLmJlejIgPSBiZXoyO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gcmVzLmNvbmNhdChpbnRyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufTtcbnZhciBpbnRlcnNlY3Rpb24gPSBmdW5jdGlvbiAocGF0aDEsIHBhdGgyKSB7XG4gICAgcmV0dXJuIGludGVyUGF0aEhlbHBlcihwYXRoMSwgcGF0aDIpO1xufTtcbmZ1bmN0aW9uIGRlY2FzdGVsamF1KHBvaW50cywgdCkge1xuICAgIHZhciBsZWZ0ID0gW107XG4gICAgdmFyIHJpZ2h0ID0gW107XG4gICAgZnVuY3Rpb24gcmVjdXJzZShwb2ludHMsIHQpIHtcbiAgICAgICAgaWYgKHBvaW50cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGxlZnQucHVzaChwb2ludHNbMF0pO1xuICAgICAgICAgICAgcmlnaHQucHVzaChwb2ludHNbMF0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIG1pZGRsZVBvaW50cyA9IFtdO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgbGVmdC5wdXNoKHBvaW50c1swXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpID09PSBwb2ludHMubGVuZ3RoIC0gMikge1xuICAgICAgICAgICAgICAgICAgICByaWdodC5wdXNoKHBvaW50c1tpICsgMV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBtaWRkbGVQb2ludHNbaV0gPSBbXG4gICAgICAgICAgICAgICAgICAgICgxIC0gdCkgKiBwb2ludHNbaV1bMF0gKyB0ICogcG9pbnRzW2kgKyAxXVswXSxcbiAgICAgICAgICAgICAgICAgICAgKDEgLSB0KSAqIHBvaW50c1tpXVsxXSArIHQgKiBwb2ludHNbaSArIDFdWzFdLFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZWN1cnNlKG1pZGRsZVBvaW50cywgdCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHBvaW50cy5sZW5ndGgpIHtcbiAgICAgICAgcmVjdXJzZShwb2ludHMsIHQpO1xuICAgIH1cbiAgICByZXR1cm4geyBsZWZ0OiBsZWZ0LCByaWdodDogcmlnaHQucmV2ZXJzZSgpIH07XG59XG5mdW5jdGlvbiBzcGxpdEN1cnZlKHN0YXJ0LCBlbmQsIGNvdW50KSB7XG4gICAgdmFyIHBvaW50cyA9IFtbc3RhcnRbMV0sIHN0YXJ0WzJdXV07XG4gICAgY291bnQgPSBjb3VudCB8fCAyO1xuICAgIHZhciBzZWdtZW50cyA9IFtdO1xuICAgIGlmIChlbmRbMF0gPT09ICdBJykge1xuICAgICAgICBwb2ludHMucHVzaChlbmRbNl0pO1xuICAgICAgICBwb2ludHMucHVzaChlbmRbN10pO1xuICAgIH1cbiAgICBlbHNlIGlmIChlbmRbMF0gPT09ICdDJykge1xuICAgICAgICBwb2ludHMucHVzaChbZW5kWzFdLCBlbmRbMl1dKTtcbiAgICAgICAgcG9pbnRzLnB1c2goW2VuZFszXSwgZW5kWzRdXSk7XG4gICAgICAgIHBvaW50cy5wdXNoKFtlbmRbNV0sIGVuZFs2XV0pO1xuICAgIH1cbiAgICBlbHNlIGlmIChlbmRbMF0gPT09ICdTJyB8fCBlbmRbMF0gPT09ICdRJykge1xuICAgICAgICBwb2ludHMucHVzaChbZW5kWzFdLCBlbmRbMl1dKTtcbiAgICAgICAgcG9pbnRzLnB1c2goW2VuZFszXSwgZW5kWzRdXSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBwb2ludHMucHVzaChbZW5kWzFdLCBlbmRbMl1dKTtcbiAgICB9XG4gICAgdmFyIGxlZnRTZWdtZW50cyA9IHBvaW50cztcbiAgICB2YXIgdCA9IDEgLyBjb3VudDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50IC0gMTsgaSsrKSB7XG4gICAgICAgIHZhciBydCA9IHQgLyAoMSAtIHQgKiBpKTtcbiAgICAgICAgdmFyIHNwbGl0ID0gZGVjYXN0ZWxqYXUobGVmdFNlZ21lbnRzLCBydCk7XG4gICAgICAgIHNlZ21lbnRzLnB1c2goc3BsaXQubGVmdCk7XG4gICAgICAgIGxlZnRTZWdtZW50cyA9IHNwbGl0LnJpZ2h0O1xuICAgIH1cbiAgICBzZWdtZW50cy5wdXNoKGxlZnRTZWdtZW50cyk7XG4gICAgdmFyIHJlc3VsdCA9IHNlZ21lbnRzLm1hcChmdW5jdGlvbiAoc2VnbWVudCkge1xuICAgICAgICB2YXIgY21kID0gW107XG4gICAgICAgIGlmIChzZWdtZW50Lmxlbmd0aCA9PT0gNCkge1xuICAgICAgICAgICAgY21kLnB1c2goJ0MnKTtcbiAgICAgICAgICAgIGNtZCA9IGNtZC5jb25jYXQoc2VnbWVudFsyXSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID49IDMpIHtcbiAgICAgICAgICAgIGlmIChzZWdtZW50Lmxlbmd0aCA9PT0gMykge1xuICAgICAgICAgICAgICAgIGNtZC5wdXNoKCdRJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjbWQgPSBjbWQuY29uY2F0KHNlZ21lbnRbMV0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZWdtZW50Lmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgY21kLnB1c2goJ0wnKTtcbiAgICAgICAgfVxuICAgICAgICBjbWQgPSBjbWQuY29uY2F0KHNlZ21lbnRbc2VnbWVudC5sZW5ndGggLSAxXSk7XG4gICAgICAgIHJldHVybiBjbWQ7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbnZhciBzcGxpdFNlZ21lbnQgPSBmdW5jdGlvbiAoc3RhcnQsIGVuZCwgY291bnQpIHtcbiAgICBpZiAoY291bnQgPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIFtbXS5jb25jYXQoc3RhcnQpXTtcbiAgICB9XG4gICAgdmFyIHNlZ21lbnRzID0gW107XG4gICAgaWYgKGVuZFswXSA9PT0gJ0wnIHx8IGVuZFswXSA9PT0gJ0MnIHx8IGVuZFswXSA9PT0gJ1EnKSB7XG4gICAgICAgIHNlZ21lbnRzID0gc2VnbWVudHMuY29uY2F0KHNwbGl0Q3VydmUoc3RhcnQsIGVuZCwgY291bnQpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHZhciB0ZW1wID0gW10uY29uY2F0KHN0YXJ0KTtcbiAgICAgICAgaWYgKHRlbXBbMF0gPT09ICdNJykge1xuICAgICAgICAgICAgdGVtcFswXSA9ICdMJztcbiAgICAgICAgfVxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8PSBjb3VudCAtIDE7IGkrKykge1xuICAgICAgICAgICAgc2VnbWVudHMucHVzaCh0ZW1wKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc2VnbWVudHM7XG59O1xudmFyIGZpbGxQYXRoID0gZnVuY3Rpb24gKHNvdXJjZSwgdGFyZ2V0KSB7XG4gICAgaWYgKHNvdXJjZS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIHNvdXJjZTtcbiAgICB9XG4gICAgdmFyIHNvdXJjZUxlbiA9IHNvdXJjZS5sZW5ndGggLSAxO1xuICAgIHZhciB0YXJnZXRMZW4gPSB0YXJnZXQubGVuZ3RoIC0gMTtcbiAgICB2YXIgcmF0aW8gPSBzb3VyY2VMZW4gLyB0YXJnZXRMZW47XG4gICAgdmFyIHNlZ21lbnRzVG9GaWxsID0gW107XG4gICAgaWYgKHNvdXJjZS5sZW5ndGggPT09IDEgJiYgc291cmNlWzBdWzBdID09PSAnTScpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0YXJnZXRMZW4gLSBzb3VyY2VMZW47IGkrKykge1xuICAgICAgICAgICAgc291cmNlLnB1c2goc291cmNlWzBdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc291cmNlO1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRhcmdldExlbjsgaSsrKSB7XG4gICAgICAgIHZhciBpbmRleCA9IE1hdGguZmxvb3IocmF0aW8gKiBpKTtcbiAgICAgICAgc2VnbWVudHNUb0ZpbGxbaW5kZXhdID0gKHNlZ21lbnRzVG9GaWxsW2luZGV4XSB8fCAwKSArIDE7XG4gICAgfVxuICAgIHZhciBmaWxsZWQgPSBzZWdtZW50c1RvRmlsbC5yZWR1Y2UoZnVuY3Rpb24gKGZpbGxlZCwgY291bnQsIGkpIHtcbiAgICAgICAgaWYgKGkgPT09IHNvdXJjZUxlbikge1xuICAgICAgICAgICAgcmV0dXJuIGZpbGxlZC5jb25jYXQoc291cmNlW3NvdXJjZUxlbl0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWxsZWQuY29uY2F0KHNwbGl0U2VnbWVudChzb3VyY2VbaV0sIHNvdXJjZVtpICsgMV0sIGNvdW50KSk7XG4gICAgfSwgW10pO1xuICAgIGZpbGxlZC51bnNoaWZ0KHNvdXJjZVswXSk7XG4gICAgaWYgKHRhcmdldFt0YXJnZXRMZW5dID09PSAnWicgfHwgdGFyZ2V0W3RhcmdldExlbl0gPT09ICd6Jykge1xuICAgICAgICBmaWxsZWQucHVzaCgnWicpO1xuICAgIH1cbiAgICByZXR1cm4gZmlsbGVkO1xufTtcbnZhciBpc0VxdWFsID0gZnVuY3Rpb24gKG9iajEsIG9iajIpIHtcbiAgICBpZiAob2JqMS5sZW5ndGggIT09IG9iajIubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdmFyIHJlc3VsdCA9IHRydWU7XG4gICAgZWFjaChvYmoxLCBmdW5jdGlvbiAoaXRlbSwgaSkge1xuICAgICAgICBpZiAoaXRlbSAhPT0gb2JqMltpXSkge1xuICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufTtcbmZ1bmN0aW9uIGdldE1pbkRpZmYoZGVsLCBhZGQsIG1vZGlmeSkge1xuICAgIHZhciB0eXBlID0gbnVsbDtcbiAgICB2YXIgbWluID0gbW9kaWZ5O1xuICAgIGlmIChhZGQgPCBtaW4pIHtcbiAgICAgICAgbWluID0gYWRkO1xuICAgICAgICB0eXBlID0gJ2FkZCc7XG4gICAgfVxuICAgIGlmIChkZWwgPCBtaW4pIHtcbiAgICAgICAgbWluID0gZGVsO1xuICAgICAgICB0eXBlID0gJ2RlbCc7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgIG1pbjogbWluLFxuICAgIH07XG59XG4vKlxuICogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGV2ZW5zaHRlaW5fZGlzdGFuY2VcbiAqIOiuoeeul+S4pOadoXBhdGjnmoTnvJbovpHot53nprtcbiAqL1xudmFyIGxldmVuc2h0ZWluRGlzdGFuY2UgPSBmdW5jdGlvbiAoc291cmNlLCB0YXJnZXQpIHtcbiAgICB2YXIgc291cmNlTGVuID0gc291cmNlLmxlbmd0aDtcbiAgICB2YXIgdGFyZ2V0TGVuID0gdGFyZ2V0Lmxlbmd0aDtcbiAgICB2YXIgc291cmNlU2VnbWVudDtcbiAgICB2YXIgdGFyZ2V0U2VnbWVudDtcbiAgICB2YXIgdGVtcCA9IDA7XG4gICAgaWYgKHNvdXJjZUxlbiA9PT0gMCB8fCB0YXJnZXRMZW4gPT09IDApIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBkaXN0ID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gc291cmNlTGVuOyBpKyspIHtcbiAgICAgICAgZGlzdFtpXSA9IFtdO1xuICAgICAgICBkaXN0W2ldWzBdID0geyBtaW46IGkgfTtcbiAgICB9XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPD0gdGFyZ2V0TGVuOyBqKyspIHtcbiAgICAgICAgZGlzdFswXVtqXSA9IHsgbWluOiBqIH07XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IHNvdXJjZUxlbjsgaSsrKSB7XG4gICAgICAgIHNvdXJjZVNlZ21lbnQgPSBzb3VyY2VbaSAtIDFdO1xuICAgICAgICBmb3IgKHZhciBqID0gMTsgaiA8PSB0YXJnZXRMZW47IGorKykge1xuICAgICAgICAgICAgdGFyZ2V0U2VnbWVudCA9IHRhcmdldFtqIC0gMV07XG4gICAgICAgICAgICBpZiAoaXNFcXVhbChzb3VyY2VTZWdtZW50LCB0YXJnZXRTZWdtZW50KSkge1xuICAgICAgICAgICAgICAgIHRlbXAgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGVtcCA9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgZGVsID0gZGlzdFtpIC0gMV1bal0ubWluICsgMTtcbiAgICAgICAgICAgIHZhciBhZGQgPSBkaXN0W2ldW2ogLSAxXS5taW4gKyAxO1xuICAgICAgICAgICAgdmFyIG1vZGlmeSA9IGRpc3RbaSAtIDFdW2ogLSAxXS5taW4gKyB0ZW1wO1xuICAgICAgICAgICAgZGlzdFtpXVtqXSA9IGdldE1pbkRpZmYoZGVsLCBhZGQsIG1vZGlmeSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRpc3Q7XG59O1xudmFyIGZpbGxQYXRoQnlEaWZmID0gZnVuY3Rpb24gKHNvdXJjZSwgdGFyZ2V0KSB7XG4gICAgdmFyIGRpZmZNYXRyaXggPSBsZXZlbnNodGVpbkRpc3RhbmNlKHNvdXJjZSwgdGFyZ2V0KTtcbiAgICB2YXIgc291cmNlTGVuID0gc291cmNlLmxlbmd0aDtcbiAgICB2YXIgdGFyZ2V0TGVuID0gdGFyZ2V0Lmxlbmd0aDtcbiAgICB2YXIgY2hhbmdlcyA9IFtdO1xuICAgIHZhciBpbmRleCA9IDE7XG4gICAgdmFyIG1pblBvcyA9IDE7XG4gICAgLy8g5aaC5p6cc291cmNl5ZKMdGFyZ2V05LiN5piv5a6M5YWo5LiN55u4562JXG4gICAgaWYgKGRpZmZNYXRyaXhbc291cmNlTGVuXVt0YXJnZXRMZW5dLm1pbiAhPT0gc291cmNlTGVuKSB7XG4gICAgICAgIC8vIOiOt+WPluS7jnNvdXJjZeWIsHRhcmdldOaJgOmcgOaUueWKqFxuICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8PSBzb3VyY2VMZW47IGkrKykge1xuICAgICAgICAgICAgdmFyIG1pbiA9IGRpZmZNYXRyaXhbaV1baV0ubWluO1xuICAgICAgICAgICAgbWluUG9zID0gaTtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSBpbmRleDsgaiA8PSB0YXJnZXRMZW47IGorKykge1xuICAgICAgICAgICAgICAgIGlmIChkaWZmTWF0cml4W2ldW2pdLm1pbiA8IG1pbikge1xuICAgICAgICAgICAgICAgICAgICBtaW4gPSBkaWZmTWF0cml4W2ldW2pdLm1pbjtcbiAgICAgICAgICAgICAgICAgICAgbWluUG9zID0gajtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpbmRleCA9IG1pblBvcztcbiAgICAgICAgICAgIGlmIChkaWZmTWF0cml4W2ldW2luZGV4XS50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2hhbmdlcy5wdXNoKHsgaW5kZXg6IGkgLSAxLCB0eXBlOiBkaWZmTWF0cml4W2ldW2luZGV4XS50eXBlIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIOWvuXNvdXJjZei/m+ihjOWinuWIoHBhdGhcbiAgICAgICAgZm9yICh2YXIgaSA9IGNoYW5nZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGluZGV4ID0gY2hhbmdlc1tpXS5pbmRleDtcbiAgICAgICAgICAgIGlmIChjaGFuZ2VzW2ldLnR5cGUgPT09ICdhZGQnKSB7XG4gICAgICAgICAgICAgICAgc291cmNlLnNwbGljZShpbmRleCwgMCwgW10uY29uY2F0KHNvdXJjZVtpbmRleF0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNvdXJjZS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIHNvdXJjZeWwvumDqOihpem9kFxuICAgIHNvdXJjZUxlbiA9IHNvdXJjZS5sZW5ndGg7XG4gICAgdmFyIGRpZmYgPSB0YXJnZXRMZW4gLSBzb3VyY2VMZW47XG4gICAgaWYgKHNvdXJjZUxlbiA8IHRhcmdldExlbikge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRpZmY7IGkrKykge1xuICAgICAgICAgICAgaWYgKHNvdXJjZVtzb3VyY2VMZW4gLSAxXVswXSA9PT0gJ3onIHx8IHNvdXJjZVtzb3VyY2VMZW4gLSAxXVswXSA9PT0gJ1onKSB7XG4gICAgICAgICAgICAgICAgc291cmNlLnNwbGljZShzb3VyY2VMZW4gLSAyLCAwLCBzb3VyY2Vbc291cmNlTGVuIC0gMl0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgc291cmNlLnB1c2goc291cmNlW3NvdXJjZUxlbiAtIDFdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNvdXJjZUxlbiArPSAxO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzb3VyY2U7XG59O1xuLy8g5bCG5Lik5Liq54K55Z2H5YiG5oiQY291bnTkuKrngrlcbmZ1bmN0aW9uIF9zcGxpdFBvaW50cyhwb2ludHMsIGZvcm1lciwgY291bnQpIHtcbiAgICB2YXIgcmVzdWx0ID0gW10uY29uY2F0KHBvaW50cyk7XG4gICAgdmFyIGluZGV4O1xuICAgIHZhciB0ID0gMSAvIChjb3VudCArIDEpO1xuICAgIHZhciBmb3JtZXJFbmQgPSBfZ2V0U2VnbWVudFBvaW50cyhmb3JtZXIpWzBdO1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IGNvdW50OyBpKyspIHtcbiAgICAgICAgdCAqPSBpO1xuICAgICAgICBpbmRleCA9IE1hdGguZmxvb3IocG9pbnRzLmxlbmd0aCAqIHQpO1xuICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgIHJlc3VsdC51bnNoaWZ0KFtmb3JtZXJFbmRbMF0gKiB0ICsgcG9pbnRzW2luZGV4XVswXSAqICgxIC0gdCksIGZvcm1lckVuZFsxXSAqIHQgKyBwb2ludHNbaW5kZXhdWzFdICogKDEgLSB0KV0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0LnNwbGljZShpbmRleCwgMCwgW1xuICAgICAgICAgICAgICAgIGZvcm1lckVuZFswXSAqIHQgKyBwb2ludHNbaW5kZXhdWzBdICogKDEgLSB0KSxcbiAgICAgICAgICAgICAgICBmb3JtZXJFbmRbMV0gKiB0ICsgcG9pbnRzW2luZGV4XVsxXSAqICgxIC0gdCksXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuLypcbiAqIOaKveWPlnBhdGhTZWdtZW505Lit55qE5YWz6ZSu54K5XG4gKiBNLEwsQSxRLEgsVuS4gOS4querr+eCuVxuICogUSwgU+aKveWPluS4gOS4querr+eCue+8jOS4gOS4quaOp+WItueCuVxuICogQ+aKveWPluS4gOS4querr+eCue+8jOS4pOS4quaOp+WItueCuVxuICovXG5mdW5jdGlvbiBfZ2V0U2VnbWVudFBvaW50cyhzZWdtZW50KSB7XG4gICAgdmFyIHBvaW50cyA9IFtdO1xuICAgIHN3aXRjaCAoc2VnbWVudFswXSkge1xuICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKFtzZWdtZW50WzFdLCBzZWdtZW50WzJdXSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnTCc6XG4gICAgICAgICAgICBwb2ludHMucHVzaChbc2VnbWVudFsxXSwgc2VnbWVudFsyXV0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0EnOlxuICAgICAgICAgICAgcG9pbnRzLnB1c2goW3NlZ21lbnRbNl0sIHNlZ21lbnRbN11dKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdRJzpcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKFtzZWdtZW50WzNdLCBzZWdtZW50WzRdXSk7XG4gICAgICAgICAgICBwb2ludHMucHVzaChbc2VnbWVudFsxXSwgc2VnbWVudFsyXV0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1QnOlxuICAgICAgICAgICAgcG9pbnRzLnB1c2goW3NlZ21lbnRbMV0sIHNlZ21lbnRbMl1dKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdDJzpcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKFtzZWdtZW50WzVdLCBzZWdtZW50WzZdXSk7XG4gICAgICAgICAgICBwb2ludHMucHVzaChbc2VnbWVudFsxXSwgc2VnbWVudFsyXV0pO1xuICAgICAgICAgICAgcG9pbnRzLnB1c2goW3NlZ21lbnRbM10sIHNlZ21lbnRbNF1dKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdTJzpcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKFtzZWdtZW50WzNdLCBzZWdtZW50WzRdXSk7XG4gICAgICAgICAgICBwb2ludHMucHVzaChbc2VnbWVudFsxXSwgc2VnbWVudFsyXV0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0gnOlxuICAgICAgICAgICAgcG9pbnRzLnB1c2goW3NlZ21lbnRbMV0sIHNlZ21lbnRbMV1dKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdWJzpcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKFtzZWdtZW50WzFdLCBzZWdtZW50WzFdXSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICB9XG4gICAgcmV0dXJuIHBvaW50cztcbn1cbnZhciBmb3JtYXRQYXRoID0gZnVuY3Rpb24gKGZyb21QYXRoLCB0b1BhdGgpIHtcbiAgICBpZiAoZnJvbVBhdGgubGVuZ3RoIDw9IDEpIHtcbiAgICAgICAgcmV0dXJuIGZyb21QYXRoO1xuICAgIH1cbiAgICB2YXIgcG9pbnRzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG9QYXRoLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChmcm9tUGF0aFtpXVswXSAhPT0gdG9QYXRoW2ldWzBdKSB7XG4gICAgICAgICAgICAvLyDojrflj5Zmcm9tUGF0aOeahHBhdGhTZWdtZW5055qE56uv54K577yM5qC55o2udG9QYXRo55qE5oyH5Luk5a+55YW25pS56YCgXG4gICAgICAgICAgICBwb2ludHMgPSBfZ2V0U2VnbWVudFBvaW50cyhmcm9tUGF0aFtpXSk7XG4gICAgICAgICAgICBzd2l0Y2ggKHRvUGF0aFtpXVswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgICAgICBmcm9tUGF0aFtpXSA9IFsnTSddLmNvbmNhdChwb2ludHNbMF0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdMJzpcbiAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGhbaV0gPSBbJ0wnXS5jb25jYXQocG9pbnRzWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnQSc6XG4gICAgICAgICAgICAgICAgICAgIGZyb21QYXRoW2ldID0gW10uY29uY2F0KHRvUGF0aFtpXSk7XG4gICAgICAgICAgICAgICAgICAgIGZyb21QYXRoW2ldWzZdID0gcG9pbnRzWzBdWzBdO1xuICAgICAgICAgICAgICAgICAgICBmcm9tUGF0aFtpXVs3XSA9IHBvaW50c1swXVsxXTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnUSc6XG4gICAgICAgICAgICAgICAgICAgIGlmIChwb2ludHMubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzID0gX3NwbGl0UG9pbnRzKHBvaW50cywgZnJvbVBhdGhbaSAtIDFdLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21QYXRoW2ldID0gdG9QYXRoW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZyb21QYXRoW2ldID0gWydRJ10uY29uY2F0KHBvaW50cy5yZWR1Y2UoZnVuY3Rpb24gKGFyciwgaSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFyci5jb25jYXQoaSk7XG4gICAgICAgICAgICAgICAgICAgIH0sIFtdKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ1QnOlxuICAgICAgICAgICAgICAgICAgICBmcm9tUGF0aFtpXSA9IFsnVCddLmNvbmNhdChwb2ludHNbMF0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdDJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBvaW50cy5sZW5ndGggPCAzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBfc3BsaXRQb2ludHMocG9pbnRzLCBmcm9tUGF0aFtpIC0gMV0sIDIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGhbaV0gPSB0b1BhdGhbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZnJvbVBhdGhbaV0gPSBbJ0MnXS5jb25jYXQocG9pbnRzLnJlZHVjZShmdW5jdGlvbiAoYXJyLCBpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXJyLmNvbmNhdChpKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgW10pKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnUyc6XG4gICAgICAgICAgICAgICAgICAgIGlmIChwb2ludHMubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzID0gX3NwbGl0UG9pbnRzKHBvaW50cywgZnJvbVBhdGhbaSAtIDFdLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21QYXRoW2ldID0gdG9QYXRoW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZyb21QYXRoW2ldID0gWydTJ10uY29uY2F0KHBvaW50cy5yZWR1Y2UoZnVuY3Rpb24gKGFyciwgaSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFyci5jb25jYXQoaSk7XG4gICAgICAgICAgICAgICAgICAgIH0sIFtdKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGZyb21QYXRoW2ldID0gdG9QYXRoW2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmcm9tUGF0aDtcbn07XG5leHBvcnQgeyBjYXRtdWxsUm9tVG9CZXppZXIsIGZpbGxQYXRoLCBmaWxsUGF0aEJ5RGlmZiwgZm9ybWF0UGF0aCwgaW50ZXJzZWN0aW9uLCBwYXJzZVBhdGhBcnJheSwgcGFyc2VQYXRoU3RyaW5nLCBwYXRoVG9BYnNvbHV0ZSwgcGF0aFRvQ3VydmUsIHJlY3RQYXRoLCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGF0aC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/path.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/text.js":
/*!************************************************************************!*\
!*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/text.js ***!
\************************************************************************/
/*! exports provided: getTextHeight, getLineSpaceing, getTextWidth, assembleFont */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTextHeight\", function() { return getTextHeight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLineSpaceing\", function() { return getLineSpaceing; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTextWidth\", function() { return getTextWidth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assembleFont\", function() { return assembleFont; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/util.js\");\n/* harmony import */ var _offscreen__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./offscreen */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/offscreen.js\");\n\n\n/**\n * 获取文本的高度\n * @param text 文本\n * @param fontSize 字体大小\n * @param lineHeight 行高,可以为空\n */\nfunction getTextHeight(text, fontSize, lineHeight) {\n var lineCount = 1;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(text)) {\n lineCount = text.split('\\n').length;\n }\n if (lineCount > 1) {\n var spaceingY = getLineSpaceing(fontSize, lineHeight);\n return fontSize * lineCount + spaceingY * (lineCount - 1);\n }\n return fontSize;\n}\n/**\n * 获取行间距如果文本多行,需要获取文本间距\n * @param fontSize 字体大小\n * @param lineHeight 行高\n */\nfunction getLineSpaceing(fontSize, lineHeight) {\n return lineHeight ? lineHeight - fontSize : fontSize * 0.14;\n}\n/**\n * 字体宽度\n * @param text 文本\n * @param font 字体\n */\nfunction getTextWidth(text, font) {\n var context = Object(_offscreen__WEBPACK_IMPORTED_MODULE_1__[\"getOffScreenContext\"])(); // 获取离屏的 ctx 进行计算\n var width = 0;\n // null 或者 undefined 时,宽度为 0\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"])(text) || text === '') {\n return width;\n }\n context.save();\n context.font = font;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(text) && text.includes('\\n')) {\n var textArr = text.split('\\n');\n Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(textArr, function (subText) {\n var measureWidth = context.measureText(subText).width;\n if (width < measureWidth) {\n width = measureWidth;\n }\n });\n }\n else {\n width = context.measureText(text).width;\n }\n context.restore();\n return width;\n}\nfunction assembleFont(attrs) {\n var fontSize = attrs.fontSize, fontFamily = attrs.fontFamily, fontWeight = attrs.fontWeight, fontStyle = attrs.fontStyle, fontVariant = attrs.fontVariant;\n return [fontStyle, fontVariant, fontWeight, fontSize + \"px\", fontFamily].join(' ').trim();\n}\n//# sourceMappingURL=text.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL3V0aWwvdGV4dC5qcz8wYzFhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQStDO0FBQ0c7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBLFFBQVEsc0RBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCxrQkFBa0Isc0VBQW1CLEdBQUc7QUFDeEM7QUFDQTtBQUNBLFFBQVEsbURBQUs7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsc0RBQVE7QUFDaEI7QUFDQSxRQUFRLGtEQUFJO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWJhc2VAMC41LjlAQGFudHYvZy1iYXNlL2VzbS91dGlsL3RleHQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc05pbCwgZWFjaCwgaXNTdHJpbmcgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHsgZ2V0T2ZmU2NyZWVuQ29udGV4dCB9IGZyb20gJy4vb2Zmc2NyZWVuJztcbi8qKlxuICog6I635Y+W5paH5pys55qE6auY5bqmXG4gKiBAcGFyYW0gdGV4dCDmlofmnKxcbiAqIEBwYXJhbSBmb250U2l6ZSDlrZfkvZPlpKflsI9cbiAqIEBwYXJhbSBsaW5lSGVpZ2h0IOihjOmrmO+8jOWPr+S7peS4uuepulxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGV4dEhlaWdodCh0ZXh0LCBmb250U2l6ZSwgbGluZUhlaWdodCkge1xuICAgIHZhciBsaW5lQ291bnQgPSAxO1xuICAgIGlmIChpc1N0cmluZyh0ZXh0KSkge1xuICAgICAgICBsaW5lQ291bnQgPSB0ZXh0LnNwbGl0KCdcXG4nKS5sZW5ndGg7XG4gICAgfVxuICAgIGlmIChsaW5lQ291bnQgPiAxKSB7XG4gICAgICAgIHZhciBzcGFjZWluZ1kgPSBnZXRMaW5lU3BhY2VpbmcoZm9udFNpemUsIGxpbmVIZWlnaHQpO1xuICAgICAgICByZXR1cm4gZm9udFNpemUgKiBsaW5lQ291bnQgKyBzcGFjZWluZ1kgKiAobGluZUNvdW50IC0gMSk7XG4gICAgfVxuICAgIHJldHVybiBmb250U2l6ZTtcbn1cbi8qKlxuICog6I635Y+W6KGM6Ze06Led5aaC5p6c5paH5pys5aSa6KGM77yM6ZyA6KaB6I635Y+W5paH5pys6Ze06LedXG4gKiBAcGFyYW0gZm9udFNpemUg5a2X5L2T5aSn5bCPXG4gKiBAcGFyYW0gbGluZUhlaWdodCDooYzpq5hcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExpbmVTcGFjZWluZyhmb250U2l6ZSwgbGluZUhlaWdodCkge1xuICAgIHJldHVybiBsaW5lSGVpZ2h0ID8gbGluZUhlaWdodCAtIGZvbnRTaXplIDogZm9udFNpemUgKiAwLjE0O1xufVxuLyoqXG4gKiDlrZfkvZPlrr3luqZcbiAqIEBwYXJhbSB0ZXh0IOaWh+acrFxuICogQHBhcmFtIGZvbnQg5a2X5L2TXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZXh0V2lkdGgodGV4dCwgZm9udCkge1xuICAgIHZhciBjb250ZXh0ID0gZ2V0T2ZmU2NyZWVuQ29udGV4dCgpOyAvLyDojrflj5bnprvlsY/nmoQgY3R4IOi/m+ihjOiuoeeul1xuICAgIHZhciB3aWR0aCA9IDA7XG4gICAgLy8gbnVsbCDmiJbogIUgdW5kZWZpbmVkIOaXtu+8jOWuveW6puS4uiAwXG4gICAgaWYgKGlzTmlsKHRleHQpIHx8IHRleHQgPT09ICcnKSB7XG4gICAgICAgIHJldHVybiB3aWR0aDtcbiAgICB9XG4gICAgY29udGV4dC5zYXZlKCk7XG4gICAgY29udGV4dC5mb250ID0gZm9udDtcbiAgICBpZiAoaXNTdHJpbmcodGV4dCkgJiYgdGV4dC5pbmNsdWRlcygnXFxuJykpIHtcbiAgICAgICAgdmFyIHRleHRBcnIgPSB0ZXh0LnNwbGl0KCdcXG4nKTtcbiAgICAgICAgZWFjaCh0ZXh0QXJyLCBmdW5jdGlvbiAoc3ViVGV4dCkge1xuICAgICAgICAgICAgdmFyIG1lYXN1cmVXaWR0aCA9IGNvbnRleHQubWVhc3VyZVRleHQoc3ViVGV4dCkud2lkdGg7XG4gICAgICAgICAgICBpZiAod2lkdGggPCBtZWFzdXJlV2lkdGgpIHtcbiAgICAgICAgICAgICAgICB3aWR0aCA9IG1lYXN1cmVXaWR0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB3aWR0aCA9IGNvbnRleHQubWVhc3VyZVRleHQodGV4dCkud2lkdGg7XG4gICAgfVxuICAgIGNvbnRleHQucmVzdG9yZSgpO1xuICAgIHJldHVybiB3aWR0aDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhc3NlbWJsZUZvbnQoYXR0cnMpIHtcbiAgICB2YXIgZm9udFNpemUgPSBhdHRycy5mb250U2l6ZSwgZm9udEZhbWlseSA9IGF0dHJzLmZvbnRGYW1pbHksIGZvbnRXZWlnaHQgPSBhdHRycy5mb250V2VpZ2h0LCBmb250U3R5bGUgPSBhdHRycy5mb250U3R5bGUsIGZvbnRWYXJpYW50ID0gYXR0cnMuZm9udFZhcmlhbnQ7XG4gICAgcmV0dXJuIFtmb250U3R5bGUsIGZvbnRWYXJpYW50LCBmb250V2VpZ2h0LCBmb250U2l6ZSArIFwicHhcIiwgZm9udEZhbWlseV0uam9pbignICcpLnRyaW0oKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRleHQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/text.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/util.js":
/*!************************************************************************!*\
!*** ./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/util.js ***!
\************************************************************************/
/*! exports provided: removeFromArray, isBrowser, isNil, isFunction, isString, isObject, isArray, mix, each, upperFirst, isParent, isAllowCapture */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeFromArray\", function() { return removeFromArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isBrowser\", function() { return isBrowser; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isParent\", function() { return isParent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isAllowCapture\", function() { return isAllowCapture; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNil\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isString\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isArray\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"mix\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"mix\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"each\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"upperFirst\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"upperFirst\"]; });\n\nfunction removeFromArray(arr, obj) {\n var index = arr.indexOf(obj);\n if (index !== -1) {\n arr.splice(index, 1);\n }\n}\nvar isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n\n// 是否元素的父容器\nfunction isParent(container, shape) {\n // 所有 shape 都是 canvas 的子元素\n if (container.isCanvas()) {\n return true;\n }\n var parent = shape.getParent();\n var isParent = false;\n while (parent) {\n if (parent === container) {\n isParent = true;\n break;\n }\n parent = parent.getParent();\n }\n return isParent;\n}\nfunction isAllowCapture(element) {\n // @ts-ignore\n return element.cfg.visible && element.cfg.capture;\n}\n//# sourceMappingURL=util.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL3V0aWwvdXRpbC5qcz9iNTI5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDNEY7QUFDbkc7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctYmFzZUAwLjUuOUBAYW50di9nLWJhc2UvZXNtL3V0aWwvdXRpbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiByZW1vdmVGcm9tQXJyYXkoYXJyLCBvYmopIHtcbiAgICB2YXIgaW5kZXggPSBhcnIuaW5kZXhPZihvYmopO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgYXJyLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxufVxuZXhwb3J0IHZhciBpc0Jyb3dzZXIgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93LmRvY3VtZW50ICE9PSAndW5kZWZpbmVkJztcbmV4cG9ydCB7IGlzTmlsLCBpc0Z1bmN0aW9uLCBpc1N0cmluZywgaXNPYmplY3QsIGlzQXJyYXksIG1peCwgZWFjaCwgdXBwZXJGaXJzdCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuLy8g5piv5ZCm5YWD57Sg55qE54i25a655ZmoXG5leHBvcnQgZnVuY3Rpb24gaXNQYXJlbnQoY29udGFpbmVyLCBzaGFwZSkge1xuICAgIC8vIOaJgOaciSBzaGFwZSDpg73mmK8gY2FudmFzIOeahOWtkOWFg+e0oFxuICAgIGlmIChjb250YWluZXIuaXNDYW52YXMoKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgdmFyIHBhcmVudCA9IHNoYXBlLmdldFBhcmVudCgpO1xuICAgIHZhciBpc1BhcmVudCA9IGZhbHNlO1xuICAgIHdoaWxlIChwYXJlbnQpIHtcbiAgICAgICAgaWYgKHBhcmVudCA9PT0gY29udGFpbmVyKSB7XG4gICAgICAgICAgICBpc1BhcmVudCA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBwYXJlbnQgPSBwYXJlbnQuZ2V0UGFyZW50KCk7XG4gICAgfVxuICAgIHJldHVybiBpc1BhcmVudDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0FsbG93Q2FwdHVyZShlbGVtZW50KSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBlbGVtZW50LmNmZy52aXNpYmxlICYmIGVsZW1lbnQuY2ZnLmNhcHR1cmU7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD11dGlsLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/util/util.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/canvas.js":
/*!**************************************************************************!*\
!*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/canvas.js ***!
\**************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/index.js\");\n/* harmony import */ var _util_hit__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util/hit */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/hit.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shape */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/index.js\");\n/* harmony import */ var _group__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./group */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/group.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util/util */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/util.js\");\n/* harmony import */ var _util_draw__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./util/draw */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/draw.js\");\n\n\n\n\n\n\n\nvar Canvas = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Canvas, _super);\n function Canvas() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Canvas.prototype.getDefaultCfg = function () {\n var cfg = _super.prototype.getDefaultCfg.call(this);\n // 设置渲染引擎为 canvas,只读属性\n cfg['renderer'] = 'canvas';\n // 是否自动绘制,不需要用户调用 draw 方法\n cfg['autoDraw'] = true;\n // 是否允许局部刷新图表\n cfg['localRefresh'] = true;\n cfg['refreshElements'] = [];\n // 是否在视图内自动裁剪\n cfg['clipView'] = true;\n // 是否使用快速拾取的方案,默认为 false,上层可以打开\n cfg['quickHit'] = false;\n return cfg;\n };\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n Canvas.prototype.onCanvasChange = function (changeType) {\n /**\n * 触发画布更新的三种 changeType\n * 1. attr: 修改画布的绘图属性\n * 2. sort: 画布排序,图形的层次会发生变化\n * 3. changeSize: 改变画布大小\n */\n if (changeType === 'attr' || changeType === 'sort' || changeType === 'changeSize') {\n this.set('refreshElements', [this]);\n this.draw();\n }\n };\n Canvas.prototype.getShapeBase = function () {\n return _shape__WEBPACK_IMPORTED_MODULE_3__;\n };\n Canvas.prototype.getGroupBase = function () {\n return _group__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\n };\n /**\n * 获取屏幕像素比\n */\n Canvas.prototype.getPixelRatio = function () {\n var pixelRatio = this.get('pixelRatio') || Object(_util_util__WEBPACK_IMPORTED_MODULE_5__[\"getPixelRatio\"])();\n // 不足 1 的取 1,超出 1 的取整\n return pixelRatio >= 1 ? Math.ceil(pixelRatio) : 1;\n };\n Canvas.prototype.getViewRange = function () {\n return {\n minX: 0,\n minY: 0,\n maxX: this.cfg.width,\n maxY: this.cfg.height,\n };\n };\n // 复写基类的方法生成标签\n Canvas.prototype.createDom = function () {\n var element = document.createElement('canvas');\n var context = element.getContext('2d');\n // 缓存 context 对象\n this.set('context', context);\n return element;\n };\n Canvas.prototype.setDOMSize = function (width, height) {\n _super.prototype.setDOMSize.call(this, width, height);\n var context = this.get('context');\n var el = this.get('el');\n var pixelRatio = this.getPixelRatio();\n el.width = pixelRatio * width;\n el.height = pixelRatio * height;\n // 设置 canvas 元素的宽度和高度,会重置缩放,因此 context.scale 需要在每次设置宽、高后调用\n if (pixelRatio > 1) {\n context.scale(pixelRatio, pixelRatio);\n }\n };\n // 复写基类方法\n Canvas.prototype.clear = function () {\n _super.prototype.clear.call(this);\n this._clearFrame(); // 需要清理掉延迟绘制的帧\n var context = this.get('context');\n var element = this.get('el');\n context.clearRect(0, 0, element.width, element.height);\n };\n Canvas.prototype.getShape = function (x, y) {\n var shape;\n if (this.get('quickHit')) {\n shape = Object(_util_hit__WEBPACK_IMPORTED_MODULE_2__[\"getShape\"])(this, x, y);\n }\n else {\n shape = _super.prototype.getShape.call(this, x, y, null);\n }\n return shape;\n };\n // 对绘制区域边缘取整,避免浮点数问题\n Canvas.prototype._getRefreshRegion = function () {\n var elements = this.get('refreshElements');\n var viewRegion = this.getViewRange();\n var region;\n // 如果是当前画布整体发生了变化,则直接重绘整个画布\n if (elements.length && elements[0] === this) {\n region = viewRegion;\n }\n else {\n region = Object(_util_draw__WEBPACK_IMPORTED_MODULE_6__[\"getMergedRegion\"])(elements);\n if (region) {\n region.minX = Math.floor(region.minX);\n region.minY = Math.floor(region.minY);\n region.maxX = Math.ceil(region.maxX);\n region.maxY = Math.ceil(region.maxY);\n region.maxY += 1; // 在很多环境下字体的高低会不一致,附加一像素,避免残影\n var clipView = this.get('clipView');\n // 自动裁剪不在 view 内的区域\n if (clipView) {\n region = Object(_util_draw__WEBPACK_IMPORTED_MODULE_6__[\"mergeView\"])(region, viewRegion);\n }\n }\n }\n return region;\n };\n /**\n * 刷新图形元素,这里仅仅是放入队列,下次绘制时进行绘制\n * @param {IElement} element 图形元素\n */\n Canvas.prototype.refreshElement = function (element) {\n var refreshElements = this.get('refreshElements');\n refreshElements.push(element);\n // if (this.get('autoDraw')) {\n // this._startDraw();\n // }\n };\n // 清理还在进行的绘制\n Canvas.prototype._clearFrame = function () {\n var drawFrame = this.get('drawFrame');\n if (drawFrame) {\n // 如果全部渲染时,存在局部渲染,则抛弃掉局部渲染\n Object(_util_util__WEBPACK_IMPORTED_MODULE_5__[\"clearAnimationFrame\"])(drawFrame);\n this.set('drawFrame', null);\n this.set('refreshElements', []);\n }\n };\n // 手工调用绘制接口\n Canvas.prototype.draw = function () {\n var drawFrame = this.get('drawFrame');\n if (this.get('autoDraw') && drawFrame) {\n return;\n }\n this._startDraw();\n };\n // 绘制所有图形\n Canvas.prototype._drawAll = function () {\n var context = this.get('context');\n var element = this.get('el');\n var children = this.getChildren();\n context.clearRect(0, 0, element.width, element.height);\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_6__[\"applyAttrsToContext\"])(context, this);\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_6__[\"drawChildren\"])(context, children);\n // 对于 https://github.com/antvis/g/issues/422 的场景,全局渲染的模式下也会记录更新的元素队列,因此全局渲染完后也需要置空\n this.set('refreshElements', []);\n };\n // 绘制局部\n Canvas.prototype._drawRegion = function () {\n var context = this.get('context');\n var refreshElements = this.get('refreshElements');\n var children = this.getChildren();\n var region = this._getRefreshRegion();\n // 需要注意可能没有 region 的场景\n // 一般发生在设置了 localRefresh ,在没有图形发生变化的情况下,用户调用了 draw\n if (region) {\n // 清理指定区域\n context.clearRect(region.minX, region.minY, region.maxX - region.minX, region.maxY - region.minY);\n // 保存上下文,设置 clip\n context.save();\n context.beginPath();\n context.rect(region.minX, region.minY, region.maxX - region.minX, region.maxY - region.minY);\n context.clip();\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_6__[\"applyAttrsToContext\"])(context, this);\n // 确认更新的元素,这个优化可以提升 10 倍左右的性能,10W 个带有 group 的节点,局部渲染会从 90ms 下降到 5-6 ms\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_6__[\"checkRefresh\"])(this, children, region);\n // 绘制子元素\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_6__[\"drawChildren\"])(context, children, region);\n context.restore();\n }\n else if (refreshElements.length) {\n // 防止发生改变的 elements 没有 region 的场景,这会发生在多个情况下\n // 1. 空的 group\n // 2. 所有 elements 没有在绘图区域\n // 3. group 下面的 elements 隐藏掉\n // 如果不进行清理 hasChanged 的状态会不正确\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_6__[\"clearChanged\"])(refreshElements);\n }\n Object(_util_util__WEBPACK_IMPORTED_MODULE_5__[\"each\"])(refreshElements, function (element) {\n if (element.get('hasChanged')) {\n // 在视窗外的 Group 元素会加入到更新队列里,但实际却没有执行 draw() 逻辑,也就没有清除 hasChanged 标记\n // 即已经重绘完、但 hasChanged 标记没有清除的元素,需要统一清除掉。主要是 Group 存在问题,具体原因待排查\n element.set('hasChanged', false);\n }\n });\n this.set('refreshElements', []);\n };\n // 触发绘制\n Canvas.prototype._startDraw = function () {\n var _this = this;\n var drawFrame = this.get('drawFrame');\n if (!drawFrame) {\n drawFrame = Object(_util_util__WEBPACK_IMPORTED_MODULE_5__[\"requestAnimationFrame\"])(function () {\n if (_this.get('localRefresh')) {\n _this._drawRegion();\n }\n else {\n _this._drawAll();\n }\n _this.set('drawFrame', null);\n });\n this.set('drawFrame', drawFrame);\n }\n };\n Canvas.prototype.skipDraw = function () { };\n Canvas.prototype.removeDom = function () {\n var el = this.get('el');\n // 需要清理 canvas 画布内容,否则ios下 创建的canvas垃圾未回收,导致Total canvas memory use exceeds问题\n // 相关问题列表\n // https://stackoverflow.com/questions/52532614/total-canvas-memory-use-exceeds-the-maximum-limit-safari-12\n // https://github.com/openlayers/openlayers/issues/9291\n el.width = 0;\n el.height = 0;\n el.parentNode.removeChild(el);\n };\n return Canvas;\n}(_antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"AbstractCanvas\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Canvas);\n//# sourceMappingURL=canvas.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vY2FudmFzLmpzPzNkYWEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNZO0FBQ1I7QUFDTDtBQUNMO0FBQ2tFO0FBQzBCO0FBQ3hIO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFdBQVc7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsbUNBQUs7QUFDcEI7QUFDQTtBQUNBLGVBQWUsOENBQUs7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1EQUFtRCxnRUFBYTtBQUNoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiwwREFBUTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixrRUFBZTtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBLDZCQUE2Qiw0REFBUztBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsU0FBUztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksc0VBQW1CO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsc0VBQW1CO0FBQzNCLFFBQVEsK0RBQVk7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHNFQUFtQjtBQUMvQjtBQUNBLFlBQVksK0RBQVk7QUFDeEI7QUFDQSxZQUFZLCtEQUFZO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLCtEQUFZO0FBQ3hCO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isd0VBQXFCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLDZDQUE2QztBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDJEQUFjO0FBQ0QscUVBQU0sRUFBQztBQUN0QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1jYW52YXNAMC41LjEyQEBhbnR2L2ctY2FudmFzL2VzbS9jYW52YXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IEFic3RyYWN0Q2FudmFzIH0gZnJvbSAnQGFudHYvZy1iYXNlJztcbmltcG9ydCB7IGdldFNoYXBlIH0gZnJvbSAnLi91dGlsL2hpdCc7XG5pbXBvcnQgKiBhcyBTaGFwZSBmcm9tICcuL3NoYXBlJztcbmltcG9ydCBHcm91cCBmcm9tICcuL2dyb3VwJztcbmltcG9ydCB7IGVhY2gsIGdldFBpeGVsUmF0aW8sIHJlcXVlc3RBbmltYXRpb25GcmFtZSwgY2xlYXJBbmltYXRpb25GcmFtZSB9IGZyb20gJy4vdXRpbC91dGlsJztcbmltcG9ydCB7IGFwcGx5QXR0cnNUb0NvbnRleHQsIGRyYXdDaGlsZHJlbiwgZ2V0TWVyZ2VkUmVnaW9uLCBtZXJnZVZpZXcsIGNoZWNrUmVmcmVzaCwgY2xlYXJDaGFuZ2VkIH0gZnJvbSAnLi91dGlsL2RyYXcnO1xudmFyIENhbnZhcyA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQ2FudmFzLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIENhbnZhcygpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBDYW52YXMucHJvdG90eXBlLmdldERlZmF1bHRDZmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjZmcgPSBfc3VwZXIucHJvdG90eXBlLmdldERlZmF1bHRDZmcuY2FsbCh0aGlzKTtcbiAgICAgICAgLy8g6K6+572u5riy5p+T5byV5pOO5Li6IGNhbnZhc++8jOWPquivu+WxnuaAp1xuICAgICAgICBjZmdbJ3JlbmRlcmVyJ10gPSAnY2FudmFzJztcbiAgICAgICAgLy8g5piv5ZCm6Ieq5Yqo57uY5Yi277yM5LiN6ZyA6KaB55So5oi36LCD55SoIGRyYXcg5pa55rOVXG4gICAgICAgIGNmZ1snYXV0b0RyYXcnXSA9IHRydWU7XG4gICAgICAgIC8vIOaYr+WQpuWFgeiuuOWxgOmDqOWIt+aWsOWbvuihqFxuICAgICAgICBjZmdbJ2xvY2FsUmVmcmVzaCddID0gdHJ1ZTtcbiAgICAgICAgY2ZnWydyZWZyZXNoRWxlbWVudHMnXSA9IFtdO1xuICAgICAgICAvLyDmmK/lkKblnKjop4blm77lhoXoh6rliqjoo4HliapcbiAgICAgICAgY2ZnWydjbGlwVmlldyddID0gdHJ1ZTtcbiAgICAgICAgLy8g5piv5ZCm5L2/55So5b+r6YCf5ou+5Y+W55qE5pa55qGI77yM6buY6K6k5Li6IGZhbHNl77yM5LiK5bGC5Y+v5Lul5omT5byAXG4gICAgICAgIGNmZ1sncXVpY2tIaXQnXSA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gY2ZnO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5LiA5Lqb5pa55rOV6LCD55So5Lya5byV6LW355S75biD5Y+Y5YyWXG4gICAgICogQHBhcmFtIHtDaGFuZ2VUeXBlfSBjaGFuZ2VUeXBlIOaUueWPmOeahOexu+Wei1xuICAgICAqL1xuICAgIENhbnZhcy5wcm90b3R5cGUub25DYW52YXNDaGFuZ2UgPSBmdW5jdGlvbiAoY2hhbmdlVHlwZSkge1xuICAgICAgICAvKipcbiAgICAgICAgICog6Kem5Y+R55S75biD5pu05paw55qE5LiJ56eNIGNoYW5nZVR5cGVcbiAgICAgICAgICogMS4gYXR0cjog5L+u5pS555S75biD55qE57uY5Zu+5bGe5oCnXG4gICAgICAgICAqIDIuIHNvcnQ6IOeUu+W4g+aOkuW6j++8jOWbvuW9oueahOWxguasoeS8muWPkeeUn+WPmOWMllxuICAgICAgICAgKiAzLiBjaGFuZ2VTaXplOiDmlLnlj5jnlLvluIPlpKflsI9cbiAgICAgICAgICovXG4gICAgICAgIGlmIChjaGFuZ2VUeXBlID09PSAnYXR0cicgfHwgY2hhbmdlVHlwZSA9PT0gJ3NvcnQnIHx8IGNoYW5nZVR5cGUgPT09ICdjaGFuZ2VTaXplJykge1xuICAgICAgICAgICAgdGhpcy5zZXQoJ3JlZnJlc2hFbGVtZW50cycsIFt0aGlzXSk7XG4gICAgICAgICAgICB0aGlzLmRyYXcoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgQ2FudmFzLnByb3RvdHlwZS5nZXRTaGFwZUJhc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBTaGFwZTtcbiAgICB9O1xuICAgIENhbnZhcy5wcm90b3R5cGUuZ2V0R3JvdXBCYXNlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gR3JvdXA7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDojrflj5blsY/luZXlg4/ntKDmr5RcbiAgICAgKi9cbiAgICBDYW52YXMucHJvdG90eXBlLmdldFBpeGVsUmF0aW8gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBwaXhlbFJhdGlvID0gdGhpcy5nZXQoJ3BpeGVsUmF0aW8nKSB8fCBnZXRQaXhlbFJhdGlvKCk7XG4gICAgICAgIC8vIOS4jei2syAxIOeahOWPliAx77yM6LaF5Ye6IDEg55qE5Y+W5pW0XG4gICAgICAgIHJldHVybiBwaXhlbFJhdGlvID49IDEgPyBNYXRoLmNlaWwocGl4ZWxSYXRpbykgOiAxO1xuICAgIH07XG4gICAgQ2FudmFzLnByb3RvdHlwZS5nZXRWaWV3UmFuZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBtaW5YOiAwLFxuICAgICAgICAgICAgbWluWTogMCxcbiAgICAgICAgICAgIG1heFg6IHRoaXMuY2ZnLndpZHRoLFxuICAgICAgICAgICAgbWF4WTogdGhpcy5jZmcuaGVpZ2h0LFxuICAgICAgICB9O1xuICAgIH07XG4gICAgLy8g5aSN5YaZ5Z+657G755qE5pa55rOV55Sf5oiQ5qCH562+XG4gICAgQ2FudmFzLnByb3RvdHlwZS5jcmVhdGVEb20gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgICAgIHZhciBjb250ZXh0ID0gZWxlbWVudC5nZXRDb250ZXh0KCcyZCcpO1xuICAgICAgICAvLyDnvJPlrZggY29udGV4dCDlr7nosaFcbiAgICAgICAgdGhpcy5zZXQoJ2NvbnRleHQnLCBjb250ZXh0KTtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgfTtcbiAgICBDYW52YXMucHJvdG90eXBlLnNldERPTVNpemUgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCkge1xuICAgICAgICBfc3VwZXIucHJvdG90eXBlLnNldERPTVNpemUuY2FsbCh0aGlzLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgdmFyIGNvbnRleHQgPSB0aGlzLmdldCgnY29udGV4dCcpO1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgdmFyIHBpeGVsUmF0aW8gPSB0aGlzLmdldFBpeGVsUmF0aW8oKTtcbiAgICAgICAgZWwud2lkdGggPSBwaXhlbFJhdGlvICogd2lkdGg7XG4gICAgICAgIGVsLmhlaWdodCA9IHBpeGVsUmF0aW8gKiBoZWlnaHQ7XG4gICAgICAgIC8vIOiuvue9riBjYW52YXMg5YWD57Sg55qE5a695bqm5ZKM6auY5bqm77yM5Lya6YeN572u57yp5pS+77yM5Zug5q2kIGNvbnRleHQuc2NhbGUg6ZyA6KaB5Zyo5q+P5qyh6K6+572u5a6944CB6auY5ZCO6LCD55SoXG4gICAgICAgIGlmIChwaXhlbFJhdGlvID4gMSkge1xuICAgICAgICAgICAgY29udGV4dC5zY2FsZShwaXhlbFJhdGlvLCBwaXhlbFJhdGlvKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8g5aSN5YaZ5Z+657G75pa55rOVXG4gICAgQ2FudmFzLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3N1cGVyLnByb3RvdHlwZS5jbGVhci5jYWxsKHRoaXMpO1xuICAgICAgICB0aGlzLl9jbGVhckZyYW1lKCk7IC8vIOmcgOimgea4heeQhuaOieW7tui/n+e7mOWItueahOW4p1xuICAgICAgICB2YXIgY29udGV4dCA9IHRoaXMuZ2V0KCdjb250ZXh0Jyk7XG4gICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIGVsZW1lbnQud2lkdGgsIGVsZW1lbnQuaGVpZ2h0KTtcbiAgICB9O1xuICAgIENhbnZhcy5wcm90b3R5cGUuZ2V0U2hhcGUgPSBmdW5jdGlvbiAoeCwgeSkge1xuICAgICAgICB2YXIgc2hhcGU7XG4gICAgICAgIGlmICh0aGlzLmdldCgncXVpY2tIaXQnKSkge1xuICAgICAgICAgICAgc2hhcGUgPSBnZXRTaGFwZSh0aGlzLCB4LCB5KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHNoYXBlID0gX3N1cGVyLnByb3RvdHlwZS5nZXRTaGFwZS5jYWxsKHRoaXMsIHgsIHksIG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzaGFwZTtcbiAgICB9O1xuICAgIC8vIOWvuee7mOWItuWMuuWfn+i+uee8mOWPluaVtO+8jOmBv+WFjea1rueCueaVsOmXrumimFxuICAgIENhbnZhcy5wcm90b3R5cGUuX2dldFJlZnJlc2hSZWdpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBlbGVtZW50cyA9IHRoaXMuZ2V0KCdyZWZyZXNoRWxlbWVudHMnKTtcbiAgICAgICAgdmFyIHZpZXdSZWdpb24gPSB0aGlzLmdldFZpZXdSYW5nZSgpO1xuICAgICAgICB2YXIgcmVnaW9uO1xuICAgICAgICAvLyDlpoLmnpzmmK/lvZPliY3nlLvluIPmlbTkvZPlj5HnlJ/kuoblj5jljJbvvIzliJnnm7TmjqXph43nu5jmlbTkuKrnlLvluINcbiAgICAgICAgaWYgKGVsZW1lbnRzLmxlbmd0aCAmJiBlbGVtZW50c1swXSA9PT0gdGhpcykge1xuICAgICAgICAgICAgcmVnaW9uID0gdmlld1JlZ2lvbjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJlZ2lvbiA9IGdldE1lcmdlZFJlZ2lvbihlbGVtZW50cyk7XG4gICAgICAgICAgICBpZiAocmVnaW9uKSB7XG4gICAgICAgICAgICAgICAgcmVnaW9uLm1pblggPSBNYXRoLmZsb29yKHJlZ2lvbi5taW5YKTtcbiAgICAgICAgICAgICAgICByZWdpb24ubWluWSA9IE1hdGguZmxvb3IocmVnaW9uLm1pblkpO1xuICAgICAgICAgICAgICAgIHJlZ2lvbi5tYXhYID0gTWF0aC5jZWlsKHJlZ2lvbi5tYXhYKTtcbiAgICAgICAgICAgICAgICByZWdpb24ubWF4WSA9IE1hdGguY2VpbChyZWdpb24ubWF4WSk7XG4gICAgICAgICAgICAgICAgcmVnaW9uLm1heFkgKz0gMTsgLy8g5Zyo5b6I5aSa546v5aKD5LiL5a2X5L2T55qE6auY5L2O5Lya5LiN5LiA6Ie077yM6ZmE5Yqg5LiA5YOP57Sg77yM6YG/5YWN5q6L5b2xXG4gICAgICAgICAgICAgICAgdmFyIGNsaXBWaWV3ID0gdGhpcy5nZXQoJ2NsaXBWaWV3Jyk7XG4gICAgICAgICAgICAgICAgLy8g6Ieq5Yqo6KOB5Ymq5LiN5ZyoIHZpZXcg5YaF55qE5Yy65Z+fXG4gICAgICAgICAgICAgICAgaWYgKGNsaXBWaWV3KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlZ2lvbiA9IG1lcmdlVmlldyhyZWdpb24sIHZpZXdSZWdpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVnaW9uO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5Yi35paw5Zu+5b2i5YWD57Sg77yM6L+Z6YeM5LuF5LuF5piv5pS+5YWl6Zif5YiX77yM5LiL5qyh57uY5Yi25pe26L+b6KGM57uY5Yi2XG4gICAgICogQHBhcmFtIHtJRWxlbWVudH0gZWxlbWVudCDlm77lvaLlhYPntKBcbiAgICAgKi9cbiAgICBDYW52YXMucHJvdG90eXBlLnJlZnJlc2hFbGVtZW50ID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgdmFyIHJlZnJlc2hFbGVtZW50cyA9IHRoaXMuZ2V0KCdyZWZyZXNoRWxlbWVudHMnKTtcbiAgICAgICAgcmVmcmVzaEVsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgICAgIC8vIGlmICh0aGlzLmdldCgnYXV0b0RyYXcnKSkge1xuICAgICAgICAvLyAgIHRoaXMuX3N0YXJ0RHJhdygpO1xuICAgICAgICAvLyB9XG4gICAgfTtcbiAgICAvLyDmuIXnkIbov5jlnKjov5vooYznmoTnu5jliLZcbiAgICBDYW52YXMucHJvdG90eXBlLl9jbGVhckZyYW1lID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZHJhd0ZyYW1lID0gdGhpcy5nZXQoJ2RyYXdGcmFtZScpO1xuICAgICAgICBpZiAoZHJhd0ZyYW1lKSB7XG4gICAgICAgICAgICAvLyDlpoLmnpzlhajpg6jmuLLmn5Pml7bvvIzlrZjlnKjlsYDpg6jmuLLmn5PvvIzliJnmipvlvIPmjonlsYDpg6jmuLLmn5NcbiAgICAgICAgICAgIGNsZWFyQW5pbWF0aW9uRnJhbWUoZHJhd0ZyYW1lKTtcbiAgICAgICAgICAgIHRoaXMuc2V0KCdkcmF3RnJhbWUnLCBudWxsKTtcbiAgICAgICAgICAgIHRoaXMuc2V0KCdyZWZyZXNoRWxlbWVudHMnLCBbXSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIOaJi+W3peiwg+eUqOe7mOWItuaOpeWPo1xuICAgIENhbnZhcy5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGRyYXdGcmFtZSA9IHRoaXMuZ2V0KCdkcmF3RnJhbWUnKTtcbiAgICAgICAgaWYgKHRoaXMuZ2V0KCdhdXRvRHJhdycpICYmIGRyYXdGcmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3N0YXJ0RHJhdygpO1xuICAgIH07XG4gICAgLy8g57uY5Yi25omA5pyJ5Zu+5b2iXG4gICAgQ2FudmFzLnByb3RvdHlwZS5fZHJhd0FsbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGNvbnRleHQgPSB0aGlzLmdldCgnY29udGV4dCcpO1xuICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKCk7XG4gICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIGVsZW1lbnQud2lkdGgsIGVsZW1lbnQuaGVpZ2h0KTtcbiAgICAgICAgYXBwbHlBdHRyc1RvQ29udGV4dChjb250ZXh0LCB0aGlzKTtcbiAgICAgICAgZHJhd0NoaWxkcmVuKGNvbnRleHQsIGNoaWxkcmVuKTtcbiAgICAgICAgLy8g5a+55LqOIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnR2aXMvZy9pc3N1ZXMvNDIyIOeahOWcuuaZr++8jOWFqOWxgOa4suafk+eahOaooeW8j+S4i+S5n+S8muiusOW9leabtOaWsOeahOWFg+e0oOmYn+WIl++8jOWboOatpOWFqOWxgOa4suafk+WujOWQjuS5n+mcgOimgee9ruepulxuICAgICAgICB0aGlzLnNldCgncmVmcmVzaEVsZW1lbnRzJywgW10pO1xuICAgIH07XG4gICAgLy8g57uY5Yi25bGA6YOoXG4gICAgQ2FudmFzLnByb3RvdHlwZS5fZHJhd1JlZ2lvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGNvbnRleHQgPSB0aGlzLmdldCgnY29udGV4dCcpO1xuICAgICAgICB2YXIgcmVmcmVzaEVsZW1lbnRzID0gdGhpcy5nZXQoJ3JlZnJlc2hFbGVtZW50cycpO1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKCk7XG4gICAgICAgIHZhciByZWdpb24gPSB0aGlzLl9nZXRSZWZyZXNoUmVnaW9uKCk7XG4gICAgICAgIC8vIOmcgOimgeazqOaEj+WPr+iDveayoeaciSByZWdpb24g55qE5Zy65pmvXG4gICAgICAgIC8vIOS4gOiIrOWPkeeUn+WcqOiuvue9ruS6hiBsb2NhbFJlZnJlc2ggLOWcqOayoeacieWbvuW9ouWPkeeUn+WPmOWMlueahOaDheWGteS4i++8jOeUqOaIt+iwg+eUqOS6hiBkcmF3XG4gICAgICAgIGlmIChyZWdpb24pIHtcbiAgICAgICAgICAgIC8vIOa4heeQhuaMh+WumuWMuuWfn1xuICAgICAgICAgICAgY29udGV4dC5jbGVhclJlY3QocmVnaW9uLm1pblgsIHJlZ2lvbi5taW5ZLCByZWdpb24ubWF4WCAtIHJlZ2lvbi5taW5YLCByZWdpb24ubWF4WSAtIHJlZ2lvbi5taW5ZKTtcbiAgICAgICAgICAgIC8vIOS/neWtmOS4iuS4i+aWh++8jOiuvue9riBjbGlwXG4gICAgICAgICAgICBjb250ZXh0LnNhdmUoKTtcbiAgICAgICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgICAgICAgICBjb250ZXh0LnJlY3QocmVnaW9uLm1pblgsIHJlZ2lvbi5taW5ZLCByZWdpb24ubWF4WCAtIHJlZ2lvbi5taW5YLCByZWdpb24ubWF4WSAtIHJlZ2lvbi5taW5ZKTtcbiAgICAgICAgICAgIGNvbnRleHQuY2xpcCgpO1xuICAgICAgICAgICAgYXBwbHlBdHRyc1RvQ29udGV4dChjb250ZXh0LCB0aGlzKTtcbiAgICAgICAgICAgIC8vIOehruiupOabtOaWsOeahOWFg+e0oO+8jOi/meS4quS8mOWMluWPr+S7peaPkOWNhyAxMCDlgI3lt6blj7PnmoTmgKfog73vvIwxMFcg5Liq5bim5pyJIGdyb3VwIOeahOiKgueCue+8jOWxgOmDqOa4suafk+S8muS7jiA5MG1zIOS4i+mZjeWIsCA1LTYgbXNcbiAgICAgICAgICAgIGNoZWNrUmVmcmVzaCh0aGlzLCBjaGlsZHJlbiwgcmVnaW9uKTtcbiAgICAgICAgICAgIC8vIOe7mOWItuWtkOWFg+e0oFxuICAgICAgICAgICAgZHJhd0NoaWxkcmVuKGNvbnRleHQsIGNoaWxkcmVuLCByZWdpb24pO1xuICAgICAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocmVmcmVzaEVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgLy8g6Ziy5q2i5Y+R55Sf5pS55Y+Y55qEIGVsZW1lbnRzIOayoeaciSByZWdpb24g55qE5Zy65pmv77yM6L+Z5Lya5Y+R55Sf5Zyo5aSa5Liq5oOF5Ya15LiLXG4gICAgICAgICAgICAvLyAxLiDnqbrnmoQgZ3JvdXBcbiAgICAgICAgICAgIC8vIDIuIOaJgOaciSBlbGVtZW50cyDmsqHmnInlnKjnu5jlm77ljLrln59cbiAgICAgICAgICAgIC8vIDMuIGdyb3VwIOS4i+mdoueahCBlbGVtZW50cyDpmpDol4/mjolcbiAgICAgICAgICAgIC8vIOWmguaenOS4jei/m+ihjOa4heeQhiBoYXNDaGFuZ2VkIOeahOeKtuaAgeS8muS4jeato+ehrlxuICAgICAgICAgICAgY2xlYXJDaGFuZ2VkKHJlZnJlc2hFbGVtZW50cyk7XG4gICAgICAgIH1cbiAgICAgICAgZWFjaChyZWZyZXNoRWxlbWVudHMsIGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgICAgICBpZiAoZWxlbWVudC5nZXQoJ2hhc0NoYW5nZWQnKSkge1xuICAgICAgICAgICAgICAgIC8vIOWcqOinhueql+WklueahCBHcm91cCDlhYPntKDkvJrliqDlhaXliLDmm7TmlrDpmJ/liJfph4zvvIzkvYblrp7pmYXljbTmsqHmnInmiafooYwgZHJhdygpIOmAu+i+ke+8jOS5n+Wwseayoeaciea4hemZpCBoYXNDaGFuZ2VkIOagh+iusFxuICAgICAgICAgICAgICAgIC8vIOWNs+W3sue7j+mHjee7mOWujOOAgeS9hiBoYXNDaGFuZ2VkIOagh+iusOayoeaciea4hemZpOeahOWFg+e0oO+8jOmcgOimgee7n+S4gOa4hemZpOaOieOAguS4u+imgeaYryBHcm91cCDlrZjlnKjpl67popjvvIzlhbfkvZPljp/lm6DlvoXmjpLmn6VcbiAgICAgICAgICAgICAgICBlbGVtZW50LnNldCgnaGFzQ2hhbmdlZCcsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2V0KCdyZWZyZXNoRWxlbWVudHMnLCBbXSk7XG4gICAgfTtcbiAgICAvLyDop6blj5Hnu5jliLZcbiAgICBDYW52YXMucHJvdG90eXBlLl9zdGFydERyYXcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBkcmF3RnJhbWUgPSB0aGlzLmdldCgnZHJhd0ZyYW1lJyk7XG4gICAgICAgIGlmICghZHJhd0ZyYW1lKSB7XG4gICAgICAgICAgICBkcmF3RnJhbWUgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlmIChfdGhpcy5nZXQoJ2xvY2FsUmVmcmVzaCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLl9kcmF3UmVnaW9uKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5fZHJhd0FsbCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBfdGhpcy5zZXQoJ2RyYXdGcmFtZScsIG51bGwpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnNldCgnZHJhd0ZyYW1lJywgZHJhd0ZyYW1lKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgQ2FudmFzLnByb3RvdHlwZS5za2lwRHJhdyA9IGZ1bmN0aW9uICgpIHsgfTtcbiAgICBDYW52YXMucHJvdG90eXBlLnJlbW92ZURvbSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIC8vIOmcgOimgea4heeQhiBjYW52YXMg55S75biD5YaF5a6577yM5ZCm5YiZaW9z5LiLIOWIm+W7uueahGNhbnZhc+Weg+WcvuacquWbnuaUtu+8jOWvvOiHtFRvdGFsIGNhbnZhcyBtZW1vcnkgdXNlIGV4Y2VlZHPpl67pophcbiAgICAgICAgLy8g55u45YWz6Zeu6aKY5YiX6KGoXG4gICAgICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzUyNTMyNjE0L3RvdGFsLWNhbnZhcy1tZW1vcnktdXNlLWV4Y2VlZHMtdGhlLW1heGltdW0tbGltaXQtc2FmYXJpLTEyXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVubGF5ZXJzL29wZW5sYXllcnMvaXNzdWVzLzkyOTFcbiAgICAgICAgZWwud2lkdGggPSAwO1xuICAgICAgICBlbC5oZWlnaHQgPSAwO1xuICAgICAgICBlbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsKTtcbiAgICB9O1xuICAgIHJldHVybiBDYW52YXM7XG59KEFic3RyYWN0Q2FudmFzKSk7XG5leHBvcnQgZGVmYXVsdCBDYW52YXM7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jYW52YXMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/canvas.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/group.js":
/*!*************************************************************************!*\
!*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/group.js ***!
\*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/index.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shape */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/index.js\");\n/* harmony import */ var _util_draw__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util/draw */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/draw.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util/util */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/util.js\");\n\n\n\n\n\n\nvar Group = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Group, _super);\n function Group() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n Group.prototype.onCanvasChange = function (changeType) {\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_3__[\"refreshElement\"])(this, changeType);\n };\n Group.prototype.getShapeBase = function () {\n return _shape__WEBPACK_IMPORTED_MODULE_2__;\n };\n Group.prototype.getGroupBase = function () {\n return Group;\n };\n // 同 shape 中的方法重复了\n Group.prototype._applyClip = function (context, clip) {\n if (clip) {\n context.save();\n // 将 clip 的属性挂载到 context 上\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_3__[\"applyAttrsToContext\"])(context, clip);\n // 绘制 clip 路径\n clip.createPath(context);\n context.restore();\n // 裁剪\n context.clip();\n clip._afterDraw();\n }\n };\n // 这个方法以前直接使用的 getCanvasBBox,由于 group 上没有缓存,所以每次重新计算,导致性能开销比较大\n // 大概能够节省全局渲染 15-20% 的性能,如果不在这里加缓存优化后 10W 个节点无法达到 5-6 ms,大概能够 30-40ms\n Group.prototype.cacheCanvasBBox = function () {\n var children = this.cfg.children;\n var xArr = [];\n var yArr = [];\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"each\"])(children, function (child) {\n var bbox = child.cfg.cacheCanvasBBox;\n // isInview 的判定是一旦图形或者分组渲染就要计算是否在视图内,\n // 这个判定 10W 个图形下差不多能够节省 5-6 ms 的开销\n if (bbox && child.cfg.isInView) {\n xArr.push(bbox.minX, bbox.maxX);\n yArr.push(bbox.minY, bbox.maxY);\n }\n });\n var bbox = null;\n if (xArr.length) {\n var minX = Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"min\"])(xArr);\n var maxX = Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"max\"])(xArr);\n var minY = Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"min\"])(yArr);\n var maxY = Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"max\"])(yArr);\n bbox = {\n minX: minX,\n minY: minY,\n x: minX,\n y: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY,\n };\n var canvas = this.cfg.canvas;\n if (canvas) {\n var viewRange = canvas.getViewRange();\n // 如果这个地方判定 isInView == false 设置 bbox 为 false 的话,拾取的性能会更高\n // 但是目前 10W 图形的拾取在 2-5ms 内,这个优化意义不大,可以后期观察再看\n this.set('isInView', Object(_util_util__WEBPACK_IMPORTED_MODULE_5__[\"intersectRect\"])(bbox, viewRange));\n }\n }\n else {\n this.set('isInView', false);\n }\n this.set('cacheCanvasBBox', bbox);\n };\n Group.prototype.draw = function (context, region) {\n var children = this.cfg.children;\n var allowDraw = region ? this.cfg.refresh : true; // 局部刷新需要判定\n // 这个地方需要判定,在 G6 的场景每个 group 都有 transform 的场景下性能会开销非常大\n // 通过 refresh 的判定,可以不刷新没有发生过变化的分组,不在视窗内的分组等等\n // 如果想进一步提升局部渲染性能,可以进一步优化 refresh 的判定,依然有潜力\n if (children.length && allowDraw) {\n context.save();\n // group 上的矩阵和属性也会应用到上下文上\n // 先将 attrs 应用到上下文中,再设置 clip。因为 clip 应该被当前元素的 matrix 所影响\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_3__[\"applyAttrsToContext\"])(context, this);\n this._applyClip(context, this.getClip());\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_3__[\"drawChildren\"])(context, children, region);\n context.restore();\n this.cacheCanvasBBox();\n }\n // 这里的成本比较大,如果不绘制则不再\n // this.set('cacheCanvasBBox', this.getCanvasBBox());\n this.cfg.refresh = null;\n // 绘制后,消除更新标记\n this.set('hasChanged', false);\n };\n // 绘制时被跳过,一般发生在分组隐藏时\n Group.prototype.skipDraw = function () {\n this.set('cacheCanvasBBox', null);\n this.set('hasChanged', false);\n };\n return Group;\n}(_antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"AbstractGroup\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Group);\n//# sourceMappingURL=group.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vZ3JvdXAuanM/OTI5MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNXO0FBQ1o7QUFDK0M7QUFDcEM7QUFDQTtBQUM1QztBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxXQUFXO0FBQzFCO0FBQ0E7QUFDQSxRQUFRLGlFQUFjO0FBQ3RCO0FBQ0E7QUFDQSxlQUFlLG1DQUFLO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksc0VBQW1CO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLHVCQUF1QixzREFBRztBQUMxQix1QkFBdUIsc0RBQUc7QUFDMUIsdUJBQXVCLHNEQUFHO0FBQzFCLHVCQUF1QixzREFBRztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsZ0VBQWE7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseURBQXlEO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxzRUFBbUI7QUFDL0I7QUFDQSxZQUFZLCtEQUFZO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQywwREFBYTtBQUNBLG9FQUFLLEVBQUM7QUFDckIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vZ3JvdXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IEFic3RyYWN0R3JvdXAgfSBmcm9tICdAYW50di9nLWJhc2UnO1xuaW1wb3J0ICogYXMgU2hhcGUgZnJvbSAnLi9zaGFwZSc7XG5pbXBvcnQgeyBhcHBseUF0dHJzVG9Db250ZXh0LCBkcmF3Q2hpbGRyZW4sIHJlZnJlc2hFbGVtZW50IH0gZnJvbSAnLi91dGlsL2RyYXcnO1xuaW1wb3J0IHsgZWFjaCwgbWF4LCBtaW4gfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IGludGVyc2VjdFJlY3QgfSBmcm9tICcuL3V0aWwvdXRpbCc7XG52YXIgR3JvdXAgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEdyb3VwLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEdyb3VwKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOS4gOS6m+aWueazleiwg+eUqOS8muW8lei1t+eUu+W4g+WPmOWMllxuICAgICAqIEBwYXJhbSB7Q2hhbmdlVHlwZX0gY2hhbmdlVHlwZSDmlLnlj5jnmoTnsbvlnotcbiAgICAgKi9cbiAgICBHcm91cC5wcm90b3R5cGUub25DYW52YXNDaGFuZ2UgPSBmdW5jdGlvbiAoY2hhbmdlVHlwZSkge1xuICAgICAgICByZWZyZXNoRWxlbWVudCh0aGlzLCBjaGFuZ2VUeXBlKTtcbiAgICB9O1xuICAgIEdyb3VwLnByb3RvdHlwZS5nZXRTaGFwZUJhc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBTaGFwZTtcbiAgICB9O1xuICAgIEdyb3VwLnByb3RvdHlwZS5nZXRHcm91cEJhc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBHcm91cDtcbiAgICB9O1xuICAgIC8vIOWQjCBzaGFwZSDkuK3nmoTmlrnms5Xph43lpI3kuoZcbiAgICBHcm91cC5wcm90b3R5cGUuX2FwcGx5Q2xpcCA9IGZ1bmN0aW9uIChjb250ZXh0LCBjbGlwKSB7XG4gICAgICAgIGlmIChjbGlwKSB7XG4gICAgICAgICAgICBjb250ZXh0LnNhdmUoKTtcbiAgICAgICAgICAgIC8vIOWwhiBjbGlwIOeahOWxnuaAp+aMgui9veWIsCBjb250ZXh0IOS4ilxuICAgICAgICAgICAgYXBwbHlBdHRyc1RvQ29udGV4dChjb250ZXh0LCBjbGlwKTtcbiAgICAgICAgICAgIC8vIOe7mOWItiBjbGlwIOi3r+W+hFxuICAgICAgICAgICAgY2xpcC5jcmVhdGVQYXRoKGNvbnRleHQpO1xuICAgICAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7XG4gICAgICAgICAgICAvLyDoo4HliapcbiAgICAgICAgICAgIGNvbnRleHQuY2xpcCgpO1xuICAgICAgICAgICAgY2xpcC5fYWZ0ZXJEcmF3KCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIOi/meS4quaWueazleS7peWJjeebtOaOpeS9v+eUqOeahCBnZXRDYW52YXNCQm9477yM55Sx5LqOIGdyb3VwIOS4iuayoeaciee8k+WtmO+8jOaJgOS7peavj+asoemHjeaWsOiuoeeul++8jOWvvOiHtOaAp+iDveW8gOmUgOavlOi+g+Wkp1xuICAgIC8vIOWkp+amguiDveWkn+iKguecgeWFqOWxgOa4suafkyAxNS0yMCUg55qE5oCn6IO977yM5aaC5p6c5LiN5Zyo6L+Z6YeM5Yqg57yT5a2Y5LyY5YyW5ZCOIDEwVyDkuKroioLngrnml6Dms5Xovr7liLAgNS02IG1z77yM5aSn5qaC6IO95aSfIDMwLTQwbXNcbiAgICBHcm91cC5wcm90b3R5cGUuY2FjaGVDYW52YXNCQm94ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmNmZy5jaGlsZHJlbjtcbiAgICAgICAgdmFyIHhBcnIgPSBbXTtcbiAgICAgICAgdmFyIHlBcnIgPSBbXTtcbiAgICAgICAgZWFjaChjaGlsZHJlbiwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgICAgICB2YXIgYmJveCA9IGNoaWxkLmNmZy5jYWNoZUNhbnZhc0JCb3g7XG4gICAgICAgICAgICAvLyBpc0ludmlldyDnmoTliKTlrprmmK/kuIDml6blm77lvaLmiJbogIXliIbnu4TmuLLmn5PlsLHopoHorqHnrpfmmK/lkKblnKjop4blm77lhoXvvIxcbiAgICAgICAgICAgIC8vIOi/meS4quWIpOWumiAxMFcg5Liq5Zu+5b2i5LiL5beu5LiN5aSa6IO95aSf6IqC55yBIDUtNiBtcyDnmoTlvIDplIBcbiAgICAgICAgICAgIGlmIChiYm94ICYmIGNoaWxkLmNmZy5pc0luVmlldykge1xuICAgICAgICAgICAgICAgIHhBcnIucHVzaChiYm94Lm1pblgsIGJib3gubWF4WCk7XG4gICAgICAgICAgICAgICAgeUFyci5wdXNoKGJib3gubWluWSwgYmJveC5tYXhZKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBiYm94ID0gbnVsbDtcbiAgICAgICAgaWYgKHhBcnIubGVuZ3RoKSB7XG4gICAgICAgICAgICB2YXIgbWluWCA9IG1pbih4QXJyKTtcbiAgICAgICAgICAgIHZhciBtYXhYID0gbWF4KHhBcnIpO1xuICAgICAgICAgICAgdmFyIG1pblkgPSBtaW4oeUFycik7XG4gICAgICAgICAgICB2YXIgbWF4WSA9IG1heCh5QXJyKTtcbiAgICAgICAgICAgIGJib3ggPSB7XG4gICAgICAgICAgICAgICAgbWluWDogbWluWCxcbiAgICAgICAgICAgICAgICBtaW5ZOiBtaW5ZLFxuICAgICAgICAgICAgICAgIHg6IG1pblgsXG4gICAgICAgICAgICAgICAgeTogbWluWSxcbiAgICAgICAgICAgICAgICBtYXhYOiBtYXhYLFxuICAgICAgICAgICAgICAgIG1heFk6IG1heFksXG4gICAgICAgICAgICAgICAgd2lkdGg6IG1heFggLSBtaW5YLFxuICAgICAgICAgICAgICAgIGhlaWdodDogbWF4WSAtIG1pblksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdmFyIGNhbnZhcyA9IHRoaXMuY2ZnLmNhbnZhcztcbiAgICAgICAgICAgIGlmIChjYW52YXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgdmlld1JhbmdlID0gY2FudmFzLmdldFZpZXdSYW5nZSgpO1xuICAgICAgICAgICAgICAgIC8vIOWmguaenOi/meS4quWcsOaWueWIpOWumiBpc0luVmlldyA9PSBmYWxzZSDorr7nva4gYmJveCDkuLogZmFsc2Ug55qE6K+d77yM5ou+5Y+W55qE5oCn6IO95Lya5pu06auYXG4gICAgICAgICAgICAgICAgLy8g5L2G5piv55uu5YmNIDEwVyDlm77lvaLnmoTmi77lj5blnKggMi01bXMg5YaF77yM6L+Z5Liq5LyY5YyW5oSP5LmJ5LiN5aSn77yM5Y+v5Lul5ZCO5pyf6KeC5a+f5YaN55yLXG4gICAgICAgICAgICAgICAgdGhpcy5zZXQoJ2lzSW5WaWV3JywgaW50ZXJzZWN0UmVjdChiYm94LCB2aWV3UmFuZ2UpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2V0KCdpc0luVmlldycsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldCgnY2FjaGVDYW52YXNCQm94JywgYmJveCk7XG4gICAgfTtcbiAgICBHcm91cC5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uIChjb250ZXh0LCByZWdpb24pIHtcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5jZmcuY2hpbGRyZW47XG4gICAgICAgIHZhciBhbGxvd0RyYXcgPSByZWdpb24gPyB0aGlzLmNmZy5yZWZyZXNoIDogdHJ1ZTsgLy8g5bGA6YOo5Yi35paw6ZyA6KaB5Yik5a6aXG4gICAgICAgIC8vIOi/meS4quWcsOaWuemcgOimgeWIpOWumu+8jOWcqCBHNiDnmoTlnLrmma/mr4/kuKogZ3JvdXAg6YO95pyJIHRyYW5zZm9ybSDnmoTlnLrmma/kuIvmgKfog73kvJrlvIDplIDpnZ7luLjlpKdcbiAgICAgICAgLy8g6YCa6L+HIHJlZnJlc2gg55qE5Yik5a6a77yM5Y+v5Lul5LiN5Yi35paw5rKh5pyJ5Y+R55Sf6L+H5Y+Y5YyW55qE5YiG57uE77yM5LiN5Zyo6KeG56qX5YaF55qE5YiG57uE562J562JXG4gICAgICAgIC8vIOWmguaenOaDs+i/m+S4gOatpeaPkOWNh+WxgOmDqOa4suafk+aAp+iDve+8jOWPr+S7pei/m+S4gOatpeS8mOWMliByZWZyZXNoIOeahOWIpOWumu+8jOS+neeEtuaciea9nOWKm1xuICAgICAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoICYmIGFsbG93RHJhdykge1xuICAgICAgICAgICAgY29udGV4dC5zYXZlKCk7XG4gICAgICAgICAgICAvLyBncm91cCDkuIrnmoTnn6npmLXlkozlsZ7mgKfkuZ/kvJrlupTnlKjliLDkuIrkuIvmlofkuIpcbiAgICAgICAgICAgIC8vIOWFiOWwhiBhdHRycyDlupTnlKjliLDkuIrkuIvmlofkuK3vvIzlho3orr7nva4gY2xpcOOAguWboOS4uiBjbGlwIOW6lOivpeiiq+W9k+WJjeWFg+e0oOeahCBtYXRyaXgg5omA5b2x5ZONXG4gICAgICAgICAgICBhcHBseUF0dHJzVG9Db250ZXh0KGNvbnRleHQsIHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5fYXBwbHlDbGlwKGNvbnRleHQsIHRoaXMuZ2V0Q2xpcCgpKTtcbiAgICAgICAgICAgIGRyYXdDaGlsZHJlbihjb250ZXh0LCBjaGlsZHJlbiwgcmVnaW9uKTtcbiAgICAgICAgICAgIGNvbnRleHQucmVzdG9yZSgpO1xuICAgICAgICAgICAgdGhpcy5jYWNoZUNhbnZhc0JCb3goKTtcbiAgICAgICAgfVxuICAgICAgICAvLyDov5nph4znmoTmiJDmnKzmr5TovoPlpKfvvIzlpoLmnpzkuI3nu5jliLbliJnkuI3lho1cbiAgICAgICAgLy8gdGhpcy5zZXQoJ2NhY2hlQ2FudmFzQkJveCcsIHRoaXMuZ2V0Q2FudmFzQkJveCgpKTtcbiAgICAgICAgdGhpcy5jZmcucmVmcmVzaCA9IG51bGw7XG4gICAgICAgIC8vIOe7mOWItuWQju+8jOa2iOmZpOabtOaWsOagh+iusFxuICAgICAgICB0aGlzLnNldCgnaGFzQ2hhbmdlZCcsIGZhbHNlKTtcbiAgICB9O1xuICAgIC8vIOe7mOWItuaXtuiiq+i3s+i/h++8jOS4gOiIrOWPkeeUn+WcqOWIhue7hOmakOiXj+aXtlxuICAgIEdyb3VwLnByb3RvdHlwZS5za2lwRHJhdyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5zZXQoJ2NhY2hlQ2FudmFzQkJveCcsIG51bGwpO1xuICAgICAgICB0aGlzLnNldCgnaGFzQ2hhbmdlZCcsIGZhbHNlKTtcbiAgICB9O1xuICAgIHJldHVybiBHcm91cDtcbn0oQWJzdHJhY3RHcm91cCkpO1xuZXhwb3J0IGRlZmF1bHQgR3JvdXA7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1ncm91cC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/group.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/index.js":
/*!*************************************************************************!*\
!*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/index.js ***!
\*************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"version\", function() { return version; });\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./shape */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/index.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"Shape\", function() { return _shape__WEBPACK_IMPORTED_MODULE_0__; });\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/index.js\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _antv_g_base__WEBPACK_IMPORTED_MODULE_1__) if([\"default\",\"Canvas\",\"Group\",\"Shape\",\"getArcParams\",\"version\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _antv_g_base__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _canvas__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./canvas */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/canvas.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Canvas\", function() { return _canvas__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _group__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./group */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/group.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Group\", function() { return _group__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _util_arc_params__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util/arc-params */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/arc-params.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getArcParams\", function() { return _util_arc_params__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n\n\n\n\n\n\nvar version = '0.5.12';\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vaW5kZXguanM/MzY3ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUM7QUFDSjtBQUNnQjtBQUNGO0FBQzFCO0FBQzJDO0FBQ3JEO0FBQ1AiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBTaGFwZSBmcm9tICcuL3NoYXBlJztcbmV4cG9ydCAqIGZyb20gJ0BhbnR2L2ctYmFzZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIENhbnZhcyB9IGZyb20gJy4vY2FudmFzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgR3JvdXAgfSBmcm9tICcuL2dyb3VwJztcbmV4cG9ydCB7IFNoYXBlIH07XG5leHBvcnQgeyBkZWZhdWx0IGFzIGdldEFyY1BhcmFtcyB9IGZyb20gJy4vdXRpbC9hcmMtcGFyYW1zJztcbmV4cG9ydCB2YXIgdmVyc2lvbiA9ICcwLjUuMTInO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/base.js":
/*!******************************************************************************!*\
!*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/base.js ***!
\******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/index.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/util */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/util.js\");\n/* harmony import */ var _util_draw__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/draw */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/draw.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./index */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/index.js\");\n/* harmony import */ var _group__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../group */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/group.js\");\n\n\n\n\n\n\n\nvar ShapeBase = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(ShapeBase, _super);\n function ShapeBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ShapeBase.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n // 设置默认值\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { lineWidth: 1, lineAppendWidth: 0, strokeOpacity: 1, fillOpacity: 1 });\n };\n ShapeBase.prototype.getShapeBase = function () {\n return _index__WEBPACK_IMPORTED_MODULE_4__;\n };\n ShapeBase.prototype.getGroupBase = function () {\n return _group__WEBPACK_IMPORTED_MODULE_5__[\"default\"];\n };\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n ShapeBase.prototype.onCanvasChange = function (changeType) {\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_3__[\"refreshElement\"])(this, changeType);\n };\n ShapeBase.prototype.calculateBBox = function () {\n var type = this.get('type');\n var lineWidth = this.getHitLineWidth();\n // const attrs = this.attr();\n var bboxMethod = Object(_antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"getBBoxMethod\"])(type);\n var box = bboxMethod(this);\n var halfLineWidth = lineWidth / 2;\n var minX = box.x - halfLineWidth;\n var minY = box.y - halfLineWidth;\n var maxX = box.x + box.width + halfLineWidth;\n var maxY = box.y + box.height + halfLineWidth;\n return {\n x: minX,\n minX: minX,\n y: minY,\n minY: minY,\n width: box.width + lineWidth,\n height: box.height + lineWidth,\n maxX: maxX,\n maxY: maxY,\n };\n };\n ShapeBase.prototype.isFill = function () {\n return !!this.attrs['fill'] || this.isClipShape();\n };\n ShapeBase.prototype.isStroke = function () {\n return !!this.attrs['stroke'];\n };\n // 同 shape 中的方法重复了\n ShapeBase.prototype._applyClip = function (context, clip) {\n if (clip) {\n context.save();\n // 将 clip 的属性挂载到 context 上\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_3__[\"applyAttrsToContext\"])(context, clip);\n // 绘制 clip 路径\n clip.createPath(context);\n context.restore();\n // 裁剪\n context.clip();\n clip._afterDraw();\n }\n };\n // 绘制图形时需要考虑 region 限制\n ShapeBase.prototype.draw = function (context, region) {\n var clip = this.cfg.clipShape;\n // 如果指定了 region,同时不允许刷新时,直接返回\n if (region) {\n if (this.cfg.refresh === false) {\n // this._afterDraw();\n this.set('hasChanged', false);\n return;\n }\n // 是否相交需要考虑 clip 的包围盒\n var bbox = this.getCanvasBBox();\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"intersectRect\"])(region, bbox)) {\n // 图形的包围盒与重绘区域不相交时,也需要清除标记\n this.set('hasChanged', false);\n // 存在多种情形需要更新 cacheCanvasBBox 和 isInview 的判定\n // 1. 之前图形在视窗内,但是现在不再视窗内\n // 2. 如果当前的图形以及父元素都没有发生过变化,refresh = false 不会走到这里,所以这里的图形都是父元素发生变化,但是没有在视图内的元素\n if (this.cfg.isInView) {\n this._afterDraw();\n }\n return;\n }\n }\n context.save();\n // 先将 attrs 应用到上下文中,再设置 clip。因为 clip 应该被当前元素的 matrix 所影响\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_3__[\"applyAttrsToContext\"])(context, this);\n this._applyClip(context, clip);\n this.drawPath(context);\n context.restore();\n this._afterDraw();\n };\n ShapeBase.prototype.getCanvasViewBox = function () {\n var canvas = this.cfg.canvas;\n if (canvas) {\n // @ts-ignore\n return canvas.getViewRange();\n }\n return null;\n };\n ShapeBase.prototype.cacheCanvasBBox = function () {\n var canvasBBox = this.getCanvasViewBox();\n // 绘制的时候缓存包围盒\n if (canvasBBox) {\n var bbox = this.getCanvasBBox();\n var isInView = Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"intersectRect\"])(bbox, canvasBBox);\n this.set('isInView', isInView);\n // 不再视窗内 cacheCanvasBBox 设置成 null,会提升局部渲染的性能,\n // 因为在局部渲染影响的包围盒计算时不考虑这个图形的包围盒\n // 父元素 cacheCanvasBBox 计算的时候也不计算\n if (isInView) {\n this.set('cacheCanvasBBox', bbox);\n }\n else {\n this.set('cacheCanvasBBox', null);\n }\n }\n };\n ShapeBase.prototype._afterDraw = function () {\n this.cacheCanvasBBox();\n // 绘制后消除标记\n this.set('hasChanged', false);\n this.set('refresh', null);\n };\n ShapeBase.prototype.skipDraw = function () {\n this.set('cacheCanvasBBox', null);\n this.set('isInView', null);\n this.set('hasChanged', false);\n };\n /**\n * 绘制图形的路径\n * @param {CanvasRenderingContext2D} context 上下文\n */\n ShapeBase.prototype.drawPath = function (context) {\n this.createPath(context);\n this.strokeAndFill(context);\n this.afterDrawPath(context);\n };\n /**\n * @protected\n * 填充图形\n * @param {CanvasRenderingContext2D} context context 上下文\n */\n ShapeBase.prototype.fill = function (context) {\n context.fill();\n };\n /**\n * @protected\n * 绘制图形边框\n * @param {CanvasRenderingContext2D} context context 上下文\n */\n ShapeBase.prototype.stroke = function (context) {\n context.stroke();\n };\n // 绘制或者填充\n ShapeBase.prototype.strokeAndFill = function (context) {\n var _a = this.attrs, lineWidth = _a.lineWidth, opacity = _a.opacity, strokeOpacity = _a.strokeOpacity, fillOpacity = _a.fillOpacity;\n if (this.isFill()) {\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(fillOpacity) && fillOpacity !== 1) {\n context.globalAlpha = fillOpacity;\n this.fill(context);\n context.globalAlpha = opacity;\n }\n else {\n this.fill(context);\n }\n }\n if (this.isStroke()) {\n if (lineWidth > 0) {\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(strokeOpacity) && strokeOpacity !== 1) {\n context.globalAlpha = strokeOpacity;\n }\n this.stroke(context);\n }\n }\n this.afterDrawPath(context);\n };\n /**\n * @protected\n * 绘制图形的路径\n * @param {CanvasRenderingContext2D} context 上下文\n */\n ShapeBase.prototype.createPath = function (context) { };\n /**\n * 绘制完成 path 后的操作\n * @param {CanvasRenderingContext2D} context 上下文\n */\n ShapeBase.prototype.afterDrawPath = function (context) { };\n ShapeBase.prototype.isInShape = function (refX, refY) {\n // return HitUtil.isHitShape(this, refX, refY);\n var isStroke = this.isStroke();\n var isFill = this.isFill();\n var lineWidth = this.getHitLineWidth();\n return this.isInStrokeOrPath(refX, refY, isStroke, isFill, lineWidth);\n };\n // 之所以不拆成 isInStroke 和 isInPath 在于两者存在一些共同的计算\n ShapeBase.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n return false;\n };\n /**\n * 获取线拾取的宽度\n * @returns {number} 线的拾取宽度\n */\n ShapeBase.prototype.getHitLineWidth = function () {\n if (!this.isStroke()) {\n return 0;\n }\n var attrs = this.attrs;\n return attrs['lineWidth'] + attrs['lineAppendWidth'];\n };\n return ShapeBase;\n}(_antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"AbstractShape\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (ShapeBase);\n//# sourceMappingURL=base.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vc2hhcGUvYmFzZS5qcz8yYjRjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTRDO0FBQ0M7QUFDTztBQUNlO0FBQ3RCO0FBQ1o7QUFDSjtBQUM3QjtBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRyxXQUFXLHFFQUFxRTtBQUNuSDtBQUNBO0FBQ0EsZUFBZSxtQ0FBSztBQUNwQjtBQUNBO0FBQ0EsZUFBZSw4Q0FBSztBQUNwQjtBQUNBO0FBQ0E7QUFDQSxlQUFlLFdBQVc7QUFDMUI7QUFDQTtBQUNBLFFBQVEsaUVBQWM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixrRUFBYTtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksc0VBQW1CO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsZ0VBQWE7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHNFQUFtQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsZ0VBQWE7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHlCQUF5QjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHlCQUF5QjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUseUJBQXlCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsd0RBQUs7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsd0RBQUs7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHlCQUF5QjtBQUN4QztBQUNBLHlEQUF5RDtBQUN6RDtBQUNBO0FBQ0EsZUFBZSx5QkFBeUI7QUFDeEM7QUFDQSw0REFBNEQ7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsT0FBTztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsMERBQWE7QUFDQSx3RUFBUyxFQUFDO0FBQ3pCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWNhbnZhc0AwLjUuMTJAQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL2Jhc2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBBYnN0cmFjdFNoYXBlIH0gZnJvbSAnQGFudHYvZy1iYXNlJztcbmltcG9ydCB7IGlzTmlsLCBpbnRlcnNlY3RSZWN0IH0gZnJvbSAnLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IGFwcGx5QXR0cnNUb0NvbnRleHQsIHJlZnJlc2hFbGVtZW50IH0gZnJvbSAnLi4vdXRpbC9kcmF3JztcbmltcG9ydCB7IGdldEJCb3hNZXRob2QgfSBmcm9tICdAYW50di9nLWJhc2UnO1xuaW1wb3J0ICogYXMgU2hhcGUgZnJvbSAnLi9pbmRleCc7XG5pbXBvcnQgR3JvdXAgZnJvbSAnLi4vZ3JvdXAnO1xudmFyIFNoYXBlQmFzZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoU2hhcGVCYXNlLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFNoYXBlQmFzZSgpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLmdldERlZmF1bHRBdHRycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gX3N1cGVyLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMuY2FsbCh0aGlzKTtcbiAgICAgICAgLy8g6K6+572u6buY6K6k5YC8XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgYXR0cnMpLCB7IGxpbmVXaWR0aDogMSwgbGluZUFwcGVuZFdpZHRoOiAwLCBzdHJva2VPcGFjaXR5OiAxLCBmaWxsT3BhY2l0eTogMSB9KTtcbiAgICB9O1xuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuZ2V0U2hhcGVCYXNlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gU2hhcGU7XG4gICAgfTtcbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLmdldEdyb3VwQmFzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIEdyb3VwO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5LiA5Lqb5pa55rOV6LCD55So5Lya5byV6LW355S75biD5Y+Y5YyWXG4gICAgICogQHBhcmFtIHtDaGFuZ2VUeXBlfSBjaGFuZ2VUeXBlIOaUueWPmOeahOexu+Wei1xuICAgICAqL1xuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUub25DYW52YXNDaGFuZ2UgPSBmdW5jdGlvbiAoY2hhbmdlVHlwZSkge1xuICAgICAgICByZWZyZXNoRWxlbWVudCh0aGlzLCBjaGFuZ2VUeXBlKTtcbiAgICB9O1xuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuY2FsY3VsYXRlQkJveCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHR5cGUgPSB0aGlzLmdldCgndHlwZScpO1xuICAgICAgICB2YXIgbGluZVdpZHRoID0gdGhpcy5nZXRIaXRMaW5lV2lkdGgoKTtcbiAgICAgICAgLy8gY29uc3QgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIGJib3hNZXRob2QgPSBnZXRCQm94TWV0aG9kKHR5cGUpO1xuICAgICAgICB2YXIgYm94ID0gYmJveE1ldGhvZCh0aGlzKTtcbiAgICAgICAgdmFyIGhhbGZMaW5lV2lkdGggPSBsaW5lV2lkdGggLyAyO1xuICAgICAgICB2YXIgbWluWCA9IGJveC54IC0gaGFsZkxpbmVXaWR0aDtcbiAgICAgICAgdmFyIG1pblkgPSBib3gueSAtIGhhbGZMaW5lV2lkdGg7XG4gICAgICAgIHZhciBtYXhYID0gYm94LnggKyBib3gud2lkdGggKyBoYWxmTGluZVdpZHRoO1xuICAgICAgICB2YXIgbWF4WSA9IGJveC55ICsgYm94LmhlaWdodCArIGhhbGZMaW5lV2lkdGg7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiBtaW5YLFxuICAgICAgICAgICAgbWluWDogbWluWCxcbiAgICAgICAgICAgIHk6IG1pblksXG4gICAgICAgICAgICBtaW5ZOiBtaW5ZLFxuICAgICAgICAgICAgd2lkdGg6IGJveC53aWR0aCArIGxpbmVXaWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogYm94LmhlaWdodCArIGxpbmVXaWR0aCxcbiAgICAgICAgICAgIG1heFg6IG1heFgsXG4gICAgICAgICAgICBtYXhZOiBtYXhZLFxuICAgICAgICB9O1xuICAgIH07XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5pc0ZpbGwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuYXR0cnNbJ2ZpbGwnXSB8fCB0aGlzLmlzQ2xpcFNoYXBlKCk7XG4gICAgfTtcbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLmlzU3Ryb2tlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gISF0aGlzLmF0dHJzWydzdHJva2UnXTtcbiAgICB9O1xuICAgIC8vIOWQjCBzaGFwZSDkuK3nmoTmlrnms5Xph43lpI3kuoZcbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLl9hcHBseUNsaXAgPSBmdW5jdGlvbiAoY29udGV4dCwgY2xpcCkge1xuICAgICAgICBpZiAoY2xpcCkge1xuICAgICAgICAgICAgY29udGV4dC5zYXZlKCk7XG4gICAgICAgICAgICAvLyDlsIYgY2xpcCDnmoTlsZ7mgKfmjILovb3liLAgY29udGV4dCDkuIpcbiAgICAgICAgICAgIGFwcGx5QXR0cnNUb0NvbnRleHQoY29udGV4dCwgY2xpcCk7XG4gICAgICAgICAgICAvLyDnu5jliLYgY2xpcCDot6/lvoRcbiAgICAgICAgICAgIGNsaXAuY3JlYXRlUGF0aChjb250ZXh0KTtcbiAgICAgICAgICAgIGNvbnRleHQucmVzdG9yZSgpO1xuICAgICAgICAgICAgLy8g6KOB5YmqXG4gICAgICAgICAgICBjb250ZXh0LmNsaXAoKTtcbiAgICAgICAgICAgIGNsaXAuX2FmdGVyRHJhdygpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvLyDnu5jliLblm77lvaLml7bpnIDopoHogIPomZEgcmVnaW9uIOmZkOWItlxuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uIChjb250ZXh0LCByZWdpb24pIHtcbiAgICAgICAgdmFyIGNsaXAgPSB0aGlzLmNmZy5jbGlwU2hhcGU7XG4gICAgICAgIC8vIOWmguaenOaMh+WumuS6hiByZWdpb27vvIzlkIzml7bkuI3lhYHorrjliLfmlrDml7bvvIznm7TmjqXov5Tlm55cbiAgICAgICAgaWYgKHJlZ2lvbikge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2ZnLnJlZnJlc2ggPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgLy8gdGhpcy5fYWZ0ZXJEcmF3KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXQoJ2hhc0NoYW5nZWQnLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8g5piv5ZCm55u45Lqk6ZyA6KaB6ICD6JmRIGNsaXAg55qE5YyF5Zu055uSXG4gICAgICAgICAgICB2YXIgYmJveCA9IHRoaXMuZ2V0Q2FudmFzQkJveCgpO1xuICAgICAgICAgICAgaWYgKCFpbnRlcnNlY3RSZWN0KHJlZ2lvbiwgYmJveCkpIHtcbiAgICAgICAgICAgICAgICAvLyDlm77lvaLnmoTljIXlm7Tnm5LkuI7ph43nu5jljLrln5/kuI3nm7jkuqTml7bvvIzkuZ/pnIDopoHmuIXpmaTmoIforrBcbiAgICAgICAgICAgICAgICB0aGlzLnNldCgnaGFzQ2hhbmdlZCcsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAvLyDlrZjlnKjlpJrnp43mg4XlvaLpnIDopoHmm7TmlrAgY2FjaGVDYW52YXNCQm94IOWSjCBpc0ludmlldyDnmoTliKTlrppcbiAgICAgICAgICAgICAgICAvLyAxLiDkuYvliY3lm77lvaLlnKjop4bnqpflhoXvvIzkvYbmmK/njrDlnKjkuI3lho3op4bnqpflhoVcbiAgICAgICAgICAgICAgICAvLyAyLiDlpoLmnpzlvZPliY3nmoTlm77lvaLku6Xlj4rniLblhYPntKDpg73msqHmnInlj5HnlJ/ov4flj5jljJbvvIxyZWZyZXNoID0gZmFsc2Ug5LiN5Lya6LWw5Yiw6L+Z6YeM77yM5omA5Lul6L+Z6YeM55qE5Zu+5b2i6YO95piv54i25YWD57Sg5Y+R55Sf5Y+Y5YyW77yM5L2G5piv5rKh5pyJ5Zyo6KeG5Zu+5YaF55qE5YWD57SgXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2ZnLmlzSW5WaWV3KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2FmdGVyRHJhdygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29udGV4dC5zYXZlKCk7XG4gICAgICAgIC8vIOWFiOWwhiBhdHRycyDlupTnlKjliLDkuIrkuIvmlofkuK3vvIzlho3orr7nva4gY2xpcOOAguWboOS4uiBjbGlwIOW6lOivpeiiq+W9k+WJjeWFg+e0oOeahCBtYXRyaXgg5omA5b2x5ZONXG4gICAgICAgIGFwcGx5QXR0cnNUb0NvbnRleHQoY29udGV4dCwgdGhpcyk7XG4gICAgICAgIHRoaXMuX2FwcGx5Q2xpcChjb250ZXh0LCBjbGlwKTtcbiAgICAgICAgdGhpcy5kcmF3UGF0aChjb250ZXh0KTtcbiAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7XG4gICAgICAgIHRoaXMuX2FmdGVyRHJhdygpO1xuICAgIH07XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5nZXRDYW52YXNWaWV3Qm94ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgY2FudmFzID0gdGhpcy5jZmcuY2FudmFzO1xuICAgICAgICBpZiAoY2FudmFzKSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICByZXR1cm4gY2FudmFzLmdldFZpZXdSYW5nZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5jYWNoZUNhbnZhc0JCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjYW52YXNCQm94ID0gdGhpcy5nZXRDYW52YXNWaWV3Qm94KCk7XG4gICAgICAgIC8vIOe7mOWItueahOaXtuWAmee8k+WtmOWMheWbtOebklxuICAgICAgICBpZiAoY2FudmFzQkJveCkge1xuICAgICAgICAgICAgdmFyIGJib3ggPSB0aGlzLmdldENhbnZhc0JCb3goKTtcbiAgICAgICAgICAgIHZhciBpc0luVmlldyA9IGludGVyc2VjdFJlY3QoYmJveCwgY2FudmFzQkJveCk7XG4gICAgICAgICAgICB0aGlzLnNldCgnaXNJblZpZXcnLCBpc0luVmlldyk7XG4gICAgICAgICAgICAvLyDkuI3lho3op4bnqpflhoUgY2FjaGVDYW52YXNCQm94IOiuvue9ruaIkCBudWxs77yM5Lya5o+Q5Y2H5bGA6YOo5riy5p+T55qE5oCn6IO977yMXG4gICAgICAgICAgICAvLyDlm6DkuLrlnKjlsYDpg6jmuLLmn5PlvbHlk43nmoTljIXlm7Tnm5LorqHnrpfml7bkuI3ogIPomZHov5nkuKrlm77lvaLnmoTljIXlm7Tnm5JcbiAgICAgICAgICAgIC8vIOeItuWFg+e0oCBjYWNoZUNhbnZhc0JCb3gg6K6h566X55qE5pe25YCZ5Lmf5LiN6K6h566XXG4gICAgICAgICAgICBpZiAoaXNJblZpZXcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldCgnY2FjaGVDYW52YXNCQm94JywgYmJveCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldCgnY2FjaGVDYW52YXNCQm94JywgbnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuX2FmdGVyRHJhdyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5jYWNoZUNhbnZhc0JCb3goKTtcbiAgICAgICAgLy8g57uY5Yi25ZCO5raI6Zmk5qCH6K6wXG4gICAgICAgIHRoaXMuc2V0KCdoYXNDaGFuZ2VkJywgZmFsc2UpO1xuICAgICAgICB0aGlzLnNldCgncmVmcmVzaCcsIG51bGwpO1xuICAgIH07XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5za2lwRHJhdyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5zZXQoJ2NhY2hlQ2FudmFzQkJveCcsIG51bGwpO1xuICAgICAgICB0aGlzLnNldCgnaXNJblZpZXcnLCBudWxsKTtcbiAgICAgICAgdGhpcy5zZXQoJ2hhc0NoYW5nZWQnLCBmYWxzZSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDnu5jliLblm77lvaLnmoTot6/lvoRcbiAgICAgKiBAcGFyYW0ge0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRH0gY29udGV4dCDkuIrkuIvmlodcbiAgICAgKi9cbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLmRyYXdQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgdGhpcy5jcmVhdGVQYXRoKGNvbnRleHQpO1xuICAgICAgICB0aGlzLnN0cm9rZUFuZEZpbGwoY29udGV4dCk7XG4gICAgICAgIHRoaXMuYWZ0ZXJEcmF3UGF0aChjb250ZXh0KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiDloavlhYXlm77lvaJcbiAgICAgKiBAcGFyYW0ge0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRH0gY29udGV4dCBjb250ZXh0IOS4iuS4i+aWh1xuICAgICAqL1xuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAgIGNvbnRleHQuZmlsbCgpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqIOe7mOWItuWbvuW9oui+ueahhlxuICAgICAqIEBwYXJhbSB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEfSBjb250ZXh0IGNvbnRleHQg5LiK5LiL5paHXG4gICAgICovXG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5zdHJva2UgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgICBjb250ZXh0LnN0cm9rZSgpO1xuICAgIH07XG4gICAgLy8g57uY5Yi25oiW6ICF5aGr5YWFXG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5zdHJva2VBbmRGaWxsID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcy5hdHRycywgbGluZVdpZHRoID0gX2EubGluZVdpZHRoLCBvcGFjaXR5ID0gX2Eub3BhY2l0eSwgc3Ryb2tlT3BhY2l0eSA9IF9hLnN0cm9rZU9wYWNpdHksIGZpbGxPcGFjaXR5ID0gX2EuZmlsbE9wYWNpdHk7XG4gICAgICAgIGlmICh0aGlzLmlzRmlsbCgpKSB7XG4gICAgICAgICAgICBpZiAoIWlzTmlsKGZpbGxPcGFjaXR5KSAmJiBmaWxsT3BhY2l0eSAhPT0gMSkge1xuICAgICAgICAgICAgICAgIGNvbnRleHQuZ2xvYmFsQWxwaGEgPSBmaWxsT3BhY2l0eTtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGwoY29udGV4dCk7XG4gICAgICAgICAgICAgICAgY29udGV4dC5nbG9iYWxBbHBoYSA9IG9wYWNpdHk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGwoY29udGV4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNTdHJva2UoKSkge1xuICAgICAgICAgICAgaWYgKGxpbmVXaWR0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzTmlsKHN0cm9rZU9wYWNpdHkpICYmIHN0cm9rZU9wYWNpdHkgIT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5nbG9iYWxBbHBoYSA9IHN0cm9rZU9wYWNpdHk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc3Ryb2tlKGNvbnRleHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWZ0ZXJEcmF3UGF0aChjb250ZXh0KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiDnu5jliLblm77lvaLnmoTot6/lvoRcbiAgICAgKiBAcGFyYW0ge0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRH0gY29udGV4dCDkuIrkuIvmlodcbiAgICAgKi9cbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLmNyZWF0ZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCkgeyB9O1xuICAgIC8qKlxuICAgICAqIOe7mOWItuWujOaIkCBwYXRoIOWQjueahOaTjeS9nFxuICAgICAqIEBwYXJhbSB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEfSBjb250ZXh0IOS4iuS4i+aWh1xuICAgICAqL1xuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuYWZ0ZXJEcmF3UGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7IH07XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5pc0luU2hhcGUgPSBmdW5jdGlvbiAocmVmWCwgcmVmWSkge1xuICAgICAgICAvLyByZXR1cm4gSGl0VXRpbC5pc0hpdFNoYXBlKHRoaXMsIHJlZlgsIHJlZlkpO1xuICAgICAgICB2YXIgaXNTdHJva2UgPSB0aGlzLmlzU3Ryb2tlKCk7XG4gICAgICAgIHZhciBpc0ZpbGwgPSB0aGlzLmlzRmlsbCgpO1xuICAgICAgICB2YXIgbGluZVdpZHRoID0gdGhpcy5nZXRIaXRMaW5lV2lkdGgoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNJblN0cm9rZU9yUGF0aChyZWZYLCByZWZZLCBpc1N0cm9rZSwgaXNGaWxsLCBsaW5lV2lkdGgpO1xuICAgIH07XG4gICAgLy8g5LmL5omA5Lul5LiN5ouG5oiQIGlzSW5TdHJva2Ug5ZKMIGlzSW5QYXRoIOWcqOS6juS4pOiAheWtmOWcqOS4gOS6m+WFseWQjOeahOiuoeeul1xuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuaXNJblN0cm9rZU9yUGF0aCA9IGZ1bmN0aW9uICh4LCB5LCBpc1N0cm9rZSwgaXNGaWxsLCBsaW5lV2lkdGgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog6I635Y+W57q/5ou+5Y+W55qE5a695bqmXG4gICAgICogQHJldHVybnMge251bWJlcn0g57q/55qE5ou+5Y+W5a695bqmXG4gICAgICovXG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5nZXRIaXRMaW5lV2lkdGggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghdGhpcy5pc1N0cm9rZSgpKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHJzO1xuICAgICAgICByZXR1cm4gYXR0cnNbJ2xpbmVXaWR0aCddICsgYXR0cnNbJ2xpbmVBcHBlbmRXaWR0aCddO1xuICAgIH07XG4gICAgcmV0dXJuIFNoYXBlQmFzZTtcbn0oQWJzdHJhY3RTaGFwZSkpO1xuZXhwb3J0IGRlZmF1bHQgU2hhcGVCYXNlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YmFzZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/base.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/circle.js":
/*!********************************************************************************!*\
!*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/circle.js ***!
\********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/base.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/util */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/util.js\");\n/**\n * @fileoverview 圆\n * @author dxq613@gmail.com\n */\n\n\n\nvar Circle = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Circle, _super);\n function Circle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Circle.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, r: 0 });\n };\n Circle.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n var attrs = this.attr();\n var cx = attrs.x;\n var cy = attrs.y;\n var r = attrs.r;\n var halfLineWidth = lineWidth / 2;\n var absDistance = Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"distance\"])(cx, cy, x, y);\n // 直接用距离,如果同时存在边和填充时,可以减少两次计算\n if (isFill && isStroke) {\n return absDistance <= r + halfLineWidth;\n }\n if (isFill) {\n return absDistance <= r;\n }\n if (isStroke) {\n return absDistance >= r - halfLineWidth && absDistance <= r + halfLineWidth;\n }\n return false;\n };\n Circle.prototype.createPath = function (context) {\n var attrs = this.attr();\n var cx = attrs.x;\n var cy = attrs.y;\n var r = attrs.r;\n context.beginPath();\n context.arc(cx, cy, r, 0, Math.PI * 2, false);\n context.closePath();\n };\n return Circle;\n}(_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Circle);\n//# sourceMappingURL=circle.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vc2hhcGUvY2lyY2xlLmpzP2E1ZmYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUM0QztBQUNiO0FBQ1M7QUFDeEM7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHLFdBQVcsbUJBQW1CO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLDJEQUFRO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFTO0FBQ0kscUVBQU0sRUFBQztBQUN0QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1jYW52YXNAMC41LjEyQEBhbnR2L2ctY2FudmFzL2VzbS9zaGFwZS9jaXJjbGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcg5ZyGXG4gKiBAYXV0aG9yIGR4cTYxM0BnbWFpbC5jb21cbiAqL1xuaW1wb3J0IHsgX19hc3NpZ24sIF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IFNoYXBlQmFzZSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHsgZGlzdGFuY2UgfSBmcm9tICcuLi91dGlsL3V0aWwnO1xudmFyIENpcmNsZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQ2lyY2xlLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIENpcmNsZSgpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBDaXJjbGUucHJvdG90eXBlLmdldERlZmF1bHRBdHRycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gX3N1cGVyLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMuY2FsbCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBhdHRycyksIHsgeDogMCwgeTogMCwgcjogMCB9KTtcbiAgICB9O1xuICAgIENpcmNsZS5wcm90b3R5cGUuaXNJblN0cm9rZU9yUGF0aCA9IGZ1bmN0aW9uICh4LCB5LCBpc1N0cm9rZSwgaXNGaWxsLCBsaW5lV2lkdGgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBjeCA9IGF0dHJzLng7XG4gICAgICAgIHZhciBjeSA9IGF0dHJzLnk7XG4gICAgICAgIHZhciByID0gYXR0cnMucjtcbiAgICAgICAgdmFyIGhhbGZMaW5lV2lkdGggPSBsaW5lV2lkdGggLyAyO1xuICAgICAgICB2YXIgYWJzRGlzdGFuY2UgPSBkaXN0YW5jZShjeCwgY3ksIHgsIHkpO1xuICAgICAgICAvLyDnm7TmjqXnlKjot53nprvvvIzlpoLmnpzlkIzml7blrZjlnKjovrnlkozloavlhYXml7bvvIzlj6/ku6Xlh4/lsJHkuKTmrKHorqHnrpdcbiAgICAgICAgaWYgKGlzRmlsbCAmJiBpc1N0cm9rZSkge1xuICAgICAgICAgICAgcmV0dXJuIGFic0Rpc3RhbmNlIDw9IHIgKyBoYWxmTGluZVdpZHRoO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0ZpbGwpIHtcbiAgICAgICAgICAgIHJldHVybiBhYnNEaXN0YW5jZSA8PSByO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1N0cm9rZSkge1xuICAgICAgICAgICAgcmV0dXJuIGFic0Rpc3RhbmNlID49IHIgLSBoYWxmTGluZVdpZHRoICYmIGFic0Rpc3RhbmNlIDw9IHIgKyBoYWxmTGluZVdpZHRoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIENpcmNsZS5wcm90b3R5cGUuY3JlYXRlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cigpO1xuICAgICAgICB2YXIgY3ggPSBhdHRycy54O1xuICAgICAgICB2YXIgY3kgPSBhdHRycy55O1xuICAgICAgICB2YXIgciA9IGF0dHJzLnI7XG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgICAgIGNvbnRleHQuYXJjKGN4LCBjeSwgciwgMCwgTWF0aC5QSSAqIDIsIGZhbHNlKTtcbiAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICB9O1xuICAgIHJldHVybiBDaXJjbGU7XG59KFNoYXBlQmFzZSkpO1xuZXhwb3J0IGRlZmF1bHQgQ2lyY2xlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y2lyY2xlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/circle.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/ellipse.js":
/*!*********************************************************************************!*\
!*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/ellipse.js ***!
\*********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/base.js\");\n/**\n * @fileoverview 椭圆\n * @author dxq613@gmail.com\n */\n\n\n// 根据椭圆公式计算 x*x/rx*rx + y*y/ry*ry;\nfunction ellipseDistance(squareX, squareY, rx, ry) {\n return squareX / (rx * rx) + squareY / (ry * ry);\n}\nvar Ellipse = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Ellipse, _super);\n function Ellipse() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Ellipse.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, rx: 0, ry: 0 });\n };\n Ellipse.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n var attrs = this.attr();\n var halfLineWith = lineWidth / 2;\n var cx = attrs.x;\n var cy = attrs.y;\n var rx = attrs.rx, ry = attrs.ry;\n var squareX = (x - cx) * (x - cx);\n var squareY = (y - cy) * (y - cy);\n // 使用椭圆的公式: x*x/rx*rx + y*y/ry*ry = 1;\n if (isFill && isStroke) {\n return ellipseDistance(squareX, squareY, rx + halfLineWith, ry + halfLineWith) <= 1;\n }\n if (isFill) {\n return ellipseDistance(squareX, squareY, rx, ry) <= 1;\n }\n if (isStroke) {\n return (ellipseDistance(squareX, squareY, rx - halfLineWith, ry - halfLineWith) >= 1 &&\n ellipseDistance(squareX, squareY, rx + halfLineWith, ry + halfLineWith) <= 1);\n }\n return false;\n };\n Ellipse.prototype.createPath = function (context) {\n var attrs = this.attr();\n var cx = attrs.x;\n var cy = attrs.y;\n var rx = attrs.rx;\n var ry = attrs.ry;\n context.beginPath();\n // 兼容逻辑\n if (context.ellipse) {\n context.ellipse(cx, cy, rx, ry, 0, 0, Math.PI * 2, false);\n }\n else {\n // 如果不支持,则使用圆来绘制,进行变形\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n context.save();\n context.translate(cx, cy);\n context.scale(scaleX, scaleY);\n context.arc(0, 0, r, 0, Math.PI * 2);\n context.restore();\n context.closePath();\n }\n };\n return Ellipse;\n}(_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Ellipse);\n//# sourceMappingURL=ellipse.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vc2hhcGUvZWxsaXBzZS5qcz9hMzBiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQzRDO0FBQ2I7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUcsV0FBVywyQkFBMkI7QUFDekU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyw2Q0FBUztBQUNJLHNFQUFPLEVBQUM7QUFDdkIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vc2hhcGUvZWxsaXBzZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVvdmVydmlldyDmpK3lnIZcbiAqIEBhdXRob3IgZHhxNjEzQGdtYWlsLmNvbVxuICovXG5pbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4vYmFzZSc7XG4vLyDmoLnmja7mpK3lnIblhazlvI/orqHnrpcgeCp4L3J4KnJ4ICsgeSp5L3J5KnJ5O1xuZnVuY3Rpb24gZWxsaXBzZURpc3RhbmNlKHNxdWFyZVgsIHNxdWFyZVksIHJ4LCByeSkge1xuICAgIHJldHVybiBzcXVhcmVYIC8gKHJ4ICogcngpICsgc3F1YXJlWSAvIChyeSAqIHJ5KTtcbn1cbnZhciBFbGxpcHNlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhFbGxpcHNlLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEVsbGlwc2UoKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgRWxsaXBzZS5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXR0cnMgPSBfc3VwZXIucHJvdG90eXBlLmdldERlZmF1bHRBdHRycy5jYWxsKHRoaXMpO1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGF0dHJzKSwgeyB4OiAwLCB5OiAwLCByeDogMCwgcnk6IDAgfSk7XG4gICAgfTtcbiAgICBFbGxpcHNlLnByb3RvdHlwZS5pc0luU3Ryb2tlT3JQYXRoID0gZnVuY3Rpb24gKHgsIHksIGlzU3Ryb2tlLCBpc0ZpbGwsIGxpbmVXaWR0aCkge1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIGhhbGZMaW5lV2l0aCA9IGxpbmVXaWR0aCAvIDI7XG4gICAgICAgIHZhciBjeCA9IGF0dHJzLng7XG4gICAgICAgIHZhciBjeSA9IGF0dHJzLnk7XG4gICAgICAgIHZhciByeCA9IGF0dHJzLnJ4LCByeSA9IGF0dHJzLnJ5O1xuICAgICAgICB2YXIgc3F1YXJlWCA9ICh4IC0gY3gpICogKHggLSBjeCk7XG4gICAgICAgIHZhciBzcXVhcmVZID0gKHkgLSBjeSkgKiAoeSAtIGN5KTtcbiAgICAgICAgLy8g5L2/55So5qSt5ZyG55qE5YWs5byP77yaIHgqeC9yeCpyeCArIHkqeS9yeSpyeSA9IDE7XG4gICAgICAgIGlmIChpc0ZpbGwgJiYgaXNTdHJva2UpIHtcbiAgICAgICAgICAgIHJldHVybiBlbGxpcHNlRGlzdGFuY2Uoc3F1YXJlWCwgc3F1YXJlWSwgcnggKyBoYWxmTGluZVdpdGgsIHJ5ICsgaGFsZkxpbmVXaXRoKSA8PSAxO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0ZpbGwpIHtcbiAgICAgICAgICAgIHJldHVybiBlbGxpcHNlRGlzdGFuY2Uoc3F1YXJlWCwgc3F1YXJlWSwgcngsIHJ5KSA8PSAxO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1N0cm9rZSkge1xuICAgICAgICAgICAgcmV0dXJuIChlbGxpcHNlRGlzdGFuY2Uoc3F1YXJlWCwgc3F1YXJlWSwgcnggLSBoYWxmTGluZVdpdGgsIHJ5IC0gaGFsZkxpbmVXaXRoKSA+PSAxICYmXG4gICAgICAgICAgICAgICAgZWxsaXBzZURpc3RhbmNlKHNxdWFyZVgsIHNxdWFyZVksIHJ4ICsgaGFsZkxpbmVXaXRoLCByeSArIGhhbGZMaW5lV2l0aCkgPD0gMSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgRWxsaXBzZS5wcm90b3R5cGUuY3JlYXRlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cigpO1xuICAgICAgICB2YXIgY3ggPSBhdHRycy54O1xuICAgICAgICB2YXIgY3kgPSBhdHRycy55O1xuICAgICAgICB2YXIgcnggPSBhdHRycy5yeDtcbiAgICAgICAgdmFyIHJ5ID0gYXR0cnMucnk7XG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgICAgIC8vIOWFvOWuuemAu+i+kVxuICAgICAgICBpZiAoY29udGV4dC5lbGxpcHNlKSB7XG4gICAgICAgICAgICBjb250ZXh0LmVsbGlwc2UoY3gsIGN5LCByeCwgcnksIDAsIDAsIE1hdGguUEkgKiAyLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyDlpoLmnpzkuI3mlK/mjIHvvIzliJnkvb/nlKjlnIbmnaXnu5jliLbvvIzov5vooYzlj5jlvaJcbiAgICAgICAgICAgIHZhciByID0gcnggPiByeSA/IHJ4IDogcnk7XG4gICAgICAgICAgICB2YXIgc2NhbGVYID0gcnggPiByeSA/IDEgOiByeCAvIHJ5O1xuICAgICAgICAgICAgdmFyIHNjYWxlWSA9IHJ4ID4gcnkgPyByeSAvIHJ4IDogMTtcbiAgICAgICAgICAgIGNvbnRleHQuc2F2ZSgpO1xuICAgICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoY3gsIGN5KTtcbiAgICAgICAgICAgIGNvbnRleHQuc2NhbGUoc2NhbGVYLCBzY2FsZVkpO1xuICAgICAgICAgICAgY29udGV4dC5hcmMoMCwgMCwgciwgMCwgTWF0aC5QSSAqIDIpO1xuICAgICAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7XG4gICAgICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gRWxsaXBzZTtcbn0oU2hhcGVCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBFbGxpcHNlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZWxsaXBzZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/ellipse.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/image.js":
/*!*******************************************************************************!*\
!*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/image.js ***!
\*******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/base.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/util */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/util.js\");\n/**\n * @fileoverview 图片\n * @author dxq613@gmail.com\n */\n\n\n\nfunction isCanvas(dom) {\n return dom instanceof HTMLElement && Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isString\"])(dom.nodeName) && dom.nodeName.toUpperCase() === 'CANVAS';\n}\nvar ImageShape = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(ImageShape, _super);\n function ImageShape() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ImageShape.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, width: 0, height: 0 });\n };\n ImageShape.prototype.initAttrs = function (attrs) {\n this._setImage(attrs.img);\n };\n // image 不计算 stroke\n ImageShape.prototype.isStroke = function () {\n return false;\n };\n // 仅仅使用包围盒检测来进行拾取\n // 所以不需要复写 isInStrokeOrPath 的方法\n ImageShape.prototype.isOnlyHitBox = function () {\n return true;\n };\n ImageShape.prototype._afterLoading = function () {\n if (this.get('toDraw') === true) {\n var canvas = this.get('canvas');\n if (canvas) {\n // 这段应该改成局部渲染\n canvas.draw();\n }\n else {\n // 这种方式如果发生遮挡会出现问题\n this.createPath(this.get('context'));\n }\n }\n };\n ImageShape.prototype._setImage = function (img) {\n var _this = this;\n var attrs = this.attrs;\n if (Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isString\"])(img)) {\n var image_1 = new Image();\n image_1.onload = function () {\n // 图片未加载完,则已经被销毁\n if (_this.destroyed) {\n return false;\n }\n // 缓存原始地址,可以做对比,防止重复加载图片\n // 如果考虑到在加载过程中可能替换 img 属性,则情况更加复杂\n // this.set('imgSrc', img);\n // 这里会循环调用 _setImage 方法,但不会再走这个分支\n _this.attr('img', image_1);\n _this.set('loading', false);\n _this._afterLoading();\n var callback = _this.get('callback');\n if (callback) {\n callback.call(_this);\n }\n };\n // 设置跨域\n image_1.crossOrigin = 'Anonymous';\n image_1.src = img;\n // loading 过程中不绘制\n this.set('loading', true);\n }\n else if (img instanceof Image) {\n // 如果是一个 image 对象,则设置宽高\n if (!attrs.width) {\n attrs.width = img.width;\n }\n if (!attrs.height) {\n attrs.height = img.height;\n }\n }\n else if (isCanvas(img)) {\n // 如果设置了 canvas 对象\n if (!attrs.width) {\n attrs.width = Number(img.getAttribute('width'));\n }\n if (!attrs.height) {\n attrs.height, Number(img.getAttribute('height'));\n }\n }\n };\n ImageShape.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n // 如果加载的已经是当前图片,则不再处理\n if (name === 'img') {\n // 可以加缓冲,&& this.get('imgSrc') !== value\n this._setImage(value);\n }\n };\n ImageShape.prototype.createPath = function (context) {\n // 正在加载则不绘制\n if (this.get('loading')) {\n this.set('toDraw', true); // 加载完成后绘制\n this.set('context', context);\n return;\n }\n var attrs = this.attr();\n var x = attrs.x, y = attrs.y, width = attrs.width, height = attrs.height, sx = attrs.sx, sy = attrs.sy, swidth = attrs.swidth, sheight = attrs.sheight;\n var img = attrs.img;\n if (img instanceof Image || isCanvas(img)) {\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(sx) && !Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(sy) && !Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(swidth) && !Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(sheight)) {\n context.drawImage(img, sx, sy, swidth, sheight, x, y, width, height);\n }\n else {\n context.drawImage(img, x, y, width, height);\n }\n }\n };\n return ImageShape;\n}(_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (ImageShape);\n//# sourceMappingURL=image.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vc2hhcGUvaW1hZ2UuanM/Yzg2NyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQzRDO0FBQ2I7QUFDZ0I7QUFDL0M7QUFDQSx5Q0FBeUMsMkRBQVE7QUFDakQ7QUFDQTtBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUcsV0FBVyxrQ0FBa0M7QUFDaEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksMkRBQVE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHdEQUFLLFNBQVMsd0RBQUssU0FBUyx3REFBSyxhQUFhLHdEQUFLO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQVM7QUFDSSx5RUFBVSxFQUFDO0FBQzFCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWNhbnZhc0AwLjUuMTJAQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL2ltYWdlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IOWbvueJh1xuICogQGF1dGhvciBkeHE2MTNAZ21haWwuY29tXG4gKi9cbmltcG9ydCB7IF9fYXNzaWduLCBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCBTaGFwZUJhc2UgZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IGlzU3RyaW5nLCBpc05pbCB9IGZyb20gJy4uL3V0aWwvdXRpbCc7XG5mdW5jdGlvbiBpc0NhbnZhcyhkb20pIHtcbiAgICByZXR1cm4gZG9tIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiYgaXNTdHJpbmcoZG9tLm5vZGVOYW1lKSAmJiBkb20ubm9kZU5hbWUudG9VcHBlckNhc2UoKSA9PT0gJ0NBTlZBUyc7XG59XG52YXIgSW1hZ2VTaGFwZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoSW1hZ2VTaGFwZSwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBJbWFnZVNoYXBlKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIEltYWdlU2hhcGUucHJvdG90eXBlLmdldERlZmF1bHRBdHRycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gX3N1cGVyLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMuY2FsbCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBhdHRycyksIHsgeDogMCwgeTogMCwgd2lkdGg6IDAsIGhlaWdodDogMCB9KTtcbiAgICB9O1xuICAgIEltYWdlU2hhcGUucHJvdG90eXBlLmluaXRBdHRycyA9IGZ1bmN0aW9uIChhdHRycykge1xuICAgICAgICB0aGlzLl9zZXRJbWFnZShhdHRycy5pbWcpO1xuICAgIH07XG4gICAgLy8gaW1hZ2Ug5LiN6K6h566XIHN0cm9rZVxuICAgIEltYWdlU2hhcGUucHJvdG90eXBlLmlzU3Ryb2tlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICAvLyDku4Xku4Xkvb/nlKjljIXlm7Tnm5Lmo4DmtYvmnaXov5vooYzmi77lj5ZcbiAgICAvLyDmiYDku6XkuI3pnIDopoHlpI3lhpkgaXNJblN0cm9rZU9yUGF0aCDnmoTmlrnms5VcbiAgICBJbWFnZVNoYXBlLnByb3RvdHlwZS5pc09ubHlIaXRCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gICAgSW1hZ2VTaGFwZS5wcm90b3R5cGUuX2FmdGVyTG9hZGluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMuZ2V0KCd0b0RyYXcnKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgdmFyIGNhbnZhcyA9IHRoaXMuZ2V0KCdjYW52YXMnKTtcbiAgICAgICAgICAgIGlmIChjYW52YXMpIHtcbiAgICAgICAgICAgICAgICAvLyDov5nmrrXlupTor6XmlLnmiJDlsYDpg6jmuLLmn5NcbiAgICAgICAgICAgICAgICBjYW52YXMuZHJhdygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8g6L+Z56eN5pa55byP5aaC5p6c5Y+R55Sf6YGu5oyh5Lya5Ye6546w6Zeu6aKYXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVQYXRoKHRoaXMuZ2V0KCdjb250ZXh0JykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBJbWFnZVNoYXBlLnByb3RvdHlwZS5fc2V0SW1hZ2UgPSBmdW5jdGlvbiAoaW1nKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cnM7XG4gICAgICAgIGlmIChpc1N0cmluZyhpbWcpKSB7XG4gICAgICAgICAgICB2YXIgaW1hZ2VfMSA9IG5ldyBJbWFnZSgpO1xuICAgICAgICAgICAgaW1hZ2VfMS5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgLy8g5Zu+54mH5pyq5Yqg6L295a6M77yM5YiZ5bey57uP6KKr6ZSA5q+BXG4gICAgICAgICAgICAgICAgaWYgKF90aGlzLmRlc3Ryb3llZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIOe8k+WtmOWOn+Wni+WcsOWdgO+8jOWPr+S7peWBmuWvueavlO+8jOmYsuatoumHjeWkjeWKoOi9veWbvueJh1xuICAgICAgICAgICAgICAgIC8vIOWmguaenOiAg+iZkeWIsOWcqOWKoOi9vei/h+eoi+S4reWPr+iDveabv+aNoiBpbWcg5bGe5oCn77yM5YiZ5oOF5Ya15pu05Yqg5aSN5p2CXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5zZXQoJ2ltZ1NyYycsIGltZyk7XG4gICAgICAgICAgICAgICAgLy8g6L+Z6YeM5Lya5b6q546v6LCD55SoIF9zZXRJbWFnZSDmlrnms5XvvIzkvYbkuI3kvJrlho3otbDov5nkuKrliIbmlK9cbiAgICAgICAgICAgICAgICBfdGhpcy5hdHRyKCdpbWcnLCBpbWFnZV8xKTtcbiAgICAgICAgICAgICAgICBfdGhpcy5zZXQoJ2xvYWRpbmcnLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgX3RoaXMuX2FmdGVyTG9hZGluZygpO1xuICAgICAgICAgICAgICAgIHZhciBjYWxsYmFjayA9IF90aGlzLmdldCgnY2FsbGJhY2snKTtcbiAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2suY2FsbChfdGhpcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIC8vIOiuvue9rui3qOWfn1xuICAgICAgICAgICAgaW1hZ2VfMS5jcm9zc09yaWdpbiA9ICdBbm9ueW1vdXMnO1xuICAgICAgICAgICAgaW1hZ2VfMS5zcmMgPSBpbWc7XG4gICAgICAgICAgICAvLyBsb2FkaW5nIOi/h+eoi+S4reS4jee7mOWItlxuICAgICAgICAgICAgdGhpcy5zZXQoJ2xvYWRpbmcnLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpbWcgaW5zdGFuY2VvZiBJbWFnZSkge1xuICAgICAgICAgICAgLy8g5aaC5p6c5piv5LiA5LiqIGltYWdlIOWvueixoe+8jOWImeiuvue9ruWuvemrmFxuICAgICAgICAgICAgaWYgKCFhdHRycy53aWR0aCkge1xuICAgICAgICAgICAgICAgIGF0dHJzLndpZHRoID0gaW1nLndpZHRoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFhdHRycy5oZWlnaHQpIHtcbiAgICAgICAgICAgICAgICBhdHRycy5oZWlnaHQgPSBpbWcuaGVpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzQ2FudmFzKGltZykpIHtcbiAgICAgICAgICAgIC8vIOWmguaenOiuvue9ruS6hiBjYW52YXMg5a+56LGhXG4gICAgICAgICAgICBpZiAoIWF0dHJzLndpZHRoKSB7XG4gICAgICAgICAgICAgICAgYXR0cnMud2lkdGggPSBOdW1iZXIoaW1nLmdldEF0dHJpYnV0ZSgnd2lkdGgnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWF0dHJzLmhlaWdodCkge1xuICAgICAgICAgICAgICAgIGF0dHJzLmhlaWdodCwgTnVtYmVyKGltZy5nZXRBdHRyaWJ1dGUoJ2hlaWdodCcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgSW1hZ2VTaGFwZS5wcm90b3R5cGUub25BdHRyQ2hhbmdlID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlLCBvcmlnaW5WYWx1ZSkge1xuICAgICAgICBfc3VwZXIucHJvdG90eXBlLm9uQXR0ckNoYW5nZS5jYWxsKHRoaXMsIG5hbWUsIHZhbHVlLCBvcmlnaW5WYWx1ZSk7XG4gICAgICAgIC8vIOWmguaenOWKoOi9veeahOW3sue7j+aYr+W9k+WJjeWbvueJh++8jOWImeS4jeWGjeWkhOeQhlxuICAgICAgICBpZiAobmFtZSA9PT0gJ2ltZycpIHtcbiAgICAgICAgICAgIC8vIOWPr+S7peWKoOe8k+WGsu+8jCYmIHRoaXMuZ2V0KCdpbWdTcmMnKSAhPT0gdmFsdWVcbiAgICAgICAgICAgIHRoaXMuX3NldEltYWdlKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgSW1hZ2VTaGFwZS5wcm90b3R5cGUuY3JlYXRlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAgIC8vIOato+WcqOWKoOi9veWImeS4jee7mOWItlxuICAgICAgICBpZiAodGhpcy5nZXQoJ2xvYWRpbmcnKSkge1xuICAgICAgICAgICAgdGhpcy5zZXQoJ3RvRHJhdycsIHRydWUpOyAvLyDliqDovb3lrozmiJDlkI7nu5jliLZcbiAgICAgICAgICAgIHRoaXMuc2V0KCdjb250ZXh0JywgY29udGV4dCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciB4ID0gYXR0cnMueCwgeSA9IGF0dHJzLnksIHdpZHRoID0gYXR0cnMud2lkdGgsIGhlaWdodCA9IGF0dHJzLmhlaWdodCwgc3ggPSBhdHRycy5zeCwgc3kgPSBhdHRycy5zeSwgc3dpZHRoID0gYXR0cnMuc3dpZHRoLCBzaGVpZ2h0ID0gYXR0cnMuc2hlaWdodDtcbiAgICAgICAgdmFyIGltZyA9IGF0dHJzLmltZztcbiAgICAgICAgaWYgKGltZyBpbnN0YW5jZW9mIEltYWdlIHx8IGlzQ2FudmFzKGltZykpIHtcbiAgICAgICAgICAgIGlmICghaXNOaWwoc3gpICYmICFpc05pbChzeSkgJiYgIWlzTmlsKHN3aWR0aCkgJiYgIWlzTmlsKHNoZWlnaHQpKSB7XG4gICAgICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1nLCBzeCwgc3ksIHN3aWR0aCwgc2hlaWdodCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShpbWcsIHgsIHksIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gSW1hZ2VTaGFwZTtcbn0oU2hhcGVCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBJbWFnZVNoYXBlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW1hZ2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/image.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/index.js":
/*!*******************************************************************************!*\
!*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/index.js ***!
\*******************************************************************************/
/*! exports provided: Base, Circle, Ellipse, Image, Line, Marker, Path, Polygon, Polyline, Rect, Text */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/base.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Base\", function() { return _base__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _circle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./circle */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/circle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Circle\", function() { return _circle__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _ellipse__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ellipse */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/ellipse.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Ellipse\", function() { return _ellipse__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _image__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./image */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/image.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Image\", function() { return _image__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./line */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/line.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Line\", function() { return _line__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _marker__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./marker */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/marker.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Marker\", function() { return _marker__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _path__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./path */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/path.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Path\", function() { return _path__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _polygon__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./polygon */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/polygon.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Polygon\", function() { return _polygon__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _polyline__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./polyline */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/polyline.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Polyline\", function() { return _polyline__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _rect__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./rect */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/rect.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Rect\", function() { return _rect__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./text */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/text.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Text\", function() { return _text__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vc2hhcGUvaW5kZXguanM/NmEwMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF5QztBQUNJO0FBQ0U7QUFDSjtBQUNGO0FBQ0k7QUFDSjtBQUNNO0FBQ0U7QUFDUjtBQUNBO0FBQ3pDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWNhbnZhc0AwLjUuMTJAQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZGVmYXVsdCBhcyBCYXNlIH0gZnJvbSAnLi9iYXNlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQ2lyY2xlIH0gZnJvbSAnLi9jaXJjbGUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBFbGxpcHNlIH0gZnJvbSAnLi9lbGxpcHNlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgSW1hZ2UgfSBmcm9tICcuL2ltYWdlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTGluZSB9IGZyb20gJy4vbGluZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIE1hcmtlciB9IGZyb20gJy4vbWFya2VyJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUGF0aCB9IGZyb20gJy4vcGF0aCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFBvbHlnb24gfSBmcm9tICcuL3BvbHlnb24nO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBQb2x5bGluZSB9IGZyb20gJy4vcG9seWxpbmUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBSZWN0IH0gZnJvbSAnLi9yZWN0JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgVGV4dCB9IGZyb20gJy4vdGV4dCc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/line.js":
/*!******************************************************************************!*\
!*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/line.js ***!
\******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/base.js\");\n/* harmony import */ var _util_in_stroke_line__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/in-stroke/line */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/line.js\");\n/* harmony import */ var _util_arrow__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/arrow */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/arrow.js\");\n\n/**\n * @fileoverview 线\n * @author dxq613@gmail.com\n */\n\n\n\n\nvar Line = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Line, _super);\n function Line() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Line.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x1: 0, y1: 0, x2: 0, y2: 0, startArrow: false, endArrow: false });\n };\n Line.prototype.initAttrs = function (attrs) {\n this.setArrow();\n };\n // 更新属性时,检测是否更改了箭头\n Line.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n // 由于箭头的绘制依赖于 line 的诸多 attrs,因此这里不再对每个 attr 进行判断,attr 每次变化都会影响箭头的更新\n this.setArrow();\n };\n Line.prototype.setArrow = function () {\n var attrs = this.attr();\n var x1 = attrs.x1, y1 = attrs.y1, x2 = attrs.x2, y2 = attrs.y2, startArrow = attrs.startArrow, endArrow = attrs.endArrow;\n if (startArrow) {\n _util_arrow__WEBPACK_IMPORTED_MODULE_4__[\"addStartArrow\"](this, attrs, x2, y2, x1, y1);\n }\n if (endArrow) {\n _util_arrow__WEBPACK_IMPORTED_MODULE_4__[\"addEndArrow\"](this, attrs, x1, y1, x2, y2);\n }\n };\n Line.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n if (!isStroke || !lineWidth) {\n return false;\n }\n var _a = this.attr(), x1 = _a.x1, y1 = _a.y1, x2 = _a.x2, y2 = _a.y2;\n return Object(_util_in_stroke_line__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(x1, y1, x2, y2, lineWidth, x, y);\n };\n Line.prototype.createPath = function (context) {\n var attrs = this.attr();\n var x1 = attrs.x1, y1 = attrs.y1, x2 = attrs.x2, y2 = attrs.y2, startArrow = attrs.startArrow, endArrow = attrs.endArrow;\n var startArrowDistance = {\n dx: 0,\n dy: 0,\n };\n var endArrowDistance = {\n dx: 0,\n dy: 0,\n };\n if (startArrow && startArrow.d) {\n startArrowDistance = _util_arrow__WEBPACK_IMPORTED_MODULE_4__[\"getShortenOffset\"](x1, y1, x2, y2, attrs.startArrow.d);\n }\n if (endArrow && endArrow.d) {\n endArrowDistance = _util_arrow__WEBPACK_IMPORTED_MODULE_4__[\"getShortenOffset\"](x1, y1, x2, y2, attrs.endArrow.d);\n }\n context.beginPath();\n // 如果自定义箭头,线条相应缩进\n context.moveTo(x1 + startArrowDistance.dx, y1 + startArrowDistance.dy);\n context.lineTo(x2 - endArrowDistance.dx, y2 - endArrowDistance.dy);\n };\n Line.prototype.afterDrawPath = function (context) {\n var startArrowShape = this.get('startArrowShape');\n var endArrowShape = this.get('endArrowShape');\n if (startArrowShape) {\n startArrowShape.draw(context);\n }\n if (endArrowShape) {\n endArrowShape.draw(context);\n }\n };\n /**\n * Get length of line\n * @return {number} length\n */\n Line.prototype.getTotalLength = function () {\n var _a = this.attr(), x1 = _a.x1, y1 = _a.y1, x2 = _a.x2, y2 = _a.y2;\n return _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Line\"].length(x1, y1, x2, y2);\n };\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n Line.prototype.getPoint = function (ratio) {\n var _a = this.attr(), x1 = _a.x1, y1 = _a.y1, x2 = _a.x2, y2 = _a.y2;\n return _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Line\"].pointAt(x1, y1, x2, y2, ratio);\n };\n return Line;\n}(_base__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Line);\n//# sourceMappingURL=line.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vc2hhcGUvbGluZS5qcz81MjllIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE0QztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNnRDtBQUNqQjtBQUNhO0FBQ0Q7QUFDM0M7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHLFdBQVcsaUVBQWlFO0FBQy9HO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHlEQUF1QjtBQUNuQztBQUNBO0FBQ0EsWUFBWSx1REFBcUI7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLG9FQUFNO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLDREQUEwQjtBQUMzRDtBQUNBO0FBQ0EsK0JBQStCLDREQUEwQjtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQSxlQUFlLGlEQUFRO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsTUFBTTtBQUN0QjtBQUNBO0FBQ0E7QUFDQSxlQUFlLGlEQUFRO0FBQ3ZCO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQVM7QUFDSSxtRUFBSSxFQUFDO0FBQ3BCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWNhbnZhc0AwLjUuMTJAQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL2xpbmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcg57q/XG4gKiBAYXV0aG9yIGR4cTYxM0BnbWFpbC5jb21cbiAqL1xuaW1wb3J0IHsgTGluZSBhcyBMaW5lVXRpbCB9IGZyb20gJ0BhbnR2L2ctbWF0aCc7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgaW5MaW5lIGZyb20gJy4uL3V0aWwvaW4tc3Ryb2tlL2xpbmUnO1xuaW1wb3J0ICogYXMgQXJyb3dVdGlsIGZyb20gJy4uL3V0aWwvYXJyb3cnO1xudmFyIExpbmUgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKExpbmUsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gTGluZSgpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBMaW5lLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhdHRycyA9IF9zdXBlci5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzLmNhbGwodGhpcyk7XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgYXR0cnMpLCB7IHgxOiAwLCB5MTogMCwgeDI6IDAsIHkyOiAwLCBzdGFydEFycm93OiBmYWxzZSwgZW5kQXJyb3c6IGZhbHNlIH0pO1xuICAgIH07XG4gICAgTGluZS5wcm90b3R5cGUuaW5pdEF0dHJzID0gZnVuY3Rpb24gKGF0dHJzKSB7XG4gICAgICAgIHRoaXMuc2V0QXJyb3coKTtcbiAgICB9O1xuICAgIC8vIOabtOaWsOWxnuaAp+aXtu+8jOajgOa1i+aYr+WQpuabtOaUueS6hueureWktFxuICAgIExpbmUucHJvdG90eXBlLm9uQXR0ckNoYW5nZSA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSwgb3JpZ2luVmFsdWUpIHtcbiAgICAgICAgX3N1cGVyLnByb3RvdHlwZS5vbkF0dHJDaGFuZ2UuY2FsbCh0aGlzLCBuYW1lLCB2YWx1ZSwgb3JpZ2luVmFsdWUpO1xuICAgICAgICAvLyDnlLHkuo7nrq3lpLTnmoTnu5jliLbkvp3otZbkuo4gbGluZSDnmoTor7jlpJogYXR0cnPvvIzlm6DmraTov5nph4zkuI3lho3lr7nmr4/kuKogYXR0ciDov5vooYzliKTmlq3vvIxhdHRyIOavj+asoeWPmOWMlumDveS8muW9seWTjeeureWktOeahOabtOaWsFxuICAgICAgICB0aGlzLnNldEFycm93KCk7XG4gICAgfTtcbiAgICBMaW5lLnByb3RvdHlwZS5zZXRBcnJvdyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciB4MSA9IGF0dHJzLngxLCB5MSA9IGF0dHJzLnkxLCB4MiA9IGF0dHJzLngyLCB5MiA9IGF0dHJzLnkyLCBzdGFydEFycm93ID0gYXR0cnMuc3RhcnRBcnJvdywgZW5kQXJyb3cgPSBhdHRycy5lbmRBcnJvdztcbiAgICAgICAgaWYgKHN0YXJ0QXJyb3cpIHtcbiAgICAgICAgICAgIEFycm93VXRpbC5hZGRTdGFydEFycm93KHRoaXMsIGF0dHJzLCB4MiwgeTIsIHgxLCB5MSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVuZEFycm93KSB7XG4gICAgICAgICAgICBBcnJvd1V0aWwuYWRkRW5kQXJyb3codGhpcywgYXR0cnMsIHgxLCB5MSwgeDIsIHkyKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgTGluZS5wcm90b3R5cGUuaXNJblN0cm9rZU9yUGF0aCA9IGZ1bmN0aW9uICh4LCB5LCBpc1N0cm9rZSwgaXNGaWxsLCBsaW5lV2lkdGgpIHtcbiAgICAgICAgaWYgKCFpc1N0cm9rZSB8fCAhbGluZVdpZHRoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9hID0gdGhpcy5hdHRyKCksIHgxID0gX2EueDEsIHkxID0gX2EueTEsIHgyID0gX2EueDIsIHkyID0gX2EueTI7XG4gICAgICAgIHJldHVybiBpbkxpbmUoeDEsIHkxLCB4MiwgeTIsIGxpbmVXaWR0aCwgeCwgeSk7XG4gICAgfTtcbiAgICBMaW5lLnByb3RvdHlwZS5jcmVhdGVQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciB4MSA9IGF0dHJzLngxLCB5MSA9IGF0dHJzLnkxLCB4MiA9IGF0dHJzLngyLCB5MiA9IGF0dHJzLnkyLCBzdGFydEFycm93ID0gYXR0cnMuc3RhcnRBcnJvdywgZW5kQXJyb3cgPSBhdHRycy5lbmRBcnJvdztcbiAgICAgICAgdmFyIHN0YXJ0QXJyb3dEaXN0YW5jZSA9IHtcbiAgICAgICAgICAgIGR4OiAwLFxuICAgICAgICAgICAgZHk6IDAsXG4gICAgICAgIH07XG4gICAgICAgIHZhciBlbmRBcnJvd0Rpc3RhbmNlID0ge1xuICAgICAgICAgICAgZHg6IDAsXG4gICAgICAgICAgICBkeTogMCxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHN0YXJ0QXJyb3cgJiYgc3RhcnRBcnJvdy5kKSB7XG4gICAgICAgICAgICBzdGFydEFycm93RGlzdGFuY2UgPSBBcnJvd1V0aWwuZ2V0U2hvcnRlbk9mZnNldCh4MSwgeTEsIHgyLCB5MiwgYXR0cnMuc3RhcnRBcnJvdy5kKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5kQXJyb3cgJiYgZW5kQXJyb3cuZCkge1xuICAgICAgICAgICAgZW5kQXJyb3dEaXN0YW5jZSA9IEFycm93VXRpbC5nZXRTaG9ydGVuT2Zmc2V0KHgxLCB5MSwgeDIsIHkyLCBhdHRycy5lbmRBcnJvdy5kKTtcbiAgICAgICAgfVxuICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgICAgICAvLyDlpoLmnpzoh6rlrprkuYnnrq3lpLTvvIznur/mnaHnm7jlupTnvKnov5tcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oeDEgKyBzdGFydEFycm93RGlzdGFuY2UuZHgsIHkxICsgc3RhcnRBcnJvd0Rpc3RhbmNlLmR5KTtcbiAgICAgICAgY29udGV4dC5saW5lVG8oeDIgLSBlbmRBcnJvd0Rpc3RhbmNlLmR4LCB5MiAtIGVuZEFycm93RGlzdGFuY2UuZHkpO1xuICAgIH07XG4gICAgTGluZS5wcm90b3R5cGUuYWZ0ZXJEcmF3UGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAgIHZhciBzdGFydEFycm93U2hhcGUgPSB0aGlzLmdldCgnc3RhcnRBcnJvd1NoYXBlJyk7XG4gICAgICAgIHZhciBlbmRBcnJvd1NoYXBlID0gdGhpcy5nZXQoJ2VuZEFycm93U2hhcGUnKTtcbiAgICAgICAgaWYgKHN0YXJ0QXJyb3dTaGFwZSkge1xuICAgICAgICAgICAgc3RhcnRBcnJvd1NoYXBlLmRyYXcoY29udGV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVuZEFycm93U2hhcGUpIHtcbiAgICAgICAgICAgIGVuZEFycm93U2hhcGUuZHJhdyhjb250ZXh0KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogR2V0IGxlbmd0aCBvZiBsaW5lXG4gICAgICogQHJldHVybiB7bnVtYmVyfSBsZW5ndGhcbiAgICAgKi9cbiAgICBMaW5lLnByb3RvdHlwZS5nZXRUb3RhbExlbmd0aCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcy5hdHRyKCksIHgxID0gX2EueDEsIHkxID0gX2EueTEsIHgyID0gX2EueDIsIHkyID0gX2EueTI7XG4gICAgICAgIHJldHVybiBMaW5lVXRpbC5sZW5ndGgoeDEsIHkxLCB4MiwgeTIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogR2V0IHBvaW50IGFjY29yZGluZyB0byByYXRpb1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByYXRpb1xuICAgICAqIEByZXR1cm4ge1BvaW50fSBwb2ludFxuICAgICAqL1xuICAgIExpbmUucHJvdG90eXBlLmdldFBvaW50ID0gZnVuY3Rpb24gKHJhdGlvKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMuYXR0cigpLCB4MSA9IF9hLngxLCB5MSA9IF9hLnkxLCB4MiA9IF9hLngyLCB5MiA9IF9hLnkyO1xuICAgICAgICByZXR1cm4gTGluZVV0aWwucG9pbnRBdCh4MSwgeTEsIHgyLCB5MiwgcmF0aW8pO1xuICAgIH07XG4gICAgcmV0dXJuIExpbmU7XG59KFNoYXBlQmFzZSkpO1xuZXhwb3J0IGRlZmF1bHQgTGluZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxpbmUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/line.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/marker.js":
/*!********************************************************************************!*\
!*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/marker.js ***!
\********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _antv_path_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/path-util */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/base.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/util */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/util.js\");\n/* harmony import */ var _util_draw__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/draw */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/draw.js\");\n/**\n * @fileoverview Marker\n * @author dxq613@gmail.com\n */\n\n\n\n\n\n\nvar Symbols = {\n // 圆\n circle: function (x, y, r) {\n return [\n ['M', x - r, y],\n ['A', r, r, 0, 1, 0, x + r, y],\n ['A', r, r, 0, 1, 0, x - r, y],\n ];\n },\n // 正方形\n square: function (x, y, r) {\n return [['M', x - r, y - r], ['L', x + r, y - r], ['L', x + r, y + r], ['L', x - r, y + r], ['Z']];\n },\n // 菱形\n diamond: function (x, y, r) {\n return [['M', x - r, y], ['L', x, y - r], ['L', x + r, y], ['L', x, y + r], ['Z']];\n },\n // 三角形\n triangle: function (x, y, r) {\n var diffY = r * Math.sin((1 / 3) * Math.PI);\n return [['M', x - r, y + diffY], ['L', x, y - diffY], ['L', x + r, y + diffY], ['Z']];\n },\n // 倒三角形\n 'triangle-down': function (x, y, r) {\n var diffY = r * Math.sin((1 / 3) * Math.PI);\n return [['M', x - r, y - diffY], ['L', x + r, y - diffY], ['L', x, y + diffY], ['Z']];\n },\n};\nvar Marker = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Marker, _super);\n function Marker() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Marker.prototype.initAttrs = function (attrs) {\n this._resetParamsCache();\n };\n // 重置绘制 path 存储的缓存\n Marker.prototype._resetParamsCache = function () {\n // 为了加速 path 的绘制、拾取和计算,这个地方可以缓存很多东西\n // 这些缓存都是第一次需要时计算和存储,虽然增加了复杂度,但是频繁调用的方法,性能有很大提升\n this.set('paramsCache', {}); // 清理缓存\n };\n // 更新属性时,检测是否更改了 path\n Marker.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n if (['symbol', 'x', 'y', 'r', 'radius'].indexOf(name) !== -1) {\n // path 相关属性更改时,清理缓存\n this._resetParamsCache();\n }\n };\n // 仅仅使用包围盒检测来进行拾取\n // 所以不需要复写 isInStrokeOrPath 的方法\n Marker.prototype.isOnlyHitBox = function () {\n return true;\n };\n Marker.prototype._getR = function (attrs) {\n // 兼容 r 和 radius 两种写法,推荐使用 r\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(attrs.r) ? attrs.radius : attrs.r;\n };\n Marker.prototype._getPath = function () {\n var attrs = this.attr();\n var x = attrs.x, y = attrs.y;\n var symbol = attrs.symbol || 'circle';\n var r = this._getR(attrs);\n var method;\n var path;\n if (Object(_util_util__WEBPACK_IMPORTED_MODULE_4__[\"isFunction\"])(symbol)) {\n method = symbol;\n path = method(x, y, r);\n // 将 path 转成绝对路径\n path = Object(_antv_path_util__WEBPACK_IMPORTED_MODULE_2__[\"path2Absolute\"])(path);\n }\n else {\n // 内置 symbol 的 path 都是绝对路径,直接绘制即可,不需要对 path 进行特殊处理\n method = Marker.Symbols[symbol];\n if (!method) {\n console.warn(symbol + \" marker is not supported.\");\n return null;\n }\n path = method(x, y, r);\n }\n return path;\n };\n Marker.prototype.createPath = function (context) {\n var path = this._getPath();\n var paramsCache = this.get('paramsCache');\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_5__[\"drawPath\"])(this, context, { path: path }, paramsCache);\n };\n Marker.Symbols = Symbols;\n return Marker;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Marker);\n//# sourceMappingURL=marker.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vc2hhcGUvbWFya2VyLmpzPzFlZjkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNrQztBQUNDO0FBQ2E7QUFDakI7QUFDVztBQUNGO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLEVBQUU7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHdEQUFLO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDZEQUFVO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixxRUFBYTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDJEQUFRLGlCQUFpQixhQUFhO0FBQzlDO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyw2Q0FBUztBQUNJLHFFQUFNLEVBQUM7QUFDdEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vc2hhcGUvbWFya2VyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IE1hcmtlclxuICogQGF1dGhvciBkeHE2MTNAZ21haWwuY29tXG4gKi9cbmltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IHBhdGgyQWJzb2x1dGUgfSBmcm9tICdAYW50di9wYXRoLXV0aWwnO1xuaW1wb3J0IFNoYXBlQmFzZSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHsgaXNGdW5jdGlvbiB9IGZyb20gJy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBkcmF3UGF0aCB9IGZyb20gJy4uL3V0aWwvZHJhdyc7XG52YXIgU3ltYm9scyA9IHtcbiAgICAvLyDlnIZcbiAgICBjaXJjbGU6IGZ1bmN0aW9uICh4LCB5LCByKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBbJ00nLCB4IC0gciwgeV0sXG4gICAgICAgICAgICBbJ0EnLCByLCByLCAwLCAxLCAwLCB4ICsgciwgeV0sXG4gICAgICAgICAgICBbJ0EnLCByLCByLCAwLCAxLCAwLCB4IC0gciwgeV0sXG4gICAgICAgIF07XG4gICAgfSxcbiAgICAvLyDmraPmlrnlvaJcbiAgICBzcXVhcmU6IGZ1bmN0aW9uICh4LCB5LCByKSB7XG4gICAgICAgIHJldHVybiBbWydNJywgeCAtIHIsIHkgLSByXSwgWydMJywgeCArIHIsIHkgLSByXSwgWydMJywgeCArIHIsIHkgKyByXSwgWydMJywgeCAtIHIsIHkgKyByXSwgWydaJ11dO1xuICAgIH0sXG4gICAgLy8g6I+x5b2iXG4gICAgZGlhbW9uZDogZnVuY3Rpb24gKHgsIHksIHIpIHtcbiAgICAgICAgcmV0dXJuIFtbJ00nLCB4IC0gciwgeV0sIFsnTCcsIHgsIHkgLSByXSwgWydMJywgeCArIHIsIHldLCBbJ0wnLCB4LCB5ICsgcl0sIFsnWiddXTtcbiAgICB9LFxuICAgIC8vIOS4ieinkuW9olxuICAgIHRyaWFuZ2xlOiBmdW5jdGlvbiAoeCwgeSwgcikge1xuICAgICAgICB2YXIgZGlmZlkgPSByICogTWF0aC5zaW4oKDEgLyAzKSAqIE1hdGguUEkpO1xuICAgICAgICByZXR1cm4gW1snTScsIHggLSByLCB5ICsgZGlmZlldLCBbJ0wnLCB4LCB5IC0gZGlmZlldLCBbJ0wnLCB4ICsgciwgeSArIGRpZmZZXSwgWydaJ11dO1xuICAgIH0sXG4gICAgLy8g5YCS5LiJ6KeS5b2iXG4gICAgJ3RyaWFuZ2xlLWRvd24nOiBmdW5jdGlvbiAoeCwgeSwgcikge1xuICAgICAgICB2YXIgZGlmZlkgPSByICogTWF0aC5zaW4oKDEgLyAzKSAqIE1hdGguUEkpO1xuICAgICAgICByZXR1cm4gW1snTScsIHggLSByLCB5IC0gZGlmZlldLCBbJ0wnLCB4ICsgciwgeSAtIGRpZmZZXSwgWydMJywgeCwgeSArIGRpZmZZXSwgWydaJ11dO1xuICAgIH0sXG59O1xudmFyIE1hcmtlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoTWFya2VyLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIE1hcmtlcigpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBNYXJrZXIucHJvdG90eXBlLmluaXRBdHRycyA9IGZ1bmN0aW9uIChhdHRycykge1xuICAgICAgICB0aGlzLl9yZXNldFBhcmFtc0NhY2hlKCk7XG4gICAgfTtcbiAgICAvLyDph43nva7nu5jliLYgcGF0aCDlrZjlgqjnmoTnvJPlrZhcbiAgICBNYXJrZXIucHJvdG90eXBlLl9yZXNldFBhcmFtc0NhY2hlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyDkuLrkuobliqDpgJ8gcGF0aCDnmoTnu5jliLbjgIHmi77lj5blkozorqHnrpfvvIzov5nkuKrlnLDmlrnlj6/ku6XnvJPlrZjlvojlpJrkuJzopb9cbiAgICAgICAgLy8g6L+Z5Lqb57yT5a2Y6YO95piv56ys5LiA5qyh6ZyA6KaB5pe26K6h566X5ZKM5a2Y5YKo77yM6Jm954S25aKe5Yqg5LqG5aSN5p2C5bqm77yM5L2G5piv6aKR57mB6LCD55So55qE5pa55rOV77yM5oCn6IO95pyJ5b6I5aSn5o+Q5Y2HXG4gICAgICAgIHRoaXMuc2V0KCdwYXJhbXNDYWNoZScsIHt9KTsgLy8g5riF55CG57yT5a2YXG4gICAgfTtcbiAgICAvLyDmm7TmlrDlsZ7mgKfml7bvvIzmo4DmtYvmmK/lkKbmm7TmlLnkuoYgcGF0aFxuICAgIE1hcmtlci5wcm90b3R5cGUub25BdHRyQ2hhbmdlID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlLCBvcmlnaW5WYWx1ZSkge1xuICAgICAgICBfc3VwZXIucHJvdG90eXBlLm9uQXR0ckNoYW5nZS5jYWxsKHRoaXMsIG5hbWUsIHZhbHVlLCBvcmlnaW5WYWx1ZSk7XG4gICAgICAgIGlmIChbJ3N5bWJvbCcsICd4JywgJ3knLCAncicsICdyYWRpdXMnXS5pbmRleE9mKG5hbWUpICE9PSAtMSkge1xuICAgICAgICAgICAgLy8gcGF0aCDnm7jlhbPlsZ7mgKfmm7TmlLnml7bvvIzmuIXnkIbnvJPlrZhcbiAgICAgICAgICAgIHRoaXMuX3Jlc2V0UGFyYW1zQ2FjaGUoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8g5LuF5LuF5L2/55So5YyF5Zu055uS5qOA5rWL5p2l6L+b6KGM5ou+5Y+WXG4gICAgLy8g5omA5Lul5LiN6ZyA6KaB5aSN5YaZIGlzSW5TdHJva2VPclBhdGgg55qE5pa55rOVXG4gICAgTWFya2VyLnByb3RvdHlwZS5pc09ubHlIaXRCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gICAgTWFya2VyLnByb3RvdHlwZS5fZ2V0UiA9IGZ1bmN0aW9uIChhdHRycykge1xuICAgICAgICAvLyDlhbzlrrkgciDlkowgcmFkaXVzIOS4pOenjeWGmeazle+8jOaOqOiNkOS9v+eUqCByXG4gICAgICAgIHJldHVybiBpc05pbChhdHRycy5yKSA/IGF0dHJzLnJhZGl1cyA6IGF0dHJzLnI7XG4gICAgfTtcbiAgICBNYXJrZXIucHJvdG90eXBlLl9nZXRQYXRoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIHggPSBhdHRycy54LCB5ID0gYXR0cnMueTtcbiAgICAgICAgdmFyIHN5bWJvbCA9IGF0dHJzLnN5bWJvbCB8fCAnY2lyY2xlJztcbiAgICAgICAgdmFyIHIgPSB0aGlzLl9nZXRSKGF0dHJzKTtcbiAgICAgICAgdmFyIG1ldGhvZDtcbiAgICAgICAgdmFyIHBhdGg7XG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKHN5bWJvbCkpIHtcbiAgICAgICAgICAgIG1ldGhvZCA9IHN5bWJvbDtcbiAgICAgICAgICAgIHBhdGggPSBtZXRob2QoeCwgeSwgcik7XG4gICAgICAgICAgICAvLyDlsIYgcGF0aCDovazmiJDnu53lr7not6/lvoRcbiAgICAgICAgICAgIHBhdGggPSBwYXRoMkFic29sdXRlKHBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8g5YaF572uIHN5bWJvbCDnmoQgcGF0aCDpg73mmK/nu53lr7not6/lvoTvvIznm7TmjqXnu5jliLbljbPlj6/vvIzkuI3pnIDopoHlr7kgcGF0aCDov5vooYznibnmrorlpITnkIZcbiAgICAgICAgICAgIG1ldGhvZCA9IE1hcmtlci5TeW1ib2xzW3N5bWJvbF07XG4gICAgICAgICAgICBpZiAoIW1ldGhvZCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihzeW1ib2wgKyBcIiBtYXJrZXIgaXMgbm90IHN1cHBvcnRlZC5cIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYXRoID0gbWV0aG9kKHgsIHksIHIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgIH07XG4gICAgTWFya2VyLnByb3RvdHlwZS5jcmVhdGVQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgdmFyIHBhdGggPSB0aGlzLl9nZXRQYXRoKCk7XG4gICAgICAgIHZhciBwYXJhbXNDYWNoZSA9IHRoaXMuZ2V0KCdwYXJhbXNDYWNoZScpO1xuICAgICAgICBkcmF3UGF0aCh0aGlzLCBjb250ZXh0LCB7IHBhdGg6IHBhdGggfSwgcGFyYW1zQ2FjaGUpO1xuICAgIH07XG4gICAgTWFya2VyLlN5bWJvbHMgPSBTeW1ib2xzO1xuICAgIHJldHVybiBNYXJrZXI7XG59KFNoYXBlQmFzZSkpO1xuZXhwb3J0IGRlZmF1bHQgTWFya2VyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWFya2VyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/marker.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/path.js":
/*!******************************************************************************!*\
!*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/path.js ***!
\******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/base.js\");\n/* harmony import */ var _antv_path_util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/path-util */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/index.js\");\n/* harmony import */ var _util_draw__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/draw */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/draw.js\");\n/* harmony import */ var _util_in_path_point_in_path__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/in-path/point-in-path */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-path/point-in-path.js\");\n/* harmony import */ var _util_in_path_polygon__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../util/in-path/polygon */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-path/polygon.js\");\n/* harmony import */ var _util_path__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../util/path */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/path.js\");\n/* harmony import */ var _util_arrow__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../util/arrow */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/arrow.js\");\n\n\n\n\n\n\n\n\n\n\n// 是否在多个多边形内部\nfunction isInPolygons(polygons, x, y) {\n var isHit = false;\n for (var i = 0; i < polygons.length; i++) {\n var points = polygons[i];\n isHit = Object(_util_in_path_polygon__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(points, x, y);\n if (isHit) {\n break;\n }\n }\n return isHit;\n}\nvar Path = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Path, _super);\n function Path() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Path.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { startArrow: false, endArrow: false });\n };\n Path.prototype.initAttrs = function (attrs) {\n this._setPathArr(attrs.path);\n this.setArrow();\n };\n // 更新属性时,检测是否更改了 path\n Path.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n if (name === 'path') {\n this._setPathArr(value);\n }\n // 由于箭头的绘制依赖于 line 的诸多 attrs,因此这里不再对每个 attr 进行判断,attr 每次变化都会影响箭头的更新\n this.setArrow();\n };\n // 将 path 转换成绝对路径\n Path.prototype._setPathArr = function (path) {\n // 转换 path 的格式\n this.attrs.path = Object(_antv_path_util__WEBPACK_IMPORTED_MODULE_4__[\"path2Absolute\"])(path);\n var hasArc = _util_path__WEBPACK_IMPORTED_MODULE_8__[\"default\"].hasArc(path);\n // 为了加速 path 的绘制、拾取和计算,这个地方可以缓存很多东西\n // 这些缓存都是第一次需要时计算和存储,虽然增加了复杂度,但是频繁调用的方法,性能有很大提升\n this.set('hasArc', hasArc);\n this.set('paramsCache', {}); // 清理缓存\n this.set('segments', null); // 延迟生成 path,在动画场景下可能不会有拾取\n this.set('curve', null);\n this.set('tCache', null);\n this.set('totalLength', null);\n };\n Path.prototype.getSegments = function () {\n var segments = this.get('segements');\n if (!segments) {\n segments = Object(_antv_path_util__WEBPACK_IMPORTED_MODULE_4__[\"path2Segments\"])(this.attr('path'));\n this.set('segments', segments);\n }\n return segments;\n };\n Path.prototype.setArrow = function () {\n var attrs = this.attr();\n var startArrow = attrs.startArrow, endArrow = attrs.endArrow;\n if (startArrow) {\n var tangent = this.getStartTangent();\n _util_arrow__WEBPACK_IMPORTED_MODULE_9__[\"addStartArrow\"](this, attrs, tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1]);\n }\n if (endArrow) {\n var tangent = this.getEndTangent();\n _util_arrow__WEBPACK_IMPORTED_MODULE_9__[\"addEndArrow\"](this, attrs, tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1]);\n }\n };\n Path.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n var segments = this.getSegments();\n var hasArc = this.get('hasArc');\n var isHit = false;\n if (isStroke) {\n var length_1 = this.getTotalLength();\n isHit = _util_path__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isPointInStroke(segments, lineWidth, x, y, length_1);\n }\n if (!isHit && isFill) {\n if (hasArc) {\n // 存在曲线时,暂时使用 canvas 的 api 计算,后续可以进行多边形切割\n isHit = Object(_util_in_path_point_in_path__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this, x, y);\n }\n else {\n var path = this.attr('path');\n var extractResutl = _util_path__WEBPACK_IMPORTED_MODULE_8__[\"default\"].extractPolygons(path);\n // 提取出来的多边形包含闭合的和非闭合的,在这里统一按照多边形处理\n isHit = isInPolygons(extractResutl.polygons, x, y) || isInPolygons(extractResutl.polylines, x, y);\n }\n }\n return isHit;\n };\n Path.prototype.createPath = function (context) {\n var attrs = this.attr();\n var paramsCache = this.get('paramsCache'); // 由于计算圆弧的参数成本很大,所以要缓存\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_5__[\"drawPath\"])(this, context, attrs, paramsCache);\n };\n Path.prototype.afterDrawPath = function (context) {\n var startArrowShape = this.get('startArrowShape');\n var endArrowShape = this.get('endArrowShape');\n if (startArrowShape) {\n startArrowShape.draw(context);\n }\n if (endArrowShape) {\n endArrowShape.draw(context);\n }\n };\n /**\n * Get total length of path\n * @return {number} length\n */\n Path.prototype.getTotalLength = function () {\n var totalLength = this.get('totalLength');\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(totalLength)) {\n return totalLength;\n }\n this._calculateCurve();\n this._setTcache();\n return this.get('totalLength');\n };\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n Path.prototype.getPoint = function (ratio) {\n var tCache = this.get('tCache');\n if (!tCache) {\n this._calculateCurve();\n this._setTcache();\n tCache = this.get('tCache');\n }\n var subt;\n var index;\n var curve = this.get('curve');\n if (!tCache || tCache.length === 0) {\n if (curve) {\n return {\n x: curve[0][1],\n y: curve[0][2],\n };\n }\n return null;\n }\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(tCache, function (v, i) {\n if (ratio >= v[0] && ratio <= v[1]) {\n subt = (ratio - v[0]) / (v[1] - v[0]);\n index = i;\n }\n });\n var seg = curve[index];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(seg) || Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(index)) {\n return null;\n }\n var l = seg.length;\n var nextSeg = curve[index + 1];\n return _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Cubic\"].pointAt(seg[l - 2], seg[l - 1], nextSeg[1], nextSeg[2], nextSeg[3], nextSeg[4], nextSeg[5], nextSeg[6], subt);\n };\n Path.prototype._calculateCurve = function () {\n var path = this.attr().path;\n this.set('curve', _util_path__WEBPACK_IMPORTED_MODULE_8__[\"default\"].pathToCurve(path));\n };\n Path.prototype._setTcache = function () {\n var totalLength = 0;\n var tempLength = 0;\n // 每段 curve 对应起止点的长度比例列表,形如: [[0, 0.25], [0.25, 0.6]. [0.6, 0.9], [0.9, 1]]\n var tCache = [];\n var segmentT;\n var segmentL;\n var segmentN;\n var l;\n var curve = this.get('curve');\n if (!curve) {\n return;\n }\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(curve, function (segment, i) {\n segmentN = curve[i + 1];\n l = segment.length;\n if (segmentN) {\n totalLength +=\n _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Cubic\"].length(segment[l - 2], segment[l - 1], segmentN[1], segmentN[2], segmentN[3], segmentN[4], segmentN[5], segmentN[6]) || 0;\n }\n });\n this.set('totalLength', totalLength);\n if (totalLength === 0) {\n this.set('tCache', []);\n return;\n }\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(curve, function (segment, i) {\n segmentN = curve[i + 1];\n l = segment.length;\n if (segmentN) {\n segmentT = [];\n segmentT[0] = tempLength / totalLength;\n segmentL = _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Cubic\"].length(segment[l - 2], segment[l - 1], segmentN[1], segmentN[2], segmentN[3], segmentN[4], segmentN[5], segmentN[6]);\n // 当 path 不连续时,segmentL 可能为空,为空时需要作为 0 处理\n tempLength += segmentL || 0;\n segmentT[1] = tempLength / totalLength;\n tCache.push(segmentT);\n }\n });\n this.set('tCache', tCache);\n };\n /**\n * Get start tangent vector\n * @return {Array}\n */\n Path.prototype.getStartTangent = function () {\n var segments = this.getSegments();\n var result;\n if (segments.length > 1) {\n var startPoint = segments[0].currentPoint;\n var endPoint = segments[1].currentPoint;\n var tangent = segments[1].startTangent;\n result = [];\n if (tangent) {\n result.push([startPoint[0] - tangent[0], startPoint[1] - tangent[1]]);\n result.push([startPoint[0], startPoint[1]]);\n }\n else {\n result.push([endPoint[0], endPoint[1]]);\n result.push([startPoint[0], startPoint[1]]);\n }\n }\n return result;\n };\n /**\n * Get end tangent vector\n * @return {Array}\n */\n Path.prototype.getEndTangent = function () {\n var segments = this.getSegments();\n var length = segments.length;\n var result;\n if (length > 1) {\n var startPoint = segments[length - 2].currentPoint;\n var endPoint = segments[length - 1].currentPoint;\n var tangent = segments[length - 1].endTangent;\n result = [];\n if (tangent) {\n result.push([endPoint[0] - tangent[0], endPoint[1] - tangent[1]]);\n result.push([endPoint[0], endPoint[1]]);\n }\n else {\n result.push([startPoint[0], startPoint[1]]);\n result.push([endPoint[0], endPoint[1]]);\n }\n }\n return result;\n };\n return Path;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Path);\n//# sourceMappingURL=path.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vc2hhcGUvcGF0aC5qcz80ZTM5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNEM7QUFDTTtBQUNUO0FBQ1Y7QUFDZ0M7QUFDdkI7QUFDa0I7QUFDUjtBQUNkO0FBQ087QUFDM0M7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHFCQUFxQjtBQUN4QztBQUNBLGdCQUFnQixxRUFBVztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUcsV0FBVyxxQ0FBcUM7QUFDbkY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixxRUFBYTtBQUN2QyxxQkFBcUIsa0RBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLEVBQUU7QUFDcEMsbUNBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHFFQUFhO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVkseURBQXVCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFlBQVksdURBQXFCO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isa0RBQVE7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsMkVBQWE7QUFDckM7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLGtEQUFRO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrREFBa0Q7QUFDbEQsUUFBUSwyREFBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLGFBQWEsd0RBQUs7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsTUFBTTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsWUFBWSx3REFBSyxTQUFTLHdEQUFLO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxrREFBUztBQUN4QjtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsa0RBQVE7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixrREFBUztBQUM3QjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsa0RBQVM7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyw2Q0FBUztBQUNJLG1FQUFJLEVBQUM7QUFDcEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vc2hhcGUvcGF0aC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduLCBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IEN1YmljIGFzIEN1YmljVXRpbCB9IGZyb20gJ0BhbnR2L2ctbWF0aCc7XG5pbXBvcnQgeyBlYWNoLCBpc05pbCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IFNoYXBlQmFzZSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHsgcGF0aDJBYnNvbHV0ZSwgcGF0aDJTZWdtZW50cyB9IGZyb20gJ0BhbnR2L3BhdGgtdXRpbCc7XG5pbXBvcnQgeyBkcmF3UGF0aCB9IGZyb20gJy4uL3V0aWwvZHJhdyc7XG5pbXBvcnQgaXNQb2ludEluUGF0aCBmcm9tICcuLi91dGlsL2luLXBhdGgvcG9pbnQtaW4tcGF0aCc7XG5pbXBvcnQgaXNJblBvbHlnb24gZnJvbSAnLi4vdXRpbC9pbi1wYXRoL3BvbHlnb24nO1xuaW1wb3J0IFBhdGhVdGlsIGZyb20gJy4uL3V0aWwvcGF0aCc7XG5pbXBvcnQgKiBhcyBBcnJvd1V0aWwgZnJvbSAnLi4vdXRpbC9hcnJvdyc7XG4vLyDmmK/lkKblnKjlpJrkuKrlpJrovrnlvaLlhoXpg6hcbmZ1bmN0aW9uIGlzSW5Qb2x5Z29ucyhwb2x5Z29ucywgeCwgeSkge1xuICAgIHZhciBpc0hpdCA9IGZhbHNlO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9seWdvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHBvaW50cyA9IHBvbHlnb25zW2ldO1xuICAgICAgICBpc0hpdCA9IGlzSW5Qb2x5Z29uKHBvaW50cywgeCwgeSk7XG4gICAgICAgIGlmIChpc0hpdCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlzSGl0O1xufVxudmFyIFBhdGggPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFBhdGgsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gUGF0aCgpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBQYXRoLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhdHRycyA9IF9zdXBlci5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzLmNhbGwodGhpcyk7XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgYXR0cnMpLCB7IHN0YXJ0QXJyb3c6IGZhbHNlLCBlbmRBcnJvdzogZmFsc2UgfSk7XG4gICAgfTtcbiAgICBQYXRoLnByb3RvdHlwZS5pbml0QXR0cnMgPSBmdW5jdGlvbiAoYXR0cnMpIHtcbiAgICAgICAgdGhpcy5fc2V0UGF0aEFycihhdHRycy5wYXRoKTtcbiAgICAgICAgdGhpcy5zZXRBcnJvdygpO1xuICAgIH07XG4gICAgLy8g5pu05paw5bGe5oCn5pe277yM5qOA5rWL5piv5ZCm5pu05pS55LqGIHBhdGhcbiAgICBQYXRoLnByb3RvdHlwZS5vbkF0dHJDaGFuZ2UgPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIG9yaWdpblZhbHVlKSB7XG4gICAgICAgIF9zdXBlci5wcm90b3R5cGUub25BdHRyQ2hhbmdlLmNhbGwodGhpcywgbmFtZSwgdmFsdWUsIG9yaWdpblZhbHVlKTtcbiAgICAgICAgaWYgKG5hbWUgPT09ICdwYXRoJykge1xuICAgICAgICAgICAgdGhpcy5fc2V0UGF0aEFycih2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8g55Sx5LqO566t5aS055qE57uY5Yi25L6d6LWW5LqOIGxpbmUg55qE6K+45aSaIGF0dHJz77yM5Zug5q2k6L+Z6YeM5LiN5YaN5a+55q+P5LiqIGF0dHIg6L+b6KGM5Yik5pat77yMYXR0ciDmr4/mrKHlj5jljJbpg73kvJrlvbHlk43nrq3lpLTnmoTmm7TmlrBcbiAgICAgICAgdGhpcy5zZXRBcnJvdygpO1xuICAgIH07XG4gICAgLy8g5bCGIHBhdGgg6L2s5o2i5oiQ57ud5a+56Lev5b6EXG4gICAgUGF0aC5wcm90b3R5cGUuX3NldFBhdGhBcnIgPSBmdW5jdGlvbiAocGF0aCkge1xuICAgICAgICAvLyDovazmjaIgcGF0aCDnmoTmoLzlvI9cbiAgICAgICAgdGhpcy5hdHRycy5wYXRoID0gcGF0aDJBYnNvbHV0ZShwYXRoKTtcbiAgICAgICAgdmFyIGhhc0FyYyA9IFBhdGhVdGlsLmhhc0FyYyhwYXRoKTtcbiAgICAgICAgLy8g5Li65LqG5Yqg6YCfIHBhdGgg55qE57uY5Yi244CB5ou+5Y+W5ZKM6K6h566X77yM6L+Z5Liq5Zyw5pa55Y+v5Lul57yT5a2Y5b6I5aSa5Lic6KW/XG4gICAgICAgIC8vIOi/meS6m+e8k+WtmOmDveaYr+esrOS4gOasoemcgOimgeaXtuiuoeeul+WSjOWtmOWCqO+8jOiZveeEtuWinuWKoOS6huWkjeadguW6pu+8jOS9huaYr+mikee5geiwg+eUqOeahOaWueazle+8jOaAp+iDveacieW+iOWkp+aPkOWNh1xuICAgICAgICB0aGlzLnNldCgnaGFzQXJjJywgaGFzQXJjKTtcbiAgICAgICAgdGhpcy5zZXQoJ3BhcmFtc0NhY2hlJywge30pOyAvLyDmuIXnkIbnvJPlrZhcbiAgICAgICAgdGhpcy5zZXQoJ3NlZ21lbnRzJywgbnVsbCk7IC8vIOW7tui/n+eUn+aIkCBwYXRo77yM5Zyo5Yqo55S75Zy65pmv5LiL5Y+v6IO95LiN5Lya5pyJ5ou+5Y+WXG4gICAgICAgIHRoaXMuc2V0KCdjdXJ2ZScsIG51bGwpO1xuICAgICAgICB0aGlzLnNldCgndENhY2hlJywgbnVsbCk7XG4gICAgICAgIHRoaXMuc2V0KCd0b3RhbExlbmd0aCcsIG51bGwpO1xuICAgIH07XG4gICAgUGF0aC5wcm90b3R5cGUuZ2V0U2VnbWVudHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBzZWdtZW50cyA9IHRoaXMuZ2V0KCdzZWdlbWVudHMnKTtcbiAgICAgICAgaWYgKCFzZWdtZW50cykge1xuICAgICAgICAgICAgc2VnbWVudHMgPSBwYXRoMlNlZ21lbnRzKHRoaXMuYXR0cigncGF0aCcpKTtcbiAgICAgICAgICAgIHRoaXMuc2V0KCdzZWdtZW50cycsIHNlZ21lbnRzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2VnbWVudHM7XG4gICAgfTtcbiAgICBQYXRoLnByb3RvdHlwZS5zZXRBcnJvdyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBzdGFydEFycm93ID0gYXR0cnMuc3RhcnRBcnJvdywgZW5kQXJyb3cgPSBhdHRycy5lbmRBcnJvdztcbiAgICAgICAgaWYgKHN0YXJ0QXJyb3cpIHtcbiAgICAgICAgICAgIHZhciB0YW5nZW50ID0gdGhpcy5nZXRTdGFydFRhbmdlbnQoKTtcbiAgICAgICAgICAgIEFycm93VXRpbC5hZGRTdGFydEFycm93KHRoaXMsIGF0dHJzLCB0YW5nZW50WzBdWzBdLCB0YW5nZW50WzBdWzFdLCB0YW5nZW50WzFdWzBdLCB0YW5nZW50WzFdWzFdKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5kQXJyb3cpIHtcbiAgICAgICAgICAgIHZhciB0YW5nZW50ID0gdGhpcy5nZXRFbmRUYW5nZW50KCk7XG4gICAgICAgICAgICBBcnJvd1V0aWwuYWRkRW5kQXJyb3codGhpcywgYXR0cnMsIHRhbmdlbnRbMF1bMF0sIHRhbmdlbnRbMF1bMV0sIHRhbmdlbnRbMV1bMF0sIHRhbmdlbnRbMV1bMV0pO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBQYXRoLnByb3RvdHlwZS5pc0luU3Ryb2tlT3JQYXRoID0gZnVuY3Rpb24gKHgsIHksIGlzU3Ryb2tlLCBpc0ZpbGwsIGxpbmVXaWR0aCkge1xuICAgICAgICB2YXIgc2VnbWVudHMgPSB0aGlzLmdldFNlZ21lbnRzKCk7XG4gICAgICAgIHZhciBoYXNBcmMgPSB0aGlzLmdldCgnaGFzQXJjJyk7XG4gICAgICAgIHZhciBpc0hpdCA9IGZhbHNlO1xuICAgICAgICBpZiAoaXNTdHJva2UpIHtcbiAgICAgICAgICAgIHZhciBsZW5ndGhfMSA9IHRoaXMuZ2V0VG90YWxMZW5ndGgoKTtcbiAgICAgICAgICAgIGlzSGl0ID0gUGF0aFV0aWwuaXNQb2ludEluU3Ryb2tlKHNlZ21lbnRzLCBsaW5lV2lkdGgsIHgsIHksIGxlbmd0aF8xKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzSGl0ICYmIGlzRmlsbCkge1xuICAgICAgICAgICAgaWYgKGhhc0FyYykge1xuICAgICAgICAgICAgICAgIC8vIOWtmOWcqOabsue6v+aXtu+8jOaaguaXtuS9v+eUqCBjYW52YXMg55qEIGFwaSDorqHnrpfvvIzlkI7nu63lj6/ku6Xov5vooYzlpJrovrnlvaLliIflibJcbiAgICAgICAgICAgICAgICBpc0hpdCA9IGlzUG9pbnRJblBhdGgodGhpcywgeCwgeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgcGF0aCA9IHRoaXMuYXR0cigncGF0aCcpO1xuICAgICAgICAgICAgICAgIHZhciBleHRyYWN0UmVzdXRsID0gUGF0aFV0aWwuZXh0cmFjdFBvbHlnb25zKHBhdGgpO1xuICAgICAgICAgICAgICAgIC8vIOaPkOWPluWHuuadpeeahOWkmui+ueW9ouWMheWQq+mXreWQiOeahOWSjOmdnumXreWQiOeahO+8jOWcqOi/memHjOe7n+S4gOaMieeFp+Wkmui+ueW9ouWkhOeQhlxuICAgICAgICAgICAgICAgIGlzSGl0ID0gaXNJblBvbHlnb25zKGV4dHJhY3RSZXN1dGwucG9seWdvbnMsIHgsIHkpIHx8IGlzSW5Qb2x5Z29ucyhleHRyYWN0UmVzdXRsLnBvbHlsaW5lcywgeCwgeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzSGl0O1xuICAgIH07XG4gICAgUGF0aC5wcm90b3R5cGUuY3JlYXRlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cigpO1xuICAgICAgICB2YXIgcGFyYW1zQ2FjaGUgPSB0aGlzLmdldCgncGFyYW1zQ2FjaGUnKTsgLy8g55Sx5LqO6K6h566X5ZyG5byn55qE5Y+C5pWw5oiQ5pys5b6I5aSn77yM5omA5Lul6KaB57yT5a2YXG4gICAgICAgIGRyYXdQYXRoKHRoaXMsIGNvbnRleHQsIGF0dHJzLCBwYXJhbXNDYWNoZSk7XG4gICAgfTtcbiAgICBQYXRoLnByb3RvdHlwZS5hZnRlckRyYXdQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgdmFyIHN0YXJ0QXJyb3dTaGFwZSA9IHRoaXMuZ2V0KCdzdGFydEFycm93U2hhcGUnKTtcbiAgICAgICAgdmFyIGVuZEFycm93U2hhcGUgPSB0aGlzLmdldCgnZW5kQXJyb3dTaGFwZScpO1xuICAgICAgICBpZiAoc3RhcnRBcnJvd1NoYXBlKSB7XG4gICAgICAgICAgICBzdGFydEFycm93U2hhcGUuZHJhdyhjb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5kQXJyb3dTaGFwZSkge1xuICAgICAgICAgICAgZW5kQXJyb3dTaGFwZS5kcmF3KGNvbnRleHQpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBHZXQgdG90YWwgbGVuZ3RoIG9mIHBhdGhcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IGxlbmd0aFxuICAgICAqL1xuICAgIFBhdGgucHJvdG90eXBlLmdldFRvdGFsTGVuZ3RoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdG90YWxMZW5ndGggPSB0aGlzLmdldCgndG90YWxMZW5ndGgnKTtcbiAgICAgICAgaWYgKCFpc05pbCh0b3RhbExlbmd0aCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0b3RhbExlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jYWxjdWxhdGVDdXJ2ZSgpO1xuICAgICAgICB0aGlzLl9zZXRUY2FjaGUoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KCd0b3RhbExlbmd0aCcpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogR2V0IHBvaW50IGFjY29yZGluZyB0byByYXRpb1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByYXRpb1xuICAgICAqIEByZXR1cm4ge1BvaW50fSBwb2ludFxuICAgICAqL1xuICAgIFBhdGgucHJvdG90eXBlLmdldFBvaW50ID0gZnVuY3Rpb24gKHJhdGlvKSB7XG4gICAgICAgIHZhciB0Q2FjaGUgPSB0aGlzLmdldCgndENhY2hlJyk7XG4gICAgICAgIGlmICghdENhY2hlKSB7XG4gICAgICAgICAgICB0aGlzLl9jYWxjdWxhdGVDdXJ2ZSgpO1xuICAgICAgICAgICAgdGhpcy5fc2V0VGNhY2hlKCk7XG4gICAgICAgICAgICB0Q2FjaGUgPSB0aGlzLmdldCgndENhY2hlJyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHN1YnQ7XG4gICAgICAgIHZhciBpbmRleDtcbiAgICAgICAgdmFyIGN1cnZlID0gdGhpcy5nZXQoJ2N1cnZlJyk7XG4gICAgICAgIGlmICghdENhY2hlIHx8IHRDYWNoZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGlmIChjdXJ2ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHg6IGN1cnZlWzBdWzFdLFxuICAgICAgICAgICAgICAgICAgICB5OiBjdXJ2ZVswXVsyXSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgZWFjaCh0Q2FjaGUsIGZ1bmN0aW9uICh2LCBpKSB7XG4gICAgICAgICAgICBpZiAocmF0aW8gPj0gdlswXSAmJiByYXRpbyA8PSB2WzFdKSB7XG4gICAgICAgICAgICAgICAgc3VidCA9IChyYXRpbyAtIHZbMF0pIC8gKHZbMV0gLSB2WzBdKTtcbiAgICAgICAgICAgICAgICBpbmRleCA9IGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgc2VnID0gY3VydmVbaW5kZXhdO1xuICAgICAgICBpZiAoaXNOaWwoc2VnKSB8fCBpc05pbChpbmRleCkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHZhciBsID0gc2VnLmxlbmd0aDtcbiAgICAgICAgdmFyIG5leHRTZWcgPSBjdXJ2ZVtpbmRleCArIDFdO1xuICAgICAgICByZXR1cm4gQ3ViaWNVdGlsLnBvaW50QXQoc2VnW2wgLSAyXSwgc2VnW2wgLSAxXSwgbmV4dFNlZ1sxXSwgbmV4dFNlZ1syXSwgbmV4dFNlZ1szXSwgbmV4dFNlZ1s0XSwgbmV4dFNlZ1s1XSwgbmV4dFNlZ1s2XSwgc3VidCk7XG4gICAgfTtcbiAgICBQYXRoLnByb3RvdHlwZS5fY2FsY3VsYXRlQ3VydmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBwYXRoID0gdGhpcy5hdHRyKCkucGF0aDtcbiAgICAgICAgdGhpcy5zZXQoJ2N1cnZlJywgUGF0aFV0aWwucGF0aFRvQ3VydmUocGF0aCkpO1xuICAgIH07XG4gICAgUGF0aC5wcm90b3R5cGUuX3NldFRjYWNoZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHRvdGFsTGVuZ3RoID0gMDtcbiAgICAgICAgdmFyIHRlbXBMZW5ndGggPSAwO1xuICAgICAgICAvLyDmr4/mrrUgY3VydmUg5a+55bqU6LW35q2i54K555qE6ZW/5bqm5q+U5L6L5YiX6KGo77yM5b2i5aaCOiBbWzAsIDAuMjVdLCBbMC4yNSwgMC42XS4gWzAuNiwgMC45XSwgWzAuOSwgMV1dXG4gICAgICAgIHZhciB0Q2FjaGUgPSBbXTtcbiAgICAgICAgdmFyIHNlZ21lbnRUO1xuICAgICAgICB2YXIgc2VnbWVudEw7XG4gICAgICAgIHZhciBzZWdtZW50TjtcbiAgICAgICAgdmFyIGw7XG4gICAgICAgIHZhciBjdXJ2ZSA9IHRoaXMuZ2V0KCdjdXJ2ZScpO1xuICAgICAgICBpZiAoIWN1cnZlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZWFjaChjdXJ2ZSwgZnVuY3Rpb24gKHNlZ21lbnQsIGkpIHtcbiAgICAgICAgICAgIHNlZ21lbnROID0gY3VydmVbaSArIDFdO1xuICAgICAgICAgICAgbCA9IHNlZ21lbnQubGVuZ3RoO1xuICAgICAgICAgICAgaWYgKHNlZ21lbnROKSB7XG4gICAgICAgICAgICAgICAgdG90YWxMZW5ndGggKz1cbiAgICAgICAgICAgICAgICAgICAgQ3ViaWNVdGlsLmxlbmd0aChzZWdtZW50W2wgLSAyXSwgc2VnbWVudFtsIC0gMV0sIHNlZ21lbnROWzFdLCBzZWdtZW50TlsyXSwgc2VnbWVudE5bM10sIHNlZ21lbnROWzRdLCBzZWdtZW50Tls1XSwgc2VnbWVudE5bNl0pIHx8IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNldCgndG90YWxMZW5ndGgnLCB0b3RhbExlbmd0aCk7XG4gICAgICAgIGlmICh0b3RhbExlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5zZXQoJ3RDYWNoZScsIFtdKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBlYWNoKGN1cnZlLCBmdW5jdGlvbiAoc2VnbWVudCwgaSkge1xuICAgICAgICAgICAgc2VnbWVudE4gPSBjdXJ2ZVtpICsgMV07XG4gICAgICAgICAgICBsID0gc2VnbWVudC5sZW5ndGg7XG4gICAgICAgICAgICBpZiAoc2VnbWVudE4pIHtcbiAgICAgICAgICAgICAgICBzZWdtZW50VCA9IFtdO1xuICAgICAgICAgICAgICAgIHNlZ21lbnRUWzBdID0gdGVtcExlbmd0aCAvIHRvdGFsTGVuZ3RoO1xuICAgICAgICAgICAgICAgIHNlZ21lbnRMID0gQ3ViaWNVdGlsLmxlbmd0aChzZWdtZW50W2wgLSAyXSwgc2VnbWVudFtsIC0gMV0sIHNlZ21lbnROWzFdLCBzZWdtZW50TlsyXSwgc2VnbWVudE5bM10sIHNlZ21lbnROWzRdLCBzZWdtZW50Tls1XSwgc2VnbWVudE5bNl0pO1xuICAgICAgICAgICAgICAgIC8vIOW9kyBwYXRoIOS4jei/nue7reaXtu+8jHNlZ21lbnRMIOWPr+iDveS4uuepuu+8jOS4uuepuuaXtumcgOimgeS9nOS4uiAwIOWkhOeQhlxuICAgICAgICAgICAgICAgIHRlbXBMZW5ndGggKz0gc2VnbWVudEwgfHwgMDtcbiAgICAgICAgICAgICAgICBzZWdtZW50VFsxXSA9IHRlbXBMZW5ndGggLyB0b3RhbExlbmd0aDtcbiAgICAgICAgICAgICAgICB0Q2FjaGUucHVzaChzZWdtZW50VCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNldCgndENhY2hlJywgdENhY2hlKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEdldCBzdGFydCB0YW5nZW50IHZlY3RvclxuICAgICAqIEByZXR1cm4ge0FycmF5fVxuICAgICAqL1xuICAgIFBhdGgucHJvdG90eXBlLmdldFN0YXJ0VGFuZ2VudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHNlZ21lbnRzID0gdGhpcy5nZXRTZWdtZW50cygpO1xuICAgICAgICB2YXIgcmVzdWx0O1xuICAgICAgICBpZiAoc2VnbWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgdmFyIHN0YXJ0UG9pbnQgPSBzZWdtZW50c1swXS5jdXJyZW50UG9pbnQ7XG4gICAgICAgICAgICB2YXIgZW5kUG9pbnQgPSBzZWdtZW50c1sxXS5jdXJyZW50UG9pbnQ7XG4gICAgICAgICAgICB2YXIgdGFuZ2VudCA9IHNlZ21lbnRzWzFdLnN0YXJ0VGFuZ2VudDtcbiAgICAgICAgICAgIHJlc3VsdCA9IFtdO1xuICAgICAgICAgICAgaWYgKHRhbmdlbnQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChbc3RhcnRQb2ludFswXSAtIHRhbmdlbnRbMF0sIHN0YXJ0UG9pbnRbMV0gLSB0YW5nZW50WzFdXSk7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goW3N0YXJ0UG9pbnRbMF0sIHN0YXJ0UG9pbnRbMV1dKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKFtlbmRQb2ludFswXSwgZW5kUG9pbnRbMV1dKTtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChbc3RhcnRQb2ludFswXSwgc3RhcnRQb2ludFsxXV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBHZXQgZW5kIHRhbmdlbnQgdmVjdG9yXG4gICAgICogQHJldHVybiB7QXJyYXl9XG4gICAgICovXG4gICAgUGF0aC5wcm90b3R5cGUuZ2V0RW5kVGFuZ2VudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHNlZ21lbnRzID0gdGhpcy5nZXRTZWdtZW50cygpO1xuICAgICAgICB2YXIgbGVuZ3RoID0gc2VnbWVudHMubGVuZ3RoO1xuICAgICAgICB2YXIgcmVzdWx0O1xuICAgICAgICBpZiAobGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgdmFyIHN0YXJ0UG9pbnQgPSBzZWdtZW50c1tsZW5ndGggLSAyXS5jdXJyZW50UG9pbnQ7XG4gICAgICAgICAgICB2YXIgZW5kUG9pbnQgPSBzZWdtZW50c1tsZW5ndGggLSAxXS5jdXJyZW50UG9pbnQ7XG4gICAgICAgICAgICB2YXIgdGFuZ2VudCA9IHNlZ21lbnRzW2xlbmd0aCAtIDFdLmVuZFRhbmdlbnQ7XG4gICAgICAgICAgICByZXN1bHQgPSBbXTtcbiAgICAgICAgICAgIGlmICh0YW5nZW50KSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goW2VuZFBvaW50WzBdIC0gdGFuZ2VudFswXSwgZW5kUG9pbnRbMV0gLSB0YW5nZW50WzFdXSk7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goW2VuZFBvaW50WzBdLCBlbmRQb2ludFsxXV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goW3N0YXJ0UG9pbnRbMF0sIHN0YXJ0UG9pbnRbMV1dKTtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChbZW5kUG9pbnRbMF0sIGVuZFBvaW50WzFdXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIHJldHVybiBQYXRoO1xufShTaGFwZUJhc2UpKTtcbmV4cG9ydCBkZWZhdWx0IFBhdGg7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wYXRoLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/path.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/polygon.js":
/*!*********************************************************************************!*\
!*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/polygon.js ***!
\*********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/base.js\");\n/* harmony import */ var _util_in_stroke_polyline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/in-stroke/polyline */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/polyline.js\");\n/* harmony import */ var _util_in_path_polygon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/in-path/polygon */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-path/polygon.js\");\n/**\n * @fileoverview 多边形\n * @author dxq613@gmail.com\n */\n\n\n\n\nvar Polygon = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Polygon, _super);\n function Polygon() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Polygon.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n var points = this.attr().points;\n var isHit = false;\n if (isStroke) {\n isHit = Object(_util_in_stroke_polyline__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(points, lineWidth, x, y, true);\n }\n if (!isHit && isFill) {\n isHit = Object(_util_in_path_polygon__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(points, x, y); // isPointInPath(shape, x, y);\n }\n return isHit;\n };\n Polygon.prototype.createPath = function (context) {\n var attrs = this.attr();\n var points = attrs.points;\n if (points.length < 2) {\n return;\n }\n context.beginPath();\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n if (i === 0) {\n context.moveTo(point[0], point[1]);\n }\n else {\n context.lineTo(point[0], point[1]);\n }\n }\n context.closePath();\n };\n return Polygon;\n}(_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Polygon);\n//# sourceMappingURL=polygon.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vc2hhcGUvcG9seWdvbi5qcz9kOWU2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNrQztBQUNIO0FBQ3FCO0FBQ0Y7QUFDbEQ7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isd0VBQVU7QUFDOUI7QUFDQTtBQUNBLG9CQUFvQixxRUFBVyxlQUFlO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLG1CQUFtQjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFTO0FBQ0ksc0VBQU8sRUFBQztBQUN2QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1jYW52YXNAMC41LjEyQEBhbnR2L2ctY2FudmFzL2VzbS9zaGFwZS9wb2x5Z29uLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IOWkmui+ueW9olxuICogQGF1dGhvciBkeHE2MTNAZ21haWwuY29tXG4gKi9cbmltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IFNoYXBlQmFzZSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IGluUG9seWxpbmUgZnJvbSAnLi4vdXRpbC9pbi1zdHJva2UvcG9seWxpbmUnO1xuaW1wb3J0IGlzSW5Qb2x5Z29uIGZyb20gJy4uL3V0aWwvaW4tcGF0aC9wb2x5Z29uJztcbnZhciBQb2x5Z29uID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhQb2x5Z29uLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFBvbHlnb24oKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgUG9seWdvbi5wcm90b3R5cGUuaXNJblN0cm9rZU9yUGF0aCA9IGZ1bmN0aW9uICh4LCB5LCBpc1N0cm9rZSwgaXNGaWxsLCBsaW5lV2lkdGgpIHtcbiAgICAgICAgdmFyIHBvaW50cyA9IHRoaXMuYXR0cigpLnBvaW50cztcbiAgICAgICAgdmFyIGlzSGl0ID0gZmFsc2U7XG4gICAgICAgIGlmIChpc1N0cm9rZSkge1xuICAgICAgICAgICAgaXNIaXQgPSBpblBvbHlsaW5lKHBvaW50cywgbGluZVdpZHRoLCB4LCB5LCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzSGl0ICYmIGlzRmlsbCkge1xuICAgICAgICAgICAgaXNIaXQgPSBpc0luUG9seWdvbihwb2ludHMsIHgsIHkpOyAvLyBpc1BvaW50SW5QYXRoKHNoYXBlLCB4LCB5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNIaXQ7XG4gICAgfTtcbiAgICBQb2x5Z29uLnByb3RvdHlwZS5jcmVhdGVQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBwb2ludHMgPSBhdHRycy5wb2ludHM7XG4gICAgICAgIGlmIChwb2ludHMubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgcG9pbnQgPSBwb2ludHNbaV07XG4gICAgICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKHBvaW50WzBdLCBwb2ludFsxXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhwb2ludFswXSwgcG9pbnRbMV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgfTtcbiAgICByZXR1cm4gUG9seWdvbjtcbn0oU2hhcGVCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBQb2x5Z29uO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cG9seWdvbi5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/polygon.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/polyline.js":
/*!**********************************************************************************!*\
!*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/polyline.js ***!
\**********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/base.js\");\n/* harmony import */ var _util_in_stroke_polyline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/in-stroke/polyline */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/polyline.js\");\n/* harmony import */ var _util_arrow__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/arrow */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/arrow.js\");\n\n\n\n\n\n\n\nvar PolyLine = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(PolyLine, _super);\n function PolyLine() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PolyLine.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { startArrow: false, endArrow: false });\n };\n PolyLine.prototype.initAttrs = function (attrs) {\n this.setArrow();\n };\n // 更新属性时,检测是否更改了 points\n PolyLine.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n this.setArrow();\n if (['points'].indexOf(name) !== -1) {\n this._resetCache();\n }\n };\n PolyLine.prototype._resetCache = function () {\n this.set('totalLength', null);\n this.set('tCache', null);\n };\n PolyLine.prototype.setArrow = function () {\n var attrs = this.attr();\n var _a = this.attrs, points = _a.points, startArrow = _a.startArrow, endArrow = _a.endArrow;\n var length = points.length;\n var x1 = points[0][0];\n var y1 = points[0][1];\n var x2 = points[length - 1][0];\n var y2 = points[length - 1][1];\n if (startArrow) {\n _util_arrow__WEBPACK_IMPORTED_MODULE_5__[\"addStartArrow\"](this, attrs, points[1][0], points[1][1], x1, y1);\n }\n if (endArrow) {\n _util_arrow__WEBPACK_IMPORTED_MODULE_5__[\"addEndArrow\"](this, attrs, points[length - 2][0], points[length - 2][1], x2, y2);\n }\n };\n // 不允许 fill\n PolyLine.prototype.isFill = function () {\n return false;\n };\n PolyLine.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n // 没有设置 stroke 不能被拾取, 没有线宽不能被拾取\n if (!isStroke || !lineWidth) {\n return false;\n }\n var points = this.attr().points;\n return Object(_util_in_stroke_polyline__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(points, lineWidth, x, y, false);\n };\n // 始终填充\n PolyLine.prototype.isStroke = function () {\n return true;\n };\n PolyLine.prototype.createPath = function (context) {\n var _a = this.attr(), points = _a.points, startArrow = _a.startArrow, endArrow = _a.endArrow;\n var length = points.length;\n if (points.length < 2) {\n return;\n }\n var x1 = points[0][0];\n var y1 = points[0][1];\n var x2 = points[length - 1][0];\n var y2 = points[length - 1][1];\n // 如果定义了箭头,并且是自定义箭头,线条相应缩进\n if (startArrow && startArrow.d) {\n var distance = _util_arrow__WEBPACK_IMPORTED_MODULE_5__[\"getShortenOffset\"](x1, y1, points[1][0], points[1][1], startArrow.d);\n x1 += distance.dx;\n y1 += distance.dy;\n }\n if (endArrow && endArrow.d) {\n var distance = _util_arrow__WEBPACK_IMPORTED_MODULE_5__[\"getShortenOffset\"](points[length - 2][0], points[length - 2][1], x2, y2, endArrow.d);\n x2 -= distance.dx;\n y2 -= distance.dy;\n }\n context.beginPath();\n context.moveTo(x1, y1);\n for (var i = 0; i < length - 1; i++) {\n var point = points[i];\n context.lineTo(point[0], point[1]);\n }\n context.lineTo(x2, y2);\n };\n PolyLine.prototype.afterDrawPath = function (context) {\n var startArrowShape = this.get('startArrowShape');\n var endArrowShape = this.get('endArrowShape');\n if (startArrowShape) {\n startArrowShape.draw(context);\n }\n if (endArrowShape) {\n endArrowShape.draw(context);\n }\n };\n /**\n * Get length of polyline\n * @return {number} length\n */\n PolyLine.prototype.getTotalLength = function () {\n var points = this.attr().points;\n // get totalLength from cache\n var totalLength = this.get('totalLength');\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(totalLength)) {\n return totalLength;\n }\n this.set('totalLength', _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Polyline\"].length(points));\n return this.get('totalLength');\n };\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n PolyLine.prototype.getPoint = function (ratio) {\n var points = this.attr().points;\n // get tCache from cache\n var tCache = this.get('tCache');\n if (!tCache) {\n this._setTcache();\n tCache = this.get('tCache');\n }\n var subt;\n var index;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(tCache, function (v, i) {\n if (ratio >= v[0] && ratio <= v[1]) {\n subt = (ratio - v[0]) / (v[1] - v[0]);\n index = i;\n }\n });\n return _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Line\"].pointAt(points[index][0], points[index][1], points[index + 1][0], points[index + 1][1], subt);\n };\n PolyLine.prototype._setTcache = function () {\n var points = this.attr().points;\n if (!points || points.length === 0) {\n return;\n }\n var totalLength = this.getTotalLength();\n if (totalLength <= 0) {\n return;\n }\n var tempLength = 0;\n var tCache = [];\n var segmentT;\n var segmentL;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(points, function (p, i) {\n if (points[i + 1]) {\n segmentT = [];\n segmentT[0] = tempLength / totalLength;\n segmentL = _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Line\"].length(p[0], p[1], points[i + 1][0], points[i + 1][1]);\n tempLength += segmentL;\n segmentT[1] = tempLength / totalLength;\n tCache.push(segmentT);\n }\n });\n this.set('tCache', tCache);\n };\n /**\n * Get start tangent vector\n * @return {Array}\n */\n PolyLine.prototype.getStartTangent = function () {\n var points = this.attr().points;\n var result = [];\n result.push([points[1][0], points[1][1]]);\n result.push([points[0][0], points[0][1]]);\n return result;\n };\n /**\n * Get end tangent vector\n * @return {Array}\n */\n PolyLine.prototype.getEndTangent = function () {\n var points = this.attr().points;\n var l = points.length - 1;\n var result = [];\n result.push([points[l - 1][0], points[l - 1][1]]);\n result.push([points[l][0], points[l][1]]);\n return result;\n };\n return PolyLine;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (PolyLine);\n//# sourceMappingURL=polyline.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vc2hhcGUvcG9seWxpbmUuanM/NDQyMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE0QztBQUNJO0FBQ1E7QUFDZjtBQUNWO0FBQ3FCO0FBQ1Q7QUFDM0M7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHLFdBQVcscUNBQXFDO0FBQ25GO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx5REFBdUI7QUFDbkM7QUFDQTtBQUNBLFlBQVksdURBQXFCO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsd0VBQVU7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQiw0REFBMEI7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsNERBQTBCO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsZ0JBQWdCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSx3REFBSztBQUNsQjtBQUNBO0FBQ0EsZ0NBQWdDLHFEQUFZO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixNQUFNO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsZUFBZSxpREFBUTtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixpREFBUTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyw2Q0FBUztBQUNJLHVFQUFRLEVBQUM7QUFDeEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vc2hhcGUvcG9seWxpbmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBMaW5lIGFzIExpbmVVdGlsIH0gZnJvbSAnQGFudHYvZy1tYXRoJztcbmltcG9ydCB7IFBvbHlsaW5lIGFzIFBvbHlsaW5lVXRpbCB9IGZyb20gJ0BhbnR2L2ctbWF0aCc7XG5pbXBvcnQgeyBlYWNoLCBpc05pbCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IFNoYXBlQmFzZSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IGluUG9seWxpbmUgZnJvbSAnLi4vdXRpbC9pbi1zdHJva2UvcG9seWxpbmUnO1xuaW1wb3J0ICogYXMgQXJyb3dVdGlsIGZyb20gJy4uL3V0aWwvYXJyb3cnO1xudmFyIFBvbHlMaW5lID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhQb2x5TGluZSwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBQb2x5TGluZSgpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBQb2x5TGluZS5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXR0cnMgPSBfc3VwZXIucHJvdG90eXBlLmdldERlZmF1bHRBdHRycy5jYWxsKHRoaXMpO1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGF0dHJzKSwgeyBzdGFydEFycm93OiBmYWxzZSwgZW5kQXJyb3c6IGZhbHNlIH0pO1xuICAgIH07XG4gICAgUG9seUxpbmUucHJvdG90eXBlLmluaXRBdHRycyA9IGZ1bmN0aW9uIChhdHRycykge1xuICAgICAgICB0aGlzLnNldEFycm93KCk7XG4gICAgfTtcbiAgICAvLyDmm7TmlrDlsZ7mgKfml7bvvIzmo4DmtYvmmK/lkKbmm7TmlLnkuoYgcG9pbnRzXG4gICAgUG9seUxpbmUucHJvdG90eXBlLm9uQXR0ckNoYW5nZSA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSwgb3JpZ2luVmFsdWUpIHtcbiAgICAgICAgX3N1cGVyLnByb3RvdHlwZS5vbkF0dHJDaGFuZ2UuY2FsbCh0aGlzLCBuYW1lLCB2YWx1ZSwgb3JpZ2luVmFsdWUpO1xuICAgICAgICB0aGlzLnNldEFycm93KCk7XG4gICAgICAgIGlmIChbJ3BvaW50cyddLmluZGV4T2YobmFtZSkgIT09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLl9yZXNldENhY2hlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFBvbHlMaW5lLnByb3RvdHlwZS5fcmVzZXRDYWNoZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5zZXQoJ3RvdGFsTGVuZ3RoJywgbnVsbCk7XG4gICAgICAgIHRoaXMuc2V0KCd0Q2FjaGUnLCBudWxsKTtcbiAgICB9O1xuICAgIFBvbHlMaW5lLnByb3RvdHlwZS5zZXRBcnJvdyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBfYSA9IHRoaXMuYXR0cnMsIHBvaW50cyA9IF9hLnBvaW50cywgc3RhcnRBcnJvdyA9IF9hLnN0YXJ0QXJyb3csIGVuZEFycm93ID0gX2EuZW5kQXJyb3c7XG4gICAgICAgIHZhciBsZW5ndGggPSBwb2ludHMubGVuZ3RoO1xuICAgICAgICB2YXIgeDEgPSBwb2ludHNbMF1bMF07XG4gICAgICAgIHZhciB5MSA9IHBvaW50c1swXVsxXTtcbiAgICAgICAgdmFyIHgyID0gcG9pbnRzW2xlbmd0aCAtIDFdWzBdO1xuICAgICAgICB2YXIgeTIgPSBwb2ludHNbbGVuZ3RoIC0gMV1bMV07XG4gICAgICAgIGlmIChzdGFydEFycm93KSB7XG4gICAgICAgICAgICBBcnJvd1V0aWwuYWRkU3RhcnRBcnJvdyh0aGlzLCBhdHRycywgcG9pbnRzWzFdWzBdLCBwb2ludHNbMV1bMV0sIHgxLCB5MSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVuZEFycm93KSB7XG4gICAgICAgICAgICBBcnJvd1V0aWwuYWRkRW5kQXJyb3codGhpcywgYXR0cnMsIHBvaW50c1tsZW5ndGggLSAyXVswXSwgcG9pbnRzW2xlbmd0aCAtIDJdWzFdLCB4MiwgeTIpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvLyDkuI3lhYHorrggZmlsbFxuICAgIFBvbHlMaW5lLnByb3RvdHlwZS5pc0ZpbGwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIFBvbHlMaW5lLnByb3RvdHlwZS5pc0luU3Ryb2tlT3JQYXRoID0gZnVuY3Rpb24gKHgsIHksIGlzU3Ryb2tlLCBpc0ZpbGwsIGxpbmVXaWR0aCkge1xuICAgICAgICAvLyDmsqHmnInorr7nva4gc3Ryb2tlIOS4jeiDveiiq+aLvuWPliwg5rKh5pyJ57q/5a695LiN6IO96KKr5ou+5Y+WXG4gICAgICAgIGlmICghaXNTdHJva2UgfHwgIWxpbmVXaWR0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBwb2ludHMgPSB0aGlzLmF0dHIoKS5wb2ludHM7XG4gICAgICAgIHJldHVybiBpblBvbHlsaW5lKHBvaW50cywgbGluZVdpZHRoLCB4LCB5LCBmYWxzZSk7XG4gICAgfTtcbiAgICAvLyDlp4vnu4jloavlhYVcbiAgICBQb2x5TGluZS5wcm90b3R5cGUuaXNTdHJva2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gICAgUG9seUxpbmUucHJvdG90eXBlLmNyZWF0ZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLmF0dHIoKSwgcG9pbnRzID0gX2EucG9pbnRzLCBzdGFydEFycm93ID0gX2Euc3RhcnRBcnJvdywgZW5kQXJyb3cgPSBfYS5lbmRBcnJvdztcbiAgICAgICAgdmFyIGxlbmd0aCA9IHBvaW50cy5sZW5ndGg7XG4gICAgICAgIGlmIChwb2ludHMubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciB4MSA9IHBvaW50c1swXVswXTtcbiAgICAgICAgdmFyIHkxID0gcG9pbnRzWzBdWzFdO1xuICAgICAgICB2YXIgeDIgPSBwb2ludHNbbGVuZ3RoIC0gMV1bMF07XG4gICAgICAgIHZhciB5MiA9IHBvaW50c1tsZW5ndGggLSAxXVsxXTtcbiAgICAgICAgLy8g5aaC5p6c5a6a5LmJ5LqG566t5aS077yM5bm25LiU5piv6Ieq5a6a5LmJ566t5aS077yM57q/5p2h55u45bqU57yp6L+bXG4gICAgICAgIGlmIChzdGFydEFycm93ICYmIHN0YXJ0QXJyb3cuZCkge1xuICAgICAgICAgICAgdmFyIGRpc3RhbmNlID0gQXJyb3dVdGlsLmdldFNob3J0ZW5PZmZzZXQoeDEsIHkxLCBwb2ludHNbMV1bMF0sIHBvaW50c1sxXVsxXSwgc3RhcnRBcnJvdy5kKTtcbiAgICAgICAgICAgIHgxICs9IGRpc3RhbmNlLmR4O1xuICAgICAgICAgICAgeTEgKz0gZGlzdGFuY2UuZHk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVuZEFycm93ICYmIGVuZEFycm93LmQpIHtcbiAgICAgICAgICAgIHZhciBkaXN0YW5jZSA9IEFycm93VXRpbC5nZXRTaG9ydGVuT2Zmc2V0KHBvaW50c1tsZW5ndGggLSAyXVswXSwgcG9pbnRzW2xlbmd0aCAtIDJdWzFdLCB4MiwgeTIsIGVuZEFycm93LmQpO1xuICAgICAgICAgICAgeDIgLT0gZGlzdGFuY2UuZHg7XG4gICAgICAgICAgICB5MiAtPSBkaXN0YW5jZS5keTtcbiAgICAgICAgfVxuICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgICAgICBjb250ZXh0Lm1vdmVUbyh4MSwgeTEpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICAgICAgdmFyIHBvaW50ID0gcG9pbnRzW2ldO1xuICAgICAgICAgICAgY29udGV4dC5saW5lVG8ocG9pbnRbMF0sIHBvaW50WzFdKTtcbiAgICAgICAgfVxuICAgICAgICBjb250ZXh0LmxpbmVUbyh4MiwgeTIpO1xuICAgIH07XG4gICAgUG9seUxpbmUucHJvdG90eXBlLmFmdGVyRHJhd1BhdGggPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgICB2YXIgc3RhcnRBcnJvd1NoYXBlID0gdGhpcy5nZXQoJ3N0YXJ0QXJyb3dTaGFwZScpO1xuICAgICAgICB2YXIgZW5kQXJyb3dTaGFwZSA9IHRoaXMuZ2V0KCdlbmRBcnJvd1NoYXBlJyk7XG4gICAgICAgIGlmIChzdGFydEFycm93U2hhcGUpIHtcbiAgICAgICAgICAgIHN0YXJ0QXJyb3dTaGFwZS5kcmF3KGNvbnRleHQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmRBcnJvd1NoYXBlKSB7XG4gICAgICAgICAgICBlbmRBcnJvd1NoYXBlLmRyYXcoY29udGV4dCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEdldCBsZW5ndGggb2YgcG9seWxpbmVcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IGxlbmd0aFxuICAgICAqL1xuICAgIFBvbHlMaW5lLnByb3RvdHlwZS5nZXRUb3RhbExlbmd0aCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHBvaW50cyA9IHRoaXMuYXR0cigpLnBvaW50cztcbiAgICAgICAgLy8gZ2V0IHRvdGFsTGVuZ3RoIGZyb20gY2FjaGVcbiAgICAgICAgdmFyIHRvdGFsTGVuZ3RoID0gdGhpcy5nZXQoJ3RvdGFsTGVuZ3RoJyk7XG4gICAgICAgIGlmICghaXNOaWwodG90YWxMZW5ndGgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdG90YWxMZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXQoJ3RvdGFsTGVuZ3RoJywgUG9seWxpbmVVdGlsLmxlbmd0aChwb2ludHMpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0KCd0b3RhbExlbmd0aCcpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogR2V0IHBvaW50IGFjY29yZGluZyB0byByYXRpb1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByYXRpb1xuICAgICAqIEByZXR1cm4ge1BvaW50fSBwb2ludFxuICAgICAqL1xuICAgIFBvbHlMaW5lLnByb3RvdHlwZS5nZXRQb2ludCA9IGZ1bmN0aW9uIChyYXRpbykge1xuICAgICAgICB2YXIgcG9pbnRzID0gdGhpcy5hdHRyKCkucG9pbnRzO1xuICAgICAgICAvLyBnZXQgdENhY2hlIGZyb20gY2FjaGVcbiAgICAgICAgdmFyIHRDYWNoZSA9IHRoaXMuZ2V0KCd0Q2FjaGUnKTtcbiAgICAgICAgaWYgKCF0Q2FjaGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFRjYWNoZSgpO1xuICAgICAgICAgICAgdENhY2hlID0gdGhpcy5nZXQoJ3RDYWNoZScpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzdWJ0O1xuICAgICAgICB2YXIgaW5kZXg7XG4gICAgICAgIGVhY2godENhY2hlLCBmdW5jdGlvbiAodiwgaSkge1xuICAgICAgICAgICAgaWYgKHJhdGlvID49IHZbMF0gJiYgcmF0aW8gPD0gdlsxXSkge1xuICAgICAgICAgICAgICAgIHN1YnQgPSAocmF0aW8gLSB2WzBdKSAvICh2WzFdIC0gdlswXSk7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIExpbmVVdGlsLnBvaW50QXQocG9pbnRzW2luZGV4XVswXSwgcG9pbnRzW2luZGV4XVsxXSwgcG9pbnRzW2luZGV4ICsgMV1bMF0sIHBvaW50c1tpbmRleCArIDFdWzFdLCBzdWJ0KTtcbiAgICB9O1xuICAgIFBvbHlMaW5lLnByb3RvdHlwZS5fc2V0VGNhY2hlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcG9pbnRzID0gdGhpcy5hdHRyKCkucG9pbnRzO1xuICAgICAgICBpZiAoIXBvaW50cyB8fCBwb2ludHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRvdGFsTGVuZ3RoID0gdGhpcy5nZXRUb3RhbExlbmd0aCgpO1xuICAgICAgICBpZiAodG90YWxMZW5ndGggPD0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0ZW1wTGVuZ3RoID0gMDtcbiAgICAgICAgdmFyIHRDYWNoZSA9IFtdO1xuICAgICAgICB2YXIgc2VnbWVudFQ7XG4gICAgICAgIHZhciBzZWdtZW50TDtcbiAgICAgICAgZWFjaChwb2ludHMsIGZ1bmN0aW9uIChwLCBpKSB7XG4gICAgICAgICAgICBpZiAocG9pbnRzW2kgKyAxXSkge1xuICAgICAgICAgICAgICAgIHNlZ21lbnRUID0gW107XG4gICAgICAgICAgICAgICAgc2VnbWVudFRbMF0gPSB0ZW1wTGVuZ3RoIC8gdG90YWxMZW5ndGg7XG4gICAgICAgICAgICAgICAgc2VnbWVudEwgPSBMaW5lVXRpbC5sZW5ndGgocFswXSwgcFsxXSwgcG9pbnRzW2kgKyAxXVswXSwgcG9pbnRzW2kgKyAxXVsxXSk7XG4gICAgICAgICAgICAgICAgdGVtcExlbmd0aCArPSBzZWdtZW50TDtcbiAgICAgICAgICAgICAgICBzZWdtZW50VFsxXSA9IHRlbXBMZW5ndGggLyB0b3RhbExlbmd0aDtcbiAgICAgICAgICAgICAgICB0Q2FjaGUucHVzaChzZWdtZW50VCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNldCgndENhY2hlJywgdENhY2hlKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEdldCBzdGFydCB0YW5nZW50IHZlY3RvclxuICAgICAqIEByZXR1cm4ge0FycmF5fVxuICAgICAqL1xuICAgIFBvbHlMaW5lLnByb3RvdHlwZS5nZXRTdGFydFRhbmdlbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBwb2ludHMgPSB0aGlzLmF0dHIoKS5wb2ludHM7XG4gICAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgICAgcmVzdWx0LnB1c2goW3BvaW50c1sxXVswXSwgcG9pbnRzWzFdWzFdXSk7XG4gICAgICAgIHJlc3VsdC5wdXNoKFtwb2ludHNbMF1bMF0sIHBvaW50c1swXVsxXV0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogR2V0IGVuZCB0YW5nZW50IHZlY3RvclxuICAgICAqIEByZXR1cm4ge0FycmF5fVxuICAgICAqL1xuICAgIFBvbHlMaW5lLnByb3RvdHlwZS5nZXRFbmRUYW5nZW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcG9pbnRzID0gdGhpcy5hdHRyKCkucG9pbnRzO1xuICAgICAgICB2YXIgbCA9IHBvaW50cy5sZW5ndGggLSAxO1xuICAgICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICAgIHJlc3VsdC5wdXNoKFtwb2ludHNbbCAtIDFdWzBdLCBwb2ludHNbbCAtIDFdWzFdXSk7XG4gICAgICAgIHJlc3VsdC5wdXNoKFtwb2ludHNbbF1bMF0sIHBvaW50c1tsXVsxXV0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgcmV0dXJuIFBvbHlMaW5lO1xufShTaGFwZUJhc2UpKTtcbmV4cG9ydCBkZWZhdWx0IFBvbHlMaW5lO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cG9seWxpbmUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/polyline.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/rect.js":
/*!******************************************************************************!*\
!*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/rect.js ***!
\******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/base.js\");\n/* harmony import */ var _util_parse__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/parse */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/parse.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/util */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/util.js\");\n/* harmony import */ var _util_in_stroke_rect__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/in-stroke/rect */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/rect.js\");\n/* harmony import */ var _util_in_stroke_rect_radius__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/in-stroke/rect-radius */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/rect-radius.js\");\n/* harmony import */ var _util_in_path_point_in_path__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/in-path/point-in-path */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-path/point-in-path.js\");\n/**\n * @fileoverview 矩形\n * @author dxq613@gmail.com\n */\n\n\n\n\n\n\n\nvar Rect = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Rect, _super);\n function Rect() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Rect.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, width: 0, height: 0, radius: 0 });\n };\n Rect.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {\n var attrs = this.attr();\n var minX = attrs.x;\n var minY = attrs.y;\n var width = attrs.width;\n var height = attrs.height;\n var radius = attrs.radius;\n // 无圆角时的策略\n if (!radius) {\n var halfWidth = lineWidth / 2;\n // 同时填充和带有边框\n if (isFill && isStroke) {\n return Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"inBox\"])(minX - halfWidth, minY - halfWidth, width + halfWidth, height + halfWidth, x, y);\n }\n // 仅填充\n if (isFill) {\n return Object(_util_util__WEBPACK_IMPORTED_MODULE_3__[\"inBox\"])(minX, minY, width, height, x, y);\n }\n if (isStroke) {\n return Object(_util_in_stroke_rect__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(minX, minY, width, height, lineWidth, x, y);\n }\n }\n else {\n var isHit = false;\n if (isStroke) {\n isHit = Object(_util_in_stroke_rect_radius__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(minX, minY, width, height, radius, lineWidth, x, y);\n }\n // 仅填充时带有圆角的矩形直接通过图形拾取\n // 以后可以改成纯数学的近似拾取,将圆弧切割成多边形\n if (!isHit && isFill) {\n isHit = Object(_util_in_path_point_in_path__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this, x, y);\n }\n return isHit;\n }\n };\n Rect.prototype.createPath = function (context) {\n var attrs = this.attr();\n var x = attrs.x;\n var y = attrs.y;\n var width = attrs.width;\n var height = attrs.height;\n var radius = attrs.radius;\n context.beginPath();\n if (radius === 0) {\n // 改成原生的rect方法\n context.rect(x, y, width, height);\n }\n else {\n var _a = Object(_util_parse__WEBPACK_IMPORTED_MODULE_2__[\"parseRadius\"])(radius), r1 = _a[0], r2 = _a[1], r3 = _a[2], r4 = _a[3];\n context.moveTo(x + r1, y);\n context.lineTo(x + width - r2, y);\n r2 !== 0 && context.arc(x + width - r2, y + r2, r2, -Math.PI / 2, 0);\n context.lineTo(x + width, y + height - r3);\n r3 !== 0 && context.arc(x + width - r3, y + height - r3, r3, 0, Math.PI / 2);\n context.lineTo(x + r4, y + height);\n r4 !== 0 && context.arc(x + r4, y + height - r4, r4, Math.PI / 2, Math.PI);\n context.lineTo(x, y + r1);\n r1 !== 0 && context.arc(x + r1, y + r1, r1, Math.PI, Math.PI * 1.5);\n context.closePath();\n }\n };\n return Rect;\n}(_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Rect);\n//# sourceMappingURL=rect.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vc2hhcGUvcmVjdC5qcz9lYjZlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUM0QztBQUNiO0FBQ2E7QUFDUDtBQUNPO0FBQ2lCO0FBQ0g7QUFDMUQ7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHLFdBQVcsNkNBQTZDO0FBQzNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHdEQUFLO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qix3REFBSztBQUM1QjtBQUNBO0FBQ0EsdUJBQXVCLG9FQUFNO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsMkVBQWdCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLDJFQUFhO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsK0RBQVc7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQVM7QUFDSSxtRUFBSSxFQUFDO0FBQ3BCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWNhbnZhc0AwLjUuMTJAQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL3JlY3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcg55+p5b2iXG4gKiBAYXV0aG9yIGR4cTYxM0BnbWFpbC5jb21cbiAqL1xuaW1wb3J0IHsgX19hc3NpZ24sIF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IFNoYXBlQmFzZSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHsgcGFyc2VSYWRpdXMgfSBmcm9tICcuLi91dGlsL3BhcnNlJztcbmltcG9ydCB7IGluQm94IH0gZnJvbSAnLi4vdXRpbC91dGlsJztcbmltcG9ydCBpblJlY3QgZnJvbSAnLi4vdXRpbC9pbi1zdHJva2UvcmVjdCc7XG5pbXBvcnQgaW5SZWN0V2l0aFJhZGl1cyBmcm9tICcuLi91dGlsL2luLXN0cm9rZS9yZWN0LXJhZGl1cyc7XG5pbXBvcnQgaXNQb2ludEluUGF0aCBmcm9tICcuLi91dGlsL2luLXBhdGgvcG9pbnQtaW4tcGF0aCc7XG52YXIgUmVjdCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoUmVjdCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBSZWN0KCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIFJlY3QucHJvdG90eXBlLmdldERlZmF1bHRBdHRycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gX3N1cGVyLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMuY2FsbCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBhdHRycyksIHsgeDogMCwgeTogMCwgd2lkdGg6IDAsIGhlaWdodDogMCwgcmFkaXVzOiAwIH0pO1xuICAgIH07XG4gICAgUmVjdC5wcm90b3R5cGUuaXNJblN0cm9rZU9yUGF0aCA9IGZ1bmN0aW9uICh4LCB5LCBpc1N0cm9rZSwgaXNGaWxsLCBsaW5lV2lkdGgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBtaW5YID0gYXR0cnMueDtcbiAgICAgICAgdmFyIG1pblkgPSBhdHRycy55O1xuICAgICAgICB2YXIgd2lkdGggPSBhdHRycy53aWR0aDtcbiAgICAgICAgdmFyIGhlaWdodCA9IGF0dHJzLmhlaWdodDtcbiAgICAgICAgdmFyIHJhZGl1cyA9IGF0dHJzLnJhZGl1cztcbiAgICAgICAgLy8g5peg5ZyG6KeS5pe255qE562W55WlXG4gICAgICAgIGlmICghcmFkaXVzKSB7XG4gICAgICAgICAgICB2YXIgaGFsZldpZHRoID0gbGluZVdpZHRoIC8gMjtcbiAgICAgICAgICAgIC8vIOWQjOaXtuWhq+WFheWSjOW4puaciei+ueahhlxuICAgICAgICAgICAgaWYgKGlzRmlsbCAmJiBpc1N0cm9rZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpbkJveChtaW5YIC0gaGFsZldpZHRoLCBtaW5ZIC0gaGFsZldpZHRoLCB3aWR0aCArIGhhbGZXaWR0aCwgaGVpZ2h0ICsgaGFsZldpZHRoLCB4LCB5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIOS7heWhq+WFhVxuICAgICAgICAgICAgaWYgKGlzRmlsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpbkJveChtaW5YLCBtaW5ZLCB3aWR0aCwgaGVpZ2h0LCB4LCB5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc1N0cm9rZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpblJlY3QobWluWCwgbWluWSwgd2lkdGgsIGhlaWdodCwgbGluZVdpZHRoLCB4LCB5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBpc0hpdCA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKGlzU3Ryb2tlKSB7XG4gICAgICAgICAgICAgICAgaXNIaXQgPSBpblJlY3RXaXRoUmFkaXVzKG1pblgsIG1pblksIHdpZHRoLCBoZWlnaHQsIHJhZGl1cywgbGluZVdpZHRoLCB4LCB5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIOS7heWhq+WFheaXtuW4puacieWchuinkueahOefqeW9ouebtOaOpemAmui/h+WbvuW9ouaLvuWPllxuICAgICAgICAgICAgLy8g5Lul5ZCO5Y+v5Lul5pS55oiQ57qv5pWw5a2m55qE6L+R5Ly85ou+5Y+W77yM5bCG5ZyG5byn5YiH5Ymy5oiQ5aSa6L655b2iXG4gICAgICAgICAgICBpZiAoIWlzSGl0ICYmIGlzRmlsbCkge1xuICAgICAgICAgICAgICAgIGlzSGl0ID0gaXNQb2ludEluUGF0aCh0aGlzLCB4LCB5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBpc0hpdDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgUmVjdC5wcm90b3R5cGUuY3JlYXRlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cigpO1xuICAgICAgICB2YXIgeCA9IGF0dHJzLng7XG4gICAgICAgIHZhciB5ID0gYXR0cnMueTtcbiAgICAgICAgdmFyIHdpZHRoID0gYXR0cnMud2lkdGg7XG4gICAgICAgIHZhciBoZWlnaHQgPSBhdHRycy5oZWlnaHQ7XG4gICAgICAgIHZhciByYWRpdXMgPSBhdHRycy5yYWRpdXM7XG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgICAgIGlmIChyYWRpdXMgPT09IDApIHtcbiAgICAgICAgICAgIC8vIOaUueaIkOWOn+eUn+eahHJlY3Tmlrnms5VcbiAgICAgICAgICAgIGNvbnRleHQucmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBfYSA9IHBhcnNlUmFkaXVzKHJhZGl1cyksIHIxID0gX2FbMF0sIHIyID0gX2FbMV0sIHIzID0gX2FbMl0sIHI0ID0gX2FbM107XG4gICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyh4ICsgcjEsIHkpO1xuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oeCArIHdpZHRoIC0gcjIsIHkpO1xuICAgICAgICAgICAgcjIgIT09IDAgJiYgY29udGV4dC5hcmMoeCArIHdpZHRoIC0gcjIsIHkgKyByMiwgcjIsIC1NYXRoLlBJIC8gMiwgMCk7XG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyh4ICsgd2lkdGgsIHkgKyBoZWlnaHQgLSByMyk7XG4gICAgICAgICAgICByMyAhPT0gMCAmJiBjb250ZXh0LmFyYyh4ICsgd2lkdGggLSByMywgeSArIGhlaWdodCAtIHIzLCByMywgMCwgTWF0aC5QSSAvIDIpO1xuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oeCArIHI0LCB5ICsgaGVpZ2h0KTtcbiAgICAgICAgICAgIHI0ICE9PSAwICYmIGNvbnRleHQuYXJjKHggKyByNCwgeSArIGhlaWdodCAtIHI0LCByNCwgTWF0aC5QSSAvIDIsIE1hdGguUEkpO1xuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oeCwgeSArIHIxKTtcbiAgICAgICAgICAgIHIxICE9PSAwICYmIGNvbnRleHQuYXJjKHggKyByMSwgeSArIHIxLCByMSwgTWF0aC5QSSwgTWF0aC5QSSAqIDEuNSk7XG4gICAgICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gUmVjdDtcbn0oU2hhcGVCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBSZWN0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVjdC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/rect.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/text.js":
/*!******************************************************************************!*\
!*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/text.js ***!
\******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/base.js\");\n/* harmony import */ var _util_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/util */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/util.js\");\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/index.js\");\n/**\n * @fileoverview 文本\n * @author dxq613@gmail.com\n */\n\n\n\n\nvar Text = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Text, _super);\n function Text() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // 默认文本属性\n Text.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, text: null, fontSize: 12, fontFamily: 'sans-serif', fontStyle: 'normal', fontWeight: 'normal', fontVariant: 'normal', textAlign: 'start', textBaseline: 'bottom' });\n };\n // 仅仅使用包围盒检测来进行拾取\n Text.prototype.isOnlyHitBox = function () {\n return true;\n };\n // 初始化时组合 font,同时判断 text 是否换行\n Text.prototype.initAttrs = function (attrs) {\n this._assembleFont();\n if (attrs.text) {\n this._setText(attrs.text);\n }\n };\n // 组装字体\n Text.prototype._assembleFont = function () {\n var attrs = this.attrs;\n attrs.font = Object(_antv_g_base__WEBPACK_IMPORTED_MODULE_3__[\"assembleFont\"])(attrs);\n };\n // 如果文本换行,则缓存数组\n Text.prototype._setText = function (text) {\n var textArr = null;\n if (Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isString\"])(text) && text.indexOf('\\n') !== -1) {\n textArr = text.split('\\n');\n }\n this.set('textArr', textArr);\n };\n // 更新属性时,检测是否更改了 font、text\n Text.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n if (name.startsWith('font')) {\n this._assembleFont();\n }\n if (name === 'text') {\n this._setText(value);\n }\n };\n // 这个方法在 text 时没有可以做的事情,如果要支持文字背景时可以考虑\n // createPath(context) {\n // }\n // 如果文本多行,需要获取文本间距\n Text.prototype._getSpaceingY = function () {\n var attrs = this.attrs;\n var lineHeight = attrs.lineHeight;\n var fontSize = attrs.fontSize * 1;\n return lineHeight ? lineHeight - fontSize : fontSize * 0.14;\n };\n // 绘制文本,考虑多行的场景\n Text.prototype._drawTextArr = function (context, textArr, isFill) {\n var attrs = this.attrs;\n var textBaseline = attrs.textBaseline;\n var x = attrs.x;\n var y = attrs.y;\n var fontSize = attrs.fontSize * 1;\n var spaceingY = this._getSpaceingY();\n var height = Object(_antv_g_base__WEBPACK_IMPORTED_MODULE_3__[\"getTextHeight\"])(attrs.text, attrs.fontSize, attrs.lineHeight);\n var subY;\n Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(textArr, function (subText, index) {\n subY = y + index * (spaceingY + fontSize) - height + fontSize; // bottom;\n if (textBaseline === 'middle')\n subY += height - fontSize - (height - fontSize) / 2;\n if (textBaseline === 'top')\n subY += height - fontSize;\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(subText)) {\n if (isFill) {\n context.fillText(subText, x, subY);\n }\n else {\n context.strokeText(subText, x, subY);\n }\n }\n });\n };\n // 绘制文本,同时考虑填充和绘制边框\n Text.prototype._drawText = function (context, isFill) {\n var attrs = this.attr();\n var x = attrs.x;\n var y = attrs.y;\n var textArr = this.get('textArr');\n if (textArr) {\n this._drawTextArr(context, textArr, isFill);\n }\n else {\n var text = attrs.text;\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(text)) {\n if (isFill) {\n context.fillText(text, x, y);\n }\n else {\n context.strokeText(text, x, y);\n }\n }\n }\n };\n // 复写绘制和填充的逻辑:对于文本,应该先绘制边框,再进行填充\n Text.prototype.strokeAndFill = function (context) {\n var _a = this.attrs, lineWidth = _a.lineWidth, opacity = _a.opacity, strokeOpacity = _a.strokeOpacity, fillOpacity = _a.fillOpacity;\n if (this.isStroke()) {\n if (lineWidth > 0) {\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(strokeOpacity) && strokeOpacity !== 1) {\n context.globalAlpha = opacity;\n }\n this.stroke(context);\n }\n }\n if (this.isFill()) {\n if (!Object(_util_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(fillOpacity) && fillOpacity !== 1) {\n context.globalAlpha = fillOpacity;\n this.fill(context);\n context.globalAlpha = opacity;\n }\n else {\n this.fill(context);\n }\n }\n this.afterDrawPath(context);\n };\n // 复写填充逻辑\n Text.prototype.fill = function (context) {\n this._drawText(context, true);\n };\n // 复写绘制边框的逻辑\n Text.prototype.stroke = function (context) {\n this._drawText(context, false);\n };\n return Text;\n}(_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Text);\n//# sourceMappingURL=text.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vc2hhcGUvdGV4dC5qcz9hYWFmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUM0QztBQUNiO0FBQ3NCO0FBQ007QUFDM0Q7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUcsV0FBVywrS0FBK0s7QUFDN047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLGlFQUFZO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSwyREFBUTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLGtFQUFhO0FBQ2xDO0FBQ0EsUUFBUSx1REFBSTtBQUNaLDBFQUEwRTtBQUMxRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQix3REFBSztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsd0RBQUs7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQix3REFBSztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsd0RBQUs7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQVM7QUFDSSxtRUFBSSxFQUFDO0FBQ3BCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWNhbnZhc0AwLjUuMTJAQGFudHYvZy1jYW52YXMvZXNtL3NoYXBlL3RleHQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcg5paH5pysXG4gKiBAYXV0aG9yIGR4cTYxM0BnbWFpbC5jb21cbiAqL1xuaW1wb3J0IHsgX19hc3NpZ24sIF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IFNoYXBlQmFzZSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHsgaXNOaWwsIGlzU3RyaW5nLCBlYWNoIH0gZnJvbSAnLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IGdldFRleHRIZWlnaHQsIGFzc2VtYmxlRm9udCB9IGZyb20gJ0BhbnR2L2ctYmFzZSc7XG52YXIgVGV4dCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoVGV4dCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBUZXh0KCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIC8vIOm7mOiupOaWh+acrOWxnuaAp1xuICAgIFRleHQucHJvdG90eXBlLmdldERlZmF1bHRBdHRycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gX3N1cGVyLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMuY2FsbCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBhdHRycyksIHsgeDogMCwgeTogMCwgdGV4dDogbnVsbCwgZm9udFNpemU6IDEyLCBmb250RmFtaWx5OiAnc2Fucy1zZXJpZicsIGZvbnRTdHlsZTogJ25vcm1hbCcsIGZvbnRXZWlnaHQ6ICdub3JtYWwnLCBmb250VmFyaWFudDogJ25vcm1hbCcsIHRleHRBbGlnbjogJ3N0YXJ0JywgdGV4dEJhc2VsaW5lOiAnYm90dG9tJyB9KTtcbiAgICB9O1xuICAgIC8vIOS7heS7heS9v+eUqOWMheWbtOebkuajgOa1i+adpei/m+ihjOaLvuWPllxuICAgIFRleHQucHJvdG90eXBlLmlzT25seUhpdEJveCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiAgICAvLyDliJ3lp4vljJbml7bnu4TlkIggZm9udO+8jOWQjOaXtuWIpOaWrSB0ZXh0IOaYr+WQpuaNouihjFxuICAgIFRleHQucHJvdG90eXBlLmluaXRBdHRycyA9IGZ1bmN0aW9uIChhdHRycykge1xuICAgICAgICB0aGlzLl9hc3NlbWJsZUZvbnQoKTtcbiAgICAgICAgaWYgKGF0dHJzLnRleHQpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFRleHQoYXR0cnMudGV4dCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIOe7hOijheWtl+S9k1xuICAgIFRleHQucHJvdG90eXBlLl9hc3NlbWJsZUZvbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cnM7XG4gICAgICAgIGF0dHJzLmZvbnQgPSBhc3NlbWJsZUZvbnQoYXR0cnMpO1xuICAgIH07XG4gICAgLy8g5aaC5p6c5paH5pys5o2i6KGM77yM5YiZ57yT5a2Y5pWw57uEXG4gICAgVGV4dC5wcm90b3R5cGUuX3NldFRleHQgPSBmdW5jdGlvbiAodGV4dCkge1xuICAgICAgICB2YXIgdGV4dEFyciA9IG51bGw7XG4gICAgICAgIGlmIChpc1N0cmluZyh0ZXh0KSAmJiB0ZXh0LmluZGV4T2YoJ1xcbicpICE9PSAtMSkge1xuICAgICAgICAgICAgdGV4dEFyciA9IHRleHQuc3BsaXQoJ1xcbicpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0KCd0ZXh0QXJyJywgdGV4dEFycik7XG4gICAgfTtcbiAgICAvLyDmm7TmlrDlsZ7mgKfml7bvvIzmo4DmtYvmmK/lkKbmm7TmlLnkuoYgZm9udOOAgXRleHRcbiAgICBUZXh0LnByb3RvdHlwZS5vbkF0dHJDaGFuZ2UgPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIG9yaWdpblZhbHVlKSB7XG4gICAgICAgIF9zdXBlci5wcm90b3R5cGUub25BdHRyQ2hhbmdlLmNhbGwodGhpcywgbmFtZSwgdmFsdWUsIG9yaWdpblZhbHVlKTtcbiAgICAgICAgaWYgKG5hbWUuc3RhcnRzV2l0aCgnZm9udCcpKSB7XG4gICAgICAgICAgICB0aGlzLl9hc3NlbWJsZUZvbnQoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmFtZSA9PT0gJ3RleHQnKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRUZXh0KHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8g6L+Z5Liq5pa55rOV5ZyoIHRleHQg5pe25rKh5pyJ5Y+v5Lul5YGa55qE5LqL5oOF77yM5aaC5p6c6KaB5pSv5oyB5paH5a2X6IOM5pmv5pe25Y+v5Lul6ICD6JmRXG4gICAgLy8gY3JlYXRlUGF0aChjb250ZXh0KSB7XG4gICAgLy8gfVxuICAgIC8vIOWmguaenOaWh+acrOWkmuihjO+8jOmcgOimgeiOt+WPluaWh+acrOmXtOi3nVxuICAgIFRleHQucHJvdG90eXBlLl9nZXRTcGFjZWluZ1kgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cnM7XG4gICAgICAgIHZhciBsaW5lSGVpZ2h0ID0gYXR0cnMubGluZUhlaWdodDtcbiAgICAgICAgdmFyIGZvbnRTaXplID0gYXR0cnMuZm9udFNpemUgKiAxO1xuICAgICAgICByZXR1cm4gbGluZUhlaWdodCA/IGxpbmVIZWlnaHQgLSBmb250U2l6ZSA6IGZvbnRTaXplICogMC4xNDtcbiAgICB9O1xuICAgIC8vIOe7mOWItuaWh+acrO+8jOiAg+iZkeWkmuihjOeahOWcuuaZr1xuICAgIFRleHQucHJvdG90eXBlLl9kcmF3VGV4dEFyciA9IGZ1bmN0aW9uIChjb250ZXh0LCB0ZXh0QXJyLCBpc0ZpbGwpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRycztcbiAgICAgICAgdmFyIHRleHRCYXNlbGluZSA9IGF0dHJzLnRleHRCYXNlbGluZTtcbiAgICAgICAgdmFyIHggPSBhdHRycy54O1xuICAgICAgICB2YXIgeSA9IGF0dHJzLnk7XG4gICAgICAgIHZhciBmb250U2l6ZSA9IGF0dHJzLmZvbnRTaXplICogMTtcbiAgICAgICAgdmFyIHNwYWNlaW5nWSA9IHRoaXMuX2dldFNwYWNlaW5nWSgpO1xuICAgICAgICB2YXIgaGVpZ2h0ID0gZ2V0VGV4dEhlaWdodChhdHRycy50ZXh0LCBhdHRycy5mb250U2l6ZSwgYXR0cnMubGluZUhlaWdodCk7XG4gICAgICAgIHZhciBzdWJZO1xuICAgICAgICBlYWNoKHRleHRBcnIsIGZ1bmN0aW9uIChzdWJUZXh0LCBpbmRleCkge1xuICAgICAgICAgICAgc3ViWSA9IHkgKyBpbmRleCAqIChzcGFjZWluZ1kgKyBmb250U2l6ZSkgLSBoZWlnaHQgKyBmb250U2l6ZTsgLy8gYm90dG9tO1xuICAgICAgICAgICAgaWYgKHRleHRCYXNlbGluZSA9PT0gJ21pZGRsZScpXG4gICAgICAgICAgICAgICAgc3ViWSArPSBoZWlnaHQgLSBmb250U2l6ZSAtIChoZWlnaHQgLSBmb250U2l6ZSkgLyAyO1xuICAgICAgICAgICAgaWYgKHRleHRCYXNlbGluZSA9PT0gJ3RvcCcpXG4gICAgICAgICAgICAgICAgc3ViWSArPSBoZWlnaHQgLSBmb250U2l6ZTtcbiAgICAgICAgICAgIGlmICghaXNOaWwoc3ViVGV4dCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNGaWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFRleHQoc3ViVGV4dCwgeCwgc3ViWSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnN0cm9rZVRleHQoc3ViVGV4dCwgeCwgc3ViWSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIC8vIOe7mOWItuaWh+acrO+8jOWQjOaXtuiAg+iZkeWhq+WFheWSjOe7mOWItui+ueahhlxuICAgIFRleHQucHJvdG90eXBlLl9kcmF3VGV4dCA9IGZ1bmN0aW9uIChjb250ZXh0LCBpc0ZpbGwpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciB4ID0gYXR0cnMueDtcbiAgICAgICAgdmFyIHkgPSBhdHRycy55O1xuICAgICAgICB2YXIgdGV4dEFyciA9IHRoaXMuZ2V0KCd0ZXh0QXJyJyk7XG4gICAgICAgIGlmICh0ZXh0QXJyKSB7XG4gICAgICAgICAgICB0aGlzLl9kcmF3VGV4dEFycihjb250ZXh0LCB0ZXh0QXJyLCBpc0ZpbGwpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIHRleHQgPSBhdHRycy50ZXh0O1xuICAgICAgICAgICAgaWYgKCFpc05pbCh0ZXh0KSkge1xuICAgICAgICAgICAgICAgIGlmIChpc0ZpbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsVGV4dCh0ZXh0LCB4LCB5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc3Ryb2tlVGV4dCh0ZXh0LCB4LCB5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIOWkjeWGmee7mOWItuWSjOWhq+WFheeahOmAu+i+ke+8muWvueS6juaWh+acrO+8jOW6lOivpeWFiOe7mOWItui+ueahhu+8jOWGjei/m+ihjOWhq+WFhVxuICAgIFRleHQucHJvdG90eXBlLnN0cm9rZUFuZEZpbGwgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLmF0dHJzLCBsaW5lV2lkdGggPSBfYS5saW5lV2lkdGgsIG9wYWNpdHkgPSBfYS5vcGFjaXR5LCBzdHJva2VPcGFjaXR5ID0gX2Euc3Ryb2tlT3BhY2l0eSwgZmlsbE9wYWNpdHkgPSBfYS5maWxsT3BhY2l0eTtcbiAgICAgICAgaWYgKHRoaXMuaXNTdHJva2UoKSkge1xuICAgICAgICAgICAgaWYgKGxpbmVXaWR0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzTmlsKHN0cm9rZU9wYWNpdHkpICYmIHN0cm9rZU9wYWNpdHkgIT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5nbG9iYWxBbHBoYSA9IG9wYWNpdHk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc3Ryb2tlKGNvbnRleHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzRmlsbCgpKSB7XG4gICAgICAgICAgICBpZiAoIWlzTmlsKGZpbGxPcGFjaXR5KSAmJiBmaWxsT3BhY2l0eSAhPT0gMSkge1xuICAgICAgICAgICAgICAgIGNvbnRleHQuZ2xvYmFsQWxwaGEgPSBmaWxsT3BhY2l0eTtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGwoY29udGV4dCk7XG4gICAgICAgICAgICAgICAgY29udGV4dC5nbG9iYWxBbHBoYSA9IG9wYWNpdHk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGwoY29udGV4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hZnRlckRyYXdQYXRoKGNvbnRleHQpO1xuICAgIH07XG4gICAgLy8g5aSN5YaZ5aGr5YWF6YC76L6RXG4gICAgVGV4dC5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAgIHRoaXMuX2RyYXdUZXh0KGNvbnRleHQsIHRydWUpO1xuICAgIH07XG4gICAgLy8g5aSN5YaZ57uY5Yi26L655qGG55qE6YC76L6RXG4gICAgVGV4dC5wcm90b3R5cGUuc3Ryb2tlID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgdGhpcy5fZHJhd1RleHQoY29udGV4dCwgZmFsc2UpO1xuICAgIH07XG4gICAgcmV0dXJuIFRleHQ7XG59KFNoYXBlQmFzZSkpO1xuZXhwb3J0IGRlZmF1bHQgVGV4dDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRleHQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/text.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/arc-params.js":
/*!***********************************************************************************!*\
!*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/arc-params.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 getArcParams; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/util.js\");\n\n// 向量长度\nfunction vMag(v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n}\n// u.v/|u||v|,计算夹角的余弦值\nfunction vRatio(u, v) {\n // 当存在一个向量的长度为 0 时,夹角也为 0,即夹角的余弦值为 1\n return vMag(u) * vMag(v) ? (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v)) : 1;\n}\n// 向量角度\nfunction vAngle(u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n}\n// A 0:rx 1:ry 2:x-axis-rotation 3:large-arc-flag 4:sweep-flag 5: x 6: y\nfunction getArcParams(startPoint, params) {\n var rx = params[1];\n var ry = params[2];\n var xRotation = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"mod\"])(Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"toRadian\"])(params[3]), Math.PI * 2);\n var arcFlag = params[4];\n var sweepFlag = params[5];\n // 弧形起点坐标\n var x1 = startPoint[0];\n var y1 = startPoint[1];\n // 弧形终点坐标\n var x2 = params[6];\n var y2 = params[7];\n var xp = (Math.cos(xRotation) * (x1 - x2)) / 2.0 + (Math.sin(xRotation) * (y1 - y2)) / 2.0;\n var yp = (-1 * Math.sin(xRotation) * (x1 - x2)) / 2.0 + (Math.cos(xRotation) * (y1 - y2)) / 2.0;\n var lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry);\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n var diff = rx * rx * (yp * yp) + ry * ry * (xp * xp);\n var f = diff ? Math.sqrt((rx * rx * (ry * ry) - diff) / diff) : 1;\n if (arcFlag === sweepFlag) {\n f *= -1;\n }\n if (isNaN(f)) {\n f = 0;\n }\n // 旋转前的起点坐标,且当长半轴和短半轴的长度为 0 时,坐标按 (0, 0) 处理\n var cxp = ry ? (f * rx * yp) / ry : 0;\n var cyp = rx ? (f * -ry * xp) / rx : 0;\n // 椭圆圆心坐标\n var cx = (x1 + x2) / 2.0 + Math.cos(xRotation) * cxp - Math.sin(xRotation) * cyp;\n var cy = (y1 + y2) / 2.0 + Math.sin(xRotation) * cxp + Math.cos(xRotation) * cyp;\n // 起始点的单位向量\n var u = [(xp - cxp) / rx, (yp - cyp) / ry];\n // 终止点的单位向量\n var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n // 计算起始点和圆心的连线,与 x 轴正方向的夹角\n var theta = vAngle([1, 0], u);\n // 计算圆弧起始点和终止点与椭圆圆心连线的夹角\n var dTheta = vAngle(u, v);\n if (vRatio(u, v) <= -1) {\n dTheta = Math.PI;\n }\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n if (sweepFlag === 0 && dTheta > 0) {\n dTheta = dTheta - 2 * Math.PI;\n }\n if (sweepFlag === 1 && dTheta < 0) {\n dTheta = dTheta + 2 * Math.PI;\n }\n return {\n cx: cx,\n cy: cy,\n // 弧形的起点和终点相同时,长轴和短轴的长度按 0 处理\n rx: Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isSamePoint\"])(startPoint, [x2, y2]) ? 0 : rx,\n ry: Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isSamePoint\"])(startPoint, [x2, y2]) ? 0 : ry,\n startAngle: theta,\n endAngle: theta + dTheta,\n xRotation: xRotation,\n arcFlag: arcFlag,\n sweepFlag: sweepFlag,\n };\n}\n//# sourceMappingURL=arc-params.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9hcmMtcGFyYW1zLmpzPzhkNjEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQW9EO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQSxvQkFBb0IsaURBQUcsQ0FBQyxzREFBUTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx5REFBVztBQUN2QixZQUFZLHlEQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9hcmMtcGFyYW1zLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbW9kLCB0b1JhZGlhbiwgaXNTYW1lUG9pbnQgfSBmcm9tICcuL3V0aWwnO1xuLy8g5ZCR6YeP6ZW/5bqmXG5mdW5jdGlvbiB2TWFnKHYpIHtcbiAgICByZXR1cm4gTWF0aC5zcXJ0KHZbMF0gKiB2WzBdICsgdlsxXSAqIHZbMV0pO1xufVxuLy8gdS52L3x1fHx2fO+8jOiuoeeul+WkueinkueahOS9meW8puWAvFxuZnVuY3Rpb24gdlJhdGlvKHUsIHYpIHtcbiAgICAvLyDlvZPlrZjlnKjkuIDkuKrlkJHph4/nmoTplb/luqbkuLogMCDml7bvvIzlpLnop5LkuZ/kuLogMO+8jOWNs+WkueinkueahOS9meW8puWAvOS4uiAxXG4gICAgcmV0dXJuIHZNYWcodSkgKiB2TWFnKHYpID8gKHVbMF0gKiB2WzBdICsgdVsxXSAqIHZbMV0pIC8gKHZNYWcodSkgKiB2TWFnKHYpKSA6IDE7XG59XG4vLyDlkJHph4/op5LluqZcbmZ1bmN0aW9uIHZBbmdsZSh1LCB2KSB7XG4gICAgcmV0dXJuICh1WzBdICogdlsxXSA8IHVbMV0gKiB2WzBdID8gLTEgOiAxKSAqIE1hdGguYWNvcyh2UmF0aW8odSwgdikpO1xufVxuLy8gQSAwOnJ4IDE6cnkgMjp4LWF4aXMtcm90YXRpb24gMzpsYXJnZS1hcmMtZmxhZyA0OnN3ZWVwLWZsYWcgNTogeCA2OiB5XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRBcmNQYXJhbXMoc3RhcnRQb2ludCwgcGFyYW1zKSB7XG4gICAgdmFyIHJ4ID0gcGFyYW1zWzFdO1xuICAgIHZhciByeSA9IHBhcmFtc1syXTtcbiAgICB2YXIgeFJvdGF0aW9uID0gbW9kKHRvUmFkaWFuKHBhcmFtc1szXSksIE1hdGguUEkgKiAyKTtcbiAgICB2YXIgYXJjRmxhZyA9IHBhcmFtc1s0XTtcbiAgICB2YXIgc3dlZXBGbGFnID0gcGFyYW1zWzVdO1xuICAgIC8vIOW8p+W9oui1t+eCueWdkOagh1xuICAgIHZhciB4MSA9IHN0YXJ0UG9pbnRbMF07XG4gICAgdmFyIHkxID0gc3RhcnRQb2ludFsxXTtcbiAgICAvLyDlvKflvaLnu4jngrnlnZDmoIdcbiAgICB2YXIgeDIgPSBwYXJhbXNbNl07XG4gICAgdmFyIHkyID0gcGFyYW1zWzddO1xuICAgIHZhciB4cCA9IChNYXRoLmNvcyh4Um90YXRpb24pICogKHgxIC0geDIpKSAvIDIuMCArIChNYXRoLnNpbih4Um90YXRpb24pICogKHkxIC0geTIpKSAvIDIuMDtcbiAgICB2YXIgeXAgPSAoLTEgKiBNYXRoLnNpbih4Um90YXRpb24pICogKHgxIC0geDIpKSAvIDIuMCArIChNYXRoLmNvcyh4Um90YXRpb24pICogKHkxIC0geTIpKSAvIDIuMDtcbiAgICB2YXIgbGFtYmRhID0gKHhwICogeHApIC8gKHJ4ICogcngpICsgKHlwICogeXApIC8gKHJ5ICogcnkpO1xuICAgIGlmIChsYW1iZGEgPiAxKSB7XG4gICAgICAgIHJ4ICo9IE1hdGguc3FydChsYW1iZGEpO1xuICAgICAgICByeSAqPSBNYXRoLnNxcnQobGFtYmRhKTtcbiAgICB9XG4gICAgdmFyIGRpZmYgPSByeCAqIHJ4ICogKHlwICogeXApICsgcnkgKiByeSAqICh4cCAqIHhwKTtcbiAgICB2YXIgZiA9IGRpZmYgPyBNYXRoLnNxcnQoKHJ4ICogcnggKiAocnkgKiByeSkgLSBkaWZmKSAvIGRpZmYpIDogMTtcbiAgICBpZiAoYXJjRmxhZyA9PT0gc3dlZXBGbGFnKSB7XG4gICAgICAgIGYgKj0gLTE7XG4gICAgfVxuICAgIGlmIChpc05hTihmKSkge1xuICAgICAgICBmID0gMDtcbiAgICB9XG4gICAgLy8g5peL6L2s5YmN55qE6LW354K55Z2Q5qCH77yM5LiU5b2T6ZW/5Y2K6L205ZKM55+t5Y2K6L2055qE6ZW/5bqm5Li6IDAg5pe277yM5Z2Q5qCH5oyJICgwLCAwKSDlpITnkIZcbiAgICB2YXIgY3hwID0gcnkgPyAoZiAqIHJ4ICogeXApIC8gcnkgOiAwO1xuICAgIHZhciBjeXAgPSByeCA/IChmICogLXJ5ICogeHApIC8gcnggOiAwO1xuICAgIC8vIOakreWchuWchuW/g+WdkOagh1xuICAgIHZhciBjeCA9ICh4MSArIHgyKSAvIDIuMCArIE1hdGguY29zKHhSb3RhdGlvbikgKiBjeHAgLSBNYXRoLnNpbih4Um90YXRpb24pICogY3lwO1xuICAgIHZhciBjeSA9ICh5MSArIHkyKSAvIDIuMCArIE1hdGguc2luKHhSb3RhdGlvbikgKiBjeHAgKyBNYXRoLmNvcyh4Um90YXRpb24pICogY3lwO1xuICAgIC8vIOi1t+Wni+eCueeahOWNleS9jeWQkemHj1xuICAgIHZhciB1ID0gWyh4cCAtIGN4cCkgLyByeCwgKHlwIC0gY3lwKSAvIHJ5XTtcbiAgICAvLyDnu4jmraLngrnnmoTljZXkvY3lkJHph49cbiAgICB2YXIgdiA9IFsoLTEgKiB4cCAtIGN4cCkgLyByeCwgKC0xICogeXAgLSBjeXApIC8gcnldO1xuICAgIC8vIOiuoeeul+i1t+Wni+eCueWSjOWchuW/g+eahOi/nue6v++8jOS4jiB4IOi9tOato+aWueWQkeeahOWkueinklxuICAgIHZhciB0aGV0YSA9IHZBbmdsZShbMSwgMF0sIHUpO1xuICAgIC8vIOiuoeeul+WchuW8p+i1t+Wni+eCueWSjOe7iOatoueCueS4juakreWchuWchuW/g+i/nue6v+eahOWkueinklxuICAgIHZhciBkVGhldGEgPSB2QW5nbGUodSwgdik7XG4gICAgaWYgKHZSYXRpbyh1LCB2KSA8PSAtMSkge1xuICAgICAgICBkVGhldGEgPSBNYXRoLlBJO1xuICAgIH1cbiAgICBpZiAodlJhdGlvKHUsIHYpID49IDEpIHtcbiAgICAgICAgZFRoZXRhID0gMDtcbiAgICB9XG4gICAgaWYgKHN3ZWVwRmxhZyA9PT0gMCAmJiBkVGhldGEgPiAwKSB7XG4gICAgICAgIGRUaGV0YSA9IGRUaGV0YSAtIDIgKiBNYXRoLlBJO1xuICAgIH1cbiAgICBpZiAoc3dlZXBGbGFnID09PSAxICYmIGRUaGV0YSA8IDApIHtcbiAgICAgICAgZFRoZXRhID0gZFRoZXRhICsgMiAqIE1hdGguUEk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGN4OiBjeCxcbiAgICAgICAgY3k6IGN5LFxuICAgICAgICAvLyDlvKflvaLnmoTotbfngrnlkoznu4jngrnnm7jlkIzml7bvvIzplb/ovbTlkoznn63ovbTnmoTplb/luqbmjIkgMCDlpITnkIZcbiAgICAgICAgcng6IGlzU2FtZVBvaW50KHN0YXJ0UG9pbnQsIFt4MiwgeTJdKSA/IDAgOiByeCxcbiAgICAgICAgcnk6IGlzU2FtZVBvaW50KHN0YXJ0UG9pbnQsIFt4MiwgeTJdKSA/IDAgOiByeSxcbiAgICAgICAgc3RhcnRBbmdsZTogdGhldGEsXG4gICAgICAgIGVuZEFuZ2xlOiB0aGV0YSArIGRUaGV0YSxcbiAgICAgICAgeFJvdGF0aW9uOiB4Um90YXRpb24sXG4gICAgICAgIGFyY0ZsYWc6IGFyY0ZsYWcsXG4gICAgICAgIHN3ZWVwRmxhZzogc3dlZXBGbGFnLFxuICAgIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1hcmMtcGFyYW1zLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/arc-params.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/arrow.js":
/*!******************************************************************************!*\
!*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/arrow.js ***!
\******************************************************************************/
/*! exports provided: getShortenOffset, addStartArrow, addEndArrow */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getShortenOffset\", function() { return getShortenOffset; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addStartArrow\", function() { return addStartArrow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addEndArrow\", function() { return addEndArrow; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shape */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/shape/index.js\");\n\n\nvar sin = Math.sin, cos = Math.cos, atan2 = Math.atan2, PI = Math.PI;\nfunction _addDefaultArrow(shape, attrs, x1, y1, x2, y2, isStart) {\n var stroke = attrs.stroke, lineWidth = attrs.lineWidth;\n var x = x1 - x2;\n var y = y1 - y2;\n var rad = atan2(y, x);\n var arrowShape = new _shape__WEBPACK_IMPORTED_MODULE_1__[\"Path\"]({\n type: 'path',\n canvas: shape.get('canvas'),\n isArrowShape: true,\n attrs: {\n // 默认箭头的边长为 10,夹角为 60 度\n path: \"M\" + 10 * cos(PI / 6) + \",\" + 10 * sin(PI / 6) + \" L0,0 L\" + 10 * cos(PI / 6) + \",-\" + 10 * sin(PI / 6),\n // 使用 shape stroke 值\n stroke: stroke,\n lineWidth: lineWidth,\n },\n });\n arrowShape.translate(x2, y2);\n arrowShape.rotateAtPoint(x2, y2, rad);\n shape.set(isStart ? 'startArrowShape' : 'endArrowShape', arrowShape);\n}\n/**\n * 箭头 path 的设置要求\n * 1. 箭头顶点坐标需要为 (0, 0)\n * 2. 箭头夹角的中心分割线需要与 X 轴正方向对齐\n */\nfunction _addCustomizedArrow(shape, attrs, x1, y1, x2, y2, isStart) {\n var startArrow = attrs.startArrow, endArrow = attrs.endArrow, stroke = attrs.stroke, lineWidth = attrs.lineWidth;\n var arrowAttrs = isStart ? startArrow : endArrow;\n var d = arrowAttrs.d, arrowFill = arrowAttrs.fill, arrowStroke = arrowAttrs.stroke, arrowLineWidth = arrowAttrs.lineWidth, restAttrs = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(arrowAttrs, [\"d\", \"fill\", \"stroke\", \"lineWidth\"]);\n var x = x1 - x2;\n var y = y1 - y2;\n var rad = atan2(y, x);\n if (d) {\n x2 = x2 - cos(rad) * d;\n y2 = y2 - sin(rad) * d;\n }\n var arrowShape = new _shape__WEBPACK_IMPORTED_MODULE_1__[\"Path\"]({\n type: 'path',\n canvas: shape.get('canvas'),\n isArrowShape: true,\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, restAttrs), { \n // 支持单独设置箭头的 stroke 和 lineWidth,若为空则使用 shape 的值\n stroke: arrowStroke || stroke, lineWidth: arrowLineWidth || lineWidth, \n // 箭头是否填充需要手动设置,不会继承自 shape 的值\n fill: arrowFill }),\n });\n arrowShape.translate(x2, y2);\n arrowShape.rotateAtPoint(x2, y2, rad);\n shape.set(isStart ? 'startArrowShape' : 'endArrowShape', arrowShape);\n}\n/**\n * 如果自定义箭头并且有 d 需要做偏移,如果直接画,线条会超出箭头尖端,因此需要根据箭头偏移 d, 返回线需要缩短的距离\n * |----------------\n * |<|--------------\n * |\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 箭头作用点 x\n * @param {number} y2 箭头作用点 y\n * @param {number} d 箭头沿线条方向的偏移距离\n * @return {{dx: number, dy: number}} 返回线条偏移距离\n */\nfunction getShortenOffset(x1, y1, x2, y2, d) {\n var rad = atan2(y2 - y1, x2 - x1);\n return {\n dx: cos(rad) * d,\n dy: sin(rad) * d,\n };\n}\n/**\n * 绘制起始箭头\n * @param {IShape} shape 图形\n * @param {ShapeAttrs} attrs shape 的绘图属性\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 箭头作用点 x\n * @param {number} y2 箭头作用点 y\n */\nfunction addStartArrow(shape, attrs, x1, y1, x2, y2) {\n if (typeof attrs.startArrow === 'object') {\n _addCustomizedArrow(shape, attrs, x1, y1, x2, y2, true);\n }\n else if (attrs.startArrow) {\n _addDefaultArrow(shape, attrs, x1, y1, x2, y2, true);\n }\n else {\n shape.set('startArrowShape', null);\n }\n}\n/**\n * 绘制结束箭头\n * @param {IShape} shape 图形\n * @param {ShapeAttrs} attrs shape 的绘图属性\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 箭头作用点 x\n * @param {number} y2 箭头作用点 y\n */\nfunction addEndArrow(shape, attrs, x1, y1, x2, y2) {\n if (typeof attrs.endArrow === 'object') {\n _addCustomizedArrow(shape, attrs, x1, y1, x2, y2, false);\n }\n else if (attrs.endArrow) {\n _addDefaultArrow(shape, attrs, x1, y1, x2, y2, false);\n }\n else {\n shape.set('startArrowShape', null);\n }\n}\n//# sourceMappingURL=arrow.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9hcnJvdy5qcz81MzlhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF5QztBQUNUO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QiwyQ0FBSTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJJQUEySSxvREFBTTtBQUNqSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QiwyQ0FBSTtBQUM3QjtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRyxlO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLHdCQUF3QjtBQUNyQztBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLFdBQVc7QUFDdEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxXQUFXO0FBQ3RCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1jYW52YXNAMC41LjEyQEBhbnR2L2ctY2FudmFzL2VzbS91dGlsL2Fycm93LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24sIF9fcmVzdCB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgUGF0aCB9IGZyb20gJy4uL3NoYXBlJztcbnZhciBzaW4gPSBNYXRoLnNpbiwgY29zID0gTWF0aC5jb3MsIGF0YW4yID0gTWF0aC5hdGFuMiwgUEkgPSBNYXRoLlBJO1xuZnVuY3Rpb24gX2FkZERlZmF1bHRBcnJvdyhzaGFwZSwgYXR0cnMsIHgxLCB5MSwgeDIsIHkyLCBpc1N0YXJ0KSB7XG4gICAgdmFyIHN0cm9rZSA9IGF0dHJzLnN0cm9rZSwgbGluZVdpZHRoID0gYXR0cnMubGluZVdpZHRoO1xuICAgIHZhciB4ID0geDEgLSB4MjtcbiAgICB2YXIgeSA9IHkxIC0geTI7XG4gICAgdmFyIHJhZCA9IGF0YW4yKHksIHgpO1xuICAgIHZhciBhcnJvd1NoYXBlID0gbmV3IFBhdGgoe1xuICAgICAgICB0eXBlOiAncGF0aCcsXG4gICAgICAgIGNhbnZhczogc2hhcGUuZ2V0KCdjYW52YXMnKSxcbiAgICAgICAgaXNBcnJvd1NoYXBlOiB0cnVlLFxuICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgLy8g6buY6K6k566t5aS055qE6L656ZW/5Li6IDEw77yM5aS56KeS5Li6IDYwIOW6plxuICAgICAgICAgICAgcGF0aDogXCJNXCIgKyAxMCAqIGNvcyhQSSAvIDYpICsgXCIsXCIgKyAxMCAqIHNpbihQSSAvIDYpICsgXCIgTDAsMCBMXCIgKyAxMCAqIGNvcyhQSSAvIDYpICsgXCIsLVwiICsgMTAgKiBzaW4oUEkgLyA2KSxcbiAgICAgICAgICAgIC8vIOS9v+eUqCBzaGFwZSBzdHJva2Ug5YC8XG4gICAgICAgICAgICBzdHJva2U6IHN0cm9rZSxcbiAgICAgICAgICAgIGxpbmVXaWR0aDogbGluZVdpZHRoLFxuICAgICAgICB9LFxuICAgIH0pO1xuICAgIGFycm93U2hhcGUudHJhbnNsYXRlKHgyLCB5Mik7XG4gICAgYXJyb3dTaGFwZS5yb3RhdGVBdFBvaW50KHgyLCB5MiwgcmFkKTtcbiAgICBzaGFwZS5zZXQoaXNTdGFydCA/ICdzdGFydEFycm93U2hhcGUnIDogJ2VuZEFycm93U2hhcGUnLCBhcnJvd1NoYXBlKTtcbn1cbi8qKlxuICog566t5aS0IHBhdGgg55qE6K6+572u6KaB5rGCXG4gKiAxLiDnrq3lpLTpobbngrnlnZDmoIfpnIDopoHkuLogKDAsIDApXG4gKiAyLiDnrq3lpLTlpLnop5LnmoTkuK3lv4PliIblibLnur/pnIDopoHkuI4gWCDovbTmraPmlrnlkJHlr7npvZBcbiAqL1xuZnVuY3Rpb24gX2FkZEN1c3RvbWl6ZWRBcnJvdyhzaGFwZSwgYXR0cnMsIHgxLCB5MSwgeDIsIHkyLCBpc1N0YXJ0KSB7XG4gICAgdmFyIHN0YXJ0QXJyb3cgPSBhdHRycy5zdGFydEFycm93LCBlbmRBcnJvdyA9IGF0dHJzLmVuZEFycm93LCBzdHJva2UgPSBhdHRycy5zdHJva2UsIGxpbmVXaWR0aCA9IGF0dHJzLmxpbmVXaWR0aDtcbiAgICB2YXIgYXJyb3dBdHRycyA9IGlzU3RhcnQgPyBzdGFydEFycm93IDogZW5kQXJyb3c7XG4gICAgdmFyIGQgPSBhcnJvd0F0dHJzLmQsIGFycm93RmlsbCA9IGFycm93QXR0cnMuZmlsbCwgYXJyb3dTdHJva2UgPSBhcnJvd0F0dHJzLnN0cm9rZSwgYXJyb3dMaW5lV2lkdGggPSBhcnJvd0F0dHJzLmxpbmVXaWR0aCwgcmVzdEF0dHJzID0gX19yZXN0KGFycm93QXR0cnMsIFtcImRcIiwgXCJmaWxsXCIsIFwic3Ryb2tlXCIsIFwibGluZVdpZHRoXCJdKTtcbiAgICB2YXIgeCA9IHgxIC0geDI7XG4gICAgdmFyIHkgPSB5MSAtIHkyO1xuICAgIHZhciByYWQgPSBhdGFuMih5LCB4KTtcbiAgICBpZiAoZCkge1xuICAgICAgICB4MiA9IHgyIC0gY29zKHJhZCkgKiBkO1xuICAgICAgICB5MiA9IHkyIC0gc2luKHJhZCkgKiBkO1xuICAgIH1cbiAgICB2YXIgYXJyb3dTaGFwZSA9IG5ldyBQYXRoKHtcbiAgICAgICAgdHlwZTogJ3BhdGgnLFxuICAgICAgICBjYW52YXM6IHNoYXBlLmdldCgnY2FudmFzJyksXG4gICAgICAgIGlzQXJyb3dTaGFwZTogdHJ1ZSxcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCByZXN0QXR0cnMpLCB7IFxuICAgICAgICAgICAgLy8g5pSv5oyB5Y2V54us6K6+572u566t5aS055qEIHN0cm9rZSDlkowgbGluZVdpZHRo77yM6Iul5Li656m65YiZ5L2/55SoIHNoYXBlIOeahOWAvFxuICAgICAgICAgICAgc3Ryb2tlOiBhcnJvd1N0cm9rZSB8fCBzdHJva2UsIGxpbmVXaWR0aDogYXJyb3dMaW5lV2lkdGggfHwgbGluZVdpZHRoLCBcbiAgICAgICAgICAgIC8vIOeureWktOaYr+WQpuWhq+WFhemcgOimgeaJi+WKqOiuvue9ru+8jOS4jeS8mue7p+aJv+iHqiBzaGFwZSDnmoTlgLxcbiAgICAgICAgICAgIGZpbGw6IGFycm93RmlsbCB9KSxcbiAgICB9KTtcbiAgICBhcnJvd1NoYXBlLnRyYW5zbGF0ZSh4MiwgeTIpO1xuICAgIGFycm93U2hhcGUucm90YXRlQXRQb2ludCh4MiwgeTIsIHJhZCk7XG4gICAgc2hhcGUuc2V0KGlzU3RhcnQgPyAnc3RhcnRBcnJvd1NoYXBlJyA6ICdlbmRBcnJvd1NoYXBlJywgYXJyb3dTaGFwZSk7XG59XG4vKipcbiAqIOWmguaenOiHquWumuS5ieeureWktOW5tuS4lOaciSBkIOmcgOimgeWBmuWBj+enu++8jOWmguaenOebtOaOpeeUu++8jOe6v+adoeS8mui2heWHuueureWktOWwluerr++8jOWboOatpOmcgOimgeagueaNrueureWktOWBj+enuyBkLCDov5Tlm57nur/pnIDopoHnvKnnn63nmoTot53nprtcbiAqIHwtLS0tLS0tLS0tLS0tLS0tXG4gKiB8PHwtLS0tLS0tLS0tLS0tLVxuICogfFxuICogQHBhcmFtIHtudW1iZXJ9IHgxIOi1t+Wni+eCuSB4XG4gKiBAcGFyYW0ge251bWJlcn0geTEg6LW35aeL54K5IHlcbiAqIEBwYXJhbSB7bnVtYmVyfSB4MiDnrq3lpLTkvZznlKjngrkgeFxuICogQHBhcmFtIHtudW1iZXJ9IHkyIOeureWktOS9nOeUqOeCuSB5XG4gKiBAcGFyYW0ge251bWJlcn0gZCAg566t5aS05rK/57q/5p2h5pa55ZCR55qE5YGP56e76Led56a7XG4gKiBAcmV0dXJuIHt7ZHg6IG51bWJlciwgZHk6IG51bWJlcn19IOi/lOWbnue6v+adoeWBj+enu+i3neemu1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2hvcnRlbk9mZnNldCh4MSwgeTEsIHgyLCB5MiwgZCkge1xuICAgIHZhciByYWQgPSBhdGFuMih5MiAtIHkxLCB4MiAtIHgxKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBkeDogY29zKHJhZCkgKiBkLFxuICAgICAgICBkeTogc2luKHJhZCkgKiBkLFxuICAgIH07XG59XG4vKipcbiAqIOe7mOWItui1t+Wni+eureWktFxuICogQHBhcmFtIHtJU2hhcGV9IHNoYXBlIOWbvuW9olxuICogQHBhcmFtIHtTaGFwZUF0dHJzfSBhdHRycyBzaGFwZSDnmoTnu5jlm77lsZ7mgKdcbiAqIEBwYXJhbSB7bnVtYmVyfSB4MSDotbflp4vngrkgeFxuICogQHBhcmFtIHtudW1iZXJ9IHkxIOi1t+Wni+eCuSB5XG4gKiBAcGFyYW0ge251bWJlcn0geDIg566t5aS05L2c55So54K5IHhcbiAqIEBwYXJhbSB7bnVtYmVyfSB5MiDnrq3lpLTkvZznlKjngrkgeVxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkU3RhcnRBcnJvdyhzaGFwZSwgYXR0cnMsIHgxLCB5MSwgeDIsIHkyKSB7XG4gICAgaWYgKHR5cGVvZiBhdHRycy5zdGFydEFycm93ID09PSAnb2JqZWN0Jykge1xuICAgICAgICBfYWRkQ3VzdG9taXplZEFycm93KHNoYXBlLCBhdHRycywgeDEsIHkxLCB4MiwgeTIsIHRydWUpO1xuICAgIH1cbiAgICBlbHNlIGlmIChhdHRycy5zdGFydEFycm93KSB7XG4gICAgICAgIF9hZGREZWZhdWx0QXJyb3coc2hhcGUsIGF0dHJzLCB4MSwgeTEsIHgyLCB5MiwgdHJ1ZSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBzaGFwZS5zZXQoJ3N0YXJ0QXJyb3dTaGFwZScsIG51bGwpO1xuICAgIH1cbn1cbi8qKlxuICog57uY5Yi257uT5p2f566t5aS0XG4gKiBAcGFyYW0ge0lTaGFwZX0gc2hhcGUg5Zu+5b2iXG4gKiBAcGFyYW0ge1NoYXBlQXR0cnN9IGF0dHJzIHNoYXBlIOeahOe7mOWbvuWxnuaAp1xuICogQHBhcmFtIHtudW1iZXJ9IHgxIOi1t+Wni+eCuSB4XG4gKiBAcGFyYW0ge251bWJlcn0geTEg6LW35aeL54K5IHlcbiAqIEBwYXJhbSB7bnVtYmVyfSB4MiDnrq3lpLTkvZznlKjngrkgeFxuICogQHBhcmFtIHtudW1iZXJ9IHkyIOeureWktOS9nOeUqOeCuSB5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRFbmRBcnJvdyhzaGFwZSwgYXR0cnMsIHgxLCB5MSwgeDIsIHkyKSB7XG4gICAgaWYgKHR5cGVvZiBhdHRycy5lbmRBcnJvdyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgX2FkZEN1c3RvbWl6ZWRBcnJvdyhzaGFwZSwgYXR0cnMsIHgxLCB5MSwgeDIsIHkyLCBmYWxzZSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGF0dHJzLmVuZEFycm93KSB7XG4gICAgICAgIF9hZGREZWZhdWx0QXJyb3coc2hhcGUsIGF0dHJzLCB4MSwgeTEsIHgyLCB5MiwgZmFsc2UpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgc2hhcGUuc2V0KCdzdGFydEFycm93U2hhcGUnLCBudWxsKTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1hcnJvdy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/arrow.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/draw.js":
/*!*****************************************************************************!*\
!*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/draw.js ***!
\*****************************************************************************/
/*! exports provided: applyAttrsToContext, drawChildren, checkRefresh, checkChildrenRefresh, clearChanged, drawPath, refreshElement, getRefreshRegion, getMergedRegion, mergeView */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"applyAttrsToContext\", function() { return applyAttrsToContext; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawChildren\", function() { return drawChildren; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"checkRefresh\", function() { return checkRefresh; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"checkChildrenRefresh\", function() { return checkChildrenRefresh; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clearChanged\", function() { return clearChanged; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawPath\", function() { return drawPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"refreshElement\", function() { return refreshElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRefreshRegion\", function() { return getRefreshRegion; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getMergedRegion\", function() { return getMergedRegion; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeView\", function() { return mergeView; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _parse__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./parse */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/parse.js\");\n/* harmony import */ var _arc_params__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./arc-params */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/arc-params.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/util.js\");\n/* harmony import */ var _util_arrow__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/arrow */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/arrow.js\");\n\n\n\n\n\nvar SHAPE_ATTRS_MAP = {\n fill: 'fillStyle',\n stroke: 'strokeStyle',\n opacity: 'globalAlpha',\n};\nfunction applyAttrsToContext(context, element) {\n var attrs = element.attr();\n for (var k in attrs) {\n var v = attrs[k];\n // 转换一下不与 canvas 兼容的属性名\n var name_1 = SHAPE_ATTRS_MAP[k] ? SHAPE_ATTRS_MAP[k] : k;\n if (name_1 === 'matrix' && v) {\n // 设置矩阵\n context.transform(v[0], v[1], v[3], v[4], v[6], v[7]);\n }\n else if (name_1 === 'lineDash' && context.setLineDash) {\n // 设置虚线,只支持数组形式,非数组形式不做任何操作\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(v) && context.setLineDash(v);\n }\n else {\n if (name_1 === 'strokeStyle' || name_1 === 'fillStyle') {\n // 如果存在渐变、pattern 这个开销有些大\n // 可以考虑缓存机制,通过 hasUpdate 来避免一些运算\n v = Object(_parse__WEBPACK_IMPORTED_MODULE_1__[\"parseStyle\"])(context, element, v);\n }\n else if (name_1 === 'globalAlpha') {\n // opacity 效果可以叠加,子元素的 opacity 需要与父元素 opacity 相乘\n v = v * context.globalAlpha;\n }\n context[name_1] = v;\n }\n }\n}\nfunction drawChildren(context, children, region) {\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n if (child.cfg.visible) {\n child.draw(context, region);\n }\n else {\n child.skipDraw();\n }\n }\n}\n// 这个地方的逻辑比较复杂,简单画了一张图:https://www.yuque.com/antv/ou292n/pcgt5g#OW1QE\nfunction checkRefresh(canvas, children, region) {\n var refreshElements = canvas.get('refreshElements');\n // 先遍历需要刷新的元素,将这些元素的父元素也设置 refresh\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(refreshElements, function (el) {\n if (el !== canvas) {\n var parent_1 = el.cfg.parent;\n while (parent_1 && parent_1 !== canvas && !parent_1.cfg.refresh) {\n parent_1.cfg.refresh = true;\n parent_1 = parent_1.cfg.parent;\n }\n }\n });\n if (refreshElements[0] === canvas) {\n setChildrenRefresh(children, region);\n }\n else {\n // 检查所有子元素是否可以刷新\n checkChildrenRefresh(children, region);\n }\n}\n// 检查所有的子元素是否应该更新\nfunction checkChildrenRefresh(children, region) {\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n if (child.cfg.visible) {\n // 先判断 hasChanged,因为它的优先级判断应该高于 refresh\n if (child.cfg.hasChanged) {\n // 如果节点发生了 change,则需要级联设置子元素的 refresh\n child.cfg.refresh = true;\n if (child.isGroup()) {\n setChildrenRefresh(child.cfg.children, region);\n }\n }\n else if (child.cfg.refresh) {\n // 如果当前图形/分组 refresh = true,说明其子节点存在 changed\n if (child.isGroup()) {\n checkChildrenRefresh(child.cfg.children, region);\n }\n }\n else {\n // 这个分支说明此次局部刷新,所有的节点和父元素没有发生变化,仅需要检查包围盒(缓存)是否相交即可\n var refresh = checkElementRefresh(child, region);\n child.cfg.refresh = refresh;\n if (refresh && child.isGroup()) {\n // 如果需要刷新,说明子元素也需要刷新,继续进行判定\n checkChildrenRefresh(child.cfg.children, region);\n }\n }\n }\n }\n}\n// 由于对改变的图形放入 refreshElements 时做了优化,判定父元素 changed 时不加入\n// 那么有可能会出现 elements 都为空,所以最终 group\nfunction clearChanged(elements) {\n for (var i = 0; i < elements.length; i++) {\n var el = elements[i];\n el.cfg.hasChanged = false;\n // 级联清理\n if (el.isGroup() && !el.destroyed) {\n clearChanged(el.cfg.children);\n }\n }\n}\n// 当某个父元素发生改变时,调用这个方法级联设置 refresh\nfunction setChildrenRefresh(children, region) {\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n // let refresh = true;\n // 获取缓存的 bbox,如果这个 bbox 还存在则说明父元素不是矩阵发生了改变\n // const bbox = child.cfg.canvasBBox;\n // if (bbox) {\n // // 如果这时候\n // refresh = intersectRect(bbox, region);\n // }\n child.cfg.refresh = true;\n // 如果需要刷新当前节点,所有的子元素设置 refresh\n if (child.isGroup()) {\n setChildrenRefresh(child.get('children'), region);\n }\n }\n}\nfunction checkElementRefresh(shape, region) {\n var bbox = shape.cfg.cacheCanvasBBox;\n var isAllow = shape.cfg.isInView && bbox && Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"intersectRect\"])(bbox, region);\n return isAllow;\n}\n// 绘制 path\nfunction drawPath(shape, context, attrs, arcParamsCache) {\n var path = attrs.path, startArrow = attrs.startArrow, endArrow = attrs.endArrow;\n if (!path) {\n return;\n }\n var currentPoint = [0, 0]; // 当前图形\n var startMovePoint = [0, 0]; // 开始 M 的点,可能会有多个\n var distance = {\n dx: 0,\n dy: 0,\n };\n context.beginPath();\n for (var i = 0; i < path.length; i++) {\n var params = path[i];\n var command = params[0];\n if (i === 0 && startArrow && startArrow.d) {\n var tangent = shape.getStartTangent();\n distance = _util_arrow__WEBPACK_IMPORTED_MODULE_4__[\"getShortenOffset\"](tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1], startArrow.d);\n }\n else if (i === path.length - 2 && path[i + 1][0] === 'Z' && endArrow && endArrow.d) {\n // 为了防止结尾为 Z 的 segment 缩短不起效,需要取最后两个 segment 特殊处理\n var lastPath = path[i + 1];\n if (lastPath[0] === 'Z') {\n var tangent = shape.getEndTangent();\n distance = _util_arrow__WEBPACK_IMPORTED_MODULE_4__[\"getShortenOffset\"](tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1], endArrow.d);\n }\n }\n else if (i === path.length - 1 && endArrow && endArrow.d) {\n if (path[0] !== 'Z') {\n var tangent = shape.getEndTangent();\n distance = _util_arrow__WEBPACK_IMPORTED_MODULE_4__[\"getShortenOffset\"](tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1], endArrow.d);\n }\n }\n var dx = distance.dx, dy = distance.dy;\n // V,H,S,T 都在前面被转换成标准形式\n switch (command) {\n case 'M':\n context.moveTo(params[1] - dx, params[2] - dy);\n startMovePoint = [params[1], params[2]];\n break;\n case 'L':\n context.lineTo(params[1] - dx, params[2] - dy);\n break;\n case 'Q':\n context.quadraticCurveTo(params[1], params[2], params[3] - dx, params[4] - dy);\n break;\n case 'C':\n context.bezierCurveTo(params[1], params[2], params[3], params[4], params[5] - dx, params[6] - dy);\n break;\n case 'A': {\n var arcParams = void 0;\n // 为了加速绘制,可以提供参数的缓存,各个图形自己缓存\n if (arcParamsCache) {\n arcParams = arcParamsCache[i];\n if (!arcParams) {\n arcParams = Object(_arc_params__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(currentPoint, params);\n arcParamsCache[i] = arcParams;\n }\n }\n else {\n arcParams = Object(_arc_params__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(currentPoint, params);\n }\n var cx = arcParams.cx, cy = arcParams.cy, rx = arcParams.rx, ry = arcParams.ry, startAngle = arcParams.startAngle, endAngle = arcParams.endAngle, xRotation = arcParams.xRotation, sweepFlag = arcParams.sweepFlag;\n // 直接使用椭圆的 api\n if (context.ellipse) {\n context.ellipse(cx, cy, rx, ry, xRotation, startAngle, endAngle, 1 - sweepFlag);\n }\n else {\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n context.translate(cx, cy);\n context.rotate(xRotation);\n context.scale(scaleX, scaleY);\n context.arc(0, 0, r, startAngle, endAngle, 1 - sweepFlag);\n context.scale(1 / scaleX, 1 / scaleY);\n context.rotate(-xRotation);\n context.translate(-cx, -cy);\n }\n break;\n }\n case 'Z':\n context.closePath();\n break;\n default:\n break;\n }\n // 有了 Z 后,当前节点从开始 M 的点开始\n if (command === 'Z') {\n currentPoint = startMovePoint;\n }\n else {\n var len = params.length;\n currentPoint = [params[len - 2], params[len - 1]];\n }\n }\n}\n// 刷新图形元素(Shape 或者 Group)\nfunction refreshElement(element, changeType) {\n var canvas = element.get('canvas');\n // 只有存在于 canvas 上时生效\n if (canvas) {\n if (changeType === 'remove') {\n // 一旦 remove,则无法在 element 上拿到包围盒\n // destroy 后所有属性都拿不到,所以需要暂存一下\n // 这是一段 hack 的代码\n element._cacheCanvasBBox = element.get('cacheCanvasBBox');\n }\n // 防止反复刷新\n if (!element.get('hasChanged')) {\n // 但是始终要标记为 hasChanged,便于后面进行局部渲染\n element.set('hasChanged', true);\n // 本来只有局部渲染模式下,才需要记录更新的元素队列\n // if (canvas.get('localRefresh')) {\n // canvas.refreshElement(element, changeType, canvas);\n // }\n // 但对于 https://github.com/antvis/g/issues/422 的场景,全局渲染的模式下也需要记录更新的元素队列\n // 如果当前元素的父元素发生了改变,可以不放入队列,这句话大概能够提升 15% 的初次渲染性能\n if (!(element.cfg.parent && element.cfg.parent.get('hasChanged'))) {\n canvas.refreshElement(element, changeType, canvas);\n if (canvas.get('autoDraw')) {\n canvas.draw();\n }\n }\n }\n }\n}\nfunction getRefreshRegion(element) {\n var region;\n if (!element.destroyed) {\n var cacheBox = element.get('cacheCanvasBBox');\n var validCache = cacheBox && !!(cacheBox.width && cacheBox.height);\n var bbox = element.getCanvasBBox();\n var validBBox = bbox && !!(bbox.width && bbox.height);\n // 是否是有效 bbox 判定,一些 NaN 或者 宽高为 0 的情况过滤掉\n if (validCache && validBBox) {\n region = Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"mergeRegion\"])(cacheBox, bbox);\n }\n else if (validCache) {\n region = cacheBox;\n }\n else if (validBBox) {\n region = bbox;\n }\n }\n else {\n // 因为元素已经销毁所以无法获取到缓存的包围盒\n region = element['_cacheCanvasBBox'];\n }\n return region;\n}\nfunction getMergedRegion(elements) {\n if (!elements.length) {\n return null;\n }\n var minXArr = [];\n var minYArr = [];\n var maxXArr = [];\n var maxYArr = [];\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(elements, function (el) {\n var region = getRefreshRegion(el);\n if (region) {\n minXArr.push(region.minX);\n minYArr.push(region.minY);\n maxXArr.push(region.maxX);\n maxYArr.push(region.maxY);\n }\n });\n return {\n minX: Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"min\"])(minXArr),\n minY: Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"min\"])(minYArr),\n maxX: Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"max\"])(maxXArr),\n maxY: Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"max\"])(maxYArr),\n };\n}\nfunction mergeView(region, viewRegion) {\n if (!region || !viewRegion) {\n return null;\n }\n // 不相交,则直接返回 null\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_3__[\"intersectRect\"])(region, viewRegion)) {\n return null;\n }\n return {\n minX: Math.max(region.minX, viewRegion.minX),\n minY: Math.max(region.minY, viewRegion.minY),\n maxX: Math.min(region.maxX, viewRegion.maxX),\n maxY: Math.min(region.maxY, viewRegion.maxY),\n };\n}\n//# sourceMappingURL=draw.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9kcmF3LmpzP2MzOTkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBcUQ7QUFDaEI7QUFDRztBQUNZO0FBQ1Q7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksMERBQU87QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQix5REFBVTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQLG1CQUFtQixxQkFBcUI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCxtQkFBbUIscUJBQXFCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1AsbUJBQW1CLHFCQUFxQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixxQkFBcUI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdEQUFnRCwyREFBYTtBQUM3RDtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCLGdDQUFnQztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGlCQUFpQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qiw0REFBMEI7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLDREQUEwQjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLDREQUEwQjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsMkRBQVk7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsMkRBQVk7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLHlEQUFXO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx1REFBSTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsY0FBYyxzREFBRztBQUNqQixjQUFjLHNEQUFHO0FBQ2pCLGNBQWMsc0RBQUc7QUFDakIsY0FBYyxzREFBRztBQUNqQjtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsMkRBQWE7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9kcmF3LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZWFjaCwgaXNBcnJheSwgbWF4LCBtaW4gfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IHBhcnNlU3R5bGUgfSBmcm9tICcuL3BhcnNlJztcbmltcG9ydCBnZXRBcmNQYXJhbXMgZnJvbSAnLi9hcmMtcGFyYW1zJztcbmltcG9ydCB7IG1lcmdlUmVnaW9uLCBpbnRlcnNlY3RSZWN0IH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCAqIGFzIEFycm93VXRpbCBmcm9tICcuLi91dGlsL2Fycm93JztcbnZhciBTSEFQRV9BVFRSU19NQVAgPSB7XG4gICAgZmlsbDogJ2ZpbGxTdHlsZScsXG4gICAgc3Ryb2tlOiAnc3Ryb2tlU3R5bGUnLFxuICAgIG9wYWNpdHk6ICdnbG9iYWxBbHBoYScsXG59O1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5QXR0cnNUb0NvbnRleHQoY29udGV4dCwgZWxlbWVudCkge1xuICAgIHZhciBhdHRycyA9IGVsZW1lbnQuYXR0cigpO1xuICAgIGZvciAodmFyIGsgaW4gYXR0cnMpIHtcbiAgICAgICAgdmFyIHYgPSBhdHRyc1trXTtcbiAgICAgICAgLy8g6L2s5o2i5LiA5LiL5LiN5LiOIGNhbnZhcyDlhbzlrrnnmoTlsZ7mgKflkI1cbiAgICAgICAgdmFyIG5hbWVfMSA9IFNIQVBFX0FUVFJTX01BUFtrXSA/IFNIQVBFX0FUVFJTX01BUFtrXSA6IGs7XG4gICAgICAgIGlmIChuYW1lXzEgPT09ICdtYXRyaXgnICYmIHYpIHtcbiAgICAgICAgICAgIC8vIOiuvue9ruefqemYtVxuICAgICAgICAgICAgY29udGV4dC50cmFuc2Zvcm0odlswXSwgdlsxXSwgdlszXSwgdls0XSwgdls2XSwgdls3XSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobmFtZV8xID09PSAnbGluZURhc2gnICYmIGNvbnRleHQuc2V0TGluZURhc2gpIHtcbiAgICAgICAgICAgIC8vIOiuvue9ruiZmue6v++8jOWPquaUr+aMgeaVsOe7hOW9ouW8j++8jOmdnuaVsOe7hOW9ouW8j+S4jeWBmuS7u+S9leaTjeS9nFxuICAgICAgICAgICAgaXNBcnJheSh2KSAmJiBjb250ZXh0LnNldExpbmVEYXNoKHYpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKG5hbWVfMSA9PT0gJ3N0cm9rZVN0eWxlJyB8fCBuYW1lXzEgPT09ICdmaWxsU3R5bGUnKSB7XG4gICAgICAgICAgICAgICAgLy8g5aaC5p6c5a2Y5Zyo5riQ5Y+Y44CBcGF0dGVybiDov5nkuKrlvIDplIDmnInkupvlpKdcbiAgICAgICAgICAgICAgICAvLyDlj6/ku6XogIPomZHnvJPlrZjmnLrliLbvvIzpgJrov4cgaGFzVXBkYXRlIOadpemBv+WFjeS4gOS6m+i/kOeul1xuICAgICAgICAgICAgICAgIHYgPSBwYXJzZVN0eWxlKGNvbnRleHQsIGVsZW1lbnQsIHYpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAobmFtZV8xID09PSAnZ2xvYmFsQWxwaGEnKSB7XG4gICAgICAgICAgICAgICAgLy8gb3BhY2l0eSDmlYjmnpzlj6/ku6Xlj6DliqDvvIzlrZDlhYPntKDnmoQgb3BhY2l0eSDpnIDopoHkuI7niLblhYPntKAgb3BhY2l0eSDnm7jkuZhcbiAgICAgICAgICAgICAgICB2ID0gdiAqIGNvbnRleHQuZ2xvYmFsQWxwaGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb250ZXh0W25hbWVfMV0gPSB2O1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIGRyYXdDaGlsZHJlbihjb250ZXh0LCBjaGlsZHJlbiwgcmVnaW9uKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXTtcbiAgICAgICAgaWYgKGNoaWxkLmNmZy52aXNpYmxlKSB7XG4gICAgICAgICAgICBjaGlsZC5kcmF3KGNvbnRleHQsIHJlZ2lvbik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjaGlsZC5za2lwRHJhdygpO1xuICAgICAgICB9XG4gICAgfVxufVxuLy8g6L+Z5Liq5Zyw5pa555qE6YC76L6R5q+U6L6D5aSN5p2C77yM566A5Y2V55S75LqG5LiA5byg5Zu+77yaaHR0cHM6Ly93d3cueXVxdWUuY29tL2FudHYvb3UyOTJuL3BjZ3Q1ZyNPVzFRRVxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrUmVmcmVzaChjYW52YXMsIGNoaWxkcmVuLCByZWdpb24pIHtcbiAgICB2YXIgcmVmcmVzaEVsZW1lbnRzID0gY2FudmFzLmdldCgncmVmcmVzaEVsZW1lbnRzJyk7XG4gICAgLy8g5YWI6YGN5Y6G6ZyA6KaB5Yi35paw55qE5YWD57Sg77yM5bCG6L+Z5Lqb5YWD57Sg55qE54i25YWD57Sg5Lmf6K6+572uIHJlZnJlc2hcbiAgICBlYWNoKHJlZnJlc2hFbGVtZW50cywgZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgIGlmIChlbCAhPT0gY2FudmFzKSB7XG4gICAgICAgICAgICB2YXIgcGFyZW50XzEgPSBlbC5jZmcucGFyZW50O1xuICAgICAgICAgICAgd2hpbGUgKHBhcmVudF8xICYmIHBhcmVudF8xICE9PSBjYW52YXMgJiYgIXBhcmVudF8xLmNmZy5yZWZyZXNoKSB7XG4gICAgICAgICAgICAgICAgcGFyZW50XzEuY2ZnLnJlZnJlc2ggPSB0cnVlO1xuICAgICAgICAgICAgICAgIHBhcmVudF8xID0gcGFyZW50XzEuY2ZnLnBhcmVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChyZWZyZXNoRWxlbWVudHNbMF0gPT09IGNhbnZhcykge1xuICAgICAgICBzZXRDaGlsZHJlblJlZnJlc2goY2hpbGRyZW4sIHJlZ2lvbik7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICAvLyDmo4Dmn6XmiYDmnInlrZDlhYPntKDmmK/lkKblj6/ku6XliLfmlrBcbiAgICAgICAgY2hlY2tDaGlsZHJlblJlZnJlc2goY2hpbGRyZW4sIHJlZ2lvbik7XG4gICAgfVxufVxuLy8g5qOA5p+l5omA5pyJ55qE5a2Q5YWD57Sg5piv5ZCm5bqU6K+l5pu05pawXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tDaGlsZHJlblJlZnJlc2goY2hpbGRyZW4sIHJlZ2lvbikge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5baV07XG4gICAgICAgIGlmIChjaGlsZC5jZmcudmlzaWJsZSkge1xuICAgICAgICAgICAgLy8g5YWI5Yik5patIGhhc0NoYW5nZWTvvIzlm6DkuLrlroPnmoTkvJjlhYjnuqfliKTmlq3lupTor6Xpq5jkuo4gcmVmcmVzaFxuICAgICAgICAgICAgaWYgKGNoaWxkLmNmZy5oYXNDaGFuZ2VkKSB7XG4gICAgICAgICAgICAgICAgLy8g5aaC5p6c6IqC54K55Y+R55Sf5LqGIGNoYW5nZe+8jOWImemcgOimgee6p+iBlOiuvue9ruWtkOWFg+e0oOeahCByZWZyZXNoXG4gICAgICAgICAgICAgICAgY2hpbGQuY2ZnLnJlZnJlc2ggPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChjaGlsZC5pc0dyb3VwKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0Q2hpbGRyZW5SZWZyZXNoKGNoaWxkLmNmZy5jaGlsZHJlbiwgcmVnaW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGlsZC5jZmcucmVmcmVzaCkge1xuICAgICAgICAgICAgICAgIC8vIOWmguaenOW9k+WJjeWbvuW9oi/liIbnu4QgcmVmcmVzaCA9IHRydWXvvIzor7TmmI7lhbblrZDoioLngrnlrZjlnKggY2hhbmdlZFxuICAgICAgICAgICAgICAgIGlmIChjaGlsZC5pc0dyb3VwKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tDaGlsZHJlblJlZnJlc2goY2hpbGQuY2ZnLmNoaWxkcmVuLCByZWdpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIOi/meS4quWIhuaUr+ivtOaYjuatpOasoeWxgOmDqOWIt+aWsO+8jOaJgOacieeahOiKgueCueWSjOeItuWFg+e0oOayoeacieWPkeeUn+WPmOWMlu+8jOS7hemcgOimgeajgOafpeWMheWbtOebku+8iOe8k+WtmO+8ieaYr+WQpuebuOS6pOWNs+WPr1xuICAgICAgICAgICAgICAgIHZhciByZWZyZXNoID0gY2hlY2tFbGVtZW50UmVmcmVzaChjaGlsZCwgcmVnaW9uKTtcbiAgICAgICAgICAgICAgICBjaGlsZC5jZmcucmVmcmVzaCA9IHJlZnJlc2g7XG4gICAgICAgICAgICAgICAgaWYgKHJlZnJlc2ggJiYgY2hpbGQuaXNHcm91cCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIOWmguaenOmcgOimgeWIt+aWsO+8jOivtOaYjuWtkOWFg+e0oOS5n+mcgOimgeWIt+aWsO+8jOe7p+e7rei/m+ihjOWIpOWumlxuICAgICAgICAgICAgICAgICAgICBjaGVja0NoaWxkcmVuUmVmcmVzaChjaGlsZC5jZmcuY2hpbGRyZW4sIHJlZ2lvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuLy8g55Sx5LqO5a+55pS55Y+Y55qE5Zu+5b2i5pS+5YWlIHJlZnJlc2hFbGVtZW50cyDml7blgZrkuobkvJjljJbvvIzliKTlrprniLblhYPntKAgY2hhbmdlZCDml7bkuI3liqDlhaVcbi8vIOmCo+S5iOacieWPr+iDveS8muWHuueOsCBlbGVtZW50cyDpg73kuLrnqbrvvIzmiYDku6XmnIDnu4ggZ3JvdXBcbmV4cG9ydCBmdW5jdGlvbiBjbGVhckNoYW5nZWQoZWxlbWVudHMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBlbCA9IGVsZW1lbnRzW2ldO1xuICAgICAgICBlbC5jZmcuaGFzQ2hhbmdlZCA9IGZhbHNlO1xuICAgICAgICAvLyDnuqfogZTmuIXnkIZcbiAgICAgICAgaWYgKGVsLmlzR3JvdXAoKSAmJiAhZWwuZGVzdHJveWVkKSB7XG4gICAgICAgICAgICBjbGVhckNoYW5nZWQoZWwuY2ZnLmNoaWxkcmVuKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbi8vIOW9k+afkOS4queItuWFg+e0oOWPkeeUn+aUueWPmOaXtu+8jOiwg+eUqOi/meS4quaWueazlee6p+iBlOiuvue9riByZWZyZXNoXG5mdW5jdGlvbiBzZXRDaGlsZHJlblJlZnJlc2goY2hpbGRyZW4sIHJlZ2lvbikge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5baV07XG4gICAgICAgIC8vIGxldCByZWZyZXNoID0gdHJ1ZTtcbiAgICAgICAgLy8g6I635Y+W57yT5a2Y55qEIGJib3jvvIzlpoLmnpzov5nkuKogYmJveCDov5jlrZjlnKjliJnor7TmmI7niLblhYPntKDkuI3mmK/nn6npmLXlj5HnlJ/kuobmlLnlj5hcbiAgICAgICAgLy8gY29uc3QgYmJveCA9IGNoaWxkLmNmZy5jYW52YXNCQm94O1xuICAgICAgICAvLyBpZiAoYmJveCkge1xuICAgICAgICAvLyAgIC8vIOWmguaenOi/meaXtuWAmVxuICAgICAgICAvLyAgIHJlZnJlc2ggPSBpbnRlcnNlY3RSZWN0KGJib3gsIHJlZ2lvbik7XG4gICAgICAgIC8vIH1cbiAgICAgICAgY2hpbGQuY2ZnLnJlZnJlc2ggPSB0cnVlO1xuICAgICAgICAvLyDlpoLmnpzpnIDopoHliLfmlrDlvZPliY3oioLngrnvvIzmiYDmnInnmoTlrZDlhYPntKDorr7nva4gcmVmcmVzaFxuICAgICAgICBpZiAoY2hpbGQuaXNHcm91cCgpKSB7XG4gICAgICAgICAgICBzZXRDaGlsZHJlblJlZnJlc2goY2hpbGQuZ2V0KCdjaGlsZHJlbicpLCByZWdpb24pO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gY2hlY2tFbGVtZW50UmVmcmVzaChzaGFwZSwgcmVnaW9uKSB7XG4gICAgdmFyIGJib3ggPSBzaGFwZS5jZmcuY2FjaGVDYW52YXNCQm94O1xuICAgIHZhciBpc0FsbG93ID0gc2hhcGUuY2ZnLmlzSW5WaWV3ICYmIGJib3ggJiYgaW50ZXJzZWN0UmVjdChiYm94LCByZWdpb24pO1xuICAgIHJldHVybiBpc0FsbG93O1xufVxuLy8g57uY5Yi2IHBhdGhcbmV4cG9ydCBmdW5jdGlvbiBkcmF3UGF0aChzaGFwZSwgY29udGV4dCwgYXR0cnMsIGFyY1BhcmFtc0NhY2hlKSB7XG4gICAgdmFyIHBhdGggPSBhdHRycy5wYXRoLCBzdGFydEFycm93ID0gYXR0cnMuc3RhcnRBcnJvdywgZW5kQXJyb3cgPSBhdHRycy5lbmRBcnJvdztcbiAgICBpZiAoIXBhdGgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgY3VycmVudFBvaW50ID0gWzAsIDBdOyAvLyDlvZPliY3lm77lvaJcbiAgICB2YXIgc3RhcnRNb3ZlUG9pbnQgPSBbMCwgMF07IC8vIOW8gOWniyBNIOeahOeCue+8jOWPr+iDveS8muacieWkmuS4qlxuICAgIHZhciBkaXN0YW5jZSA9IHtcbiAgICAgICAgZHg6IDAsXG4gICAgICAgIGR5OiAwLFxuICAgIH07XG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhdGgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHBhcmFtcyA9IHBhdGhbaV07XG4gICAgICAgIHZhciBjb21tYW5kID0gcGFyYW1zWzBdO1xuICAgICAgICBpZiAoaSA9PT0gMCAmJiBzdGFydEFycm93ICYmIHN0YXJ0QXJyb3cuZCkge1xuICAgICAgICAgICAgdmFyIHRhbmdlbnQgPSBzaGFwZS5nZXRTdGFydFRhbmdlbnQoKTtcbiAgICAgICAgICAgIGRpc3RhbmNlID0gQXJyb3dVdGlsLmdldFNob3J0ZW5PZmZzZXQodGFuZ2VudFswXVswXSwgdGFuZ2VudFswXVsxXSwgdGFuZ2VudFsxXVswXSwgdGFuZ2VudFsxXVsxXSwgc3RhcnRBcnJvdy5kKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpID09PSBwYXRoLmxlbmd0aCAtIDIgJiYgcGF0aFtpICsgMV1bMF0gPT09ICdaJyAmJiBlbmRBcnJvdyAmJiBlbmRBcnJvdy5kKSB7XG4gICAgICAgICAgICAvLyDkuLrkuobpmLLmraLnu5PlsL7kuLogWiDnmoQgc2VnbWVudCDnvKnnn63kuI3otbfmlYjvvIzpnIDopoHlj5bmnIDlkI7kuKTkuKogc2VnbWVudCDnibnmrorlpITnkIZcbiAgICAgICAgICAgIHZhciBsYXN0UGF0aCA9IHBhdGhbaSArIDFdO1xuICAgICAgICAgICAgaWYgKGxhc3RQYXRoWzBdID09PSAnWicpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFuZ2VudCA9IHNoYXBlLmdldEVuZFRhbmdlbnQoKTtcbiAgICAgICAgICAgICAgICBkaXN0YW5jZSA9IEFycm93VXRpbC5nZXRTaG9ydGVuT2Zmc2V0KHRhbmdlbnRbMF1bMF0sIHRhbmdlbnRbMF1bMV0sIHRhbmdlbnRbMV1bMF0sIHRhbmdlbnRbMV1bMV0sIGVuZEFycm93LmQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGkgPT09IHBhdGgubGVuZ3RoIC0gMSAmJiBlbmRBcnJvdyAmJiBlbmRBcnJvdy5kKSB7XG4gICAgICAgICAgICBpZiAocGF0aFswXSAhPT0gJ1onKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhbmdlbnQgPSBzaGFwZS5nZXRFbmRUYW5nZW50KCk7XG4gICAgICAgICAgICAgICAgZGlzdGFuY2UgPSBBcnJvd1V0aWwuZ2V0U2hvcnRlbk9mZnNldCh0YW5nZW50WzBdWzBdLCB0YW5nZW50WzBdWzFdLCB0YW5nZW50WzFdWzBdLCB0YW5nZW50WzFdWzFdLCBlbmRBcnJvdy5kKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgZHggPSBkaXN0YW5jZS5keCwgZHkgPSBkaXN0YW5jZS5keTtcbiAgICAgICAgLy8gVixILFMsVCDpg73lnKjliY3pnaLooqvovazmjaLmiJDmoIflh4blvaLlvI9cbiAgICAgICAgc3dpdGNoIChjb21tYW5kKSB7XG4gICAgICAgICAgICBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhwYXJhbXNbMV0gLSBkeCwgcGFyYW1zWzJdIC0gZHkpO1xuICAgICAgICAgICAgICAgIHN0YXJ0TW92ZVBvaW50ID0gW3BhcmFtc1sxXSwgcGFyYW1zWzJdXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0wnOlxuICAgICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHBhcmFtc1sxXSAtIGR4LCBwYXJhbXNbMl0gLSBkeSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdRJzpcbiAgICAgICAgICAgICAgICBjb250ZXh0LnF1YWRyYXRpY0N1cnZlVG8ocGFyYW1zWzFdLCBwYXJhbXNbMl0sIHBhcmFtc1szXSAtIGR4LCBwYXJhbXNbNF0gLSBkeSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdDJzpcbiAgICAgICAgICAgICAgICBjb250ZXh0LmJlemllckN1cnZlVG8ocGFyYW1zWzFdLCBwYXJhbXNbMl0sIHBhcmFtc1szXSwgcGFyYW1zWzRdLCBwYXJhbXNbNV0gLSBkeCwgcGFyYW1zWzZdIC0gZHkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQSc6IHtcbiAgICAgICAgICAgICAgICB2YXIgYXJjUGFyYW1zID0gdm9pZCAwO1xuICAgICAgICAgICAgICAgIC8vIOS4uuS6huWKoOmAn+e7mOWItu+8jOWPr+S7peaPkOS+m+WPguaVsOeahOe8k+WtmO+8jOWQhOS4quWbvuW9ouiHquW3see8k+WtmFxuICAgICAgICAgICAgICAgIGlmIChhcmNQYXJhbXNDYWNoZSkge1xuICAgICAgICAgICAgICAgICAgICBhcmNQYXJhbXMgPSBhcmNQYXJhbXNDYWNoZVtpXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFhcmNQYXJhbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyY1BhcmFtcyA9IGdldEFyY1BhcmFtcyhjdXJyZW50UG9pbnQsIHBhcmFtcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmNQYXJhbXNDYWNoZVtpXSA9IGFyY1BhcmFtcztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYXJjUGFyYW1zID0gZ2V0QXJjUGFyYW1zKGN1cnJlbnRQb2ludCwgcGFyYW1zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIGN4ID0gYXJjUGFyYW1zLmN4LCBjeSA9IGFyY1BhcmFtcy5jeSwgcnggPSBhcmNQYXJhbXMucngsIHJ5ID0gYXJjUGFyYW1zLnJ5LCBzdGFydEFuZ2xlID0gYXJjUGFyYW1zLnN0YXJ0QW5nbGUsIGVuZEFuZ2xlID0gYXJjUGFyYW1zLmVuZEFuZ2xlLCB4Um90YXRpb24gPSBhcmNQYXJhbXMueFJvdGF0aW9uLCBzd2VlcEZsYWcgPSBhcmNQYXJhbXMuc3dlZXBGbGFnO1xuICAgICAgICAgICAgICAgIC8vIOebtOaOpeS9v+eUqOakreWchueahCBhcGlcbiAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5lbGxpcHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZWxsaXBzZShjeCwgY3ksIHJ4LCByeSwgeFJvdGF0aW9uLCBzdGFydEFuZ2xlLCBlbmRBbmdsZSwgMSAtIHN3ZWVwRmxhZyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHJ4ID4gcnkgPyByeCA6IHJ5O1xuICAgICAgICAgICAgICAgICAgICB2YXIgc2NhbGVYID0gcnggPiByeSA/IDEgOiByeCAvIHJ5O1xuICAgICAgICAgICAgICAgICAgICB2YXIgc2NhbGVZID0gcnggPiByeSA/IHJ5IC8gcnggOiAxO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShjeCwgY3kpO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnJvdGF0ZSh4Um90YXRpb24pO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnNjYWxlKHNjYWxlWCwgc2NhbGVZKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5hcmMoMCwgMCwgciwgc3RhcnRBbmdsZSwgZW5kQW5nbGUsIDEgLSBzd2VlcEZsYWcpO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnNjYWxlKDEgLyBzY2FsZVgsIDEgLyBzY2FsZVkpO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnJvdGF0ZSgteFJvdGF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoLWN4LCAtY3kpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ1onOlxuICAgICAgICAgICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIC8vIOacieS6hiBaIOWQju+8jOW9k+WJjeiKgueCueS7juW8gOWniyBNIOeahOeCueW8gOWni1xuICAgICAgICBpZiAoY29tbWFuZCA9PT0gJ1onKSB7XG4gICAgICAgICAgICBjdXJyZW50UG9pbnQgPSBzdGFydE1vdmVQb2ludDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBsZW4gPSBwYXJhbXMubGVuZ3RoO1xuICAgICAgICAgICAgY3VycmVudFBvaW50ID0gW3BhcmFtc1tsZW4gLSAyXSwgcGFyYW1zW2xlbiAtIDFdXTtcbiAgICAgICAgfVxuICAgIH1cbn1cbi8vIOWIt+aWsOWbvuW9ouWFg+e0oChTaGFwZSDmiJbogIUgR3JvdXApXG5leHBvcnQgZnVuY3Rpb24gcmVmcmVzaEVsZW1lbnQoZWxlbWVudCwgY2hhbmdlVHlwZSkge1xuICAgIHZhciBjYW52YXMgPSBlbGVtZW50LmdldCgnY2FudmFzJyk7XG4gICAgLy8g5Y+q5pyJ5a2Y5Zyo5LqOIGNhbnZhcyDkuIrml7bnlJ/mlYhcbiAgICBpZiAoY2FudmFzKSB7XG4gICAgICAgIGlmIChjaGFuZ2VUeXBlID09PSAncmVtb3ZlJykge1xuICAgICAgICAgICAgLy8g5LiA5pemIHJlbW92Ze+8jOWImeaXoOazleWcqCBlbGVtZW50IOS4iuaLv+WIsOWMheWbtOebklxuICAgICAgICAgICAgLy8gZGVzdHJveSDlkI7miYDmnInlsZ7mgKfpg73mi7/kuI3liLDvvIzmiYDku6XpnIDopoHmmoLlrZjkuIDkuItcbiAgICAgICAgICAgIC8vIOi/meaYr+S4gOautSBoYWNrIOeahOS7o+eggVxuICAgICAgICAgICAgZWxlbWVudC5fY2FjaGVDYW52YXNCQm94ID0gZWxlbWVudC5nZXQoJ2NhY2hlQ2FudmFzQkJveCcpO1xuICAgICAgICB9XG4gICAgICAgIC8vIOmYsuatouWPjeWkjeWIt+aWsFxuICAgICAgICBpZiAoIWVsZW1lbnQuZ2V0KCdoYXNDaGFuZ2VkJykpIHtcbiAgICAgICAgICAgIC8vIOS9huaYr+Wni+e7iOimgeagh+iusOS4uiBoYXNDaGFuZ2Vk77yM5L6/5LqO5ZCO6Z2i6L+b6KGM5bGA6YOo5riy5p+TXG4gICAgICAgICAgICBlbGVtZW50LnNldCgnaGFzQ2hhbmdlZCcsIHRydWUpO1xuICAgICAgICAgICAgLy8g5pys5p2l5Y+q5pyJ5bGA6YOo5riy5p+T5qih5byP5LiL77yM5omN6ZyA6KaB6K6w5b2V5pu05paw55qE5YWD57Sg6Zif5YiXXG4gICAgICAgICAgICAvLyBpZiAoY2FudmFzLmdldCgnbG9jYWxSZWZyZXNoJykpIHtcbiAgICAgICAgICAgIC8vICAgY2FudmFzLnJlZnJlc2hFbGVtZW50KGVsZW1lbnQsIGNoYW5nZVR5cGUsIGNhbnZhcyk7XG4gICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICAvLyDkvYblr7nkuo4gaHR0cHM6Ly9naXRodWIuY29tL2FudHZpcy9nL2lzc3Vlcy80MjIg55qE5Zy65pmv77yM5YWo5bGA5riy5p+T55qE5qih5byP5LiL5Lmf6ZyA6KaB6K6w5b2V5pu05paw55qE5YWD57Sg6Zif5YiXXG4gICAgICAgICAgICAvLyDlpoLmnpzlvZPliY3lhYPntKDnmoTniLblhYPntKDlj5HnlJ/kuobmlLnlj5jvvIzlj6/ku6XkuI3mlL7lhaXpmJ/liJfvvIzov5nlj6Xor53lpKfmpoLog73lpJ/mj5DljYcgMTUlIOeahOWIneasoea4suafk+aAp+iDvVxuICAgICAgICAgICAgaWYgKCEoZWxlbWVudC5jZmcucGFyZW50ICYmIGVsZW1lbnQuY2ZnLnBhcmVudC5nZXQoJ2hhc0NoYW5nZWQnKSkpIHtcbiAgICAgICAgICAgICAgICBjYW52YXMucmVmcmVzaEVsZW1lbnQoZWxlbWVudCwgY2hhbmdlVHlwZSwgY2FudmFzKTtcbiAgICAgICAgICAgICAgICBpZiAoY2FudmFzLmdldCgnYXV0b0RyYXcnKSkge1xuICAgICAgICAgICAgICAgICAgICBjYW52YXMuZHJhdygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZWZyZXNoUmVnaW9uKGVsZW1lbnQpIHtcbiAgICB2YXIgcmVnaW9uO1xuICAgIGlmICghZWxlbWVudC5kZXN0cm95ZWQpIHtcbiAgICAgICAgdmFyIGNhY2hlQm94ID0gZWxlbWVudC5nZXQoJ2NhY2hlQ2FudmFzQkJveCcpO1xuICAgICAgICB2YXIgdmFsaWRDYWNoZSA9IGNhY2hlQm94ICYmICEhKGNhY2hlQm94LndpZHRoICYmIGNhY2hlQm94LmhlaWdodCk7XG4gICAgICAgIHZhciBiYm94ID0gZWxlbWVudC5nZXRDYW52YXNCQm94KCk7XG4gICAgICAgIHZhciB2YWxpZEJCb3ggPSBiYm94ICYmICEhKGJib3gud2lkdGggJiYgYmJveC5oZWlnaHQpO1xuICAgICAgICAvLyDmmK/lkKbmmK/mnInmlYggYmJveCDliKTlrprvvIzkuIDkupsgTmFOIOaIluiAhSDlrr3pq5jkuLogMCDnmoTmg4XlhrXov4fmu6TmjolcbiAgICAgICAgaWYgKHZhbGlkQ2FjaGUgJiYgdmFsaWRCQm94KSB7XG4gICAgICAgICAgICByZWdpb24gPSBtZXJnZVJlZ2lvbihjYWNoZUJveCwgYmJveCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsaWRDYWNoZSkge1xuICAgICAgICAgICAgcmVnaW9uID0gY2FjaGVCb3g7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsaWRCQm94KSB7XG4gICAgICAgICAgICByZWdpb24gPSBiYm94O1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICAvLyDlm6DkuLrlhYPntKDlt7Lnu4/plIDmr4HmiYDku6Xml6Dms5Xojrflj5bliLDnvJPlrZjnmoTljIXlm7Tnm5JcbiAgICAgICAgcmVnaW9uID0gZWxlbWVudFsnX2NhY2hlQ2FudmFzQkJveCddO1xuICAgIH1cbiAgICByZXR1cm4gcmVnaW9uO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldE1lcmdlZFJlZ2lvbihlbGVtZW50cykge1xuICAgIGlmICghZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2YXIgbWluWEFyciA9IFtdO1xuICAgIHZhciBtaW5ZQXJyID0gW107XG4gICAgdmFyIG1heFhBcnIgPSBbXTtcbiAgICB2YXIgbWF4WUFyciA9IFtdO1xuICAgIGVhY2goZWxlbWVudHMsIGZ1bmN0aW9uIChlbCkge1xuICAgICAgICB2YXIgcmVnaW9uID0gZ2V0UmVmcmVzaFJlZ2lvbihlbCk7XG4gICAgICAgIGlmIChyZWdpb24pIHtcbiAgICAgICAgICAgIG1pblhBcnIucHVzaChyZWdpb24ubWluWCk7XG4gICAgICAgICAgICBtaW5ZQXJyLnB1c2gocmVnaW9uLm1pblkpO1xuICAgICAgICAgICAgbWF4WEFyci5wdXNoKHJlZ2lvbi5tYXhYKTtcbiAgICAgICAgICAgIG1heFlBcnIucHVzaChyZWdpb24ubWF4WSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgICBtaW5YOiBtaW4obWluWEFyciksXG4gICAgICAgIG1pblk6IG1pbihtaW5ZQXJyKSxcbiAgICAgICAgbWF4WDogbWF4KG1heFhBcnIpLFxuICAgICAgICBtYXhZOiBtYXgobWF4WUFyciksXG4gICAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZVZpZXcocmVnaW9uLCB2aWV3UmVnaW9uKSB7XG4gICAgaWYgKCFyZWdpb24gfHwgIXZpZXdSZWdpb24pIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIC8vIOS4jeebuOS6pO+8jOWImeebtOaOpei/lOWbniBudWxsXG4gICAgaWYgKCFpbnRlcnNlY3RSZWN0KHJlZ2lvbiwgdmlld1JlZ2lvbikpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIG1pblg6IE1hdGgubWF4KHJlZ2lvbi5taW5YLCB2aWV3UmVnaW9uLm1pblgpLFxuICAgICAgICBtaW5ZOiBNYXRoLm1heChyZWdpb24ubWluWSwgdmlld1JlZ2lvbi5taW5ZKSxcbiAgICAgICAgbWF4WDogTWF0aC5taW4ocmVnaW9uLm1heFgsIHZpZXdSZWdpb24ubWF4WCksXG4gICAgICAgIG1heFk6IE1hdGgubWluKHJlZ2lvbi5tYXhZLCB2aWV3UmVnaW9uLm1heFkpLFxuICAgIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kcmF3LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/draw.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/hit.js":
/*!****************************************************************************!*\
!*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/hit.js ***!
\****************************************************************************/
/*! exports provided: getShape */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getShape\", function() { return getShape; });\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/index.js\");\n\nfunction invertFromMatrix(v, matrix) {\n if (matrix) {\n var invertMatrix = Object(_antv_g_base__WEBPACK_IMPORTED_MODULE_0__[\"invert\"])(matrix);\n return Object(_antv_g_base__WEBPACK_IMPORTED_MODULE_0__[\"multiplyVec2\"])(invertMatrix, v);\n }\n return v;\n}\nfunction getRefXY(element, x, y) {\n // @ts-ignore\n var totalMatrix = element.getTotalMatrix();\n if (totalMatrix) {\n var _a = invertFromMatrix([x, y, 1], totalMatrix), refX = _a[0], refY = _a[1];\n return [refX, refY];\n }\n return [x, y];\n}\n// 拾取前的检测,只有通过检测才能继续拾取\nfunction preTest(element, x, y) {\n // @ts-ignore\n if (element.isCanvas && element.isCanvas()) {\n return true;\n }\n // 不允许被拾取,则返回 null\n // @ts-ignore\n if (!Object(_antv_g_base__WEBPACK_IMPORTED_MODULE_0__[\"isAllowCapture\"])(element) || element.cfg.isInView === false) {\n return false;\n }\n if (element.cfg.clipShape) {\n // 如果存在 clip\n var _a = getRefXY(element, x, y), refX = _a[0], refY = _a[1];\n if (element.isClipped(refX, refY)) {\n return false;\n }\n }\n // @ts-ignore ,这个地方调用过于频繁\n var bbox = element.cfg.cacheCanvasBBox || element.getCanvasBBox();\n // 如果没有缓存 bbox,则说明不可见\n // 注释掉的这段可能会加速拾取,上面的语句改写成 const bbox = element.cfg.cacheCanvasBBox;\n // 这时候的拾取假设图形/分组在上一次绘制都在视窗内,但是上面已经判定了 isInView 所以意义不大\n // 现在还调用 element.getCanvasBBox(); 一个很大的原因是便于单元测试\n // if (!bbox) {\n // return false;\n // }\n if (!(x >= bbox.minX && x <= bbox.maxX && y >= bbox.minY && y <= bbox.maxY)) {\n return false;\n }\n return true;\n}\n// 这个方法复写了 g-base 的 getShape\nfunction getShape(container, x, y) {\n // 没有通过检测,则返回 null\n if (!preTest(container, x, y)) {\n return null;\n }\n var shape = null;\n var children = container.getChildren();\n var count = children.length;\n for (var i = count - 1; i >= 0; i--) {\n var child = children[i];\n if (child.isGroup()) {\n shape = getShape(child, x, y);\n }\n else if (preTest(child, x, y)) {\n var curShape = child;\n var _a = getRefXY(child, x, y), refX = _a[0], refY = _a[1];\n // @ts-ignore\n if (curShape.isInShape(refX, refY)) {\n shape = child;\n }\n }\n if (shape) {\n break;\n }\n }\n return shape;\n}\n//# sourceMappingURL=hit.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9oaXQuanM/MjE1YiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDcEU7QUFDQTtBQUNBLDJCQUEyQiwyREFBTTtBQUNqQyxlQUFlLGlFQUFZO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLG1FQUFjO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixRQUFRO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWNhbnZhc0AwLjUuMTJAQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvaGl0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNBbGxvd0NhcHR1cmUsIG11bHRpcGx5VmVjMiwgaW52ZXJ0IH0gZnJvbSAnQGFudHYvZy1iYXNlJztcbmZ1bmN0aW9uIGludmVydEZyb21NYXRyaXgodiwgbWF0cml4KSB7XG4gICAgaWYgKG1hdHJpeCkge1xuICAgICAgICB2YXIgaW52ZXJ0TWF0cml4ID0gaW52ZXJ0KG1hdHJpeCk7XG4gICAgICAgIHJldHVybiBtdWx0aXBseVZlYzIoaW52ZXJ0TWF0cml4LCB2KTtcbiAgICB9XG4gICAgcmV0dXJuIHY7XG59XG5mdW5jdGlvbiBnZXRSZWZYWShlbGVtZW50LCB4LCB5KSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHZhciB0b3RhbE1hdHJpeCA9IGVsZW1lbnQuZ2V0VG90YWxNYXRyaXgoKTtcbiAgICBpZiAodG90YWxNYXRyaXgpIHtcbiAgICAgICAgdmFyIF9hID0gaW52ZXJ0RnJvbU1hdHJpeChbeCwgeSwgMV0sIHRvdGFsTWF0cml4KSwgcmVmWCA9IF9hWzBdLCByZWZZID0gX2FbMV07XG4gICAgICAgIHJldHVybiBbcmVmWCwgcmVmWV07XG4gICAgfVxuICAgIHJldHVybiBbeCwgeV07XG59XG4vLyDmi77lj5bliY3nmoTmo4DmtYvvvIzlj6rmnInpgJrov4fmo4DmtYvmiY3og73nu6fnu63mi77lj5ZcbmZ1bmN0aW9uIHByZVRlc3QoZWxlbWVudCwgeCwgeSkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAoZWxlbWVudC5pc0NhbnZhcyAmJiBlbGVtZW50LmlzQ2FudmFzKCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIC8vIOS4jeWFgeiuuOiiq+aLvuWPlu+8jOWImei/lOWbniBudWxsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmICghaXNBbGxvd0NhcHR1cmUoZWxlbWVudCkgfHwgZWxlbWVudC5jZmcuaXNJblZpZXcgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGVsZW1lbnQuY2ZnLmNsaXBTaGFwZSkge1xuICAgICAgICAvLyDlpoLmnpzlrZjlnKggY2xpcFxuICAgICAgICB2YXIgX2EgPSBnZXRSZWZYWShlbGVtZW50LCB4LCB5KSwgcmVmWCA9IF9hWzBdLCByZWZZID0gX2FbMV07XG4gICAgICAgIGlmIChlbGVtZW50LmlzQ2xpcHBlZChyZWZYLCByZWZZKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEB0cy1pZ25vcmUg77yM6L+Z5Liq5Zyw5pa56LCD55So6L+H5LqO6aKR57mBXG4gICAgdmFyIGJib3ggPSBlbGVtZW50LmNmZy5jYWNoZUNhbnZhc0JCb3ggfHwgZWxlbWVudC5nZXRDYW52YXNCQm94KCk7XG4gICAgLy8g5aaC5p6c5rKh5pyJ57yT5a2YIGJib3jvvIzliJnor7TmmI7kuI3lj6/op4FcbiAgICAvLyDms6jph4rmjonnmoTov5nmrrXlj6/og73kvJrliqDpgJ/mi77lj5bvvIzkuIrpnaLnmoTor63lj6XmlLnlhpnmiJAgY29uc3QgYmJveCA9IGVsZW1lbnQuY2ZnLmNhY2hlQ2FudmFzQkJveDtcbiAgICAvLyDov5nml7blgJnnmoTmi77lj5blgYforr7lm77lvaIv5YiG57uE5Zyo5LiK5LiA5qyh57uY5Yi26YO95Zyo6KeG56qX5YaF77yM5L2G5piv5LiK6Z2i5bey57uP5Yik5a6a5LqGIGlzSW5WaWV3IOaJgOS7peaEj+S5ieS4jeWkp1xuICAgIC8vIOeOsOWcqOi/mOiwg+eUqCBlbGVtZW50LmdldENhbnZhc0JCb3goKTsg5LiA5Liq5b6I5aSn55qE5Y6f5Zug5piv5L6/5LqO5Y2V5YWD5rWL6K+VXG4gICAgLy8gaWYgKCFiYm94KSB7XG4gICAgLy8gICByZXR1cm4gZmFsc2U7XG4gICAgLy8gfVxuICAgIGlmICghKHggPj0gYmJveC5taW5YICYmIHggPD0gYmJveC5tYXhYICYmIHkgPj0gYmJveC5taW5ZICYmIHkgPD0gYmJveC5tYXhZKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuLy8g6L+Z5Liq5pa55rOV5aSN5YaZ5LqGIGctYmFzZSDnmoQgZ2V0U2hhcGVcbmV4cG9ydCBmdW5jdGlvbiBnZXRTaGFwZShjb250YWluZXIsIHgsIHkpIHtcbiAgICAvLyDmsqHmnInpgJrov4fmo4DmtYvvvIzliJnov5Tlm54gbnVsbFxuICAgIGlmICghcHJlVGVzdChjb250YWluZXIsIHgsIHkpKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2YXIgc2hhcGUgPSBudWxsO1xuICAgIHZhciBjaGlsZHJlbiA9IGNvbnRhaW5lci5nZXRDaGlsZHJlbigpO1xuICAgIHZhciBjb3VudCA9IGNoaWxkcmVuLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gY291bnQgLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXTtcbiAgICAgICAgaWYgKGNoaWxkLmlzR3JvdXAoKSkge1xuICAgICAgICAgICAgc2hhcGUgPSBnZXRTaGFwZShjaGlsZCwgeCwgeSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocHJlVGVzdChjaGlsZCwgeCwgeSkpIHtcbiAgICAgICAgICAgIHZhciBjdXJTaGFwZSA9IGNoaWxkO1xuICAgICAgICAgICAgdmFyIF9hID0gZ2V0UmVmWFkoY2hpbGQsIHgsIHkpLCByZWZYID0gX2FbMF0sIHJlZlkgPSBfYVsxXTtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGlmIChjdXJTaGFwZS5pc0luU2hhcGUocmVmWCwgcmVmWSkpIHtcbiAgICAgICAgICAgICAgICBzaGFwZSA9IGNoaWxkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzaGFwZSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHNoYXBlO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aGl0LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/hit.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-path/point-in-path.js":
/*!**********************************************************************************************!*\
!*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-path/point-in-path.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 isPointInPath; });\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/index.js\");\n\nfunction isPointInPath(shape, x, y) {\n var ctx = Object(_antv_g_base__WEBPACK_IMPORTED_MODULE_0__[\"getOffScreenContext\"])();\n shape.createPath(ctx);\n return ctx.isPointInPath(x, y);\n}\n//# sourceMappingURL=point-in-path.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9pbi1wYXRoL3BvaW50LWluLXBhdGguanM/MGM1YiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBbUQ7QUFDcEM7QUFDZixjQUFjLHdFQUFtQjtBQUNqQztBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1jYW52YXNAMC41LjEyQEBhbnR2L2ctY2FudmFzL2VzbS91dGlsL2luLXBhdGgvcG9pbnQtaW4tcGF0aC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldE9mZlNjcmVlbkNvbnRleHQgfSBmcm9tICdAYW50di9nLWJhc2UnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNQb2ludEluUGF0aChzaGFwZSwgeCwgeSkge1xuICAgIHZhciBjdHggPSBnZXRPZmZTY3JlZW5Db250ZXh0KCk7XG4gICAgc2hhcGUuY3JlYXRlUGF0aChjdHgpO1xuICAgIHJldHVybiBjdHguaXNQb2ludEluUGF0aCh4LCB5KTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBvaW50LWluLXBhdGguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-path/point-in-path.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-path/polygon.js":
/*!****************************************************************************************!*\
!*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-path/polygon.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 isInPolygon; });\n/**\n * @fileoverview 判断点是否在多边形内\n * @author dxq613@gmail.com\n */\n// 多边形的射线检测,参考:https://blog.csdn.net/WilliamSun0122/article/details/77994526\nvar tolerance = 1e-6;\n// 三态函数,判断两个double在eps精度下的大小关系\nfunction dcmp(x) {\n if (Math.abs(x) < tolerance) {\n return 0;\n }\n return x < 0 ? -1 : 1;\n}\n// 判断点Q是否在p1和p2的线段上\nfunction onSegment(p1, p2, q) {\n if ((q[0] - p1[0]) * (p2[1] - p1[1]) === (p2[0] - p1[0]) * (q[1] - p1[1]) &&\n Math.min(p1[0], p2[0]) <= q[0] &&\n q[0] <= Math.max(p1[0], p2[0]) &&\n Math.min(p1[1], p2[1]) <= q[1] &&\n q[1] <= Math.max(p1[1], p2[1])) {\n return true;\n }\n return false;\n}\n// 判断点P在多边形内-射线法\nfunction isInPolygon(points, x, y) {\n var isHit = false;\n var n = points.length;\n if (n <= 2) {\n // svg 中点小于 3 个时,不显示,也无法被拾取\n return false;\n }\n for (var i = 0; i < n; i++) {\n var p1 = points[i];\n var p2 = points[(i + 1) % n];\n if (onSegment(p1, p2, [x, y])) {\n // 点在多边形一条边上\n return true;\n }\n // 前一个判断min(p1[1],p2[1])
0 !== dcmp(p2[1] - y) > 0 &&\n dcmp(x - ((y - p1[1]) * (p1[0] - p2[0])) / (p1[1] - p2[1]) - p1[0]) < 0) {\n isHit = !isHit;\n }\n }\n return isHit;\n}\n//# sourceMappingURL=polygon.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9pbi1wYXRoL3BvbHlnb24uanM/NTg1ZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixPQUFPO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWNhbnZhc0AwLjUuMTJAQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvaW4tcGF0aC9wb2x5Z29uLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IOWIpOaWreeCueaYr+WQpuWcqOWkmui+ueW9ouWGhVxuICogQGF1dGhvciBkeHE2MTNAZ21haWwuY29tXG4gKi9cbi8vIOWkmui+ueW9oueahOWwhOe6v+ajgOa1i++8jOWPguiAg++8mmh0dHBzOi8vYmxvZy5jc2RuLm5ldC9XaWxsaWFtU3VuMDEyMi9hcnRpY2xlL2RldGFpbHMvNzc5OTQ1MjZcbnZhciB0b2xlcmFuY2UgPSAxZS02O1xuLy8g5LiJ5oCB5Ye95pWw77yM5Yik5pat5Lik5LiqZG91Ymxl5ZyoZXBz57K+5bqm5LiL55qE5aSn5bCP5YWz57O7XG5mdW5jdGlvbiBkY21wKHgpIHtcbiAgICBpZiAoTWF0aC5hYnMoeCkgPCB0b2xlcmFuY2UpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiB4IDwgMCA/IC0xIDogMTtcbn1cbi8vIOWIpOaWreeCuVHmmK/lkKblnKhwMeWSjHAy55qE57q/5q615LiKXG5mdW5jdGlvbiBvblNlZ21lbnQocDEsIHAyLCBxKSB7XG4gICAgaWYgKChxWzBdIC0gcDFbMF0pICogKHAyWzFdIC0gcDFbMV0pID09PSAocDJbMF0gLSBwMVswXSkgKiAocVsxXSAtIHAxWzFdKSAmJlxuICAgICAgICBNYXRoLm1pbihwMVswXSwgcDJbMF0pIDw9IHFbMF0gJiZcbiAgICAgICAgcVswXSA8PSBNYXRoLm1heChwMVswXSwgcDJbMF0pICYmXG4gICAgICAgIE1hdGgubWluKHAxWzFdLCBwMlsxXSkgPD0gcVsxXSAmJlxuICAgICAgICBxWzFdIDw9IE1hdGgubWF4KHAxWzFdLCBwMlsxXSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cbi8vIOWIpOaWreeCuVDlnKjlpJrovrnlvaLlhoUt5bCE57q/5rOVXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0luUG9seWdvbihwb2ludHMsIHgsIHkpIHtcbiAgICB2YXIgaXNIaXQgPSBmYWxzZTtcbiAgICB2YXIgbiA9IHBvaW50cy5sZW5ndGg7XG4gICAgaWYgKG4gPD0gMikge1xuICAgICAgICAvLyBzdmcg5Lit54K55bCP5LqOIDMg5Liq5pe277yM5LiN5pi+56S677yM5Lmf5peg5rOV6KKr5ou+5Y+WXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgdmFyIHAxID0gcG9pbnRzW2ldO1xuICAgICAgICB2YXIgcDIgPSBwb2ludHNbKGkgKyAxKSAlIG5dO1xuICAgICAgICBpZiAob25TZWdtZW50KHAxLCBwMiwgW3gsIHldKSkge1xuICAgICAgICAgICAgLy8g54K55Zyo5aSa6L655b2i5LiA5p2h6L655LiKXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyDliY3kuIDkuKrliKTmlq1taW4ocDFbMV0scDJbMV0pPFAueTw9bWF4KHAxWzFdLHAyWzFdKVxuICAgICAgICAvLyDlkI7kuIDkuKrliKTmlq3ooqvmtYvngrkg5ZyoIOWwhOe6v+S4jui+ueS6pOeCuSDnmoTlt6bovrlcbiAgICAgICAgaWYgKGRjbXAocDFbMV0gLSB5KSA+IDAgIT09IGRjbXAocDJbMV0gLSB5KSA+IDAgJiZcbiAgICAgICAgICAgIGRjbXAoeCAtICgoeSAtIHAxWzFdKSAqIChwMVswXSAtIHAyWzBdKSkgLyAocDFbMV0gLSBwMlsxXSkgLSBwMVswXSkgPCAwKSB7XG4gICAgICAgICAgICBpc0hpdCA9ICFpc0hpdDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaXNIaXQ7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wb2x5Z29uLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-path/polygon.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/arc.js":
/*!**************************************************************************************!*\
!*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/arc.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 arc; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/util.js\");\n\nfunction arc(cx, cy, r, startAngle, endAngle, lineWidth, x, y) {\n var angle = (Math.atan2(y - cy, x - cx) + Math.PI * 2) % (Math.PI * 2); // 转换到 0 - 2 * Math.PI 之间\n if (angle < startAngle || angle > endAngle) {\n return false;\n }\n var point = {\n x: cx + r * Math.cos(angle),\n y: cy + r * Math.sin(angle),\n };\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(point.x, point.y, x, y) <= lineWidth / 2;\n}\n//# sourceMappingURL=arc.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9pbi1zdHJva2UvYXJjLmpzP2UyN2MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQW1DO0FBQ3BCO0FBQ2YsMkVBQTJFO0FBQzNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxzREFBUTtBQUNuQjtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWNhbnZhc0AwLjUuMTJAQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvaW4tc3Ryb2tlL2FyYy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRpc3RhbmNlIH0gZnJvbSAnLi4vdXRpbCc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhcmMoY3gsIGN5LCByLCBzdGFydEFuZ2xlLCBlbmRBbmdsZSwgbGluZVdpZHRoLCB4LCB5KSB7XG4gICAgdmFyIGFuZ2xlID0gKE1hdGguYXRhbjIoeSAtIGN5LCB4IC0gY3gpICsgTWF0aC5QSSAqIDIpICUgKE1hdGguUEkgKiAyKTsgLy8g6L2s5o2i5YiwIDAgLSAyICogTWF0aC5QSSDkuYvpl7RcbiAgICBpZiAoYW5nbGUgPCBzdGFydEFuZ2xlIHx8IGFuZ2xlID4gZW5kQW5nbGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB2YXIgcG9pbnQgPSB7XG4gICAgICAgIHg6IGN4ICsgciAqIE1hdGguY29zKGFuZ2xlKSxcbiAgICAgICAgeTogY3kgKyByICogTWF0aC5zaW4oYW5nbGUpLFxuICAgIH07XG4gICAgcmV0dXJuIGRpc3RhbmNlKHBvaW50LngsIHBvaW50LnksIHgsIHkpIDw9IGxpbmVXaWR0aCAvIDI7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1hcmMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/arc.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/line.js":
/*!***************************************************************************************!*\
!*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/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 inLine; });\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/index.js\");\n\nfunction inLine(x1, y1, x2, y2, lineWidth, x, y) {\n var minX = Math.min(x1, x2);\n var maxX = Math.max(x1, x2);\n var minY = Math.min(y1, y2);\n var maxY = Math.max(y1, y2);\n var halfWidth = lineWidth / 2;\n // 因为目前的方案是计算点到直线的距离,而有可能会在延长线上,所以要先判断是否在包围盒内\n // 这种方案会在水平或者竖直的情况下载线的延长线上有半 lineWidth 的误差\n if (!(x >= minX - halfWidth && x <= maxX + halfWidth && y >= minY - halfWidth && y <= maxY + halfWidth)) {\n return false;\n }\n // 因为已经计算了包围盒,所以仅需要计算到直线的距离即可,可以显著提升性能\n return _antv_g_math__WEBPACK_IMPORTED_MODULE_0__[\"Line\"].pointToLine(x1, y1, x2, y2, x, y) <= lineWidth / 2;\n}\n//# sourceMappingURL=line.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9pbi1zdHJva2UvbGluZS5qcz8zZDA5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFnRDtBQUNqQztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGlEQUFRO0FBQ25CO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9pbi1zdHJva2UvbGluZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExpbmUgYXMgTGluZVV0aWwgfSBmcm9tICdAYW50di9nLW1hdGgnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaW5MaW5lKHgxLCB5MSwgeDIsIHkyLCBsaW5lV2lkdGgsIHgsIHkpIHtcbiAgICB2YXIgbWluWCA9IE1hdGgubWluKHgxLCB4Mik7XG4gICAgdmFyIG1heFggPSBNYXRoLm1heCh4MSwgeDIpO1xuICAgIHZhciBtaW5ZID0gTWF0aC5taW4oeTEsIHkyKTtcbiAgICB2YXIgbWF4WSA9IE1hdGgubWF4KHkxLCB5Mik7XG4gICAgdmFyIGhhbGZXaWR0aCA9IGxpbmVXaWR0aCAvIDI7XG4gICAgLy8g5Zug5Li655uu5YmN55qE5pa55qGI5piv6K6h566X54K55Yiw55u057q/55qE6Led56a777yM6ICM5pyJ5Y+v6IO95Lya5Zyo5bu26ZW/57q/5LiK77yM5omA5Lul6KaB5YWI5Yik5pat5piv5ZCm5Zyo5YyF5Zu055uS5YaFXG4gICAgLy8g6L+Z56eN5pa55qGI5Lya5Zyo5rC05bmz5oiW6ICF56uW55u055qE5oOF5Ya15LiL6L2957q/55qE5bu26ZW/57q/5LiK5pyJ5Y2KIGxpbmVXaWR0aCDnmoTor6/lt65cbiAgICBpZiAoISh4ID49IG1pblggLSBoYWxmV2lkdGggJiYgeCA8PSBtYXhYICsgaGFsZldpZHRoICYmIHkgPj0gbWluWSAtIGhhbGZXaWR0aCAmJiB5IDw9IG1heFkgKyBoYWxmV2lkdGgpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8g5Zug5Li65bey57uP6K6h566X5LqG5YyF5Zu055uS77yM5omA5Lul5LuF6ZyA6KaB6K6h566X5Yiw55u057q/55qE6Led56a75Y2z5Y+v77yM5Y+v5Lul5pi+6JGX5o+Q5Y2H5oCn6IO9XG4gICAgcmV0dXJuIExpbmVVdGlsLnBvaW50VG9MaW5lKHgxLCB5MSwgeDIsIHkyLCB4LCB5KSA8PSBsaW5lV2lkdGggLyAyO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bGluZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/line.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/polyline.js":
/*!*******************************************************************************************!*\
!*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/polyline.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 inPolyline; });\n/* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./line */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/line.js\");\n\nfunction inPolyline(points, lineWidth, x, y, isClose) {\n var count = points.length;\n if (count < 2) {\n return false;\n }\n for (var i = 0; i < count - 1; i++) {\n var x1 = points[i][0];\n var y1 = points[i][1];\n var x2 = points[i + 1][0];\n var y2 = points[i + 1][1];\n if (Object(_line__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(x1, y1, x2, y2, lineWidth, x, y)) {\n return true;\n }\n }\n // 如果封闭,则计算起始点和结束点的边\n if (isClose) {\n var first = points[0];\n var last = points[count - 1];\n if (Object(_line__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(first[0], first[1], last[0], last[1], lineWidth, x, y)) {\n return true;\n }\n }\n return false;\n}\n//# sourceMappingURL=polyline.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9pbi1zdHJva2UvcG9seWxpbmUuanM/YTJiMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBNEI7QUFDYjtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGVBQWU7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHFEQUFNO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxxREFBTTtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9pbi1zdHJva2UvcG9seWxpbmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW5MaW5lIGZyb20gJy4vbGluZSc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpblBvbHlsaW5lKHBvaW50cywgbGluZVdpZHRoLCB4LCB5LCBpc0Nsb3NlKSB7XG4gICAgdmFyIGNvdW50ID0gcG9pbnRzLmxlbmd0aDtcbiAgICBpZiAoY291bnQgPCAyKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudCAtIDE7IGkrKykge1xuICAgICAgICB2YXIgeDEgPSBwb2ludHNbaV1bMF07XG4gICAgICAgIHZhciB5MSA9IHBvaW50c1tpXVsxXTtcbiAgICAgICAgdmFyIHgyID0gcG9pbnRzW2kgKyAxXVswXTtcbiAgICAgICAgdmFyIHkyID0gcG9pbnRzW2kgKyAxXVsxXTtcbiAgICAgICAgaWYgKGluTGluZSh4MSwgeTEsIHgyLCB5MiwgbGluZVdpZHRoLCB4LCB5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8g5aaC5p6c5bCB6Zet77yM5YiZ6K6h566X6LW35aeL54K55ZKM57uT5p2f54K555qE6L65XG4gICAgaWYgKGlzQ2xvc2UpIHtcbiAgICAgICAgdmFyIGZpcnN0ID0gcG9pbnRzWzBdO1xuICAgICAgICB2YXIgbGFzdCA9IHBvaW50c1tjb3VudCAtIDFdO1xuICAgICAgICBpZiAoaW5MaW5lKGZpcnN0WzBdLCBmaXJzdFsxXSwgbGFzdFswXSwgbGFzdFsxXSwgbGluZVdpZHRoLCB4LCB5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cG9seWxpbmUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/polyline.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/rect-radius.js":
/*!**********************************************************************************************!*\
!*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/rect-radius.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 rectWithRadius; });\n/* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./line */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/line.js\");\n/* harmony import */ var _arc__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./arc */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/arc.js\");\n\n\nfunction rectWithRadius(minX, minY, width, height, radius, lineWidth, x, y) {\n var halfWidth = lineWidth / 2;\n return (Object(_line__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(minX + radius, minY, minX + width - radius, minY, lineWidth, x, y) ||\n Object(_line__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(minX + width, minY + radius, minX + width, minY + height - radius, lineWidth, x, y) ||\n Object(_line__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(minX + width - radius, minY + height, minX + radius, minY + height, lineWidth, x, y) ||\n Object(_line__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(minX, minY + height - radius, minX, minY + radius, lineWidth, x, y) ||\n Object(_arc__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(minX + width - radius, minY + radius, radius, 1.5 * Math.PI, 2 * Math.PI, lineWidth, x, y) ||\n Object(_arc__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(minX + width - radius, minY + height - radius, radius, 0, 0.5 * Math.PI, lineWidth, x, y) ||\n Object(_arc__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(minX + radius, minY + height - radius, radius, 0.5 * Math.PI, Math.PI, lineWidth, x, y) ||\n Object(_arc__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(minX + radius, minY + radius, radius, Math.PI, 1.5 * Math.PI, lineWidth, x, y));\n}\n//# sourceMappingURL=rect-radius.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9pbi1zdHJva2UvcmVjdC1yYWRpdXMuanM/Y2IwNCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE0QjtBQUNGO0FBQ1g7QUFDZjtBQUNBLFlBQVkscURBQU07QUFDbEIsUUFBUSxxREFBTTtBQUNkLFFBQVEscURBQU07QUFDZCxRQUFRLHFEQUFNO0FBQ2QsUUFBUSxvREFBSztBQUNiLFFBQVEsb0RBQUs7QUFDYixRQUFRLG9EQUFLO0FBQ2IsUUFBUSxvREFBSztBQUNiO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9pbi1zdHJva2UvcmVjdC1yYWRpdXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW5MaW5lIGZyb20gJy4vbGluZSc7XG5pbXBvcnQgaW5BcmMgZnJvbSAnLi9hcmMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVjdFdpdGhSYWRpdXMobWluWCwgbWluWSwgd2lkdGgsIGhlaWdodCwgcmFkaXVzLCBsaW5lV2lkdGgsIHgsIHkpIHtcbiAgICB2YXIgaGFsZldpZHRoID0gbGluZVdpZHRoIC8gMjtcbiAgICByZXR1cm4gKGluTGluZShtaW5YICsgcmFkaXVzLCBtaW5ZLCBtaW5YICsgd2lkdGggLSByYWRpdXMsIG1pblksIGxpbmVXaWR0aCwgeCwgeSkgfHxcbiAgICAgICAgaW5MaW5lKG1pblggKyB3aWR0aCwgbWluWSArIHJhZGl1cywgbWluWCArIHdpZHRoLCBtaW5ZICsgaGVpZ2h0IC0gcmFkaXVzLCBsaW5lV2lkdGgsIHgsIHkpIHx8XG4gICAgICAgIGluTGluZShtaW5YICsgd2lkdGggLSByYWRpdXMsIG1pblkgKyBoZWlnaHQsIG1pblggKyByYWRpdXMsIG1pblkgKyBoZWlnaHQsIGxpbmVXaWR0aCwgeCwgeSkgfHxcbiAgICAgICAgaW5MaW5lKG1pblgsIG1pblkgKyBoZWlnaHQgLSByYWRpdXMsIG1pblgsIG1pblkgKyByYWRpdXMsIGxpbmVXaWR0aCwgeCwgeSkgfHxcbiAgICAgICAgaW5BcmMobWluWCArIHdpZHRoIC0gcmFkaXVzLCBtaW5ZICsgcmFkaXVzLCByYWRpdXMsIDEuNSAqIE1hdGguUEksIDIgKiBNYXRoLlBJLCBsaW5lV2lkdGgsIHgsIHkpIHx8XG4gICAgICAgIGluQXJjKG1pblggKyB3aWR0aCAtIHJhZGl1cywgbWluWSArIGhlaWdodCAtIHJhZGl1cywgcmFkaXVzLCAwLCAwLjUgKiBNYXRoLlBJLCBsaW5lV2lkdGgsIHgsIHkpIHx8XG4gICAgICAgIGluQXJjKG1pblggKyByYWRpdXMsIG1pblkgKyBoZWlnaHQgLSByYWRpdXMsIHJhZGl1cywgMC41ICogTWF0aC5QSSwgTWF0aC5QSSwgbGluZVdpZHRoLCB4LCB5KSB8fFxuICAgICAgICBpbkFyYyhtaW5YICsgcmFkaXVzLCBtaW5ZICsgcmFkaXVzLCByYWRpdXMsIE1hdGguUEksIDEuNSAqIE1hdGguUEksIGxpbmVXaWR0aCwgeCwgeSkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVjdC1yYWRpdXMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/rect-radius.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/rect.js":
/*!***************************************************************************************!*\
!*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/rect.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 inRect; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/util.js\");\n\nfunction inRect(minX, minY, width, height, lineWidth, x, y) {\n var halfWidth = lineWidth / 2;\n // 将四个边看做矩形来检测,比边的检测算法要快\n return (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"inBox\"])(minX - halfWidth, minY - halfWidth, width, lineWidth, x, y) || // 上边\n Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"inBox\"])(minX + width - halfWidth, minY - halfWidth, lineWidth, height, x, y) || // 右边\n Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"inBox\"])(minX + halfWidth, minY + height - halfWidth, width, lineWidth, x, y) || // 下边\n Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"inBox\"])(minX - halfWidth, minY + halfWidth, lineWidth, height, x, y)); // 左边\n}\n//# sourceMappingURL=rect.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9pbi1zdHJva2UvcmVjdC5qcz82ZTk3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFnQztBQUNqQjtBQUNmO0FBQ0E7QUFDQSxZQUFZLG1EQUFLO0FBQ2pCLFFBQVEsbURBQUs7QUFDYixRQUFRLG1EQUFLO0FBQ2IsUUFBUSxtREFBSywrREFBK0Q7QUFDNUU7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1jYW52YXNAMC41LjEyQEBhbnR2L2ctY2FudmFzL2VzbS91dGlsL2luLXN0cm9rZS9yZWN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5Cb3ggfSBmcm9tICcuLi91dGlsJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGluUmVjdChtaW5YLCBtaW5ZLCB3aWR0aCwgaGVpZ2h0LCBsaW5lV2lkdGgsIHgsIHkpIHtcbiAgICB2YXIgaGFsZldpZHRoID0gbGluZVdpZHRoIC8gMjtcbiAgICAvLyDlsIblm5vkuKrovrnnnIvlgZrnn6nlvaLmnaXmo4DmtYvvvIzmr5TovrnnmoTmo4DmtYvnrpfms5XopoHlv6tcbiAgICByZXR1cm4gKGluQm94KG1pblggLSBoYWxmV2lkdGgsIG1pblkgLSBoYWxmV2lkdGgsIHdpZHRoLCBsaW5lV2lkdGgsIHgsIHkpIHx8IC8vIOS4iui+uVxuICAgICAgICBpbkJveChtaW5YICsgd2lkdGggLSBoYWxmV2lkdGgsIG1pblkgLSBoYWxmV2lkdGgsIGxpbmVXaWR0aCwgaGVpZ2h0LCB4LCB5KSB8fCAvLyDlj7PovrlcbiAgICAgICAgaW5Cb3gobWluWCArIGhhbGZXaWR0aCwgbWluWSArIGhlaWdodCAtIGhhbGZXaWR0aCwgd2lkdGgsIGxpbmVXaWR0aCwgeCwgeSkgfHwgLy8g5LiL6L65XG4gICAgICAgIGluQm94KG1pblggLSBoYWxmV2lkdGgsIG1pblkgKyBoYWxmV2lkdGgsIGxpbmVXaWR0aCwgaGVpZ2h0LCB4LCB5KSk7IC8vIOW3pui+uVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVjdC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/rect.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/parse.js":
/*!******************************************************************************!*\
!*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/parse.js ***!
\******************************************************************************/
/*! exports provided: parseLineGradient, parseRadialGradient, parsePattern, parseStyle, parseRadius */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseLineGradient\", function() { return parseLineGradient; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseRadialGradient\", function() { return parseRadialGradient; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parsePattern\", function() { return parsePattern; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseStyle\", function() { return parseStyle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseRadius\", function() { return parseRadius; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/util.js\");\n\nvar regexLG = /^l\\s*\\(\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nvar regexRG = /^r\\s*\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nvar regexPR = /^p\\s*\\(\\s*([axyn])\\s*\\)\\s*(.*)/i;\nvar regexColorStop = /[\\d.]+:(#[^\\s]+|[^\\)]+\\))/gi;\nfunction addStop(steps, gradient) {\n var arr = steps.match(regexColorStop);\n Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(arr, function (item) {\n var itemArr = item.split(':');\n gradient.addColorStop(itemArr[0], itemArr[1]);\n });\n}\n/**\n * 将边和填充设置的颜色转换成线性渐变对象\n * @param {CanvasRenderingContext2D} context canvas 上下文\n * @param {IElement} element 图形元素\n * @param {string} gradientStr 颜色\n * @returns {any} 渐变对象\n */\nfunction parseLineGradient(context, element, gradientStr) {\n var arr = regexLG.exec(gradientStr);\n var angle = (parseFloat(arr[1]) % 360) * (Math.PI / 180);\n var steps = arr[2];\n var box = element.getBBox();\n var start;\n var end;\n if (angle >= 0 && angle < (1 / 2) * Math.PI) {\n start = {\n x: box.minX,\n y: box.minY,\n };\n end = {\n x: box.maxX,\n y: box.maxY,\n };\n }\n else if ((1 / 2) * Math.PI <= angle && angle < Math.PI) {\n start = {\n x: box.maxX,\n y: box.minY,\n };\n end = {\n x: box.minX,\n y: box.maxY,\n };\n }\n else if (Math.PI <= angle && angle < (3 / 2) * Math.PI) {\n start = {\n x: box.maxX,\n y: box.maxY,\n };\n end = {\n x: box.minX,\n y: box.minY,\n };\n }\n else {\n start = {\n x: box.minX,\n y: box.maxY,\n };\n end = {\n x: box.maxX,\n y: box.minY,\n };\n }\n var tanTheta = Math.tan(angle);\n var tanTheta2 = tanTheta * tanTheta;\n var x = (end.x - start.x + tanTheta * (end.y - start.y)) / (tanTheta2 + 1) + start.x;\n var y = (tanTheta * (end.x - start.x + tanTheta * (end.y - start.y))) / (tanTheta2 + 1) + start.y;\n var gradient = context.createLinearGradient(start.x, start.y, x, y);\n addStop(steps, gradient);\n return gradient;\n}\n/**\n * 将边和填充设置的颜色转换成圆形渐变对象\n * @param {CanvasRenderingContext2D} context canvas 上下文\n * @param {IElement} element 图形元素\n * @param {string} gradientStr 颜色\n * @returns {any} 渐变对象\n */\nfunction parseRadialGradient(context, element, gradientStr) {\n var arr = regexRG.exec(gradientStr);\n var fx = parseFloat(arr[1]);\n var fy = parseFloat(arr[2]);\n var fr = parseFloat(arr[3]);\n var steps = arr[4];\n // 环半径为0时,默认无渐变,取渐变序列的最后一个颜色\n if (fr === 0) {\n var colors = steps.match(regexColorStop);\n return colors[colors.length - 1].split(':')[1];\n }\n var box = element.getBBox();\n var width = box.maxX - box.minX;\n var height = box.maxY - box.minY;\n var r = Math.sqrt(width * width + height * height) / 2;\n var gradient = context.createRadialGradient(box.minX + width * fx, box.minY + height * fy, 0, box.minX + width / 2, box.minY + height / 2, fr * r);\n addStop(steps, gradient);\n return gradient;\n}\n/**\n * 边和填充设置的颜色转换成 pattern\n * @param {CanvasRenderingContext2D} context canvas 上下文\n * @param {IElement} element 图形元素\n * @param {string} patternStr 生成 pattern 的字符串\n */\nfunction parsePattern(context, element, patternStr) {\n // 在转换过程中进行了缓存\n if (element.get('patternSource') && element.get('patternSource') === patternStr) {\n return element.get('pattern');\n }\n var pattern;\n var img;\n var arr = regexPR.exec(patternStr);\n var repeat = arr[1];\n var source = arr[2];\n // Function to be called when pattern loads\n function onload() {\n // Create pattern\n pattern = context.createPattern(img, repeat);\n element.set('pattern', pattern); // be a cache\n element.set('patternSource', patternStr);\n }\n switch (repeat) {\n case 'a':\n repeat = 'repeat';\n break;\n case 'x':\n repeat = 'repeat-x';\n break;\n case 'y':\n repeat = 'repeat-y';\n break;\n case 'n':\n repeat = 'no-repeat';\n break;\n default:\n repeat = 'no-repeat';\n }\n img = new Image();\n // If source URL is not a data URL\n if (!source.match(/^data:/i)) {\n // Set crossOrigin for this image\n img.crossOrigin = 'Anonymous';\n }\n img.src = source;\n if (img.complete) {\n onload();\n }\n else {\n img.onload = onload;\n // Fix onload() bug in IE9\n img.src = img.src;\n }\n return pattern;\n}\nfunction parseStyle(context, element, color) {\n var bbox = element.getBBox();\n if (isNaN(bbox.x) || isNaN(bbox.y) || isNaN(bbox.width) || isNaN(bbox.height)) {\n return color;\n }\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(color)) {\n if (color[1] === '(' || color[2] === '(') {\n if (color[0] === 'l') {\n // regexLG.test(color)\n return parseLineGradient(context, element, color);\n }\n if (color[0] === 'r') {\n // regexRG.test(color)\n return parseRadialGradient(context, element, color);\n }\n if (color[0] === 'p') {\n // regexPR.test(color)\n return parsePattern(context, element, color);\n }\n }\n return color;\n }\n if (color instanceof CanvasPattern) {\n return color;\n }\n}\nfunction parseRadius(radius) {\n var r1 = 0;\n var r2 = 0;\n var r3 = 0;\n var r4 = 0;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(radius)) {\n if (radius.length === 1) {\n r1 = r2 = r3 = r4 = radius[0];\n }\n else if (radius.length === 2) {\n r1 = r3 = radius[0];\n r2 = r4 = radius[1];\n }\n else if (radius.length === 3) {\n r1 = radius[0];\n r2 = r4 = radius[1];\n r3 = radius[2];\n }\n else {\n r1 = radius[0];\n r2 = radius[1];\n r3 = radius[2];\n r4 = radius[3];\n }\n }\n else {\n r1 = r2 = r3 = r4 = radius;\n }\n return [r1, r2, r3, r4];\n}\n//# sourceMappingURL=parse.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9wYXJzZS5qcz8wNDc1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlEO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksa0RBQUk7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLFdBQVcseUJBQXlCO0FBQ3BDLFdBQVcsU0FBUztBQUNwQixXQUFXLE9BQU87QUFDbEIsYUFBYSxJQUFJO0FBQ2pCO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyx5QkFBeUI7QUFDcEMsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQixhQUFhLElBQUk7QUFDakI7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLHlCQUF5QjtBQUNwQyxXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsc0RBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHFEQUFPO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9wYXJzZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzU3RyaW5nLCBlYWNoLCBpc0FycmF5IH0gZnJvbSAnLi91dGlsJztcbnZhciByZWdleExHID0gL15sXFxzKlxcKFxccyooW1xcZC5dKylcXHMqXFwpXFxzKiguKikvaTtcbnZhciByZWdleFJHID0gL15yXFxzKlxcKFxccyooW1xcZC5dKylcXHMqLFxccyooW1xcZC5dKylcXHMqLFxccyooW1xcZC5dKylcXHMqXFwpXFxzKiguKikvaTtcbnZhciByZWdleFBSID0gL15wXFxzKlxcKFxccyooW2F4eW5dKVxccypcXClcXHMqKC4qKS9pO1xudmFyIHJlZ2V4Q29sb3JTdG9wID0gL1tcXGQuXSs6KCNbXlxcc10rfFteXFwpXStcXCkpL2dpO1xuZnVuY3Rpb24gYWRkU3RvcChzdGVwcywgZ3JhZGllbnQpIHtcbiAgICB2YXIgYXJyID0gc3RlcHMubWF0Y2gocmVnZXhDb2xvclN0b3ApO1xuICAgIGVhY2goYXJyLCBmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICB2YXIgaXRlbUFyciA9IGl0ZW0uc3BsaXQoJzonKTtcbiAgICAgICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKGl0ZW1BcnJbMF0sIGl0ZW1BcnJbMV0pO1xuICAgIH0pO1xufVxuLyoqXG4gKiDlsIbovrnlkozloavlhYXorr7nva7nmoTpopzoibLovazmjaLmiJDnur/mgKfmuJDlj5jlr7nosaFcbiAqIEBwYXJhbSB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEfSBjb250ZXh0IGNhbnZhcyDkuIrkuIvmlodcbiAqIEBwYXJhbSB7SUVsZW1lbnR9ICAgICAgICAgICAgICAgICBlbGVtZW50ICDlm77lvaLlhYPntKBcbiAqIEBwYXJhbSB7c3RyaW5nfSAgICAgICAgICAgICAgICAgICBncmFkaWVudFN0ciAgIOminOiJslxuICogQHJldHVybnMge2FueX0g5riQ5Y+Y5a+56LGhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUxpbmVHcmFkaWVudChjb250ZXh0LCBlbGVtZW50LCBncmFkaWVudFN0cikge1xuICAgIHZhciBhcnIgPSByZWdleExHLmV4ZWMoZ3JhZGllbnRTdHIpO1xuICAgIHZhciBhbmdsZSA9IChwYXJzZUZsb2F0KGFyclsxXSkgJSAzNjApICogKE1hdGguUEkgLyAxODApO1xuICAgIHZhciBzdGVwcyA9IGFyclsyXTtcbiAgICB2YXIgYm94ID0gZWxlbWVudC5nZXRCQm94KCk7XG4gICAgdmFyIHN0YXJ0O1xuICAgIHZhciBlbmQ7XG4gICAgaWYgKGFuZ2xlID49IDAgJiYgYW5nbGUgPCAoMSAvIDIpICogTWF0aC5QSSkge1xuICAgICAgICBzdGFydCA9IHtcbiAgICAgICAgICAgIHg6IGJveC5taW5YLFxuICAgICAgICAgICAgeTogYm94Lm1pblksXG4gICAgICAgIH07XG4gICAgICAgIGVuZCA9IHtcbiAgICAgICAgICAgIHg6IGJveC5tYXhYLFxuICAgICAgICAgICAgeTogYm94Lm1heFksXG4gICAgICAgIH07XG4gICAgfVxuICAgIGVsc2UgaWYgKCgxIC8gMikgKiBNYXRoLlBJIDw9IGFuZ2xlICYmIGFuZ2xlIDwgTWF0aC5QSSkge1xuICAgICAgICBzdGFydCA9IHtcbiAgICAgICAgICAgIHg6IGJveC5tYXhYLFxuICAgICAgICAgICAgeTogYm94Lm1pblksXG4gICAgICAgIH07XG4gICAgICAgIGVuZCA9IHtcbiAgICAgICAgICAgIHg6IGJveC5taW5YLFxuICAgICAgICAgICAgeTogYm94Lm1heFksXG4gICAgICAgIH07XG4gICAgfVxuICAgIGVsc2UgaWYgKE1hdGguUEkgPD0gYW5nbGUgJiYgYW5nbGUgPCAoMyAvIDIpICogTWF0aC5QSSkge1xuICAgICAgICBzdGFydCA9IHtcbiAgICAgICAgICAgIHg6IGJveC5tYXhYLFxuICAgICAgICAgICAgeTogYm94Lm1heFksXG4gICAgICAgIH07XG4gICAgICAgIGVuZCA9IHtcbiAgICAgICAgICAgIHg6IGJveC5taW5YLFxuICAgICAgICAgICAgeTogYm94Lm1pblksXG4gICAgICAgIH07XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBzdGFydCA9IHtcbiAgICAgICAgICAgIHg6IGJveC5taW5YLFxuICAgICAgICAgICAgeTogYm94Lm1heFksXG4gICAgICAgIH07XG4gICAgICAgIGVuZCA9IHtcbiAgICAgICAgICAgIHg6IGJveC5tYXhYLFxuICAgICAgICAgICAgeTogYm94Lm1pblksXG4gICAgICAgIH07XG4gICAgfVxuICAgIHZhciB0YW5UaGV0YSA9IE1hdGgudGFuKGFuZ2xlKTtcbiAgICB2YXIgdGFuVGhldGEyID0gdGFuVGhldGEgKiB0YW5UaGV0YTtcbiAgICB2YXIgeCA9IChlbmQueCAtIHN0YXJ0LnggKyB0YW5UaGV0YSAqIChlbmQueSAtIHN0YXJ0LnkpKSAvICh0YW5UaGV0YTIgKyAxKSArIHN0YXJ0Lng7XG4gICAgdmFyIHkgPSAodGFuVGhldGEgKiAoZW5kLnggLSBzdGFydC54ICsgdGFuVGhldGEgKiAoZW5kLnkgLSBzdGFydC55KSkpIC8gKHRhblRoZXRhMiArIDEpICsgc3RhcnQueTtcbiAgICB2YXIgZ3JhZGllbnQgPSBjb250ZXh0LmNyZWF0ZUxpbmVhckdyYWRpZW50KHN0YXJ0LngsIHN0YXJ0LnksIHgsIHkpO1xuICAgIGFkZFN0b3Aoc3RlcHMsIGdyYWRpZW50KTtcbiAgICByZXR1cm4gZ3JhZGllbnQ7XG59XG4vKipcbiAqIOWwhui+ueWSjOWhq+WFheiuvue9rueahOminOiJsui9rOaNouaIkOWchuW9oua4kOWPmOWvueixoVxuICogQHBhcmFtIHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9IGNvbnRleHQgY2FudmFzIOS4iuS4i+aWh1xuICogQHBhcmFtIHtJRWxlbWVudH0gICAgICAgICAgICAgICAgIGVsZW1lbnQgIOWbvuW9ouWFg+e0oFxuICogQHBhcmFtIHtzdHJpbmd9ICAgICAgICAgICAgICAgICAgIGdyYWRpZW50U3RyICAg6aKc6ImyXG4gKiBAcmV0dXJucyB7YW55fSDmuJDlj5jlr7nosaFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUmFkaWFsR3JhZGllbnQoY29udGV4dCwgZWxlbWVudCwgZ3JhZGllbnRTdHIpIHtcbiAgICB2YXIgYXJyID0gcmVnZXhSRy5leGVjKGdyYWRpZW50U3RyKTtcbiAgICB2YXIgZnggPSBwYXJzZUZsb2F0KGFyclsxXSk7XG4gICAgdmFyIGZ5ID0gcGFyc2VGbG9hdChhcnJbMl0pO1xuICAgIHZhciBmciA9IHBhcnNlRmxvYXQoYXJyWzNdKTtcbiAgICB2YXIgc3RlcHMgPSBhcnJbNF07XG4gICAgLy8g546v5Y2K5b6E5Li6MOaXtu+8jOm7mOiupOaXoOa4kOWPmO+8jOWPlua4kOWPmOW6j+WIl+eahOacgOWQjuS4gOS4quminOiJslxuICAgIGlmIChmciA9PT0gMCkge1xuICAgICAgICB2YXIgY29sb3JzID0gc3RlcHMubWF0Y2gocmVnZXhDb2xvclN0b3ApO1xuICAgICAgICByZXR1cm4gY29sb3JzW2NvbG9ycy5sZW5ndGggLSAxXS5zcGxpdCgnOicpWzFdO1xuICAgIH1cbiAgICB2YXIgYm94ID0gZWxlbWVudC5nZXRCQm94KCk7XG4gICAgdmFyIHdpZHRoID0gYm94Lm1heFggLSBib3gubWluWDtcbiAgICB2YXIgaGVpZ2h0ID0gYm94Lm1heFkgLSBib3gubWluWTtcbiAgICB2YXIgciA9IE1hdGguc3FydCh3aWR0aCAqIHdpZHRoICsgaGVpZ2h0ICogaGVpZ2h0KSAvIDI7XG4gICAgdmFyIGdyYWRpZW50ID0gY29udGV4dC5jcmVhdGVSYWRpYWxHcmFkaWVudChib3gubWluWCArIHdpZHRoICogZngsIGJveC5taW5ZICsgaGVpZ2h0ICogZnksIDAsIGJveC5taW5YICsgd2lkdGggLyAyLCBib3gubWluWSArIGhlaWdodCAvIDIsIGZyICogcik7XG4gICAgYWRkU3RvcChzdGVwcywgZ3JhZGllbnQpO1xuICAgIHJldHVybiBncmFkaWVudDtcbn1cbi8qKlxuICog6L655ZKM5aGr5YWF6K6+572u55qE6aKc6Imy6L2s5o2i5oiQIHBhdHRlcm5cbiAqIEBwYXJhbSB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEfSBjb250ZXh0IGNhbnZhcyDkuIrkuIvmlodcbiAqIEBwYXJhbSB7SUVsZW1lbnR9ICAgICAgICAgICAgICAgICBlbGVtZW50ICDlm77lvaLlhYPntKBcbiAqIEBwYXJhbSB7c3RyaW5nfSAgICAgICAgICAgICAgICAgICBwYXR0ZXJuU3RyICAg55Sf5oiQIHBhdHRlcm4g55qE5a2X56ym5LiyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVBhdHRlcm4oY29udGV4dCwgZWxlbWVudCwgcGF0dGVyblN0cikge1xuICAgIC8vIOWcqOi9rOaNoui/h+eoi+S4rei/m+ihjOS6hue8k+WtmFxuICAgIGlmIChlbGVtZW50LmdldCgncGF0dGVyblNvdXJjZScpICYmIGVsZW1lbnQuZ2V0KCdwYXR0ZXJuU291cmNlJykgPT09IHBhdHRlcm5TdHIpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCdwYXR0ZXJuJyk7XG4gICAgfVxuICAgIHZhciBwYXR0ZXJuO1xuICAgIHZhciBpbWc7XG4gICAgdmFyIGFyciA9IHJlZ2V4UFIuZXhlYyhwYXR0ZXJuU3RyKTtcbiAgICB2YXIgcmVwZWF0ID0gYXJyWzFdO1xuICAgIHZhciBzb3VyY2UgPSBhcnJbMl07XG4gICAgLy8gRnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gcGF0dGVybiBsb2Fkc1xuICAgIGZ1bmN0aW9uIG9ubG9hZCgpIHtcbiAgICAgICAgLy8gQ3JlYXRlIHBhdHRlcm5cbiAgICAgICAgcGF0dGVybiA9IGNvbnRleHQuY3JlYXRlUGF0dGVybihpbWcsIHJlcGVhdCk7XG4gICAgICAgIGVsZW1lbnQuc2V0KCdwYXR0ZXJuJywgcGF0dGVybik7IC8vIGJlIGEgY2FjaGVcbiAgICAgICAgZWxlbWVudC5zZXQoJ3BhdHRlcm5Tb3VyY2UnLCBwYXR0ZXJuU3RyKTtcbiAgICB9XG4gICAgc3dpdGNoIChyZXBlYXQpIHtcbiAgICAgICAgY2FzZSAnYSc6XG4gICAgICAgICAgICByZXBlYXQgPSAncmVwZWF0JztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd4JzpcbiAgICAgICAgICAgIHJlcGVhdCA9ICdyZXBlYXQteCc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAneSc6XG4gICAgICAgICAgICByZXBlYXQgPSAncmVwZWF0LXknO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ24nOlxuICAgICAgICAgICAgcmVwZWF0ID0gJ25vLXJlcGVhdCc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJlcGVhdCA9ICduby1yZXBlYXQnO1xuICAgIH1cbiAgICBpbWcgPSBuZXcgSW1hZ2UoKTtcbiAgICAvLyBJZiBzb3VyY2UgVVJMIGlzIG5vdCBhIGRhdGEgVVJMXG4gICAgaWYgKCFzb3VyY2UubWF0Y2goL15kYXRhOi9pKSkge1xuICAgICAgICAvLyBTZXQgY3Jvc3NPcmlnaW4gZm9yIHRoaXMgaW1hZ2VcbiAgICAgICAgaW1nLmNyb3NzT3JpZ2luID0gJ0Fub255bW91cyc7XG4gICAgfVxuICAgIGltZy5zcmMgPSBzb3VyY2U7XG4gICAgaWYgKGltZy5jb21wbGV0ZSkge1xuICAgICAgICBvbmxvYWQoKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGltZy5vbmxvYWQgPSBvbmxvYWQ7XG4gICAgICAgIC8vIEZpeCBvbmxvYWQoKSBidWcgaW4gSUU5XG4gICAgICAgIGltZy5zcmMgPSBpbWcuc3JjO1xuICAgIH1cbiAgICByZXR1cm4gcGF0dGVybjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVN0eWxlKGNvbnRleHQsIGVsZW1lbnQsIGNvbG9yKSB7XG4gICAgdmFyIGJib3ggPSBlbGVtZW50LmdldEJCb3goKTtcbiAgICBpZiAoaXNOYU4oYmJveC54KSB8fCBpc05hTihiYm94LnkpIHx8IGlzTmFOKGJib3gud2lkdGgpIHx8IGlzTmFOKGJib3guaGVpZ2h0KSkge1xuICAgICAgICByZXR1cm4gY29sb3I7XG4gICAgfVxuICAgIGlmIChpc1N0cmluZyhjb2xvcikpIHtcbiAgICAgICAgaWYgKGNvbG9yWzFdID09PSAnKCcgfHwgY29sb3JbMl0gPT09ICcoJykge1xuICAgICAgICAgICAgaWYgKGNvbG9yWzBdID09PSAnbCcpIHtcbiAgICAgICAgICAgICAgICAvLyByZWdleExHLnRlc3QoY29sb3IpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlTGluZUdyYWRpZW50KGNvbnRleHQsIGVsZW1lbnQsIGNvbG9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb2xvclswXSA9PT0gJ3InKSB7XG4gICAgICAgICAgICAgICAgLy8gcmVnZXhSRy50ZXN0KGNvbG9yKVxuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZVJhZGlhbEdyYWRpZW50KGNvbnRleHQsIGVsZW1lbnQsIGNvbG9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb2xvclswXSA9PT0gJ3AnKSB7XG4gICAgICAgICAgICAgICAgLy8gcmVnZXhQUi50ZXN0KGNvbG9yKVxuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZVBhdHRlcm4oY29udGV4dCwgZWxlbWVudCwgY29sb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb2xvcjtcbiAgICB9XG4gICAgaWYgKGNvbG9yIGluc3RhbmNlb2YgQ2FudmFzUGF0dGVybikge1xuICAgICAgICByZXR1cm4gY29sb3I7XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUmFkaXVzKHJhZGl1cykge1xuICAgIHZhciByMSA9IDA7XG4gICAgdmFyIHIyID0gMDtcbiAgICB2YXIgcjMgPSAwO1xuICAgIHZhciByNCA9IDA7XG4gICAgaWYgKGlzQXJyYXkocmFkaXVzKSkge1xuICAgICAgICBpZiAocmFkaXVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgcjEgPSByMiA9IHIzID0gcjQgPSByYWRpdXNbMF07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocmFkaXVzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgcjEgPSByMyA9IHJhZGl1c1swXTtcbiAgICAgICAgICAgIHIyID0gcjQgPSByYWRpdXNbMV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocmFkaXVzLmxlbmd0aCA9PT0gMykge1xuICAgICAgICAgICAgcjEgPSByYWRpdXNbMF07XG4gICAgICAgICAgICByMiA9IHI0ID0gcmFkaXVzWzFdO1xuICAgICAgICAgICAgcjMgPSByYWRpdXNbMl07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByMSA9IHJhZGl1c1swXTtcbiAgICAgICAgICAgIHIyID0gcmFkaXVzWzFdO1xuICAgICAgICAgICAgcjMgPSByYWRpdXNbMl07XG4gICAgICAgICAgICByNCA9IHJhZGl1c1szXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcjEgPSByMiA9IHIzID0gcjQgPSByYWRpdXM7XG4gICAgfVxuICAgIHJldHVybiBbcjEsIHIyLCByMywgcjRdO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGFyc2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/parse.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/path.js":
/*!*****************************************************************************!*\
!*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/path.js ***!
\*****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/index.js\");\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/index.js\");\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/_@antv_matrix-util@3.1.0-beta.3@@antv/matrix-util/esm/index.js\");\n/* harmony import */ var gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! gl-matrix/vec3 */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/vec3.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/util.js\");\n/* harmony import */ var _in_stroke_line__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./in-stroke/line */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/line.js\");\n/* harmony import */ var _in_stroke_arc__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./in-stroke/arc */ \"./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/in-stroke/arc.js\");\n\n/**\n * @fileoverview path 的一些工具\n * @author dxq613@gmail.com\n */\n\n\n\n\n\n\n\n\nvar transform = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_3__[\"ext\"].transform;\nfunction hasArc(path) {\n var hasArc = false;\n var count = path.length;\n for (var i = 0; i < count; i++) {\n var params = path[i];\n var cmd = params[0];\n if (cmd === 'C' || cmd === 'A' || cmd === 'Q') {\n hasArc = true;\n break;\n }\n }\n return hasArc;\n}\nfunction isPointInStroke(segments, lineWidth, x, y, length) {\n var isHit = false;\n var halfWidth = lineWidth / 2;\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n var currentPoint = segment.currentPoint, params = segment.params, prePoint = segment.prePoint, box = segment.box;\n // 如果在前面已经生成过包围盒,直接按照包围盒计算\n if (box && !Object(_util__WEBPACK_IMPORTED_MODULE_5__[\"inBox\"])(box.x - halfWidth, box.y - halfWidth, box.width + lineWidth, box.height + lineWidth, x, y)) {\n continue;\n }\n switch (segment.command) {\n // L 和 Z 都是直线, M 不进行拾取\n case 'L':\n case 'Z':\n isHit = Object(_in_stroke_line__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(prePoint[0], prePoint[1], currentPoint[0], currentPoint[1], lineWidth, x, y);\n break;\n case 'Q':\n var qDistance = _antv_g_math__WEBPACK_IMPORTED_MODULE_2__[\"Quad\"].pointDistance(prePoint[0], prePoint[1], params[1], params[2], params[3], params[4], x, y);\n isHit = qDistance <= lineWidth / 2;\n break;\n case 'C':\n var cDistance = _antv_g_math__WEBPACK_IMPORTED_MODULE_2__[\"Cubic\"].pointDistance(prePoint[0], // 上一段结束位置, 即 C 的起始点\n prePoint[1], params[1], // 'C' 的参数,1、2 为第一个控制点,3、4 为第二个控制点,5、6 为结束点\n params[2], params[3], params[4], params[5], params[6], x, y, length);\n isHit = cDistance <= lineWidth / 2;\n break;\n case 'A':\n // 计算点到椭圆圆弧的距离,暂时使用近似算法,后面可以改成切割法求最近距离\n var arcParams = segment.arcParams;\n var cx = arcParams.cx, cy = arcParams.cy, rx = arcParams.rx, ry = arcParams.ry, startAngle = arcParams.startAngle, endAngle = arcParams.endAngle, xRotation = arcParams.xRotation;\n var p = [x, y, 1];\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n var m = transform(null, [\n ['t', -cx, -cy],\n ['r', -xRotation],\n ['s', 1 / scaleX, 1 / scaleY],\n ]);\n gl_matrix_vec3__WEBPACK_IMPORTED_MODULE_4__[\"transformMat3\"](p, p, m);\n isHit = Object(_in_stroke_arc__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(0, 0, r, startAngle, endAngle, lineWidth, p[0], p[1]);\n break;\n default:\n break;\n }\n if (isHit) {\n break;\n }\n }\n return isHit;\n}\n/**\n * 提取出内部的闭合多边形和非闭合的多边形,假设 path 不存在圆弧\n * @param {Array} path 路径\n * @returns {Array} 点的集合\n */\nfunction extractPolygons(path) {\n var count = path.length;\n var polygons = [];\n var polylines = [];\n var points = []; // 防止第一个命令不是 'M'\n for (var i = 0; i < count; i++) {\n var params = path[i];\n var cmd = params[0];\n if (cmd === 'M') {\n // 遇到 'M' 判定是否是新数组,新数组中没有点\n if (points.length) {\n // 如果存在点,则说明没有遇到 'Z',开始了一个新的多边形\n polylines.push(points);\n points = []; // 创建新的点\n }\n points.push([params[1], params[2]]);\n }\n else if (cmd === 'Z') {\n if (points.length) {\n // 存在点\n polygons.push(points);\n points = []; // 开始新的点集合\n }\n // 如果不存在点,同时 'Z',则说明是错误,不处理\n }\n else {\n points.push([params[1], params[2]]);\n }\n }\n // 说明 points 未放入 polygons 或者 polyline\n // 仅当只有一个 M,没有 Z 时会发生这种情况\n if (points.length > 0) {\n polylines.push(points);\n }\n return {\n polygons: polygons,\n polylines: polylines,\n };\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({ hasArc: hasArc, extractPolygons: extractPolygons, isPointInStroke: isPointInStroke }, _antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"PathUtil\"]));\n//# sourceMappingURL=path.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC9wYXRoLmpzP2ZkNjMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ3dDO0FBQ1E7QUFDRTtBQUNWO0FBQ0Q7QUFDUjtBQUNPO0FBQ0Y7QUFDcEMsZ0JBQWdCLHFEQUFHO0FBQ25CO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixXQUFXO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixxQkFBcUI7QUFDeEM7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG1EQUFLO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QiwrREFBTTtBQUM5QjtBQUNBO0FBQ0EsZ0NBQWdDLGlEQUFRO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyxrREFBUztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDREQUFrQjtBQUNsQyx3QkFBd0IsOERBQUs7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCLG1CQUFtQixXQUFXO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZSxxSEFBUSxFQUFFLHFGQUFxRixFQUFFLHFEQUFRLENBQUMsRUFBQztBQUMxSCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1jYW52YXNAMC41LjEyQEBhbnR2L2ctY2FudmFzL2VzbS91dGlsL3BhdGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IHBhdGgg55qE5LiA5Lqb5bel5YW3XG4gKiBAYXV0aG9yIGR4cTYxM0BnbWFpbC5jb21cbiAqL1xuaW1wb3J0IHsgUGF0aFV0aWwgfSBmcm9tICdAYW50di9nLWJhc2UnO1xuaW1wb3J0IHsgUXVhZCBhcyBRdWFkVXRpbCB9IGZyb20gJ0BhbnR2L2ctbWF0aCc7XG5pbXBvcnQgeyBDdWJpYyBhcyBDdWJpY1V0aWwgfSBmcm9tICdAYW50di9nLW1hdGgnO1xuaW1wb3J0IHsgZXh0IH0gZnJvbSAnQGFudHYvbWF0cml4LXV0aWwnO1xuaW1wb3J0ICogYXMgdmVjMyBmcm9tICdnbC1tYXRyaXgvdmVjMyc7XG5pbXBvcnQgeyBpbkJveCB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgaW5MaW5lIGZyb20gJy4vaW4tc3Ryb2tlL2xpbmUnO1xuaW1wb3J0IGluQXJjIGZyb20gJy4vaW4tc3Ryb2tlL2FyYyc7XG52YXIgdHJhbnNmb3JtID0gZXh0LnRyYW5zZm9ybTtcbmZ1bmN0aW9uIGhhc0FyYyhwYXRoKSB7XG4gICAgdmFyIGhhc0FyYyA9IGZhbHNlO1xuICAgIHZhciBjb3VudCA9IHBhdGgubGVuZ3RoO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgICB2YXIgcGFyYW1zID0gcGF0aFtpXTtcbiAgICAgICAgdmFyIGNtZCA9IHBhcmFtc1swXTtcbiAgICAgICAgaWYgKGNtZCA9PT0gJ0MnIHx8IGNtZCA9PT0gJ0EnIHx8IGNtZCA9PT0gJ1EnKSB7XG4gICAgICAgICAgICBoYXNBcmMgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGhhc0FyYztcbn1cbmZ1bmN0aW9uIGlzUG9pbnRJblN0cm9rZShzZWdtZW50cywgbGluZVdpZHRoLCB4LCB5LCBsZW5ndGgpIHtcbiAgICB2YXIgaXNIaXQgPSBmYWxzZTtcbiAgICB2YXIgaGFsZldpZHRoID0gbGluZVdpZHRoIC8gMjtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlZ21lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBzZWdtZW50ID0gc2VnbWVudHNbaV07XG4gICAgICAgIHZhciBjdXJyZW50UG9pbnQgPSBzZWdtZW50LmN1cnJlbnRQb2ludCwgcGFyYW1zID0gc2VnbWVudC5wYXJhbXMsIHByZVBvaW50ID0gc2VnbWVudC5wcmVQb2ludCwgYm94ID0gc2VnbWVudC5ib3g7XG4gICAgICAgIC8vIOWmguaenOWcqOWJjemdouW3sue7j+eUn+aIkOi/h+WMheWbtOebku+8jOebtOaOpeaMieeFp+WMheWbtOebkuiuoeeul1xuICAgICAgICBpZiAoYm94ICYmICFpbkJveChib3gueCAtIGhhbGZXaWR0aCwgYm94LnkgLSBoYWxmV2lkdGgsIGJveC53aWR0aCArIGxpbmVXaWR0aCwgYm94LmhlaWdodCArIGxpbmVXaWR0aCwgeCwgeSkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAoc2VnbWVudC5jb21tYW5kKSB7XG4gICAgICAgICAgICAvLyBMIOWSjCBaIOmDveaYr+ebtOe6v++8jCBNIOS4jei/m+ihjOaLvuWPllxuICAgICAgICAgICAgY2FzZSAnTCc6XG4gICAgICAgICAgICBjYXNlICdaJzpcbiAgICAgICAgICAgICAgICBpc0hpdCA9IGluTGluZShwcmVQb2ludFswXSwgcHJlUG9pbnRbMV0sIGN1cnJlbnRQb2ludFswXSwgY3VycmVudFBvaW50WzFdLCBsaW5lV2lkdGgsIHgsIHkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnUSc6XG4gICAgICAgICAgICAgICAgdmFyIHFEaXN0YW5jZSA9IFF1YWRVdGlsLnBvaW50RGlzdGFuY2UocHJlUG9pbnRbMF0sIHByZVBvaW50WzFdLCBwYXJhbXNbMV0sIHBhcmFtc1syXSwgcGFyYW1zWzNdLCBwYXJhbXNbNF0sIHgsIHkpO1xuICAgICAgICAgICAgICAgIGlzSGl0ID0gcURpc3RhbmNlIDw9IGxpbmVXaWR0aCAvIDI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdDJzpcbiAgICAgICAgICAgICAgICB2YXIgY0Rpc3RhbmNlID0gQ3ViaWNVdGlsLnBvaW50RGlzdGFuY2UocHJlUG9pbnRbMF0sIC8vIOS4iuS4gOautee7k+adn+S9jee9riwg5Y2zIEMg55qE6LW35aeL54K5XG4gICAgICAgICAgICAgICAgcHJlUG9pbnRbMV0sIHBhcmFtc1sxXSwgLy8gJ0MnIOeahOWPguaVsO+8jDHjgIEyIOS4uuesrOS4gOS4quaOp+WItueCue+8jDPjgIE0IOS4uuesrOS6jOS4quaOp+WItueCue+8jDXjgIE2IOS4uue7k+adn+eCuVxuICAgICAgICAgICAgICAgIHBhcmFtc1syXSwgcGFyYW1zWzNdLCBwYXJhbXNbNF0sIHBhcmFtc1s1XSwgcGFyYW1zWzZdLCB4LCB5LCBsZW5ndGgpO1xuICAgICAgICAgICAgICAgIGlzSGl0ID0gY0Rpc3RhbmNlIDw9IGxpbmVXaWR0aCAvIDI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdBJzpcbiAgICAgICAgICAgICAgICAvLyDorqHnrpfngrnliLDmpK3lnIblnIblvKfnmoTot53nprvvvIzmmoLml7bkvb/nlKjov5HkvLznrpfms5XvvIzlkI7pnaLlj6/ku6XmlLnmiJDliIflibLms5XmsYLmnIDov5Hot53nprtcbiAgICAgICAgICAgICAgICB2YXIgYXJjUGFyYW1zID0gc2VnbWVudC5hcmNQYXJhbXM7XG4gICAgICAgICAgICAgICAgdmFyIGN4ID0gYXJjUGFyYW1zLmN4LCBjeSA9IGFyY1BhcmFtcy5jeSwgcnggPSBhcmNQYXJhbXMucngsIHJ5ID0gYXJjUGFyYW1zLnJ5LCBzdGFydEFuZ2xlID0gYXJjUGFyYW1zLnN0YXJ0QW5nbGUsIGVuZEFuZ2xlID0gYXJjUGFyYW1zLmVuZEFuZ2xlLCB4Um90YXRpb24gPSBhcmNQYXJhbXMueFJvdGF0aW9uO1xuICAgICAgICAgICAgICAgIHZhciBwID0gW3gsIHksIDFdO1xuICAgICAgICAgICAgICAgIHZhciByID0gcnggPiByeSA/IHJ4IDogcnk7XG4gICAgICAgICAgICAgICAgdmFyIHNjYWxlWCA9IHJ4ID4gcnkgPyAxIDogcnggLyByeTtcbiAgICAgICAgICAgICAgICB2YXIgc2NhbGVZID0gcnggPiByeSA/IHJ5IC8gcnggOiAxO1xuICAgICAgICAgICAgICAgIHZhciBtID0gdHJhbnNmb3JtKG51bGwsIFtcbiAgICAgICAgICAgICAgICAgICAgWyd0JywgLWN4LCAtY3ldLFxuICAgICAgICAgICAgICAgICAgICBbJ3InLCAteFJvdGF0aW9uXSxcbiAgICAgICAgICAgICAgICAgICAgWydzJywgMSAvIHNjYWxlWCwgMSAvIHNjYWxlWV0sXG4gICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgdmVjMy50cmFuc2Zvcm1NYXQzKHAsIHAsIG0pO1xuICAgICAgICAgICAgICAgIGlzSGl0ID0gaW5BcmMoMCwgMCwgciwgc3RhcnRBbmdsZSwgZW5kQW5nbGUsIGxpbmVXaWR0aCwgcFswXSwgcFsxXSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0hpdCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlzSGl0O1xufVxuLyoqXG4gKiDmj5Dlj5blh7rlhoXpg6jnmoTpl63lkIjlpJrovrnlvaLlkozpnZ7pl63lkIjnmoTlpJrovrnlvaLvvIzlgYforr4gcGF0aCDkuI3lrZjlnKjlnIblvKdcbiAqIEBwYXJhbSB7QXJyYXl9IHBhdGgg6Lev5b6EXG4gKiBAcmV0dXJucyB7QXJyYXl9IOeCueeahOmbhuWQiFxuICovXG5mdW5jdGlvbiBleHRyYWN0UG9seWdvbnMocGF0aCkge1xuICAgIHZhciBjb3VudCA9IHBhdGgubGVuZ3RoO1xuICAgIHZhciBwb2x5Z29ucyA9IFtdO1xuICAgIHZhciBwb2x5bGluZXMgPSBbXTtcbiAgICB2YXIgcG9pbnRzID0gW107IC8vIOmYsuatouesrOS4gOS4quWRveS7pOS4jeaYryAnTSdcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICAgICAgdmFyIHBhcmFtcyA9IHBhdGhbaV07XG4gICAgICAgIHZhciBjbWQgPSBwYXJhbXNbMF07XG4gICAgICAgIGlmIChjbWQgPT09ICdNJykge1xuICAgICAgICAgICAgLy8g6YGH5YiwICdNJyDliKTlrprmmK/lkKbmmK/mlrDmlbDnu4TvvIzmlrDmlbDnu4TkuK3msqHmnInngrlcbiAgICAgICAgICAgIGlmIChwb2ludHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgLy8g5aaC5p6c5a2Y5Zyo54K577yM5YiZ6K+05piO5rKh5pyJ6YGH5YiwICdaJ++8jOW8gOWni+S6huS4gOS4quaWsOeahOWkmui+ueW9olxuICAgICAgICAgICAgICAgIHBvbHlsaW5lcy5wdXNoKHBvaW50cyk7XG4gICAgICAgICAgICAgICAgcG9pbnRzID0gW107IC8vIOWIm+W7uuaWsOeahOeCuVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcG9pbnRzLnB1c2goW3BhcmFtc1sxXSwgcGFyYW1zWzJdXSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY21kID09PSAnWicpIHtcbiAgICAgICAgICAgIGlmIChwb2ludHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgLy8g5a2Y5Zyo54K5XG4gICAgICAgICAgICAgICAgcG9seWdvbnMucHVzaChwb2ludHMpO1xuICAgICAgICAgICAgICAgIHBvaW50cyA9IFtdOyAvLyDlvIDlp4vmlrDnmoTngrnpm4blkIhcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIOWmguaenOS4jeWtmOWcqOeCue+8jOWQjOaXtiAnWifvvIzliJnor7TmmI7mmK/plJnor6/vvIzkuI3lpITnkIZcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKFtwYXJhbXNbMV0sIHBhcmFtc1syXV0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIOivtOaYjiBwb2ludHMg5pyq5pS+5YWlIHBvbHlnb25zIOaIluiAhSBwb2x5bGluZVxuICAgIC8vIOS7heW9k+WPquacieS4gOS4qiBN77yM5rKh5pyJIFog5pe25Lya5Y+R55Sf6L+Z56eN5oOF5Ya1XG4gICAgaWYgKHBvaW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHBvbHlsaW5lcy5wdXNoKHBvaW50cyk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHBvbHlnb25zOiBwb2x5Z29ucyxcbiAgICAgICAgcG9seWxpbmVzOiBwb2x5bGluZXMsXG4gICAgfTtcbn1cbmV4cG9ydCBkZWZhdWx0IF9fYXNzaWduKHsgaGFzQXJjOiBoYXNBcmMsIGV4dHJhY3RQb2x5Z29uczogZXh0cmFjdFBvbHlnb25zLCBpc1BvaW50SW5TdHJva2U6IGlzUG9pbnRJblN0cm9rZSB9LCBQYXRoVXRpbCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wYXRoLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/path.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/util.js":
/*!*****************************************************************************!*\
!*** ./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/util.js ***!
\*****************************************************************************/
/*! exports provided: getPixelRatio, distance, inBox, intersectRect, mergeRegion, isSamePoint, isNil, isString, isFunction, isArray, each, toRadian, mod, isNumberEqual, requestAnimationFrame, clearAnimationFrame */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPixelRatio\", function() { return getPixelRatio; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"distance\", function() { return distance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inBox\", function() { return inBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"intersectRect\", function() { return intersectRect; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeRegion\", function() { return mergeRegion; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSamePoint\", function() { return isSamePoint; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNil\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNil\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isString\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isArray\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"each\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"toRadian\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"toRadian\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"mod\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"mod\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isNumberEqual\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumberEqual\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"requestAnimationFrame\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"requestAnimationFrame\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"clearAnimationFrame\", function() { return _antv_util__WEBPACK_IMPORTED_MODULE_0__[\"clearAnimationFrame\"]; });\n\nfunction getPixelRatio() {\n return window ? window.devicePixelRatio : 1;\n}\n/**\n * 两点之间的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n */\nfunction distance(x1, y1, x2, y2) {\n var dx = x1 - x2;\n var dy = y1 - y2;\n return Math.sqrt(dx * dx + dy * dy);\n}\n/**\n * 是否在包围盒内\n * @param {number} minX 包围盒开始的点 x\n * @param {number} minY 包围盒开始的点 y\n * @param {number} width 宽度\n * @param {number} height 高度\n * @param {[type]} x 检测点的 x\n * @param {[type]} y 监测点的 y\n */\nfunction inBox(minX, minY, width, height, x, y) {\n return x >= minX && x <= minX + width && y >= minY && y <= minY + height;\n}\nfunction intersectRect(box1, box2) {\n return !(box2.minX > box1.maxX || box2.maxX < box1.minX || box2.minY > box1.maxY || box2.maxY < box1.minY);\n}\n// 合并两个区域\nfunction mergeRegion(region1, region2) {\n if (!region1 || !region2) {\n return region1 || region2;\n }\n return {\n minX: Math.min(region1.minX, region2.minX),\n minY: Math.min(region1.minY, region2.minY),\n maxX: Math.max(region1.maxX, region2.maxX),\n maxY: Math.max(region1.maxY, region2.maxY),\n };\n}\n/**\n * 判断两个点是否重合,点坐标的格式为 [x, y]\n * @param {Array} point1 第一个点\n * @param {Array} point2 第二个点\n */\nfunction isSamePoint(point1, point2) {\n return point1[0] === point2[0] && point1[1] === point2[1];\n}\n\n//# sourceMappingURL=util.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctY2FudmFzQDAuNS4xMkBAYW50di9nLWNhbnZhcy9lc20vdXRpbC91dGlsLmpzP2FhMDciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQjtBQUNPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxNQUFNO0FBQ2pCO0FBQ087QUFDUDtBQUNBO0FBQ21KO0FBQ25KIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLWNhbnZhc0AwLjUuMTJAQGFudHYvZy1jYW52YXMvZXNtL3V0aWwvdXRpbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBnZXRQaXhlbFJhdGlvKCkge1xuICAgIHJldHVybiB3aW5kb3cgPyB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyA6IDE7XG59XG4vKipcbiAqIOS4pOeCueS5i+mXtOeahOi3neemu1xuICogQHBhcmFtIHtudW1iZXJ9IHgxIOi1t+Wni+eCuSB4XG4gKiBAcGFyYW0ge251bWJlcn0geTEg6LW35aeL54K5IHlcbiAqIEBwYXJhbSB7bnVtYmVyfSB4MiDnu5PmnZ/ngrkgeFxuICogQHBhcmFtIHtudW1iZXJ9IHkyIOe7k+adn+eCuSB5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaXN0YW5jZSh4MSwgeTEsIHgyLCB5Mikge1xuICAgIHZhciBkeCA9IHgxIC0geDI7XG4gICAgdmFyIGR5ID0geTEgLSB5MjtcbiAgICByZXR1cm4gTWF0aC5zcXJ0KGR4ICogZHggKyBkeSAqIGR5KTtcbn1cbi8qKlxuICog5piv5ZCm5Zyo5YyF5Zu055uS5YaFXG4gKiBAcGFyYW0ge251bWJlcn0gbWluWCAgIOWMheWbtOebkuW8gOWni+eahOeCuSB4XG4gKiBAcGFyYW0ge251bWJlcn0gbWluWSAgIOWMheWbtOebkuW8gOWni+eahOeCuSB5XG4gKiBAcGFyYW0ge251bWJlcn0gd2lkdGggIOWuveW6plxuICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodCDpq5jluqZcbiAqIEBwYXJhbSB7W3R5cGVdfSB4ICAgICAg5qOA5rWL54K555qEIHhcbiAqIEBwYXJhbSB7W3R5cGVdfSB5ICAgICAg55uR5rWL54K555qEIHlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluQm94KG1pblgsIG1pblksIHdpZHRoLCBoZWlnaHQsIHgsIHkpIHtcbiAgICByZXR1cm4geCA+PSBtaW5YICYmIHggPD0gbWluWCArIHdpZHRoICYmIHkgPj0gbWluWSAmJiB5IDw9IG1pblkgKyBoZWlnaHQ7XG59XG5leHBvcnQgZnVuY3Rpb24gaW50ZXJzZWN0UmVjdChib3gxLCBib3gyKSB7XG4gICAgcmV0dXJuICEoYm94Mi5taW5YID4gYm94MS5tYXhYIHx8IGJveDIubWF4WCA8IGJveDEubWluWCB8fCBib3gyLm1pblkgPiBib3gxLm1heFkgfHwgYm94Mi5tYXhZIDwgYm94MS5taW5ZKTtcbn1cbi8vIOWQiOW5tuS4pOS4quWMuuWfn1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlUmVnaW9uKHJlZ2lvbjEsIHJlZ2lvbjIpIHtcbiAgICBpZiAoIXJlZ2lvbjEgfHwgIXJlZ2lvbjIpIHtcbiAgICAgICAgcmV0dXJuIHJlZ2lvbjEgfHwgcmVnaW9uMjtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbWluWDogTWF0aC5taW4ocmVnaW9uMS5taW5YLCByZWdpb24yLm1pblgpLFxuICAgICAgICBtaW5ZOiBNYXRoLm1pbihyZWdpb24xLm1pblksIHJlZ2lvbjIubWluWSksXG4gICAgICAgIG1heFg6IE1hdGgubWF4KHJlZ2lvbjEubWF4WCwgcmVnaW9uMi5tYXhYKSxcbiAgICAgICAgbWF4WTogTWF0aC5tYXgocmVnaW9uMS5tYXhZLCByZWdpb24yLm1heFkpLFxuICAgIH07XG59XG4vKipcbiAqIOWIpOaWreS4pOS4queCueaYr+WQpumHjeWQiO+8jOeCueWdkOagh+eahOagvOW8j+S4uiBbeCwgeV1cbiAqIEBwYXJhbSB7QXJyYXl9IHBvaW50MSDnrKzkuIDkuKrngrlcbiAqIEBwYXJhbSB7QXJyYXl9IHBvaW50MiDnrKzkuozkuKrngrlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU2FtZVBvaW50KHBvaW50MSwgcG9pbnQyKSB7XG4gICAgcmV0dXJuIHBvaW50MVswXSA9PT0gcG9pbnQyWzBdICYmIHBvaW50MVsxXSA9PT0gcG9pbnQyWzFdO1xufVxuZXhwb3J0IHsgaXNOaWwsIGlzU3RyaW5nLCBpc0Z1bmN0aW9uLCBpc0FycmF5LCBlYWNoLCB0b1JhZGlhbiwgbW9kLCBpc051bWJlckVxdWFsLCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUsIGNsZWFyQW5pbWF0aW9uRnJhbWUsIH0gZnJvbSAnQGFudHYvdXRpbCc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD11dGlsLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-canvas@0.5.12@@antv/g-canvas/esm/util/util.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/arc.js":
/*!******************************************************************!*\
!*** ./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/arc.js ***!
\******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/util.js\");\n/* harmony import */ var _ellipse__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ellipse */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/ellipse.js\");\n\n\n// 偏导数 x\nfunction derivativeXAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, angle) {\n return -1 * rx * Math.cos(xRotation) * Math.sin(angle) - ry * Math.sin(xRotation) * Math.cos(angle);\n}\n// 偏导数 y\nfunction derivativeYAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, angle) {\n return -1 * rx * Math.sin(xRotation) * Math.sin(angle) + ry * Math.cos(xRotation) * Math.cos(angle);\n}\n// x 的极值\nfunction xExtrema(rx, ry, xRotation) {\n return Math.atan((-ry / rx) * Math.tan(xRotation));\n}\n// y 的极值\nfunction yExtrema(rx, ry, xRotation) {\n return Math.atan(ry / (rx * Math.tan(xRotation)));\n}\n// 根据角度求 x 坐标\nfunction xAt(cx, cy, rx, ry, xRotation, angle) {\n return rx * Math.cos(xRotation) * Math.cos(angle) - ry * Math.sin(xRotation) * Math.sin(angle) + cx;\n}\n// 根据角度求 y 坐标\nfunction yAt(cx, cy, rx, ry, xRotation, angle) {\n return rx * Math.sin(xRotation) * Math.cos(angle) + ry * Math.cos(xRotation) * Math.sin(angle) + cy;\n}\n// 获取点在椭圆上的角度\nfunction getAngle(rx, ry, x0, y0) {\n var angle = Math.atan2(y0 * rx, x0 * ry);\n // 转换到 0 - 2PI 内\n return (angle + Math.PI * 2) % (Math.PI * 2);\n}\n// 根据角度获取,x,y\nfunction getPoint(rx, ry, angle) {\n return {\n x: rx * Math.cos(angle),\n y: ry * Math.sin(angle),\n };\n}\n// 旋转\nfunction rotate(x, y, angle) {\n var cos = Math.cos(angle);\n var sin = Math.sin(angle);\n return [x * cos - y * sin, x * sin + y * cos];\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n /**\n * 计算包围盒\n * @param {number} cx 圆心 x\n * @param {number} cy 圆心 y\n * @param {number} rx x 轴方向的半径\n * @param {number} ry y 轴方向的半径\n * @param {number} xRotation 旋转角度\n * @param {number} startAngle 起始角度\n * @param {number} endAngle 结束角度\n * @return {object} 包围盒对象\n */\n box: function (cx, cy, rx, ry, xRotation, startAngle, endAngle) {\n var xDim = xExtrema(rx, ry, xRotation);\n var minX = Infinity;\n var maxX = -Infinity;\n var xs = [startAngle, endAngle];\n for (var i = -Math.PI * 2; i <= Math.PI * 2; i += Math.PI) {\n var xAngle = xDim + i;\n if (startAngle < endAngle) {\n if (startAngle < xAngle && xAngle < endAngle) {\n xs.push(xAngle);\n }\n }\n else {\n if (endAngle < xAngle && xAngle < startAngle) {\n xs.push(xAngle);\n }\n }\n }\n for (var i = 0; i < xs.length; i++) {\n var x = xAt(cx, cy, rx, ry, xRotation, xs[i]);\n if (x < minX) {\n minX = x;\n }\n if (x > maxX) {\n maxX = x;\n }\n }\n var yDim = yExtrema(rx, ry, xRotation);\n var minY = Infinity;\n var maxY = -Infinity;\n var ys = [startAngle, endAngle];\n for (var i = -Math.PI * 2; i <= Math.PI * 2; i += Math.PI) {\n var yAngle = yDim + i;\n if (startAngle < endAngle) {\n if (startAngle < yAngle && yAngle < endAngle) {\n ys.push(yAngle);\n }\n }\n else {\n if (endAngle < yAngle && yAngle < startAngle) {\n ys.push(yAngle);\n }\n }\n }\n for (var i = 0; i < ys.length; i++) {\n var y = yAt(cx, cy, rx, ry, xRotation, ys[i]);\n if (y < minY) {\n minY = y;\n }\n if (y > maxY) {\n maxY = y;\n }\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n },\n /**\n * 获取圆弧的长度,计算圆弧长度时不考虑旋转角度,\n * 仅跟 rx, ry, startAngle, endAngle 相关\n * @param {number} cx 圆心 x\n * @param {number} cy 圆心 y\n * @param {number} rx x 轴方向的半径\n * @param {number} ry y 轴方向的半径\n * @param {number} xRotation 旋转角度\n * @param {number} startAngle 起始角度\n * @param {number} endAngle 结束角度\n */\n length: function (cx, cy, rx, ry, xRotation, startAngle, endAngle) { },\n /**\n * 获取指定点到圆弧的最近距离的点\n * @param {number} cx 圆心 x\n * @param {number} cy 圆心 y\n * @param {number} rx x 轴方向的半径\n * @param {number} ry y 轴方向的半径\n * @param {number} xRotation 旋转角度\n * @param {number} startAngle 起始角度\n * @param {number} endAngle 结束角度\n * @param {number} x0 指定点的 x\n * @param {number} y0 指定点的 y\n * @return {object} 到指定点最近距离的点\n */\n nearestPoint: function (cx, cy, rx, ry, xRotation, startAngle, endAngle, x0, y0) {\n // 将最近距离问题转换成到椭圆中心 0,0 没有旋转的椭圆问题\n var relativeVector = rotate(x0 - cx, y0 - cy, -xRotation);\n var x1 = relativeVector[0], y1 = relativeVector[1];\n // 计算点到椭圆的最近的点\n var relativePoint = _ellipse__WEBPACK_IMPORTED_MODULE_1__[\"default\"].nearestPoint(0, 0, rx, ry, x1, y1);\n // 获取点在椭圆上的角度\n var angle = getAngle(rx, ry, relativePoint.x, relativePoint.y);\n // 点没有在圆弧上\n if (angle < startAngle) {\n // 小于起始圆弧\n relativePoint = getPoint(rx, ry, startAngle);\n }\n else if (angle > endAngle) {\n // 大于结束圆弧\n relativePoint = getPoint(rx, ry, endAngle);\n }\n // 旋转到 xRotation 的角度\n var vector = rotate(relativePoint.x, relativePoint.y, xRotation);\n return {\n x: vector[0] + cx,\n y: vector[1] + cy,\n };\n },\n pointDistance: function (cx, cy, rx, ry, xRotation, startAngle, endAngle, x0, y0) {\n var nearestPoint = this.nearestPoint(cx, cy, rx, ry, x0, y0);\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(nearestPoint.x, nearestPoint.y, x0, y0);\n },\n pointAt: function (cx, cy, rx, ry, xRotation, startAngle, endAngle, t) {\n var angle = (endAngle - startAngle) * t + startAngle;\n return {\n x: xAt(cx, cy, rx, ry, xRotation, angle),\n y: yAt(cx, cy, rx, ry, xRotation, angle),\n };\n },\n tangentAngle: function (cx, cy, rx, ry, xRotation, startAngle, endAngle, t) {\n var angle = (endAngle - startAngle) * t + startAngle;\n var dx = derivativeXAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, angle);\n var dy = derivativeYAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, angle);\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"piMod\"])(Math.atan2(dy, dx));\n },\n});\n//# sourceMappingURL=arc.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctbWF0aEAwLjEuN0BAYW50di9nLW1hdGgvZXNtL2FyYy5qcz84OTc3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUF5QztBQUNUO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxrQkFBa0I7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGVBQWU7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLGtCQUFrQjtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsZUFBZTtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QjtBQUNBLHdFQUF3RSxFQUFFO0FBQzFFO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsZ0RBQU87QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxzREFBUTtBQUN2QixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxtREFBSztBQUNwQixLQUFLO0FBQ0wsQ0FBQyxFQUFDO0FBQ0YiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctbWF0aEAwLjEuN0BAYW50di9nLW1hdGgvZXNtL2FyYy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRpc3RhbmNlLCBwaU1vZCB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgZWxsaXBzZSBmcm9tICcuL2VsbGlwc2UnO1xuLy8g5YGP5a+85pWwIHhcbmZ1bmN0aW9uIGRlcml2YXRpdmVYQXQoY3gsIGN5LCByeCwgcnksIHhSb3RhdGlvbiwgc3RhcnRBbmdsZSwgZW5kQW5nbGUsIGFuZ2xlKSB7XG4gICAgcmV0dXJuIC0xICogcnggKiBNYXRoLmNvcyh4Um90YXRpb24pICogTWF0aC5zaW4oYW5nbGUpIC0gcnkgKiBNYXRoLnNpbih4Um90YXRpb24pICogTWF0aC5jb3MoYW5nbGUpO1xufVxuLy8g5YGP5a+85pWwIHlcbmZ1bmN0aW9uIGRlcml2YXRpdmVZQXQoY3gsIGN5LCByeCwgcnksIHhSb3RhdGlvbiwgc3RhcnRBbmdsZSwgZW5kQW5nbGUsIGFuZ2xlKSB7XG4gICAgcmV0dXJuIC0xICogcnggKiBNYXRoLnNpbih4Um90YXRpb24pICogTWF0aC5zaW4oYW5nbGUpICsgcnkgKiBNYXRoLmNvcyh4Um90YXRpb24pICogTWF0aC5jb3MoYW5nbGUpO1xufVxuLy8geCDnmoTmnoHlgLxcbmZ1bmN0aW9uIHhFeHRyZW1hKHJ4LCByeSwgeFJvdGF0aW9uKSB7XG4gICAgcmV0dXJuIE1hdGguYXRhbigoLXJ5IC8gcngpICogTWF0aC50YW4oeFJvdGF0aW9uKSk7XG59XG4vLyB5IOeahOaegeWAvFxuZnVuY3Rpb24geUV4dHJlbWEocngsIHJ5LCB4Um90YXRpb24pIHtcbiAgICByZXR1cm4gTWF0aC5hdGFuKHJ5IC8gKHJ4ICogTWF0aC50YW4oeFJvdGF0aW9uKSkpO1xufVxuLy8g5qC55o2u6KeS5bqm5rGCIHgg5Z2Q5qCHXG5mdW5jdGlvbiB4QXQoY3gsIGN5LCByeCwgcnksIHhSb3RhdGlvbiwgYW5nbGUpIHtcbiAgICByZXR1cm4gcnggKiBNYXRoLmNvcyh4Um90YXRpb24pICogTWF0aC5jb3MoYW5nbGUpIC0gcnkgKiBNYXRoLnNpbih4Um90YXRpb24pICogTWF0aC5zaW4oYW5nbGUpICsgY3g7XG59XG4vLyDmoLnmja7op5LluqbmsYIgeSDlnZDmoIdcbmZ1bmN0aW9uIHlBdChjeCwgY3ksIHJ4LCByeSwgeFJvdGF0aW9uLCBhbmdsZSkge1xuICAgIHJldHVybiByeCAqIE1hdGguc2luKHhSb3RhdGlvbikgKiBNYXRoLmNvcyhhbmdsZSkgKyByeSAqIE1hdGguY29zKHhSb3RhdGlvbikgKiBNYXRoLnNpbihhbmdsZSkgKyBjeTtcbn1cbi8vIOiOt+WPlueCueWcqOakreWchuS4iueahOinkuW6plxuZnVuY3Rpb24gZ2V0QW5nbGUocngsIHJ5LCB4MCwgeTApIHtcbiAgICB2YXIgYW5nbGUgPSBNYXRoLmF0YW4yKHkwICogcngsIHgwICogcnkpO1xuICAgIC8vIOi9rOaNouWIsCAwIC0gMlBJIOWGhVxuICAgIHJldHVybiAoYW5nbGUgKyBNYXRoLlBJICogMikgJSAoTWF0aC5QSSAqIDIpO1xufVxuLy8g5qC55o2u6KeS5bqm6I635Y+W77yMeCx5XG5mdW5jdGlvbiBnZXRQb2ludChyeCwgcnksIGFuZ2xlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgeDogcnggKiBNYXRoLmNvcyhhbmdsZSksXG4gICAgICAgIHk6IHJ5ICogTWF0aC5zaW4oYW5nbGUpLFxuICAgIH07XG59XG4vLyDml4vovaxcbmZ1bmN0aW9uIHJvdGF0ZSh4LCB5LCBhbmdsZSkge1xuICAgIHZhciBjb3MgPSBNYXRoLmNvcyhhbmdsZSk7XG4gICAgdmFyIHNpbiA9IE1hdGguc2luKGFuZ2xlKTtcbiAgICByZXR1cm4gW3ggKiBjb3MgLSB5ICogc2luLCB4ICogc2luICsgeSAqIGNvc107XG59XG5leHBvcnQgZGVmYXVsdCB7XG4gICAgLyoqXG4gICAgICog6K6h566X5YyF5Zu055uSXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGN4ICAgICAgICAg5ZyG5b+DIHhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gY3kgICAgICAgICDlnIblv4MgeVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByeCAgICAgICAgIHgg6L205pa55ZCR55qE5Y2K5b6EXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJ5ICAgICAgICAgeSDovbTmlrnlkJHnmoTljYrlvoRcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geFJvdGF0aW9uICDml4vovazop5LluqZcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnRBbmdsZSDotbflp4vop5LluqZcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kQW5nbGUgICDnu5PmnZ/op5LluqZcbiAgICAgKiBAcmV0dXJuIHtvYmplY3R9IOWMheWbtOebkuWvueixoVxuICAgICAqL1xuICAgIGJveDogZnVuY3Rpb24gKGN4LCBjeSwgcngsIHJ5LCB4Um90YXRpb24sIHN0YXJ0QW5nbGUsIGVuZEFuZ2xlKSB7XG4gICAgICAgIHZhciB4RGltID0geEV4dHJlbWEocngsIHJ5LCB4Um90YXRpb24pO1xuICAgICAgICB2YXIgbWluWCA9IEluZmluaXR5O1xuICAgICAgICB2YXIgbWF4WCA9IC1JbmZpbml0eTtcbiAgICAgICAgdmFyIHhzID0gW3N0YXJ0QW5nbGUsIGVuZEFuZ2xlXTtcbiAgICAgICAgZm9yICh2YXIgaSA9IC1NYXRoLlBJICogMjsgaSA8PSBNYXRoLlBJICogMjsgaSArPSBNYXRoLlBJKSB7XG4gICAgICAgICAgICB2YXIgeEFuZ2xlID0geERpbSArIGk7XG4gICAgICAgICAgICBpZiAoc3RhcnRBbmdsZSA8IGVuZEFuZ2xlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXJ0QW5nbGUgPCB4QW5nbGUgJiYgeEFuZ2xlIDwgZW5kQW5nbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgeHMucHVzaCh4QW5nbGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChlbmRBbmdsZSA8IHhBbmdsZSAmJiB4QW5nbGUgPCBzdGFydEFuZ2xlKSB7XG4gICAgICAgICAgICAgICAgICAgIHhzLnB1c2goeEFuZ2xlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB4cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIHggPSB4QXQoY3gsIGN5LCByeCwgcnksIHhSb3RhdGlvbiwgeHNbaV0pO1xuICAgICAgICAgICAgaWYgKHggPCBtaW5YKSB7XG4gICAgICAgICAgICAgICAgbWluWCA9IHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoeCA+IG1heFgpIHtcbiAgICAgICAgICAgICAgICBtYXhYID0geDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgeURpbSA9IHlFeHRyZW1hKHJ4LCByeSwgeFJvdGF0aW9uKTtcbiAgICAgICAgdmFyIG1pblkgPSBJbmZpbml0eTtcbiAgICAgICAgdmFyIG1heFkgPSAtSW5maW5pdHk7XG4gICAgICAgIHZhciB5cyA9IFtzdGFydEFuZ2xlLCBlbmRBbmdsZV07XG4gICAgICAgIGZvciAodmFyIGkgPSAtTWF0aC5QSSAqIDI7IGkgPD0gTWF0aC5QSSAqIDI7IGkgKz0gTWF0aC5QSSkge1xuICAgICAgICAgICAgdmFyIHlBbmdsZSA9IHlEaW0gKyBpO1xuICAgICAgICAgICAgaWYgKHN0YXJ0QW5nbGUgPCBlbmRBbmdsZSkge1xuICAgICAgICAgICAgICAgIGlmIChzdGFydEFuZ2xlIDwgeUFuZ2xlICYmIHlBbmdsZSA8IGVuZEFuZ2xlKSB7XG4gICAgICAgICAgICAgICAgICAgIHlzLnB1c2goeUFuZ2xlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoZW5kQW5nbGUgPCB5QW5nbGUgJiYgeUFuZ2xlIDwgc3RhcnRBbmdsZSkge1xuICAgICAgICAgICAgICAgICAgICB5cy5wdXNoKHlBbmdsZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgeXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciB5ID0geUF0KGN4LCBjeSwgcngsIHJ5LCB4Um90YXRpb24sIHlzW2ldKTtcbiAgICAgICAgICAgIGlmICh5IDwgbWluWSkge1xuICAgICAgICAgICAgICAgIG1pblkgPSB5O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHkgPiBtYXhZKSB7XG4gICAgICAgICAgICAgICAgbWF4WSA9IHk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IG1pblgsXG4gICAgICAgICAgICB5OiBtaW5ZLFxuICAgICAgICAgICAgd2lkdGg6IG1heFggLSBtaW5YLFxuICAgICAgICAgICAgaGVpZ2h0OiBtYXhZIC0gbWluWSxcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOiOt+WPluWchuW8p+eahOmVv+W6pu+8jOiuoeeul+WchuW8p+mVv+W6puaXtuS4jeiAg+iZkeaXi+i9rOinkuW6pu+8jFxuICAgICAqIOS7hei3nyByeCwgcnksIHN0YXJ0QW5nbGUsIGVuZEFuZ2xlIOebuOWFs1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjeCAgICAgICAgIOWchuW/gyB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGN5ICAgICAgICAg5ZyG5b+DIHlcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcnggICAgICAgICB4IOi9tOaWueWQkeeahOWNiuW+hFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByeSAgICAgICAgIHkg6L205pa55ZCR55qE5Y2K5b6EXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHhSb3RhdGlvbiAg5peL6L2s6KeS5bqmXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0QW5nbGUg6LW35aeL6KeS5bqmXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGVuZEFuZ2xlICAg57uT5p2f6KeS5bqmXG4gICAgICovXG4gICAgbGVuZ3RoOiBmdW5jdGlvbiAoY3gsIGN5LCByeCwgcnksIHhSb3RhdGlvbiwgc3RhcnRBbmdsZSwgZW5kQW5nbGUpIHsgfSxcbiAgICAvKipcbiAgICAgKiDojrflj5bmjIflrprngrnliLDlnIblvKfnmoTmnIDov5Hot53nprvnmoTngrlcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gY3ggICAgICAgICDlnIblv4MgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjeSAgICAgICAgIOWchuW/gyB5XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJ4ICAgICAgICAgeCDovbTmlrnlkJHnmoTljYrlvoRcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcnkgICAgICAgICB5IOi9tOaWueWQkeeahOWNiuW+hFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4Um90YXRpb24gIOaXi+i9rOinkuW6plxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydEFuZ2xlIOi1t+Wni+inkuW6plxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmRBbmdsZSAgIOe7k+adn+inkuW6plxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4MCAgICAgICAgIOaMh+WumueCueeahCB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHkwICAgICAgICAg5oyH5a6a54K555qEIHlcbiAgICAgKiBAcmV0dXJuIHtvYmplY3R9IOWIsOaMh+WumueCueacgOi/kei3neemu+eahOeCuVxuICAgICAqL1xuICAgIG5lYXJlc3RQb2ludDogZnVuY3Rpb24gKGN4LCBjeSwgcngsIHJ5LCB4Um90YXRpb24sIHN0YXJ0QW5nbGUsIGVuZEFuZ2xlLCB4MCwgeTApIHtcbiAgICAgICAgLy8g5bCG5pyA6L+R6Led56a76Zeu6aKY6L2s5o2i5oiQ5Yiw5qSt5ZyG5Lit5b+DIDAsMCDmsqHmnInml4vovaznmoTmpK3lnIbpl67pophcbiAgICAgICAgdmFyIHJlbGF0aXZlVmVjdG9yID0gcm90YXRlKHgwIC0gY3gsIHkwIC0gY3ksIC14Um90YXRpb24pO1xuICAgICAgICB2YXIgeDEgPSByZWxhdGl2ZVZlY3RvclswXSwgeTEgPSByZWxhdGl2ZVZlY3RvclsxXTtcbiAgICAgICAgLy8g6K6h566X54K55Yiw5qSt5ZyG55qE5pyA6L+R55qE54K5XG4gICAgICAgIHZhciByZWxhdGl2ZVBvaW50ID0gZWxsaXBzZS5uZWFyZXN0UG9pbnQoMCwgMCwgcngsIHJ5LCB4MSwgeTEpO1xuICAgICAgICAvLyDojrflj5bngrnlnKjmpK3lnIbkuIrnmoTop5LluqZcbiAgICAgICAgdmFyIGFuZ2xlID0gZ2V0QW5nbGUocngsIHJ5LCByZWxhdGl2ZVBvaW50LngsIHJlbGF0aXZlUG9pbnQueSk7XG4gICAgICAgIC8vIOeCueayoeacieWcqOWchuW8p+S4ilxuICAgICAgICBpZiAoYW5nbGUgPCBzdGFydEFuZ2xlKSB7XG4gICAgICAgICAgICAvLyDlsI/kuo7otbflp4vlnIblvKdcbiAgICAgICAgICAgIHJlbGF0aXZlUG9pbnQgPSBnZXRQb2ludChyeCwgcnksIHN0YXJ0QW5nbGUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGFuZ2xlID4gZW5kQW5nbGUpIHtcbiAgICAgICAgICAgIC8vIOWkp+S6jue7k+adn+WchuW8p1xuICAgICAgICAgICAgcmVsYXRpdmVQb2ludCA9IGdldFBvaW50KHJ4LCByeSwgZW5kQW5nbGUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIOaXi+i9rOWIsCB4Um90YXRpb24g55qE6KeS5bqmXG4gICAgICAgIHZhciB2ZWN0b3IgPSByb3RhdGUocmVsYXRpdmVQb2ludC54LCByZWxhdGl2ZVBvaW50LnksIHhSb3RhdGlvbik7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiB2ZWN0b3JbMF0gKyBjeCxcbiAgICAgICAgICAgIHk6IHZlY3RvclsxXSArIGN5LFxuICAgICAgICB9O1xuICAgIH0sXG4gICAgcG9pbnREaXN0YW5jZTogZnVuY3Rpb24gKGN4LCBjeSwgcngsIHJ5LCB4Um90YXRpb24sIHN0YXJ0QW5nbGUsIGVuZEFuZ2xlLCB4MCwgeTApIHtcbiAgICAgICAgdmFyIG5lYXJlc3RQb2ludCA9IHRoaXMubmVhcmVzdFBvaW50KGN4LCBjeSwgcngsIHJ5LCB4MCwgeTApO1xuICAgICAgICByZXR1cm4gZGlzdGFuY2UobmVhcmVzdFBvaW50LngsIG5lYXJlc3RQb2ludC55LCB4MCwgeTApO1xuICAgIH0sXG4gICAgcG9pbnRBdDogZnVuY3Rpb24gKGN4LCBjeSwgcngsIHJ5LCB4Um90YXRpb24sIHN0YXJ0QW5nbGUsIGVuZEFuZ2xlLCB0KSB7XG4gICAgICAgIHZhciBhbmdsZSA9IChlbmRBbmdsZSAtIHN0YXJ0QW5nbGUpICogdCArIHN0YXJ0QW5nbGU7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiB4QXQoY3gsIGN5LCByeCwgcnksIHhSb3RhdGlvbiwgYW5nbGUpLFxuICAgICAgICAgICAgeTogeUF0KGN4LCBjeSwgcngsIHJ5LCB4Um90YXRpb24sIGFuZ2xlKSxcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIHRhbmdlbnRBbmdsZTogZnVuY3Rpb24gKGN4LCBjeSwgcngsIHJ5LCB4Um90YXRpb24sIHN0YXJ0QW5nbGUsIGVuZEFuZ2xlLCB0KSB7XG4gICAgICAgIHZhciBhbmdsZSA9IChlbmRBbmdsZSAtIHN0YXJ0QW5nbGUpICogdCArIHN0YXJ0QW5nbGU7XG4gICAgICAgIHZhciBkeCA9IGRlcml2YXRpdmVYQXQoY3gsIGN5LCByeCwgcnksIHhSb3RhdGlvbiwgc3RhcnRBbmdsZSwgZW5kQW5nbGUsIGFuZ2xlKTtcbiAgICAgICAgdmFyIGR5ID0gZGVyaXZhdGl2ZVlBdChjeCwgY3ksIHJ4LCByeSwgeFJvdGF0aW9uLCBzdGFydEFuZ2xlLCBlbmRBbmdsZSwgYW5nbGUpO1xuICAgICAgICByZXR1cm4gcGlNb2QoTWF0aC5hdGFuMihkeSwgZHgpKTtcbiAgICB9LFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFyYy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/arc.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/bezier.js":
/*!*********************************************************************!*\
!*** ./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/bezier.js ***!
\*********************************************************************/
/*! exports provided: nearestPoint, snapLength */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"nearestPoint\", function() { return nearestPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"snapLength\", function() { return snapLength; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/util.js\");\n\nvar EPSILON = 0.0001;\n/**\n * 使用牛顿切割法求最近的点\n * @param {number[]} xArr 点的 x 数组\n * @param {number[]} yArr 点的 y 数组\n * @param {number} x 指定的点 x\n * @param {number} y 指定的点 y\n * @param {Function} tCallback 差值函数\n */\nfunction nearestPoint(xArr, yArr, x, y, tCallback, length) {\n var t;\n var d = Infinity;\n var v0 = [x, y];\n var segNum = 20;\n if (length && length > 200) {\n segNum = length / 10;\n }\n var increaseRate = 1 / segNum;\n var interval = increaseRate / 10;\n for (var i = 0; i <= segNum; i++) {\n var _t = i * increaseRate;\n var v1 = [tCallback.apply(null, xArr.concat([_t])), tCallback.apply(null, yArr.concat([_t]))];\n var d1 = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(v0[0], v0[1], v1[0], v1[1]);\n if (d1 < d) {\n t = _t;\n d = d1;\n }\n }\n // 提前终止\n if (t === 0) {\n return {\n x: xArr[0],\n y: yArr[0],\n };\n }\n if (t === 1) {\n var count = xArr.length;\n return {\n x: xArr[count - 1],\n y: yArr[count - 1],\n };\n }\n d = Infinity;\n for (var i = 0; i < 32; i++) {\n if (interval < EPSILON) {\n break;\n }\n var prev = t - interval;\n var next = t + interval;\n var v1 = [tCallback.apply(null, xArr.concat([prev])), tCallback.apply(null, yArr.concat([prev]))];\n var d1 = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(v0[0], v0[1], v1[0], v1[1]);\n if (prev >= 0 && d1 < d) {\n t = prev;\n d = d1;\n }\n else {\n var v2 = [tCallback.apply(null, xArr.concat([next])), tCallback.apply(null, yArr.concat([next]))];\n var d2 = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(v0[0], v0[1], v2[0], v2[1]);\n if (next <= 1 && d2 < d) {\n t = next;\n d = d2;\n }\n else {\n interval *= 0.5;\n }\n }\n }\n return {\n x: tCallback.apply(null, xArr.concat([t])),\n y: tCallback.apply(null, yArr.concat([t])),\n };\n}\n// 近似求解 https://community.khronos.org/t/3d-cubic-bezier-segment-length/62363/2\nfunction snapLength(xArr, yArr) {\n var totalLength = 0;\n var count = xArr.length;\n for (var i = 0; i < count; i++) {\n var x = xArr[i];\n var y = yArr[i];\n var nextX = xArr[(i + 1) % count];\n var nextY = yArr[(i + 1) % count];\n totalLength += Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(x, y, nextX, nextY);\n }\n return totalLength / 2;\n}\n//# sourceMappingURL=bezier.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctbWF0aEAwLjEuN0BAYW50di9nLW1hdGgvZXNtL2Jlemllci5qcz84YmE3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLFNBQVM7QUFDcEI7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixhQUFhO0FBQ2hDO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixRQUFRO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixzREFBUTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsc0RBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0EsbUJBQW1CLFdBQVc7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsc0RBQVE7QUFDL0I7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctbWF0aEAwLjEuN0BAYW50di9nLW1hdGgvZXNtL2Jlemllci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRpc3RhbmNlIH0gZnJvbSAnLi91dGlsJztcbnZhciBFUFNJTE9OID0gMC4wMDAxO1xuLyoqXG4gKiDkvb/nlKjniZvpob/liIflibLms5XmsYLmnIDov5HnmoTngrlcbiAqIEBwYXJhbSB7bnVtYmVyW119IHhBcnIgICAgICDngrnnmoQgeCDmlbDnu4RcbiAqIEBwYXJhbSB7bnVtYmVyW119IHlBcnIgICAgICDngrnnmoQgeSDmlbDnu4RcbiAqIEBwYXJhbSB7bnVtYmVyfSAgIHggICAgICAgICDmjIflrprnmoTngrkgeFxuICogQHBhcmFtIHtudW1iZXJ9ICAgeSAgICAgICAgIOaMh+WumueahOeCuSB5XG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSB0Q2FsbGJhY2sg5beu5YC85Ye95pWwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuZWFyZXN0UG9pbnQoeEFyciwgeUFyciwgeCwgeSwgdENhbGxiYWNrLCBsZW5ndGgpIHtcbiAgICB2YXIgdDtcbiAgICB2YXIgZCA9IEluZmluaXR5O1xuICAgIHZhciB2MCA9IFt4LCB5XTtcbiAgICB2YXIgc2VnTnVtID0gMjA7XG4gICAgaWYgKGxlbmd0aCAmJiBsZW5ndGggPiAyMDApIHtcbiAgICAgICAgc2VnTnVtID0gbGVuZ3RoIC8gMTA7XG4gICAgfVxuICAgIHZhciBpbmNyZWFzZVJhdGUgPSAxIC8gc2VnTnVtO1xuICAgIHZhciBpbnRlcnZhbCA9IGluY3JlYXNlUmF0ZSAvIDEwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDw9IHNlZ051bTsgaSsrKSB7XG4gICAgICAgIHZhciBfdCA9IGkgKiBpbmNyZWFzZVJhdGU7XG4gICAgICAgIHZhciB2MSA9IFt0Q2FsbGJhY2suYXBwbHkobnVsbCwgeEFyci5jb25jYXQoW190XSkpLCB0Q2FsbGJhY2suYXBwbHkobnVsbCwgeUFyci5jb25jYXQoW190XSkpXTtcbiAgICAgICAgdmFyIGQxID0gZGlzdGFuY2UodjBbMF0sIHYwWzFdLCB2MVswXSwgdjFbMV0pO1xuICAgICAgICBpZiAoZDEgPCBkKSB7XG4gICAgICAgICAgICB0ID0gX3Q7XG4gICAgICAgICAgICBkID0gZDE7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8g5o+Q5YmN57uI5q2iXG4gICAgaWYgKHQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IHhBcnJbMF0sXG4gICAgICAgICAgICB5OiB5QXJyWzBdLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBpZiAodCA9PT0gMSkge1xuICAgICAgICB2YXIgY291bnQgPSB4QXJyLmxlbmd0aDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IHhBcnJbY291bnQgLSAxXSxcbiAgICAgICAgICAgIHk6IHlBcnJbY291bnQgLSAxXSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZCA9IEluZmluaXR5O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMzI7IGkrKykge1xuICAgICAgICBpZiAoaW50ZXJ2YWwgPCBFUFNJTE9OKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICB2YXIgcHJldiA9IHQgLSBpbnRlcnZhbDtcbiAgICAgICAgdmFyIG5leHQgPSB0ICsgaW50ZXJ2YWw7XG4gICAgICAgIHZhciB2MSA9IFt0Q2FsbGJhY2suYXBwbHkobnVsbCwgeEFyci5jb25jYXQoW3ByZXZdKSksIHRDYWxsYmFjay5hcHBseShudWxsLCB5QXJyLmNvbmNhdChbcHJldl0pKV07XG4gICAgICAgIHZhciBkMSA9IGRpc3RhbmNlKHYwWzBdLCB2MFsxXSwgdjFbMF0sIHYxWzFdKTtcbiAgICAgICAgaWYgKHByZXYgPj0gMCAmJiBkMSA8IGQpIHtcbiAgICAgICAgICAgIHQgPSBwcmV2O1xuICAgICAgICAgICAgZCA9IGQxO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIHYyID0gW3RDYWxsYmFjay5hcHBseShudWxsLCB4QXJyLmNvbmNhdChbbmV4dF0pKSwgdENhbGxiYWNrLmFwcGx5KG51bGwsIHlBcnIuY29uY2F0KFtuZXh0XSkpXTtcbiAgICAgICAgICAgIHZhciBkMiA9IGRpc3RhbmNlKHYwWzBdLCB2MFsxXSwgdjJbMF0sIHYyWzFdKTtcbiAgICAgICAgICAgIGlmIChuZXh0IDw9IDEgJiYgZDIgPCBkKSB7XG4gICAgICAgICAgICAgICAgdCA9IG5leHQ7XG4gICAgICAgICAgICAgICAgZCA9IGQyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaW50ZXJ2YWwgKj0gMC41O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHg6IHRDYWxsYmFjay5hcHBseShudWxsLCB4QXJyLmNvbmNhdChbdF0pKSxcbiAgICAgICAgeTogdENhbGxiYWNrLmFwcGx5KG51bGwsIHlBcnIuY29uY2F0KFt0XSkpLFxuICAgIH07XG59XG4vLyDov5HkvLzmsYLop6MgaHR0cHM6Ly9jb21tdW5pdHkua2hyb25vcy5vcmcvdC8zZC1jdWJpYy1iZXppZXItc2VnbWVudC1sZW5ndGgvNjIzNjMvMlxuZXhwb3J0IGZ1bmN0aW9uIHNuYXBMZW5ndGgoeEFyciwgeUFycikge1xuICAgIHZhciB0b3RhbExlbmd0aCA9IDA7XG4gICAgdmFyIGNvdW50ID0geEFyci5sZW5ndGg7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgICAgIHZhciB4ID0geEFycltpXTtcbiAgICAgICAgdmFyIHkgPSB5QXJyW2ldO1xuICAgICAgICB2YXIgbmV4dFggPSB4QXJyWyhpICsgMSkgJSBjb3VudF07XG4gICAgICAgIHZhciBuZXh0WSA9IHlBcnJbKGkgKyAxKSAlIGNvdW50XTtcbiAgICAgICAgdG90YWxMZW5ndGggKz0gZGlzdGFuY2UoeCwgeSwgbmV4dFgsIG5leHRZKTtcbiAgICB9XG4gICAgcmV0dXJuIHRvdGFsTGVuZ3RoIC8gMjtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJlemllci5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/bezier.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/cubic.js":
/*!********************************************************************!*\
!*** ./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/cubic.js ***!
\********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/util.js\");\n/* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./line */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/line.js\");\n/* harmony import */ var _bezier__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./bezier */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/bezier.js\");\n\n\n\nfunction cubicAt(p0, p1, p2, p3, t) {\n var onet = 1 - t; // t * t * t 的性能大概是 Math.pow(t, 3) 的三倍\n return onet * onet * onet * p0 + 3 * p1 * t * onet * onet + 3 * p2 * t * t * onet + p3 * t * t * t;\n}\nfunction derivativeAt(p0, p1, p2, p3, t) {\n var onet = 1 - t;\n return 3 * (onet * onet * (p1 - p0) + 2 * onet * t * (p2 - p1) + t * t * (p3 - p2));\n}\nfunction extrema(p0, p1, p2, p3) {\n var a = -3 * p0 + 9 * p1 - 9 * p2 + 3 * p3;\n var b = 6 * p0 - 12 * p1 + 6 * p2;\n var c = 3 * p1 - 3 * p0;\n var extremas = [];\n var t1;\n var t2;\n var discSqrt;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumberEqual\"])(a, 0)) {\n if (!Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumberEqual\"])(b, 0)) {\n t1 = -c / b;\n if (t1 >= 0 && t1 <= 1) {\n extremas.push(t1);\n }\n }\n }\n else {\n var disc = b * b - 4 * a * c;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumberEqual\"])(disc, 0)) {\n extremas.push(-b / (2 * a));\n }\n else if (disc > 0) {\n discSqrt = Math.sqrt(disc);\n t1 = (-b + discSqrt) / (2 * a);\n t2 = (-b - discSqrt) / (2 * a);\n if (t1 >= 0 && t1 <= 1) {\n extremas.push(t1);\n }\n if (t2 >= 0 && t2 <= 1) {\n extremas.push(t2);\n }\n }\n }\n return extremas;\n}\n// 分割贝塞尔曲线\nfunction divideCubic(x1, y1, x2, y2, x3, y3, x4, y4, t) {\n // 划分点\n var xt = cubicAt(x1, x2, x3, x4, t);\n var yt = cubicAt(y1, y2, y3, y4, t);\n // 计算两点之间的差值点\n var c1 = _line__WEBPACK_IMPORTED_MODULE_1__[\"default\"].pointAt(x1, y1, x2, y2, t);\n var c2 = _line__WEBPACK_IMPORTED_MODULE_1__[\"default\"].pointAt(x2, y2, x3, y3, t);\n var c3 = _line__WEBPACK_IMPORTED_MODULE_1__[\"default\"].pointAt(x3, y3, x4, y4, t);\n var c12 = _line__WEBPACK_IMPORTED_MODULE_1__[\"default\"].pointAt(c1.x, c1.y, c2.x, c2.y, t);\n var c23 = _line__WEBPACK_IMPORTED_MODULE_1__[\"default\"].pointAt(c2.x, c2.y, c3.x, c3.y, t);\n return [\n [x1, y1, c1.x, c1.y, c12.x, c12.y, xt, yt],\n [xt, yt, c23.x, c23.y, c3.x, c3.y, x4, y4],\n ];\n}\n// 使用迭代法取贝塞尔曲线的长度,二阶和三阶分开写,更清晰和便于调试\nfunction cubicLength(x1, y1, x2, y2, x3, y3, x4, y4, iterationCount) {\n if (iterationCount === 0) {\n return Object(_bezier__WEBPACK_IMPORTED_MODULE_2__[\"snapLength\"])([x1, x2, x3, x4], [y1, y2, y3, y4]);\n }\n var cubics = divideCubic(x1, y1, x2, y2, x3, y3, x4, y4, 0.5);\n var left = cubics[0];\n var right = cubics[1];\n left.push(iterationCount - 1);\n right.push(iterationCount - 1);\n return cubicLength.apply(null, left) + cubicLength.apply(null, right);\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n extrema: extrema,\n box: function (x1, y1, x2, y2, x3, y3, x4, y4) {\n var xArr = [x1, x4];\n var yArr = [y1, y4];\n var xExtrema = extrema(x1, x2, x3, x4);\n var yExtrema = extrema(y1, y2, y3, y4);\n for (var i = 0; i < xExtrema.length; i++) {\n xArr.push(cubicAt(x1, x2, x3, x4, xExtrema[i]));\n }\n for (var i = 0; i < yExtrema.length; i++) {\n yArr.push(cubicAt(y1, y2, y3, y4, yExtrema[i]));\n }\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"getBBoxByArray\"])(xArr, yArr);\n },\n length: function (x1, y1, x2, y2, x3, y3, x4, y4) {\n // 迭代三次,划分成 8 段求长度\n return cubicLength(x1, y1, x2, y2, x3, y3, x4, y4, 3);\n },\n nearestPoint: function (x1, y1, x2, y2, x3, y3, x4, y4, x0, y0, length) {\n return Object(_bezier__WEBPACK_IMPORTED_MODULE_2__[\"nearestPoint\"])([x1, x2, x3, x4], [y1, y2, y3, y4], x0, y0, cubicAt, length);\n },\n pointDistance: function (x1, y1, x2, y2, x3, y3, x4, y4, x0, y0, length) {\n var point = this.nearestPoint(x1, y1, x2, y2, x3, y3, x4, y4, x0, y0, length);\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(point.x, point.y, x0, y0);\n },\n interpolationAt: cubicAt,\n pointAt: function (x1, y1, x2, y2, x3, y3, x4, y4, t) {\n return {\n x: cubicAt(x1, x2, x3, x4, t),\n y: cubicAt(y1, y2, y3, y4, t),\n };\n },\n divide: function (x1, y1, x2, y2, x3, y3, x4, y4, t) {\n return divideCubic(x1, y1, x2, y2, x3, y3, x4, y4, t);\n },\n tangentAngle: function (x1, y1, x2, y2, x3, y3, x4, y4, t) {\n var dx = derivativeAt(x1, x2, x3, x4, t);\n var dy = derivativeAt(y1, y2, y3, y4, t);\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"piMod\"])(Math.atan2(dy, dx));\n },\n});\n//# sourceMappingURL=cubic.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctbWF0aEAwLjEuN0BAYW50di9nLW1hdGgvZXNtL2N1YmljLmpzP2Y4OTMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBd0U7QUFDOUM7QUFDMEI7QUFDcEQ7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsMkRBQWE7QUFDckIsYUFBYSwyREFBYTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSwyREFBYTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsNkNBQUk7QUFDakIsYUFBYSw2Q0FBSTtBQUNqQixhQUFhLDZDQUFJO0FBQ2pCLGNBQWMsNkNBQUk7QUFDbEIsY0FBYyw2Q0FBSTtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSwwREFBVTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIscUJBQXFCO0FBQzVDO0FBQ0E7QUFDQSx1QkFBdUIscUJBQXFCO0FBQzVDO0FBQ0E7QUFDQSxlQUFlLDREQUFjO0FBQzdCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxlQUFlLDREQUFZO0FBQzNCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxzREFBUTtBQUN2QixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsZUFBZSxtREFBSztBQUNwQixLQUFLO0FBQ0wsQ0FBQyxFQUFDO0FBQ0YiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctbWF0aEAwLjEuN0BAYW50di9nLW1hdGgvZXNtL2N1YmljLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGlzdGFuY2UsIGlzTnVtYmVyRXF1YWwsIGdldEJCb3hCeUFycmF5LCBwaU1vZCB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgbGluZSBmcm9tICcuL2xpbmUnO1xuaW1wb3J0IHsgc25hcExlbmd0aCwgbmVhcmVzdFBvaW50IH0gZnJvbSAnLi9iZXppZXInO1xuZnVuY3Rpb24gY3ViaWNBdChwMCwgcDEsIHAyLCBwMywgdCkge1xuICAgIHZhciBvbmV0ID0gMSAtIHQ7IC8vIHQgKiB0ICogdCDnmoTmgKfog73lpKfmpoLmmK8gTWF0aC5wb3codCwgMykg55qE5LiJ5YCNXG4gICAgcmV0dXJuIG9uZXQgKiBvbmV0ICogb25ldCAqIHAwICsgMyAqIHAxICogdCAqIG9uZXQgKiBvbmV0ICsgMyAqIHAyICogdCAqIHQgKiBvbmV0ICsgcDMgKiB0ICogdCAqIHQ7XG59XG5mdW5jdGlvbiBkZXJpdmF0aXZlQXQocDAsIHAxLCBwMiwgcDMsIHQpIHtcbiAgICB2YXIgb25ldCA9IDEgLSB0O1xuICAgIHJldHVybiAzICogKG9uZXQgKiBvbmV0ICogKHAxIC0gcDApICsgMiAqIG9uZXQgKiB0ICogKHAyIC0gcDEpICsgdCAqIHQgKiAocDMgLSBwMikpO1xufVxuZnVuY3Rpb24gZXh0cmVtYShwMCwgcDEsIHAyLCBwMykge1xuICAgIHZhciBhID0gLTMgKiBwMCArIDkgKiBwMSAtIDkgKiBwMiArIDMgKiBwMztcbiAgICB2YXIgYiA9IDYgKiBwMCAtIDEyICogcDEgKyA2ICogcDI7XG4gICAgdmFyIGMgPSAzICogcDEgLSAzICogcDA7XG4gICAgdmFyIGV4dHJlbWFzID0gW107XG4gICAgdmFyIHQxO1xuICAgIHZhciB0MjtcbiAgICB2YXIgZGlzY1NxcnQ7XG4gICAgaWYgKGlzTnVtYmVyRXF1YWwoYSwgMCkpIHtcbiAgICAgICAgaWYgKCFpc051bWJlckVxdWFsKGIsIDApKSB7XG4gICAgICAgICAgICB0MSA9IC1jIC8gYjtcbiAgICAgICAgICAgIGlmICh0MSA+PSAwICYmIHQxIDw9IDEpIHtcbiAgICAgICAgICAgICAgICBleHRyZW1hcy5wdXNoKHQxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdmFyIGRpc2MgPSBiICogYiAtIDQgKiBhICogYztcbiAgICAgICAgaWYgKGlzTnVtYmVyRXF1YWwoZGlzYywgMCkpIHtcbiAgICAgICAgICAgIGV4dHJlbWFzLnB1c2goLWIgLyAoMiAqIGEpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChkaXNjID4gMCkge1xuICAgICAgICAgICAgZGlzY1NxcnQgPSBNYXRoLnNxcnQoZGlzYyk7XG4gICAgICAgICAgICB0MSA9ICgtYiArIGRpc2NTcXJ0KSAvICgyICogYSk7XG4gICAgICAgICAgICB0MiA9ICgtYiAtIGRpc2NTcXJ0KSAvICgyICogYSk7XG4gICAgICAgICAgICBpZiAodDEgPj0gMCAmJiB0MSA8PSAxKSB7XG4gICAgICAgICAgICAgICAgZXh0cmVtYXMucHVzaCh0MSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodDIgPj0gMCAmJiB0MiA8PSAxKSB7XG4gICAgICAgICAgICAgICAgZXh0cmVtYXMucHVzaCh0Mik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGV4dHJlbWFzO1xufVxuLy8g5YiG5Ymy6LSd5aGe5bCU5puy57q/XG5mdW5jdGlvbiBkaXZpZGVDdWJpYyh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCB4NCwgeTQsIHQpIHtcbiAgICAvLyDliJLliIbngrlcbiAgICB2YXIgeHQgPSBjdWJpY0F0KHgxLCB4MiwgeDMsIHg0LCB0KTtcbiAgICB2YXIgeXQgPSBjdWJpY0F0KHkxLCB5MiwgeTMsIHk0LCB0KTtcbiAgICAvLyDorqHnrpfkuKTngrnkuYvpl7TnmoTlt67lgLzngrlcbiAgICB2YXIgYzEgPSBsaW5lLnBvaW50QXQoeDEsIHkxLCB4MiwgeTIsIHQpO1xuICAgIHZhciBjMiA9IGxpbmUucG9pbnRBdCh4MiwgeTIsIHgzLCB5MywgdCk7XG4gICAgdmFyIGMzID0gbGluZS5wb2ludEF0KHgzLCB5MywgeDQsIHk0LCB0KTtcbiAgICB2YXIgYzEyID0gbGluZS5wb2ludEF0KGMxLngsIGMxLnksIGMyLngsIGMyLnksIHQpO1xuICAgIHZhciBjMjMgPSBsaW5lLnBvaW50QXQoYzIueCwgYzIueSwgYzMueCwgYzMueSwgdCk7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgW3gxLCB5MSwgYzEueCwgYzEueSwgYzEyLngsIGMxMi55LCB4dCwgeXRdLFxuICAgICAgICBbeHQsIHl0LCBjMjMueCwgYzIzLnksIGMzLngsIGMzLnksIHg0LCB5NF0sXG4gICAgXTtcbn1cbi8vIOS9v+eUqOi/reS7o+azleWPlui0neWhnuWwlOabsue6v+eahOmVv+W6pu+8jOS6jOmYtuWSjOS4iemYtuWIhuW8gOWGme+8jOabtOa4heaZsOWSjOS+v+S6juiwg+ivlVxuZnVuY3Rpb24gY3ViaWNMZW5ndGgoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgeDQsIHk0LCBpdGVyYXRpb25Db3VudCkge1xuICAgIGlmIChpdGVyYXRpb25Db3VudCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gc25hcExlbmd0aChbeDEsIHgyLCB4MywgeDRdLCBbeTEsIHkyLCB5MywgeTRdKTtcbiAgICB9XG4gICAgdmFyIGN1YmljcyA9IGRpdmlkZUN1YmljKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHg0LCB5NCwgMC41KTtcbiAgICB2YXIgbGVmdCA9IGN1Ymljc1swXTtcbiAgICB2YXIgcmlnaHQgPSBjdWJpY3NbMV07XG4gICAgbGVmdC5wdXNoKGl0ZXJhdGlvbkNvdW50IC0gMSk7XG4gICAgcmlnaHQucHVzaChpdGVyYXRpb25Db3VudCAtIDEpO1xuICAgIHJldHVybiBjdWJpY0xlbmd0aC5hcHBseShudWxsLCBsZWZ0KSArIGN1YmljTGVuZ3RoLmFwcGx5KG51bGwsIHJpZ2h0KTtcbn1cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBleHRyZW1hOiBleHRyZW1hLFxuICAgIGJveDogZnVuY3Rpb24gKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHg0LCB5NCkge1xuICAgICAgICB2YXIgeEFyciA9IFt4MSwgeDRdO1xuICAgICAgICB2YXIgeUFyciA9IFt5MSwgeTRdO1xuICAgICAgICB2YXIgeEV4dHJlbWEgPSBleHRyZW1hKHgxLCB4MiwgeDMsIHg0KTtcbiAgICAgICAgdmFyIHlFeHRyZW1hID0gZXh0cmVtYSh5MSwgeTIsIHkzLCB5NCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgeEV4dHJlbWEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHhBcnIucHVzaChjdWJpY0F0KHgxLCB4MiwgeDMsIHg0LCB4RXh0cmVtYVtpXSkpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgeUV4dHJlbWEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHlBcnIucHVzaChjdWJpY0F0KHkxLCB5MiwgeTMsIHk0LCB5RXh0cmVtYVtpXSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnZXRCQm94QnlBcnJheSh4QXJyLCB5QXJyKTtcbiAgICB9LFxuICAgIGxlbmd0aDogZnVuY3Rpb24gKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHg0LCB5NCkge1xuICAgICAgICAvLyDov63ku6PkuInmrKHvvIzliJLliIbmiJAgOCDmrrXmsYLplb/luqZcbiAgICAgICAgcmV0dXJuIGN1YmljTGVuZ3RoKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHg0LCB5NCwgMyk7XG4gICAgfSxcbiAgICBuZWFyZXN0UG9pbnQ6IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCB4NCwgeTQsIHgwLCB5MCwgbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBuZWFyZXN0UG9pbnQoW3gxLCB4MiwgeDMsIHg0XSwgW3kxLCB5MiwgeTMsIHk0XSwgeDAsIHkwLCBjdWJpY0F0LCBsZW5ndGgpO1xuICAgIH0sXG4gICAgcG9pbnREaXN0YW5jZTogZnVuY3Rpb24gKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHg0LCB5NCwgeDAsIHkwLCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHBvaW50ID0gdGhpcy5uZWFyZXN0UG9pbnQoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgeDQsIHk0LCB4MCwgeTAsIGxlbmd0aCk7XG4gICAgICAgIHJldHVybiBkaXN0YW5jZShwb2ludC54LCBwb2ludC55LCB4MCwgeTApO1xuICAgIH0sXG4gICAgaW50ZXJwb2xhdGlvbkF0OiBjdWJpY0F0LFxuICAgIHBvaW50QXQ6IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCB4NCwgeTQsIHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IGN1YmljQXQoeDEsIHgyLCB4MywgeDQsIHQpLFxuICAgICAgICAgICAgeTogY3ViaWNBdCh5MSwgeTIsIHkzLCB5NCwgdCksXG4gICAgICAgIH07XG4gICAgfSxcbiAgICBkaXZpZGU6IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCB4NCwgeTQsIHQpIHtcbiAgICAgICAgcmV0dXJuIGRpdmlkZUN1YmljKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHg0LCB5NCwgdCk7XG4gICAgfSxcbiAgICB0YW5nZW50QW5nbGU6IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCB4NCwgeTQsIHQpIHtcbiAgICAgICAgdmFyIGR4ID0gZGVyaXZhdGl2ZUF0KHgxLCB4MiwgeDMsIHg0LCB0KTtcbiAgICAgICAgdmFyIGR5ID0gZGVyaXZhdGl2ZUF0KHkxLCB5MiwgeTMsIHk0LCB0KTtcbiAgICAgICAgcmV0dXJuIHBpTW9kKE1hdGguYXRhbjIoZHksIGR4KSk7XG4gICAgfSxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jdWJpYy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/cubic.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/ellipse.js":
/*!**********************************************************************!*\
!*** ./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/ellipse.js ***!
\**********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/util.js\");\n/**\n * @fileoverview 椭圆的一些计算,\n * - 周长计算参考:https://www.mathsisfun.com/geometry/ellipse-perimeter.html\n * - 距离计算参考:https://wet-robots.ghost.io/simple-method-for-distance-to-ellipse/\n * @author dxq613@gmail.com\n */\n\nfunction copysign(v1, v2) {\n var absv = Math.abs(v1);\n return v2 > 0 ? absv : absv * -1;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n /**\n * 包围盒计算\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @return {object} 包围盒\n */\n box: function (x, y, rx, ry) {\n return {\n x: x - rx,\n y: y - ry,\n width: rx * 2,\n height: ry * 2,\n };\n },\n /**\n * 计算周长,使用近似法\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @return {number} 椭圆周长\n */\n length: function (x, y, rx, ry) {\n return Math.PI * (3 * (rx + ry) - Math.sqrt((3 * rx + ry) * (rx + 3 * ry)));\n },\n /**\n * 距离椭圆最近的点\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @param {number} x0 指定的点 x\n * @param {number} y0 指定的点 y\n * @return {object} 椭圆上距离指定点最近的点\n */\n nearestPoint: function (x, y, rx, ry, x0, y0) {\n var a = rx;\n var b = ry;\n // 假如椭圆半径为0则返回圆心\n if (a === 0 || b === 0) {\n return {\n x: x,\n y: y,\n };\n }\n // 转换成 0, 0 为中心的椭圆计算\n var relativeX = x0 - x;\n var relativeY = y0 - y;\n var px = Math.abs(relativeX);\n var py = Math.abs(relativeY);\n var squareA = a * a;\n var squareB = b * b;\n // const angle0 = Math.atan2(relativeY, relativeX);\n var t = Math.PI / 4;\n var nearestX; // 椭圆上的任一点\n var nearestY;\n // 迭代 4 次\n for (var i = 0; i < 4; i++) {\n nearestX = a * Math.cos(t);\n nearestY = b * Math.sin(t);\n var ex = ((squareA - squareB) * Math.pow(Math.cos(t), 3)) / a;\n var ey = ((squareB - squareA) * Math.pow(Math.sin(t), 3)) / b;\n var rx1 = nearestX - ex;\n var ry1 = nearestY - ey;\n var qx = px - ex;\n var qy = py - ey;\n var r = Math.hypot(ry1, rx1);\n var q = Math.hypot(qy, qx);\n var delta_c = r * Math.asin((rx1 * qy - ry1 * qx) / (r * q));\n var delta_t = delta_c / Math.sqrt(squareA + squareB - nearestX * nearestX - nearestY * nearestY);\n t += delta_t;\n t = Math.min(Math.PI / 2, Math.max(0, t));\n }\n return {\n x: x + copysign(nearestX, relativeX),\n y: y + copysign(nearestY, relativeY),\n };\n },\n /**\n * 点到椭圆最近的距离\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @param {number} x0 指定的点 x\n * @param {number} y0 指定的点 y\n * @return {number} 点到椭圆的距离\n */\n pointDistance: function (x, y, rx, ry, x0, y0) {\n var nearestPoint = this.nearestPoint(x, y, rx, ry, x0, y0);\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(nearestPoint.x, nearestPoint.y, x0, y0);\n },\n /**\n * 根据比例获取点\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @param {number} t 指定比例,x轴方向为 0\n * @return {object} 点\n */\n pointAt: function (x, y, rx, ry, t) {\n var angle = 2 * Math.PI * t; // 按照角度进行计算,而不按照周长计算\n return {\n x: x + rx * Math.cos(angle),\n y: y + ry * Math.sin(angle),\n };\n },\n /**\n * 根据比例计算切线角度\n * @param {number} x 椭圆中心 x\n * @param {number} y 椭圆中心 y\n * @param {number} rx 椭圆 x 方向半径\n * @param {number} ry 椭圆 y 方向半径\n * @param {number} t 指定比例 0 - 1 之间,x轴方向为 0。在 0-1 范围之外是循环还是返回 null,还需要调整\n * @return {number} 角度,在 0 - 2PI 之间\n */\n tangentAngle: function (x, y, rx, ry, t) {\n var angle = 2 * Math.PI * t; // 按照角度进行计算,而不按照周长计算\n // 直接使用 x,y 的导数计算, x' = -rx * sin(t); y' = ry * cos(t);\n var tangentAngle = Math.atan2(ry * Math.cos(angle), -rx * Math.sin(angle));\n // 也可以使用指定点的切线方程计算,成本有些高\n // const point = this.pointAt(0, 0, rx, ry, t); // 椭圆的切线同椭圆的中心不相关\n // let tangentAngle = -1 * Math.atan((ry * ry * point.x) / (rx * rx * point.y));\n // if (angle >= 0 && angle <= Math.PI) {\n // tangentAngle += Math.PI;\n // }\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"piMod\"])(tangentAngle);\n },\n});\n//# sourceMappingURL=ellipse.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctbWF0aEAwLjEuN0BAYW50di9nLW1hdGgvZXNtL2VsbGlwc2UuanM/MDBkOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ3lDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBLHVCQUF1QixPQUFPO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0Esb0NBQW9DO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQSxvQ0FBb0M7QUFDcEMsNkNBQTZDO0FBQzdDO0FBQ0E7QUFDQSx1REFBdUQ7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLG1EQUFLO0FBQ3BCLEtBQUs7QUFDTCxDQUFDLEVBQUM7QUFDRiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1tYXRoQDAuMS43QEBhbnR2L2ctbWF0aC9lc20vZWxsaXBzZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVvdmVydmlldyDmpK3lnIbnmoTkuIDkupvorqHnrpfvvIxcbiAqICAtIOWRqOmVv+iuoeeul+WPguiAg++8mmh0dHBzOi8vd3d3Lm1hdGhzaXNmdW4uY29tL2dlb21ldHJ5L2VsbGlwc2UtcGVyaW1ldGVyLmh0bWxcbiAqICAtIOi3neemu+iuoeeul+WPguiAg++8mmh0dHBzOi8vd2V0LXJvYm90cy5naG9zdC5pby9zaW1wbGUtbWV0aG9kLWZvci1kaXN0YW5jZS10by1lbGxpcHNlL1xuICogQGF1dGhvciBkeHE2MTNAZ21haWwuY29tXG4gKi9cbmltcG9ydCB7IGRpc3RhbmNlLCBwaU1vZCB9IGZyb20gJy4vdXRpbCc7XG5mdW5jdGlvbiBjb3B5c2lnbih2MSwgdjIpIHtcbiAgICB2YXIgYWJzdiA9IE1hdGguYWJzKHYxKTtcbiAgICByZXR1cm4gdjIgPiAwID8gYWJzdiA6IGFic3YgKiAtMTtcbn1cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICAvKipcbiAgICAgKiDljIXlm7Tnm5LorqHnrpdcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geCAg5qSt5ZyG5Lit5b+DIHhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geSAg5qSt5ZyG5Lit5b+DIHlcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcngg5qSt5ZyGIHgg5pa55ZCR5Y2K5b6EXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJ5IOakreWchiB5IOaWueWQkeWNiuW+hFxuICAgICAqIEByZXR1cm4ge29iamVjdH0g5YyF5Zu055uSXG4gICAgICovXG4gICAgYm94OiBmdW5jdGlvbiAoeCwgeSwgcngsIHJ5KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiB4IC0gcngsXG4gICAgICAgICAgICB5OiB5IC0gcnksXG4gICAgICAgICAgICB3aWR0aDogcnggKiAyLFxuICAgICAgICAgICAgaGVpZ2h0OiByeSAqIDIsXG4gICAgICAgIH07XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDorqHnrpflkajplb/vvIzkvb/nlKjov5HkvLzms5VcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geCAg5qSt5ZyG5Lit5b+DIHhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geSAg5qSt5ZyG5Lit5b+DIHlcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcngg5qSt5ZyGIHgg5pa55ZCR5Y2K5b6EXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJ5IOakreWchiB5IOaWueWQkeWNiuW+hFxuICAgICAqIEByZXR1cm4ge251bWJlcn0g5qSt5ZyG5ZGo6ZW/XG4gICAgICovXG4gICAgbGVuZ3RoOiBmdW5jdGlvbiAoeCwgeSwgcngsIHJ5KSB7XG4gICAgICAgIHJldHVybiBNYXRoLlBJICogKDMgKiAocnggKyByeSkgLSBNYXRoLnNxcnQoKDMgKiByeCArIHJ5KSAqIChyeCArIDMgKiByeSkpKTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOi3neemu+akreWchuacgOi/keeahOeCuVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4ICDmpK3lnIbkuK3lv4MgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5ICDmpK3lnIbkuK3lv4MgeVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByeCDmpK3lnIYgeCDmlrnlkJHljYrlvoRcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcnkg5qSt5ZyGIHkg5pa55ZCR5Y2K5b6EXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHgwICDmjIflrprnmoTngrkgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5MCAg5oyH5a6a55qE54K5IHlcbiAgICAgKiBAcmV0dXJuIHtvYmplY3R9IOakreWchuS4iui3neemu+aMh+WumueCueacgOi/keeahOeCuVxuICAgICAqL1xuICAgIG5lYXJlc3RQb2ludDogZnVuY3Rpb24gKHgsIHksIHJ4LCByeSwgeDAsIHkwKSB7XG4gICAgICAgIHZhciBhID0gcng7XG4gICAgICAgIHZhciBiID0gcnk7XG4gICAgICAgIC8vIOWBh+WmguakreWchuWNiuW+hOS4ujDliJnov5Tlm57lnIblv4NcbiAgICAgICAgaWYgKGEgPT09IDAgfHwgYiA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB4OiB4LFxuICAgICAgICAgICAgICAgIHk6IHksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIC8vIOi9rOaNouaIkCAw77yMIDAg5Li65Lit5b+D55qE5qSt5ZyG6K6h566XXG4gICAgICAgIHZhciByZWxhdGl2ZVggPSB4MCAtIHg7XG4gICAgICAgIHZhciByZWxhdGl2ZVkgPSB5MCAtIHk7XG4gICAgICAgIHZhciBweCA9IE1hdGguYWJzKHJlbGF0aXZlWCk7XG4gICAgICAgIHZhciBweSA9IE1hdGguYWJzKHJlbGF0aXZlWSk7XG4gICAgICAgIHZhciBzcXVhcmVBID0gYSAqIGE7XG4gICAgICAgIHZhciBzcXVhcmVCID0gYiAqIGI7XG4gICAgICAgIC8vIGNvbnN0IGFuZ2xlMCA9IE1hdGguYXRhbjIocmVsYXRpdmVZLCByZWxhdGl2ZVgpO1xuICAgICAgICB2YXIgdCA9IE1hdGguUEkgLyA0O1xuICAgICAgICB2YXIgbmVhcmVzdFg7IC8vIOakreWchuS4iueahOS7u+S4gOeCuVxuICAgICAgICB2YXIgbmVhcmVzdFk7XG4gICAgICAgIC8vIOi/reS7oyA0IOasoVxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykge1xuICAgICAgICAgICAgbmVhcmVzdFggPSBhICogTWF0aC5jb3ModCk7XG4gICAgICAgICAgICBuZWFyZXN0WSA9IGIgKiBNYXRoLnNpbih0KTtcbiAgICAgICAgICAgIHZhciBleCA9ICgoc3F1YXJlQSAtIHNxdWFyZUIpICogTWF0aC5wb3coTWF0aC5jb3ModCksIDMpKSAvIGE7XG4gICAgICAgICAgICB2YXIgZXkgPSAoKHNxdWFyZUIgLSBzcXVhcmVBKSAqIE1hdGgucG93KE1hdGguc2luKHQpLCAzKSkgLyBiO1xuICAgICAgICAgICAgdmFyIHJ4MSA9IG5lYXJlc3RYIC0gZXg7XG4gICAgICAgICAgICB2YXIgcnkxID0gbmVhcmVzdFkgLSBleTtcbiAgICAgICAgICAgIHZhciBxeCA9IHB4IC0gZXg7XG4gICAgICAgICAgICB2YXIgcXkgPSBweSAtIGV5O1xuICAgICAgICAgICAgdmFyIHIgPSBNYXRoLmh5cG90KHJ5MSwgcngxKTtcbiAgICAgICAgICAgIHZhciBxID0gTWF0aC5oeXBvdChxeSwgcXgpO1xuICAgICAgICAgICAgdmFyIGRlbHRhX2MgPSByICogTWF0aC5hc2luKChyeDEgKiBxeSAtIHJ5MSAqIHF4KSAvIChyICogcSkpO1xuICAgICAgICAgICAgdmFyIGRlbHRhX3QgPSBkZWx0YV9jIC8gTWF0aC5zcXJ0KHNxdWFyZUEgKyBzcXVhcmVCIC0gbmVhcmVzdFggKiBuZWFyZXN0WCAtIG5lYXJlc3RZICogbmVhcmVzdFkpO1xuICAgICAgICAgICAgdCArPSBkZWx0YV90O1xuICAgICAgICAgICAgdCA9IE1hdGgubWluKE1hdGguUEkgLyAyLCBNYXRoLm1heCgwLCB0KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IHggKyBjb3B5c2lnbihuZWFyZXN0WCwgcmVsYXRpdmVYKSxcbiAgICAgICAgICAgIHk6IHkgKyBjb3B5c2lnbihuZWFyZXN0WSwgcmVsYXRpdmVZKSxcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOeCueWIsOakreWchuacgOi/keeahOi3neemu1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4ICDmpK3lnIbkuK3lv4MgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5ICDmpK3lnIbkuK3lv4MgeVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByeCDmpK3lnIYgeCDmlrnlkJHljYrlvoRcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcnkg5qSt5ZyGIHkg5pa55ZCR5Y2K5b6EXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHgwICDmjIflrprnmoTngrkgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5MCAg5oyH5a6a55qE54K5IHlcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IOeCueWIsOakreWchueahOi3neemu1xuICAgICAqL1xuICAgIHBvaW50RGlzdGFuY2U6IGZ1bmN0aW9uICh4LCB5LCByeCwgcnksIHgwLCB5MCkge1xuICAgICAgICB2YXIgbmVhcmVzdFBvaW50ID0gdGhpcy5uZWFyZXN0UG9pbnQoeCwgeSwgcngsIHJ5LCB4MCwgeTApO1xuICAgICAgICByZXR1cm4gZGlzdGFuY2UobmVhcmVzdFBvaW50LngsIG5lYXJlc3RQb2ludC55LCB4MCwgeTApO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICog5qC55o2u5q+U5L6L6I635Y+W54K5XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHgg5qSt5ZyG5Lit5b+DIHhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geSDmpK3lnIbkuK3lv4MgeVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByeCDmpK3lnIYgeCDmlrnlkJHljYrlvoRcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcnkg5qSt5ZyGIHkg5pa55ZCR5Y2K5b6EXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHQg5oyH5a6a5q+U5L6L77yMeOi9tOaWueWQkeS4uiAwXG4gICAgICogQHJldHVybiB7b2JqZWN0fSDngrlcbiAgICAgKi9cbiAgICBwb2ludEF0OiBmdW5jdGlvbiAoeCwgeSwgcngsIHJ5LCB0KSB7XG4gICAgICAgIHZhciBhbmdsZSA9IDIgKiBNYXRoLlBJICogdDsgLy8g5oyJ54Wn6KeS5bqm6L+b6KGM6K6h566X77yM6ICM5LiN5oyJ54Wn5ZGo6ZW/6K6h566XXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiB4ICsgcnggKiBNYXRoLmNvcyhhbmdsZSksXG4gICAgICAgICAgICB5OiB5ICsgcnkgKiBNYXRoLnNpbihhbmdsZSksXG4gICAgICAgIH07XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmoLnmja7mr5TkvovorqHnrpfliIfnur/op5LluqZcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geCDmpK3lnIbkuK3lv4MgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5IOakreWchuS4reW/gyB5XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJ4IOakreWchiB4IOaWueWQkeWNiuW+hFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSByeSDmpK3lnIYgeSDmlrnlkJHljYrlvoRcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdCDmjIflrprmr5TkvosgMCAtIDEg5LmL6Ze077yMeOi9tOaWueWQkeS4uiAw44CC5ZyoIDAtMSDojIPlm7TkuYvlpJbmmK/lvqrnjq/ov5jmmK/ov5Tlm54gbnVsbO+8jOi/mOmcgOimgeiwg+aVtFxuICAgICAqIEByZXR1cm4ge251bWJlcn0g6KeS5bqm77yM5ZyoIDAgLSAyUEkg5LmL6Ze0XG4gICAgICovXG4gICAgdGFuZ2VudEFuZ2xlOiBmdW5jdGlvbiAoeCwgeSwgcngsIHJ5LCB0KSB7XG4gICAgICAgIHZhciBhbmdsZSA9IDIgKiBNYXRoLlBJICogdDsgLy8g5oyJ54Wn6KeS5bqm6L+b6KGM6K6h566X77yM6ICM5LiN5oyJ54Wn5ZGo6ZW/6K6h566XXG4gICAgICAgIC8vIOebtOaOpeS9v+eUqCB4LHkg55qE5a+85pWw6K6h566X77yMIHgnID0gLXJ4ICogc2luKHQpOyB5JyA9IHJ5ICogY29zKHQpO1xuICAgICAgICB2YXIgdGFuZ2VudEFuZ2xlID0gTWF0aC5hdGFuMihyeSAqIE1hdGguY29zKGFuZ2xlKSwgLXJ4ICogTWF0aC5zaW4oYW5nbGUpKTtcbiAgICAgICAgLy8g5Lmf5Y+v5Lul5L2/55So5oyH5a6a54K555qE5YiH57q/5pa556iL6K6h566X77yM5oiQ5pys5pyJ5Lqb6auYXG4gICAgICAgIC8vIGNvbnN0IHBvaW50ID0gdGhpcy5wb2ludEF0KDAsIDAsIHJ4LCByeSwgdCk7IC8vIOakreWchueahOWIh+e6v+WQjOakreWchueahOS4reW/g+S4jeebuOWFs1xuICAgICAgICAvLyBsZXQgdGFuZ2VudEFuZ2xlID0gLTEgKiBNYXRoLmF0YW4oKHJ5ICogcnkgKiBwb2ludC54KSAvIChyeCAqIHJ4ICogcG9pbnQueSkpO1xuICAgICAgICAvLyBpZiAoYW5nbGUgPj0gMCAmJiBhbmdsZSA8PSBNYXRoLlBJKSB7XG4gICAgICAgIC8vICAgdGFuZ2VudEFuZ2xlICs9IE1hdGguUEk7XG4gICAgICAgIC8vIH1cbiAgICAgICAgcmV0dXJuIHBpTW9kKHRhbmdlbnRBbmdsZSk7XG4gICAgfSxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1lbGxpcHNlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/ellipse.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/index.js":
/*!********************************************************************!*\
!*** ./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/index.js ***!
\********************************************************************/
/*! exports provided: Quad, Cubic, Arc, Line, Polygon, Polyline, Util */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _quadratic__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./quadratic */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/quadratic.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Quad\", function() { return _quadratic__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _cubic__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./cubic */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/cubic.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Cubic\", function() { return _cubic__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _arc__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./arc */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/arc.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Arc\", function() { return _arc__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./line */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/line.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Line\", function() { return _line__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _polygon__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./polygon */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/polygon.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Polygon\", function() { return _polygon__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _polyline__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./polyline */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/polyline.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Polyline\", function() { return _polyline__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/util.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"Util\", function() { return _util__WEBPACK_IMPORTED_MODULE_6__; });\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctbWF0aEAwLjEuN0BAYW50di9nLW1hdGgvZXNtL2luZGV4LmpzP2Y2OTAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQStCO0FBQ0g7QUFDSjtBQUNFO0FBQ007QUFDRTtBQUNIO0FBQzRCO0FBQzNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLW1hdGhAMC4xLjdAQGFudHYvZy1tYXRoL2VzbS9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBRdWFkIGZyb20gJy4vcXVhZHJhdGljJztcbmltcG9ydCBDdWJpYyBmcm9tICcuL2N1YmljJztcbmltcG9ydCBBcmMgZnJvbSAnLi9hcmMnO1xuaW1wb3J0IExpbmUgZnJvbSAnLi9saW5lJztcbmltcG9ydCBQb2x5Z29uIGZyb20gJy4vcG9seWdvbic7XG5pbXBvcnQgUG9seWxpbmUgZnJvbSAnLi9wb2x5bGluZSc7XG5pbXBvcnQgKiBhcyBVdGlsIGZyb20gJy4vdXRpbCc7XG5leHBvcnQgeyBRdWFkLCBDdWJpYywgQXJjLCBMaW5lLCBQb2x5Z29uLCBQb2x5bGluZSwgVXRpbCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/line.js":
/*!*******************************************************************!*\
!*** ./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/line.js ***!
\*******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/util.js\");\n/* harmony import */ var gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! gl-matrix/vec2 */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/vec2.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n /**\n * 计算线段的包围盒\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {object} 包围盒对象\n */\n box: function (x1, y1, x2, y2) {\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"getBBoxByArray\"])([x1, x2], [y1, y2]);\n },\n /**\n * 线段的长度\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {number} 距离\n */\n length: function (x1, y1, x2, y2) {\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(x1, y1, x2, y2);\n },\n /**\n * 根据比例获取点\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @param {number} t 指定比例\n * @return {object} 包含 x, y 的点\n */\n pointAt: function (x1, y1, x2, y2, t) {\n return {\n x: (1 - t) * x1 + t * x2,\n y: (1 - t) * y1 + t * y2,\n };\n },\n /**\n * 点到线段的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @param {number} x 测试点 x\n * @param {number} y 测试点 y\n * @return {number} 距离\n */\n pointDistance: function (x1, y1, x2, y2, x, y) {\n // 投影距离 x1, y1 的向量,假设 p, p1, p2 三个点,投影点为 a\n // p1a = p1p.p1p2/|p1p2| * (p1p 的单位向量)\n var cross = (x2 - x1) * (x - x1) + (y2 - y1) * (y - y1);\n if (cross < 0) {\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(x1, y1, x, y);\n }\n var lengthSquare = (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1);\n if (cross > lengthSquare) {\n return Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"distance\"])(x2, y2, x, y);\n }\n return this.pointToLine(x1, y1, x2, y2, x, y);\n },\n /**\n * 点到直线的距离,而不是点到线段的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @param {number} x 测试点 x\n * @param {number} y 测试点 y\n * @return {number} 距离\n */\n pointToLine: function (x1, y1, x2, y2, x, y) {\n var d = [x2 - x1, y2 - y1];\n // 如果端点相等,则判定点到点的距离\n if (gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_1__[\"exactEquals\"](d, [0, 0])) {\n return Math.sqrt((x - x1) * (x - x1) + (y - y1) * (y - y1));\n }\n var u = [-d[1], d[0]];\n gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_1__[\"normalize\"](u, u);\n var a = [x - x1, y - y1];\n return Math.abs(gl_matrix_vec2__WEBPACK_IMPORTED_MODULE_1__[\"dot\"](a, u));\n },\n /**\n * 线段的角度\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {number} 导数\n */\n tangentAngle: function (x1, y1, x2, y2) {\n return Math.atan2(y2 - y1, x2 - x1);\n },\n});\n//# sourceMappingURL=line.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctbWF0aEAwLjEuN0BAYW50di9nLW1hdGgvZXNtL2xpbmUuanM/YTZlZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBa0Q7QUFDWDtBQUN4QjtBQUNmO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBLGVBQWUsNERBQWM7QUFDN0IsS0FBSztBQUNMO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBLGVBQWUsc0RBQVE7QUFDdkIsS0FBSztBQUNMO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHNEQUFRO0FBQzNCO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixzREFBUTtBQUMzQjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksMERBQWdCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLFFBQVEsd0RBQWM7QUFDdEI7QUFDQSx3QkFBd0Isa0RBQVE7QUFDaEMsS0FBSztBQUNMO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLENBQUMsRUFBQztBQUNGIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLW1hdGhAMC4xLjdAQGFudHYvZy1tYXRoL2VzbS9saW5lLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGlzdGFuY2UsIGdldEJCb3hCeUFycmF5IH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCAqIGFzIHZlYzIgZnJvbSAnZ2wtbWF0cml4L3ZlYzInO1xuZXhwb3J0IGRlZmF1bHQge1xuICAgIC8qKlxuICAgICAqIOiuoeeul+e6v+auteeahOWMheWbtOebklxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4MSDotbflp4vngrkgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5MSDotbflp4vngrkgeVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4MiDnu5PmnZ/ngrkgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5MiDnu5PmnZ/ngrkgeVxuICAgICAqIEByZXR1cm4ge29iamVjdH0g5YyF5Zu055uS5a+56LGhXG4gICAgICovXG4gICAgYm94OiBmdW5jdGlvbiAoeDEsIHkxLCB4MiwgeTIpIHtcbiAgICAgICAgcmV0dXJuIGdldEJCb3hCeUFycmF5KFt4MSwgeDJdLCBbeTEsIHkyXSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDnur/mrrXnmoTplb/luqZcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geDEg6LW35aeL54K5IHhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geTEg6LW35aeL54K5IHlcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geDIg57uT5p2f54K5IHhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geTIg57uT5p2f54K5IHlcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IOi3neemu1xuICAgICAqL1xuICAgIGxlbmd0aDogZnVuY3Rpb24gKHgxLCB5MSwgeDIsIHkyKSB7XG4gICAgICAgIHJldHVybiBkaXN0YW5jZSh4MSwgeTEsIHgyLCB5Mik7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmoLnmja7mr5Tkvovojrflj5bngrlcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geDEg6LW35aeL54K5IHhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geTEg6LW35aeL54K5IHlcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geDIg57uT5p2f54K5IHhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geTIg57uT5p2f54K5IHlcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdCDmjIflrprmr5TkvotcbiAgICAgKiBAcmV0dXJuIHtvYmplY3R9IOWMheWQqyB4LCB5IOeahOeCuVxuICAgICAqL1xuICAgIHBvaW50QXQ6IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5MiwgdCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogKDEgLSB0KSAqIHgxICsgdCAqIHgyLFxuICAgICAgICAgICAgeTogKDEgLSB0KSAqIHkxICsgdCAqIHkyLFxuICAgICAgICB9O1xuICAgIH0sXG4gICAgLyoqXG4gICAgICog54K55Yiw57q/5q6155qE6Led56a7XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHgxIOi1t+Wni+eCuSB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHkxIOi1t+Wni+eCuSB5XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHgyIOe7k+adn+eCuSB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHkyIOe7k+adn+eCuSB5XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHggIOa1i+ivleeCuSB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHkgIOa1i+ivleeCuSB5XG4gICAgICogQHJldHVybiB7bnVtYmVyfSDot53nprtcbiAgICAgKi9cbiAgICBwb2ludERpc3RhbmNlOiBmdW5jdGlvbiAoeDEsIHkxLCB4MiwgeTIsIHgsIHkpIHtcbiAgICAgICAgLy8g5oqV5b2x6Led56a7IHgxLCB5MSDnmoTlkJHph4/vvIzlgYforr4gcCwgcDEsIHAyIOS4ieS4queCue+8jOaKleW9seeCueS4uiBhXG4gICAgICAgIC8vIHAxYSA9IHAxcC5wMXAyL3xwMXAyfCAqIChwMXAg55qE5Y2V5L2N5ZCR6YePKVxuICAgICAgICB2YXIgY3Jvc3MgPSAoeDIgLSB4MSkgKiAoeCAtIHgxKSArICh5MiAtIHkxKSAqICh5IC0geTEpO1xuICAgICAgICBpZiAoY3Jvc3MgPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gZGlzdGFuY2UoeDEsIHkxLCB4LCB5KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbGVuZ3RoU3F1YXJlID0gKHgyIC0geDEpICogKHgyIC0geDEpICsgKHkyIC0geTEpICogKHkyIC0geTEpO1xuICAgICAgICBpZiAoY3Jvc3MgPiBsZW5ndGhTcXVhcmUpIHtcbiAgICAgICAgICAgIHJldHVybiBkaXN0YW5jZSh4MiwgeTIsIHgsIHkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnBvaW50VG9MaW5lKHgxLCB5MSwgeDIsIHkyLCB4LCB5KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOeCueWIsOebtOe6v+eahOi3neemu++8jOiAjOS4jeaYr+eCueWIsOe6v+auteeahOi3neemu1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4MSDotbflp4vngrkgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5MSDotbflp4vngrkgeVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4MiDnu5PmnZ/ngrkgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5MiDnu5PmnZ/ngrkgeVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4ICDmtYvor5XngrkgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5ICDmtYvor5XngrkgeVxuICAgICAqIEByZXR1cm4ge251bWJlcn0g6Led56a7XG4gICAgICovXG4gICAgcG9pbnRUb0xpbmU6IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5MiwgeCwgeSkge1xuICAgICAgICB2YXIgZCA9IFt4MiAtIHgxLCB5MiAtIHkxXTtcbiAgICAgICAgLy8g5aaC5p6c56uv54K555u4562J77yM5YiZ5Yik5a6a54K55Yiw54K555qE6Led56a7XG4gICAgICAgIGlmICh2ZWMyLmV4YWN0RXF1YWxzKGQsIFswLCAwXSkpIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLnNxcnQoKHggLSB4MSkgKiAoeCAtIHgxKSArICh5IC0geTEpICogKHkgLSB5MSkpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB1ID0gWy1kWzFdLCBkWzBdXTtcbiAgICAgICAgdmVjMi5ub3JtYWxpemUodSwgdSk7XG4gICAgICAgIHZhciBhID0gW3ggLSB4MSwgeSAtIHkxXTtcbiAgICAgICAgcmV0dXJuIE1hdGguYWJzKHZlYzIuZG90KGEsIHUpKTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOe6v+auteeahOinkuW6plxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4MSDotbflp4vngrkgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5MSDotbflp4vngrkgeVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4MiDnu5PmnZ/ngrkgeFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5MiDnu5PmnZ/ngrkgeVxuICAgICAqIEByZXR1cm4ge251bWJlcn0g5a+85pWwXG4gICAgICovXG4gICAgdGFuZ2VudEFuZ2xlOiBmdW5jdGlvbiAoeDEsIHkxLCB4MiwgeTIpIHtcbiAgICAgICAgcmV0dXJuIE1hdGguYXRhbjIoeTIgLSB5MSwgeDIgLSB4MSk7XG4gICAgfSxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1saW5lLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/line.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/polygon.js":
/*!**********************************************************************!*\
!*** ./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/polygon.js ***!
\**********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _segments__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./segments */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/segments.js\");\n/* harmony import */ var _polyline__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./polyline */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/polyline.js\");\n\n\nfunction getAllPoints(points) {\n var tmp = points.slice(0);\n if (points.length) {\n tmp.push(points[0]);\n }\n return tmp;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n /**\n * 计算多边形的包围盒\n * @param {array} points 点的集合 [x,y] 的形式\n * @return {object} 包围盒\n */\n box: function (points) {\n return _polyline__WEBPACK_IMPORTED_MODULE_1__[\"default\"].box(points);\n },\n /**\n * 计算多边形的长度\n * @param {array} points 点的集合 [x,y] 的形式\n * @return {object} 多边形边的长度\n */\n length: function (points) {\n return Object(_segments__WEBPACK_IMPORTED_MODULE_0__[\"lengthOfSegment\"])(getAllPoints(points));\n },\n /**\n * 根据比例获取多边形的点\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} t 在多边形的长度上的比例\n * @return {object} 根据比例值计算出来的点\n */\n pointAt: function (points, t) {\n return Object(_segments__WEBPACK_IMPORTED_MODULE_0__[\"pointAtSegments\"])(getAllPoints(points), t);\n },\n /**\n * 指定点到多边形的距离\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} x 指定点的 x\n * @param {number} y 指定点的 y\n * @return {number} 点到多边形的距离\n */\n pointDistance: function (points, x, y) {\n return Object(_segments__WEBPACK_IMPORTED_MODULE_0__[\"distanceAtSegment\"])(getAllPoints(points), x, y);\n },\n /**\n * 根据比例获取多边形的切线角度\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} t 在多边形的长度上的比例\n * @return {object} 根据比例值计算出来的角度\n */\n tangentAngle: function (points, t) {\n return Object(_segments__WEBPACK_IMPORTED_MODULE_0__[\"angleAtSegments\"])(getAllPoints(points), t);\n },\n});\n//# sourceMappingURL=polygon.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctbWF0aEAwLjEuN0BAYW50di9nLW1hdGgvZXNtL3BvbHlnb24uanM/OTZkMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBa0c7QUFDaEU7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQSxlQUFlLE1BQU07QUFDckIsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBLGVBQWUsaURBQVE7QUFDdkIsS0FBSztBQUNMO0FBQ0E7QUFDQSxlQUFlLE1BQU07QUFDckIsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBLGVBQWUsaUVBQWU7QUFDOUIsS0FBSztBQUNMO0FBQ0E7QUFDQSxlQUFlLE1BQU07QUFDckIsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQSxlQUFlLGlFQUFlO0FBQzlCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxNQUFNO0FBQ3JCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBLGVBQWUsbUVBQWlCO0FBQ2hDLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxNQUFNO0FBQ3JCLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0EsZUFBZSxpRUFBZTtBQUM5QixLQUFLO0FBQ0wsQ0FBQyxFQUFDO0FBQ0YiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctbWF0aEAwLjEuN0BAYW50di9nLW1hdGgvZXNtL3BvbHlnb24uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwb2ludEF0U2VnbWVudHMsIGFuZ2xlQXRTZWdtZW50cywgZGlzdGFuY2VBdFNlZ21lbnQsIGxlbmd0aE9mU2VnbWVudCB9IGZyb20gJy4vc2VnbWVudHMnO1xuaW1wb3J0IHBvbHlsaW5lIGZyb20gJy4vcG9seWxpbmUnO1xuZnVuY3Rpb24gZ2V0QWxsUG9pbnRzKHBvaW50cykge1xuICAgIHZhciB0bXAgPSBwb2ludHMuc2xpY2UoMCk7XG4gICAgaWYgKHBvaW50cy5sZW5ndGgpIHtcbiAgICAgICAgdG1wLnB1c2gocG9pbnRzWzBdKTtcbiAgICB9XG4gICAgcmV0dXJuIHRtcDtcbn1cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICAvKipcbiAgICAgKiDorqHnrpflpJrovrnlvaLnmoTljIXlm7Tnm5JcbiAgICAgKiBAcGFyYW0ge2FycmF5fSBwb2ludHMg54K555qE6ZuG5ZCIIFt4LHldIOeahOW9ouW8j1xuICAgICAqIEByZXR1cm4ge29iamVjdH0g5YyF5Zu055uSXG4gICAgICovXG4gICAgYm94OiBmdW5jdGlvbiAocG9pbnRzKSB7XG4gICAgICAgIHJldHVybiBwb2x5bGluZS5ib3gocG9pbnRzKTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOiuoeeul+Wkmui+ueW9oueahOmVv+W6plxuICAgICAqIEBwYXJhbSB7YXJyYXl9IHBvaW50cyDngrnnmoTpm4blkIggW3gseV0g55qE5b2i5byPXG4gICAgICogQHJldHVybiB7b2JqZWN0fSDlpJrovrnlvaLovrnnmoTplb/luqZcbiAgICAgKi9cbiAgICBsZW5ndGg6IGZ1bmN0aW9uIChwb2ludHMpIHtcbiAgICAgICAgcmV0dXJuIGxlbmd0aE9mU2VnbWVudChnZXRBbGxQb2ludHMocG9pbnRzKSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmoLnmja7mr5Tkvovojrflj5blpJrovrnlvaLnmoTngrlcbiAgICAgKiBAcGFyYW0ge2FycmF5fSBwb2ludHMg54K555qE6ZuG5ZCIIFt4LHldIOeahOW9ouW8j1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0IOWcqOWkmui+ueW9oueahOmVv+W6puS4iueahOavlOS+i1xuICAgICAqIEByZXR1cm4ge29iamVjdH0g5qC55o2u5q+U5L6L5YC86K6h566X5Ye65p2l55qE54K5XG4gICAgICovXG4gICAgcG9pbnRBdDogZnVuY3Rpb24gKHBvaW50cywgdCkge1xuICAgICAgICByZXR1cm4gcG9pbnRBdFNlZ21lbnRzKGdldEFsbFBvaW50cyhwb2ludHMpLCB0KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOaMh+WumueCueWIsOWkmui+ueW9oueahOi3neemu1xuICAgICAqIEBwYXJhbSB7YXJyYXl9IHBvaW50cyDngrnnmoTpm4blkIggW3gseV0g55qE5b2i5byPXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHgg5oyH5a6a54K555qEIHhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0geSDmjIflrprngrnnmoQgeVxuICAgICAqIEByZXR1cm4ge251bWJlcn0g54K55Yiw5aSa6L655b2i55qE6Led56a7XG4gICAgICovXG4gICAgcG9pbnREaXN0YW5jZTogZnVuY3Rpb24gKHBvaW50cywgeCwgeSkge1xuICAgICAgICByZXR1cm4gZGlzdGFuY2VBdFNlZ21lbnQoZ2V0QWxsUG9pbnRzKHBvaW50cyksIHgsIHkpO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICog5qC55o2u5q+U5L6L6I635Y+W5aSa6L655b2i55qE5YiH57q/6KeS5bqmXG4gICAgICogQHBhcmFtIHthcnJheX0gcG9pbnRzIOeCueeahOmbhuWQiCBbeCx5XSDnmoTlvaLlvI9cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdCDlnKjlpJrovrnlvaLnmoTplb/luqbkuIrnmoTmr5TkvotcbiAgICAgKiBAcmV0dXJuIHtvYmplY3R9IOagueaNruavlOS+i+WAvOiuoeeul+WHuuadpeeahOinkuW6plxuICAgICAqL1xuICAgIHRhbmdlbnRBbmdsZTogZnVuY3Rpb24gKHBvaW50cywgdCkge1xuICAgICAgICByZXR1cm4gYW5nbGVBdFNlZ21lbnRzKGdldEFsbFBvaW50cyhwb2ludHMpLCB0KTtcbiAgICB9LFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBvbHlnb24uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/polygon.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/polyline.js":
/*!***********************************************************************!*\
!*** ./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/polyline.js ***!
\***********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _segments__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./segments */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/segments.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/util.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n /**\n * 计算多折线的包围盒\n * @param {array} points 点的集合 [x,y] 的形式\n * @return {object} 包围盒\n */\n box: function (points) {\n var xArr = [];\n var yArr = [];\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n xArr.push(point[0]);\n yArr.push(point[1]);\n }\n return Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getBBoxByArray\"])(xArr, yArr);\n },\n /**\n * 计算多折线的长度\n * @param {array} points 点的集合 [x,y] 的形式\n * @return {object} 多条边的长度\n */\n length: function (points) {\n return Object(_segments__WEBPACK_IMPORTED_MODULE_0__[\"lengthOfSegment\"])(points);\n },\n /**\n * 根据比例获取多折线的点\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} t 在多折线的长度上的比例\n * @return {object} 根据比例值计算出来的点\n */\n pointAt: function (points, t) {\n return Object(_segments__WEBPACK_IMPORTED_MODULE_0__[\"pointAtSegments\"])(points, t);\n },\n /**\n * 指定点到多折线的距离\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} x 指定点的 x\n * @param {number} y 指定点的 y\n * @return {number} 点到多折线的距离\n */\n pointDistance: function (points, x, y) {\n return Object(_segments__WEBPACK_IMPORTED_MODULE_0__[\"distanceAtSegment\"])(points, x, y);\n },\n /**\n * 根据比例获取多折线的切线角度\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} t 在多折线的长度上的比例\n * @return {object} 根据比例值计算出来的角度\n */\n tangentAngle: function (points, t) {\n return Object(_segments__WEBPACK_IMPORTED_MODULE_0__[\"angleAtSegments\"])(points, t);\n },\n});\n//# sourceMappingURL=polyline.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctbWF0aEAwLjEuN0BAYW50di9nLW1hdGgvZXNtL3BvbHlsaW5lLmpzP2QzMGIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQWtHO0FBQzFEO0FBQ3pCO0FBQ2Y7QUFDQTtBQUNBLGVBQWUsTUFBTTtBQUNyQixnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixtQkFBbUI7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLDREQUFjO0FBQzdCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxNQUFNO0FBQ3JCLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQSxlQUFlLGlFQUFlO0FBQzlCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxNQUFNO0FBQ3JCLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0EsZUFBZSxpRUFBZTtBQUM5QixLQUFLO0FBQ0w7QUFDQTtBQUNBLGVBQWUsTUFBTTtBQUNyQixlQUFlLE9BQU87QUFDdEIsZUFBZSxPQUFPO0FBQ3RCLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQSxlQUFlLG1FQUFpQjtBQUNoQyxLQUFLO0FBQ0w7QUFDQTtBQUNBLGVBQWUsTUFBTTtBQUNyQixlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQTtBQUNBLGVBQWUsaUVBQWU7QUFDOUIsS0FBSztBQUNMLENBQUMsRUFBQztBQUNGIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLW1hdGhAMC4xLjdAQGFudHYvZy1tYXRoL2VzbS9wb2x5bGluZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBvaW50QXRTZWdtZW50cywgYW5nbGVBdFNlZ21lbnRzLCBkaXN0YW5jZUF0U2VnbWVudCwgbGVuZ3RoT2ZTZWdtZW50IH0gZnJvbSAnLi9zZWdtZW50cyc7XG5pbXBvcnQgeyBnZXRCQm94QnlBcnJheSB9IGZyb20gJy4vdXRpbCc7XG5leHBvcnQgZGVmYXVsdCB7XG4gICAgLyoqXG4gICAgICog6K6h566X5aSa5oqY57q/55qE5YyF5Zu055uSXG4gICAgICogQHBhcmFtIHthcnJheX0gcG9pbnRzIOeCueeahOmbhuWQiCBbeCx5XSDnmoTlvaLlvI9cbiAgICAgKiBAcmV0dXJuIHtvYmplY3R9IOWMheWbtOebklxuICAgICAqL1xuICAgIGJveDogZnVuY3Rpb24gKHBvaW50cykge1xuICAgICAgICB2YXIgeEFyciA9IFtdO1xuICAgICAgICB2YXIgeUFyciA9IFtdO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIHBvaW50ID0gcG9pbnRzW2ldO1xuICAgICAgICAgICAgeEFyci5wdXNoKHBvaW50WzBdKTtcbiAgICAgICAgICAgIHlBcnIucHVzaChwb2ludFsxXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldEJCb3hCeUFycmF5KHhBcnIsIHlBcnIpO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICog6K6h566X5aSa5oqY57q/55qE6ZW/5bqmXG4gICAgICogQHBhcmFtIHthcnJheX0gcG9pbnRzIOeCueeahOmbhuWQiCBbeCx5XSDnmoTlvaLlvI9cbiAgICAgKiBAcmV0dXJuIHtvYmplY3R9IOWkmuadoei+ueeahOmVv+W6plxuICAgICAqL1xuICAgIGxlbmd0aDogZnVuY3Rpb24gKHBvaW50cykge1xuICAgICAgICByZXR1cm4gbGVuZ3RoT2ZTZWdtZW50KHBvaW50cyk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmoLnmja7mr5Tkvovojrflj5blpJrmipjnur/nmoTngrlcbiAgICAgKiBAcGFyYW0ge2FycmF5fSBwb2ludHMg54K555qE6ZuG5ZCIIFt4LHldIOeahOW9ouW8j1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0IOWcqOWkmuaKmOe6v+eahOmVv+W6puS4iueahOavlOS+i1xuICAgICAqIEByZXR1cm4ge29iamVjdH0g5qC55o2u5q+U5L6L5YC86K6h566X5Ye65p2l55qE54K5XG4gICAgICovXG4gICAgcG9pbnRBdDogZnVuY3Rpb24gKHBvaW50cywgdCkge1xuICAgICAgICByZXR1cm4gcG9pbnRBdFNlZ21lbnRzKHBvaW50cywgdCk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmjIflrprngrnliLDlpJrmipjnur/nmoTot53nprtcbiAgICAgKiBAcGFyYW0ge2FycmF5fSBwb2ludHMg54K555qE6ZuG5ZCIIFt4LHldIOeahOW9ouW8j1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4IOaMh+WumueCueeahCB4XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHkg5oyH5a6a54K555qEIHlcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IOeCueWIsOWkmuaKmOe6v+eahOi3neemu1xuICAgICAqL1xuICAgIHBvaW50RGlzdGFuY2U6IGZ1bmN0aW9uIChwb2ludHMsIHgsIHkpIHtcbiAgICAgICAgcmV0dXJuIGRpc3RhbmNlQXRTZWdtZW50KHBvaW50cywgeCwgeSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmoLnmja7mr5Tkvovojrflj5blpJrmipjnur/nmoTliIfnur/op5LluqZcbiAgICAgKiBAcGFyYW0ge2FycmF5fSBwb2ludHMg54K555qE6ZuG5ZCIIFt4LHldIOeahOW9ouW8j1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0IOWcqOWkmuaKmOe6v+eahOmVv+W6puS4iueahOavlOS+i1xuICAgICAqIEByZXR1cm4ge29iamVjdH0g5qC55o2u5q+U5L6L5YC86K6h566X5Ye65p2l55qE6KeS5bqmXG4gICAgICovXG4gICAgdGFuZ2VudEFuZ2xlOiBmdW5jdGlvbiAocG9pbnRzLCB0KSB7XG4gICAgICAgIHJldHVybiBhbmdsZUF0U2VnbWVudHMocG9pbnRzLCB0KTtcbiAgICB9LFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBvbHlsaW5lLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/polyline.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/quadratic.js":
/*!************************************************************************!*\
!*** ./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/quadratic.js ***!
\************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./line */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/line.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/util.js\");\n/* harmony import */ var _bezier__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./bezier */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/bezier.js\");\n\n\n\n// 差值公式\nfunction quadraticAt(p0, p1, p2, t) {\n var onet = 1 - t;\n return onet * onet * p0 + 2 * t * onet * p1 + t * t * p2;\n}\n// 求极值\nfunction extrema(p0, p1, p2) {\n var a = p0 + p2 - 2 * p1;\n if (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumberEqual\"])(a, 0)) {\n return [0.5];\n }\n var rst = (p0 - p1) / a;\n if (rst <= 1 && rst >= 0) {\n return [rst];\n }\n return [];\n}\nfunction derivativeAt(p0, p1, p2, t) {\n return 2 * (1 - t) * (p1 - p0) + 2 * t * (p2 - p1);\n}\n// 分割贝塞尔曲线\nfunction divideQuadratic(x1, y1, x2, y2, x3, y3, t) {\n // 划分点\n var xt = quadraticAt(x1, x2, x3, t);\n var yt = quadraticAt(y1, y2, y3, t);\n // 分割的第一条曲线的控制点\n var controlPoint1 = _line__WEBPACK_IMPORTED_MODULE_0__[\"default\"].pointAt(x1, y1, x2, y2, t);\n // 分割的第二条曲线的控制点\n var controlPoint2 = _line__WEBPACK_IMPORTED_MODULE_0__[\"default\"].pointAt(x2, y2, x3, y3, t);\n return [\n [x1, y1, controlPoint1.x, controlPoint1.y, xt, yt],\n [xt, yt, controlPoint2.x, controlPoint2.y, x3, y3],\n ];\n}\n// 使用迭代法取贝塞尔曲线的长度\nfunction quadraticLength(x1, y1, x2, y2, x3, y3, iterationCount) {\n if (iterationCount === 0) {\n return (Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"distance\"])(x1, y1, x2, y2) + Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"distance\"])(x2, y2, x3, y3) + Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"distance\"])(x1, y1, x3, y3)) / 2;\n }\n var quadratics = divideQuadratic(x1, y1, x2, y2, x3, y3, 0.5);\n var left = quadratics[0];\n var right = quadratics[1];\n left.push(iterationCount - 1);\n right.push(iterationCount - 1);\n return quadraticLength.apply(null, left) + quadraticLength.apply(null, right);\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n box: function (x1, y1, x2, y2, x3, y3) {\n var xExtrema = extrema(x1, x2, x3)[0];\n var yExtrema = extrema(y1, y2, y3)[0];\n // 控制点不加入 box 的计算\n var xArr = [x1, x3];\n var yArr = [y1, y3];\n if (xExtrema !== undefined) {\n xArr.push(quadraticAt(x1, x2, x3, xExtrema));\n }\n if (yExtrema !== undefined) {\n yArr.push(quadraticAt(y1, y2, y3, yExtrema));\n }\n return Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"getBBoxByArray\"])(xArr, yArr);\n },\n length: function (x1, y1, x2, y2, x3, y3) {\n return quadraticLength(x1, y1, x2, y2, x3, y3, 3);\n },\n nearestPoint: function (x1, y1, x2, y2, x3, y3, x0, y0) {\n return Object(_bezier__WEBPACK_IMPORTED_MODULE_2__[\"nearestPoint\"])([x1, x2, x3], [y1, y2, y3], x0, y0, quadraticAt);\n },\n pointDistance: function (x1, y1, x2, y2, x3, y3, x0, y0) {\n var point = this.nearestPoint(x1, y1, x2, y2, x3, y3, x0, y0);\n return Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"distance\"])(point.x, point.y, x0, y0);\n },\n interpolationAt: quadraticAt,\n pointAt: function (x1, y1, x2, y2, x3, y3, t) {\n return {\n x: quadraticAt(x1, x2, x3, t),\n y: quadraticAt(y1, y2, y3, t),\n };\n },\n divide: function (x1, y1, x2, y2, x3, y3, t) {\n return divideQuadratic(x1, y1, x2, y2, x3, y3, t);\n },\n tangentAngle: function (x1, y1, x2, y2, x3, y3, t) {\n var dx = derivativeAt(x1, x2, x3, t);\n var dy = derivativeAt(y1, y2, y3, t);\n var angle = Math.atan2(dy, dx);\n return Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"piMod\"])(angle);\n },\n});\n//# sourceMappingURL=quadratic.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctbWF0aEAwLjEuN0BAYW50di9nLW1hdGgvZXNtL3F1YWRyYXRpYy5qcz84ODlkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTBCO0FBQzhDO0FBQ2hDO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDJEQUFhO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsNkNBQUk7QUFDNUI7QUFDQSx3QkFBd0IsNkNBQUk7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixzREFBUSxtQkFBbUIsc0RBQVEsbUJBQW1CLHNEQUFRO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsNERBQWM7QUFDN0IsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxlQUFlLDREQUFZO0FBQzNCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxzREFBUTtBQUN2QixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLG1EQUFLO0FBQ3BCLEtBQUs7QUFDTCxDQUFDLEVBQUM7QUFDRiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1tYXRoQDAuMS43QEBhbnR2L2ctbWF0aC9lc20vcXVhZHJhdGljLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxpbmUgZnJvbSAnLi9saW5lJztcbmltcG9ydCB7IGRpc3RhbmNlLCBpc051bWJlckVxdWFsLCBnZXRCQm94QnlBcnJheSwgcGlNb2QgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHsgbmVhcmVzdFBvaW50IH0gZnJvbSAnLi9iZXppZXInO1xuLy8g5beu5YC85YWs5byPXG5mdW5jdGlvbiBxdWFkcmF0aWNBdChwMCwgcDEsIHAyLCB0KSB7XG4gICAgdmFyIG9uZXQgPSAxIC0gdDtcbiAgICByZXR1cm4gb25ldCAqIG9uZXQgKiBwMCArIDIgKiB0ICogb25ldCAqIHAxICsgdCAqIHQgKiBwMjtcbn1cbi8vIOaxguaegeWAvFxuZnVuY3Rpb24gZXh0cmVtYShwMCwgcDEsIHAyKSB7XG4gICAgdmFyIGEgPSBwMCArIHAyIC0gMiAqIHAxO1xuICAgIGlmIChpc051bWJlckVxdWFsKGEsIDApKSB7XG4gICAgICAgIHJldHVybiBbMC41XTtcbiAgICB9XG4gICAgdmFyIHJzdCA9IChwMCAtIHAxKSAvIGE7XG4gICAgaWYgKHJzdCA8PSAxICYmIHJzdCA+PSAwKSB7XG4gICAgICAgIHJldHVybiBbcnN0XTtcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xufVxuZnVuY3Rpb24gZGVyaXZhdGl2ZUF0KHAwLCBwMSwgcDIsIHQpIHtcbiAgICByZXR1cm4gMiAqICgxIC0gdCkgKiAocDEgLSBwMCkgKyAyICogdCAqIChwMiAtIHAxKTtcbn1cbi8vIOWIhuWJsui0neWhnuWwlOabsue6v1xuZnVuY3Rpb24gZGl2aWRlUXVhZHJhdGljKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHQpIHtcbiAgICAvLyDliJLliIbngrlcbiAgICB2YXIgeHQgPSBxdWFkcmF0aWNBdCh4MSwgeDIsIHgzLCB0KTtcbiAgICB2YXIgeXQgPSBxdWFkcmF0aWNBdCh5MSwgeTIsIHkzLCB0KTtcbiAgICAvLyDliIblibLnmoTnrKzkuIDmnaHmm7Lnur/nmoTmjqfliLbngrlcbiAgICB2YXIgY29udHJvbFBvaW50MSA9IGxpbmUucG9pbnRBdCh4MSwgeTEsIHgyLCB5MiwgdCk7XG4gICAgLy8g5YiG5Ymy55qE56ys5LqM5p2h5puy57q/55qE5o6n5Yi254K5XG4gICAgdmFyIGNvbnRyb2xQb2ludDIgPSBsaW5lLnBvaW50QXQoeDIsIHkyLCB4MywgeTMsIHQpO1xuICAgIHJldHVybiBbXG4gICAgICAgIFt4MSwgeTEsIGNvbnRyb2xQb2ludDEueCwgY29udHJvbFBvaW50MS55LCB4dCwgeXRdLFxuICAgICAgICBbeHQsIHl0LCBjb250cm9sUG9pbnQyLngsIGNvbnRyb2xQb2ludDIueSwgeDMsIHkzXSxcbiAgICBdO1xufVxuLy8g5L2/55So6L+t5Luj5rOV5Y+W6LSd5aGe5bCU5puy57q/55qE6ZW/5bqmXG5mdW5jdGlvbiBxdWFkcmF0aWNMZW5ndGgoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgaXRlcmF0aW9uQ291bnQpIHtcbiAgICBpZiAoaXRlcmF0aW9uQ291bnQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIChkaXN0YW5jZSh4MSwgeTEsIHgyLCB5MikgKyBkaXN0YW5jZSh4MiwgeTIsIHgzLCB5MykgKyBkaXN0YW5jZSh4MSwgeTEsIHgzLCB5MykpIC8gMjtcbiAgICB9XG4gICAgdmFyIHF1YWRyYXRpY3MgPSBkaXZpZGVRdWFkcmF0aWMoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgMC41KTtcbiAgICB2YXIgbGVmdCA9IHF1YWRyYXRpY3NbMF07XG4gICAgdmFyIHJpZ2h0ID0gcXVhZHJhdGljc1sxXTtcbiAgICBsZWZ0LnB1c2goaXRlcmF0aW9uQ291bnQgLSAxKTtcbiAgICByaWdodC5wdXNoKGl0ZXJhdGlvbkNvdW50IC0gMSk7XG4gICAgcmV0dXJuIHF1YWRyYXRpY0xlbmd0aC5hcHBseShudWxsLCBsZWZ0KSArIHF1YWRyYXRpY0xlbmd0aC5hcHBseShudWxsLCByaWdodCk7XG59XG5leHBvcnQgZGVmYXVsdCB7XG4gICAgYm94OiBmdW5jdGlvbiAoeDEsIHkxLCB4MiwgeTIsIHgzLCB5Mykge1xuICAgICAgICB2YXIgeEV4dHJlbWEgPSBleHRyZW1hKHgxLCB4MiwgeDMpWzBdO1xuICAgICAgICB2YXIgeUV4dHJlbWEgPSBleHRyZW1hKHkxLCB5MiwgeTMpWzBdO1xuICAgICAgICAvLyDmjqfliLbngrnkuI3liqDlhaUgYm94IOeahOiuoeeul1xuICAgICAgICB2YXIgeEFyciA9IFt4MSwgeDNdO1xuICAgICAgICB2YXIgeUFyciA9IFt5MSwgeTNdO1xuICAgICAgICBpZiAoeEV4dHJlbWEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgeEFyci5wdXNoKHF1YWRyYXRpY0F0KHgxLCB4MiwgeDMsIHhFeHRyZW1hKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHlFeHRyZW1hICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHlBcnIucHVzaChxdWFkcmF0aWNBdCh5MSwgeTIsIHkzLCB5RXh0cmVtYSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnZXRCQm94QnlBcnJheSh4QXJyLCB5QXJyKTtcbiAgICB9LFxuICAgIGxlbmd0aDogZnVuY3Rpb24gKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMpIHtcbiAgICAgICAgcmV0dXJuIHF1YWRyYXRpY0xlbmd0aCh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCAzKTtcbiAgICB9LFxuICAgIG5lYXJlc3RQb2ludDogZnVuY3Rpb24gKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHgwLCB5MCkge1xuICAgICAgICByZXR1cm4gbmVhcmVzdFBvaW50KFt4MSwgeDIsIHgzXSwgW3kxLCB5MiwgeTNdLCB4MCwgeTAsIHF1YWRyYXRpY0F0KTtcbiAgICB9LFxuICAgIHBvaW50RGlzdGFuY2U6IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCB4MCwgeTApIHtcbiAgICAgICAgdmFyIHBvaW50ID0gdGhpcy5uZWFyZXN0UG9pbnQoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgeDAsIHkwKTtcbiAgICAgICAgcmV0dXJuIGRpc3RhbmNlKHBvaW50LngsIHBvaW50LnksIHgwLCB5MCk7XG4gICAgfSxcbiAgICBpbnRlcnBvbGF0aW9uQXQ6IHF1YWRyYXRpY0F0LFxuICAgIHBvaW50QXQ6IGZ1bmN0aW9uICh4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCB0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiBxdWFkcmF0aWNBdCh4MSwgeDIsIHgzLCB0KSxcbiAgICAgICAgICAgIHk6IHF1YWRyYXRpY0F0KHkxLCB5MiwgeTMsIHQpLFxuICAgICAgICB9O1xuICAgIH0sXG4gICAgZGl2aWRlOiBmdW5jdGlvbiAoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgdCkge1xuICAgICAgICByZXR1cm4gZGl2aWRlUXVhZHJhdGljKHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIHQpO1xuICAgIH0sXG4gICAgdGFuZ2VudEFuZ2xlOiBmdW5jdGlvbiAoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgdCkge1xuICAgICAgICB2YXIgZHggPSBkZXJpdmF0aXZlQXQoeDEsIHgyLCB4MywgdCk7XG4gICAgICAgIHZhciBkeSA9IGRlcml2YXRpdmVBdCh5MSwgeTIsIHkzLCB0KTtcbiAgICAgICAgdmFyIGFuZ2xlID0gTWF0aC5hdGFuMihkeSwgZHgpO1xuICAgICAgICByZXR1cm4gcGlNb2QoYW5nbGUpO1xuICAgIH0sXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cXVhZHJhdGljLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/quadratic.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/segments.js":
/*!***********************************************************************!*\
!*** ./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/segments.js ***!
\***********************************************************************/
/*! exports provided: lengthOfSegment, pointAtSegments, angleAtSegments, distanceAtSegment */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lengthOfSegment\", function() { return lengthOfSegment; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pointAtSegments\", function() { return pointAtSegments; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"angleAtSegments\", function() { return angleAtSegments; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"distanceAtSegment\", function() { return distanceAtSegment; });\n/* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./line */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/line.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/util.js\");\n\n\nfunction analyzePoints(points) {\n // 计算每段的长度和总的长度\n var totalLength = 0;\n var segments = [];\n for (var i = 0; i < points.length - 1; i++) {\n var from = points[i];\n var to = points[i + 1];\n var length_1 = Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"distance\"])(from[0], from[1], to[0], to[1]);\n var seg = {\n from: from,\n to: to,\n length: length_1,\n };\n segments.push(seg);\n totalLength += length_1;\n }\n return { segments: segments, totalLength: totalLength };\n}\nfunction lengthOfSegment(points) {\n if (points.length < 2) {\n return 0;\n }\n var totalLength = 0;\n for (var i = 0; i < points.length - 1; i++) {\n var from = points[i];\n var to = points[i + 1];\n totalLength += Object(_util__WEBPACK_IMPORTED_MODULE_1__[\"distance\"])(from[0], from[1], to[0], to[1]);\n }\n return totalLength;\n}\n/**\n * 按照比例在数据片段中获取点\n * @param {array} points 点的集合\n * @param {number} t 百分比 0-1\n * @return {object} 点的坐标\n */\nfunction pointAtSegments(points, t) {\n // 边界判断\n if (t > 1 || t < 0 || points.length < 2) {\n return null;\n }\n var _a = analyzePoints(points), segments = _a.segments, totalLength = _a.totalLength;\n // 多个点有可能重合\n if (totalLength === 0) {\n return {\n x: points[0][0],\n y: points[0][1],\n };\n }\n // 计算比例\n var startRatio = 0;\n var point = null;\n for (var i = 0; i < segments.length; i++) {\n var seg = segments[i];\n var from = seg.from, to = seg.to;\n var currentRatio = seg.length / totalLength;\n if (t >= startRatio && t <= startRatio + currentRatio) {\n var localRatio = (t - startRatio) / currentRatio;\n point = _line__WEBPACK_IMPORTED_MODULE_0__[\"default\"].pointAt(from[0], from[1], to[0], to[1], localRatio);\n break;\n }\n startRatio += currentRatio;\n }\n return point;\n}\n/**\n * 按照比例在数据片段中获取切线的角度\n * @param {array} points 点的集合\n * @param {number} t 百分比 0-1\n */\nfunction angleAtSegments(points, t) {\n // 边界判断\n if (t > 1 || t < 0 || points.length < 2) {\n return 0;\n }\n var _a = analyzePoints(points), segments = _a.segments, totalLength = _a.totalLength;\n // 计算比例\n var startRatio = 0;\n var angle = 0;\n for (var i = 0; i < segments.length; i++) {\n var seg = segments[i];\n var from = seg.from, to = seg.to;\n var currentRatio = seg.length / totalLength;\n if (t >= startRatio && t <= startRatio + currentRatio) {\n angle = Math.atan2(to[1] - from[1], to[0] - from[0]);\n break;\n }\n startRatio += currentRatio;\n }\n return angle;\n}\nfunction distanceAtSegment(points, x, y) {\n var minDistance = Infinity;\n for (var i = 0; i < points.length - 1; i++) {\n var point = points[i];\n var nextPoint = points[i + 1];\n var distance_1 = _line__WEBPACK_IMPORTED_MODULE_0__[\"default\"].pointDistance(point[0], point[1], nextPoint[0], nextPoint[1], x, y);\n if (distance_1 < minDistance) {\n minDistance = distance_1;\n }\n }\n return minDistance;\n}\n//# sourceMappingURL=segments.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctbWF0aEAwLjEuN0BAYW50di9nLW1hdGgvZXNtL3NlZ21lbnRzLmpzPzMyNWQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMEI7QUFDUTtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQix1QkFBdUI7QUFDMUM7QUFDQTtBQUNBLHVCQUF1QixzREFBUTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQix1QkFBdUI7QUFDMUM7QUFDQTtBQUNBLHVCQUF1QixzREFBUTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsT0FBTztBQUNsQixZQUFZLE9BQU87QUFDbkI7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixxQkFBcUI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiw2Q0FBSTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsT0FBTztBQUNsQjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixxQkFBcUI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQSxtQkFBbUIsdUJBQXVCO0FBQzFDO0FBQ0E7QUFDQSx5QkFBeUIsNkNBQUk7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctbWF0aEAwLjEuN0BAYW50di9nLW1hdGgvZXNtL3NlZ21lbnRzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxpbmUgZnJvbSAnLi9saW5lJztcbmltcG9ydCB7IGRpc3RhbmNlIH0gZnJvbSAnLi91dGlsJztcbmZ1bmN0aW9uIGFuYWx5emVQb2ludHMocG9pbnRzKSB7XG4gICAgLy8g6K6h566X5q+P5q6155qE6ZW/5bqm5ZKM5oC755qE6ZW/5bqmXG4gICAgdmFyIHRvdGFsTGVuZ3RoID0gMDtcbiAgICB2YXIgc2VnbWVudHMgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgdmFyIGZyb20gPSBwb2ludHNbaV07XG4gICAgICAgIHZhciB0byA9IHBvaW50c1tpICsgMV07XG4gICAgICAgIHZhciBsZW5ndGhfMSA9IGRpc3RhbmNlKGZyb21bMF0sIGZyb21bMV0sIHRvWzBdLCB0b1sxXSk7XG4gICAgICAgIHZhciBzZWcgPSB7XG4gICAgICAgICAgICBmcm9tOiBmcm9tLFxuICAgICAgICAgICAgdG86IHRvLFxuICAgICAgICAgICAgbGVuZ3RoOiBsZW5ndGhfMSxcbiAgICAgICAgfTtcbiAgICAgICAgc2VnbWVudHMucHVzaChzZWcpO1xuICAgICAgICB0b3RhbExlbmd0aCArPSBsZW5ndGhfMTtcbiAgICB9XG4gICAgcmV0dXJuIHsgc2VnbWVudHM6IHNlZ21lbnRzLCB0b3RhbExlbmd0aDogdG90YWxMZW5ndGggfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBsZW5ndGhPZlNlZ21lbnQocG9pbnRzKSB7XG4gICAgaWYgKHBvaW50cy5sZW5ndGggPCAyKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICB2YXIgdG90YWxMZW5ndGggPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICB2YXIgZnJvbSA9IHBvaW50c1tpXTtcbiAgICAgICAgdmFyIHRvID0gcG9pbnRzW2kgKyAxXTtcbiAgICAgICAgdG90YWxMZW5ndGggKz0gZGlzdGFuY2UoZnJvbVswXSwgZnJvbVsxXSwgdG9bMF0sIHRvWzFdKTtcbiAgICB9XG4gICAgcmV0dXJuIHRvdGFsTGVuZ3RoO1xufVxuLyoqXG4gKiDmjInnhafmr5TkvovlnKjmlbDmja7niYfmrrXkuK3ojrflj5bngrlcbiAqIEBwYXJhbSB7YXJyYXl9IHBvaW50cyDngrnnmoTpm4blkIhcbiAqIEBwYXJhbSB7bnVtYmVyfSB0IOeZvuWIhuavlCAwLTFcbiAqIEByZXR1cm4ge29iamVjdH0g54K555qE5Z2Q5qCHXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwb2ludEF0U2VnbWVudHMocG9pbnRzLCB0KSB7XG4gICAgLy8g6L6555WM5Yik5patXG4gICAgaWYgKHQgPiAxIHx8IHQgPCAwIHx8IHBvaW50cy5sZW5ndGggPCAyKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2YXIgX2EgPSBhbmFseXplUG9pbnRzKHBvaW50cyksIHNlZ21lbnRzID0gX2Euc2VnbWVudHMsIHRvdGFsTGVuZ3RoID0gX2EudG90YWxMZW5ndGg7XG4gICAgLy8g5aSa5Liq54K55pyJ5Y+v6IO96YeN5ZCIXG4gICAgaWYgKHRvdGFsTGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiBwb2ludHNbMF1bMF0sXG4gICAgICAgICAgICB5OiBwb2ludHNbMF1bMV0sXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8vIOiuoeeul+avlOS+i1xuICAgIHZhciBzdGFydFJhdGlvID0gMDtcbiAgICB2YXIgcG9pbnQgPSBudWxsO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VnbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHNlZyA9IHNlZ21lbnRzW2ldO1xuICAgICAgICB2YXIgZnJvbSA9IHNlZy5mcm9tLCB0byA9IHNlZy50bztcbiAgICAgICAgdmFyIGN1cnJlbnRSYXRpbyA9IHNlZy5sZW5ndGggLyB0b3RhbExlbmd0aDtcbiAgICAgICAgaWYgKHQgPj0gc3RhcnRSYXRpbyAmJiB0IDw9IHN0YXJ0UmF0aW8gKyBjdXJyZW50UmF0aW8pIHtcbiAgICAgICAgICAgIHZhciBsb2NhbFJhdGlvID0gKHQgLSBzdGFydFJhdGlvKSAvIGN1cnJlbnRSYXRpbztcbiAgICAgICAgICAgIHBvaW50ID0gbGluZS5wb2ludEF0KGZyb21bMF0sIGZyb21bMV0sIHRvWzBdLCB0b1sxXSwgbG9jYWxSYXRpbyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBzdGFydFJhdGlvICs9IGN1cnJlbnRSYXRpbztcbiAgICB9XG4gICAgcmV0dXJuIHBvaW50O1xufVxuLyoqXG4gKiDmjInnhafmr5TkvovlnKjmlbDmja7niYfmrrXkuK3ojrflj5bliIfnur/nmoTop5LluqZcbiAqIEBwYXJhbSB7YXJyYXl9IHBvaW50cyDngrnnmoTpm4blkIhcbiAqIEBwYXJhbSB7bnVtYmVyfSB0IOeZvuWIhuavlCAwLTFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFuZ2xlQXRTZWdtZW50cyhwb2ludHMsIHQpIHtcbiAgICAvLyDovrnnlYzliKTmlq1cbiAgICBpZiAodCA+IDEgfHwgdCA8IDAgfHwgcG9pbnRzLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHZhciBfYSA9IGFuYWx5emVQb2ludHMocG9pbnRzKSwgc2VnbWVudHMgPSBfYS5zZWdtZW50cywgdG90YWxMZW5ndGggPSBfYS50b3RhbExlbmd0aDtcbiAgICAvLyDorqHnrpfmr5TkvotcbiAgICB2YXIgc3RhcnRSYXRpbyA9IDA7XG4gICAgdmFyIGFuZ2xlID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlZ21lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBzZWcgPSBzZWdtZW50c1tpXTtcbiAgICAgICAgdmFyIGZyb20gPSBzZWcuZnJvbSwgdG8gPSBzZWcudG87XG4gICAgICAgIHZhciBjdXJyZW50UmF0aW8gPSBzZWcubGVuZ3RoIC8gdG90YWxMZW5ndGg7XG4gICAgICAgIGlmICh0ID49IHN0YXJ0UmF0aW8gJiYgdCA8PSBzdGFydFJhdGlvICsgY3VycmVudFJhdGlvKSB7XG4gICAgICAgICAgICBhbmdsZSA9IE1hdGguYXRhbjIodG9bMV0gLSBmcm9tWzFdLCB0b1swXSAtIGZyb21bMF0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgc3RhcnRSYXRpbyArPSBjdXJyZW50UmF0aW87XG4gICAgfVxuICAgIHJldHVybiBhbmdsZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBkaXN0YW5jZUF0U2VnbWVudChwb2ludHMsIHgsIHkpIHtcbiAgICB2YXIgbWluRGlzdGFuY2UgPSBJbmZpbml0eTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgdmFyIHBvaW50ID0gcG9pbnRzW2ldO1xuICAgICAgICB2YXIgbmV4dFBvaW50ID0gcG9pbnRzW2kgKyAxXTtcbiAgICAgICAgdmFyIGRpc3RhbmNlXzEgPSBsaW5lLnBvaW50RGlzdGFuY2UocG9pbnRbMF0sIHBvaW50WzFdLCBuZXh0UG9pbnRbMF0sIG5leHRQb2ludFsxXSwgeCwgeSk7XG4gICAgICAgIGlmIChkaXN0YW5jZV8xIDwgbWluRGlzdGFuY2UpIHtcbiAgICAgICAgICAgIG1pbkRpc3RhbmNlID0gZGlzdGFuY2VfMTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWluRGlzdGFuY2U7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1zZWdtZW50cy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/segments.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/util.js":
/*!*******************************************************************!*\
!*** ./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/util.js ***!
\*******************************************************************/
/*! exports provided: distance, isNumberEqual, getBBoxByArray, getBBoxRange, piMod */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"distance\", function() { return distance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumberEqual\", function() { return isNumberEqual; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBoxByArray\", function() { return getBBoxByArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBoxRange\", function() { return getBBoxRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"piMod\", function() { return piMod; });\nfunction minNum(array) {\n return Math.min.apply(null, array);\n}\nfunction maxNum(array) {\n return Math.max.apply(null, array);\n}\n/**\n * 两点之间的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {number} 距离\n */\nfunction distance(x1, y1, x2, y2) {\n var dx = x1 - x2;\n var dy = y1 - y2;\n return Math.sqrt(dx * dx + dy * dy);\n}\nfunction isNumberEqual(v1, v2) {\n return Math.abs(v1 - v2) < 0.001;\n}\nfunction getBBoxByArray(xArr, yArr) {\n var minX = minNum(xArr);\n var minY = minNum(yArr);\n var maxX = maxNum(xArr);\n var maxY = maxNum(yArr);\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n}\nfunction getBBoxRange(x1, y1, x2, y2) {\n return {\n minX: minNum([x1, x2]),\n maxX: maxNum([x1, x2]),\n minY: minNum([y1, y2]),\n maxY: maxNum([y1, y2]),\n };\n}\nfunction piMod(angle) {\n return (angle + Math.PI * 2) % (Math.PI * 2);\n}\n//# sourceMappingURL=util.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctbWF0aEAwLjEuN0BAYW50di9nLW1hdGgvZXNtL3V0aWwuanM/Y2RkZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFlBQVksT0FBTztBQUNuQjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctbWF0aEAwLjEuN0BAYW50di9nLW1hdGgvZXNtL3V0aWwuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBtaW5OdW0oYXJyYXkpIHtcbiAgICByZXR1cm4gTWF0aC5taW4uYXBwbHkobnVsbCwgYXJyYXkpO1xufVxuZnVuY3Rpb24gbWF4TnVtKGFycmF5KSB7XG4gICAgcmV0dXJuIE1hdGgubWF4LmFwcGx5KG51bGwsIGFycmF5KTtcbn1cbi8qKlxuICog5Lik54K55LmL6Ze055qE6Led56a7XG4gKiBAcGFyYW0ge251bWJlcn0geDEg6LW35aeL54K5IHhcbiAqIEBwYXJhbSB7bnVtYmVyfSB5MSDotbflp4vngrkgeVxuICogQHBhcmFtIHtudW1iZXJ9IHgyIOe7k+adn+eCuSB4XG4gKiBAcGFyYW0ge251bWJlcn0geTIg57uT5p2f54K5IHlcbiAqIEByZXR1cm4ge251bWJlcn0g6Led56a7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaXN0YW5jZSh4MSwgeTEsIHgyLCB5Mikge1xuICAgIHZhciBkeCA9IHgxIC0geDI7XG4gICAgdmFyIGR5ID0geTEgLSB5MjtcbiAgICByZXR1cm4gTWF0aC5zcXJ0KGR4ICogZHggKyBkeSAqIGR5KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc051bWJlckVxdWFsKHYxLCB2Mikge1xuICAgIHJldHVybiBNYXRoLmFicyh2MSAtIHYyKSA8IDAuMDAxO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldEJCb3hCeUFycmF5KHhBcnIsIHlBcnIpIHtcbiAgICB2YXIgbWluWCA9IG1pbk51bSh4QXJyKTtcbiAgICB2YXIgbWluWSA9IG1pbk51bSh5QXJyKTtcbiAgICB2YXIgbWF4WCA9IG1heE51bSh4QXJyKTtcbiAgICB2YXIgbWF4WSA9IG1heE51bSh5QXJyKTtcbiAgICByZXR1cm4ge1xuICAgICAgICB4OiBtaW5YLFxuICAgICAgICB5OiBtaW5ZLFxuICAgICAgICB3aWR0aDogbWF4WCAtIG1pblgsXG4gICAgICAgIGhlaWdodDogbWF4WSAtIG1pblksXG4gICAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRCQm94UmFuZ2UoeDEsIHkxLCB4MiwgeTIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBtaW5YOiBtaW5OdW0oW3gxLCB4Ml0pLFxuICAgICAgICBtYXhYOiBtYXhOdW0oW3gxLCB4Ml0pLFxuICAgICAgICBtaW5ZOiBtaW5OdW0oW3kxLCB5Ml0pLFxuICAgICAgICBtYXhZOiBtYXhOdW0oW3kxLCB5Ml0pLFxuICAgIH07XG59XG5leHBvcnQgZnVuY3Rpb24gcGlNb2QoYW5nbGUpIHtcbiAgICByZXR1cm4gKGFuZ2xlICsgTWF0aC5QSSAqIDIpICUgKE1hdGguUEkgKiAyKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXV0aWwuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/util.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/canvas.js":
/*!*******************************************************************!*\
!*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/canvas.js ***!
\*******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constant */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _util_draw__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util/draw */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/draw.js\");\n/* harmony import */ var _util_svg__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util/svg */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/svg.js\");\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util/dom */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/dom.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./shape */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/index.js\");\n/* harmony import */ var _group__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./group */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/group.js\");\n/* harmony import */ var _defs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./defs */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/index.js\");\n\n\n\n\n\n\n\n\n\nvar Canvas = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Canvas, _super);\n function Canvas(cfg) {\n return _super.call(this, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, cfg), { autoDraw: true, \n // 设置渲染引擎为 canvas,只读属性\n renderer: 'svg' })) || this;\n }\n Canvas.prototype.getShapeBase = function () {\n return _shape__WEBPACK_IMPORTED_MODULE_6__;\n };\n Canvas.prototype.getGroupBase = function () {\n return _group__WEBPACK_IMPORTED_MODULE_7__[\"default\"];\n };\n // 覆盖 Container 中通过遍历的方式获取 shape 对象的逻辑,直接走 SVG 的 dom 拾取即可\n Canvas.prototype.getShape = function (x, y, ev) {\n var target = ev.target || ev.srcElement;\n if (!_constant__WEBPACK_IMPORTED_MODULE_2__[\"SHAPE_TO_TAGS\"][target.tagName]) {\n var parent_1 = target.parentNode;\n while (parent_1 && !_constant__WEBPACK_IMPORTED_MODULE_2__[\"SHAPE_TO_TAGS\"][parent_1.tagName]) {\n parent_1 = parent_1.parentNode;\n }\n target = parent_1;\n }\n return this.find(function (child) { return child.get('el') === target; });\n };\n // 复写基类的方法生成标签\n Canvas.prototype.createDom = function () {\n var element = Object(_util_dom__WEBPACK_IMPORTED_MODULE_5__[\"createSVGElement\"])('svg');\n var context = new _defs__WEBPACK_IMPORTED_MODULE_8__[\"default\"](element);\n element.setAttribute('width', \"\" + this.get('width'));\n element.setAttribute('height', \"\" + this.get('height'));\n // 缓存 context 对象\n this.set('context', context);\n return element;\n };\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n Canvas.prototype.onCanvasChange = function (changeType) {\n var context = this.get('context');\n var el = this.get('el');\n if (changeType === 'sort') {\n var children_1 = this.get('children');\n if (children_1 && children_1.length) {\n Object(_util_dom__WEBPACK_IMPORTED_MODULE_5__[\"sortDom\"])(this, function (a, b) {\n return children_1.indexOf(a) - children_1.indexOf(b) ? 1 : 0;\n });\n }\n }\n else if (changeType === 'clear') {\n // el maybe null for canvas\n if (el) {\n // 清空 SVG 元素\n el.innerHTML = '';\n var defsEl = context.el;\n // 清空 defs 元素\n defsEl.innerHTML = '';\n // 将清空后的 defs 元素挂载到 el 下\n el.appendChild(defsEl);\n }\n }\n else if (changeType === 'matrix') {\n Object(_util_svg__WEBPACK_IMPORTED_MODULE_4__[\"setTransform\"])(this);\n }\n else if (changeType === 'clip') {\n Object(_util_svg__WEBPACK_IMPORTED_MODULE_4__[\"setClip\"])(this, context);\n }\n else if (changeType === 'changeSize') {\n el.setAttribute('width', \"\" + this.get('width'));\n el.setAttribute('height', \"\" + this.get('height'));\n }\n };\n // 复写基类的 draw 方法\n Canvas.prototype.draw = function () {\n var context = this.get('context');\n var children = this.getChildren();\n Object(_util_svg__WEBPACK_IMPORTED_MODULE_4__[\"setClip\"])(this, context);\n if (children.length) {\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_3__[\"drawChildren\"])(context, children);\n }\n };\n return Canvas;\n}(_antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"AbstractCanvas\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Canvas);\n//# sourceMappingURL=canvas.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9jYW52YXMuanM/ZTUxMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE0QztBQUNFO0FBQ0g7QUFDQTtBQUNRO0FBQ0k7QUFDdEI7QUFDTDtBQUNGO0FBQzFCO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0EsaUNBQWlDLHNEQUFRLENBQUMsc0RBQVEsR0FBRyxTQUFTO0FBQzlEO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQSxlQUFlLG1DQUFLO0FBQ3BCO0FBQ0E7QUFDQSxlQUFlLDhDQUFLO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSx1REFBYTtBQUMxQjtBQUNBLGdDQUFnQyx1REFBYTtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQyxtQ0FBbUMsRUFBRTtBQUNoRjtBQUNBO0FBQ0E7QUFDQSxzQkFBc0Isa0VBQWdCO0FBQ3RDLDBCQUEwQiw2Q0FBSTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxXQUFXO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLHlEQUFPO0FBQ3ZCO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksOERBQVk7QUFDeEI7QUFDQTtBQUNBLFlBQVkseURBQU87QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHlEQUFPO0FBQ2Y7QUFDQSxZQUFZLCtEQUFZO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQywyREFBYztBQUNELHFFQUFNLEVBQUM7QUFDdEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9jYW52YXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBBYnN0cmFjdENhbnZhcyB9IGZyb20gJ0BhbnR2L2ctYmFzZSc7XG5pbXBvcnQgeyBTSEFQRV9UT19UQUdTIH0gZnJvbSAnLi9jb25zdGFudCc7XG5pbXBvcnQgeyBkcmF3Q2hpbGRyZW4gfSBmcm9tICcuL3V0aWwvZHJhdyc7XG5pbXBvcnQgeyBzZXRUcmFuc2Zvcm0sIHNldENsaXAgfSBmcm9tICcuL3V0aWwvc3ZnJztcbmltcG9ydCB7IHNvcnREb20sIGNyZWF0ZVNWR0VsZW1lbnQgfSBmcm9tICcuL3V0aWwvZG9tJztcbmltcG9ydCAqIGFzIFNoYXBlIGZyb20gJy4vc2hhcGUnO1xuaW1wb3J0IEdyb3VwIGZyb20gJy4vZ3JvdXAnO1xuaW1wb3J0IERlZnMgZnJvbSAnLi9kZWZzJztcbnZhciBDYW52YXMgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKENhbnZhcywgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBDYW52YXMoY2ZnKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIuY2FsbCh0aGlzLCBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgY2ZnKSwgeyBhdXRvRHJhdzogdHJ1ZSwgXG4gICAgICAgICAgICAvLyDorr7nva7muLLmn5PlvJXmk47kuLogY2FudmFz77yM5Y+q6K+75bGe5oCnXG4gICAgICAgICAgICByZW5kZXJlcjogJ3N2ZycgfSkpIHx8IHRoaXM7XG4gICAgfVxuICAgIENhbnZhcy5wcm90b3R5cGUuZ2V0U2hhcGVCYXNlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gU2hhcGU7XG4gICAgfTtcbiAgICBDYW52YXMucHJvdG90eXBlLmdldEdyb3VwQmFzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIEdyb3VwO1xuICAgIH07XG4gICAgLy8g6KaG55uWIENvbnRhaW5lciDkuK3pgJrov4fpgY3ljobnmoTmlrnlvI/ojrflj5Ygc2hhcGUg5a+56LGh55qE6YC76L6R77yM55u05o6l6LWwIFNWRyDnmoQgZG9tIOaLvuWPluWNs+WPr1xuICAgIENhbnZhcy5wcm90b3R5cGUuZ2V0U2hhcGUgPSBmdW5jdGlvbiAoeCwgeSwgZXYpIHtcbiAgICAgICAgdmFyIHRhcmdldCA9IGV2LnRhcmdldCB8fCBldi5zcmNFbGVtZW50O1xuICAgICAgICBpZiAoIVNIQVBFX1RPX1RBR1NbdGFyZ2V0LnRhZ05hbWVdKSB7XG4gICAgICAgICAgICB2YXIgcGFyZW50XzEgPSB0YXJnZXQucGFyZW50Tm9kZTtcbiAgICAgICAgICAgIHdoaWxlIChwYXJlbnRfMSAmJiAhU0hBUEVfVE9fVEFHU1twYXJlbnRfMS50YWdOYW1lXSkge1xuICAgICAgICAgICAgICAgIHBhcmVudF8xID0gcGFyZW50XzEucGFyZW50Tm9kZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRhcmdldCA9IHBhcmVudF8xO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmQoZnVuY3Rpb24gKGNoaWxkKSB7IHJldHVybiBjaGlsZC5nZXQoJ2VsJykgPT09IHRhcmdldDsgfSk7XG4gICAgfTtcbiAgICAvLyDlpI3lhpnln7rnsbvnmoTmlrnms5XnlJ/miJDmoIfnrb5cbiAgICBDYW52YXMucHJvdG90eXBlLmNyZWF0ZURvbSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGVsZW1lbnQgPSBjcmVhdGVTVkdFbGVtZW50KCdzdmcnKTtcbiAgICAgICAgdmFyIGNvbnRleHQgPSBuZXcgRGVmcyhlbGVtZW50KTtcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgXCJcIiArIHRoaXMuZ2V0KCd3aWR0aCcpKTtcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsIFwiXCIgKyB0aGlzLmdldCgnaGVpZ2h0JykpO1xuICAgICAgICAvLyDnvJPlrZggY29udGV4dCDlr7nosaFcbiAgICAgICAgdGhpcy5zZXQoJ2NvbnRleHQnLCBjb250ZXh0KTtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDkuIDkupvmlrnms5XosIPnlKjkvJrlvJXotbfnlLvluIPlj5jljJZcbiAgICAgKiBAcGFyYW0ge0NoYW5nZVR5cGV9IGNoYW5nZVR5cGUg5pS55Y+Y55qE57G75Z6LXG4gICAgICovXG4gICAgQ2FudmFzLnByb3RvdHlwZS5vbkNhbnZhc0NoYW5nZSA9IGZ1bmN0aW9uIChjaGFuZ2VUeXBlKSB7XG4gICAgICAgIHZhciBjb250ZXh0ID0gdGhpcy5nZXQoJ2NvbnRleHQnKTtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIGlmIChjaGFuZ2VUeXBlID09PSAnc29ydCcpIHtcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbl8xID0gdGhpcy5nZXQoJ2NoaWxkcmVuJyk7XG4gICAgICAgICAgICBpZiAoY2hpbGRyZW5fMSAmJiBjaGlsZHJlbl8xLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHNvcnREb20odGhpcywgZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkcmVuXzEuaW5kZXhPZihhKSAtIGNoaWxkcmVuXzEuaW5kZXhPZihiKSA/IDEgOiAwO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNoYW5nZVR5cGUgPT09ICdjbGVhcicpIHtcbiAgICAgICAgICAgIC8vIGVsIG1heWJlIG51bGwgZm9yIGNhbnZhc1xuICAgICAgICAgICAgaWYgKGVsKSB7XG4gICAgICAgICAgICAgICAgLy8g5riF56m6IFNWRyDlhYPntKBcbiAgICAgICAgICAgICAgICBlbC5pbm5lckhUTUwgPSAnJztcbiAgICAgICAgICAgICAgICB2YXIgZGVmc0VsID0gY29udGV4dC5lbDtcbiAgICAgICAgICAgICAgICAvLyDmuIXnqbogZGVmcyDlhYPntKBcbiAgICAgICAgICAgICAgICBkZWZzRWwuaW5uZXJIVE1MID0gJyc7XG4gICAgICAgICAgICAgICAgLy8g5bCG5riF56m65ZCO55qEIGRlZnMg5YWD57Sg5oyC6L295YiwIGVsIOS4i1xuICAgICAgICAgICAgICAgIGVsLmFwcGVuZENoaWxkKGRlZnNFbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY2hhbmdlVHlwZSA9PT0gJ21hdHJpeCcpIHtcbiAgICAgICAgICAgIHNldFRyYW5zZm9ybSh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjaGFuZ2VUeXBlID09PSAnY2xpcCcpIHtcbiAgICAgICAgICAgIHNldENsaXAodGhpcywgY29udGV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY2hhbmdlVHlwZSA9PT0gJ2NoYW5nZVNpemUnKSB7XG4gICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgXCJcIiArIHRoaXMuZ2V0KCd3aWR0aCcpKTtcbiAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgXCJcIiArIHRoaXMuZ2V0KCdoZWlnaHQnKSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIOWkjeWGmeWfuuexu+eahCBkcmF3IOaWueazlVxuICAgIENhbnZhcy5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGNvbnRleHQgPSB0aGlzLmdldCgnY29udGV4dCcpO1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKCk7XG4gICAgICAgIHNldENsaXAodGhpcywgY29udGV4dCk7XG4gICAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgIGRyYXdDaGlsZHJlbihjb250ZXh0LCBjaGlsZHJlbik7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBDYW52YXM7XG59KEFic3RyYWN0Q2FudmFzKSk7XG5leHBvcnQgZGVmYXVsdCBDYW52YXM7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jYW52YXMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/canvas.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/constant.js":
/*!*********************************************************************!*\
!*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/constant.js ***!
\*********************************************************************/
/*! exports provided: SHAPE_TO_TAGS, SVG_ATTR_MAP, EVENTS */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SHAPE_TO_TAGS\", function() { return SHAPE_TO_TAGS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SVG_ATTR_MAP\", function() { return SVG_ATTR_MAP; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EVENTS\", function() { return EVENTS; });\nvar SHAPE_TO_TAGS = {\n rect: 'path',\n circle: 'circle',\n line: 'line',\n path: 'path',\n marker: 'path',\n text: 'text',\n polyline: 'polyline',\n polygon: 'polygon',\n image: 'image',\n ellipse: 'ellipse',\n dom: 'foreignObject',\n};\nvar SVG_ATTR_MAP = {\n opacity: 'opacity',\n fillStyle: 'fill',\n fill: 'fill',\n fillOpacity: 'fill-opacity',\n strokeStyle: 'stroke',\n strokeOpacity: 'stroke-opacity',\n stroke: 'stroke',\n x: 'x',\n y: 'y',\n r: 'r',\n rx: 'rx',\n ry: 'ry',\n width: 'width',\n height: 'height',\n x1: 'x1',\n x2: 'x2',\n y1: 'y1',\n y2: 'y2',\n lineCap: 'stroke-linecap',\n lineJoin: 'stroke-linejoin',\n lineWidth: 'stroke-width',\n lineDash: 'stroke-dasharray',\n lineDashOffset: 'stroke-dashoffset',\n miterLimit: 'stroke-miterlimit',\n font: 'font',\n fontSize: 'font-size',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n fontFamily: 'font-family',\n startArrow: 'marker-start',\n endArrow: 'marker-end',\n path: 'd',\n class: 'class',\n id: 'id',\n style: 'style',\n preserveAspectRatio: 'preserveAspectRatio',\n};\nvar EVENTS = [\n 'click',\n 'mousedown',\n 'mouseup',\n 'dblclick',\n 'contextmenu',\n 'mouseenter',\n 'mouseleave',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'wheel',\n];\n//# sourceMappingURL=constant.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9jb25zdGFudC5qcz9kMzE5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXN2Z0AwLjUuNkBAYW50di9nLXN2Zy9lc20vY29uc3RhbnQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIFNIQVBFX1RPX1RBR1MgPSB7XG4gICAgcmVjdDogJ3BhdGgnLFxuICAgIGNpcmNsZTogJ2NpcmNsZScsXG4gICAgbGluZTogJ2xpbmUnLFxuICAgIHBhdGg6ICdwYXRoJyxcbiAgICBtYXJrZXI6ICdwYXRoJyxcbiAgICB0ZXh0OiAndGV4dCcsXG4gICAgcG9seWxpbmU6ICdwb2x5bGluZScsXG4gICAgcG9seWdvbjogJ3BvbHlnb24nLFxuICAgIGltYWdlOiAnaW1hZ2UnLFxuICAgIGVsbGlwc2U6ICdlbGxpcHNlJyxcbiAgICBkb206ICdmb3JlaWduT2JqZWN0Jyxcbn07XG5leHBvcnQgdmFyIFNWR19BVFRSX01BUCA9IHtcbiAgICBvcGFjaXR5OiAnb3BhY2l0eScsXG4gICAgZmlsbFN0eWxlOiAnZmlsbCcsXG4gICAgZmlsbDogJ2ZpbGwnLFxuICAgIGZpbGxPcGFjaXR5OiAnZmlsbC1vcGFjaXR5JyxcbiAgICBzdHJva2VTdHlsZTogJ3N0cm9rZScsXG4gICAgc3Ryb2tlT3BhY2l0eTogJ3N0cm9rZS1vcGFjaXR5JyxcbiAgICBzdHJva2U6ICdzdHJva2UnLFxuICAgIHg6ICd4JyxcbiAgICB5OiAneScsXG4gICAgcjogJ3InLFxuICAgIHJ4OiAncngnLFxuICAgIHJ5OiAncnknLFxuICAgIHdpZHRoOiAnd2lkdGgnLFxuICAgIGhlaWdodDogJ2hlaWdodCcsXG4gICAgeDE6ICd4MScsXG4gICAgeDI6ICd4MicsXG4gICAgeTE6ICd5MScsXG4gICAgeTI6ICd5MicsXG4gICAgbGluZUNhcDogJ3N0cm9rZS1saW5lY2FwJyxcbiAgICBsaW5lSm9pbjogJ3N0cm9rZS1saW5lam9pbicsXG4gICAgbGluZVdpZHRoOiAnc3Ryb2tlLXdpZHRoJyxcbiAgICBsaW5lRGFzaDogJ3N0cm9rZS1kYXNoYXJyYXknLFxuICAgIGxpbmVEYXNoT2Zmc2V0OiAnc3Ryb2tlLWRhc2hvZmZzZXQnLFxuICAgIG1pdGVyTGltaXQ6ICdzdHJva2UtbWl0ZXJsaW1pdCcsXG4gICAgZm9udDogJ2ZvbnQnLFxuICAgIGZvbnRTaXplOiAnZm9udC1zaXplJyxcbiAgICBmb250U3R5bGU6ICdmb250LXN0eWxlJyxcbiAgICBmb250VmFyaWFudDogJ2ZvbnQtdmFyaWFudCcsXG4gICAgZm9udFdlaWdodDogJ2ZvbnQtd2VpZ2h0JyxcbiAgICBmb250RmFtaWx5OiAnZm9udC1mYW1pbHknLFxuICAgIHN0YXJ0QXJyb3c6ICdtYXJrZXItc3RhcnQnLFxuICAgIGVuZEFycm93OiAnbWFya2VyLWVuZCcsXG4gICAgcGF0aDogJ2QnLFxuICAgIGNsYXNzOiAnY2xhc3MnLFxuICAgIGlkOiAnaWQnLFxuICAgIHN0eWxlOiAnc3R5bGUnLFxuICAgIHByZXNlcnZlQXNwZWN0UmF0aW86ICdwcmVzZXJ2ZUFzcGVjdFJhdGlvJyxcbn07XG5leHBvcnQgdmFyIEVWRU5UUyA9IFtcbiAgICAnY2xpY2snLFxuICAgICdtb3VzZWRvd24nLFxuICAgICdtb3VzZXVwJyxcbiAgICAnZGJsY2xpY2snLFxuICAgICdjb250ZXh0bWVudScsXG4gICAgJ21vdXNlZW50ZXInLFxuICAgICdtb3VzZWxlYXZlJyxcbiAgICAnbW91c2VvdmVyJyxcbiAgICAnbW91c2VvdXQnLFxuICAgICdtb3VzZW1vdmUnLFxuICAgICd3aGVlbCcsXG5dO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29uc3RhbnQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/constant.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/arrow.js":
/*!***********************************************************************!*\
!*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/arrow.js ***!
\***********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/dom */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/dom.js\");\n/**\n * @fileoverview arrow\n * @author dengfuping_develop@163.com\n */\n\n\nvar Arrow = /** @class */ (function () {\n function Arrow(attrs, type) {\n this.cfg = {};\n var el = Object(_util_dom__WEBPACK_IMPORTED_MODULE_1__[\"createSVGElement\"])('marker');\n var id = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"uniqueId\"])('marker_');\n el.setAttribute('id', id);\n var shape = Object(_util_dom__WEBPACK_IMPORTED_MODULE_1__[\"createSVGElement\"])('path');\n shape.setAttribute('stroke', attrs.stroke || 'none');\n shape.setAttribute('fill', attrs.fill || 'none');\n el.appendChild(shape);\n el.setAttribute('overflow', 'visible');\n el.setAttribute('orient', 'auto-start-reverse');\n this.el = el;\n this.child = shape;\n this.id = id;\n var cfg = attrs[type === 'marker-start' ? 'startArrow' : 'endArrow'];\n this.stroke = attrs.stroke || '#000';\n if (cfg === true) {\n this._setDefaultPath(type, shape);\n }\n else {\n this.cfg = cfg; // when arrow config exists\n this._setMarker(attrs.lineWidth, shape);\n }\n return this;\n }\n Arrow.prototype.match = function () {\n return false;\n };\n Arrow.prototype._setDefaultPath = function (type, el) {\n var parent = this.el;\n // 默认箭头的边长为 10,夹角为 60 度\n el.setAttribute('d', \"M0,0 L\" + 10 * Math.cos(Math.PI / 6) + \",5 L0,10\");\n parent.setAttribute('refX', \"\" + 10 * Math.cos(Math.PI / 6));\n parent.setAttribute('refY', \"\" + 5);\n };\n Arrow.prototype._setMarker = function (r, el) {\n var parent = this.el;\n var path = this.cfg.path;\n var d = this.cfg.d;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(path)) {\n path = path\n .map(function (segment) {\n return segment.join(' ');\n })\n .join('');\n }\n el.setAttribute('d', path);\n parent.appendChild(el);\n if (d) {\n parent.setAttribute('refX', \"\" + d / r);\n }\n };\n Arrow.prototype.update = function (fill) {\n var child = this.child;\n if (child.attr) {\n child.attr('fill', fill);\n }\n else {\n child.setAttribute('fill', fill);\n }\n };\n return Arrow;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (Arrow);\n//# sourceMappingURL=arrow.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9kZWZzL2Fycm93LmpzP2JhZmEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDK0M7QUFDQTtBQUMvQztBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsa0VBQWdCO0FBQ2pDLGlCQUFpQiwyREFBUTtBQUN6QjtBQUNBLG9CQUFvQixrRUFBZ0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDBEQUFPO0FBQ25CO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ2Msb0VBQUssRUFBQztBQUNyQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1zdmdAMC41LjZAQGFudHYvZy1zdmcvZXNtL2RlZnMvYXJyb3cuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcgYXJyb3dcbiAqIEBhdXRob3IgZGVuZ2Z1cGluZ19kZXZlbG9wQDE2My5jb21cbiAqL1xuaW1wb3J0IHsgaXNBcnJheSwgdW5pcXVlSWQgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IGNyZWF0ZVNWR0VsZW1lbnQgfSBmcm9tICcuLi91dGlsL2RvbSc7XG52YXIgQXJyb3cgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQXJyb3coYXR0cnMsIHR5cGUpIHtcbiAgICAgICAgdGhpcy5jZmcgPSB7fTtcbiAgICAgICAgdmFyIGVsID0gY3JlYXRlU1ZHRWxlbWVudCgnbWFya2VyJyk7XG4gICAgICAgIHZhciBpZCA9IHVuaXF1ZUlkKCdtYXJrZXJfJyk7XG4gICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnaWQnLCBpZCk7XG4gICAgICAgIHZhciBzaGFwZSA9IGNyZWF0ZVNWR0VsZW1lbnQoJ3BhdGgnKTtcbiAgICAgICAgc2hhcGUuc2V0QXR0cmlidXRlKCdzdHJva2UnLCBhdHRycy5zdHJva2UgfHwgJ25vbmUnKTtcbiAgICAgICAgc2hhcGUuc2V0QXR0cmlidXRlKCdmaWxsJywgYXR0cnMuZmlsbCB8fCAnbm9uZScpO1xuICAgICAgICBlbC5hcHBlbmRDaGlsZChzaGFwZSk7XG4gICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnb3ZlcmZsb3cnLCAndmlzaWJsZScpO1xuICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ29yaWVudCcsICdhdXRvLXN0YXJ0LXJldmVyc2UnKTtcbiAgICAgICAgdGhpcy5lbCA9IGVsO1xuICAgICAgICB0aGlzLmNoaWxkID0gc2hhcGU7XG4gICAgICAgIHRoaXMuaWQgPSBpZDtcbiAgICAgICAgdmFyIGNmZyA9IGF0dHJzW3R5cGUgPT09ICdtYXJrZXItc3RhcnQnID8gJ3N0YXJ0QXJyb3cnIDogJ2VuZEFycm93J107XG4gICAgICAgIHRoaXMuc3Ryb2tlID0gYXR0cnMuc3Ryb2tlIHx8ICcjMDAwJztcbiAgICAgICAgaWYgKGNmZyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgdGhpcy5fc2V0RGVmYXVsdFBhdGgodHlwZSwgc2hhcGUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jZmcgPSBjZmc7IC8vIHdoZW4gYXJyb3cgY29uZmlnIGV4aXN0c1xuICAgICAgICAgICAgdGhpcy5fc2V0TWFya2VyKGF0dHJzLmxpbmVXaWR0aCwgc2hhcGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBBcnJvdy5wcm90b3R5cGUubWF0Y2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIEFycm93LnByb3RvdHlwZS5fc2V0RGVmYXVsdFBhdGggPSBmdW5jdGlvbiAodHlwZSwgZWwpIHtcbiAgICAgICAgdmFyIHBhcmVudCA9IHRoaXMuZWw7XG4gICAgICAgIC8vIOm7mOiupOeureWktOeahOi+uemVv+S4uiAxMO+8jOWkueinkuS4uiA2MCDluqZcbiAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdkJywgXCJNMCwwIExcIiArIDEwICogTWF0aC5jb3MoTWF0aC5QSSAvIDYpICsgXCIsNSBMMCwxMFwiKTtcbiAgICAgICAgcGFyZW50LnNldEF0dHJpYnV0ZSgncmVmWCcsIFwiXCIgKyAxMCAqIE1hdGguY29zKE1hdGguUEkgLyA2KSk7XG4gICAgICAgIHBhcmVudC5zZXRBdHRyaWJ1dGUoJ3JlZlknLCBcIlwiICsgNSk7XG4gICAgfTtcbiAgICBBcnJvdy5wcm90b3R5cGUuX3NldE1hcmtlciA9IGZ1bmN0aW9uIChyLCBlbCkge1xuICAgICAgICB2YXIgcGFyZW50ID0gdGhpcy5lbDtcbiAgICAgICAgdmFyIHBhdGggPSB0aGlzLmNmZy5wYXRoO1xuICAgICAgICB2YXIgZCA9IHRoaXMuY2ZnLmQ7XG4gICAgICAgIGlmIChpc0FycmF5KHBhdGgpKSB7XG4gICAgICAgICAgICBwYXRoID0gcGF0aFxuICAgICAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gKHNlZ21lbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VnbWVudC5qb2luKCcgJyk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5qb2luKCcnKTtcbiAgICAgICAgfVxuICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2QnLCBwYXRoKTtcbiAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKGVsKTtcbiAgICAgICAgaWYgKGQpIHtcbiAgICAgICAgICAgIHBhcmVudC5zZXRBdHRyaWJ1dGUoJ3JlZlgnLCBcIlwiICsgZCAvIHIpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBBcnJvdy5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGZpbGwpIHtcbiAgICAgICAgdmFyIGNoaWxkID0gdGhpcy5jaGlsZDtcbiAgICAgICAgaWYgKGNoaWxkLmF0dHIpIHtcbiAgICAgICAgICAgIGNoaWxkLmF0dHIoJ2ZpbGwnLCBmaWxsKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNoaWxkLnNldEF0dHJpYnV0ZSgnZmlsbCcsIGZpbGwpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gQXJyb3c7XG59KCkpO1xuZXhwb3J0IGRlZmF1bHQgQXJyb3c7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1hcnJvdy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/arrow.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/clip.js":
/*!**********************************************************************!*\
!*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/clip.js ***!
\**********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/dom */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/dom.js\");\n/**\n * @fileoverview clip\n * @author dengfuping_develop@163.com\n */\n\n\nvar Clip = /** @class */ (function () {\n function Clip(cfg) {\n this.type = 'clip';\n this.cfg = {};\n var el = Object(_util_dom__WEBPACK_IMPORTED_MODULE_1__[\"createSVGElement\"])('clipPath');\n this.el = el;\n this.id = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"uniqueId\"])('clip_');\n el.id = this.id;\n var shapeEl = cfg.cfg.el;\n el.appendChild(shapeEl);\n this.cfg = cfg;\n return this;\n }\n Clip.prototype.match = function () {\n return false;\n };\n Clip.prototype.remove = function () {\n var el = this.el;\n el.parentNode.removeChild(el);\n };\n return Clip;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (Clip);\n//# sourceMappingURL=clip.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9kZWZzL2NsaXAuanM/OTEwYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNzQztBQUNTO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGtFQUFnQjtBQUNqQztBQUNBLGtCQUFrQiwyREFBUTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNjLG1FQUFJLEVBQUM7QUFDcEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9kZWZzL2NsaXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcgY2xpcFxuICogQGF1dGhvciBkZW5nZnVwaW5nX2RldmVsb3BAMTYzLmNvbVxuICovXG5pbXBvcnQgeyB1bmlxdWVJZCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgY3JlYXRlU1ZHRWxlbWVudCB9IGZyb20gJy4uL3V0aWwvZG9tJztcbnZhciBDbGlwID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIENsaXAoY2ZnKSB7XG4gICAgICAgIHRoaXMudHlwZSA9ICdjbGlwJztcbiAgICAgICAgdGhpcy5jZmcgPSB7fTtcbiAgICAgICAgdmFyIGVsID0gY3JlYXRlU1ZHRWxlbWVudCgnY2xpcFBhdGgnKTtcbiAgICAgICAgdGhpcy5lbCA9IGVsO1xuICAgICAgICB0aGlzLmlkID0gdW5pcXVlSWQoJ2NsaXBfJyk7XG4gICAgICAgIGVsLmlkID0gdGhpcy5pZDtcbiAgICAgICAgdmFyIHNoYXBlRWwgPSBjZmcuY2ZnLmVsO1xuICAgICAgICBlbC5hcHBlbmRDaGlsZChzaGFwZUVsKTtcbiAgICAgICAgdGhpcy5jZmcgPSBjZmc7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBDbGlwLnByb3RvdHlwZS5tYXRjaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgQ2xpcC5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmVsO1xuICAgICAgICBlbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsKTtcbiAgICB9O1xuICAgIHJldHVybiBDbGlwO1xufSgpKTtcbmV4cG9ydCBkZWZhdWx0IENsaXA7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jbGlwLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/clip.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/gradient.js":
/*!**************************************************************************!*\
!*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/gradient.js ***!
\**************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/dom */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/dom.js\");\n/**\n * @fileoverview gradient\n * @author dengfuping_develop@163.com\n */\n\n\nvar regexLG = /^l\\s*\\(\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nvar regexRG = /^r\\s*\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nvar regexColorStop = /[\\d.]+:(#[^\\s]+|[^)]+\\))/gi;\nfunction addStop(steps) {\n var arr = steps.match(regexColorStop);\n if (!arr) {\n return '';\n }\n var stops = '';\n arr.sort(function (a, b) {\n a = a.split(':');\n b = b.split(':');\n return Number(a[0]) - Number(b[0]);\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(arr, function (item) {\n item = item.split(':');\n stops += \"\";\n });\n return stops;\n}\nfunction parseLineGradient(color, el) {\n var arr = regexLG.exec(color);\n var angle = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"mod\"])(Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"toRadian\"])(parseFloat(arr[1])), Math.PI * 2);\n var steps = arr[2];\n var start;\n var end;\n if (angle >= 0 && angle < 0.5 * Math.PI) {\n start = {\n x: 0,\n y: 0,\n };\n end = {\n x: 1,\n y: 1,\n };\n }\n else if (0.5 * Math.PI <= angle && angle < Math.PI) {\n start = {\n x: 1,\n y: 0,\n };\n end = {\n x: 0,\n y: 1,\n };\n }\n else if (Math.PI <= angle && angle < 1.5 * Math.PI) {\n start = {\n x: 1,\n y: 1,\n };\n end = {\n x: 0,\n y: 0,\n };\n }\n else {\n start = {\n x: 0,\n y: 1,\n };\n end = {\n x: 1,\n y: 0,\n };\n }\n var tanTheta = Math.tan(angle);\n var tanTheta2 = tanTheta * tanTheta;\n var x = (end.x - start.x + tanTheta * (end.y - start.y)) / (tanTheta2 + 1) + start.x;\n var y = (tanTheta * (end.x - start.x + tanTheta * (end.y - start.y))) / (tanTheta2 + 1) + start.y;\n el.setAttribute('x1', start.x);\n el.setAttribute('y1', start.y);\n el.setAttribute('x2', x);\n el.setAttribute('y2', y);\n el.innerHTML = addStop(steps);\n}\nfunction parseRadialGradient(color, self) {\n var arr = regexRG.exec(color);\n var cx = parseFloat(arr[1]);\n var cy = parseFloat(arr[2]);\n var r = parseFloat(arr[3]);\n var steps = arr[4];\n self.setAttribute('cx', cx);\n self.setAttribute('cy', cy);\n self.setAttribute('r', r);\n self.innerHTML = addStop(steps);\n}\nvar Gradient = /** @class */ (function () {\n function Gradient(cfg) {\n this.cfg = {};\n var el = null;\n var id = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"uniqueId\"])('gradient_');\n if (cfg.toLowerCase()[0] === 'l') {\n el = Object(_util_dom__WEBPACK_IMPORTED_MODULE_1__[\"createSVGElement\"])('linearGradient');\n parseLineGradient(cfg, el);\n }\n else {\n el = Object(_util_dom__WEBPACK_IMPORTED_MODULE_1__[\"createSVGElement\"])('radialGradient');\n parseRadialGradient(cfg, el);\n }\n el.setAttribute('id', id);\n this.el = el;\n this.id = id;\n this.cfg = cfg;\n return this;\n }\n Gradient.prototype.match = function (type, attr) {\n return this.cfg === attr;\n };\n return Gradient;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (Gradient);\n//# sourceMappingURL=gradient.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9kZWZzL2dyYWRpZW50LmpzP2MwM2UiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDMkQ7QUFDWjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxJQUFJLHVEQUFJO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixzREFBRyxDQUFDLDJEQUFRO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsMkRBQVE7QUFDekI7QUFDQSxpQkFBaUIsa0VBQWdCO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixrRUFBZ0I7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNjLHVFQUFRLEVBQUM7QUFDeEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9kZWZzL2dyYWRpZW50LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IGdyYWRpZW50XG4gKiBAYXV0aG9yIGRlbmdmdXBpbmdfZGV2ZWxvcEAxNjMuY29tXG4gKi9cbmltcG9ydCB7IGVhY2gsIG1vZCwgdG9SYWRpYW4sIHVuaXF1ZUlkIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBjcmVhdGVTVkdFbGVtZW50IH0gZnJvbSAnLi4vdXRpbC9kb20nO1xudmFyIHJlZ2V4TEcgPSAvXmxcXHMqXFwoXFxzKihbXFxkLl0rKVxccypcXClcXHMqKC4qKS9pO1xudmFyIHJlZ2V4UkcgPSAvXnJcXHMqXFwoXFxzKihbXFxkLl0rKVxccyosXFxzKihbXFxkLl0rKVxccyosXFxzKihbXFxkLl0rKVxccypcXClcXHMqKC4qKS9pO1xudmFyIHJlZ2V4Q29sb3JTdG9wID0gL1tcXGQuXSs6KCNbXlxcc10rfFteKV0rXFwpKS9naTtcbmZ1bmN0aW9uIGFkZFN0b3Aoc3RlcHMpIHtcbiAgICB2YXIgYXJyID0gc3RlcHMubWF0Y2gocmVnZXhDb2xvclN0b3ApO1xuICAgIGlmICghYXJyKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgdmFyIHN0b3BzID0gJyc7XG4gICAgYXJyLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgYSA9IGEuc3BsaXQoJzonKTtcbiAgICAgICAgYiA9IGIuc3BsaXQoJzonKTtcbiAgICAgICAgcmV0dXJuIE51bWJlcihhWzBdKSAtIE51bWJlcihiWzBdKTtcbiAgICB9KTtcbiAgICBlYWNoKGFyciwgZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgaXRlbSA9IGl0ZW0uc3BsaXQoJzonKTtcbiAgICAgICAgc3RvcHMgKz0gXCI8c3RvcCBvZmZzZXQ9XFxcIlwiICsgaXRlbVswXSArIFwiXFxcIiBzdG9wLWNvbG9yPVxcXCJcIiArIGl0ZW1bMV0gKyBcIlxcXCI+PC9zdG9wPlwiO1xuICAgIH0pO1xuICAgIHJldHVybiBzdG9wcztcbn1cbmZ1bmN0aW9uIHBhcnNlTGluZUdyYWRpZW50KGNvbG9yLCBlbCkge1xuICAgIHZhciBhcnIgPSByZWdleExHLmV4ZWMoY29sb3IpO1xuICAgIHZhciBhbmdsZSA9IG1vZCh0b1JhZGlhbihwYXJzZUZsb2F0KGFyclsxXSkpLCBNYXRoLlBJICogMik7XG4gICAgdmFyIHN0ZXBzID0gYXJyWzJdO1xuICAgIHZhciBzdGFydDtcbiAgICB2YXIgZW5kO1xuICAgIGlmIChhbmdsZSA+PSAwICYmIGFuZ2xlIDwgMC41ICogTWF0aC5QSSkge1xuICAgICAgICBzdGFydCA9IHtcbiAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICB5OiAwLFxuICAgICAgICB9O1xuICAgICAgICBlbmQgPSB7XG4gICAgICAgICAgICB4OiAxLFxuICAgICAgICAgICAgeTogMSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSBpZiAoMC41ICogTWF0aC5QSSA8PSBhbmdsZSAmJiBhbmdsZSA8IE1hdGguUEkpIHtcbiAgICAgICAgc3RhcnQgPSB7XG4gICAgICAgICAgICB4OiAxLFxuICAgICAgICAgICAgeTogMCxcbiAgICAgICAgfTtcbiAgICAgICAgZW5kID0ge1xuICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgIHk6IDEsXG4gICAgICAgIH07XG4gICAgfVxuICAgIGVsc2UgaWYgKE1hdGguUEkgPD0gYW5nbGUgJiYgYW5nbGUgPCAxLjUgKiBNYXRoLlBJKSB7XG4gICAgICAgIHN0YXJ0ID0ge1xuICAgICAgICAgICAgeDogMSxcbiAgICAgICAgICAgIHk6IDEsXG4gICAgICAgIH07XG4gICAgICAgIGVuZCA9IHtcbiAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICB5OiAwLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgc3RhcnQgPSB7XG4gICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgeTogMSxcbiAgICAgICAgfTtcbiAgICAgICAgZW5kID0ge1xuICAgICAgICAgICAgeDogMSxcbiAgICAgICAgICAgIHk6IDAsXG4gICAgICAgIH07XG4gICAgfVxuICAgIHZhciB0YW5UaGV0YSA9IE1hdGgudGFuKGFuZ2xlKTtcbiAgICB2YXIgdGFuVGhldGEyID0gdGFuVGhldGEgKiB0YW5UaGV0YTtcbiAgICB2YXIgeCA9IChlbmQueCAtIHN0YXJ0LnggKyB0YW5UaGV0YSAqIChlbmQueSAtIHN0YXJ0LnkpKSAvICh0YW5UaGV0YTIgKyAxKSArIHN0YXJ0Lng7XG4gICAgdmFyIHkgPSAodGFuVGhldGEgKiAoZW5kLnggLSBzdGFydC54ICsgdGFuVGhldGEgKiAoZW5kLnkgLSBzdGFydC55KSkpIC8gKHRhblRoZXRhMiArIDEpICsgc3RhcnQueTtcbiAgICBlbC5zZXRBdHRyaWJ1dGUoJ3gxJywgc3RhcnQueCk7XG4gICAgZWwuc2V0QXR0cmlidXRlKCd5MScsIHN0YXJ0LnkpO1xuICAgIGVsLnNldEF0dHJpYnV0ZSgneDInLCB4KTtcbiAgICBlbC5zZXRBdHRyaWJ1dGUoJ3kyJywgeSk7XG4gICAgZWwuaW5uZXJIVE1MID0gYWRkU3RvcChzdGVwcyk7XG59XG5mdW5jdGlvbiBwYXJzZVJhZGlhbEdyYWRpZW50KGNvbG9yLCBzZWxmKSB7XG4gICAgdmFyIGFyciA9IHJlZ2V4UkcuZXhlYyhjb2xvcik7XG4gICAgdmFyIGN4ID0gcGFyc2VGbG9hdChhcnJbMV0pO1xuICAgIHZhciBjeSA9IHBhcnNlRmxvYXQoYXJyWzJdKTtcbiAgICB2YXIgciA9IHBhcnNlRmxvYXQoYXJyWzNdKTtcbiAgICB2YXIgc3RlcHMgPSBhcnJbNF07XG4gICAgc2VsZi5zZXRBdHRyaWJ1dGUoJ2N4JywgY3gpO1xuICAgIHNlbGYuc2V0QXR0cmlidXRlKCdjeScsIGN5KTtcbiAgICBzZWxmLnNldEF0dHJpYnV0ZSgncicsIHIpO1xuICAgIHNlbGYuaW5uZXJIVE1MID0gYWRkU3RvcChzdGVwcyk7XG59XG52YXIgR3JhZGllbnQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gR3JhZGllbnQoY2ZnKSB7XG4gICAgICAgIHRoaXMuY2ZnID0ge307XG4gICAgICAgIHZhciBlbCA9IG51bGw7XG4gICAgICAgIHZhciBpZCA9IHVuaXF1ZUlkKCdncmFkaWVudF8nKTtcbiAgICAgICAgaWYgKGNmZy50b0xvd2VyQ2FzZSgpWzBdID09PSAnbCcpIHtcbiAgICAgICAgICAgIGVsID0gY3JlYXRlU1ZHRWxlbWVudCgnbGluZWFyR3JhZGllbnQnKTtcbiAgICAgICAgICAgIHBhcnNlTGluZUdyYWRpZW50KGNmZywgZWwpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZWwgPSBjcmVhdGVTVkdFbGVtZW50KCdyYWRpYWxHcmFkaWVudCcpO1xuICAgICAgICAgICAgcGFyc2VSYWRpYWxHcmFkaWVudChjZmcsIGVsKTtcbiAgICAgICAgfVxuICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2lkJywgaWQpO1xuICAgICAgICB0aGlzLmVsID0gZWw7XG4gICAgICAgIHRoaXMuaWQgPSBpZDtcbiAgICAgICAgdGhpcy5jZmcgPSBjZmc7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBHcmFkaWVudC5wcm90b3R5cGUubWF0Y2ggPSBmdW5jdGlvbiAodHlwZSwgYXR0cikge1xuICAgICAgICByZXR1cm4gdGhpcy5jZmcgPT09IGF0dHI7XG4gICAgfTtcbiAgICByZXR1cm4gR3JhZGllbnQ7XG59KCkpO1xuZXhwb3J0IGRlZmF1bHQgR3JhZGllbnQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1ncmFkaWVudC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/gradient.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/index.js":
/*!***********************************************************************!*\
!*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/index.js ***!
\***********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _gradient__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./gradient */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/gradient.js\");\n/* harmony import */ var _shadow__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shadow */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/shadow.js\");\n/* harmony import */ var _arrow__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./arrow */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/arrow.js\");\n/* harmony import */ var _clip__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./clip */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/clip.js\");\n/* harmony import */ var _pattern__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./pattern */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/pattern.js\");\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/dom */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/dom.js\");\n/**\n * @fileoverview defs\n * @author dengfuping_develop@163.com\n */\n\n\n\n\n\n\n\nvar Defs = /** @class */ (function () {\n function Defs(canvas) {\n var el = Object(_util_dom__WEBPACK_IMPORTED_MODULE_6__[\"createSVGElement\"])('defs');\n var id = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"uniqueId\"])('defs_');\n el.id = id;\n canvas.appendChild(el);\n this.children = [];\n this.defaultArrow = {};\n this.el = el;\n this.canvas = canvas;\n }\n Defs.prototype.find = function (type, attr) {\n var children = this.children;\n var result = null;\n for (var i = 0; i < children.length; i++) {\n if (children[i].match(type, attr)) {\n result = children[i].id;\n break;\n }\n }\n return result;\n };\n Defs.prototype.findById = function (id) {\n var children = this.children;\n var flag = null;\n for (var i = 0; i < children.length; i++) {\n if (children[i].id === id) {\n flag = children[i];\n break;\n }\n }\n return flag;\n };\n Defs.prototype.add = function (item) {\n this.children.push(item);\n item.canvas = this.canvas;\n item.parent = this;\n };\n Defs.prototype.getDefaultArrow = function (attrs, name) {\n var stroke = attrs.stroke || attrs.strokeStyle;\n if (this.defaultArrow[stroke]) {\n return this.defaultArrow[stroke].id;\n }\n var arrow = new _arrow__WEBPACK_IMPORTED_MODULE_3__[\"default\"](attrs, name);\n this.defaultArrow[stroke] = arrow;\n this.el.appendChild(arrow.el);\n this.add(arrow);\n return arrow.id;\n };\n Defs.prototype.addGradient = function (cfg) {\n var gradient = new _gradient__WEBPACK_IMPORTED_MODULE_1__[\"default\"](cfg);\n this.el.appendChild(gradient.el);\n this.add(gradient);\n return gradient.id;\n };\n Defs.prototype.addArrow = function (attrs, name) {\n var arrow = new _arrow__WEBPACK_IMPORTED_MODULE_3__[\"default\"](attrs, name);\n this.el.appendChild(arrow.el);\n this.add(arrow);\n return arrow.id;\n };\n Defs.prototype.addShadow = function (cfg) {\n var shadow = new _shadow__WEBPACK_IMPORTED_MODULE_2__[\"default\"](cfg);\n this.el.appendChild(shadow.el);\n this.add(shadow);\n return shadow.id;\n };\n Defs.prototype.addPattern = function (cfg) {\n var pattern = new _pattern__WEBPACK_IMPORTED_MODULE_5__[\"default\"](cfg);\n this.el.appendChild(pattern.el);\n this.add(pattern);\n return pattern.id;\n };\n Defs.prototype.addClip = function (cfg) {\n var clip = new _clip__WEBPACK_IMPORTED_MODULE_4__[\"default\"](cfg);\n this.el.appendChild(clip.el);\n this.add(clip);\n return clip.id;\n };\n return Defs;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (Defs);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9kZWZzL2luZGV4LmpzPzNiNGUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ3NDO0FBQ0o7QUFDSjtBQUNGO0FBQ0Y7QUFDTTtBQUNlO0FBQy9DO0FBQ0E7QUFDQSxpQkFBaUIsa0VBQWdCO0FBQ2pDLGlCQUFpQiwyREFBUTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixxQkFBcUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIscUJBQXFCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsOENBQUs7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLGlEQUFRO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsOENBQUs7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QiwrQ0FBTTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLGdEQUFPO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsNkNBQUk7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDYyxtRUFBSSxFQUFDO0FBQ3BCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXN2Z0AwLjUuNkBAYW50di9nLXN2Zy9lc20vZGVmcy9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVvdmVydmlldyBkZWZzXG4gKiBAYXV0aG9yIGRlbmdmdXBpbmdfZGV2ZWxvcEAxNjMuY29tXG4gKi9cbmltcG9ydCB7IHVuaXF1ZUlkIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgR3JhZGllbnQgZnJvbSAnLi9ncmFkaWVudCc7XG5pbXBvcnQgU2hhZG93IGZyb20gJy4vc2hhZG93JztcbmltcG9ydCBBcnJvdyBmcm9tICcuL2Fycm93JztcbmltcG9ydCBDbGlwIGZyb20gJy4vY2xpcCc7XG5pbXBvcnQgUGF0dGVybiBmcm9tICcuL3BhdHRlcm4nO1xuaW1wb3J0IHsgY3JlYXRlU1ZHRWxlbWVudCB9IGZyb20gJy4uL3V0aWwvZG9tJztcbnZhciBEZWZzID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIERlZnMoY2FudmFzKSB7XG4gICAgICAgIHZhciBlbCA9IGNyZWF0ZVNWR0VsZW1lbnQoJ2RlZnMnKTtcbiAgICAgICAgdmFyIGlkID0gdW5pcXVlSWQoJ2RlZnNfJyk7XG4gICAgICAgIGVsLmlkID0gaWQ7XG4gICAgICAgIGNhbnZhcy5hcHBlbmRDaGlsZChlbCk7XG4gICAgICAgIHRoaXMuY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgdGhpcy5kZWZhdWx0QXJyb3cgPSB7fTtcbiAgICAgICAgdGhpcy5lbCA9IGVsO1xuICAgICAgICB0aGlzLmNhbnZhcyA9IGNhbnZhcztcbiAgICB9XG4gICAgRGVmcy5wcm90b3R5cGUuZmluZCA9IGZ1bmN0aW9uICh0eXBlLCBhdHRyKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW47XG4gICAgICAgIHZhciByZXN1bHQgPSBudWxsO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoY2hpbGRyZW5baV0ubWF0Y2godHlwZSwgYXR0cikpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBjaGlsZHJlbltpXS5pZDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgRGVmcy5wcm90b3R5cGUuZmluZEJ5SWQgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbjtcbiAgICAgICAgdmFyIGZsYWcgPSBudWxsO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoY2hpbGRyZW5baV0uaWQgPT09IGlkKSB7XG4gICAgICAgICAgICAgICAgZmxhZyA9IGNoaWxkcmVuW2ldO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmbGFnO1xuICAgIH07XG4gICAgRGVmcy5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgdGhpcy5jaGlsZHJlbi5wdXNoKGl0ZW0pO1xuICAgICAgICBpdGVtLmNhbnZhcyA9IHRoaXMuY2FudmFzO1xuICAgICAgICBpdGVtLnBhcmVudCA9IHRoaXM7XG4gICAgfTtcbiAgICBEZWZzLnByb3RvdHlwZS5nZXREZWZhdWx0QXJyb3cgPSBmdW5jdGlvbiAoYXR0cnMsIG5hbWUpIHtcbiAgICAgICAgdmFyIHN0cm9rZSA9IGF0dHJzLnN0cm9rZSB8fCBhdHRycy5zdHJva2VTdHlsZTtcbiAgICAgICAgaWYgKHRoaXMuZGVmYXVsdEFycm93W3N0cm9rZV0pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRBcnJvd1tzdHJva2VdLmlkO1xuICAgICAgICB9XG4gICAgICAgIHZhciBhcnJvdyA9IG5ldyBBcnJvdyhhdHRycywgbmFtZSk7XG4gICAgICAgIHRoaXMuZGVmYXVsdEFycm93W3N0cm9rZV0gPSBhcnJvdztcbiAgICAgICAgdGhpcy5lbC5hcHBlbmRDaGlsZChhcnJvdy5lbCk7XG4gICAgICAgIHRoaXMuYWRkKGFycm93KTtcbiAgICAgICAgcmV0dXJuIGFycm93LmlkO1xuICAgIH07XG4gICAgRGVmcy5wcm90b3R5cGUuYWRkR3JhZGllbnQgPSBmdW5jdGlvbiAoY2ZnKSB7XG4gICAgICAgIHZhciBncmFkaWVudCA9IG5ldyBHcmFkaWVudChjZmcpO1xuICAgICAgICB0aGlzLmVsLmFwcGVuZENoaWxkKGdyYWRpZW50LmVsKTtcbiAgICAgICAgdGhpcy5hZGQoZ3JhZGllbnQpO1xuICAgICAgICByZXR1cm4gZ3JhZGllbnQuaWQ7XG4gICAgfTtcbiAgICBEZWZzLnByb3RvdHlwZS5hZGRBcnJvdyA9IGZ1bmN0aW9uIChhdHRycywgbmFtZSkge1xuICAgICAgICB2YXIgYXJyb3cgPSBuZXcgQXJyb3coYXR0cnMsIG5hbWUpO1xuICAgICAgICB0aGlzLmVsLmFwcGVuZENoaWxkKGFycm93LmVsKTtcbiAgICAgICAgdGhpcy5hZGQoYXJyb3cpO1xuICAgICAgICByZXR1cm4gYXJyb3cuaWQ7XG4gICAgfTtcbiAgICBEZWZzLnByb3RvdHlwZS5hZGRTaGFkb3cgPSBmdW5jdGlvbiAoY2ZnKSB7XG4gICAgICAgIHZhciBzaGFkb3cgPSBuZXcgU2hhZG93KGNmZyk7XG4gICAgICAgIHRoaXMuZWwuYXBwZW5kQ2hpbGQoc2hhZG93LmVsKTtcbiAgICAgICAgdGhpcy5hZGQoc2hhZG93KTtcbiAgICAgICAgcmV0dXJuIHNoYWRvdy5pZDtcbiAgICB9O1xuICAgIERlZnMucHJvdG90eXBlLmFkZFBhdHRlcm4gPSBmdW5jdGlvbiAoY2ZnKSB7XG4gICAgICAgIHZhciBwYXR0ZXJuID0gbmV3IFBhdHRlcm4oY2ZnKTtcbiAgICAgICAgdGhpcy5lbC5hcHBlbmRDaGlsZChwYXR0ZXJuLmVsKTtcbiAgICAgICAgdGhpcy5hZGQocGF0dGVybik7XG4gICAgICAgIHJldHVybiBwYXR0ZXJuLmlkO1xuICAgIH07XG4gICAgRGVmcy5wcm90b3R5cGUuYWRkQ2xpcCA9IGZ1bmN0aW9uIChjZmcpIHtcbiAgICAgICAgdmFyIGNsaXAgPSBuZXcgQ2xpcChjZmcpO1xuICAgICAgICB0aGlzLmVsLmFwcGVuZENoaWxkKGNsaXAuZWwpO1xuICAgICAgICB0aGlzLmFkZChjbGlwKTtcbiAgICAgICAgcmV0dXJuIGNsaXAuaWQ7XG4gICAgfTtcbiAgICByZXR1cm4gRGVmcztcbn0oKSk7XG5leHBvcnQgZGVmYXVsdCBEZWZzO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/pattern.js":
/*!*************************************************************************!*\
!*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/pattern.js ***!
\*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/dom */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/dom.js\");\n/**\n * @fileoverview pattern\n * @author dengfuping_develop@163.com\n */\n\n\nvar regexPR = /^p\\s*\\(\\s*([axyn])\\s*\\)\\s*(.*)/i;\nvar Pattern = /** @class */ (function () {\n function Pattern(cfg) {\n this.cfg = {};\n var el = Object(_util_dom__WEBPACK_IMPORTED_MODULE_1__[\"createSVGElement\"])('pattern');\n el.setAttribute('patternUnits', 'userSpaceOnUse');\n var child = Object(_util_dom__WEBPACK_IMPORTED_MODULE_1__[\"createSVGElement\"])('image');\n el.appendChild(child);\n var id = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"uniqueId\"])('pattern_');\n el.id = id;\n this.el = el;\n this.id = id;\n this.cfg = cfg;\n var arr = regexPR.exec(cfg);\n var source = arr[2];\n child.setAttribute('href', source);\n var img = new Image();\n if (!source.match(/^data:/i)) {\n img.crossOrigin = 'Anonymous';\n }\n img.src = source;\n function onload() {\n el.setAttribute('width', \"\" + img.width);\n el.setAttribute('height', \"\" + img.height);\n }\n if (img.complete) {\n onload();\n }\n else {\n img.onload = onload;\n // Fix onload() bug in IE9\n img.src = img.src;\n }\n return this;\n }\n Pattern.prototype.match = function (type, attr) {\n return this.cfg === attr;\n };\n return Pattern;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (Pattern);\n//# sourceMappingURL=pattern.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9kZWZzL3BhdHRlcm4uanM/YmE4MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNzQztBQUNTO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGtFQUFnQjtBQUNqQztBQUNBLG9CQUFvQixrRUFBZ0I7QUFDcEM7QUFDQSxpQkFBaUIsMkRBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNjLHNFQUFPLEVBQUM7QUFDdkIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9kZWZzL3BhdHRlcm4uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcgcGF0dGVyblxuICogQGF1dGhvciBkZW5nZnVwaW5nX2RldmVsb3BAMTYzLmNvbVxuICovXG5pbXBvcnQgeyB1bmlxdWVJZCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgY3JlYXRlU1ZHRWxlbWVudCB9IGZyb20gJy4uL3V0aWwvZG9tJztcbnZhciByZWdleFBSID0gL15wXFxzKlxcKFxccyooW2F4eW5dKVxccypcXClcXHMqKC4qKS9pO1xudmFyIFBhdHRlcm4gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gUGF0dGVybihjZmcpIHtcbiAgICAgICAgdGhpcy5jZmcgPSB7fTtcbiAgICAgICAgdmFyIGVsID0gY3JlYXRlU1ZHRWxlbWVudCgncGF0dGVybicpO1xuICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ3BhdHRlcm5Vbml0cycsICd1c2VyU3BhY2VPblVzZScpO1xuICAgICAgICB2YXIgY2hpbGQgPSBjcmVhdGVTVkdFbGVtZW50KCdpbWFnZScpO1xuICAgICAgICBlbC5hcHBlbmRDaGlsZChjaGlsZCk7XG4gICAgICAgIHZhciBpZCA9IHVuaXF1ZUlkKCdwYXR0ZXJuXycpO1xuICAgICAgICBlbC5pZCA9IGlkO1xuICAgICAgICB0aGlzLmVsID0gZWw7XG4gICAgICAgIHRoaXMuaWQgPSBpZDtcbiAgICAgICAgdGhpcy5jZmcgPSBjZmc7XG4gICAgICAgIHZhciBhcnIgPSByZWdleFBSLmV4ZWMoY2ZnKTtcbiAgICAgICAgdmFyIHNvdXJjZSA9IGFyclsyXTtcbiAgICAgICAgY2hpbGQuc2V0QXR0cmlidXRlKCdocmVmJywgc291cmNlKTtcbiAgICAgICAgdmFyIGltZyA9IG5ldyBJbWFnZSgpO1xuICAgICAgICBpZiAoIXNvdXJjZS5tYXRjaCgvXmRhdGE6L2kpKSB7XG4gICAgICAgICAgICBpbWcuY3Jvc3NPcmlnaW4gPSAnQW5vbnltb3VzJztcbiAgICAgICAgfVxuICAgICAgICBpbWcuc3JjID0gc291cmNlO1xuICAgICAgICBmdW5jdGlvbiBvbmxvYWQoKSB7XG4gICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgXCJcIiArIGltZy53aWR0aCk7XG4gICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsIFwiXCIgKyBpbWcuaGVpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW1nLmNvbXBsZXRlKSB7XG4gICAgICAgICAgICBvbmxvYWQoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGltZy5vbmxvYWQgPSBvbmxvYWQ7XG4gICAgICAgICAgICAvLyBGaXggb25sb2FkKCkgYnVnIGluIElFOVxuICAgICAgICAgICAgaW1nLnNyYyA9IGltZy5zcmM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIFBhdHRlcm4ucHJvdG90eXBlLm1hdGNoID0gZnVuY3Rpb24gKHR5cGUsIGF0dHIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2ZnID09PSBhdHRyO1xuICAgIH07XG4gICAgcmV0dXJuIFBhdHRlcm47XG59KCkpO1xuZXhwb3J0IGRlZmF1bHQgUGF0dGVybjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBhdHRlcm4uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/pattern.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/shadow.js":
/*!************************************************************************!*\
!*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/shadow.js ***!
\************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/dom */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/dom.js\");\n/**\n * @fileoverview shadow\n * @author dengfuping_develop@163.com\n */\n\n\nvar ATTR_MAP = {\n shadowColor: 'color',\n shadowOpacity: 'opacity',\n shadowBlur: 'blur',\n shadowOffsetX: 'dx',\n shadowOffsetY: 'dy',\n};\nvar SHADOW_DIMENSION = {\n x: '-40%',\n y: '-40%',\n width: '200%',\n height: '200%',\n};\nvar Shadow = /** @class */ (function () {\n function Shadow(cfg) {\n this.type = 'filter';\n this.cfg = {};\n this.type = 'filter';\n var el = Object(_util_dom__WEBPACK_IMPORTED_MODULE_1__[\"createSVGElement\"])('filter');\n // expand the filter region to fill in shadows\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(SHADOW_DIMENSION, function (v, k) {\n el.setAttribute(k, v);\n });\n this.el = el;\n this.id = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"uniqueId\"])('filter_');\n this.el.id = this.id;\n this.cfg = cfg;\n this._parseShadow(cfg, el);\n return this;\n }\n Shadow.prototype.match = function (type, cfg) {\n if (this.type !== type) {\n return false;\n }\n var flag = true;\n var config = this.cfg;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(Object.keys(config), function (attr) {\n if (config[attr] !== cfg[attr]) {\n flag = false;\n return false;\n }\n });\n return flag;\n };\n Shadow.prototype.update = function (name, value) {\n var config = this.cfg;\n config[ATTR_MAP[name]] = value;\n this._parseShadow(config, this.el);\n return this;\n };\n Shadow.prototype._parseShadow = function (config, el) {\n var child = \"\";\n el.innerHTML = child;\n };\n return Shadow;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (Shadow);\n//# sourceMappingURL=shadow.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9kZWZzL3NoYWRvdy5qcz9lZjRiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQzRDO0FBQ0c7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGtFQUFnQjtBQUNqQztBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBLFNBQVM7QUFDVDtBQUNBLGtCQUFrQiwyREFBUTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNjLHFFQUFNLEVBQUM7QUFDdEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9kZWZzL3NoYWRvdy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVvdmVydmlldyBzaGFkb3dcbiAqIEBhdXRob3IgZGVuZ2Z1cGluZ19kZXZlbG9wQDE2My5jb21cbiAqL1xuaW1wb3J0IHsgZWFjaCwgdW5pcXVlSWQgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IGNyZWF0ZVNWR0VsZW1lbnQgfSBmcm9tICcuLi91dGlsL2RvbSc7XG52YXIgQVRUUl9NQVAgPSB7XG4gICAgc2hhZG93Q29sb3I6ICdjb2xvcicsXG4gICAgc2hhZG93T3BhY2l0eTogJ29wYWNpdHknLFxuICAgIHNoYWRvd0JsdXI6ICdibHVyJyxcbiAgICBzaGFkb3dPZmZzZXRYOiAnZHgnLFxuICAgIHNoYWRvd09mZnNldFk6ICdkeScsXG59O1xudmFyIFNIQURPV19ESU1FTlNJT04gPSB7XG4gICAgeDogJy00MCUnLFxuICAgIHk6ICctNDAlJyxcbiAgICB3aWR0aDogJzIwMCUnLFxuICAgIGhlaWdodDogJzIwMCUnLFxufTtcbnZhciBTaGFkb3cgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gU2hhZG93KGNmZykge1xuICAgICAgICB0aGlzLnR5cGUgPSAnZmlsdGVyJztcbiAgICAgICAgdGhpcy5jZmcgPSB7fTtcbiAgICAgICAgdGhpcy50eXBlID0gJ2ZpbHRlcic7XG4gICAgICAgIHZhciBlbCA9IGNyZWF0ZVNWR0VsZW1lbnQoJ2ZpbHRlcicpO1xuICAgICAgICAvLyBleHBhbmQgdGhlIGZpbHRlciByZWdpb24gdG8gZmlsbCBpbiBzaGFkb3dzXG4gICAgICAgIGVhY2goU0hBRE9XX0RJTUVOU0lPTiwgZnVuY3Rpb24gKHYsIGspIHtcbiAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShrLCB2KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZWwgPSBlbDtcbiAgICAgICAgdGhpcy5pZCA9IHVuaXF1ZUlkKCdmaWx0ZXJfJyk7XG4gICAgICAgIHRoaXMuZWwuaWQgPSB0aGlzLmlkO1xuICAgICAgICB0aGlzLmNmZyA9IGNmZztcbiAgICAgICAgdGhpcy5fcGFyc2VTaGFkb3coY2ZnLCBlbCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBTaGFkb3cucHJvdG90eXBlLm1hdGNoID0gZnVuY3Rpb24gKHR5cGUsIGNmZykge1xuICAgICAgICBpZiAodGhpcy50eXBlICE9PSB0eXBlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGZsYWcgPSB0cnVlO1xuICAgICAgICB2YXIgY29uZmlnID0gdGhpcy5jZmc7XG4gICAgICAgIGVhY2goT2JqZWN0LmtleXMoY29uZmlnKSwgZnVuY3Rpb24gKGF0dHIpIHtcbiAgICAgICAgICAgIGlmIChjb25maWdbYXR0cl0gIT09IGNmZ1thdHRyXSkge1xuICAgICAgICAgICAgICAgIGZsYWcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZmxhZztcbiAgICB9O1xuICAgIFNoYWRvdy5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIHZhciBjb25maWcgPSB0aGlzLmNmZztcbiAgICAgICAgY29uZmlnW0FUVFJfTUFQW25hbWVdXSA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9wYXJzZVNoYWRvdyhjb25maWcsIHRoaXMuZWwpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIFNoYWRvdy5wcm90b3R5cGUuX3BhcnNlU2hhZG93ID0gZnVuY3Rpb24gKGNvbmZpZywgZWwpIHtcbiAgICAgICAgdmFyIGNoaWxkID0gXCI8ZmVEcm9wU2hhZG93XFxuICAgICAgZHg9XFxcIlwiICsgKGNvbmZpZy5keCB8fCAwKSArIFwiXFxcIlxcbiAgICAgIGR5PVxcXCJcIiArIChjb25maWcuZHkgfHwgMCkgKyBcIlxcXCJcXG4gICAgICBzdGREZXZpYXRpb249XFxcIlwiICsgKGNvbmZpZy5ibHVyID8gY29uZmlnLmJsdXIgLyAxMCA6IDApICsgXCJcXFwiXFxuICAgICAgZmxvb2QtY29sb3I9XFxcIlwiICsgKGNvbmZpZy5jb2xvciA/IGNvbmZpZy5jb2xvciA6ICcjMDAwJykgKyBcIlxcXCJcXG4gICAgICBmbG9vZC1vcGFjaXR5PVxcXCJcIiArIChjb25maWcub3BhY2l0eSA/IGNvbmZpZy5vcGFjaXR5IDogMSkgKyBcIlxcXCJcXG4gICAgICAvPlwiO1xuICAgICAgICBlbC5pbm5lckhUTUwgPSBjaGlsZDtcbiAgICB9O1xuICAgIHJldHVybiBTaGFkb3c7XG59KCkpO1xuZXhwb3J0IGRlZmF1bHQgU2hhZG93O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2hhZG93LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/defs/shadow.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/group.js":
/*!******************************************************************!*\
!*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/group.js ***!
\******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shape */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/index.js\");\n/* harmony import */ var _util_draw__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util/draw */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/draw.js\");\n/* harmony import */ var _util_svg__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util/svg */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/svg.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./constant */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./util/dom */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/dom.js\");\n\n\n\n\n\n\n\n\nvar Group = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Group, _super);\n function Group() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // SVG 中分组对应实体标签 \n Group.prototype.isEntityGroup = function () {\n return true;\n };\n Group.prototype.createDom = function () {\n var element = Object(_util_dom__WEBPACK_IMPORTED_MODULE_7__[\"createSVGElement\"])('g');\n this.set('el', element);\n var parent = this.getParent();\n if (parent) {\n var parentNode = parent.get('el');\n if (parentNode) {\n parentNode.appendChild(element);\n }\n else {\n // parentNode maybe null for group\n parentNode = parent.createDom();\n parent.set('el', parentNode);\n parentNode.appendChild(element);\n }\n }\n return element;\n };\n // 覆盖基类的 afterAttrsChange 方法\n Group.prototype.afterAttrsChange = function (targetAttrs) {\n _super.prototype.afterAttrsChange.call(this, targetAttrs);\n var canvas = this.get('canvas');\n // 只有挂载到画布下,才对元素进行实际渲染\n if (canvas && canvas.get('autoDraw')) {\n var context = canvas.get('context');\n this.createPath(context, targetAttrs);\n }\n };\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n Group.prototype.onCanvasChange = function (changeType) {\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_4__[\"refreshElement\"])(this, changeType);\n };\n Group.prototype.getShapeBase = function () {\n return _shape__WEBPACK_IMPORTED_MODULE_3__;\n };\n Group.prototype.getGroupBase = function () {\n return Group;\n };\n Group.prototype.draw = function (context) {\n var children = this.getChildren();\n var el = this.get('el');\n if (this.get('destroyed')) {\n if (el) {\n el.parentNode.removeChild(el);\n }\n }\n else {\n if (!el) {\n this.createDom();\n }\n Object(_util_svg__WEBPACK_IMPORTED_MODULE_5__[\"setClip\"])(this, context);\n this.createPath(context);\n if (children.length) {\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_4__[\"drawChildren\"])(context, children);\n }\n }\n };\n /**\n * 绘制分组的路径\n * @param {Defs} context 上下文\n * @param {ShapeAttrs} targetAttrs 渲染的目标属性\n */\n Group.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n if (_constant__WEBPACK_IMPORTED_MODULE_6__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_6__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n Object(_util_svg__WEBPACK_IMPORTED_MODULE_5__[\"setTransform\"])(this);\n };\n return Group;\n}(_antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"AbstractGroup\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Group);\n//# sourceMappingURL=group.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9ncm91cC5qcz8wYjI0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNXO0FBQ1g7QUFDRDtBQUMwQjtBQUNSO0FBQ1Q7QUFDSTtBQUM5QztBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLGtFQUFnQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsV0FBVztBQUMxQjtBQUNBO0FBQ0EsUUFBUSxpRUFBYztBQUN0QjtBQUNBO0FBQ0EsZUFBZSxtQ0FBSztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVkseURBQU87QUFDbkI7QUFDQTtBQUNBLGdCQUFnQiwrREFBWTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxLQUFLO0FBQ3BCLGVBQWUsV0FBVztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWixnQkFBZ0Isc0RBQVk7QUFDNUIsZ0NBQWdDLHNEQUFZO0FBQzVDO0FBQ0EsU0FBUztBQUNULFFBQVEsOERBQVk7QUFDcEI7QUFDQTtBQUNBLENBQUMsQ0FBQywwREFBYTtBQUNBLG9FQUFLLEVBQUM7QUFDckIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9ncm91cC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgQWJzdHJhY3RHcm91cCB9IGZyb20gJ0BhbnR2L2ctYmFzZSc7XG5pbXBvcnQgeyBlYWNoIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgKiBhcyBTaGFwZSBmcm9tICcuL3NoYXBlJztcbmltcG9ydCB7IGRyYXdDaGlsZHJlbiwgcmVmcmVzaEVsZW1lbnQgfSBmcm9tICcuL3V0aWwvZHJhdyc7XG5pbXBvcnQgeyBzZXRDbGlwLCBzZXRUcmFuc2Zvcm0gfSBmcm9tICcuL3V0aWwvc3ZnJztcbmltcG9ydCB7IFNWR19BVFRSX01BUCB9IGZyb20gJy4vY29uc3RhbnQnO1xuaW1wb3J0IHsgY3JlYXRlU1ZHRWxlbWVudCB9IGZyb20gJy4vdXRpbC9kb20nO1xudmFyIEdyb3VwID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhHcm91cCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBHcm91cCgpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICAvLyBTVkcg5Lit5YiG57uE5a+55bqU5a6e5L2T5qCH562+IDxnPlxuICAgIEdyb3VwLnByb3RvdHlwZS5pc0VudGl0eUdyb3VwID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuICAgIEdyb3VwLnByb3RvdHlwZS5jcmVhdGVEb20gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBlbGVtZW50ID0gY3JlYXRlU1ZHRWxlbWVudCgnZycpO1xuICAgICAgICB0aGlzLnNldCgnZWwnLCBlbGVtZW50KTtcbiAgICAgICAgdmFyIHBhcmVudCA9IHRoaXMuZ2V0UGFyZW50KCk7XG4gICAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgICAgIHZhciBwYXJlbnROb2RlID0gcGFyZW50LmdldCgnZWwnKTtcbiAgICAgICAgICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgICAgICAgICAgcGFyZW50Tm9kZS5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIHBhcmVudE5vZGUgbWF5YmUgbnVsbCBmb3IgZ3JvdXBcbiAgICAgICAgICAgICAgICBwYXJlbnROb2RlID0gcGFyZW50LmNyZWF0ZURvbSgpO1xuICAgICAgICAgICAgICAgIHBhcmVudC5zZXQoJ2VsJywgcGFyZW50Tm9kZSk7XG4gICAgICAgICAgICAgICAgcGFyZW50Tm9kZS5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZWxlbWVudDtcbiAgICB9O1xuICAgIC8vIOimhuebluWfuuexu+eahCBhZnRlckF0dHJzQ2hhbmdlIOaWueazlVxuICAgIEdyb3VwLnByb3RvdHlwZS5hZnRlckF0dHJzQ2hhbmdlID0gZnVuY3Rpb24gKHRhcmdldEF0dHJzKSB7XG4gICAgICAgIF9zdXBlci5wcm90b3R5cGUuYWZ0ZXJBdHRyc0NoYW5nZS5jYWxsKHRoaXMsIHRhcmdldEF0dHJzKTtcbiAgICAgICAgdmFyIGNhbnZhcyA9IHRoaXMuZ2V0KCdjYW52YXMnKTtcbiAgICAgICAgLy8g5Y+q5pyJ5oyC6L295Yiw55S75biD5LiL77yM5omN5a+55YWD57Sg6L+b6KGM5a6e6ZmF5riy5p+TXG4gICAgICAgIGlmIChjYW52YXMgJiYgY2FudmFzLmdldCgnYXV0b0RyYXcnKSkge1xuICAgICAgICAgICAgdmFyIGNvbnRleHQgPSBjYW52YXMuZ2V0KCdjb250ZXh0Jyk7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZVBhdGgoY29udGV4dCwgdGFyZ2V0QXR0cnMpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDkuIDkupvmlrnms5XosIPnlKjkvJrlvJXotbfnlLvluIPlj5jljJZcbiAgICAgKiBAcGFyYW0ge0NoYW5nZVR5cGV9IGNoYW5nZVR5cGUg5pS55Y+Y55qE57G75Z6LXG4gICAgICovXG4gICAgR3JvdXAucHJvdG90eXBlLm9uQ2FudmFzQ2hhbmdlID0gZnVuY3Rpb24gKGNoYW5nZVR5cGUpIHtcbiAgICAgICAgcmVmcmVzaEVsZW1lbnQodGhpcywgY2hhbmdlVHlwZSk7XG4gICAgfTtcbiAgICBHcm91cC5wcm90b3R5cGUuZ2V0U2hhcGVCYXNlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gU2hhcGU7XG4gICAgfTtcbiAgICBHcm91cC5wcm90b3R5cGUuZ2V0R3JvdXBCYXNlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gR3JvdXA7XG4gICAgfTtcbiAgICBHcm91cC5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIGlmICh0aGlzLmdldCgnZGVzdHJveWVkJykpIHtcbiAgICAgICAgICAgIGlmIChlbCkge1xuICAgICAgICAgICAgICAgIGVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFlbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlRG9tKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRDbGlwKHRoaXMsIGNvbnRleHQpO1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVQYXRoKGNvbnRleHQpO1xuICAgICAgICAgICAgaWYgKGNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGRyYXdDaGlsZHJlbihjb250ZXh0LCBjaGlsZHJlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOe7mOWItuWIhue7hOeahOi3r+W+hFxuICAgICAqIEBwYXJhbSB7RGVmc30gY29udGV4dCDkuIrkuIvmlodcbiAgICAgKiBAcGFyYW0ge1NoYXBlQXR0cnN9IHRhcmdldEF0dHJzIOa4suafk+eahOebruagh+WxnuaAp1xuICAgICAqL1xuICAgIEdyb3VwLnByb3RvdHlwZS5jcmVhdGVQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQsIHRhcmdldEF0dHJzKSB7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cigpO1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgZWFjaCh0YXJnZXRBdHRycyB8fCBhdHRycywgZnVuY3Rpb24gKHZhbHVlLCBhdHRyKSB7XG4gICAgICAgICAgICBpZiAoU1ZHX0FUVFJfTUFQW2F0dHJdKSB7XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKFNWR19BVFRSX01BUFthdHRyXSwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgc2V0VHJhbnNmb3JtKHRoaXMpO1xuICAgIH07XG4gICAgcmV0dXJuIEdyb3VwO1xufShBYnN0cmFjdEdyb3VwKSk7XG5leHBvcnQgZGVmYXVsdCBHcm91cDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdyb3VwLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/group.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/index.js":
/*!******************************************************************!*\
!*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/index.js ***!
\******************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"version\", function() { return version; });\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./shape */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/index.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"Shape\", function() { return _shape__WEBPACK_IMPORTED_MODULE_0__; });\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/index.js\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _antv_g_base__WEBPACK_IMPORTED_MODULE_1__) if([\"default\",\"Canvas\",\"Group\",\"Shape\",\"version\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _antv_g_base__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _canvas__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./canvas */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/canvas.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Canvas\", function() { return _canvas__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _group__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./group */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/group.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Group\", function() { return _group__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n\n\n\n\n\nvar version = '0.5.6';\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9pbmRleC5qcz85N2Y0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNKO0FBQ2dCO0FBQ0Y7QUFDMUI7QUFDVjtBQUNQIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXN2Z0AwLjUuNkBAYW50di9nLXN2Zy9lc20vaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBTaGFwZSBmcm9tICcuL3NoYXBlJztcbmV4cG9ydCAqIGZyb20gJ0BhbnR2L2ctYmFzZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIENhbnZhcyB9IGZyb20gJy4vY2FudmFzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgR3JvdXAgfSBmcm9tICcuL2dyb3VwJztcbmV4cG9ydCB7IFNoYXBlIH07XG5leHBvcnQgdmFyIHZlcnNpb24gPSAnMC41LjYnO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/base.js":
/*!***********************************************************************!*\
!*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/base.js ***!
\***********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/index.js\");\n/* harmony import */ var _util_svg__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/svg */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/svg.js\");\n/* harmony import */ var _util_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/dom */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/dom.js\");\n/* harmony import */ var _util_draw__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/draw */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/draw.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../constant */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./index */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/index.js\");\n/* harmony import */ var _group__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../group */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/group.js\");\n\n\n\n\n\n\n\n\n\nvar ShapeBase = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(ShapeBase, _super);\n function ShapeBase() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'svg';\n _this.canFill = false;\n _this.canStroke = false;\n return _this;\n }\n ShapeBase.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n // 设置默认值\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { lineWidth: 1, lineAppendWidth: 0, strokeOpacity: 1, fillOpacity: 1 });\n };\n // 覆盖基类的 afterAttrsChange 方法\n ShapeBase.prototype.afterAttrsChange = function (targetAttrs) {\n _super.prototype.afterAttrsChange.call(this, targetAttrs);\n var canvas = this.get('canvas');\n // 只有挂载到画布下,才对元素进行实际渲染\n if (canvas && canvas.get('autoDraw')) {\n var context = canvas.get('context');\n this.draw(context, targetAttrs);\n }\n };\n ShapeBase.prototype.getShapeBase = function () {\n return _index__WEBPACK_IMPORTED_MODULE_6__;\n };\n ShapeBase.prototype.getGroupBase = function () {\n return _group__WEBPACK_IMPORTED_MODULE_7__[\"default\"];\n };\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n ShapeBase.prototype.onCanvasChange = function (changeType) {\n Object(_util_draw__WEBPACK_IMPORTED_MODULE_4__[\"refreshElement\"])(this, changeType);\n };\n ShapeBase.prototype.calculateBBox = function () {\n var el = this.get('el');\n var bbox = null;\n // 包围盒计算依赖于绘制,如果还没有生成对应的 Dom 元素,则包围盒的长宽均为 0\n if (el) {\n bbox = el.getBBox();\n }\n else {\n var bboxMethod = Object(_antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"getBBoxMethod\"])(this.get('type'));\n if (bboxMethod) {\n bbox = bboxMethod(this);\n }\n }\n if (bbox) {\n var x = bbox.x, y = bbox.y, width = bbox.width, height = bbox.height;\n var lineWidth = this.getHitLineWidth();\n var halfWidth = lineWidth / 2;\n var minX = x - halfWidth;\n var minY = y - halfWidth;\n var maxX = x + width + halfWidth;\n var maxY = y + height + halfWidth;\n return {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: width + lineWidth,\n height: height + lineWidth,\n };\n }\n return {\n x: 0,\n y: 0,\n minX: 0,\n minY: 0,\n maxX: 0,\n maxY: 0,\n width: 0,\n height: 0,\n };\n };\n ShapeBase.prototype.isFill = function () {\n var _a = this.attr(), fill = _a.fill, fillStyle = _a.fillStyle;\n return (fill || fillStyle || this.isClipShape()) && this.canFill;\n };\n ShapeBase.prototype.isStroke = function () {\n var _a = this.attr(), stroke = _a.stroke, strokeStyle = _a.strokeStyle;\n return (stroke || strokeStyle) && this.canStroke;\n };\n ShapeBase.prototype.draw = function (context, targetAttrs) {\n var el = this.get('el');\n if (this.get('destroyed')) {\n if (el) {\n el.parentNode.removeChild(el);\n }\n }\n else {\n if (!el) {\n Object(_util_dom__WEBPACK_IMPORTED_MODULE_3__[\"createDom\"])(this);\n }\n Object(_util_svg__WEBPACK_IMPORTED_MODULE_2__[\"setClip\"])(this, context);\n this.createPath(context, targetAttrs);\n this.shadow(context, targetAttrs);\n this.strokeAndFill(context, targetAttrs);\n this.transform(targetAttrs);\n }\n };\n /**\n * @protected\n * 绘制图形的路径\n * @param {Defs} context 上下文\n * @param {ShapeAttrs} targetAttrs 渲染的目标属性\n */\n ShapeBase.prototype.createPath = function (context, targetAttrs) { };\n // stroke and fill\n ShapeBase.prototype.strokeAndFill = function (context, targetAttrs) {\n var attrs = targetAttrs || this.attr();\n var fill = attrs.fill, fillStyle = attrs.fillStyle, stroke = attrs.stroke, strokeStyle = attrs.strokeStyle, fillOpacity = attrs.fillOpacity, strokeOpacity = attrs.strokeOpacity, lineWidth = attrs.lineWidth;\n var el = this.get('el');\n if (this.canFill) {\n // 初次渲染和更新渲染的逻辑有所不同: 初次渲染值为空时,需要设置为 none,否则就会是黑色,而更新渲染则不需要\n if (!targetAttrs) {\n this._setColor(context, 'fill', fill || fillStyle);\n }\n else if ('fill' in attrs) {\n this._setColor(context, 'fill', fill);\n }\n else if ('fillStyle' in attrs) {\n // compatible with fillStyle\n this._setColor(context, 'fill', fillStyle);\n }\n if (fillOpacity) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_5__[\"SVG_ATTR_MAP\"]['fillOpacity'], fillOpacity);\n }\n }\n if (this.canStroke && lineWidth > 0) {\n if (!targetAttrs) {\n this._setColor(context, 'stroke', stroke || strokeStyle);\n }\n else if ('stroke' in attrs) {\n this._setColor(context, 'stroke', stroke);\n }\n else if ('strokeStyle' in attrs) {\n // compatible with strokeStyle\n this._setColor(context, 'stroke', strokeStyle);\n }\n if (strokeOpacity) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_5__[\"SVG_ATTR_MAP\"]['strokeOpacity'], strokeOpacity);\n }\n if (lineWidth) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_5__[\"SVG_ATTR_MAP\"]['lineWidth'], lineWidth);\n }\n }\n };\n ShapeBase.prototype._setColor = function (context, attr, value) {\n var el = this.get('el');\n if (!value) {\n // need to set `none` to avoid default value\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_5__[\"SVG_ATTR_MAP\"][attr], 'none');\n return;\n }\n value = value.trim();\n if (/^[r,R,L,l]{1}[\\s]*\\(/.test(value)) {\n var id = context.find('gradient', value);\n if (!id) {\n id = context.addGradient(value);\n }\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_5__[\"SVG_ATTR_MAP\"][attr], \"url(#\" + id + \")\");\n }\n else if (/^[p,P]{1}[\\s]*\\(/.test(value)) {\n var id = context.find('pattern', value);\n if (!id) {\n id = context.addPattern(value);\n }\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_5__[\"SVG_ATTR_MAP\"][attr], \"url(#\" + id + \")\");\n }\n else {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_5__[\"SVG_ATTR_MAP\"][attr], value);\n }\n };\n ShapeBase.prototype.shadow = function (context, targetAttrs) {\n var attrs = this.attr();\n var _a = targetAttrs || attrs, shadowOffsetX = _a.shadowOffsetX, shadowOffsetY = _a.shadowOffsetY, shadowBlur = _a.shadowBlur, shadowColor = _a.shadowColor;\n if (shadowOffsetX || shadowOffsetY || shadowBlur || shadowColor) {\n Object(_util_svg__WEBPACK_IMPORTED_MODULE_2__[\"setShadow\"])(this, context);\n }\n };\n ShapeBase.prototype.transform = function (targetAttrs) {\n var attrs = this.attr();\n var matrix = (targetAttrs || attrs).matrix;\n if (matrix) {\n Object(_util_svg__WEBPACK_IMPORTED_MODULE_2__[\"setTransform\"])(this);\n }\n };\n ShapeBase.prototype.isInShape = function (refX, refY) {\n return this.isPointInPath(refX, refY);\n };\n ShapeBase.prototype.isPointInPath = function (refX, refY) {\n var el = this.get('el');\n var canvas = this.get('canvas');\n var bbox = canvas.get('el').getBoundingClientRect();\n var clientX = refX + bbox.left;\n var clientY = refY + bbox.top;\n var element = document.elementFromPoint(clientX, clientY);\n if (element && element.isEqualNode(el)) {\n return true;\n }\n return false;\n };\n /**\n * 获取线拾取的宽度\n * @returns {number} 线的拾取宽度\n */\n ShapeBase.prototype.getHitLineWidth = function () {\n var _a = this.attrs, lineWidth = _a.lineWidth, lineAppendWidth = _a.lineAppendWidth;\n if (this.isStroke()) {\n return lineWidth + lineAppendWidth;\n }\n return 0;\n };\n return ShapeBase;\n}(_antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"AbstractShape\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (ShapeBase);\n//# sourceMappingURL=base.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9zaGFwZS9iYXNlLmpzPzgwYmUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTRDO0FBQ0M7QUFDa0I7QUFDdkI7QUFDTTtBQUNIO0FBQ1Y7QUFDSjtBQUNnQjtBQUM3QztBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHLFdBQVcscUVBQXFFO0FBQ25IO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsbUNBQUs7QUFDcEI7QUFDQTtBQUNBLGVBQWUsOENBQUs7QUFDcEI7QUFDQTtBQUNBO0FBQ0EsZUFBZSxXQUFXO0FBQzFCO0FBQ0E7QUFDQSxRQUFRLGlFQUFjO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixrRUFBYTtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsMkRBQVM7QUFDekI7QUFDQSxZQUFZLHlEQUFPO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsS0FBSztBQUNwQixlQUFlLFdBQVc7QUFDMUI7QUFDQSxzRUFBc0U7QUFDdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLHNEQUFZO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0Msc0RBQVk7QUFDNUM7QUFDQTtBQUNBLGdDQUFnQyxzREFBWTtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixzREFBWTtBQUN4QztBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsRUFBRTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixzREFBWTtBQUN4QztBQUNBLHlCQUF5QixFQUFFO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLHNEQUFZO0FBQ3hDO0FBQ0E7QUFDQSw0QkFBNEIsc0RBQVk7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSwyREFBUztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDhEQUFZO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLE9BQU87QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDBEQUFhO0FBQ0Esd0VBQVMsRUFBQztBQUN6QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1zdmdAMC41LjZAQGFudHYvZy1zdmcvZXNtL3NoYXBlL2Jhc2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBBYnN0cmFjdFNoYXBlIH0gZnJvbSAnQGFudHYvZy1iYXNlJztcbmltcG9ydCB7IHNldFNoYWRvdywgc2V0VHJhbnNmb3JtLCBzZXRDbGlwIH0gZnJvbSAnLi4vdXRpbC9zdmcnO1xuaW1wb3J0IHsgY3JlYXRlRG9tIH0gZnJvbSAnLi4vdXRpbC9kb20nO1xuaW1wb3J0IHsgcmVmcmVzaEVsZW1lbnQgfSBmcm9tICcuLi91dGlsL2RyYXcnO1xuaW1wb3J0IHsgU1ZHX0FUVFJfTUFQIH0gZnJvbSAnLi4vY29uc3RhbnQnO1xuaW1wb3J0ICogYXMgU2hhcGUgZnJvbSAnLi9pbmRleCc7XG5pbXBvcnQgR3JvdXAgZnJvbSAnLi4vZ3JvdXAnO1xuaW1wb3J0IHsgZ2V0QkJveE1ldGhvZCB9IGZyb20gJ0BhbnR2L2ctYmFzZSc7XG52YXIgU2hhcGVCYXNlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhTaGFwZUJhc2UsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gU2hhcGVCYXNlKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMudHlwZSA9ICdzdmcnO1xuICAgICAgICBfdGhpcy5jYW5GaWxsID0gZmFsc2U7XG4gICAgICAgIF90aGlzLmNhblN0cm9rZSA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXR0cnMgPSBfc3VwZXIucHJvdG90eXBlLmdldERlZmF1bHRBdHRycy5jYWxsKHRoaXMpO1xuICAgICAgICAvLyDorr7nva7pu5jorqTlgLxcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBhdHRycyksIHsgbGluZVdpZHRoOiAxLCBsaW5lQXBwZW5kV2lkdGg6IDAsIHN0cm9rZU9wYWNpdHk6IDEsIGZpbGxPcGFjaXR5OiAxIH0pO1xuICAgIH07XG4gICAgLy8g6KaG55uW5Z+657G755qEIGFmdGVyQXR0cnNDaGFuZ2Ug5pa55rOVXG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5hZnRlckF0dHJzQ2hhbmdlID0gZnVuY3Rpb24gKHRhcmdldEF0dHJzKSB7XG4gICAgICAgIF9zdXBlci5wcm90b3R5cGUuYWZ0ZXJBdHRyc0NoYW5nZS5jYWxsKHRoaXMsIHRhcmdldEF0dHJzKTtcbiAgICAgICAgdmFyIGNhbnZhcyA9IHRoaXMuZ2V0KCdjYW52YXMnKTtcbiAgICAgICAgLy8g5Y+q5pyJ5oyC6L295Yiw55S75biD5LiL77yM5omN5a+55YWD57Sg6L+b6KGM5a6e6ZmF5riy5p+TXG4gICAgICAgIGlmIChjYW52YXMgJiYgY2FudmFzLmdldCgnYXV0b0RyYXcnKSkge1xuICAgICAgICAgICAgdmFyIGNvbnRleHQgPSBjYW52YXMuZ2V0KCdjb250ZXh0Jyk7XG4gICAgICAgICAgICB0aGlzLmRyYXcoY29udGV4dCwgdGFyZ2V0QXR0cnMpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLmdldFNoYXBlQmFzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFNoYXBlO1xuICAgIH07XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5nZXRHcm91cEJhc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBHcm91cDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOS4gOS6m+aWueazleiwg+eUqOS8muW8lei1t+eUu+W4g+WPmOWMllxuICAgICAqIEBwYXJhbSB7Q2hhbmdlVHlwZX0gY2hhbmdlVHlwZSDmlLnlj5jnmoTnsbvlnotcbiAgICAgKi9cbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLm9uQ2FudmFzQ2hhbmdlID0gZnVuY3Rpb24gKGNoYW5nZVR5cGUpIHtcbiAgICAgICAgcmVmcmVzaEVsZW1lbnQodGhpcywgY2hhbmdlVHlwZSk7XG4gICAgfTtcbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLmNhbGN1bGF0ZUJCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICB2YXIgYmJveCA9IG51bGw7XG4gICAgICAgIC8vIOWMheWbtOebkuiuoeeul+S+nei1luS6jue7mOWItu+8jOWmguaenOi/mOayoeacieeUn+aIkOWvueW6lOeahCBEb20g5YWD57Sg77yM5YiZ5YyF5Zu055uS55qE6ZW/5a695Z2H5Li6IDBcbiAgICAgICAgaWYgKGVsKSB7XG4gICAgICAgICAgICBiYm94ID0gZWwuZ2V0QkJveCgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIGJib3hNZXRob2QgPSBnZXRCQm94TWV0aG9kKHRoaXMuZ2V0KCd0eXBlJykpO1xuICAgICAgICAgICAgaWYgKGJib3hNZXRob2QpIHtcbiAgICAgICAgICAgICAgICBiYm94ID0gYmJveE1ldGhvZCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoYmJveCkge1xuICAgICAgICAgICAgdmFyIHggPSBiYm94LngsIHkgPSBiYm94LnksIHdpZHRoID0gYmJveC53aWR0aCwgaGVpZ2h0ID0gYmJveC5oZWlnaHQ7XG4gICAgICAgICAgICB2YXIgbGluZVdpZHRoID0gdGhpcy5nZXRIaXRMaW5lV2lkdGgoKTtcbiAgICAgICAgICAgIHZhciBoYWxmV2lkdGggPSBsaW5lV2lkdGggLyAyO1xuICAgICAgICAgICAgdmFyIG1pblggPSB4IC0gaGFsZldpZHRoO1xuICAgICAgICAgICAgdmFyIG1pblkgPSB5IC0gaGFsZldpZHRoO1xuICAgICAgICAgICAgdmFyIG1heFggPSB4ICsgd2lkdGggKyBoYWxmV2lkdGg7XG4gICAgICAgICAgICB2YXIgbWF4WSA9IHkgKyBoZWlnaHQgKyBoYWxmV2lkdGg7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHg6IG1pblgsXG4gICAgICAgICAgICAgICAgeTogbWluWSxcbiAgICAgICAgICAgICAgICBtaW5YOiBtaW5YLFxuICAgICAgICAgICAgICAgIG1pblk6IG1pblksXG4gICAgICAgICAgICAgICAgbWF4WDogbWF4WCxcbiAgICAgICAgICAgICAgICBtYXhZOiBtYXhZLFxuICAgICAgICAgICAgICAgIHdpZHRoOiB3aWR0aCArIGxpbmVXaWR0aCxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGhlaWdodCArIGxpbmVXaWR0aCxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICB5OiAwLFxuICAgICAgICAgICAgbWluWDogMCxcbiAgICAgICAgICAgIG1pblk6IDAsXG4gICAgICAgICAgICBtYXhYOiAwLFxuICAgICAgICAgICAgbWF4WTogMCxcbiAgICAgICAgICAgIHdpZHRoOiAwLFxuICAgICAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICB9O1xuICAgIH07XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5pc0ZpbGwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMuYXR0cigpLCBmaWxsID0gX2EuZmlsbCwgZmlsbFN0eWxlID0gX2EuZmlsbFN0eWxlO1xuICAgICAgICByZXR1cm4gKGZpbGwgfHwgZmlsbFN0eWxlIHx8IHRoaXMuaXNDbGlwU2hhcGUoKSkgJiYgdGhpcy5jYW5GaWxsO1xuICAgIH07XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5pc1N0cm9rZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcy5hdHRyKCksIHN0cm9rZSA9IF9hLnN0cm9rZSwgc3Ryb2tlU3R5bGUgPSBfYS5zdHJva2VTdHlsZTtcbiAgICAgICAgcmV0dXJuIChzdHJva2UgfHwgc3Ryb2tlU3R5bGUpICYmIHRoaXMuY2FuU3Ryb2tlO1xuICAgIH07XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24gKGNvbnRleHQsIHRhcmdldEF0dHJzKSB7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICBpZiAodGhpcy5nZXQoJ2Rlc3Ryb3llZCcpKSB7XG4gICAgICAgICAgICBpZiAoZWwpIHtcbiAgICAgICAgICAgICAgICBlbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmICghZWwpIHtcbiAgICAgICAgICAgICAgICBjcmVhdGVEb20odGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRDbGlwKHRoaXMsIGNvbnRleHQpO1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVQYXRoKGNvbnRleHQsIHRhcmdldEF0dHJzKTtcbiAgICAgICAgICAgIHRoaXMuc2hhZG93KGNvbnRleHQsIHRhcmdldEF0dHJzKTtcbiAgICAgICAgICAgIHRoaXMuc3Ryb2tlQW5kRmlsbChjb250ZXh0LCB0YXJnZXRBdHRycyk7XG4gICAgICAgICAgICB0aGlzLnRyYW5zZm9ybSh0YXJnZXRBdHRycyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiDnu5jliLblm77lvaLnmoTot6/lvoRcbiAgICAgKiBAcGFyYW0ge0RlZnN9IGNvbnRleHQg5LiK5LiL5paHXG4gICAgICogQHBhcmFtIHtTaGFwZUF0dHJzfSB0YXJnZXRBdHRycyDmuLLmn5PnmoTnm67moIflsZ7mgKdcbiAgICAgKi9cbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLmNyZWF0ZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCwgdGFyZ2V0QXR0cnMpIHsgfTtcbiAgICAvLyBzdHJva2UgYW5kIGZpbGxcbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLnN0cm9rZUFuZEZpbGwgPSBmdW5jdGlvbiAoY29udGV4dCwgdGFyZ2V0QXR0cnMpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGFyZ2V0QXR0cnMgfHwgdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBmaWxsID0gYXR0cnMuZmlsbCwgZmlsbFN0eWxlID0gYXR0cnMuZmlsbFN0eWxlLCBzdHJva2UgPSBhdHRycy5zdHJva2UsIHN0cm9rZVN0eWxlID0gYXR0cnMuc3Ryb2tlU3R5bGUsIGZpbGxPcGFjaXR5ID0gYXR0cnMuZmlsbE9wYWNpdHksIHN0cm9rZU9wYWNpdHkgPSBhdHRycy5zdHJva2VPcGFjaXR5LCBsaW5lV2lkdGggPSBhdHRycy5saW5lV2lkdGg7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICBpZiAodGhpcy5jYW5GaWxsKSB7XG4gICAgICAgICAgICAvLyDliJ3mrKHmuLLmn5Plkozmm7TmlrDmuLLmn5PnmoTpgLvovpHmnInmiYDkuI3lkIw6IOWIneasoea4suafk+WAvOS4uuepuuaXtu+8jOmcgOimgeiuvue9ruS4uiBub25l77yM5ZCm5YiZ5bCx5Lya5piv6buR6Imy77yM6ICM5pu05paw5riy5p+T5YiZ5LiN6ZyA6KaBXG4gICAgICAgICAgICBpZiAoIXRhcmdldEF0dHJzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0Q29sb3IoY29udGV4dCwgJ2ZpbGwnLCBmaWxsIHx8IGZpbGxTdHlsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICgnZmlsbCcgaW4gYXR0cnMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXRDb2xvcihjb250ZXh0LCAnZmlsbCcsIGZpbGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoJ2ZpbGxTdHlsZScgaW4gYXR0cnMpIHtcbiAgICAgICAgICAgICAgICAvLyBjb21wYXRpYmxlIHdpdGggZmlsbFN0eWxlXG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0Q29sb3IoY29udGV4dCwgJ2ZpbGwnLCBmaWxsU3R5bGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGZpbGxPcGFjaXR5KSB7XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKFNWR19BVFRSX01BUFsnZmlsbE9wYWNpdHknXSwgZmlsbE9wYWNpdHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmNhblN0cm9rZSAmJiBsaW5lV2lkdGggPiAwKSB7XG4gICAgICAgICAgICBpZiAoIXRhcmdldEF0dHJzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0Q29sb3IoY29udGV4dCwgJ3N0cm9rZScsIHN0cm9rZSB8fCBzdHJva2VTdHlsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICgnc3Ryb2tlJyBpbiBhdHRycykge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NldENvbG9yKGNvbnRleHQsICdzdHJva2UnLCBzdHJva2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoJ3N0cm9rZVN0eWxlJyBpbiBhdHRycykge1xuICAgICAgICAgICAgICAgIC8vIGNvbXBhdGlibGUgd2l0aCBzdHJva2VTdHlsZVxuICAgICAgICAgICAgICAgIHRoaXMuX3NldENvbG9yKGNvbnRleHQsICdzdHJva2UnLCBzdHJva2VTdHlsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3Ryb2tlT3BhY2l0eSkge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShTVkdfQVRUUl9NQVBbJ3N0cm9rZU9wYWNpdHknXSwgc3Ryb2tlT3BhY2l0eSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGluZVdpZHRoKSB7XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKFNWR19BVFRSX01BUFsnbGluZVdpZHRoJ10sIGxpbmVXaWR0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFNoYXBlQmFzZS5wcm90b3R5cGUuX3NldENvbG9yID0gZnVuY3Rpb24gKGNvbnRleHQsIGF0dHIsIHZhbHVlKSB7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICAvLyBuZWVkIHRvIHNldCBgbm9uZWAgdG8gYXZvaWQgZGVmYXVsdCB2YWx1ZVxuICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKFNWR19BVFRSX01BUFthdHRyXSwgJ25vbmUnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YWx1ZSA9IHZhbHVlLnRyaW0oKTtcbiAgICAgICAgaWYgKC9eW3IsUixMLGxdezF9W1xcc10qXFwoLy50ZXN0KHZhbHVlKSkge1xuICAgICAgICAgICAgdmFyIGlkID0gY29udGV4dC5maW5kKCdncmFkaWVudCcsIHZhbHVlKTtcbiAgICAgICAgICAgIGlmICghaWQpIHtcbiAgICAgICAgICAgICAgICBpZCA9IGNvbnRleHQuYWRkR3JhZGllbnQodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKFNWR19BVFRSX01BUFthdHRyXSwgXCJ1cmwoI1wiICsgaWQgKyBcIilcIik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoL15bcCxQXXsxfVtcXHNdKlxcKC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhciBpZCA9IGNvbnRleHQuZmluZCgncGF0dGVybicsIHZhbHVlKTtcbiAgICAgICAgICAgIGlmICghaWQpIHtcbiAgICAgICAgICAgICAgICBpZCA9IGNvbnRleHQuYWRkUGF0dGVybih2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoU1ZHX0FUVFJfTUFQW2F0dHJdLCBcInVybCgjXCIgKyBpZCArIFwiKVwiKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShTVkdfQVRUUl9NQVBbYXR0cl0sIHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS5zaGFkb3cgPSBmdW5jdGlvbiAoY29udGV4dCwgdGFyZ2V0QXR0cnMpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBfYSA9IHRhcmdldEF0dHJzIHx8IGF0dHJzLCBzaGFkb3dPZmZzZXRYID0gX2Euc2hhZG93T2Zmc2V0WCwgc2hhZG93T2Zmc2V0WSA9IF9hLnNoYWRvd09mZnNldFksIHNoYWRvd0JsdXIgPSBfYS5zaGFkb3dCbHVyLCBzaGFkb3dDb2xvciA9IF9hLnNoYWRvd0NvbG9yO1xuICAgICAgICBpZiAoc2hhZG93T2Zmc2V0WCB8fCBzaGFkb3dPZmZzZXRZIHx8IHNoYWRvd0JsdXIgfHwgc2hhZG93Q29sb3IpIHtcbiAgICAgICAgICAgIHNldFNoYWRvdyh0aGlzLCBjb250ZXh0KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU2hhcGVCYXNlLnByb3RvdHlwZS50cmFuc2Zvcm0gPSBmdW5jdGlvbiAodGFyZ2V0QXR0cnMpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBtYXRyaXggPSAodGFyZ2V0QXR0cnMgfHwgYXR0cnMpLm1hdHJpeDtcbiAgICAgICAgaWYgKG1hdHJpeCkge1xuICAgICAgICAgICAgc2V0VHJhbnNmb3JtKHRoaXMpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLmlzSW5TaGFwZSA9IGZ1bmN0aW9uIChyZWZYLCByZWZZKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzUG9pbnRJblBhdGgocmVmWCwgcmVmWSk7XG4gICAgfTtcbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLmlzUG9pbnRJblBhdGggPSBmdW5jdGlvbiAocmVmWCwgcmVmWSkge1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgdmFyIGNhbnZhcyA9IHRoaXMuZ2V0KCdjYW52YXMnKTtcbiAgICAgICAgdmFyIGJib3ggPSBjYW52YXMuZ2V0KCdlbCcpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICB2YXIgY2xpZW50WCA9IHJlZlggKyBiYm94LmxlZnQ7XG4gICAgICAgIHZhciBjbGllbnRZID0gcmVmWSArIGJib3gudG9wO1xuICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoY2xpZW50WCwgY2xpZW50WSk7XG4gICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuaXNFcXVhbE5vZGUoZWwpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDojrflj5bnur/mi77lj5bnmoTlrr3luqZcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSDnur/nmoTmi77lj5blrr3luqZcbiAgICAgKi9cbiAgICBTaGFwZUJhc2UucHJvdG90eXBlLmdldEhpdExpbmVXaWR0aCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcy5hdHRycywgbGluZVdpZHRoID0gX2EubGluZVdpZHRoLCBsaW5lQXBwZW5kV2lkdGggPSBfYS5saW5lQXBwZW5kV2lkdGg7XG4gICAgICAgIGlmICh0aGlzLmlzU3Ryb2tlKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBsaW5lV2lkdGggKyBsaW5lQXBwZW5kV2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfTtcbiAgICByZXR1cm4gU2hhcGVCYXNlO1xufShBYnN0cmFjdFNoYXBlKSk7XG5leHBvcnQgZGVmYXVsdCBTaGFwZUJhc2U7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1iYXNlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/base.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/circle.js":
/*!*************************************************************************!*\
!*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/circle.js ***!
\*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constant */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/base.js\");\n/**\n * @fileoverview circle\n * @author dengfuping_develop@163.com\n */\n\n\n\n\nvar Circle = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Circle, _super);\n function Circle() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'circle';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Circle.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, r: 0 });\n };\n Circle.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n // 圆和椭圆的点坐标属性不是 x, y,而是 cx, cy\n if (attr === 'x' || attr === 'y') {\n el.setAttribute(\"c\" + attr, value);\n }\n else if (_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n };\n return Circle;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Circle);\n//# sourceMappingURL=circle.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9zaGFwZS9jaXJjbGUuanM/OTk1ZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDNEM7QUFDVjtBQUNTO0FBQ1o7QUFDL0I7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUcsV0FBVyxtQkFBbUI7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsc0RBQVk7QUFDakMsZ0NBQWdDLHNEQUFZO0FBQzVDO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQVM7QUFDSSxxRUFBTSxFQUFDO0FBQ3RCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXN2Z0AwLjUuNkBAYW50di9nLXN2Zy9lc20vc2hhcGUvY2lyY2xlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IGNpcmNsZVxuICogQGF1dGhvciBkZW5nZnVwaW5nX2RldmVsb3BAMTYzLmNvbVxuICovXG5pbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBlYWNoIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBTVkdfQVRUUl9NQVAgfSBmcm9tICcuLi9jb25zdGFudCc7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4vYmFzZSc7XG52YXIgQ2lyY2xlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhDaXJjbGUsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQ2lyY2xlKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMudHlwZSA9ICdjaXJjbGUnO1xuICAgICAgICBfdGhpcy5jYW5GaWxsID0gdHJ1ZTtcbiAgICAgICAgX3RoaXMuY2FuU3Ryb2tlID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBDaXJjbGUucHJvdG90eXBlLmdldERlZmF1bHRBdHRycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gX3N1cGVyLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMuY2FsbCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBhdHRycyksIHsgeDogMCwgeTogMCwgcjogMCB9KTtcbiAgICB9O1xuICAgIENpcmNsZS5wcm90b3R5cGUuY3JlYXRlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0LCB0YXJnZXRBdHRycykge1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIGVhY2godGFyZ2V0QXR0cnMgfHwgYXR0cnMsIGZ1bmN0aW9uICh2YWx1ZSwgYXR0cikge1xuICAgICAgICAgICAgLy8g5ZyG5ZKM5qSt5ZyG55qE54K55Z2Q5qCH5bGe5oCn5LiN5pivIHgsIHnvvIzogIzmmK8gY3gsIGN5XG4gICAgICAgICAgICBpZiAoYXR0ciA9PT0gJ3gnIHx8IGF0dHIgPT09ICd5Jykge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShcImNcIiArIGF0dHIsIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKFNWR19BVFRSX01BUFthdHRyXSkge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShTVkdfQVRUUl9NQVBbYXR0cl0sIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICByZXR1cm4gQ2lyY2xlO1xufShTaGFwZUJhc2UpKTtcbmV4cG9ydCBkZWZhdWx0IENpcmNsZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNpcmNsZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/circle.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/dom.js":
/*!**********************************************************************!*\
!*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/dom.js ***!
\**********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constant */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/base.js\");\n/**\n * @fileoverview dom\n * @author dengfuping_develop@163.com\n */\n\n\n\n\nvar Dom = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Dom, _super);\n function Dom() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'dom';\n _this.canFill = false;\n _this.canStroke = false;\n return _this;\n }\n Dom.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n if (_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n if (typeof attrs['html'] === 'function') {\n var element = attrs['html'].call(this, attrs);\n if (element instanceof Element || element instanceof HTMLDocument) {\n var children = el.childNodes;\n for (var i = children.length - 1; i >= 0; i--) {\n el.removeChild(children[i]);\n }\n el.appendChild(element); // append to el if it's an element\n }\n else {\n el.innerHTML = element; // set innerHTML\n }\n }\n else {\n el.innerHTML = attrs['html']; // set innerHTML\n }\n };\n return Dom;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Dom);\n//# sourceMappingURL=dom.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9zaGFwZS9kb20uanM/N2YwMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDa0M7QUFDQTtBQUNTO0FBQ1o7QUFDL0I7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1osZ0JBQWdCLHNEQUFZO0FBQzVCLGdDQUFnQyxzREFBWTtBQUM1QztBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUFpRCxRQUFRO0FBQ3pEO0FBQ0E7QUFDQSx3Q0FBd0M7QUFDeEM7QUFDQTtBQUNBLHVDQUF1QztBQUN2QztBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7QUFDekM7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFTO0FBQ0ksa0VBQUcsRUFBQztBQUNuQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1zdmdAMC41LjZAQGFudHYvZy1zdmcvZXNtL3NoYXBlL2RvbS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVvdmVydmlldyBkb21cbiAqIEBhdXRob3IgZGVuZ2Z1cGluZ19kZXZlbG9wQDE2My5jb21cbiAqL1xuaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBlYWNoIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBTVkdfQVRUUl9NQVAgfSBmcm9tICcuLi9jb25zdGFudCc7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4vYmFzZSc7XG52YXIgRG9tID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhEb20sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gRG9tKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMudHlwZSA9ICdkb20nO1xuICAgICAgICBfdGhpcy5jYW5GaWxsID0gZmFsc2U7XG4gICAgICAgIF90aGlzLmNhblN0cm9rZSA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIERvbS5wcm90b3R5cGUuY3JlYXRlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0LCB0YXJnZXRBdHRycykge1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIGVhY2godGFyZ2V0QXR0cnMgfHwgYXR0cnMsIGZ1bmN0aW9uICh2YWx1ZSwgYXR0cikge1xuICAgICAgICAgICAgaWYgKFNWR19BVFRSX01BUFthdHRyXSkge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShTVkdfQVRUUl9NQVBbYXR0cl0sIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0eXBlb2YgYXR0cnNbJ2h0bWwnXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBhdHRyc1snaHRtbCddLmNhbGwodGhpcywgYXR0cnMpO1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBFbGVtZW50IHx8IGVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRG9jdW1lbnQpIHtcbiAgICAgICAgICAgICAgICB2YXIgY2hpbGRyZW4gPSBlbC5jaGlsZE5vZGVzO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSBjaGlsZHJlbi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgICAgICAgICBlbC5yZW1vdmVDaGlsZChjaGlsZHJlbltpXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsLmFwcGVuZENoaWxkKGVsZW1lbnQpOyAvLyBhcHBlbmQgdG8gZWwgaWYgaXQncyBhbiBlbGVtZW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBlbC5pbm5lckhUTUwgPSBlbGVtZW50OyAvLyBzZXQgaW5uZXJIVE1MXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBlbC5pbm5lckhUTUwgPSBhdHRyc1snaHRtbCddOyAvLyBzZXQgaW5uZXJIVE1MXG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBEb207XG59KFNoYXBlQmFzZSkpO1xuZXhwb3J0IGRlZmF1bHQgRG9tO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZG9tLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/dom.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/ellipse.js":
/*!**************************************************************************!*\
!*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/ellipse.js ***!
\**************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constant */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/base.js\");\n/**\n * @fileoverview ellipse\n * @author dengfuping_develop@163.com\n */\n\n\n\n\nvar Ellipse = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Ellipse, _super);\n function Ellipse() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'ellipse';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Ellipse.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, rx: 0, ry: 0 });\n };\n Ellipse.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n // 圆和椭圆的点坐标属性不是 x, y,而是 cx, cy\n if (attr === 'x' || attr === 'y') {\n el.setAttribute(\"c\" + attr, value);\n }\n else if (_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n };\n return Ellipse;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Ellipse);\n//# sourceMappingURL=ellipse.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9zaGFwZS9lbGxpcHNlLmpzPzM1OTgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQzRDO0FBQ1Y7QUFDUztBQUNaO0FBQy9CO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHLFdBQVcsMkJBQTJCO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLHNEQUFZO0FBQ2pDLGdDQUFnQyxzREFBWTtBQUM1QztBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFTO0FBQ0ksc0VBQU8sRUFBQztBQUN2QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1zdmdAMC41LjZAQGFudHYvZy1zdmcvZXNtL3NoYXBlL2VsbGlwc2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcgZWxsaXBzZVxuICogQGF1dGhvciBkZW5nZnVwaW5nX2RldmVsb3BAMTYzLmNvbVxuICovXG5pbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBlYWNoIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBTVkdfQVRUUl9NQVAgfSBmcm9tICcuLi9jb25zdGFudCc7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4vYmFzZSc7XG52YXIgRWxsaXBzZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoRWxsaXBzZSwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBFbGxpcHNlKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMudHlwZSA9ICdlbGxpcHNlJztcbiAgICAgICAgX3RoaXMuY2FuRmlsbCA9IHRydWU7XG4gICAgICAgIF90aGlzLmNhblN0cm9rZSA9IHRydWU7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgRWxsaXBzZS5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXR0cnMgPSBfc3VwZXIucHJvdG90eXBlLmdldERlZmF1bHRBdHRycy5jYWxsKHRoaXMpO1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGF0dHJzKSwgeyB4OiAwLCB5OiAwLCByeDogMCwgcnk6IDAgfSk7XG4gICAgfTtcbiAgICBFbGxpcHNlLnByb3RvdHlwZS5jcmVhdGVQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQsIHRhcmdldEF0dHJzKSB7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cigpO1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgZWFjaCh0YXJnZXRBdHRycyB8fCBhdHRycywgZnVuY3Rpb24gKHZhbHVlLCBhdHRyKSB7XG4gICAgICAgICAgICAvLyDlnIblkozmpK3lnIbnmoTngrnlnZDmoIflsZ7mgKfkuI3mmK8geCwgee+8jOiAjOaYryBjeCwgY3lcbiAgICAgICAgICAgIGlmIChhdHRyID09PSAneCcgfHwgYXR0ciA9PT0gJ3knKSB7XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKFwiY1wiICsgYXR0ciwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoU1ZHX0FUVFJfTUFQW2F0dHJdKSB7XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKFNWR19BVFRSX01BUFthdHRyXSwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIHJldHVybiBFbGxpcHNlO1xufShTaGFwZUJhc2UpKTtcbmV4cG9ydCBkZWZhdWx0IEVsbGlwc2U7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1lbGxpcHNlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/ellipse.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/image.js":
/*!************************************************************************!*\
!*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/image.js ***!
\************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constant */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/base.js\");\n/**\n * @fileoverview image\n * @author dengfuping_develop@163.com\n */\n\n\n\n\nvar Image = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Image, _super);\n function Image() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'image';\n _this.canFill = false;\n _this.canStroke = false;\n return _this;\n }\n Image.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, width: 0, height: 0 });\n };\n Image.prototype.createPath = function (context, targetAttrs) {\n var _this = this;\n var attrs = this.attr();\n var el = this.get('el');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n if (attr === 'img') {\n _this._setImage(attrs.img);\n }\n else if (_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n };\n Image.prototype.setAttr = function (name, value) {\n this.attrs[name] = value;\n if (name === 'img') {\n this._setImage(value);\n }\n };\n Image.prototype._setImage = function (img) {\n var attrs = this.attr();\n var el = this.get('el');\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(img)) {\n el.setAttribute('href', img);\n }\n else if (img instanceof window.Image) {\n if (!attrs.width) {\n el.setAttribute('width', img.width);\n this.attr('width', img.width);\n }\n if (!attrs.height) {\n el.setAttribute('height', img.height);\n this.attr('height', img.height);\n }\n el.setAttribute('href', img.src);\n }\n else if (img instanceof HTMLElement && Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(img.nodeName) && img.nodeName.toUpperCase() === 'CANVAS') {\n // @ts-ignore\n el.setAttribute('href', img.toDataURL());\n }\n else if (img instanceof ImageData) {\n var canvas = document.createElement('canvas');\n canvas.setAttribute('width', \"\" + img.width);\n canvas.setAttribute('height', \"\" + img.height);\n canvas.getContext('2d').putImageData(img, 0, 0);\n if (!attrs.width) {\n el.setAttribute('width', \"\" + img.width);\n this.attr('width', img.width);\n }\n if (!attrs.height) {\n el.setAttribute('height', \"\" + img.height);\n this.attr('height', img.height);\n }\n el.setAttribute('href', canvas.toDataURL());\n }\n };\n return Image;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Image);\n//# sourceMappingURL=image.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9zaGFwZS9pbWFnZS5qcz9mMGQ0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUM0QztBQUNBO0FBQ0Q7QUFDWjtBQUMvQjtBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRyxXQUFXLGtDQUFrQztBQUNoRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixzREFBWTtBQUNqQyxnQ0FBZ0Msc0RBQVk7QUFDNUM7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDJEQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0NBQStDLDJEQUFRO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQVM7QUFDSSxvRUFBSyxFQUFDO0FBQ3JCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXN2Z0AwLjUuNkBAYW50di9nLXN2Zy9lc20vc2hhcGUvaW1hZ2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcgaW1hZ2VcbiAqIEBhdXRob3IgZGVuZ2Z1cGluZ19kZXZlbG9wQDE2My5jb21cbiAqL1xuaW1wb3J0IHsgX19hc3NpZ24sIF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgZWFjaCwgaXNTdHJpbmcgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IFNWR19BVFRSX01BUCB9IGZyb20gJy4uL2NvbnN0YW50JztcbmltcG9ydCBTaGFwZUJhc2UgZnJvbSAnLi9iYXNlJztcbnZhciBJbWFnZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoSW1hZ2UsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gSW1hZ2UoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy50eXBlID0gJ2ltYWdlJztcbiAgICAgICAgX3RoaXMuY2FuRmlsbCA9IGZhbHNlO1xuICAgICAgICBfdGhpcy5jYW5TdHJva2UgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBJbWFnZS5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXR0cnMgPSBfc3VwZXIucHJvdG90eXBlLmdldERlZmF1bHRBdHRycy5jYWxsKHRoaXMpO1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGF0dHJzKSwgeyB4OiAwLCB5OiAwLCB3aWR0aDogMCwgaGVpZ2h0OiAwIH0pO1xuICAgIH07XG4gICAgSW1hZ2UucHJvdG90eXBlLmNyZWF0ZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCwgdGFyZ2V0QXR0cnMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICBlYWNoKHRhcmdldEF0dHJzIHx8IGF0dHJzLCBmdW5jdGlvbiAodmFsdWUsIGF0dHIpIHtcbiAgICAgICAgICAgIGlmIChhdHRyID09PSAnaW1nJykge1xuICAgICAgICAgICAgICAgIF90aGlzLl9zZXRJbWFnZShhdHRycy5pbWcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoU1ZHX0FUVFJfTUFQW2F0dHJdKSB7XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKFNWR19BVFRSX01BUFthdHRyXSwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIEltYWdlLnByb3RvdHlwZS5zZXRBdHRyID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIHRoaXMuYXR0cnNbbmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgaWYgKG5hbWUgPT09ICdpbWcnKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRJbWFnZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEltYWdlLnByb3RvdHlwZS5fc2V0SW1hZ2UgPSBmdW5jdGlvbiAoaW1nKSB7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cigpO1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgaWYgKGlzU3RyaW5nKGltZykpIHtcbiAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnaHJlZicsIGltZyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaW1nIGluc3RhbmNlb2Ygd2luZG93LkltYWdlKSB7XG4gICAgICAgICAgICBpZiAoIWF0dHJzLndpZHRoKSB7XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCd3aWR0aCcsIGltZy53aWR0aCk7XG4gICAgICAgICAgICAgICAgdGhpcy5hdHRyKCd3aWR0aCcsIGltZy53aWR0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWF0dHJzLmhlaWdodCkge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgaW1nLmhlaWdodCk7XG4gICAgICAgICAgICAgICAgdGhpcy5hdHRyKCdoZWlnaHQnLCBpbWcuaGVpZ2h0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnaHJlZicsIGltZy5zcmMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGltZyBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmIGlzU3RyaW5nKGltZy5ub2RlTmFtZSkgJiYgaW1nLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCkgPT09ICdDQU5WQVMnKSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBpbWcudG9EYXRhVVJMKCkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGltZyBpbnN0YW5jZW9mIEltYWdlRGF0YSkge1xuICAgICAgICAgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgICAgICAgY2FudmFzLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCBcIlwiICsgaW1nLndpZHRoKTtcbiAgICAgICAgICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsIFwiXCIgKyBpbWcuaGVpZ2h0KTtcbiAgICAgICAgICAgIGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpLnB1dEltYWdlRGF0YShpbWcsIDAsIDApO1xuICAgICAgICAgICAgaWYgKCFhdHRycy53aWR0aCkge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCBcIlwiICsgaW1nLndpZHRoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmF0dHIoJ3dpZHRoJywgaW1nLndpZHRoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghYXR0cnMuaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdoZWlnaHQnLCBcIlwiICsgaW1nLmhlaWdodCk7XG4gICAgICAgICAgICAgICAgdGhpcy5hdHRyKCdoZWlnaHQnLCBpbWcuaGVpZ2h0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnaHJlZicsIGNhbnZhcy50b0RhdGFVUkwoKSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBJbWFnZTtcbn0oU2hhcGVCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBJbWFnZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWltYWdlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/image.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/index.js":
/*!************************************************************************!*\
!*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/index.js ***!
\************************************************************************/
/*! exports provided: Base, Circle, Dom, Ellipse, Image, Line, Marker, Path, Polygon, Polyline, Rect, Text */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/base.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Base\", function() { return _base__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _circle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./circle */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/circle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Circle\", function() { return _circle__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./dom */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/dom.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Dom\", function() { return _dom__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _ellipse__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ellipse */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/ellipse.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Ellipse\", function() { return _ellipse__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _image__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./image */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/image.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Image\", function() { return _image__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./line */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/line.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Line\", function() { return _line__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _marker__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./marker */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/marker/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Marker\", function() { return _marker__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _path__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./path */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/path.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Path\", function() { return _path__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _polygon__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./polygon */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/polygon.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Polygon\", function() { return _polygon__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _polyline__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./polyline */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/polyline.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Polyline\", function() { return _polyline__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _rect__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./rect */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/rect.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Rect\", function() { return _rect__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./text */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/text.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Text\", function() { return _text__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9zaGFwZS9pbmRleC5qcz9hMzM4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXlDO0FBQ0k7QUFDTjtBQUNRO0FBQ0o7QUFDRjtBQUNJO0FBQ0o7QUFDTTtBQUNFO0FBQ1I7QUFDQTtBQUN6QyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1zdmdAMC41LjZAQGFudHYvZy1zdmcvZXNtL3NoYXBlL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZGVmYXVsdCBhcyBCYXNlIH0gZnJvbSAnLi9iYXNlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQ2lyY2xlIH0gZnJvbSAnLi9jaXJjbGUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBEb20gfSBmcm9tICcuL2RvbSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEVsbGlwc2UgfSBmcm9tICcuL2VsbGlwc2UnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBJbWFnZSB9IGZyb20gJy4vaW1hZ2UnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBMaW5lIH0gZnJvbSAnLi9saW5lJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTWFya2VyIH0gZnJvbSAnLi9tYXJrZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBQYXRoIH0gZnJvbSAnLi9wYXRoJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUG9seWdvbiB9IGZyb20gJy4vcG9seWdvbic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFBvbHlsaW5lIH0gZnJvbSAnLi9wb2x5bGluZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFJlY3QgfSBmcm9tICcuL3JlY3QnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBUZXh0IH0gZnJvbSAnLi90ZXh0Jztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/line.js":
/*!***********************************************************************!*\
!*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/line.js ***!
\***********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constant */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/base.js\");\n\n/**\n * @fileoverview line\n * @author dengfuping_develop@163.com\n */\n\n\n\n\nvar Line = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Line, _super);\n function Line() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'line';\n _this.canFill = false;\n _this.canStroke = true;\n return _this;\n }\n Line.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x1: 0, y1: 0, x2: 0, y2: 0, startArrow: false, endArrow: false });\n };\n Line.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n if (attr === 'startArrow' || attr === 'endArrow') {\n if (value) {\n var id = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isObject\"])(value)\n ? context.addArrow(attrs, _constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr])\n : context.getDefaultArrow(attrs, _constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr]);\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr], \"url(#\" + id + \")\");\n }\n else {\n el.removeAttribute(_constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr]);\n }\n }\n else if (_constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n };\n /**\n * Use math calculation to get length of line\n * @return {number} length\n */\n Line.prototype.getTotalLength = function () {\n var _a = this.attr(), x1 = _a.x1, y1 = _a.y1, x2 = _a.x2, y2 = _a.y2;\n return _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Line\"].length(x1, y1, x2, y2);\n };\n /**\n * Use math calculation to get point according to ratio as same sa Canvas version\n * @param {number} ratio\n * @return {Point} point\n */\n Line.prototype.getPoint = function (ratio) {\n var _a = this.attr(), x1 = _a.x1, y1 = _a.y1, x2 = _a.x2, y2 = _a.y2;\n return _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Line\"].pointAt(x1, y1, x2, y2, ratio);\n };\n return Line;\n}(_base__WEBPACK_IMPORTED_MODULE_4__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Line);\n//# sourceMappingURL=line.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9zaGFwZS9saW5lLmpzPzViMTciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTRDO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ2dEO0FBQ0o7QUFDRDtBQUNaO0FBQy9CO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHLFdBQVcsaUVBQWlFO0FBQy9HO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0E7QUFDQSw2QkFBNkIsMkRBQVE7QUFDckMsa0RBQWtELHNEQUFZO0FBQzlELHlEQUF5RCxzREFBWTtBQUNyRSxvQ0FBb0Msc0RBQVk7QUFDaEQ7QUFDQTtBQUNBLHVDQUF1QyxzREFBWTtBQUNuRDtBQUNBO0FBQ0EscUJBQXFCLHNEQUFZO0FBQ2pDLGdDQUFnQyxzREFBWTtBQUM1QztBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQSxlQUFlLGlEQUFRO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsTUFBTTtBQUN0QjtBQUNBO0FBQ0E7QUFDQSxlQUFlLGlEQUFRO0FBQ3ZCO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQVM7QUFDSSxtRUFBSSxFQUFDO0FBQ3BCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXN2Z0AwLjUuNkBAYW50di9nLXN2Zy9lc20vc2hhcGUvbGluZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduLCBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbi8qKlxuICogQGZpbGVvdmVydmlldyBsaW5lXG4gKiBAYXV0aG9yIGRlbmdmdXBpbmdfZGV2ZWxvcEAxNjMuY29tXG4gKi9cbmltcG9ydCB7IExpbmUgYXMgTGluZVV0aWwgfSBmcm9tICdAYW50di9nLW1hdGgnO1xuaW1wb3J0IHsgZWFjaCwgaXNPYmplY3QgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IFNWR19BVFRSX01BUCB9IGZyb20gJy4uL2NvbnN0YW50JztcbmltcG9ydCBTaGFwZUJhc2UgZnJvbSAnLi9iYXNlJztcbnZhciBMaW5lID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhMaW5lLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIExpbmUoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy50eXBlID0gJ2xpbmUnO1xuICAgICAgICBfdGhpcy5jYW5GaWxsID0gZmFsc2U7XG4gICAgICAgIF90aGlzLmNhblN0cm9rZSA9IHRydWU7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgTGluZS5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXR0cnMgPSBfc3VwZXIucHJvdG90eXBlLmdldERlZmF1bHRBdHRycy5jYWxsKHRoaXMpO1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGF0dHJzKSwgeyB4MTogMCwgeTE6IDAsIHgyOiAwLCB5MjogMCwgc3RhcnRBcnJvdzogZmFsc2UsIGVuZEFycm93OiBmYWxzZSB9KTtcbiAgICB9O1xuICAgIExpbmUucHJvdG90eXBlLmNyZWF0ZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCwgdGFyZ2V0QXR0cnMpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICBlYWNoKHRhcmdldEF0dHJzIHx8IGF0dHJzLCBmdW5jdGlvbiAodmFsdWUsIGF0dHIpIHtcbiAgICAgICAgICAgIGlmIChhdHRyID09PSAnc3RhcnRBcnJvdycgfHwgYXR0ciA9PT0gJ2VuZEFycm93Jykge1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaWQgPSBpc09iamVjdCh2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgID8gY29udGV4dC5hZGRBcnJvdyhhdHRycywgU1ZHX0FUVFJfTUFQW2F0dHJdKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBjb250ZXh0LmdldERlZmF1bHRBcnJvdyhhdHRycywgU1ZHX0FUVFJfTUFQW2F0dHJdKTtcbiAgICAgICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKFNWR19BVFRSX01BUFthdHRyXSwgXCJ1cmwoI1wiICsgaWQgKyBcIilcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoU1ZHX0FUVFJfTUFQW2F0dHJdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChTVkdfQVRUUl9NQVBbYXR0cl0pIHtcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoU1ZHX0FUVFJfTUFQW2F0dHJdLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogVXNlIG1hdGggY2FsY3VsYXRpb24gdG8gZ2V0IGxlbmd0aCBvZiBsaW5lXG4gICAgICogQHJldHVybiB7bnVtYmVyfSBsZW5ndGhcbiAgICAgKi9cbiAgICBMaW5lLnByb3RvdHlwZS5nZXRUb3RhbExlbmd0aCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcy5hdHRyKCksIHgxID0gX2EueDEsIHkxID0gX2EueTEsIHgyID0gX2EueDIsIHkyID0gX2EueTI7XG4gICAgICAgIHJldHVybiBMaW5lVXRpbC5sZW5ndGgoeDEsIHkxLCB4MiwgeTIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogVXNlIG1hdGggY2FsY3VsYXRpb24gdG8gZ2V0IHBvaW50IGFjY29yZGluZyB0byByYXRpbyBhcyBzYW1lIHNhIENhbnZhcyB2ZXJzaW9uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHJhdGlvXG4gICAgICogQHJldHVybiB7UG9pbnR9IHBvaW50XG4gICAgICovXG4gICAgTGluZS5wcm90b3R5cGUuZ2V0UG9pbnQgPSBmdW5jdGlvbiAocmF0aW8pIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcy5hdHRyKCksIHgxID0gX2EueDEsIHkxID0gX2EueTEsIHgyID0gX2EueDIsIHkyID0gX2EueTI7XG4gICAgICAgIHJldHVybiBMaW5lVXRpbC5wb2ludEF0KHgxLCB5MSwgeDIsIHkyLCByYXRpbyk7XG4gICAgfTtcbiAgICByZXR1cm4gTGluZTtcbn0oU2hhcGVCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBMaW5lO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bGluZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/line.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/marker/index.js":
/*!*******************************************************************************!*\
!*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/marker/index.js ***!
\*******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../base */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/base.js\");\n/* harmony import */ var _symbols__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./symbols */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/marker/symbols.js\");\n/**\n * @fileoverview marker\n * @author dengfuping_develop@163.com\n */\n\n\n\n\nvar Marker = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Marker, _super);\n function Marker() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'marker';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Marker.prototype.createPath = function (context) {\n var el = this.get('el');\n el.setAttribute('d', this._assembleMarker());\n };\n Marker.prototype._assembleMarker = function () {\n var d = this._getPath();\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(d)) {\n return d\n .map(function (path) {\n return path.join(' ');\n })\n .join('');\n }\n return d;\n };\n Marker.prototype._getPath = function () {\n var attrs = this.attr();\n var x = attrs.x, y = attrs.y;\n // 兼容 r 和 radius 两种写法,推荐使用 r\n var r = attrs.r || attrs.radius;\n var symbol = attrs.symbol || 'circle';\n var method;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(symbol)) {\n method = symbol;\n }\n else {\n method = _symbols__WEBPACK_IMPORTED_MODULE_3__[\"default\"].get(symbol);\n }\n if (!method) {\n console.warn(method + \" symbol is not exist.\");\n return null;\n }\n return method(x, y, r);\n };\n // 作为其静态属性\n Marker.symbolsFactory = _symbols__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\n return Marker;\n}(_base__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Marker);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9zaGFwZS9tYXJrZXIvaW5kZXguanM/MWY0ZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDa0M7QUFDZTtBQUNqQjtBQUNPO0FBQ3ZDO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSwwREFBTztBQUNuQjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksNkRBQVU7QUFDdEI7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLGdEQUFjO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsZ0RBQWM7QUFDMUM7QUFDQSxDQUFDLENBQUMsNkNBQVM7QUFDSSxxRUFBTSxFQUFDO0FBQ3RCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXN2Z0AwLjUuNkBAYW50di9nLXN2Zy9lc20vc2hhcGUvbWFya2VyL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IG1hcmtlclxuICogQGF1dGhvciBkZW5nZnVwaW5nX2RldmVsb3BAMTYzLmNvbVxuICovXG5pbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGlzQXJyYXksIGlzRnVuY3Rpb24gfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBTaGFwZUJhc2UgZnJvbSAnLi4vYmFzZSc7XG5pbXBvcnQgc3ltYm9sc0ZhY3RvcnkgZnJvbSAnLi9zeW1ib2xzJztcbnZhciBNYXJrZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKE1hcmtlciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBNYXJrZXIoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy50eXBlID0gJ21hcmtlcic7XG4gICAgICAgIF90aGlzLmNhbkZpbGwgPSB0cnVlO1xuICAgICAgICBfdGhpcy5jYW5TdHJva2UgPSB0cnVlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIE1hcmtlci5wcm90b3R5cGUuY3JlYXRlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2QnLCB0aGlzLl9hc3NlbWJsZU1hcmtlcigpKTtcbiAgICB9O1xuICAgIE1hcmtlci5wcm90b3R5cGUuX2Fzc2VtYmxlTWFya2VyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZCA9IHRoaXMuX2dldFBhdGgoKTtcbiAgICAgICAgaWYgKGlzQXJyYXkoZCkpIHtcbiAgICAgICAgICAgIHJldHVybiBkXG4gICAgICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAocGF0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXRoLmpvaW4oJyAnKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmpvaW4oJycpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkO1xuICAgIH07XG4gICAgTWFya2VyLnByb3RvdHlwZS5fZ2V0UGF0aCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciB4ID0gYXR0cnMueCwgeSA9IGF0dHJzLnk7XG4gICAgICAgIC8vIOWFvOWuuSByIOWSjCByYWRpdXMg5Lik56eN5YaZ5rOV77yM5o6o6I2Q5L2/55SoIHJcbiAgICAgICAgdmFyIHIgPSBhdHRycy5yIHx8IGF0dHJzLnJhZGl1cztcbiAgICAgICAgdmFyIHN5bWJvbCA9IGF0dHJzLnN5bWJvbCB8fCAnY2lyY2xlJztcbiAgICAgICAgdmFyIG1ldGhvZDtcbiAgICAgICAgaWYgKGlzRnVuY3Rpb24oc3ltYm9sKSkge1xuICAgICAgICAgICAgbWV0aG9kID0gc3ltYm9sO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbWV0aG9kID0gc3ltYm9sc0ZhY3RvcnkuZ2V0KHN5bWJvbCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFtZXRob2QpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihtZXRob2QgKyBcIiBzeW1ib2wgaXMgbm90IGV4aXN0LlwiKTtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZXRob2QoeCwgeSwgcik7XG4gICAgfTtcbiAgICAvLyDkvZzkuLrlhbbpnZnmgIHlsZ7mgKdcbiAgICBNYXJrZXIuc3ltYm9sc0ZhY3RvcnkgPSBzeW1ib2xzRmFjdG9yeTtcbiAgICByZXR1cm4gTWFya2VyO1xufShTaGFwZUJhc2UpKTtcbmV4cG9ydCBkZWZhdWx0IE1hcmtlcjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/marker/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/marker/symbols.js":
/*!*********************************************************************************!*\
!*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/marker/symbols.js ***!
\*********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar Symbols = {\n // 圆\n circle: function (x, y, r) {\n return [\n ['M', x, y],\n ['m', -r, 0],\n ['a', r, r, 0, 1, 0, r * 2, 0],\n ['a', r, r, 0, 1, 0, -r * 2, 0],\n ];\n },\n // 正方形\n square: function (x, y, r) {\n return [['M', x - r, y - r], ['L', x + r, y - r], ['L', x + r, y + r], ['L', x - r, y + r], ['Z']];\n },\n // 菱形\n diamond: function (x, y, r) {\n return [['M', x - r, y], ['L', x, y - r], ['L', x + r, y], ['L', x, y + r], ['Z']];\n },\n // 三角形\n triangle: function (x, y, r) {\n var diffY = r * Math.sin((1 / 3) * Math.PI);\n return [['M', x - r, y + diffY], ['L', x, y - diffY], ['L', x + r, y + diffY], ['z']];\n },\n // 倒三角形\n triangleDown: function (x, y, r) {\n var diffY = r * Math.sin((1 / 3) * Math.PI);\n return [['M', x - r, y - diffY], ['L', x + r, y - diffY], ['L', x, y + diffY], ['Z']];\n },\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n get: function (type) {\n return Symbols[type];\n },\n register: function (type, func) {\n Symbols[type] = func;\n },\n remove: function (type) {\n delete Symbols[type];\n },\n getAll: function () {\n return Symbols;\n },\n});\n//# sourceMappingURL=symbols.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9zaGFwZS9tYXJrZXIvc3ltYm9scy5qcz85OTdiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDZTtBQUNmO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsQ0FBQyxFQUFDO0FBQ0YiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9zaGFwZS9tYXJrZXIvc3ltYm9scy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBTeW1ib2xzID0ge1xuICAgIC8vIOWchlxuICAgIGNpcmNsZTogZnVuY3Rpb24gKHgsIHksIHIpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIFsnTScsIHgsIHldLFxuICAgICAgICAgICAgWydtJywgLXIsIDBdLFxuICAgICAgICAgICAgWydhJywgciwgciwgMCwgMSwgMCwgciAqIDIsIDBdLFxuICAgICAgICAgICAgWydhJywgciwgciwgMCwgMSwgMCwgLXIgKiAyLCAwXSxcbiAgICAgICAgXTtcbiAgICB9LFxuICAgIC8vIOato+aWueW9olxuICAgIHNxdWFyZTogZnVuY3Rpb24gKHgsIHksIHIpIHtcbiAgICAgICAgcmV0dXJuIFtbJ00nLCB4IC0gciwgeSAtIHJdLCBbJ0wnLCB4ICsgciwgeSAtIHJdLCBbJ0wnLCB4ICsgciwgeSArIHJdLCBbJ0wnLCB4IC0gciwgeSArIHJdLCBbJ1onXV07XG4gICAgfSxcbiAgICAvLyDoj7HlvaJcbiAgICBkaWFtb25kOiBmdW5jdGlvbiAoeCwgeSwgcikge1xuICAgICAgICByZXR1cm4gW1snTScsIHggLSByLCB5XSwgWydMJywgeCwgeSAtIHJdLCBbJ0wnLCB4ICsgciwgeV0sIFsnTCcsIHgsIHkgKyByXSwgWydaJ11dO1xuICAgIH0sXG4gICAgLy8g5LiJ6KeS5b2iXG4gICAgdHJpYW5nbGU6IGZ1bmN0aW9uICh4LCB5LCByKSB7XG4gICAgICAgIHZhciBkaWZmWSA9IHIgKiBNYXRoLnNpbigoMSAvIDMpICogTWF0aC5QSSk7XG4gICAgICAgIHJldHVybiBbWydNJywgeCAtIHIsIHkgKyBkaWZmWV0sIFsnTCcsIHgsIHkgLSBkaWZmWV0sIFsnTCcsIHggKyByLCB5ICsgZGlmZlldLCBbJ3onXV07XG4gICAgfSxcbiAgICAvLyDlgJLkuInop5LlvaJcbiAgICB0cmlhbmdsZURvd246IGZ1bmN0aW9uICh4LCB5LCByKSB7XG4gICAgICAgIHZhciBkaWZmWSA9IHIgKiBNYXRoLnNpbigoMSAvIDMpICogTWF0aC5QSSk7XG4gICAgICAgIHJldHVybiBbWydNJywgeCAtIHIsIHkgLSBkaWZmWV0sIFsnTCcsIHggKyByLCB5IC0gZGlmZlldLCBbJ0wnLCB4LCB5ICsgZGlmZlldLCBbJ1onXV07XG4gICAgfSxcbn07XG5leHBvcnQgZGVmYXVsdCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAodHlwZSkge1xuICAgICAgICByZXR1cm4gU3ltYm9sc1t0eXBlXTtcbiAgICB9LFxuICAgIHJlZ2lzdGVyOiBmdW5jdGlvbiAodHlwZSwgZnVuYykge1xuICAgICAgICBTeW1ib2xzW3R5cGVdID0gZnVuYztcbiAgICB9LFxuICAgIHJlbW92ZTogZnVuY3Rpb24gKHR5cGUpIHtcbiAgICAgICAgZGVsZXRlIFN5bWJvbHNbdHlwZV07XG4gICAgfSxcbiAgICBnZXRBbGw6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFN5bWJvbHM7XG4gICAgfSxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1zeW1ib2xzLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/marker/symbols.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/path.js":
/*!***********************************************************************!*\
!*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/path.js ***!
\***********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constant */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/base.js\");\n\n\n\n\nvar Path = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Path, _super);\n function Path() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'path';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Path.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { startArrow: false, endArrow: false });\n };\n Path.prototype.createPath = function (context, targetAttrs) {\n var _this = this;\n var attrs = this.attr();\n var el = this.get('el');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n if (attr === 'path' && Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(value)) {\n el.setAttribute('d', _this._formatPath(value));\n }\n else if (attr === 'startArrow' || attr === 'endArrow') {\n if (value) {\n var id = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(value)\n ? context.addArrow(attrs, _constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr])\n : context.getDefaultArrow(attrs, _constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr]);\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr], \"url(#\" + id + \")\");\n }\n else {\n el.removeAttribute(_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr]);\n }\n }\n else if (_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n };\n Path.prototype._formatPath = function (value) {\n var newValue = value\n .map(function (path) {\n return path.join(' ');\n })\n .join('');\n if (~newValue.indexOf('NaN')) {\n return '';\n }\n return newValue;\n };\n /**\n * Get total length of path\n * 尽管通过浏览器的 SVGPathElement.getTotalLength() 接口获取的 path 长度,\n * 与 Canvas 版本通过数学计算的方式得到的长度有一些细微差异,但最大误差在个位数像素,精度上可以能接受\n * @return {number} length\n */\n Path.prototype.getTotalLength = function () {\n var el = this.get('el');\n return el ? el.getTotalLength() : null;\n };\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n Path.prototype.getPoint = function (ratio) {\n var el = this.get('el');\n var totalLength = this.getTotalLength();\n // @see https://github.com/antvis/g/issues/634\n if (totalLength === 0) {\n return null;\n }\n var point = el ? el.getPointAtLength(ratio * totalLength) : null;\n return point\n ? {\n x: point.x,\n y: point.y,\n }\n : null;\n };\n return Path;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Path);\n//# sourceMappingURL=path.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9zaGFwZS9wYXRoLmpzP2Y4MDYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE0QztBQUNTO0FBQ1Y7QUFDWjtBQUMvQjtBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRyxXQUFXLHFDQUFxQztBQUNuRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaLG1DQUFtQywwREFBTztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QiwyREFBUTtBQUNyQyxrREFBa0Qsc0RBQVk7QUFDOUQseURBQXlELHNEQUFZO0FBQ3JFLG9DQUFvQyxzREFBWTtBQUNoRDtBQUNBO0FBQ0EsdUNBQXVDLHNEQUFZO0FBQ25EO0FBQ0E7QUFDQSxxQkFBcUIsc0RBQVk7QUFDakMsZ0NBQWdDLHNEQUFZO0FBQzVDO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0QixnQkFBZ0IsTUFBTTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFTO0FBQ0ksbUVBQUksRUFBQztBQUNwQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1zdmdAMC41LjZAQGFudHYvZy1zdmcvZXNtL3NoYXBlL3BhdGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBlYWNoLCBpc0FycmF5LCBpc09iamVjdCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgU1ZHX0FUVFJfTUFQIH0gZnJvbSAnLi4vY29uc3RhbnQnO1xuaW1wb3J0IFNoYXBlQmFzZSBmcm9tICcuL2Jhc2UnO1xudmFyIFBhdGggPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFBhdGgsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gUGF0aCgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnR5cGUgPSAncGF0aCc7XG4gICAgICAgIF90aGlzLmNhbkZpbGwgPSB0cnVlO1xuICAgICAgICBfdGhpcy5jYW5TdHJva2UgPSB0cnVlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIFBhdGgucHJvdG90eXBlLmdldERlZmF1bHRBdHRycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gX3N1cGVyLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMuY2FsbCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBhdHRycyksIHsgc3RhcnRBcnJvdzogZmFsc2UsIGVuZEFycm93OiBmYWxzZSB9KTtcbiAgICB9O1xuICAgIFBhdGgucHJvdG90eXBlLmNyZWF0ZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCwgdGFyZ2V0QXR0cnMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5hdHRyKCk7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICBlYWNoKHRhcmdldEF0dHJzIHx8IGF0dHJzLCBmdW5jdGlvbiAodmFsdWUsIGF0dHIpIHtcbiAgICAgICAgICAgIGlmIChhdHRyID09PSAncGF0aCcgJiYgaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2QnLCBfdGhpcy5fZm9ybWF0UGF0aCh2YWx1ZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoYXR0ciA9PT0gJ3N0YXJ0QXJyb3cnIHx8IGF0dHIgPT09ICdlbmRBcnJvdycpIHtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGlkID0gaXNPYmplY3QodmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGNvbnRleHQuYWRkQXJyb3coYXR0cnMsIFNWR19BVFRSX01BUFthdHRyXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogY29udGV4dC5nZXREZWZhdWx0QXJyb3coYXR0cnMsIFNWR19BVFRSX01BUFthdHRyXSk7XG4gICAgICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShTVkdfQVRUUl9NQVBbYXR0cl0sIFwidXJsKCNcIiArIGlkICsgXCIpXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKFNWR19BVFRSX01BUFthdHRyXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoU1ZHX0FUVFJfTUFQW2F0dHJdKSB7XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKFNWR19BVFRSX01BUFthdHRyXSwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIFBhdGgucHJvdG90eXBlLl9mb3JtYXRQYXRoID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHZhciBuZXdWYWx1ZSA9IHZhbHVlXG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChwYXRoKSB7XG4gICAgICAgICAgICByZXR1cm4gcGF0aC5qb2luKCcgJyk7XG4gICAgICAgIH0pXG4gICAgICAgICAgICAuam9pbignJyk7XG4gICAgICAgIGlmICh+bmV3VmFsdWUuaW5kZXhPZignTmFOJykpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3VmFsdWU7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBHZXQgdG90YWwgbGVuZ3RoIG9mIHBhdGhcbiAgICAgKiDlsL3nrqHpgJrov4fmtY/op4jlmajnmoQgU1ZHUGF0aEVsZW1lbnQuZ2V0VG90YWxMZW5ndGgoKSDmjqXlj6Pojrflj5bnmoQgcGF0aCDplb/luqbvvIxcbiAgICAgKiDkuI4gQ2FudmFzIOeJiOacrOmAmui/h+aVsOWtpuiuoeeul+eahOaWueW8j+W+l+WIsOeahOmVv+W6puacieS4gOS6m+e7huW+ruW3ruW8gu+8jOS9huacgOWkp+ivr+W3ruWcqOS4quS9jeaVsOWDj+e0oO+8jOeyvuW6puS4iuWPr+S7peiDveaOpeWPl1xuICAgICAqIEByZXR1cm4ge251bWJlcn0gbGVuZ3RoXG4gICAgICovXG4gICAgUGF0aC5wcm90b3R5cGUuZ2V0VG90YWxMZW5ndGggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICByZXR1cm4gZWwgPyBlbC5nZXRUb3RhbExlbmd0aCgpIDogbnVsbDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEdldCBwb2ludCBhY2NvcmRpbmcgdG8gcmF0aW9cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcmF0aW9cbiAgICAgKiBAcmV0dXJuIHtQb2ludH0gcG9pbnRcbiAgICAgKi9cbiAgICBQYXRoLnByb3RvdHlwZS5nZXRQb2ludCA9IGZ1bmN0aW9uIChyYXRpbykge1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgdmFyIHRvdGFsTGVuZ3RoID0gdGhpcy5nZXRUb3RhbExlbmd0aCgpO1xuICAgICAgICAvLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnR2aXMvZy9pc3N1ZXMvNjM0XG4gICAgICAgIGlmICh0b3RhbExlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHBvaW50ID0gZWwgPyBlbC5nZXRQb2ludEF0TGVuZ3RoKHJhdGlvICogdG90YWxMZW5ndGgpIDogbnVsbDtcbiAgICAgICAgcmV0dXJuIHBvaW50XG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICB4OiBwb2ludC54LFxuICAgICAgICAgICAgICAgIHk6IHBvaW50LnksXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA6IG51bGw7XG4gICAgfTtcbiAgICByZXR1cm4gUGF0aDtcbn0oU2hhcGVCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBQYXRoO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGF0aC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/path.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/polygon.js":
/*!**************************************************************************!*\
!*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/polygon.js ***!
\**************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constant */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/base.js\");\n\n/**\n * @fileoverview polygon\n * @author dengfuping_develop@163.com\n */\n\n\n\nvar Polygon = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Polygon, _super);\n function Polygon() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'polygon';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Polygon.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n if (attr === 'points' && Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(value) && value.length >= 2) {\n el.setAttribute('points', value.map(function (point) { return point[0] + \",\" + point[1]; }).join(' '));\n }\n else if (_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_2__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n };\n return Polygon;\n}(_base__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Polygon);\n//# sourceMappingURL=polygon.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9zaGFwZS9wb2x5Z29uLmpzPzdiYzciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUMyQztBQUNBO0FBQ1o7QUFDL0I7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1oscUNBQXFDLDBEQUFPO0FBQzVDLHNFQUFzRSxrQ0FBa0MsRUFBRTtBQUMxRztBQUNBLHFCQUFxQixzREFBWTtBQUNqQyxnQ0FBZ0Msc0RBQVk7QUFDNUM7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLENBQUMsQ0FBQyw2Q0FBUztBQUNJLHNFQUFPLEVBQUM7QUFDdkIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9zaGFwZS9wb2x5Z29uLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgcG9seWdvblxuICogQGF1dGhvciBkZW5nZnVwaW5nX2RldmVsb3BAMTYzLmNvbVxuICovXG5pbXBvcnQgeyBlYWNoLCBpc0FycmF5IH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBTVkdfQVRUUl9NQVAgfSBmcm9tICcuLi9jb25zdGFudCc7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4vYmFzZSc7XG52YXIgUG9seWdvbiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoUG9seWdvbiwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBQb2x5Z29uKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMudHlwZSA9ICdwb2x5Z29uJztcbiAgICAgICAgX3RoaXMuY2FuRmlsbCA9IHRydWU7XG4gICAgICAgIF90aGlzLmNhblN0cm9rZSA9IHRydWU7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgUG9seWdvbi5wcm90b3R5cGUuY3JlYXRlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0LCB0YXJnZXRBdHRycykge1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIGVhY2godGFyZ2V0QXR0cnMgfHwgYXR0cnMsIGZ1bmN0aW9uICh2YWx1ZSwgYXR0cikge1xuICAgICAgICAgICAgaWYgKGF0dHIgPT09ICdwb2ludHMnICYmIGlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+PSAyKSB7XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdwb2ludHMnLCB2YWx1ZS5tYXAoZnVuY3Rpb24gKHBvaW50KSB7IHJldHVybiBwb2ludFswXSArIFwiLFwiICsgcG9pbnRbMV07IH0pLmpvaW4oJyAnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChTVkdfQVRUUl9NQVBbYXR0cl0pIHtcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoU1ZHX0FUVFJfTUFQW2F0dHJdLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgcmV0dXJuIFBvbHlnb247XG59KFNoYXBlQmFzZSkpO1xuZXhwb3J0IGRlZmF1bHQgUG9seWdvbjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBvbHlnb24uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/polygon.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/polyline.js":
/*!***************************************************************************!*\
!*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/polyline.js ***!
\***************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-math */ \"./node_modules/_@antv_g-math@0.1.7@@antv/g-math/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constant */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/base.js\");\n\n\n\n\n\n\nvar Polyline = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Polyline, _super);\n function Polyline() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'polyline';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Polyline.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { startArrow: false, endArrow: false });\n };\n // 更新属性时,检测是否更改了 points\n Polyline.prototype.onAttrChange = function (name, value, originValue) {\n _super.prototype.onAttrChange.call(this, name, value, originValue);\n if (['points'].indexOf(name) !== -1) {\n this._resetCache();\n }\n };\n Polyline.prototype._resetCache = function () {\n this.set('totalLength', null);\n this.set('tCache', null);\n };\n Polyline.prototype.createPath = function (context, targetAttrs) {\n var attrs = this.attr();\n var el = this.get('el');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n if (attr === 'points' && Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isArray\"])(value) && value.length >= 2) {\n el.setAttribute('points', value.map(function (point) { return point[0] + \",\" + point[1]; }).join(' '));\n }\n else if (_constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n };\n /**\n * Get length of polyline\n * @return {number} length\n */\n Polyline.prototype.getTotalLength = function () {\n var points = this.attr().points;\n // get totalLength from cache\n var totalLength = this.get('totalLength');\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNil\"])(totalLength)) {\n return totalLength;\n }\n this.set('totalLength', _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Polyline\"].length(points));\n return this.get('totalLength');\n };\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n Polyline.prototype.getPoint = function (ratio) {\n var points = this.attr().points;\n // get tCache from cache\n var tCache = this.get('tCache');\n if (!tCache) {\n this._setTcache();\n tCache = this.get('tCache');\n }\n var subt;\n var index;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(tCache, function (v, i) {\n if (ratio >= v[0] && ratio <= v[1]) {\n subt = (ratio - v[0]) / (v[1] - v[0]);\n index = i;\n }\n });\n return _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Line\"].pointAt(points[index][0], points[index][1], points[index + 1][0], points[index + 1][1], subt);\n };\n Polyline.prototype._setTcache = function () {\n var points = this.attr().points;\n if (!points || points.length === 0) {\n return;\n }\n var totalLength = this.getTotalLength();\n if (totalLength <= 0) {\n return;\n }\n var tempLength = 0;\n var tCache = [];\n var segmentT;\n var segmentL;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"each\"])(points, function (p, i) {\n if (points[i + 1]) {\n segmentT = [];\n segmentT[0] = tempLength / totalLength;\n segmentL = _antv_g_math__WEBPACK_IMPORTED_MODULE_1__[\"Line\"].length(p[0], p[1], points[i + 1][0], points[i + 1][1]);\n tempLength += segmentL;\n segmentT[1] = tempLength / totalLength;\n tCache.push(segmentT);\n }\n });\n this.set('tCache', tCache);\n };\n /**\n * Get start tangent vector\n * @return {Array}\n */\n Polyline.prototype.getStartTangent = function () {\n var points = this.attr().points;\n var result = [];\n result.push([points[1][0], points[1][1]]);\n result.push([points[0][0], points[0][1]]);\n return result;\n };\n /**\n * Get end tangent vector\n * @return {Array}\n */\n Polyline.prototype.getEndTangent = function () {\n var points = this.attr().points;\n var l = points.length - 1;\n var result = [];\n result.push([points[l - 1][0], points[l - 1][1]]);\n result.push([points[l][0], points[l][1]]);\n return result;\n };\n return Polyline;\n}(_base__WEBPACK_IMPORTED_MODULE_4__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Polyline);\n//# sourceMappingURL=polyline.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9zaGFwZS9wb2x5bGluZS5qcz9mMjIxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE0QztBQUNZO0FBQ1I7QUFDRTtBQUNQO0FBQ1o7QUFDL0I7QUFDQSxJQUFJLHVEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUcsV0FBVyxxQ0FBcUM7QUFDbkY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1REFBSTtBQUNaLHFDQUFxQywwREFBTztBQUM1QyxzRUFBc0Usa0NBQWtDLEVBQUU7QUFDMUc7QUFDQSxxQkFBcUIsc0RBQVk7QUFDakMsZ0NBQWdDLHNEQUFZO0FBQzVDO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHdEQUFLO0FBQ2xCO0FBQ0E7QUFDQSxnQ0FBZ0MscURBQVk7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxlQUFlLGlEQUFRO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLGlEQUFRO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFTO0FBQ0ksdUVBQVEsRUFBQztBQUN4QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1zdmdAMC41LjZAQGFudHYvZy1zdmcvZXNtL3NoYXBlL3BvbHlsaW5lLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24sIF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgUG9seWxpbmUgYXMgUG9seWxpbmVVdGlsIH0gZnJvbSAnQGFudHYvZy1tYXRoJztcbmltcG9ydCB7IExpbmUgYXMgTGluZVV0aWwgfSBmcm9tICdAYW50di9nLW1hdGgnO1xuaW1wb3J0IHsgZWFjaCwgaXNBcnJheSwgaXNOaWwgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IFNWR19BVFRSX01BUCB9IGZyb20gJy4uL2NvbnN0YW50JztcbmltcG9ydCBTaGFwZUJhc2UgZnJvbSAnLi9iYXNlJztcbnZhciBQb2x5bGluZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoUG9seWxpbmUsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gUG9seWxpbmUoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy50eXBlID0gJ3BvbHlsaW5lJztcbiAgICAgICAgX3RoaXMuY2FuRmlsbCA9IHRydWU7XG4gICAgICAgIF90aGlzLmNhblN0cm9rZSA9IHRydWU7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgUG9seWxpbmUucHJvdG90eXBlLmdldERlZmF1bHRBdHRycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gX3N1cGVyLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMuY2FsbCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBhdHRycyksIHsgc3RhcnRBcnJvdzogZmFsc2UsIGVuZEFycm93OiBmYWxzZSB9KTtcbiAgICB9O1xuICAgIC8vIOabtOaWsOWxnuaAp+aXtu+8jOajgOa1i+aYr+WQpuabtOaUueS6hiBwb2ludHNcbiAgICBQb2x5bGluZS5wcm90b3R5cGUub25BdHRyQ2hhbmdlID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlLCBvcmlnaW5WYWx1ZSkge1xuICAgICAgICBfc3VwZXIucHJvdG90eXBlLm9uQXR0ckNoYW5nZS5jYWxsKHRoaXMsIG5hbWUsIHZhbHVlLCBvcmlnaW5WYWx1ZSk7XG4gICAgICAgIGlmIChbJ3BvaW50cyddLmluZGV4T2YobmFtZSkgIT09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLl9yZXNldENhY2hlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFBvbHlsaW5lLnByb3RvdHlwZS5fcmVzZXRDYWNoZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5zZXQoJ3RvdGFsTGVuZ3RoJywgbnVsbCk7XG4gICAgICAgIHRoaXMuc2V0KCd0Q2FjaGUnLCBudWxsKTtcbiAgICB9O1xuICAgIFBvbHlsaW5lLnByb3RvdHlwZS5jcmVhdGVQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQsIHRhcmdldEF0dHJzKSB7XG4gICAgICAgIHZhciBhdHRycyA9IHRoaXMuYXR0cigpO1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgZWFjaCh0YXJnZXRBdHRycyB8fCBhdHRycywgZnVuY3Rpb24gKHZhbHVlLCBhdHRyKSB7XG4gICAgICAgICAgICBpZiAoYXR0ciA9PT0gJ3BvaW50cycgJiYgaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID49IDIpIHtcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ3BvaW50cycsIHZhbHVlLm1hcChmdW5jdGlvbiAocG9pbnQpIHsgcmV0dXJuIHBvaW50WzBdICsgXCIsXCIgKyBwb2ludFsxXTsgfSkuam9pbignICcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKFNWR19BVFRSX01BUFthdHRyXSkge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShTVkdfQVRUUl9NQVBbYXR0cl0sIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBHZXQgbGVuZ3RoIG9mIHBvbHlsaW5lXG4gICAgICogQHJldHVybiB7bnVtYmVyfSBsZW5ndGhcbiAgICAgKi9cbiAgICBQb2x5bGluZS5wcm90b3R5cGUuZ2V0VG90YWxMZW5ndGggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBwb2ludHMgPSB0aGlzLmF0dHIoKS5wb2ludHM7XG4gICAgICAgIC8vIGdldCB0b3RhbExlbmd0aCBmcm9tIGNhY2hlXG4gICAgICAgIHZhciB0b3RhbExlbmd0aCA9IHRoaXMuZ2V0KCd0b3RhbExlbmd0aCcpO1xuICAgICAgICBpZiAoIWlzTmlsKHRvdGFsTGVuZ3RoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRvdGFsTGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0KCd0b3RhbExlbmd0aCcsIFBvbHlsaW5lVXRpbC5sZW5ndGgocG9pbnRzKSk7XG4gICAgICAgIHJldHVybiB0aGlzLmdldCgndG90YWxMZW5ndGgnKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEdldCBwb2ludCBhY2NvcmRpbmcgdG8gcmF0aW9cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcmF0aW9cbiAgICAgKiBAcmV0dXJuIHtQb2ludH0gcG9pbnRcbiAgICAgKi9cbiAgICBQb2x5bGluZS5wcm90b3R5cGUuZ2V0UG9pbnQgPSBmdW5jdGlvbiAocmF0aW8pIHtcbiAgICAgICAgdmFyIHBvaW50cyA9IHRoaXMuYXR0cigpLnBvaW50cztcbiAgICAgICAgLy8gZ2V0IHRDYWNoZSBmcm9tIGNhY2hlXG4gICAgICAgIHZhciB0Q2FjaGUgPSB0aGlzLmdldCgndENhY2hlJyk7XG4gICAgICAgIGlmICghdENhY2hlKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRUY2FjaGUoKTtcbiAgICAgICAgICAgIHRDYWNoZSA9IHRoaXMuZ2V0KCd0Q2FjaGUnKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc3VidDtcbiAgICAgICAgdmFyIGluZGV4O1xuICAgICAgICBlYWNoKHRDYWNoZSwgZnVuY3Rpb24gKHYsIGkpIHtcbiAgICAgICAgICAgIGlmIChyYXRpbyA+PSB2WzBdICYmIHJhdGlvIDw9IHZbMV0pIHtcbiAgICAgICAgICAgICAgICBzdWJ0ID0gKHJhdGlvIC0gdlswXSkgLyAodlsxXSAtIHZbMF0pO1xuICAgICAgICAgICAgICAgIGluZGV4ID0gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBMaW5lVXRpbC5wb2ludEF0KHBvaW50c1tpbmRleF1bMF0sIHBvaW50c1tpbmRleF1bMV0sIHBvaW50c1tpbmRleCArIDFdWzBdLCBwb2ludHNbaW5kZXggKyAxXVsxXSwgc3VidCk7XG4gICAgfTtcbiAgICBQb2x5bGluZS5wcm90b3R5cGUuX3NldFRjYWNoZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHBvaW50cyA9IHRoaXMuYXR0cigpLnBvaW50cztcbiAgICAgICAgaWYgKCFwb2ludHMgfHwgcG9pbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0b3RhbExlbmd0aCA9IHRoaXMuZ2V0VG90YWxMZW5ndGgoKTtcbiAgICAgICAgaWYgKHRvdGFsTGVuZ3RoIDw9IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdGVtcExlbmd0aCA9IDA7XG4gICAgICAgIHZhciB0Q2FjaGUgPSBbXTtcbiAgICAgICAgdmFyIHNlZ21lbnRUO1xuICAgICAgICB2YXIgc2VnbWVudEw7XG4gICAgICAgIGVhY2gocG9pbnRzLCBmdW5jdGlvbiAocCwgaSkge1xuICAgICAgICAgICAgaWYgKHBvaW50c1tpICsgMV0pIHtcbiAgICAgICAgICAgICAgICBzZWdtZW50VCA9IFtdO1xuICAgICAgICAgICAgICAgIHNlZ21lbnRUWzBdID0gdGVtcExlbmd0aCAvIHRvdGFsTGVuZ3RoO1xuICAgICAgICAgICAgICAgIHNlZ21lbnRMID0gTGluZVV0aWwubGVuZ3RoKHBbMF0sIHBbMV0sIHBvaW50c1tpICsgMV1bMF0sIHBvaW50c1tpICsgMV1bMV0pO1xuICAgICAgICAgICAgICAgIHRlbXBMZW5ndGggKz0gc2VnbWVudEw7XG4gICAgICAgICAgICAgICAgc2VnbWVudFRbMV0gPSB0ZW1wTGVuZ3RoIC8gdG90YWxMZW5ndGg7XG4gICAgICAgICAgICAgICAgdENhY2hlLnB1c2goc2VnbWVudFQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZXQoJ3RDYWNoZScsIHRDYWNoZSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBHZXQgc3RhcnQgdGFuZ2VudCB2ZWN0b3JcbiAgICAgKiBAcmV0dXJuIHtBcnJheX1cbiAgICAgKi9cbiAgICBQb2x5bGluZS5wcm90b3R5cGUuZ2V0U3RhcnRUYW5nZW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcG9pbnRzID0gdGhpcy5hdHRyKCkucG9pbnRzO1xuICAgICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICAgIHJlc3VsdC5wdXNoKFtwb2ludHNbMV1bMF0sIHBvaW50c1sxXVsxXV0pO1xuICAgICAgICByZXN1bHQucHVzaChbcG9pbnRzWzBdWzBdLCBwb2ludHNbMF1bMV1dKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEdldCBlbmQgdGFuZ2VudCB2ZWN0b3JcbiAgICAgKiBAcmV0dXJuIHtBcnJheX1cbiAgICAgKi9cbiAgICBQb2x5bGluZS5wcm90b3R5cGUuZ2V0RW5kVGFuZ2VudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHBvaW50cyA9IHRoaXMuYXR0cigpLnBvaW50cztcbiAgICAgICAgdmFyIGwgPSBwb2ludHMubGVuZ3RoIC0gMTtcbiAgICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgICByZXN1bHQucHVzaChbcG9pbnRzW2wgLSAxXVswXSwgcG9pbnRzW2wgLSAxXVsxXV0pO1xuICAgICAgICByZXN1bHQucHVzaChbcG9pbnRzW2xdWzBdLCBwb2ludHNbbF1bMV1dKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIHJldHVybiBQb2x5bGluZTtcbn0oU2hhcGVCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBQb2x5bGluZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBvbHlsaW5lLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/polyline.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/rect.js":
/*!***********************************************************************!*\
!*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/rect.js ***!
\***********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/base.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constant */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _util_format__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/format */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/format.js\");\n/**\n * @fileoverview rect\n * @author dengfuping_develop@163.com\n */\n\n\n\n\n\nvar Rect = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Rect, _super);\n function Rect() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'rect';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Rect.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, width: 0, height: 0, radius: 0 });\n };\n Rect.prototype.createPath = function (context, targetAttrs) {\n var _this = this;\n var attrs = this.attr();\n var el = this.get('el');\n // 加上状态量,用来标记 path 是否已组装\n var completed = false;\n // 和组装 path 相关的绘图属性\n var pathRelatedAttrs = ['x', 'y', 'width', 'height', 'radius'];\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n if (pathRelatedAttrs.indexOf(attr) !== -1 && !completed) {\n el.setAttribute('d', _this._assembleRect(attrs));\n completed = true;\n }\n else if (pathRelatedAttrs.indexOf(attr) === -1 && _constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_3__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n };\n Rect.prototype._assembleRect = function (attrs) {\n var x = attrs.x;\n var y = attrs.y;\n var w = attrs.width;\n var h = attrs.height;\n var radius = attrs.radius;\n if (!radius) {\n return \"M \" + x + \",\" + y + \" l \" + w + \",0 l 0,\" + h + \" l\" + -w + \" 0 z\";\n }\n var r = Object(_util_format__WEBPACK_IMPORTED_MODULE_4__[\"parseRadius\"])(radius);\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(radius)) {\n if (radius.length === 1) {\n r.r1 = r.r2 = r.r3 = r.r4 = radius[0];\n }\n else if (radius.length === 2) {\n r.r1 = r.r3 = radius[0];\n r.r2 = r.r4 = radius[1];\n }\n else if (radius.length === 3) {\n r.r1 = radius[0];\n r.r2 = r.r4 = radius[1];\n r.r3 = radius[2];\n }\n else {\n r.r1 = radius[0];\n r.r2 = radius[1];\n r.r3 = radius[2];\n r.r4 = radius[3];\n }\n }\n else {\n r.r1 = r.r2 = r.r3 = r.r4 = radius;\n }\n var d = [\n [\"M \" + (x + r.r1) + \",\" + y],\n [\"l \" + (w - r.r1 - r.r2) + \",0\"],\n [\"a \" + r.r2 + \",\" + r.r2 + \",0,0,1,\" + r.r2 + \",\" + r.r2],\n [\"l 0,\" + (h - r.r2 - r.r3)],\n [\"a \" + r.r3 + \",\" + r.r3 + \",0,0,1,\" + -r.r3 + \",\" + r.r3],\n [\"l \" + (r.r3 + r.r4 - w) + \",0\"],\n [\"a \" + r.r4 + \",\" + r.r4 + \",0,0,1,\" + -r.r4 + \",\" + -r.r4],\n [\"l 0,\" + (r.r4 + r.r1 - h)],\n [\"a \" + r.r1 + \",\" + r.r1 + \",0,0,1,\" + r.r1 + \",\" + -r.r1],\n ['z'],\n ];\n return d.join(' ');\n };\n return Rect;\n}(_base__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Rect);\n//# sourceMappingURL=rect.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9zaGFwZS9yZWN0LmpzP2M2NGYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDNEM7QUFDRDtBQUNaO0FBQ1k7QUFDRTtBQUM3QztBQUNBLElBQUksdURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRyxXQUFXLDZDQUE2QztBQUMzRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHVEQUFJO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4REFBOEQsc0RBQVk7QUFDMUUsZ0NBQWdDLHNEQUFZO0FBQzVDO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGdFQUFXO0FBQzNCLFlBQVksMERBQU87QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsNkNBQVM7QUFDSSxtRUFBSSxFQUFDO0FBQ3BCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXN2Z0AwLjUuNkBAYW50di9nLXN2Zy9lc20vc2hhcGUvcmVjdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVvdmVydmlldyByZWN0XG4gKiBAYXV0aG9yIGRlbmdmdXBpbmdfZGV2ZWxvcEAxNjMuY29tXG4gKi9cbmltcG9ydCB7IF9fYXNzaWduLCBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGVhY2gsIGlzQXJyYXkgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBTaGFwZUJhc2UgZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IFNWR19BVFRSX01BUCB9IGZyb20gJy4uL2NvbnN0YW50JztcbmltcG9ydCB7IHBhcnNlUmFkaXVzIH0gZnJvbSAnLi4vdXRpbC9mb3JtYXQnO1xudmFyIFJlY3QgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFJlY3QsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gUmVjdCgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnR5cGUgPSAncmVjdCc7XG4gICAgICAgIF90aGlzLmNhbkZpbGwgPSB0cnVlO1xuICAgICAgICBfdGhpcy5jYW5TdHJva2UgPSB0cnVlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIFJlY3QucHJvdG90eXBlLmdldERlZmF1bHRBdHRycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGF0dHJzID0gX3N1cGVyLnByb3RvdHlwZS5nZXREZWZhdWx0QXR0cnMuY2FsbCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBhdHRycyksIHsgeDogMCwgeTogMCwgd2lkdGg6IDAsIGhlaWdodDogMCwgcmFkaXVzOiAwIH0pO1xuICAgIH07XG4gICAgUmVjdC5wcm90b3R5cGUuY3JlYXRlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0LCB0YXJnZXRBdHRycykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIC8vIOWKoOS4iueKtuaAgemHj++8jOeUqOadpeagh+iusCBwYXRoIOaYr+WQpuW3sue7hOijhVxuICAgICAgICB2YXIgY29tcGxldGVkID0gZmFsc2U7XG4gICAgICAgIC8vIOWSjOe7hOijhSBwYXRoIOebuOWFs+eahOe7mOWbvuWxnuaAp1xuICAgICAgICB2YXIgcGF0aFJlbGF0ZWRBdHRycyA9IFsneCcsICd5JywgJ3dpZHRoJywgJ2hlaWdodCcsICdyYWRpdXMnXTtcbiAgICAgICAgZWFjaCh0YXJnZXRBdHRycyB8fCBhdHRycywgZnVuY3Rpb24gKHZhbHVlLCBhdHRyKSB7XG4gICAgICAgICAgICBpZiAocGF0aFJlbGF0ZWRBdHRycy5pbmRleE9mKGF0dHIpICE9PSAtMSAmJiAhY29tcGxldGVkKSB7XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdkJywgX3RoaXMuX2Fzc2VtYmxlUmVjdChhdHRycykpO1xuICAgICAgICAgICAgICAgIGNvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChwYXRoUmVsYXRlZEF0dHJzLmluZGV4T2YoYXR0cikgPT09IC0xICYmIFNWR19BVFRSX01BUFthdHRyXSkge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShTVkdfQVRUUl9NQVBbYXR0cl0sIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBSZWN0LnByb3RvdHlwZS5fYXNzZW1ibGVSZWN0ID0gZnVuY3Rpb24gKGF0dHJzKSB7XG4gICAgICAgIHZhciB4ID0gYXR0cnMueDtcbiAgICAgICAgdmFyIHkgPSBhdHRycy55O1xuICAgICAgICB2YXIgdyA9IGF0dHJzLndpZHRoO1xuICAgICAgICB2YXIgaCA9IGF0dHJzLmhlaWdodDtcbiAgICAgICAgdmFyIHJhZGl1cyA9IGF0dHJzLnJhZGl1cztcbiAgICAgICAgaWYgKCFyYWRpdXMpIHtcbiAgICAgICAgICAgIHJldHVybiBcIk0gXCIgKyB4ICsgXCIsXCIgKyB5ICsgXCIgbCBcIiArIHcgKyBcIiwwIGwgMCxcIiArIGggKyBcIiBsXCIgKyAtdyArIFwiIDAgelwiO1xuICAgICAgICB9XG4gICAgICAgIHZhciByID0gcGFyc2VSYWRpdXMocmFkaXVzKTtcbiAgICAgICAgaWYgKGlzQXJyYXkocmFkaXVzKSkge1xuICAgICAgICAgICAgaWYgKHJhZGl1cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICByLnIxID0gci5yMiA9IHIucjMgPSByLnI0ID0gcmFkaXVzWzBdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocmFkaXVzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgICAgIHIucjEgPSByLnIzID0gcmFkaXVzWzBdO1xuICAgICAgICAgICAgICAgIHIucjIgPSByLnI0ID0gcmFkaXVzWzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocmFkaXVzLmxlbmd0aCA9PT0gMykge1xuICAgICAgICAgICAgICAgIHIucjEgPSByYWRpdXNbMF07XG4gICAgICAgICAgICAgICAgci5yMiA9IHIucjQgPSByYWRpdXNbMV07XG4gICAgICAgICAgICAgICAgci5yMyA9IHJhZGl1c1syXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHIucjEgPSByYWRpdXNbMF07XG4gICAgICAgICAgICAgICAgci5yMiA9IHJhZGl1c1sxXTtcbiAgICAgICAgICAgICAgICByLnIzID0gcmFkaXVzWzJdO1xuICAgICAgICAgICAgICAgIHIucjQgPSByYWRpdXNbM107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByLnIxID0gci5yMiA9IHIucjMgPSByLnI0ID0gcmFkaXVzO1xuICAgICAgICB9XG4gICAgICAgIHZhciBkID0gW1xuICAgICAgICAgICAgW1wiTSBcIiArICh4ICsgci5yMSkgKyBcIixcIiArIHldLFxuICAgICAgICAgICAgW1wibCBcIiArICh3IC0gci5yMSAtIHIucjIpICsgXCIsMFwiXSxcbiAgICAgICAgICAgIFtcImEgXCIgKyByLnIyICsgXCIsXCIgKyByLnIyICsgXCIsMCwwLDEsXCIgKyByLnIyICsgXCIsXCIgKyByLnIyXSxcbiAgICAgICAgICAgIFtcImwgMCxcIiArIChoIC0gci5yMiAtIHIucjMpXSxcbiAgICAgICAgICAgIFtcImEgXCIgKyByLnIzICsgXCIsXCIgKyByLnIzICsgXCIsMCwwLDEsXCIgKyAtci5yMyArIFwiLFwiICsgci5yM10sXG4gICAgICAgICAgICBbXCJsIFwiICsgKHIucjMgKyByLnI0IC0gdykgKyBcIiwwXCJdLFxuICAgICAgICAgICAgW1wiYSBcIiArIHIucjQgKyBcIixcIiArIHIucjQgKyBcIiwwLDAsMSxcIiArIC1yLnI0ICsgXCIsXCIgKyAtci5yNF0sXG4gICAgICAgICAgICBbXCJsIDAsXCIgKyAoci5yNCArIHIucjEgLSBoKV0sXG4gICAgICAgICAgICBbXCJhIFwiICsgci5yMSArIFwiLFwiICsgci5yMSArIFwiLDAsMCwxLFwiICsgci5yMSArIFwiLFwiICsgLXIucjFdLFxuICAgICAgICAgICAgWyd6J10sXG4gICAgICAgIF07XG4gICAgICAgIHJldHVybiBkLmpvaW4oJyAnKTtcbiAgICB9O1xuICAgIHJldHVybiBSZWN0O1xufShTaGFwZUJhc2UpKTtcbmV4cG9ydCBkZWZhdWx0IFJlY3Q7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZWN0LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/rect.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/text.js":
/*!***********************************************************************!*\
!*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/text.js ***!
\***********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var detect_browser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! detect-browser */ \"./node_modules/_detect-browser@5.3.0@detect-browser/es/index.js\");\n/* harmony import */ var _util_svg__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/svg */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/svg.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../constant */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/constant.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/base.js\");\n/**\n * @fileoverview text\n * @author dengfuping_develop@163.com\n */\n\n\n\n\n\n\nvar LETTER_SPACING = 0.3;\nvar BASELINE_MAP = {\n top: 'before-edge',\n middle: 'central',\n bottom: 'after-edge',\n alphabetic: 'baseline',\n hanging: 'hanging',\n};\n// for FireFox\nvar BASELINE_MAP_FOR_FIREFOX = {\n top: 'text-before-edge',\n middle: 'central',\n bottom: 'text-after-edge',\n alphabetic: 'alphabetic',\n hanging: 'hanging',\n};\nvar ANCHOR_MAP = {\n left: 'left',\n start: 'left',\n center: 'middle',\n right: 'end',\n end: 'end',\n};\nvar Text = /** @class */ (function (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Text, _super);\n function Text() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'text';\n _this.canFill = true;\n _this.canStroke = true;\n return _this;\n }\n Text.prototype.getDefaultAttrs = function () {\n var attrs = _super.prototype.getDefaultAttrs.call(this);\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), { x: 0, y: 0, text: null, fontSize: 12, fontFamily: 'sans-serif', fontStyle: 'normal', fontWeight: 'normal', fontVariant: 'normal', textAlign: 'start', textBaseline: 'bottom' });\n };\n Text.prototype.createPath = function (context, targetAttrs) {\n var _this = this;\n var attrs = this.attr();\n var el = this.get('el');\n this._setFont();\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(targetAttrs || attrs, function (value, attr) {\n if (attr === 'text') {\n _this._setText(\"\" + value);\n }\n else if (attr === 'matrix' && value) {\n Object(_util_svg__WEBPACK_IMPORTED_MODULE_3__[\"setTransform\"])(_this);\n }\n else if (_constant__WEBPACK_IMPORTED_MODULE_4__[\"SVG_ATTR_MAP\"][attr]) {\n el.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_4__[\"SVG_ATTR_MAP\"][attr], value);\n }\n });\n el.setAttribute('paint-order', 'stroke');\n el.setAttribute('style', 'stroke-linecap:butt; stroke-linejoin:miter;');\n };\n Text.prototype._setFont = function () {\n var el = this.get('el');\n var _a = this.attr(), textBaseline = _a.textBaseline, textAlign = _a.textAlign;\n var browser = Object(detect_browser__WEBPACK_IMPORTED_MODULE_2__[\"detect\"])();\n if (browser && browser.name === 'firefox') {\n // compatible with FireFox browser, ref: https://github.com/antvis/g/issues/119\n el.setAttribute('dominant-baseline', BASELINE_MAP_FOR_FIREFOX[textBaseline] || 'alphabetic');\n }\n else {\n el.setAttribute('alignment-baseline', BASELINE_MAP[textBaseline] || 'baseline');\n }\n el.setAttribute('text-anchor', ANCHOR_MAP[textAlign] || 'left');\n };\n Text.prototype._setText = function (text) {\n var el = this.get('el');\n var _a = this.attr(), x = _a.x, _b = _a.textBaseline, baseline = _b === void 0 ? 'bottom' : _b;\n if (!text) {\n el.innerHTML = '';\n }\n else if (~text.indexOf('\\n')) {\n var textArr = text.split('\\n');\n var textLen_1 = textArr.length - 1;\n var arr_1 = '';\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(textArr, function (segment, i) {\n if (i === 0) {\n if (baseline === 'alphabetic') {\n arr_1 += \"\" + segment + \"\";\n }\n else if (baseline === 'top') {\n arr_1 += \"\" + segment + \"\";\n }\n else if (baseline === 'middle') {\n arr_1 += \"\" + segment + \"\";\n }\n else if (baseline === 'bottom') {\n arr_1 += \"\" + segment + \"\";\n }\n else if (baseline === 'hanging') {\n arr_1 += \"\" + segment + \"\";\n }\n }\n else {\n arr_1 += \"\" + segment + \"\";\n }\n });\n el.innerHTML = arr_1;\n }\n else {\n el.innerHTML = text;\n }\n };\n return Text;\n}(_base__WEBPACK_IMPORTED_MODULE_5__[\"default\"]));\n/* harmony default export */ __webpack_exports__[\"default\"] = (Text);\n//# sourceMappingURL=text.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS9zaGFwZS90ZXh0LmpzPzliOTkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUM0QztBQUNWO0FBQ007QUFDRztBQUNBO0FBQ1o7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx1REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHLFdBQVcsK0tBQStLO0FBQzdOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiw4REFBWTtBQUM1QjtBQUNBLHFCQUFxQixzREFBWTtBQUNqQyxnQ0FBZ0Msc0RBQVk7QUFDNUM7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxzREFBc0QsdUJBQXVCO0FBQzdFO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLDZEQUFNO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx1REFBSTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFTO0FBQ0ksbUVBQUksRUFBQztBQUNwQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1zdmdAMC41LjZAQGFudHYvZy1zdmcvZXNtL3NoYXBlL3RleHQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcgdGV4dFxuICogQGF1dGhvciBkZW5nZnVwaW5nX2RldmVsb3BAMTYzLmNvbVxuICovXG5pbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBlYWNoIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBkZXRlY3QgfSBmcm9tICdkZXRlY3QtYnJvd3Nlcic7XG5pbXBvcnQgeyBzZXRUcmFuc2Zvcm0gfSBmcm9tICcuLi91dGlsL3N2Zyc7XG5pbXBvcnQgeyBTVkdfQVRUUl9NQVAgfSBmcm9tICcuLi9jb25zdGFudCc7XG5pbXBvcnQgU2hhcGVCYXNlIGZyb20gJy4vYmFzZSc7XG52YXIgTEVUVEVSX1NQQUNJTkcgPSAwLjM7XG52YXIgQkFTRUxJTkVfTUFQID0ge1xuICAgIHRvcDogJ2JlZm9yZS1lZGdlJyxcbiAgICBtaWRkbGU6ICdjZW50cmFsJyxcbiAgICBib3R0b206ICdhZnRlci1lZGdlJyxcbiAgICBhbHBoYWJldGljOiAnYmFzZWxpbmUnLFxuICAgIGhhbmdpbmc6ICdoYW5naW5nJyxcbn07XG4vLyBmb3IgRmlyZUZveFxudmFyIEJBU0VMSU5FX01BUF9GT1JfRklSRUZPWCA9IHtcbiAgICB0b3A6ICd0ZXh0LWJlZm9yZS1lZGdlJyxcbiAgICBtaWRkbGU6ICdjZW50cmFsJyxcbiAgICBib3R0b206ICd0ZXh0LWFmdGVyLWVkZ2UnLFxuICAgIGFscGhhYmV0aWM6ICdhbHBoYWJldGljJyxcbiAgICBoYW5naW5nOiAnaGFuZ2luZycsXG59O1xudmFyIEFOQ0hPUl9NQVAgPSB7XG4gICAgbGVmdDogJ2xlZnQnLFxuICAgIHN0YXJ0OiAnbGVmdCcsXG4gICAgY2VudGVyOiAnbWlkZGxlJyxcbiAgICByaWdodDogJ2VuZCcsXG4gICAgZW5kOiAnZW5kJyxcbn07XG52YXIgVGV4dCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoVGV4dCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBUZXh0KCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMudHlwZSA9ICd0ZXh0JztcbiAgICAgICAgX3RoaXMuY2FuRmlsbCA9IHRydWU7XG4gICAgICAgIF90aGlzLmNhblN0cm9rZSA9IHRydWU7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgVGV4dC5wcm90b3R5cGUuZ2V0RGVmYXVsdEF0dHJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXR0cnMgPSBfc3VwZXIucHJvdG90eXBlLmdldERlZmF1bHRBdHRycy5jYWxsKHRoaXMpO1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGF0dHJzKSwgeyB4OiAwLCB5OiAwLCB0ZXh0OiBudWxsLCBmb250U2l6ZTogMTIsIGZvbnRGYW1pbHk6ICdzYW5zLXNlcmlmJywgZm9udFN0eWxlOiAnbm9ybWFsJywgZm9udFdlaWdodDogJ25vcm1hbCcsIGZvbnRWYXJpYW50OiAnbm9ybWFsJywgdGV4dEFsaWduOiAnc3RhcnQnLCB0ZXh0QmFzZWxpbmU6ICdib3R0b20nIH0pO1xuICAgIH07XG4gICAgVGV4dC5wcm90b3R5cGUuY3JlYXRlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0LCB0YXJnZXRBdHRycykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgYXR0cnMgPSB0aGlzLmF0dHIoKTtcbiAgICAgICAgdmFyIGVsID0gdGhpcy5nZXQoJ2VsJyk7XG4gICAgICAgIHRoaXMuX3NldEZvbnQoKTtcbiAgICAgICAgZWFjaCh0YXJnZXRBdHRycyB8fCBhdHRycywgZnVuY3Rpb24gKHZhbHVlLCBhdHRyKSB7XG4gICAgICAgICAgICBpZiAoYXR0ciA9PT0gJ3RleHQnKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuX3NldFRleHQoXCJcIiArIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGF0dHIgPT09ICdtYXRyaXgnICYmIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgc2V0VHJhbnNmb3JtKF90aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKFNWR19BVFRSX01BUFthdHRyXSkge1xuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShTVkdfQVRUUl9NQVBbYXR0cl0sIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGVsLnNldEF0dHJpYnV0ZSgncGFpbnQtb3JkZXInLCAnc3Ryb2tlJyk7XG4gICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnc3Ryb2tlLWxpbmVjYXA6YnV0dDsgc3Ryb2tlLWxpbmVqb2luOm1pdGVyOycpO1xuICAgIH07XG4gICAgVGV4dC5wcm90b3R5cGUuX3NldEZvbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBlbCA9IHRoaXMuZ2V0KCdlbCcpO1xuICAgICAgICB2YXIgX2EgPSB0aGlzLmF0dHIoKSwgdGV4dEJhc2VsaW5lID0gX2EudGV4dEJhc2VsaW5lLCB0ZXh0QWxpZ24gPSBfYS50ZXh0QWxpZ247XG4gICAgICAgIHZhciBicm93c2VyID0gZGV0ZWN0KCk7XG4gICAgICAgIGlmIChicm93c2VyICYmIGJyb3dzZXIubmFtZSA9PT0gJ2ZpcmVmb3gnKSB7XG4gICAgICAgICAgICAvLyBjb21wYXRpYmxlIHdpdGggRmlyZUZveCBicm93c2VyLCByZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbnR2aXMvZy9pc3N1ZXMvMTE5XG4gICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2RvbWluYW50LWJhc2VsaW5lJywgQkFTRUxJTkVfTUFQX0ZPUl9GSVJFRk9YW3RleHRCYXNlbGluZV0gfHwgJ2FscGhhYmV0aWMnKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnYWxpZ25tZW50LWJhc2VsaW5lJywgQkFTRUxJTkVfTUFQW3RleHRCYXNlbGluZV0gfHwgJ2Jhc2VsaW5lJyk7XG4gICAgICAgIH1cbiAgICAgICAgZWwuc2V0QXR0cmlidXRlKCd0ZXh0LWFuY2hvcicsIEFOQ0hPUl9NQVBbdGV4dEFsaWduXSB8fCAnbGVmdCcpO1xuICAgIH07XG4gICAgVGV4dC5wcm90b3R5cGUuX3NldFRleHQgPSBmdW5jdGlvbiAodGV4dCkge1xuICAgICAgICB2YXIgZWwgPSB0aGlzLmdldCgnZWwnKTtcbiAgICAgICAgdmFyIF9hID0gdGhpcy5hdHRyKCksIHggPSBfYS54LCBfYiA9IF9hLnRleHRCYXNlbGluZSwgYmFzZWxpbmUgPSBfYiA9PT0gdm9pZCAwID8gJ2JvdHRvbScgOiBfYjtcbiAgICAgICAgaWYgKCF0ZXh0KSB7XG4gICAgICAgICAgICBlbC5pbm5lckhUTUwgPSAnJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh+dGV4dC5pbmRleE9mKCdcXG4nKSkge1xuICAgICAgICAgICAgdmFyIHRleHRBcnIgPSB0ZXh0LnNwbGl0KCdcXG4nKTtcbiAgICAgICAgICAgIHZhciB0ZXh0TGVuXzEgPSB0ZXh0QXJyLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICB2YXIgYXJyXzEgPSAnJztcbiAgICAgICAgICAgIGVhY2godGV4dEFyciwgZnVuY3Rpb24gKHNlZ21lbnQsIGkpIHtcbiAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYmFzZWxpbmUgPT09ICdhbHBoYWJldGljJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXJyXzEgKz0gXCI8dHNwYW4geD1cXFwiXCIgKyB4ICsgXCJcXFwiIGR5PVxcXCJcIiArIC10ZXh0TGVuXzEgKyBcImVtXFxcIj5cIiArIHNlZ21lbnQgKyBcIjwvdHNwYW4+XCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYmFzZWxpbmUgPT09ICd0b3AnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJfMSArPSBcIjx0c3BhbiB4PVxcXCJcIiArIHggKyBcIlxcXCIgZHk9XFxcIjAuOWVtXFxcIj5cIiArIHNlZ21lbnQgKyBcIjwvdHNwYW4+XCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYmFzZWxpbmUgPT09ICdtaWRkbGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJfMSArPSBcIjx0c3BhbiB4PVxcXCJcIiArIHggKyBcIlxcXCIgZHk9XFxcIlwiICsgLSh0ZXh0TGVuXzEgLSAxKSAvIDIgKyBcImVtXFxcIj5cIiArIHNlZ21lbnQgKyBcIjwvdHNwYW4+XCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYmFzZWxpbmUgPT09ICdib3R0b20nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJfMSArPSBcIjx0c3BhbiB4PVxcXCJcIiArIHggKyBcIlxcXCIgZHk9XFxcIi1cIiArICh0ZXh0TGVuXzEgKyBMRVRURVJfU1BBQ0lORykgKyBcImVtXFxcIj5cIiArIHNlZ21lbnQgKyBcIjwvdHNwYW4+XCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYmFzZWxpbmUgPT09ICdoYW5naW5nJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXJyXzEgKz0gXCI8dHNwYW4geD1cXFwiXCIgKyB4ICsgXCJcXFwiIGR5PVxcXCJcIiArICgtKHRleHRMZW5fMSAtIDEpIC0gTEVUVEVSX1NQQUNJTkcpICsgXCJlbVxcXCI+XCIgKyBzZWdtZW50ICsgXCI8L3RzcGFuPlwiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBhcnJfMSArPSBcIjx0c3BhbiB4PVxcXCJcIiArIHggKyBcIlxcXCIgZHk9XFxcIjFlbVxcXCI+XCIgKyBzZWdtZW50ICsgXCI8L3RzcGFuPlwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZWwuaW5uZXJIVE1MID0gYXJyXzE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBlbC5pbm5lckhUTUwgPSB0ZXh0O1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gVGV4dDtcbn0oU2hhcGVCYXNlKSk7XG5leHBvcnQgZGVmYXVsdCBUZXh0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGV4dC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/shape/text.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/dom.js":
/*!*********************************************************************!*\
!*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/dom.js ***!
\*********************************************************************/
/*! exports provided: createSVGElement, createDom, sortDom, moveTo */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createSVGElement\", function() { return createSVGElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createDom\", function() { return createDom; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sortDom\", function() { return sortDom; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"moveTo\", function() { return moveTo; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../constant */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/constant.js\");\n\n\n/**\n * 创建并返回图形的 svg 元素\n * @param type svg类型\n */\nfunction createSVGElement(type) {\n return document.createElementNS('http://www.w3.org/2000/svg', type);\n}\n/**\n * 创建并返回图形的 dom 元素\n * @param {IShape} shape 图形\n * @return {SVGElement}\n */\nfunction createDom(shape) {\n var type = _constant__WEBPACK_IMPORTED_MODULE_1__[\"SHAPE_TO_TAGS\"][shape.type];\n var parent = shape.getParent();\n if (!type) {\n throw new Error(\"the type \" + shape.type + \" is not supported by svg\");\n }\n var element = createSVGElement(type);\n if (shape.get('id')) {\n element.id = shape.get('id');\n }\n shape.set('el', element);\n shape.set('attrs', {});\n // 对于 defs 下的 dom 节点,parent 为空,通过 context 统一挂载到 defs 节点下\n if (parent) {\n var parentNode = parent.get('el');\n if (parentNode) {\n parentNode.appendChild(element);\n }\n else {\n // parentNode maybe null for group\n parentNode = parent.createDom();\n parent.set('el', parentNode);\n parentNode.appendChild(element);\n }\n }\n return element;\n}\n/**\n * 对 dom 元素进行排序\n * @param {IElement} element 元素\n * @param {sorter} function 排序函数\n */\nfunction sortDom(element, sorter) {\n var el = element.get('el');\n var childList = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"toArray\"])(el.children).sort(sorter);\n // create empty fragment\n var fragment = document.createDocumentFragment();\n childList.forEach(function (child) {\n fragment.appendChild(child);\n });\n el.appendChild(fragment);\n}\n/**\n * 将 dom 元素移动到父元素下的指定位置\n * @param {SVGElement} element dom 元素\n * @param {number} targetIndex 目标位置(从 0 开始)\n */\nfunction moveTo(element, targetIndex) {\n var parentNode = element.parentNode;\n var siblings = Array.from(parentNode.childNodes).filter(\n // 要求为元素节点,且不能为 defs 节点\n function (node) { return node.nodeType === 1 && node.nodeName.toLowerCase() !== 'defs'; });\n // 获取目标节点\n var target = siblings[targetIndex];\n var currentIndex = siblings.indexOf(element);\n // 如果目标节点存在\n if (target) {\n // 当前索引 > 目标索引,直接插入到目标节点之前即可\n if (currentIndex > targetIndex) {\n parentNode.insertBefore(element, target);\n }\n else if (currentIndex < targetIndex) {\n // 当前索引 < 目标索引\n // 获取目标节点的下一个节点\n var targetNext = siblings[targetIndex + 1];\n // 如果目标节点的下一个节点存在,插入到该节点之前\n if (targetNext) {\n parentNode.insertBefore(element, targetNext);\n }\n else {\n // 如果该节点不存在,则追加到末尾\n parentNode.appendChild(element);\n }\n }\n }\n else {\n parentNode.appendChild(element);\n }\n}\n//# sourceMappingURL=dom.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS91dGlsL2RvbS5qcz80ODI2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXFDO0FBQ087QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxPQUFPO0FBQ25CLFlBQVk7QUFDWjtBQUNPO0FBQ1AsZUFBZSx1REFBYTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLE9BQU87QUFDbEI7QUFDTztBQUNQO0FBQ0Esb0JBQW9CLDBEQUFPO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxXQUFXO0FBQ3RCLFdBQVcsT0FBTztBQUNsQjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLHNFQUFzRSxFQUFFO0FBQzdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXN2Z0AwLjUuNkBAYW50di9nLXN2Zy9lc20vdXRpbC9kb20uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0b0FycmF5IH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBTSEFQRV9UT19UQUdTIH0gZnJvbSAnLi4vY29uc3RhbnQnO1xuLyoqXG4gKiDliJvlu7rlubbov5Tlm57lm77lvaLnmoQgc3ZnIOWFg+e0oFxuICogQHBhcmFtIHR5cGUgc3Zn57G75Z6LXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTVkdFbGVtZW50KHR5cGUpIHtcbiAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsIHR5cGUpO1xufVxuLyoqXG4gKiDliJvlu7rlubbov5Tlm57lm77lvaLnmoQgZG9tIOWFg+e0oFxuICogQHBhcmFtICB7SVNoYXBlfSBzaGFwZSDlm77lvaJcbiAqIEByZXR1cm4ge1NWR0VsZW1lbnR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEb20oc2hhcGUpIHtcbiAgICB2YXIgdHlwZSA9IFNIQVBFX1RPX1RBR1Nbc2hhcGUudHlwZV07XG4gICAgdmFyIHBhcmVudCA9IHNoYXBlLmdldFBhcmVudCgpO1xuICAgIGlmICghdHlwZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ0aGUgdHlwZSBcIiArIHNoYXBlLnR5cGUgKyBcIiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHN2Z1wiKTtcbiAgICB9XG4gICAgdmFyIGVsZW1lbnQgPSBjcmVhdGVTVkdFbGVtZW50KHR5cGUpO1xuICAgIGlmIChzaGFwZS5nZXQoJ2lkJykpIHtcbiAgICAgICAgZWxlbWVudC5pZCA9IHNoYXBlLmdldCgnaWQnKTtcbiAgICB9XG4gICAgc2hhcGUuc2V0KCdlbCcsIGVsZW1lbnQpO1xuICAgIHNoYXBlLnNldCgnYXR0cnMnLCB7fSk7XG4gICAgLy8g5a+55LqOIGRlZnMg5LiL55qEIGRvbSDoioLngrnvvIxwYXJlbnQg5Li656m677yM6YCa6L+HIGNvbnRleHQg57uf5LiA5oyC6L295YiwIGRlZnMg6IqC54K55LiLXG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgICB2YXIgcGFyZW50Tm9kZSA9IHBhcmVudC5nZXQoJ2VsJyk7XG4gICAgICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBwYXJlbnROb2RlLmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gcGFyZW50Tm9kZSBtYXliZSBudWxsIGZvciBncm91cFxuICAgICAgICAgICAgcGFyZW50Tm9kZSA9IHBhcmVudC5jcmVhdGVEb20oKTtcbiAgICAgICAgICAgIHBhcmVudC5zZXQoJ2VsJywgcGFyZW50Tm9kZSk7XG4gICAgICAgICAgICBwYXJlbnROb2RlLmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBlbGVtZW50O1xufVxuLyoqXG4gKiDlr7kgZG9tIOWFg+e0oOi/m+ihjOaOkuW6j1xuICogQHBhcmFtIHtJRWxlbWVudH0gZWxlbWVudCAg5YWD57SgXG4gKiBAcGFyYW0ge3NvcnRlcn0gICBmdW5jdGlvbiDmjpLluo/lh73mlbBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNvcnREb20oZWxlbWVudCwgc29ydGVyKSB7XG4gICAgdmFyIGVsID0gZWxlbWVudC5nZXQoJ2VsJyk7XG4gICAgdmFyIGNoaWxkTGlzdCA9IHRvQXJyYXkoZWwuY2hpbGRyZW4pLnNvcnQoc29ydGVyKTtcbiAgICAvLyBjcmVhdGUgZW1wdHkgZnJhZ21lbnRcbiAgICB2YXIgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG4gICAgY2hpbGRMaXN0LmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKGNoaWxkKTtcbiAgICB9KTtcbiAgICBlbC5hcHBlbmRDaGlsZChmcmFnbWVudCk7XG59XG4vKipcbiAqIOWwhiBkb20g5YWD57Sg56e75Yqo5Yiw54i25YWD57Sg5LiL55qE5oyH5a6a5L2N572uXG4gKiBAcGFyYW0ge1NWR0VsZW1lbnR9IGVsZW1lbnQgICAgIGRvbSDlhYPntKBcbiAqIEBwYXJhbSB7bnVtYmVyfSAgICAgdGFyZ2V0SW5kZXgg55uu5qCH5L2N572uKOS7jiAwIOW8gOWniylcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vdmVUbyhlbGVtZW50LCB0YXJnZXRJbmRleCkge1xuICAgIHZhciBwYXJlbnROb2RlID0gZWxlbWVudC5wYXJlbnROb2RlO1xuICAgIHZhciBzaWJsaW5ncyA9IEFycmF5LmZyb20ocGFyZW50Tm9kZS5jaGlsZE5vZGVzKS5maWx0ZXIoXG4gICAgLy8g6KaB5rGC5Li65YWD57Sg6IqC54K577yM5LiU5LiN6IO95Li6IGRlZnMg6IqC54K5XG4gICAgZnVuY3Rpb24gKG5vZGUpIHsgcmV0dXJuIG5vZGUubm9kZVR5cGUgPT09IDEgJiYgbm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICE9PSAnZGVmcyc7IH0pO1xuICAgIC8vIOiOt+WPluebruagh+iKgueCuVxuICAgIHZhciB0YXJnZXQgPSBzaWJsaW5nc1t0YXJnZXRJbmRleF07XG4gICAgdmFyIGN1cnJlbnRJbmRleCA9IHNpYmxpbmdzLmluZGV4T2YoZWxlbWVudCk7XG4gICAgLy8g5aaC5p6c55uu5qCH6IqC54K55a2Y5ZyoXG4gICAgaWYgKHRhcmdldCkge1xuICAgICAgICAvLyDlvZPliY3ntKLlvJUgPiDnm67moIfntKLlvJXvvIznm7TmjqXmj5LlhaXliLDnm67moIfoioLngrnkuYvliY3ljbPlj69cbiAgICAgICAgaWYgKGN1cnJlbnRJbmRleCA+IHRhcmdldEluZGV4KSB7XG4gICAgICAgICAgICBwYXJlbnROb2RlLmluc2VydEJlZm9yZShlbGVtZW50LCB0YXJnZXQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGN1cnJlbnRJbmRleCA8IHRhcmdldEluZGV4KSB7XG4gICAgICAgICAgICAvLyDlvZPliY3ntKLlvJUgPCDnm67moIfntKLlvJVcbiAgICAgICAgICAgIC8vIOiOt+WPluebruagh+iKgueCueeahOS4i+S4gOS4quiKgueCuVxuICAgICAgICAgICAgdmFyIHRhcmdldE5leHQgPSBzaWJsaW5nc1t0YXJnZXRJbmRleCArIDFdO1xuICAgICAgICAgICAgLy8g5aaC5p6c55uu5qCH6IqC54K555qE5LiL5LiA5Liq6IqC54K55a2Y5Zyo77yM5o+S5YWl5Yiw6K+l6IqC54K55LmL5YmNXG4gICAgICAgICAgICBpZiAodGFyZ2V0TmV4dCkge1xuICAgICAgICAgICAgICAgIHBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGVsZW1lbnQsIHRhcmdldE5leHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8g5aaC5p6c6K+l6IqC54K55LiN5a2Y5Zyo77yM5YiZ6L+95Yqg5Yiw5pyr5bC+XG4gICAgICAgICAgICAgICAgcGFyZW50Tm9kZS5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcGFyZW50Tm9kZS5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kb20uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/dom.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/draw.js":
/*!**********************************************************************!*\
!*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/draw.js ***!
\**********************************************************************/
/*! exports provided: drawChildren, refreshElement */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawChildren\", function() { return drawChildren; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"refreshElement\", function() { return refreshElement; });\n/* harmony import */ var _svg__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./svg */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/svg.js\");\n/* harmony import */ var _dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dom */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/dom.js\");\n\n\nfunction drawChildren(context, children) {\n children.forEach(function (child) {\n child.draw(context);\n });\n}\n/**\n * 更新元素,包括 group 和 shape\n * @param {IElement} element SVG 元素\n * @param {ChangeType} changeType 更新类型\n */\nfunction refreshElement(element, changeType) {\n // 对于还没有挂载到画布下的元素,canvas 可能为空\n var canvas = element.get('canvas');\n // 只有挂载到画布下,才对元素进行实际渲染\n if (canvas && canvas.get('autoDraw')) {\n var context = canvas.get('context');\n var parent_1 = element.getParent();\n var parentChildren = parent_1 ? parent_1.getChildren() : [canvas];\n var el = element.get('el');\n if (changeType === 'remove') {\n var isClipShape = element.get('isClipShape');\n // 对于 clip,不仅需要将 clipShape 对于的 SVG 元素删除,还需要将上层的 clipPath 元素也删除\n if (isClipShape) {\n var clipPathEl = el && el.parentNode;\n var defsEl = clipPathEl && clipPathEl.parentNode;\n if (clipPathEl && defsEl) {\n defsEl.removeChild(clipPathEl);\n }\n }\n else if (el && el.parentNode) {\n el.parentNode.removeChild(el);\n }\n }\n else if (changeType === 'show') {\n el.setAttribute('visibility', 'visible');\n }\n else if (changeType === 'hide') {\n el.setAttribute('visibility', 'hidden');\n }\n else if (changeType === 'zIndex') {\n Object(_dom__WEBPACK_IMPORTED_MODULE_1__[\"moveTo\"])(el, parentChildren.indexOf(element));\n }\n else if (changeType === 'sort') {\n var children_1 = element.get('children');\n if (children_1 && children_1.length) {\n Object(_dom__WEBPACK_IMPORTED_MODULE_1__[\"sortDom\"])(element, function (a, b) {\n return children_1.indexOf(a) - children_1.indexOf(b) ? 1 : 0;\n });\n }\n }\n else if (changeType === 'clear') {\n // el maybe null for group\n if (el) {\n el.innerHTML = '';\n }\n }\n else if (changeType === 'matrix') {\n Object(_svg__WEBPACK_IMPORTED_MODULE_0__[\"setTransform\"])(element);\n }\n else if (changeType === 'clip') {\n Object(_svg__WEBPACK_IMPORTED_MODULE_0__[\"setClip\"])(element, context);\n }\n else if (changeType === 'attr') {\n // 已在 afterAttrsChange 进行了处理,此处 do nothing\n }\n else if (changeType === 'add') {\n element.draw(context);\n }\n }\n}\n//# sourceMappingURL=draw.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS91dGlsL2RyYXcuanM/MDUyOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQThDO0FBQ047QUFDakM7QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLFdBQVc7QUFDdEI7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLG1EQUFNO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLG9EQUFPO0FBQ3ZCO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVkseURBQVk7QUFDeEI7QUFDQTtBQUNBLFlBQVksb0RBQU87QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS91dGlsL2RyYXcuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzZXRUcmFuc2Zvcm0sIHNldENsaXAgfSBmcm9tICcuL3N2Zyc7XG5pbXBvcnQgeyBzb3J0RG9tLCBtb3ZlVG8gfSBmcm9tICcuL2RvbSc7XG5leHBvcnQgZnVuY3Rpb24gZHJhd0NoaWxkcmVuKGNvbnRleHQsIGNoaWxkcmVuKSB7XG4gICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgY2hpbGQuZHJhdyhjb250ZXh0KTtcbiAgICB9KTtcbn1cbi8qKlxuICog5pu05paw5YWD57Sg77yM5YyF5ousIGdyb3VwIOWSjCBzaGFwZVxuICogQHBhcmFtIHtJRWxlbWVudH0gZWxlbWVudCAgICAgICBTVkcg5YWD57SgXG4gKiBAcGFyYW0ge0NoYW5nZVR5cGV9IGNoYW5nZVR5cGUgIOabtOaWsOexu+Wei1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVmcmVzaEVsZW1lbnQoZWxlbWVudCwgY2hhbmdlVHlwZSkge1xuICAgIC8vIOWvueS6jui/mOayoeacieaMgui9veWIsOeUu+W4g+S4i+eahOWFg+e0oO+8jGNhbnZhcyDlj6/og73kuLrnqbpcbiAgICB2YXIgY2FudmFzID0gZWxlbWVudC5nZXQoJ2NhbnZhcycpO1xuICAgIC8vIOWPquacieaMgui9veWIsOeUu+W4g+S4i++8jOaJjeWvueWFg+e0oOi/m+ihjOWunumZhea4suafk1xuICAgIGlmIChjYW52YXMgJiYgY2FudmFzLmdldCgnYXV0b0RyYXcnKSkge1xuICAgICAgICB2YXIgY29udGV4dCA9IGNhbnZhcy5nZXQoJ2NvbnRleHQnKTtcbiAgICAgICAgdmFyIHBhcmVudF8xID0gZWxlbWVudC5nZXRQYXJlbnQoKTtcbiAgICAgICAgdmFyIHBhcmVudENoaWxkcmVuID0gcGFyZW50XzEgPyBwYXJlbnRfMS5nZXRDaGlsZHJlbigpIDogW2NhbnZhc107XG4gICAgICAgIHZhciBlbCA9IGVsZW1lbnQuZ2V0KCdlbCcpO1xuICAgICAgICBpZiAoY2hhbmdlVHlwZSA9PT0gJ3JlbW92ZScpIHtcbiAgICAgICAgICAgIHZhciBpc0NsaXBTaGFwZSA9IGVsZW1lbnQuZ2V0KCdpc0NsaXBTaGFwZScpO1xuICAgICAgICAgICAgLy8g5a+55LqOIGNsaXDvvIzkuI3ku4XpnIDopoHlsIYgY2xpcFNoYXBlIOWvueS6jueahCBTVkcg5YWD57Sg5Yig6Zmk77yM6L+Y6ZyA6KaB5bCG5LiK5bGC55qEIGNsaXBQYXRoIOWFg+e0oOS5n+WIoOmZpFxuICAgICAgICAgICAgaWYgKGlzQ2xpcFNoYXBlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNsaXBQYXRoRWwgPSBlbCAmJiBlbC5wYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgIHZhciBkZWZzRWwgPSBjbGlwUGF0aEVsICYmIGNsaXBQYXRoRWwucGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICBpZiAoY2xpcFBhdGhFbCAmJiBkZWZzRWwpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVmc0VsLnJlbW92ZUNoaWxkKGNsaXBQYXRoRWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGVsICYmIGVsLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgICAgICBlbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjaGFuZ2VUeXBlID09PSAnc2hvdycpIHtcbiAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsICd2aXNpYmxlJyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY2hhbmdlVHlwZSA9PT0gJ2hpZGUnKSB7XG4gICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCAnaGlkZGVuJyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY2hhbmdlVHlwZSA9PT0gJ3pJbmRleCcpIHtcbiAgICAgICAgICAgIG1vdmVUbyhlbCwgcGFyZW50Q2hpbGRyZW4uaW5kZXhPZihlbGVtZW50KSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY2hhbmdlVHlwZSA9PT0gJ3NvcnQnKSB7XG4gICAgICAgICAgICB2YXIgY2hpbGRyZW5fMSA9IGVsZW1lbnQuZ2V0KCdjaGlsZHJlbicpO1xuICAgICAgICAgICAgaWYgKGNoaWxkcmVuXzEgJiYgY2hpbGRyZW5fMS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBzb3J0RG9tKGVsZW1lbnQsIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbl8xLmluZGV4T2YoYSkgLSBjaGlsZHJlbl8xLmluZGV4T2YoYikgPyAxIDogMDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjaGFuZ2VUeXBlID09PSAnY2xlYXInKSB7XG4gICAgICAgICAgICAvLyBlbCBtYXliZSBudWxsIGZvciBncm91cFxuICAgICAgICAgICAgaWYgKGVsKSB7XG4gICAgICAgICAgICAgICAgZWwuaW5uZXJIVE1MID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY2hhbmdlVHlwZSA9PT0gJ21hdHJpeCcpIHtcbiAgICAgICAgICAgIHNldFRyYW5zZm9ybShlbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjaGFuZ2VUeXBlID09PSAnY2xpcCcpIHtcbiAgICAgICAgICAgIHNldENsaXAoZWxlbWVudCwgY29udGV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY2hhbmdlVHlwZSA9PT0gJ2F0dHInKSB7XG4gICAgICAgICAgICAvLyDlt7LlnKggYWZ0ZXJBdHRyc0NoYW5nZSDov5vooYzkuoblpITnkIbvvIzmraTlpIQgZG8gbm90aGluZ1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNoYW5nZVR5cGUgPT09ICdhZGQnKSB7XG4gICAgICAgICAgICBlbGVtZW50LmRyYXcoY29udGV4dCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kcmF3LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/draw.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/format.js":
/*!************************************************************************!*\
!*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/format.js ***!
\************************************************************************/
/*! exports provided: parseRadius, parsePath */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseRadius\", function() { return parseRadius; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parsePath\", function() { return parsePath; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\nvar regexTags = /[MLHVQTCSAZ]([^MLHVQTCSAZ]*)/gi;\nvar regexDot = /[^\\s,]+/gi;\nfunction parseRadius(radius) {\n var r1 = 0;\n var r2 = 0;\n var r3 = 0;\n var r4 = 0;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(radius)) {\n if (radius.length === 1) {\n r1 = r2 = r3 = r4 = radius[0];\n }\n else if (radius.length === 2) {\n r1 = r3 = radius[0];\n r2 = r4 = radius[1];\n }\n else if (radius.length === 3) {\n r1 = radius[0];\n r2 = r4 = radius[1];\n r3 = radius[2];\n }\n else {\n r1 = radius[0];\n r2 = radius[1];\n r3 = radius[2];\n r4 = radius[3];\n }\n }\n else {\n r1 = r2 = r3 = r4 = radius;\n }\n return {\n r1: r1,\n r2: r2,\n r3: r3,\n r4: r4,\n };\n}\nfunction parsePath(path) {\n path = path || [];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(path)) {\n return path;\n }\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(path)) {\n path = path.match(regexTags);\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(path, function (item, index) {\n item = item.match(regexDot);\n if (item[0].length > 1) {\n var tag = item[0].charAt(0);\n item.splice(1, 0, item[0].substr(1));\n item[0] = tag;\n }\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(item, function (sub, i) {\n if (!isNaN(sub)) {\n item[i] = +sub;\n }\n });\n path[index] = item;\n });\n return path;\n }\n}\n//# sourceMappingURL=format.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS91dGlsL2Zvcm1hdC5qcz9jY2EyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXFEO0FBQ3JEO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSwwREFBTztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0EsUUFBUSwwREFBTztBQUNmO0FBQ0E7QUFDQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0EsUUFBUSx1REFBSTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksdURBQUk7QUFDaEI7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXN2Z0AwLjUuNkBAYW50di9nLXN2Zy9lc20vdXRpbC9mb3JtYXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlYWNoLCBpc0FycmF5LCBpc1N0cmluZyB9IGZyb20gJ0BhbnR2L3V0aWwnO1xudmFyIHJlZ2V4VGFncyA9IC9bTUxIVlFUQ1NBWl0oW15NTEhWUVRDU0FaXSopL2dpO1xudmFyIHJlZ2V4RG90ID0gL1teXFxzLF0rL2dpO1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUmFkaXVzKHJhZGl1cykge1xuICAgIHZhciByMSA9IDA7XG4gICAgdmFyIHIyID0gMDtcbiAgICB2YXIgcjMgPSAwO1xuICAgIHZhciByNCA9IDA7XG4gICAgaWYgKGlzQXJyYXkocmFkaXVzKSkge1xuICAgICAgICBpZiAocmFkaXVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgcjEgPSByMiA9IHIzID0gcjQgPSByYWRpdXNbMF07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocmFkaXVzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgcjEgPSByMyA9IHJhZGl1c1swXTtcbiAgICAgICAgICAgIHIyID0gcjQgPSByYWRpdXNbMV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocmFkaXVzLmxlbmd0aCA9PT0gMykge1xuICAgICAgICAgICAgcjEgPSByYWRpdXNbMF07XG4gICAgICAgICAgICByMiA9IHI0ID0gcmFkaXVzWzFdO1xuICAgICAgICAgICAgcjMgPSByYWRpdXNbMl07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByMSA9IHJhZGl1c1swXTtcbiAgICAgICAgICAgIHIyID0gcmFkaXVzWzFdO1xuICAgICAgICAgICAgcjMgPSByYWRpdXNbMl07XG4gICAgICAgICAgICByNCA9IHJhZGl1c1szXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcjEgPSByMiA9IHIzID0gcjQgPSByYWRpdXM7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHIxOiByMSxcbiAgICAgICAgcjI6IHIyLFxuICAgICAgICByMzogcjMsXG4gICAgICAgIHI0OiByNCxcbiAgICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUGF0aChwYXRoKSB7XG4gICAgcGF0aCA9IHBhdGggfHwgW107XG4gICAgaWYgKGlzQXJyYXkocGF0aCkpIHtcbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxuICAgIGlmIChpc1N0cmluZyhwYXRoKSkge1xuICAgICAgICBwYXRoID0gcGF0aC5tYXRjaChyZWdleFRhZ3MpO1xuICAgICAgICBlYWNoKHBhdGgsIGZ1bmN0aW9uIChpdGVtLCBpbmRleCkge1xuICAgICAgICAgICAgaXRlbSA9IGl0ZW0ubWF0Y2gocmVnZXhEb3QpO1xuICAgICAgICAgICAgaWYgKGl0ZW1bMF0ubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgIHZhciB0YWcgPSBpdGVtWzBdLmNoYXJBdCgwKTtcbiAgICAgICAgICAgICAgICBpdGVtLnNwbGljZSgxLCAwLCBpdGVtWzBdLnN1YnN0cigxKSk7XG4gICAgICAgICAgICAgICAgaXRlbVswXSA9IHRhZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVhY2goaXRlbSwgZnVuY3Rpb24gKHN1YiwgaSkge1xuICAgICAgICAgICAgICAgIGlmICghaXNOYU4oc3ViKSkge1xuICAgICAgICAgICAgICAgICAgICBpdGVtW2ldID0gK3N1YjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHBhdGhbaW5kZXhdID0gaXRlbTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZvcm1hdC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/format.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/svg.js":
/*!*********************************************************************!*\
!*** ./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/svg.js ***!
\*********************************************************************/
/*! exports provided: setShadow, setTransform, setClip */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setShadow\", function() { return setShadow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setTransform\", function() { return setTransform; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setClip\", function() { return setClip; });\n/* harmony import */ var _dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dom */ \"./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/dom.js\");\n\nfunction setShadow(model, context) {\n var el = model.cfg.el;\n var attrs = model.attr();\n var cfg = {\n dx: attrs.shadowOffsetX,\n dy: attrs.shadowOffsetY,\n blur: attrs.shadowBlur,\n color: attrs.shadowColor,\n };\n if (!cfg.dx && !cfg.dy && !cfg.blur && !cfg.color) {\n el.removeAttribute('filter');\n }\n else {\n var id = context.find('filter', cfg);\n if (!id) {\n id = context.addShadow(cfg);\n }\n el.setAttribute('filter', \"url(#\" + id + \")\");\n }\n}\nfunction setTransform(model) {\n var matrix = model.attr().matrix;\n if (matrix) {\n var el = model.cfg.el;\n var transform = [];\n for (var i = 0; i < 9; i += 3) {\n transform.push(matrix[i] + \",\" + matrix[i + 1]);\n }\n transform = transform.join(',');\n if (transform.indexOf('NaN') === -1) {\n el.setAttribute('transform', \"matrix(\" + transform + \")\");\n }\n else {\n console.warn('invalid matrix:', matrix);\n }\n }\n}\nfunction setClip(model, context) {\n var clip = model.getClip();\n var el = model.get('el');\n if (!clip) {\n el.removeAttribute('clip-path');\n }\n else if (clip && !el.hasAttribute('clip-path')) {\n Object(_dom__WEBPACK_IMPORTED_MODULE_0__[\"createDom\"])(clip);\n clip.createPath(context);\n var id = context.addClip(clip);\n el.setAttribute('clip-path', \"url(#\" + id + \")\");\n }\n}\n//# sourceMappingURL=svg.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctc3ZnQDAuNS42QEBhbnR2L2ctc3ZnL2VzbS91dGlsL3N2Zy5qcz9hMDUyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDM0I7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsT0FBTztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHNEQUFTO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy1zdmdAMC41LjZAQGFudHYvZy1zdmcvZXNtL3V0aWwvc3ZnLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlRG9tIH0gZnJvbSAnLi9kb20nO1xuZXhwb3J0IGZ1bmN0aW9uIHNldFNoYWRvdyhtb2RlbCwgY29udGV4dCkge1xuICAgIHZhciBlbCA9IG1vZGVsLmNmZy5lbDtcbiAgICB2YXIgYXR0cnMgPSBtb2RlbC5hdHRyKCk7XG4gICAgdmFyIGNmZyA9IHtcbiAgICAgICAgZHg6IGF0dHJzLnNoYWRvd09mZnNldFgsXG4gICAgICAgIGR5OiBhdHRycy5zaGFkb3dPZmZzZXRZLFxuICAgICAgICBibHVyOiBhdHRycy5zaGFkb3dCbHVyLFxuICAgICAgICBjb2xvcjogYXR0cnMuc2hhZG93Q29sb3IsXG4gICAgfTtcbiAgICBpZiAoIWNmZy5keCAmJiAhY2ZnLmR5ICYmICFjZmcuYmx1ciAmJiAhY2ZnLmNvbG9yKSB7XG4gICAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZSgnZmlsdGVyJyk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB2YXIgaWQgPSBjb250ZXh0LmZpbmQoJ2ZpbHRlcicsIGNmZyk7XG4gICAgICAgIGlmICghaWQpIHtcbiAgICAgICAgICAgIGlkID0gY29udGV4dC5hZGRTaGFkb3coY2ZnKTtcbiAgICAgICAgfVxuICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2ZpbHRlcicsIFwidXJsKCNcIiArIGlkICsgXCIpXCIpO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBzZXRUcmFuc2Zvcm0obW9kZWwpIHtcbiAgICB2YXIgbWF0cml4ID0gbW9kZWwuYXR0cigpLm1hdHJpeDtcbiAgICBpZiAobWF0cml4KSB7XG4gICAgICAgIHZhciBlbCA9IG1vZGVsLmNmZy5lbDtcbiAgICAgICAgdmFyIHRyYW5zZm9ybSA9IFtdO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDk7IGkgKz0gMykge1xuICAgICAgICAgICAgdHJhbnNmb3JtLnB1c2gobWF0cml4W2ldICsgXCIsXCIgKyBtYXRyaXhbaSArIDFdKTtcbiAgICAgICAgfVxuICAgICAgICB0cmFuc2Zvcm0gPSB0cmFuc2Zvcm0uam9pbignLCcpO1xuICAgICAgICBpZiAodHJhbnNmb3JtLmluZGV4T2YoJ05hTicpID09PSAtMSkge1xuICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCd0cmFuc2Zvcm0nLCBcIm1hdHJpeChcIiArIHRyYW5zZm9ybSArIFwiKVwiKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignaW52YWxpZCBtYXRyaXg6JywgbWF0cml4KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBzZXRDbGlwKG1vZGVsLCBjb250ZXh0KSB7XG4gICAgdmFyIGNsaXAgPSBtb2RlbC5nZXRDbGlwKCk7XG4gICAgdmFyIGVsID0gbW9kZWwuZ2V0KCdlbCcpO1xuICAgIGlmICghY2xpcCkge1xuICAgICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoJ2NsaXAtcGF0aCcpO1xuICAgIH1cbiAgICBlbHNlIGlmIChjbGlwICYmICFlbC5oYXNBdHRyaWJ1dGUoJ2NsaXAtcGF0aCcpKSB7XG4gICAgICAgIGNyZWF0ZURvbShjbGlwKTtcbiAgICAgICAgY2xpcC5jcmVhdGVQYXRoKGNvbnRleHQpO1xuICAgICAgICB2YXIgaWQgPSBjb250ZXh0LmFkZENsaXAoY2xpcCk7XG4gICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnY2xpcC1wYXRoJywgXCJ1cmwoI1wiICsgaWQgKyBcIilcIik7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3ZnLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-svg@0.5.6@@antv/g-svg/esm/util/svg.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/ComponentManager.js":
/*!********************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/ComponentManager.js ***!
\********************************************************************************************/
/*! exports provided: Component, ComponentManager */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Component\", function() { return Component; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ComponentManager\", function() { return ComponentManager; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__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@7.16.3@@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_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/_@babel_runtime@7.16.3@@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_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@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 _Entity__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Entity */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/Entity.js\");\n\n\n\n\n\nvar Component = function Component(data) {//\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, Component);\n};\n/**\n * 管理某一类 Component,尽可能做到 AoS 而非 SoA\n * @see https://wickedengine.net/2019/09/29/entity-component-system/\n * @see https://github.com/turanszkij/WickedEngine/blob/master/WickedEngine/wiECS.h\n */\n// tslint:disable-next-line:max-classes-per-file\n\nvar ComponentManager = /*#__PURE__*/function () {\n /**\n * 不在 Entity 中维护拥有的 Component 列表,反之亦然\n */\n function ComponentManager(clazz) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, ComponentManager);\n\n this.clazz = void 0;\n this.components = [];\n this.entities = [];\n this.lookup = {};\n this.clazz = clazz;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(ComponentManager, [{\n key: \"clear\",\n value: function clear() {\n this.components = [];\n this.entities = [];\n this.lookup = {};\n }\n }, {\n key: \"contains\",\n value: function contains(entity) {\n return this.lookup[entity] > -1;\n }\n }, {\n key: \"create\",\n value: function create(entity, data) {\n this.lookup[entity] = this.components.length;\n var component = new this.clazz(data || {});\n this.components.push(component);\n this.entities.push(entity);\n return component;\n }\n }, {\n key: \"remove\",\n value: function remove(entity) {\n var componentIndex = this.lookup[entity];\n\n if (componentIndex > -1) {\n if (componentIndex < this.components.length - 1) {\n // 将待删除元素和最后一个元素交换\n // C++ 中有 std::move 这样的操作,避免数据的拷贝\n // @see https://github.com/turanszkij/WickedEngine/blob/master/WickedEngine/wiECS.h#L169\n this.components[componentIndex] = this.components[this.components.length - 1];\n this.entities[componentIndex] = this.entities[this.entities.length - 1];\n this.lookup[this.entities[componentIndex]] = componentIndex;\n }\n } // 待删除元素已经移动到了最后一个\n\n\n this.components.pop();\n this.entities.pop();\n delete this.lookup[entity];\n }\n }, {\n key: \"removeKeepSorted\",\n value: function removeKeepSorted(entity) {\n var componentIndex = this.lookup[entity];\n\n if (componentIndex > -1) {\n var entity2 = this.entities[componentIndex];\n\n if (componentIndex < this.components.length - 1) {\n // Move every component left by one that is after this element:\n for (var _i = componentIndex + 1; _i < this.components.length; ++_i) {\n this.components[_i - 1] = this.components[_i];\n } // Move every entity left by one that is after this element and update lut:\n\n\n for (var _i2 = componentIndex + 1; _i2 < this.entities.length; ++_i2) {\n this.entities[_i2 - 1] = this.entities[_i2];\n this.lookup[this.entities[_i2 - 1]] = _i2 - 1;\n }\n }\n\n this.components.pop();\n this.entities.pop();\n delete this.lookup[entity2];\n }\n }\n }, {\n key: \"moveItem\",\n value: function moveItem(srcIndex, destIndex) {\n if (srcIndex === destIndex) {\n return;\n } // Save the moved component and entity:\n\n\n var srcComponent = this.components[srcIndex];\n var srcEntity = this.entities[srcIndex]; // Every other entity-component that's in the way gets moved by one and lut is kept updated:\n\n var direction = srcIndex < destIndex ? 1 : -1;\n\n for (var _i3 = srcIndex; _i3 !== destIndex; _i3 += direction) {\n var next = _i3 + direction;\n this.components[_i3] = this.components[next];\n this.entities[_i3] = this.entities[next];\n this.lookup[this.entities[_i3]] = _i3;\n } // Saved entity-component moved to the required position:\n\n\n this.components[destIndex] = srcComponent;\n this.entities[destIndex] = srcEntity;\n this.lookup[srcEntity] = destIndex;\n }\n }, {\n key: \"getEntity\",\n value: function getEntity(index) {\n return this.entities[index];\n }\n /**\n * 由于缺少类似 C++ 的重载操作符,没法通过 [下标] 直接访问。因此只能增加该方法用于遍历。\n */\n\n }, {\n key: \"getComponent\",\n value: function getComponent(index) {\n return this.components[index];\n }\n }, {\n key: \"getComponentByEntity\",\n value: function getComponentByEntity(entity) {\n var componentIndex = this.lookup[entity];\n\n if (componentIndex > -1) {\n return this.components[componentIndex];\n }\n\n return null;\n }\n }, {\n key: \"getCount\",\n value: function getCount() {\n return this.components.length;\n }\n }, {\n key: \"getEntityByComponentIndex\",\n value: function getEntityByComponentIndex(componentIdx) {\n for (var _i4 = 0, _Object$keys = Object.keys(this.lookup); _i4 < _Object$keys.length; _i4++) {\n var _entity = _Object$keys[_i4];\n var entityInNum = Number(_entity);\n\n if (this.lookup[entityInNum] === componentIdx) {\n return entityInNum;\n }\n }\n\n return _Entity__WEBPACK_IMPORTED_MODULE_4__[\"EMPTY\"];\n }\n }, {\n key: \"find\",\n value: function find(callback) {\n for (var _i5 = 0; _i5 < this.getCount(); _i5++) {\n var _component = this.getComponent(_i5);\n\n if (callback(_component, _i5)) {\n return _component;\n }\n }\n\n return null;\n }\n }, {\n key: \"findIndex\",\n value: function findIndex(callback) {\n for (var _i6 = 0; _i6 < this.getCount(); _i6++) {\n var _component2 = this.getComponent(_i6);\n\n if (callback(_component2, _i6)) {\n return _i6;\n }\n }\n\n return -1;\n }\n }, {\n key: \"forEach\",\n value: function forEach(callback) {\n for (var _i7 = 0, _Object$keys2 = Object.keys(this.lookup); _i7 < _Object$keys2.length; _i7++) {\n var _entity2 = _Object$keys2[_i7];\n var entityInNum = Number(_entity2);\n var componentIndex = this.lookup[entityInNum];\n callback(entityInNum, this.getComponent(componentIndex));\n }\n }\n }, {\n key: \"forEachAsync\",\n value: function () {\n var _forEachAsync = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(callback) {\n var _i8, _Object$keys3, _entity3, entityInNum, componentIndex;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _i8 = 0, _Object$keys3 = Object.keys(this.lookup);\n\n case 1:\n if (!(_i8 < _Object$keys3.length)) {\n _context.next = 10;\n break;\n }\n\n _entity3 = _Object$keys3[_i8];\n entityInNum = Number(_entity3);\n componentIndex = this.lookup[entityInNum];\n _context.next = 7;\n return callback(entityInNum, this.getComponent(componentIndex));\n\n case 7:\n _i8++;\n _context.next = 1;\n break;\n\n case 10:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function forEachAsync(_x) {\n return _forEachAsync.apply(this, arguments);\n }\n\n return forEachAsync;\n }()\n }, {\n key: \"map\",\n value: function map(callback) {\n var result = [];\n\n for (var _i9 = 0, _Object$keys4 = Object.keys(this.lookup); _i9 < _Object$keys4.length; _i9++) {\n var _entity4 = _Object$keys4[_i9];\n var entityInNum = Number(_entity4);\n var componentIndex = this.lookup[entityInNum];\n result.push(callback(entityInNum, this.getComponent(componentIndex)));\n }\n\n return result;\n }\n }]);\n\n return ComponentManager;\n}();\n//# sourceMappingURL=ComponentManager.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9Db21wb25lbnRNYW5hZ2VyLmpzPzFlMGYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZEO0FBQ1c7QUFDVjtBQUNNO0FBQ25DO0FBQzFCLDBDQUEwQzs7QUFFakQsRUFBRSw0RUFBZTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsK0NBQStDO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMkNBQTJDLDZCQUE2QjtBQUN4RTtBQUNBLFdBQVc7OztBQUdYLDRDQUE0Qyw0QkFBNEI7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0EsOENBQThDOztBQUU5Qzs7QUFFQSw4QkFBOEIsbUJBQW1CO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsZ0VBQWdFLDJCQUEyQjtBQUMzRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGFBQWEsNkNBQUs7QUFDbEI7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHVCQUF1Qix1QkFBdUI7QUFDOUM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsdUJBQXVCLHVCQUF1QjtBQUM5Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxpRUFBaUUsNEJBQTRCO0FBQzdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsMEJBQTBCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUM3RTs7QUFFQSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBLGlFQUFpRSw0QkFBNEI7QUFDN0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL0NvbXBvbmVudE1hbmFnZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX3JlZ2VuZXJhdG9yUnVudGltZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3JcIjtcbmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgeyBFTVBUWSB9IGZyb20gJy4vRW50aXR5JztcbmV4cG9ydCB2YXIgQ29tcG9uZW50ID0gZnVuY3Rpb24gQ29tcG9uZW50KGRhdGEpIHsvL1xuXG4gIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDb21wb25lbnQpO1xufTtcbi8qKlxuICog566h55CG5p+Q5LiA57G7IENvbXBvbmVudO+8jOWwveWPr+iDveWBmuWIsCBBb1Mg6ICM6Z2eIFNvQVxuICogQHNlZSBodHRwczovL3dpY2tlZGVuZ2luZS5uZXQvMjAxOS8wOS8yOS9lbnRpdHktY29tcG9uZW50LXN5c3RlbS9cbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3R1cmFuc3praWovV2lja2VkRW5naW5lL2Jsb2IvbWFzdGVyL1dpY2tlZEVuZ2luZS93aUVDUy5oXG4gKi9cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtY2xhc3Nlcy1wZXItZmlsZVxuXG5leHBvcnQgdmFyIENvbXBvbmVudE1hbmFnZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICog5LiN5ZyoIEVudGl0eSDkuK3nu7TmiqTmi6XmnInnmoQgQ29tcG9uZW50IOWIl+ihqO+8jOWPjeS5i+S6pueEtlxuICAgKi9cbiAgZnVuY3Rpb24gQ29tcG9uZW50TWFuYWdlcihjbGF6eikge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDb21wb25lbnRNYW5hZ2VyKTtcblxuICAgIHRoaXMuY2xhenogPSB2b2lkIDA7XG4gICAgdGhpcy5jb21wb25lbnRzID0gW107XG4gICAgdGhpcy5lbnRpdGllcyA9IFtdO1xuICAgIHRoaXMubG9va3VwID0ge307XG4gICAgdGhpcy5jbGF6eiA9IGNsYXp6O1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKENvbXBvbmVudE1hbmFnZXIsIFt7XG4gICAga2V5OiBcImNsZWFyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNsZWFyKCkge1xuICAgICAgdGhpcy5jb21wb25lbnRzID0gW107XG4gICAgICB0aGlzLmVudGl0aWVzID0gW107XG4gICAgICB0aGlzLmxvb2t1cCA9IHt9O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb250YWluc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb250YWlucyhlbnRpdHkpIHtcbiAgICAgIHJldHVybiB0aGlzLmxvb2t1cFtlbnRpdHldID4gLTE7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNyZWF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGUoZW50aXR5LCBkYXRhKSB7XG4gICAgICB0aGlzLmxvb2t1cFtlbnRpdHldID0gdGhpcy5jb21wb25lbnRzLmxlbmd0aDtcbiAgICAgIHZhciBjb21wb25lbnQgPSBuZXcgdGhpcy5jbGF6eihkYXRhIHx8IHt9KTtcbiAgICAgIHRoaXMuY29tcG9uZW50cy5wdXNoKGNvbXBvbmVudCk7XG4gICAgICB0aGlzLmVudGl0aWVzLnB1c2goZW50aXR5KTtcbiAgICAgIHJldHVybiBjb21wb25lbnQ7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbW92ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW1vdmUoZW50aXR5KSB7XG4gICAgICB2YXIgY29tcG9uZW50SW5kZXggPSB0aGlzLmxvb2t1cFtlbnRpdHldO1xuXG4gICAgICBpZiAoY29tcG9uZW50SW5kZXggPiAtMSkge1xuICAgICAgICBpZiAoY29tcG9uZW50SW5kZXggPCB0aGlzLmNvbXBvbmVudHMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIC8vIOWwhuW+heWIoOmZpOWFg+e0oOWSjOacgOWQjuS4gOS4quWFg+e0oOS6pOaNolxuICAgICAgICAgIC8vIEMrKyDkuK3mnIkgc3RkOjptb3ZlIOi/meagt+eahOaTjeS9nO+8jOmBv+WFjeaVsOaNrueahOaLt+i0nVxuICAgICAgICAgIC8vIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3R1cmFuc3praWovV2lja2VkRW5naW5lL2Jsb2IvbWFzdGVyL1dpY2tlZEVuZ2luZS93aUVDUy5oI0wxNjlcbiAgICAgICAgICB0aGlzLmNvbXBvbmVudHNbY29tcG9uZW50SW5kZXhdID0gdGhpcy5jb21wb25lbnRzW3RoaXMuY29tcG9uZW50cy5sZW5ndGggLSAxXTtcbiAgICAgICAgICB0aGlzLmVudGl0aWVzW2NvbXBvbmVudEluZGV4XSA9IHRoaXMuZW50aXRpZXNbdGhpcy5lbnRpdGllcy5sZW5ndGggLSAxXTtcbiAgICAgICAgICB0aGlzLmxvb2t1cFt0aGlzLmVudGl0aWVzW2NvbXBvbmVudEluZGV4XV0gPSBjb21wb25lbnRJbmRleDtcbiAgICAgICAgfVxuICAgICAgfSAvLyDlvoXliKDpmaTlhYPntKDlt7Lnu4/np7vliqjliLDkuobmnIDlkI7kuIDkuKpcblxuXG4gICAgICB0aGlzLmNvbXBvbmVudHMucG9wKCk7XG4gICAgICB0aGlzLmVudGl0aWVzLnBvcCgpO1xuICAgICAgZGVsZXRlIHRoaXMubG9va3VwW2VudGl0eV07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbW92ZUtlZXBTb3J0ZWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVtb3ZlS2VlcFNvcnRlZChlbnRpdHkpIHtcbiAgICAgIHZhciBjb21wb25lbnRJbmRleCA9IHRoaXMubG9va3VwW2VudGl0eV07XG5cbiAgICAgIGlmIChjb21wb25lbnRJbmRleCA+IC0xKSB7XG4gICAgICAgIHZhciBlbnRpdHkyID0gdGhpcy5lbnRpdGllc1tjb21wb25lbnRJbmRleF07XG5cbiAgICAgICAgaWYgKGNvbXBvbmVudEluZGV4IDwgdGhpcy5jb21wb25lbnRzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAvLyBNb3ZlIGV2ZXJ5IGNvbXBvbmVudCBsZWZ0IGJ5IG9uZSB0aGF0IGlzIGFmdGVyIHRoaXMgZWxlbWVudDpcbiAgICAgICAgICBmb3IgKHZhciBfaSA9IGNvbXBvbmVudEluZGV4ICsgMTsgX2kgPCB0aGlzLmNvbXBvbmVudHMubGVuZ3RoOyArK19pKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudHNbX2kgLSAxXSA9IHRoaXMuY29tcG9uZW50c1tfaV07XG4gICAgICAgICAgfSAvLyBNb3ZlIGV2ZXJ5IGVudGl0eSBsZWZ0IGJ5IG9uZSB0aGF0IGlzIGFmdGVyIHRoaXMgZWxlbWVudCBhbmQgdXBkYXRlIGx1dDpcblxuXG4gICAgICAgICAgZm9yICh2YXIgX2kyID0gY29tcG9uZW50SW5kZXggKyAxOyBfaTIgPCB0aGlzLmVudGl0aWVzLmxlbmd0aDsgKytfaTIpIHtcbiAgICAgICAgICAgIHRoaXMuZW50aXRpZXNbX2kyIC0gMV0gPSB0aGlzLmVudGl0aWVzW19pMl07XG4gICAgICAgICAgICB0aGlzLmxvb2t1cFt0aGlzLmVudGl0aWVzW19pMiAtIDFdXSA9IF9pMiAtIDE7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb21wb25lbnRzLnBvcCgpO1xuICAgICAgICB0aGlzLmVudGl0aWVzLnBvcCgpO1xuICAgICAgICBkZWxldGUgdGhpcy5sb29rdXBbZW50aXR5Ml07XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIm1vdmVJdGVtXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG1vdmVJdGVtKHNyY0luZGV4LCBkZXN0SW5kZXgpIHtcbiAgICAgIGlmIChzcmNJbmRleCA9PT0gZGVzdEluZGV4KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gLy8gU2F2ZSB0aGUgbW92ZWQgY29tcG9uZW50IGFuZCBlbnRpdHk6XG5cblxuICAgICAgdmFyIHNyY0NvbXBvbmVudCA9IHRoaXMuY29tcG9uZW50c1tzcmNJbmRleF07XG4gICAgICB2YXIgc3JjRW50aXR5ID0gdGhpcy5lbnRpdGllc1tzcmNJbmRleF07IC8vIEV2ZXJ5IG90aGVyIGVudGl0eS1jb21wb25lbnQgdGhhdCdzIGluIHRoZSB3YXkgZ2V0cyBtb3ZlZCBieSBvbmUgYW5kIGx1dCBpcyBrZXB0IHVwZGF0ZWQ6XG5cbiAgICAgIHZhciBkaXJlY3Rpb24gPSBzcmNJbmRleCA8IGRlc3RJbmRleCA/IDEgOiAtMTtcblxuICAgICAgZm9yICh2YXIgX2kzID0gc3JjSW5kZXg7IF9pMyAhPT0gZGVzdEluZGV4OyBfaTMgKz0gZGlyZWN0aW9uKSB7XG4gICAgICAgIHZhciBuZXh0ID0gX2kzICsgZGlyZWN0aW9uO1xuICAgICAgICB0aGlzLmNvbXBvbmVudHNbX2kzXSA9IHRoaXMuY29tcG9uZW50c1tuZXh0XTtcbiAgICAgICAgdGhpcy5lbnRpdGllc1tfaTNdID0gdGhpcy5lbnRpdGllc1tuZXh0XTtcbiAgICAgICAgdGhpcy5sb29rdXBbdGhpcy5lbnRpdGllc1tfaTNdXSA9IF9pMztcbiAgICAgIH0gLy8gU2F2ZWQgZW50aXR5LWNvbXBvbmVudCBtb3ZlZCB0byB0aGUgcmVxdWlyZWQgcG9zaXRpb246XG5cblxuICAgICAgdGhpcy5jb21wb25lbnRzW2Rlc3RJbmRleF0gPSBzcmNDb21wb25lbnQ7XG4gICAgICB0aGlzLmVudGl0aWVzW2Rlc3RJbmRleF0gPSBzcmNFbnRpdHk7XG4gICAgICB0aGlzLmxvb2t1cFtzcmNFbnRpdHldID0gZGVzdEluZGV4O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRFbnRpdHlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RW50aXR5KGluZGV4KSB7XG4gICAgICByZXR1cm4gdGhpcy5lbnRpdGllc1tpbmRleF07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOeUseS6jue8uuWwkeexu+S8vCBDKysg55qE6YeN6L295pON5L2c56ym77yM5rKh5rOV6YCa6L+HIFvkuIvmoIddIOebtOaOpeiuv+mXruOAguWboOatpOWPquiDveWinuWKoOivpeaWueazleeUqOS6jumBjeWOhuOAglxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Q29tcG9uZW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldENvbXBvbmVudChpbmRleCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29tcG9uZW50c1tpbmRleF07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldENvbXBvbmVudEJ5RW50aXR5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldENvbXBvbmVudEJ5RW50aXR5KGVudGl0eSkge1xuICAgICAgdmFyIGNvbXBvbmVudEluZGV4ID0gdGhpcy5sb29rdXBbZW50aXR5XTtcblxuICAgICAgaWYgKGNvbXBvbmVudEluZGV4ID4gLTEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcG9uZW50c1tjb21wb25lbnRJbmRleF07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRDb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDb3VudCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbXBvbmVudHMubGVuZ3RoO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRFbnRpdHlCeUNvbXBvbmVudEluZGV4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEVudGl0eUJ5Q29tcG9uZW50SW5kZXgoY29tcG9uZW50SWR4KSB7XG4gICAgICBmb3IgKHZhciBfaTQgPSAwLCBfT2JqZWN0JGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLmxvb2t1cCk7IF9pNCA8IF9PYmplY3Qka2V5cy5sZW5ndGg7IF9pNCsrKSB7XG4gICAgICAgIHZhciBfZW50aXR5ID0gX09iamVjdCRrZXlzW19pNF07XG4gICAgICAgIHZhciBlbnRpdHlJbk51bSA9IE51bWJlcihfZW50aXR5KTtcblxuICAgICAgICBpZiAodGhpcy5sb29rdXBbZW50aXR5SW5OdW1dID09PSBjb21wb25lbnRJZHgpIHtcbiAgICAgICAgICByZXR1cm4gZW50aXR5SW5OdW07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIEVNUFRZO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJmaW5kXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGZpbmQoY2FsbGJhY2spIHtcbiAgICAgIGZvciAodmFyIF9pNSA9IDA7IF9pNSA8IHRoaXMuZ2V0Q291bnQoKTsgX2k1KyspIHtcbiAgICAgICAgdmFyIF9jb21wb25lbnQgPSB0aGlzLmdldENvbXBvbmVudChfaTUpO1xuXG4gICAgICAgIGlmIChjYWxsYmFjayhfY29tcG9uZW50LCBfaTUpKSB7XG4gICAgICAgICAgcmV0dXJuIF9jb21wb25lbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImZpbmRJbmRleFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmaW5kSW5kZXgoY2FsbGJhY2spIHtcbiAgICAgIGZvciAodmFyIF9pNiA9IDA7IF9pNiA8IHRoaXMuZ2V0Q291bnQoKTsgX2k2KyspIHtcbiAgICAgICAgdmFyIF9jb21wb25lbnQyID0gdGhpcy5nZXRDb21wb25lbnQoX2k2KTtcblxuICAgICAgICBpZiAoY2FsbGJhY2soX2NvbXBvbmVudDIsIF9pNikpIHtcbiAgICAgICAgICByZXR1cm4gX2k2O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZm9yRWFjaFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmb3JFYWNoKGNhbGxiYWNrKSB7XG4gICAgICBmb3IgKHZhciBfaTcgPSAwLCBfT2JqZWN0JGtleXMyID0gT2JqZWN0LmtleXModGhpcy5sb29rdXApOyBfaTcgPCBfT2JqZWN0JGtleXMyLmxlbmd0aDsgX2k3KyspIHtcbiAgICAgICAgdmFyIF9lbnRpdHkyID0gX09iamVjdCRrZXlzMltfaTddO1xuICAgICAgICB2YXIgZW50aXR5SW5OdW0gPSBOdW1iZXIoX2VudGl0eTIpO1xuICAgICAgICB2YXIgY29tcG9uZW50SW5kZXggPSB0aGlzLmxvb2t1cFtlbnRpdHlJbk51bV07XG4gICAgICAgIGNhbGxiYWNrKGVudGl0eUluTnVtLCB0aGlzLmdldENvbXBvbmVudChjb21wb25lbnRJbmRleCkpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJmb3JFYWNoQXN5bmNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9mb3JFYWNoQXN5bmMgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKGNhbGxiYWNrKSB7XG4gICAgICAgIHZhciBfaTgsIF9PYmplY3Qka2V5czMsIF9lbnRpdHkzLCBlbnRpdHlJbk51bSwgY29tcG9uZW50SW5kZXg7XG5cbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBfaTggPSAwLCBfT2JqZWN0JGtleXMzID0gT2JqZWN0LmtleXModGhpcy5sb29rdXApO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICBpZiAoIShfaTggPCBfT2JqZWN0JGtleXMzLmxlbmd0aCkpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxMDtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIF9lbnRpdHkzID0gX09iamVjdCRrZXlzM1tfaThdO1xuICAgICAgICAgICAgICAgIGVudGl0eUluTnVtID0gTnVtYmVyKF9lbnRpdHkzKTtcbiAgICAgICAgICAgICAgICBjb21wb25lbnRJbmRleCA9IHRoaXMubG9va3VwW2VudGl0eUluTnVtXTtcbiAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gNztcbiAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZW50aXR5SW5OdW0sIHRoaXMuZ2V0Q29tcG9uZW50KGNvbXBvbmVudEluZGV4KSk7XG5cbiAgICAgICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgICAgIF9pOCsrO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZSwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGZvckVhY2hBc3luYyhfeCkge1xuICAgICAgICByZXR1cm4gX2ZvckVhY2hBc3luYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm9yRWFjaEFzeW5jO1xuICAgIH0oKVxuICB9LCB7XG4gICAga2V5OiBcIm1hcFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBtYXAoY2FsbGJhY2spIHtcbiAgICAgIHZhciByZXN1bHQgPSBbXTtcblxuICAgICAgZm9yICh2YXIgX2k5ID0gMCwgX09iamVjdCRrZXlzNCA9IE9iamVjdC5rZXlzKHRoaXMubG9va3VwKTsgX2k5IDwgX09iamVjdCRrZXlzNC5sZW5ndGg7IF9pOSsrKSB7XG4gICAgICAgIHZhciBfZW50aXR5NCA9IF9PYmplY3Qka2V5czRbX2k5XTtcbiAgICAgICAgdmFyIGVudGl0eUluTnVtID0gTnVtYmVyKF9lbnRpdHk0KTtcbiAgICAgICAgdmFyIGNvbXBvbmVudEluZGV4ID0gdGhpcy5sb29rdXBbZW50aXR5SW5OdW1dO1xuICAgICAgICByZXN1bHQucHVzaChjYWxsYmFjayhlbnRpdHlJbk51bSwgdGhpcy5nZXRDb21wb25lbnQoY29tcG9uZW50SW5kZXgpKSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIENvbXBvbmVudE1hbmFnZXI7XG59KCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Db21wb25lbnRNYW5hZ2VyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/ComponentManager.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/Entity.js":
/*!**********************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/Entity.js ***!
\**********************************************************************************/
/*! exports provided: EMPTY, createEntity */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EMPTY\", function() { return EMPTY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createEntity\", function() { return createEntity; });\nvar EMPTY = -1;\nvar entitySequence = 1;\n/**\n * 类似关系型数据库的主键\n * TODO: 自动生成,考虑序列化\n */\n\nfunction createEntity() {\n return entitySequence++;\n}\n//# sourceMappingURL=Entity.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9FbnRpdHkuanM/YjMyOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9FbnRpdHkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIEVNUFRZID0gLTE7XG52YXIgZW50aXR5U2VxdWVuY2UgPSAxO1xuLyoqXG4gKiDnsbvkvLzlhbPns7vlnovmlbDmja7lupPnmoTkuLvplK5cbiAqIFRPRE86IOiHquWKqOeUn+aIkO+8jOiAg+iZkeW6j+WIl+WMllxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFbnRpdHkoKSB7XG4gIHJldHVybiBlbnRpdHlTZXF1ZW5jZSsrO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RW50aXR5LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/Entity.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/FrameGraphHandle.js":
/*!******************************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/FrameGraphHandle.js ***!
\******************************************************************************************************************/
/*! exports provided: FrameGraphHandle */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FrameGraphHandle\", function() { return FrameGraphHandle; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@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\nvar FrameGraphHandle = function FrameGraphHandle() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, FrameGraphHandle);\n\n this.index = void 0;\n};\n//# sourceMappingURL=FrameGraphHandle.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvRnJhbWVHcmFwaEhhbmRsZS5qcz80Yzc2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQzdEO0FBQ1AsRUFBRSw0RUFBZTs7QUFFakI7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9mcmFtZWdyYXBoL0ZyYW1lR3JhcGhIYW5kbGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5leHBvcnQgdmFyIEZyYW1lR3JhcGhIYW5kbGUgPSBmdW5jdGlvbiBGcmFtZUdyYXBoSGFuZGxlKCkge1xuICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRnJhbWVHcmFwaEhhbmRsZSk7XG5cbiAgdGhpcy5pbmRleCA9IHZvaWQgMDtcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1GcmFtZUdyYXBoSGFuZGxlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/FrameGraphHandle.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/FrameGraphPass.js":
/*!****************************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/FrameGraphPass.js ***!
\****************************************************************************************************************/
/*! exports provided: FrameGraphPass */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FrameGraphPass\", function() { return FrameGraphPass; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@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\nvar FrameGraphPass = function FrameGraphPass() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, FrameGraphPass);\n\n this.name = void 0;\n this.data = void 0;\n this.execute = void 0;\n this.tearDown = void 0;\n};\n//# sourceMappingURL=FrameGraphPass.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvRnJhbWVHcmFwaFBhc3MuanM/ODAwZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvRTtBQUM3RDtBQUNQLEVBQUUsNEVBQWU7O0FBRWpCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvZnJhbWVncmFwaC9GcmFtZUdyYXBoUGFzcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmV4cG9ydCB2YXIgRnJhbWVHcmFwaFBhc3MgPSBmdW5jdGlvbiBGcmFtZUdyYXBoUGFzcygpIHtcbiAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEZyYW1lR3JhcGhQYXNzKTtcblxuICB0aGlzLm5hbWUgPSB2b2lkIDA7XG4gIHRoaXMuZGF0YSA9IHZvaWQgMDtcbiAgdGhpcy5leGVjdXRlID0gdm9pZCAwO1xuICB0aGlzLnRlYXJEb3duID0gdm9pZCAwO1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUZyYW1lR3JhcGhQYXNzLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/FrameGraphPass.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/PassNode.js":
/*!**********************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/PassNode.js ***!
\**********************************************************************************************************/
/*! exports provided: PassNode */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PassNode\", function() { return PassNode; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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 PassNode = /*#__PURE__*/function () {\n function PassNode() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, PassNode);\n\n this.name = void 0;\n this.refCount = 0;\n this.hasSideEffect = false;\n this.devirtualize = [];\n this.destroy = [];\n this.reads = [];\n this.writes = [];\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(PassNode, [{\n key: \"read\",\n value: function read(handle) {\n if (!this.reads.find(function (h) {\n return h.index === handle.index;\n })) {\n this.reads.push(handle);\n }\n\n return handle;\n }\n }, {\n key: \"sample\",\n value: function sample(handle) {\n this.read(handle); // TODO: 记录在 this.samples 中\n\n return handle;\n }\n }, {\n key: \"write\",\n value: function write(fg, handle) {\n var existed = this.writes.find(function (h) {\n return h.index === handle.index;\n });\n\n if (existed) {\n return handle;\n }\n\n var node = fg.getResourceNode(handle);\n node.resource.version++;\n\n if (node.resource.imported) {\n this.hasSideEffect = true;\n }\n\n var r = fg.createResourceNode(node.resource);\n var newNode = fg.getResourceNode(r);\n newNode.writer = this;\n this.writes.push(r);\n return r;\n }\n }]);\n\n return PassNode;\n}();\n//# sourceMappingURL=PassNode.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvUGFzc05vZGUuanM/ODdmZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjtBQUN2RDtBQUNQO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSx3QkFBd0I7O0FBRXhCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9mcmFtZWdyYXBoL1Bhc3NOb2RlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuZXhwb3J0IHZhciBQYXNzTm9kZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFBhc3NOb2RlKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBQYXNzTm9kZSk7XG5cbiAgICB0aGlzLm5hbWUgPSB2b2lkIDA7XG4gICAgdGhpcy5yZWZDb3VudCA9IDA7XG4gICAgdGhpcy5oYXNTaWRlRWZmZWN0ID0gZmFsc2U7XG4gICAgdGhpcy5kZXZpcnR1YWxpemUgPSBbXTtcbiAgICB0aGlzLmRlc3Ryb3kgPSBbXTtcbiAgICB0aGlzLnJlYWRzID0gW107XG4gICAgdGhpcy53cml0ZXMgPSBbXTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhQYXNzTm9kZSwgW3tcbiAgICBrZXk6IFwicmVhZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWFkKGhhbmRsZSkge1xuICAgICAgaWYgKCF0aGlzLnJlYWRzLmZpbmQoZnVuY3Rpb24gKGgpIHtcbiAgICAgICAgcmV0dXJuIGguaW5kZXggPT09IGhhbmRsZS5pbmRleDtcbiAgICAgIH0pKSB7XG4gICAgICAgIHRoaXMucmVhZHMucHVzaChoYW5kbGUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaGFuZGxlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzYW1wbGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2FtcGxlKGhhbmRsZSkge1xuICAgICAgdGhpcy5yZWFkKGhhbmRsZSk7IC8vIFRPRE86IOiusOW9leWcqCB0aGlzLnNhbXBsZXMg5LitXG5cbiAgICAgIHJldHVybiBoYW5kbGU7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIndyaXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHdyaXRlKGZnLCBoYW5kbGUpIHtcbiAgICAgIHZhciBleGlzdGVkID0gdGhpcy53cml0ZXMuZmluZChmdW5jdGlvbiAoaCkge1xuICAgICAgICByZXR1cm4gaC5pbmRleCA9PT0gaGFuZGxlLmluZGV4O1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChleGlzdGVkKSB7XG4gICAgICAgIHJldHVybiBoYW5kbGU7XG4gICAgICB9XG5cbiAgICAgIHZhciBub2RlID0gZmcuZ2V0UmVzb3VyY2VOb2RlKGhhbmRsZSk7XG4gICAgICBub2RlLnJlc291cmNlLnZlcnNpb24rKztcblxuICAgICAgaWYgKG5vZGUucmVzb3VyY2UuaW1wb3J0ZWQpIHtcbiAgICAgICAgdGhpcy5oYXNTaWRlRWZmZWN0ID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIHIgPSBmZy5jcmVhdGVSZXNvdXJjZU5vZGUobm9kZS5yZXNvdXJjZSk7XG4gICAgICB2YXIgbmV3Tm9kZSA9IGZnLmdldFJlc291cmNlTm9kZShyKTtcbiAgICAgIG5ld05vZGUud3JpdGVyID0gdGhpcztcbiAgICAgIHRoaXMud3JpdGVzLnB1c2gocik7XG4gICAgICByZXR1cm4gcjtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUGFzc05vZGU7XG59KCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1QYXNzTm9kZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/PassNode.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/ResourceEntry.js":
/*!***************************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/ResourceEntry.js ***!
\***************************************************************************************************************/
/*! exports provided: ResourceEntry */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ResourceEntry\", function() { return ResourceEntry; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__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@7.16.3@@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@7.16.3@@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 _VirtualResource__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./VirtualResource */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/VirtualResource.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\nvar ResourceEntry = /*#__PURE__*/function (_VirtualResource) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default()(ResourceEntry, _VirtualResource);\n\n var _super = _createSuper(ResourceEntry);\n\n function ResourceEntry() {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ResourceEntry);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.version = 0;\n _this.refs = 0;\n _this.name = void 0;\n _this.imported = void 0;\n _this.priority = void 0;\n _this.discardStart = true;\n _this.discardEnd = false;\n _this.descriptor = void 0;\n _this.resource = void 0;\n return _this;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(ResourceEntry, [{\n key: \"preExecuteDestroy\",\n\n /**\n * Lifecycles in FG's execute\n */\n value: function preExecuteDestroy() {\n this.discardEnd = true;\n }\n }, {\n key: \"postExecuteDestroy\",\n value: function postExecuteDestroy() {\n if (!this.imported) {// TODO: 不需要每一帧结束后都销毁资源,可以增加临时资源标志\n // this.resource.destroy();\n }\n }\n }, {\n key: \"postExecuteDevirtualize\",\n value: function postExecuteDevirtualize() {\n this.discardStart = false;\n }\n }, {\n key: \"preExecuteDevirtualize\",\n value: function preExecuteDevirtualize() {\n if (!this.imported) {//\n }\n }\n }]);\n\n return ResourceEntry;\n}(_VirtualResource__WEBPACK_IMPORTED_MODULE_5__[\"VirtualResource\"]);\n//# sourceMappingURL=ResourceEntry.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvUmVzb3VyY2VFbnRyeS5qcz83OTNkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ047QUFDTjtBQUNrQztBQUN0Qjs7QUFFcEUsZ0NBQWdDLDZEQUE2RCx5Q0FBeUMsYUFBYSw0RUFBZSxrQkFBa0IsaUNBQWlDLGlCQUFpQiw0RUFBZSxtQkFBbUIseURBQXlELEVBQUUsT0FBTyx1Q0FBdUMsRUFBRSxRQUFRLHVGQUEwQixlQUFlLEdBQUc7O0FBRXZhLHNDQUFzQyx3RUFBd0UsMENBQTBDLDhDQUE4QyxNQUFNLHdFQUF3RSxHQUFHLGFBQWEsRUFBRSxZQUFZLGNBQWMsRUFBRTs7QUFFOVE7QUFDN0M7QUFDUCxFQUFFLHNFQUFTOztBQUVYOztBQUVBO0FBQ0E7O0FBRUEsSUFBSSw0RUFBZTs7QUFFbkIsdUVBQXVFLGFBQWE7QUFDcEY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQyxDQUFDLGdFQUFlO0FBQ2pCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9mcmFtZWdyYXBoL1Jlc291cmNlRW50cnkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzXCI7XG5pbXBvcnQgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4gZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVyblwiO1xuaW1wb3J0IF9nZXRQcm90b3R5cGVPZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZlwiO1xuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmltcG9ydCB7IFZpcnR1YWxSZXNvdXJjZSB9IGZyb20gJy4vVmlydHVhbFJlc291cmNlJztcbmV4cG9ydCB2YXIgUmVzb3VyY2VFbnRyeSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1ZpcnR1YWxSZXNvdXJjZSkge1xuICBfaW5oZXJpdHMoUmVzb3VyY2VFbnRyeSwgX1ZpcnR1YWxSZXNvdXJjZSk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihSZXNvdXJjZUVudHJ5KTtcblxuICBmdW5jdGlvbiBSZXNvdXJjZUVudHJ5KCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBSZXNvdXJjZUVudHJ5KTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG4gICAgX3RoaXMudmVyc2lvbiA9IDA7XG4gICAgX3RoaXMucmVmcyA9IDA7XG4gICAgX3RoaXMubmFtZSA9IHZvaWQgMDtcbiAgICBfdGhpcy5pbXBvcnRlZCA9IHZvaWQgMDtcbiAgICBfdGhpcy5wcmlvcml0eSA9IHZvaWQgMDtcbiAgICBfdGhpcy5kaXNjYXJkU3RhcnQgPSB0cnVlO1xuICAgIF90aGlzLmRpc2NhcmRFbmQgPSBmYWxzZTtcbiAgICBfdGhpcy5kZXNjcmlwdG9yID0gdm9pZCAwO1xuICAgIF90aGlzLnJlc291cmNlID0gdm9pZCAwO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhSZXNvdXJjZUVudHJ5LCBbe1xuICAgIGtleTogXCJwcmVFeGVjdXRlRGVzdHJveVwiLFxuXG4gICAgLyoqXG4gICAgICogTGlmZWN5Y2xlcyBpbiBGRydzIGV4ZWN1dGVcbiAgICAgKi9cbiAgICB2YWx1ZTogZnVuY3Rpb24gcHJlRXhlY3V0ZURlc3Ryb3koKSB7XG4gICAgICB0aGlzLmRpc2NhcmRFbmQgPSB0cnVlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwb3N0RXhlY3V0ZURlc3Ryb3lcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcG9zdEV4ZWN1dGVEZXN0cm95KCkge1xuICAgICAgaWYgKCF0aGlzLmltcG9ydGVkKSB7Ly8gVE9ETzog5LiN6ZyA6KaB5q+P5LiA5bin57uT5p2f5ZCO6YO96ZSA5q+B6LWE5rqQ77yM5Y+v5Lul5aKe5Yqg5Li05pe26LWE5rqQ5qCH5b+XXG4gICAgICAgIC8vIHRoaXMucmVzb3VyY2UuZGVzdHJveSgpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwb3N0RXhlY3V0ZURldmlydHVhbGl6ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwb3N0RXhlY3V0ZURldmlydHVhbGl6ZSgpIHtcbiAgICAgIHRoaXMuZGlzY2FyZFN0YXJ0ID0gZmFsc2U7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInByZUV4ZWN1dGVEZXZpcnR1YWxpemVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHJlRXhlY3V0ZURldmlydHVhbGl6ZSgpIHtcbiAgICAgIGlmICghdGhpcy5pbXBvcnRlZCkgey8vXG4gICAgICB9XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFJlc291cmNlRW50cnk7XG59KFZpcnR1YWxSZXNvdXJjZSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1SZXNvdXJjZUVudHJ5LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/ResourceEntry.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/ResourceNode.js":
/*!**************************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/ResourceNode.js ***!
\**************************************************************************************************************/
/*! exports provided: ResourceNode */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ResourceNode\", function() { return ResourceNode; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@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\nvar ResourceNode = function ResourceNode() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ResourceNode);\n\n this.resource = void 0;\n this.writer = void 0;\n this.readerCount = 0;\n this.version = void 0;\n};\n//# sourceMappingURL=ResourceNode.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvUmVzb3VyY2VOb2RlLmpzPzBjN2EiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDN0Q7QUFDUCxFQUFFLDRFQUFlOztBQUVqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvUmVzb3VyY2VOb2RlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuZXhwb3J0IHZhciBSZXNvdXJjZU5vZGUgPSBmdW5jdGlvbiBSZXNvdXJjZU5vZGUoKSB7XG4gIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBSZXNvdXJjZU5vZGUpO1xuXG4gIHRoaXMucmVzb3VyY2UgPSB2b2lkIDA7XG4gIHRoaXMud3JpdGVyID0gdm9pZCAwO1xuICB0aGlzLnJlYWRlckNvdW50ID0gMDtcbiAgdGhpcy52ZXJzaW9uID0gdm9pZCAwO1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJlc291cmNlTm9kZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/ResourceNode.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/ResourcePool.js":
/*!**************************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/ResourcePool.js ***!
\**************************************************************************************************************/
/*! exports provided: ResourcePool */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ResourcePool\", function() { return ResourcePool; });\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__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@7.16.3@@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@7.16.3@@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_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../identifier */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/identifier.js\");\n/* harmony import */ var _renderer_gl__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../renderer/gl */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/gl.js\");\n\n\n\n\n\n\nvar _dec, _dec2, _class, _class2, _descriptor, _temp;\n\n\n\n\nvar ResourcePool = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_5__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_5__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_6__[\"IDENTIFIER\"].RenderEngine), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function ResourcePool() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, ResourcePool);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, \"engine\", _descriptor, this);\n\n this.resourcePool = {};\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(ResourcePool, [{\n key: \"getOrCreateResource\",\n\n /**\n * 负责实例化虚拟资源,通过引擎服务\n * @param resource 虚拟资源\n */\n value: function getOrCreateResource(resource) {\n if (!this.resourcePool[resource.name]) {\n var _resource$descriptor = resource.descriptor,\n width = _resource$descriptor.width,\n height = _resource$descriptor.height,\n usage = _resource$descriptor.usage;\n this.resourcePool[resource.name] = this.engine.createFramebuffer({\n color: this.engine.createTexture2D({\n width: width,\n height: height,\n wrapS: _renderer_gl__WEBPACK_IMPORTED_MODULE_7__[\"gl\"].CLAMP_TO_EDGE,\n wrapT: _renderer_gl__WEBPACK_IMPORTED_MODULE_7__[\"gl\"].CLAMP_TO_EDGE,\n usage: usage\n })\n });\n }\n\n return this.resourcePool[resource.name];\n }\n }, {\n key: \"clean\",\n value: function clean() {\n this.resourcePool = {};\n }\n }]);\n\n return ResourcePool;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class2.prototype, \"engine\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=ResourcePool.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvUmVzb3VyY2VQb29sLmpzPzQzZmIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMEY7QUFDdEI7QUFDTjtBQUMwQjtBQUNBOztBQUV4Rjs7QUFFK0M7QUFDRDtBQUNWO0FBQzdCLDJCQUEyQiw0REFBVSxZQUFZLHdEQUFNLENBQUMsc0RBQVU7QUFDekU7QUFDQSxJQUFJLDRFQUFlOztBQUVuQixJQUFJLHVGQUEwQjs7QUFFOUI7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQiwrQ0FBRTtBQUNyQixtQkFBbUIsK0NBQUU7QUFDckI7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQywyQkFBMkIsc0ZBQXlCO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9mcmFtZWdyYXBoL1Jlc291cmNlUG9vbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF90ZW1wO1xuXG5pbXBvcnQgeyBpbmplY3QsIGluamVjdGFibGUgfSBmcm9tICdpbnZlcnNpZnknO1xuaW1wb3J0IHsgSURFTlRJRklFUiB9IGZyb20gJy4uLy4uL2lkZW50aWZpZXInO1xuaW1wb3J0IHsgZ2wgfSBmcm9tICcuLi9yZW5kZXJlci9nbCc7XG5leHBvcnQgdmFyIFJlc291cmNlUG9vbCA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjMiA9IGluamVjdChJREVOVElGSUVSLlJlbmRlckVuZ2luZSksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBSZXNvdXJjZVBvb2woKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJlc291cmNlUG9vbCk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImVuZ2luZVwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG5cbiAgICB0aGlzLnJlc291cmNlUG9vbCA9IHt9O1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFJlc291cmNlUG9vbCwgW3tcbiAgICBrZXk6IFwiZ2V0T3JDcmVhdGVSZXNvdXJjZVwiLFxuXG4gICAgLyoqXG4gICAgICog6LSf6LSj5a6e5L6L5YyW6Jma5ouf6LWE5rqQ77yM6YCa6L+H5byV5pOO5pyN5YqhXG4gICAgICogQHBhcmFtIHJlc291cmNlIOiZmuaLn+i1hOa6kFxuICAgICAqL1xuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRPckNyZWF0ZVJlc291cmNlKHJlc291cmNlKSB7XG4gICAgICBpZiAoIXRoaXMucmVzb3VyY2VQb29sW3Jlc291cmNlLm5hbWVdKSB7XG4gICAgICAgIHZhciBfcmVzb3VyY2UkZGVzY3JpcHRvciA9IHJlc291cmNlLmRlc2NyaXB0b3IsXG4gICAgICAgICAgICB3aWR0aCA9IF9yZXNvdXJjZSRkZXNjcmlwdG9yLndpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0ID0gX3Jlc291cmNlJGRlc2NyaXB0b3IuaGVpZ2h0LFxuICAgICAgICAgICAgdXNhZ2UgPSBfcmVzb3VyY2UkZGVzY3JpcHRvci51c2FnZTtcbiAgICAgICAgdGhpcy5yZXNvdXJjZVBvb2xbcmVzb3VyY2UubmFtZV0gPSB0aGlzLmVuZ2luZS5jcmVhdGVGcmFtZWJ1ZmZlcih7XG4gICAgICAgICAgY29sb3I6IHRoaXMuZW5naW5lLmNyZWF0ZVRleHR1cmUyRCh7XG4gICAgICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgICAgIHdyYXBTOiBnbC5DTEFNUF9UT19FREdFLFxuICAgICAgICAgICAgd3JhcFQ6IGdsLkNMQU1QX1RPX0VER0UsXG4gICAgICAgICAgICB1c2FnZTogdXNhZ2VcbiAgICAgICAgICB9KVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMucmVzb3VyY2VQb29sW3Jlc291cmNlLm5hbWVdO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjbGVhblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjbGVhbigpIHtcbiAgICAgIHRoaXMucmVzb3VyY2VQb29sID0ge307XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFJlc291cmNlUG9vbDtcbn0oKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImVuZ2luZVwiLCBbX2RlYzJdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UmVzb3VyY2VQb29sLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/ResourcePool.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/System.js":
/*!********************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/System.js ***!
\********************************************************************************************************/
/*! exports provided: FrameGraphSystem */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FrameGraphSystem\", function() { return FrameGraphSystem; });\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"./node_modules/_@babel_runtime@7.16.3@@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_regenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@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 _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/_@babel_runtime@7.16.3@@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_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__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@7.16.3@@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@7.16.3@@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_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../identifier */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/identifier.js\");\n/* harmony import */ var _FrameGraphHandle__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./FrameGraphHandle */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/FrameGraphHandle.js\");\n/* harmony import */ var _FrameGraphPass__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./FrameGraphPass */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/FrameGraphPass.js\");\n/* harmony import */ var _PassNode__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./PassNode */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/PassNode.js\");\n/* harmony import */ var _ResourceEntry__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./ResourceEntry */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/ResourceEntry.js\");\n/* harmony import */ var _ResourceNode__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./ResourceNode */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/ResourceNode.js\");\n\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _class, _class2, _descriptor, _temp;\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, 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 normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n\n\n\n\n\n\n\n/**\n * ported from FrameGraph implemented by SakuraRender\n * @see https://zhuanlan.zhihu.com/p/98572442\n * @see https://github.com/SaeruHikari/Sakura/blob/RenderGraph/SakuraCore/Source/Framework/GraphicTypes/FrameGraph/SakuraFrameGraph.cpp\n */\n\nvar FrameGraphSystem = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].RenderEngine), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function FrameGraphSystem() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default()(this, FrameGraphSystem);\n\n this.passNodes = [];\n this.resourceNodes = [];\n this.frameGraphPasses = [];\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, \"engine\", _descriptor, this);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default()(FrameGraphSystem, [{\n key: \"execute\",\n value: function () {\n var _execute = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(function _callee(views) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n // this.engine.beginFrame();\n this.compile();\n _context.next = 3;\n return this.executePassNodes(views);\n\n case 3:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function execute(_x) {\n return _execute.apply(this, arguments);\n }\n\n return execute;\n }()\n }, {\n key: \"tearDown\",\n value: function tearDown() {\n this.frameGraphPasses.forEach(function (pass) {\n if (pass.tearDown) {\n pass.tearDown();\n }\n });\n this.reset();\n }\n }, {\n key: \"addPass\",\n value: function addPass(name, setup, execute, tearDown) {\n var frameGraphPass = new _FrameGraphPass__WEBPACK_IMPORTED_MODULE_11__[\"FrameGraphPass\"]();\n frameGraphPass.execute = execute;\n\n if (tearDown) {\n frameGraphPass.tearDown = tearDown;\n }\n\n frameGraphPass.name = name;\n var passNode = new _PassNode__WEBPACK_IMPORTED_MODULE_12__[\"PassNode\"]();\n passNode.name = name;\n this.passNodes.push(passNode);\n this.frameGraphPasses.push(frameGraphPass);\n setup(this, passNode, frameGraphPass);\n return frameGraphPass;\n }\n }, {\n key: \"getPass\",\n value: function getPass(name) {\n return this.frameGraphPasses.find(function (p) {\n return p.name === name;\n });\n }\n }, {\n key: \"compile\",\n value: function compile() {\n var _this = this;\n\n var _iterator = _createForOfIteratorHelper(this.passNodes),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _pass = _step.value;\n _pass.refCount = _pass.writes.length + (_pass.hasSideEffect ? 1 : 0);\n\n _pass.reads.forEach(function (handle) {\n _this.resourceNodes[handle.index].readerCount++;\n });\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n var stack = [];\n\n var _iterator2 = _createForOfIteratorHelper(this.resourceNodes),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var node = _step2.value;\n\n if (node.readerCount === 0) {\n stack.push(node);\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n while (stack.length) {\n var pNode = stack.pop();\n var writer = pNode && pNode.writer;\n\n if (writer) {\n if (--writer.refCount === 0) {\n // this pass is culled\n // assert(!writer->hasSideEffect);\n var _iterator3 = _createForOfIteratorHelper(writer.reads),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var resource = _step3.value;\n var r = this.resourceNodes[resource.index];\n\n if (--r.readerCount === 0) {\n stack.push(r);\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n }\n } // update the final reference counts\n\n\n this.resourceNodes.forEach(function (node) {\n node.resource.refs += node.readerCount;\n });\n\n var _iterator4 = _createForOfIteratorHelper(this.passNodes),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var _pass2 = _step4.value;\n\n if (!_pass2.refCount) {\n continue;\n }\n\n var _iterator6 = _createForOfIteratorHelper(_pass2.reads),\n _step6;\n\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var _resource2 = _step6.value;\n var pResource = this.resourceNodes[_resource2.index].resource;\n pResource.first = pResource.first ? pResource.first : _pass2;\n pResource.last = _pass2;\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n\n var _iterator7 = _createForOfIteratorHelper(_pass2.writes),\n _step7;\n\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var _resource3 = _step7.value;\n var _pResource = this.resourceNodes[_resource3.index].resource;\n _pResource.first = _pResource.first ? _pResource.first : _pass2;\n _pResource.last = _pass2;\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n\n for (var priority = 0; priority < 2; priority++) {\n var _iterator5 = _createForOfIteratorHelper(this.resourceNodes),\n _step5;\n\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var resoureNode = _step5.value;\n var _resource = resoureNode.resource;\n\n if (_resource.priority === priority && _resource.refs) {\n var pFirst = _resource.first;\n var pLast = _resource.last;\n\n if (pFirst && pLast) {\n pFirst.devirtualize.push(_resource);\n pLast.destroy.push(_resource);\n }\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n }\n }\n }, {\n key: \"executePassNodes\",\n value: function () {\n var _executePassNodes = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(function _callee2(views) {\n var _iterator8, _step8, _step8$value, index, node, _iterator9, _step9, resource, _iterator10, _step10, _resource4, _iterator11, _step11, _resource5, _iterator12, _step12, _resource6;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _iterator8 = _createForOfIteratorHelper(this.passNodes.entries());\n _context2.prev = 1;\n\n _iterator8.s();\n\n case 3:\n if ((_step8 = _iterator8.n()).done) {\n _context2.next = 18;\n break;\n }\n\n _step8$value = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(_step8.value, 2), index = _step8$value[0], node = _step8$value[1];\n\n if (!node.refCount) {\n _context2.next = 16;\n break;\n }\n\n _iterator9 = _createForOfIteratorHelper(node.devirtualize);\n\n try {\n for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {\n resource = _step9.value;\n resource.preExecuteDevirtualize(this.engine);\n }\n } catch (err) {\n _iterator9.e(err);\n } finally {\n _iterator9.f();\n }\n\n _iterator10 = _createForOfIteratorHelper(node.destroy);\n\n try {\n for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {\n _resource4 = _step10.value;\n\n _resource4.preExecuteDestroy(this.engine);\n }\n } catch (err) {\n _iterator10.e(err);\n } finally {\n _iterator10.f();\n }\n\n _context2.next = 12;\n return this.frameGraphPasses[index].execute(this, this.frameGraphPasses[index], views);\n\n case 12:\n _iterator11 = _createForOfIteratorHelper(node.devirtualize);\n\n try {\n for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {\n _resource5 = _step11.value;\n\n _resource5.postExecuteDevirtualize(this.engine);\n }\n } catch (err) {\n _iterator11.e(err);\n } finally {\n _iterator11.f();\n }\n\n _iterator12 = _createForOfIteratorHelper(node.destroy);\n\n try {\n for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {\n _resource6 = _step12.value;\n\n _resource6.postExecuteDestroy(this.engine);\n }\n } catch (err) {\n _iterator12.e(err);\n } finally {\n _iterator12.f();\n }\n\n case 16:\n _context2.next = 3;\n break;\n\n case 18:\n _context2.next = 23;\n break;\n\n case 20:\n _context2.prev = 20;\n _context2.t0 = _context2[\"catch\"](1);\n\n _iterator8.e(_context2.t0);\n\n case 23:\n _context2.prev = 23;\n\n _iterator8.f();\n\n return _context2.finish(23);\n\n case 26:\n this.reset();\n\n case 27:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[1, 20, 23, 26]]);\n }));\n\n function executePassNodes(_x2) {\n return _executePassNodes.apply(this, arguments);\n }\n\n return executePassNodes;\n }()\n }, {\n key: \"reset\",\n value: function reset() {\n this.passNodes = [];\n this.resourceNodes = [];\n this.frameGraphPasses = [];\n }\n }, {\n key: \"getResourceNode\",\n value: function getResourceNode(r) {\n return this.resourceNodes[r.index];\n }\n }, {\n key: \"createResourceNode\",\n value: function createResourceNode(resourceEntry) {\n var resourceNode = new _ResourceNode__WEBPACK_IMPORTED_MODULE_14__[\"ResourceNode\"]();\n resourceNode.resource = resourceEntry;\n resourceNode.version = resourceEntry.version;\n this.resourceNodes.push(resourceNode);\n var fgh = new _FrameGraphHandle__WEBPACK_IMPORTED_MODULE_10__[\"FrameGraphHandle\"]();\n fgh.index = this.resourceNodes.length - 1;\n return fgh;\n }\n }, {\n key: \"createTexture\",\n value: function createTexture(passNode, name, descriptor) {\n var resource = new _ResourceEntry__WEBPACK_IMPORTED_MODULE_13__[\"ResourceEntry\"]();\n resource.name = name;\n resource.descriptor = descriptor;\n return this.createResourceNode(resource);\n }\n }, {\n key: \"createRenderTarget\",\n value: function createRenderTarget(passNode, name, descriptor) {\n var resource = new _ResourceEntry__WEBPACK_IMPORTED_MODULE_13__[\"ResourceEntry\"]();\n resource.name = name;\n resource.descriptor = descriptor;\n return this.createResourceNode(resource);\n }\n }, {\n key: \"present\",\n value: function present(input) {\n this.addPass('Present', function (fg, passNode) {\n passNode.read(input);\n passNode.hasSideEffect = true;\n }, /*#__PURE__*/_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(function _callee3() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n })));\n }\n }]);\n\n return FrameGraphSystem;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default()(_class2.prototype, \"engine\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=System.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvU3lzdGVtLmpzPzA2MDQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrRTtBQUNMO0FBQ1c7QUFDa0I7QUFDdEI7QUFDTjtBQUMwQjtBQUNBOztBQUV4Rjs7QUFFQSx3REFBd0QsUUFBUSxtRUFBbUUsd0hBQXdILGdCQUFnQixXQUFXLHlCQUF5QixTQUFTLHdCQUF3Qiw0QkFBNEIsY0FBYyxTQUFTLDhCQUE4QixFQUFFLHFCQUFxQixVQUFVLEVBQUUsU0FBUyxFQUFFLDhKQUE4SixFQUFFLGtEQUFrRCxTQUFTLGtCQUFrQiwyQkFBMkIsRUFBRSxtQkFBbUIsc0JBQXNCLDhCQUE4QixhQUFhLEVBQUUsc0JBQXNCLGVBQWUsV0FBVyxFQUFFLG1CQUFtQixNQUFNLHlEQUF5RCxFQUFFLFVBQVUsdUJBQXVCLEVBQUUsRUFBRSxHQUFHOztBQUU3OUIsaURBQWlELGdCQUFnQixnRUFBZ0Usd0RBQXdELDZEQUE2RCxzREFBc0Qsa0hBQWtIOztBQUU5WixzQ0FBc0MsdURBQXVELHVDQUF1QyxTQUFTLE9BQU8sa0JBQWtCLEVBQUUsYUFBYTs7QUFFdEk7QUFDRDtBQUNRO0FBQ0o7QUFDWjtBQUNVO0FBQ0Y7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTywrQkFBK0IsNERBQVUsWUFBWSx3REFBTSxDQUFDLHNEQUFVO0FBQzdFO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBOztBQUVBLElBQUksdUZBQTBCO0FBQzlCOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0EscUJBQXFCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUN4RSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsK0JBQStCLCtEQUFjO0FBQzdDOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHlCQUF5QixtREFBUTtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSwyQkFBMkIsK0JBQStCO0FBQzFEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSw0QkFBNEIsaUNBQWlDO0FBQzdEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtDQUFrQyxpQ0FBaUM7QUFDbkU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7O0FBRUE7QUFDQSw0QkFBNEIsaUNBQWlDO0FBQzdEOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsZ0NBQWdDLGlDQUFpQztBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsV0FBVztBQUNYO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLGdDQUFnQyxpQ0FBaUM7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQSw0QkFBNEIsY0FBYztBQUMxQztBQUNBOztBQUVBO0FBQ0EsOEJBQThCLGlDQUFpQztBQUMvRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLDhCQUE4Qiw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDakY7O0FBRUEsZUFBZSxpRUFBbUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLCtCQUErQiwyRUFBYzs7QUFFN0M7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxzQ0FBc0MsaUNBQWlDO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBOztBQUVBOztBQUVBO0FBQ0EsdUNBQXVDLG1DQUFtQztBQUMxRTs7QUFFQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsdUNBQXVDLG1DQUFtQztBQUMxRTs7QUFFQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSx1Q0FBdUMsbUNBQW1DO0FBQzFFOztBQUVBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSw2QkFBNkIsMkRBQVk7QUFDekM7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG1FQUFnQjtBQUNwQztBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHlCQUF5Qiw2REFBYTtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EseUJBQXlCLDZEQUFhO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLGVBQWUsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3pFLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDLDJCQUEyQixzRkFBeUI7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvU3lzdGVtLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9zbGljZWRUb0FycmF5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXlcIjtcbmltcG9ydCBfcmVnZW5lcmF0b3JSdW50aW1lIGZyb20gXCJAYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvclwiO1xuaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF90ZW1wO1xuXG5mdW5jdGlvbiBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihvLCBhbGxvd0FycmF5TGlrZSkgeyB2YXIgaXQ7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcInVuZGVmaW5lZFwiIHx8IG9bU3ltYm9sLml0ZXJhdG9yXSA9PSBudWxsKSB7IGlmIChBcnJheS5pc0FycmF5KG8pIHx8IChpdCA9IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvKSkgfHwgYWxsb3dBcnJheUxpa2UgJiYgbyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHsgaWYgKGl0KSBvID0gaXQ7IHZhciBpID0gMDsgdmFyIEYgPSBmdW5jdGlvbiBGKCkge307IHJldHVybiB7IHM6IEYsIG46IGZ1bmN0aW9uIG4oKSB7IGlmIChpID49IG8ubGVuZ3RoKSByZXR1cm4geyBkb25lOiB0cnVlIH07IHJldHVybiB7IGRvbmU6IGZhbHNlLCB2YWx1ZTogb1tpKytdIH07IH0sIGU6IGZ1bmN0aW9uIGUoX2UpIHsgdGhyb3cgX2U7IH0sIGY6IEYgfTsgfSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH0gdmFyIG5vcm1hbENvbXBsZXRpb24gPSB0cnVlLCBkaWRFcnIgPSBmYWxzZSwgZXJyOyByZXR1cm4geyBzOiBmdW5jdGlvbiBzKCkgeyBpdCA9IG9bU3ltYm9sLml0ZXJhdG9yXSgpOyB9LCBuOiBmdW5jdGlvbiBuKCkgeyB2YXIgc3RlcCA9IGl0Lm5leHQoKTsgbm9ybWFsQ29tcGxldGlvbiA9IHN0ZXAuZG9uZTsgcmV0dXJuIHN0ZXA7IH0sIGU6IGZ1bmN0aW9uIGUoX2UyKSB7IGRpZEVyciA9IHRydWU7IGVyciA9IF9lMjsgfSwgZjogZnVuY3Rpb24gZigpIHsgdHJ5IHsgaWYgKCFub3JtYWxDb21wbGV0aW9uICYmIGl0LnJldHVybiAhPSBudWxsKSBpdC5yZXR1cm4oKTsgfSBmaW5hbGx5IHsgaWYgKGRpZEVycikgdGhyb3cgZXJyOyB9IH0gfTsgfVxuXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cblxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgeyBhcnIyW2ldID0gYXJyW2ldOyB9IHJldHVybiBhcnIyOyB9XG5cbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5pbXBvcnQgeyBJREVOVElGSUVSIH0gZnJvbSAnLi4vLi4vaWRlbnRpZmllcic7XG5pbXBvcnQgeyBGcmFtZUdyYXBoSGFuZGxlIH0gZnJvbSAnLi9GcmFtZUdyYXBoSGFuZGxlJztcbmltcG9ydCB7IEZyYW1lR3JhcGhQYXNzIH0gZnJvbSAnLi9GcmFtZUdyYXBoUGFzcyc7XG5pbXBvcnQgeyBQYXNzTm9kZSB9IGZyb20gJy4vUGFzc05vZGUnO1xuaW1wb3J0IHsgUmVzb3VyY2VFbnRyeSB9IGZyb20gJy4vUmVzb3VyY2VFbnRyeSc7XG5pbXBvcnQgeyBSZXNvdXJjZU5vZGUgfSBmcm9tICcuL1Jlc291cmNlTm9kZSc7XG4vKipcbiAqIHBvcnRlZCBmcm9tIEZyYW1lR3JhcGggaW1wbGVtZW50ZWQgYnkgU2FrdXJhUmVuZGVyXG4gKiBAc2VlIGh0dHBzOi8vemh1YW5sYW4uemhpaHUuY29tL3AvOTg1NzI0NDJcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL1NhZXJ1SGlrYXJpL1Nha3VyYS9ibG9iL1JlbmRlckdyYXBoL1Nha3VyYUNvcmUvU291cmNlL0ZyYW1ld29yay9HcmFwaGljVHlwZXMvRnJhbWVHcmFwaC9TYWt1cmFGcmFtZUdyYXBoLmNwcFxuICovXG5cbmV4cG9ydCB2YXIgRnJhbWVHcmFwaFN5c3RlbSA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjMiA9IGluamVjdChJREVOVElGSUVSLlJlbmRlckVuZ2luZSksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBGcmFtZUdyYXBoU3lzdGVtKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBGcmFtZUdyYXBoU3lzdGVtKTtcblxuICAgIHRoaXMucGFzc05vZGVzID0gW107XG4gICAgdGhpcy5yZXNvdXJjZU5vZGVzID0gW107XG4gICAgdGhpcy5mcmFtZUdyYXBoUGFzc2VzID0gW107XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImVuZ2luZVwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoRnJhbWVHcmFwaFN5c3RlbSwgW3tcbiAgICBrZXk6IFwiZXhlY3V0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2V4ZWN1dGUgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKHZpZXdzKSB7XG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgLy8gdGhpcy5lbmdpbmUuYmVnaW5GcmFtZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuY29tcGlsZSgpO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAzO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmV4ZWN1dGVQYXNzTm9kZXModmlld3MpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlLCB0aGlzKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gZXhlY3V0ZShfeCkge1xuICAgICAgICByZXR1cm4gX2V4ZWN1dGUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGV4ZWN1dGU7XG4gICAgfSgpXG4gIH0sIHtcbiAgICBrZXk6IFwidGVhckRvd25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdGVhckRvd24oKSB7XG4gICAgICB0aGlzLmZyYW1lR3JhcGhQYXNzZXMuZm9yRWFjaChmdW5jdGlvbiAocGFzcykge1xuICAgICAgICBpZiAocGFzcy50ZWFyRG93bikge1xuICAgICAgICAgIHBhc3MudGVhckRvd24oKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLnJlc2V0KCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImFkZFBhc3NcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYWRkUGFzcyhuYW1lLCBzZXR1cCwgZXhlY3V0ZSwgdGVhckRvd24pIHtcbiAgICAgIHZhciBmcmFtZUdyYXBoUGFzcyA9IG5ldyBGcmFtZUdyYXBoUGFzcygpO1xuICAgICAgZnJhbWVHcmFwaFBhc3MuZXhlY3V0ZSA9IGV4ZWN1dGU7XG5cbiAgICAgIGlmICh0ZWFyRG93bikge1xuICAgICAgICBmcmFtZUdyYXBoUGFzcy50ZWFyRG93biA9IHRlYXJEb3duO1xuICAgICAgfVxuXG4gICAgICBmcmFtZUdyYXBoUGFzcy5uYW1lID0gbmFtZTtcbiAgICAgIHZhciBwYXNzTm9kZSA9IG5ldyBQYXNzTm9kZSgpO1xuICAgICAgcGFzc05vZGUubmFtZSA9IG5hbWU7XG4gICAgICB0aGlzLnBhc3NOb2Rlcy5wdXNoKHBhc3NOb2RlKTtcbiAgICAgIHRoaXMuZnJhbWVHcmFwaFBhc3Nlcy5wdXNoKGZyYW1lR3JhcGhQYXNzKTtcbiAgICAgIHNldHVwKHRoaXMsIHBhc3NOb2RlLCBmcmFtZUdyYXBoUGFzcyk7XG4gICAgICByZXR1cm4gZnJhbWVHcmFwaFBhc3M7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFBhc3NcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0UGFzcyhuYW1lKSB7XG4gICAgICByZXR1cm4gdGhpcy5mcmFtZUdyYXBoUGFzc2VzLmZpbmQoZnVuY3Rpb24gKHApIHtcbiAgICAgICAgcmV0dXJuIHAubmFtZSA9PT0gbmFtZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21waWxlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBpbGUoKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICB2YXIgX2l0ZXJhdG9yID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIodGhpcy5wYXNzTm9kZXMpLFxuICAgICAgICAgIF9zdGVwO1xuXG4gICAgICB0cnkge1xuICAgICAgICBmb3IgKF9pdGVyYXRvci5zKCk7ICEoX3N0ZXAgPSBfaXRlcmF0b3IubigpKS5kb25lOykge1xuICAgICAgICAgIHZhciBfcGFzcyA9IF9zdGVwLnZhbHVlO1xuICAgICAgICAgIF9wYXNzLnJlZkNvdW50ID0gX3Bhc3Mud3JpdGVzLmxlbmd0aCArIChfcGFzcy5oYXNTaWRlRWZmZWN0ID8gMSA6IDApO1xuXG4gICAgICAgICAgX3Bhc3MucmVhZHMuZm9yRWFjaChmdW5jdGlvbiAoaGFuZGxlKSB7XG4gICAgICAgICAgICBfdGhpcy5yZXNvdXJjZU5vZGVzW2hhbmRsZS5pbmRleF0ucmVhZGVyQ291bnQrKztcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIF9pdGVyYXRvci5lKGVycik7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBfaXRlcmF0b3IuZigpO1xuICAgICAgfVxuXG4gICAgICB2YXIgc3RhY2sgPSBbXTtcblxuICAgICAgdmFyIF9pdGVyYXRvcjIgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcih0aGlzLnJlc291cmNlTm9kZXMpLFxuICAgICAgICAgIF9zdGVwMjtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgZm9yIChfaXRlcmF0b3IyLnMoKTsgIShfc3RlcDIgPSBfaXRlcmF0b3IyLm4oKSkuZG9uZTspIHtcbiAgICAgICAgICB2YXIgbm9kZSA9IF9zdGVwMi52YWx1ZTtcblxuICAgICAgICAgIGlmIChub2RlLnJlYWRlckNvdW50ID09PSAwKSB7XG4gICAgICAgICAgICBzdGFjay5wdXNoKG5vZGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIF9pdGVyYXRvcjIuZShlcnIpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgX2l0ZXJhdG9yMi5mKCk7XG4gICAgICB9XG5cbiAgICAgIHdoaWxlIChzdGFjay5sZW5ndGgpIHtcbiAgICAgICAgdmFyIHBOb2RlID0gc3RhY2sucG9wKCk7XG4gICAgICAgIHZhciB3cml0ZXIgPSBwTm9kZSAmJiBwTm9kZS53cml0ZXI7XG5cbiAgICAgICAgaWYgKHdyaXRlcikge1xuICAgICAgICAgIGlmICgtLXdyaXRlci5yZWZDb3VudCA9PT0gMCkge1xuICAgICAgICAgICAgLy8gdGhpcyBwYXNzIGlzIGN1bGxlZFxuICAgICAgICAgICAgLy8gYXNzZXJ0KCF3cml0ZXItPmhhc1NpZGVFZmZlY3QpO1xuICAgICAgICAgICAgdmFyIF9pdGVyYXRvcjMgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcih3cml0ZXIucmVhZHMpLFxuICAgICAgICAgICAgICAgIF9zdGVwMztcblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgZm9yIChfaXRlcmF0b3IzLnMoKTsgIShfc3RlcDMgPSBfaXRlcmF0b3IzLm4oKSkuZG9uZTspIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzb3VyY2UgPSBfc3RlcDMudmFsdWU7XG4gICAgICAgICAgICAgICAgdmFyIHIgPSB0aGlzLnJlc291cmNlTm9kZXNbcmVzb3VyY2UuaW5kZXhdO1xuXG4gICAgICAgICAgICAgICAgaWYgKC0tci5yZWFkZXJDb3VudCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgc3RhY2sucHVzaChyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICBfaXRlcmF0b3IzLmUoZXJyKTtcbiAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgIF9pdGVyYXRvcjMuZigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSAvLyB1cGRhdGUgdGhlIGZpbmFsIHJlZmVyZW5jZSBjb3VudHNcblxuXG4gICAgICB0aGlzLnJlc291cmNlTm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICBub2RlLnJlc291cmNlLnJlZnMgKz0gbm9kZS5yZWFkZXJDb3VudDtcbiAgICAgIH0pO1xuXG4gICAgICB2YXIgX2l0ZXJhdG9yNCA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKHRoaXMucGFzc05vZGVzKSxcbiAgICAgICAgICBfc3RlcDQ7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGZvciAoX2l0ZXJhdG9yNC5zKCk7ICEoX3N0ZXA0ID0gX2l0ZXJhdG9yNC5uKCkpLmRvbmU7KSB7XG4gICAgICAgICAgdmFyIF9wYXNzMiA9IF9zdGVwNC52YWx1ZTtcblxuICAgICAgICAgIGlmICghX3Bhc3MyLnJlZkNvdW50KSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgX2l0ZXJhdG9yNiA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKF9wYXNzMi5yZWFkcyksXG4gICAgICAgICAgICAgIF9zdGVwNjtcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKF9pdGVyYXRvcjYucygpOyAhKF9zdGVwNiA9IF9pdGVyYXRvcjYubigpKS5kb25lOykge1xuICAgICAgICAgICAgICB2YXIgX3Jlc291cmNlMiA9IF9zdGVwNi52YWx1ZTtcbiAgICAgICAgICAgICAgdmFyIHBSZXNvdXJjZSA9IHRoaXMucmVzb3VyY2VOb2Rlc1tfcmVzb3VyY2UyLmluZGV4XS5yZXNvdXJjZTtcbiAgICAgICAgICAgICAgcFJlc291cmNlLmZpcnN0ID0gcFJlc291cmNlLmZpcnN0ID8gcFJlc291cmNlLmZpcnN0IDogX3Bhc3MyO1xuICAgICAgICAgICAgICBwUmVzb3VyY2UubGFzdCA9IF9wYXNzMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIF9pdGVyYXRvcjYuZShlcnIpO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBfaXRlcmF0b3I2LmYoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgX2l0ZXJhdG9yNyA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKF9wYXNzMi53cml0ZXMpLFxuICAgICAgICAgICAgICBfc3RlcDc7XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yIChfaXRlcmF0b3I3LnMoKTsgIShfc3RlcDcgPSBfaXRlcmF0b3I3Lm4oKSkuZG9uZTspIHtcbiAgICAgICAgICAgICAgdmFyIF9yZXNvdXJjZTMgPSBfc3RlcDcudmFsdWU7XG4gICAgICAgICAgICAgIHZhciBfcFJlc291cmNlID0gdGhpcy5yZXNvdXJjZU5vZGVzW19yZXNvdXJjZTMuaW5kZXhdLnJlc291cmNlO1xuICAgICAgICAgICAgICBfcFJlc291cmNlLmZpcnN0ID0gX3BSZXNvdXJjZS5maXJzdCA/IF9wUmVzb3VyY2UuZmlyc3QgOiBfcGFzczI7XG4gICAgICAgICAgICAgIF9wUmVzb3VyY2UubGFzdCA9IF9wYXNzMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIF9pdGVyYXRvcjcuZShlcnIpO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBfaXRlcmF0b3I3LmYoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBfaXRlcmF0b3I0LmUoZXJyKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIF9pdGVyYXRvcjQuZigpO1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBwcmlvcml0eSA9IDA7IHByaW9yaXR5IDwgMjsgcHJpb3JpdHkrKykge1xuICAgICAgICB2YXIgX2l0ZXJhdG9yNSA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKHRoaXMucmVzb3VyY2VOb2RlcyksXG4gICAgICAgICAgICBfc3RlcDU7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBmb3IgKF9pdGVyYXRvcjUucygpOyAhKF9zdGVwNSA9IF9pdGVyYXRvcjUubigpKS5kb25lOykge1xuICAgICAgICAgICAgdmFyIHJlc291cmVOb2RlID0gX3N0ZXA1LnZhbHVlO1xuICAgICAgICAgICAgdmFyIF9yZXNvdXJjZSA9IHJlc291cmVOb2RlLnJlc291cmNlO1xuXG4gICAgICAgICAgICBpZiAoX3Jlc291cmNlLnByaW9yaXR5ID09PSBwcmlvcml0eSAmJiBfcmVzb3VyY2UucmVmcykge1xuICAgICAgICAgICAgICB2YXIgcEZpcnN0ID0gX3Jlc291cmNlLmZpcnN0O1xuICAgICAgICAgICAgICB2YXIgcExhc3QgPSBfcmVzb3VyY2UubGFzdDtcblxuICAgICAgICAgICAgICBpZiAocEZpcnN0ICYmIHBMYXN0KSB7XG4gICAgICAgICAgICAgICAgcEZpcnN0LmRldmlydHVhbGl6ZS5wdXNoKF9yZXNvdXJjZSk7XG4gICAgICAgICAgICAgICAgcExhc3QuZGVzdHJveS5wdXNoKF9yZXNvdXJjZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIF9pdGVyYXRvcjUuZShlcnIpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIF9pdGVyYXRvcjUuZigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImV4ZWN1dGVQYXNzTm9kZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9leGVjdXRlUGFzc05vZGVzID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTIodmlld3MpIHtcbiAgICAgICAgdmFyIF9pdGVyYXRvcjgsIF9zdGVwOCwgX3N0ZXA4JHZhbHVlLCBpbmRleCwgbm9kZSwgX2l0ZXJhdG9yOSwgX3N0ZXA5LCByZXNvdXJjZSwgX2l0ZXJhdG9yMTAsIF9zdGVwMTAsIF9yZXNvdXJjZTQsIF9pdGVyYXRvcjExLCBfc3RlcDExLCBfcmVzb3VyY2U1LCBfaXRlcmF0b3IxMiwgX3N0ZXAxMiwgX3Jlc291cmNlNjtcblxuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUyJChfY29udGV4dDIpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBfaXRlcmF0b3I4ID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIodGhpcy5wYXNzTm9kZXMuZW50cmllcygpKTtcbiAgICAgICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDE7XG5cbiAgICAgICAgICAgICAgICBfaXRlcmF0b3I4LnMoKTtcblxuICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgaWYgKChfc3RlcDggPSBfaXRlcmF0b3I4Lm4oKSkuZG9uZSkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxODtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIF9zdGVwOCR2YWx1ZSA9IF9zbGljZWRUb0FycmF5KF9zdGVwOC52YWx1ZSwgMiksIGluZGV4ID0gX3N0ZXA4JHZhbHVlWzBdLCBub2RlID0gX3N0ZXA4JHZhbHVlWzFdO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFub2RlLnJlZkNvdW50KSB7XG4gICAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDE2O1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yOSA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKG5vZGUuZGV2aXJ0dWFsaXplKTtcblxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICBmb3IgKF9pdGVyYXRvcjkucygpOyAhKF9zdGVwOSA9IF9pdGVyYXRvcjkubigpKS5kb25lOykge1xuICAgICAgICAgICAgICAgICAgICByZXNvdXJjZSA9IF9zdGVwOS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2UucHJlRXhlY3V0ZURldmlydHVhbGl6ZSh0aGlzLmVuZ2luZSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICBfaXRlcmF0b3I5LmUoZXJyKTtcbiAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgX2l0ZXJhdG9yOS5mKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yMTAgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihub2RlLmRlc3Ryb3kpO1xuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgIGZvciAoX2l0ZXJhdG9yMTAucygpOyAhKF9zdGVwMTAgPSBfaXRlcmF0b3IxMC5uKCkpLmRvbmU7KSB7XG4gICAgICAgICAgICAgICAgICAgIF9yZXNvdXJjZTQgPSBfc3RlcDEwLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgIF9yZXNvdXJjZTQucHJlRXhlY3V0ZURlc3Ryb3kodGhpcy5lbmdpbmUpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgX2l0ZXJhdG9yMTAuZShlcnIpO1xuICAgICAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICBfaXRlcmF0b3IxMC5mKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxMjtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mcmFtZUdyYXBoUGFzc2VzW2luZGV4XS5leGVjdXRlKHRoaXMsIHRoaXMuZnJhbWVHcmFwaFBhc3Nlc1tpbmRleF0sIHZpZXdzKTtcblxuICAgICAgICAgICAgICBjYXNlIDEyOlxuICAgICAgICAgICAgICAgIF9pdGVyYXRvcjExID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIobm9kZS5kZXZpcnR1YWxpemUpO1xuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgIGZvciAoX2l0ZXJhdG9yMTEucygpOyAhKF9zdGVwMTEgPSBfaXRlcmF0b3IxMS5uKCkpLmRvbmU7KSB7XG4gICAgICAgICAgICAgICAgICAgIF9yZXNvdXJjZTUgPSBfc3RlcDExLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgIF9yZXNvdXJjZTUucG9zdEV4ZWN1dGVEZXZpcnR1YWxpemUodGhpcy5lbmdpbmUpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgX2l0ZXJhdG9yMTEuZShlcnIpO1xuICAgICAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICBfaXRlcmF0b3IxMS5mKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yMTIgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihub2RlLmRlc3Ryb3kpO1xuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgIGZvciAoX2l0ZXJhdG9yMTIucygpOyAhKF9zdGVwMTIgPSBfaXRlcmF0b3IxMi5uKCkpLmRvbmU7KSB7XG4gICAgICAgICAgICAgICAgICAgIF9yZXNvdXJjZTYgPSBfc3RlcDEyLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgIF9yZXNvdXJjZTYucG9zdEV4ZWN1dGVEZXN0cm95KHRoaXMuZW5naW5lKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgIF9pdGVyYXRvcjEyLmUoZXJyKTtcbiAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgX2l0ZXJhdG9yMTIuZigpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjYXNlIDE2OlxuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMztcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICBjYXNlIDE4OlxuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMjM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgY2FzZSAyMDpcbiAgICAgICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDIwO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi50MCA9IF9jb250ZXh0MltcImNhdGNoXCJdKDEpO1xuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yOC5lKF9jb250ZXh0Mi50MCk7XG5cbiAgICAgICAgICAgICAgY2FzZSAyMzpcbiAgICAgICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDIzO1xuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yOC5mKCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLmZpbmlzaCgyMyk7XG5cbiAgICAgICAgICAgICAgY2FzZSAyNjpcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0KCk7XG5cbiAgICAgICAgICAgICAgY2FzZSAyNzpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTIsIHRoaXMsIFtbMSwgMjAsIDIzLCAyNl1dKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gZXhlY3V0ZVBhc3NOb2RlcyhfeDIpIHtcbiAgICAgICAgcmV0dXJuIF9leGVjdXRlUGFzc05vZGVzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBleGVjdXRlUGFzc05vZGVzO1xuICAgIH0oKVxuICB9LCB7XG4gICAga2V5OiBcInJlc2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlc2V0KCkge1xuICAgICAgdGhpcy5wYXNzTm9kZXMgPSBbXTtcbiAgICAgIHRoaXMucmVzb3VyY2VOb2RlcyA9IFtdO1xuICAgICAgdGhpcy5mcmFtZUdyYXBoUGFzc2VzID0gW107XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFJlc291cmNlTm9kZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRSZXNvdXJjZU5vZGUocikge1xuICAgICAgcmV0dXJuIHRoaXMucmVzb3VyY2VOb2Rlc1tyLmluZGV4XTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY3JlYXRlUmVzb3VyY2VOb2RlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZVJlc291cmNlTm9kZShyZXNvdXJjZUVudHJ5KSB7XG4gICAgICB2YXIgcmVzb3VyY2VOb2RlID0gbmV3IFJlc291cmNlTm9kZSgpO1xuICAgICAgcmVzb3VyY2VOb2RlLnJlc291cmNlID0gcmVzb3VyY2VFbnRyeTtcbiAgICAgIHJlc291cmNlTm9kZS52ZXJzaW9uID0gcmVzb3VyY2VFbnRyeS52ZXJzaW9uO1xuICAgICAgdGhpcy5yZXNvdXJjZU5vZGVzLnB1c2gocmVzb3VyY2VOb2RlKTtcbiAgICAgIHZhciBmZ2ggPSBuZXcgRnJhbWVHcmFwaEhhbmRsZSgpO1xuICAgICAgZmdoLmluZGV4ID0gdGhpcy5yZXNvdXJjZU5vZGVzLmxlbmd0aCAtIDE7XG4gICAgICByZXR1cm4gZmdoO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVUZXh0dXJlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZVRleHR1cmUocGFzc05vZGUsIG5hbWUsIGRlc2NyaXB0b3IpIHtcbiAgICAgIHZhciByZXNvdXJjZSA9IG5ldyBSZXNvdXJjZUVudHJ5KCk7XG4gICAgICByZXNvdXJjZS5uYW1lID0gbmFtZTtcbiAgICAgIHJlc291cmNlLmRlc2NyaXB0b3IgPSBkZXNjcmlwdG9yO1xuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUmVzb3VyY2VOb2RlKHJlc291cmNlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY3JlYXRlUmVuZGVyVGFyZ2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZVJlbmRlclRhcmdldChwYXNzTm9kZSwgbmFtZSwgZGVzY3JpcHRvcikge1xuICAgICAgdmFyIHJlc291cmNlID0gbmV3IFJlc291cmNlRW50cnkoKTtcbiAgICAgIHJlc291cmNlLm5hbWUgPSBuYW1lO1xuICAgICAgcmVzb3VyY2UuZGVzY3JpcHRvciA9IGRlc2NyaXB0b3I7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVSZXNvdXJjZU5vZGUocmVzb3VyY2UpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwcmVzZW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHByZXNlbnQoaW5wdXQpIHtcbiAgICAgIHRoaXMuYWRkUGFzcygnUHJlc2VudCcsIGZ1bmN0aW9uIChmZywgcGFzc05vZGUpIHtcbiAgICAgICAgcGFzc05vZGUucmVhZChpbnB1dCk7XG4gICAgICAgIHBhc3NOb2RlLmhhc1NpZGVFZmZlY3QgPSB0cnVlO1xuICAgICAgfSwgLyojX19QVVJFX18qL19hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUzKCkge1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUzJChfY29udGV4dDMpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDMucHJldiA9IF9jb250ZXh0My5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDMuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTMpO1xuICAgICAgfSkpKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gRnJhbWVHcmFwaFN5c3RlbTtcbn0oKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImVuZ2luZVwiLCBbX2RlYzJdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U3lzdGVtLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/System.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/VirtualResource.js":
/*!*****************************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/VirtualResource.js ***!
\*****************************************************************************************************************/
/*! exports provided: VirtualResource */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VirtualResource\", function() { return VirtualResource; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@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\n\n/**\n * ported from filament\n */\nvar VirtualResource = function VirtualResource() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, VirtualResource);\n\n this.first = void 0;\n this.last = void 0;\n};\n//# sourceMappingURL=VirtualResource.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvVmlydHVhbFJlc291cmNlLmpzPzVlN2YiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7O0FBRXBFO0FBQ0E7QUFDQTtBQUNPO0FBQ1AsRUFBRSw0RUFBZTs7QUFFakI7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvVmlydHVhbFJlc291cmNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuXG4vKipcbiAqIHBvcnRlZCBmcm9tIGZpbGFtZW50XG4gKi9cbmV4cG9ydCB2YXIgVmlydHVhbFJlc291cmNlID0gZnVuY3Rpb24gVmlydHVhbFJlc291cmNlKCkge1xuICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVmlydHVhbFJlc291cmNlKTtcblxuICB0aGlzLmZpcnN0ID0gdm9pZCAwO1xuICB0aGlzLmxhc3QgPSB2b2lkIDA7XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VmlydHVhbFJlc291cmNlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/VirtualResource.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/geometry/GeometryComponent.js":
/*!*****************************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/geometry/GeometryComponent.js ***!
\*****************************************************************************************************************/
/*! exports provided: GeometryComponent */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GeometryComponent\", function() { return GeometryComponent; });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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@7.16.3@@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_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__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@7.16.3@@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 _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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 gl_matrix__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n/* harmony import */ var _ComponentManager__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../ComponentManager */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/ComponentManager.js\");\n/* harmony import */ var _utils_is_typedarray__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../utils/is-typedarray */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/is-typedarray.js\");\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\nvar GeometryComponent = /*#__PURE__*/function (_Component) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default()(GeometryComponent, _Component);\n\n var _super = _createSuper(GeometryComponent);\n\n // instanced count\n function GeometryComponent(data) {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, GeometryComponent);\n\n _this = _super.call(this, data);\n _this.dirty = true;\n _this.attributes = [];\n _this.indices = void 0;\n _this.indicesBuffer = void 0;\n _this.vertexCount = 0;\n _this.maxInstancedCount = void 0;\n _this.aabb = void 0;\n _this.entity = void 0;\n Object.assign(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default()(_this), data);\n return _this;\n }\n /**\n * @see https://threejs.org/docs/#api/en/core/BufferAttribute\n */\n\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(GeometryComponent, [{\n key: \"setAttribute\",\n value: function setAttribute(name, data, descriptor, bufferGetter) {\n var existed = this.attributes.find(function (a) {\n return a.name === name;\n });\n\n if (!existed) {\n this.attributes.push(_objectSpread(_objectSpread({\n dirty: true,\n name: name,\n data: data\n }, descriptor), {}, {\n bufferGetter: bufferGetter\n }));\n } else {\n existed.data = data;\n existed.dirty = true;\n }\n\n this.dirty = true;\n return this;\n }\n }, {\n key: \"setIndex\",\n value: function setIndex(data) {\n this.indices = new Uint32Array( // @ts-ignore\n data.buffer ? data.buffer : data);\n this.dirty = true;\n return this;\n }\n /**\n * when merge all the geometries into one, we need to transform every vertex's position\n * and every face's normal\n */\n\n }, {\n key: \"applyMatrix\",\n value: function applyMatrix(matrix) {\n var positionAttribute = this.attributes.find(function (_ref) {\n var name = _ref.name;\n return name === 'position';\n });\n var normalAttribute = this.attributes.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'normal';\n });\n\n if (positionAttribute) {\n positionAttribute.dirty = true; // @ts-ignore\n\n if (positionAttribute.data && positionAttribute.data.length) {\n // @ts-ignore\n for (var i = 0; i < positionAttribute.data.length; i += 3) {\n var position = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec4\"].fromValues( // @ts-ignore\n positionAttribute.data[i], // @ts-ignore\n positionAttribute.data[i + 1], // @ts-ignore\n positionAttribute.data[i + 2], 1);\n gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec4\"].transformMat4(position, position, matrix);\n\n if (Object(_utils_is_typedarray__WEBPACK_IMPORTED_MODULE_9__[\"isTypedArray\"])(positionAttribute.data)) {\n // @ts-ignore\n positionAttribute.data.set([position[0], position[1], position[2]], i);\n } else {\n // @ts-ignore\n positionAttribute.data[i] = position[0]; // @ts-ignore\n\n positionAttribute.data[i + 1] = position[1]; // @ts-ignore\n\n positionAttribute.data[i + 2] = position[2];\n }\n }\n }\n }\n\n if (normalAttribute) {\n var normalMatrix = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"mat3\"].normalFromMat4(gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"mat3\"].create(), matrix); // @ts-ignore\n\n if (normalAttribute.data && normalAttribute.data.length) {\n // @ts-ignore\n for (var _i = 0; _i < normalAttribute.data.length; _i += 3) {\n var normal = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues( // @ts-ignore\n normalAttribute.data[_i], // @ts-ignore\n normalAttribute.data[_i + 1], // @ts-ignore\n normalAttribute.data[_i + 2]);\n gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].transformMat3(normal, normal, normalMatrix);\n gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].normalize(normal, normal);\n\n if (Object(_utils_is_typedarray__WEBPACK_IMPORTED_MODULE_9__[\"isTypedArray\"])(normalAttribute.data)) {\n // @ts-ignore\n normalAttribute.data.set([normal[0], normal[1], normal[2]], _i);\n } else {\n // @ts-ignore\n normalAttribute.data[_i] = normal[0]; // @ts-ignore\n\n normalAttribute.data[_i + 1] = normal[1]; // @ts-ignore\n\n normalAttribute.data[_i + 2] = normal[2];\n }\n }\n }\n }\n }\n }]);\n\n return GeometryComponent;\n}(_ComponentManager__WEBPACK_IMPORTED_MODULE_8__[\"Component\"]);\n//# sourceMappingURL=GeometryComponent.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2dlb21ldHJ5L0dlb21ldHJ5Q29tcG9uZW50LmpzPzNmYjciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDQTtBQUNOO0FBQ29CO0FBQzFCO0FBQ2tDO0FBQ3RCOztBQUVwRSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSx1REFBdUQsQ0FBQyw0RUFBZSwyQkFBMkIsRUFBRSxFQUFFLEVBQUUsNkNBQTZDLDJFQUEyRSxFQUFFLE9BQU8saURBQWlELGtGQUFrRixFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWU7O0FBRXBoQixnQ0FBZ0MsNkRBQTZELHlDQUF5QyxhQUFhLDRFQUFlLGtCQUFrQixpQ0FBaUMsaUJBQWlCLDRFQUFlLG1CQUFtQix5REFBeUQsRUFBRSxPQUFPLHVDQUF1QyxFQUFFLFFBQVEsdUZBQTBCLGVBQWUsR0FBRzs7QUFFdmEsc0NBQXNDLHdFQUF3RSwwQ0FBMEMsOENBQThDLE1BQU0sd0VBQXdFLEdBQUcsYUFBYSxFQUFFLFlBQVksY0FBYyxFQUFFOztBQUVyUjtBQUNNO0FBQ007QUFDbEQ7QUFDUCxFQUFFLHNFQUFTOztBQUVYOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsbUZBQXNCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsaUJBQWlCO0FBQzFCO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBLHVDQUF1Qzs7QUFFdkM7QUFDQTtBQUNBLHlCQUF5QixtQ0FBbUM7QUFDNUQsMkJBQTJCLDhDQUFJO0FBQy9CO0FBQ0E7QUFDQTtBQUNBLFlBQVksOENBQUk7O0FBRWhCLGdCQUFnQix5RUFBWTtBQUM1QjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0Esc0RBQXNEOztBQUV0RCwwREFBMEQ7O0FBRTFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwyQkFBMkIsOENBQUksZ0JBQWdCLDhDQUFJLG1CQUFtQjs7QUFFdEU7QUFDQTtBQUNBLDBCQUEwQixrQ0FBa0M7QUFDNUQseUJBQXlCLDhDQUFJO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLFlBQVksOENBQUk7QUFDaEIsWUFBWSw4Q0FBSTs7QUFFaEIsZ0JBQWdCLHlFQUFZO0FBQzVCO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxtREFBbUQ7O0FBRW5ELHVEQUF1RDs7QUFFdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsQ0FBQywyREFBUztBQUNYIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9nZW9tZXRyeS9HZW9tZXRyeUNvbXBvbmVudC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0c1wiO1xuaW1wb3J0IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm5cIjtcbmltcG9ydCBfZ2V0UHJvdG90eXBlT2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZ2V0UHJvdG90eXBlT2ZcIjtcblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuaW1wb3J0IHsgbWF0MywgdmVjMywgdmVjNCB9IGZyb20gJ2dsLW1hdHJpeCc7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICcuLi8uLi9Db21wb25lbnRNYW5hZ2VyJztcbmltcG9ydCB7IGlzVHlwZWRBcnJheSB9IGZyb20gJy4uLy4uL3V0aWxzL2lzLXR5cGVkYXJyYXknO1xuZXhwb3J0IHZhciBHZW9tZXRyeUNvbXBvbmVudCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoR2VvbWV0cnlDb21wb25lbnQsIF9Db21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoR2VvbWV0cnlDb21wb25lbnQpO1xuXG4gIC8vIGluc3RhbmNlZCBjb3VudFxuICBmdW5jdGlvbiBHZW9tZXRyeUNvbXBvbmVudChkYXRhKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEdlb21ldHJ5Q29tcG9uZW50KTtcblxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgZGF0YSk7XG4gICAgX3RoaXMuZGlydHkgPSB0cnVlO1xuICAgIF90aGlzLmF0dHJpYnV0ZXMgPSBbXTtcbiAgICBfdGhpcy5pbmRpY2VzID0gdm9pZCAwO1xuICAgIF90aGlzLmluZGljZXNCdWZmZXIgPSB2b2lkIDA7XG4gICAgX3RoaXMudmVydGV4Q291bnQgPSAwO1xuICAgIF90aGlzLm1heEluc3RhbmNlZENvdW50ID0gdm9pZCAwO1xuICAgIF90aGlzLmFhYmIgPSB2b2lkIDA7XG4gICAgX3RoaXMuZW50aXR5ID0gdm9pZCAwO1xuICAgIE9iamVjdC5hc3NpZ24oX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIGRhdGEpO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICAvKipcbiAgICogQHNlZSBodHRwczovL3RocmVlanMub3JnL2RvY3MvI2FwaS9lbi9jb3JlL0J1ZmZlckF0dHJpYnV0ZVxuICAgKi9cblxuXG4gIF9jcmVhdGVDbGFzcyhHZW9tZXRyeUNvbXBvbmVudCwgW3tcbiAgICBrZXk6IFwic2V0QXR0cmlidXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldEF0dHJpYnV0ZShuYW1lLCBkYXRhLCBkZXNjcmlwdG9yLCBidWZmZXJHZXR0ZXIpIHtcbiAgICAgIHZhciBleGlzdGVkID0gdGhpcy5hdHRyaWJ1dGVzLmZpbmQoZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgcmV0dXJuIGEubmFtZSA9PT0gbmFtZTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIWV4aXN0ZWQpIHtcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVzLnB1c2goX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgICBkaXJ0eTogdHJ1ZSxcbiAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgIGRhdGE6IGRhdGFcbiAgICAgICAgfSwgZGVzY3JpcHRvciksIHt9LCB7XG4gICAgICAgICAgYnVmZmVyR2V0dGVyOiBidWZmZXJHZXR0ZXJcbiAgICAgICAgfSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXhpc3RlZC5kYXRhID0gZGF0YTtcbiAgICAgICAgZXhpc3RlZC5kaXJ0eSA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZGlydHkgPSB0cnVlO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldEluZGV4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldEluZGV4KGRhdGEpIHtcbiAgICAgIHRoaXMuaW5kaWNlcyA9IG5ldyBVaW50MzJBcnJheSggLy8gQHRzLWlnbm9yZVxuICAgICAgZGF0YS5idWZmZXIgPyBkYXRhLmJ1ZmZlciA6IGRhdGEpO1xuICAgICAgdGhpcy5kaXJ0eSA9IHRydWU7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogd2hlbiBtZXJnZSBhbGwgdGhlIGdlb21ldHJpZXMgaW50byBvbmUsIHdlIG5lZWQgdG8gdHJhbnNmb3JtIGV2ZXJ5IHZlcnRleCdzIHBvc2l0aW9uXG4gICAgICogYW5kIGV2ZXJ5IGZhY2UncyBub3JtYWxcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImFwcGx5TWF0cml4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGFwcGx5TWF0cml4KG1hdHJpeCkge1xuICAgICAgdmFyIHBvc2l0aW9uQXR0cmlidXRlID0gdGhpcy5hdHRyaWJ1dGVzLmZpbmQoZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgICAgdmFyIG5hbWUgPSBfcmVmLm5hbWU7XG4gICAgICAgIHJldHVybiBuYW1lID09PSAncG9zaXRpb24nO1xuICAgICAgfSk7XG4gICAgICB2YXIgbm9ybWFsQXR0cmlidXRlID0gdGhpcy5hdHRyaWJ1dGVzLmZpbmQoZnVuY3Rpb24gKF9yZWYyKSB7XG4gICAgICAgIHZhciBuYW1lID0gX3JlZjIubmFtZTtcbiAgICAgICAgcmV0dXJuIG5hbWUgPT09ICdub3JtYWwnO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChwb3NpdGlvbkF0dHJpYnV0ZSkge1xuICAgICAgICBwb3NpdGlvbkF0dHJpYnV0ZS5kaXJ0eSA9IHRydWU7IC8vIEB0cy1pZ25vcmVcblxuICAgICAgICBpZiAocG9zaXRpb25BdHRyaWJ1dGUuZGF0YSAmJiBwb3NpdGlvbkF0dHJpYnV0ZS5kYXRhLmxlbmd0aCkge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBvc2l0aW9uQXR0cmlidXRlLmRhdGEubGVuZ3RoOyBpICs9IDMpIHtcbiAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHZlYzQuZnJvbVZhbHVlcyggLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgcG9zaXRpb25BdHRyaWJ1dGUuZGF0YVtpXSwgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgcG9zaXRpb25BdHRyaWJ1dGUuZGF0YVtpICsgMV0sIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHBvc2l0aW9uQXR0cmlidXRlLmRhdGFbaSArIDJdLCAxKTtcbiAgICAgICAgICAgIHZlYzQudHJhbnNmb3JtTWF0NChwb3NpdGlvbiwgcG9zaXRpb24sIG1hdHJpeCk7XG5cbiAgICAgICAgICAgIGlmIChpc1R5cGVkQXJyYXkocG9zaXRpb25BdHRyaWJ1dGUuZGF0YSkpIHtcbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICBwb3NpdGlvbkF0dHJpYnV0ZS5kYXRhLnNldChbcG9zaXRpb25bMF0sIHBvc2l0aW9uWzFdLCBwb3NpdGlvblsyXV0sIGkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICBwb3NpdGlvbkF0dHJpYnV0ZS5kYXRhW2ldID0gcG9zaXRpb25bMF07IC8vIEB0cy1pZ25vcmVcblxuICAgICAgICAgICAgICBwb3NpdGlvbkF0dHJpYnV0ZS5kYXRhW2kgKyAxXSA9IHBvc2l0aW9uWzFdOyAvLyBAdHMtaWdub3JlXG5cbiAgICAgICAgICAgICAgcG9zaXRpb25BdHRyaWJ1dGUuZGF0YVtpICsgMl0gPSBwb3NpdGlvblsyXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG5vcm1hbEF0dHJpYnV0ZSkge1xuICAgICAgICB2YXIgbm9ybWFsTWF0cml4ID0gbWF0My5ub3JtYWxGcm9tTWF0NChtYXQzLmNyZWF0ZSgpLCBtYXRyaXgpOyAvLyBAdHMtaWdub3JlXG5cbiAgICAgICAgaWYgKG5vcm1hbEF0dHJpYnV0ZS5kYXRhICYmIG5vcm1hbEF0dHJpYnV0ZS5kYXRhLmxlbmd0aCkge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbm9ybWFsQXR0cmlidXRlLmRhdGEubGVuZ3RoOyBfaSArPSAzKSB7XG4gICAgICAgICAgICB2YXIgbm9ybWFsID0gdmVjMy5mcm9tVmFsdWVzKCAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBub3JtYWxBdHRyaWJ1dGUuZGF0YVtfaV0sIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIG5vcm1hbEF0dHJpYnV0ZS5kYXRhW19pICsgMV0sIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIG5vcm1hbEF0dHJpYnV0ZS5kYXRhW19pICsgMl0pO1xuICAgICAgICAgICAgdmVjMy50cmFuc2Zvcm1NYXQzKG5vcm1hbCwgbm9ybWFsLCBub3JtYWxNYXRyaXgpO1xuICAgICAgICAgICAgdmVjMy5ub3JtYWxpemUobm9ybWFsLCBub3JtYWwpO1xuXG4gICAgICAgICAgICBpZiAoaXNUeXBlZEFycmF5KG5vcm1hbEF0dHJpYnV0ZS5kYXRhKSkge1xuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIG5vcm1hbEF0dHJpYnV0ZS5kYXRhLnNldChbbm9ybWFsWzBdLCBub3JtYWxbMV0sIG5vcm1hbFsyXV0sIF9pKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgbm9ybWFsQXR0cmlidXRlLmRhdGFbX2ldID0gbm9ybWFsWzBdOyAvLyBAdHMtaWdub3JlXG5cbiAgICAgICAgICAgICAgbm9ybWFsQXR0cmlidXRlLmRhdGFbX2kgKyAxXSA9IG5vcm1hbFsxXTsgLy8gQHRzLWlnbm9yZVxuXG4gICAgICAgICAgICAgIG5vcm1hbEF0dHJpYnV0ZS5kYXRhW19pICsgMl0gPSBub3JtYWxbMl07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEdlb21ldHJ5Q29tcG9uZW50O1xufShDb21wb25lbnQpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9R2VvbWV0cnlDb21wb25lbnQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/geometry/GeometryComponent.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/geometry/System.js":
/*!******************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/geometry/System.js ***!
\******************************************************************************************************/
/*! exports provided: GeometrySystem */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GeometrySystem\", function() { return GeometrySystem; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__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@7.16.3@@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_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__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@7.16.3@@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@7.16.3@@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_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../.. */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../identifier */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/identifier.js\");\n/* harmony import */ var _renderer_gl__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../renderer/gl */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/gl.js\");\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _class, _class2, _descriptor, _descriptor2, _temp;\n\n\n\n\n\nvar GeometrySystem = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].GeometryComponentManager), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].RenderEngine), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function GeometrySystem() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, GeometrySystem);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"geometry\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"engine\", _descriptor2, this);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(GeometrySystem, [{\n key: \"execute\",\n value: function () {\n var _execute = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var _this = this;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n this.geometry.forEach(function (entity, component) {\n // build buffers for each geometry\n if (component.dirty) {\n component.attributes.forEach(function (attribute) {\n if (attribute.dirty && attribute.data) {\n if (!attribute.buffer) {\n attribute.buffer = _this.engine.createBuffer({\n data: attribute.data,\n type: _renderer_gl__WEBPACK_IMPORTED_MODULE_10__[\"gl\"].FLOAT\n });\n } else {\n var _attribute$buffer;\n\n (_attribute$buffer = attribute.buffer) === null || _attribute$buffer === void 0 ? void 0 : _attribute$buffer.subData({\n data: attribute.data,\n // TODO: support offset in subdata\n offset: 0\n });\n }\n\n attribute.dirty = false;\n }\n }); // create index buffer if needed\n\n if (component.indices) {\n if (!component.indicesBuffer) {\n component.indicesBuffer = _this.engine.createElements({\n data: component.indices,\n count: component.indices.length,\n type: _renderer_gl__WEBPACK_IMPORTED_MODULE_10__[\"gl\"].UNSIGNED_INT,\n usage: _renderer_gl__WEBPACK_IMPORTED_MODULE_10__[\"gl\"].STATIC_DRAW\n });\n } else {\n component.indicesBuffer.subData({\n data: component.indices,\n offset: 0\n });\n }\n }\n\n component.dirty = false;\n }\n });\n\n case 1:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function execute() {\n return _execute.apply(this, arguments);\n }\n\n return execute;\n }()\n }, {\n key: \"tearDown\",\n value: function tearDown() {\n this.geometry.forEach(function (_, geometry) {\n if (geometry.indicesBuffer) {\n geometry.indicesBuffer.destroy();\n }\n\n geometry.attributes.forEach(function (attribute) {\n if (attribute.buffer) {\n attribute.buffer.destroy();\n }\n });\n });\n this.geometry.clear();\n }\n /**\n * @see https://threejs.org/docs/#api/en/core/BufferGeometry\n */\n\n }, {\n key: \"createBufferGeometry\",\n value: function createBufferGeometry() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n vertexCount: 3\n },\n vertexCount = _ref.vertexCount;\n\n var entity = Object(___WEBPACK_IMPORTED_MODULE_8__[\"createEntity\"])();\n return this.geometry.create(entity, {\n vertexCount: vertexCount\n });\n }\n /**\n * @see https://threejs.org/docs/#api/en/core/InstancedBufferGeometry\n */\n\n }, {\n key: \"createInstancedBufferGeometry\",\n value: function createInstancedBufferGeometry(_ref2) {\n var maxInstancedCount = _ref2.maxInstancedCount,\n vertexCount = _ref2.vertexCount;\n var entity = Object(___WEBPACK_IMPORTED_MODULE_8__[\"createEntity\"])();\n return this.geometry.create(entity, {\n maxInstancedCount: maxInstancedCount,\n vertexCount: vertexCount\n });\n }\n }]);\n\n return GeometrySystem;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"geometry\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"engine\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=System.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL2dlb21ldHJ5L1N5c3RlbS5qcz8yN2Y2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE2RDtBQUNXO0FBQ2tCO0FBQ3RCO0FBQ047QUFDMEI7QUFDQTs7QUFFeEY7O0FBRStDO0FBQ1Y7QUFDUztBQUNWO0FBQzdCLDZCQUE2Qiw0REFBVSxZQUFZLHdEQUFNLENBQUMsc0RBQVUsb0NBQW9DLHdEQUFNLENBQUMsc0RBQVU7QUFDaEk7QUFDQSxJQUFJLDRFQUFlOztBQUVuQixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7QUFDOUI7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQSxxQkFBcUIsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3hFOztBQUVBLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsZ0RBQUU7QUFDcEMsMkJBQTJCO0FBQzNCLHlCQUF5QjtBQUN6Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjs7QUFFQTtBQUNBO0FBQ0EscUJBQXFCLEVBQUU7O0FBRXZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsZ0RBQUU7QUFDbEMsaUNBQWlDLGdEQUFFO0FBQ25DLHlCQUF5QjtBQUN6Qix1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQSxtQkFBbUIsc0RBQVk7QUFDL0I7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsc0RBQVk7QUFDL0I7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsMkJBQTJCLHNGQUF5QjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvZ2VvbWV0cnkvU3lzdGVtLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSBcIkBiYWJlbC9ydW50aW1lL3JlZ2VuZXJhdG9yXCI7XG5pbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplcldhcm5pbmdIZWxwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyXCI7XG5cbnZhciBfZGVjLCBfZGVjMiwgX2RlYzMsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9kZXNjcmlwdG9yMiwgX3RlbXA7XG5cbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5pbXBvcnQgeyBjcmVhdGVFbnRpdHkgfSBmcm9tICcuLi8uLic7XG5pbXBvcnQgeyBJREVOVElGSUVSIH0gZnJvbSAnLi4vLi4vaWRlbnRpZmllcic7XG5pbXBvcnQgeyBnbCB9IGZyb20gJy4uL3JlbmRlcmVyL2dsJztcbmV4cG9ydCB2YXIgR2VvbWV0cnlTeXN0ZW0gPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoSURFTlRJRklFUi5HZW9tZXRyeUNvbXBvbmVudE1hbmFnZXIpLCBfZGVjMyA9IGluamVjdChJREVOVElGSUVSLlJlbmRlckVuZ2luZSksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBHZW9tZXRyeVN5c3RlbSgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgR2VvbWV0cnlTeXN0ZW0pO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJnZW9tZXRyeVwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImVuZ2luZVwiLCBfZGVzY3JpcHRvcjIsIHRoaXMpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKEdlb21ldHJ5U3lzdGVtLCBbe1xuICAgIGtleTogXCJleGVjdXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfZXhlY3V0ZSA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICB0aGlzLmdlb21ldHJ5LmZvckVhY2goZnVuY3Rpb24gKGVudGl0eSwgY29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgICAvLyBidWlsZCBidWZmZXJzIGZvciBlYWNoIGdlb21ldHJ5XG4gICAgICAgICAgICAgICAgICBpZiAoY29tcG9uZW50LmRpcnR5KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5hdHRyaWJ1dGVzLmZvckVhY2goZnVuY3Rpb24gKGF0dHJpYnV0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGUuZGlydHkgJiYgYXR0cmlidXRlLmRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYXR0cmlidXRlLmJ1ZmZlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUuYnVmZmVyID0gX3RoaXMuZW5naW5lLmNyZWF0ZUJ1ZmZlcih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogYXR0cmlidXRlLmRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogZ2wuRkxPQVRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2F0dHJpYnV0ZSRidWZmZXI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKF9hdHRyaWJ1dGUkYnVmZmVyID0gYXR0cmlidXRlLmJ1ZmZlcikgPT09IG51bGwgfHwgX2F0dHJpYnV0ZSRidWZmZXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hdHRyaWJ1dGUkYnVmZmVyLnN1YkRhdGEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGF0dHJpYnV0ZS5kYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IHN1cHBvcnQgb2Zmc2V0IGluIHN1YmRhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZS5kaXJ0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7IC8vIGNyZWF0ZSBpbmRleCBidWZmZXIgaWYgbmVlZGVkXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBvbmVudC5pbmRpY2VzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb21wb25lbnQuaW5kaWNlc0J1ZmZlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmluZGljZXNCdWZmZXIgPSBfdGhpcy5lbmdpbmUuY3JlYXRlRWxlbWVudHMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBjb21wb25lbnQuaW5kaWNlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQ6IGNvbXBvbmVudC5pbmRpY2VzLmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogZ2wuVU5TSUdORURfSU5ULFxuICAgICAgICAgICAgICAgICAgICAgICAgICB1c2FnZTogZ2wuU1RBVElDX0RSQVdcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuaW5kaWNlc0J1ZmZlci5zdWJEYXRhKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogY29tcG9uZW50LmluZGljZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogMFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmRpcnR5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBleGVjdXRlKCkge1xuICAgICAgICByZXR1cm4gX2V4ZWN1dGUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGV4ZWN1dGU7XG4gICAgfSgpXG4gIH0sIHtcbiAgICBrZXk6IFwidGVhckRvd25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdGVhckRvd24oKSB7XG4gICAgICB0aGlzLmdlb21ldHJ5LmZvckVhY2goZnVuY3Rpb24gKF8sIGdlb21ldHJ5KSB7XG4gICAgICAgIGlmIChnZW9tZXRyeS5pbmRpY2VzQnVmZmVyKSB7XG4gICAgICAgICAgZ2VvbWV0cnkuaW5kaWNlc0J1ZmZlci5kZXN0cm95KCk7XG4gICAgICAgIH1cblxuICAgICAgICBnZW9tZXRyeS5hdHRyaWJ1dGVzLmZvckVhY2goZnVuY3Rpb24gKGF0dHJpYnV0ZSkge1xuICAgICAgICAgIGlmIChhdHRyaWJ1dGUuYnVmZmVyKSB7XG4gICAgICAgICAgICBhdHRyaWJ1dGUuYnVmZmVyLmRlc3Ryb3koKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmdlb21ldHJ5LmNsZWFyKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBzZWUgaHR0cHM6Ly90aHJlZWpzLm9yZy9kb2NzLyNhcGkvZW4vY29yZS9CdWZmZXJHZW9tZXRyeVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiY3JlYXRlQnVmZmVyR2VvbWV0cnlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlQnVmZmVyR2VvbWV0cnkoKSB7XG4gICAgICB2YXIgX3JlZiA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDoge1xuICAgICAgICB2ZXJ0ZXhDb3VudDogM1xuICAgICAgfSxcbiAgICAgICAgICB2ZXJ0ZXhDb3VudCA9IF9yZWYudmVydGV4Q291bnQ7XG5cbiAgICAgIHZhciBlbnRpdHkgPSBjcmVhdGVFbnRpdHkoKTtcbiAgICAgIHJldHVybiB0aGlzLmdlb21ldHJ5LmNyZWF0ZShlbnRpdHksIHtcbiAgICAgICAgdmVydGV4Q291bnQ6IHZlcnRleENvdW50XG4gICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHNlZSBodHRwczovL3RocmVlanMub3JnL2RvY3MvI2FwaS9lbi9jb3JlL0luc3RhbmNlZEJ1ZmZlckdlb21ldHJ5XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeShfcmVmMikge1xuICAgICAgdmFyIG1heEluc3RhbmNlZENvdW50ID0gX3JlZjIubWF4SW5zdGFuY2VkQ291bnQsXG4gICAgICAgICAgdmVydGV4Q291bnQgPSBfcmVmMi52ZXJ0ZXhDb3VudDtcbiAgICAgIHZhciBlbnRpdHkgPSBjcmVhdGVFbnRpdHkoKTtcbiAgICAgIHJldHVybiB0aGlzLmdlb21ldHJ5LmNyZWF0ZShlbnRpdHksIHtcbiAgICAgICAgbWF4SW5zdGFuY2VkQ291bnQ6IG1heEluc3RhbmNlZENvdW50LFxuICAgICAgICB2ZXJ0ZXhDb3VudDogdmVydGV4Q291bnRcbiAgICAgIH0pO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBHZW9tZXRyeVN5c3RlbTtcbn0oKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImdlb21ldHJ5XCIsIFtfZGVjMl0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjIgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImVuZ2luZVwiLCBbX2RlYzNdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U3lzdGVtLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/geometry/System.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/material/MaterialComponent.js":
/*!*****************************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/material/MaterialComponent.js ***!
\*****************************************************************************************************************/
/*! exports provided: MaterialComponent */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MaterialComponent\", function() { return MaterialComponent; });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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@7.16.3@@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_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__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@7.16.3@@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 _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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 ___WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../.. */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _ComponentManager__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../ComponentManager */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/ComponentManager.js\");\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\nvar MaterialComponent = /*#__PURE__*/function (_Component) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default()(MaterialComponent, _Component);\n\n var _super = _createSuper(MaterialComponent);\n\n // control flow in shaders, eg. USE_UV, USE_MAP...\n function MaterialComponent(data) {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, MaterialComponent);\n\n _this = _super.call(this, data);\n _this.vertexShaderGLSL = void 0;\n _this.fragmentShaderGLSL = void 0;\n _this.defines = {};\n _this.dirty = true;\n _this.uniforms = [];\n _this.cull = {\n enable: true,\n face: ___WEBPACK_IMPORTED_MODULE_7__[\"gl\"].BACK\n };\n _this.depth = {\n enable: true\n };\n _this.blend = void 0;\n _this.entity = void 0;\n _this.type = void 0;\n Object.assign(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default()(_this), data);\n return _this;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(MaterialComponent, [{\n key: \"setDefines\",\n value: function setDefines(defines) {\n this.defines = _objectSpread(_objectSpread({}, this.defines), defines);\n return this;\n }\n }, {\n key: \"setCull\",\n value: function setCull(cull) {\n this.cull = cull;\n return this;\n }\n }, {\n key: \"setDepth\",\n value: function setDepth(depth) {\n this.depth = depth;\n return this;\n }\n }, {\n key: \"setBlend\",\n value: function setBlend(blend) {\n this.blend = blend;\n return this;\n }\n }, {\n key: \"setUniform\",\n value: function setUniform(name, data) {\n var _this2 = this;\n\n if (typeof name !== 'string') {\n Object.keys(name).forEach(function (key) {\n return _this2.setUniform(key, name[key]);\n });\n return this;\n }\n\n var existedUniform = this.uniforms.find(function (u) {\n return u.name === name;\n });\n\n if (!existedUniform) {\n this.uniforms.push({\n name: name,\n dirty: true,\n data: data\n });\n } else {\n existedUniform.dirty = true;\n existedUniform.data = data;\n }\n\n this.dirty = true;\n return this;\n }\n }]);\n\n return MaterialComponent;\n}(_ComponentManager__WEBPACK_IMPORTED_MODULE_8__[\"Component\"]);\n//# sourceMappingURL=MaterialComponent.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21hdGVyaWFsL01hdGVyaWFsQ29tcG9uZW50LmpzPzNlNDMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ0E7QUFDTjtBQUNvQjtBQUMxQjtBQUNrQztBQUN0Qjs7QUFFcEUsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsdURBQXVELENBQUMsNEVBQWUsMkJBQTJCLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLGlEQUFpRCxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwaEIsZ0NBQWdDLDZEQUE2RCx5Q0FBeUMsYUFBYSw0RUFBZSxrQkFBa0IsaUNBQWlDLGlCQUFpQiw0RUFBZSxtQkFBbUIseURBQXlELEVBQUUsT0FBTyx1Q0FBdUMsRUFBRSxRQUFRLHVGQUEwQixlQUFlLEdBQUc7O0FBRXZhLHNDQUFzQyx3RUFBd0UsMENBQTBDLDhDQUE4QyxNQUFNLHdFQUF3RSxHQUFHLGFBQWEsRUFBRSxZQUFZLGNBQWMsRUFBRTs7QUFFdlM7QUFDd0I7QUFDNUM7QUFDUCxFQUFFLHNFQUFTOztBQUVYOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxvQ0FBRTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLG1GQUFzQjtBQUN4QztBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0EsbURBQW1EO0FBQ25EO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQyxDQUFDLDJEQUFTO0FBQ1giLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21hdGVyaWFsL01hdGVyaWFsQ29tcG9uZW50LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzXCI7XG5pbXBvcnQgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4gZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVyblwiO1xuaW1wb3J0IF9nZXRQcm90b3R5cGVPZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZlwiO1xuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5pbXBvcnQgeyBnbCB9IGZyb20gJy4uLy4uJztcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJy4uLy4uL0NvbXBvbmVudE1hbmFnZXInO1xuZXhwb3J0IHZhciBNYXRlcmlhbENvbXBvbmVudCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoTWF0ZXJpYWxDb21wb25lbnQsIF9Db21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoTWF0ZXJpYWxDb21wb25lbnQpO1xuXG4gIC8vIGNvbnRyb2wgZmxvdyBpbiBzaGFkZXJzLCBlZy4gVVNFX1VWLCBVU0VfTUFQLi4uXG4gIGZ1bmN0aW9uIE1hdGVyaWFsQ29tcG9uZW50KGRhdGEpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTWF0ZXJpYWxDb21wb25lbnQpO1xuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBkYXRhKTtcbiAgICBfdGhpcy52ZXJ0ZXhTaGFkZXJHTFNMID0gdm9pZCAwO1xuICAgIF90aGlzLmZyYWdtZW50U2hhZGVyR0xTTCA9IHZvaWQgMDtcbiAgICBfdGhpcy5kZWZpbmVzID0ge307XG4gICAgX3RoaXMuZGlydHkgPSB0cnVlO1xuICAgIF90aGlzLnVuaWZvcm1zID0gW107XG4gICAgX3RoaXMuY3VsbCA9IHtcbiAgICAgIGVuYWJsZTogdHJ1ZSxcbiAgICAgIGZhY2U6IGdsLkJBQ0tcbiAgICB9O1xuICAgIF90aGlzLmRlcHRoID0ge1xuICAgICAgZW5hYmxlOiB0cnVlXG4gICAgfTtcbiAgICBfdGhpcy5ibGVuZCA9IHZvaWQgMDtcbiAgICBfdGhpcy5lbnRpdHkgPSB2b2lkIDA7XG4gICAgX3RoaXMudHlwZSA9IHZvaWQgMDtcbiAgICBPYmplY3QuYXNzaWduKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBkYXRhKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoTWF0ZXJpYWxDb21wb25lbnQsIFt7XG4gICAga2V5OiBcInNldERlZmluZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0RGVmaW5lcyhkZWZpbmVzKSB7XG4gICAgICB0aGlzLmRlZmluZXMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHRoaXMuZGVmaW5lcyksIGRlZmluZXMpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldEN1bGxcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0Q3VsbChjdWxsKSB7XG4gICAgICB0aGlzLmN1bGwgPSBjdWxsO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldERlcHRoXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldERlcHRoKGRlcHRoKSB7XG4gICAgICB0aGlzLmRlcHRoID0gZGVwdGg7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0QmxlbmRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0QmxlbmQoYmxlbmQpIHtcbiAgICAgIHRoaXMuYmxlbmQgPSBibGVuZDtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRVbmlmb3JtXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldFVuaWZvcm0obmFtZSwgZGF0YSkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIGlmICh0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgT2JqZWN0LmtleXMobmFtZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzMi5zZXRVbmlmb3JtKGtleSwgbmFtZVtrZXldKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICB2YXIgZXhpc3RlZFVuaWZvcm0gPSB0aGlzLnVuaWZvcm1zLmZpbmQoZnVuY3Rpb24gKHUpIHtcbiAgICAgICAgcmV0dXJuIHUubmFtZSA9PT0gbmFtZTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIWV4aXN0ZWRVbmlmb3JtKSB7XG4gICAgICAgIHRoaXMudW5pZm9ybXMucHVzaCh7XG4gICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICBkaXJ0eTogdHJ1ZSxcbiAgICAgICAgICBkYXRhOiBkYXRhXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXhpc3RlZFVuaWZvcm0uZGlydHkgPSB0cnVlO1xuICAgICAgICBleGlzdGVkVW5pZm9ybS5kYXRhID0gZGF0YTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5kaXJ0eSA9IHRydWU7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gTWF0ZXJpYWxDb21wb25lbnQ7XG59KENvbXBvbmVudCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1NYXRlcmlhbENvbXBvbmVudC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/material/MaterialComponent.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/material/System.js":
/*!******************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/material/System.js ***!
\******************************************************************************************************/
/*! exports provided: MaterialSystem */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MaterialSystem\", function() { return MaterialSystem; });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@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_regenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@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 _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/_@babel_runtime@7.16.3@@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_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__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@7.16.3@@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@7.16.3@@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_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../.. */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../identifier */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/identifier.js\");\n\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _class, _class2, _descriptor, _descriptor2, _descriptor3, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n\n\n\nvar MaterialSystem = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_10__[\"IDENTIFIER\"].MaterialComponentManager), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_10__[\"IDENTIFIER\"].RenderEngine), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_10__[\"IDENTIFIER\"].ShaderModuleService), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function MaterialSystem() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default()(this, MaterialSystem);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, \"material\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, \"engine\", _descriptor2, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, \"shaderModule\", _descriptor3, this);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default()(MaterialSystem, [{\n key: \"execute\",\n value: function () {\n var _execute = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(function _callee() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n function execute() {\n return _execute.apply(this, arguments);\n }\n\n return execute;\n }()\n }, {\n key: \"tearDown\",\n value: function tearDown() {\n this.material.clear();\n }\n /**\n * @see https://threejs.org/docs/#api/en/materials/ShaderMaterial\n */\n\n }, {\n key: \"createShaderMaterial\",\n value: function createShaderMaterial(params) {\n var entity = Object(___WEBPACK_IMPORTED_MODULE_9__[\"createEntity\"])();\n var vertexShaderGLSL = params.vertexShader;\n var fragmentShaderGLSL = params.fragmentShader;\n var uniforms = [];\n\n if (!this.engine.supportWebGPU) {\n var moduleName = \"material-\".concat(entity);\n this.shaderModule.registerModule(moduleName, {\n vs: params.vertexShader,\n fs: params.fragmentShader\n });\n var materialModule = this.shaderModule.getModule(moduleName);\n vertexShaderGLSL = materialModule.vs;\n fragmentShaderGLSL = materialModule.fs;\n\n if (materialModule.uniforms) {\n // @ts-ignore\n uniforms = Object.keys(materialModule.uniforms).map(function (uniformName) {\n return {\n dirty: true,\n name: uniformName,\n // @ts-ignore\n data: materialModule.uniforms[uniformName]\n };\n });\n }\n }\n\n return this.material.create(entity, _objectSpread(_objectSpread({\n vertexShaderGLSL: vertexShaderGLSL,\n fragmentShaderGLSL: fragmentShaderGLSL\n }, params), {}, {\n uniforms: uniforms\n }));\n }\n }]);\n\n return MaterialSystem;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default()(_class2.prototype, \"material\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default()(_class2.prototype, \"engine\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default()(_class2.prototype, \"shaderModule\", [_dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=System.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21hdGVyaWFsL1N5c3RlbS5qcz9kMjhiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ1A7QUFDVztBQUNrQjtBQUN0QjtBQUNOO0FBQzBCO0FBQ0E7O0FBRXhGOztBQUVBLDBDQUEwQyxnQ0FBZ0Msb0NBQW9DLG9EQUFvRCw4REFBOEQsZ0VBQWdFLEVBQUUsRUFBRSxnQ0FBZ0MsRUFBRSxhQUFhOztBQUVuVixnQ0FBZ0MsZ0JBQWdCLHNCQUFzQixPQUFPLHVEQUF1RCxhQUFhLHVEQUF1RCxDQUFDLDRFQUFlLDJCQUEyQixFQUFFLEVBQUUsRUFBRSw2Q0FBNkMsMkVBQTJFLEVBQUUsT0FBTyxpREFBaUQsa0ZBQWtGLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZTs7QUFFcmU7QUFDVjtBQUNTO0FBQ3ZDLDZCQUE2Qiw0REFBVSxZQUFZLHdEQUFNLENBQUMsdURBQVUsb0NBQW9DLHdEQUFNLENBQUMsdURBQVUsd0JBQXdCLHdEQUFNLENBQUMsdURBQVU7QUFDeks7QUFDQSxJQUFJLDRFQUFlOztBQUVuQixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCO0FBQzlCOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0EscUJBQXFCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUN4RSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQSxtQkFBbUIsc0RBQVk7QUFDL0I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sYUFBYTtBQUNwQjtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDLDJCQUEyQixzRkFBeUI7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGtCQUFrQixzRkFBeUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGtCQUFrQixzRkFBeUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21hdGVyaWFsL1N5c3RlbS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfcmVnZW5lcmF0b3JSdW50aW1lIGZyb20gXCJAYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvclwiO1xuaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9kZWMzLCBfZGVjNCwgX2NsYXNzLCBfY2xhc3MyLCBfZGVzY3JpcHRvciwgX2Rlc2NyaXB0b3IyLCBfZGVzY3JpcHRvcjMsIF90ZW1wO1xuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuaW1wb3J0IHsgaW5qZWN0LCBpbmplY3RhYmxlIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCB7IGNyZWF0ZUVudGl0eSB9IGZyb20gJy4uLy4uJztcbmltcG9ydCB7IElERU5USUZJRVIgfSBmcm9tICcuLi8uLi9pZGVudGlmaWVyJztcbmV4cG9ydCB2YXIgTWF0ZXJpYWxTeXN0ZW0gPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoSURFTlRJRklFUi5NYXRlcmlhbENvbXBvbmVudE1hbmFnZXIpLCBfZGVjMyA9IGluamVjdChJREVOVElGSUVSLlJlbmRlckVuZ2luZSksIF9kZWM0ID0gaW5qZWN0KElERU5USUZJRVIuU2hhZGVyTW9kdWxlU2VydmljZSksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBNYXRlcmlhbFN5c3RlbSgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTWF0ZXJpYWxTeXN0ZW0pO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJtYXRlcmlhbFwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImVuZ2luZVwiLCBfZGVzY3JpcHRvcjIsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJzaGFkZXJNb2R1bGVcIiwgX2Rlc2NyaXB0b3IzLCB0aGlzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhNYXRlcmlhbFN5c3RlbSwgW3tcbiAgICBrZXk6IFwiZXhlY3V0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2V4ZWN1dGUgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkge1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBleGVjdXRlKCkge1xuICAgICAgICByZXR1cm4gX2V4ZWN1dGUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGV4ZWN1dGU7XG4gICAgfSgpXG4gIH0sIHtcbiAgICBrZXk6IFwidGVhckRvd25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdGVhckRvd24oKSB7XG4gICAgICB0aGlzLm1hdGVyaWFsLmNsZWFyKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBzZWUgaHR0cHM6Ly90aHJlZWpzLm9yZy9kb2NzLyNhcGkvZW4vbWF0ZXJpYWxzL1NoYWRlck1hdGVyaWFsXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVTaGFkZXJNYXRlcmlhbFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVTaGFkZXJNYXRlcmlhbChwYXJhbXMpIHtcbiAgICAgIHZhciBlbnRpdHkgPSBjcmVhdGVFbnRpdHkoKTtcbiAgICAgIHZhciB2ZXJ0ZXhTaGFkZXJHTFNMID0gcGFyYW1zLnZlcnRleFNoYWRlcjtcbiAgICAgIHZhciBmcmFnbWVudFNoYWRlckdMU0wgPSBwYXJhbXMuZnJhZ21lbnRTaGFkZXI7XG4gICAgICB2YXIgdW5pZm9ybXMgPSBbXTtcblxuICAgICAgaWYgKCF0aGlzLmVuZ2luZS5zdXBwb3J0V2ViR1BVKSB7XG4gICAgICAgIHZhciBtb2R1bGVOYW1lID0gXCJtYXRlcmlhbC1cIi5jb25jYXQoZW50aXR5KTtcbiAgICAgICAgdGhpcy5zaGFkZXJNb2R1bGUucmVnaXN0ZXJNb2R1bGUobW9kdWxlTmFtZSwge1xuICAgICAgICAgIHZzOiBwYXJhbXMudmVydGV4U2hhZGVyLFxuICAgICAgICAgIGZzOiBwYXJhbXMuZnJhZ21lbnRTaGFkZXJcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBtYXRlcmlhbE1vZHVsZSA9IHRoaXMuc2hhZGVyTW9kdWxlLmdldE1vZHVsZShtb2R1bGVOYW1lKTtcbiAgICAgICAgdmVydGV4U2hhZGVyR0xTTCA9IG1hdGVyaWFsTW9kdWxlLnZzO1xuICAgICAgICBmcmFnbWVudFNoYWRlckdMU0wgPSBtYXRlcmlhbE1vZHVsZS5mcztcblxuICAgICAgICBpZiAobWF0ZXJpYWxNb2R1bGUudW5pZm9ybXMpIHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgdW5pZm9ybXMgPSBPYmplY3Qua2V5cyhtYXRlcmlhbE1vZHVsZS51bmlmb3JtcykubWFwKGZ1bmN0aW9uICh1bmlmb3JtTmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZGlydHk6IHRydWUsXG4gICAgICAgICAgICAgIG5hbWU6IHVuaWZvcm1OYW1lLFxuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIGRhdGE6IG1hdGVyaWFsTW9kdWxlLnVuaWZvcm1zW3VuaWZvcm1OYW1lXVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5tYXRlcmlhbC5jcmVhdGUoZW50aXR5LCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe1xuICAgICAgICB2ZXJ0ZXhTaGFkZXJHTFNMOiB2ZXJ0ZXhTaGFkZXJHTFNMLFxuICAgICAgICBmcmFnbWVudFNoYWRlckdMU0w6IGZyYWdtZW50U2hhZGVyR0xTTFxuICAgICAgfSwgcGFyYW1zKSwge30sIHtcbiAgICAgICAgdW5pZm9ybXM6IHVuaWZvcm1zXG4gICAgICB9KSk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIE1hdGVyaWFsU3lzdGVtO1xufSgpLCBfdGVtcCksIChfZGVzY3JpcHRvciA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwibWF0ZXJpYWxcIiwgW19kZWMyXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMiA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiZW5naW5lXCIsIFtfZGVjM10sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjMgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcInNoYWRlck1vZHVsZVwiLCBbX2RlYzRdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U3lzdGVtLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/material/System.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/material/interface.js":
/*!*********************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/material/interface.js ***!
\*********************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("\n//# sourceMappingURL=interface.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21hdGVyaWFsL2ludGVyZmFjZS5qcz80ODkwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvbWF0ZXJpYWwvaW50ZXJmYWNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbnRlcmZhY2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/material/interface.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/CullableComponent.js":
/*!*************************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/CullableComponent.js ***!
\*************************************************************************************************************/
/*! exports provided: Strategy, CullableComponent */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Strategy\", function() { return Strategy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CullableComponent\", function() { return CullableComponent; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@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_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__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@7.16.3@@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@7.16.3@@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 _ComponentManager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../ComponentManager */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/ComponentManager.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n/**\n * @see https://doc.babylonjs.com/how_to/optimizing_your_scene#changing-mesh-culling-strategy\n */\nvar Strategy;\n\n(function (Strategy) {\n Strategy[Strategy[\"Standard\"] = 0] = \"Standard\";\n})(Strategy || (Strategy = {}));\n\nvar CullableComponent = /*#__PURE__*/function (_Component) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default()(CullableComponent, _Component);\n\n var _super = _createSuper(CullableComponent);\n\n function CullableComponent(data) {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, CullableComponent);\n\n _this = _super.call(this, data);\n _this.strategy = Strategy.Standard;\n _this.visibilityPlaneMask = 0;\n _this.visible = false;\n Object.assign(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1___default()(_this), data);\n return _this;\n }\n\n return CullableComponent;\n}(_ComponentManager__WEBPACK_IMPORTED_MODULE_5__[\"Component\"]);\n//# sourceMappingURL=CullableComponent.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21lc2gvQ3VsbGFibGVDb21wb25lbnQuanM/ZmZmMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ2M7QUFDMUI7QUFDa0M7QUFDdEI7O0FBRXBFLGdDQUFnQyw2REFBNkQseUNBQXlDLGFBQWEsNEVBQWUsa0JBQWtCLGlDQUFpQyxpQkFBaUIsNEVBQWUsbUJBQW1CLHlEQUF5RCxFQUFFLE9BQU8sdUNBQXVDLEVBQUUsUUFBUSx1RkFBMEIsZUFBZSxHQUFHOztBQUV2YSxzQ0FBc0Msd0VBQXdFLDBDQUEwQyw4Q0FBOEMsTUFBTSx3RUFBd0UsR0FBRyxhQUFhLEVBQUUsWUFBWSxjQUFjLEVBQUU7O0FBRS9ROztBQUVuRDtBQUNBO0FBQ0E7QUFDTzs7QUFFUDtBQUNBO0FBQ0EsQ0FBQyw0QkFBNEI7O0FBRXRCO0FBQ1AsRUFBRSxzRUFBUzs7QUFFWDs7QUFFQTtBQUNBOztBQUVBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLG1GQUFzQjtBQUN4QztBQUNBOztBQUVBO0FBQ0EsQ0FBQyxDQUFDLDJEQUFTO0FBQ1giLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21lc2gvQ3VsbGFibGVDb21wb25lbnQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHNcIjtcbmltcG9ydCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuXCI7XG5pbXBvcnQgX2dldFByb3RvdHlwZU9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mXCI7XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vQ29tcG9uZW50TWFuYWdlcic7XG5cbi8qKlxuICogQHNlZSBodHRwczovL2RvYy5iYWJ5bG9uanMuY29tL2hvd190by9vcHRpbWl6aW5nX3lvdXJfc2NlbmUjY2hhbmdpbmctbWVzaC1jdWxsaW5nLXN0cmF0ZWd5XG4gKi9cbmV4cG9ydCB2YXIgU3RyYXRlZ3k7XG5cbihmdW5jdGlvbiAoU3RyYXRlZ3kpIHtcbiAgU3RyYXRlZ3lbU3RyYXRlZ3lbXCJTdGFuZGFyZFwiXSA9IDBdID0gXCJTdGFuZGFyZFwiO1xufSkoU3RyYXRlZ3kgfHwgKFN0cmF0ZWd5ID0ge30pKTtcblxuZXhwb3J0IHZhciBDdWxsYWJsZUNvbXBvbmVudCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoQ3VsbGFibGVDb21wb25lbnQsIF9Db21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoQ3VsbGFibGVDb21wb25lbnQpO1xuXG4gIGZ1bmN0aW9uIEN1bGxhYmxlQ29tcG9uZW50KGRhdGEpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ3VsbGFibGVDb21wb25lbnQpO1xuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBkYXRhKTtcbiAgICBfdGhpcy5zdHJhdGVneSA9IFN0cmF0ZWd5LlN0YW5kYXJkO1xuICAgIF90aGlzLnZpc2liaWxpdHlQbGFuZU1hc2sgPSAwO1xuICAgIF90aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICBPYmplY3QuYXNzaWduKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBkYXRhKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICByZXR1cm4gQ3VsbGFibGVDb21wb25lbnQ7XG59KENvbXBvbmVudCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1DdWxsYWJsZUNvbXBvbmVudC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/CullableComponent.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/MeshComponent.js":
/*!*********************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/MeshComponent.js ***!
\*********************************************************************************************************/
/*! exports provided: MeshComponent */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MeshComponent\", function() { return MeshComponent; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@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_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__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@7.16.3@@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@7.16.3@@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 _ComponentManager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../ComponentManager */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/ComponentManager.js\");\n/* harmony import */ var _shape_AABB__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../shape/AABB */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/AABB.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\nvar MeshComponent = /*#__PURE__*/function (_Component) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default()(MeshComponent, _Component);\n\n var _super = _createSuper(MeshComponent);\n\n /**\n * aabb 应该存在 Mesh 而非 Geometry 中,原因包括:\n * 1. 包围盒会受 transform 影响。例如每次 transform 之后应该重新计算包围盒(center 发生偏移)。\n * 2. 多个 Mesh 可以共享一个 Geometry,但可以各自拥有不同的 aabb\n */\n\n /**\n * transform 之后需要重新计算包围盒\n */\n\n /**\n * 实际渲染 Model\n */\n function MeshComponent(data) {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, MeshComponent);\n\n _this = _super.call(this, data);\n _this.material = void 0;\n _this.geometry = void 0;\n _this.aabb = new _shape_AABB__WEBPACK_IMPORTED_MODULE_6__[\"AABB\"]();\n _this.aabbDirty = true;\n _this.model = void 0;\n _this.visible = true;\n _this.children = [];\n Object.assign(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1___default()(_this), data);\n return _this;\n }\n\n return MeshComponent;\n}(_ComponentManager__WEBPACK_IMPORTED_MODULE_5__[\"Component\"]);\n//# sourceMappingURL=MeshComponent.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21lc2gvTWVzaENvbXBvbmVudC5qcz9lZWNiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDYztBQUMxQjtBQUNrQztBQUN0Qjs7QUFFcEUsZ0NBQWdDLDZEQUE2RCx5Q0FBeUMsYUFBYSw0RUFBZSxrQkFBa0IsaUNBQWlDLGlCQUFpQiw0RUFBZSxtQkFBbUIseURBQXlELEVBQUUsT0FBTyx1Q0FBdUMsRUFBRSxRQUFRLHVGQUEwQixlQUFlLEdBQUc7O0FBRXZhLHNDQUFzQyx3RUFBd0UsMENBQTBDLDhDQUE4QyxNQUFNLHdFQUF3RSxHQUFHLGFBQWEsRUFBRSxZQUFZLGNBQWMsRUFBRTs7QUFFL1E7QUFDWDtBQUNqQztBQUNQLEVBQUUsc0VBQVM7O0FBRVg7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsZ0RBQUk7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsbUZBQXNCO0FBQ3hDO0FBQ0E7O0FBRUE7QUFDQSxDQUFDLENBQUMsMkRBQVM7QUFDWCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvbWVzaC9NZXNoQ29tcG9uZW50LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXNzZXJ0VGhpc0luaXRpYWxpemVkXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzXCI7XG5pbXBvcnQgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4gZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVyblwiO1xuaW1wb3J0IF9nZXRQcm90b3R5cGVPZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZlwiO1xuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJy4uLy4uL0NvbXBvbmVudE1hbmFnZXInO1xuaW1wb3J0IHsgQUFCQiB9IGZyb20gJy4uLy4uL3NoYXBlL0FBQkInO1xuZXhwb3J0IHZhciBNZXNoQ29tcG9uZW50ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhNZXNoQ29tcG9uZW50LCBfQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKE1lc2hDb21wb25lbnQpO1xuXG4gIC8qKlxuICAgKiBhYWJiIOW6lOivpeWtmOWcqCBNZXNoIOiAjOmdniBHZW9tZXRyeSDkuK3vvIzljp/lm6DljIXmi6zvvJpcbiAgICogMS4g5YyF5Zu055uS5Lya5Y+XIHRyYW5zZm9ybSDlvbHlk43jgILkvovlpoLmr4/mrKEgdHJhbnNmb3JtIOS5i+WQjuW6lOivpemHjeaWsOiuoeeul+WMheWbtOebku+8iGNlbnRlciDlj5HnlJ/lgY/np7vvvInjgIJcbiAgICogMi4g5aSa5LiqIE1lc2gg5Y+v5Lul5YWx5Lqr5LiA5LiqIEdlb21ldHJ577yM5L2G5Y+v5Lul5ZCE6Ieq5oul5pyJ5LiN5ZCM55qEIGFhYmJcbiAgICovXG5cbiAgLyoqXG4gICAqIHRyYW5zZm9ybSDkuYvlkI7pnIDopoHph43mlrDorqHnrpfljIXlm7Tnm5JcbiAgICovXG5cbiAgLyoqXG4gICAqIOWunumZhea4suafkyBNb2RlbFxuICAgKi9cbiAgZnVuY3Rpb24gTWVzaENvbXBvbmVudChkYXRhKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIE1lc2hDb21wb25lbnQpO1xuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBkYXRhKTtcbiAgICBfdGhpcy5tYXRlcmlhbCA9IHZvaWQgMDtcbiAgICBfdGhpcy5nZW9tZXRyeSA9IHZvaWQgMDtcbiAgICBfdGhpcy5hYWJiID0gbmV3IEFBQkIoKTtcbiAgICBfdGhpcy5hYWJiRGlydHkgPSB0cnVlO1xuICAgIF90aGlzLm1vZGVsID0gdm9pZCAwO1xuICAgIF90aGlzLnZpc2libGUgPSB0cnVlO1xuICAgIF90aGlzLmNoaWxkcmVuID0gW107XG4gICAgT2JqZWN0LmFzc2lnbihfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgZGF0YSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgcmV0dXJuIE1lc2hDb21wb25lbnQ7XG59KENvbXBvbmVudCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1NZXNoQ29tcG9uZW50LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/MeshComponent.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/System.js":
/*!**************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/System.js ***!
\**************************************************************************************************/
/*! exports provided: MeshSystem */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MeshSystem\", function() { return MeshSystem; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__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@7.16.3@@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_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__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@7.16.3@@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@7.16.3@@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_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../identifier */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/identifier.js\");\n/* harmony import */ var _shape_Frustum__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../shape/Frustum */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/Frustum.js\");\n/* harmony import */ var _utils_math__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../utils/math */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/math.js\");\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _temp;\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, 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 normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n\n\n\n\n\nvar MeshSystem = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].MeshComponentManager), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].CullableComponentManager), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].GeometryComponentManager), _dec5 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].HierarchyComponentManager), _dec6 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].TransformComponentManager), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function MeshSystem() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, MeshSystem);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"mesh\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"cullable\", _descriptor2, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"geometry\", _descriptor3, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"hierarchy\", _descriptor4, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"transform\", _descriptor5, this);\n\n this.planes = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(MeshSystem, [{\n key: \"setFrustumPlanes\",\n value: function setFrustumPlanes(planes) {\n this.planes = planes;\n }\n }, {\n key: \"execute\",\n value: function () {\n var _execute = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(views) {\n var _iterator, _step, view, scene, camera, _iterator2, _step2, entity, component, hierarchyComponent, cullableComponent, geometryComponent, meshTransform, worldTransform, _geometryComponent$aa, center, halfExtents, transformedCenter, rotationScale, transformedHalfExtents, parentCullableComponent;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _iterator = _createForOfIteratorHelper(views);\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n view = _step.value;\n scene = view.getScene();\n camera = view.getCamera(); // get VP matrix from camera\n\n _iterator2 = _createForOfIteratorHelper(scene.getEntities());\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n entity = _step2.value;\n component = this.mesh.getComponentByEntity(entity);\n\n if (component) {\n hierarchyComponent = this.hierarchy.getComponentByEntity(entity);\n cullableComponent = this.cullable.getComponentByEntity(entity);\n geometryComponent = component.geometry;\n meshTransform = this.transform.getComponentByEntity(entity); // update mesh.aabb\n\n if (geometryComponent && geometryComponent.aabb && meshTransform && component.aabbDirty) {\n worldTransform = meshTransform.worldTransform; // apply transform to geometry.aabb\n\n _geometryComponent$aa = geometryComponent.aabb, center = _geometryComponent$aa.center, halfExtents = _geometryComponent$aa.halfExtents;\n transformedCenter = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].transformMat4(gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].create(), center, worldTransform);\n rotationScale = Object(_utils_math__WEBPACK_IMPORTED_MODULE_11__[\"getRotationScale\"])(worldTransform, gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"mat3\"].create());\n transformedHalfExtents = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].transformMat3(gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].create(), halfExtents, rotationScale);\n component.aabb.update(transformedCenter, transformedHalfExtents);\n component.aabbDirty = false;\n } // culling\n\n\n if (cullableComponent && geometryComponent) {\n parentCullableComponent = this.cullable.getComponentByEntity((hierarchyComponent === null || hierarchyComponent === void 0 ? void 0 : hierarchyComponent.parentID) || -1);\n cullableComponent.visibilityPlaneMask = this.computeVisibilityWithPlaneMask(component.aabb, (parentCullableComponent === null || parentCullableComponent === void 0 ? void 0 : parentCullableComponent.visibilityPlaneMask) || _shape_Frustum__WEBPACK_IMPORTED_MODULE_10__[\"Mask\"].INDETERMINATE, this.planes || camera.getFrustum().planes);\n cullableComponent.visible = cullableComponent.visibilityPlaneMask !== _shape_Frustum__WEBPACK_IMPORTED_MODULE_10__[\"Mask\"].OUTSIDE;\n }\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n case 2:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function execute(_x) {\n return _execute.apply(this, arguments);\n }\n\n return execute;\n }()\n }, {\n key: \"tearDown\",\n value: function tearDown() {\n this.cullable.clear();\n this.mesh.clear();\n }\n /**\n *\n * @see「Optimized View Frustum Culling Algorithms for Bounding Boxes」\n * @see https://github.com/antvis/GWebGPUEngine/issues/3\n *\n * * 基础相交测试 the basic intersection test\n * * 标记 masking @see https://cesium.com/blog/2015/08/04/fast-hierarchical-culling/\n * * TODO: 平面一致性测试 the plane-coherency test\n * * TODO: 支持 mesh 指定自身的剔除策略,参考 Babylon.js @see https://doc.babylonjs.com/how_to/optimizing_your_scene#changing-mesh-culling-strategy\n *\n * @param aabb aabb\n * @param parentPlaneMask mask of parent\n * @param planes planes of frustum\n */\n\n }, {\n key: \"computeVisibilityWithPlaneMask\",\n value: function computeVisibilityWithPlaneMask(aabb, parentPlaneMask, planes) {\n if (parentPlaneMask === _shape_Frustum__WEBPACK_IMPORTED_MODULE_10__[\"Mask\"].OUTSIDE || parentPlaneMask === _shape_Frustum__WEBPACK_IMPORTED_MODULE_10__[\"Mask\"].INSIDE) {\n // 父节点完全位于视锥内或者外部,直接返回\n return parentPlaneMask;\n } // Start with MASK_INSIDE (all zeros) so that after the loop, the return value can be compared with MASK_INSIDE.\n // (Because if there are fewer than 31 planes, the upper bits wont be changed.)\n\n\n var mask = _shape_Frustum__WEBPACK_IMPORTED_MODULE_10__[\"Mask\"].INSIDE;\n\n for (var k = 0, len = planes.length; k < len; ++k) {\n // For k greater than 31 (since 31 is the maximum number of INSIDE/INTERSECTING bits we can store), skip the optimization.\n var flag = k < 31 ? 1 << k : 0;\n\n if (k < 31 && (parentPlaneMask & flag) === 0) {\n // 父节点处于当前面内部,可以跳过\n continue;\n } // 使用 p-vertex 和 n-vertex 加速,避免进行平面和 aabb 全部顶点的相交检测\n\n\n var _planes$k = planes[k],\n normal = _planes$k.normal,\n distance = _planes$k.distance;\n\n if (gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].dot(normal, aabb.getNegativeFarPoint(planes[k])) + distance > 0) {\n return _shape_Frustum__WEBPACK_IMPORTED_MODULE_10__[\"Mask\"].OUTSIDE;\n }\n\n if (gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].dot(normal, aabb.getPositiveFarPoint(planes[k])) + distance > 0) {\n // 和当前面相交,对应位置为1,继续检测下一个面\n mask |= flag;\n }\n }\n\n return mask;\n }\n }]);\n\n return MeshSystem;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"mesh\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"cullable\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"geometry\", [_dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor4 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"hierarchy\", [_dec5], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor5 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"transform\", [_dec6], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=System.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21lc2gvU3lzdGVtLmpzPzAwYTkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkQ7QUFDVztBQUNrQjtBQUN0QjtBQUNOO0FBQzBCO0FBQ0E7O0FBRXhGOztBQUVBLHdEQUF3RCxRQUFRLG1FQUFtRSx3SEFBd0gsZ0JBQWdCLFdBQVcseUJBQXlCLFNBQVMsd0JBQXdCLDRCQUE0QixjQUFjLFNBQVMsOEJBQThCLEVBQUUscUJBQXFCLFVBQVUsRUFBRSxTQUFTLEVBQUUsOEpBQThKLEVBQUUsa0RBQWtELFNBQVMsa0JBQWtCLDJCQUEyQixFQUFFLG1CQUFtQixzQkFBc0IsOEJBQThCLGFBQWEsRUFBRSxzQkFBc0IsZUFBZSxXQUFXLEVBQUUsbUJBQW1CLE1BQU0seURBQXlELEVBQUUsVUFBVSx1QkFBdUIsRUFBRSxFQUFFLEdBQUc7O0FBRTc5QixpREFBaUQsZ0JBQWdCLGdFQUFnRSx3REFBd0QsNkRBQTZELHNEQUFzRCxrSEFBa0g7O0FBRTlaLHNDQUFzQyx1REFBdUQsdUNBQXVDLFNBQVMsT0FBTyxrQkFBa0IsRUFBRSxhQUFhOztBQUU5STtBQUNRO0FBQ0Q7QUFDSDtBQUNTO0FBQzdDLHlCQUF5Qiw0REFBVSxZQUFZLHdEQUFNLENBQUMsc0RBQVUsZ0NBQWdDLHdEQUFNLENBQUMsc0RBQVUsb0NBQW9DLHdEQUFNLENBQUMsc0RBQVUsb0NBQW9DLHdEQUFNLENBQUMsc0RBQVUscUNBQXFDLHdEQUFNLENBQUMsc0RBQVU7QUFDeFI7QUFDQSxJQUFJLDRFQUFlOztBQUVuQixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxxQkFBcUIsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3hFOztBQUVBLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EscUNBQXFDLCtCQUErQjtBQUNwRTtBQUNBO0FBQ0EsOENBQThDOztBQUU5Qzs7QUFFQTtBQUNBLDBDQUEwQyxpQ0FBaUM7QUFDM0U7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNGQUFzRjs7QUFFdEY7QUFDQSwwRUFBMEU7O0FBRTFFO0FBQ0EsZ0RBQWdELDhDQUFJLGVBQWUsOENBQUk7QUFDdkUsNENBQTRDLHFFQUFnQixpQkFBaUIsOENBQUk7QUFDakYscURBQXFELDhDQUFJLGVBQWUsOENBQUk7QUFDNUU7QUFDQTtBQUNBLDJCQUEyQjs7O0FBRzNCO0FBQ0E7QUFDQSwyUEFBMlAsb0RBQUk7QUFDL1Asa0dBQWtHLG9EQUFJO0FBQ3RHO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLDhCQUE4QixvREFBSSxnQ0FBZ0Msb0RBQUk7QUFDdEU7QUFDQTtBQUNBLE9BQU87QUFDUDs7O0FBR0EsaUJBQWlCLG9EQUFJOztBQUVyQiwwQ0FBMEMsU0FBUztBQUNuRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7OztBQUdUO0FBQ0E7QUFDQTs7QUFFQSxZQUFZLDhDQUFJO0FBQ2hCLGlCQUFpQixvREFBSTtBQUNyQjs7QUFFQSxZQUFZLDhDQUFJO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQywyQkFBMkIsc0ZBQXlCO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9tZXNoL1N5c3RlbS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfcmVnZW5lcmF0b3JSdW50aW1lIGZyb20gXCJAYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvclwiO1xuaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9kZWMzLCBfZGVjNCwgX2RlYzUsIF9kZWM2LCBfY2xhc3MsIF9jbGFzczIsIF9kZXNjcmlwdG9yLCBfZGVzY3JpcHRvcjIsIF9kZXNjcmlwdG9yMywgX2Rlc2NyaXB0b3I0LCBfZGVzY3JpcHRvcjUsIF90ZW1wO1xuXG5mdW5jdGlvbiBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihvLCBhbGxvd0FycmF5TGlrZSkgeyB2YXIgaXQ7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcInVuZGVmaW5lZFwiIHx8IG9bU3ltYm9sLml0ZXJhdG9yXSA9PSBudWxsKSB7IGlmIChBcnJheS5pc0FycmF5KG8pIHx8IChpdCA9IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvKSkgfHwgYWxsb3dBcnJheUxpa2UgJiYgbyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHsgaWYgKGl0KSBvID0gaXQ7IHZhciBpID0gMDsgdmFyIEYgPSBmdW5jdGlvbiBGKCkge307IHJldHVybiB7IHM6IEYsIG46IGZ1bmN0aW9uIG4oKSB7IGlmIChpID49IG8ubGVuZ3RoKSByZXR1cm4geyBkb25lOiB0cnVlIH07IHJldHVybiB7IGRvbmU6IGZhbHNlLCB2YWx1ZTogb1tpKytdIH07IH0sIGU6IGZ1bmN0aW9uIGUoX2UpIHsgdGhyb3cgX2U7IH0sIGY6IEYgfTsgfSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH0gdmFyIG5vcm1hbENvbXBsZXRpb24gPSB0cnVlLCBkaWRFcnIgPSBmYWxzZSwgZXJyOyByZXR1cm4geyBzOiBmdW5jdGlvbiBzKCkgeyBpdCA9IG9bU3ltYm9sLml0ZXJhdG9yXSgpOyB9LCBuOiBmdW5jdGlvbiBuKCkgeyB2YXIgc3RlcCA9IGl0Lm5leHQoKTsgbm9ybWFsQ29tcGxldGlvbiA9IHN0ZXAuZG9uZTsgcmV0dXJuIHN0ZXA7IH0sIGU6IGZ1bmN0aW9uIGUoX2UyKSB7IGRpZEVyciA9IHRydWU7IGVyciA9IF9lMjsgfSwgZjogZnVuY3Rpb24gZigpIHsgdHJ5IHsgaWYgKCFub3JtYWxDb21wbGV0aW9uICYmIGl0LnJldHVybiAhPSBudWxsKSBpdC5yZXR1cm4oKTsgfSBmaW5hbGx5IHsgaWYgKGRpZEVycikgdGhyb3cgZXJyOyB9IH0gfTsgfVxuXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cblxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgeyBhcnIyW2ldID0gYXJyW2ldOyB9IHJldHVybiBhcnIyOyB9XG5cbmltcG9ydCB7IG1hdDMsIHZlYzMgfSBmcm9tICdnbC1tYXRyaXgnO1xuaW1wb3J0IHsgaW5qZWN0LCBpbmplY3RhYmxlIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCB7IElERU5USUZJRVIgfSBmcm9tICcuLi8uLi9pZGVudGlmaWVyJztcbmltcG9ydCB7IE1hc2sgfSBmcm9tICcuLi8uLi9zaGFwZS9GcnVzdHVtJztcbmltcG9ydCB7IGdldFJvdGF0aW9uU2NhbGUgfSBmcm9tICcuLi8uLi91dGlscy9tYXRoJztcbmV4cG9ydCB2YXIgTWVzaFN5c3RlbSA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjMiA9IGluamVjdChJREVOVElGSUVSLk1lc2hDb21wb25lbnRNYW5hZ2VyKSwgX2RlYzMgPSBpbmplY3QoSURFTlRJRklFUi5DdWxsYWJsZUNvbXBvbmVudE1hbmFnZXIpLCBfZGVjNCA9IGluamVjdChJREVOVElGSUVSLkdlb21ldHJ5Q29tcG9uZW50TWFuYWdlciksIF9kZWM1ID0gaW5qZWN0KElERU5USUZJRVIuSGllcmFyY2h5Q29tcG9uZW50TWFuYWdlciksIF9kZWM2ID0gaW5qZWN0KElERU5USUZJRVIuVHJhbnNmb3JtQ29tcG9uZW50TWFuYWdlciksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBNZXNoU3lzdGVtKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBNZXNoU3lzdGVtKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwibWVzaFwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImN1bGxhYmxlXCIsIF9kZXNjcmlwdG9yMiwgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImdlb21ldHJ5XCIsIF9kZXNjcmlwdG9yMywgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImhpZXJhcmNoeVwiLCBfZGVzY3JpcHRvcjQsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJ0cmFuc2Zvcm1cIiwgX2Rlc2NyaXB0b3I1LCB0aGlzKTtcblxuICAgIHRoaXMucGxhbmVzID0gdm9pZCAwO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKE1lc2hTeXN0ZW0sIFt7XG4gICAga2V5OiBcInNldEZydXN0dW1QbGFuZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0RnJ1c3R1bVBsYW5lcyhwbGFuZXMpIHtcbiAgICAgIHRoaXMucGxhbmVzID0gcGxhbmVzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJleGVjdXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfZXhlY3V0ZSA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUodmlld3MpIHtcbiAgICAgICAgdmFyIF9pdGVyYXRvciwgX3N0ZXAsIHZpZXcsIHNjZW5lLCBjYW1lcmEsIF9pdGVyYXRvcjIsIF9zdGVwMiwgZW50aXR5LCBjb21wb25lbnQsIGhpZXJhcmNoeUNvbXBvbmVudCwgY3VsbGFibGVDb21wb25lbnQsIGdlb21ldHJ5Q29tcG9uZW50LCBtZXNoVHJhbnNmb3JtLCB3b3JsZFRyYW5zZm9ybSwgX2dlb21ldHJ5Q29tcG9uZW50JGFhLCBjZW50ZXIsIGhhbGZFeHRlbnRzLCB0cmFuc2Zvcm1lZENlbnRlciwgcm90YXRpb25TY2FsZSwgdHJhbnNmb3JtZWRIYWxmRXh0ZW50cywgcGFyZW50Q3VsbGFibGVDb21wb25lbnQ7XG5cbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBfaXRlcmF0b3IgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcih2aWV3cyk7XG5cbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgZm9yIChfaXRlcmF0b3IucygpOyAhKF9zdGVwID0gX2l0ZXJhdG9yLm4oKSkuZG9uZTspIHtcbiAgICAgICAgICAgICAgICAgICAgdmlldyA9IF9zdGVwLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBzY2VuZSA9IHZpZXcuZ2V0U2NlbmUoKTtcbiAgICAgICAgICAgICAgICAgICAgY2FtZXJhID0gdmlldy5nZXRDYW1lcmEoKTsgLy8gZ2V0IFZQIG1hdHJpeCBmcm9tIGNhbWVyYVxuXG4gICAgICAgICAgICAgICAgICAgIF9pdGVyYXRvcjIgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihzY2VuZS5nZXRFbnRpdGllcygpKTtcblxuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgIGZvciAoX2l0ZXJhdG9yMi5zKCk7ICEoX3N0ZXAyID0gX2l0ZXJhdG9yMi5uKCkpLmRvbmU7KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHkgPSBfc3RlcDIudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQgPSB0aGlzLm1lc2guZ2V0Q29tcG9uZW50QnlFbnRpdHkoZW50aXR5KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBoaWVyYXJjaHlDb21wb25lbnQgPSB0aGlzLmhpZXJhcmNoeS5nZXRDb21wb25lbnRCeUVudGl0eShlbnRpdHkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjdWxsYWJsZUNvbXBvbmVudCA9IHRoaXMuY3VsbGFibGUuZ2V0Q29tcG9uZW50QnlFbnRpdHkoZW50aXR5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VvbWV0cnlDb21wb25lbnQgPSBjb21wb25lbnQuZ2VvbWV0cnk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1lc2hUcmFuc2Zvcm0gPSB0aGlzLnRyYW5zZm9ybS5nZXRDb21wb25lbnRCeUVudGl0eShlbnRpdHkpOyAvLyB1cGRhdGUgbWVzaC5hYWJiXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdlb21ldHJ5Q29tcG9uZW50ICYmIGdlb21ldHJ5Q29tcG9uZW50LmFhYmIgJiYgbWVzaFRyYW5zZm9ybSAmJiBjb21wb25lbnQuYWFiYkRpcnR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ybGRUcmFuc2Zvcm0gPSBtZXNoVHJhbnNmb3JtLndvcmxkVHJhbnNmb3JtOyAvLyBhcHBseSB0cmFuc2Zvcm0gdG8gZ2VvbWV0cnkuYWFiYlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2dlb21ldHJ5Q29tcG9uZW50JGFhID0gZ2VvbWV0cnlDb21wb25lbnQuYWFiYiwgY2VudGVyID0gX2dlb21ldHJ5Q29tcG9uZW50JGFhLmNlbnRlciwgaGFsZkV4dGVudHMgPSBfZ2VvbWV0cnlDb21wb25lbnQkYWEuaGFsZkV4dGVudHM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtZWRDZW50ZXIgPSB2ZWMzLnRyYW5zZm9ybU1hdDQodmVjMy5jcmVhdGUoKSwgY2VudGVyLCB3b3JsZFRyYW5zZm9ybSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb25TY2FsZSA9IGdldFJvdGF0aW9uU2NhbGUod29ybGRUcmFuc2Zvcm0sIG1hdDMuY3JlYXRlKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybWVkSGFsZkV4dGVudHMgPSB2ZWMzLnRyYW5zZm9ybU1hdDModmVjMy5jcmVhdGUoKSwgaGFsZkV4dGVudHMsIHJvdGF0aW9uU2NhbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5hYWJiLnVwZGF0ZSh0cmFuc2Zvcm1lZENlbnRlciwgdHJhbnNmb3JtZWRIYWxmRXh0ZW50cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmFhYmJEaXJ0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9IC8vIGN1bGxpbmdcblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdWxsYWJsZUNvbXBvbmVudCAmJiBnZW9tZXRyeUNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudEN1bGxhYmxlQ29tcG9uZW50ID0gdGhpcy5jdWxsYWJsZS5nZXRDb21wb25lbnRCeUVudGl0eSgoaGllcmFyY2h5Q29tcG9uZW50ID09PSBudWxsIHx8IGhpZXJhcmNoeUNvbXBvbmVudCA9PT0gdm9pZCAwID8gdm9pZCAwIDogaGllcmFyY2h5Q29tcG9uZW50LnBhcmVudElEKSB8fCAtMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VsbGFibGVDb21wb25lbnQudmlzaWJpbGl0eVBsYW5lTWFzayA9IHRoaXMuY29tcHV0ZVZpc2liaWxpdHlXaXRoUGxhbmVNYXNrKGNvbXBvbmVudC5hYWJiLCAocGFyZW50Q3VsbGFibGVDb21wb25lbnQgPT09IG51bGwgfHwgcGFyZW50Q3VsbGFibGVDb21wb25lbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhcmVudEN1bGxhYmxlQ29tcG9uZW50LnZpc2liaWxpdHlQbGFuZU1hc2spIHx8IE1hc2suSU5ERVRFUk1JTkFURSwgdGhpcy5wbGFuZXMgfHwgY2FtZXJhLmdldEZydXN0dW0oKS5wbGFuZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1bGxhYmxlQ29tcG9uZW50LnZpc2libGUgPSBjdWxsYWJsZUNvbXBvbmVudC52aXNpYmlsaXR5UGxhbmVNYXNrICE9PSBNYXNrLk9VVFNJREU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgIF9pdGVyYXRvcjIuZShlcnIpO1xuICAgICAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICAgIF9pdGVyYXRvcjIuZigpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICBfaXRlcmF0b3IuZShlcnIpO1xuICAgICAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICBfaXRlcmF0b3IuZigpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZSwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGV4ZWN1dGUoX3gpIHtcbiAgICAgICAgcmV0dXJuIF9leGVjdXRlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBleGVjdXRlO1xuICAgIH0oKVxuICB9LCB7XG4gICAga2V5OiBcInRlYXJEb3duXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHRlYXJEb3duKCkge1xuICAgICAgdGhpcy5jdWxsYWJsZS5jbGVhcigpO1xuICAgICAgdGhpcy5tZXNoLmNsZWFyKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHNlZeOAjE9wdGltaXplZCBWaWV3IEZydXN0dW0gQ3VsbGluZyBBbGdvcml0aG1zIGZvciBCb3VuZGluZyBCb3hlc+OAjVxuICAgICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2FudHZpcy9HV2ViR1BVRW5naW5lL2lzc3Vlcy8zXG4gICAgICpcbiAgICAgKiAqIOWfuuehgOebuOS6pOa1i+ivlSB0aGUgYmFzaWMgaW50ZXJzZWN0aW9uIHRlc3RcbiAgICAgKiAqIOagh+iusCBtYXNraW5nIEBzZWUgaHR0cHM6Ly9jZXNpdW0uY29tL2Jsb2cvMjAxNS8wOC8wNC9mYXN0LWhpZXJhcmNoaWNhbC1jdWxsaW5nL1xuICAgICAqICogVE9ETzog5bmz6Z2i5LiA6Ie05oCn5rWL6K+VIHRoZSBwbGFuZS1jb2hlcmVuY3kgdGVzdFxuICAgICAqICogVE9ETzog5pSv5oyBIG1lc2gg5oyH5a6a6Ieq6Lqr55qE5YmU6Zmk562W55Wl77yM5Y+C6ICDIEJhYnlsb24uanMgQHNlZSBodHRwczovL2RvYy5iYWJ5bG9uanMuY29tL2hvd190by9vcHRpbWl6aW5nX3lvdXJfc2NlbmUjY2hhbmdpbmctbWVzaC1jdWxsaW5nLXN0cmF0ZWd5XG4gICAgICpcbiAgICAgKiBAcGFyYW0gYWFiYiBhYWJiXG4gICAgICogQHBhcmFtIHBhcmVudFBsYW5lTWFzayBtYXNrIG9mIHBhcmVudFxuICAgICAqIEBwYXJhbSBwbGFuZXMgcGxhbmVzIG9mIGZydXN0dW1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImNvbXB1dGVWaXNpYmlsaXR5V2l0aFBsYW5lTWFza1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wdXRlVmlzaWJpbGl0eVdpdGhQbGFuZU1hc2soYWFiYiwgcGFyZW50UGxhbmVNYXNrLCBwbGFuZXMpIHtcbiAgICAgIGlmIChwYXJlbnRQbGFuZU1hc2sgPT09IE1hc2suT1VUU0lERSB8fCBwYXJlbnRQbGFuZU1hc2sgPT09IE1hc2suSU5TSURFKSB7XG4gICAgICAgIC8vIOeItuiKgueCueWujOWFqOS9jeS6juinhumUpeWGheaIluiAheWklumDqO+8jOebtOaOpei/lOWbnlxuICAgICAgICByZXR1cm4gcGFyZW50UGxhbmVNYXNrO1xuICAgICAgfSAvLyBTdGFydCB3aXRoIE1BU0tfSU5TSURFIChhbGwgemVyb3MpIHNvIHRoYXQgYWZ0ZXIgdGhlIGxvb3AsIHRoZSByZXR1cm4gdmFsdWUgY2FuIGJlIGNvbXBhcmVkIHdpdGggTUFTS19JTlNJREUuXG4gICAgICAvLyAoQmVjYXVzZSBpZiB0aGVyZSBhcmUgZmV3ZXIgdGhhbiAzMSBwbGFuZXMsIHRoZSB1cHBlciBiaXRzIHdvbnQgYmUgY2hhbmdlZC4pXG5cblxuICAgICAgdmFyIG1hc2sgPSBNYXNrLklOU0lERTtcblxuICAgICAgZm9yICh2YXIgayA9IDAsIGxlbiA9IHBsYW5lcy5sZW5ndGg7IGsgPCBsZW47ICsraykge1xuICAgICAgICAvLyBGb3IgayBncmVhdGVyIHRoYW4gMzEgKHNpbmNlIDMxIGlzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBJTlNJREUvSU5URVJTRUNUSU5HIGJpdHMgd2UgY2FuIHN0b3JlKSwgc2tpcCB0aGUgb3B0aW1pemF0aW9uLlxuICAgICAgICB2YXIgZmxhZyA9IGsgPCAzMSA/IDEgPDwgayA6IDA7XG5cbiAgICAgICAgaWYgKGsgPCAzMSAmJiAocGFyZW50UGxhbmVNYXNrICYgZmxhZykgPT09IDApIHtcbiAgICAgICAgICAvLyDniLboioLngrnlpITkuo7lvZPliY3pnaLlhoXpg6jvvIzlj6/ku6Xot7Pov4dcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfSAvLyDkvb/nlKggcC12ZXJ0ZXgg5ZKMIG4tdmVydGV4IOWKoOmAn++8jOmBv+WFjei/m+ihjOW5s+mdouWSjCBhYWJiIOWFqOmDqOmhtueCueeahOebuOS6pOajgOa1i1xuXG5cbiAgICAgICAgdmFyIF9wbGFuZXMkayA9IHBsYW5lc1trXSxcbiAgICAgICAgICAgIG5vcm1hbCA9IF9wbGFuZXMkay5ub3JtYWwsXG4gICAgICAgICAgICBkaXN0YW5jZSA9IF9wbGFuZXMkay5kaXN0YW5jZTtcblxuICAgICAgICBpZiAodmVjMy5kb3Qobm9ybWFsLCBhYWJiLmdldE5lZ2F0aXZlRmFyUG9pbnQocGxhbmVzW2tdKSkgKyBkaXN0YW5jZSA+IDApIHtcbiAgICAgICAgICByZXR1cm4gTWFzay5PVVRTSURFO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZlYzMuZG90KG5vcm1hbCwgYWFiYi5nZXRQb3NpdGl2ZUZhclBvaW50KHBsYW5lc1trXSkpICsgZGlzdGFuY2UgPiAwKSB7XG4gICAgICAgICAgLy8g5ZKM5b2T5YmN6Z2i55u45Lqk77yM5a+55bqU5L2N572u5Li6Me+8jOe7p+e7reajgOa1i+S4i+S4gOS4qumdolxuICAgICAgICAgIG1hc2sgfD0gZmxhZztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbWFzaztcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gTWVzaFN5c3RlbTtcbn0oKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcIm1lc2hcIiwgW19kZWMyXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMiA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiY3VsbGFibGVcIiwgW19kZWMzXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMyA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiZ2VvbWV0cnlcIiwgW19kZWM0XSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yNCA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiaGllcmFyY2h5XCIsIFtfZGVjNV0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjUgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcInRyYW5zZm9ybVwiLCBbX2RlYzZdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U3lzdGVtLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/System.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/interface.js":
/*!*****************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/interface.js ***!
\*****************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("\n//# sourceMappingURL=interface.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL21lc2gvaW50ZXJmYWNlLmpzPzAzMGQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9tZXNoL2ludGVyZmFjZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW50ZXJmYWNlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/interface.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IAttribute.js":
/*!**********************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IAttribute.js ***!
\**********************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("\n//# sourceMappingURL=IAttribute.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lBdHRyaWJ1dGUuanM/ZTdmNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lBdHRyaWJ1dGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUlBdHRyaWJ1dGUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IAttribute.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IBuffer.js":
/*!*******************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IBuffer.js ***!
\*******************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("\n//# sourceMappingURL=IBuffer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lCdWZmZXIuanM/YmRkOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lCdWZmZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUlCdWZmZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IBuffer.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IComputeModel.js":
/*!*************************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IComputeModel.js ***!
\*************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("\n//# sourceMappingURL=IComputeModel.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lDb21wdXRlTW9kZWwuanM/ZmU5NSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lDb21wdXRlTW9kZWwuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUlDb21wdXRlTW9kZWwuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IComputeModel.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IElements.js":
/*!*********************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IElements.js ***!
\*********************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("\n//# sourceMappingURL=IElements.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lFbGVtZW50cy5qcz9iMjdlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvcmVuZGVyZXIvSUVsZW1lbnRzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG4vLyMgc291cmNlTWFwcGluZ1VSTD1JRWxlbWVudHMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IElements.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IFramebuffer.js":
/*!************************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IFramebuffer.js ***!
\************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("\n//# sourceMappingURL=IFramebuffer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lGcmFtZWJ1ZmZlci5qcz9kNTk4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvcmVuZGVyZXIvSUZyYW1lYnVmZmVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG4vLyMgc291cmNlTWFwcGluZ1VSTD1JRnJhbWVidWZmZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IFramebuffer.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IModel.js":
/*!******************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IModel.js ***!
\******************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("\n//# sourceMappingURL=IModel.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lNb2RlbC5qcz81NTFjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvcmVuZGVyZXIvSU1vZGVsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG4vLyMgc291cmNlTWFwcGluZ1VSTD1JTW9kZWwuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IModel.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IMultiPassRenderer.js":
/*!******************************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IMultiPassRenderer.js ***!
\******************************************************************************************************************/
/*! exports provided: PassType */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PassType\", function() { return PassType; });\nvar PassType;\n/**\n * Pass 分两类:\n * 1. 渲染相关 eg. ClearPass、RenderPass、PickingPass、ShadowPass\n * 2. PostProcessing eg. CopyPass、BlurPass\n * 另外考虑到 Pass 之间严格的执行顺序,render 方法必须是异步的\n */\n\n(function (PassType) {\n PassType[\"Normal\"] = \"normal\";\n PassType[\"PostProcessing\"] = \"post-processing\";\n})(PassType || (PassType = {}));\n//# sourceMappingURL=IMultiPassRenderer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lNdWx0aVBhc3NSZW5kZXJlci5qcz9jZWU4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLDRCQUE0QjtBQUM3QiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvcmVuZGVyZXIvSU11bHRpUGFzc1JlbmRlcmVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBQYXNzVHlwZTtcbi8qKlxuICogUGFzcyDliIbkuKTnsbvvvJpcbiAqIDEuIOa4suafk+ebuOWFsyBlZy4gQ2xlYXJQYXNz44CBUmVuZGVyUGFzc+OAgVBpY2tpbmdQYXNz44CBU2hhZG93UGFzc1xuICogMi4gUG9zdFByb2Nlc3NpbmcgZWcuIENvcHlQYXNz44CBQmx1clBhc3NcbiAqIOWPpuWkluiAg+iZkeWIsCBQYXNzIOS5i+mXtOS4peagvOeahOaJp+ihjOmhuuW6j++8jHJlbmRlciDmlrnms5Xlv4XpobvmmK/lvILmraXnmoRcbiAqL1xuXG4oZnVuY3Rpb24gKFBhc3NUeXBlKSB7XG4gIFBhc3NUeXBlW1wiTm9ybWFsXCJdID0gXCJub3JtYWxcIjtcbiAgUGFzc1R5cGVbXCJQb3N0UHJvY2Vzc2luZ1wiXSA9IFwicG9zdC1wcm9jZXNzaW5nXCI7XG59KShQYXNzVHlwZSB8fCAoUGFzc1R5cGUgPSB7fSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SU11bHRpUGFzc1JlbmRlcmVyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IMultiPassRenderer.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IRenderbuffer.js":
/*!*************************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IRenderbuffer.js ***!
\*************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("\n//# sourceMappingURL=IRenderbuffer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lSZW5kZXJidWZmZXIuanM/MjQ5OSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lSZW5kZXJidWZmZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUlSZW5kZXJidWZmZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IRenderbuffer.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IRendererService.js":
/*!****************************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IRendererService.js ***!
\****************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("\n//# sourceMappingURL=IRendererService.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lSZW5kZXJlclNlcnZpY2UuanM/NGQ5MSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lSZW5kZXJlclNlcnZpY2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUlSZW5kZXJlclNlcnZpY2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IRendererService.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/ITexture2D.js":
/*!**********************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/ITexture2D.js ***!
\**********************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("\n//# sourceMappingURL=ITexture2D.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lUZXh0dXJlMkQuanM/M2E5MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lUZXh0dXJlMkQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUlUZXh0dXJlMkQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/ITexture2D.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IUniform.js":
/*!********************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IUniform.js ***!
\********************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("\n//# sourceMappingURL=IUniform.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL0lVbmlmb3JtLmpzPzliNDYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9yZW5kZXJlci9JVW5pZm9ybS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SVVuaWZvcm0uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IUniform.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/System.js":
/*!******************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/System.js ***!
\******************************************************************************************************/
/*! exports provided: RendererSystem */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RendererSystem\", function() { return RendererSystem; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__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@7.16.3@@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_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__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@7.16.3@@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@7.16.3@@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_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../identifier */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/identifier.js\");\n/* harmony import */ var _passes_CopyPass__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./passes/CopyPass */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/passes/CopyPass.js\");\n/* harmony import */ var _passes_PixelPickingPass__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./passes/PixelPickingPass */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/passes/PixelPickingPass.js\");\n/* harmony import */ var _passes_RenderPass__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./passes/RenderPass */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/passes/RenderPass.js\");\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _temp;\n\n\n\n\n\n\nvar RendererSystem = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Systems), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"named\"])(_identifier__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].FrameGraphSystem), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].RenderPassFactory), _dec5 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].ConfigService), _dec6 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].ResourcePool), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function RendererSystem() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, RendererSystem);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"frameGraphSystem\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"renderPassFactory\", _descriptor2, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"configService\", _descriptor3, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"resourcePool\", _descriptor4, this);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(RendererSystem, [{\n key: \"execute\",\n value: function () {\n var _execute = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(views) {\n var _this$renderPassFacto, setupRenderPass, executeRenderPass, renderPass, _this$renderPassFacto2, setupCopyPass, executeCopyPass, tearDownCopyPass, copyPass;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n // const pixelPickingPass = this.renderPassFactory(\n // PixelPickingPass.IDENTIFIER,\n // );\n // const {\n // setup: setupPixelPickingPass,\n // execute: executePixelPickingPass,\n // tearDown: tearDownPickingPass,\n // } = pixelPickingPass;\n // this.frameGraphSystem.addPass(\n // PixelPickingPass.IDENTIFIER,\n // setupPixelPickingPass,\n // executePixelPickingPass,\n // tearDownPickingPass,\n // );\n _this$renderPassFacto = this.renderPassFactory(_passes_RenderPass__WEBPACK_IMPORTED_MODULE_11__[\"RenderPass\"].IDENTIFIER), setupRenderPass = _this$renderPassFacto.setup, executeRenderPass = _this$renderPassFacto.execute;\n renderPass = this.frameGraphSystem.addPass(_passes_RenderPass__WEBPACK_IMPORTED_MODULE_11__[\"RenderPass\"].IDENTIFIER, setupRenderPass, executeRenderPass);\n _this$renderPassFacto2 = this.renderPassFactory(_passes_CopyPass__WEBPACK_IMPORTED_MODULE_9__[\"CopyPass\"].IDENTIFIER), setupCopyPass = _this$renderPassFacto2.setup, executeCopyPass = _this$renderPassFacto2.execute, tearDownCopyPass = _this$renderPassFacto2.tearDown;\n copyPass = this.frameGraphSystem.addPass(_passes_CopyPass__WEBPACK_IMPORTED_MODULE_9__[\"CopyPass\"].IDENTIFIER, setupCopyPass, executeCopyPass, tearDownCopyPass);\n this.frameGraphSystem.present(copyPass.data.output); // this.frameGraphSystem.present(renderPass.data.output);\n\n case 5:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function execute(_x) {\n return _execute.apply(this, arguments);\n }\n\n return execute;\n }()\n }, {\n key: \"tearDown\",\n value: function tearDown() {\n this.resourcePool.clean();\n }\n }, {\n key: \"pick\",\n value: function pick(position, view) {\n var pickingPass = this.renderPassFactory(_passes_PixelPickingPass__WEBPACK_IMPORTED_MODULE_10__[\"PixelPickingPass\"].IDENTIFIER);\n return pickingPass.pick(position, view);\n }\n }]);\n\n return RendererSystem;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"frameGraphSystem\", [_dec2, _dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"renderPassFactory\", [_dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"configService\", [_dec5], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor4 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"resourcePool\", [_dec6], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=System.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL1N5c3RlbS5qcz9iNjhlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZEO0FBQ1c7QUFDa0I7QUFDdEI7QUFDTjtBQUMwQjtBQUNBOztBQUV4Rjs7QUFFc0Q7QUFDUjtBQUNEO0FBQ2dCO0FBQ1o7QUFDMUMsNkJBQTZCLDREQUFVLFlBQVksd0RBQU0sQ0FBQyxzREFBVSxtQkFBbUIsdURBQUssQ0FBQyxzREFBVSw0QkFBNEIsd0RBQU0sQ0FBQyxzREFBVSw2QkFBNkIsd0RBQU0sQ0FBQyxzREFBVSx5QkFBeUIsd0RBQU0sQ0FBQyxzREFBVTtBQUNuUDtBQUNBLElBQUksNEVBQWU7O0FBRW5CLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCO0FBQzlCOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0EscUJBQXFCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUN4RTs7QUFFQSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrREFBK0QsOERBQVU7QUFDekUsMkRBQTJELDhEQUFVO0FBQ3JFLGdFQUFnRSx5REFBUTtBQUN4RSx5REFBeUQseURBQVE7QUFDakUsb0VBQW9FOztBQUVwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsK0NBQStDLDBFQUFnQjtBQUMvRDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsMkJBQTJCLHNGQUF5QjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvcmVuZGVyZXIvU3lzdGVtLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSBcIkBiYWJlbC9ydW50aW1lL3JlZ2VuZXJhdG9yXCI7XG5pbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplcldhcm5pbmdIZWxwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyXCI7XG5cbnZhciBfZGVjLCBfZGVjMiwgX2RlYzMsIF9kZWM0LCBfZGVjNSwgX2RlYzYsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9kZXNjcmlwdG9yMiwgX2Rlc2NyaXB0b3IzLCBfZGVzY3JpcHRvcjQsIF90ZW1wO1xuXG5pbXBvcnQgeyBpbmplY3QsIGluamVjdGFibGUsIG5hbWVkIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCB7IElERU5USUZJRVIgfSBmcm9tICcuLi8uLi9pZGVudGlmaWVyJztcbmltcG9ydCB7IENvcHlQYXNzIH0gZnJvbSAnLi9wYXNzZXMvQ29weVBhc3MnO1xuaW1wb3J0IHsgUGl4ZWxQaWNraW5nUGFzcyB9IGZyb20gJy4vcGFzc2VzL1BpeGVsUGlja2luZ1Bhc3MnO1xuaW1wb3J0IHsgUmVuZGVyUGFzcyB9IGZyb20gJy4vcGFzc2VzL1JlbmRlclBhc3MnO1xuZXhwb3J0IHZhciBSZW5kZXJlclN5c3RlbSA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjMiA9IGluamVjdChJREVOVElGSUVSLlN5c3RlbXMpLCBfZGVjMyA9IG5hbWVkKElERU5USUZJRVIuRnJhbWVHcmFwaFN5c3RlbSksIF9kZWM0ID0gaW5qZWN0KElERU5USUZJRVIuUmVuZGVyUGFzc0ZhY3RvcnkpLCBfZGVjNSA9IGluamVjdChJREVOVElGSUVSLkNvbmZpZ1NlcnZpY2UpLCBfZGVjNiA9IGluamVjdChJREVOVElGSUVSLlJlc291cmNlUG9vbCksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBSZW5kZXJlclN5c3RlbSgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVuZGVyZXJTeXN0ZW0pO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJmcmFtZUdyYXBoU3lzdGVtXCIsIF9kZXNjcmlwdG9yLCB0aGlzKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwicmVuZGVyUGFzc0ZhY3RvcnlcIiwgX2Rlc2NyaXB0b3IyLCB0aGlzKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwiY29uZmlnU2VydmljZVwiLCBfZGVzY3JpcHRvcjMsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJyZXNvdXJjZVBvb2xcIiwgX2Rlc2NyaXB0b3I0LCB0aGlzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhSZW5kZXJlclN5c3RlbSwgW3tcbiAgICBrZXk6IFwiZXhlY3V0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2V4ZWN1dGUgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKHZpZXdzKSB7XG4gICAgICAgIHZhciBfdGhpcyRyZW5kZXJQYXNzRmFjdG8sIHNldHVwUmVuZGVyUGFzcywgZXhlY3V0ZVJlbmRlclBhc3MsIHJlbmRlclBhc3MsIF90aGlzJHJlbmRlclBhc3NGYWN0bzIsIHNldHVwQ29weVBhc3MsIGV4ZWN1dGVDb3B5UGFzcywgdGVhckRvd25Db3B5UGFzcywgY29weVBhc3M7XG5cbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAvLyBjb25zdCBwaXhlbFBpY2tpbmdQYXNzID0gdGhpcy5yZW5kZXJQYXNzRmFjdG9yeTxQaXhlbFBpY2tpbmdQYXNzRGF0YT4oXG4gICAgICAgICAgICAgICAgLy8gICBQaXhlbFBpY2tpbmdQYXNzLklERU5USUZJRVIsXG4gICAgICAgICAgICAgICAgLy8gKTtcbiAgICAgICAgICAgICAgICAvLyBjb25zdCB7XG4gICAgICAgICAgICAgICAgLy8gICBzZXR1cDogc2V0dXBQaXhlbFBpY2tpbmdQYXNzLFxuICAgICAgICAgICAgICAgIC8vICAgZXhlY3V0ZTogZXhlY3V0ZVBpeGVsUGlja2luZ1Bhc3MsXG4gICAgICAgICAgICAgICAgLy8gICB0ZWFyRG93bjogdGVhckRvd25QaWNraW5nUGFzcyxcbiAgICAgICAgICAgICAgICAvLyB9ID0gcGl4ZWxQaWNraW5nUGFzcztcbiAgICAgICAgICAgICAgICAvLyB0aGlzLmZyYW1lR3JhcGhTeXN0ZW0uYWRkUGFzczxQaXhlbFBpY2tpbmdQYXNzRGF0YT4oXG4gICAgICAgICAgICAgICAgLy8gICBQaXhlbFBpY2tpbmdQYXNzLklERU5USUZJRVIsXG4gICAgICAgICAgICAgICAgLy8gICBzZXR1cFBpeGVsUGlja2luZ1Bhc3MsXG4gICAgICAgICAgICAgICAgLy8gICBleGVjdXRlUGl4ZWxQaWNraW5nUGFzcyxcbiAgICAgICAgICAgICAgICAvLyAgIHRlYXJEb3duUGlja2luZ1Bhc3MsXG4gICAgICAgICAgICAgICAgLy8gKTtcbiAgICAgICAgICAgICAgICBfdGhpcyRyZW5kZXJQYXNzRmFjdG8gPSB0aGlzLnJlbmRlclBhc3NGYWN0b3J5KFJlbmRlclBhc3MuSURFTlRJRklFUiksIHNldHVwUmVuZGVyUGFzcyA9IF90aGlzJHJlbmRlclBhc3NGYWN0by5zZXR1cCwgZXhlY3V0ZVJlbmRlclBhc3MgPSBfdGhpcyRyZW5kZXJQYXNzRmFjdG8uZXhlY3V0ZTtcbiAgICAgICAgICAgICAgICByZW5kZXJQYXNzID0gdGhpcy5mcmFtZUdyYXBoU3lzdGVtLmFkZFBhc3MoUmVuZGVyUGFzcy5JREVOVElGSUVSLCBzZXR1cFJlbmRlclBhc3MsIGV4ZWN1dGVSZW5kZXJQYXNzKTtcbiAgICAgICAgICAgICAgICBfdGhpcyRyZW5kZXJQYXNzRmFjdG8yID0gdGhpcy5yZW5kZXJQYXNzRmFjdG9yeShDb3B5UGFzcy5JREVOVElGSUVSKSwgc2V0dXBDb3B5UGFzcyA9IF90aGlzJHJlbmRlclBhc3NGYWN0bzIuc2V0dXAsIGV4ZWN1dGVDb3B5UGFzcyA9IF90aGlzJHJlbmRlclBhc3NGYWN0bzIuZXhlY3V0ZSwgdGVhckRvd25Db3B5UGFzcyA9IF90aGlzJHJlbmRlclBhc3NGYWN0bzIudGVhckRvd247XG4gICAgICAgICAgICAgICAgY29weVBhc3MgPSB0aGlzLmZyYW1lR3JhcGhTeXN0ZW0uYWRkUGFzcyhDb3B5UGFzcy5JREVOVElGSUVSLCBzZXR1cENvcHlQYXNzLCBleGVjdXRlQ29weVBhc3MsIHRlYXJEb3duQ29weVBhc3MpO1xuICAgICAgICAgICAgICAgIHRoaXMuZnJhbWVHcmFwaFN5c3RlbS5wcmVzZW50KGNvcHlQYXNzLmRhdGEub3V0cHV0KTsgLy8gdGhpcy5mcmFtZUdyYXBoU3lzdGVtLnByZXNlbnQocmVuZGVyUGFzcy5kYXRhLm91dHB1dCk7XG5cbiAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBleGVjdXRlKF94KSB7XG4gICAgICAgIHJldHVybiBfZXhlY3V0ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZXhlY3V0ZTtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogXCJ0ZWFyRG93blwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0ZWFyRG93bigpIHtcbiAgICAgIHRoaXMucmVzb3VyY2VQb29sLmNsZWFuKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInBpY2tcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGljayhwb3NpdGlvbiwgdmlldykge1xuICAgICAgdmFyIHBpY2tpbmdQYXNzID0gdGhpcy5yZW5kZXJQYXNzRmFjdG9yeShQaXhlbFBpY2tpbmdQYXNzLklERU5USUZJRVIpO1xuICAgICAgcmV0dXJuIHBpY2tpbmdQYXNzLnBpY2socG9zaXRpb24sIHZpZXcpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBSZW5kZXJlclN5c3RlbTtcbn0oKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImZyYW1lR3JhcGhTeXN0ZW1cIiwgW19kZWMyLCBfZGVjM10sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjIgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcInJlbmRlclBhc3NGYWN0b3J5XCIsIFtfZGVjNF0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjMgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImNvbmZpZ1NlcnZpY2VcIiwgW19kZWM1XSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yNCA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwicmVzb3VyY2VQb29sXCIsIFtfZGVjNl0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pKSwgX2NsYXNzMikpIHx8IF9jbGFzcyk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TeXN0ZW0uanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/System.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/gl.js":
/*!**************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/gl.js ***!
\**************************************************************************************************/
/*! exports provided: gl */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"gl\", function() { return gl; });\n/**\n * WebGL 枚举值\n * @see http://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14\n * 使用 babel 插件对常量进行内联,以减少最终打包产物大小\n * @see https://github.com/uber/deck.gl/blob/7.1-release/dev-docs/roadmaps/dist-size-roadmap.md#inline-gl-constants\n * 为了支持 WebGPU,新增 TextureUsage\n * @see https://gpuweb.github.io/gpuweb/#gputextureusage\n */\nvar gl;\n\n(function (gl) {\n gl[gl[\"DEPTH_BUFFER_BIT\"] = 256] = \"DEPTH_BUFFER_BIT\";\n gl[gl[\"STENCIL_BUFFER_BIT\"] = 1024] = \"STENCIL_BUFFER_BIT\";\n gl[gl[\"COLOR_BUFFER_BIT\"] = 16384] = \"COLOR_BUFFER_BIT\";\n gl[gl[\"POINTS\"] = 0] = \"POINTS\";\n gl[gl[\"LINES\"] = 1] = \"LINES\";\n gl[gl[\"LINE_LOOP\"] = 2] = \"LINE_LOOP\";\n gl[gl[\"LINE_STRIP\"] = 3] = \"LINE_STRIP\";\n gl[gl[\"TRIANGLES\"] = 4] = \"TRIANGLES\";\n gl[gl[\"TRIANGLE_STRIP\"] = 5] = \"TRIANGLE_STRIP\";\n gl[gl[\"TRIANGLE_FAN\"] = 6] = \"TRIANGLE_FAN\";\n gl[gl[\"ZERO\"] = 0] = \"ZERO\";\n gl[gl[\"ONE\"] = 1] = \"ONE\";\n gl[gl[\"SRC_COLOR\"] = 768] = \"SRC_COLOR\";\n gl[gl[\"ONE_MINUS_SRC_COLOR\"] = 769] = \"ONE_MINUS_SRC_COLOR\";\n gl[gl[\"SRC_ALPHA\"] = 770] = \"SRC_ALPHA\";\n gl[gl[\"ONE_MINUS_SRC_ALPHA\"] = 771] = \"ONE_MINUS_SRC_ALPHA\";\n gl[gl[\"DST_ALPHA\"] = 772] = \"DST_ALPHA\";\n gl[gl[\"ONE_MINUS_DST_ALPHA\"] = 773] = \"ONE_MINUS_DST_ALPHA\";\n gl[gl[\"DST_COLOR\"] = 774] = \"DST_COLOR\";\n gl[gl[\"ONE_MINUS_DST_COLOR\"] = 775] = \"ONE_MINUS_DST_COLOR\";\n gl[gl[\"SRC_ALPHA_SATURATE\"] = 776] = \"SRC_ALPHA_SATURATE\";\n gl[gl[\"FUNC_ADD\"] = 32774] = \"FUNC_ADD\";\n gl[gl[\"BLEND_EQUATION\"] = 32777] = \"BLEND_EQUATION\";\n gl[gl[\"BLEND_EQUATION_RGB\"] = 32777] = \"BLEND_EQUATION_RGB\";\n gl[gl[\"BLEND_EQUATION_ALPHA\"] = 34877] = \"BLEND_EQUATION_ALPHA\";\n gl[gl[\"FUNC_SUBTRACT\"] = 32778] = \"FUNC_SUBTRACT\";\n gl[gl[\"FUNC_REVERSE_SUBTRACT\"] = 32779] = \"FUNC_REVERSE_SUBTRACT\";\n gl[gl[\"MAX_EXT\"] = 32776] = \"MAX_EXT\";\n gl[gl[\"MIN_EXT\"] = 32775] = \"MIN_EXT\";\n gl[gl[\"BLEND_DST_RGB\"] = 32968] = \"BLEND_DST_RGB\";\n gl[gl[\"BLEND_SRC_RGB\"] = 32969] = \"BLEND_SRC_RGB\";\n gl[gl[\"BLEND_DST_ALPHA\"] = 32970] = \"BLEND_DST_ALPHA\";\n gl[gl[\"BLEND_SRC_ALPHA\"] = 32971] = \"BLEND_SRC_ALPHA\";\n gl[gl[\"CONSTANT_COLOR\"] = 32769] = \"CONSTANT_COLOR\";\n gl[gl[\"ONE_MINUS_CONSTANT_COLOR\"] = 32770] = \"ONE_MINUS_CONSTANT_COLOR\";\n gl[gl[\"CONSTANT_ALPHA\"] = 32771] = \"CONSTANT_ALPHA\";\n gl[gl[\"ONE_MINUS_CONSTANT_ALPHA\"] = 32772] = \"ONE_MINUS_CONSTANT_ALPHA\";\n gl[gl[\"BLEND_COLOR\"] = 32773] = \"BLEND_COLOR\";\n gl[gl[\"ARRAY_BUFFER\"] = 34962] = \"ARRAY_BUFFER\";\n gl[gl[\"ELEMENT_ARRAY_BUFFER\"] = 34963] = \"ELEMENT_ARRAY_BUFFER\";\n gl[gl[\"ARRAY_BUFFER_BINDING\"] = 34964] = \"ARRAY_BUFFER_BINDING\";\n gl[gl[\"ELEMENT_ARRAY_BUFFER_BINDING\"] = 34965] = \"ELEMENT_ARRAY_BUFFER_BINDING\";\n gl[gl[\"STREAM_DRAW\"] = 35040] = \"STREAM_DRAW\";\n gl[gl[\"STATIC_DRAW\"] = 35044] = \"STATIC_DRAW\";\n gl[gl[\"DYNAMIC_DRAW\"] = 35048] = \"DYNAMIC_DRAW\";\n gl[gl[\"BUFFER_SIZE\"] = 34660] = \"BUFFER_SIZE\";\n gl[gl[\"BUFFER_USAGE\"] = 34661] = \"BUFFER_USAGE\";\n gl[gl[\"CURRENT_VERTEX_ATTRIB\"] = 34342] = \"CURRENT_VERTEX_ATTRIB\";\n gl[gl[\"FRONT\"] = 1028] = \"FRONT\";\n gl[gl[\"BACK\"] = 1029] = \"BACK\";\n gl[gl[\"FRONT_AND_BACK\"] = 1032] = \"FRONT_AND_BACK\";\n gl[gl[\"CULL_FACE\"] = 2884] = \"CULL_FACE\";\n gl[gl[\"BLEND\"] = 3042] = \"BLEND\";\n gl[gl[\"DITHER\"] = 3024] = \"DITHER\";\n gl[gl[\"STENCIL_TEST\"] = 2960] = \"STENCIL_TEST\";\n gl[gl[\"DEPTH_TEST\"] = 2929] = \"DEPTH_TEST\";\n gl[gl[\"SCISSOR_TEST\"] = 3089] = \"SCISSOR_TEST\";\n gl[gl[\"POLYGON_OFFSET_FILL\"] = 32823] = \"POLYGON_OFFSET_FILL\";\n gl[gl[\"SAMPLE_ALPHA_TO_COVERAGE\"] = 32926] = \"SAMPLE_ALPHA_TO_COVERAGE\";\n gl[gl[\"SAMPLE_COVERAGE\"] = 32928] = \"SAMPLE_COVERAGE\";\n gl[gl[\"NO_ERROR\"] = 0] = \"NO_ERROR\";\n gl[gl[\"INVALID_ENUM\"] = 1280] = \"INVALID_ENUM\";\n gl[gl[\"INVALID_VALUE\"] = 1281] = \"INVALID_VALUE\";\n gl[gl[\"INVALID_OPERATION\"] = 1282] = \"INVALID_OPERATION\";\n gl[gl[\"OUT_OF_MEMORY\"] = 1285] = \"OUT_OF_MEMORY\";\n gl[gl[\"CW\"] = 2304] = \"CW\";\n gl[gl[\"CCW\"] = 2305] = \"CCW\";\n gl[gl[\"LINE_WIDTH\"] = 2849] = \"LINE_WIDTH\";\n gl[gl[\"ALIASED_POINT_SIZE_RANGE\"] = 33901] = \"ALIASED_POINT_SIZE_RANGE\";\n gl[gl[\"ALIASED_LINE_WIDTH_RANGE\"] = 33902] = \"ALIASED_LINE_WIDTH_RANGE\";\n gl[gl[\"CULL_FACE_MODE\"] = 2885] = \"CULL_FACE_MODE\";\n gl[gl[\"FRONT_FACE\"] = 2886] = \"FRONT_FACE\";\n gl[gl[\"DEPTH_RANGE\"] = 2928] = \"DEPTH_RANGE\";\n gl[gl[\"DEPTH_WRITEMASK\"] = 2930] = \"DEPTH_WRITEMASK\";\n gl[gl[\"DEPTH_CLEAR_VALUE\"] = 2931] = \"DEPTH_CLEAR_VALUE\";\n gl[gl[\"DEPTH_FUNC\"] = 2932] = \"DEPTH_FUNC\";\n gl[gl[\"STENCIL_CLEAR_VALUE\"] = 2961] = \"STENCIL_CLEAR_VALUE\";\n gl[gl[\"STENCIL_FUNC\"] = 2962] = \"STENCIL_FUNC\";\n gl[gl[\"STENCIL_FAIL\"] = 2964] = \"STENCIL_FAIL\";\n gl[gl[\"STENCIL_PASS_DEPTH_FAIL\"] = 2965] = \"STENCIL_PASS_DEPTH_FAIL\";\n gl[gl[\"STENCIL_PASS_DEPTH_PASS\"] = 2966] = \"STENCIL_PASS_DEPTH_PASS\";\n gl[gl[\"STENCIL_REF\"] = 2967] = \"STENCIL_REF\";\n gl[gl[\"STENCIL_VALUE_MASK\"] = 2963] = \"STENCIL_VALUE_MASK\";\n gl[gl[\"STENCIL_WRITEMASK\"] = 2968] = \"STENCIL_WRITEMASK\";\n gl[gl[\"STENCIL_BACK_FUNC\"] = 34816] = \"STENCIL_BACK_FUNC\";\n gl[gl[\"STENCIL_BACK_FAIL\"] = 34817] = \"STENCIL_BACK_FAIL\";\n gl[gl[\"STENCIL_BACK_PASS_DEPTH_FAIL\"] = 34818] = \"STENCIL_BACK_PASS_DEPTH_FAIL\";\n gl[gl[\"STENCIL_BACK_PASS_DEPTH_PASS\"] = 34819] = \"STENCIL_BACK_PASS_DEPTH_PASS\";\n gl[gl[\"STENCIL_BACK_REF\"] = 36003] = \"STENCIL_BACK_REF\";\n gl[gl[\"STENCIL_BACK_VALUE_MASK\"] = 36004] = \"STENCIL_BACK_VALUE_MASK\";\n gl[gl[\"STENCIL_BACK_WRITEMASK\"] = 36005] = \"STENCIL_BACK_WRITEMASK\";\n gl[gl[\"VIEWPORT\"] = 2978] = \"VIEWPORT\";\n gl[gl[\"SCISSOR_BOX\"] = 3088] = \"SCISSOR_BOX\";\n gl[gl[\"COLOR_CLEAR_VALUE\"] = 3106] = \"COLOR_CLEAR_VALUE\";\n gl[gl[\"COLOR_WRITEMASK\"] = 3107] = \"COLOR_WRITEMASK\";\n gl[gl[\"UNPACK_ALIGNMENT\"] = 3317] = \"UNPACK_ALIGNMENT\";\n gl[gl[\"PACK_ALIGNMENT\"] = 3333] = \"PACK_ALIGNMENT\";\n gl[gl[\"MAX_TEXTURE_SIZE\"] = 3379] = \"MAX_TEXTURE_SIZE\";\n gl[gl[\"MAX_VIEWPORT_DIMS\"] = 3386] = \"MAX_VIEWPORT_DIMS\";\n gl[gl[\"SUBPIXEL_BITS\"] = 3408] = \"SUBPIXEL_BITS\";\n gl[gl[\"RED_BITS\"] = 3410] = \"RED_BITS\";\n gl[gl[\"GREEN_BITS\"] = 3411] = \"GREEN_BITS\";\n gl[gl[\"BLUE_BITS\"] = 3412] = \"BLUE_BITS\";\n gl[gl[\"ALPHA_BITS\"] = 3413] = \"ALPHA_BITS\";\n gl[gl[\"DEPTH_BITS\"] = 3414] = \"DEPTH_BITS\";\n gl[gl[\"STENCIL_BITS\"] = 3415] = \"STENCIL_BITS\";\n gl[gl[\"POLYGON_OFFSET_UNITS\"] = 10752] = \"POLYGON_OFFSET_UNITS\";\n gl[gl[\"POLYGON_OFFSET_FACTOR\"] = 32824] = \"POLYGON_OFFSET_FACTOR\";\n gl[gl[\"TEXTURE_BINDING_2D\"] = 32873] = \"TEXTURE_BINDING_2D\";\n gl[gl[\"SAMPLE_BUFFERS\"] = 32936] = \"SAMPLE_BUFFERS\";\n gl[gl[\"SAMPLES\"] = 32937] = \"SAMPLES\";\n gl[gl[\"SAMPLE_COVERAGE_VALUE\"] = 32938] = \"SAMPLE_COVERAGE_VALUE\";\n gl[gl[\"SAMPLE_COVERAGE_INVERT\"] = 32939] = \"SAMPLE_COVERAGE_INVERT\";\n gl[gl[\"COMPRESSED_TEXTURE_FORMATS\"] = 34467] = \"COMPRESSED_TEXTURE_FORMATS\";\n gl[gl[\"DONT_CARE\"] = 4352] = \"DONT_CARE\";\n gl[gl[\"FASTEST\"] = 4353] = \"FASTEST\";\n gl[gl[\"NICEST\"] = 4354] = \"NICEST\";\n gl[gl[\"GENERATE_MIPMAP_HINT\"] = 33170] = \"GENERATE_MIPMAP_HINT\";\n gl[gl[\"BYTE\"] = 5120] = \"BYTE\";\n gl[gl[\"UNSIGNED_BYTE\"] = 5121] = \"UNSIGNED_BYTE\";\n gl[gl[\"SHORT\"] = 5122] = \"SHORT\";\n gl[gl[\"UNSIGNED_SHORT\"] = 5123] = \"UNSIGNED_SHORT\";\n gl[gl[\"INT\"] = 5124] = \"INT\";\n gl[gl[\"UNSIGNED_INT\"] = 5125] = \"UNSIGNED_INT\";\n gl[gl[\"FLOAT\"] = 5126] = \"FLOAT\";\n gl[gl[\"DEPTH_COMPONENT\"] = 6402] = \"DEPTH_COMPONENT\";\n gl[gl[\"ALPHA\"] = 6406] = \"ALPHA\";\n gl[gl[\"RGB\"] = 6407] = \"RGB\";\n gl[gl[\"RGBA\"] = 6408] = \"RGBA\";\n gl[gl[\"LUMINANCE\"] = 6409] = \"LUMINANCE\";\n gl[gl[\"LUMINANCE_ALPHA\"] = 6410] = \"LUMINANCE_ALPHA\";\n gl[gl[\"UNSIGNED_SHORT_4_4_4_4\"] = 32819] = \"UNSIGNED_SHORT_4_4_4_4\";\n gl[gl[\"UNSIGNED_SHORT_5_5_5_1\"] = 32820] = \"UNSIGNED_SHORT_5_5_5_1\";\n gl[gl[\"UNSIGNED_SHORT_5_6_5\"] = 33635] = \"UNSIGNED_SHORT_5_6_5\";\n gl[gl[\"FRAGMENT_SHADER\"] = 35632] = \"FRAGMENT_SHADER\";\n gl[gl[\"VERTEX_SHADER\"] = 35633] = \"VERTEX_SHADER\";\n gl[gl[\"MAX_VERTEX_ATTRIBS\"] = 34921] = \"MAX_VERTEX_ATTRIBS\";\n gl[gl[\"MAX_VERTEX_UNIFORM_VECTORS\"] = 36347] = \"MAX_VERTEX_UNIFORM_VECTORS\";\n gl[gl[\"MAX_VARYING_VECTORS\"] = 36348] = \"MAX_VARYING_VECTORS\";\n gl[gl[\"MAX_COMBINED_TEXTURE_IMAGE_UNITS\"] = 35661] = \"MAX_COMBINED_TEXTURE_IMAGE_UNITS\";\n gl[gl[\"MAX_VERTEX_TEXTURE_IMAGE_UNITS\"] = 35660] = \"MAX_VERTEX_TEXTURE_IMAGE_UNITS\";\n gl[gl[\"MAX_TEXTURE_IMAGE_UNITS\"] = 34930] = \"MAX_TEXTURE_IMAGE_UNITS\";\n gl[gl[\"MAX_FRAGMENT_UNIFORM_VECTORS\"] = 36349] = \"MAX_FRAGMENT_UNIFORM_VECTORS\";\n gl[gl[\"SHADER_TYPE\"] = 35663] = \"SHADER_TYPE\";\n gl[gl[\"DELETE_STATUS\"] = 35712] = \"DELETE_STATUS\";\n gl[gl[\"LINK_STATUS\"] = 35714] = \"LINK_STATUS\";\n gl[gl[\"VALIDATE_STATUS\"] = 35715] = \"VALIDATE_STATUS\";\n gl[gl[\"ATTACHED_SHADERS\"] = 35717] = \"ATTACHED_SHADERS\";\n gl[gl[\"ACTIVE_UNIFORMS\"] = 35718] = \"ACTIVE_UNIFORMS\";\n gl[gl[\"ACTIVE_ATTRIBUTES\"] = 35721] = \"ACTIVE_ATTRIBUTES\";\n gl[gl[\"SHADING_LANGUAGE_VERSION\"] = 35724] = \"SHADING_LANGUAGE_VERSION\";\n gl[gl[\"CURRENT_PROGRAM\"] = 35725] = \"CURRENT_PROGRAM\";\n gl[gl[\"NEVER\"] = 512] = \"NEVER\";\n gl[gl[\"LESS\"] = 513] = \"LESS\";\n gl[gl[\"EQUAL\"] = 514] = \"EQUAL\";\n gl[gl[\"LEQUAL\"] = 515] = \"LEQUAL\";\n gl[gl[\"GREATER\"] = 516] = \"GREATER\";\n gl[gl[\"NOTEQUAL\"] = 517] = \"NOTEQUAL\";\n gl[gl[\"GEQUAL\"] = 518] = \"GEQUAL\";\n gl[gl[\"ALWAYS\"] = 519] = \"ALWAYS\";\n gl[gl[\"KEEP\"] = 7680] = \"KEEP\";\n gl[gl[\"REPLACE\"] = 7681] = \"REPLACE\";\n gl[gl[\"INCR\"] = 7682] = \"INCR\";\n gl[gl[\"DECR\"] = 7683] = \"DECR\";\n gl[gl[\"INVERT\"] = 5386] = \"INVERT\";\n gl[gl[\"INCR_WRAP\"] = 34055] = \"INCR_WRAP\";\n gl[gl[\"DECR_WRAP\"] = 34056] = \"DECR_WRAP\";\n gl[gl[\"VENDOR\"] = 7936] = \"VENDOR\";\n gl[gl[\"RENDERER\"] = 7937] = \"RENDERER\";\n gl[gl[\"VERSION\"] = 7938] = \"VERSION\";\n gl[gl[\"NEAREST\"] = 9728] = \"NEAREST\";\n gl[gl[\"LINEAR\"] = 9729] = \"LINEAR\";\n gl[gl[\"NEAREST_MIPMAP_NEAREST\"] = 9984] = \"NEAREST_MIPMAP_NEAREST\";\n gl[gl[\"LINEAR_MIPMAP_NEAREST\"] = 9985] = \"LINEAR_MIPMAP_NEAREST\";\n gl[gl[\"NEAREST_MIPMAP_LINEAR\"] = 9986] = \"NEAREST_MIPMAP_LINEAR\";\n gl[gl[\"LINEAR_MIPMAP_LINEAR\"] = 9987] = \"LINEAR_MIPMAP_LINEAR\";\n gl[gl[\"TEXTURE_MAG_FILTER\"] = 10240] = \"TEXTURE_MAG_FILTER\";\n gl[gl[\"TEXTURE_MIN_FILTER\"] = 10241] = \"TEXTURE_MIN_FILTER\";\n gl[gl[\"TEXTURE_WRAP_S\"] = 10242] = \"TEXTURE_WRAP_S\";\n gl[gl[\"TEXTURE_WRAP_T\"] = 10243] = \"TEXTURE_WRAP_T\";\n gl[gl[\"TEXTURE_2D\"] = 3553] = \"TEXTURE_2D\";\n gl[gl[\"TEXTURE\"] = 5890] = \"TEXTURE\";\n gl[gl[\"TEXTURE_CUBE_MAP\"] = 34067] = \"TEXTURE_CUBE_MAP\";\n gl[gl[\"TEXTURE_BINDING_CUBE_MAP\"] = 34068] = \"TEXTURE_BINDING_CUBE_MAP\";\n gl[gl[\"TEXTURE_CUBE_MAP_POSITIVE_X\"] = 34069] = \"TEXTURE_CUBE_MAP_POSITIVE_X\";\n gl[gl[\"TEXTURE_CUBE_MAP_NEGATIVE_X\"] = 34070] = \"TEXTURE_CUBE_MAP_NEGATIVE_X\";\n gl[gl[\"TEXTURE_CUBE_MAP_POSITIVE_Y\"] = 34071] = \"TEXTURE_CUBE_MAP_POSITIVE_Y\";\n gl[gl[\"TEXTURE_CUBE_MAP_NEGATIVE_Y\"] = 34072] = \"TEXTURE_CUBE_MAP_NEGATIVE_Y\";\n gl[gl[\"TEXTURE_CUBE_MAP_POSITIVE_Z\"] = 34073] = \"TEXTURE_CUBE_MAP_POSITIVE_Z\";\n gl[gl[\"TEXTURE_CUBE_MAP_NEGATIVE_Z\"] = 34074] = \"TEXTURE_CUBE_MAP_NEGATIVE_Z\";\n gl[gl[\"MAX_CUBE_MAP_TEXTURE_SIZE\"] = 34076] = \"MAX_CUBE_MAP_TEXTURE_SIZE\";\n gl[gl[\"TEXTURE0\"] = 33984] = \"TEXTURE0\";\n gl[gl[\"TEXTURE1\"] = 33985] = \"TEXTURE1\";\n gl[gl[\"TEXTURE2\"] = 33986] = \"TEXTURE2\";\n gl[gl[\"TEXTURE3\"] = 33987] = \"TEXTURE3\";\n gl[gl[\"TEXTURE4\"] = 33988] = \"TEXTURE4\";\n gl[gl[\"TEXTURE5\"] = 33989] = \"TEXTURE5\";\n gl[gl[\"TEXTURE6\"] = 33990] = \"TEXTURE6\";\n gl[gl[\"TEXTURE7\"] = 33991] = \"TEXTURE7\";\n gl[gl[\"TEXTURE8\"] = 33992] = \"TEXTURE8\";\n gl[gl[\"TEXTURE9\"] = 33993] = \"TEXTURE9\";\n gl[gl[\"TEXTURE10\"] = 33994] = \"TEXTURE10\";\n gl[gl[\"TEXTURE11\"] = 33995] = \"TEXTURE11\";\n gl[gl[\"TEXTURE12\"] = 33996] = \"TEXTURE12\";\n gl[gl[\"TEXTURE13\"] = 33997] = \"TEXTURE13\";\n gl[gl[\"TEXTURE14\"] = 33998] = \"TEXTURE14\";\n gl[gl[\"TEXTURE15\"] = 33999] = \"TEXTURE15\";\n gl[gl[\"TEXTURE16\"] = 34000] = \"TEXTURE16\";\n gl[gl[\"TEXTURE17\"] = 34001] = \"TEXTURE17\";\n gl[gl[\"TEXTURE18\"] = 34002] = \"TEXTURE18\";\n gl[gl[\"TEXTURE19\"] = 34003] = \"TEXTURE19\";\n gl[gl[\"TEXTURE20\"] = 34004] = \"TEXTURE20\";\n gl[gl[\"TEXTURE21\"] = 34005] = \"TEXTURE21\";\n gl[gl[\"TEXTURE22\"] = 34006] = \"TEXTURE22\";\n gl[gl[\"TEXTURE23\"] = 34007] = \"TEXTURE23\";\n gl[gl[\"TEXTURE24\"] = 34008] = \"TEXTURE24\";\n gl[gl[\"TEXTURE25\"] = 34009] = \"TEXTURE25\";\n gl[gl[\"TEXTURE26\"] = 34010] = \"TEXTURE26\";\n gl[gl[\"TEXTURE27\"] = 34011] = \"TEXTURE27\";\n gl[gl[\"TEXTURE28\"] = 34012] = \"TEXTURE28\";\n gl[gl[\"TEXTURE29\"] = 34013] = \"TEXTURE29\";\n gl[gl[\"TEXTURE30\"] = 34014] = \"TEXTURE30\";\n gl[gl[\"TEXTURE31\"] = 34015] = \"TEXTURE31\";\n gl[gl[\"ACTIVE_TEXTURE\"] = 34016] = \"ACTIVE_TEXTURE\";\n gl[gl[\"REPEAT\"] = 10497] = \"REPEAT\";\n gl[gl[\"CLAMP_TO_EDGE\"] = 33071] = \"CLAMP_TO_EDGE\";\n gl[gl[\"MIRRORED_REPEAT\"] = 33648] = \"MIRRORED_REPEAT\";\n gl[gl[\"FLOAT_VEC2\"] = 35664] = \"FLOAT_VEC2\";\n gl[gl[\"FLOAT_VEC3\"] = 35665] = \"FLOAT_VEC3\";\n gl[gl[\"FLOAT_VEC4\"] = 35666] = \"FLOAT_VEC4\";\n gl[gl[\"INT_VEC2\"] = 35667] = \"INT_VEC2\";\n gl[gl[\"INT_VEC3\"] = 35668] = \"INT_VEC3\";\n gl[gl[\"INT_VEC4\"] = 35669] = \"INT_VEC4\";\n gl[gl[\"BOOL\"] = 35670] = \"BOOL\";\n gl[gl[\"BOOL_VEC2\"] = 35671] = \"BOOL_VEC2\";\n gl[gl[\"BOOL_VEC3\"] = 35672] = \"BOOL_VEC3\";\n gl[gl[\"BOOL_VEC4\"] = 35673] = \"BOOL_VEC4\";\n gl[gl[\"FLOAT_MAT2\"] = 35674] = \"FLOAT_MAT2\";\n gl[gl[\"FLOAT_MAT3\"] = 35675] = \"FLOAT_MAT3\";\n gl[gl[\"FLOAT_MAT4\"] = 35676] = \"FLOAT_MAT4\";\n gl[gl[\"SAMPLER_2D\"] = 35678] = \"SAMPLER_2D\";\n gl[gl[\"SAMPLER_CUBE\"] = 35680] = \"SAMPLER_CUBE\";\n gl[gl[\"VERTEX_ATTRIB_ARRAY_ENABLED\"] = 34338] = \"VERTEX_ATTRIB_ARRAY_ENABLED\";\n gl[gl[\"VERTEX_ATTRIB_ARRAY_SIZE\"] = 34339] = \"VERTEX_ATTRIB_ARRAY_SIZE\";\n gl[gl[\"VERTEX_ATTRIB_ARRAY_STRIDE\"] = 34340] = \"VERTEX_ATTRIB_ARRAY_STRIDE\";\n gl[gl[\"VERTEX_ATTRIB_ARRAY_TYPE\"] = 34341] = \"VERTEX_ATTRIB_ARRAY_TYPE\";\n gl[gl[\"VERTEX_ATTRIB_ARRAY_NORMALIZED\"] = 34922] = \"VERTEX_ATTRIB_ARRAY_NORMALIZED\";\n gl[gl[\"VERTEX_ATTRIB_ARRAY_POINTER\"] = 34373] = \"VERTEX_ATTRIB_ARRAY_POINTER\";\n gl[gl[\"VERTEX_ATTRIB_ARRAY_BUFFER_BINDING\"] = 34975] = \"VERTEX_ATTRIB_ARRAY_BUFFER_BINDING\";\n gl[gl[\"COMPILE_STATUS\"] = 35713] = \"COMPILE_STATUS\";\n gl[gl[\"LOW_FLOAT\"] = 36336] = \"LOW_FLOAT\";\n gl[gl[\"MEDIUM_FLOAT\"] = 36337] = \"MEDIUM_FLOAT\";\n gl[gl[\"HIGH_FLOAT\"] = 36338] = \"HIGH_FLOAT\";\n gl[gl[\"LOW_INT\"] = 36339] = \"LOW_INT\";\n gl[gl[\"MEDIUM_INT\"] = 36340] = \"MEDIUM_INT\";\n gl[gl[\"HIGH_INT\"] = 36341] = \"HIGH_INT\";\n gl[gl[\"FRAMEBUFFER\"] = 36160] = \"FRAMEBUFFER\";\n gl[gl[\"RENDERBUFFER\"] = 36161] = \"RENDERBUFFER\";\n gl[gl[\"RGBA4\"] = 32854] = \"RGBA4\";\n gl[gl[\"RGB5_A1\"] = 32855] = \"RGB5_A1\";\n gl[gl[\"RGB565\"] = 36194] = \"RGB565\";\n gl[gl[\"DEPTH_COMPONENT16\"] = 33189] = \"DEPTH_COMPONENT16\";\n gl[gl[\"STENCIL_INDEX\"] = 6401] = \"STENCIL_INDEX\";\n gl[gl[\"STENCIL_INDEX8\"] = 36168] = \"STENCIL_INDEX8\";\n gl[gl[\"DEPTH_STENCIL\"] = 34041] = \"DEPTH_STENCIL\";\n gl[gl[\"RENDERBUFFER_WIDTH\"] = 36162] = \"RENDERBUFFER_WIDTH\";\n gl[gl[\"RENDERBUFFER_HEIGHT\"] = 36163] = \"RENDERBUFFER_HEIGHT\";\n gl[gl[\"RENDERBUFFER_INTERNAL_FORMAT\"] = 36164] = \"RENDERBUFFER_INTERNAL_FORMAT\";\n gl[gl[\"RENDERBUFFER_RED_SIZE\"] = 36176] = \"RENDERBUFFER_RED_SIZE\";\n gl[gl[\"RENDERBUFFER_GREEN_SIZE\"] = 36177] = \"RENDERBUFFER_GREEN_SIZE\";\n gl[gl[\"RENDERBUFFER_BLUE_SIZE\"] = 36178] = \"RENDERBUFFER_BLUE_SIZE\";\n gl[gl[\"RENDERBUFFER_ALPHA_SIZE\"] = 36179] = \"RENDERBUFFER_ALPHA_SIZE\";\n gl[gl[\"RENDERBUFFER_DEPTH_SIZE\"] = 36180] = \"RENDERBUFFER_DEPTH_SIZE\";\n gl[gl[\"RENDERBUFFER_STENCIL_SIZE\"] = 36181] = \"RENDERBUFFER_STENCIL_SIZE\";\n gl[gl[\"FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE\"] = 36048] = \"FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE\";\n gl[gl[\"FRAMEBUFFER_ATTACHMENT_OBJECT_NAME\"] = 36049] = \"FRAMEBUFFER_ATTACHMENT_OBJECT_NAME\";\n gl[gl[\"FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL\"] = 36050] = \"FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL\";\n gl[gl[\"FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE\"] = 36051] = \"FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE\";\n gl[gl[\"COLOR_ATTACHMENT0\"] = 36064] = \"COLOR_ATTACHMENT0\";\n gl[gl[\"DEPTH_ATTACHMENT\"] = 36096] = \"DEPTH_ATTACHMENT\";\n gl[gl[\"STENCIL_ATTACHMENT\"] = 36128] = \"STENCIL_ATTACHMENT\";\n gl[gl[\"DEPTH_STENCIL_ATTACHMENT\"] = 33306] = \"DEPTH_STENCIL_ATTACHMENT\";\n gl[gl[\"NONE\"] = 0] = \"NONE\";\n gl[gl[\"FRAMEBUFFER_COMPLETE\"] = 36053] = \"FRAMEBUFFER_COMPLETE\";\n gl[gl[\"FRAMEBUFFER_INCOMPLETE_ATTACHMENT\"] = 36054] = \"FRAMEBUFFER_INCOMPLETE_ATTACHMENT\";\n gl[gl[\"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT\"] = 36055] = \"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT\";\n gl[gl[\"FRAMEBUFFER_INCOMPLETE_DIMENSIONS\"] = 36057] = \"FRAMEBUFFER_INCOMPLETE_DIMENSIONS\";\n gl[gl[\"FRAMEBUFFER_UNSUPPORTED\"] = 36061] = \"FRAMEBUFFER_UNSUPPORTED\";\n gl[gl[\"FRAMEBUFFER_BINDING\"] = 36006] = \"FRAMEBUFFER_BINDING\";\n gl[gl[\"RENDERBUFFER_BINDING\"] = 36007] = \"RENDERBUFFER_BINDING\";\n gl[gl[\"MAX_RENDERBUFFER_SIZE\"] = 34024] = \"MAX_RENDERBUFFER_SIZE\";\n gl[gl[\"INVALID_FRAMEBUFFER_OPERATION\"] = 1286] = \"INVALID_FRAMEBUFFER_OPERATION\";\n gl[gl[\"UNPACK_FLIP_Y_WEBGL\"] = 37440] = \"UNPACK_FLIP_Y_WEBGL\";\n gl[gl[\"UNPACK_PREMULTIPLY_ALPHA_WEBGL\"] = 37441] = \"UNPACK_PREMULTIPLY_ALPHA_WEBGL\";\n gl[gl[\"CONTEXT_LOST_WEBGL\"] = 37442] = \"CONTEXT_LOST_WEBGL\";\n gl[gl[\"UNPACK_COLORSPACE_CONVERSION_WEBGL\"] = 37443] = \"UNPACK_COLORSPACE_CONVERSION_WEBGL\";\n gl[gl[\"BROWSER_DEFAULT_WEBGL\"] = 37444] = \"BROWSER_DEFAULT_WEBGL\";\n gl[gl[\"COPY_SRC\"] = 1] = \"COPY_SRC\";\n gl[gl[\"COPY_DST\"] = 2] = \"COPY_DST\";\n gl[gl[\"SAMPLED\"] = 4] = \"SAMPLED\";\n gl[gl[\"STORAGE\"] = 8] = \"STORAGE\";\n gl[gl[\"RENDER_ATTACHMENT\"] = 16] = \"RENDER_ATTACHMENT\";\n})(gl || (gl = {}));\n//# sourceMappingURL=gl.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL2dsLmpzPzY1NTQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGdCQUFnQjtBQUNqQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvcmVuZGVyZXIvZ2wuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFdlYkdMIOaemuS4vuWAvFxuICogQHNlZSBodHRwOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L3dlYmdsL3NwZWNzL2xhdGVzdC8xLjAvIzUuMTRcbiAqIOS9v+eUqCBiYWJlbCDmj5Lku7blr7nluLjph4/ov5vooYzlhoXogZTvvIzku6Xlh4/lsJHmnIDnu4jmiZPljIXkuqfnianlpKflsI9cbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3ViZXIvZGVjay5nbC9ibG9iLzcuMS1yZWxlYXNlL2Rldi1kb2NzL3JvYWRtYXBzL2Rpc3Qtc2l6ZS1yb2FkbWFwLm1kI2lubGluZS1nbC1jb25zdGFudHNcbiAqIOS4uuS6huaUr+aMgSBXZWJHUFXvvIzmlrDlop4gVGV4dHVyZVVzYWdlXG4gKiBAc2VlIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2dwdXRleHR1cmV1c2FnZVxuICovXG5leHBvcnQgdmFyIGdsO1xuXG4oZnVuY3Rpb24gKGdsKSB7XG4gIGdsW2dsW1wiREVQVEhfQlVGRkVSX0JJVFwiXSA9IDI1Nl0gPSBcIkRFUFRIX0JVRkZFUl9CSVRcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX0JVRkZFUl9CSVRcIl0gPSAxMDI0XSA9IFwiU1RFTkNJTF9CVUZGRVJfQklUXCI7XG4gIGdsW2dsW1wiQ09MT1JfQlVGRkVSX0JJVFwiXSA9IDE2Mzg0XSA9IFwiQ09MT1JfQlVGRkVSX0JJVFwiO1xuICBnbFtnbFtcIlBPSU5UU1wiXSA9IDBdID0gXCJQT0lOVFNcIjtcbiAgZ2xbZ2xbXCJMSU5FU1wiXSA9IDFdID0gXCJMSU5FU1wiO1xuICBnbFtnbFtcIkxJTkVfTE9PUFwiXSA9IDJdID0gXCJMSU5FX0xPT1BcIjtcbiAgZ2xbZ2xbXCJMSU5FX1NUUklQXCJdID0gM10gPSBcIkxJTkVfU1RSSVBcIjtcbiAgZ2xbZ2xbXCJUUklBTkdMRVNcIl0gPSA0XSA9IFwiVFJJQU5HTEVTXCI7XG4gIGdsW2dsW1wiVFJJQU5HTEVfU1RSSVBcIl0gPSA1XSA9IFwiVFJJQU5HTEVfU1RSSVBcIjtcbiAgZ2xbZ2xbXCJUUklBTkdMRV9GQU5cIl0gPSA2XSA9IFwiVFJJQU5HTEVfRkFOXCI7XG4gIGdsW2dsW1wiWkVST1wiXSA9IDBdID0gXCJaRVJPXCI7XG4gIGdsW2dsW1wiT05FXCJdID0gMV0gPSBcIk9ORVwiO1xuICBnbFtnbFtcIlNSQ19DT0xPUlwiXSA9IDc2OF0gPSBcIlNSQ19DT0xPUlwiO1xuICBnbFtnbFtcIk9ORV9NSU5VU19TUkNfQ09MT1JcIl0gPSA3NjldID0gXCJPTkVfTUlOVVNfU1JDX0NPTE9SXCI7XG4gIGdsW2dsW1wiU1JDX0FMUEhBXCJdID0gNzcwXSA9IFwiU1JDX0FMUEhBXCI7XG4gIGdsW2dsW1wiT05FX01JTlVTX1NSQ19BTFBIQVwiXSA9IDc3MV0gPSBcIk9ORV9NSU5VU19TUkNfQUxQSEFcIjtcbiAgZ2xbZ2xbXCJEU1RfQUxQSEFcIl0gPSA3NzJdID0gXCJEU1RfQUxQSEFcIjtcbiAgZ2xbZ2xbXCJPTkVfTUlOVVNfRFNUX0FMUEhBXCJdID0gNzczXSA9IFwiT05FX01JTlVTX0RTVF9BTFBIQVwiO1xuICBnbFtnbFtcIkRTVF9DT0xPUlwiXSA9IDc3NF0gPSBcIkRTVF9DT0xPUlwiO1xuICBnbFtnbFtcIk9ORV9NSU5VU19EU1RfQ09MT1JcIl0gPSA3NzVdID0gXCJPTkVfTUlOVVNfRFNUX0NPTE9SXCI7XG4gIGdsW2dsW1wiU1JDX0FMUEhBX1NBVFVSQVRFXCJdID0gNzc2XSA9IFwiU1JDX0FMUEhBX1NBVFVSQVRFXCI7XG4gIGdsW2dsW1wiRlVOQ19BRERcIl0gPSAzMjc3NF0gPSBcIkZVTkNfQUREXCI7XG4gIGdsW2dsW1wiQkxFTkRfRVFVQVRJT05cIl0gPSAzMjc3N10gPSBcIkJMRU5EX0VRVUFUSU9OXCI7XG4gIGdsW2dsW1wiQkxFTkRfRVFVQVRJT05fUkdCXCJdID0gMzI3NzddID0gXCJCTEVORF9FUVVBVElPTl9SR0JcIjtcbiAgZ2xbZ2xbXCJCTEVORF9FUVVBVElPTl9BTFBIQVwiXSA9IDM0ODc3XSA9IFwiQkxFTkRfRVFVQVRJT05fQUxQSEFcIjtcbiAgZ2xbZ2xbXCJGVU5DX1NVQlRSQUNUXCJdID0gMzI3NzhdID0gXCJGVU5DX1NVQlRSQUNUXCI7XG4gIGdsW2dsW1wiRlVOQ19SRVZFUlNFX1NVQlRSQUNUXCJdID0gMzI3NzldID0gXCJGVU5DX1JFVkVSU0VfU1VCVFJBQ1RcIjtcbiAgZ2xbZ2xbXCJNQVhfRVhUXCJdID0gMzI3NzZdID0gXCJNQVhfRVhUXCI7XG4gIGdsW2dsW1wiTUlOX0VYVFwiXSA9IDMyNzc1XSA9IFwiTUlOX0VYVFwiO1xuICBnbFtnbFtcIkJMRU5EX0RTVF9SR0JcIl0gPSAzMjk2OF0gPSBcIkJMRU5EX0RTVF9SR0JcIjtcbiAgZ2xbZ2xbXCJCTEVORF9TUkNfUkdCXCJdID0gMzI5NjldID0gXCJCTEVORF9TUkNfUkdCXCI7XG4gIGdsW2dsW1wiQkxFTkRfRFNUX0FMUEhBXCJdID0gMzI5NzBdID0gXCJCTEVORF9EU1RfQUxQSEFcIjtcbiAgZ2xbZ2xbXCJCTEVORF9TUkNfQUxQSEFcIl0gPSAzMjk3MV0gPSBcIkJMRU5EX1NSQ19BTFBIQVwiO1xuICBnbFtnbFtcIkNPTlNUQU5UX0NPTE9SXCJdID0gMzI3NjldID0gXCJDT05TVEFOVF9DT0xPUlwiO1xuICBnbFtnbFtcIk9ORV9NSU5VU19DT05TVEFOVF9DT0xPUlwiXSA9IDMyNzcwXSA9IFwiT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SXCI7XG4gIGdsW2dsW1wiQ09OU1RBTlRfQUxQSEFcIl0gPSAzMjc3MV0gPSBcIkNPTlNUQU5UX0FMUEhBXCI7XG4gIGdsW2dsW1wiT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBXCJdID0gMzI3NzJdID0gXCJPTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEFcIjtcbiAgZ2xbZ2xbXCJCTEVORF9DT0xPUlwiXSA9IDMyNzczXSA9IFwiQkxFTkRfQ09MT1JcIjtcbiAgZ2xbZ2xbXCJBUlJBWV9CVUZGRVJcIl0gPSAzNDk2Ml0gPSBcIkFSUkFZX0JVRkZFUlwiO1xuICBnbFtnbFtcIkVMRU1FTlRfQVJSQVlfQlVGRkVSXCJdID0gMzQ5NjNdID0gXCJFTEVNRU5UX0FSUkFZX0JVRkZFUlwiO1xuICBnbFtnbFtcIkFSUkFZX0JVRkZFUl9CSU5ESU5HXCJdID0gMzQ5NjRdID0gXCJBUlJBWV9CVUZGRVJfQklORElOR1wiO1xuICBnbFtnbFtcIkVMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkdcIl0gPSAzNDk2NV0gPSBcIkVMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkdcIjtcbiAgZ2xbZ2xbXCJTVFJFQU1fRFJBV1wiXSA9IDM1MDQwXSA9IFwiU1RSRUFNX0RSQVdcIjtcbiAgZ2xbZ2xbXCJTVEFUSUNfRFJBV1wiXSA9IDM1MDQ0XSA9IFwiU1RBVElDX0RSQVdcIjtcbiAgZ2xbZ2xbXCJEWU5BTUlDX0RSQVdcIl0gPSAzNTA0OF0gPSBcIkRZTkFNSUNfRFJBV1wiO1xuICBnbFtnbFtcIkJVRkZFUl9TSVpFXCJdID0gMzQ2NjBdID0gXCJCVUZGRVJfU0laRVwiO1xuICBnbFtnbFtcIkJVRkZFUl9VU0FHRVwiXSA9IDM0NjYxXSA9IFwiQlVGRkVSX1VTQUdFXCI7XG4gIGdsW2dsW1wiQ1VSUkVOVF9WRVJURVhfQVRUUklCXCJdID0gMzQzNDJdID0gXCJDVVJSRU5UX1ZFUlRFWF9BVFRSSUJcIjtcbiAgZ2xbZ2xbXCJGUk9OVFwiXSA9IDEwMjhdID0gXCJGUk9OVFwiO1xuICBnbFtnbFtcIkJBQ0tcIl0gPSAxMDI5XSA9IFwiQkFDS1wiO1xuICBnbFtnbFtcIkZST05UX0FORF9CQUNLXCJdID0gMTAzMl0gPSBcIkZST05UX0FORF9CQUNLXCI7XG4gIGdsW2dsW1wiQ1VMTF9GQUNFXCJdID0gMjg4NF0gPSBcIkNVTExfRkFDRVwiO1xuICBnbFtnbFtcIkJMRU5EXCJdID0gMzA0Ml0gPSBcIkJMRU5EXCI7XG4gIGdsW2dsW1wiRElUSEVSXCJdID0gMzAyNF0gPSBcIkRJVEhFUlwiO1xuICBnbFtnbFtcIlNURU5DSUxfVEVTVFwiXSA9IDI5NjBdID0gXCJTVEVOQ0lMX1RFU1RcIjtcbiAgZ2xbZ2xbXCJERVBUSF9URVNUXCJdID0gMjkyOV0gPSBcIkRFUFRIX1RFU1RcIjtcbiAgZ2xbZ2xbXCJTQ0lTU09SX1RFU1RcIl0gPSAzMDg5XSA9IFwiU0NJU1NPUl9URVNUXCI7XG4gIGdsW2dsW1wiUE9MWUdPTl9PRkZTRVRfRklMTFwiXSA9IDMyODIzXSA9IFwiUE9MWUdPTl9PRkZTRVRfRklMTFwiO1xuICBnbFtnbFtcIlNBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRVwiXSA9IDMyOTI2XSA9IFwiU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFXCI7XG4gIGdsW2dsW1wiU0FNUExFX0NPVkVSQUdFXCJdID0gMzI5MjhdID0gXCJTQU1QTEVfQ09WRVJBR0VcIjtcbiAgZ2xbZ2xbXCJOT19FUlJPUlwiXSA9IDBdID0gXCJOT19FUlJPUlwiO1xuICBnbFtnbFtcIklOVkFMSURfRU5VTVwiXSA9IDEyODBdID0gXCJJTlZBTElEX0VOVU1cIjtcbiAgZ2xbZ2xbXCJJTlZBTElEX1ZBTFVFXCJdID0gMTI4MV0gPSBcIklOVkFMSURfVkFMVUVcIjtcbiAgZ2xbZ2xbXCJJTlZBTElEX09QRVJBVElPTlwiXSA9IDEyODJdID0gXCJJTlZBTElEX09QRVJBVElPTlwiO1xuICBnbFtnbFtcIk9VVF9PRl9NRU1PUllcIl0gPSAxMjg1XSA9IFwiT1VUX09GX01FTU9SWVwiO1xuICBnbFtnbFtcIkNXXCJdID0gMjMwNF0gPSBcIkNXXCI7XG4gIGdsW2dsW1wiQ0NXXCJdID0gMjMwNV0gPSBcIkNDV1wiO1xuICBnbFtnbFtcIkxJTkVfV0lEVEhcIl0gPSAyODQ5XSA9IFwiTElORV9XSURUSFwiO1xuICBnbFtnbFtcIkFMSUFTRURfUE9JTlRfU0laRV9SQU5HRVwiXSA9IDMzOTAxXSA9IFwiQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFXCI7XG4gIGdsW2dsW1wiQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFXCJdID0gMzM5MDJdID0gXCJBTElBU0VEX0xJTkVfV0lEVEhfUkFOR0VcIjtcbiAgZ2xbZ2xbXCJDVUxMX0ZBQ0VfTU9ERVwiXSA9IDI4ODVdID0gXCJDVUxMX0ZBQ0VfTU9ERVwiO1xuICBnbFtnbFtcIkZST05UX0ZBQ0VcIl0gPSAyODg2XSA9IFwiRlJPTlRfRkFDRVwiO1xuICBnbFtnbFtcIkRFUFRIX1JBTkdFXCJdID0gMjkyOF0gPSBcIkRFUFRIX1JBTkdFXCI7XG4gIGdsW2dsW1wiREVQVEhfV1JJVEVNQVNLXCJdID0gMjkzMF0gPSBcIkRFUFRIX1dSSVRFTUFTS1wiO1xuICBnbFtnbFtcIkRFUFRIX0NMRUFSX1ZBTFVFXCJdID0gMjkzMV0gPSBcIkRFUFRIX0NMRUFSX1ZBTFVFXCI7XG4gIGdsW2dsW1wiREVQVEhfRlVOQ1wiXSA9IDI5MzJdID0gXCJERVBUSF9GVU5DXCI7XG4gIGdsW2dsW1wiU1RFTkNJTF9DTEVBUl9WQUxVRVwiXSA9IDI5NjFdID0gXCJTVEVOQ0lMX0NMRUFSX1ZBTFVFXCI7XG4gIGdsW2dsW1wiU1RFTkNJTF9GVU5DXCJdID0gMjk2Ml0gPSBcIlNURU5DSUxfRlVOQ1wiO1xuICBnbFtnbFtcIlNURU5DSUxfRkFJTFwiXSA9IDI5NjRdID0gXCJTVEVOQ0lMX0ZBSUxcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX1BBU1NfREVQVEhfRkFJTFwiXSA9IDI5NjVdID0gXCJTVEVOQ0lMX1BBU1NfREVQVEhfRkFJTFwiO1xuICBnbFtnbFtcIlNURU5DSUxfUEFTU19ERVBUSF9QQVNTXCJdID0gMjk2Nl0gPSBcIlNURU5DSUxfUEFTU19ERVBUSF9QQVNTXCI7XG4gIGdsW2dsW1wiU1RFTkNJTF9SRUZcIl0gPSAyOTY3XSA9IFwiU1RFTkNJTF9SRUZcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX1ZBTFVFX01BU0tcIl0gPSAyOTYzXSA9IFwiU1RFTkNJTF9WQUxVRV9NQVNLXCI7XG4gIGdsW2dsW1wiU1RFTkNJTF9XUklURU1BU0tcIl0gPSAyOTY4XSA9IFwiU1RFTkNJTF9XUklURU1BU0tcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX0JBQ0tfRlVOQ1wiXSA9IDM0ODE2XSA9IFwiU1RFTkNJTF9CQUNLX0ZVTkNcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX0JBQ0tfRkFJTFwiXSA9IDM0ODE3XSA9IFwiU1RFTkNJTF9CQUNLX0ZBSUxcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMXCJdID0gMzQ4MThdID0gXCJTVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMXCI7XG4gIGdsW2dsW1wiU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTU1wiXSA9IDM0ODE5XSA9IFwiU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTU1wiO1xuICBnbFtnbFtcIlNURU5DSUxfQkFDS19SRUZcIl0gPSAzNjAwM10gPSBcIlNURU5DSUxfQkFDS19SRUZcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTS1wiXSA9IDM2MDA0XSA9IFwiU1RFTkNJTF9CQUNLX1ZBTFVFX01BU0tcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLXCJdID0gMzYwMDVdID0gXCJTVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLXCI7XG4gIGdsW2dsW1wiVklFV1BPUlRcIl0gPSAyOTc4XSA9IFwiVklFV1BPUlRcIjtcbiAgZ2xbZ2xbXCJTQ0lTU09SX0JPWFwiXSA9IDMwODhdID0gXCJTQ0lTU09SX0JPWFwiO1xuICBnbFtnbFtcIkNPTE9SX0NMRUFSX1ZBTFVFXCJdID0gMzEwNl0gPSBcIkNPTE9SX0NMRUFSX1ZBTFVFXCI7XG4gIGdsW2dsW1wiQ09MT1JfV1JJVEVNQVNLXCJdID0gMzEwN10gPSBcIkNPTE9SX1dSSVRFTUFTS1wiO1xuICBnbFtnbFtcIlVOUEFDS19BTElHTk1FTlRcIl0gPSAzMzE3XSA9IFwiVU5QQUNLX0FMSUdOTUVOVFwiO1xuICBnbFtnbFtcIlBBQ0tfQUxJR05NRU5UXCJdID0gMzMzM10gPSBcIlBBQ0tfQUxJR05NRU5UXCI7XG4gIGdsW2dsW1wiTUFYX1RFWFRVUkVfU0laRVwiXSA9IDMzNzldID0gXCJNQVhfVEVYVFVSRV9TSVpFXCI7XG4gIGdsW2dsW1wiTUFYX1ZJRVdQT1JUX0RJTVNcIl0gPSAzMzg2XSA9IFwiTUFYX1ZJRVdQT1JUX0RJTVNcIjtcbiAgZ2xbZ2xbXCJTVUJQSVhFTF9CSVRTXCJdID0gMzQwOF0gPSBcIlNVQlBJWEVMX0JJVFNcIjtcbiAgZ2xbZ2xbXCJSRURfQklUU1wiXSA9IDM0MTBdID0gXCJSRURfQklUU1wiO1xuICBnbFtnbFtcIkdSRUVOX0JJVFNcIl0gPSAzNDExXSA9IFwiR1JFRU5fQklUU1wiO1xuICBnbFtnbFtcIkJMVUVfQklUU1wiXSA9IDM0MTJdID0gXCJCTFVFX0JJVFNcIjtcbiAgZ2xbZ2xbXCJBTFBIQV9CSVRTXCJdID0gMzQxM10gPSBcIkFMUEhBX0JJVFNcIjtcbiAgZ2xbZ2xbXCJERVBUSF9CSVRTXCJdID0gMzQxNF0gPSBcIkRFUFRIX0JJVFNcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX0JJVFNcIl0gPSAzNDE1XSA9IFwiU1RFTkNJTF9CSVRTXCI7XG4gIGdsW2dsW1wiUE9MWUdPTl9PRkZTRVRfVU5JVFNcIl0gPSAxMDc1Ml0gPSBcIlBPTFlHT05fT0ZGU0VUX1VOSVRTXCI7XG4gIGdsW2dsW1wiUE9MWUdPTl9PRkZTRVRfRkFDVE9SXCJdID0gMzI4MjRdID0gXCJQT0xZR09OX09GRlNFVF9GQUNUT1JcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFX0JJTkRJTkdfMkRcIl0gPSAzMjg3M10gPSBcIlRFWFRVUkVfQklORElOR18yRFwiO1xuICBnbFtnbFtcIlNBTVBMRV9CVUZGRVJTXCJdID0gMzI5MzZdID0gXCJTQU1QTEVfQlVGRkVSU1wiO1xuICBnbFtnbFtcIlNBTVBMRVNcIl0gPSAzMjkzN10gPSBcIlNBTVBMRVNcIjtcbiAgZ2xbZ2xbXCJTQU1QTEVfQ09WRVJBR0VfVkFMVUVcIl0gPSAzMjkzOF0gPSBcIlNBTVBMRV9DT1ZFUkFHRV9WQUxVRVwiO1xuICBnbFtnbFtcIlNBTVBMRV9DT1ZFUkFHRV9JTlZFUlRcIl0gPSAzMjkzOV0gPSBcIlNBTVBMRV9DT1ZFUkFHRV9JTlZFUlRcIjtcbiAgZ2xbZ2xbXCJDT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUU1wiXSA9IDM0NDY3XSA9IFwiQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFNcIjtcbiAgZ2xbZ2xbXCJET05UX0NBUkVcIl0gPSA0MzUyXSA9IFwiRE9OVF9DQVJFXCI7XG4gIGdsW2dsW1wiRkFTVEVTVFwiXSA9IDQzNTNdID0gXCJGQVNURVNUXCI7XG4gIGdsW2dsW1wiTklDRVNUXCJdID0gNDM1NF0gPSBcIk5JQ0VTVFwiO1xuICBnbFtnbFtcIkdFTkVSQVRFX01JUE1BUF9ISU5UXCJdID0gMzMxNzBdID0gXCJHRU5FUkFURV9NSVBNQVBfSElOVFwiO1xuICBnbFtnbFtcIkJZVEVcIl0gPSA1MTIwXSA9IFwiQllURVwiO1xuICBnbFtnbFtcIlVOU0lHTkVEX0JZVEVcIl0gPSA1MTIxXSA9IFwiVU5TSUdORURfQllURVwiO1xuICBnbFtnbFtcIlNIT1JUXCJdID0gNTEyMl0gPSBcIlNIT1JUXCI7XG4gIGdsW2dsW1wiVU5TSUdORURfU0hPUlRcIl0gPSA1MTIzXSA9IFwiVU5TSUdORURfU0hPUlRcIjtcbiAgZ2xbZ2xbXCJJTlRcIl0gPSA1MTI0XSA9IFwiSU5UXCI7XG4gIGdsW2dsW1wiVU5TSUdORURfSU5UXCJdID0gNTEyNV0gPSBcIlVOU0lHTkVEX0lOVFwiO1xuICBnbFtnbFtcIkZMT0FUXCJdID0gNTEyNl0gPSBcIkZMT0FUXCI7XG4gIGdsW2dsW1wiREVQVEhfQ09NUE9ORU5UXCJdID0gNjQwMl0gPSBcIkRFUFRIX0NPTVBPTkVOVFwiO1xuICBnbFtnbFtcIkFMUEhBXCJdID0gNjQwNl0gPSBcIkFMUEhBXCI7XG4gIGdsW2dsW1wiUkdCXCJdID0gNjQwN10gPSBcIlJHQlwiO1xuICBnbFtnbFtcIlJHQkFcIl0gPSA2NDA4XSA9IFwiUkdCQVwiO1xuICBnbFtnbFtcIkxVTUlOQU5DRVwiXSA9IDY0MDldID0gXCJMVU1JTkFOQ0VcIjtcbiAgZ2xbZ2xbXCJMVU1JTkFOQ0VfQUxQSEFcIl0gPSA2NDEwXSA9IFwiTFVNSU5BTkNFX0FMUEhBXCI7XG4gIGdsW2dsW1wiVU5TSUdORURfU0hPUlRfNF80XzRfNFwiXSA9IDMyODE5XSA9IFwiVU5TSUdORURfU0hPUlRfNF80XzRfNFwiO1xuICBnbFtnbFtcIlVOU0lHTkVEX1NIT1JUXzVfNV81XzFcIl0gPSAzMjgyMF0gPSBcIlVOU0lHTkVEX1NIT1JUXzVfNV81XzFcIjtcbiAgZ2xbZ2xbXCJVTlNJR05FRF9TSE9SVF81XzZfNVwiXSA9IDMzNjM1XSA9IFwiVU5TSUdORURfU0hPUlRfNV82XzVcIjtcbiAgZ2xbZ2xbXCJGUkFHTUVOVF9TSEFERVJcIl0gPSAzNTYzMl0gPSBcIkZSQUdNRU5UX1NIQURFUlwiO1xuICBnbFtnbFtcIlZFUlRFWF9TSEFERVJcIl0gPSAzNTYzM10gPSBcIlZFUlRFWF9TSEFERVJcIjtcbiAgZ2xbZ2xbXCJNQVhfVkVSVEVYX0FUVFJJQlNcIl0gPSAzNDkyMV0gPSBcIk1BWF9WRVJURVhfQVRUUklCU1wiO1xuICBnbFtnbFtcIk1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTXCJdID0gMzYzNDddID0gXCJNQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SU1wiO1xuICBnbFtnbFtcIk1BWF9WQVJZSU5HX1ZFQ1RPUlNcIl0gPSAzNjM0OF0gPSBcIk1BWF9WQVJZSU5HX1ZFQ1RPUlNcIjtcbiAgZ2xbZ2xbXCJNQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUU1wiXSA9IDM1NjYxXSA9IFwiTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFNcIjtcbiAgZ2xbZ2xbXCJNQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFNcIl0gPSAzNTY2MF0gPSBcIk1BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUU1wiO1xuICBnbFtnbFtcIk1BWF9URVhUVVJFX0lNQUdFX1VOSVRTXCJdID0gMzQ5MzBdID0gXCJNQVhfVEVYVFVSRV9JTUFHRV9VTklUU1wiO1xuICBnbFtnbFtcIk1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlNcIl0gPSAzNjM0OV0gPSBcIk1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlNcIjtcbiAgZ2xbZ2xbXCJTSEFERVJfVFlQRVwiXSA9IDM1NjYzXSA9IFwiU0hBREVSX1RZUEVcIjtcbiAgZ2xbZ2xbXCJERUxFVEVfU1RBVFVTXCJdID0gMzU3MTJdID0gXCJERUxFVEVfU1RBVFVTXCI7XG4gIGdsW2dsW1wiTElOS19TVEFUVVNcIl0gPSAzNTcxNF0gPSBcIkxJTktfU1RBVFVTXCI7XG4gIGdsW2dsW1wiVkFMSURBVEVfU1RBVFVTXCJdID0gMzU3MTVdID0gXCJWQUxJREFURV9TVEFUVVNcIjtcbiAgZ2xbZ2xbXCJBVFRBQ0hFRF9TSEFERVJTXCJdID0gMzU3MTddID0gXCJBVFRBQ0hFRF9TSEFERVJTXCI7XG4gIGdsW2dsW1wiQUNUSVZFX1VOSUZPUk1TXCJdID0gMzU3MThdID0gXCJBQ1RJVkVfVU5JRk9STVNcIjtcbiAgZ2xbZ2xbXCJBQ1RJVkVfQVRUUklCVVRFU1wiXSA9IDM1NzIxXSA9IFwiQUNUSVZFX0FUVFJJQlVURVNcIjtcbiAgZ2xbZ2xbXCJTSEFESU5HX0xBTkdVQUdFX1ZFUlNJT05cIl0gPSAzNTcyNF0gPSBcIlNIQURJTkdfTEFOR1VBR0VfVkVSU0lPTlwiO1xuICBnbFtnbFtcIkNVUlJFTlRfUFJPR1JBTVwiXSA9IDM1NzI1XSA9IFwiQ1VSUkVOVF9QUk9HUkFNXCI7XG4gIGdsW2dsW1wiTkVWRVJcIl0gPSA1MTJdID0gXCJORVZFUlwiO1xuICBnbFtnbFtcIkxFU1NcIl0gPSA1MTNdID0gXCJMRVNTXCI7XG4gIGdsW2dsW1wiRVFVQUxcIl0gPSA1MTRdID0gXCJFUVVBTFwiO1xuICBnbFtnbFtcIkxFUVVBTFwiXSA9IDUxNV0gPSBcIkxFUVVBTFwiO1xuICBnbFtnbFtcIkdSRUFURVJcIl0gPSA1MTZdID0gXCJHUkVBVEVSXCI7XG4gIGdsW2dsW1wiTk9URVFVQUxcIl0gPSA1MTddID0gXCJOT1RFUVVBTFwiO1xuICBnbFtnbFtcIkdFUVVBTFwiXSA9IDUxOF0gPSBcIkdFUVVBTFwiO1xuICBnbFtnbFtcIkFMV0FZU1wiXSA9IDUxOV0gPSBcIkFMV0FZU1wiO1xuICBnbFtnbFtcIktFRVBcIl0gPSA3NjgwXSA9IFwiS0VFUFwiO1xuICBnbFtnbFtcIlJFUExBQ0VcIl0gPSA3NjgxXSA9IFwiUkVQTEFDRVwiO1xuICBnbFtnbFtcIklOQ1JcIl0gPSA3NjgyXSA9IFwiSU5DUlwiO1xuICBnbFtnbFtcIkRFQ1JcIl0gPSA3NjgzXSA9IFwiREVDUlwiO1xuICBnbFtnbFtcIklOVkVSVFwiXSA9IDUzODZdID0gXCJJTlZFUlRcIjtcbiAgZ2xbZ2xbXCJJTkNSX1dSQVBcIl0gPSAzNDA1NV0gPSBcIklOQ1JfV1JBUFwiO1xuICBnbFtnbFtcIkRFQ1JfV1JBUFwiXSA9IDM0MDU2XSA9IFwiREVDUl9XUkFQXCI7XG4gIGdsW2dsW1wiVkVORE9SXCJdID0gNzkzNl0gPSBcIlZFTkRPUlwiO1xuICBnbFtnbFtcIlJFTkRFUkVSXCJdID0gNzkzN10gPSBcIlJFTkRFUkVSXCI7XG4gIGdsW2dsW1wiVkVSU0lPTlwiXSA9IDc5MzhdID0gXCJWRVJTSU9OXCI7XG4gIGdsW2dsW1wiTkVBUkVTVFwiXSA9IDk3MjhdID0gXCJORUFSRVNUXCI7XG4gIGdsW2dsW1wiTElORUFSXCJdID0gOTcyOV0gPSBcIkxJTkVBUlwiO1xuICBnbFtnbFtcIk5FQVJFU1RfTUlQTUFQX05FQVJFU1RcIl0gPSA5OTg0XSA9IFwiTkVBUkVTVF9NSVBNQVBfTkVBUkVTVFwiO1xuICBnbFtnbFtcIkxJTkVBUl9NSVBNQVBfTkVBUkVTVFwiXSA9IDk5ODVdID0gXCJMSU5FQVJfTUlQTUFQX05FQVJFU1RcIjtcbiAgZ2xbZ2xbXCJORUFSRVNUX01JUE1BUF9MSU5FQVJcIl0gPSA5OTg2XSA9IFwiTkVBUkVTVF9NSVBNQVBfTElORUFSXCI7XG4gIGdsW2dsW1wiTElORUFSX01JUE1BUF9MSU5FQVJcIl0gPSA5OTg3XSA9IFwiTElORUFSX01JUE1BUF9MSU5FQVJcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFX01BR19GSUxURVJcIl0gPSAxMDI0MF0gPSBcIlRFWFRVUkVfTUFHX0ZJTFRFUlwiO1xuICBnbFtnbFtcIlRFWFRVUkVfTUlOX0ZJTFRFUlwiXSA9IDEwMjQxXSA9IFwiVEVYVFVSRV9NSU5fRklMVEVSXCI7XG4gIGdsW2dsW1wiVEVYVFVSRV9XUkFQX1NcIl0gPSAxMDI0Ml0gPSBcIlRFWFRVUkVfV1JBUF9TXCI7XG4gIGdsW2dsW1wiVEVYVFVSRV9XUkFQX1RcIl0gPSAxMDI0M10gPSBcIlRFWFRVUkVfV1JBUF9UXCI7XG4gIGdsW2dsW1wiVEVYVFVSRV8yRFwiXSA9IDM1NTNdID0gXCJURVhUVVJFXzJEXCI7XG4gIGdsW2dsW1wiVEVYVFVSRVwiXSA9IDU4OTBdID0gXCJURVhUVVJFXCI7XG4gIGdsW2dsW1wiVEVYVFVSRV9DVUJFX01BUFwiXSA9IDM0MDY3XSA9IFwiVEVYVFVSRV9DVUJFX01BUFwiO1xuICBnbFtnbFtcIlRFWFRVUkVfQklORElOR19DVUJFX01BUFwiXSA9IDM0MDY4XSA9IFwiVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQXCI7XG4gIGdsW2dsW1wiVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YXCJdID0gMzQwNjldID0gXCJURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1hcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1hcIl0gPSAzNDA3MF0gPSBcIlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWFwiO1xuICBnbFtnbFtcIlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWVwiXSA9IDM0MDcxXSA9IFwiVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZXCI7XG4gIGdsW2dsW1wiVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZXCJdID0gMzQwNzJdID0gXCJURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1lcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1pcIl0gPSAzNDA3M10gPSBcIlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWlwiO1xuICBnbFtnbFtcIlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWlwiXSA9IDM0MDc0XSA9IFwiVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aXCI7XG4gIGdsW2dsW1wiTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRVwiXSA9IDM0MDc2XSA9IFwiTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRVwiO1xuICBnbFtnbFtcIlRFWFRVUkUwXCJdID0gMzM5ODRdID0gXCJURVhUVVJFMFwiO1xuICBnbFtnbFtcIlRFWFRVUkUxXCJdID0gMzM5ODVdID0gXCJURVhUVVJFMVwiO1xuICBnbFtnbFtcIlRFWFRVUkUyXCJdID0gMzM5ODZdID0gXCJURVhUVVJFMlwiO1xuICBnbFtnbFtcIlRFWFRVUkUzXCJdID0gMzM5ODddID0gXCJURVhUVVJFM1wiO1xuICBnbFtnbFtcIlRFWFRVUkU0XCJdID0gMzM5ODhdID0gXCJURVhUVVJFNFwiO1xuICBnbFtnbFtcIlRFWFRVUkU1XCJdID0gMzM5ODldID0gXCJURVhUVVJFNVwiO1xuICBnbFtnbFtcIlRFWFRVUkU2XCJdID0gMzM5OTBdID0gXCJURVhUVVJFNlwiO1xuICBnbFtnbFtcIlRFWFRVUkU3XCJdID0gMzM5OTFdID0gXCJURVhUVVJFN1wiO1xuICBnbFtnbFtcIlRFWFRVUkU4XCJdID0gMzM5OTJdID0gXCJURVhUVVJFOFwiO1xuICBnbFtnbFtcIlRFWFRVUkU5XCJdID0gMzM5OTNdID0gXCJURVhUVVJFOVwiO1xuICBnbFtnbFtcIlRFWFRVUkUxMFwiXSA9IDMzOTk0XSA9IFwiVEVYVFVSRTEwXCI7XG4gIGdsW2dsW1wiVEVYVFVSRTExXCJdID0gMzM5OTVdID0gXCJURVhUVVJFMTFcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFMTJcIl0gPSAzMzk5Nl0gPSBcIlRFWFRVUkUxMlwiO1xuICBnbFtnbFtcIlRFWFRVUkUxM1wiXSA9IDMzOTk3XSA9IFwiVEVYVFVSRTEzXCI7XG4gIGdsW2dsW1wiVEVYVFVSRTE0XCJdID0gMzM5OThdID0gXCJURVhUVVJFMTRcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFMTVcIl0gPSAzMzk5OV0gPSBcIlRFWFRVUkUxNVwiO1xuICBnbFtnbFtcIlRFWFRVUkUxNlwiXSA9IDM0MDAwXSA9IFwiVEVYVFVSRTE2XCI7XG4gIGdsW2dsW1wiVEVYVFVSRTE3XCJdID0gMzQwMDFdID0gXCJURVhUVVJFMTdcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFMThcIl0gPSAzNDAwMl0gPSBcIlRFWFRVUkUxOFwiO1xuICBnbFtnbFtcIlRFWFRVUkUxOVwiXSA9IDM0MDAzXSA9IFwiVEVYVFVSRTE5XCI7XG4gIGdsW2dsW1wiVEVYVFVSRTIwXCJdID0gMzQwMDRdID0gXCJURVhUVVJFMjBcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFMjFcIl0gPSAzNDAwNV0gPSBcIlRFWFRVUkUyMVwiO1xuICBnbFtnbFtcIlRFWFRVUkUyMlwiXSA9IDM0MDA2XSA9IFwiVEVYVFVSRTIyXCI7XG4gIGdsW2dsW1wiVEVYVFVSRTIzXCJdID0gMzQwMDddID0gXCJURVhUVVJFMjNcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFMjRcIl0gPSAzNDAwOF0gPSBcIlRFWFRVUkUyNFwiO1xuICBnbFtnbFtcIlRFWFRVUkUyNVwiXSA9IDM0MDA5XSA9IFwiVEVYVFVSRTI1XCI7XG4gIGdsW2dsW1wiVEVYVFVSRTI2XCJdID0gMzQwMTBdID0gXCJURVhUVVJFMjZcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFMjdcIl0gPSAzNDAxMV0gPSBcIlRFWFRVUkUyN1wiO1xuICBnbFtnbFtcIlRFWFRVUkUyOFwiXSA9IDM0MDEyXSA9IFwiVEVYVFVSRTI4XCI7XG4gIGdsW2dsW1wiVEVYVFVSRTI5XCJdID0gMzQwMTNdID0gXCJURVhUVVJFMjlcIjtcbiAgZ2xbZ2xbXCJURVhUVVJFMzBcIl0gPSAzNDAxNF0gPSBcIlRFWFRVUkUzMFwiO1xuICBnbFtnbFtcIlRFWFRVUkUzMVwiXSA9IDM0MDE1XSA9IFwiVEVYVFVSRTMxXCI7XG4gIGdsW2dsW1wiQUNUSVZFX1RFWFRVUkVcIl0gPSAzNDAxNl0gPSBcIkFDVElWRV9URVhUVVJFXCI7XG4gIGdsW2dsW1wiUkVQRUFUXCJdID0gMTA0OTddID0gXCJSRVBFQVRcIjtcbiAgZ2xbZ2xbXCJDTEFNUF9UT19FREdFXCJdID0gMzMwNzFdID0gXCJDTEFNUF9UT19FREdFXCI7XG4gIGdsW2dsW1wiTUlSUk9SRURfUkVQRUFUXCJdID0gMzM2NDhdID0gXCJNSVJST1JFRF9SRVBFQVRcIjtcbiAgZ2xbZ2xbXCJGTE9BVF9WRUMyXCJdID0gMzU2NjRdID0gXCJGTE9BVF9WRUMyXCI7XG4gIGdsW2dsW1wiRkxPQVRfVkVDM1wiXSA9IDM1NjY1XSA9IFwiRkxPQVRfVkVDM1wiO1xuICBnbFtnbFtcIkZMT0FUX1ZFQzRcIl0gPSAzNTY2Nl0gPSBcIkZMT0FUX1ZFQzRcIjtcbiAgZ2xbZ2xbXCJJTlRfVkVDMlwiXSA9IDM1NjY3XSA9IFwiSU5UX1ZFQzJcIjtcbiAgZ2xbZ2xbXCJJTlRfVkVDM1wiXSA9IDM1NjY4XSA9IFwiSU5UX1ZFQzNcIjtcbiAgZ2xbZ2xbXCJJTlRfVkVDNFwiXSA9IDM1NjY5XSA9IFwiSU5UX1ZFQzRcIjtcbiAgZ2xbZ2xbXCJCT09MXCJdID0gMzU2NzBdID0gXCJCT09MXCI7XG4gIGdsW2dsW1wiQk9PTF9WRUMyXCJdID0gMzU2NzFdID0gXCJCT09MX1ZFQzJcIjtcbiAgZ2xbZ2xbXCJCT09MX1ZFQzNcIl0gPSAzNTY3Ml0gPSBcIkJPT0xfVkVDM1wiO1xuICBnbFtnbFtcIkJPT0xfVkVDNFwiXSA9IDM1NjczXSA9IFwiQk9PTF9WRUM0XCI7XG4gIGdsW2dsW1wiRkxPQVRfTUFUMlwiXSA9IDM1Njc0XSA9IFwiRkxPQVRfTUFUMlwiO1xuICBnbFtnbFtcIkZMT0FUX01BVDNcIl0gPSAzNTY3NV0gPSBcIkZMT0FUX01BVDNcIjtcbiAgZ2xbZ2xbXCJGTE9BVF9NQVQ0XCJdID0gMzU2NzZdID0gXCJGTE9BVF9NQVQ0XCI7XG4gIGdsW2dsW1wiU0FNUExFUl8yRFwiXSA9IDM1Njc4XSA9IFwiU0FNUExFUl8yRFwiO1xuICBnbFtnbFtcIlNBTVBMRVJfQ1VCRVwiXSA9IDM1NjgwXSA9IFwiU0FNUExFUl9DVUJFXCI7XG4gIGdsW2dsW1wiVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEXCJdID0gMzQzMzhdID0gXCJWRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRURcIjtcbiAgZ2xbZ2xbXCJWRVJURVhfQVRUUklCX0FSUkFZX1NJWkVcIl0gPSAzNDMzOV0gPSBcIlZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRVwiO1xuICBnbFtnbFtcIlZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFXCJdID0gMzQzNDBdID0gXCJWRVJURVhfQVRUUklCX0FSUkFZX1NUUklERVwiO1xuICBnbFtnbFtcIlZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRVwiXSA9IDM0MzQxXSA9IFwiVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFXCI7XG4gIGdsW2dsW1wiVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEXCJdID0gMzQ5MjJdID0gXCJWRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRURcIjtcbiAgZ2xbZ2xbXCJWRVJURVhfQVRUUklCX0FSUkFZX1BPSU5URVJcIl0gPSAzNDM3M10gPSBcIlZFUlRFWF9BVFRSSUJfQVJSQVlfUE9JTlRFUlwiO1xuICBnbFtnbFtcIlZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkdcIl0gPSAzNDk3NV0gPSBcIlZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkdcIjtcbiAgZ2xbZ2xbXCJDT01QSUxFX1NUQVRVU1wiXSA9IDM1NzEzXSA9IFwiQ09NUElMRV9TVEFUVVNcIjtcbiAgZ2xbZ2xbXCJMT1dfRkxPQVRcIl0gPSAzNjMzNl0gPSBcIkxPV19GTE9BVFwiO1xuICBnbFtnbFtcIk1FRElVTV9GTE9BVFwiXSA9IDM2MzM3XSA9IFwiTUVESVVNX0ZMT0FUXCI7XG4gIGdsW2dsW1wiSElHSF9GTE9BVFwiXSA9IDM2MzM4XSA9IFwiSElHSF9GTE9BVFwiO1xuICBnbFtnbFtcIkxPV19JTlRcIl0gPSAzNjMzOV0gPSBcIkxPV19JTlRcIjtcbiAgZ2xbZ2xbXCJNRURJVU1fSU5UXCJdID0gMzYzNDBdID0gXCJNRURJVU1fSU5UXCI7XG4gIGdsW2dsW1wiSElHSF9JTlRcIl0gPSAzNjM0MV0gPSBcIkhJR0hfSU5UXCI7XG4gIGdsW2dsW1wiRlJBTUVCVUZGRVJcIl0gPSAzNjE2MF0gPSBcIkZSQU1FQlVGRkVSXCI7XG4gIGdsW2dsW1wiUkVOREVSQlVGRkVSXCJdID0gMzYxNjFdID0gXCJSRU5ERVJCVUZGRVJcIjtcbiAgZ2xbZ2xbXCJSR0JBNFwiXSA9IDMyODU0XSA9IFwiUkdCQTRcIjtcbiAgZ2xbZ2xbXCJSR0I1X0ExXCJdID0gMzI4NTVdID0gXCJSR0I1X0ExXCI7XG4gIGdsW2dsW1wiUkdCNTY1XCJdID0gMzYxOTRdID0gXCJSR0I1NjVcIjtcbiAgZ2xbZ2xbXCJERVBUSF9DT01QT05FTlQxNlwiXSA9IDMzMTg5XSA9IFwiREVQVEhfQ09NUE9ORU5UMTZcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX0lOREVYXCJdID0gNjQwMV0gPSBcIlNURU5DSUxfSU5ERVhcIjtcbiAgZ2xbZ2xbXCJTVEVOQ0lMX0lOREVYOFwiXSA9IDM2MTY4XSA9IFwiU1RFTkNJTF9JTkRFWDhcIjtcbiAgZ2xbZ2xbXCJERVBUSF9TVEVOQ0lMXCJdID0gMzQwNDFdID0gXCJERVBUSF9TVEVOQ0lMXCI7XG4gIGdsW2dsW1wiUkVOREVSQlVGRkVSX1dJRFRIXCJdID0gMzYxNjJdID0gXCJSRU5ERVJCVUZGRVJfV0lEVEhcIjtcbiAgZ2xbZ2xbXCJSRU5ERVJCVUZGRVJfSEVJR0hUXCJdID0gMzYxNjNdID0gXCJSRU5ERVJCVUZGRVJfSEVJR0hUXCI7XG4gIGdsW2dsW1wiUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVFwiXSA9IDM2MTY0XSA9IFwiUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVFwiO1xuICBnbFtnbFtcIlJFTkRFUkJVRkZFUl9SRURfU0laRVwiXSA9IDM2MTc2XSA9IFwiUkVOREVSQlVGRkVSX1JFRF9TSVpFXCI7XG4gIGdsW2dsW1wiUkVOREVSQlVGRkVSX0dSRUVOX1NJWkVcIl0gPSAzNjE3N10gPSBcIlJFTkRFUkJVRkZFUl9HUkVFTl9TSVpFXCI7XG4gIGdsW2dsW1wiUkVOREVSQlVGRkVSX0JMVUVfU0laRVwiXSA9IDM2MTc4XSA9IFwiUkVOREVSQlVGRkVSX0JMVUVfU0laRVwiO1xuICBnbFtnbFtcIlJFTkRFUkJVRkZFUl9BTFBIQV9TSVpFXCJdID0gMzYxNzldID0gXCJSRU5ERVJCVUZGRVJfQUxQSEFfU0laRVwiO1xuICBnbFtnbFtcIlJFTkRFUkJVRkZFUl9ERVBUSF9TSVpFXCJdID0gMzYxODBdID0gXCJSRU5ERVJCVUZGRVJfREVQVEhfU0laRVwiO1xuICBnbFtnbFtcIlJFTkRFUkJVRkZFUl9TVEVOQ0lMX1NJWkVcIl0gPSAzNjE4MV0gPSBcIlJFTkRFUkJVRkZFUl9TVEVOQ0lMX1NJWkVcIjtcbiAgZ2xbZ2xbXCJGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFXCJdID0gMzYwNDhdID0gXCJGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFXCI7XG4gIGdsW2dsW1wiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRVwiXSA9IDM2MDQ5XSA9IFwiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRVwiO1xuICBnbFtnbFtcIkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTFwiXSA9IDM2MDUwXSA9IFwiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMXCI7XG4gIGdsW2dsW1wiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0VcIl0gPSAzNjA1MV0gPSBcIkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFXCI7XG4gIGdsW2dsW1wiQ09MT1JfQVRUQUNITUVOVDBcIl0gPSAzNjA2NF0gPSBcIkNPTE9SX0FUVEFDSE1FTlQwXCI7XG4gIGdsW2dsW1wiREVQVEhfQVRUQUNITUVOVFwiXSA9IDM2MDk2XSA9IFwiREVQVEhfQVRUQUNITUVOVFwiO1xuICBnbFtnbFtcIlNURU5DSUxfQVRUQUNITUVOVFwiXSA9IDM2MTI4XSA9IFwiU1RFTkNJTF9BVFRBQ0hNRU5UXCI7XG4gIGdsW2dsW1wiREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UXCJdID0gMzMzMDZdID0gXCJERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlRcIjtcbiAgZ2xbZ2xbXCJOT05FXCJdID0gMF0gPSBcIk5PTkVcIjtcbiAgZ2xbZ2xbXCJGUkFNRUJVRkZFUl9DT01QTEVURVwiXSA9IDM2MDUzXSA9IFwiRlJBTUVCVUZGRVJfQ09NUExFVEVcIjtcbiAgZ2xbZ2xbXCJGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlRcIl0gPSAzNjA1NF0gPSBcIkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVFwiO1xuICBnbFtnbFtcIkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTUlTU0lOR19BVFRBQ0hNRU5UXCJdID0gMzYwNTVdID0gXCJGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01JU1NJTkdfQVRUQUNITUVOVFwiO1xuICBnbFtnbFtcIkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OU1wiXSA9IDM2MDU3XSA9IFwiRlJBTUVCVUZGRVJfSU5DT01QTEVURV9ESU1FTlNJT05TXCI7XG4gIGdsW2dsW1wiRlJBTUVCVUZGRVJfVU5TVVBQT1JURURcIl0gPSAzNjA2MV0gPSBcIkZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEXCI7XG4gIGdsW2dsW1wiRlJBTUVCVUZGRVJfQklORElOR1wiXSA9IDM2MDA2XSA9IFwiRlJBTUVCVUZGRVJfQklORElOR1wiO1xuICBnbFtnbFtcIlJFTkRFUkJVRkZFUl9CSU5ESU5HXCJdID0gMzYwMDddID0gXCJSRU5ERVJCVUZGRVJfQklORElOR1wiO1xuICBnbFtnbFtcIk1BWF9SRU5ERVJCVUZGRVJfU0laRVwiXSA9IDM0MDI0XSA9IFwiTUFYX1JFTkRFUkJVRkZFUl9TSVpFXCI7XG4gIGdsW2dsW1wiSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT05cIl0gPSAxMjg2XSA9IFwiSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT05cIjtcbiAgZ2xbZ2xbXCJVTlBBQ0tfRkxJUF9ZX1dFQkdMXCJdID0gMzc0NDBdID0gXCJVTlBBQ0tfRkxJUF9ZX1dFQkdMXCI7XG4gIGdsW2dsW1wiVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMXCJdID0gMzc0NDFdID0gXCJVTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0xcIjtcbiAgZ2xbZ2xbXCJDT05URVhUX0xPU1RfV0VCR0xcIl0gPSAzNzQ0Ml0gPSBcIkNPTlRFWFRfTE9TVF9XRUJHTFwiO1xuICBnbFtnbFtcIlVOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0xcIl0gPSAzNzQ0M10gPSBcIlVOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0xcIjtcbiAgZ2xbZ2xbXCJCUk9XU0VSX0RFRkFVTFRfV0VCR0xcIl0gPSAzNzQ0NF0gPSBcIkJST1dTRVJfREVGQVVMVF9XRUJHTFwiO1xuICBnbFtnbFtcIkNPUFlfU1JDXCJdID0gMV0gPSBcIkNPUFlfU1JDXCI7XG4gIGdsW2dsW1wiQ09QWV9EU1RcIl0gPSAyXSA9IFwiQ09QWV9EU1RcIjtcbiAgZ2xbZ2xbXCJTQU1QTEVEXCJdID0gNF0gPSBcIlNBTVBMRURcIjtcbiAgZ2xbZ2xbXCJTVE9SQUdFXCJdID0gOF0gPSBcIlNUT1JBR0VcIjtcbiAgZ2xbZ2xbXCJSRU5ERVJfQVRUQUNITUVOVFwiXSA9IDE2XSA9IFwiUkVOREVSX0FUVEFDSE1FTlRcIjtcbn0pKGdsIHx8IChnbCA9IHt9KSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nbC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/gl.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/index.js":
/*!*****************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/index.js ***!
\*****************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _gl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./gl */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/gl.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"gl\", function() { return _gl__WEBPACK_IMPORTED_MODULE_0__[\"gl\"]; });\n\n/* harmony import */ var _IAttribute__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./IAttribute */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IAttribute.js\");\n/* harmony import */ var _IAttribute__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_IAttribute__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IAttribute__WEBPACK_IMPORTED_MODULE_1__) if([\"default\",\"gl\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IAttribute__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _IBuffer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./IBuffer */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IBuffer.js\");\n/* harmony import */ var _IBuffer__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_IBuffer__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IBuffer__WEBPACK_IMPORTED_MODULE_2__) if([\"default\",\"gl\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IBuffer__WEBPACK_IMPORTED_MODULE_2__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _IComputeModel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./IComputeModel */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IComputeModel.js\");\n/* harmony import */ var _IComputeModel__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_IComputeModel__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IComputeModel__WEBPACK_IMPORTED_MODULE_3__) if([\"default\",\"gl\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IComputeModel__WEBPACK_IMPORTED_MODULE_3__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _IElements__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./IElements */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IElements.js\");\n/* harmony import */ var _IElements__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_IElements__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IElements__WEBPACK_IMPORTED_MODULE_4__) if([\"default\",\"gl\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IElements__WEBPACK_IMPORTED_MODULE_4__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _IFramebuffer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./IFramebuffer */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IFramebuffer.js\");\n/* harmony import */ var _IFramebuffer__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_IFramebuffer__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IFramebuffer__WEBPACK_IMPORTED_MODULE_5__) if([\"default\",\"gl\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IFramebuffer__WEBPACK_IMPORTED_MODULE_5__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _IModel__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./IModel */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IModel.js\");\n/* harmony import */ var _IModel__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_IModel__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IModel__WEBPACK_IMPORTED_MODULE_6__) if([\"default\",\"gl\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IModel__WEBPACK_IMPORTED_MODULE_6__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _IMultiPassRenderer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./IMultiPassRenderer */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IMultiPassRenderer.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PassType\", function() { return _IMultiPassRenderer__WEBPACK_IMPORTED_MODULE_7__[\"PassType\"]; });\n\n/* harmony import */ var _IRenderbuffer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./IRenderbuffer */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IRenderbuffer.js\");\n/* harmony import */ var _IRenderbuffer__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_IRenderbuffer__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IRenderbuffer__WEBPACK_IMPORTED_MODULE_8__) if([\"default\",\"gl\",\"PassType\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IRenderbuffer__WEBPACK_IMPORTED_MODULE_8__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _IRendererService__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./IRendererService */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IRendererService.js\");\n/* harmony import */ var _IRendererService__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_IRendererService__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IRendererService__WEBPACK_IMPORTED_MODULE_9__) if([\"default\",\"gl\",\"PassType\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IRendererService__WEBPACK_IMPORTED_MODULE_9__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _ITexture2D__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./ITexture2D */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/ITexture2D.js\");\n/* harmony import */ var _ITexture2D__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_ITexture2D__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _ITexture2D__WEBPACK_IMPORTED_MODULE_10__) if([\"default\",\"gl\",\"PassType\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _ITexture2D__WEBPACK_IMPORTED_MODULE_10__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _IUniform__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./IUniform */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/IUniform.js\");\n/* harmony import */ var _IUniform__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_IUniform__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IUniform__WEBPACK_IMPORTED_MODULE_11__) if([\"default\",\"gl\",\"PassType\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IUniform__WEBPACK_IMPORTED_MODULE_11__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL2luZGV4LmpzPzNlNjgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBcUI7QUFDUTtBQUNIO0FBQ007QUFDSjtBQUNHO0FBQ047QUFDWTtBQUNMO0FBQ0c7QUFDTjtBQUNGO0FBQzNCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9yZW5kZXJlci9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZ2wnO1xuZXhwb3J0ICogZnJvbSAnLi9JQXR0cmlidXRlJztcbmV4cG9ydCAqIGZyb20gJy4vSUJ1ZmZlcic7XG5leHBvcnQgKiBmcm9tICcuL0lDb21wdXRlTW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9JRWxlbWVudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9JRnJhbWVidWZmZXInO1xuZXhwb3J0ICogZnJvbSAnLi9JTW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9JTXVsdGlQYXNzUmVuZGVyZXInO1xuZXhwb3J0ICogZnJvbSAnLi9JUmVuZGVyYnVmZmVyJztcbmV4cG9ydCAqIGZyb20gJy4vSVJlbmRlcmVyU2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL0lUZXh0dXJlMkQnO1xuZXhwb3J0ICogZnJvbSAnLi9JVW5pZm9ybSc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/passes/CopyPass.js":
/*!***************************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/passes/CopyPass.js ***!
\***************************************************************************************************************/
/*! exports provided: CopyPass */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CopyPass\", function() { return CopyPass; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__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@7.16.3@@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_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__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@7.16.3@@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_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../identifier */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/identifier.js\");\n/* harmony import */ var _gl__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../gl */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/gl.js\");\n/* harmony import */ var _RenderPass__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./RenderPass */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/passes/RenderPass.js\");\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _class, _class2, _descriptor, _descriptor2, _class3, _temp;\n\n\n\n\n/* babel-plugin-inline-import '../../../services/shader-module/shaders/webgl.copy.frag.glsl' */\nvar copyFrag = \"varying vec2 v_UV;\\n\\nuniform sampler2D u_Texture;\\n\\nvoid main() {\\n gl_FragColor = vec4(texture2D(u_Texture, v_UV));\\n}\";\n\n/* babel-plugin-inline-import '../../../services/shader-module/shaders/webgl.copy.vert.glsl' */\nvar copyVert = \"attribute vec2 a_Position;\\n\\nvarying vec2 v_UV;\\n\\nvoid main() {\\n v_UV = 0.5 * (a_Position + 1.0);\\n gl_Position = vec4(a_Position, 0., 1.);\\n}\";\n\n/* babel-plugin-inline-import '../../../services/shader-module/shaders/webgpu.copy.frag.glsl' */\nvar copyFragWebGPU = \"layout(set = 0, binding = 0) uniform sampler u_TextureSampler;\\nlayout(set = 0, binding = 1) uniform texture2D u_Texture;\\n\\nlayout(location = 0) in vec2 v_UV;\\nlayout(location = 0) out vec4 outColor;\\n\\nvoid main() {\\n outColor = texture(sampler2D(u_Texture, u_TextureSampler), v_UV);\\n}\";\n\n/* babel-plugin-inline-import '../../../services/shader-module/shaders/webgpu.copy.vert.glsl' */\nvar copyVertWebGPU = \"layout(location = 0) in vec2 a_Position;\\nlayout(location = 0) out vec2 v_UV;\\n\\nvoid main() {\\n v_UV = 0.5 * (a_Position + 1.0);\\n gl_Position = vec4(a_Position, 0., 1.);\\n}\";\n\n\nvar CopyPass = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_7__[\"IDENTIFIER\"].RenderEngine), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_7__[\"IDENTIFIER\"].ResourcePool), _dec(_class = (_class2 = (_temp = _class3 = function CopyPass() {\n var _this = this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, CopyPass);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"engine\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"resourcePool\", _descriptor2, this);\n\n this.model = void 0;\n\n this.setup = function (fg, passNode, pass) {\n var renderPass = fg.getPass(_RenderPass__WEBPACK_IMPORTED_MODULE_9__[\"RenderPass\"].IDENTIFIER);\n\n if (renderPass) {\n var output = fg.createRenderTarget(passNode, 'render to screen', {\n width: 1,\n height: 1\n });\n pass.data = {\n input: passNode.read(renderPass.data.output),\n output: passNode.write(fg, output)\n };\n }\n };\n\n this.execute = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(fg, pass) {\n var _this$engine, createModel, createAttribute, createBuffer, model, resourceNode, framebuffer;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _this$engine = _this.engine, createModel = _this$engine.createModel, createAttribute = _this$engine.createAttribute, createBuffer = _this$engine.createBuffer;\n\n if (_this.model) {\n _context.next = 6;\n break;\n }\n\n _context.next = 4;\n return createModel({\n vs: _this.engine.supportWebGPU ? copyVertWebGPU : copyVert,\n fs: _this.engine.supportWebGPU ? copyFragWebGPU : copyFrag,\n attributes: {\n // rendering a fullscreen triangle instead of quad\n // @see https://www.saschawillems.de/blog/2016/08/13/vulkan-tutorial-on-rendering-a-fullscreen-quad-without-buffers/\n a_Position: createAttribute({\n buffer: createBuffer({\n data: [-4, -4, 4, -4, 0, 4],\n type: _gl__WEBPACK_IMPORTED_MODULE_8__[\"gl\"].FLOAT\n }),\n size: 2,\n arrayStride: 2 * 4,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 0,\n offset: 0,\n format: 'float2'\n }]\n })\n },\n uniforms: {\n // @ts-ignore\n u_Texture: null\n },\n depth: {\n enable: false\n },\n count: 3,\n blend: {\n // copy pass 需要混合\n // enable: this.getName() === 'copy',\n enable: true\n }\n });\n\n case 4:\n model = _context.sent;\n _this.model = model;\n\n case 6:\n // 实例化资源\n resourceNode = fg.getResourceNode(pass.data.input);\n framebuffer = _this.resourcePool.getOrCreateResource(resourceNode.resource);\n\n _this.engine.useFramebuffer(null, function () {\n _this.engine.clear({\n framebuffer: null,\n color: [0, 0, 0, 0],\n depth: 1,\n stencil: 0\n });\n\n _this.model.draw({\n uniforms: {\n u_Texture: framebuffer // u_ViewportSize: [width, height],\n\n }\n });\n });\n\n case 9:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }();\n\n this.tearDown = function () {\n _this.model = undefined;\n };\n}, _class3.IDENTIFIER = 'Copy Pass', _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_4___default()(_class2.prototype, \"engine\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_4___default()(_class2.prototype, \"resourcePool\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=CopyPass.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL3Bhc3Nlcy9Db3B5UGFzcy5qcz80NmQ2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZEO0FBQ1c7QUFDa0I7QUFDdEI7QUFDb0I7QUFDQTs7QUFFeEY7O0FBRStDO0FBQ0U7O0FBRWpEO0FBQ0Esa0NBQWtDLGdDQUFnQyxpQkFBaUIsb0RBQW9ELEdBQUc7O0FBRTFJO0FBQ0EsMENBQTBDLHNCQUFzQixpQkFBaUIsb0NBQW9DLDJDQUEyQyxHQUFHOztBQUVuSztBQUNBLG9GQUFvRiwyREFBMkQsc0NBQXNDLHlDQUF5QyxpQkFBaUIscUVBQXFFLEdBQUc7O0FBRXZUO0FBQ0EsOERBQThELHFDQUFxQyxpQkFBaUIsb0NBQW9DLDJDQUEyQyxHQUFHO0FBQzNLO0FBQ2U7QUFDbkMsdUJBQXVCLDREQUFVLFlBQVksd0RBQU0sQ0FBQyxzREFBVSx3QkFBd0Isd0RBQU0sQ0FBQyxzREFBVTtBQUM5Rzs7QUFFQSxFQUFFLDRFQUFlOztBQUVqQixFQUFFLHVGQUEwQjs7QUFFNUIsRUFBRSx1RkFBMEI7O0FBRTVCOztBQUVBO0FBQ0EsZ0NBQWdDLHNEQUFVOztBQUUxQztBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxlQUFlLDhFQUFpQixlQUFlLGlFQUFtQjtBQUNsRTs7QUFFQSxhQUFhLGlFQUFtQjtBQUNoQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixzQ0FBRTtBQUM5QixxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckIsbUJBQW1CO0FBQ25CLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlOztBQUVmO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7O0FBRWpCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQjtBQUNqQixlQUFlOztBQUVmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLENBQUMsMkRBQTJELHNGQUF5QjtBQUNyRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvcmVuZGVyZXIvcGFzc2VzL0NvcHlQYXNzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSBcIkBiYWJlbC9ydW50aW1lL3JlZ2VuZXJhdG9yXCI7XG5pbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplcldhcm5pbmdIZWxwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyXCI7XG5cbnZhciBfZGVjLCBfZGVjMiwgX2RlYzMsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9kZXNjcmlwdG9yMiwgX2NsYXNzMywgX3RlbXA7XG5cbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5pbXBvcnQgeyBJREVOVElGSUVSIH0gZnJvbSAnLi4vLi4vLi4vaWRlbnRpZmllcic7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuLi8uLi8uLi9zZXJ2aWNlcy9zaGFkZXItbW9kdWxlL3NoYWRlcnMvd2ViZ2wuY29weS5mcmFnLmdsc2wnICovXG52YXIgY29weUZyYWcgPSBcInZhcnlpbmcgdmVjMiB2X1VWO1xcblxcbnVuaWZvcm0gc2FtcGxlcjJEIHVfVGV4dHVyZTtcXG5cXG52b2lkIG1haW4oKSB7XFxuICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHRleHR1cmUyRCh1X1RleHR1cmUsIHZfVVYpKTtcXG59XCI7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuLi8uLi8uLi9zZXJ2aWNlcy9zaGFkZXItbW9kdWxlL3NoYWRlcnMvd2ViZ2wuY29weS52ZXJ0Lmdsc2wnICovXG52YXIgY29weVZlcnQgPSBcImF0dHJpYnV0ZSB2ZWMyIGFfUG9zaXRpb247XFxuXFxudmFyeWluZyB2ZWMyIHZfVVY7XFxuXFxudm9pZCBtYWluKCkge1xcbiAgdl9VViA9IDAuNSAqIChhX1Bvc2l0aW9uICsgMS4wKTtcXG4gIGdsX1Bvc2l0aW9uID0gdmVjNChhX1Bvc2l0aW9uLCAwLiwgMS4pO1xcbn1cIjtcblxuLyogYmFiZWwtcGx1Z2luLWlubGluZS1pbXBvcnQgJy4uLy4uLy4uL3NlcnZpY2VzL3NoYWRlci1tb2R1bGUvc2hhZGVycy93ZWJncHUuY29weS5mcmFnLmdsc2wnICovXG52YXIgY29weUZyYWdXZWJHUFUgPSBcImxheW91dChzZXQgPSAwLCBiaW5kaW5nID0gMCkgdW5pZm9ybSBzYW1wbGVyIHVfVGV4dHVyZVNhbXBsZXI7XFxubGF5b3V0KHNldCA9IDAsIGJpbmRpbmcgPSAxKSB1bmlmb3JtIHRleHR1cmUyRCB1X1RleHR1cmU7XFxuXFxubGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gdmVjMiB2X1VWO1xcbmxheW91dChsb2NhdGlvbiA9IDApIG91dCB2ZWM0IG91dENvbG9yO1xcblxcbnZvaWQgbWFpbigpIHtcXG4gIG91dENvbG9yID0gdGV4dHVyZShzYW1wbGVyMkQodV9UZXh0dXJlLCB1X1RleHR1cmVTYW1wbGVyKSwgdl9VVik7XFxufVwiO1xuXG4vKiBiYWJlbC1wbHVnaW4taW5saW5lLWltcG9ydCAnLi4vLi4vLi4vc2VydmljZXMvc2hhZGVyLW1vZHVsZS9zaGFkZXJzL3dlYmdwdS5jb3B5LnZlcnQuZ2xzbCcgKi9cbnZhciBjb3B5VmVydFdlYkdQVSA9IFwibGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gdmVjMiBhX1Bvc2l0aW9uO1xcbmxheW91dChsb2NhdGlvbiA9IDApIG91dCB2ZWMyIHZfVVY7XFxuXFxudm9pZCBtYWluKCkge1xcbiAgdl9VViA9IDAuNSAqIChhX1Bvc2l0aW9uICsgMS4wKTtcXG4gIGdsX1Bvc2l0aW9uID0gdmVjNChhX1Bvc2l0aW9uLCAwLiwgMS4pO1xcbn1cIjtcbmltcG9ydCB7IGdsIH0gZnJvbSAnLi4vZ2wnO1xuaW1wb3J0IHsgUmVuZGVyUGFzcyB9IGZyb20gJy4vUmVuZGVyUGFzcyc7XG5leHBvcnQgdmFyIENvcHlQYXNzID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMyID0gaW5qZWN0KElERU5USUZJRVIuUmVuZGVyRW5naW5lKSwgX2RlYzMgPSBpbmplY3QoSURFTlRJRklFUi5SZXNvdXJjZVBvb2wpLCBfZGVjKF9jbGFzcyA9IChfY2xhc3MyID0gKF90ZW1wID0gX2NsYXNzMyA9IGZ1bmN0aW9uIENvcHlQYXNzKCkge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDb3B5UGFzcyk7XG5cbiAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJlbmdpbmVcIiwgX2Rlc2NyaXB0b3IsIHRoaXMpO1xuXG4gIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwicmVzb3VyY2VQb29sXCIsIF9kZXNjcmlwdG9yMiwgdGhpcyk7XG5cbiAgdGhpcy5tb2RlbCA9IHZvaWQgMDtcblxuICB0aGlzLnNldHVwID0gZnVuY3Rpb24gKGZnLCBwYXNzTm9kZSwgcGFzcykge1xuICAgIHZhciByZW5kZXJQYXNzID0gZmcuZ2V0UGFzcyhSZW5kZXJQYXNzLklERU5USUZJRVIpO1xuXG4gICAgaWYgKHJlbmRlclBhc3MpIHtcbiAgICAgIHZhciBvdXRwdXQgPSBmZy5jcmVhdGVSZW5kZXJUYXJnZXQocGFzc05vZGUsICdyZW5kZXIgdG8gc2NyZWVuJywge1xuICAgICAgICB3aWR0aDogMSxcbiAgICAgICAgaGVpZ2h0OiAxXG4gICAgICB9KTtcbiAgICAgIHBhc3MuZGF0YSA9IHtcbiAgICAgICAgaW5wdXQ6IHBhc3NOb2RlLnJlYWQocmVuZGVyUGFzcy5kYXRhLm91dHB1dCksXG4gICAgICAgIG91dHB1dDogcGFzc05vZGUud3JpdGUoZmcsIG91dHB1dClcbiAgICAgIH07XG4gICAgfVxuICB9O1xuXG4gIHRoaXMuZXhlY3V0ZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gICAgdmFyIF9yZWYgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKGZnLCBwYXNzKSB7XG4gICAgICB2YXIgX3RoaXMkZW5naW5lLCBjcmVhdGVNb2RlbCwgY3JlYXRlQXR0cmlidXRlLCBjcmVhdGVCdWZmZXIsIG1vZGVsLCByZXNvdXJjZU5vZGUsIGZyYW1lYnVmZmVyO1xuXG4gICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkge1xuICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICBfdGhpcyRlbmdpbmUgPSBfdGhpcy5lbmdpbmUsIGNyZWF0ZU1vZGVsID0gX3RoaXMkZW5naW5lLmNyZWF0ZU1vZGVsLCBjcmVhdGVBdHRyaWJ1dGUgPSBfdGhpcyRlbmdpbmUuY3JlYXRlQXR0cmlidXRlLCBjcmVhdGVCdWZmZXIgPSBfdGhpcyRlbmdpbmUuY3JlYXRlQnVmZmVyO1xuXG4gICAgICAgICAgICAgIGlmIChfdGhpcy5tb2RlbCkge1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSA2O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDQ7XG4gICAgICAgICAgICAgIHJldHVybiBjcmVhdGVNb2RlbCh7XG4gICAgICAgICAgICAgICAgdnM6IF90aGlzLmVuZ2luZS5zdXBwb3J0V2ViR1BVID8gY29weVZlcnRXZWJHUFUgOiBjb3B5VmVydCxcbiAgICAgICAgICAgICAgICBmczogX3RoaXMuZW5naW5lLnN1cHBvcnRXZWJHUFUgPyBjb3B5RnJhZ1dlYkdQVSA6IGNvcHlGcmFnLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICAgIC8vIHJlbmRlcmluZyBhIGZ1bGxzY3JlZW4gdHJpYW5nbGUgaW5zdGVhZCBvZiBxdWFkXG4gICAgICAgICAgICAgICAgICAvLyBAc2VlIGh0dHBzOi8vd3d3LnNhc2NoYXdpbGxlbXMuZGUvYmxvZy8yMDE2LzA4LzEzL3Z1bGthbi10dXRvcmlhbC1vbi1yZW5kZXJpbmctYS1mdWxsc2NyZWVuLXF1YWQtd2l0aG91dC1idWZmZXJzL1xuICAgICAgICAgICAgICAgICAgYV9Qb3NpdGlvbjogY3JlYXRlQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICAgICAgYnVmZmVyOiBjcmVhdGVCdWZmZXIoe1xuICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IFstNCwgLTQsIDQsIC00LCAwLCA0XSxcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBnbC5GTE9BVFxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgc2l6ZTogMixcbiAgICAgICAgICAgICAgICAgICAgYXJyYXlTdHJpZGU6IDIgKiA0LFxuICAgICAgICAgICAgICAgICAgICBzdGVwTW9kZTogJ3ZlcnRleCcsXG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IFt7XG4gICAgICAgICAgICAgICAgICAgICAgc2hhZGVyTG9jYXRpb246IDAsXG4gICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogJ2Zsb2F0MidcbiAgICAgICAgICAgICAgICAgICAgfV1cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB1bmlmb3Jtczoge1xuICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgdV9UZXh0dXJlOiBudWxsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBkZXB0aDoge1xuICAgICAgICAgICAgICAgICAgZW5hYmxlOiBmYWxzZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgY291bnQ6IDMsXG4gICAgICAgICAgICAgICAgYmxlbmQ6IHtcbiAgICAgICAgICAgICAgICAgIC8vIGNvcHkgcGFzcyDpnIDopoHmt7flkIhcbiAgICAgICAgICAgICAgICAgIC8vIGVuYWJsZTogdGhpcy5nZXROYW1lKCkgPT09ICdjb3B5JyxcbiAgICAgICAgICAgICAgICAgIGVuYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgbW9kZWwgPSBfY29udGV4dC5zZW50O1xuICAgICAgICAgICAgICBfdGhpcy5tb2RlbCA9IG1vZGVsO1xuXG4gICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgIC8vIOWunuS+i+WMlui1hOa6kFxuICAgICAgICAgICAgICByZXNvdXJjZU5vZGUgPSBmZy5nZXRSZXNvdXJjZU5vZGUocGFzcy5kYXRhLmlucHV0KTtcbiAgICAgICAgICAgICAgZnJhbWVidWZmZXIgPSBfdGhpcy5yZXNvdXJjZVBvb2wuZ2V0T3JDcmVhdGVSZXNvdXJjZShyZXNvdXJjZU5vZGUucmVzb3VyY2UpO1xuXG4gICAgICAgICAgICAgIF90aGlzLmVuZ2luZS51c2VGcmFtZWJ1ZmZlcihudWxsLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuZW5naW5lLmNsZWFyKHtcbiAgICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyOiBudWxsLFxuICAgICAgICAgICAgICAgICAgY29sb3I6IFswLCAwLCAwLCAwXSxcbiAgICAgICAgICAgICAgICAgIGRlcHRoOiAxLFxuICAgICAgICAgICAgICAgICAgc3RlbmNpbDogMFxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgX3RoaXMubW9kZWwuZHJhdyh7XG4gICAgICAgICAgICAgICAgICB1bmlmb3Jtczoge1xuICAgICAgICAgICAgICAgICAgICB1X1RleHR1cmU6IGZyYW1lYnVmZmVyIC8vIHVfVmlld3BvcnRTaXplOiBbd2lkdGgsIGhlaWdodF0sXG5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNhc2UgOTpcbiAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sIF9jYWxsZWUpO1xuICAgIH0pKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAoX3gsIF94Mikge1xuICAgICAgcmV0dXJuIF9yZWYuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9O1xuICB9KCk7XG5cbiAgdGhpcy50ZWFyRG93biA9IGZ1bmN0aW9uICgpIHtcbiAgICBfdGhpcy5tb2RlbCA9IHVuZGVmaW5lZDtcbiAgfTtcbn0sIF9jbGFzczMuSURFTlRJRklFUiA9ICdDb3B5IFBhc3MnLCBfdGVtcCksIChfZGVzY3JpcHRvciA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiZW5naW5lXCIsIFtfZGVjMl0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjIgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcInJlc291cmNlUG9vbFwiLCBbX2RlYzNdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q29weVBhc3MuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/passes/CopyPass.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/passes/PixelPickingPass.js":
/*!***********************************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/passes/PixelPickingPass.js ***!
\***********************************************************************************************************************/
/*! exports provided: PixelPickingPass */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PixelPickingPass\", function() { return PixelPickingPass; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__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@7.16.3@@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_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__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@7.16.3@@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@7.16.3@@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_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../identifier */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/identifier.js\");\n/* harmony import */ var _utils_math__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../utils/math */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/math.js\");\n/* harmony import */ var _RenderPass__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./RenderPass */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/passes/RenderPass.js\");\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _dec5, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _class3, _temp;\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, 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 normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n\n\n\n\nvar PickingStage = {\n NONE: 0.0,\n ENCODE: 1.0,\n HIGHLIGHT: 2.0\n};\n/**\n * color-based picking\n * @see https://threejsfundamentals.org/threejs/lessons/threejs-picking.html\n */\n\nvar PixelPickingPass = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].RenderEngine), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].ResourcePool), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].RenderPassFactory), _dec5 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].MeshComponentManager), _dec(_class = (_class2 = (_temp = _class3 = /*#__PURE__*/function () {\n function PixelPickingPass() {\n var _this = this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, PixelPickingPass);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"engine\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"resourcePool\", _descriptor2, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"renderPassFactory\", _descriptor3, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"mesh\", _descriptor4, this);\n\n this.pickingFBO = void 0;\n this.views = void 0;\n this.highlightEnabled = true;\n this.highlightColor = [255, 0, 0, 255];\n this.alreadyInRendering = false;\n\n this.setup = function (fg, passNode, pass) {\n var output = fg.createRenderTarget(passNode, 'picking fbo', {\n width: 1,\n height: 1\n });\n pass.data = {\n output: passNode.write(fg, output)\n }; // 防止被 FrameGraph 剔除\n\n passNode.hasSideEffect = true;\n };\n\n this.execute = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(fg, pass, views) {\n var _iterator, _step, _loop;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _this.views = views;\n\n if (!_this.alreadyInRendering) {\n _context.next = 3;\n break;\n }\n\n return _context.abrupt(\"return\");\n\n case 3:\n _iterator = _createForOfIteratorHelper(views);\n\n try {\n _loop = function _loop() {\n var view = _step.value;\n\n var _view$getViewport = view.getViewport(),\n width = _view$getViewport.width,\n height = _view$getViewport.height; // throttled\n\n\n _this.alreadyInRendering = true; // 实例化资源\n\n var resourceNode = fg.getResourceNode(pass.data.output);\n _this.pickingFBO = _this.resourcePool.getOrCreateResource(resourceNode.resource); // TODO: only draw 1x1 quad, with offset camera\n\n _this.pickingFBO.resize({\n width: width,\n height: height\n });\n\n _this.engine.useFramebuffer(_this.pickingFBO, function () {\n _this.engine.clear({\n framebuffer: _this.pickingFBO,\n color: [0, 0, 0, 0],\n stencil: 0,\n depth: 1\n }); // 渲染\n\n\n var renderPass = _this.renderPassFactory(_RenderPass__WEBPACK_IMPORTED_MODULE_10__[\"RenderPass\"].IDENTIFIER); // 修改所有\n\n\n var meshes = [];\n var scene = view.getScene();\n\n var _iterator2 = _createForOfIteratorHelper(scene.getEntities()),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var meshEntity = _step2.value;\n\n var mesh = _this.mesh.getComponentByEntity(meshEntity);\n\n var material = mesh.material;\n material.setUniform('u_PickingStage', PickingStage.ENCODE);\n meshes.push(mesh);\n } // @ts-ignore\n\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n renderPass.renderView(view);\n meshes.forEach(function (mesh) {\n var material = mesh.material;\n material.setUniform('u_PickingStage', PickingStage.HIGHLIGHT);\n });\n _this.alreadyInRendering = false;\n });\n };\n\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _loop();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n case 5:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n };\n }();\n\n this.pick = function (_ref2, view) {\n var x = _ref2.x,\n y = _ref2.y;\n var _this$engine = _this.engine,\n readPixels = _this$engine.readPixels,\n useFramebuffer = _this$engine.useFramebuffer;\n\n var _view$getViewport2 = view.getViewport(),\n width = _view$getViewport2.width,\n height = _view$getViewport2.height;\n\n var xInDevicePixel = x * window.devicePixelRatio;\n var yInDevicePixel = y * window.devicePixelRatio; // const xInDevicePixel = x;\n // const yInDevicePixel = y;\n\n if (xInDevicePixel > width || xInDevicePixel < 0 || yInDevicePixel > height || yInDevicePixel < 0) {\n return;\n }\n\n var pickedColors;\n var pickedFeatureIdx;\n useFramebuffer(_this.pickingFBO, function () {\n // avoid realloc\n pickedColors = readPixels({\n x: Math.round(xInDevicePixel),\n // 视口坐标系原点在左上,而 WebGL 在左下,需要翻转 Y 轴\n y: Math.round(height - (y + 1) * window.devicePixelRatio),\n // y: Math.round(height - (y + 1)),\n width: 1,\n height: 1,\n data: new Uint8Array(1 * 1 * 4),\n framebuffer: _this.pickingFBO\n });\n\n if (pickedColors[0] !== 0 || pickedColors[1] !== 0 || pickedColors[2] !== 0) {\n pickedFeatureIdx = Object(_utils_math__WEBPACK_IMPORTED_MODULE_9__[\"decodePickingColor\"])(pickedColors);\n\n if (_this.highlightEnabled) {\n // 高亮\n _this.highlightPickedFeature(pickedColors, view);\n }\n }\n });\n return pickedFeatureIdx;\n };\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(PixelPickingPass, [{\n key: \"enableHighlight\",\n value: function enableHighlight(enabled) {\n this.highlightEnabled = enabled;\n }\n }, {\n key: \"setHighlightColor\",\n value: function setHighlightColor(color) {\n this.highlightColor = color;\n }\n }, {\n key: \"highlightPickedFeature\",\n\n /**\n * highlight 如果直接修改选中 feature 的 buffer,存在两个问题:\n * 1. 鼠标移走时无法恢复\n * 2. 无法实现高亮颜色与原始原色的 alpha 混合\n * 因此高亮还是放在 shader 中做比较好\n */\n value: function highlightPickedFeature(pickedColors, view) {\n if (pickedColors) {\n var _iterator3 = _createForOfIteratorHelper(view.getScene().getEntities()),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var meshEntity = _step3.value;\n var mesh = this.mesh.getComponentByEntity(meshEntity);\n var material = mesh.material;\n material.setUniform('u_PickingStage', PickingStage.HIGHLIGHT);\n material.setUniform('u_PickingColor', [pickedColors[0], pickedColors[1], pickedColors[2]]);\n material.setUniform('u_HighlightColor', this.highlightColor);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n }\n }]);\n\n return PixelPickingPass;\n}(), _class3.IDENTIFIER = 'PixelPicking Pass', _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"engine\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"resourcePool\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"renderPassFactory\", [_dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor4 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"mesh\", [_dec5], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=PixelPickingPass.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL3Bhc3Nlcy9QaXhlbFBpY2tpbmdQYXNzLmpzPzY5MmIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZEO0FBQ1c7QUFDa0I7QUFDdEI7QUFDTjtBQUMwQjtBQUNBOztBQUV4Rjs7QUFFQSx3REFBd0QsUUFBUSxtRUFBbUUsd0hBQXdILGdCQUFnQixXQUFXLHlCQUF5QixTQUFTLHdCQUF3Qiw0QkFBNEIsY0FBYyxTQUFTLDhCQUE4QixFQUFFLHFCQUFxQixVQUFVLEVBQUUsU0FBUyxFQUFFLDhKQUE4SixFQUFFLGtEQUFrRCxTQUFTLGtCQUFrQiwyQkFBMkIsRUFBRSxtQkFBbUIsc0JBQXNCLDhCQUE4QixhQUFhLEVBQUUsc0JBQXNCLGVBQWUsV0FBVyxFQUFFLG1CQUFtQixNQUFNLHlEQUF5RCxFQUFFLFVBQVUsdUJBQXVCLEVBQUUsRUFBRSxHQUFHOztBQUU3OUIsaURBQWlELGdCQUFnQixnRUFBZ0Usd0RBQXdELDZEQUE2RCxzREFBc0Qsa0hBQWtIOztBQUU5WixzQ0FBc0MsdURBQXVELHVDQUF1QyxTQUFTLE9BQU8sa0JBQWtCLEVBQUUsYUFBYTs7QUFFdEk7QUFDRTtBQUNRO0FBQ2Y7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPLCtCQUErQiw0REFBVSxZQUFZLHdEQUFNLENBQUMsc0RBQVUsd0JBQXdCLHdEQUFNLENBQUMsc0RBQVUsd0JBQXdCLHdEQUFNLENBQUMsc0RBQVUsNkJBQTZCLHdEQUFNLENBQUMsc0RBQVU7QUFDN007QUFDQTs7QUFFQSxJQUFJLDRFQUFlOztBQUVuQixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsUUFBUTs7QUFFUjtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUNwRTs7QUFFQSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMERBQTBEOzs7QUFHMUQsb0RBQW9EOztBQUVwRDtBQUNBLHFHQUFxRzs7QUFFckc7QUFDQTtBQUNBO0FBQ0EscUJBQXFCOztBQUVyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsRUFBRTs7O0FBR3pCLCtEQUErRCx1REFBVSxhQUFhOzs7QUFHdEY7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsNENBQTRDLGlDQUFpQztBQUM3RTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7O0FBRXpCLHVCQUF1QjtBQUN2QjtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0EscUJBQXFCO0FBQ3JCOztBQUVBLHFDQUFxQywrQkFBK0I7QUFDcEU7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx1REFBdUQ7QUFDdkQ7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBLDZCQUE2QixzRUFBa0I7O0FBRS9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhCQUE4QixpQ0FBaUM7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQyxxRUFBcUUsc0ZBQXlCO0FBQy9GO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9yZW5kZXJlci9wYXNzZXMvUGl4ZWxQaWNraW5nUGFzcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfcmVnZW5lcmF0b3JSdW50aW1lIGZyb20gXCJAYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvclwiO1xuaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9kZWMzLCBfZGVjNCwgX2RlYzUsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9kZXNjcmlwdG9yMiwgX2Rlc2NyaXB0b3IzLCBfZGVzY3JpcHRvcjQsIF9jbGFzczMsIF90ZW1wO1xuXG5mdW5jdGlvbiBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihvLCBhbGxvd0FycmF5TGlrZSkgeyB2YXIgaXQ7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcInVuZGVmaW5lZFwiIHx8IG9bU3ltYm9sLml0ZXJhdG9yXSA9PSBudWxsKSB7IGlmIChBcnJheS5pc0FycmF5KG8pIHx8IChpdCA9IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvKSkgfHwgYWxsb3dBcnJheUxpa2UgJiYgbyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHsgaWYgKGl0KSBvID0gaXQ7IHZhciBpID0gMDsgdmFyIEYgPSBmdW5jdGlvbiBGKCkge307IHJldHVybiB7IHM6IEYsIG46IGZ1bmN0aW9uIG4oKSB7IGlmIChpID49IG8ubGVuZ3RoKSByZXR1cm4geyBkb25lOiB0cnVlIH07IHJldHVybiB7IGRvbmU6IGZhbHNlLCB2YWx1ZTogb1tpKytdIH07IH0sIGU6IGZ1bmN0aW9uIGUoX2UpIHsgdGhyb3cgX2U7IH0sIGY6IEYgfTsgfSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH0gdmFyIG5vcm1hbENvbXBsZXRpb24gPSB0cnVlLCBkaWRFcnIgPSBmYWxzZSwgZXJyOyByZXR1cm4geyBzOiBmdW5jdGlvbiBzKCkgeyBpdCA9IG9bU3ltYm9sLml0ZXJhdG9yXSgpOyB9LCBuOiBmdW5jdGlvbiBuKCkgeyB2YXIgc3RlcCA9IGl0Lm5leHQoKTsgbm9ybWFsQ29tcGxldGlvbiA9IHN0ZXAuZG9uZTsgcmV0dXJuIHN0ZXA7IH0sIGU6IGZ1bmN0aW9uIGUoX2UyKSB7IGRpZEVyciA9IHRydWU7IGVyciA9IF9lMjsgfSwgZjogZnVuY3Rpb24gZigpIHsgdHJ5IHsgaWYgKCFub3JtYWxDb21wbGV0aW9uICYmIGl0LnJldHVybiAhPSBudWxsKSBpdC5yZXR1cm4oKTsgfSBmaW5hbGx5IHsgaWYgKGRpZEVycikgdGhyb3cgZXJyOyB9IH0gfTsgfVxuXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cblxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgeyBhcnIyW2ldID0gYXJyW2ldOyB9IHJldHVybiBhcnIyOyB9XG5cbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5pbXBvcnQgeyBJREVOVElGSUVSIH0gZnJvbSAnLi4vLi4vLi4vaWRlbnRpZmllcic7XG5pbXBvcnQgeyBkZWNvZGVQaWNraW5nQ29sb3IgfSBmcm9tICcuLi8uLi8uLi91dGlscy9tYXRoJztcbmltcG9ydCB7IFJlbmRlclBhc3MgfSBmcm9tICcuL1JlbmRlclBhc3MnO1xudmFyIFBpY2tpbmdTdGFnZSA9IHtcbiAgTk9ORTogMC4wLFxuICBFTkNPREU6IDEuMCxcbiAgSElHSExJR0hUOiAyLjBcbn07XG4vKipcbiAqIGNvbG9yLWJhc2VkIHBpY2tpbmdcbiAqIEBzZWUgaHR0cHM6Ly90aHJlZWpzZnVuZGFtZW50YWxzLm9yZy90aHJlZWpzL2xlc3NvbnMvdGhyZWVqcy1waWNraW5nLmh0bWxcbiAqL1xuXG5leHBvcnQgdmFyIFBpeGVsUGlja2luZ1Bhc3MgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoSURFTlRJRklFUi5SZW5kZXJFbmdpbmUpLCBfZGVjMyA9IGluamVjdChJREVOVElGSUVSLlJlc291cmNlUG9vbCksIF9kZWM0ID0gaW5qZWN0KElERU5USUZJRVIuUmVuZGVyUGFzc0ZhY3RvcnkpLCBfZGVjNSA9IGluamVjdChJREVOVElGSUVSLk1lc2hDb21wb25lbnRNYW5hZ2VyKSwgX2RlYyhfY2xhc3MgPSAoX2NsYXNzMiA9IChfdGVtcCA9IF9jbGFzczMgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBQaXhlbFBpY2tpbmdQYXNzKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUGl4ZWxQaWNraW5nUGFzcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImVuZ2luZVwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcInJlc291cmNlUG9vbFwiLCBfZGVzY3JpcHRvcjIsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJyZW5kZXJQYXNzRmFjdG9yeVwiLCBfZGVzY3JpcHRvcjMsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJtZXNoXCIsIF9kZXNjcmlwdG9yNCwgdGhpcyk7XG5cbiAgICB0aGlzLnBpY2tpbmdGQk8gPSB2b2lkIDA7XG4gICAgdGhpcy52aWV3cyA9IHZvaWQgMDtcbiAgICB0aGlzLmhpZ2hsaWdodEVuYWJsZWQgPSB0cnVlO1xuICAgIHRoaXMuaGlnaGxpZ2h0Q29sb3IgPSBbMjU1LCAwLCAwLCAyNTVdO1xuICAgIHRoaXMuYWxyZWFkeUluUmVuZGVyaW5nID0gZmFsc2U7XG5cbiAgICB0aGlzLnNldHVwID0gZnVuY3Rpb24gKGZnLCBwYXNzTm9kZSwgcGFzcykge1xuICAgICAgdmFyIG91dHB1dCA9IGZnLmNyZWF0ZVJlbmRlclRhcmdldChwYXNzTm9kZSwgJ3BpY2tpbmcgZmJvJywge1xuICAgICAgICB3aWR0aDogMSxcbiAgICAgICAgaGVpZ2h0OiAxXG4gICAgICB9KTtcbiAgICAgIHBhc3MuZGF0YSA9IHtcbiAgICAgICAgb3V0cHV0OiBwYXNzTm9kZS53cml0ZShmZywgb3V0cHV0KVxuICAgICAgfTsgLy8g6Ziy5q2i6KKrIEZyYW1lR3JhcGgg5YmU6ZmkXG5cbiAgICAgIHBhc3NOb2RlLmhhc1NpZGVFZmZlY3QgPSB0cnVlO1xuICAgIH07XG5cbiAgICB0aGlzLmV4ZWN1dGUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9yZWYgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKGZnLCBwYXNzLCB2aWV3cykge1xuICAgICAgICB2YXIgX2l0ZXJhdG9yLCBfc3RlcCwgX2xvb3A7XG5cbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBfdGhpcy52aWV3cyA9IHZpZXdzO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFfdGhpcy5hbHJlYWR5SW5SZW5kZXJpbmcpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAzO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmFicnVwdChcInJldHVyblwiKTtcblxuICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIodmlld3MpO1xuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgIF9sb29wID0gZnVuY3Rpb24gX2xvb3AoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB2aWV3ID0gX3N0ZXAudmFsdWU7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIF92aWV3JGdldFZpZXdwb3J0ID0gdmlldy5nZXRWaWV3cG9ydCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBfdmlldyRnZXRWaWV3cG9ydC53aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCA9IF92aWV3JGdldFZpZXdwb3J0LmhlaWdodDsgLy8gdGhyb3R0bGVkXG5cblxuICAgICAgICAgICAgICAgICAgICBfdGhpcy5hbHJlYWR5SW5SZW5kZXJpbmcgPSB0cnVlOyAvLyDlrp7kvovljJbotYTmupBcblxuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzb3VyY2VOb2RlID0gZmcuZ2V0UmVzb3VyY2VOb2RlKHBhc3MuZGF0YS5vdXRwdXQpO1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5waWNraW5nRkJPID0gX3RoaXMucmVzb3VyY2VQb29sLmdldE9yQ3JlYXRlUmVzb3VyY2UocmVzb3VyY2VOb2RlLnJlc291cmNlKTsgLy8gVE9ETzogb25seSBkcmF3IDF4MSBxdWFkLCB3aXRoIG9mZnNldCBjYW1lcmFcblxuICAgICAgICAgICAgICAgICAgICBfdGhpcy5waWNraW5nRkJPLnJlc2l6ZSh7XG4gICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIF90aGlzLmVuZ2luZS51c2VGcmFtZWJ1ZmZlcihfdGhpcy5waWNraW5nRkJPLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgX3RoaXMuZW5naW5lLmNsZWFyKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyOiBfdGhpcy5waWNraW5nRkJPLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFswLCAwLCAwLCAwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ZW5jaWw6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXB0aDogMVxuICAgICAgICAgICAgICAgICAgICAgIH0pOyAvLyDmuLLmn5NcblxuXG4gICAgICAgICAgICAgICAgICAgICAgdmFyIHJlbmRlclBhc3MgPSBfdGhpcy5yZW5kZXJQYXNzRmFjdG9yeShSZW5kZXJQYXNzLklERU5USUZJRVIpOyAvLyDkv67mlLnmiYDmnIlcblxuXG4gICAgICAgICAgICAgICAgICAgICAgdmFyIG1lc2hlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgIHZhciBzY2VuZSA9IHZpZXcuZ2V0U2NlbmUoKTtcblxuICAgICAgICAgICAgICAgICAgICAgIHZhciBfaXRlcmF0b3IyID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIoc2NlbmUuZ2V0RW50aXRpZXMoKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9zdGVwMjtcblxuICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKF9pdGVyYXRvcjIucygpOyAhKF9zdGVwMiA9IF9pdGVyYXRvcjIubigpKS5kb25lOykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWVzaEVudGl0eSA9IF9zdGVwMi52YWx1ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWVzaCA9IF90aGlzLm1lc2guZ2V0Q29tcG9uZW50QnlFbnRpdHkobWVzaEVudGl0eSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGVyaWFsID0gbWVzaC5tYXRlcmlhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0ZXJpYWwuc2V0VW5pZm9ybSgndV9QaWNraW5nU3RhZ2UnLCBQaWNraW5nU3RhZ2UuRU5DT0RFKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzaGVzLnB1c2gobWVzaCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IC8vIEB0cy1pZ25vcmVcblxuICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgX2l0ZXJhdG9yMi5lKGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9pdGVyYXRvcjIuZigpO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclBhc3MucmVuZGVyVmlldyh2aWV3KTtcbiAgICAgICAgICAgICAgICAgICAgICBtZXNoZXMuZm9yRWFjaChmdW5jdGlvbiAobWVzaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGVyaWFsID0gbWVzaC5tYXRlcmlhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGVyaWFsLnNldFVuaWZvcm0oJ3VfUGlja2luZ1N0YWdlJywgUGlja2luZ1N0YWdlLkhJR0hMSUdIVCk7XG4gICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgX3RoaXMuYWxyZWFkeUluUmVuZGVyaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgZm9yIChfaXRlcmF0b3IucygpOyAhKF9zdGVwID0gX2l0ZXJhdG9yLm4oKSkuZG9uZTspIHtcbiAgICAgICAgICAgICAgICAgICAgX2xvb3AoKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgIF9pdGVyYXRvci5lKGVycik7XG4gICAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgIF9pdGVyYXRvci5mKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlKTtcbiAgICAgIH0pKTtcblxuICAgICAgcmV0dXJuIGZ1bmN0aW9uIChfeCwgX3gyLCBfeDMpIHtcbiAgICAgICAgcmV0dXJuIF9yZWYuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgfSgpO1xuXG4gICAgdGhpcy5waWNrID0gZnVuY3Rpb24gKF9yZWYyLCB2aWV3KSB7XG4gICAgICB2YXIgeCA9IF9yZWYyLngsXG4gICAgICAgICAgeSA9IF9yZWYyLnk7XG4gICAgICB2YXIgX3RoaXMkZW5naW5lID0gX3RoaXMuZW5naW5lLFxuICAgICAgICAgIHJlYWRQaXhlbHMgPSBfdGhpcyRlbmdpbmUucmVhZFBpeGVscyxcbiAgICAgICAgICB1c2VGcmFtZWJ1ZmZlciA9IF90aGlzJGVuZ2luZS51c2VGcmFtZWJ1ZmZlcjtcblxuICAgICAgdmFyIF92aWV3JGdldFZpZXdwb3J0MiA9IHZpZXcuZ2V0Vmlld3BvcnQoKSxcbiAgICAgICAgICB3aWR0aCA9IF92aWV3JGdldFZpZXdwb3J0Mi53aWR0aCxcbiAgICAgICAgICBoZWlnaHQgPSBfdmlldyRnZXRWaWV3cG9ydDIuaGVpZ2h0O1xuXG4gICAgICB2YXIgeEluRGV2aWNlUGl4ZWwgPSB4ICogd2luZG93LmRldmljZVBpeGVsUmF0aW87XG4gICAgICB2YXIgeUluRGV2aWNlUGl4ZWwgPSB5ICogd2luZG93LmRldmljZVBpeGVsUmF0aW87IC8vIGNvbnN0IHhJbkRldmljZVBpeGVsID0geDtcbiAgICAgIC8vIGNvbnN0IHlJbkRldmljZVBpeGVsID0geTtcblxuICAgICAgaWYgKHhJbkRldmljZVBpeGVsID4gd2lkdGggfHwgeEluRGV2aWNlUGl4ZWwgPCAwIHx8IHlJbkRldmljZVBpeGVsID4gaGVpZ2h0IHx8IHlJbkRldmljZVBpeGVsIDwgMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBwaWNrZWRDb2xvcnM7XG4gICAgICB2YXIgcGlja2VkRmVhdHVyZUlkeDtcbiAgICAgIHVzZUZyYW1lYnVmZmVyKF90aGlzLnBpY2tpbmdGQk8sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gYXZvaWQgcmVhbGxvY1xuICAgICAgICBwaWNrZWRDb2xvcnMgPSByZWFkUGl4ZWxzKHtcbiAgICAgICAgICB4OiBNYXRoLnJvdW5kKHhJbkRldmljZVBpeGVsKSxcbiAgICAgICAgICAvLyDop4blj6PlnZDmoIfns7vljp/ngrnlnKjlt6bkuIrvvIzogIwgV2ViR0wg5Zyo5bem5LiL77yM6ZyA6KaB57+76L2sIFkg6L20XG4gICAgICAgICAgeTogTWF0aC5yb3VuZChoZWlnaHQgLSAoeSArIDEpICogd2luZG93LmRldmljZVBpeGVsUmF0aW8pLFxuICAgICAgICAgIC8vIHk6IE1hdGgucm91bmQoaGVpZ2h0IC0gKHkgKyAxKSksXG4gICAgICAgICAgd2lkdGg6IDEsXG4gICAgICAgICAgaGVpZ2h0OiAxLFxuICAgICAgICAgIGRhdGE6IG5ldyBVaW50OEFycmF5KDEgKiAxICogNCksXG4gICAgICAgICAgZnJhbWVidWZmZXI6IF90aGlzLnBpY2tpbmdGQk9cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHBpY2tlZENvbG9yc1swXSAhPT0gMCB8fCBwaWNrZWRDb2xvcnNbMV0gIT09IDAgfHwgcGlja2VkQ29sb3JzWzJdICE9PSAwKSB7XG4gICAgICAgICAgcGlja2VkRmVhdHVyZUlkeCA9IGRlY29kZVBpY2tpbmdDb2xvcihwaWNrZWRDb2xvcnMpO1xuXG4gICAgICAgICAgaWYgKF90aGlzLmhpZ2hsaWdodEVuYWJsZWQpIHtcbiAgICAgICAgICAgIC8vIOmrmOS6rlxuICAgICAgICAgICAgX3RoaXMuaGlnaGxpZ2h0UGlja2VkRmVhdHVyZShwaWNrZWRDb2xvcnMsIHZpZXcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcGlja2VkRmVhdHVyZUlkeDtcbiAgICB9O1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFBpeGVsUGlja2luZ1Bhc3MsIFt7XG4gICAga2V5OiBcImVuYWJsZUhpZ2hsaWdodFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBlbmFibGVIaWdobGlnaHQoZW5hYmxlZCkge1xuICAgICAgdGhpcy5oaWdobGlnaHRFbmFibGVkID0gZW5hYmxlZDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0SGlnaGxpZ2h0Q29sb3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0SGlnaGxpZ2h0Q29sb3IoY29sb3IpIHtcbiAgICAgIHRoaXMuaGlnaGxpZ2h0Q29sb3IgPSBjb2xvcjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaGlnaGxpZ2h0UGlja2VkRmVhdHVyZVwiLFxuXG4gICAgLyoqXG4gICAgICogaGlnaGxpZ2h0IOWmguaenOebtOaOpeS/ruaUuemAieS4rSBmZWF0dXJlIOeahCBidWZmZXLvvIzlrZjlnKjkuKTkuKrpl67popjvvJpcbiAgICAgKiAxLiDpvKDmoIfnp7votbDml7bml6Dms5XmgaLlpI1cbiAgICAgKiAyLiDml6Dms5Xlrp7njrDpq5jkuq7popzoibLkuI7ljp/lp4vljp/oibLnmoQgYWxwaGEg5re35ZCIXG4gICAgICog5Zug5q2k6auY5Lqu6L+Y5piv5pS+5ZyoIHNoYWRlciDkuK3lgZrmr5TovoPlpb1cbiAgICAgKi9cbiAgICB2YWx1ZTogZnVuY3Rpb24gaGlnaGxpZ2h0UGlja2VkRmVhdHVyZShwaWNrZWRDb2xvcnMsIHZpZXcpIHtcbiAgICAgIGlmIChwaWNrZWRDb2xvcnMpIHtcbiAgICAgICAgdmFyIF9pdGVyYXRvcjMgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcih2aWV3LmdldFNjZW5lKCkuZ2V0RW50aXRpZXMoKSksXG4gICAgICAgICAgICBfc3RlcDM7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBmb3IgKF9pdGVyYXRvcjMucygpOyAhKF9zdGVwMyA9IF9pdGVyYXRvcjMubigpKS5kb25lOykge1xuICAgICAgICAgICAgdmFyIG1lc2hFbnRpdHkgPSBfc3RlcDMudmFsdWU7XG4gICAgICAgICAgICB2YXIgbWVzaCA9IHRoaXMubWVzaC5nZXRDb21wb25lbnRCeUVudGl0eShtZXNoRW50aXR5KTtcbiAgICAgICAgICAgIHZhciBtYXRlcmlhbCA9IG1lc2gubWF0ZXJpYWw7XG4gICAgICAgICAgICBtYXRlcmlhbC5zZXRVbmlmb3JtKCd1X1BpY2tpbmdTdGFnZScsIFBpY2tpbmdTdGFnZS5ISUdITElHSFQpO1xuICAgICAgICAgICAgbWF0ZXJpYWwuc2V0VW5pZm9ybSgndV9QaWNraW5nQ29sb3InLCBbcGlja2VkQ29sb3JzWzBdLCBwaWNrZWRDb2xvcnNbMV0sIHBpY2tlZENvbG9yc1syXV0pO1xuICAgICAgICAgICAgbWF0ZXJpYWwuc2V0VW5pZm9ybSgndV9IaWdobGlnaHRDb2xvcicsIHRoaXMuaGlnaGxpZ2h0Q29sb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgX2l0ZXJhdG9yMy5lKGVycik7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgX2l0ZXJhdG9yMy5mKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUGl4ZWxQaWNraW5nUGFzcztcbn0oKSwgX2NsYXNzMy5JREVOVElGSUVSID0gJ1BpeGVsUGlja2luZyBQYXNzJywgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImVuZ2luZVwiLCBbX2RlYzJdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSwgX2Rlc2NyaXB0b3IyID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJyZXNvdXJjZVBvb2xcIiwgW19kZWMzXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMyA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwicmVuZGVyUGFzc0ZhY3RvcnlcIiwgW19kZWM0XSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yNCA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwibWVzaFwiLCBbX2RlYzVdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UGl4ZWxQaWNraW5nUGFzcy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/passes/PixelPickingPass.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/passes/RenderPass.js":
/*!*****************************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/passes/RenderPass.js ***!
\*****************************************************************************************************************/
/*! exports provided: RenderPass */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RenderPass\", function() { return RenderPass; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__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@7.16.3@@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_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__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@7.16.3@@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@7.16.3@@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_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../identifier */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/identifier.js\");\n/* harmony import */ var _gl__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../gl */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/gl.js\");\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _class3, _temp;\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, 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 normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n\n\n\n\nvar RenderPass = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].MeshComponentManager), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].GeometryComponentManager), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].MaterialComponentManager), _dec5 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].CullableComponentManager), _dec6 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].TransformComponentManager), _dec7 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].HierarchyComponentManager), _dec8 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].Systems), _dec9 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"named\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].FrameGraphSystem), _dec10 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].RenderEngine), _dec11 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].ResourcePool), _dec(_class = (_class2 = (_temp = _class3 = /*#__PURE__*/function () {\n function RenderPass() {\n var _this = this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, RenderPass);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"mesh\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"geometry\", _descriptor2, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"material\", _descriptor3, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"cullable\", _descriptor4, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"transform\", _descriptor5, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"hierarchy\", _descriptor6, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"frameGraphSystem\", _descriptor7, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"engine\", _descriptor8, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"resourcePool\", _descriptor9, this);\n\n this.modelCache = {};\n\n this.setup = function (fg, passNode, pass) {\n var output = fg.createRenderTarget(passNode, 'color buffer', {\n width: 1,\n height: 1,\n usage: _gl__WEBPACK_IMPORTED_MODULE_10__[\"gl\"].RENDER_ATTACHMENT | _gl__WEBPACK_IMPORTED_MODULE_10__[\"gl\"].SAMPLED | _gl__WEBPACK_IMPORTED_MODULE_10__[\"gl\"].COPY_SRC\n });\n pass.data = {\n output: passNode.write(fg, output)\n };\n };\n\n this.execute = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(fg, pass, views) {\n var resourceNode, framebuffer, _iterator, _step, view, canvas;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n resourceNode = fg.getResourceNode(pass.data.output);\n framebuffer = _this.resourcePool.getOrCreateResource(resourceNode.resource); // initialize model of each mesh\n\n _iterator = _createForOfIteratorHelper(views);\n _context.prev = 3;\n\n _iterator.s();\n\n case 5:\n if ((_step = _iterator.n()).done) {\n _context.next = 11;\n break;\n }\n\n view = _step.value;\n _context.next = 9;\n return _this.initView(view);\n\n case 9:\n _context.next = 5;\n break;\n\n case 11:\n _context.next = 16;\n break;\n\n case 13:\n _context.prev = 13;\n _context.t0 = _context[\"catch\"](3);\n\n _iterator.e(_context.t0);\n\n case 16:\n _context.prev = 16;\n\n _iterator.f();\n\n return _context.finish(16);\n\n case 19:\n canvas = _this.engine.getCanvas();\n framebuffer.resize({\n width: canvas.width,\n height: canvas.height\n });\n\n _this.engine.setScissor({\n enable: false\n });\n\n _this.engine.clear({\n framebuffer: framebuffer,\n color: views[0].getClearColor(),\n // TODO: use clearColor defined in view\n depth: 1\n });\n\n _this.engine.useFramebuffer(framebuffer, function () {\n var _iterator2 = _createForOfIteratorHelper(views),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var view = _step2.value;\n\n // must do rendering in a sync way\n _this.renderView(view);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n });\n\n case 24:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, null, [[3, 13, 16, 19]]);\n }));\n\n return function (_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n };\n }();\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(RenderPass, [{\n key: \"renderView\",\n value: function renderView(view) {\n var scene = view.getScene();\n var camera = view.getCamera(); // get VP matrix from camera\n\n var viewMatrix = camera.getViewTransform();\n var viewProjectionMatrix = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"mat4\"].multiply(gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"mat4\"].create(), camera.getPerspective(), viewMatrix); // TODO: use cached planes if camera was not changed\n\n camera.getFrustum().extractFromVPMatrix(viewProjectionMatrix);\n\n var _view$getViewport = view.getViewport(),\n x = _view$getViewport.x,\n y = _view$getViewport.y,\n width = _view$getViewport.width,\n height = _view$getViewport.height;\n\n this.engine.viewport({\n x: x,\n y: y,\n width: width,\n height: height\n }); // this.engine.setScissor({\n // enable: true,\n // box: { x, y, width, height },\n // });\n // this.engine.clear({\n // // framebuffer,\n // color: [1, 1, 1, 1], // TODO: use clearColor defined in view\n // depth: 1,\n // });\n\n var _iterator3 = _createForOfIteratorHelper(scene.getEntities()),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var meshEntity = _step3.value;\n this.renderMesh(meshEntity, {\n camera: camera,\n view: view,\n viewMatrix: viewMatrix\n });\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n }, {\n key: \"renderMesh\",\n value: function renderMesh(meshEntity, _ref2) {\n var camera = _ref2.camera,\n view = _ref2.view,\n viewMatrix = _ref2.viewMatrix;\n var mesh = this.mesh.getComponentByEntity(meshEntity);\n\n if (!mesh || !mesh.visible) {\n return;\n } // filter meshes with frustum culling\n // if (!this.cullable.getComponentByEntity(meshEntity)?.visible) {\n // return;\n // }\n\n\n var material = mesh.material;\n var geometry = mesh.geometry; // geometry 在自己的 System 中完成脏检查后的更新\n\n if (!geometry || geometry.dirty || !material) {\n return;\n } // get model matrix from mesh\n\n\n var transform = this.transform.getComponentByEntity(meshEntity);\n var modelViewMatrix = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"mat4\"].multiply(gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"mat4\"].create(), viewMatrix, transform.worldTransform);\n\n var _view$getViewport2 = view.getViewport(),\n width = _view$getViewport2.width,\n height = _view$getViewport2.height; // set MVP matrix, other builtin uniforms @see https://threejs.org/docs/#api/en/renderers/webgl/WebGLProgram\n\n\n material.setUniform({\n projectionMatrix: camera.getPerspective(),\n modelViewMatrix: modelViewMatrix,\n modelMatrix: transform.worldTransform,\n viewMatrix: viewMatrix,\n cameraPosition: camera.getPosition(),\n u_viewport: [width, height]\n });\n\n if (mesh.model) {\n mesh.model.draw({\n uniforms: material.uniforms.reduce(function (cur, prev) {\n cur[prev.name] = prev.data;\n return cur;\n }, {})\n });\n material.uniforms.forEach(function (u) {\n u.dirty = false;\n });\n material.dirty = false;\n }\n }\n }, {\n key: \"initMesh\",\n value: function () {\n var _initMesh = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(meshEntity, view) {\n var mesh, material, geometry, modelCacheKey, _this$engine, createModel, createAttribute, modelInitializationOptions;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n mesh = this.mesh.getComponentByEntity(meshEntity);\n\n if (mesh) {\n _context2.next = 3;\n break;\n }\n\n return _context2.abrupt(\"return\");\n\n case 3:\n material = mesh.material;\n geometry = mesh.geometry;\n\n if (!(!geometry || geometry.dirty || !material)) {\n _context2.next = 7;\n break;\n }\n\n return _context2.abrupt(\"return\");\n\n case 7:\n if (mesh.model) {\n _context2.next = 24;\n break;\n }\n\n modelCacheKey = \"m-\".concat(material.entity, \"-g-\").concat(geometry.entity);\n\n if (!this.modelCache[modelCacheKey]) {\n _context2.next = 12;\n break;\n }\n\n mesh.model = this.modelCache[modelCacheKey];\n return _context2.abrupt(\"return\");\n\n case 12:\n material.setUniform({\n projectionMatrix: 1,\n modelViewMatrix: 1,\n modelMatrix: 1,\n viewMatrix: 1,\n cameraPosition: 1,\n u_viewport: 1\n });\n _this$engine = this.engine, createModel = _this$engine.createModel, createAttribute = _this$engine.createAttribute;\n modelInitializationOptions = {\n vs: material.vertexShaderGLSL,\n fs: material.fragmentShaderGLSL,\n defines: material.defines,\n attributes: geometry.attributes.reduce(function (cur, prev) {\n if (prev.data && prev.buffer) {\n cur[prev.name] = createAttribute({\n buffer: prev.buffer,\n attributes: prev.attributes,\n arrayStride: prev.arrayStride,\n stepMode: prev.stepMode,\n divisor: prev.stepMode === 'vertex' ? 0 : 1\n });\n }\n\n return cur;\n }, {}),\n uniforms: material.uniforms.reduce(function (cur, prev) {\n cur[prev.name] = prev.data;\n return cur;\n }, {}),\n scissor: {\n enable: true,\n // @ts-ignore\n box: function box() {\n return view.getViewport();\n }\n }\n };\n\n if (material.cull) {\n modelInitializationOptions.cull = material.cull;\n }\n\n if (material.depth) {\n modelInitializationOptions.depth = material.depth;\n }\n\n if (material.blend) {\n modelInitializationOptions.blend = material.blend;\n }\n\n if (geometry.indicesBuffer) {\n modelInitializationOptions.elements = geometry.indicesBuffer;\n }\n\n if (geometry.maxInstancedCount) {\n modelInitializationOptions.instances = geometry.maxInstancedCount;\n modelInitializationOptions.count = geometry.vertexCount || 3;\n }\n\n _context2.next = 22;\n return createModel(modelInitializationOptions);\n\n case 22:\n mesh.model = _context2.sent;\n this.modelCache[modelCacheKey] = mesh.model;\n\n case 24:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function initMesh(_x4, _x5) {\n return _initMesh.apply(this, arguments);\n }\n\n return initMesh;\n }()\n }, {\n key: \"initView\",\n value: function () {\n var _initView = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(view) {\n var scene, _iterator4, _step4, meshEntity;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n scene = view.getScene();\n _iterator4 = _createForOfIteratorHelper(scene.getEntities());\n _context3.prev = 2;\n\n _iterator4.s();\n\n case 4:\n if ((_step4 = _iterator4.n()).done) {\n _context3.next = 10;\n break;\n }\n\n meshEntity = _step4.value;\n _context3.next = 8;\n return this.initMesh(meshEntity, view);\n\n case 8:\n _context3.next = 4;\n break;\n\n case 10:\n _context3.next = 15;\n break;\n\n case 12:\n _context3.prev = 12;\n _context3.t0 = _context3[\"catch\"](2);\n\n _iterator4.e(_context3.t0);\n\n case 15:\n _context3.prev = 15;\n\n _iterator4.f();\n\n return _context3.finish(15);\n\n case 18:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this, [[2, 12, 15, 18]]);\n }));\n\n function initView(_x6) {\n return _initView.apply(this, arguments);\n }\n\n return initView;\n }()\n }]);\n\n return RenderPass;\n}(), _class3.IDENTIFIER = 'Render Pass', _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"mesh\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"geometry\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"material\", [_dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor4 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"cullable\", [_dec5], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor5 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"transform\", [_dec6], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor6 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"hierarchy\", [_dec7], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor7 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"frameGraphSystem\", [_dec8, _dec9], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor8 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"engine\", [_dec10], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor9 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"resourcePool\", [_dec11], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=RenderPass.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3JlbmRlcmVyL3Bhc3Nlcy9SZW5kZXJQYXNzLmpzPzJiODYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZEO0FBQ1c7QUFDa0I7QUFDdEI7QUFDTjtBQUMwQjtBQUNBOztBQUV4Rjs7QUFFQSx3REFBd0QsUUFBUSxtRUFBbUUsd0hBQXdILGdCQUFnQixXQUFXLHlCQUF5QixTQUFTLHdCQUF3Qiw0QkFBNEIsY0FBYyxTQUFTLDhCQUE4QixFQUFFLHFCQUFxQixVQUFVLEVBQUUsU0FBUyxFQUFFLDhKQUE4SixFQUFFLGtEQUFrRCxTQUFTLGtCQUFrQiwyQkFBMkIsRUFBRSxtQkFBbUIsc0JBQXNCLDhCQUE4QixhQUFhLEVBQUUsc0JBQXNCLGVBQWUsV0FBVyxFQUFFLG1CQUFtQixNQUFNLHlEQUF5RCxFQUFFLFVBQVUsdUJBQXVCLEVBQUUsRUFBRSxHQUFHOztBQUU3OUIsaURBQWlELGdCQUFnQixnRUFBZ0Usd0RBQXdELDZEQUE2RCxzREFBc0Qsa0hBQWtIOztBQUU5WixzQ0FBc0MsdURBQXVELHVDQUF1QyxTQUFTLE9BQU8sa0JBQWtCLEVBQUUsYUFBYTs7QUFFcEo7QUFDcUI7QUFDTDtBQUN0QjtBQUNwQix5QkFBeUIsNERBQVUsWUFBWSx3REFBTSxDQUFDLHNEQUFVLGdDQUFnQyx3REFBTSxDQUFDLHNEQUFVLG9DQUFvQyx3REFBTSxDQUFDLHNEQUFVLG9DQUFvQyx3REFBTSxDQUFDLHNEQUFVLG9DQUFvQyx3REFBTSxDQUFDLHNEQUFVLHFDQUFxQyx3REFBTSxDQUFDLHNEQUFVLHFDQUFxQyx3REFBTSxDQUFDLHNEQUFVLG1CQUFtQix1REFBSyxDQUFDLHNEQUFVLDZCQUE2Qix3REFBTSxDQUFDLHNEQUFVLHlCQUF5Qix3REFBTSxDQUFDLHNEQUFVO0FBQzlmO0FBQ0E7O0FBRUEsSUFBSSw0RUFBZTs7QUFFbkIsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjs7QUFFOUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHVDQUFFLHFCQUFxQix1Q0FBRSxXQUFXLHVDQUFFO0FBQ3JELE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQiw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDcEU7O0FBRUEsZUFBZSxpRUFBbUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0RkFBNEY7O0FBRTVGO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx3Q0FBd0MsaUNBQWlDO0FBQ3pFOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0M7O0FBRXBDO0FBQ0EsaUNBQWlDLDhDQUFJLFVBQVUsOENBQUksZ0RBQWdEOztBQUVuRzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7QUFDVDtBQUNBLGlCQUFpQixzQkFBc0I7QUFDdkMsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTs7QUFFVjtBQUNBOztBQUVBO0FBQ0EsNEJBQTRCLGlDQUFpQztBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7OztBQUdBO0FBQ0EsbUNBQW1DOztBQUVuQztBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQSw0QkFBNEIsOENBQUksVUFBVSw4Q0FBSTs7QUFFOUM7QUFDQTtBQUNBLDZDQUE2Qzs7O0FBRzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxJQUFJO0FBQ2YsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxzQkFBc0IsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3pFOztBQUVBLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2Qjs7QUFFQTtBQUNBLG1CQUFtQixJQUFJO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixJQUFJO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQSxzQkFBc0IsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3pFOztBQUVBLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBLENBQUMsK0RBQStELHNGQUF5QjtBQUN6RjtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvcmVuZGVyZXIvcGFzc2VzL1JlbmRlclBhc3MuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX3JlZ2VuZXJhdG9yUnVudGltZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3JcIjtcbmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yXCI7XG5pbXBvcnQgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yXCI7XG5pbXBvcnQgX2luaXRpYWxpemVyV2FybmluZ0hlbHBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplcldhcm5pbmdIZWxwZXJcIjtcblxudmFyIF9kZWMsIF9kZWMyLCBfZGVjMywgX2RlYzQsIF9kZWM1LCBfZGVjNiwgX2RlYzcsIF9kZWM4LCBfZGVjOSwgX2RlYzEwLCBfZGVjMTEsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9kZXNjcmlwdG9yMiwgX2Rlc2NyaXB0b3IzLCBfZGVzY3JpcHRvcjQsIF9kZXNjcmlwdG9yNSwgX2Rlc2NyaXB0b3I2LCBfZGVzY3JpcHRvcjcsIF9kZXNjcmlwdG9yOCwgX2Rlc2NyaXB0b3I5LCBfY2xhc3MzLCBfdGVtcDtcblxuZnVuY3Rpb24gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIobywgYWxsb3dBcnJheUxpa2UpIHsgdmFyIGl0OyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJ1bmRlZmluZWRcIiB8fCBvW1N5bWJvbC5pdGVyYXRvcl0gPT0gbnVsbCkgeyBpZiAoQXJyYXkuaXNBcnJheShvKSB8fCAoaXQgPSBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobykpIHx8IGFsbG93QXJyYXlMaWtlICYmIG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSB7IGlmIChpdCkgbyA9IGl0OyB2YXIgaSA9IDA7IHZhciBGID0gZnVuY3Rpb24gRigpIHt9OyByZXR1cm4geyBzOiBGLCBuOiBmdW5jdGlvbiBuKCkgeyBpZiAoaSA+PSBvLmxlbmd0aCkgcmV0dXJuIHsgZG9uZTogdHJ1ZSB9OyByZXR1cm4geyBkb25lOiBmYWxzZSwgdmFsdWU6IG9baSsrXSB9OyB9LCBlOiBmdW5jdGlvbiBlKF9lKSB7IHRocm93IF9lOyB9LCBmOiBGIH07IH0gdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9IHZhciBub3JtYWxDb21wbGV0aW9uID0gdHJ1ZSwgZGlkRXJyID0gZmFsc2UsIGVycjsgcmV0dXJuIHsgczogZnVuY3Rpb24gcygpIHsgaXQgPSBvW1N5bWJvbC5pdGVyYXRvcl0oKTsgfSwgbjogZnVuY3Rpb24gbigpIHsgdmFyIHN0ZXAgPSBpdC5uZXh0KCk7IG5vcm1hbENvbXBsZXRpb24gPSBzdGVwLmRvbmU7IHJldHVybiBzdGVwOyB9LCBlOiBmdW5jdGlvbiBlKF9lMikgeyBkaWRFcnIgPSB0cnVlOyBlcnIgPSBfZTI7IH0sIGY6IGZ1bmN0aW9uIGYoKSB7IHRyeSB7IGlmICghbm9ybWFsQ29tcGxldGlvbiAmJiBpdC5yZXR1cm4gIT0gbnVsbCkgaXQucmV0dXJuKCk7IH0gZmluYWxseSB7IGlmIChkaWRFcnIpIHRocm93IGVycjsgfSB9IH07IH1cblxuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikgeyBpZiAoIW8pIHJldHVybjsgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpOyBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lOyBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTsgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB9XG5cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIHsgYXJyMltpXSA9IGFycltpXTsgfSByZXR1cm4gYXJyMjsgfVxuXG5pbXBvcnQgeyBtYXQ0IH0gZnJvbSAnZ2wtbWF0cml4JztcbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSwgbmFtZWQgfSBmcm9tICdpbnZlcnNpZnknO1xuaW1wb3J0IHsgSURFTlRJRklFUiB9IGZyb20gJy4uLy4uLy4uL2lkZW50aWZpZXInO1xuaW1wb3J0IHsgZ2wgfSBmcm9tICcuLi9nbCc7XG5leHBvcnQgdmFyIFJlbmRlclBhc3MgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoSURFTlRJRklFUi5NZXNoQ29tcG9uZW50TWFuYWdlciksIF9kZWMzID0gaW5qZWN0KElERU5USUZJRVIuR2VvbWV0cnlDb21wb25lbnRNYW5hZ2VyKSwgX2RlYzQgPSBpbmplY3QoSURFTlRJRklFUi5NYXRlcmlhbENvbXBvbmVudE1hbmFnZXIpLCBfZGVjNSA9IGluamVjdChJREVOVElGSUVSLkN1bGxhYmxlQ29tcG9uZW50TWFuYWdlciksIF9kZWM2ID0gaW5qZWN0KElERU5USUZJRVIuVHJhbnNmb3JtQ29tcG9uZW50TWFuYWdlciksIF9kZWM3ID0gaW5qZWN0KElERU5USUZJRVIuSGllcmFyY2h5Q29tcG9uZW50TWFuYWdlciksIF9kZWM4ID0gaW5qZWN0KElERU5USUZJRVIuU3lzdGVtcyksIF9kZWM5ID0gbmFtZWQoSURFTlRJRklFUi5GcmFtZUdyYXBoU3lzdGVtKSwgX2RlYzEwID0gaW5qZWN0KElERU5USUZJRVIuUmVuZGVyRW5naW5lKSwgX2RlYzExID0gaW5qZWN0KElERU5USUZJRVIuUmVzb3VyY2VQb29sKSwgX2RlYyhfY2xhc3MgPSAoX2NsYXNzMiA9IChfdGVtcCA9IF9jbGFzczMgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBSZW5kZXJQYXNzKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVuZGVyUGFzcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcIm1lc2hcIiwgX2Rlc2NyaXB0b3IsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJnZW9tZXRyeVwiLCBfZGVzY3JpcHRvcjIsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJtYXRlcmlhbFwiLCBfZGVzY3JpcHRvcjMsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJjdWxsYWJsZVwiLCBfZGVzY3JpcHRvcjQsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJ0cmFuc2Zvcm1cIiwgX2Rlc2NyaXB0b3I1LCB0aGlzKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwiaGllcmFyY2h5XCIsIF9kZXNjcmlwdG9yNiwgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImZyYW1lR3JhcGhTeXN0ZW1cIiwgX2Rlc2NyaXB0b3I3LCB0aGlzKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwiZW5naW5lXCIsIF9kZXNjcmlwdG9yOCwgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcInJlc291cmNlUG9vbFwiLCBfZGVzY3JpcHRvcjksIHRoaXMpO1xuXG4gICAgdGhpcy5tb2RlbENhY2hlID0ge307XG5cbiAgICB0aGlzLnNldHVwID0gZnVuY3Rpb24gKGZnLCBwYXNzTm9kZSwgcGFzcykge1xuICAgICAgdmFyIG91dHB1dCA9IGZnLmNyZWF0ZVJlbmRlclRhcmdldChwYXNzTm9kZSwgJ2NvbG9yIGJ1ZmZlcicsIHtcbiAgICAgICAgd2lkdGg6IDEsXG4gICAgICAgIGhlaWdodDogMSxcbiAgICAgICAgdXNhZ2U6IGdsLlJFTkRFUl9BVFRBQ0hNRU5UIHwgZ2wuU0FNUExFRCB8IGdsLkNPUFlfU1JDXG4gICAgICB9KTtcbiAgICAgIHBhc3MuZGF0YSA9IHtcbiAgICAgICAgb3V0cHV0OiBwYXNzTm9kZS53cml0ZShmZywgb3V0cHV0KVxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgdGhpcy5leGVjdXRlID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfcmVmID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZShmZywgcGFzcywgdmlld3MpIHtcbiAgICAgICAgdmFyIHJlc291cmNlTm9kZSwgZnJhbWVidWZmZXIsIF9pdGVyYXRvciwgX3N0ZXAsIHZpZXcsIGNhbnZhcztcblxuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIHJlc291cmNlTm9kZSA9IGZnLmdldFJlc291cmNlTm9kZShwYXNzLmRhdGEub3V0cHV0KTtcbiAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZlciA9IF90aGlzLnJlc291cmNlUG9vbC5nZXRPckNyZWF0ZVJlc291cmNlKHJlc291cmNlTm9kZS5yZXNvdXJjZSk7IC8vIGluaXRpYWxpemUgbW9kZWwgb2YgZWFjaCBtZXNoXG5cbiAgICAgICAgICAgICAgICBfaXRlcmF0b3IgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcih2aWV3cyk7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDM7XG5cbiAgICAgICAgICAgICAgICBfaXRlcmF0b3IucygpO1xuXG4gICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICBpZiAoKF9zdGVwID0gX2l0ZXJhdG9yLm4oKSkuZG9uZSkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDExO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmlldyA9IF9zdGVwLnZhbHVlO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSA5O1xuICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5pbml0Vmlldyh2aWV3KTtcblxuICAgICAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgY2FzZSAxMTpcbiAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMTY7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgY2FzZSAxMzpcbiAgICAgICAgICAgICAgICBfY29udGV4dC5wcmV2ID0gMTM7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQudDAgPSBfY29udGV4dFtcImNhdGNoXCJdKDMpO1xuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yLmUoX2NvbnRleHQudDApO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTY6XG4gICAgICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDE2O1xuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yLmYoKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5maW5pc2goMTYpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTk6XG4gICAgICAgICAgICAgICAgY2FudmFzID0gX3RoaXMuZW5naW5lLmdldENhbnZhcygpO1xuICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyLnJlc2l6ZSh7XG4gICAgICAgICAgICAgICAgICB3aWR0aDogY2FudmFzLndpZHRoLFxuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBjYW52YXMuaGVpZ2h0XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBfdGhpcy5lbmdpbmUuc2V0U2Npc3Nvcih7XG4gICAgICAgICAgICAgICAgICBlbmFibGU6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBfdGhpcy5lbmdpbmUuY2xlYXIoe1xuICAgICAgICAgICAgICAgICAgZnJhbWVidWZmZXI6IGZyYW1lYnVmZmVyLFxuICAgICAgICAgICAgICAgICAgY29sb3I6IHZpZXdzWzBdLmdldENsZWFyQ29sb3IoKSxcbiAgICAgICAgICAgICAgICAgIC8vIFRPRE86IHVzZSBjbGVhckNvbG9yIGRlZmluZWQgaW4gdmlld1xuICAgICAgICAgICAgICAgICAgZGVwdGg6IDFcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIF90aGlzLmVuZ2luZS51c2VGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlciwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgdmFyIF9pdGVyYXRvcjIgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcih2aWV3cyksXG4gICAgICAgICAgICAgICAgICAgICAgX3N0ZXAyO1xuXG4gICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKF9pdGVyYXRvcjIucygpOyAhKF9zdGVwMiA9IF9pdGVyYXRvcjIubigpKS5kb25lOykge1xuICAgICAgICAgICAgICAgICAgICAgIHZhciB2aWV3ID0gX3N0ZXAyLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgLy8gbXVzdCBkbyByZW5kZXJpbmcgaW4gYSBzeW5jIHdheVxuICAgICAgICAgICAgICAgICAgICAgIF90aGlzLnJlbmRlclZpZXcodmlldyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICBfaXRlcmF0b3IyLmUoZXJyKTtcbiAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIF9pdGVyYXRvcjIuZigpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIGNhc2UgMjQ6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZSwgbnVsbCwgW1szLCAxMywgMTYsIDE5XV0pO1xuICAgICAgfSkpO1xuXG4gICAgICByZXR1cm4gZnVuY3Rpb24gKF94LCBfeDIsIF94Mykge1xuICAgICAgICByZXR1cm4gX3JlZi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfTtcbiAgICB9KCk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUmVuZGVyUGFzcywgW3tcbiAgICBrZXk6IFwicmVuZGVyVmlld1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJWaWV3KHZpZXcpIHtcbiAgICAgIHZhciBzY2VuZSA9IHZpZXcuZ2V0U2NlbmUoKTtcbiAgICAgIHZhciBjYW1lcmEgPSB2aWV3LmdldENhbWVyYSgpOyAvLyBnZXQgVlAgbWF0cml4IGZyb20gY2FtZXJhXG5cbiAgICAgIHZhciB2aWV3TWF0cml4ID0gY2FtZXJhLmdldFZpZXdUcmFuc2Zvcm0oKTtcbiAgICAgIHZhciB2aWV3UHJvamVjdGlvbk1hdHJpeCA9IG1hdDQubXVsdGlwbHkobWF0NC5jcmVhdGUoKSwgY2FtZXJhLmdldFBlcnNwZWN0aXZlKCksIHZpZXdNYXRyaXgpOyAvLyBUT0RPOiB1c2UgY2FjaGVkIHBsYW5lcyBpZiBjYW1lcmEgd2FzIG5vdCBjaGFuZ2VkXG5cbiAgICAgIGNhbWVyYS5nZXRGcnVzdHVtKCkuZXh0cmFjdEZyb21WUE1hdHJpeCh2aWV3UHJvamVjdGlvbk1hdHJpeCk7XG5cbiAgICAgIHZhciBfdmlldyRnZXRWaWV3cG9ydCA9IHZpZXcuZ2V0Vmlld3BvcnQoKSxcbiAgICAgICAgICB4ID0gX3ZpZXckZ2V0Vmlld3BvcnQueCxcbiAgICAgICAgICB5ID0gX3ZpZXckZ2V0Vmlld3BvcnQueSxcbiAgICAgICAgICB3aWR0aCA9IF92aWV3JGdldFZpZXdwb3J0LndpZHRoLFxuICAgICAgICAgIGhlaWdodCA9IF92aWV3JGdldFZpZXdwb3J0LmhlaWdodDtcblxuICAgICAgdGhpcy5lbmdpbmUudmlld3BvcnQoe1xuICAgICAgICB4OiB4LFxuICAgICAgICB5OiB5LFxuICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICB9KTsgLy8gdGhpcy5lbmdpbmUuc2V0U2Npc3Nvcih7XG4gICAgICAvLyAgIGVuYWJsZTogdHJ1ZSxcbiAgICAgIC8vICAgYm94OiB7IHgsIHksIHdpZHRoLCBoZWlnaHQgfSxcbiAgICAgIC8vIH0pO1xuICAgICAgLy8gdGhpcy5lbmdpbmUuY2xlYXIoe1xuICAgICAgLy8gICAvLyBmcmFtZWJ1ZmZlcixcbiAgICAgIC8vICAgY29sb3I6IFsxLCAxLCAxLCAxXSwgLy8gVE9ETzogdXNlIGNsZWFyQ29sb3IgZGVmaW5lZCBpbiB2aWV3XG4gICAgICAvLyAgIGRlcHRoOiAxLFxuICAgICAgLy8gfSk7XG5cbiAgICAgIHZhciBfaXRlcmF0b3IzID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIoc2NlbmUuZ2V0RW50aXRpZXMoKSksXG4gICAgICAgICAgX3N0ZXAzO1xuXG4gICAgICB0cnkge1xuICAgICAgICBmb3IgKF9pdGVyYXRvcjMucygpOyAhKF9zdGVwMyA9IF9pdGVyYXRvcjMubigpKS5kb25lOykge1xuICAgICAgICAgIHZhciBtZXNoRW50aXR5ID0gX3N0ZXAzLnZhbHVlO1xuICAgICAgICAgIHRoaXMucmVuZGVyTWVzaChtZXNoRW50aXR5LCB7XG4gICAgICAgICAgICBjYW1lcmE6IGNhbWVyYSxcbiAgICAgICAgICAgIHZpZXc6IHZpZXcsXG4gICAgICAgICAgICB2aWV3TWF0cml4OiB2aWV3TWF0cml4XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBfaXRlcmF0b3IzLmUoZXJyKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIF9pdGVyYXRvcjMuZigpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJNZXNoXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlck1lc2gobWVzaEVudGl0eSwgX3JlZjIpIHtcbiAgICAgIHZhciBjYW1lcmEgPSBfcmVmMi5jYW1lcmEsXG4gICAgICAgICAgdmlldyA9IF9yZWYyLnZpZXcsXG4gICAgICAgICAgdmlld01hdHJpeCA9IF9yZWYyLnZpZXdNYXRyaXg7XG4gICAgICB2YXIgbWVzaCA9IHRoaXMubWVzaC5nZXRDb21wb25lbnRCeUVudGl0eShtZXNoRW50aXR5KTtcblxuICAgICAgaWYgKCFtZXNoIHx8ICFtZXNoLnZpc2libGUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvLyBmaWx0ZXIgbWVzaGVzIHdpdGggZnJ1c3R1bSBjdWxsaW5nXG4gICAgICAvLyBpZiAoIXRoaXMuY3VsbGFibGUuZ2V0Q29tcG9uZW50QnlFbnRpdHkobWVzaEVudGl0eSk/LnZpc2libGUpIHtcbiAgICAgIC8vICAgcmV0dXJuO1xuICAgICAgLy8gfVxuXG5cbiAgICAgIHZhciBtYXRlcmlhbCA9IG1lc2gubWF0ZXJpYWw7XG4gICAgICB2YXIgZ2VvbWV0cnkgPSBtZXNoLmdlb21ldHJ5OyAvLyBnZW9tZXRyeSDlnKjoh6rlt7HnmoQgU3lzdGVtIOS4reWujOaIkOiEj+ajgOafpeWQjueahOabtOaWsFxuXG4gICAgICBpZiAoIWdlb21ldHJ5IHx8IGdlb21ldHJ5LmRpcnR5IHx8ICFtYXRlcmlhbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIGdldCBtb2RlbCBtYXRyaXggZnJvbSBtZXNoXG5cblxuICAgICAgdmFyIHRyYW5zZm9ybSA9IHRoaXMudHJhbnNmb3JtLmdldENvbXBvbmVudEJ5RW50aXR5KG1lc2hFbnRpdHkpO1xuICAgICAgdmFyIG1vZGVsVmlld01hdHJpeCA9IG1hdDQubXVsdGlwbHkobWF0NC5jcmVhdGUoKSwgdmlld01hdHJpeCwgdHJhbnNmb3JtLndvcmxkVHJhbnNmb3JtKTtcblxuICAgICAgdmFyIF92aWV3JGdldFZpZXdwb3J0MiA9IHZpZXcuZ2V0Vmlld3BvcnQoKSxcbiAgICAgICAgICB3aWR0aCA9IF92aWV3JGdldFZpZXdwb3J0Mi53aWR0aCxcbiAgICAgICAgICBoZWlnaHQgPSBfdmlldyRnZXRWaWV3cG9ydDIuaGVpZ2h0OyAvLyBzZXQgTVZQIG1hdHJpeCwgb3RoZXIgYnVpbHRpbiB1bmlmb3JtcyBAc2VlIGh0dHBzOi8vdGhyZWVqcy5vcmcvZG9jcy8jYXBpL2VuL3JlbmRlcmVycy93ZWJnbC9XZWJHTFByb2dyYW1cblxuXG4gICAgICBtYXRlcmlhbC5zZXRVbmlmb3JtKHtcbiAgICAgICAgcHJvamVjdGlvbk1hdHJpeDogY2FtZXJhLmdldFBlcnNwZWN0aXZlKCksXG4gICAgICAgIG1vZGVsVmlld01hdHJpeDogbW9kZWxWaWV3TWF0cml4LFxuICAgICAgICBtb2RlbE1hdHJpeDogdHJhbnNmb3JtLndvcmxkVHJhbnNmb3JtLFxuICAgICAgICB2aWV3TWF0cml4OiB2aWV3TWF0cml4LFxuICAgICAgICBjYW1lcmFQb3NpdGlvbjogY2FtZXJhLmdldFBvc2l0aW9uKCksXG4gICAgICAgIHVfdmlld3BvcnQ6IFt3aWR0aCwgaGVpZ2h0XVxuICAgICAgfSk7XG5cbiAgICAgIGlmIChtZXNoLm1vZGVsKSB7XG4gICAgICAgIG1lc2gubW9kZWwuZHJhdyh7XG4gICAgICAgICAgdW5pZm9ybXM6IG1hdGVyaWFsLnVuaWZvcm1zLnJlZHVjZShmdW5jdGlvbiAoY3VyLCBwcmV2KSB7XG4gICAgICAgICAgICBjdXJbcHJldi5uYW1lXSA9IHByZXYuZGF0YTtcbiAgICAgICAgICAgIHJldHVybiBjdXI7XG4gICAgICAgICAgfSwge30pXG4gICAgICAgIH0pO1xuICAgICAgICBtYXRlcmlhbC51bmlmb3Jtcy5mb3JFYWNoKGZ1bmN0aW9uICh1KSB7XG4gICAgICAgICAgdS5kaXJ0eSA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgICAgbWF0ZXJpYWwuZGlydHkgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaW5pdE1lc2hcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9pbml0TWVzaCA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUyKG1lc2hFbnRpdHksIHZpZXcpIHtcbiAgICAgICAgdmFyIG1lc2gsIG1hdGVyaWFsLCBnZW9tZXRyeSwgbW9kZWxDYWNoZUtleSwgX3RoaXMkZW5naW5lLCBjcmVhdGVNb2RlbCwgY3JlYXRlQXR0cmlidXRlLCBtb2RlbEluaXRpYWxpemF0aW9uT3B0aW9ucztcblxuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUyJChfY29udGV4dDIpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBtZXNoID0gdGhpcy5tZXNoLmdldENvbXBvbmVudEJ5RW50aXR5KG1lc2hFbnRpdHkpO1xuXG4gICAgICAgICAgICAgICAgaWYgKG1lc2gpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMztcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuYWJydXB0KFwicmV0dXJuXCIpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICBtYXRlcmlhbCA9IG1lc2gubWF0ZXJpYWw7XG4gICAgICAgICAgICAgICAgZ2VvbWV0cnkgPSBtZXNoLmdlb21ldHJ5O1xuXG4gICAgICAgICAgICAgICAgaWYgKCEoIWdlb21ldHJ5IHx8IGdlb21ldHJ5LmRpcnR5IHx8ICFtYXRlcmlhbCkpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gNztcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuYWJydXB0KFwicmV0dXJuXCIpO1xuXG4gICAgICAgICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgICAgICBpZiAobWVzaC5tb2RlbCkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAyNDtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIG1vZGVsQ2FjaGVLZXkgPSBcIm0tXCIuY29uY2F0KG1hdGVyaWFsLmVudGl0eSwgXCItZy1cIikuY29uY2F0KGdlb21ldHJ5LmVudGl0eSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMubW9kZWxDYWNoZVttb2RlbENhY2hlS2V5XSkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxMjtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIG1lc2gubW9kZWwgPSB0aGlzLm1vZGVsQ2FjaGVbbW9kZWxDYWNoZUtleV07XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5hYnJ1cHQoXCJyZXR1cm5cIik7XG5cbiAgICAgICAgICAgICAgY2FzZSAxMjpcbiAgICAgICAgICAgICAgICBtYXRlcmlhbC5zZXRVbmlmb3JtKHtcbiAgICAgICAgICAgICAgICAgIHByb2plY3Rpb25NYXRyaXg6IDEsXG4gICAgICAgICAgICAgICAgICBtb2RlbFZpZXdNYXRyaXg6IDEsXG4gICAgICAgICAgICAgICAgICBtb2RlbE1hdHJpeDogMSxcbiAgICAgICAgICAgICAgICAgIHZpZXdNYXRyaXg6IDEsXG4gICAgICAgICAgICAgICAgICBjYW1lcmFQb3NpdGlvbjogMSxcbiAgICAgICAgICAgICAgICAgIHVfdmlld3BvcnQ6IDFcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBfdGhpcyRlbmdpbmUgPSB0aGlzLmVuZ2luZSwgY3JlYXRlTW9kZWwgPSBfdGhpcyRlbmdpbmUuY3JlYXRlTW9kZWwsIGNyZWF0ZUF0dHJpYnV0ZSA9IF90aGlzJGVuZ2luZS5jcmVhdGVBdHRyaWJ1dGU7XG4gICAgICAgICAgICAgICAgbW9kZWxJbml0aWFsaXphdGlvbk9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICB2czogbWF0ZXJpYWwudmVydGV4U2hhZGVyR0xTTCxcbiAgICAgICAgICAgICAgICAgIGZzOiBtYXRlcmlhbC5mcmFnbWVudFNoYWRlckdMU0wsXG4gICAgICAgICAgICAgICAgICBkZWZpbmVzOiBtYXRlcmlhbC5kZWZpbmVzLFxuICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczogZ2VvbWV0cnkuYXR0cmlidXRlcy5yZWR1Y2UoZnVuY3Rpb24gKGN1ciwgcHJldikge1xuICAgICAgICAgICAgICAgICAgICBpZiAocHJldi5kYXRhICYmIHByZXYuYnVmZmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgY3VyW3ByZXYubmFtZV0gPSBjcmVhdGVBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyOiBwcmV2LmJ1ZmZlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHByZXYuYXR0cmlidXRlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5U3RyaWRlOiBwcmV2LmFycmF5U3RyaWRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcE1vZGU6IHByZXYuc3RlcE1vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXZpc29yOiBwcmV2LnN0ZXBNb2RlID09PSAndmVydGV4JyA/IDAgOiAxXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VyO1xuICAgICAgICAgICAgICAgICAgfSwge30pLFxuICAgICAgICAgICAgICAgICAgdW5pZm9ybXM6IG1hdGVyaWFsLnVuaWZvcm1zLnJlZHVjZShmdW5jdGlvbiAoY3VyLCBwcmV2KSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cltwcmV2Lm5hbWVdID0gcHJldi5kYXRhO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VyO1xuICAgICAgICAgICAgICAgICAgfSwge30pLFxuICAgICAgICAgICAgICAgICAgc2Npc3Nvcjoge1xuICAgICAgICAgICAgICAgICAgICBlbmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgYm94OiBmdW5jdGlvbiBib3goKSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZpZXcuZ2V0Vmlld3BvcnQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBpZiAobWF0ZXJpYWwuY3VsbCkge1xuICAgICAgICAgICAgICAgICAgbW9kZWxJbml0aWFsaXphdGlvbk9wdGlvbnMuY3VsbCA9IG1hdGVyaWFsLmN1bGw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKG1hdGVyaWFsLmRlcHRoKSB7XG4gICAgICAgICAgICAgICAgICBtb2RlbEluaXRpYWxpemF0aW9uT3B0aW9ucy5kZXB0aCA9IG1hdGVyaWFsLmRlcHRoO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChtYXRlcmlhbC5ibGVuZCkge1xuICAgICAgICAgICAgICAgICAgbW9kZWxJbml0aWFsaXphdGlvbk9wdGlvbnMuYmxlbmQgPSBtYXRlcmlhbC5ibGVuZDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoZ2VvbWV0cnkuaW5kaWNlc0J1ZmZlcikge1xuICAgICAgICAgICAgICAgICAgbW9kZWxJbml0aWFsaXphdGlvbk9wdGlvbnMuZWxlbWVudHMgPSBnZW9tZXRyeS5pbmRpY2VzQnVmZmVyO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChnZW9tZXRyeS5tYXhJbnN0YW5jZWRDb3VudCkge1xuICAgICAgICAgICAgICAgICAgbW9kZWxJbml0aWFsaXphdGlvbk9wdGlvbnMuaW5zdGFuY2VzID0gZ2VvbWV0cnkubWF4SW5zdGFuY2VkQ291bnQ7XG4gICAgICAgICAgICAgICAgICBtb2RlbEluaXRpYWxpemF0aW9uT3B0aW9ucy5jb3VudCA9IGdlb21ldHJ5LnZlcnRleENvdW50IHx8IDM7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAyMjtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTW9kZWwobW9kZWxJbml0aWFsaXphdGlvbk9wdGlvbnMpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMjI6XG4gICAgICAgICAgICAgICAgbWVzaC5tb2RlbCA9IF9jb250ZXh0Mi5zZW50O1xuICAgICAgICAgICAgICAgIHRoaXMubW9kZWxDYWNoZVttb2RlbENhY2hlS2V5XSA9IG1lc2gubW9kZWw7XG5cbiAgICAgICAgICAgICAgY2FzZSAyNDpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTIsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBpbml0TWVzaChfeDQsIF94NSkge1xuICAgICAgICByZXR1cm4gX2luaXRNZXNoLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbml0TWVzaDtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogXCJpbml0Vmlld1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2luaXRWaWV3ID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTModmlldykge1xuICAgICAgICB2YXIgc2NlbmUsIF9pdGVyYXRvcjQsIF9zdGVwNCwgbWVzaEVudGl0eTtcblxuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUzJChfY29udGV4dDMpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDMucHJldiA9IF9jb250ZXh0My5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBzY2VuZSA9IHZpZXcuZ2V0U2NlbmUoKTtcbiAgICAgICAgICAgICAgICBfaXRlcmF0b3I0ID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIoc2NlbmUuZ2V0RW50aXRpZXMoKSk7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQzLnByZXYgPSAyO1xuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yNC5zKCk7XG5cbiAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgIGlmICgoX3N0ZXA0ID0gX2l0ZXJhdG9yNC5uKCkpLmRvbmUpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gMTA7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBtZXNoRW50aXR5ID0gX3N0ZXA0LnZhbHVlO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gODtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pbml0TWVzaChtZXNoRW50aXR5LCB2aWV3KTtcblxuICAgICAgICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSA0O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSAxNTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICBjYXNlIDEyOlxuICAgICAgICAgICAgICAgIF9jb250ZXh0My5wcmV2ID0gMTI7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQzLnQwID0gX2NvbnRleHQzW1wiY2F0Y2hcIl0oMik7XG5cbiAgICAgICAgICAgICAgICBfaXRlcmF0b3I0LmUoX2NvbnRleHQzLnQwKTtcblxuICAgICAgICAgICAgICBjYXNlIDE1OlxuICAgICAgICAgICAgICAgIF9jb250ZXh0My5wcmV2ID0gMTU7XG5cbiAgICAgICAgICAgICAgICBfaXRlcmF0b3I0LmYoKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDMuZmluaXNoKDE1KTtcblxuICAgICAgICAgICAgICBjYXNlIDE4OlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlMywgdGhpcywgW1syLCAxMiwgMTUsIDE4XV0pO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBpbml0VmlldyhfeDYpIHtcbiAgICAgICAgcmV0dXJuIF9pbml0Vmlldy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5pdFZpZXc7XG4gICAgfSgpXG4gIH1dKTtcblxuICByZXR1cm4gUmVuZGVyUGFzcztcbn0oKSwgX2NsYXNzMy5JREVOVElGSUVSID0gJ1JlbmRlciBQYXNzJywgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcIm1lc2hcIiwgW19kZWMyXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMiA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiZ2VvbWV0cnlcIiwgW19kZWMzXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMyA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwibWF0ZXJpYWxcIiwgW19kZWM0XSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yNCA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiY3VsbGFibGVcIiwgW19kZWM1XSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yNSA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwidHJhbnNmb3JtXCIsIFtfZGVjNl0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjYgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImhpZXJhcmNoeVwiLCBbX2RlYzddLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSwgX2Rlc2NyaXB0b3I3ID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJmcmFtZUdyYXBoU3lzdGVtXCIsIFtfZGVjOCwgX2RlYzldLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSwgX2Rlc2NyaXB0b3I4ID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJlbmdpbmVcIiwgW19kZWMxMF0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjkgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcInJlc291cmNlUG9vbFwiLCBbX2RlYzExXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSkpLCBfY2xhc3MyKSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJlbmRlclBhc3MuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/passes/RenderPass.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/HierarchyComponent.js":
/*!********************************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/HierarchyComponent.js ***!
\********************************************************************************************************************/
/*! exports provided: HierarchyComponent */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HierarchyComponent\", function() { return HierarchyComponent; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@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_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__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@7.16.3@@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@7.16.3@@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 _ComponentManager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../ComponentManager */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/ComponentManager.js\");\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\nvar HierarchyComponent = /*#__PURE__*/function (_Component) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default()(HierarchyComponent, _Component);\n\n var _super = _createSuper(HierarchyComponent);\n\n function HierarchyComponent(data) {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, HierarchyComponent);\n\n _this = _super.call(this, data);\n _this.parentID = void 0;\n Object.assign(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1___default()(_this), data);\n return _this;\n }\n\n return HierarchyComponent;\n}(_ComponentManager__WEBPACK_IMPORTED_MODULE_5__[\"Component\"]);\n//# sourceMappingURL=HierarchyComponent.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3NjZW5lZ3JhcGgvSGllcmFyY2h5Q29tcG9uZW50LmpzPzA5NDQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDYztBQUMxQjtBQUNrQztBQUN0Qjs7QUFFcEUsZ0NBQWdDLDZEQUE2RCx5Q0FBeUMsYUFBYSw0RUFBZSxrQkFBa0IsaUNBQWlDLGlCQUFpQiw0RUFBZSxtQkFBbUIseURBQXlELEVBQUUsT0FBTyx1Q0FBdUMsRUFBRSxRQUFRLHVGQUEwQixlQUFlLEdBQUc7O0FBRXZhLHNDQUFzQyx3RUFBd0UsMENBQTBDLDhDQUE4QyxNQUFNLHdFQUF3RSxHQUFHLGFBQWEsRUFBRSxZQUFZLGNBQWMsRUFBRTs7QUFFL1E7QUFDNUM7QUFDUCxFQUFFLHNFQUFTOztBQUVYOztBQUVBO0FBQ0E7O0FBRUEsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBLGtCQUFrQixtRkFBc0I7QUFDeEM7QUFDQTs7QUFFQTtBQUNBLENBQUMsQ0FBQywyREFBUztBQUNYIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9zY2VuZWdyYXBoL0hpZXJhcmNoeUNvbXBvbmVudC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0c1wiO1xuaW1wb3J0IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm5cIjtcbmltcG9ydCBfZ2V0UHJvdG90eXBlT2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZ2V0UHJvdG90eXBlT2ZcIjtcblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICcuLi8uLi9Db21wb25lbnRNYW5hZ2VyJztcbmV4cG9ydCB2YXIgSGllcmFyY2h5Q29tcG9uZW50ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhIaWVyYXJjaHlDb21wb25lbnQsIF9Db21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoSGllcmFyY2h5Q29tcG9uZW50KTtcblxuICBmdW5jdGlvbiBIaWVyYXJjaHlDb21wb25lbnQoZGF0YSkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBIaWVyYXJjaHlDb21wb25lbnQpO1xuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBkYXRhKTtcbiAgICBfdGhpcy5wYXJlbnRJRCA9IHZvaWQgMDtcbiAgICBPYmplY3QuYXNzaWduKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBkYXRhKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICByZXR1cm4gSGllcmFyY2h5Q29tcG9uZW50O1xufShDb21wb25lbnQpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SGllcmFyY2h5Q29tcG9uZW50LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/HierarchyComponent.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/NameComponent.js":
/*!***************************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/NameComponent.js ***!
\***************************************************************************************************************/
/*! exports provided: NameComponent */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NameComponent\", function() { return NameComponent; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@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_inherits__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__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@7.16.3@@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@7.16.3@@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 _ComponentManager__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../ComponentManager */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/ComponentManager.js\");\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\nvar NameComponent = /*#__PURE__*/function (_Component) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_1___default()(NameComponent, _Component);\n\n var _super = _createSuper(NameComponent);\n\n function NameComponent(data) {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, NameComponent);\n\n _this = _super.call(this, data);\n _this.name = void 0;\n _this.name = data.name || '';\n return _this;\n }\n\n return NameComponent;\n}(_ComponentManager__WEBPACK_IMPORTED_MODULE_4__[\"Component\"]);\n//# sourceMappingURL=NameComponent.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3NjZW5lZ3JhcGgvTmFtZUNvbXBvbmVudC5qcz8zZGZjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDWjtBQUNrQztBQUN0Qjs7QUFFcEUsZ0NBQWdDLDZEQUE2RCx5Q0FBeUMsYUFBYSw0RUFBZSxrQkFBa0IsaUNBQWlDLGlCQUFpQiw0RUFBZSxtQkFBbUIseURBQXlELEVBQUUsT0FBTyx1Q0FBdUMsRUFBRSxRQUFRLHVGQUEwQixlQUFlLEdBQUc7O0FBRXZhLHNDQUFzQyx3RUFBd0UsMENBQTBDLDhDQUE4QyxNQUFNLHdFQUF3RSxHQUFHLGFBQWEsRUFBRSxZQUFZLGNBQWMsRUFBRTs7QUFFL1E7QUFDNUM7QUFDUCxFQUFFLHNFQUFTOztBQUVYOztBQUVBO0FBQ0E7O0FBRUEsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUMsQ0FBQywyREFBUztBQUNYIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9zY2VuZWdyYXBoL05hbWVDb21wb25lbnQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzXCI7XG5pbXBvcnQgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4gZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVyblwiO1xuaW1wb3J0IF9nZXRQcm90b3R5cGVPZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZlwiO1xuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJy4uLy4uL0NvbXBvbmVudE1hbmFnZXInO1xuZXhwb3J0IHZhciBOYW1lQ29tcG9uZW50ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhOYW1lQ29tcG9uZW50LCBfQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKE5hbWVDb21wb25lbnQpO1xuXG4gIGZ1bmN0aW9uIE5hbWVDb21wb25lbnQoZGF0YSkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBOYW1lQ29tcG9uZW50KTtcblxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgZGF0YSk7XG4gICAgX3RoaXMubmFtZSA9IHZvaWQgMDtcbiAgICBfdGhpcy5uYW1lID0gZGF0YS5uYW1lIHx8ICcnO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIHJldHVybiBOYW1lQ29tcG9uZW50O1xufShDb21wb25lbnQpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TmFtZUNvbXBvbmVudC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/NameComponent.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/System.js":
/*!********************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/System.js ***!
\********************************************************************************************************/
/*! exports provided: SceneGraphSystem */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SceneGraphSystem\", function() { return SceneGraphSystem; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__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@7.16.3@@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_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__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@7.16.3@@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@7.16.3@@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_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../identifier */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/identifier.js\");\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _class, _class2, _descriptor, _descriptor2, _descriptor3, _temp;\n\n\n\n\nvar SceneGraphSystem = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].HierarchyComponentManager), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].TransformComponentManager), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"inject\"])(_identifier__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].MeshComponentManager), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function SceneGraphSystem() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, SceneGraphSystem);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"hierarchy\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"transform\", _descriptor2, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"mesh\", _descriptor3, this);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(SceneGraphSystem, [{\n key: \"execute\",\n value: function () {\n var _execute = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n this.runTransformUpdateSystem();\n this.runHierarchyUpdateSystem();\n\n case 2:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function execute() {\n return _execute.apply(this, arguments);\n }\n\n return execute;\n }()\n }, {\n key: \"tearDown\",\n value: function tearDown() {\n this.hierarchy.clear();\n this.transform.clear();\n }\n }, {\n key: \"getHierarchyComponentManager\",\n value: function getHierarchyComponentManager() {\n return this.hierarchy;\n }\n }, {\n key: \"getTransformComponentManager\",\n value: function getTransformComponentManager() {\n return this.transform;\n }\n }, {\n key: \"runTransformUpdateSystem\",\n value: function runTransformUpdateSystem() {\n var _this = this;\n\n // 原版基于 JobSystem 实现\n this.transform.forEach(function (entity, transform) {\n if (transform.isDirty() || transform.isLocalDirty()) {\n _this.setMeshAABBDirty(_this.mesh.getComponentByEntity(entity));\n\n transform.updateTransform();\n }\n });\n }\n }, {\n key: \"runHierarchyUpdateSystem\",\n value: function runHierarchyUpdateSystem() {\n var _this2 = this;\n\n this.hierarchy.forEach(function (entity, parentComponent) {\n var transformChild = _this2.transform.getComponentByEntity(entity);\n\n var transformParent = _this2.transform.getComponentByEntity(parentComponent.parentID);\n\n if (transformChild !== null && transformParent !== null) {\n transformChild.updateTransformWithParent(transformParent);\n }\n });\n }\n }, {\n key: \"attach\",\n value: function attach(entity, parent, isChildAlreadyInLocalSpace) {\n if (this.hierarchy.contains(entity)) {\n this.detach(entity);\n }\n\n this.hierarchy.create(entity, {\n parentID: parent\n });\n var mesh = this.mesh.getComponentByEntity(parent); // inform parent mesh to update its aabb\n\n this.setMeshAABBDirty(mesh);\n\n if (mesh && mesh.children.indexOf(entity) === -1) {\n mesh.children.push(entity);\n }\n\n if (this.hierarchy.getCount() > 1) {\n for (var i = this.hierarchy.getCount() - 1; i > 0; --i) {\n var parentCandidateEntity = this.hierarchy.getEntity(i); // const parentCandidateComponent = this.hierarchy.getComponent(i);\n\n for (var j = 0; j < i; ++j) {\n var childCandidateEntity = this.hierarchy.getComponent(j);\n\n if (childCandidateEntity.parentID === parentCandidateEntity) {\n this.hierarchy.moveItem(i, j);\n ++i; // next outer iteration will check the same index again as parent candidate, however things were moved upwards, so it will be a different entity!\n\n break;\n }\n }\n }\n } // Re-query parent after potential MoveItem(), because it invalidates references:\n\n\n var parentcomponent = this.hierarchy.getComponentByEntity(entity);\n var transformParent = this.transform.getComponentByEntity(parent);\n\n if (transformParent === null) {\n transformParent = this.transform.create(parent);\n }\n\n var transformChild = this.transform.getComponentByEntity(entity);\n\n if (transformChild === null) {\n transformChild = this.transform.create(entity); // after transforms.Create(), transform_parent pointer could have become invalidated!\n\n transformParent = this.transform.getComponentByEntity(parent);\n }\n\n transformChild.parent = transformParent;\n\n if (!isChildAlreadyInLocalSpace && transformParent) {\n transformChild.matrixTransform(gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"mat4\"].invert(gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"mat4\"].create(), transformParent.worldTransform));\n transformChild.updateTransform();\n }\n\n if (transformParent) {\n transformChild.updateTransformWithParent(transformParent);\n }\n }\n }, {\n key: \"detach\",\n value: function detach(entity) {\n var self = this.hierarchy.getComponentByEntity(entity);\n\n if (self !== null) {\n var transform = this.transform.getComponentByEntity(entity);\n\n if (transform !== null) {\n transform.parent = null;\n transform.applyTransform();\n }\n\n this.hierarchy.removeKeepSorted(entity); // inform parent mesh to update its aabb\n\n var mesh = this.mesh.getComponentByEntity(self.parentID);\n\n if (mesh) {\n var index = mesh.children.indexOf(entity);\n mesh.children.splice(index, 1);\n }\n\n this.setMeshAABBDirty(mesh);\n }\n }\n }, {\n key: \"detachChildren\",\n value: function detachChildren(parent) {\n var mesh = this.mesh.getComponentByEntity(parent);\n\n if (mesh) {\n mesh.children = [];\n }\n\n for (var i = 0; i < this.hierarchy.getCount();) {\n var _this$hierarchy$getCo;\n\n if (((_this$hierarchy$getCo = this.hierarchy.getComponent(i)) === null || _this$hierarchy$getCo === void 0 ? void 0 : _this$hierarchy$getCo.parentID) === parent) {\n var entity = this.hierarchy.getEntity(i);\n this.detach(entity);\n } else {\n ++i;\n }\n }\n }\n }, {\n key: \"setMeshAABBDirty\",\n value: function setMeshAABBDirty(mesh) {\n if (mesh) {\n mesh.aabbDirty = true;\n }\n }\n }]);\n\n return SceneGraphSystem;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"hierarchy\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"transform\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"mesh\", [_dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=System.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3NjZW5lZ3JhcGgvU3lzdGVtLmpzPzU1ZGQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE2RDtBQUNXO0FBQ2tCO0FBQ3RCO0FBQ047QUFDMEI7QUFDQTs7QUFFeEY7O0FBRWlDO0FBQ2M7QUFDRDtBQUN2QywrQkFBK0IsNERBQVUsWUFBWSx3REFBTSxDQUFDLHNEQUFVLHFDQUFxQyx3REFBTSxDQUFDLHNEQUFVLHFDQUFxQyx3REFBTSxDQUFDLHNEQUFVO0FBQ3pMO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkIsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjtBQUM5Qjs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBLHFCQUFxQiw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDeEUsZUFBZSxpRUFBbUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1Asd0RBQXdEOztBQUV4RDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtREFBbUQsT0FBTztBQUMxRCxrRUFBa0U7O0FBRWxFLHlCQUF5QixPQUFPO0FBQ2hDOztBQUVBO0FBQ0E7QUFDQSxrQkFBa0I7O0FBRWxCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSx1REFBdUQ7O0FBRXZEO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSx1Q0FBdUMsOENBQUksUUFBUSw4Q0FBSTtBQUN2RDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGdEQUFnRDs7QUFFaEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCLCtCQUErQjtBQUNwRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsMkJBQTJCLHNGQUF5QjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL2NvbXBvbmVudHMvc2NlbmVncmFwaC9TeXN0ZW0uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX3JlZ2VuZXJhdG9yUnVudGltZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3JcIjtcbmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yXCI7XG5pbXBvcnQgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yXCI7XG5pbXBvcnQgX2luaXRpYWxpemVyV2FybmluZ0hlbHBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplcldhcm5pbmdIZWxwZXJcIjtcblxudmFyIF9kZWMsIF9kZWMyLCBfZGVjMywgX2RlYzQsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9kZXNjcmlwdG9yMiwgX2Rlc2NyaXB0b3IzLCBfdGVtcDtcblxuaW1wb3J0IHsgbWF0NCB9IGZyb20gJ2dsLW1hdHJpeCc7XG5pbXBvcnQgeyBpbmplY3QsIGluamVjdGFibGUgfSBmcm9tICdpbnZlcnNpZnknO1xuaW1wb3J0IHsgSURFTlRJRklFUiB9IGZyb20gJy4uLy4uL2lkZW50aWZpZXInO1xuZXhwb3J0IHZhciBTY2VuZUdyYXBoU3lzdGVtID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMyID0gaW5qZWN0KElERU5USUZJRVIuSGllcmFyY2h5Q29tcG9uZW50TWFuYWdlciksIF9kZWMzID0gaW5qZWN0KElERU5USUZJRVIuVHJhbnNmb3JtQ29tcG9uZW50TWFuYWdlciksIF9kZWM0ID0gaW5qZWN0KElERU5USUZJRVIuTWVzaENvbXBvbmVudE1hbmFnZXIpLCBfZGVjKF9jbGFzcyA9IChfY2xhc3MyID0gKF90ZW1wID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gU2NlbmVHcmFwaFN5c3RlbSgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU2NlbmVHcmFwaFN5c3RlbSk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImhpZXJhcmNoeVwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcInRyYW5zZm9ybVwiLCBfZGVzY3JpcHRvcjIsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJtZXNoXCIsIF9kZXNjcmlwdG9yMywgdGhpcyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoU2NlbmVHcmFwaFN5c3RlbSwgW3tcbiAgICBrZXk6IFwiZXhlY3V0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2V4ZWN1dGUgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkge1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIHRoaXMucnVuVHJhbnNmb3JtVXBkYXRlU3lzdGVtKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5ydW5IaWVyYXJjaHlVcGRhdGVTeXN0ZW0oKTtcblxuICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZSwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGV4ZWN1dGUoKSB7XG4gICAgICAgIHJldHVybiBfZXhlY3V0ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZXhlY3V0ZTtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogXCJ0ZWFyRG93blwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0ZWFyRG93bigpIHtcbiAgICAgIHRoaXMuaGllcmFyY2h5LmNsZWFyKCk7XG4gICAgICB0aGlzLnRyYW5zZm9ybS5jbGVhcigpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRIaWVyYXJjaHlDb21wb25lbnRNYW5hZ2VyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEhpZXJhcmNoeUNvbXBvbmVudE1hbmFnZXIoKSB7XG4gICAgICByZXR1cm4gdGhpcy5oaWVyYXJjaHk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFRyYW5zZm9ybUNvbXBvbmVudE1hbmFnZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VHJhbnNmb3JtQ29tcG9uZW50TWFuYWdlcigpIHtcbiAgICAgIHJldHVybiB0aGlzLnRyYW5zZm9ybTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicnVuVHJhbnNmb3JtVXBkYXRlU3lzdGVtXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJ1blRyYW5zZm9ybVVwZGF0ZVN5c3RlbSgpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIC8vIOWOn+eJiOWfuuS6jiBKb2JTeXN0ZW0g5a6e546wXG4gICAgICB0aGlzLnRyYW5zZm9ybS5mb3JFYWNoKGZ1bmN0aW9uIChlbnRpdHksIHRyYW5zZm9ybSkge1xuICAgICAgICBpZiAodHJhbnNmb3JtLmlzRGlydHkoKSB8fCB0cmFuc2Zvcm0uaXNMb2NhbERpcnR5KCkpIHtcbiAgICAgICAgICBfdGhpcy5zZXRNZXNoQUFCQkRpcnR5KF90aGlzLm1lc2guZ2V0Q29tcG9uZW50QnlFbnRpdHkoZW50aXR5KSk7XG5cbiAgICAgICAgICB0cmFuc2Zvcm0udXBkYXRlVHJhbnNmb3JtKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJydW5IaWVyYXJjaHlVcGRhdGVTeXN0ZW1cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcnVuSGllcmFyY2h5VXBkYXRlU3lzdGVtKCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHRoaXMuaGllcmFyY2h5LmZvckVhY2goZnVuY3Rpb24gKGVudGl0eSwgcGFyZW50Q29tcG9uZW50KSB7XG4gICAgICAgIHZhciB0cmFuc2Zvcm1DaGlsZCA9IF90aGlzMi50cmFuc2Zvcm0uZ2V0Q29tcG9uZW50QnlFbnRpdHkoZW50aXR5KTtcblxuICAgICAgICB2YXIgdHJhbnNmb3JtUGFyZW50ID0gX3RoaXMyLnRyYW5zZm9ybS5nZXRDb21wb25lbnRCeUVudGl0eShwYXJlbnRDb21wb25lbnQucGFyZW50SUQpO1xuXG4gICAgICAgIGlmICh0cmFuc2Zvcm1DaGlsZCAhPT0gbnVsbCAmJiB0cmFuc2Zvcm1QYXJlbnQgIT09IG51bGwpIHtcbiAgICAgICAgICB0cmFuc2Zvcm1DaGlsZC51cGRhdGVUcmFuc2Zvcm1XaXRoUGFyZW50KHRyYW5zZm9ybVBhcmVudCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJhdHRhY2hcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYXR0YWNoKGVudGl0eSwgcGFyZW50LCBpc0NoaWxkQWxyZWFkeUluTG9jYWxTcGFjZSkge1xuICAgICAgaWYgKHRoaXMuaGllcmFyY2h5LmNvbnRhaW5zKGVudGl0eSkpIHtcbiAgICAgICAgdGhpcy5kZXRhY2goZW50aXR5KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5oaWVyYXJjaHkuY3JlYXRlKGVudGl0eSwge1xuICAgICAgICBwYXJlbnRJRDogcGFyZW50XG4gICAgICB9KTtcbiAgICAgIHZhciBtZXNoID0gdGhpcy5tZXNoLmdldENvbXBvbmVudEJ5RW50aXR5KHBhcmVudCk7IC8vIGluZm9ybSBwYXJlbnQgbWVzaCB0byB1cGRhdGUgaXRzIGFhYmJcblxuICAgICAgdGhpcy5zZXRNZXNoQUFCQkRpcnR5KG1lc2gpO1xuXG4gICAgICBpZiAobWVzaCAmJiBtZXNoLmNoaWxkcmVuLmluZGV4T2YoZW50aXR5KSA9PT0gLTEpIHtcbiAgICAgICAgbWVzaC5jaGlsZHJlbi5wdXNoKGVudGl0eSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmhpZXJhcmNoeS5nZXRDb3VudCgpID4gMSkge1xuICAgICAgICBmb3IgKHZhciBpID0gdGhpcy5oaWVyYXJjaHkuZ2V0Q291bnQoKSAtIDE7IGkgPiAwOyAtLWkpIHtcbiAgICAgICAgICB2YXIgcGFyZW50Q2FuZGlkYXRlRW50aXR5ID0gdGhpcy5oaWVyYXJjaHkuZ2V0RW50aXR5KGkpOyAvLyBjb25zdCBwYXJlbnRDYW5kaWRhdGVDb21wb25lbnQgPSB0aGlzLmhpZXJhcmNoeS5nZXRDb21wb25lbnQoaSk7XG5cbiAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGk7ICsraikge1xuICAgICAgICAgICAgdmFyIGNoaWxkQ2FuZGlkYXRlRW50aXR5ID0gdGhpcy5oaWVyYXJjaHkuZ2V0Q29tcG9uZW50KGopO1xuXG4gICAgICAgICAgICBpZiAoY2hpbGRDYW5kaWRhdGVFbnRpdHkucGFyZW50SUQgPT09IHBhcmVudENhbmRpZGF0ZUVudGl0eSkge1xuICAgICAgICAgICAgICB0aGlzLmhpZXJhcmNoeS5tb3ZlSXRlbShpLCBqKTtcbiAgICAgICAgICAgICAgKytpOyAvLyBuZXh0IG91dGVyIGl0ZXJhdGlvbiB3aWxsIGNoZWNrIHRoZSBzYW1lIGluZGV4IGFnYWluIGFzIHBhcmVudCBjYW5kaWRhdGUsIGhvd2V2ZXIgdGhpbmdzIHdlcmUgbW92ZWQgdXB3YXJkcywgc28gaXQgd2lsbCBiZSBhIGRpZmZlcmVudCBlbnRpdHkhXG5cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IC8vIFJlLXF1ZXJ5IHBhcmVudCBhZnRlciBwb3RlbnRpYWwgTW92ZUl0ZW0oKSwgYmVjYXVzZSBpdCBpbnZhbGlkYXRlcyByZWZlcmVuY2VzOlxuXG5cbiAgICAgIHZhciBwYXJlbnRjb21wb25lbnQgPSB0aGlzLmhpZXJhcmNoeS5nZXRDb21wb25lbnRCeUVudGl0eShlbnRpdHkpO1xuICAgICAgdmFyIHRyYW5zZm9ybVBhcmVudCA9IHRoaXMudHJhbnNmb3JtLmdldENvbXBvbmVudEJ5RW50aXR5KHBhcmVudCk7XG5cbiAgICAgIGlmICh0cmFuc2Zvcm1QYXJlbnQgPT09IG51bGwpIHtcbiAgICAgICAgdHJhbnNmb3JtUGFyZW50ID0gdGhpcy50cmFuc2Zvcm0uY3JlYXRlKHBhcmVudCk7XG4gICAgICB9XG5cbiAgICAgIHZhciB0cmFuc2Zvcm1DaGlsZCA9IHRoaXMudHJhbnNmb3JtLmdldENvbXBvbmVudEJ5RW50aXR5KGVudGl0eSk7XG5cbiAgICAgIGlmICh0cmFuc2Zvcm1DaGlsZCA9PT0gbnVsbCkge1xuICAgICAgICB0cmFuc2Zvcm1DaGlsZCA9IHRoaXMudHJhbnNmb3JtLmNyZWF0ZShlbnRpdHkpOyAvLyBhZnRlciB0cmFuc2Zvcm1zLkNyZWF0ZSgpLCB0cmFuc2Zvcm1fcGFyZW50IHBvaW50ZXIgY291bGQgaGF2ZSBiZWNvbWUgaW52YWxpZGF0ZWQhXG5cbiAgICAgICAgdHJhbnNmb3JtUGFyZW50ID0gdGhpcy50cmFuc2Zvcm0uZ2V0Q29tcG9uZW50QnlFbnRpdHkocGFyZW50KTtcbiAgICAgIH1cblxuICAgICAgdHJhbnNmb3JtQ2hpbGQucGFyZW50ID0gdHJhbnNmb3JtUGFyZW50O1xuXG4gICAgICBpZiAoIWlzQ2hpbGRBbHJlYWR5SW5Mb2NhbFNwYWNlICYmIHRyYW5zZm9ybVBhcmVudCkge1xuICAgICAgICB0cmFuc2Zvcm1DaGlsZC5tYXRyaXhUcmFuc2Zvcm0obWF0NC5pbnZlcnQobWF0NC5jcmVhdGUoKSwgdHJhbnNmb3JtUGFyZW50LndvcmxkVHJhbnNmb3JtKSk7XG4gICAgICAgIHRyYW5zZm9ybUNoaWxkLnVwZGF0ZVRyYW5zZm9ybSgpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHJhbnNmb3JtUGFyZW50KSB7XG4gICAgICAgIHRyYW5zZm9ybUNoaWxkLnVwZGF0ZVRyYW5zZm9ybVdpdGhQYXJlbnQodHJhbnNmb3JtUGFyZW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGV0YWNoXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRldGFjaChlbnRpdHkpIHtcbiAgICAgIHZhciBzZWxmID0gdGhpcy5oaWVyYXJjaHkuZ2V0Q29tcG9uZW50QnlFbnRpdHkoZW50aXR5KTtcblxuICAgICAgaWYgKHNlbGYgIT09IG51bGwpIHtcbiAgICAgICAgdmFyIHRyYW5zZm9ybSA9IHRoaXMudHJhbnNmb3JtLmdldENvbXBvbmVudEJ5RW50aXR5KGVudGl0eSk7XG5cbiAgICAgICAgaWYgKHRyYW5zZm9ybSAhPT0gbnVsbCkge1xuICAgICAgICAgIHRyYW5zZm9ybS5wYXJlbnQgPSBudWxsO1xuICAgICAgICAgIHRyYW5zZm9ybS5hcHBseVRyYW5zZm9ybSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5oaWVyYXJjaHkucmVtb3ZlS2VlcFNvcnRlZChlbnRpdHkpOyAvLyBpbmZvcm0gcGFyZW50IG1lc2ggdG8gdXBkYXRlIGl0cyBhYWJiXG5cbiAgICAgICAgdmFyIG1lc2ggPSB0aGlzLm1lc2guZ2V0Q29tcG9uZW50QnlFbnRpdHkoc2VsZi5wYXJlbnRJRCk7XG5cbiAgICAgICAgaWYgKG1lc2gpIHtcbiAgICAgICAgICB2YXIgaW5kZXggPSBtZXNoLmNoaWxkcmVuLmluZGV4T2YoZW50aXR5KTtcbiAgICAgICAgICBtZXNoLmNoaWxkcmVuLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldE1lc2hBQUJCRGlydHkobWVzaCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRldGFjaENoaWxkcmVuXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRldGFjaENoaWxkcmVuKHBhcmVudCkge1xuICAgICAgdmFyIG1lc2ggPSB0aGlzLm1lc2guZ2V0Q29tcG9uZW50QnlFbnRpdHkocGFyZW50KTtcblxuICAgICAgaWYgKG1lc2gpIHtcbiAgICAgICAgbWVzaC5jaGlsZHJlbiA9IFtdO1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuaGllcmFyY2h5LmdldENvdW50KCk7KSB7XG4gICAgICAgIHZhciBfdGhpcyRoaWVyYXJjaHkkZ2V0Q287XG5cbiAgICAgICAgaWYgKCgoX3RoaXMkaGllcmFyY2h5JGdldENvID0gdGhpcy5oaWVyYXJjaHkuZ2V0Q29tcG9uZW50KGkpKSA9PT0gbnVsbCB8fCBfdGhpcyRoaWVyYXJjaHkkZ2V0Q28gPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJGhpZXJhcmNoeSRnZXRDby5wYXJlbnRJRCkgPT09IHBhcmVudCkge1xuICAgICAgICAgIHZhciBlbnRpdHkgPSB0aGlzLmhpZXJhcmNoeS5nZXRFbnRpdHkoaSk7XG4gICAgICAgICAgdGhpcy5kZXRhY2goZW50aXR5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICArK2k7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0TWVzaEFBQkJEaXJ0eVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRNZXNoQUFCQkRpcnR5KG1lc2gpIHtcbiAgICAgIGlmIChtZXNoKSB7XG4gICAgICAgIG1lc2guYWFiYkRpcnR5ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gU2NlbmVHcmFwaFN5c3RlbTtcbn0oKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImhpZXJhcmNoeVwiLCBbX2RlYzJdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSwgX2Rlc2NyaXB0b3IyID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJ0cmFuc2Zvcm1cIiwgW19kZWMzXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMyA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwibWVzaFwiLCBbX2RlYzRdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U3lzdGVtLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/System.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/TransformComponent.js":
/*!********************************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/TransformComponent.js ***!
\********************************************************************************************************************/
/*! exports provided: TransformComponent */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TransformComponent\", function() { return TransformComponent; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__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@7.16.3@@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@7.16.3@@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 gl_matrix__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n/* harmony import */ var _ComponentManager__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../ComponentManager */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/ComponentManager.js\");\n\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\nvar TransformComponent = /*#__PURE__*/function (_Component) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3___default()(TransformComponent, _Component);\n\n var _super = _createSuper(TransformComponent);\n\n /**\n * local space RTS\n */\n\n /**\n * XMFLOAT4X4._41\n * @see https://docs.microsoft.com/en-us/windows/win32/api/directxmath/nf-directxmath-xmfloat4x4-xmfloat4x4(constfloat)#remarks\n */\n\n /**\n * world space RTS\n */\n // 高阶函数,利用闭包重复利用临时变量\n // @see playcanvas graph node\n\n /**\n * @see https://docs.microsoft.com/en-us/windows/win32/api/directxmath/nf-directxmath-xmquaternionrotationrollpitchyaw\n */\n\n /**\n * @see https://xiaoiver.github.io/coding/2018/12/28/Camera-%E8%AE%BE%E8%AE%A1-%E4%B8%80.html\n */\n\n /**\n * TODO: 支持以下两种:\n * * translate(x, y, z)\n * * translate(vec3(x, y, z))\n */\n\n /**\n * @see https://en.wikipedia.org/wiki/Centripetal_Catmull%E2%80%93Rom_spline\n */\n // public catmullRom = (() => {\n // const aS = vec3.create();\n // const aR = quat.create();\n // const aT = vec3.create();\n // const bS = vec3.create();\n // const bR = quat.create();\n // const bT = vec3.create();\n // const cS = vec3.create();\n // const cR = quat.create();\n // const cT = vec3.create();\n // const dS = vec3.create();\n // const dR = quat.create();\n // const dT = vec3.create();\n // const R = quat.create();\n // return (\n // a: TransformComponent,\n // b: TransformComponent,\n // c: TransformComponent,\n // d: TransformComponent,\n // t: number,\n // ) => {\n // this.setDirty();\n // mat4.getScaling(aS, a.worldTransform);\n // mat4.getTranslation(aT, a.worldTransform);\n // mat4.getRotation(aR, a.worldTransform);\n // mat4.getScaling(bS, b.worldTransform);\n // mat4.getTranslation(bT, b.worldTransform);\n // mat4.getRotation(bR, b.worldTransform);\n // mat4.getScaling(cS, c.worldTransform);\n // mat4.getTranslation(cT, c.worldTransform);\n // mat4.getRotation(cR, c.worldTransform);\n // mat4.getScaling(dS, d.worldTransform);\n // mat4.getTranslation(dT, d.worldTransform);\n // mat4.getRotation(dR, d.worldTransform);\n // vec3.catmullRom(this.localPosition, aT, bT, cT, dT, t);\n // vec3.catmullRom(R, aR, bR, cR, dR, t);\n // quat.normalize(this.localRotation, R);\n // vec3.catmullRom(this.localScale, aS, bS, cS, dS, t);\n // };\n // })();\n function TransformComponent(data) {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, TransformComponent);\n\n _this = _super.call(this, data);\n _this.dirtyFlag = void 0;\n _this.localDirtyFlag = void 0;\n _this.parent = null;\n _this.localPosition = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(0, 0, 0);\n _this.localRotation = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].fromValues(0, 0, 0, 1);\n _this.localScale = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(1, 1, 1);\n _this.localTransform = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create();\n _this.position = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(0, 0, 0);\n _this.rotation = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].fromValues(0, 0, 0, 1);\n _this.scaling = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(1, 1, 1);\n _this.worldTransform = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create();\n\n _this.matrixTransform = function () {\n var transformed = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create();\n return function (mat) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].multiply(transformed, _this.getLocalTransform(), mat);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getScaling(_this.localScale, transformed);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getTranslation(_this.localPosition, transformed);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getRotation(_this.localRotation, transformed);\n };\n }();\n\n _this.rotateRollPitchYaw = function () {\n var quatX = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create();\n var quatY = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create();\n var quatZ = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create();\n return function (x, y, z) {\n _this.setDirty();\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].fromEuler(quatX, x, 0, 0);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].fromEuler(quatY, 0, y, 0);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].fromEuler(quatZ, 0, 0, z);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(_this.localRotation, quatX, _this.localRotation);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(_this.localRotation, _this.localRotation, quatY);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(_this.localRotation, quatZ, _this.localRotation);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].normalize(_this.localRotation, _this.localRotation);\n };\n }();\n\n _this.lerp = function () {\n var aS = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create();\n var aR = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create();\n var aT = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create();\n var bS = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create();\n var bR = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create();\n var bT = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create();\n return function (a, b, t) {\n _this.setDirty();\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getScaling(aS, a.worldTransform);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getTranslation(aT, a.worldTransform);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getRotation(aR, a.worldTransform);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getScaling(bS, b.worldTransform);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getTranslation(bT, b.worldTransform);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getRotation(bR, b.worldTransform);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].lerp(_this.localScale, aS, bS, t);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].slerp(_this.localRotation, aR, bR, t);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].lerp(_this.localPosition, aT, bT, t);\n };\n }();\n\n _this.translate = function () {\n var tr = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create();\n return function (translation) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].add(tr, _this.getPosition(), translation);\n\n _this.setPosition(tr);\n\n _this.setDirty(true);\n\n return _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2___default()(_this);\n };\n }();\n\n _this.translateLocal = function () {\n return function (translation) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].transformQuat(translation, translation, _this.localRotation);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].add(_this.localPosition, _this.localPosition, translation);\n\n _this.setLocalDirty(true);\n\n return _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2___default()(_this);\n };\n }();\n\n _this.setPosition = function () {\n var parentInvertMatrix = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create();\n return function (position) {\n _this.position = position;\n\n _this.setLocalDirty(true);\n\n if (_this.parent === null) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].copy(_this.localPosition, position);\n } else {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].copy(parentInvertMatrix, _this.parent.worldTransform);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].invert(parentInvertMatrix, parentInvertMatrix);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].transformMat4(_this.localPosition, position, parentInvertMatrix);\n }\n\n return _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2___default()(_this);\n };\n }();\n\n _this.rotate = function () {\n var parentInvertRotation = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create();\n return function (quaternion) {\n if (_this.parent === null) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(_this.localRotation, _this.localRotation, quaternion);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].normalize(_this.localRotation, _this.localRotation);\n } else {\n var rot = _this.getRotation();\n\n var parentRot = _this.parent.getRotation();\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].copy(parentInvertRotation, parentRot);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].invert(parentInvertRotation, parentInvertRotation);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(parentInvertRotation, parentInvertRotation, quaternion);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(_this.localRotation, quaternion, rot);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].normalize(_this.localRotation, _this.localRotation);\n }\n\n _this.setLocalDirty();\n\n return _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2___default()(_this);\n };\n }();\n\n _this.rotateLocal = function () {\n return function (quaternion) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(_this.localRotation, _this.localRotation, quaternion);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].normalize(_this.localRotation, _this.localRotation);\n\n _this.setLocalDirty(true);\n\n return _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2___default()(_this);\n };\n }();\n\n _this.setRotation = function () {\n var invParentRot = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create();\n return function (rotation) {\n if (_this.parent === null) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].copy(_this.localRotation, rotation);\n } else {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].copy(invParentRot, _this.parent.getRotation());\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].invert(invParentRot, invParentRot);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].copy(_this.localRotation, invParentRot);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].mul(_this.localRotation, _this.localRotation, rotation);\n }\n\n _this.setLocalDirty(true);\n\n return _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2___default()(_this);\n };\n }();\n\n return _this;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(TransformComponent, [{\n key: \"setLocalPosition\",\n value: function setLocalPosition(position) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].copy(this.localPosition, position);\n this.setLocalDirty(true);\n }\n }, {\n key: \"setLocalScale\",\n value: function setLocalScale(scale) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].copy(this.localScale, scale);\n this.setLocalDirty(true);\n }\n }, {\n key: \"setLocalRotation\",\n value: function setLocalRotation(rotation) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].copy(this.localRotation, rotation);\n this.setLocalDirty(true);\n return this;\n }\n }, {\n key: \"isDirty\",\n value: function isDirty() {\n return this.dirtyFlag;\n }\n }, {\n key: \"setDirty\",\n value: function setDirty() {\n var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n if (value) {\n this.dirtyFlag |= TransformComponent.DIRTY;\n } else {\n this.dirtyFlag &= ~TransformComponent.DIRTY;\n }\n }\n }, {\n key: \"isLocalDirty\",\n value: function isLocalDirty() {\n return this.localDirtyFlag;\n }\n }, {\n key: \"setLocalDirty\",\n value: function setLocalDirty() {\n var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n if (value) {\n this.localDirtyFlag |= TransformComponent.DIRTY;\n this.setDirty(true);\n } else {\n this.localDirtyFlag &= ~TransformComponent.DIRTY;\n }\n }\n }, {\n key: \"updateTransform\",\n value: function updateTransform() {\n if (this.isLocalDirty()) {\n this.getLocalTransform();\n }\n\n if (this.isDirty()) {\n if (this.parent === null) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].copy(this.worldTransform, this.getLocalTransform());\n this.setDirty(false);\n }\n }\n }\n }, {\n key: \"updateTransformWithParent\",\n value: function updateTransformWithParent(parent) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].multiply(this.worldTransform, parent.worldTransform, this.getLocalTransform());\n }\n }, {\n key: \"applyTransform\",\n value: function applyTransform() {\n this.setDirty();\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getScaling(this.localScale, this.worldTransform);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getTranslation(this.localPosition, this.worldTransform);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getRotation(this.localRotation, this.worldTransform);\n }\n }, {\n key: \"clearTransform\",\n value: function clearTransform() {\n this.setDirty();\n this.localPosition = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(0, 0, 0);\n this.localRotation = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].fromValues(0, 0, 0, 1);\n this.localScale = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(1, 1, 1);\n }\n }, {\n key: \"scaleLocal\",\n value: function scaleLocal(scaling) {\n this.setLocalDirty();\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].multiply(this.localScale, this.localScale, scaling);\n return this;\n }\n }, {\n key: \"getLocalPosition\",\n value: function getLocalPosition() {\n return this.localPosition;\n }\n }, {\n key: \"getLocalRotation\",\n value: function getLocalRotation() {\n return this.localRotation;\n }\n }, {\n key: \"getLocalScale\",\n value: function getLocalScale() {\n return this.localScale;\n }\n }, {\n key: \"getLocalTransform\",\n value: function getLocalTransform() {\n if (this.localDirtyFlag) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].fromRotationTranslationScale(this.localTransform, this.localRotation, this.localPosition, this.localScale);\n this.setLocalDirty(false);\n }\n\n return this.localTransform;\n }\n }, {\n key: \"getWorldTransform\",\n value: function getWorldTransform() {\n if (!this.isLocalDirty() && !this.isDirty()) {\n return this.worldTransform;\n }\n\n if (this.parent) {\n this.parent.getWorldTransform();\n }\n\n this.updateTransform();\n return this.worldTransform;\n }\n }, {\n key: \"getPosition\",\n value: function getPosition() {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getTranslation(this.position, this.worldTransform);\n return this.position;\n }\n }, {\n key: \"getRotation\",\n value: function getRotation() {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getRotation(this.rotation, this.worldTransform);\n return this.rotation;\n }\n }, {\n key: \"getScale\",\n value: function getScale() {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].getScaling(this.scaling, this.worldTransform);\n return this.scaling;\n }\n }]);\n\n return TransformComponent;\n}(_ComponentManager__WEBPACK_IMPORTED_MODULE_7__[\"Component\"]);\nTransformComponent.DIRTY = 1 << 0;\n//# sourceMappingURL=TransformComponent.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9jb21wb25lbnRzL3NjZW5lZ3JhcGgvVHJhbnNmb3JtQ29tcG9uZW50LmpzP2ZhYWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjtBQUNvQjtBQUMxQjtBQUNrQztBQUN0Qjs7QUFFcEUsZ0NBQWdDLDZEQUE2RCx5Q0FBeUMsYUFBYSw0RUFBZSxrQkFBa0IsaUNBQWlDLGlCQUFpQiw0RUFBZSxtQkFBbUIseURBQXlELEVBQUUsT0FBTyx1Q0FBdUMsRUFBRSxRQUFRLHVGQUEwQixlQUFlLEdBQUc7O0FBRXZhLHNDQUFzQyx3RUFBd0UsMENBQTBDLDhDQUE4QyxNQUFNLHdFQUF3RSxHQUFHLGFBQWEsRUFBRSxZQUFZLGNBQWMsRUFBRTs7QUFFclI7QUFDTTtBQUM1QztBQUNQLEVBQUUsc0VBQVM7O0FBRVg7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLDhDQUFJO0FBQzlCLDBCQUEwQiw4Q0FBSTtBQUM5Qix1QkFBdUIsOENBQUk7QUFDM0IsMkJBQTJCLDhDQUFJO0FBQy9CLHFCQUFxQiw4Q0FBSTtBQUN6QixxQkFBcUIsOENBQUk7QUFDekIsb0JBQW9CLDhDQUFJO0FBQ3hCLDJCQUEyQiw4Q0FBSTs7QUFFL0I7QUFDQSx3QkFBd0IsOENBQUk7QUFDNUI7QUFDQSxRQUFRLDhDQUFJO0FBQ1osUUFBUSw4Q0FBSTtBQUNaLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1o7QUFDQSxLQUFLOztBQUVMO0FBQ0Esa0JBQWtCLDhDQUFJO0FBQ3RCLGtCQUFrQiw4Q0FBSTtBQUN0QixrQkFBa0IsOENBQUk7QUFDdEI7QUFDQTs7QUFFQSxRQUFRLDhDQUFJO0FBQ1osUUFBUSw4Q0FBSTtBQUNaLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1osUUFBUSw4Q0FBSTtBQUNaLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1o7QUFDQSxLQUFLOztBQUVMO0FBQ0EsZUFBZSw4Q0FBSTtBQUNuQixlQUFlLDhDQUFJO0FBQ25CLGVBQWUsOENBQUk7QUFDbkIsZUFBZSw4Q0FBSTtBQUNuQixlQUFlLDhDQUFJO0FBQ25CLGVBQWUsOENBQUk7QUFDbkI7QUFDQTs7QUFFQSxRQUFRLDhDQUFJO0FBQ1osUUFBUSw4Q0FBSTtBQUNaLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1osUUFBUSw4Q0FBSTtBQUNaLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1osUUFBUSw4Q0FBSTtBQUNaLFFBQVEsOENBQUk7QUFDWjtBQUNBLEtBQUs7O0FBRUw7QUFDQSxlQUFlLDhDQUFJO0FBQ25CO0FBQ0EsUUFBUSw4Q0FBSTs7QUFFWjs7QUFFQTs7QUFFQSxlQUFlLG1GQUFzQjtBQUNyQztBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJOztBQUVaOztBQUVBLGVBQWUsbUZBQXNCO0FBQ3JDO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLCtCQUErQiw4Q0FBSTtBQUNuQztBQUNBOztBQUVBOztBQUVBO0FBQ0EsVUFBVSw4Q0FBSTtBQUNkLFNBQVM7QUFDVCxVQUFVLDhDQUFJO0FBQ2QsVUFBVSw4Q0FBSTtBQUNkLFVBQVUsOENBQUk7QUFDZDs7QUFFQSxlQUFlLG1GQUFzQjtBQUNyQztBQUNBLEtBQUs7O0FBRUw7QUFDQSxpQ0FBaUMsOENBQUk7QUFDckM7QUFDQTtBQUNBLFVBQVUsOENBQUk7QUFDZCxVQUFVLDhDQUFJO0FBQ2QsU0FBUztBQUNUOztBQUVBOztBQUVBLFVBQVUsOENBQUk7QUFDZCxVQUFVLDhDQUFJO0FBQ2QsVUFBVSw4Q0FBSTtBQUNkLFVBQVUsOENBQUk7QUFDZCxVQUFVLDhDQUFJO0FBQ2Q7O0FBRUE7O0FBRUEsZUFBZSxtRkFBc0I7QUFDckM7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxRQUFRLDhDQUFJO0FBQ1osUUFBUSw4Q0FBSTs7QUFFWjs7QUFFQSxlQUFlLG1GQUFzQjtBQUNyQztBQUNBLEtBQUs7O0FBRUw7QUFDQSx5QkFBeUIsOENBQUk7QUFDN0I7QUFDQTtBQUNBLFVBQVUsOENBQUk7QUFDZCxTQUFTO0FBQ1QsVUFBVSw4Q0FBSTtBQUNkLFVBQVUsOENBQUk7QUFDZCxVQUFVLDhDQUFJO0FBQ2QsVUFBVSw4Q0FBSTtBQUNkOztBQUVBOztBQUVBLGVBQWUsbUZBQXNCO0FBQ3JDO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0EsTUFBTSw4Q0FBSTtBQUNWO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLE1BQU0sOENBQUk7QUFDVjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxNQUFNLDhDQUFJO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVLDhDQUFJO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLE1BQU0sOENBQUk7QUFDVjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxNQUFNLDhDQUFJO0FBQ1YsTUFBTSw4Q0FBSTtBQUNWLE1BQU0sOENBQUk7QUFDVjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsOENBQUk7QUFDL0IsMkJBQTJCLDhDQUFJO0FBQy9CLHdCQUF3Qiw4Q0FBSTtBQUM1QjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxNQUFNLDhDQUFJO0FBQ1Y7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhDQUFJO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsTUFBTSw4Q0FBSTtBQUNWO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLE1BQU0sOENBQUk7QUFDVjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxNQUFNLDhDQUFJO0FBQ1Y7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDLENBQUMsMkRBQVM7QUFDWDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvY29tcG9uZW50cy9zY2VuZWdyYXBoL1RyYW5zZm9ybUNvbXBvbmVudC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0c1wiO1xuaW1wb3J0IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm5cIjtcbmltcG9ydCBfZ2V0UHJvdG90eXBlT2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZ2V0UHJvdG90eXBlT2ZcIjtcblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5pbXBvcnQgeyBtYXQ0LCBxdWF0LCB2ZWMzIH0gZnJvbSAnZ2wtbWF0cml4JztcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJy4uLy4uL0NvbXBvbmVudE1hbmFnZXInO1xuZXhwb3J0IHZhciBUcmFuc2Zvcm1Db21wb25lbnQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQpIHtcbiAgX2luaGVyaXRzKFRyYW5zZm9ybUNvbXBvbmVudCwgX0NvbXBvbmVudCk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihUcmFuc2Zvcm1Db21wb25lbnQpO1xuXG4gIC8qKlxuICAgKiBsb2NhbCBzcGFjZSBSVFNcbiAgICovXG5cbiAgLyoqXG4gICAqIFhNRkxPQVQ0WDQuXzQxXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy93aW4zMi9hcGkvZGlyZWN0eG1hdGgvbmYtZGlyZWN0eG1hdGgteG1mbG9hdDR4NC14bWZsb2F0NHg0KGNvbnN0ZmxvYXQpI3JlbWFya3NcbiAgICovXG5cbiAgLyoqXG4gICAqIHdvcmxkIHNwYWNlIFJUU1xuICAgKi9cbiAgLy8g6auY6Zi25Ye95pWw77yM5Yip55So6Zet5YyF6YeN5aSN5Yip55So5Li05pe25Y+Y6YePXG4gIC8vIEBzZWUgcGxheWNhbnZhcyBncmFwaCBub2RlXG5cbiAgLyoqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy93aW4zMi9hcGkvZGlyZWN0eG1hdGgvbmYtZGlyZWN0eG1hdGgteG1xdWF0ZXJuaW9ucm90YXRpb25yb2xscGl0Y2h5YXdcbiAgICovXG5cbiAgLyoqXG4gICAqIEBzZWUgaHR0cHM6Ly94aWFvaXZlci5naXRodWIuaW8vY29kaW5nLzIwMTgvMTIvMjgvQ2FtZXJhLSVFOCVBRSVCRSVFOCVBRSVBMS0lRTQlQjglODAuaHRtbFxuICAgKi9cblxuICAvKipcbiAgICogVE9ETzog5pSv5oyB5Lul5LiL5Lik56eN77yaXG4gICAqICogdHJhbnNsYXRlKHgsIHksIHopXG4gICAqICogdHJhbnNsYXRlKHZlYzMoeCwgeSwgeikpXG4gICAqL1xuXG4gIC8qKlxuICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NlbnRyaXBldGFsX0NhdG11bGwlRTIlODAlOTNSb21fc3BsaW5lXG4gICAqL1xuICAvLyBwdWJsaWMgY2F0bXVsbFJvbSA9ICgoKSA9PiB7XG4gIC8vICAgY29uc3QgYVMgPSB2ZWMzLmNyZWF0ZSgpO1xuICAvLyAgIGNvbnN0IGFSID0gcXVhdC5jcmVhdGUoKTtcbiAgLy8gICBjb25zdCBhVCA9IHZlYzMuY3JlYXRlKCk7XG4gIC8vICAgY29uc3QgYlMgPSB2ZWMzLmNyZWF0ZSgpO1xuICAvLyAgIGNvbnN0IGJSID0gcXVhdC5jcmVhdGUoKTtcbiAgLy8gICBjb25zdCBiVCA9IHZlYzMuY3JlYXRlKCk7XG4gIC8vICAgY29uc3QgY1MgPSB2ZWMzLmNyZWF0ZSgpO1xuICAvLyAgIGNvbnN0IGNSID0gcXVhdC5jcmVhdGUoKTtcbiAgLy8gICBjb25zdCBjVCA9IHZlYzMuY3JlYXRlKCk7XG4gIC8vICAgY29uc3QgZFMgPSB2ZWMzLmNyZWF0ZSgpO1xuICAvLyAgIGNvbnN0IGRSID0gcXVhdC5jcmVhdGUoKTtcbiAgLy8gICBjb25zdCBkVCA9IHZlYzMuY3JlYXRlKCk7XG4gIC8vICAgY29uc3QgUiA9IHF1YXQuY3JlYXRlKCk7XG4gIC8vICAgcmV0dXJuIChcbiAgLy8gICAgIGE6IFRyYW5zZm9ybUNvbXBvbmVudCxcbiAgLy8gICAgIGI6IFRyYW5zZm9ybUNvbXBvbmVudCxcbiAgLy8gICAgIGM6IFRyYW5zZm9ybUNvbXBvbmVudCxcbiAgLy8gICAgIGQ6IFRyYW5zZm9ybUNvbXBvbmVudCxcbiAgLy8gICAgIHQ6IG51bWJlcixcbiAgLy8gICApID0+IHtcbiAgLy8gICAgIHRoaXMuc2V0RGlydHkoKTtcbiAgLy8gICAgIG1hdDQuZ2V0U2NhbGluZyhhUywgYS53b3JsZFRyYW5zZm9ybSk7XG4gIC8vICAgICBtYXQ0LmdldFRyYW5zbGF0aW9uKGFULCBhLndvcmxkVHJhbnNmb3JtKTtcbiAgLy8gICAgIG1hdDQuZ2V0Um90YXRpb24oYVIsIGEud29ybGRUcmFuc2Zvcm0pO1xuICAvLyAgICAgbWF0NC5nZXRTY2FsaW5nKGJTLCBiLndvcmxkVHJhbnNmb3JtKTtcbiAgLy8gICAgIG1hdDQuZ2V0VHJhbnNsYXRpb24oYlQsIGIud29ybGRUcmFuc2Zvcm0pO1xuICAvLyAgICAgbWF0NC5nZXRSb3RhdGlvbihiUiwgYi53b3JsZFRyYW5zZm9ybSk7XG4gIC8vICAgICBtYXQ0LmdldFNjYWxpbmcoY1MsIGMud29ybGRUcmFuc2Zvcm0pO1xuICAvLyAgICAgbWF0NC5nZXRUcmFuc2xhdGlvbihjVCwgYy53b3JsZFRyYW5zZm9ybSk7XG4gIC8vICAgICBtYXQ0LmdldFJvdGF0aW9uKGNSLCBjLndvcmxkVHJhbnNmb3JtKTtcbiAgLy8gICAgIG1hdDQuZ2V0U2NhbGluZyhkUywgZC53b3JsZFRyYW5zZm9ybSk7XG4gIC8vICAgICBtYXQ0LmdldFRyYW5zbGF0aW9uKGRULCBkLndvcmxkVHJhbnNmb3JtKTtcbiAgLy8gICAgIG1hdDQuZ2V0Um90YXRpb24oZFIsIGQud29ybGRUcmFuc2Zvcm0pO1xuICAvLyAgICAgdmVjMy5jYXRtdWxsUm9tKHRoaXMubG9jYWxQb3NpdGlvbiwgYVQsIGJULCBjVCwgZFQsIHQpO1xuICAvLyAgICAgdmVjMy5jYXRtdWxsUm9tKFIsIGFSLCBiUiwgY1IsIGRSLCB0KTtcbiAgLy8gICAgIHF1YXQubm9ybWFsaXplKHRoaXMubG9jYWxSb3RhdGlvbiwgUik7XG4gIC8vICAgICB2ZWMzLmNhdG11bGxSb20odGhpcy5sb2NhbFNjYWxlLCBhUywgYlMsIGNTLCBkUywgdCk7XG4gIC8vICAgfTtcbiAgLy8gfSkoKTtcbiAgZnVuY3Rpb24gVHJhbnNmb3JtQ29tcG9uZW50KGRhdGEpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVHJhbnNmb3JtQ29tcG9uZW50KTtcblxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgZGF0YSk7XG4gICAgX3RoaXMuZGlydHlGbGFnID0gdm9pZCAwO1xuICAgIF90aGlzLmxvY2FsRGlydHlGbGFnID0gdm9pZCAwO1xuICAgIF90aGlzLnBhcmVudCA9IG51bGw7XG4gICAgX3RoaXMubG9jYWxQb3NpdGlvbiA9IHZlYzMuZnJvbVZhbHVlcygwLCAwLCAwKTtcbiAgICBfdGhpcy5sb2NhbFJvdGF0aW9uID0gcXVhdC5mcm9tVmFsdWVzKDAsIDAsIDAsIDEpO1xuICAgIF90aGlzLmxvY2FsU2NhbGUgPSB2ZWMzLmZyb21WYWx1ZXMoMSwgMSwgMSk7XG4gICAgX3RoaXMubG9jYWxUcmFuc2Zvcm0gPSBtYXQ0LmNyZWF0ZSgpO1xuICAgIF90aGlzLnBvc2l0aW9uID0gdmVjMy5mcm9tVmFsdWVzKDAsIDAsIDApO1xuICAgIF90aGlzLnJvdGF0aW9uID0gcXVhdC5mcm9tVmFsdWVzKDAsIDAsIDAsIDEpO1xuICAgIF90aGlzLnNjYWxpbmcgPSB2ZWMzLmZyb21WYWx1ZXMoMSwgMSwgMSk7XG4gICAgX3RoaXMud29ybGRUcmFuc2Zvcm0gPSBtYXQ0LmNyZWF0ZSgpO1xuXG4gICAgX3RoaXMubWF0cml4VHJhbnNmb3JtID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHRyYW5zZm9ybWVkID0gbWF0NC5jcmVhdGUoKTtcbiAgICAgIHJldHVybiBmdW5jdGlvbiAobWF0KSB7XG4gICAgICAgIG1hdDQubXVsdGlwbHkodHJhbnNmb3JtZWQsIF90aGlzLmdldExvY2FsVHJhbnNmb3JtKCksIG1hdCk7XG4gICAgICAgIG1hdDQuZ2V0U2NhbGluZyhfdGhpcy5sb2NhbFNjYWxlLCB0cmFuc2Zvcm1lZCk7XG4gICAgICAgIG1hdDQuZ2V0VHJhbnNsYXRpb24oX3RoaXMubG9jYWxQb3NpdGlvbiwgdHJhbnNmb3JtZWQpO1xuICAgICAgICBtYXQ0LmdldFJvdGF0aW9uKF90aGlzLmxvY2FsUm90YXRpb24sIHRyYW5zZm9ybWVkKTtcbiAgICAgIH07XG4gICAgfSgpO1xuXG4gICAgX3RoaXMucm90YXRlUm9sbFBpdGNoWWF3ID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHF1YXRYID0gcXVhdC5jcmVhdGUoKTtcbiAgICAgIHZhciBxdWF0WSA9IHF1YXQuY3JlYXRlKCk7XG4gICAgICB2YXIgcXVhdFogPSBxdWF0LmNyZWF0ZSgpO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh4LCB5LCB6KSB7XG4gICAgICAgIF90aGlzLnNldERpcnR5KCk7XG5cbiAgICAgICAgcXVhdC5mcm9tRXVsZXIocXVhdFgsIHgsIDAsIDApO1xuICAgICAgICBxdWF0LmZyb21FdWxlcihxdWF0WSwgMCwgeSwgMCk7XG4gICAgICAgIHF1YXQuZnJvbUV1bGVyKHF1YXRaLCAwLCAwLCB6KTtcbiAgICAgICAgcXVhdC5tdWx0aXBseShfdGhpcy5sb2NhbFJvdGF0aW9uLCBxdWF0WCwgX3RoaXMubG9jYWxSb3RhdGlvbik7XG4gICAgICAgIHF1YXQubXVsdGlwbHkoX3RoaXMubG9jYWxSb3RhdGlvbiwgX3RoaXMubG9jYWxSb3RhdGlvbiwgcXVhdFkpO1xuICAgICAgICBxdWF0Lm11bHRpcGx5KF90aGlzLmxvY2FsUm90YXRpb24sIHF1YXRaLCBfdGhpcy5sb2NhbFJvdGF0aW9uKTtcbiAgICAgICAgcXVhdC5ub3JtYWxpemUoX3RoaXMubG9jYWxSb3RhdGlvbiwgX3RoaXMubG9jYWxSb3RhdGlvbik7XG4gICAgICB9O1xuICAgIH0oKTtcblxuICAgIF90aGlzLmxlcnAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgYVMgPSB2ZWMzLmNyZWF0ZSgpO1xuICAgICAgdmFyIGFSID0gcXVhdC5jcmVhdGUoKTtcbiAgICAgIHZhciBhVCA9IHZlYzMuY3JlYXRlKCk7XG4gICAgICB2YXIgYlMgPSB2ZWMzLmNyZWF0ZSgpO1xuICAgICAgdmFyIGJSID0gcXVhdC5jcmVhdGUoKTtcbiAgICAgIHZhciBiVCA9IHZlYzMuY3JlYXRlKCk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIHQpIHtcbiAgICAgICAgX3RoaXMuc2V0RGlydHkoKTtcblxuICAgICAgICBtYXQ0LmdldFNjYWxpbmcoYVMsIGEud29ybGRUcmFuc2Zvcm0pO1xuICAgICAgICBtYXQ0LmdldFRyYW5zbGF0aW9uKGFULCBhLndvcmxkVHJhbnNmb3JtKTtcbiAgICAgICAgbWF0NC5nZXRSb3RhdGlvbihhUiwgYS53b3JsZFRyYW5zZm9ybSk7XG4gICAgICAgIG1hdDQuZ2V0U2NhbGluZyhiUywgYi53b3JsZFRyYW5zZm9ybSk7XG4gICAgICAgIG1hdDQuZ2V0VHJhbnNsYXRpb24oYlQsIGIud29ybGRUcmFuc2Zvcm0pO1xuICAgICAgICBtYXQ0LmdldFJvdGF0aW9uKGJSLCBiLndvcmxkVHJhbnNmb3JtKTtcbiAgICAgICAgdmVjMy5sZXJwKF90aGlzLmxvY2FsU2NhbGUsIGFTLCBiUywgdCk7XG4gICAgICAgIHF1YXQuc2xlcnAoX3RoaXMubG9jYWxSb3RhdGlvbiwgYVIsIGJSLCB0KTtcbiAgICAgICAgdmVjMy5sZXJwKF90aGlzLmxvY2FsUG9zaXRpb24sIGFULCBiVCwgdCk7XG4gICAgICB9O1xuICAgIH0oKTtcblxuICAgIF90aGlzLnRyYW5zbGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB0ciA9IHZlYzMuY3JlYXRlKCk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHRyYW5zbGF0aW9uKSB7XG4gICAgICAgIHZlYzMuYWRkKHRyLCBfdGhpcy5nZXRQb3NpdGlvbigpLCB0cmFuc2xhdGlvbik7XG5cbiAgICAgICAgX3RoaXMuc2V0UG9zaXRpb24odHIpO1xuXG4gICAgICAgIF90aGlzLnNldERpcnR5KHRydWUpO1xuXG4gICAgICAgIHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKTtcbiAgICAgIH07XG4gICAgfSgpO1xuXG4gICAgX3RoaXMudHJhbnNsYXRlTG9jYWwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHRyYW5zbGF0aW9uKSB7XG4gICAgICAgIHZlYzMudHJhbnNmb3JtUXVhdCh0cmFuc2xhdGlvbiwgdHJhbnNsYXRpb24sIF90aGlzLmxvY2FsUm90YXRpb24pO1xuICAgICAgICB2ZWMzLmFkZChfdGhpcy5sb2NhbFBvc2l0aW9uLCBfdGhpcy5sb2NhbFBvc2l0aW9uLCB0cmFuc2xhdGlvbik7XG5cbiAgICAgICAgX3RoaXMuc2V0TG9jYWxEaXJ0eSh0cnVlKTtcblxuICAgICAgICByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyk7XG4gICAgICB9O1xuICAgIH0oKTtcblxuICAgIF90aGlzLnNldFBvc2l0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHBhcmVudEludmVydE1hdHJpeCA9IG1hdDQuY3JlYXRlKCk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHBvc2l0aW9uKSB7XG4gICAgICAgIF90aGlzLnBvc2l0aW9uID0gcG9zaXRpb247XG5cbiAgICAgICAgX3RoaXMuc2V0TG9jYWxEaXJ0eSh0cnVlKTtcblxuICAgICAgICBpZiAoX3RoaXMucGFyZW50ID09PSBudWxsKSB7XG4gICAgICAgICAgdmVjMy5jb3B5KF90aGlzLmxvY2FsUG9zaXRpb24sIHBvc2l0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtYXQ0LmNvcHkocGFyZW50SW52ZXJ0TWF0cml4LCBfdGhpcy5wYXJlbnQud29ybGRUcmFuc2Zvcm0pO1xuICAgICAgICAgIG1hdDQuaW52ZXJ0KHBhcmVudEludmVydE1hdHJpeCwgcGFyZW50SW52ZXJ0TWF0cml4KTtcbiAgICAgICAgICB2ZWMzLnRyYW5zZm9ybU1hdDQoX3RoaXMubG9jYWxQb3NpdGlvbiwgcG9zaXRpb24sIHBhcmVudEludmVydE1hdHJpeCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyk7XG4gICAgICB9O1xuICAgIH0oKTtcblxuICAgIF90aGlzLnJvdGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBwYXJlbnRJbnZlcnRSb3RhdGlvbiA9IHF1YXQuY3JlYXRlKCk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHF1YXRlcm5pb24pIHtcbiAgICAgICAgaWYgKF90aGlzLnBhcmVudCA9PT0gbnVsbCkge1xuICAgICAgICAgIHF1YXQubXVsdGlwbHkoX3RoaXMubG9jYWxSb3RhdGlvbiwgX3RoaXMubG9jYWxSb3RhdGlvbiwgcXVhdGVybmlvbik7XG4gICAgICAgICAgcXVhdC5ub3JtYWxpemUoX3RoaXMubG9jYWxSb3RhdGlvbiwgX3RoaXMubG9jYWxSb3RhdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIHJvdCA9IF90aGlzLmdldFJvdGF0aW9uKCk7XG5cbiAgICAgICAgICB2YXIgcGFyZW50Um90ID0gX3RoaXMucGFyZW50LmdldFJvdGF0aW9uKCk7XG5cbiAgICAgICAgICBxdWF0LmNvcHkocGFyZW50SW52ZXJ0Um90YXRpb24sIHBhcmVudFJvdCk7XG4gICAgICAgICAgcXVhdC5pbnZlcnQocGFyZW50SW52ZXJ0Um90YXRpb24sIHBhcmVudEludmVydFJvdGF0aW9uKTtcbiAgICAgICAgICBxdWF0Lm11bHRpcGx5KHBhcmVudEludmVydFJvdGF0aW9uLCBwYXJlbnRJbnZlcnRSb3RhdGlvbiwgcXVhdGVybmlvbik7XG4gICAgICAgICAgcXVhdC5tdWx0aXBseShfdGhpcy5sb2NhbFJvdGF0aW9uLCBxdWF0ZXJuaW9uLCByb3QpO1xuICAgICAgICAgIHF1YXQubm9ybWFsaXplKF90aGlzLmxvY2FsUm90YXRpb24sIF90aGlzLmxvY2FsUm90YXRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgX3RoaXMuc2V0TG9jYWxEaXJ0eSgpO1xuXG4gICAgICAgIHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKTtcbiAgICAgIH07XG4gICAgfSgpO1xuXG4gICAgX3RoaXMucm90YXRlTG9jYWwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHF1YXRlcm5pb24pIHtcbiAgICAgICAgcXVhdC5tdWx0aXBseShfdGhpcy5sb2NhbFJvdGF0aW9uLCBfdGhpcy5sb2NhbFJvdGF0aW9uLCBxdWF0ZXJuaW9uKTtcbiAgICAgICAgcXVhdC5ub3JtYWxpemUoX3RoaXMubG9jYWxSb3RhdGlvbiwgX3RoaXMubG9jYWxSb3RhdGlvbik7XG5cbiAgICAgICAgX3RoaXMuc2V0TG9jYWxEaXJ0eSh0cnVlKTtcblxuICAgICAgICByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyk7XG4gICAgICB9O1xuICAgIH0oKTtcblxuICAgIF90aGlzLnNldFJvdGF0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGludlBhcmVudFJvdCA9IHF1YXQuY3JlYXRlKCk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHJvdGF0aW9uKSB7XG4gICAgICAgIGlmIChfdGhpcy5wYXJlbnQgPT09IG51bGwpIHtcbiAgICAgICAgICBxdWF0LmNvcHkoX3RoaXMubG9jYWxSb3RhdGlvbiwgcm90YXRpb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHF1YXQuY29weShpbnZQYXJlbnRSb3QsIF90aGlzLnBhcmVudC5nZXRSb3RhdGlvbigpKTtcbiAgICAgICAgICBxdWF0LmludmVydChpbnZQYXJlbnRSb3QsIGludlBhcmVudFJvdCk7XG4gICAgICAgICAgcXVhdC5jb3B5KF90aGlzLmxvY2FsUm90YXRpb24sIGludlBhcmVudFJvdCk7XG4gICAgICAgICAgcXVhdC5tdWwoX3RoaXMubG9jYWxSb3RhdGlvbiwgX3RoaXMubG9jYWxSb3RhdGlvbiwgcm90YXRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgX3RoaXMuc2V0TG9jYWxEaXJ0eSh0cnVlKTtcblxuICAgICAgICByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyk7XG4gICAgICB9O1xuICAgIH0oKTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhUcmFuc2Zvcm1Db21wb25lbnQsIFt7XG4gICAga2V5OiBcInNldExvY2FsUG9zaXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0TG9jYWxQb3NpdGlvbihwb3NpdGlvbikge1xuICAgICAgdmVjMy5jb3B5KHRoaXMubG9jYWxQb3NpdGlvbiwgcG9zaXRpb24pO1xuICAgICAgdGhpcy5zZXRMb2NhbERpcnR5KHRydWUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRMb2NhbFNjYWxlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldExvY2FsU2NhbGUoc2NhbGUpIHtcbiAgICAgIHZlYzMuY29weSh0aGlzLmxvY2FsU2NhbGUsIHNjYWxlKTtcbiAgICAgIHRoaXMuc2V0TG9jYWxEaXJ0eSh0cnVlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0TG9jYWxSb3RhdGlvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRMb2NhbFJvdGF0aW9uKHJvdGF0aW9uKSB7XG4gICAgICBxdWF0LmNvcHkodGhpcy5sb2NhbFJvdGF0aW9uLCByb3RhdGlvbik7XG4gICAgICB0aGlzLnNldExvY2FsRGlydHkodHJ1ZSk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaXNEaXJ0eVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc0RpcnR5KCkge1xuICAgICAgcmV0dXJuIHRoaXMuZGlydHlGbGFnO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXREaXJ0eVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXREaXJ0eSgpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogdHJ1ZTtcblxuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuZGlydHlGbGFnIHw9IFRyYW5zZm9ybUNvbXBvbmVudC5ESVJUWTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGlydHlGbGFnICY9IH5UcmFuc2Zvcm1Db21wb25lbnQuRElSVFk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImlzTG9jYWxEaXJ0eVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc0xvY2FsRGlydHkoKSB7XG4gICAgICByZXR1cm4gdGhpcy5sb2NhbERpcnR5RmxhZztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0TG9jYWxEaXJ0eVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRMb2NhbERpcnR5KCkge1xuICAgICAgdmFyIHZhbHVlID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB0cnVlO1xuXG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgdGhpcy5sb2NhbERpcnR5RmxhZyB8PSBUcmFuc2Zvcm1Db21wb25lbnQuRElSVFk7XG4gICAgICAgIHRoaXMuc2V0RGlydHkodHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvY2FsRGlydHlGbGFnICY9IH5UcmFuc2Zvcm1Db21wb25lbnQuRElSVFk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInVwZGF0ZVRyYW5zZm9ybVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1cGRhdGVUcmFuc2Zvcm0oKSB7XG4gICAgICBpZiAodGhpcy5pc0xvY2FsRGlydHkoKSkge1xuICAgICAgICB0aGlzLmdldExvY2FsVHJhbnNmb3JtKCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmlzRGlydHkoKSkge1xuICAgICAgICBpZiAodGhpcy5wYXJlbnQgPT09IG51bGwpIHtcbiAgICAgICAgICBtYXQ0LmNvcHkodGhpcy53b3JsZFRyYW5zZm9ybSwgdGhpcy5nZXRMb2NhbFRyYW5zZm9ybSgpKTtcbiAgICAgICAgICB0aGlzLnNldERpcnR5KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ1cGRhdGVUcmFuc2Zvcm1XaXRoUGFyZW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVwZGF0ZVRyYW5zZm9ybVdpdGhQYXJlbnQocGFyZW50KSB7XG4gICAgICBtYXQ0Lm11bHRpcGx5KHRoaXMud29ybGRUcmFuc2Zvcm0sIHBhcmVudC53b3JsZFRyYW5zZm9ybSwgdGhpcy5nZXRMb2NhbFRyYW5zZm9ybSgpKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiYXBwbHlUcmFuc2Zvcm1cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYXBwbHlUcmFuc2Zvcm0oKSB7XG4gICAgICB0aGlzLnNldERpcnR5KCk7XG4gICAgICBtYXQ0LmdldFNjYWxpbmcodGhpcy5sb2NhbFNjYWxlLCB0aGlzLndvcmxkVHJhbnNmb3JtKTtcbiAgICAgIG1hdDQuZ2V0VHJhbnNsYXRpb24odGhpcy5sb2NhbFBvc2l0aW9uLCB0aGlzLndvcmxkVHJhbnNmb3JtKTtcbiAgICAgIG1hdDQuZ2V0Um90YXRpb24odGhpcy5sb2NhbFJvdGF0aW9uLCB0aGlzLndvcmxkVHJhbnNmb3JtKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY2xlYXJUcmFuc2Zvcm1cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY2xlYXJUcmFuc2Zvcm0oKSB7XG4gICAgICB0aGlzLnNldERpcnR5KCk7XG4gICAgICB0aGlzLmxvY2FsUG9zaXRpb24gPSB2ZWMzLmZyb21WYWx1ZXMoMCwgMCwgMCk7XG4gICAgICB0aGlzLmxvY2FsUm90YXRpb24gPSBxdWF0LmZyb21WYWx1ZXMoMCwgMCwgMCwgMSk7XG4gICAgICB0aGlzLmxvY2FsU2NhbGUgPSB2ZWMzLmZyb21WYWx1ZXMoMSwgMSwgMSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNjYWxlTG9jYWxcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2NhbGVMb2NhbChzY2FsaW5nKSB7XG4gICAgICB0aGlzLnNldExvY2FsRGlydHkoKTtcbiAgICAgIHZlYzMubXVsdGlwbHkodGhpcy5sb2NhbFNjYWxlLCB0aGlzLmxvY2FsU2NhbGUsIHNjYWxpbmcpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldExvY2FsUG9zaXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0TG9jYWxQb3NpdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsUG9zaXRpb247XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldExvY2FsUm90YXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0TG9jYWxSb3RhdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsUm90YXRpb247XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldExvY2FsU2NhbGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0TG9jYWxTY2FsZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsU2NhbGU7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldExvY2FsVHJhbnNmb3JtXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldExvY2FsVHJhbnNmb3JtKCkge1xuICAgICAgaWYgKHRoaXMubG9jYWxEaXJ0eUZsYWcpIHtcbiAgICAgICAgbWF0NC5mcm9tUm90YXRpb25UcmFuc2xhdGlvblNjYWxlKHRoaXMubG9jYWxUcmFuc2Zvcm0sIHRoaXMubG9jYWxSb3RhdGlvbiwgdGhpcy5sb2NhbFBvc2l0aW9uLCB0aGlzLmxvY2FsU2NhbGUpO1xuICAgICAgICB0aGlzLnNldExvY2FsRGlydHkoZmFsc2UpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5sb2NhbFRyYW5zZm9ybTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0V29ybGRUcmFuc2Zvcm1cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0V29ybGRUcmFuc2Zvcm0oKSB7XG4gICAgICBpZiAoIXRoaXMuaXNMb2NhbERpcnR5KCkgJiYgIXRoaXMuaXNEaXJ0eSgpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndvcmxkVHJhbnNmb3JtO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5wYXJlbnQpIHtcbiAgICAgICAgdGhpcy5wYXJlbnQuZ2V0V29ybGRUcmFuc2Zvcm0oKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy51cGRhdGVUcmFuc2Zvcm0oKTtcbiAgICAgIHJldHVybiB0aGlzLndvcmxkVHJhbnNmb3JtO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRQb3NpdGlvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRQb3NpdGlvbigpIHtcbiAgICAgIG1hdDQuZ2V0VHJhbnNsYXRpb24odGhpcy5wb3NpdGlvbiwgdGhpcy53b3JsZFRyYW5zZm9ybSk7XG4gICAgICByZXR1cm4gdGhpcy5wb3NpdGlvbjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Um90YXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Um90YXRpb24oKSB7XG4gICAgICBtYXQ0LmdldFJvdGF0aW9uKHRoaXMucm90YXRpb24sIHRoaXMud29ybGRUcmFuc2Zvcm0pO1xuICAgICAgcmV0dXJuIHRoaXMucm90YXRpb247XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFNjYWxlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFNjYWxlKCkge1xuICAgICAgbWF0NC5nZXRTY2FsaW5nKHRoaXMuc2NhbGluZywgdGhpcy53b3JsZFRyYW5zZm9ybSk7XG4gICAgICByZXR1cm4gdGhpcy5zY2FsaW5nO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBUcmFuc2Zvcm1Db21wb25lbnQ7XG59KENvbXBvbmVudCk7XG5UcmFuc2Zvcm1Db21wb25lbnQuRElSVFkgPSAxIDw8IDA7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UcmFuc2Zvcm1Db21wb25lbnQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/TransformComponent.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/identifier.js":
/*!**************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/identifier.js ***!
\**************************************************************************************/
/*! exports provided: IDENTIFIER */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IDENTIFIER\", function() { return IDENTIFIER; });\nvar IDENTIFIER = {\n // SceneGraph\n HierarchyComponentManager: Symbol('HierarchyComponentManager'),\n TransformComponentManager: Symbol('TransformComponentManager'),\n NameComponentManager: Symbol('NameComponentManager'),\n SceneGraphSystem: Symbol('SceneGraphSystem'),\n // FrameGraph\n FrameGraphSystem: Symbol('FrameGraphSystem'),\n ResourcePool: Symbol('ResourcePool'),\n ResourceHandleComponentManager: Symbol('ResourceHandleComponentManager'),\n PassNodeComponentManager: Symbol('PassNodeComponentManager'),\n // Renderer\n RendererSystem: Symbol('RendererSystem'),\n RenderPass: Symbol('RenderPass'),\n RenderPassFactory: Symbol('Factory'),\n Renderable: Symbol('Factory'),\n // Mesh\n MeshSystem: Symbol('MeshSystem'),\n MeshComponentManager: Symbol('MeshComponentManager'),\n CullableComponentManager: Symbol('CullableComponentManager'),\n // Geometry\n Geometry: Symbol('Geometry'),\n GeometrySystem: Symbol('GeometrySystem'),\n GeometryComponentManager: Symbol('GeometryComponentManager'),\n // Material\n Material: Symbol('Material'),\n MaterialSystem: Symbol('MaterialSystem'),\n MaterialComponentManager: Symbol('MaterialComponentManager'),\n // RenderPath\n ForwardRenderPath: Symbol('ForwardRenderPath'),\n // ComputeSystem\n ComputeSystem: Symbol('ComputeSystem'),\n ComputeComponentManager: Symbol('ComputeComponentManager'),\n ComputeStrategy: Symbol('ComputeStrategy'),\n Systems: Symbol('Systems'),\n World: Symbol('World'),\n // RenderEngine\n RenderEngine: Symbol('RenderEngine'),\n WebGPUEngine: Symbol('WebGPUEngine'),\n WebGLEngine: Symbol('WebGLEngine'),\n // Shader Module\n ShaderModuleService: Symbol('ShaderModuleService'),\n ConfigService: Symbol('ConfigService'),\n InteractorService: Symbol('InteractorService'),\n IEventEmitter: Symbol('IEventEmitter'),\n // Light\n Light: Symbol('Light')\n};\n//# sourceMappingURL=identifier.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9pZGVudGlmaWVyLmpzPzVjZGQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvaWRlbnRpZmllci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgSURFTlRJRklFUiA9IHtcbiAgLy8gU2NlbmVHcmFwaFxuICBIaWVyYXJjaHlDb21wb25lbnRNYW5hZ2VyOiBTeW1ib2woJ0hpZXJhcmNoeUNvbXBvbmVudE1hbmFnZXInKSxcbiAgVHJhbnNmb3JtQ29tcG9uZW50TWFuYWdlcjogU3ltYm9sKCdUcmFuc2Zvcm1Db21wb25lbnRNYW5hZ2VyJyksXG4gIE5hbWVDb21wb25lbnRNYW5hZ2VyOiBTeW1ib2woJ05hbWVDb21wb25lbnRNYW5hZ2VyJyksXG4gIFNjZW5lR3JhcGhTeXN0ZW06IFN5bWJvbCgnU2NlbmVHcmFwaFN5c3RlbScpLFxuICAvLyBGcmFtZUdyYXBoXG4gIEZyYW1lR3JhcGhTeXN0ZW06IFN5bWJvbCgnRnJhbWVHcmFwaFN5c3RlbScpLFxuICBSZXNvdXJjZVBvb2w6IFN5bWJvbCgnUmVzb3VyY2VQb29sJyksXG4gIFJlc291cmNlSGFuZGxlQ29tcG9uZW50TWFuYWdlcjogU3ltYm9sKCdSZXNvdXJjZUhhbmRsZUNvbXBvbmVudE1hbmFnZXInKSxcbiAgUGFzc05vZGVDb21wb25lbnRNYW5hZ2VyOiBTeW1ib2woJ1Bhc3NOb2RlQ29tcG9uZW50TWFuYWdlcicpLFxuICAvLyBSZW5kZXJlclxuICBSZW5kZXJlclN5c3RlbTogU3ltYm9sKCdSZW5kZXJlclN5c3RlbScpLFxuICBSZW5kZXJQYXNzOiBTeW1ib2woJ1JlbmRlclBhc3MnKSxcbiAgUmVuZGVyUGFzc0ZhY3Rvcnk6IFN5bWJvbCgnRmFjdG9yeTxJUmVuZGVyUGFzcz4nKSxcbiAgUmVuZGVyYWJsZTogU3ltYm9sKCdGYWN0b3J5PElSZW5kZXJQYXNzPicpLFxuICAvLyBNZXNoXG4gIE1lc2hTeXN0ZW06IFN5bWJvbCgnTWVzaFN5c3RlbScpLFxuICBNZXNoQ29tcG9uZW50TWFuYWdlcjogU3ltYm9sKCdNZXNoQ29tcG9uZW50TWFuYWdlcicpLFxuICBDdWxsYWJsZUNvbXBvbmVudE1hbmFnZXI6IFN5bWJvbCgnQ3VsbGFibGVDb21wb25lbnRNYW5hZ2VyJyksXG4gIC8vIEdlb21ldHJ5XG4gIEdlb21ldHJ5OiBTeW1ib2woJ0dlb21ldHJ5JyksXG4gIEdlb21ldHJ5U3lzdGVtOiBTeW1ib2woJ0dlb21ldHJ5U3lzdGVtJyksXG4gIEdlb21ldHJ5Q29tcG9uZW50TWFuYWdlcjogU3ltYm9sKCdHZW9tZXRyeUNvbXBvbmVudE1hbmFnZXInKSxcbiAgLy8gTWF0ZXJpYWxcbiAgTWF0ZXJpYWw6IFN5bWJvbCgnTWF0ZXJpYWwnKSxcbiAgTWF0ZXJpYWxTeXN0ZW06IFN5bWJvbCgnTWF0ZXJpYWxTeXN0ZW0nKSxcbiAgTWF0ZXJpYWxDb21wb25lbnRNYW5hZ2VyOiBTeW1ib2woJ01hdGVyaWFsQ29tcG9uZW50TWFuYWdlcicpLFxuICAvLyBSZW5kZXJQYXRoXG4gIEZvcndhcmRSZW5kZXJQYXRoOiBTeW1ib2woJ0ZvcndhcmRSZW5kZXJQYXRoJyksXG4gIC8vIENvbXB1dGVTeXN0ZW1cbiAgQ29tcHV0ZVN5c3RlbTogU3ltYm9sKCdDb21wdXRlU3lzdGVtJyksXG4gIENvbXB1dGVDb21wb25lbnRNYW5hZ2VyOiBTeW1ib2woJ0NvbXB1dGVDb21wb25lbnRNYW5hZ2VyJyksXG4gIENvbXB1dGVTdHJhdGVneTogU3ltYm9sKCdDb21wdXRlU3RyYXRlZ3knKSxcbiAgU3lzdGVtczogU3ltYm9sKCdTeXN0ZW1zJyksXG4gIFdvcmxkOiBTeW1ib2woJ1dvcmxkJyksXG4gIC8vIFJlbmRlckVuZ2luZVxuICBSZW5kZXJFbmdpbmU6IFN5bWJvbCgnUmVuZGVyRW5naW5lJyksXG4gIFdlYkdQVUVuZ2luZTogU3ltYm9sKCdXZWJHUFVFbmdpbmUnKSxcbiAgV2ViR0xFbmdpbmU6IFN5bWJvbCgnV2ViR0xFbmdpbmUnKSxcbiAgLy8gU2hhZGVyIE1vZHVsZVxuICBTaGFkZXJNb2R1bGVTZXJ2aWNlOiBTeW1ib2woJ1NoYWRlck1vZHVsZVNlcnZpY2UnKSxcbiAgQ29uZmlnU2VydmljZTogU3ltYm9sKCdDb25maWdTZXJ2aWNlJyksXG4gIEludGVyYWN0b3JTZXJ2aWNlOiBTeW1ib2woJ0ludGVyYWN0b3JTZXJ2aWNlJyksXG4gIElFdmVudEVtaXR0ZXI6IFN5bWJvbCgnSUV2ZW50RW1pdHRlcicpLFxuICAvLyBMaWdodFxuICBMaWdodDogU3ltYm9sKCdMaWdodCcpXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aWRlbnRpZmllci5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/identifier.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js":
/*!*********************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js ***!
\*********************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AST_TOKEN_TYPES\", function() { return AST_TOKEN_TYPES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AST_NODE_TYPES\", function() { return AST_NODE_TYPES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"STORAGE_CLASS\", function() { return STORAGE_CLASS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Target\", function() { return Target; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DefineValuePlaceholder\", function() { return DefineValuePlaceholder; });\n/* harmony import */ var reflect_metadata__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! reflect-metadata */ \"./node_modules/_reflect-metadata@0.1.13@reflect-metadata/Reflect.js\");\n/* harmony import */ var reflect_metadata__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(reflect_metadata__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _ComponentManager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ComponentManager */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/ComponentManager.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Component\", function() { return _ComponentManager__WEBPACK_IMPORTED_MODULE_1__[\"Component\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ComponentManager\", function() { return _ComponentManager__WEBPACK_IMPORTED_MODULE_1__[\"ComponentManager\"]; });\n\n/* harmony import */ var _components_framegraph_System__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/framegraph/System */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/System.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"FrameGraphSystem\", function() { return _components_framegraph_System__WEBPACK_IMPORTED_MODULE_2__[\"FrameGraphSystem\"]; });\n\n/* harmony import */ var _components_geometry_GeometryComponent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/geometry/GeometryComponent */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/geometry/GeometryComponent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GeometryComponent\", function() { return _components_geometry_GeometryComponent__WEBPACK_IMPORTED_MODULE_3__[\"GeometryComponent\"]; });\n\n/* harmony import */ var _components_geometry_System__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/geometry/System */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/geometry/System.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"GeometrySystem\", function() { return _components_geometry_System__WEBPACK_IMPORTED_MODULE_4__[\"GeometrySystem\"]; });\n\n/* harmony import */ var _components_material_MaterialComponent__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/material/MaterialComponent */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/material/MaterialComponent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MaterialComponent\", function() { return _components_material_MaterialComponent__WEBPACK_IMPORTED_MODULE_5__[\"MaterialComponent\"]; });\n\n/* harmony import */ var _components_material_System__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/material/System */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/material/System.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MaterialSystem\", function() { return _components_material_System__WEBPACK_IMPORTED_MODULE_6__[\"MaterialSystem\"]; });\n\n/* harmony import */ var _components_mesh_CullableComponent__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/mesh/CullableComponent */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/CullableComponent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CullableComponent\", function() { return _components_mesh_CullableComponent__WEBPACK_IMPORTED_MODULE_7__[\"CullableComponent\"]; });\n\n/* harmony import */ var _components_mesh_MeshComponent__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./components/mesh/MeshComponent */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/MeshComponent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MeshComponent\", function() { return _components_mesh_MeshComponent__WEBPACK_IMPORTED_MODULE_8__[\"MeshComponent\"]; });\n\n/* harmony import */ var _components_mesh_System__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/mesh/System */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/System.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MeshSystem\", function() { return _components_mesh_System__WEBPACK_IMPORTED_MODULE_9__[\"MeshSystem\"]; });\n\n/* harmony import */ var _components_renderer_passes_PixelPickingPass__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./components/renderer/passes/PixelPickingPass */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/passes/PixelPickingPass.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PixelPickingPass\", function() { return _components_renderer_passes_PixelPickingPass__WEBPACK_IMPORTED_MODULE_10__[\"PixelPickingPass\"]; });\n\n/* harmony import */ var _components_renderer_System__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./components/renderer/System */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/System.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"RendererSystem\", function() { return _components_renderer_System__WEBPACK_IMPORTED_MODULE_11__[\"RendererSystem\"]; });\n\n/* harmony import */ var _components_scenegraph_HierarchyComponent__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./components/scenegraph/HierarchyComponent */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/HierarchyComponent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"HierarchyComponent\", function() { return _components_scenegraph_HierarchyComponent__WEBPACK_IMPORTED_MODULE_12__[\"HierarchyComponent\"]; });\n\n/* harmony import */ var _components_scenegraph_System__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./components/scenegraph/System */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/System.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SceneGraphSystem\", function() { return _components_scenegraph_System__WEBPACK_IMPORTED_MODULE_13__[\"SceneGraphSystem\"]; });\n\n/* harmony import */ var _components_scenegraph_TransformComponent__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./components/scenegraph/TransformComponent */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/TransformComponent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TransformComponent\", function() { return _components_scenegraph_TransformComponent__WEBPACK_IMPORTED_MODULE_14__[\"TransformComponent\"]; });\n\n/* harmony import */ var _Entity__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./Entity */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/Entity.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createEntity\", function() { return _Entity__WEBPACK_IMPORTED_MODULE_15__[\"createEntity\"]; });\n\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./identifier */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/identifier.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"IDENTIFIER\", function() { return _identifier__WEBPACK_IMPORTED_MODULE_16__[\"IDENTIFIER\"]; });\n\n/* harmony import */ var _inversify_config__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./inversify.config */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/inversify.config.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"container\", function() { return _inversify_config__WEBPACK_IMPORTED_MODULE_17__[\"container\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createWorldContainer\", function() { return _inversify_config__WEBPACK_IMPORTED_MODULE_17__[\"createWorldContainer\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"lazyInject\", function() { return _inversify_config__WEBPACK_IMPORTED_MODULE_17__[\"lazyInject\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"lazyMultiInject\", function() { return _inversify_config__WEBPACK_IMPORTED_MODULE_17__[\"lazyMultiInject\"]; });\n\n/* harmony import */ var _utils_aabb__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./utils/aabb */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/aabb.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"generateAABBFromVertices\", function() { return _utils_aabb__WEBPACK_IMPORTED_MODULE_18__[\"generateAABBFromVertices\"]; });\n\n/* harmony import */ var _utils_isSafari__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./utils/isSafari */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/isSafari.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isSafari\", function() { return _utils_isSafari__WEBPACK_IMPORTED_MODULE_19__[\"isSafari\"]; });\n\n/* empty/unused harmony star reexport *//* harmony import */ var _services__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./services */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigService\", function() { return _services__WEBPACK_IMPORTED_MODULE_20__[\"ConfigService\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"IInteractorEvent\", function() { return _services__WEBPACK_IMPORTED_MODULE_20__[\"IInteractorEvent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"InteractorService\", function() { return _services__WEBPACK_IMPORTED_MODULE_20__[\"InteractorService\"]; });\n\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./shape */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AABB\", function() { return _shape__WEBPACK_IMPORTED_MODULE_21__[\"AABB\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"BoundingSphere\", function() { return _shape__WEBPACK_IMPORTED_MODULE_21__[\"BoundingSphere\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Mask\", function() { return _shape__WEBPACK_IMPORTED_MODULE_21__[\"Mask\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Frustum\", function() { return _shape__WEBPACK_IMPORTED_MODULE_21__[\"Frustum\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Plane\", function() { return _shape__WEBPACK_IMPORTED_MODULE_21__[\"Plane\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Ray\", function() { return _shape__WEBPACK_IMPORTED_MODULE_21__[\"Ray\"]; });\n\n/* harmony import */ var _components_renderer__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./components/renderer */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/index.js\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _components_renderer__WEBPACK_IMPORTED_MODULE_22__) if([\"default\",\"container\",\"createWorldContainer\",\"lazyInject\",\"lazyMultiInject\",\"createEntity\",\"Component\",\"ComponentManager\",\"IDENTIFIER\",\"FrameGraphSystem\",\"GeometrySystem\",\"RendererSystem\",\"MaterialSystem\",\"MeshSystem\",\"SceneGraphSystem\",\"CullableComponent\",\"MeshComponent\",\"TransformComponent\",\"MaterialComponent\",\"GeometryComponent\",\"HierarchyComponent\",\"isSafari\",\"generateAABBFromVertices\",\"PixelPickingPass\",\"AST_TOKEN_TYPES\",\"AST_NODE_TYPES\",\"STORAGE_CLASS\",\"Target\",\"DefineValuePlaceholder\",\"ConfigService\",\"IInteractorEvent\",\"InteractorService\",\"AABB\",\"BoundingSphere\",\"Mask\",\"Frustum\",\"Plane\",\"Ray\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _components_renderer__WEBPACK_IMPORTED_MODULE_22__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _components_material_interface__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./components/material/interface */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/material/interface.js\");\n/* harmony import */ var _components_material_interface__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(_components_material_interface__WEBPACK_IMPORTED_MODULE_23__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _components_material_interface__WEBPACK_IMPORTED_MODULE_23__) if([\"default\",\"container\",\"createWorldContainer\",\"lazyInject\",\"lazyMultiInject\",\"createEntity\",\"Component\",\"ComponentManager\",\"IDENTIFIER\",\"FrameGraphSystem\",\"GeometrySystem\",\"RendererSystem\",\"MaterialSystem\",\"MeshSystem\",\"SceneGraphSystem\",\"CullableComponent\",\"MeshComponent\",\"TransformComponent\",\"MaterialComponent\",\"GeometryComponent\",\"HierarchyComponent\",\"isSafari\",\"generateAABBFromVertices\",\"PixelPickingPass\",\"AST_TOKEN_TYPES\",\"AST_NODE_TYPES\",\"STORAGE_CLASS\",\"Target\",\"DefineValuePlaceholder\",\"ConfigService\",\"IInteractorEvent\",\"InteractorService\",\"AABB\",\"BoundingSphere\",\"Mask\",\"Frustum\",\"Plane\",\"Ray\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _components_material_interface__WEBPACK_IMPORTED_MODULE_23__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _components_mesh_interface__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./components/mesh/interface */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/interface.js\");\n/* harmony import */ var _components_mesh_interface__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(_components_mesh_interface__WEBPACK_IMPORTED_MODULE_24__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _components_mesh_interface__WEBPACK_IMPORTED_MODULE_24__) if([\"default\",\"container\",\"createWorldContainer\",\"lazyInject\",\"lazyMultiInject\",\"createEntity\",\"Component\",\"ComponentManager\",\"IDENTIFIER\",\"FrameGraphSystem\",\"GeometrySystem\",\"RendererSystem\",\"MaterialSystem\",\"MeshSystem\",\"SceneGraphSystem\",\"CullableComponent\",\"MeshComponent\",\"TransformComponent\",\"MaterialComponent\",\"GeometryComponent\",\"HierarchyComponent\",\"isSafari\",\"generateAABBFromVertices\",\"PixelPickingPass\",\"AST_TOKEN_TYPES\",\"AST_NODE_TYPES\",\"STORAGE_CLASS\",\"Target\",\"DefineValuePlaceholder\",\"ConfigService\",\"IInteractorEvent\",\"InteractorService\",\"AABB\",\"BoundingSphere\",\"Mask\",\"Frustum\",\"Plane\",\"Ray\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _components_mesh_interface__WEBPACK_IMPORTED_MODULE_24__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _components_renderer__WEBPACK_IMPORTED_MODULE_22__) if([\"default\",\"container\",\"createWorldContainer\",\"lazyInject\",\"lazyMultiInject\",\"createEntity\",\"Component\",\"ComponentManager\",\"IDENTIFIER\",\"FrameGraphSystem\",\"GeometrySystem\",\"RendererSystem\",\"MaterialSystem\",\"MeshSystem\",\"SceneGraphSystem\",\"CullableComponent\",\"MeshComponent\",\"TransformComponent\",\"MaterialComponent\",\"GeometryComponent\",\"HierarchyComponent\",\"isSafari\",\"generateAABBFromVertices\",\"PixelPickingPass\",\"AST_TOKEN_TYPES\",\"AST_NODE_TYPES\",\"STORAGE_CLASS\",\"Target\",\"DefineValuePlaceholder\",\"ConfigService\",\"IInteractorEvent\",\"InteractorService\",\"AABB\",\"BoundingSphere\",\"Mask\",\"Frustum\",\"Plane\",\"Ray\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _components_renderer__WEBPACK_IMPORTED_MODULE_22__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n// tslint:disable-next-line:no-reference\n/// \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * inspired by Entitas' Systems\n * @see https://github.com/sschmid/Entitas-CSharp/wiki/Systems\n */\n\nvar AST_TOKEN_TYPES;\n\n(function (AST_TOKEN_TYPES) {\n AST_TOKEN_TYPES[\"Void\"] = \"Void\";\n AST_TOKEN_TYPES[\"Boolean\"] = \"Boolean\";\n AST_TOKEN_TYPES[\"Float\"] = \"Float\";\n AST_TOKEN_TYPES[\"Uint32\"] = \"Uint32\";\n AST_TOKEN_TYPES[\"Int32\"] = \"Int32\";\n AST_TOKEN_TYPES[\"Vector\"] = \"Vector\";\n AST_TOKEN_TYPES[\"Vector2Float\"] = \"vec2\";\n AST_TOKEN_TYPES[\"Vector3Float\"] = \"vec3\";\n AST_TOKEN_TYPES[\"Vector4Float\"] = \"vec4\";\n AST_TOKEN_TYPES[\"Vector2Boolean\"] = \"vec2\";\n AST_TOKEN_TYPES[\"Vector3Boolean\"] = \"vec3\";\n AST_TOKEN_TYPES[\"Vector4Boolean\"] = \"vec4\";\n AST_TOKEN_TYPES[\"Vector2Uint\"] = \"vec2\";\n AST_TOKEN_TYPES[\"Vector3Uint\"] = \"vec3\";\n AST_TOKEN_TYPES[\"Vector4Uint\"] = \"vec4\";\n AST_TOKEN_TYPES[\"Vector2Int\"] = \"vec2\";\n AST_TOKEN_TYPES[\"Vector3Int\"] = \"vec3\";\n AST_TOKEN_TYPES[\"Vector4Int\"] = \"vec4\";\n AST_TOKEN_TYPES[\"Matrix\"] = \"Matrix\";\n AST_TOKEN_TYPES[\"Matrix3x3Float\"] = \"mat3x3\";\n AST_TOKEN_TYPES[\"Matrix4x4Float\"] = \"mat4x4\";\n AST_TOKEN_TYPES[\"Struct\"] = \"Struct\";\n AST_TOKEN_TYPES[\"FloatArray\"] = \"Float[]\";\n AST_TOKEN_TYPES[\"Vector4FloatArray\"] = \"vec4[]\";\n})(AST_TOKEN_TYPES || (AST_TOKEN_TYPES = {}));\n\nvar AST_NODE_TYPES;\n\n(function (AST_NODE_TYPES) {\n AST_NODE_TYPES[\"Program\"] = \"Program\";\n AST_NODE_TYPES[\"Identifier\"] = \"Identifier\";\n AST_NODE_TYPES[\"VariableDeclaration\"] = \"VariableDeclaration\";\n AST_NODE_TYPES[\"BlockStatement\"] = \"BlockStatement\";\n AST_NODE_TYPES[\"ReturnStatement\"] = \"ReturnStatement\";\n AST_NODE_TYPES[\"FunctionDeclaration\"] = \"FunctionDeclaration\";\n AST_NODE_TYPES[\"VariableDeclarator\"] = \"VariableDeclarator\";\n AST_NODE_TYPES[\"AssignmentExpression\"] = \"AssignmentExpression\";\n AST_NODE_TYPES[\"LogicalExpression\"] = \"LogicalExpression\";\n AST_NODE_TYPES[\"BinaryExpression\"] = \"BinaryExpression\";\n AST_NODE_TYPES[\"ArrayExpression\"] = \"ArrayExpression\";\n AST_NODE_TYPES[\"UnaryExpression\"] = \"UnaryExpression\";\n AST_NODE_TYPES[\"UpdateExpression\"] = \"UpdateExpression\";\n AST_NODE_TYPES[\"FunctionExpression\"] = \"FunctionExpression\";\n AST_NODE_TYPES[\"MemberExpression\"] = \"MemberExpression\";\n AST_NODE_TYPES[\"ConditionalExpression\"] = \"ConditionalExpression\";\n AST_NODE_TYPES[\"ExpressionStatement\"] = \"ExpressionStatement\";\n AST_NODE_TYPES[\"CallExpression\"] = \"CallExpression\";\n AST_NODE_TYPES[\"NumThreadStatement\"] = \"NumThreadStatement\";\n AST_NODE_TYPES[\"StorageStatement\"] = \"StorageStatement\";\n AST_NODE_TYPES[\"DoWhileStatement\"] = \"DoWhileStatement\";\n AST_NODE_TYPES[\"WhileStatement\"] = \"WhileStatement\";\n AST_NODE_TYPES[\"ForStatement\"] = \"ForStatement\";\n AST_NODE_TYPES[\"BreakStatement\"] = \"BreakStatement\";\n AST_NODE_TYPES[\"ContinueStatement\"] = \"ContinueStatement\";\n AST_NODE_TYPES[\"IfStatement\"] = \"IfStatement\";\n AST_NODE_TYPES[\"ImportedFunctionStatement\"] = \"ImportedFunctionStatement\";\n})(AST_NODE_TYPES || (AST_NODE_TYPES = {}));\n\nvar STORAGE_CLASS;\n\n(function (STORAGE_CLASS) {\n STORAGE_CLASS[\"Input\"] = \"Input\";\n STORAGE_CLASS[\"Output\"] = \"Output\";\n STORAGE_CLASS[\"Uniform\"] = \"Uniform\";\n STORAGE_CLASS[\"Workgroup\"] = \"Workgroup\";\n STORAGE_CLASS[\"UniformConstant\"] = \"UniformConstant\";\n STORAGE_CLASS[\"Image\"] = \"Image\";\n STORAGE_CLASS[\"StorageBuffer\"] = \"StorageBuffer\";\n STORAGE_CLASS[\"Private\"] = \"Private\";\n STORAGE_CLASS[\"Function\"] = \"Function\";\n})(STORAGE_CLASS || (STORAGE_CLASS = {}));\n\n/**\n * 根据目标平台生成 Shader 代码\n * * WebGL GLSL 1.0\n * * WebGPU Chrome/Edge GLSL 4.5 & WGSL @see https://gpuweb.github.io/gpuweb/wgsl.html\n * * Safari WHLSL (maybe deprecated)\n */\nvar Target;\n\n(function (Target) {\n Target[\"GLSL100\"] = \"GLSL100\";\n Target[\"GLSL450\"] = \"GLSL450\";\n Target[\"WGSL\"] = \"WGSL\";\n})(Target || (Target = {}));\n\nvar DefineValuePlaceholder = '__DefineValuePlaceholder__';\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9pbmRleC5qcz9kOGY4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDMEI7QUFDdUM7QUFDQztBQUNVO0FBQ2Q7QUFDYztBQUNkO0FBQ1U7QUFDUjtBQUNWO0FBQzJCO0FBQ25CO0FBQ2tCO0FBQ2Q7QUFDYztBQUN4QztBQUNFO0FBQ3dEO0FBQzFDO0FBQ1o7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLDBDQUEwQzs7QUFFM0M7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLHdDQUF3Qzs7QUFFekM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLHNDQUFzQzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLHdCQUF3Qjs7QUFFekI7QUFDbUM7QUFDUjtBQUNIO0FBQ2M7QUFDVTtBQUNKO0FBQ047QUFFaVE7QUFDdlMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1yZWZlcmVuY2Vcbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvQHdlYmdwdS90eXBlcy9kaXN0L2luZGV4LmQudHNcIiAvPlxuaW1wb3J0ICdyZWZsZWN0LW1ldGFkYXRhJztcbmltcG9ydCB7IENvbXBvbmVudCwgQ29tcG9uZW50TWFuYWdlciB9IGZyb20gJy4vQ29tcG9uZW50TWFuYWdlcic7XG5pbXBvcnQgeyBGcmFtZUdyYXBoU3lzdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvU3lzdGVtJztcbmltcG9ydCB7IEdlb21ldHJ5Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2dlb21ldHJ5L0dlb21ldHJ5Q29tcG9uZW50JztcbmltcG9ydCB7IEdlb21ldHJ5U3lzdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL2dlb21ldHJ5L1N5c3RlbSc7XG5pbXBvcnQgeyBNYXRlcmlhbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9tYXRlcmlhbC9NYXRlcmlhbENvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXRlcmlhbFN5c3RlbSB9IGZyb20gJy4vY29tcG9uZW50cy9tYXRlcmlhbC9TeXN0ZW0nO1xuaW1wb3J0IHsgQ3VsbGFibGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbWVzaC9DdWxsYWJsZUNvbXBvbmVudCc7XG5pbXBvcnQgeyBNZXNoQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL21lc2gvTWVzaENvbXBvbmVudCc7XG5pbXBvcnQgeyBNZXNoU3lzdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL21lc2gvU3lzdGVtJztcbmltcG9ydCB7IFBpeGVsUGlja2luZ1Bhc3MgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVuZGVyZXIvcGFzc2VzL1BpeGVsUGlja2luZ1Bhc3MnO1xuaW1wb3J0IHsgUmVuZGVyZXJTeXN0ZW0gfSBmcm9tICcuL2NvbXBvbmVudHMvcmVuZGVyZXIvU3lzdGVtJztcbmltcG9ydCB7IEhpZXJhcmNoeUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9zY2VuZWdyYXBoL0hpZXJhcmNoeUNvbXBvbmVudCc7XG5pbXBvcnQgeyBTY2VuZUdyYXBoU3lzdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL3NjZW5lZ3JhcGgvU3lzdGVtJztcbmltcG9ydCB7IFRyYW5zZm9ybUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9zY2VuZWdyYXBoL1RyYW5zZm9ybUNvbXBvbmVudCc7XG5pbXBvcnQgeyBjcmVhdGVFbnRpdHkgfSBmcm9tICcuL0VudGl0eSc7XG5pbXBvcnQgeyBJREVOVElGSUVSIH0gZnJvbSAnLi9pZGVudGlmaWVyJztcbmltcG9ydCB7IGNvbnRhaW5lciwgY3JlYXRlV29ybGRDb250YWluZXIsIGxhenlJbmplY3QsIGxhenlNdWx0aUluamVjdCB9IGZyb20gJy4vaW52ZXJzaWZ5LmNvbmZpZyc7XG5pbXBvcnQgeyBnZW5lcmF0ZUFBQkJGcm9tVmVydGljZXMgfSBmcm9tICcuL3V0aWxzL2FhYmInO1xuaW1wb3J0IHsgaXNTYWZhcmkgfSBmcm9tICcuL3V0aWxzL2lzU2FmYXJpJztcbi8qKlxuICogaW5zcGlyZWQgYnkgRW50aXRhcycgU3lzdGVtc1xuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vc3NjaG1pZC9FbnRpdGFzLUNTaGFycC93aWtpL1N5c3RlbXNcbiAqL1xuXG52YXIgQVNUX1RPS0VOX1RZUEVTO1xuXG4oZnVuY3Rpb24gKEFTVF9UT0tFTl9UWVBFUykge1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWb2lkXCJdID0gXCJWb2lkXCI7XG4gIEFTVF9UT0tFTl9UWVBFU1tcIkJvb2xlYW5cIl0gPSBcIkJvb2xlYW5cIjtcbiAgQVNUX1RPS0VOX1RZUEVTW1wiRmxvYXRcIl0gPSBcIkZsb2F0XCI7XG4gIEFTVF9UT0tFTl9UWVBFU1tcIlVpbnQzMlwiXSA9IFwiVWludDMyXCI7XG4gIEFTVF9UT0tFTl9UWVBFU1tcIkludDMyXCJdID0gXCJJbnQzMlwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWZWN0b3JcIl0gPSBcIlZlY3RvclwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWZWN0b3IyRmxvYXRcIl0gPSBcInZlYzI8ZjMyPlwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWZWN0b3IzRmxvYXRcIl0gPSBcInZlYzM8ZjMyPlwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWZWN0b3I0RmxvYXRcIl0gPSBcInZlYzQ8ZjMyPlwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWZWN0b3IyQm9vbGVhblwiXSA9IFwidmVjMjxib29sPlwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWZWN0b3IzQm9vbGVhblwiXSA9IFwidmVjMzxib29sPlwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWZWN0b3I0Qm9vbGVhblwiXSA9IFwidmVjNDxib29sPlwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWZWN0b3IyVWludFwiXSA9IFwidmVjMjx1MzI+XCI7XG4gIEFTVF9UT0tFTl9UWVBFU1tcIlZlY3RvcjNVaW50XCJdID0gXCJ2ZWMzPHUzMj5cIjtcbiAgQVNUX1RPS0VOX1RZUEVTW1wiVmVjdG9yNFVpbnRcIl0gPSBcInZlYzQ8dTMyPlwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJWZWN0b3IySW50XCJdID0gXCJ2ZWMyPGkzMj5cIjtcbiAgQVNUX1RPS0VOX1RZUEVTW1wiVmVjdG9yM0ludFwiXSA9IFwidmVjMzxpMzI+XCI7XG4gIEFTVF9UT0tFTl9UWVBFU1tcIlZlY3RvcjRJbnRcIl0gPSBcInZlYzQ8aTMyPlwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJNYXRyaXhcIl0gPSBcIk1hdHJpeFwiO1xuICBBU1RfVE9LRU5fVFlQRVNbXCJNYXRyaXgzeDNGbG9hdFwiXSA9IFwibWF0M3gzPGYzMj5cIjtcbiAgQVNUX1RPS0VOX1RZUEVTW1wiTWF0cml4NHg0RmxvYXRcIl0gPSBcIm1hdDR4NDxpMzI+XCI7XG4gIEFTVF9UT0tFTl9UWVBFU1tcIlN0cnVjdFwiXSA9IFwiU3RydWN0XCI7XG4gIEFTVF9UT0tFTl9UWVBFU1tcIkZsb2F0QXJyYXlcIl0gPSBcIkZsb2F0W11cIjtcbiAgQVNUX1RPS0VOX1RZUEVTW1wiVmVjdG9yNEZsb2F0QXJyYXlcIl0gPSBcInZlYzQ8ZjMyPltdXCI7XG59KShBU1RfVE9LRU5fVFlQRVMgfHwgKEFTVF9UT0tFTl9UWVBFUyA9IHt9KSk7XG5cbnZhciBBU1RfTk9ERV9UWVBFUztcblxuKGZ1bmN0aW9uIChBU1RfTk9ERV9UWVBFUykge1xuICBBU1RfTk9ERV9UWVBFU1tcIlByb2dyYW1cIl0gPSBcIlByb2dyYW1cIjtcbiAgQVNUX05PREVfVFlQRVNbXCJJZGVudGlmaWVyXCJdID0gXCJJZGVudGlmaWVyXCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiVmFyaWFibGVEZWNsYXJhdGlvblwiXSA9IFwiVmFyaWFibGVEZWNsYXJhdGlvblwiO1xuICBBU1RfTk9ERV9UWVBFU1tcIkJsb2NrU3RhdGVtZW50XCJdID0gXCJCbG9ja1N0YXRlbWVudFwiO1xuICBBU1RfTk9ERV9UWVBFU1tcIlJldHVyblN0YXRlbWVudFwiXSA9IFwiUmV0dXJuU3RhdGVtZW50XCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiRnVuY3Rpb25EZWNsYXJhdGlvblwiXSA9IFwiRnVuY3Rpb25EZWNsYXJhdGlvblwiO1xuICBBU1RfTk9ERV9UWVBFU1tcIlZhcmlhYmxlRGVjbGFyYXRvclwiXSA9IFwiVmFyaWFibGVEZWNsYXJhdG9yXCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiQXNzaWdubWVudEV4cHJlc3Npb25cIl0gPSBcIkFzc2lnbm1lbnRFeHByZXNzaW9uXCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiTG9naWNhbEV4cHJlc3Npb25cIl0gPSBcIkxvZ2ljYWxFeHByZXNzaW9uXCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiQmluYXJ5RXhwcmVzc2lvblwiXSA9IFwiQmluYXJ5RXhwcmVzc2lvblwiO1xuICBBU1RfTk9ERV9UWVBFU1tcIkFycmF5RXhwcmVzc2lvblwiXSA9IFwiQXJyYXlFeHByZXNzaW9uXCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiVW5hcnlFeHByZXNzaW9uXCJdID0gXCJVbmFyeUV4cHJlc3Npb25cIjtcbiAgQVNUX05PREVfVFlQRVNbXCJVcGRhdGVFeHByZXNzaW9uXCJdID0gXCJVcGRhdGVFeHByZXNzaW9uXCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiRnVuY3Rpb25FeHByZXNzaW9uXCJdID0gXCJGdW5jdGlvbkV4cHJlc3Npb25cIjtcbiAgQVNUX05PREVfVFlQRVNbXCJNZW1iZXJFeHByZXNzaW9uXCJdID0gXCJNZW1iZXJFeHByZXNzaW9uXCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiQ29uZGl0aW9uYWxFeHByZXNzaW9uXCJdID0gXCJDb25kaXRpb25hbEV4cHJlc3Npb25cIjtcbiAgQVNUX05PREVfVFlQRVNbXCJFeHByZXNzaW9uU3RhdGVtZW50XCJdID0gXCJFeHByZXNzaW9uU3RhdGVtZW50XCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiQ2FsbEV4cHJlc3Npb25cIl0gPSBcIkNhbGxFeHByZXNzaW9uXCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiTnVtVGhyZWFkU3RhdGVtZW50XCJdID0gXCJOdW1UaHJlYWRTdGF0ZW1lbnRcIjtcbiAgQVNUX05PREVfVFlQRVNbXCJTdG9yYWdlU3RhdGVtZW50XCJdID0gXCJTdG9yYWdlU3RhdGVtZW50XCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiRG9XaGlsZVN0YXRlbWVudFwiXSA9IFwiRG9XaGlsZVN0YXRlbWVudFwiO1xuICBBU1RfTk9ERV9UWVBFU1tcIldoaWxlU3RhdGVtZW50XCJdID0gXCJXaGlsZVN0YXRlbWVudFwiO1xuICBBU1RfTk9ERV9UWVBFU1tcIkZvclN0YXRlbWVudFwiXSA9IFwiRm9yU3RhdGVtZW50XCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiQnJlYWtTdGF0ZW1lbnRcIl0gPSBcIkJyZWFrU3RhdGVtZW50XCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiQ29udGludWVTdGF0ZW1lbnRcIl0gPSBcIkNvbnRpbnVlU3RhdGVtZW50XCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiSWZTdGF0ZW1lbnRcIl0gPSBcIklmU3RhdGVtZW50XCI7XG4gIEFTVF9OT0RFX1RZUEVTW1wiSW1wb3J0ZWRGdW5jdGlvblN0YXRlbWVudFwiXSA9IFwiSW1wb3J0ZWRGdW5jdGlvblN0YXRlbWVudFwiO1xufSkoQVNUX05PREVfVFlQRVMgfHwgKEFTVF9OT0RFX1RZUEVTID0ge30pKTtcblxudmFyIFNUT1JBR0VfQ0xBU1M7XG5cbihmdW5jdGlvbiAoU1RPUkFHRV9DTEFTUykge1xuICBTVE9SQUdFX0NMQVNTW1wiSW5wdXRcIl0gPSBcIklucHV0XCI7XG4gIFNUT1JBR0VfQ0xBU1NbXCJPdXRwdXRcIl0gPSBcIk91dHB1dFwiO1xuICBTVE9SQUdFX0NMQVNTW1wiVW5pZm9ybVwiXSA9IFwiVW5pZm9ybVwiO1xuICBTVE9SQUdFX0NMQVNTW1wiV29ya2dyb3VwXCJdID0gXCJXb3JrZ3JvdXBcIjtcbiAgU1RPUkFHRV9DTEFTU1tcIlVuaWZvcm1Db25zdGFudFwiXSA9IFwiVW5pZm9ybUNvbnN0YW50XCI7XG4gIFNUT1JBR0VfQ0xBU1NbXCJJbWFnZVwiXSA9IFwiSW1hZ2VcIjtcbiAgU1RPUkFHRV9DTEFTU1tcIlN0b3JhZ2VCdWZmZXJcIl0gPSBcIlN0b3JhZ2VCdWZmZXJcIjtcbiAgU1RPUkFHRV9DTEFTU1tcIlByaXZhdGVcIl0gPSBcIlByaXZhdGVcIjtcbiAgU1RPUkFHRV9DTEFTU1tcIkZ1bmN0aW9uXCJdID0gXCJGdW5jdGlvblwiO1xufSkoU1RPUkFHRV9DTEFTUyB8fCAoU1RPUkFHRV9DTEFTUyA9IHt9KSk7XG5cbi8qKlxuICog5qC55o2u55uu5qCH5bmz5Y+w55Sf5oiQIFNoYWRlciDku6PnoIFcbiAqICogV2ViR0wgR0xTTCAxLjBcbiAqICogV2ViR1BVIENocm9tZS9FZGdlIEdMU0wgNC41ICYgV0dTTCBAc2VlIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvd2dzbC5odG1sXG4gKiAqIFNhZmFyaSBXSExTTCAobWF5YmUgZGVwcmVjYXRlZClcbiAqL1xudmFyIFRhcmdldDtcblxuKGZ1bmN0aW9uIChUYXJnZXQpIHtcbiAgVGFyZ2V0W1wiR0xTTDEwMFwiXSA9IFwiR0xTTDEwMFwiO1xuICBUYXJnZXRbXCJHTFNMNDUwXCJdID0gXCJHTFNMNDUwXCI7XG4gIFRhcmdldFtcIldHU0xcIl0gPSBcIldHU0xcIjtcbn0pKFRhcmdldCB8fCAoVGFyZ2V0ID0ge30pKTtcblxudmFyIERlZmluZVZhbHVlUGxhY2Vob2xkZXIgPSAnX19EZWZpbmVWYWx1ZVBsYWNlaG9sZGVyX18nO1xuZXhwb3J0ICogZnJvbSAnLi9Db21wb25lbnRNYW5hZ2VyJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9zaGFwZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvcmVuZGVyZXInO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL21hdGVyaWFsL2ludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvbWVzaC9pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3JlbmRlcmVyJztcbmV4cG9ydCB7IGNvbnRhaW5lciwgY3JlYXRlV29ybGRDb250YWluZXIsIGxhenlJbmplY3QsIGxhenlNdWx0aUluamVjdCwgY3JlYXRlRW50aXR5LCBDb21wb25lbnQsIENvbXBvbmVudE1hbmFnZXIsIElERU5USUZJRVIsIEZyYW1lR3JhcGhTeXN0ZW0sIEdlb21ldHJ5U3lzdGVtLCBSZW5kZXJlclN5c3RlbSAvLyBJbnRlcmFjdGlvblN5c3RlbSxcbiwgTWF0ZXJpYWxTeXN0ZW0sIE1lc2hTeXN0ZW0sIFNjZW5lR3JhcGhTeXN0ZW0sIEN1bGxhYmxlQ29tcG9uZW50LCBNZXNoQ29tcG9uZW50LCBUcmFuc2Zvcm1Db21wb25lbnQsIE1hdGVyaWFsQ29tcG9uZW50LCBHZW9tZXRyeUNvbXBvbmVudCwgSGllcmFyY2h5Q29tcG9uZW50LCBpc1NhZmFyaSwgZ2VuZXJhdGVBQUJCRnJvbVZlcnRpY2VzLCBQaXhlbFBpY2tpbmdQYXNzLCBBU1RfVE9LRU5fVFlQRVMsIEFTVF9OT0RFX1RZUEVTLCBTVE9SQUdFX0NMQVNTLCBUYXJnZXQsIERlZmluZVZhbHVlUGxhY2Vob2xkZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/inversify.config.js":
/*!********************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/inversify.config.js ***!
\********************************************************************************************/
/*! exports provided: container, lazyInject, lazyMultiInject, createWorldContainer */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"container\", function() { return container; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lazyInject\", function() { return lazyInject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lazyMultiInject\", function() { return lazyMultiInject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createWorldContainer\", function() { return createWorldContainer; });\n/* harmony import */ var reflect_metadata__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! reflect-metadata */ \"./node_modules/_reflect-metadata@0.1.13@reflect-metadata/Reflect.js\");\n/* harmony import */ var reflect_metadata__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(reflect_metadata__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var inversify_inject_decorators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! inversify-inject-decorators */ \"./node_modules/_inversify-inject-decorators@3.1.0@inversify-inject-decorators/lib/index.js\");\n/* harmony import */ var inversify_inject_decorators__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(inversify_inject_decorators__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _ComponentManager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ComponentManager */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/ComponentManager.js\");\n/* harmony import */ var _components_framegraph_ResourcePool__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/framegraph/ResourcePool */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/ResourcePool.js\");\n/* harmony import */ var _components_framegraph_System__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/framegraph/System */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/framegraph/System.js\");\n/* harmony import */ var _components_geometry_GeometryComponent__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/geometry/GeometryComponent */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/geometry/GeometryComponent.js\");\n/* harmony import */ var _components_geometry_System__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/geometry/System */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/geometry/System.js\");\n/* harmony import */ var _components_material_MaterialComponent__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./components/material/MaterialComponent */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/material/MaterialComponent.js\");\n/* harmony import */ var _components_material_System__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/material/System */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/material/System.js\");\n/* harmony import */ var _components_mesh_CullableComponent__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./components/mesh/CullableComponent */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/CullableComponent.js\");\n/* harmony import */ var _components_mesh_MeshComponent__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./components/mesh/MeshComponent */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/MeshComponent.js\");\n/* harmony import */ var _components_mesh_System__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./components/mesh/System */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/mesh/System.js\");\n/* harmony import */ var _components_renderer_passes_CopyPass__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./components/renderer/passes/CopyPass */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/passes/CopyPass.js\");\n/* harmony import */ var _components_renderer_passes_PixelPickingPass__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./components/renderer/passes/PixelPickingPass */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/passes/PixelPickingPass.js\");\n/* harmony import */ var _components_renderer_passes_RenderPass__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./components/renderer/passes/RenderPass */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/passes/RenderPass.js\");\n/* harmony import */ var _components_renderer_System__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./components/renderer/System */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/renderer/System.js\");\n/* harmony import */ var _components_scenegraph_HierarchyComponent__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./components/scenegraph/HierarchyComponent */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/HierarchyComponent.js\");\n/* harmony import */ var _components_scenegraph_NameComponent__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./components/scenegraph/NameComponent */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/NameComponent.js\");\n/* harmony import */ var _components_scenegraph_System__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./components/scenegraph/System */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/System.js\");\n/* harmony import */ var _components_scenegraph_TransformComponent__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./components/scenegraph/TransformComponent */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/components/scenegraph/TransformComponent.js\");\n/* harmony import */ var _identifier__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./identifier */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/identifier.js\");\n/* harmony import */ var _services_config_ConfigService__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./services/config/ConfigService */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/config/ConfigService.js\");\n/* harmony import */ var _services_interactor_IteractorService__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./services/interactor/IteractorService */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/interactor/IteractorService.js\");\n/* harmony import */ var _services_shader_module_ShaderModuleService__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./services/shader-module/ShaderModuleService */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/shader-module/ShaderModuleService.js\");\n/**\n * Root Container\n * @see /dev-docs/IoC 容器、依赖注入与服务说明.md\n */\n\n\n\n\n\n\n\n // import { InteractionSystem } from './components/interaction/System';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // @see https://github.com/inversify/InversifyJS/blob/master/wiki/container_api.md#defaultscope\n\nvar container = new inversify__WEBPACK_IMPORTED_MODULE_1__[\"Container\"](); // @see https://github.com/inversify/InversifyJS/blob/master/wiki/inheritance.md#what-can-i-do-when-my-base-class-is-provided-by-a-third-party-module\n// decorate(injectable(), EventEmitter);\n// container.bind(IDENTIFIER.IEventEmitter).to(EventEmitter);\n// 支持使用 new 而非容器实例化的场景,同时禁止 lazyInject cache\n// @see https://github.com/inversify/inversify-inject-decorators#caching-vs-non-caching-behaviour\n\nvar DECORATORS = inversify_inject_decorators__WEBPACK_IMPORTED_MODULE_2___default()(container, false);\n// Add babel legacy decorators support\n// @see https://github.com/inversify/InversifyJS/issues/1050\n// @see https://github.com/inversify/InversifyJS/issues/1026#issuecomment-504936034\nvar lazyInject = function lazyInject(serviceIdentifier) {\n var original = DECORATORS.lazyInject(serviceIdentifier); // the 'descriptor' parameter is actually always defined for class fields for Babel, but is considered undefined for TSC\n // so we just hack it with ?/! combination to avoid \"TS1240: Unable to resolve signature of property decorator when called as an expression\"\n\n return function (proto, key, descriptor) {\n // make it work as usual\n original.call(this, proto, key); // return link to proto, so own value wont be 'undefined' after component's creation\n\n if (descriptor) {\n descriptor.initializer = function () {\n return proto[key];\n };\n }\n };\n};\nvar lazyMultiInject = function lazyMultiInject(serviceIdentifier) {\n var original = DECORATORS.lazyMultiInject(serviceIdentifier); // the 'descriptor' parameter is actually always defined for class fields for Babel, but is considered undefined for TSC\n // so we just hack it with ?/! combination to avoid \"TS1240: Unable to resolve signature of property decorator when called as an expression\"\n\n return function (proto, key, descriptor) {\n // make it work as usual\n original.call(this, proto, key);\n\n if (descriptor) {\n // return link to proto, so own value wont be 'undefined' after component's creation\n descriptor.initializer = function () {\n return proto[key];\n };\n }\n };\n};\n/** global services */\n\ncontainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].ShaderModuleService).to(_services_shader_module_ShaderModuleService__WEBPACK_IMPORTED_MODULE_24__[\"default\"]).inSingletonScope();\n/**\n * bind global component managers in root container\n */\n\ncontainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].NameComponentManager).toConstantValue(new _ComponentManager__WEBPACK_IMPORTED_MODULE_3__[\"ComponentManager\"](_components_scenegraph_NameComponent__WEBPACK_IMPORTED_MODULE_18__[\"NameComponent\"]));\ncontainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].HierarchyComponentManager).toConstantValue(new _ComponentManager__WEBPACK_IMPORTED_MODULE_3__[\"ComponentManager\"](_components_scenegraph_HierarchyComponent__WEBPACK_IMPORTED_MODULE_17__[\"HierarchyComponent\"]));\ncontainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].TransformComponentManager).toConstantValue(new _ComponentManager__WEBPACK_IMPORTED_MODULE_3__[\"ComponentManager\"](_components_scenegraph_TransformComponent__WEBPACK_IMPORTED_MODULE_20__[\"TransformComponent\"]));\ncontainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].MeshComponentManager).toConstantValue(new _ComponentManager__WEBPACK_IMPORTED_MODULE_3__[\"ComponentManager\"](_components_mesh_MeshComponent__WEBPACK_IMPORTED_MODULE_11__[\"MeshComponent\"]));\ncontainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].CullableComponentManager).toConstantValue(new _ComponentManager__WEBPACK_IMPORTED_MODULE_3__[\"ComponentManager\"](_components_mesh_CullableComponent__WEBPACK_IMPORTED_MODULE_10__[\"CullableComponent\"]));\ncontainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].GeometryComponentManager).toConstantValue(new _ComponentManager__WEBPACK_IMPORTED_MODULE_3__[\"ComponentManager\"](_components_geometry_GeometryComponent__WEBPACK_IMPORTED_MODULE_6__[\"GeometryComponent\"]));\ncontainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].MaterialComponentManager).toConstantValue(new _ComponentManager__WEBPACK_IMPORTED_MODULE_3__[\"ComponentManager\"](_components_material_MaterialComponent__WEBPACK_IMPORTED_MODULE_8__[\"MaterialComponent\"])); // https://github.com/inversify/InversifyJS/blob/master/wiki/hierarchical_di.md#support-for-hierarchical-di-systems\n\nfunction createWorldContainer() {\n var worldContainer = new inversify__WEBPACK_IMPORTED_MODULE_1__[\"Container\"]();\n worldContainer.parent = container;\n /**\n * bind systems\n */\n\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].Systems).to(_components_scenegraph_System__WEBPACK_IMPORTED_MODULE_19__[\"SceneGraphSystem\"]).inSingletonScope().whenTargetNamed(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].SceneGraphSystem);\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].Systems).to(_components_framegraph_System__WEBPACK_IMPORTED_MODULE_5__[\"FrameGraphSystem\"]).inSingletonScope().whenTargetNamed(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].FrameGraphSystem);\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].Systems).to(_components_mesh_System__WEBPACK_IMPORTED_MODULE_12__[\"MeshSystem\"]).inSingletonScope().whenTargetNamed(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].MeshSystem);\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].Systems).to(_components_geometry_System__WEBPACK_IMPORTED_MODULE_7__[\"GeometrySystem\"]).inSingletonScope().whenTargetNamed(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].GeometrySystem);\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].Systems).to(_components_material_System__WEBPACK_IMPORTED_MODULE_9__[\"MaterialSystem\"]).inSingletonScope().whenTargetNamed(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].MaterialSystem);\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].Systems).to(_components_renderer_System__WEBPACK_IMPORTED_MODULE_16__[\"RendererSystem\"]).inSingletonScope().whenTargetNamed(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].RendererSystem); // 资源池\n\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].ResourcePool).to(_components_framegraph_ResourcePool__WEBPACK_IMPORTED_MODULE_4__[\"ResourcePool\"]).inSingletonScope();\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].ConfigService).to(_services_config_ConfigService__WEBPACK_IMPORTED_MODULE_22__[\"ConfigService\"]).inSingletonScope();\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].InteractorService).to(_services_interactor_IteractorService__WEBPACK_IMPORTED_MODULE_23__[\"InteractorService\"]).inSingletonScope();\n /**\n * bind render passes\n */\n\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].RenderPass).to(_components_renderer_passes_RenderPass__WEBPACK_IMPORTED_MODULE_15__[\"RenderPass\"]).inSingletonScope().whenTargetNamed(_components_renderer_passes_RenderPass__WEBPACK_IMPORTED_MODULE_15__[\"RenderPass\"].IDENTIFIER);\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].RenderPass).to(_components_renderer_passes_CopyPass__WEBPACK_IMPORTED_MODULE_13__[\"CopyPass\"]).inSingletonScope().whenTargetNamed(_components_renderer_passes_CopyPass__WEBPACK_IMPORTED_MODULE_13__[\"CopyPass\"].IDENTIFIER);\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].RenderPass).to(_components_renderer_passes_PixelPickingPass__WEBPACK_IMPORTED_MODULE_14__[\"PixelPickingPass\"]).inSingletonScope().whenTargetNamed(_components_renderer_passes_PixelPickingPass__WEBPACK_IMPORTED_MODULE_14__[\"PixelPickingPass\"].IDENTIFIER);\n worldContainer.bind(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].RenderPassFactory).toFactory(function (context) {\n return function (name) {\n return context.container.getNamed(_identifier__WEBPACK_IMPORTED_MODULE_21__[\"IDENTIFIER\"].RenderPass, name);\n };\n });\n return worldContainer;\n}\n//# sourceMappingURL=inversify.config.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9pbnZlcnNpZnkuY29uZmlnLmpzP2ZhMzEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDMEI7QUFDWTtBQUNrQjtBQUNGO0FBQ2M7QUFDRjtBQUNVO0FBQ2QsWUFBWSxvQkFBb0I7O0FBRWxCO0FBQ2Q7QUFDVTtBQUNSO0FBQ1Y7QUFDVztBQUNnQjtBQUNaO0FBQ1A7QUFDa0I7QUFDVjtBQUNKO0FBQ2M7QUFDdEM7QUFDc0I7QUFDVztBQUNJOztBQUV4RSxvQkFBb0IsbURBQVMsR0FBRztBQUN2QztBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsa0VBQWE7QUFDOUI7QUFDQTtBQUNBO0FBQ087QUFDUCwwREFBMEQ7QUFDMUQ7O0FBRUE7QUFDQTtBQUNBLG9DQUFvQzs7QUFFcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQLCtEQUErRDtBQUMvRDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGVBQWUsdURBQVUseUJBQXlCLG9GQUFtQjtBQUNyRTtBQUNBO0FBQ0E7O0FBRUEsZUFBZSx1REFBVSwyQ0FBMkMsa0VBQWdCLENBQUMsbUZBQWE7QUFDbEcsZUFBZSx1REFBVSxnREFBZ0Qsa0VBQWdCLENBQUMsNkZBQWtCO0FBQzVHLGVBQWUsdURBQVUsZ0RBQWdELGtFQUFnQixDQUFDLDZGQUFrQjtBQUM1RyxlQUFlLHVEQUFVLDJDQUEyQyxrRUFBZ0IsQ0FBQyw2RUFBYTtBQUNsRyxlQUFlLHVEQUFVLCtDQUErQyxrRUFBZ0IsQ0FBQyxxRkFBaUI7QUFDMUcsZUFBZSx1REFBVSwrQ0FBK0Msa0VBQWdCLENBQUMsd0ZBQWlCO0FBQzFHLGVBQWUsdURBQVUsK0NBQStDLGtFQUFnQixDQUFDLHdGQUFpQixHQUFHOztBQUV0RztBQUNQLDJCQUEyQixtREFBUztBQUNwQztBQUNBO0FBQ0E7QUFDQTs7QUFFQSxzQkFBc0IsdURBQVUsYUFBYSwrRUFBZ0IscUNBQXFDLHVEQUFVO0FBQzVHLHNCQUFzQix1REFBVSxhQUFhLDhFQUFnQixxQ0FBcUMsdURBQVU7QUFDNUcsc0JBQXNCLHVEQUFVLGFBQWEsbUVBQVUscUNBQXFDLHVEQUFVO0FBQ3RHLHNCQUFzQix1REFBVSxhQUFhLDBFQUFjLHFDQUFxQyx1REFBVTtBQUMxRyxzQkFBc0IsdURBQVUsYUFBYSwwRUFBYyxxQ0FBcUMsdURBQVU7QUFDMUcsc0JBQXNCLHVEQUFVLGFBQWEsMkVBQWMscUNBQXFDLHVEQUFVLGlCQUFpQjs7QUFFM0gsc0JBQXNCLHVEQUFVLGtCQUFrQixnRkFBWTtBQUM5RCxzQkFBc0IsdURBQVUsbUJBQW1CLDZFQUFhO0FBQ2hFLHNCQUFzQix1REFBVSx1QkFBdUIsd0ZBQWlCO0FBQ3hFO0FBQ0E7QUFDQTs7QUFFQSxzQkFBc0IsdURBQVUsZ0JBQWdCLGtGQUFVLHFDQUFxQyxrRkFBVTtBQUN6RyxzQkFBc0IsdURBQVUsZ0JBQWdCLDhFQUFRLHFDQUFxQyw4RUFBUTtBQUNyRyxzQkFBc0IsdURBQVUsZ0JBQWdCLDhGQUFnQixxQ0FBcUMsOEZBQWdCO0FBQ3JILHNCQUFzQix1REFBVTtBQUNoQztBQUNBLHdDQUF3Qyx1REFBVTtBQUNsRDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9pbnZlcnNpZnkuY29uZmlnLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSb290IENvbnRhaW5lclxuICogQHNlZSAvZGV2LWRvY3MvSW9DIOWuueWZqOOAgeS+nei1luazqOWFpeS4juacjeWKoeivtOaYji5tZFxuICovXG5pbXBvcnQgJ3JlZmxlY3QtbWV0YWRhdGEnO1xuaW1wb3J0IHsgQ29udGFpbmVyIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCBnZXREZWNvcmF0b3JzIGZyb20gJ2ludmVyc2lmeS1pbmplY3QtZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBDb21wb25lbnRNYW5hZ2VyIH0gZnJvbSAnLi9Db21wb25lbnRNYW5hZ2VyJztcbmltcG9ydCB7IFJlc291cmNlUG9vbCB9IGZyb20gJy4vY29tcG9uZW50cy9mcmFtZWdyYXBoL1Jlc291cmNlUG9vbCc7XG5pbXBvcnQgeyBGcmFtZUdyYXBoU3lzdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL2ZyYW1lZ3JhcGgvU3lzdGVtJztcbmltcG9ydCB7IEdlb21ldHJ5Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2dlb21ldHJ5L0dlb21ldHJ5Q29tcG9uZW50JztcbmltcG9ydCB7IEdlb21ldHJ5U3lzdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL2dlb21ldHJ5L1N5c3RlbSc7IC8vIGltcG9ydCB7IEludGVyYWN0aW9uU3lzdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL2ludGVyYWN0aW9uL1N5c3RlbSc7XG5cbmltcG9ydCB7IE1hdGVyaWFsQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL21hdGVyaWFsL01hdGVyaWFsQ29tcG9uZW50JztcbmltcG9ydCB7IE1hdGVyaWFsU3lzdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL21hdGVyaWFsL1N5c3RlbSc7XG5pbXBvcnQgeyBDdWxsYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9tZXNoL0N1bGxhYmxlQ29tcG9uZW50JztcbmltcG9ydCB7IE1lc2hDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbWVzaC9NZXNoQ29tcG9uZW50JztcbmltcG9ydCB7IE1lc2hTeXN0ZW0gfSBmcm9tICcuL2NvbXBvbmVudHMvbWVzaC9TeXN0ZW0nO1xuaW1wb3J0IHsgQ29weVBhc3MgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVuZGVyZXIvcGFzc2VzL0NvcHlQYXNzJztcbmltcG9ydCB7IFBpeGVsUGlja2luZ1Bhc3MgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVuZGVyZXIvcGFzc2VzL1BpeGVsUGlja2luZ1Bhc3MnO1xuaW1wb3J0IHsgUmVuZGVyUGFzcyB9IGZyb20gJy4vY29tcG9uZW50cy9yZW5kZXJlci9wYXNzZXMvUmVuZGVyUGFzcyc7XG5pbXBvcnQgeyBSZW5kZXJlclN5c3RlbSB9IGZyb20gJy4vY29tcG9uZW50cy9yZW5kZXJlci9TeXN0ZW0nO1xuaW1wb3J0IHsgSGllcmFyY2h5Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3NjZW5lZ3JhcGgvSGllcmFyY2h5Q29tcG9uZW50JztcbmltcG9ydCB7IE5hbWVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvc2NlbmVncmFwaC9OYW1lQ29tcG9uZW50JztcbmltcG9ydCB7IFNjZW5lR3JhcGhTeXN0ZW0gfSBmcm9tICcuL2NvbXBvbmVudHMvc2NlbmVncmFwaC9TeXN0ZW0nO1xuaW1wb3J0IHsgVHJhbnNmb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3NjZW5lZ3JhcGgvVHJhbnNmb3JtQ29tcG9uZW50JztcbmltcG9ydCB7IElERU5USUZJRVIgfSBmcm9tICcuL2lkZW50aWZpZXInO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY29uZmlnL0NvbmZpZ1NlcnZpY2UnO1xuaW1wb3J0IHsgSW50ZXJhY3RvclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2ludGVyYWN0b3IvSXRlcmFjdG9yU2VydmljZSc7XG5pbXBvcnQgU2hhZGVyTW9kdWxlU2VydmljZSBmcm9tICcuL3NlcnZpY2VzL3NoYWRlci1tb2R1bGUvU2hhZGVyTW9kdWxlU2VydmljZSc7IC8vIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2ludmVyc2lmeS9JbnZlcnNpZnlKUy9ibG9iL21hc3Rlci93aWtpL2NvbnRhaW5lcl9hcGkubWQjZGVmYXVsdHNjb3BlXG5cbmV4cG9ydCB2YXIgY29udGFpbmVyID0gbmV3IENvbnRhaW5lcigpOyAvLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9pbnZlcnNpZnkvSW52ZXJzaWZ5SlMvYmxvYi9tYXN0ZXIvd2lraS9pbmhlcml0YW5jZS5tZCN3aGF0LWNhbi1pLWRvLXdoZW4tbXktYmFzZS1jbGFzcy1pcy1wcm92aWRlZC1ieS1hLXRoaXJkLXBhcnR5LW1vZHVsZVxuLy8gZGVjb3JhdGUoaW5qZWN0YWJsZSgpLCBFdmVudEVtaXR0ZXIpO1xuLy8gY29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5JRXZlbnRFbWl0dGVyKS50byhFdmVudEVtaXR0ZXIpO1xuLy8g5pSv5oyB5L2/55SoIG5ldyDogIzpnZ7lrrnlmajlrp7kvovljJbnmoTlnLrmma/vvIzlkIzml7bnpoHmraIgbGF6eUluamVjdCBjYWNoZVxuLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vaW52ZXJzaWZ5L2ludmVyc2lmeS1pbmplY3QtZGVjb3JhdG9ycyNjYWNoaW5nLXZzLW5vbi1jYWNoaW5nLWJlaGF2aW91clxuXG52YXIgREVDT1JBVE9SUyA9IGdldERlY29yYXRvcnMoY29udGFpbmVyLCBmYWxzZSk7XG4vLyBBZGQgYmFiZWwgbGVnYWN5IGRlY29yYXRvcnMgc3VwcG9ydFxuLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vaW52ZXJzaWZ5L0ludmVyc2lmeUpTL2lzc3Vlcy8xMDUwXG4vLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9pbnZlcnNpZnkvSW52ZXJzaWZ5SlMvaXNzdWVzLzEwMjYjaXNzdWVjb21tZW50LTUwNDkzNjAzNFxuZXhwb3J0IHZhciBsYXp5SW5qZWN0ID0gZnVuY3Rpb24gbGF6eUluamVjdChzZXJ2aWNlSWRlbnRpZmllcikge1xuICB2YXIgb3JpZ2luYWwgPSBERUNPUkFUT1JTLmxhenlJbmplY3Qoc2VydmljZUlkZW50aWZpZXIpOyAvLyB0aGUgJ2Rlc2NyaXB0b3InIHBhcmFtZXRlciBpcyBhY3R1YWxseSBhbHdheXMgZGVmaW5lZCBmb3IgY2xhc3MgZmllbGRzIGZvciBCYWJlbCwgYnV0IGlzIGNvbnNpZGVyZWQgdW5kZWZpbmVkIGZvciBUU0NcbiAgLy8gc28gd2UganVzdCBoYWNrIGl0IHdpdGggPy8hIGNvbWJpbmF0aW9uIHRvIGF2b2lkIFwiVFMxMjQwOiBVbmFibGUgdG8gcmVzb2x2ZSBzaWduYXR1cmUgb2YgcHJvcGVydHkgZGVjb3JhdG9yIHdoZW4gY2FsbGVkIGFzIGFuIGV4cHJlc3Npb25cIlxuXG4gIHJldHVybiBmdW5jdGlvbiAocHJvdG8sIGtleSwgZGVzY3JpcHRvcikge1xuICAgIC8vIG1ha2UgaXQgd29yayBhcyB1c3VhbFxuICAgIG9yaWdpbmFsLmNhbGwodGhpcywgcHJvdG8sIGtleSk7IC8vIHJldHVybiBsaW5rIHRvIHByb3RvLCBzbyBvd24gdmFsdWUgd29udCBiZSAndW5kZWZpbmVkJyBhZnRlciBjb21wb25lbnQncyBjcmVhdGlvblxuXG4gICAgaWYgKGRlc2NyaXB0b3IpIHtcbiAgICAgIGRlc2NyaXB0b3IuaW5pdGlhbGl6ZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBwcm90b1trZXldO1xuICAgICAgfTtcbiAgICB9XG4gIH07XG59O1xuZXhwb3J0IHZhciBsYXp5TXVsdGlJbmplY3QgPSBmdW5jdGlvbiBsYXp5TXVsdGlJbmplY3Qoc2VydmljZUlkZW50aWZpZXIpIHtcbiAgdmFyIG9yaWdpbmFsID0gREVDT1JBVE9SUy5sYXp5TXVsdGlJbmplY3Qoc2VydmljZUlkZW50aWZpZXIpOyAvLyB0aGUgJ2Rlc2NyaXB0b3InIHBhcmFtZXRlciBpcyBhY3R1YWxseSBhbHdheXMgZGVmaW5lZCBmb3IgY2xhc3MgZmllbGRzIGZvciBCYWJlbCwgYnV0IGlzIGNvbnNpZGVyZWQgdW5kZWZpbmVkIGZvciBUU0NcbiAgLy8gc28gd2UganVzdCBoYWNrIGl0IHdpdGggPy8hIGNvbWJpbmF0aW9uIHRvIGF2b2lkIFwiVFMxMjQwOiBVbmFibGUgdG8gcmVzb2x2ZSBzaWduYXR1cmUgb2YgcHJvcGVydHkgZGVjb3JhdG9yIHdoZW4gY2FsbGVkIGFzIGFuIGV4cHJlc3Npb25cIlxuXG4gIHJldHVybiBmdW5jdGlvbiAocHJvdG8sIGtleSwgZGVzY3JpcHRvcikge1xuICAgIC8vIG1ha2UgaXQgd29yayBhcyB1c3VhbFxuICAgIG9yaWdpbmFsLmNhbGwodGhpcywgcHJvdG8sIGtleSk7XG5cbiAgICBpZiAoZGVzY3JpcHRvcikge1xuICAgICAgLy8gcmV0dXJuIGxpbmsgdG8gcHJvdG8sIHNvIG93biB2YWx1ZSB3b250IGJlICd1bmRlZmluZWQnIGFmdGVyIGNvbXBvbmVudCdzIGNyZWF0aW9uXG4gICAgICBkZXNjcmlwdG9yLmluaXRpYWxpemVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gcHJvdG9ba2V5XTtcbiAgICAgIH07XG4gICAgfVxuICB9O1xufTtcbi8qKiBnbG9iYWwgc2VydmljZXMgKi9cblxuY29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5TaGFkZXJNb2R1bGVTZXJ2aWNlKS50byhTaGFkZXJNb2R1bGVTZXJ2aWNlKS5pblNpbmdsZXRvblNjb3BlKCk7XG4vKipcbiAqIGJpbmQgZ2xvYmFsIGNvbXBvbmVudCBtYW5hZ2VycyBpbiByb290IGNvbnRhaW5lclxuICovXG5cbmNvbnRhaW5lci5iaW5kKElERU5USUZJRVIuTmFtZUNvbXBvbmVudE1hbmFnZXIpLnRvQ29uc3RhbnRWYWx1ZShuZXcgQ29tcG9uZW50TWFuYWdlcihOYW1lQ29tcG9uZW50KSk7XG5jb250YWluZXIuYmluZChJREVOVElGSUVSLkhpZXJhcmNoeUNvbXBvbmVudE1hbmFnZXIpLnRvQ29uc3RhbnRWYWx1ZShuZXcgQ29tcG9uZW50TWFuYWdlcihIaWVyYXJjaHlDb21wb25lbnQpKTtcbmNvbnRhaW5lci5iaW5kKElERU5USUZJRVIuVHJhbnNmb3JtQ29tcG9uZW50TWFuYWdlcikudG9Db25zdGFudFZhbHVlKG5ldyBDb21wb25lbnRNYW5hZ2VyKFRyYW5zZm9ybUNvbXBvbmVudCkpO1xuY29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5NZXNoQ29tcG9uZW50TWFuYWdlcikudG9Db25zdGFudFZhbHVlKG5ldyBDb21wb25lbnRNYW5hZ2VyKE1lc2hDb21wb25lbnQpKTtcbmNvbnRhaW5lci5iaW5kKElERU5USUZJRVIuQ3VsbGFibGVDb21wb25lbnRNYW5hZ2VyKS50b0NvbnN0YW50VmFsdWUobmV3IENvbXBvbmVudE1hbmFnZXIoQ3VsbGFibGVDb21wb25lbnQpKTtcbmNvbnRhaW5lci5iaW5kKElERU5USUZJRVIuR2VvbWV0cnlDb21wb25lbnRNYW5hZ2VyKS50b0NvbnN0YW50VmFsdWUobmV3IENvbXBvbmVudE1hbmFnZXIoR2VvbWV0cnlDb21wb25lbnQpKTtcbmNvbnRhaW5lci5iaW5kKElERU5USUZJRVIuTWF0ZXJpYWxDb21wb25lbnRNYW5hZ2VyKS50b0NvbnN0YW50VmFsdWUobmV3IENvbXBvbmVudE1hbmFnZXIoTWF0ZXJpYWxDb21wb25lbnQpKTsgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ludmVyc2lmeS9JbnZlcnNpZnlKUy9ibG9iL21hc3Rlci93aWtpL2hpZXJhcmNoaWNhbF9kaS5tZCNzdXBwb3J0LWZvci1oaWVyYXJjaGljYWwtZGktc3lzdGVtc1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlV29ybGRDb250YWluZXIoKSB7XG4gIHZhciB3b3JsZENvbnRhaW5lciA9IG5ldyBDb250YWluZXIoKTtcbiAgd29ybGRDb250YWluZXIucGFyZW50ID0gY29udGFpbmVyO1xuICAvKipcbiAgICogYmluZCBzeXN0ZW1zXG4gICAqL1xuXG4gIHdvcmxkQ29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5TeXN0ZW1zKS50byhTY2VuZUdyYXBoU3lzdGVtKS5pblNpbmdsZXRvblNjb3BlKCkud2hlblRhcmdldE5hbWVkKElERU5USUZJRVIuU2NlbmVHcmFwaFN5c3RlbSk7XG4gIHdvcmxkQ29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5TeXN0ZW1zKS50byhGcmFtZUdyYXBoU3lzdGVtKS5pblNpbmdsZXRvblNjb3BlKCkud2hlblRhcmdldE5hbWVkKElERU5USUZJRVIuRnJhbWVHcmFwaFN5c3RlbSk7XG4gIHdvcmxkQ29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5TeXN0ZW1zKS50byhNZXNoU3lzdGVtKS5pblNpbmdsZXRvblNjb3BlKCkud2hlblRhcmdldE5hbWVkKElERU5USUZJRVIuTWVzaFN5c3RlbSk7XG4gIHdvcmxkQ29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5TeXN0ZW1zKS50byhHZW9tZXRyeVN5c3RlbSkuaW5TaW5nbGV0b25TY29wZSgpLndoZW5UYXJnZXROYW1lZChJREVOVElGSUVSLkdlb21ldHJ5U3lzdGVtKTtcbiAgd29ybGRDb250YWluZXIuYmluZChJREVOVElGSUVSLlN5c3RlbXMpLnRvKE1hdGVyaWFsU3lzdGVtKS5pblNpbmdsZXRvblNjb3BlKCkud2hlblRhcmdldE5hbWVkKElERU5USUZJRVIuTWF0ZXJpYWxTeXN0ZW0pO1xuICB3b3JsZENvbnRhaW5lci5iaW5kKElERU5USUZJRVIuU3lzdGVtcykudG8oUmVuZGVyZXJTeXN0ZW0pLmluU2luZ2xldG9uU2NvcGUoKS53aGVuVGFyZ2V0TmFtZWQoSURFTlRJRklFUi5SZW5kZXJlclN5c3RlbSk7IC8vIOi1hOa6kOaxoFxuXG4gIHdvcmxkQ29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5SZXNvdXJjZVBvb2wpLnRvKFJlc291cmNlUG9vbCkuaW5TaW5nbGV0b25TY29wZSgpO1xuICB3b3JsZENvbnRhaW5lci5iaW5kKElERU5USUZJRVIuQ29uZmlnU2VydmljZSkudG8oQ29uZmlnU2VydmljZSkuaW5TaW5nbGV0b25TY29wZSgpO1xuICB3b3JsZENvbnRhaW5lci5iaW5kKElERU5USUZJRVIuSW50ZXJhY3RvclNlcnZpY2UpLnRvKEludGVyYWN0b3JTZXJ2aWNlKS5pblNpbmdsZXRvblNjb3BlKCk7XG4gIC8qKlxuICAgKiBiaW5kIHJlbmRlciBwYXNzZXNcbiAgICovXG5cbiAgd29ybGRDb250YWluZXIuYmluZChJREVOVElGSUVSLlJlbmRlclBhc3MpLnRvKFJlbmRlclBhc3MpLmluU2luZ2xldG9uU2NvcGUoKS53aGVuVGFyZ2V0TmFtZWQoUmVuZGVyUGFzcy5JREVOVElGSUVSKTtcbiAgd29ybGRDb250YWluZXIuYmluZChJREVOVElGSUVSLlJlbmRlclBhc3MpLnRvKENvcHlQYXNzKS5pblNpbmdsZXRvblNjb3BlKCkud2hlblRhcmdldE5hbWVkKENvcHlQYXNzLklERU5USUZJRVIpO1xuICB3b3JsZENvbnRhaW5lci5iaW5kKElERU5USUZJRVIuUmVuZGVyUGFzcykudG8oUGl4ZWxQaWNraW5nUGFzcykuaW5TaW5nbGV0b25TY29wZSgpLndoZW5UYXJnZXROYW1lZChQaXhlbFBpY2tpbmdQYXNzLklERU5USUZJRVIpO1xuICB3b3JsZENvbnRhaW5lci5iaW5kKElERU5USUZJRVIuUmVuZGVyUGFzc0ZhY3RvcnkpLnRvRmFjdG9yeShmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgcmV0dXJuIGNvbnRleHQuY29udGFpbmVyLmdldE5hbWVkKElERU5USUZJRVIuUmVuZGVyUGFzcywgbmFtZSk7XG4gICAgfTtcbiAgfSk7XG4gIHJldHVybiB3b3JsZENvbnRhaW5lcjtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWludmVyc2lmeS5jb25maWcuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/inversify.config.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/config/ConfigService.js":
/*!*********************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/config/ConfigService.js ***!
\*********************************************************************************************************/
/*! exports provided: ConfigService */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ConfigService\", function() { return ConfigService; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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 inversify__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nvar _dec, _class, _temp;\n\n\nvar ConfigService = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_2__[\"injectable\"])(), _dec(_class = (_temp = /*#__PURE__*/function () {\n function ConfigService() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ConfigService);\n\n this.config = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(ConfigService, [{\n key: \"get\",\n value: function get() {\n return this.config;\n }\n }, {\n key: \"set\",\n value: function set(config) {\n this.config = config;\n }\n }]);\n\n return ConfigService;\n}(), _temp)) || _class);\n//# sourceMappingURL=ConfigService.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9zZXJ2aWNlcy9jb25maWcvQ29uZmlnU2VydmljZS5qcz83ZThlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjs7QUFFOUQ7O0FBRXVDO0FBQ2hDLDRCQUE0Qiw0REFBVTtBQUM3QztBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL3NlcnZpY2VzL2NvbmZpZy9Db25maWdTZXJ2aWNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuXG52YXIgX2RlYywgX2NsYXNzLCBfdGVtcDtcblxuaW1wb3J0IHsgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5leHBvcnQgdmFyIENvbmZpZ1NlcnZpY2UgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYyhfY2xhc3MgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBDb25maWdTZXJ2aWNlKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDb25maWdTZXJ2aWNlKTtcblxuICAgIHRoaXMuY29uZmlnID0gdm9pZCAwO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKENvbmZpZ1NlcnZpY2UsIFt7XG4gICAga2V5OiBcImdldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb25maWc7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoY29uZmlnKSB7XG4gICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQ29uZmlnU2VydmljZTtcbn0oKSwgX3RlbXApKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q29uZmlnU2VydmljZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/config/ConfigService.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/config/index.js":
/*!*************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/config/index.js ***!
\*************************************************************************************************/
/*! exports provided: ConfigService */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ConfigService__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ConfigService */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/config/ConfigService.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigService\", function() { return _ConfigService__WEBPACK_IMPORTED_MODULE_0__[\"ConfigService\"]; });\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9zZXJ2aWNlcy9jb25maWcvaW5kZXguanM/YTAwNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFnQztBQUNoQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL3NlcnZpY2VzL2NvbmZpZy9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vQ29uZmlnU2VydmljZSc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/config/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/index.js":
/*!******************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/index.js ***!
\******************************************************************************************/
/*! exports provided: ConfigService, IInteractorEvent, InteractorService */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./config */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/config/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ConfigService\", function() { return _config__WEBPACK_IMPORTED_MODULE_0__[\"ConfigService\"]; });\n\n/* harmony import */ var _interactor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./interactor */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/interactor/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"IInteractorEvent\", function() { return _interactor__WEBPACK_IMPORTED_MODULE_1__[\"IInteractorEvent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"InteractorService\", function() { return _interactor__WEBPACK_IMPORTED_MODULE_1__[\"InteractorService\"]; });\n\n/* harmony import */ var _shader_module__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shader-module */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/shader-module/index.js\");\n/* empty/unused harmony star reexport */\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9zZXJ2aWNlcy9pbmRleC5qcz80YmQ4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsd0NBQXlCO0FBQ0k7QUFDRztBQUNoQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL3NlcnZpY2VzL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmFjdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vc2hhZGVyLW1vZHVsZSc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/interactor/IteractorService.js":
/*!****************************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/interactor/IteractorService.js ***!
\****************************************************************************************************************/
/*! exports provided: IInteractorEvent, InteractorService */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IInteractorEvent\", function() { return IInteractorEvent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"InteractorService\", function() { return InteractorService; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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 inversify__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nvar _dec, _class;\n\n\nvar IInteractorEvent;\n\n(function (IInteractorEvent) {\n IInteractorEvent[\"PANSTART\"] = \"PANSTART\";\n IInteractorEvent[\"PANEND\"] = \"PANEND\";\n IInteractorEvent[\"PANMOVE\"] = \"PANMOVE\";\n IInteractorEvent[\"PINCH\"] = \"PINCH\";\n IInteractorEvent[\"KEYDOWN\"] = \"KEYDOWN\";\n IInteractorEvent[\"KEYUP\"] = \"KEYUP\";\n IInteractorEvent[\"HOVER\"] = \"HOVER\";\n})(IInteractorEvent || (IInteractorEvent = {}));\n\nvar InteractorService = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_2__[\"injectable\"])(), _dec(_class = /*#__PURE__*/function () {\n function InteractorService() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, InteractorService);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(InteractorService, [{\n key: \"listen\",\n value: function listen(canvas) {}\n }, {\n key: \"on\",\n value: function on(event, args) {}\n }, {\n key: \"connect\",\n value: function connect() {}\n }, {\n key: \"disconnect\",\n value: function disconnect() {}\n }, {\n key: \"destroy\",\n value: function destroy() {}\n }]);\n\n return InteractorService;\n}()) || _class);\n//# sourceMappingURL=IteractorService.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9zZXJ2aWNlcy9pbnRlcmFjdG9yL0l0ZXJhY3RvclNlcnZpY2UuanM/ZjE1YiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjs7QUFFOUQ7O0FBRXVDO0FBQ2hDOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLDRDQUE0Qzs7QUFFdEMsZ0NBQWdDLDREQUFVO0FBQ2pEO0FBQ0EsSUFBSSw0RUFBZTtBQUNuQjs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL3NlcnZpY2VzL2ludGVyYWN0b3IvSXRlcmFjdG9yU2VydmljZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcblxudmFyIF9kZWMsIF9jbGFzcztcblxuaW1wb3J0IHsgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5leHBvcnQgdmFyIElJbnRlcmFjdG9yRXZlbnQ7XG5cbihmdW5jdGlvbiAoSUludGVyYWN0b3JFdmVudCkge1xuICBJSW50ZXJhY3RvckV2ZW50W1wiUEFOU1RBUlRcIl0gPSBcIlBBTlNUQVJUXCI7XG4gIElJbnRlcmFjdG9yRXZlbnRbXCJQQU5FTkRcIl0gPSBcIlBBTkVORFwiO1xuICBJSW50ZXJhY3RvckV2ZW50W1wiUEFOTU9WRVwiXSA9IFwiUEFOTU9WRVwiO1xuICBJSW50ZXJhY3RvckV2ZW50W1wiUElOQ0hcIl0gPSBcIlBJTkNIXCI7XG4gIElJbnRlcmFjdG9yRXZlbnRbXCJLRVlET1dOXCJdID0gXCJLRVlET1dOXCI7XG4gIElJbnRlcmFjdG9yRXZlbnRbXCJLRVlVUFwiXSA9IFwiS0VZVVBcIjtcbiAgSUludGVyYWN0b3JFdmVudFtcIkhPVkVSXCJdID0gXCJIT1ZFUlwiO1xufSkoSUludGVyYWN0b3JFdmVudCB8fCAoSUludGVyYWN0b3JFdmVudCA9IHt9KSk7XG5cbmV4cG9ydCB2YXIgSW50ZXJhY3RvclNlcnZpY2UgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYyhfY2xhc3MgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBJbnRlcmFjdG9yU2VydmljZSgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgSW50ZXJhY3RvclNlcnZpY2UpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKEludGVyYWN0b3JTZXJ2aWNlLCBbe1xuICAgIGtleTogXCJsaXN0ZW5cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gbGlzdGVuKGNhbnZhcykge31cbiAgfSwge1xuICAgIGtleTogXCJvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbihldmVudCwgYXJncykge31cbiAgfSwge1xuICAgIGtleTogXCJjb25uZWN0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbm5lY3QoKSB7fVxuICB9LCB7XG4gICAga2V5OiBcImRpc2Nvbm5lY3RcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGlzY29ubmVjdCgpIHt9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGVzdHJveVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkZXN0cm95KCkge31cbiAgfV0pO1xuXG4gIHJldHVybiBJbnRlcmFjdG9yU2VydmljZTtcbn0oKSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUl0ZXJhY3RvclNlcnZpY2UuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/interactor/IteractorService.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/interactor/index.js":
/*!*****************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/interactor/index.js ***!
\*****************************************************************************************************/
/*! exports provided: IInteractorEvent, InteractorService */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _IteractorService__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./IteractorService */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/interactor/IteractorService.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"IInteractorEvent\", function() { return _IteractorService__WEBPACK_IMPORTED_MODULE_0__[\"IInteractorEvent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"InteractorService\", function() { return _IteractorService__WEBPACK_IMPORTED_MODULE_0__[\"InteractorService\"]; });\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9zZXJ2aWNlcy9pbnRlcmFjdG9yL2luZGV4LmpzP2MwZTIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW1DO0FBQ25DIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvc2VydmljZXMvaW50ZXJhY3Rvci9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vSXRlcmFjdG9yU2VydmljZSc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/interactor/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/shader-module/ShaderModuleService.js":
/*!**********************************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/shader-module/ShaderModuleService.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 ShaderModuleService; });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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@7.16.3@@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 inversify__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _utils_shader_module__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils/shader-module */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/shader-module.js\");\n/* harmony import */ var _utils_uniq__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utils/uniq */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/uniq.js\");\n\n\n\n\nvar _dec, _class, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n\n\n\n\n/* babel-plugin-inline-import './shaders/webgl.picking.frag.glsl' */\nvar pickingFrag = \"varying vec4 v_PickingResult;\\nuniform vec4 u_HighlightColor : [0, 0, 0, 0];\\nuniform float u_PickingStage : 0.0;\\n\\n#define PICKING_ENCODE 1.0\\n#define PICKING_HIGHLIGHT 2.0\\n#define COLOR_SCALE 1. / 255.\\n\\n/*\\n * Returns highlight color if this item is selected.\\n */\\nvec4 filterHighlightColor(vec4 color) {\\n bool selected = bool(v_PickingResult.a);\\n\\n if (selected) {\\n vec4 highLightColor = u_HighlightColor * COLOR_SCALE;\\n\\n float highLightAlpha = highLightColor.a;\\n float highLightRatio = highLightAlpha / (highLightAlpha + color.a * (1.0 - highLightAlpha));\\n\\n vec3 resultRGB = mix(color.rgb, highLightColor.rgb, highLightRatio);\\n return vec4(resultRGB, color.a);\\n } else {\\n return color;\\n }\\n}\\n\\n/*\\n * Returns picking color if picking enabled else unmodified argument.\\n */\\nvec4 filterPickingColor(vec4 color) {\\n vec3 pickingColor = v_PickingResult.rgb;\\n if (u_PickingStage == PICKING_ENCODE && length(pickingColor) < 0.001) {\\n discard;\\n }\\n return u_PickingStage == PICKING_ENCODE ? vec4(pickingColor, step(0.001,color.a)): color;\\n}\\n\\n/*\\n * Returns picking color if picking is enabled if not\\n * highlight color if this item is selected, otherwise unmodified argument.\\n */\\nvec4 filterColor(vec4 color) {\\n return filterPickingColor(filterHighlightColor(color));\\n}\\n\";\n\n/* babel-plugin-inline-import './shaders/webgl.picking.vert.glsl' */\nvar pickingVert = \"attribute vec3 a_PickingColor;\\nvarying vec4 v_PickingResult;\\n\\nuniform vec3 u_PickingColor : [0, 0, 0];\\nuniform vec4 u_HighlightColor : [0, 0, 0, 0];\\nuniform float u_PickingStage : 0.0;\\nuniform float u_PickingThreshold : 1.0;\\nuniform float u_PickingBuffer: 0.0;\\n\\n#define PICKING_ENCODE 1.0\\n#define PICKING_HIGHLIGHT 2.0\\n#define COLOR_SCALE 1. / 255.\\n\\nbool isVertexPicked(vec3 vertexColor) {\\n return\\n abs(vertexColor.r - u_PickingColor.r) < u_PickingThreshold &&\\n abs(vertexColor.g - u_PickingColor.g) < u_PickingThreshold &&\\n abs(vertexColor.b - u_PickingColor.b) < u_PickingThreshold;\\n}\\n\\nvoid setPickingColor(vec3 pickingColor) {\\n // compares only in highlight stage\\n v_PickingResult.a = float((u_PickingStage == PICKING_HIGHLIGHT) && isVertexPicked(pickingColor));\\n\\n // Stores the picking color so that the fragment shader can render it during picking\\n v_PickingResult.rgb = pickingColor * COLOR_SCALE;\\n}\\n\\nfloat setPickingSize(float x) {\\n return u_PickingStage == PICKING_ENCODE ? x + u_PickingBuffer : x;\\n}\";\n\n/* babel-plugin-inline-import './shaders/webgl.sdf2d.frag.glsl' */\nvar sdf2dFrag = \"/**\\n * 2D signed distance field functions\\n * @see http://www.iquilezles.org/www/articles/distfunctions2d/distfunctions2d.htm\\n */\\n\\nfloat ndot(vec2 a, vec2 b ) { return a.x*b.x - a.y*b.y; }\\n\\nfloat sdCircle(vec2 p, float r) {\\n return length(p) - r;\\n}\\n\\nfloat sdEquilateralTriangle(vec2 p) {\\n float k = sqrt(3.0);\\n p.x = abs(p.x) - 1.0;\\n p.y = p.y + 1.0/k;\\n if( p.x + k*p.y > 0.0 ) p = vec2(p.x-k*p.y,-k*p.x-p.y)/2.0;\\n p.x -= clamp( p.x, -2.0, 0.0 );\\n return -length(p)*sign(p.y);\\n}\\n\\nfloat sdBox(vec2 p, vec2 b) {\\n vec2 d = abs(p)-b;\\n return length(max(d,vec2(0))) + min(max(d.x,d.y),0.0);\\n}\\n\\nfloat sdPentagon(vec2 p, float r) {\\n vec3 k = vec3(0.809016994,0.587785252,0.726542528);\\n p.x = abs(p.x);\\n p -= 2.0*min(dot(vec2(-k.x,k.y),p),0.0)*vec2(-k.x,k.y);\\n p -= 2.0*min(dot(vec2( k.x,k.y),p),0.0)*vec2( k.x,k.y);\\n p -= vec2(clamp(p.x,-r*k.z,r*k.z),r);\\n return length(p)*sign(p.y);\\n}\\n\\nfloat sdHexagon(vec2 p, float r) {\\n vec3 k = vec3(-0.866025404,0.5,0.577350269);\\n p = abs(p);\\n p -= 2.0*min(dot(k.xy,p),0.0)*k.xy;\\n p -= vec2(clamp(p.x, -k.z*r, k.z*r), r);\\n return length(p)*sign(p.y);\\n}\\n\\nfloat sdOctogon(vec2 p, float r) {\\n vec3 k = vec3(-0.9238795325, 0.3826834323, 0.4142135623 );\\n p = abs(p);\\n p -= 2.0*min(dot(vec2( k.x,k.y),p),0.0)*vec2( k.x,k.y);\\n p -= 2.0*min(dot(vec2(-k.x,k.y),p),0.0)*vec2(-k.x,k.y);\\n p -= vec2(clamp(p.x, -k.z*r, k.z*r), r);\\n return length(p)*sign(p.y);\\n}\\n\\nfloat sdHexagram(vec2 p, float r) {\\n vec4 k=vec4(-0.5,0.8660254038,0.5773502692,1.7320508076);\\n p = abs(p);\\n p -= 2.0*min(dot(k.xy,p),0.0)*k.xy;\\n p -= 2.0*min(dot(k.yx,p),0.0)*k.yx;\\n p -= vec2(clamp(p.x,r*k.z,r*k.w),r);\\n return length(p)*sign(p.y);\\n}\\n\\nfloat sdRhombus(vec2 p, vec2 b) {\\n vec2 q = abs(p);\\n float h = clamp((-2.0*ndot(q,b)+ndot(b,b))/dot(b,b),-1.0,1.0);\\n float d = length( q - 0.5*b*vec2(1.0-h,1.0+h) );\\n return d * sign( q.x*b.y + q.y*b.x - b.x*b.y );\\n}\\n\\nfloat sdVesica(vec2 p, float r, float d) {\\n p = abs(p);\\n float b = sqrt(r*r-d*d); // can delay this sqrt\\n return ((p.y-b)*d>p.x*b)\\n ? length(p-vec2(0.0,b))\\n : length(p-vec2(-d,0.0))-r;\\n}\";\nvar precisionRegExp = /precision\\s+(high|low|medium)p\\s+float/;\nvar globalDefaultprecision = '#ifdef GL_FRAGMENT_PRECISION_HIGH\\n precision highp float;\\n #else\\n precision mediump float;\\n#endif\\n';\nvar includeRegExp = /#pragma include ([\"^+\"]?[\"\\ \"[a-zA-Z_0-9](.*)\"]*?)/g;\nvar ShaderModuleService = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_3__[\"injectable\"])(), _dec(_class = (_temp = /*#__PURE__*/function () {\n function ShaderModuleService() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, ShaderModuleService);\n\n this.moduleCache = {};\n this.rawContentCache = {};\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(ShaderModuleService, [{\n key: \"registerBuiltinModules\",\n value: function registerBuiltinModules() {\n this.destroy();\n this.registerModule('picking', {\n vs: pickingVert,\n fs: pickingFrag\n });\n this.registerModule('sdf2d', {\n vs: '',\n fs: sdf2dFrag\n });\n }\n }, {\n key: \"registerModule\",\n value: function registerModule(moduleName, moduleParams) {\n // prevent registering the same module multiple times\n if (this.rawContentCache[moduleName]) {\n return;\n }\n\n var _moduleParams$vs = moduleParams.vs,\n vs = _moduleParams$vs === void 0 ? '' : _moduleParams$vs,\n _moduleParams$fs = moduleParams.fs,\n fs = _moduleParams$fs === void 0 ? '' : _moduleParams$fs,\n declaredUniforms = moduleParams.uniforms;\n\n var _extractUniforms = Object(_utils_shader_module__WEBPACK_IMPORTED_MODULE_4__[\"extractUniforms\"])(vs),\n extractedVS = _extractUniforms.content,\n vsUniforms = _extractUniforms.uniforms;\n\n var _extractUniforms2 = Object(_utils_shader_module__WEBPACK_IMPORTED_MODULE_4__[\"extractUniforms\"])(fs),\n extractedFS = _extractUniforms2.content,\n fsUniforms = _extractUniforms2.uniforms;\n\n this.rawContentCache[moduleName] = {\n fs: extractedFS,\n uniforms: _objectSpread(_objectSpread(_objectSpread({}, vsUniforms), fsUniforms), declaredUniforms),\n vs: extractedVS\n };\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.moduleCache = {};\n this.rawContentCache = {};\n }\n }, {\n key: \"getModule\",\n value: function getModule(moduleName) {\n var _this = this;\n\n if (this.moduleCache[moduleName]) {\n return this.moduleCache[moduleName];\n }\n\n var rawVS = this.rawContentCache[moduleName].vs || '';\n var rawFS = this.rawContentCache[moduleName].fs || '';\n\n var _this$processModule = this.processModule(rawVS, [], 'vs'),\n vs = _this$processModule.content,\n vsIncludeList = _this$processModule.includeList;\n\n var _this$processModule2 = this.processModule(rawFS, [], 'fs'),\n fs = _this$processModule2.content,\n fsIncludeList = _this$processModule2.includeList;\n\n var compiledFs = fs; // TODO: extract uniforms and their default values from GLSL\n\n var uniforms = Object(_utils_uniq__WEBPACK_IMPORTED_MODULE_5__[\"uniq\"])(vsIncludeList.concat(fsIncludeList).concat(moduleName)).reduce(function (prev, cur) {\n return _objectSpread(_objectSpread({}, prev), _this.rawContentCache[cur].uniforms);\n }, {});\n /**\n * set default precision for fragment shader\n * https://stackoverflow.com/questions/28540290/why-it-is-necessary-to-set-precision-for-the-fragment-shader\n */\n\n if (!precisionRegExp.test(fs)) {\n compiledFs = globalDefaultprecision + fs;\n }\n\n this.moduleCache[moduleName] = {\n fs: compiledFs.trim(),\n uniforms: uniforms,\n vs: vs.trim()\n };\n return this.moduleCache[moduleName];\n }\n }, {\n key: \"processModule\",\n value: function processModule(rawContent, includeList, type) {\n var _this2 = this;\n\n var compiled = rawContent.replace(includeRegExp, function (_, strMatch) {\n var includeOpt = strMatch.split(' ');\n var includeName = includeOpt[0].replace(/\"/g, '');\n\n if (includeList.indexOf(includeName) > -1) {\n return '';\n }\n\n var txt = _this2.rawContentCache[includeName][type];\n includeList.push(includeName);\n\n var _this2$processModule = _this2.processModule(txt || '', includeList, type),\n content = _this2$processModule.content;\n\n return content;\n });\n return {\n content: compiled,\n includeList: includeList\n };\n }\n }]);\n\n return ShaderModuleService;\n}(), _temp)) || _class);\n\n//# sourceMappingURL=ShaderModuleService.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9zZXJ2aWNlcy9zaGFkZXItbW9kdWxlL1NoYWRlck1vZHVsZVNlcnZpY2UuanM/NmU2MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDQTtBQUNOOztBQUU5RDs7QUFFQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSx1REFBdUQsQ0FBQyw0RUFBZSwyQkFBMkIsRUFBRSxFQUFFLEVBQUUsNkNBQTZDLDJFQUEyRSxFQUFFLE9BQU8saURBQWlELGtGQUFrRixFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWU7O0FBRTdlO0FBQ3FCO0FBQ3BCOztBQUV4QztBQUNBLGdEQUFnRCwrQ0FBK0MscUNBQXFDLHNNQUFzTSw0Q0FBNEMscUJBQXFCLDJEQUEyRCxnREFBZ0Qsa0dBQWtHLDRFQUE0RSxzQ0FBc0MsS0FBSyxPQUFPLG1CQUFtQixLQUFLLEdBQUcseUhBQXlILDRDQUE0QywyRUFBMkUsY0FBYyxLQUFLLDZGQUE2RixHQUFHLCtLQUErSywyREFBMkQsR0FBRzs7QUFFajBDO0FBQ0EsaURBQWlELCtCQUErQiw0Q0FBNEMsK0NBQStDLHFDQUFxQyx5Q0FBeUMscUNBQXFDLHVJQUF1SSxpTkFBaU4sR0FBRyw2Q0FBNkMsNElBQTRJLCtJQUErSSxHQUFHLG1DQUFtQyx1RUFBdUUsR0FBRzs7QUFFampDO0FBQ0EscUxBQXFMLDBCQUEwQixFQUFFLHFDQUFxQyx5QkFBeUIsR0FBRyx5Q0FBeUMsd0JBQXdCLHlCQUF5QixzQkFBc0IsK0RBQStELG1DQUFtQyxnQ0FBZ0MsR0FBRyxpQ0FBaUMsc0JBQXNCLDBEQUEwRCxHQUFHLHVDQUF1Qyx1REFBdUQsbUJBQW1CLDJEQUEyRCwyREFBMkQseUNBQXlDLCtCQUErQixHQUFHLHNDQUFzQyxnREFBZ0QsZUFBZSx1Q0FBdUMsNENBQTRDLCtCQUErQixHQUFHLHNDQUFzQyw4REFBOEQsZUFBZSwyREFBMkQsMkRBQTJELDRDQUE0QywrQkFBK0IsR0FBRyx1Q0FBdUMsNkRBQTZELGVBQWUsdUNBQXVDLHVDQUF1Qyx3Q0FBd0MsK0JBQStCLEdBQUcscUNBQXFDLG9CQUFvQixrRUFBa0Usb0RBQW9ELG1EQUFtRCxHQUFHLDhDQUE4QyxlQUFlLDRCQUE0Qiw2SEFBNkgsR0FBRztBQUN2b0U7QUFDQSx3RkFBd0YsbUNBQW1DO0FBQzNIO0FBQ0Esa0NBQWtDLDREQUFVO0FBQzVDO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDZCQUE2Qiw0RUFBZTtBQUM1QztBQUNBOztBQUVBLDhCQUE4Qiw0RUFBZTtBQUM3QztBQUNBOztBQUVBO0FBQ0E7QUFDQSw4REFBOEQ7QUFDOUQ7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsMEJBQTBCOztBQUUxQixxQkFBcUIsd0RBQUk7QUFDekIsNkNBQTZDO0FBQzdDLE9BQU8sSUFBSTtBQUNYO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDO0FBQ3lDO0FBQzFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvc2VydmljZXMvc2hhZGVyLW1vZHVsZS9TaGFkZXJNb2R1bGVTZXJ2aWNlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuXG52YXIgX2RlYywgX2NsYXNzLCBfdGVtcDtcblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmltcG9ydCB7IGluamVjdGFibGUgfSBmcm9tICdpbnZlcnNpZnknO1xuaW1wb3J0IHsgZXh0cmFjdFVuaWZvcm1zIH0gZnJvbSAnLi4vLi4vdXRpbHMvc2hhZGVyLW1vZHVsZSc7XG5pbXBvcnQgeyB1bmlxIH0gZnJvbSAnLi4vLi4vdXRpbHMvdW5pcSc7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuL3NoYWRlcnMvd2ViZ2wucGlja2luZy5mcmFnLmdsc2wnICovXG52YXIgcGlja2luZ0ZyYWcgPSBcInZhcnlpbmcgdmVjNCB2X1BpY2tpbmdSZXN1bHQ7XFxudW5pZm9ybSB2ZWM0IHVfSGlnaGxpZ2h0Q29sb3IgOiBbMCwgMCwgMCwgMF07XFxudW5pZm9ybSBmbG9hdCB1X1BpY2tpbmdTdGFnZSA6IDAuMDtcXG5cXG4jZGVmaW5lIFBJQ0tJTkdfRU5DT0RFIDEuMFxcbiNkZWZpbmUgUElDS0lOR19ISUdITElHSFQgMi4wXFxuI2RlZmluZSBDT0xPUl9TQ0FMRSAxLiAvIDI1NS5cXG5cXG4vKlxcbiAqIFJldHVybnMgaGlnaGxpZ2h0IGNvbG9yIGlmIHRoaXMgaXRlbSBpcyBzZWxlY3RlZC5cXG4gKi9cXG52ZWM0IGZpbHRlckhpZ2hsaWdodENvbG9yKHZlYzQgY29sb3IpIHtcXG4gIGJvb2wgc2VsZWN0ZWQgPSBib29sKHZfUGlja2luZ1Jlc3VsdC5hKTtcXG5cXG4gIGlmIChzZWxlY3RlZCkge1xcbiAgICB2ZWM0IGhpZ2hMaWdodENvbG9yID0gdV9IaWdobGlnaHRDb2xvciAqIENPTE9SX1NDQUxFO1xcblxcbiAgICBmbG9hdCBoaWdoTGlnaHRBbHBoYSA9IGhpZ2hMaWdodENvbG9yLmE7XFxuICAgIGZsb2F0IGhpZ2hMaWdodFJhdGlvID0gaGlnaExpZ2h0QWxwaGEgLyAoaGlnaExpZ2h0QWxwaGEgKyBjb2xvci5hICogKDEuMCAtIGhpZ2hMaWdodEFscGhhKSk7XFxuXFxuICAgIHZlYzMgcmVzdWx0UkdCID0gbWl4KGNvbG9yLnJnYiwgaGlnaExpZ2h0Q29sb3IucmdiLCBoaWdoTGlnaHRSYXRpbyk7XFxuICAgIHJldHVybiB2ZWM0KHJlc3VsdFJHQiwgY29sb3IuYSk7XFxuICB9IGVsc2Uge1xcbiAgICByZXR1cm4gY29sb3I7XFxuICB9XFxufVxcblxcbi8qXFxuICogUmV0dXJucyBwaWNraW5nIGNvbG9yIGlmIHBpY2tpbmcgZW5hYmxlZCBlbHNlIHVubW9kaWZpZWQgYXJndW1lbnQuXFxuICovXFxudmVjNCBmaWx0ZXJQaWNraW5nQ29sb3IodmVjNCBjb2xvcikge1xcbiAgdmVjMyBwaWNraW5nQ29sb3IgPSB2X1BpY2tpbmdSZXN1bHQucmdiO1xcbiAgaWYgKHVfUGlja2luZ1N0YWdlID09IFBJQ0tJTkdfRU5DT0RFICYmIGxlbmd0aChwaWNraW5nQ29sb3IpIDwgMC4wMDEpIHtcXG4gICAgZGlzY2FyZDtcXG4gIH1cXG4gIHJldHVybiB1X1BpY2tpbmdTdGFnZSA9PSBQSUNLSU5HX0VOQ09ERSA/IHZlYzQocGlja2luZ0NvbG9yLCBzdGVwKDAuMDAxLGNvbG9yLmEpKTogY29sb3I7XFxufVxcblxcbi8qXFxuICogUmV0dXJucyBwaWNraW5nIGNvbG9yIGlmIHBpY2tpbmcgaXMgZW5hYmxlZCBpZiBub3RcXG4gKiBoaWdobGlnaHQgY29sb3IgaWYgdGhpcyBpdGVtIGlzIHNlbGVjdGVkLCBvdGhlcndpc2UgdW5tb2RpZmllZCBhcmd1bWVudC5cXG4gKi9cXG52ZWM0IGZpbHRlckNvbG9yKHZlYzQgY29sb3IpIHtcXG4gIHJldHVybiBmaWx0ZXJQaWNraW5nQ29sb3IoZmlsdGVySGlnaGxpZ2h0Q29sb3IoY29sb3IpKTtcXG59XFxuXCI7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuL3NoYWRlcnMvd2ViZ2wucGlja2luZy52ZXJ0Lmdsc2wnICovXG52YXIgcGlja2luZ1ZlcnQgPSBcImF0dHJpYnV0ZSB2ZWMzIGFfUGlja2luZ0NvbG9yO1xcbnZhcnlpbmcgdmVjNCB2X1BpY2tpbmdSZXN1bHQ7XFxuXFxudW5pZm9ybSB2ZWMzIHVfUGlja2luZ0NvbG9yIDogWzAsIDAsIDBdO1xcbnVuaWZvcm0gdmVjNCB1X0hpZ2hsaWdodENvbG9yIDogWzAsIDAsIDAsIDBdO1xcbnVuaWZvcm0gZmxvYXQgdV9QaWNraW5nU3RhZ2UgOiAwLjA7XFxudW5pZm9ybSBmbG9hdCB1X1BpY2tpbmdUaHJlc2hvbGQgOiAxLjA7XFxudW5pZm9ybSBmbG9hdCB1X1BpY2tpbmdCdWZmZXI6IDAuMDtcXG5cXG4jZGVmaW5lIFBJQ0tJTkdfRU5DT0RFIDEuMFxcbiNkZWZpbmUgUElDS0lOR19ISUdITElHSFQgMi4wXFxuI2RlZmluZSBDT0xPUl9TQ0FMRSAxLiAvIDI1NS5cXG5cXG5ib29sIGlzVmVydGV4UGlja2VkKHZlYzMgdmVydGV4Q29sb3IpIHtcXG4gIHJldHVyblxcbiAgICBhYnModmVydGV4Q29sb3IuciAtIHVfUGlja2luZ0NvbG9yLnIpIDwgdV9QaWNraW5nVGhyZXNob2xkICYmXFxuICAgIGFicyh2ZXJ0ZXhDb2xvci5nIC0gdV9QaWNraW5nQ29sb3IuZykgPCB1X1BpY2tpbmdUaHJlc2hvbGQgJiZcXG4gICAgYWJzKHZlcnRleENvbG9yLmIgLSB1X1BpY2tpbmdDb2xvci5iKSA8IHVfUGlja2luZ1RocmVzaG9sZDtcXG59XFxuXFxudm9pZCBzZXRQaWNraW5nQ29sb3IodmVjMyBwaWNraW5nQ29sb3IpIHtcXG4gIC8vIGNvbXBhcmVzIG9ubHkgaW4gaGlnaGxpZ2h0IHN0YWdlXFxuICB2X1BpY2tpbmdSZXN1bHQuYSA9IGZsb2F0KCh1X1BpY2tpbmdTdGFnZSA9PSBQSUNLSU5HX0hJR0hMSUdIVCkgJiYgaXNWZXJ0ZXhQaWNrZWQocGlja2luZ0NvbG9yKSk7XFxuXFxuICAvLyBTdG9yZXMgdGhlIHBpY2tpbmcgY29sb3Igc28gdGhhdCB0aGUgZnJhZ21lbnQgc2hhZGVyIGNhbiByZW5kZXIgaXQgZHVyaW5nIHBpY2tpbmdcXG4gIHZfUGlja2luZ1Jlc3VsdC5yZ2IgPSBwaWNraW5nQ29sb3IgKiBDT0xPUl9TQ0FMRTtcXG59XFxuXFxuZmxvYXQgc2V0UGlja2luZ1NpemUoZmxvYXQgeCkge1xcbiAgIHJldHVybiB1X1BpY2tpbmdTdGFnZSA9PSBQSUNLSU5HX0VOQ09ERSA/IHggKyB1X1BpY2tpbmdCdWZmZXIgOiB4O1xcbn1cIjtcblxuLyogYmFiZWwtcGx1Z2luLWlubGluZS1pbXBvcnQgJy4vc2hhZGVycy93ZWJnbC5zZGYyZC5mcmFnLmdsc2wnICovXG52YXIgc2RmMmRGcmFnID0gXCIvKipcXG4gKiAyRCBzaWduZWQgZGlzdGFuY2UgZmllbGQgZnVuY3Rpb25zXFxuICogQHNlZSBodHRwOi8vd3d3LmlxdWlsZXpsZXMub3JnL3d3dy9hcnRpY2xlcy9kaXN0ZnVuY3Rpb25zMmQvZGlzdGZ1bmN0aW9uczJkLmh0bVxcbiAqL1xcblxcbmZsb2F0IG5kb3QodmVjMiBhLCB2ZWMyIGIgKSB7IHJldHVybiBhLngqYi54IC0gYS55KmIueTsgfVxcblxcbmZsb2F0IHNkQ2lyY2xlKHZlYzIgcCwgZmxvYXQgcikge1xcbiAgcmV0dXJuIGxlbmd0aChwKSAtIHI7XFxufVxcblxcbmZsb2F0IHNkRXF1aWxhdGVyYWxUcmlhbmdsZSh2ZWMyIHApIHtcXG4gIGZsb2F0IGsgPSBzcXJ0KDMuMCk7XFxuICBwLnggPSBhYnMocC54KSAtIDEuMDtcXG4gIHAueSA9IHAueSArIDEuMC9rO1xcbiAgaWYoIHAueCArIGsqcC55ID4gMC4wICkgcCA9IHZlYzIocC54LWsqcC55LC1rKnAueC1wLnkpLzIuMDtcXG4gIHAueCAtPSBjbGFtcCggcC54LCAtMi4wLCAwLjAgKTtcXG4gIHJldHVybiAtbGVuZ3RoKHApKnNpZ24ocC55KTtcXG59XFxuXFxuZmxvYXQgc2RCb3godmVjMiBwLCB2ZWMyIGIpIHtcXG4gIHZlYzIgZCA9IGFicyhwKS1iO1xcbiAgcmV0dXJuIGxlbmd0aChtYXgoZCx2ZWMyKDApKSkgKyBtaW4obWF4KGQueCxkLnkpLDAuMCk7XFxufVxcblxcbmZsb2F0IHNkUGVudGFnb24odmVjMiBwLCBmbG9hdCByKSB7XFxuICB2ZWMzIGsgPSB2ZWMzKDAuODA5MDE2OTk0LDAuNTg3Nzg1MjUyLDAuNzI2NTQyNTI4KTtcXG4gIHAueCA9IGFicyhwLngpO1xcbiAgcCAtPSAyLjAqbWluKGRvdCh2ZWMyKC1rLngsay55KSxwKSwwLjApKnZlYzIoLWsueCxrLnkpO1xcbiAgcCAtPSAyLjAqbWluKGRvdCh2ZWMyKCBrLngsay55KSxwKSwwLjApKnZlYzIoIGsueCxrLnkpO1xcbiAgcCAtPSB2ZWMyKGNsYW1wKHAueCwtciprLnosciprLnopLHIpO1xcbiAgcmV0dXJuIGxlbmd0aChwKSpzaWduKHAueSk7XFxufVxcblxcbmZsb2F0IHNkSGV4YWdvbih2ZWMyIHAsIGZsb2F0IHIpIHtcXG4gIHZlYzMgayA9IHZlYzMoLTAuODY2MDI1NDA0LDAuNSwwLjU3NzM1MDI2OSk7XFxuICBwID0gYWJzKHApO1xcbiAgcCAtPSAyLjAqbWluKGRvdChrLnh5LHApLDAuMCkqay54eTtcXG4gIHAgLT0gdmVjMihjbGFtcChwLngsIC1rLnoqciwgay56KnIpLCByKTtcXG4gIHJldHVybiBsZW5ndGgocCkqc2lnbihwLnkpO1xcbn1cXG5cXG5mbG9hdCBzZE9jdG9nb24odmVjMiBwLCBmbG9hdCByKSB7XFxuICB2ZWMzIGsgPSB2ZWMzKC0wLjkyMzg3OTUzMjUsIDAuMzgyNjgzNDMyMywgMC40MTQyMTM1NjIzICk7XFxuICBwID0gYWJzKHApO1xcbiAgcCAtPSAyLjAqbWluKGRvdCh2ZWMyKCBrLngsay55KSxwKSwwLjApKnZlYzIoIGsueCxrLnkpO1xcbiAgcCAtPSAyLjAqbWluKGRvdCh2ZWMyKC1rLngsay55KSxwKSwwLjApKnZlYzIoLWsueCxrLnkpO1xcbiAgcCAtPSB2ZWMyKGNsYW1wKHAueCwgLWsueipyLCBrLnoqciksIHIpO1xcbiAgcmV0dXJuIGxlbmd0aChwKSpzaWduKHAueSk7XFxufVxcblxcbmZsb2F0IHNkSGV4YWdyYW0odmVjMiBwLCBmbG9hdCByKSB7XFxuICB2ZWM0IGs9dmVjNCgtMC41LDAuODY2MDI1NDAzOCwwLjU3NzM1MDI2OTIsMS43MzIwNTA4MDc2KTtcXG4gIHAgPSBhYnMocCk7XFxuICBwIC09IDIuMCptaW4oZG90KGsueHkscCksMC4wKSprLnh5O1xcbiAgcCAtPSAyLjAqbWluKGRvdChrLnl4LHApLDAuMCkqay55eDtcXG4gIHAgLT0gdmVjMihjbGFtcChwLngsciprLnosciprLncpLHIpO1xcbiAgcmV0dXJuIGxlbmd0aChwKSpzaWduKHAueSk7XFxufVxcblxcbmZsb2F0IHNkUmhvbWJ1cyh2ZWMyIHAsIHZlYzIgYikge1xcbiAgdmVjMiBxID0gYWJzKHApO1xcbiAgZmxvYXQgaCA9IGNsYW1wKCgtMi4wKm5kb3QocSxiKStuZG90KGIsYikpL2RvdChiLGIpLC0xLjAsMS4wKTtcXG4gIGZsb2F0IGQgPSBsZW5ndGgoIHEgLSAwLjUqYip2ZWMyKDEuMC1oLDEuMCtoKSApO1xcbiAgcmV0dXJuIGQgKiBzaWduKCBxLngqYi55ICsgcS55KmIueCAtIGIueCpiLnkgKTtcXG59XFxuXFxuZmxvYXQgc2RWZXNpY2EodmVjMiBwLCBmbG9hdCByLCBmbG9hdCBkKSB7XFxuICBwID0gYWJzKHApO1xcbiAgZmxvYXQgYiA9IHNxcnQocipyLWQqZCk7IC8vIGNhbiBkZWxheSB0aGlzIHNxcnRcXG4gIHJldHVybiAoKHAueS1iKSpkPnAueCpiKVxcbiAgICAgICAgICA/IGxlbmd0aChwLXZlYzIoMC4wLGIpKVxcbiAgICAgICAgICA6IGxlbmd0aChwLXZlYzIoLWQsMC4wKSktcjtcXG59XCI7XG52YXIgcHJlY2lzaW9uUmVnRXhwID0gL3ByZWNpc2lvblxccysoaGlnaHxsb3d8bWVkaXVtKXBcXHMrZmxvYXQvO1xudmFyIGdsb2JhbERlZmF1bHRwcmVjaXNpb24gPSAnI2lmZGVmIEdMX0ZSQUdNRU5UX1BSRUNJU0lPTl9ISUdIXFxuIHByZWNpc2lvbiBoaWdocCBmbG9hdDtcXG4gI2Vsc2VcXG4gcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XFxuI2VuZGlmXFxuJztcbnZhciBpbmNsdWRlUmVnRXhwID0gLyNwcmFnbWEgaW5jbHVkZSAoW1wiXitcIl0/W1wiXFwgXCJbYS16QS1aXzAtOV0oLiopXCJdKj8pL2c7XG52YXIgU2hhZGVyTW9kdWxlU2VydmljZSA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjKF9jbGFzcyA9IChfdGVtcCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFNoYWRlck1vZHVsZVNlcnZpY2UoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFNoYWRlck1vZHVsZVNlcnZpY2UpO1xuXG4gICAgdGhpcy5tb2R1bGVDYWNoZSA9IHt9O1xuICAgIHRoaXMucmF3Q29udGVudENhY2hlID0ge307XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoU2hhZGVyTW9kdWxlU2VydmljZSwgW3tcbiAgICBrZXk6IFwicmVnaXN0ZXJCdWlsdGluTW9kdWxlc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWdpc3RlckJ1aWx0aW5Nb2R1bGVzKCkge1xuICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICB0aGlzLnJlZ2lzdGVyTW9kdWxlKCdwaWNraW5nJywge1xuICAgICAgICB2czogcGlja2luZ1ZlcnQsXG4gICAgICAgIGZzOiBwaWNraW5nRnJhZ1xuICAgICAgfSk7XG4gICAgICB0aGlzLnJlZ2lzdGVyTW9kdWxlKCdzZGYyZCcsIHtcbiAgICAgICAgdnM6ICcnLFxuICAgICAgICBmczogc2RmMmRGcmFnXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVnaXN0ZXJNb2R1bGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVnaXN0ZXJNb2R1bGUobW9kdWxlTmFtZSwgbW9kdWxlUGFyYW1zKSB7XG4gICAgICAvLyBwcmV2ZW50IHJlZ2lzdGVyaW5nIHRoZSBzYW1lIG1vZHVsZSBtdWx0aXBsZSB0aW1lc1xuICAgICAgaWYgKHRoaXMucmF3Q29udGVudENhY2hlW21vZHVsZU5hbWVdKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIF9tb2R1bGVQYXJhbXMkdnMgPSBtb2R1bGVQYXJhbXMudnMsXG4gICAgICAgICAgdnMgPSBfbW9kdWxlUGFyYW1zJHZzID09PSB2b2lkIDAgPyAnJyA6IF9tb2R1bGVQYXJhbXMkdnMsXG4gICAgICAgICAgX21vZHVsZVBhcmFtcyRmcyA9IG1vZHVsZVBhcmFtcy5mcyxcbiAgICAgICAgICBmcyA9IF9tb2R1bGVQYXJhbXMkZnMgPT09IHZvaWQgMCA/ICcnIDogX21vZHVsZVBhcmFtcyRmcyxcbiAgICAgICAgICBkZWNsYXJlZFVuaWZvcm1zID0gbW9kdWxlUGFyYW1zLnVuaWZvcm1zO1xuXG4gICAgICB2YXIgX2V4dHJhY3RVbmlmb3JtcyA9IGV4dHJhY3RVbmlmb3Jtcyh2cyksXG4gICAgICAgICAgZXh0cmFjdGVkVlMgPSBfZXh0cmFjdFVuaWZvcm1zLmNvbnRlbnQsXG4gICAgICAgICAgdnNVbmlmb3JtcyA9IF9leHRyYWN0VW5pZm9ybXMudW5pZm9ybXM7XG5cbiAgICAgIHZhciBfZXh0cmFjdFVuaWZvcm1zMiA9IGV4dHJhY3RVbmlmb3JtcyhmcyksXG4gICAgICAgICAgZXh0cmFjdGVkRlMgPSBfZXh0cmFjdFVuaWZvcm1zMi5jb250ZW50LFxuICAgICAgICAgIGZzVW5pZm9ybXMgPSBfZXh0cmFjdFVuaWZvcm1zMi51bmlmb3JtcztcblxuICAgICAgdGhpcy5yYXdDb250ZW50Q2FjaGVbbW9kdWxlTmFtZV0gPSB7XG4gICAgICAgIGZzOiBleHRyYWN0ZWRGUyxcbiAgICAgICAgdW5pZm9ybXM6IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCB2c1VuaWZvcm1zKSwgZnNVbmlmb3JtcyksIGRlY2xhcmVkVW5pZm9ybXMpLFxuICAgICAgICB2czogZXh0cmFjdGVkVlNcbiAgICAgIH07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRlc3Ryb3lcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgIHRoaXMubW9kdWxlQ2FjaGUgPSB7fTtcbiAgICAgIHRoaXMucmF3Q29udGVudENhY2hlID0ge307XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldE1vZHVsZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRNb2R1bGUobW9kdWxlTmFtZSkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgaWYgKHRoaXMubW9kdWxlQ2FjaGVbbW9kdWxlTmFtZV0pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kdWxlQ2FjaGVbbW9kdWxlTmFtZV07XG4gICAgICB9XG5cbiAgICAgIHZhciByYXdWUyA9IHRoaXMucmF3Q29udGVudENhY2hlW21vZHVsZU5hbWVdLnZzIHx8ICcnO1xuICAgICAgdmFyIHJhd0ZTID0gdGhpcy5yYXdDb250ZW50Q2FjaGVbbW9kdWxlTmFtZV0uZnMgfHwgJyc7XG5cbiAgICAgIHZhciBfdGhpcyRwcm9jZXNzTW9kdWxlID0gdGhpcy5wcm9jZXNzTW9kdWxlKHJhd1ZTLCBbXSwgJ3ZzJyksXG4gICAgICAgICAgdnMgPSBfdGhpcyRwcm9jZXNzTW9kdWxlLmNvbnRlbnQsXG4gICAgICAgICAgdnNJbmNsdWRlTGlzdCA9IF90aGlzJHByb2Nlc3NNb2R1bGUuaW5jbHVkZUxpc3Q7XG5cbiAgICAgIHZhciBfdGhpcyRwcm9jZXNzTW9kdWxlMiA9IHRoaXMucHJvY2Vzc01vZHVsZShyYXdGUywgW10sICdmcycpLFxuICAgICAgICAgIGZzID0gX3RoaXMkcHJvY2Vzc01vZHVsZTIuY29udGVudCxcbiAgICAgICAgICBmc0luY2x1ZGVMaXN0ID0gX3RoaXMkcHJvY2Vzc01vZHVsZTIuaW5jbHVkZUxpc3Q7XG5cbiAgICAgIHZhciBjb21waWxlZEZzID0gZnM7IC8vIFRPRE86IGV4dHJhY3QgdW5pZm9ybXMgYW5kIHRoZWlyIGRlZmF1bHQgdmFsdWVzIGZyb20gR0xTTFxuXG4gICAgICB2YXIgdW5pZm9ybXMgPSB1bmlxKHZzSW5jbHVkZUxpc3QuY29uY2F0KGZzSW5jbHVkZUxpc3QpLmNvbmNhdChtb2R1bGVOYW1lKSkucmVkdWNlKGZ1bmN0aW9uIChwcmV2LCBjdXIpIHtcbiAgICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcHJldiksIF90aGlzLnJhd0NvbnRlbnRDYWNoZVtjdXJdLnVuaWZvcm1zKTtcbiAgICAgIH0sIHt9KTtcbiAgICAgIC8qKlxuICAgICAgICogc2V0IGRlZmF1bHQgcHJlY2lzaW9uIGZvciBmcmFnbWVudCBzaGFkZXJcbiAgICAgICAqIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzI4NTQwMjkwL3doeS1pdC1pcy1uZWNlc3NhcnktdG8tc2V0LXByZWNpc2lvbi1mb3ItdGhlLWZyYWdtZW50LXNoYWRlclxuICAgICAgICovXG5cbiAgICAgIGlmICghcHJlY2lzaW9uUmVnRXhwLnRlc3QoZnMpKSB7XG4gICAgICAgIGNvbXBpbGVkRnMgPSBnbG9iYWxEZWZhdWx0cHJlY2lzaW9uICsgZnM7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubW9kdWxlQ2FjaGVbbW9kdWxlTmFtZV0gPSB7XG4gICAgICAgIGZzOiBjb21waWxlZEZzLnRyaW0oKSxcbiAgICAgICAgdW5pZm9ybXM6IHVuaWZvcm1zLFxuICAgICAgICB2czogdnMudHJpbSgpXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHRoaXMubW9kdWxlQ2FjaGVbbW9kdWxlTmFtZV07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInByb2Nlc3NNb2R1bGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHJvY2Vzc01vZHVsZShyYXdDb250ZW50LCBpbmNsdWRlTGlzdCwgdHlwZSkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHZhciBjb21waWxlZCA9IHJhd0NvbnRlbnQucmVwbGFjZShpbmNsdWRlUmVnRXhwLCBmdW5jdGlvbiAoXywgc3RyTWF0Y2gpIHtcbiAgICAgICAgdmFyIGluY2x1ZGVPcHQgPSBzdHJNYXRjaC5zcGxpdCgnICcpO1xuICAgICAgICB2YXIgaW5jbHVkZU5hbWUgPSBpbmNsdWRlT3B0WzBdLnJlcGxhY2UoL1wiL2csICcnKTtcblxuICAgICAgICBpZiAoaW5jbHVkZUxpc3QuaW5kZXhPZihpbmNsdWRlTmFtZSkgPiAtMSkge1xuICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB0eHQgPSBfdGhpczIucmF3Q29udGVudENhY2hlW2luY2x1ZGVOYW1lXVt0eXBlXTtcbiAgICAgICAgaW5jbHVkZUxpc3QucHVzaChpbmNsdWRlTmFtZSk7XG5cbiAgICAgICAgdmFyIF90aGlzMiRwcm9jZXNzTW9kdWxlID0gX3RoaXMyLnByb2Nlc3NNb2R1bGUodHh0IHx8ICcnLCBpbmNsdWRlTGlzdCwgdHlwZSksXG4gICAgICAgICAgICBjb250ZW50ID0gX3RoaXMyJHByb2Nlc3NNb2R1bGUuY29udGVudDtcblxuICAgICAgICByZXR1cm4gY29udGVudDtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29udGVudDogY29tcGlsZWQsXG4gICAgICAgIGluY2x1ZGVMaXN0OiBpbmNsdWRlTGlzdFxuICAgICAgfTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gU2hhZGVyTW9kdWxlU2VydmljZTtcbn0oKSwgX3RlbXApKSB8fCBfY2xhc3MpO1xuZXhwb3J0IHsgU2hhZGVyTW9kdWxlU2VydmljZSBhcyBkZWZhdWx0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TaGFkZXJNb2R1bGVTZXJ2aWNlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/shader-module/ShaderModuleService.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/shader-module/index.js":
/*!********************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/shader-module/index.js ***!
\********************************************************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ShaderModuleService__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ShaderModuleService */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/shader-module/ShaderModuleService.js\");\n/* empty/unused harmony star reexport */\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9zZXJ2aWNlcy9zaGFkZXItbW9kdWxlL2luZGV4LmpzP2QwYWEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBLHdDQUFzQztBQUN0QyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL3NlcnZpY2VzL3NoYWRlci1tb2R1bGUvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL1NoYWRlck1vZHVsZVNlcnZpY2UnO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/services/shader-module/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/AABB.js":
/*!**************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/AABB.js ***!
\**************************************************************************************/
/*! exports provided: AABB */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AABB\", function() { return AABB; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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 gl_matrix__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n\n\n\n\n/**\n * Axis-Aligned Bounding Box\n * 为了便于后续 Frustum Culling,通过查找表定义 p-vertex 和 n-vertex\n * @see https://github.com/antvis/GWebGPUEngine/issues/3\n */\nvar AABB = /*#__PURE__*/function () {\n function AABB(center, halfExtents) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, AABB);\n\n this.center = void 0;\n this.halfExtents = void 0;\n this.min = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\n this.max = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\n this.update(center, halfExtents);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(AABB, [{\n key: \"update\",\n value: function update(center, halfExtents) {\n this.center = center || gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\n this.halfExtents = halfExtents || gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(0.5, 0.5, 0.5);\n this.min = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].sub(this.min, this.center, this.halfExtents);\n this.max = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].add(this.max, this.center, this.halfExtents);\n }\n }, {\n key: \"setMinMax\",\n value: function setMinMax(min, max) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].add(this.center, max, min);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].scale(this.center, this.center, 0.5);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].sub(this.halfExtents, max, min);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].scale(this.halfExtents, this.halfExtents, 0.5);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(this.min, min);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(this.max, max);\n }\n }, {\n key: \"getMin\",\n value: function getMin() {\n return this.min;\n }\n }, {\n key: \"getMax\",\n value: function getMax() {\n return this.max;\n }\n }, {\n key: \"add\",\n value: function add(aabb) {\n var tc = this.center;\n var tcx = tc[0];\n var tcy = tc[1];\n var tcz = tc[2];\n var th = this.halfExtents;\n var thx = th[0];\n var thy = th[1];\n var thz = th[2];\n var tminx = tcx - thx;\n var tmaxx = tcx + thx;\n var tminy = tcy - thy;\n var tmaxy = tcy + thy;\n var tminz = tcz - thz;\n var tmaxz = tcz + thz;\n var oc = aabb.center;\n var ocx = oc[0];\n var ocy = oc[1];\n var ocz = oc[2];\n var oh = aabb.halfExtents;\n var ohx = oh[0];\n var ohy = oh[1];\n var ohz = oh[2];\n var ominx = ocx - ohx;\n var omaxx = ocx + ohx;\n var ominy = ocy - ohy;\n var omaxy = ocy + ohy;\n var ominz = ocz - ohz;\n var omaxz = ocz + ohz;\n\n if (ominx < tminx) {\n tminx = ominx;\n }\n\n if (omaxx > tmaxx) {\n tmaxx = omaxx;\n }\n\n if (ominy < tminy) {\n tminy = ominy;\n }\n\n if (omaxy > tmaxy) {\n tmaxy = omaxy;\n }\n\n if (ominz < tminz) {\n tminz = ominz;\n }\n\n if (omaxz > tmaxz) {\n tmaxz = omaxz;\n }\n\n tc[0] = (tminx + tmaxx) * 0.5;\n tc[1] = (tminy + tmaxy) * 0.5;\n tc[2] = (tminz + tmaxz) * 0.5;\n th[0] = (tmaxx - tminx) * 0.5;\n th[1] = (tmaxy - tminy) * 0.5;\n th[2] = (tmaxz - tminz) * 0.5;\n this.min[0] = tminx;\n this.min[1] = tminy;\n this.min[2] = tminz;\n this.max[0] = tmaxx;\n this.max[1] = tmaxy;\n this.max[2] = tmaxz;\n }\n }, {\n key: \"intersects\",\n value: function intersects(aabb) {\n var aMax = this.getMax();\n var aMin = this.getMin();\n var bMax = aabb.getMax();\n var bMin = aabb.getMin();\n return aMin[0] <= bMax[0] && aMax[0] >= bMin[0] && aMin[1] <= bMax[1] && aMax[1] >= bMin[1] && aMin[2] <= bMax[2] && aMax[2] >= bMin[2];\n }\n }, {\n key: \"containsPoint\",\n value: function containsPoint(point) {\n var min = this.getMin();\n var max = this.getMax();\n return !(point[0] < min[0] || point[0] > max[0] || point[1] < min[1] || point[1] > max[1] || point[2] < min[2] || point[2] > max[2]);\n }\n /**\n * get n-vertex\n * @param plane plane of CullingVolume\n */\n\n }, {\n key: \"getNegativeFarPoint\",\n value: function getNegativeFarPoint(plane) {\n if (plane.pnVertexFlag === 0x111) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create(), this.min);\n } else if (plane.pnVertexFlag === 0x110) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.min[0], this.min[1], this.max[2]);\n } else if (plane.pnVertexFlag === 0x101) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.min[0], this.max[1], this.min[2]);\n } else if (plane.pnVertexFlag === 0x100) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.min[0], this.max[1], this.max[2]);\n } else if (plane.pnVertexFlag === 0x011) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.max[0], this.min[1], this.min[2]);\n } else if (plane.pnVertexFlag === 0x010) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.max[0], this.min[1], this.max[2]);\n } else if (plane.pnVertexFlag === 0x001) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.max[0], this.max[1], this.min[2]);\n } else {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.max[0], this.max[1], this.max[2]);\n }\n }\n /**\n * get p-vertex\n * @param plane plane of CullingVolume\n */\n\n }, {\n key: \"getPositiveFarPoint\",\n value: function getPositiveFarPoint(plane) {\n if (plane.pnVertexFlag === 0x111) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create(), this.max);\n } else if (plane.pnVertexFlag === 0x110) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.max[0], this.max[1], this.min[2]);\n } else if (plane.pnVertexFlag === 0x101) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.max[0], this.min[1], this.max[2]);\n } else if (plane.pnVertexFlag === 0x100) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.max[0], this.min[1], this.min[2]);\n } else if (plane.pnVertexFlag === 0x011) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.min[0], this.max[1], this.max[2]);\n } else if (plane.pnVertexFlag === 0x010) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.min[0], this.max[1], this.min[2]);\n } else if (plane.pnVertexFlag === 0x001) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.min[0], this.min[1], this.max[2]);\n } else {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(this.min[0], this.min[1], this.min[2]);\n }\n }\n }]);\n\n return AABB;\n}();\n//# sourceMappingURL=AABB.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9zaGFwZS9BQUJCLmpzP2EyYWYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjtBQUM3Qjs7QUFFakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0EsZUFBZSw4Q0FBSTtBQUNuQixlQUFlLDhDQUFJO0FBQ25CO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQSw4QkFBOEIsOENBQUk7QUFDbEMsd0NBQXdDLDhDQUFJO0FBQzVDLGlCQUFpQiw4Q0FBSTtBQUNyQixpQkFBaUIsOENBQUk7QUFDckI7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLE1BQU0sOENBQUk7QUFDVixNQUFNLDhDQUFJO0FBQ1YsTUFBTSw4Q0FBSTtBQUNWLE1BQU0sOENBQUk7QUFDVixNQUFNLDhDQUFJO0FBQ1YsTUFBTSw4Q0FBSTtBQUNWO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxlQUFlLDhDQUFJLE1BQU0sOENBQUk7QUFDN0IsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxlQUFlLDhDQUFJLE1BQU0sOENBQUk7QUFDN0IsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkIsT0FBTztBQUNQLGVBQWUsOENBQUk7QUFDbkI7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9zaGFwZS9BQUJCLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IHsgdmVjMyB9IGZyb20gJ2dsLW1hdHJpeCc7XG5cbi8qKlxuICogQXhpcy1BbGlnbmVkIEJvdW5kaW5nIEJveFxuICog5Li65LqG5L6/5LqO5ZCO57utIEZydXN0dW0gQ3VsbGluZ++8jOmAmui/h+afpeaJvuihqOWumuS5iSBwLXZlcnRleCDlkowgbi12ZXJ0ZXhcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2FudHZpcy9HV2ViR1BVRW5naW5lL2lzc3Vlcy8zXG4gKi9cbmV4cG9ydCB2YXIgQUFCQiA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEFBQkIoY2VudGVyLCBoYWxmRXh0ZW50cykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBBQUJCKTtcblxuICAgIHRoaXMuY2VudGVyID0gdm9pZCAwO1xuICAgIHRoaXMuaGFsZkV4dGVudHMgPSB2b2lkIDA7XG4gICAgdGhpcy5taW4gPSB2ZWMzLmNyZWF0ZSgpO1xuICAgIHRoaXMubWF4ID0gdmVjMy5jcmVhdGUoKTtcbiAgICB0aGlzLnVwZGF0ZShjZW50ZXIsIGhhbGZFeHRlbnRzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhBQUJCLCBbe1xuICAgIGtleTogXCJ1cGRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdXBkYXRlKGNlbnRlciwgaGFsZkV4dGVudHMpIHtcbiAgICAgIHRoaXMuY2VudGVyID0gY2VudGVyIHx8IHZlYzMuY3JlYXRlKCk7XG4gICAgICB0aGlzLmhhbGZFeHRlbnRzID0gaGFsZkV4dGVudHMgfHwgdmVjMy5mcm9tVmFsdWVzKDAuNSwgMC41LCAwLjUpO1xuICAgICAgdGhpcy5taW4gPSB2ZWMzLnN1Yih0aGlzLm1pbiwgdGhpcy5jZW50ZXIsIHRoaXMuaGFsZkV4dGVudHMpO1xuICAgICAgdGhpcy5tYXggPSB2ZWMzLmFkZCh0aGlzLm1heCwgdGhpcy5jZW50ZXIsIHRoaXMuaGFsZkV4dGVudHMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRNaW5NYXhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0TWluTWF4KG1pbiwgbWF4KSB7XG4gICAgICB2ZWMzLmFkZCh0aGlzLmNlbnRlciwgbWF4LCBtaW4pO1xuICAgICAgdmVjMy5zY2FsZSh0aGlzLmNlbnRlciwgdGhpcy5jZW50ZXIsIDAuNSk7XG4gICAgICB2ZWMzLnN1Yih0aGlzLmhhbGZFeHRlbnRzLCBtYXgsIG1pbik7XG4gICAgICB2ZWMzLnNjYWxlKHRoaXMuaGFsZkV4dGVudHMsIHRoaXMuaGFsZkV4dGVudHMsIDAuNSk7XG4gICAgICB2ZWMzLmNvcHkodGhpcy5taW4sIG1pbik7XG4gICAgICB2ZWMzLmNvcHkodGhpcy5tYXgsIG1heCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldE1pblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRNaW4oKSB7XG4gICAgICByZXR1cm4gdGhpcy5taW47XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldE1heFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRNYXgoKSB7XG4gICAgICByZXR1cm4gdGhpcy5tYXg7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImFkZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhZGQoYWFiYikge1xuICAgICAgdmFyIHRjID0gdGhpcy5jZW50ZXI7XG4gICAgICB2YXIgdGN4ID0gdGNbMF07XG4gICAgICB2YXIgdGN5ID0gdGNbMV07XG4gICAgICB2YXIgdGN6ID0gdGNbMl07XG4gICAgICB2YXIgdGggPSB0aGlzLmhhbGZFeHRlbnRzO1xuICAgICAgdmFyIHRoeCA9IHRoWzBdO1xuICAgICAgdmFyIHRoeSA9IHRoWzFdO1xuICAgICAgdmFyIHRoeiA9IHRoWzJdO1xuICAgICAgdmFyIHRtaW54ID0gdGN4IC0gdGh4O1xuICAgICAgdmFyIHRtYXh4ID0gdGN4ICsgdGh4O1xuICAgICAgdmFyIHRtaW55ID0gdGN5IC0gdGh5O1xuICAgICAgdmFyIHRtYXh5ID0gdGN5ICsgdGh5O1xuICAgICAgdmFyIHRtaW56ID0gdGN6IC0gdGh6O1xuICAgICAgdmFyIHRtYXh6ID0gdGN6ICsgdGh6O1xuICAgICAgdmFyIG9jID0gYWFiYi5jZW50ZXI7XG4gICAgICB2YXIgb2N4ID0gb2NbMF07XG4gICAgICB2YXIgb2N5ID0gb2NbMV07XG4gICAgICB2YXIgb2N6ID0gb2NbMl07XG4gICAgICB2YXIgb2ggPSBhYWJiLmhhbGZFeHRlbnRzO1xuICAgICAgdmFyIG9oeCA9IG9oWzBdO1xuICAgICAgdmFyIG9oeSA9IG9oWzFdO1xuICAgICAgdmFyIG9oeiA9IG9oWzJdO1xuICAgICAgdmFyIG9taW54ID0gb2N4IC0gb2h4O1xuICAgICAgdmFyIG9tYXh4ID0gb2N4ICsgb2h4O1xuICAgICAgdmFyIG9taW55ID0gb2N5IC0gb2h5O1xuICAgICAgdmFyIG9tYXh5ID0gb2N5ICsgb2h5O1xuICAgICAgdmFyIG9taW56ID0gb2N6IC0gb2h6O1xuICAgICAgdmFyIG9tYXh6ID0gb2N6ICsgb2h6O1xuXG4gICAgICBpZiAob21pbnggPCB0bWlueCkge1xuICAgICAgICB0bWlueCA9IG9taW54O1xuICAgICAgfVxuXG4gICAgICBpZiAob21heHggPiB0bWF4eCkge1xuICAgICAgICB0bWF4eCA9IG9tYXh4O1xuICAgICAgfVxuXG4gICAgICBpZiAob21pbnkgPCB0bWlueSkge1xuICAgICAgICB0bWlueSA9IG9taW55O1xuICAgICAgfVxuXG4gICAgICBpZiAob21heHkgPiB0bWF4eSkge1xuICAgICAgICB0bWF4eSA9IG9tYXh5O1xuICAgICAgfVxuXG4gICAgICBpZiAob21pbnogPCB0bWlueikge1xuICAgICAgICB0bWlueiA9IG9taW56O1xuICAgICAgfVxuXG4gICAgICBpZiAob21heHogPiB0bWF4eikge1xuICAgICAgICB0bWF4eiA9IG9tYXh6O1xuICAgICAgfVxuXG4gICAgICB0Y1swXSA9ICh0bWlueCArIHRtYXh4KSAqIDAuNTtcbiAgICAgIHRjWzFdID0gKHRtaW55ICsgdG1heHkpICogMC41O1xuICAgICAgdGNbMl0gPSAodG1pbnogKyB0bWF4eikgKiAwLjU7XG4gICAgICB0aFswXSA9ICh0bWF4eCAtIHRtaW54KSAqIDAuNTtcbiAgICAgIHRoWzFdID0gKHRtYXh5IC0gdG1pbnkpICogMC41O1xuICAgICAgdGhbMl0gPSAodG1heHogLSB0bWlueikgKiAwLjU7XG4gICAgICB0aGlzLm1pblswXSA9IHRtaW54O1xuICAgICAgdGhpcy5taW5bMV0gPSB0bWlueTtcbiAgICAgIHRoaXMubWluWzJdID0gdG1pbno7XG4gICAgICB0aGlzLm1heFswXSA9IHRtYXh4O1xuICAgICAgdGhpcy5tYXhbMV0gPSB0bWF4eTtcbiAgICAgIHRoaXMubWF4WzJdID0gdG1heHo7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImludGVyc2VjdHNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW50ZXJzZWN0cyhhYWJiKSB7XG4gICAgICB2YXIgYU1heCA9IHRoaXMuZ2V0TWF4KCk7XG4gICAgICB2YXIgYU1pbiA9IHRoaXMuZ2V0TWluKCk7XG4gICAgICB2YXIgYk1heCA9IGFhYmIuZ2V0TWF4KCk7XG4gICAgICB2YXIgYk1pbiA9IGFhYmIuZ2V0TWluKCk7XG4gICAgICByZXR1cm4gYU1pblswXSA8PSBiTWF4WzBdICYmIGFNYXhbMF0gPj0gYk1pblswXSAmJiBhTWluWzFdIDw9IGJNYXhbMV0gJiYgYU1heFsxXSA+PSBiTWluWzFdICYmIGFNaW5bMl0gPD0gYk1heFsyXSAmJiBhTWF4WzJdID49IGJNaW5bMl07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbnRhaW5zUG9pbnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29udGFpbnNQb2ludChwb2ludCkge1xuICAgICAgdmFyIG1pbiA9IHRoaXMuZ2V0TWluKCk7XG4gICAgICB2YXIgbWF4ID0gdGhpcy5nZXRNYXgoKTtcbiAgICAgIHJldHVybiAhKHBvaW50WzBdIDwgbWluWzBdIHx8IHBvaW50WzBdID4gbWF4WzBdIHx8IHBvaW50WzFdIDwgbWluWzFdIHx8IHBvaW50WzFdID4gbWF4WzFdIHx8IHBvaW50WzJdIDwgbWluWzJdIHx8IHBvaW50WzJdID4gbWF4WzJdKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogZ2V0IG4tdmVydGV4XG4gICAgICogQHBhcmFtIHBsYW5lIHBsYW5lIG9mIEN1bGxpbmdWb2x1bWVcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImdldE5lZ2F0aXZlRmFyUG9pbnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0TmVnYXRpdmVGYXJQb2ludChwbGFuZSkge1xuICAgICAgaWYgKHBsYW5lLnBuVmVydGV4RmxhZyA9PT0gMHgxMTEpIHtcbiAgICAgICAgcmV0dXJuIHZlYzMuY29weSh2ZWMzLmNyZWF0ZSgpLCB0aGlzLm1pbik7XG4gICAgICB9IGVsc2UgaWYgKHBsYW5lLnBuVmVydGV4RmxhZyA9PT0gMHgxMTApIHtcbiAgICAgICAgcmV0dXJuIHZlYzMuZnJvbVZhbHVlcyh0aGlzLm1pblswXSwgdGhpcy5taW5bMV0sIHRoaXMubWF4WzJdKTtcbiAgICAgIH0gZWxzZSBpZiAocGxhbmUucG5WZXJ0ZXhGbGFnID09PSAweDEwMSkge1xuICAgICAgICByZXR1cm4gdmVjMy5mcm9tVmFsdWVzKHRoaXMubWluWzBdLCB0aGlzLm1heFsxXSwgdGhpcy5taW5bMl0pO1xuICAgICAgfSBlbHNlIGlmIChwbGFuZS5wblZlcnRleEZsYWcgPT09IDB4MTAwKSB7XG4gICAgICAgIHJldHVybiB2ZWMzLmZyb21WYWx1ZXModGhpcy5taW5bMF0sIHRoaXMubWF4WzFdLCB0aGlzLm1heFsyXSk7XG4gICAgICB9IGVsc2UgaWYgKHBsYW5lLnBuVmVydGV4RmxhZyA9PT0gMHgwMTEpIHtcbiAgICAgICAgcmV0dXJuIHZlYzMuZnJvbVZhbHVlcyh0aGlzLm1heFswXSwgdGhpcy5taW5bMV0sIHRoaXMubWluWzJdKTtcbiAgICAgIH0gZWxzZSBpZiAocGxhbmUucG5WZXJ0ZXhGbGFnID09PSAweDAxMCkge1xuICAgICAgICByZXR1cm4gdmVjMy5mcm9tVmFsdWVzKHRoaXMubWF4WzBdLCB0aGlzLm1pblsxXSwgdGhpcy5tYXhbMl0pO1xuICAgICAgfSBlbHNlIGlmIChwbGFuZS5wblZlcnRleEZsYWcgPT09IDB4MDAxKSB7XG4gICAgICAgIHJldHVybiB2ZWMzLmZyb21WYWx1ZXModGhpcy5tYXhbMF0sIHRoaXMubWF4WzFdLCB0aGlzLm1pblsyXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdmVjMy5mcm9tVmFsdWVzKHRoaXMubWF4WzBdLCB0aGlzLm1heFsxXSwgdGhpcy5tYXhbMl0pO1xuICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBnZXQgcC12ZXJ0ZXhcbiAgICAgKiBAcGFyYW0gcGxhbmUgcGxhbmUgb2YgQ3VsbGluZ1ZvbHVtZVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0UG9zaXRpdmVGYXJQb2ludFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRQb3NpdGl2ZUZhclBvaW50KHBsYW5lKSB7XG4gICAgICBpZiAocGxhbmUucG5WZXJ0ZXhGbGFnID09PSAweDExMSkge1xuICAgICAgICByZXR1cm4gdmVjMy5jb3B5KHZlYzMuY3JlYXRlKCksIHRoaXMubWF4KTtcbiAgICAgIH0gZWxzZSBpZiAocGxhbmUucG5WZXJ0ZXhGbGFnID09PSAweDExMCkge1xuICAgICAgICByZXR1cm4gdmVjMy5mcm9tVmFsdWVzKHRoaXMubWF4WzBdLCB0aGlzLm1heFsxXSwgdGhpcy5taW5bMl0pO1xuICAgICAgfSBlbHNlIGlmIChwbGFuZS5wblZlcnRleEZsYWcgPT09IDB4MTAxKSB7XG4gICAgICAgIHJldHVybiB2ZWMzLmZyb21WYWx1ZXModGhpcy5tYXhbMF0sIHRoaXMubWluWzFdLCB0aGlzLm1heFsyXSk7XG4gICAgICB9IGVsc2UgaWYgKHBsYW5lLnBuVmVydGV4RmxhZyA9PT0gMHgxMDApIHtcbiAgICAgICAgcmV0dXJuIHZlYzMuZnJvbVZhbHVlcyh0aGlzLm1heFswXSwgdGhpcy5taW5bMV0sIHRoaXMubWluWzJdKTtcbiAgICAgIH0gZWxzZSBpZiAocGxhbmUucG5WZXJ0ZXhGbGFnID09PSAweDAxMSkge1xuICAgICAgICByZXR1cm4gdmVjMy5mcm9tVmFsdWVzKHRoaXMubWluWzBdLCB0aGlzLm1heFsxXSwgdGhpcy5tYXhbMl0pO1xuICAgICAgfSBlbHNlIGlmIChwbGFuZS5wblZlcnRleEZsYWcgPT09IDB4MDEwKSB7XG4gICAgICAgIHJldHVybiB2ZWMzLmZyb21WYWx1ZXModGhpcy5taW5bMF0sIHRoaXMubWF4WzFdLCB0aGlzLm1pblsyXSk7XG4gICAgICB9IGVsc2UgaWYgKHBsYW5lLnBuVmVydGV4RmxhZyA9PT0gMHgwMDEpIHtcbiAgICAgICAgcmV0dXJuIHZlYzMuZnJvbVZhbHVlcyh0aGlzLm1pblswXSwgdGhpcy5taW5bMV0sIHRoaXMubWF4WzJdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB2ZWMzLmZyb21WYWx1ZXModGhpcy5taW5bMF0sIHRoaXMubWluWzFdLCB0aGlzLm1pblsyXSk7XG4gICAgICB9XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEFBQkI7XG59KCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BQUJCLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/AABB.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/BoundingSphere.js":
/*!************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/BoundingSphere.js ***!
\************************************************************************************************/
/*! exports provided: BoundingSphere */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BoundingSphere\", function() { return BoundingSphere; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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 gl_matrix__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n\n\n\nvar tmpVecA = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\nvar BoundingSphere = /*#__PURE__*/function () {\n function BoundingSphere(center, radius) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, BoundingSphere);\n\n this.center = void 0;\n this.radius = void 0;\n this.center = center || gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\n this.radius = radius || 0.5;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(BoundingSphere, [{\n key: \"containsPoint\",\n value: function containsPoint(point) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].sub(tmpVecA, point, this.center);\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].length(tmpVecA) < this.radius * this.radius;\n }\n }, {\n key: \"intersects\",\n value: function intersects(sphere) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].sub(tmpVecA, sphere.center, this.center);\n var totalRadius = sphere.radius + this.radius;\n\n if (gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].length(tmpVecA) <= totalRadius * totalRadius) {\n return true;\n }\n\n return false;\n }\n }]);\n\n return BoundingSphere;\n}();\n//# sourceMappingURL=BoundingSphere.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9zaGFwZS9Cb3VuZGluZ1NwaGVyZS5qcz9jMzQzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ047QUFDN0I7QUFDakMsY0FBYyw4Q0FBSTtBQUNYO0FBQ1A7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0EsNEJBQTRCLDhDQUFJO0FBQ2hDO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQSxNQUFNLDhDQUFJO0FBQ1YsYUFBYSw4Q0FBSTtBQUNqQjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsTUFBTSw4Q0FBSTtBQUNWOztBQUVBLFVBQVUsOENBQUk7QUFDZDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvc2hhcGUvQm91bmRpbmdTcGhlcmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgeyB2ZWMzIH0gZnJvbSAnZ2wtbWF0cml4JztcbnZhciB0bXBWZWNBID0gdmVjMy5jcmVhdGUoKTtcbmV4cG9ydCB2YXIgQm91bmRpbmdTcGhlcmUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBCb3VuZGluZ1NwaGVyZShjZW50ZXIsIHJhZGl1cykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBCb3VuZGluZ1NwaGVyZSk7XG5cbiAgICB0aGlzLmNlbnRlciA9IHZvaWQgMDtcbiAgICB0aGlzLnJhZGl1cyA9IHZvaWQgMDtcbiAgICB0aGlzLmNlbnRlciA9IGNlbnRlciB8fCB2ZWMzLmNyZWF0ZSgpO1xuICAgIHRoaXMucmFkaXVzID0gcmFkaXVzIHx8IDAuNTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhCb3VuZGluZ1NwaGVyZSwgW3tcbiAgICBrZXk6IFwiY29udGFpbnNQb2ludFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb250YWluc1BvaW50KHBvaW50KSB7XG4gICAgICB2ZWMzLnN1Yih0bXBWZWNBLCBwb2ludCwgdGhpcy5jZW50ZXIpO1xuICAgICAgcmV0dXJuIHZlYzMubGVuZ3RoKHRtcFZlY0EpIDwgdGhpcy5yYWRpdXMgKiB0aGlzLnJhZGl1cztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaW50ZXJzZWN0c1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbnRlcnNlY3RzKHNwaGVyZSkge1xuICAgICAgdmVjMy5zdWIodG1wVmVjQSwgc3BoZXJlLmNlbnRlciwgdGhpcy5jZW50ZXIpO1xuICAgICAgdmFyIHRvdGFsUmFkaXVzID0gc3BoZXJlLnJhZGl1cyArIHRoaXMucmFkaXVzO1xuXG4gICAgICBpZiAodmVjMy5sZW5ndGgodG1wVmVjQSkgPD0gdG90YWxSYWRpdXMgKiB0b3RhbFJhZGl1cykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBCb3VuZGluZ1NwaGVyZTtcbn0oKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJvdW5kaW5nU3BoZXJlLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/BoundingSphere.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/Frustum.js":
/*!*****************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/Frustum.js ***!
\*****************************************************************************************/
/*! exports provided: Mask, Frustum */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Mask\", function() { return Mask; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Frustum\", function() { return Frustum; });\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"./node_modules/_@babel_runtime@7.16.3@@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_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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 gl_matrix__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n/* harmony import */ var _Plane__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Plane */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/Plane.js\");\n\n\n\n\n\nvar Mask;\n\n(function (Mask) {\n Mask[Mask[\"OUTSIDE\"] = 4294967295] = \"OUTSIDE\";\n Mask[Mask[\"INSIDE\"] = 0] = \"INSIDE\";\n Mask[Mask[\"INDETERMINATE\"] = 2147483647] = \"INDETERMINATE\";\n})(Mask || (Mask = {}));\n\nvar Frustum = /*#__PURE__*/function () {\n function Frustum(planes) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Frustum);\n\n this.planes = [];\n\n if (planes) {\n this.planes = planes;\n } else {\n for (var i = 0; i < 6; i++) {\n this.planes.push(new _Plane__WEBPACK_IMPORTED_MODULE_4__[\"Plane\"]());\n }\n }\n }\n /**\n * extract 6 planes from vpMatrix\n * @see http://www8.cs.umu.se/kurser/5DV051/HT12/lab/plane_extraction.pdf\n * @param vpMatrix viewProjectionMatrix\n */\n\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Frustum, [{\n key: \"extractFromVPMatrix\",\n value: function extractFromVPMatrix(vpMatrix) {\n var _vpMatrix = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(vpMatrix, 16),\n m0 = _vpMatrix[0],\n m1 = _vpMatrix[1],\n m2 = _vpMatrix[2],\n m3 = _vpMatrix[3],\n m4 = _vpMatrix[4],\n m5 = _vpMatrix[5],\n m6 = _vpMatrix[6],\n m7 = _vpMatrix[7],\n m8 = _vpMatrix[8],\n m9 = _vpMatrix[9],\n m10 = _vpMatrix[10],\n m11 = _vpMatrix[11],\n m12 = _vpMatrix[12],\n m13 = _vpMatrix[13],\n m14 = _vpMatrix[14],\n m15 = _vpMatrix[15]; // right\n\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_3__[\"vec3\"].set(this.planes[0].normal, m3 - m0, m7 - m4, m11 - m8);\n this.planes[0].distance = -(m15 - m12); // left\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_3__[\"vec3\"].set(this.planes[1].normal, m3 + m0, m7 + m4, m11 + m8);\n this.planes[1].distance = -(m15 + m12); // bottom\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_3__[\"vec3\"].set(this.planes[2].normal, m3 + m1, m7 + m5, m11 + m9);\n this.planes[2].distance = -(m15 + m13); // top\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_3__[\"vec3\"].set(this.planes[3].normal, m3 - m1, m7 - m5, m11 - m9);\n this.planes[3].distance = -(m15 - m13); // far\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_3__[\"vec3\"].set(this.planes[4].normal, m3 - m2, m7 - m6, m11 - m10);\n this.planes[4].distance = -(m15 - m14); // near\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_3__[\"vec3\"].set(this.planes[5].normal, m3 + m2, m7 + m6, m11 + m10);\n this.planes[5].distance = -(m15 + m14);\n this.planes.forEach(function (plane) {\n plane.normalize();\n plane.updatePNVertexFlag();\n });\n }\n }]);\n\n return Frustum;\n}();\n//# sourceMappingURL=Frustum.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9zaGFwZS9GcnVzdHVtLmpzPzczOTgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrRTtBQUNFO0FBQ047QUFDN0I7QUFDRDtBQUN6Qjs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsb0JBQW9COztBQUVkO0FBQ1A7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMLHFCQUFxQixPQUFPO0FBQzVCLDZCQUE2Qiw0Q0FBSztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBLHNCQUFzQiwyRUFBYztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEI7OztBQUc5QixNQUFNLDhDQUFJO0FBQ1YsNkNBQTZDOztBQUU3QyxNQUFNLDhDQUFJO0FBQ1YsNkNBQTZDOztBQUU3QyxNQUFNLDhDQUFJO0FBQ1YsNkNBQTZDOztBQUU3QyxNQUFNLDhDQUFJO0FBQ1YsNkNBQTZDOztBQUU3QyxNQUFNLDhDQUFJO0FBQ1YsNkNBQTZDOztBQUU3QyxNQUFNLDhDQUFJO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvc2hhcGUvRnJ1c3R1bS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfc2xpY2VkVG9BcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgeyB2ZWMzIH0gZnJvbSAnZ2wtbWF0cml4JztcbmltcG9ydCB7IFBsYW5lIH0gZnJvbSAnLi9QbGFuZSc7XG5leHBvcnQgdmFyIE1hc2s7XG5cbihmdW5jdGlvbiAoTWFzaykge1xuICBNYXNrW01hc2tbXCJPVVRTSURFXCJdID0gNDI5NDk2NzI5NV0gPSBcIk9VVFNJREVcIjtcbiAgTWFza1tNYXNrW1wiSU5TSURFXCJdID0gMF0gPSBcIklOU0lERVwiO1xuICBNYXNrW01hc2tbXCJJTkRFVEVSTUlOQVRFXCJdID0gMjE0NzQ4MzY0N10gPSBcIklOREVURVJNSU5BVEVcIjtcbn0pKE1hc2sgfHwgKE1hc2sgPSB7fSkpO1xuXG5leHBvcnQgdmFyIEZydXN0dW0gPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBGcnVzdHVtKHBsYW5lcykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBGcnVzdHVtKTtcblxuICAgIHRoaXMucGxhbmVzID0gW107XG5cbiAgICBpZiAocGxhbmVzKSB7XG4gICAgICB0aGlzLnBsYW5lcyA9IHBsYW5lcztcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspIHtcbiAgICAgICAgdGhpcy5wbGFuZXMucHVzaChuZXcgUGxhbmUoKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBleHRyYWN0IDYgcGxhbmVzIGZyb20gdnBNYXRyaXhcbiAgICogQHNlZSBodHRwOi8vd3d3OC5jcy51bXUuc2Uva3Vyc2VyLzVEVjA1MS9IVDEyL2xhYi9wbGFuZV9leHRyYWN0aW9uLnBkZlxuICAgKiBAcGFyYW0gdnBNYXRyaXggdmlld1Byb2plY3Rpb25NYXRyaXhcbiAgICovXG5cblxuICBfY3JlYXRlQ2xhc3MoRnJ1c3R1bSwgW3tcbiAgICBrZXk6IFwiZXh0cmFjdEZyb21WUE1hdHJpeFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBleHRyYWN0RnJvbVZQTWF0cml4KHZwTWF0cml4KSB7XG4gICAgICB2YXIgX3ZwTWF0cml4ID0gX3NsaWNlZFRvQXJyYXkodnBNYXRyaXgsIDE2KSxcbiAgICAgICAgICBtMCA9IF92cE1hdHJpeFswXSxcbiAgICAgICAgICBtMSA9IF92cE1hdHJpeFsxXSxcbiAgICAgICAgICBtMiA9IF92cE1hdHJpeFsyXSxcbiAgICAgICAgICBtMyA9IF92cE1hdHJpeFszXSxcbiAgICAgICAgICBtNCA9IF92cE1hdHJpeFs0XSxcbiAgICAgICAgICBtNSA9IF92cE1hdHJpeFs1XSxcbiAgICAgICAgICBtNiA9IF92cE1hdHJpeFs2XSxcbiAgICAgICAgICBtNyA9IF92cE1hdHJpeFs3XSxcbiAgICAgICAgICBtOCA9IF92cE1hdHJpeFs4XSxcbiAgICAgICAgICBtOSA9IF92cE1hdHJpeFs5XSxcbiAgICAgICAgICBtMTAgPSBfdnBNYXRyaXhbMTBdLFxuICAgICAgICAgIG0xMSA9IF92cE1hdHJpeFsxMV0sXG4gICAgICAgICAgbTEyID0gX3ZwTWF0cml4WzEyXSxcbiAgICAgICAgICBtMTMgPSBfdnBNYXRyaXhbMTNdLFxuICAgICAgICAgIG0xNCA9IF92cE1hdHJpeFsxNF0sXG4gICAgICAgICAgbTE1ID0gX3ZwTWF0cml4WzE1XTsgLy8gcmlnaHRcblxuXG4gICAgICB2ZWMzLnNldCh0aGlzLnBsYW5lc1swXS5ub3JtYWwsIG0zIC0gbTAsIG03IC0gbTQsIG0xMSAtIG04KTtcbiAgICAgIHRoaXMucGxhbmVzWzBdLmRpc3RhbmNlID0gLShtMTUgLSBtMTIpOyAvLyBsZWZ0XG5cbiAgICAgIHZlYzMuc2V0KHRoaXMucGxhbmVzWzFdLm5vcm1hbCwgbTMgKyBtMCwgbTcgKyBtNCwgbTExICsgbTgpO1xuICAgICAgdGhpcy5wbGFuZXNbMV0uZGlzdGFuY2UgPSAtKG0xNSArIG0xMik7IC8vIGJvdHRvbVxuXG4gICAgICB2ZWMzLnNldCh0aGlzLnBsYW5lc1syXS5ub3JtYWwsIG0zICsgbTEsIG03ICsgbTUsIG0xMSArIG05KTtcbiAgICAgIHRoaXMucGxhbmVzWzJdLmRpc3RhbmNlID0gLShtMTUgKyBtMTMpOyAvLyB0b3BcblxuICAgICAgdmVjMy5zZXQodGhpcy5wbGFuZXNbM10ubm9ybWFsLCBtMyAtIG0xLCBtNyAtIG01LCBtMTEgLSBtOSk7XG4gICAgICB0aGlzLnBsYW5lc1szXS5kaXN0YW5jZSA9IC0obTE1IC0gbTEzKTsgLy8gZmFyXG5cbiAgICAgIHZlYzMuc2V0KHRoaXMucGxhbmVzWzRdLm5vcm1hbCwgbTMgLSBtMiwgbTcgLSBtNiwgbTExIC0gbTEwKTtcbiAgICAgIHRoaXMucGxhbmVzWzRdLmRpc3RhbmNlID0gLShtMTUgLSBtMTQpOyAvLyBuZWFyXG5cbiAgICAgIHZlYzMuc2V0KHRoaXMucGxhbmVzWzVdLm5vcm1hbCwgbTMgKyBtMiwgbTcgKyBtNiwgbTExICsgbTEwKTtcbiAgICAgIHRoaXMucGxhbmVzWzVdLmRpc3RhbmNlID0gLShtMTUgKyBtMTQpO1xuICAgICAgdGhpcy5wbGFuZXMuZm9yRWFjaChmdW5jdGlvbiAocGxhbmUpIHtcbiAgICAgICAgcGxhbmUubm9ybWFsaXplKCk7XG4gICAgICAgIHBsYW5lLnVwZGF0ZVBOVmVydGV4RmxhZygpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEZydXN0dW07XG59KCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1GcnVzdHVtLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/Frustum.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/Plane.js":
/*!***************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/Plane.js ***!
\***************************************************************************************/
/*! exports provided: Plane */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Plane\", function() { return Plane; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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 gl_matrix__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n\n\n\nvar Plane = /*#__PURE__*/function () {\n /**\n * lookup table for p-vertex & n-vertex when doing frustum culling\n */\n function Plane(distance, normal) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, Plane);\n\n this.distance = void 0;\n this.normal = void 0;\n this.pnVertexFlag = void 0;\n this.distance = distance || 0;\n this.normal = normal || gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(0, 1, 0);\n this.updatePNVertexFlag();\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(Plane, [{\n key: \"updatePNVertexFlag\",\n value: function updatePNVertexFlag() {\n this.pnVertexFlag = (Number(this.normal[0] >= 0) << 8) + (Number(this.normal[1] >= 0) << 4) + Number(this.normal[2] >= 0);\n }\n }, {\n key: \"distanceToPoint\",\n value: function distanceToPoint(point) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].dot(point, this.normal) - this.distance;\n }\n }, {\n key: \"normalize\",\n value: function normalize() {\n var invLen = 1 / gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].len(this.normal);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].scale(this.normal, this.normal, invLen);\n this.distance *= invLen;\n }\n }, {\n key: \"intersectsLine\",\n value: function intersectsLine(start, end, point) {\n var d0 = this.distanceToPoint(start);\n var d1 = this.distanceToPoint(end);\n var t = d0 / (d0 - d1);\n var intersects = t >= 0 && t <= 1;\n\n if (intersects && point) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].lerp(point, start, end, t);\n }\n\n return intersects;\n }\n }]);\n\n return Plane;\n}();\n//# sourceMappingURL=Plane.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9zaGFwZS9QbGFuZS5qcz9jNGVmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ047QUFDN0I7QUFDMUI7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLDhDQUFJO0FBQ2hDO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxhQUFhLDhDQUFJO0FBQ2pCO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSx1QkFBdUIsOENBQUk7QUFDM0IsTUFBTSw4Q0FBSTtBQUNWO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsUUFBUSw4Q0FBSTtBQUNaOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvc2hhcGUvUGxhbmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgeyB2ZWMzIH0gZnJvbSAnZ2wtbWF0cml4JztcbmV4cG9ydCB2YXIgUGxhbmUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogbG9va3VwIHRhYmxlIGZvciBwLXZlcnRleCAmIG4tdmVydGV4IHdoZW4gZG9pbmcgZnJ1c3R1bSBjdWxsaW5nXG4gICAqL1xuICBmdW5jdGlvbiBQbGFuZShkaXN0YW5jZSwgbm9ybWFsKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFBsYW5lKTtcblxuICAgIHRoaXMuZGlzdGFuY2UgPSB2b2lkIDA7XG4gICAgdGhpcy5ub3JtYWwgPSB2b2lkIDA7XG4gICAgdGhpcy5wblZlcnRleEZsYWcgPSB2b2lkIDA7XG4gICAgdGhpcy5kaXN0YW5jZSA9IGRpc3RhbmNlIHx8IDA7XG4gICAgdGhpcy5ub3JtYWwgPSBub3JtYWwgfHwgdmVjMy5mcm9tVmFsdWVzKDAsIDEsIDApO1xuICAgIHRoaXMudXBkYXRlUE5WZXJ0ZXhGbGFnKCk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUGxhbmUsIFt7XG4gICAga2V5OiBcInVwZGF0ZVBOVmVydGV4RmxhZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1cGRhdGVQTlZlcnRleEZsYWcoKSB7XG4gICAgICB0aGlzLnBuVmVydGV4RmxhZyA9IChOdW1iZXIodGhpcy5ub3JtYWxbMF0gPj0gMCkgPDwgOCkgKyAoTnVtYmVyKHRoaXMubm9ybWFsWzFdID49IDApIDw8IDQpICsgTnVtYmVyKHRoaXMubm9ybWFsWzJdID49IDApO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkaXN0YW5jZVRvUG9pbnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGlzdGFuY2VUb1BvaW50KHBvaW50KSB7XG4gICAgICByZXR1cm4gdmVjMy5kb3QocG9pbnQsIHRoaXMubm9ybWFsKSAtIHRoaXMuZGlzdGFuY2U7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIm5vcm1hbGl6ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBub3JtYWxpemUoKSB7XG4gICAgICB2YXIgaW52TGVuID0gMSAvIHZlYzMubGVuKHRoaXMubm9ybWFsKTtcbiAgICAgIHZlYzMuc2NhbGUodGhpcy5ub3JtYWwsIHRoaXMubm9ybWFsLCBpbnZMZW4pO1xuICAgICAgdGhpcy5kaXN0YW5jZSAqPSBpbnZMZW47XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImludGVyc2VjdHNMaW5lXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGludGVyc2VjdHNMaW5lKHN0YXJ0LCBlbmQsIHBvaW50KSB7XG4gICAgICB2YXIgZDAgPSB0aGlzLmRpc3RhbmNlVG9Qb2ludChzdGFydCk7XG4gICAgICB2YXIgZDEgPSB0aGlzLmRpc3RhbmNlVG9Qb2ludChlbmQpO1xuICAgICAgdmFyIHQgPSBkMCAvIChkMCAtIGQxKTtcbiAgICAgIHZhciBpbnRlcnNlY3RzID0gdCA+PSAwICYmIHQgPD0gMTtcblxuICAgICAgaWYgKGludGVyc2VjdHMgJiYgcG9pbnQpIHtcbiAgICAgICAgdmVjMy5sZXJwKHBvaW50LCBzdGFydCwgZW5kLCB0KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGludGVyc2VjdHM7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFBsYW5lO1xufSgpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UGxhbmUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/Plane.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/Ray.js":
/*!*************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/Ray.js ***!
\*************************************************************************************/
/*! exports provided: Ray */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Ray\", function() { return Ray; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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 gl_matrix__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n\n\n\nvar tmpVecA = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\nvar tmpVecB = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\nvar tmpVecC = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\nvar tmpVecD = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\nvar tmpVecE = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\n/**\n * 包含求交方法:\n * * intersectsShape(Shape, intersection) 返回交点和求交结果\n * @see https://github.com/playcanvas/engine/blob/master/src/shape/bounding-box.js#L161\n * @see https://github.com/mrdoob/three.js/blob/dev/src/math/Ray.js\n */\n\nvar Ray = /*#__PURE__*/function () {\n function Ray(origin, direction) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, Ray);\n\n this.origin = void 0;\n this.direction = void 0;\n this.origin = origin || gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create();\n this.direction = direction || gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].fromValues(0, 0, -1);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(Ray, [{\n key: \"intersectsAABB\",\n value: function intersectsAABB(aabb, intersection) {\n return intersection ? this.intersectAABBWithIntersection(aabb, intersection) : this.intersectsAABBWithoutIntersection(aabb);\n }\n }, {\n key: \"intersectsSphere\",\n value: function intersectsSphere(sphere, intersection) {\n var m = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].sub(tmpVecA, this.origin, sphere.center);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].normalize(tmpVecB, gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(tmpVecB, this.direction));\n var b = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].dot(m, tmpVecB);\n var c = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].dot(m, m) - sphere.radius * sphere.radius; // exit if ray's origin outside of sphere (c > 0) and ray pointing away from s (b > 0)\n\n if (c > 0 && b > 0) {\n return null;\n }\n\n var discr = b * b - c; // a negative discriminant corresponds to ray missing sphere\n\n if (discr < 0) {\n return false;\n } // ray intersects sphere, compute smallest t value of intersection\n\n\n var t = Math.abs(-b - Math.sqrt(discr)); // if t is negative, ray started inside sphere so clamp t to zero\n\n if (intersection) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(intersection, this.direction);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].scaleAndAdd(intersection, this.origin, intersection, t);\n }\n\n return true;\n }\n }, {\n key: \"intersectsPlane\",\n value: function intersectsPlane(plane, intersection) {\n var t = (plane.distance - gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].dot(plane.normal, this.origin)) / gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].dot(plane.normal, this.direction);\n var intersects = t >= 0;\n\n if (intersects && intersection) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].scaleAndAdd(intersection, this.origin, this.direction, t);\n }\n\n return intersects;\n }\n /**\n * faster than implements like Three.js\n * @see https://github.com/playcanvas/engine/blob/master/src/shape/bounding-box.js#L161\n */\n\n }, {\n key: \"intersectsAABBWithoutIntersection\",\n value: function intersectsAABBWithoutIntersection(aabb) {\n var diff = tmpVecA;\n var cross = tmpVecB;\n var prod = tmpVecC;\n var absDiff = tmpVecD;\n var absDir = tmpVecE;\n var rayDir = this.direction;\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].sub(diff, this.origin, aabb.center);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].set(absDiff, Math.abs(diff[0]), Math.abs(diff[1]), Math.abs(diff[2]));\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].mul(prod, diff, rayDir);\n\n if (absDiff[0] > aabb.halfExtents[0] && prod[0] >= 0 || absDiff[1] > aabb.halfExtents[1] && prod[1] >= 0 || absDiff[2] > aabb.halfExtents[2] && prod[2] >= 0) {\n return false;\n }\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].set(absDir, Math.abs(rayDir[0]), Math.abs(rayDir[1]), Math.abs(rayDir[2]));\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].cross(cross, rayDir, diff);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].set(cross, Math.abs(cross[0]), Math.abs(cross[1]), Math.abs(cross[2]));\n return !(cross[0] > aabb.halfExtents[1] * absDir[2] + aabb.halfExtents[2] * absDir[1] || cross[1] > aabb.halfExtents[0] * absDir[2] + aabb.halfExtents[2] * absDir[0] || cross[2] > aabb.halfExtents[0] * absDir[1] + aabb.halfExtents[1] * absDir[0]);\n }\n }, {\n key: \"intersectAABBWithIntersection\",\n value: function intersectAABBWithIntersection(aabb, intersection) {\n var tMin = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create(), aabb.getMin());\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].sub(tMin, tMin, this.origin);\n var tMax = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].create(), aabb.getMax());\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].sub(tMax, tMax, this.origin);\n var dir = this.direction; // Ensure that we are not dividing it by zero\n\n if (dir[0] === 0) {\n tMin[0] = tMin[0] < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n tMax[0] = tMax[0] < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n } else {\n tMin[0] /= dir[0];\n tMax[0] /= dir[0];\n }\n\n if (dir[1] === 0) {\n tMin[1] = tMin[1] < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n tMax[1] = tMax[1] < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n } else {\n tMin[1] /= dir[1];\n tMax[1] /= dir[1];\n }\n\n if (dir[2] === 0) {\n tMin[2] = tMin[2] < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n tMax[2] = tMax[2] < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n } else {\n tMin[2] /= dir[2];\n tMax[2] /= dir[2];\n }\n\n var realMin = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].set(tmpVecC, Math.min(tMin[0], tMax[0]), Math.min(tMin[1], tMax[1]), Math.min(tMin[2], tMax[2]));\n var realMax = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].set(tmpVecD, Math.max(tMin[0], tMax[0]), Math.max(tMin[1], tMax[1]), Math.max(tMin[2], tMax[2]));\n var minMax = Math.min(Math.min(realMax[0], realMax[1]), realMax[2]);\n var maxMin = Math.max(Math.max(realMin[0], realMin[1]), realMin[2]);\n var intersects = minMax >= maxMin && maxMin >= 0;\n\n if (intersects) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(intersection, this.direction);\n gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].scaleAndAdd(intersection, this.origin, intersection, maxMin);\n }\n\n return intersects;\n }\n }]);\n\n return Ray;\n}();\n//# sourceMappingURL=Ray.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9zaGFwZS9SYXkuanM/NzJlOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvRTtBQUNOO0FBQzdCO0FBQ2pDLGNBQWMsOENBQUk7QUFDbEIsY0FBYyw4Q0FBSTtBQUNsQixjQUFjLDhDQUFJO0FBQ2xCLGNBQWMsOENBQUk7QUFDbEIsY0FBYyw4Q0FBSTtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7QUFDQSw0QkFBNEIsOENBQUk7QUFDaEMsa0NBQWtDLDhDQUFJO0FBQ3RDOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsY0FBYyw4Q0FBSTtBQUNsQixNQUFNLDhDQUFJLG9CQUFvQiw4Q0FBSTtBQUNsQyxjQUFjLDhDQUFJO0FBQ2xCLGNBQWMsOENBQUksMkNBQTJDOztBQUU3RDtBQUNBO0FBQ0E7O0FBRUEsNEJBQTRCOztBQUU1QjtBQUNBO0FBQ0EsT0FBTzs7O0FBR1AsOENBQThDOztBQUU5QztBQUNBLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1o7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsZ0NBQWdDLDhDQUFJLG1DQUFtQyw4Q0FBSTtBQUMzRTs7QUFFQTtBQUNBLFFBQVEsOENBQUk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLDhDQUFJO0FBQ1YsTUFBTSw4Q0FBSTtBQUNWLE1BQU0sOENBQUk7O0FBRVY7QUFDQTtBQUNBOztBQUVBLE1BQU0sOENBQUk7QUFDVixNQUFNLDhDQUFJO0FBQ1YsTUFBTSw4Q0FBSTtBQUNWO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGlCQUFpQiw4Q0FBSSxNQUFNLDhDQUFJO0FBQy9CLE1BQU0sOENBQUk7QUFDVixpQkFBaUIsOENBQUksTUFBTSw4Q0FBSTtBQUMvQixNQUFNLDhDQUFJO0FBQ1YsK0JBQStCOztBQUUvQjtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsOENBQUk7QUFDeEIsb0JBQW9CLDhDQUFJO0FBQ3hCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1o7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9zaGFwZS9SYXkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgeyB2ZWMzIH0gZnJvbSAnZ2wtbWF0cml4JztcbnZhciB0bXBWZWNBID0gdmVjMy5jcmVhdGUoKTtcbnZhciB0bXBWZWNCID0gdmVjMy5jcmVhdGUoKTtcbnZhciB0bXBWZWNDID0gdmVjMy5jcmVhdGUoKTtcbnZhciB0bXBWZWNEID0gdmVjMy5jcmVhdGUoKTtcbnZhciB0bXBWZWNFID0gdmVjMy5jcmVhdGUoKTtcbi8qKlxuICog5YyF5ZCr5rGC5Lqk5pa55rOV77yaXG4gKiAqIGludGVyc2VjdHNTaGFwZShTaGFwZSwgaW50ZXJzZWN0aW9uKSDov5Tlm57kuqTngrnlkozmsYLkuqTnu5PmnpxcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3BsYXljYW52YXMvZW5naW5lL2Jsb2IvbWFzdGVyL3NyYy9zaGFwZS9ib3VuZGluZy1ib3guanMjTDE2MVxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vbXJkb29iL3RocmVlLmpzL2Jsb2IvZGV2L3NyYy9tYXRoL1JheS5qc1xuICovXG5cbmV4cG9ydCB2YXIgUmF5ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gUmF5KG9yaWdpbiwgZGlyZWN0aW9uKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJheSk7XG5cbiAgICB0aGlzLm9yaWdpbiA9IHZvaWQgMDtcbiAgICB0aGlzLmRpcmVjdGlvbiA9IHZvaWQgMDtcbiAgICB0aGlzLm9yaWdpbiA9IG9yaWdpbiB8fCB2ZWMzLmNyZWF0ZSgpO1xuICAgIHRoaXMuZGlyZWN0aW9uID0gZGlyZWN0aW9uIHx8IHZlYzMuZnJvbVZhbHVlcygwLCAwLCAtMSk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUmF5LCBbe1xuICAgIGtleTogXCJpbnRlcnNlY3RzQUFCQlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbnRlcnNlY3RzQUFCQihhYWJiLCBpbnRlcnNlY3Rpb24pIHtcbiAgICAgIHJldHVybiBpbnRlcnNlY3Rpb24gPyB0aGlzLmludGVyc2VjdEFBQkJXaXRoSW50ZXJzZWN0aW9uKGFhYmIsIGludGVyc2VjdGlvbikgOiB0aGlzLmludGVyc2VjdHNBQUJCV2l0aG91dEludGVyc2VjdGlvbihhYWJiKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaW50ZXJzZWN0c1NwaGVyZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbnRlcnNlY3RzU3BoZXJlKHNwaGVyZSwgaW50ZXJzZWN0aW9uKSB7XG4gICAgICB2YXIgbSA9IHZlYzMuc3ViKHRtcFZlY0EsIHRoaXMub3JpZ2luLCBzcGhlcmUuY2VudGVyKTtcbiAgICAgIHZlYzMubm9ybWFsaXplKHRtcFZlY0IsIHZlYzMuY29weSh0bXBWZWNCLCB0aGlzLmRpcmVjdGlvbikpO1xuICAgICAgdmFyIGIgPSB2ZWMzLmRvdChtLCB0bXBWZWNCKTtcbiAgICAgIHZhciBjID0gdmVjMy5kb3QobSwgbSkgLSBzcGhlcmUucmFkaXVzICogc3BoZXJlLnJhZGl1czsgLy8gZXhpdCBpZiByYXkncyBvcmlnaW4gb3V0c2lkZSBvZiBzcGhlcmUgKGMgPiAwKSBhbmQgcmF5IHBvaW50aW5nIGF3YXkgZnJvbSBzIChiID4gMClcblxuICAgICAgaWYgKGMgPiAwICYmIGIgPiAwKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICB2YXIgZGlzY3IgPSBiICogYiAtIGM7IC8vIGEgbmVnYXRpdmUgZGlzY3JpbWluYW50IGNvcnJlc3BvbmRzIHRvIHJheSBtaXNzaW5nIHNwaGVyZVxuXG4gICAgICBpZiAoZGlzY3IgPCAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gLy8gcmF5IGludGVyc2VjdHMgc3BoZXJlLCBjb21wdXRlIHNtYWxsZXN0IHQgdmFsdWUgb2YgaW50ZXJzZWN0aW9uXG5cblxuICAgICAgdmFyIHQgPSBNYXRoLmFicygtYiAtIE1hdGguc3FydChkaXNjcikpOyAvLyBpZiB0IGlzIG5lZ2F0aXZlLCByYXkgc3RhcnRlZCBpbnNpZGUgc3BoZXJlIHNvIGNsYW1wIHQgdG8gemVyb1xuXG4gICAgICBpZiAoaW50ZXJzZWN0aW9uKSB7XG4gICAgICAgIHZlYzMuY29weShpbnRlcnNlY3Rpb24sIHRoaXMuZGlyZWN0aW9uKTtcbiAgICAgICAgdmVjMy5zY2FsZUFuZEFkZChpbnRlcnNlY3Rpb24sIHRoaXMub3JpZ2luLCBpbnRlcnNlY3Rpb24sIHQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaW50ZXJzZWN0c1BsYW5lXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGludGVyc2VjdHNQbGFuZShwbGFuZSwgaW50ZXJzZWN0aW9uKSB7XG4gICAgICB2YXIgdCA9IChwbGFuZS5kaXN0YW5jZSAtIHZlYzMuZG90KHBsYW5lLm5vcm1hbCwgdGhpcy5vcmlnaW4pKSAvIHZlYzMuZG90KHBsYW5lLm5vcm1hbCwgdGhpcy5kaXJlY3Rpb24pO1xuICAgICAgdmFyIGludGVyc2VjdHMgPSB0ID49IDA7XG5cbiAgICAgIGlmIChpbnRlcnNlY3RzICYmIGludGVyc2VjdGlvbikge1xuICAgICAgICB2ZWMzLnNjYWxlQW5kQWRkKGludGVyc2VjdGlvbiwgdGhpcy5vcmlnaW4sIHRoaXMuZGlyZWN0aW9uLCB0KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGludGVyc2VjdHM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIGZhc3RlciB0aGFuIGltcGxlbWVudHMgbGlrZSBUaHJlZS5qc1xuICAgICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3BsYXljYW52YXMvZW5naW5lL2Jsb2IvbWFzdGVyL3NyYy9zaGFwZS9ib3VuZGluZy1ib3guanMjTDE2MVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiaW50ZXJzZWN0c0FBQkJXaXRob3V0SW50ZXJzZWN0aW9uXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGludGVyc2VjdHNBQUJCV2l0aG91dEludGVyc2VjdGlvbihhYWJiKSB7XG4gICAgICB2YXIgZGlmZiA9IHRtcFZlY0E7XG4gICAgICB2YXIgY3Jvc3MgPSB0bXBWZWNCO1xuICAgICAgdmFyIHByb2QgPSB0bXBWZWNDO1xuICAgICAgdmFyIGFic0RpZmYgPSB0bXBWZWNEO1xuICAgICAgdmFyIGFic0RpciA9IHRtcFZlY0U7XG4gICAgICB2YXIgcmF5RGlyID0gdGhpcy5kaXJlY3Rpb247XG4gICAgICB2ZWMzLnN1YihkaWZmLCB0aGlzLm9yaWdpbiwgYWFiYi5jZW50ZXIpO1xuICAgICAgdmVjMy5zZXQoYWJzRGlmZiwgTWF0aC5hYnMoZGlmZlswXSksIE1hdGguYWJzKGRpZmZbMV0pLCBNYXRoLmFicyhkaWZmWzJdKSk7XG4gICAgICB2ZWMzLm11bChwcm9kLCBkaWZmLCByYXlEaXIpO1xuXG4gICAgICBpZiAoYWJzRGlmZlswXSA+IGFhYmIuaGFsZkV4dGVudHNbMF0gJiYgcHJvZFswXSA+PSAwIHx8IGFic0RpZmZbMV0gPiBhYWJiLmhhbGZFeHRlbnRzWzFdICYmIHByb2RbMV0gPj0gMCB8fCBhYnNEaWZmWzJdID4gYWFiYi5oYWxmRXh0ZW50c1syXSAmJiBwcm9kWzJdID49IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICB2ZWMzLnNldChhYnNEaXIsIE1hdGguYWJzKHJheURpclswXSksIE1hdGguYWJzKHJheURpclsxXSksIE1hdGguYWJzKHJheURpclsyXSkpO1xuICAgICAgdmVjMy5jcm9zcyhjcm9zcywgcmF5RGlyLCBkaWZmKTtcbiAgICAgIHZlYzMuc2V0KGNyb3NzLCBNYXRoLmFicyhjcm9zc1swXSksIE1hdGguYWJzKGNyb3NzWzFdKSwgTWF0aC5hYnMoY3Jvc3NbMl0pKTtcbiAgICAgIHJldHVybiAhKGNyb3NzWzBdID4gYWFiYi5oYWxmRXh0ZW50c1sxXSAqIGFic0RpclsyXSArIGFhYmIuaGFsZkV4dGVudHNbMl0gKiBhYnNEaXJbMV0gfHwgY3Jvc3NbMV0gPiBhYWJiLmhhbGZFeHRlbnRzWzBdICogYWJzRGlyWzJdICsgYWFiYi5oYWxmRXh0ZW50c1syXSAqIGFic0RpclswXSB8fCBjcm9zc1syXSA+IGFhYmIuaGFsZkV4dGVudHNbMF0gKiBhYnNEaXJbMV0gKyBhYWJiLmhhbGZFeHRlbnRzWzFdICogYWJzRGlyWzBdKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaW50ZXJzZWN0QUFCQldpdGhJbnRlcnNlY3Rpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW50ZXJzZWN0QUFCQldpdGhJbnRlcnNlY3Rpb24oYWFiYiwgaW50ZXJzZWN0aW9uKSB7XG4gICAgICB2YXIgdE1pbiA9IHZlYzMuY29weSh2ZWMzLmNyZWF0ZSgpLCBhYWJiLmdldE1pbigpKTtcbiAgICAgIHZlYzMuc3ViKHRNaW4sIHRNaW4sIHRoaXMub3JpZ2luKTtcbiAgICAgIHZhciB0TWF4ID0gdmVjMy5jb3B5KHZlYzMuY3JlYXRlKCksIGFhYmIuZ2V0TWF4KCkpO1xuICAgICAgdmVjMy5zdWIodE1heCwgdE1heCwgdGhpcy5vcmlnaW4pO1xuICAgICAgdmFyIGRpciA9IHRoaXMuZGlyZWN0aW9uOyAvLyBFbnN1cmUgdGhhdCB3ZSBhcmUgbm90IGRpdmlkaW5nIGl0IGJ5IHplcm9cblxuICAgICAgaWYgKGRpclswXSA9PT0gMCkge1xuICAgICAgICB0TWluWzBdID0gdE1pblswXSA8IDAgPyAtTnVtYmVyLk1BWF9WQUxVRSA6IE51bWJlci5NQVhfVkFMVUU7XG4gICAgICAgIHRNYXhbMF0gPSB0TWF4WzBdIDwgMCA/IC1OdW1iZXIuTUFYX1ZBTFVFIDogTnVtYmVyLk1BWF9WQUxVRTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRNaW5bMF0gLz0gZGlyWzBdO1xuICAgICAgICB0TWF4WzBdIC89IGRpclswXTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRpclsxXSA9PT0gMCkge1xuICAgICAgICB0TWluWzFdID0gdE1pblsxXSA8IDAgPyAtTnVtYmVyLk1BWF9WQUxVRSA6IE51bWJlci5NQVhfVkFMVUU7XG4gICAgICAgIHRNYXhbMV0gPSB0TWF4WzFdIDwgMCA/IC1OdW1iZXIuTUFYX1ZBTFVFIDogTnVtYmVyLk1BWF9WQUxVRTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRNaW5bMV0gLz0gZGlyWzFdO1xuICAgICAgICB0TWF4WzFdIC89IGRpclsxXTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRpclsyXSA9PT0gMCkge1xuICAgICAgICB0TWluWzJdID0gdE1pblsyXSA8IDAgPyAtTnVtYmVyLk1BWF9WQUxVRSA6IE51bWJlci5NQVhfVkFMVUU7XG4gICAgICAgIHRNYXhbMl0gPSB0TWF4WzJdIDwgMCA/IC1OdW1iZXIuTUFYX1ZBTFVFIDogTnVtYmVyLk1BWF9WQUxVRTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRNaW5bMl0gLz0gZGlyWzJdO1xuICAgICAgICB0TWF4WzJdIC89IGRpclsyXTtcbiAgICAgIH1cblxuICAgICAgdmFyIHJlYWxNaW4gPSB2ZWMzLnNldCh0bXBWZWNDLCBNYXRoLm1pbih0TWluWzBdLCB0TWF4WzBdKSwgTWF0aC5taW4odE1pblsxXSwgdE1heFsxXSksIE1hdGgubWluKHRNaW5bMl0sIHRNYXhbMl0pKTtcbiAgICAgIHZhciByZWFsTWF4ID0gdmVjMy5zZXQodG1wVmVjRCwgTWF0aC5tYXgodE1pblswXSwgdE1heFswXSksIE1hdGgubWF4KHRNaW5bMV0sIHRNYXhbMV0pLCBNYXRoLm1heCh0TWluWzJdLCB0TWF4WzJdKSk7XG4gICAgICB2YXIgbWluTWF4ID0gTWF0aC5taW4oTWF0aC5taW4ocmVhbE1heFswXSwgcmVhbE1heFsxXSksIHJlYWxNYXhbMl0pO1xuICAgICAgdmFyIG1heE1pbiA9IE1hdGgubWF4KE1hdGgubWF4KHJlYWxNaW5bMF0sIHJlYWxNaW5bMV0pLCByZWFsTWluWzJdKTtcbiAgICAgIHZhciBpbnRlcnNlY3RzID0gbWluTWF4ID49IG1heE1pbiAmJiBtYXhNaW4gPj0gMDtcblxuICAgICAgaWYgKGludGVyc2VjdHMpIHtcbiAgICAgICAgdmVjMy5jb3B5KGludGVyc2VjdGlvbiwgdGhpcy5kaXJlY3Rpb24pO1xuICAgICAgICB2ZWMzLnNjYWxlQW5kQWRkKGludGVyc2VjdGlvbiwgdGhpcy5vcmlnaW4sIGludGVyc2VjdGlvbiwgbWF4TWluKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGludGVyc2VjdHM7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFJheTtcbn0oKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJheS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/Ray.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/index.js":
/*!***************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/index.js ***!
\***************************************************************************************/
/*! exports provided: AABB, BoundingSphere, Mask, Frustum, Plane, Ray */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _AABB__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AABB */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/AABB.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AABB\", function() { return _AABB__WEBPACK_IMPORTED_MODULE_0__[\"AABB\"]; });\n\n/* harmony import */ var _BoundingSphere__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./BoundingSphere */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/BoundingSphere.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"BoundingSphere\", function() { return _BoundingSphere__WEBPACK_IMPORTED_MODULE_1__[\"BoundingSphere\"]; });\n\n/* harmony import */ var _Frustum__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Frustum */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/Frustum.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Mask\", function() { return _Frustum__WEBPACK_IMPORTED_MODULE_2__[\"Mask\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Frustum\", function() { return _Frustum__WEBPACK_IMPORTED_MODULE_2__[\"Frustum\"]; });\n\n/* harmony import */ var _Plane__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Plane */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/Plane.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Plane\", function() { return _Plane__WEBPACK_IMPORTED_MODULE_3__[\"Plane\"]; });\n\n/* harmony import */ var _Ray__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Ray */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/Ray.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Ray\", function() { return _Ray__WEBPACK_IMPORTED_MODULE_4__[\"Ray\"]; });\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy9zaGFwZS9pbmRleC5qcz8zZmEzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF1QjtBQUNVO0FBQ1A7QUFDRjtBQUNGO0FBQ3RCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvc2hhcGUvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL0FBQkInO1xuZXhwb3J0ICogZnJvbSAnLi9Cb3VuZGluZ1NwaGVyZSc7XG5leHBvcnQgKiBmcm9tICcuL0ZydXN0dW0nO1xuZXhwb3J0ICogZnJvbSAnLi9QbGFuZSc7XG5leHBvcnQgKiBmcm9tICcuL1JheSc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/aabb.js":
/*!**************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/aabb.js ***!
\**************************************************************************************/
/*! exports provided: generateAABBFromVertices */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"generateAABBFromVertices\", function() { return generateAABBFromVertices; });\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n/* harmony import */ var _shape_AABB__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shape/AABB */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/shape/AABB.js\");\n\n\n/**\n * generate AABB with positions\n * @param positions [x1,y1,z1, x2,y2,z2]\n */\n\nfunction generateAABBFromVertices(positions) {\n var aabb = new _shape_AABB__WEBPACK_IMPORTED_MODULE_1__[\"AABB\"]();\n var min = gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"vec3\"].fromValues(positions[0], positions[1], positions[2]);\n var max = gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"vec3\"].fromValues(positions[0], positions[1], positions[2]);\n\n for (var i = 3; i < positions.length;) {\n var x = positions[i++];\n var y = positions[i++];\n var z = positions[i++];\n\n if (x < min[0]) {\n min[0] = x;\n }\n\n if (y < min[1]) {\n min[1] = y;\n }\n\n if (z < min[2]) {\n min[2] = z;\n }\n\n if (x > max[0]) {\n max[0] = x;\n }\n\n if (y > max[1]) {\n max[1] = y;\n }\n\n if (z > max[2]) {\n max[2] = z;\n }\n }\n\n aabb.setMinMax(min, max);\n return aabb;\n}\n//# sourceMappingURL=aabb.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy9hYWJiLmpzPzMxYzgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUM7QUFDSTtBQUNyQztBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQLGlCQUFpQixnREFBSTtBQUNyQixZQUFZLDhDQUFJO0FBQ2hCLFlBQVksOENBQUk7O0FBRWhCLGlCQUFpQixzQkFBc0I7QUFDdkM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy9hYWJiLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdmVjMyB9IGZyb20gJ2dsLW1hdHJpeCc7XG5pbXBvcnQgeyBBQUJCIH0gZnJvbSAnLi4vc2hhcGUvQUFCQic7XG4vKipcbiAqIGdlbmVyYXRlIEFBQkIgd2l0aCBwb3NpdGlvbnNcbiAqIEBwYXJhbSBwb3NpdGlvbnMgW3gxLHkxLHoxLCB4Mix5Mix6Ml1cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVBQUJCRnJvbVZlcnRpY2VzKHBvc2l0aW9ucykge1xuICB2YXIgYWFiYiA9IG5ldyBBQUJCKCk7XG4gIHZhciBtaW4gPSB2ZWMzLmZyb21WYWx1ZXMocG9zaXRpb25zWzBdLCBwb3NpdGlvbnNbMV0sIHBvc2l0aW9uc1syXSk7XG4gIHZhciBtYXggPSB2ZWMzLmZyb21WYWx1ZXMocG9zaXRpb25zWzBdLCBwb3NpdGlvbnNbMV0sIHBvc2l0aW9uc1syXSk7XG5cbiAgZm9yICh2YXIgaSA9IDM7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOykge1xuICAgIHZhciB4ID0gcG9zaXRpb25zW2krK107XG4gICAgdmFyIHkgPSBwb3NpdGlvbnNbaSsrXTtcbiAgICB2YXIgeiA9IHBvc2l0aW9uc1tpKytdO1xuXG4gICAgaWYgKHggPCBtaW5bMF0pIHtcbiAgICAgIG1pblswXSA9IHg7XG4gICAgfVxuXG4gICAgaWYgKHkgPCBtaW5bMV0pIHtcbiAgICAgIG1pblsxXSA9IHk7XG4gICAgfVxuXG4gICAgaWYgKHogPCBtaW5bMl0pIHtcbiAgICAgIG1pblsyXSA9IHo7XG4gICAgfVxuXG4gICAgaWYgKHggPiBtYXhbMF0pIHtcbiAgICAgIG1heFswXSA9IHg7XG4gICAgfVxuXG4gICAgaWYgKHkgPiBtYXhbMV0pIHtcbiAgICAgIG1heFsxXSA9IHk7XG4gICAgfVxuXG4gICAgaWYgKHogPiBtYXhbMl0pIHtcbiAgICAgIG1heFsyXSA9IHo7XG4gICAgfVxuICB9XG5cbiAgYWFiYi5zZXRNaW5NYXgobWluLCBtYXgpO1xuICByZXR1cm4gYWFiYjtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFhYmIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/aabb.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/is-number.js":
/*!*******************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/is-number.js ***!
\*******************************************************************************************/
/*! exports provided: isNumber */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumber\", function() { return isNumber; });\nfunction isNumber(value) {\n return typeof value === 'number';\n}\n//# sourceMappingURL=is-number.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy9pcy1udW1iZXIuanM/ZTViNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQU87QUFDUDtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy9pcy1udW1iZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gaXNOdW1iZXIodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcic7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy1udW1iZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/is-number.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/is-typedarray.js":
/*!***********************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/is-typedarray.js ***!
\***********************************************************************************************/
/*! exports provided: isTypedArray */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTypedArray\", function() { return isTypedArray; });\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/_@babel_runtime@7.16.3@@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\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/** `Object#toString` result references. */\n\nvar argsTag = '[object Arguments]';\nvar arrayTag = '[object Array]';\nvar boolTag = '[object Boolean]';\nvar dateTag = '[object Date]';\nvar errorTag = '[object Error]';\nvar funcTag = '[object Function]';\nvar mapTag = '[object Map]';\nvar numberTag = '[object Number]';\nvar objectTag = '[object Object]';\nvar regexpTag = '[object RegExp]';\nvar setTag = '[object Set]';\nvar stringTag = '[object String]';\nvar weakMapTag = '[object WeakMap]';\nvar arrayBufferTag = '[object ArrayBuffer]';\nvar dataViewTag = '[object DataView]';\nvar float32Tag = '[object Float32Array]';\nvar float64Tag = '[object Float64Array]';\nvar int8Tag = '[object Int8Array]';\nvar int16Tag = '[object Int16Array]';\nvar int32Tag = '[object Int32Array]';\nvar uint8Tag = '[object Uint8Array]';\nvar uint8ClampedTag = '[object Uint8ClampedArray]';\nvar uint16Tag = '[object Uint16Array]';\nvar uint32Tag = '[object Uint32Array]';\n/** Used to identify `toStringTag` values of typed arrays. */\n\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n\nfunction baseUnary(func) {\n return function (value) {\n return func(value);\n };\n}\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar objectToString = objectProto.toString;\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\nfunction isLength(value) {\n return typeof value === 'number' && value > -1 && value % 1 === 0 && value <= MAX_SAFE_INTEGER;\n}\n\nfunction isObjectLike(value) {\n return !!value && _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default()(value) === 'object';\n}\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n\n\nvar isTypedArray = baseIsTypedArray;\n//# sourceMappingURL=is-typedarray.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy9pcy10eXBlZGFycmF5LmpzP2YzYzIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0Q7O0FBRXBEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixhQUFhLFNBQVM7QUFDdEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0JBQW9CLG9FQUFPO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR087QUFDUCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL3V0aWxzL2lzLXR5cGVkYXJyYXkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2ZcIjtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG5cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXSc7XG52YXIgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nO1xudmFyIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXSc7XG52YXIgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJztcbnZhciBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXSc7XG52YXIgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXSc7XG52YXIgbWFwVGFnID0gJ1tvYmplY3QgTWFwXSc7XG52YXIgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXSc7XG52YXIgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XSc7XG52YXIgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXSc7XG52YXIgc2V0VGFnID0gJ1tvYmplY3QgU2V0XSc7XG52YXIgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXSc7XG52YXIgd2Vha01hcFRhZyA9ICdbb2JqZWN0IFdlYWtNYXBdJztcbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXSc7XG52YXIgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nO1xudmFyIGZsb2F0MzJUYWcgPSAnW29iamVjdCBGbG9hdDMyQXJyYXldJztcbnZhciBmbG9hdDY0VGFnID0gJ1tvYmplY3QgRmxvYXQ2NEFycmF5XSc7XG52YXIgaW50OFRhZyA9ICdbb2JqZWN0IEludDhBcnJheV0nO1xudmFyIGludDE2VGFnID0gJ1tvYmplY3QgSW50MTZBcnJheV0nO1xudmFyIGludDMyVGFnID0gJ1tvYmplY3QgSW50MzJBcnJheV0nO1xudmFyIHVpbnQ4VGFnID0gJ1tvYmplY3QgVWludDhBcnJheV0nO1xudmFyIHVpbnQ4Q2xhbXBlZFRhZyA9ICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSc7XG52YXIgdWludDE2VGFnID0gJ1tvYmplY3QgVWludDE2QXJyYXldJztcbnZhciB1aW50MzJUYWcgPSAnW29iamVjdCBVaW50MzJBcnJheV0nO1xuLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgb2YgdHlwZWQgYXJyYXlzLiAqL1xuXG52YXIgdHlwZWRBcnJheVRhZ3MgPSB7fTtcbnR5cGVkQXJyYXlUYWdzW2Zsb2F0MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbZmxvYXQ2NFRhZ10gPSB0eXBlZEFycmF5VGFnc1tpbnQ4VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2ludDE2VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2ludDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQ4VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQ4Q2xhbXBlZFRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50MTZUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDMyVGFnXSA9IHRydWU7XG50eXBlZEFycmF5VGFnc1thcmdzVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2FycmF5VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2FycmF5QnVmZmVyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Jvb2xUYWddID0gdHlwZWRBcnJheVRhZ3NbZGF0YVZpZXdUYWddID0gdHlwZWRBcnJheVRhZ3NbZGF0ZVRhZ10gPSB0eXBlZEFycmF5VGFnc1tlcnJvclRhZ10gPSB0eXBlZEFycmF5VGFnc1tmdW5jVGFnXSA9IHR5cGVkQXJyYXlUYWdzW21hcFRhZ10gPSB0eXBlZEFycmF5VGFnc1tudW1iZXJUYWddID0gdHlwZWRBcnJheVRhZ3Nbb2JqZWN0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3JlZ2V4cFRhZ10gPSB0eXBlZEFycmF5VGFnc1tzZXRUYWddID0gdHlwZWRBcnJheVRhZ3Nbc3RyaW5nVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3dlYWtNYXBUYWddID0gZmFsc2U7XG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuYXJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIHN0b3JpbmcgbWV0YWRhdGEuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FwcGVkIGZ1bmN0aW9uLlxuICovXG5cbmZ1bmN0aW9uIGJhc2VVbmFyeShmdW5jKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICByZXR1cm4gZnVuYyh2YWx1ZSk7XG4gIH07XG59XG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG5cblxudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZVxuICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cblxudmFyIG9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzVHlwZWRBcnJheWAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB0eXBlZCBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICovXG5cbmZ1bmN0aW9uIGJhc2VJc1R5cGVkQXJyYXkodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhIXR5cGVkQXJyYXlUYWdzW29iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpXTtcbn1cblxuZnVuY3Rpb24gaXNMZW5ndGgodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgdmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT09IDAgJiYgdmFsdWUgPD0gTUFYX1NBRkVfSU5URUdFUjtcbn1cblxuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gIHJldHVybiAhIXZhbHVlICYmIF90eXBlb2YodmFsdWUpID09PSAnb2JqZWN0Jztcbn1cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIHR5cGVkIGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1R5cGVkQXJyYXkobmV3IFVpbnQ4QXJyYXkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KFtdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cblxuXG5leHBvcnQgdmFyIGlzVHlwZWRBcnJheSA9IGJhc2VJc1R5cGVkQXJyYXk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy10eXBlZGFycmF5LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/is-typedarray.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/isSafari.js":
/*!******************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/isSafari.js ***!
\******************************************************************************************/
/*! exports provided: isSafari */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSafari\", function() { return isSafari; });\nvar isSafari = typeof navigator !== 'undefined' && /Version\\/[\\d\\.]+.*Safari/.test(navigator.userAgent);\n//# sourceMappingURL=isSafari.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy9pc1NhZmFyaS5qcz9jMTQyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBTztBQUNQIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvdXRpbHMvaXNTYWZhcmkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIGlzU2FmYXJpID0gdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgL1ZlcnNpb25cXC9bXFxkXFwuXSsuKlNhZmFyaS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzU2FmYXJpLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/isSafari.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/math.js":
/*!**************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/math.js ***!
\**************************************************************************************/
/*! exports provided: getAngle, createVec3, getRotationScale, decodePickingColor, encodePickingColor */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAngle\", function() { return getAngle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createVec3\", function() { return createVec3; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRotationScale\", function() { return getRotationScale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"decodePickingColor\", function() { return decodePickingColor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"encodePickingColor\", function() { return encodePickingColor; });\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"./node_modules/_@babel_runtime@7.16.3@@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 gl_matrix__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n/* harmony import */ var _is_number__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./is-number */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/is-number.js\");\n\n\n\nfunction getAngle(angle) {\n if (angle === undefined) {\n return 0;\n } else if (angle > 360 || angle < -360) {\n return angle % 360;\n }\n\n return angle;\n}\nfunction createVec3(x, y, z) {\n if (Object(_is_number__WEBPACK_IMPORTED_MODULE_2__[\"isNumber\"])(x)) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_1__[\"vec3\"].fromValues(x, y, z);\n }\n\n if (x.length === 3) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_1__[\"vec3\"].clone(x);\n } // @ts-ignore\n\n\n return gl_matrix__WEBPACK_IMPORTED_MODULE_1__[\"vec3\"].fromValues(x[0], x[1], x[2]);\n}\nfunction getRotationScale(matrix, result) {\n result[0] = matrix[0];\n result[1] = matrix[1];\n result[2] = matrix[2];\n result[3] = matrix[4];\n result[4] = matrix[5];\n result[5] = matrix[6];\n result[6] = matrix[8];\n result[7] = matrix[9];\n result[8] = matrix[10];\n return result;\n}\nfunction decodePickingColor(color) {\n var _color = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(color, 3),\n i1 = _color[0],\n i2 = _color[1],\n i3 = _color[2]; // 1 was added to seperate from no selection\n\n\n var index = i1 + i2 * 256 + i3 * 65536 - 1;\n return index;\n}\nfunction encodePickingColor(featureIdx) {\n return [featureIdx + 1 & 255, featureIdx + 1 >> 8 & 255, featureIdx + 1 >> 8 >> 8 & 255];\n}\n//# sourceMappingURL=math.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy9tYXRoLmpzP2ViNGMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0U7QUFDakM7QUFDTTtBQUNoQztBQUNQO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ087QUFDUCxNQUFNLDJEQUFRO0FBQ2QsV0FBVyw4Q0FBSTtBQUNmOztBQUVBO0FBQ0EsV0FBVyw4Q0FBSTtBQUNmLEdBQUc7OztBQUdILFNBQVMsOENBQUk7QUFDYjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1AsZUFBZSwyRUFBYztBQUM3QjtBQUNBO0FBQ0EscUJBQXFCOzs7QUFHckI7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy9tYXRoLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9zbGljZWRUb0FycmF5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXlcIjtcbmltcG9ydCB7IHZlYzMgfSBmcm9tICdnbC1tYXRyaXgnO1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICcuL2lzLW51bWJlcic7XG5leHBvcnQgZnVuY3Rpb24gZ2V0QW5nbGUoYW5nbGUpIHtcbiAgaWYgKGFuZ2xlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gMDtcbiAgfSBlbHNlIGlmIChhbmdsZSA+IDM2MCB8fCBhbmdsZSA8IC0zNjApIHtcbiAgICByZXR1cm4gYW5nbGUgJSAzNjA7XG4gIH1cblxuICByZXR1cm4gYW5nbGU7XG59XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVmVjMyh4LCB5LCB6KSB7XG4gIGlmIChpc051bWJlcih4KSkge1xuICAgIHJldHVybiB2ZWMzLmZyb21WYWx1ZXMoeCwgeSwgeik7XG4gIH1cblxuICBpZiAoeC5sZW5ndGggPT09IDMpIHtcbiAgICByZXR1cm4gdmVjMy5jbG9uZSh4KTtcbiAgfSAvLyBAdHMtaWdub3JlXG5cblxuICByZXR1cm4gdmVjMy5mcm9tVmFsdWVzKHhbMF0sIHhbMV0sIHhbMl0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFJvdGF0aW9uU2NhbGUobWF0cml4LCByZXN1bHQpIHtcbiAgcmVzdWx0WzBdID0gbWF0cml4WzBdO1xuICByZXN1bHRbMV0gPSBtYXRyaXhbMV07XG4gIHJlc3VsdFsyXSA9IG1hdHJpeFsyXTtcbiAgcmVzdWx0WzNdID0gbWF0cml4WzRdO1xuICByZXN1bHRbNF0gPSBtYXRyaXhbNV07XG4gIHJlc3VsdFs1XSA9IG1hdHJpeFs2XTtcbiAgcmVzdWx0WzZdID0gbWF0cml4WzhdO1xuICByZXN1bHRbN10gPSBtYXRyaXhbOV07XG4gIHJlc3VsdFs4XSA9IG1hdHJpeFsxMF07XG4gIHJldHVybiByZXN1bHQ7XG59XG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlUGlja2luZ0NvbG9yKGNvbG9yKSB7XG4gIHZhciBfY29sb3IgPSBfc2xpY2VkVG9BcnJheShjb2xvciwgMyksXG4gICAgICBpMSA9IF9jb2xvclswXSxcbiAgICAgIGkyID0gX2NvbG9yWzFdLFxuICAgICAgaTMgPSBfY29sb3JbMl07IC8vIDEgd2FzIGFkZGVkIHRvIHNlcGVyYXRlIGZyb20gbm8gc2VsZWN0aW9uXG5cblxuICB2YXIgaW5kZXggPSBpMSArIGkyICogMjU2ICsgaTMgKiA2NTUzNiAtIDE7XG4gIHJldHVybiBpbmRleDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVQaWNraW5nQ29sb3IoZmVhdHVyZUlkeCkge1xuICByZXR1cm4gW2ZlYXR1cmVJZHggKyAxICYgMjU1LCBmZWF0dXJlSWR4ICsgMSA+PiA4ICYgMjU1LCBmZWF0dXJlSWR4ICsgMSA+PiA4ID4+IDggJiAyNTVdO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWF0aC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/math.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/shader-module.js":
/*!***********************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/shader-module.js ***!
\***********************************************************************************************/
/*! exports provided: getUniformLengthByType, extractUniforms */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getUniformLengthByType\", function() { return getUniformLengthByType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extractUniforms\", function() { return extractUniforms; });\nfunction getUniformLengthByType(type) {\n var arrayLength = 0;\n\n switch (type) {\n case 'vec2':\n case 'ivec2':\n arrayLength = 2;\n break;\n\n case 'vec3':\n case 'ivec3':\n arrayLength = 3;\n break;\n\n case 'vec4':\n case 'ivec4':\n case 'mat2':\n arrayLength = 4;\n break;\n\n case 'mat3':\n arrayLength = 9;\n break;\n\n case 'mat4':\n arrayLength = 16;\n break;\n\n default:\n }\n\n return arrayLength;\n}\nvar uniformRegExp = /uniform\\s+(bool|float|int|vec2|vec3|vec4|ivec2|ivec3|ivec4|mat2|mat3|mat4|sampler2D|samplerCube)\\s+([\\s\\S]*?);/g;\nfunction extractUniforms(content) {\n var uniforms = {};\n content = content.replace(uniformRegExp, function (_, type, c) {\n var defaultValues = c.split(':');\n var uniformName = defaultValues[0].trim();\n var defaultValue = '';\n\n if (defaultValues.length > 1) {\n defaultValue = defaultValues[1].trim();\n } // set default value for uniform according to its type\n // eg. vec2 u -> [0.0, 0.0]\n\n\n switch (type) {\n case 'bool':\n defaultValue = defaultValue === 'true';\n break;\n\n case 'float':\n case 'int':\n defaultValue = Number(defaultValue);\n break;\n\n case 'vec2':\n case 'vec3':\n case 'vec4':\n case 'ivec2':\n case 'ivec3':\n case 'ivec4':\n case 'mat2':\n case 'mat3':\n case 'mat4':\n if (defaultValue) {\n defaultValue = defaultValue.replace('[', '').replace(']', '').split(',').reduce(function (prev, cur) {\n prev.push(Number(cur.trim()));\n return prev;\n }, []);\n } else {\n defaultValue = new Array(getUniformLengthByType(type)).fill(0);\n }\n\n break;\n\n default:\n } // @ts-ignore\n\n\n uniforms[uniformName] = defaultValue;\n return \"uniform \".concat(type, \" \").concat(uniformName, \";\\n\");\n });\n return {\n content: content,\n uniforms: uniforms\n };\n}\n//# sourceMappingURL=shader-module.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy9zaGFkZXItbW9kdWxlLmpzPzE4MDMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxtSUFBbUk7QUFDNUg7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYLFNBQVM7QUFDVDtBQUNBOztBQUVBOztBQUVBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQSw4REFBOEQ7QUFDOUQsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtY29yZUAwLjUuNkBAYW50di9nLXdlYmdwdS1jb3JlL2VzL3V0aWxzL3NoYWRlci1tb2R1bGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZ2V0VW5pZm9ybUxlbmd0aEJ5VHlwZSh0eXBlKSB7XG4gIHZhciBhcnJheUxlbmd0aCA9IDA7XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSAndmVjMic6XG4gICAgY2FzZSAnaXZlYzInOlxuICAgICAgYXJyYXlMZW5ndGggPSAyO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICd2ZWMzJzpcbiAgICBjYXNlICdpdmVjMyc6XG4gICAgICBhcnJheUxlbmd0aCA9IDM7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ3ZlYzQnOlxuICAgIGNhc2UgJ2l2ZWM0JzpcbiAgICBjYXNlICdtYXQyJzpcbiAgICAgIGFycmF5TGVuZ3RoID0gNDtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnbWF0Myc6XG4gICAgICBhcnJheUxlbmd0aCA9IDk7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ21hdDQnOlxuICAgICAgYXJyYXlMZW5ndGggPSAxNjtcbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgfVxuXG4gIHJldHVybiBhcnJheUxlbmd0aDtcbn1cbnZhciB1bmlmb3JtUmVnRXhwID0gL3VuaWZvcm1cXHMrKGJvb2x8ZmxvYXR8aW50fHZlYzJ8dmVjM3x2ZWM0fGl2ZWMyfGl2ZWMzfGl2ZWM0fG1hdDJ8bWF0M3xtYXQ0fHNhbXBsZXIyRHxzYW1wbGVyQ3ViZSlcXHMrKFtcXHNcXFNdKj8pOy9nO1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RVbmlmb3Jtcyhjb250ZW50KSB7XG4gIHZhciB1bmlmb3JtcyA9IHt9O1xuICBjb250ZW50ID0gY29udGVudC5yZXBsYWNlKHVuaWZvcm1SZWdFeHAsIGZ1bmN0aW9uIChfLCB0eXBlLCBjKSB7XG4gICAgdmFyIGRlZmF1bHRWYWx1ZXMgPSBjLnNwbGl0KCc6Jyk7XG4gICAgdmFyIHVuaWZvcm1OYW1lID0gZGVmYXVsdFZhbHVlc1swXS50cmltKCk7XG4gICAgdmFyIGRlZmF1bHRWYWx1ZSA9ICcnO1xuXG4gICAgaWYgKGRlZmF1bHRWYWx1ZXMubGVuZ3RoID4gMSkge1xuICAgICAgZGVmYXVsdFZhbHVlID0gZGVmYXVsdFZhbHVlc1sxXS50cmltKCk7XG4gICAgfSAvLyBzZXQgZGVmYXVsdCB2YWx1ZSBmb3IgdW5pZm9ybSBhY2NvcmRpbmcgdG8gaXRzIHR5cGVcbiAgICAvLyBlZy4gdmVjMiB1IC0+IFswLjAsIDAuMF1cblxuXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdib29sJzpcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gZGVmYXVsdFZhbHVlID09PSAndHJ1ZSc7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdmbG9hdCc6XG4gICAgICBjYXNlICdpbnQnOlxuICAgICAgICBkZWZhdWx0VmFsdWUgPSBOdW1iZXIoZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3ZlYzInOlxuICAgICAgY2FzZSAndmVjMyc6XG4gICAgICBjYXNlICd2ZWM0JzpcbiAgICAgIGNhc2UgJ2l2ZWMyJzpcbiAgICAgIGNhc2UgJ2l2ZWMzJzpcbiAgICAgIGNhc2UgJ2l2ZWM0JzpcbiAgICAgIGNhc2UgJ21hdDInOlxuICAgICAgY2FzZSAnbWF0Myc6XG4gICAgICBjYXNlICdtYXQ0JzpcbiAgICAgICAgaWYgKGRlZmF1bHRWYWx1ZSkge1xuICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IGRlZmF1bHRWYWx1ZS5yZXBsYWNlKCdbJywgJycpLnJlcGxhY2UoJ10nLCAnJykuc3BsaXQoJywnKS5yZWR1Y2UoZnVuY3Rpb24gKHByZXYsIGN1cikge1xuICAgICAgICAgICAgcHJldi5wdXNoKE51bWJlcihjdXIudHJpbSgpKSk7XG4gICAgICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVmYXVsdFZhbHVlID0gbmV3IEFycmF5KGdldFVuaWZvcm1MZW5ndGhCeVR5cGUodHlwZSkpLmZpbGwoMCk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICB9IC8vIEB0cy1pZ25vcmVcblxuXG4gICAgdW5pZm9ybXNbdW5pZm9ybU5hbWVdID0gZGVmYXVsdFZhbHVlO1xuICAgIHJldHVybiBcInVuaWZvcm0gXCIuY29uY2F0KHR5cGUsIFwiIFwiKS5jb25jYXQodW5pZm9ybU5hbWUsIFwiO1xcblwiKTtcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgY29udGVudDogY29udGVudCxcbiAgICB1bmlmb3JtczogdW5pZm9ybXNcbiAgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNoYWRlci1tb2R1bGUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/shader-module.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/uniq.js":
/*!**************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/uniq.js ***!
\**************************************************************************************/
/*! exports provided: uniq */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uniq\", function() { return uniq; });\nfunction uniq(array) {\n return array.filter(function (v, i, a) {\n return a.indexOf(v) === i;\n });\n}\n//# sourceMappingURL=uniq.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWNvcmVAMC41LjZAQGFudHYvZy13ZWJncHUtY29yZS9lcy91dGlscy91bmlxLmpzPzIxMDAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFPO0FBQ1A7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1jb3JlQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWNvcmUvZXMvdXRpbHMvdW5pcS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiB1bmlxKGFycmF5KSB7XG4gIHJldHVybiBhcnJheS5maWx0ZXIoZnVuY3Rpb24gKHYsIGksIGEpIHtcbiAgICByZXR1cm4gYS5pbmRleE9mKHYpID09PSBpO1xuICB9KTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXVuaXEuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/utils/uniq.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/index.js":
/*!*************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/index.js ***!
\*************************************************************************************/
/*! exports provided: WebGLEngine, WebGPUEngine */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _webgl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./webgl */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"WebGLEngine\", function() { return _webgl__WEBPACK_IMPORTED_MODULE_0__[\"WebGLEngine\"]; });\n\n/* harmony import */ var _webgpu__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./webgpu */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"WebGPUEngine\", function() { return _webgpu__WEBPACK_IMPORTED_MODULE_1__[\"WebGPUEngine\"]; });\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvaW5kZXguanM/YmE3YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFzQztBQUNFO0FBQ0g7QUFDckMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXZWJHTEVuZ2luZSB9IGZyb20gJy4vd2ViZ2wnO1xuaW1wb3J0IHsgV2ViR1BVRW5naW5lIH0gZnJvbSAnLi93ZWJncHUnO1xuZXhwb3J0IHsgV2ViR0xFbmdpbmUsIFdlYkdQVUVuZ2luZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/dom.js":
/*!*****************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/dom.js ***!
\*****************************************************************************************/
/*! exports provided: isWindowObjectExist, loadScript, loadScriptAsync */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isWindowObjectExist\", function() { return isWindowObjectExist; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loadScript\", function() { return loadScript; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loadScriptAsync\", function() { return loadScriptAsync; });\nfunction isWindowObjectExist() {\n return typeof window !== 'undefined';\n}\nfunction loadScript(scriptUrl, onSuccess, onError, scriptId) {\n if (!isWindowObjectExist()) {\n return;\n }\n\n var head = document.getElementsByTagName('head')[0];\n var script = document.createElement('script');\n script.setAttribute('type', 'text/javascript');\n script.setAttribute('src', scriptUrl);\n\n if (scriptId) {\n script.id = scriptId;\n }\n\n script.onload = function () {\n if (onSuccess) {\n onSuccess();\n }\n };\n\n script.onerror = function (e) {\n if (onError) {\n onError(\"Unable to load script '\".concat(scriptUrl, \"'\"), e);\n }\n };\n\n head.appendChild(script);\n}\nfunction loadScriptAsync(scriptUrl, scriptId) {\n return new Promise(function (resolve, reject) {\n loadScript(scriptUrl, function () {\n resolve();\n }, function (message, exception) {\n reject(exception);\n });\n });\n}\n//# sourceMappingURL=dom.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvdXRpbHMvZG9tLmpzPzhiZTEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBTztBQUNQO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtZW5naW5lQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWVuZ2luZS9lcy91dGlscy9kb20uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gaXNXaW5kb3dPYmplY3RFeGlzdCgpIHtcbiAgcmV0dXJuIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRTY3JpcHQoc2NyaXB0VXJsLCBvblN1Y2Nlc3MsIG9uRXJyb3IsIHNjcmlwdElkKSB7XG4gIGlmICghaXNXaW5kb3dPYmplY3RFeGlzdCgpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIGhlYWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdO1xuICB2YXIgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gIHNjcmlwdC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAndGV4dC9qYXZhc2NyaXB0Jyk7XG4gIHNjcmlwdC5zZXRBdHRyaWJ1dGUoJ3NyYycsIHNjcmlwdFVybCk7XG5cbiAgaWYgKHNjcmlwdElkKSB7XG4gICAgc2NyaXB0LmlkID0gc2NyaXB0SWQ7XG4gIH1cblxuICBzY3JpcHQub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgIGlmIChvblN1Y2Nlc3MpIHtcbiAgICAgIG9uU3VjY2VzcygpO1xuICAgIH1cbiAgfTtcblxuICBzY3JpcHQub25lcnJvciA9IGZ1bmN0aW9uIChlKSB7XG4gICAgaWYgKG9uRXJyb3IpIHtcbiAgICAgIG9uRXJyb3IoXCJVbmFibGUgdG8gbG9hZCBzY3JpcHQgJ1wiLmNvbmNhdChzY3JpcHRVcmwsIFwiJ1wiKSwgZSk7XG4gICAgfVxuICB9O1xuXG4gIGhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBsb2FkU2NyaXB0QXN5bmMoc2NyaXB0VXJsLCBzY3JpcHRJZCkge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIGxvYWRTY3JpcHQoc2NyaXB0VXJsLCBmdW5jdGlvbiAoKSB7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfSwgZnVuY3Rpb24gKG1lc3NhZ2UsIGV4Y2VwdGlvbikge1xuICAgICAgcmVqZWN0KGV4Y2VwdGlvbik7XG4gICAgfSk7XG4gIH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZG9tLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/dom.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/is-number.js":
/*!***********************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/is-number.js ***!
\***********************************************************************************************/
/*! exports provided: isNumber */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumber\", function() { return isNumber; });\nfunction isNumber(value) {\n return typeof value === 'number';\n}\n//# sourceMappingURL=is-number.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvdXRpbHMvaXMtbnVtYmVyLmpzPzhhMzEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFPO0FBQ1A7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1lbmdpbmVAMC41LjZAQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3V0aWxzL2lzLW51bWJlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBpc051bWJlcih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzLW51bWJlci5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/is-number.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/is-object.js":
/*!***********************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/is-object.js ***!
\***********************************************************************************************/
/*! exports provided: isObject */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return isObject; });\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/_@babel_runtime@7.16.3@@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\nfunction isObject(value) {\n var type = _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default()(value);\n\n return value != null && (type === 'object' || type === 'function');\n}\n//# sourceMappingURL=is-object.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvdXRpbHMvaXMtb2JqZWN0LmpzPzlmNDMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0Q7QUFDN0M7QUFDUCxhQUFhLG9FQUFPOztBQUVwQjtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvdXRpbHMvaXMtb2JqZWN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF90eXBlb2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCI7XG5leHBvcnQgZnVuY3Rpb24gaXNPYmplY3QodmFsdWUpIHtcbiAgdmFyIHR5cGUgPSBfdHlwZW9mKHZhbHVlKTtcblxuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiAodHlwZSA9PT0gJ29iamVjdCcgfHwgdHlwZSA9PT0gJ2Z1bmN0aW9uJyk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy1vYmplY3QuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/is-object.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/is-typedarray.js":
/*!***************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/is-typedarray.js ***!
\***************************************************************************************************/
/*! exports provided: isTypedArray */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTypedArray\", function() { return isTypedArray; });\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/_@babel_runtime@7.16.3@@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\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/** `Object#toString` result references. */\n\nvar argsTag = '[object Arguments]';\nvar arrayTag = '[object Array]';\nvar boolTag = '[object Boolean]';\nvar dateTag = '[object Date]';\nvar errorTag = '[object Error]';\nvar funcTag = '[object Function]';\nvar mapTag = '[object Map]';\nvar numberTag = '[object Number]';\nvar objectTag = '[object Object]';\nvar regexpTag = '[object RegExp]';\nvar setTag = '[object Set]';\nvar stringTag = '[object String]';\nvar weakMapTag = '[object WeakMap]';\nvar arrayBufferTag = '[object ArrayBuffer]';\nvar dataViewTag = '[object DataView]';\nvar float32Tag = '[object Float32Array]';\nvar float64Tag = '[object Float64Array]';\nvar int8Tag = '[object Int8Array]';\nvar int16Tag = '[object Int16Array]';\nvar int32Tag = '[object Int32Array]';\nvar uint8Tag = '[object Uint8Array]';\nvar uint8ClampedTag = '[object Uint8ClampedArray]';\nvar uint16Tag = '[object Uint16Array]';\nvar uint32Tag = '[object Uint32Array]';\n/** Used to identify `toStringTag` values of typed arrays. */\n\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n\nfunction baseUnary(func) {\n return function (value) {\n return func(value);\n };\n}\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar objectToString = objectProto.toString;\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\nfunction isLength(value) {\n return typeof value === 'number' && value > -1 && value % 1 === 0 && value <= MAX_SAFE_INTEGER;\n}\n\nfunction isObjectLike(value) {\n return !!value && _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default()(value) === 'object';\n}\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n\n\nvar isTypedArray = baseIsTypedArray;\n//# sourceMappingURL=is-typedarray.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvdXRpbHMvaXMtdHlwZWRhcnJheS5qcz9lNmI0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9EOztBQUVwRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsYUFBYSxTQUFTO0FBQ3RCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9CQUFvQixvRUFBTztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdPO0FBQ1AiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvdXRpbHMvaXMtdHlwZWRhcnJheS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfdHlwZW9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MTtcbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cblxudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJztcbnZhciBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XSc7XG52YXIgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJztcbnZhciBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nO1xudmFyIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJztcbnZhciBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJztcbnZhciBtYXBUYWcgPSAnW29iamVjdCBNYXBdJztcbnZhciBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJztcbnZhciBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJztcbnZhciByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJztcbnZhciBzZXRUYWcgPSAnW29iamVjdCBTZXRdJztcbnZhciBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJztcbnZhciB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJztcbnZhciBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XSc7XG52YXIgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nO1xudmFyIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJztcbnZhciBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XSc7XG52YXIgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XSc7XG52YXIgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XSc7XG52YXIgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XSc7XG52YXIgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJztcbnZhciB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nO1xudmFyIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7XG4vKiogVXNlZCB0byBpZGVudGlmeSBgdG9TdHJpbmdUYWdgIHZhbHVlcyBvZiB0eXBlZCBhcnJheXMuICovXG5cbnZhciB0eXBlZEFycmF5VGFncyA9IHt9O1xudHlwZWRBcnJheVRhZ3NbZmxvYXQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1tmbG9hdDY0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2ludDhUYWddID0gdHlwZWRBcnJheVRhZ3NbaW50MTZUYWddID0gdHlwZWRBcnJheVRhZ3NbaW50MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDhUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDhDbGFtcGVkVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQxNlRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbnR5cGVkQXJyYXlUYWdzW2FyZ3NUYWddID0gdHlwZWRBcnJheVRhZ3NbYXJyYXlUYWddID0gdHlwZWRBcnJheVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gdHlwZWRBcnJheVRhZ3NbYm9vbFRhZ10gPSB0eXBlZEFycmF5VGFnc1tkYXRhVmlld1RhZ10gPSB0eXBlZEFycmF5VGFnc1tkYXRlVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Vycm9yVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Z1bmNUYWddID0gdHlwZWRBcnJheVRhZ3NbbWFwVGFnXSA9IHR5cGVkQXJyYXlUYWdzW251bWJlclRhZ10gPSB0eXBlZEFycmF5VGFnc1tvYmplY3RUYWddID0gdHlwZWRBcnJheVRhZ3NbcmVnZXhwVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3NldFRhZ10gPSB0eXBlZEFycmF5VGFnc1tzdHJpbmdUYWddID0gdHlwZWRBcnJheVRhZ3Nbd2Vha01hcFRhZ10gPSBmYWxzZTtcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5hcnlgIHdpdGhvdXQgc3VwcG9ydCBmb3Igc3RvcmluZyBtZXRhZGF0YS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2FwIGFyZ3VtZW50cyBmb3IuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjYXBwZWQgZnVuY3Rpb24uXG4gKi9cblxuZnVuY3Rpb24gYmFzZVVuYXJ5KGZ1bmMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHJldHVybiBmdW5jKHZhbHVlKTtcbiAgfTtcbn1cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cblxuXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xuXG52YXIgb2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNUeXBlZEFycmF5YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKi9cblxuZnVuY3Rpb24gYmFzZUlzVHlwZWRBcnJheSh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICEhdHlwZWRBcnJheVRhZ3Nbb2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSldO1xufVxuXG5mdW5jdGlvbiBpc0xlbmd0aCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiB2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PT0gMCAmJiB2YWx1ZSA8PSBNQVhfU0FGRV9JTlRFR0VSO1xufVxuXG5mdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJuICEhdmFsdWUgJiYgX3R5cGVvZih2YWx1ZSkgPT09ICdvYmplY3QnO1xufVxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgdHlwZWQgYXJyYXkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB0eXBlZCBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzVHlwZWRBcnJheShuZXcgVWludDhBcnJheSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1R5cGVkQXJyYXkoW10pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuXG5cbmV4cG9ydCB2YXIgaXNUeXBlZEFycmF5ID0gYmFzZUlzVHlwZWRBcnJheTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWlzLXR5cGVkYXJyYXkuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/is-typedarray.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/uniform.js":
/*!*********************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/uniform.js ***!
\*********************************************************************************************/
/*! exports provided: extractUniforms */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extractUniforms\", function() { return extractUniforms; });\n/* harmony import */ var _is_object__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-object */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/is-object.js\");\n/* harmony import */ var _is_typedarray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-typedarray */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/is-typedarray.js\");\n\n\n/**\n * 考虑结构体命名, eg:\n * a: { b: 1 } -> 'a.b'\n * a: [ { b: 1 } ] -> 'a[0].b'\n */\n\nfunction extractUniforms(uniforms) {\n var extractedUniforms = {};\n Object.keys(uniforms).forEach(function (uniformName) {\n extractUniformsRecursively(uniformName, uniforms[uniformName], extractedUniforms, '');\n });\n return extractedUniforms;\n}\n\nfunction extractUniformsRecursively(uniformName, uniformValue, uniforms, prefix) {\n if (uniformValue === null || typeof uniformValue === 'number' || // u_A: 1\n typeof uniformValue === 'boolean' || // u_A: false\n Array.isArray(uniformValue) && typeof uniformValue[0] === 'number' || // u_A: [1, 2, 3]\n Object(_is_typedarray__WEBPACK_IMPORTED_MODULE_1__[\"isTypedArray\"])(uniformValue) || // u_A: Float32Array\n // @ts-ignore\n uniformValue === '' || // @ts-ignore\n uniformValue.resize !== undefined) {\n uniforms[\"\".concat(prefix && prefix + '.').concat(uniformName)] = uniformValue;\n return;\n } // u_Struct.a.b.c\n\n\n if (Object(_is_object__WEBPACK_IMPORTED_MODULE_0__[\"isObject\"])(uniformValue)) {\n Object.keys(uniformValue).forEach(function (childName) {\n extractUniformsRecursively(childName, // @ts-ignore\n uniformValue[childName], uniforms, \"\".concat(prefix && prefix + '.').concat(uniformName));\n });\n } // u_Struct[0].a\n\n\n if (Array.isArray(uniformValue)) {\n // @ts-ignore\n uniformValue.forEach(function (child, idx) {\n Object.keys(child).forEach(function (childName) {\n extractUniformsRecursively(childName, // @ts-ignore\n child[childName], uniforms, \"\".concat(prefix && prefix + '.').concat(uniformName, \"[\").concat(idx, \"]\"));\n });\n });\n }\n}\n//# sourceMappingURL=uniform.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvdXRpbHMvdW5pZm9ybS5qcz80Mzg1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXVDO0FBQ1E7QUFDL0M7QUFDQTtBQUNBLE9BQU8sT0FBTztBQUNkLFNBQVMsT0FBTztBQUNoQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxtRUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSCxNQUFNLDJEQUFRO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1lbmdpbmVAMC41LjZAQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3V0aWxzL3VuaWZvcm0uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc09iamVjdCB9IGZyb20gJy4vaXMtb2JqZWN0JztcbmltcG9ydCB7IGlzVHlwZWRBcnJheSB9IGZyb20gJy4vaXMtdHlwZWRhcnJheSc7XG4vKipcbiAqIOiAg+iZkee7k+aehOS9k+WRveWQjSwgZWc6XG4gKiBhOiB7IGI6IDEgfSAgLT4gICdhLmInXG4gKiBhOiBbIHsgYjogMSB9IF0gLT4gJ2FbMF0uYidcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdFVuaWZvcm1zKHVuaWZvcm1zKSB7XG4gIHZhciBleHRyYWN0ZWRVbmlmb3JtcyA9IHt9O1xuICBPYmplY3Qua2V5cyh1bmlmb3JtcykuZm9yRWFjaChmdW5jdGlvbiAodW5pZm9ybU5hbWUpIHtcbiAgICBleHRyYWN0VW5pZm9ybXNSZWN1cnNpdmVseSh1bmlmb3JtTmFtZSwgdW5pZm9ybXNbdW5pZm9ybU5hbWVdLCBleHRyYWN0ZWRVbmlmb3JtcywgJycpO1xuICB9KTtcbiAgcmV0dXJuIGV4dHJhY3RlZFVuaWZvcm1zO1xufVxuXG5mdW5jdGlvbiBleHRyYWN0VW5pZm9ybXNSZWN1cnNpdmVseSh1bmlmb3JtTmFtZSwgdW5pZm9ybVZhbHVlLCB1bmlmb3JtcywgcHJlZml4KSB7XG4gIGlmICh1bmlmb3JtVmFsdWUgPT09IG51bGwgfHwgdHlwZW9mIHVuaWZvcm1WYWx1ZSA9PT0gJ251bWJlcicgfHwgLy8gdV9BOiAxXG4gIHR5cGVvZiB1bmlmb3JtVmFsdWUgPT09ICdib29sZWFuJyB8fCAvLyB1X0E6IGZhbHNlXG4gIEFycmF5LmlzQXJyYXkodW5pZm9ybVZhbHVlKSAmJiB0eXBlb2YgdW5pZm9ybVZhbHVlWzBdID09PSAnbnVtYmVyJyB8fCAvLyB1X0E6IFsxLCAyLCAzXVxuICBpc1R5cGVkQXJyYXkodW5pZm9ybVZhbHVlKSB8fCAvLyB1X0E6IEZsb2F0MzJBcnJheVxuICAvLyBAdHMtaWdub3JlXG4gIHVuaWZvcm1WYWx1ZSA9PT0gJycgfHwgLy8gQHRzLWlnbm9yZVxuICB1bmlmb3JtVmFsdWUucmVzaXplICE9PSB1bmRlZmluZWQpIHtcbiAgICB1bmlmb3Jtc1tcIlwiLmNvbmNhdChwcmVmaXggJiYgcHJlZml4ICsgJy4nKS5jb25jYXQodW5pZm9ybU5hbWUpXSA9IHVuaWZvcm1WYWx1ZTtcbiAgICByZXR1cm47XG4gIH0gLy8gdV9TdHJ1Y3QuYS5iLmNcblxuXG4gIGlmIChpc09iamVjdCh1bmlmb3JtVmFsdWUpKSB7XG4gICAgT2JqZWN0LmtleXModW5pZm9ybVZhbHVlKS5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZE5hbWUpIHtcbiAgICAgIGV4dHJhY3RVbmlmb3Jtc1JlY3Vyc2l2ZWx5KGNoaWxkTmFtZSwgLy8gQHRzLWlnbm9yZVxuICAgICAgdW5pZm9ybVZhbHVlW2NoaWxkTmFtZV0sIHVuaWZvcm1zLCBcIlwiLmNvbmNhdChwcmVmaXggJiYgcHJlZml4ICsgJy4nKS5jb25jYXQodW5pZm9ybU5hbWUpKTtcbiAgICB9KTtcbiAgfSAvLyB1X1N0cnVjdFswXS5hXG5cblxuICBpZiAoQXJyYXkuaXNBcnJheSh1bmlmb3JtVmFsdWUpKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHVuaWZvcm1WYWx1ZS5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCwgaWR4KSB7XG4gICAgICBPYmplY3Qua2V5cyhjaGlsZCkuZm9yRWFjaChmdW5jdGlvbiAoY2hpbGROYW1lKSB7XG4gICAgICAgIGV4dHJhY3RVbmlmb3Jtc1JlY3Vyc2l2ZWx5KGNoaWxkTmFtZSwgLy8gQHRzLWlnbm9yZVxuICAgICAgICBjaGlsZFtjaGlsZE5hbWVdLCB1bmlmb3JtcywgXCJcIi5jb25jYXQocHJlZml4ICYmIHByZWZpeCArICcuJykuY29uY2F0KHVuaWZvcm1OYW1lLCBcIltcIikuY29uY2F0KGlkeCwgXCJdXCIpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD11bmlmb3JtLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/uniform.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglAttribute.js":
/*!***************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglAttribute.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 ReglAttribute; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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\n/**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#attributes\n */\nvar ReglAttribute = /*#__PURE__*/function () {\n function ReglAttribute(gl, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ReglAttribute);\n\n this.attribute = void 0;\n this.buffer = void 0;\n var buffer = options.buffer,\n offset = options.offset,\n stride = options.stride,\n normalized = options.normalized,\n size = options.size,\n divisor = options.divisor;\n this.buffer = buffer;\n this.attribute = {\n buffer: buffer.get(),\n offset: offset || 0,\n stride: stride || 0,\n normalized: normalized || false,\n divisor: divisor || 0\n };\n\n if (size) {\n this.attribute.size = size;\n }\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(ReglAttribute, [{\n key: \"get\",\n value: function get() {\n return this.attribute;\n }\n }, {\n key: \"updateBuffer\",\n value: function updateBuffer(options) {\n this.buffer.subData(options);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.buffer.destroy();\n }\n }]);\n\n return ReglAttribute;\n}();\n\n\n//# sourceMappingURL=ReglAttribute.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ2wvUmVnbEF0dHJpYnV0ZS5qcz84NmJjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvRTtBQUNOOztBQUU5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRW1DO0FBQ3BDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1lbmdpbmVAMC41LjZAQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdsL1JlZ2xBdHRyaWJ1dGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5cbi8qKlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmVnbC1wcm9qZWN0L3JlZ2wvYmxvYi9naC1wYWdlcy9BUEkubWQjYXR0cmlidXRlc1xuICovXG52YXIgUmVnbEF0dHJpYnV0ZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFJlZ2xBdHRyaWJ1dGUoZ2wsIG9wdGlvbnMpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVnbEF0dHJpYnV0ZSk7XG5cbiAgICB0aGlzLmF0dHJpYnV0ZSA9IHZvaWQgMDtcbiAgICB0aGlzLmJ1ZmZlciA9IHZvaWQgMDtcbiAgICB2YXIgYnVmZmVyID0gb3B0aW9ucy5idWZmZXIsXG4gICAgICAgIG9mZnNldCA9IG9wdGlvbnMub2Zmc2V0LFxuICAgICAgICBzdHJpZGUgPSBvcHRpb25zLnN0cmlkZSxcbiAgICAgICAgbm9ybWFsaXplZCA9IG9wdGlvbnMubm9ybWFsaXplZCxcbiAgICAgICAgc2l6ZSA9IG9wdGlvbnMuc2l6ZSxcbiAgICAgICAgZGl2aXNvciA9IG9wdGlvbnMuZGl2aXNvcjtcbiAgICB0aGlzLmJ1ZmZlciA9IGJ1ZmZlcjtcbiAgICB0aGlzLmF0dHJpYnV0ZSA9IHtcbiAgICAgIGJ1ZmZlcjogYnVmZmVyLmdldCgpLFxuICAgICAgb2Zmc2V0OiBvZmZzZXQgfHwgMCxcbiAgICAgIHN0cmlkZTogc3RyaWRlIHx8IDAsXG4gICAgICBub3JtYWxpemVkOiBub3JtYWxpemVkIHx8IGZhbHNlLFxuICAgICAgZGl2aXNvcjogZGl2aXNvciB8fCAwXG4gICAgfTtcblxuICAgIGlmIChzaXplKSB7XG4gICAgICB0aGlzLmF0dHJpYnV0ZS5zaXplID0gc2l6ZTtcbiAgICB9XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUmVnbEF0dHJpYnV0ZSwgW3tcbiAgICBrZXk6IFwiZ2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidXBkYXRlQnVmZmVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVwZGF0ZUJ1ZmZlcihvcHRpb25zKSB7XG4gICAgICB0aGlzLmJ1ZmZlci5zdWJEYXRhKG9wdGlvbnMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkZXN0cm95XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgICB0aGlzLmJ1ZmZlci5kZXN0cm95KCk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFJlZ2xBdHRyaWJ1dGU7XG59KCk7XG5cbmV4cG9ydCB7IFJlZ2xBdHRyaWJ1dGUgYXMgZGVmYXVsdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UmVnbEF0dHJpYnV0ZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglAttribute.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglBuffer.js":
/*!************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglBuffer.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 ReglBuffer; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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 _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constants */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/constants.js\");\n\n\n\n\n/**\n * adaptor for regl.Buffer\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#buffers\n */\n\nvar ReglBuffer = /*#__PURE__*/function () {\n function ReglBuffer(reGl, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ReglBuffer);\n\n this.buffer = void 0;\n var data = options.data,\n usage = options.usage,\n type = options.type; // @ts-ignore\n\n this.buffer = reGl.buffer({\n data: data,\n usage: _constants__WEBPACK_IMPORTED_MODULE_3__[\"usageMap\"][usage || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].STATIC_DRAW],\n type: _constants__WEBPACK_IMPORTED_MODULE_3__[\"dataTypeMap\"][type || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].UNSIGNED_BYTE] // length: 0,\n\n });\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(ReglBuffer, [{\n key: \"get\",\n value: function get() {\n return this.buffer;\n }\n }, {\n key: \"destroy\",\n value: function destroy() {// this.buffer.destroy();\n }\n }, {\n key: \"subData\",\n value: function subData(_ref) {\n var data = _ref.data,\n offset = _ref.offset;\n // @ts-ignore\n this.buffer.subdata(data, offset);\n }\n }]);\n\n return ReglBuffer;\n}();\n\n\n//# sourceMappingURL=ReglBuffer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ2wvUmVnbEJ1ZmZlci5qcz81MDQzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjtBQUNyQjtBQUNXO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7O0FBRTVCO0FBQ0E7QUFDQSxhQUFhLG1EQUFRLFVBQVUsc0RBQUU7QUFDakMsWUFBWSxzREFBVyxTQUFTLHNEQUFFOztBQUVsQyxLQUFLO0FBQ0w7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsK0JBQStCO0FBQy9CO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRWdDO0FBQ2pDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1lbmdpbmVAMC41LjZAQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdsL1JlZ2xCdWZmZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgeyBnbCB9IGZyb20gJ0BhbnR2L2ctd2ViZ3B1LWNvcmUnO1xuaW1wb3J0IHsgZGF0YVR5cGVNYXAsIHVzYWdlTWFwIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuLyoqXG4gKiBhZGFwdG9yIGZvciByZWdsLkJ1ZmZlclxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmVnbC1wcm9qZWN0L3JlZ2wvYmxvYi9naC1wYWdlcy9BUEkubWQjYnVmZmVyc1xuICovXG5cbnZhciBSZWdsQnVmZmVyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gUmVnbEJ1ZmZlcihyZUdsLCBvcHRpb25zKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJlZ2xCdWZmZXIpO1xuXG4gICAgdGhpcy5idWZmZXIgPSB2b2lkIDA7XG4gICAgdmFyIGRhdGEgPSBvcHRpb25zLmRhdGEsXG4gICAgICAgIHVzYWdlID0gb3B0aW9ucy51c2FnZSxcbiAgICAgICAgdHlwZSA9IG9wdGlvbnMudHlwZTsgLy8gQHRzLWlnbm9yZVxuXG4gICAgdGhpcy5idWZmZXIgPSByZUdsLmJ1ZmZlcih7XG4gICAgICBkYXRhOiBkYXRhLFxuICAgICAgdXNhZ2U6IHVzYWdlTWFwW3VzYWdlIHx8IGdsLlNUQVRJQ19EUkFXXSxcbiAgICAgIHR5cGU6IGRhdGFUeXBlTWFwW3R5cGUgfHwgZ2wuVU5TSUdORURfQllURV0gLy8gbGVuZ3RoOiAwLFxuXG4gICAgfSk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUmVnbEJ1ZmZlciwgW3tcbiAgICBrZXk6IFwiZ2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmJ1ZmZlcjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGVzdHJveVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkZXN0cm95KCkgey8vIHRoaXMuYnVmZmVyLmRlc3Ryb3koKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic3ViRGF0YVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzdWJEYXRhKF9yZWYpIHtcbiAgICAgIHZhciBkYXRhID0gX3JlZi5kYXRhLFxuICAgICAgICAgIG9mZnNldCA9IF9yZWYub2Zmc2V0O1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5idWZmZXIuc3ViZGF0YShkYXRhLCBvZmZzZXQpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBSZWdsQnVmZmVyO1xufSgpO1xuXG5leHBvcnQgeyBSZWdsQnVmZmVyIGFzIGRlZmF1bHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJlZ2xCdWZmZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglBuffer.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglComputeModel.js":
/*!******************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglComputeModel.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 ReglComputeModel; });\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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_regenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@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 _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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@7.16.3@@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 _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _utils_is_typedarray__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/is-typedarray */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/is-typedarray.js\");\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n\n\n\n/* babel-plugin-inline-import './shaders/quad.vert.glsl' */\nvar quadVert = \"attribute vec3 a_Position;\\nattribute vec2 a_TexCoord;\\n\\nvarying vec2 v_TexCoord;\\n\\nvoid main() {\\n gl_Position = vec4(a_Position, 1.0);\\n v_TexCoord = a_TexCoord;\\n}\";\nvar textureId = 0;\nvar debug = false;\n/**\n * adaptor for regl.DrawCommand\n */\n\nvar ReglComputeModel = /*#__PURE__*/function () {\n function ReglComputeModel(reGl, context) {\n var _this = this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default()(this, ReglComputeModel);\n\n this.reGl = reGl;\n this.context = context;\n this.entity = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_6__[\"createEntity\"])();\n this.texFBO = void 0;\n this.computeCommand = void 0;\n this.textureCache = {};\n this.outputTextureName = void 0;\n this.swapOutputTextureName = void 0;\n this.compiledPingpong = void 0;\n this.dynamicPingpong = void 0;\n var uniforms = {};\n this.context.uniforms.forEach(function (uniform) {\n var name = uniform.name,\n type = uniform.type,\n data = uniform.data,\n isReferer = uniform.isReferer,\n storageClass = uniform.storageClass; // store data with a 2D texture\n\n if (storageClass === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_6__[\"STORAGE_CLASS\"].StorageBuffer) {\n if (!isReferer) {\n _this.textureCache[name] = _this.calcDataTexture(name, type, data);\n var _this$textureCache$na = _this.textureCache[name],\n width = _this$textureCache$na.textureWidth,\n isOutput = _this$textureCache$na.isOutput;\n uniforms[\"\".concat(name, \"Size\")] = [width, width];\n\n if (isOutput) {\n _this.outputTextureName = name;\n\n if (_this.context.needPingpong) {\n _this.outputTextureName = \"\".concat(name, \"Output\");\n _this.textureCache[_this.outputTextureName] = _this.calcDataTexture(name, type, data);\n }\n }\n } else {\n // @ts-ignore\n _this.textureCache[name] = {\n data: undefined\n }; // refer to another kernel's output,\n // the referred kernel may not have been initialized, so we use dynamic way here\n\n uniforms[\"\".concat(name, \"Size\")] = function () {\n return (// @ts-ignore\n data.compiledBundle.context.output.textureSize\n );\n };\n }\n\n uniforms[name] = function () {\n if (debug) {\n console.log(\"[\".concat(_this.entity, \"]: \").concat(name, \" \").concat(_this.textureCache[name].id));\n }\n\n return _this.textureCache[name].texture;\n };\n } else if (storageClass === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_6__[\"STORAGE_CLASS\"].Uniform) {\n if (data && (Array.isArray(data) || Object(_utils_is_typedarray__WEBPACK_IMPORTED_MODULE_7__[\"isTypedArray\"])(data)) && data.length > 16) {\n // up to mat4 which includes 16 elements\n throw new Error(\"invalid data type \".concat(type));\n } // get uniform dynamically\n\n\n uniforms[name] = function () {\n return uniform.data;\n };\n }\n });\n\n var _this$getOuputDataTex = this.getOuputDataTexture(),\n textureWidth = _this$getOuputDataTex.textureWidth,\n texelCount = _this$getOuputDataTex.texelCount; // 传入 output 纹理尺寸和数据长度,便于多余的 texel 提前退出\n\n\n uniforms.u_OutputTextureSize = [textureWidth, textureWidth];\n uniforms.u_OutputTexelCount = texelCount; // 保存在 Kernel 的上下文中,供其他 Kernel 引用\n\n this.context.output.textureSize = [textureWidth, textureWidth];\n var drawParams = {\n attributes: {\n a_Position: [[-1, 1, 0], [-1, -1, 0], [1, 1, 0], [1, -1, 0]],\n a_TexCoord: [[0, 1], [0, 0], [1, 1], [1, 0]]\n },\n frag: \"#ifdef GL_FRAGMENT_PRECISION_HIGH\\n precision highp float;\\n#else\\n precision mediump float;\\n#endif\\n\".concat(this.context.shader),\n uniforms: uniforms,\n vert: quadVert,\n // TODO: use a fullscreen triangle instead.\n primitive: 'triangle strip',\n count: 4\n };\n this.computeCommand = this.reGl(drawParams);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default()(ReglComputeModel, [{\n key: \"run\",\n value: function run() {\n var _this2 = this;\n\n if (this.context.maxIteration > 1 && this.context.needPingpong) {\n this.compiledPingpong = true;\n } // need pingpong when (@in@out and execute(10)) or use `setBinding('out', self)`\n // this.needPingpong =\n // !!(this.context.maxIteration > 1 && this.context.needPingpong);\n // if (this.relativeOutputTextureNames.length) {\n // const { id, texture } = this.getOuputDataTexture();\n // this.relativeOutputTextureNames.forEach((name) => {\n // this.textureCache[name].id = id;\n // this.textureCache[name].texture = texture;\n // });\n // this.swap();\n // }\n\n\n if (this.compiledPingpong || this.dynamicPingpong) {\n this.swap();\n }\n\n this.texFBO = this.reGl.framebuffer({\n color: this.getOuputDataTexture().texture\n });\n this.texFBO.use(function () {\n _this2.computeCommand();\n });\n\n if (debug) {\n console.log(\"[\".concat(this.entity, \"]: output \").concat(this.getOuputDataTexture().id));\n }\n }\n }, {\n key: \"readData\",\n value: function () {\n var _readData = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.mark(function _callee() {\n var _this3 = this;\n\n var pixels, _this$getOuputDataTex2, originalDataLength, elementsPerTexel, _this$getOuputDataTex3, typedArrayConstructor, formattedPixels, i;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n this.reGl({\n framebuffer: this.texFBO\n })(function () {\n pixels = _this3.reGl.read();\n }); // @ts-ignore\n\n if (!pixels) {\n _context.next = 6;\n break;\n }\n\n _this$getOuputDataTex2 = this.getOuputDataTexture(), originalDataLength = _this$getOuputDataTex2.originalDataLength, elementsPerTexel = _this$getOuputDataTex2.elementsPerTexel, _this$getOuputDataTex3 = _this$getOuputDataTex2.typedArrayConstructor, typedArrayConstructor = _this$getOuputDataTex3 === void 0 ? Float32Array : _this$getOuputDataTex3;\n formattedPixels = [];\n\n if (elementsPerTexel !== 4) {\n for (i = 0; i < pixels.length; i += 4) {\n if (elementsPerTexel === 1) {\n formattedPixels.push(pixels[i]);\n } else if (elementsPerTexel === 2) {\n formattedPixels.push(pixels[i], pixels[i + 1]);\n } else {\n formattedPixels.push(pixels[i], pixels[i + 1], pixels[i + 2]);\n }\n }\n } else {\n // @ts-ignore\n formattedPixels = pixels;\n } // 截取多余的部分\n // @ts-ignore\n\n\n return _context.abrupt(\"return\", new typedArrayConstructor(formattedPixels.slice(0, originalDataLength)));\n\n case 6:\n return _context.abrupt(\"return\", new Float32Array());\n\n case 7:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function readData() {\n return _readData.apply(this, arguments);\n }\n\n return readData;\n }()\n }, {\n key: \"confirmInput\",\n value: function confirmInput(model, inputName) {\n var inputModel; // refer to self, same as pingpong\n\n if (this.entity === model.entity) {\n this.dynamicPingpong = true;\n inputModel = this;\n } else {\n inputModel = model;\n }\n\n this.textureCache[inputName].id = inputModel.getOuputDataTexture().id;\n this.textureCache[inputName].texture = inputModel.getOuputDataTexture().texture;\n\n if (debug) {\n console.log(\"[\".concat(this.entity, \"]: confirm input \").concat(inputName, \" from model \").concat(inputModel.entity, \", \").concat(inputModel.getOuputDataTexture().id));\n }\n }\n }, {\n key: \"updateUniform\",\n value: function updateUniform() {// already get uniform's data dynamically when created, do nothing here\n }\n }, {\n key: \"updateBuffer\",\n value: function updateBuffer(bufferName, data) {\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n // regenerate data texture\n var buffer = this.context.uniforms.find(function (_ref) {\n var name = _ref.name;\n return name === bufferName;\n });\n\n if (buffer) {\n var _this$calcDataTexture = this.calcDataTexture(bufferName, buffer.type, data),\n texture = _this$calcDataTexture.texture,\n paddingData = _this$calcDataTexture.data; // TODO: destroy outdated texture\n\n\n this.textureCache[bufferName].data = paddingData;\n this.textureCache[bufferName].texture = texture;\n }\n }\n }, {\n key: \"destroy\",\n value: function destroy() {// regl will destroy all resources\n }\n }, {\n key: \"swap\",\n value: function swap() {\n if (!this.swapOutputTextureName) {\n this.createSwapOutputDataTexture();\n }\n\n if (this.compiledPingpong) {\n var outputTextureUniformName = this.context.output.name;\n this.textureCache[outputTextureUniformName].id = this.getOuputDataTexture().id;\n this.textureCache[outputTextureUniformName].texture = this.getOuputDataTexture().texture;\n }\n\n var tmp = this.outputTextureName;\n this.outputTextureName = this.swapOutputTextureName;\n this.swapOutputTextureName = tmp;\n\n if (debug) {\n console.log(\"[\".concat(this.entity, \"]: after swap, output \").concat(this.getOuputDataTexture().id));\n }\n }\n }, {\n key: \"getOuputDataTexture\",\n value: function getOuputDataTexture() {\n return this.textureCache[this.outputTextureName];\n }\n }, {\n key: \"createSwapOutputDataTexture\",\n value: function createSwapOutputDataTexture() {\n var texture = this.cloneDataTexture(this.getOuputDataTexture());\n this.swapOutputTextureName = \"\".concat(this.entity, \"-swap\");\n this.textureCache[this.swapOutputTextureName] = texture;\n }\n }, {\n key: \"cloneDataTexture\",\n value: function cloneDataTexture(texture) {\n var data = texture.data,\n textureWidth = texture.textureWidth;\n return _objectSpread(_objectSpread({}, texture), {}, {\n id: textureId++,\n // @ts-ignore\n texture: this.reGl.texture({\n width: textureWidth,\n height: textureWidth,\n data: data,\n type: 'float'\n })\n });\n }\n }, {\n key: \"calcDataTexture\",\n value: function calcDataTexture(name, type, data) {\n var elementsPerTexel = 1;\n\n if (type === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_6__[\"AST_TOKEN_TYPES\"].Vector4FloatArray) {\n elementsPerTexel = 4;\n } // 用 0 补全不足 vec4 的部分\n\n\n var paddingData = [];\n\n for (var i = 0; i < data.length; i += elementsPerTexel) {\n if (elementsPerTexel === 1) {\n paddingData.push(data[i], 0, 0, 0);\n } else if (elementsPerTexel === 2) {\n paddingData.push(data[i], data[i + 1], 0, 0);\n } else if (elementsPerTexel === 3) {\n paddingData.push(data[i], data[i + 1], data[i + 2], 0);\n } else if (elementsPerTexel === 4) {\n paddingData.push(data[i], data[i + 1], data[i + 2], data[i + 3]);\n }\n } // 使用纹理存储,例如 Array(8) 使用 3 * 3 纹理,末尾空白使用 0 填充\n\n\n var originalDataLength = data.length;\n var texelCount = Math.ceil(originalDataLength / elementsPerTexel);\n var width = Math.ceil(Math.sqrt(texelCount));\n var paddingTexelCount = width * width;\n\n if (texelCount < paddingTexelCount) {\n paddingData.push.apply(paddingData, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(new Array((paddingTexelCount - texelCount) * 4).fill(0)));\n }\n\n var texture = this.reGl.texture({\n width: width,\n height: width,\n data: paddingData,\n type: 'float'\n });\n return {\n id: textureId++,\n data: paddingData,\n originalDataLength: originalDataLength,\n typedArrayConstructor: Object(_utils_is_typedarray__WEBPACK_IMPORTED_MODULE_7__[\"isTypedArray\"])(data) ? data.constructor : undefined,\n textureWidth: width,\n texture: texture,\n texelCount: texelCount,\n elementsPerTexel: elementsPerTexel,\n isOutput: name === this.context.output.name\n };\n }\n }]);\n\n return ReglComputeModel;\n}();\n\n\n//# sourceMappingURL=ReglComputeModel.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ2wvUmVnbENvbXB1dGVNb2RlbC5qcz9iZTAxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTBFO0FBQ047QUFDUDtBQUNXO0FBQ0o7QUFDTjs7QUFFOUQsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsdURBQXVELENBQUMsNEVBQWUsMkJBQTJCLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLGlEQUFpRCxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVqYztBQUM3Qjs7QUFFdEQ7QUFDQSwwQ0FBMEMsNEJBQTRCLDRCQUE0QixpQkFBaUIsd0NBQXdDLDRCQUE0QixHQUFHO0FBQzFMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7QUFDQSxrQkFBa0Isd0VBQVk7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEM7O0FBRTlDLDJCQUEyQixpRUFBYTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU8sMkJBQTJCLGlFQUFhO0FBQy9DLDRDQUE0Qyx5RUFBWTtBQUN4RDtBQUNBO0FBQ0EsU0FBUzs7O0FBR1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxzREFBc0Q7OztBQUd0RDtBQUNBLDZDQUE2Qzs7QUFFN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCx3RUFBd0UsbUNBQW1DO0FBQzNHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixjQUFjO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0Esc0JBQXNCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUN6RTs7QUFFQTs7QUFFQSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0EsaUJBQWlCLEVBQUU7O0FBRW5CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSw2QkFBNkIsbUJBQW1CO0FBQ2hEO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7OztBQUdBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBLHFCQUFxQjs7QUFFckI7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLHFDQUFxQztBQUNyQztBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0EscURBQXFEOzs7QUFHckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsY0FBYztBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixtRUFBZTtBQUNsQztBQUNBLE9BQU87OztBQUdQOztBQUVBLHFCQUFxQixpQkFBaUI7QUFDdEM7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw0Q0FBNEMsK0VBQWtCO0FBQzlEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IseUVBQVk7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQzs7QUFFc0M7QUFDdkMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ2wvUmVnbENvbXB1dGVNb2RlbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfdG9Db25zdW1hYmxlQXJyYXkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXlcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfcmVnZW5lcmF0b3JSdW50aW1lIGZyb20gXCJAYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvclwiO1xuaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmltcG9ydCB7IEFTVF9UT0tFTl9UWVBFUywgY3JlYXRlRW50aXR5LCBTVE9SQUdFX0NMQVNTIH0gZnJvbSAnQGFudHYvZy13ZWJncHUtY29yZSc7XG5pbXBvcnQgeyBpc1R5cGVkQXJyYXkgfSBmcm9tICcuLi91dGlscy9pcy10eXBlZGFycmF5JztcblxuLyogYmFiZWwtcGx1Z2luLWlubGluZS1pbXBvcnQgJy4vc2hhZGVycy9xdWFkLnZlcnQuZ2xzbCcgKi9cbnZhciBxdWFkVmVydCA9IFwiYXR0cmlidXRlIHZlYzMgYV9Qb3NpdGlvbjtcXG5hdHRyaWJ1dGUgdmVjMiBhX1RleENvb3JkO1xcblxcbnZhcnlpbmcgdmVjMiB2X1RleENvb3JkO1xcblxcbnZvaWQgbWFpbigpIHtcXG4gIGdsX1Bvc2l0aW9uID0gdmVjNChhX1Bvc2l0aW9uLCAxLjApO1xcbiAgdl9UZXhDb29yZCA9IGFfVGV4Q29vcmQ7XFxufVwiO1xudmFyIHRleHR1cmVJZCA9IDA7XG52YXIgZGVidWcgPSBmYWxzZTtcbi8qKlxuICogYWRhcHRvciBmb3IgcmVnbC5EcmF3Q29tbWFuZFxuICovXG5cbnZhciBSZWdsQ29tcHV0ZU1vZGVsID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gUmVnbENvbXB1dGVNb2RlbChyZUdsLCBjb250ZXh0KSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBSZWdsQ29tcHV0ZU1vZGVsKTtcblxuICAgIHRoaXMucmVHbCA9IHJlR2w7XG4gICAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgICB0aGlzLmVudGl0eSA9IGNyZWF0ZUVudGl0eSgpO1xuICAgIHRoaXMudGV4RkJPID0gdm9pZCAwO1xuICAgIHRoaXMuY29tcHV0ZUNvbW1hbmQgPSB2b2lkIDA7XG4gICAgdGhpcy50ZXh0dXJlQ2FjaGUgPSB7fTtcbiAgICB0aGlzLm91dHB1dFRleHR1cmVOYW1lID0gdm9pZCAwO1xuICAgIHRoaXMuc3dhcE91dHB1dFRleHR1cmVOYW1lID0gdm9pZCAwO1xuICAgIHRoaXMuY29tcGlsZWRQaW5ncG9uZyA9IHZvaWQgMDtcbiAgICB0aGlzLmR5bmFtaWNQaW5ncG9uZyA9IHZvaWQgMDtcbiAgICB2YXIgdW5pZm9ybXMgPSB7fTtcbiAgICB0aGlzLmNvbnRleHQudW5pZm9ybXMuZm9yRWFjaChmdW5jdGlvbiAodW5pZm9ybSkge1xuICAgICAgdmFyIG5hbWUgPSB1bmlmb3JtLm5hbWUsXG4gICAgICAgICAgdHlwZSA9IHVuaWZvcm0udHlwZSxcbiAgICAgICAgICBkYXRhID0gdW5pZm9ybS5kYXRhLFxuICAgICAgICAgIGlzUmVmZXJlciA9IHVuaWZvcm0uaXNSZWZlcmVyLFxuICAgICAgICAgIHN0b3JhZ2VDbGFzcyA9IHVuaWZvcm0uc3RvcmFnZUNsYXNzOyAvLyBzdG9yZSBkYXRhIHdpdGggYSAyRCB0ZXh0dXJlXG5cbiAgICAgIGlmIChzdG9yYWdlQ2xhc3MgPT09IFNUT1JBR0VfQ0xBU1MuU3RvcmFnZUJ1ZmZlcikge1xuICAgICAgICBpZiAoIWlzUmVmZXJlcikge1xuICAgICAgICAgIF90aGlzLnRleHR1cmVDYWNoZVtuYW1lXSA9IF90aGlzLmNhbGNEYXRhVGV4dHVyZShuYW1lLCB0eXBlLCBkYXRhKTtcbiAgICAgICAgICB2YXIgX3RoaXMkdGV4dHVyZUNhY2hlJG5hID0gX3RoaXMudGV4dHVyZUNhY2hlW25hbWVdLFxuICAgICAgICAgICAgICB3aWR0aCA9IF90aGlzJHRleHR1cmVDYWNoZSRuYS50ZXh0dXJlV2lkdGgsXG4gICAgICAgICAgICAgIGlzT3V0cHV0ID0gX3RoaXMkdGV4dHVyZUNhY2hlJG5hLmlzT3V0cHV0O1xuICAgICAgICAgIHVuaWZvcm1zW1wiXCIuY29uY2F0KG5hbWUsIFwiU2l6ZVwiKV0gPSBbd2lkdGgsIHdpZHRoXTtcblxuICAgICAgICAgIGlmIChpc091dHB1dCkge1xuICAgICAgICAgICAgX3RoaXMub3V0cHV0VGV4dHVyZU5hbWUgPSBuYW1lO1xuXG4gICAgICAgICAgICBpZiAoX3RoaXMuY29udGV4dC5uZWVkUGluZ3BvbmcpIHtcbiAgICAgICAgICAgICAgX3RoaXMub3V0cHV0VGV4dHVyZU5hbWUgPSBcIlwiLmNvbmNhdChuYW1lLCBcIk91dHB1dFwiKTtcbiAgICAgICAgICAgICAgX3RoaXMudGV4dHVyZUNhY2hlW190aGlzLm91dHB1dFRleHR1cmVOYW1lXSA9IF90aGlzLmNhbGNEYXRhVGV4dHVyZShuYW1lLCB0eXBlLCBkYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIF90aGlzLnRleHR1cmVDYWNoZVtuYW1lXSA9IHtcbiAgICAgICAgICAgIGRhdGE6IHVuZGVmaW5lZFxuICAgICAgICAgIH07IC8vIHJlZmVyIHRvIGFub3RoZXIga2VybmVsJ3Mgb3V0cHV0LFxuICAgICAgICAgIC8vIHRoZSByZWZlcnJlZCBrZXJuZWwgbWF5IG5vdCBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQsIHNvIHdlIHVzZSBkeW5hbWljIHdheSBoZXJlXG5cbiAgICAgICAgICB1bmlmb3Jtc1tcIlwiLmNvbmNhdChuYW1lLCBcIlNpemVcIildID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuICgvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIGRhdGEuY29tcGlsZWRCdW5kbGUuY29udGV4dC5vdXRwdXQudGV4dHVyZVNpemVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHVuaWZvcm1zW25hbWVdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmIChkZWJ1Zykge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJbXCIuY29uY2F0KF90aGlzLmVudGl0eSwgXCJdOiBcIikuY29uY2F0KG5hbWUsIFwiIFwiKS5jb25jYXQoX3RoaXMudGV4dHVyZUNhY2hlW25hbWVdLmlkKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIF90aGlzLnRleHR1cmVDYWNoZVtuYW1lXS50ZXh0dXJlO1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmIChzdG9yYWdlQ2xhc3MgPT09IFNUT1JBR0VfQ0xBU1MuVW5pZm9ybSkge1xuICAgICAgICBpZiAoZGF0YSAmJiAoQXJyYXkuaXNBcnJheShkYXRhKSB8fCBpc1R5cGVkQXJyYXkoZGF0YSkpICYmIGRhdGEubGVuZ3RoID4gMTYpIHtcbiAgICAgICAgICAvLyB1cCB0byBtYXQ0IHdoaWNoIGluY2x1ZGVzIDE2IGVsZW1lbnRzXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBkYXRhIHR5cGUgXCIuY29uY2F0KHR5cGUpKTtcbiAgICAgICAgfSAvLyBnZXQgdW5pZm9ybSBkeW5hbWljYWxseVxuXG5cbiAgICAgICAgdW5pZm9ybXNbbmFtZV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIHVuaWZvcm0uZGF0YTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHZhciBfdGhpcyRnZXRPdXB1dERhdGFUZXggPSB0aGlzLmdldE91cHV0RGF0YVRleHR1cmUoKSxcbiAgICAgICAgdGV4dHVyZVdpZHRoID0gX3RoaXMkZ2V0T3VwdXREYXRhVGV4LnRleHR1cmVXaWR0aCxcbiAgICAgICAgdGV4ZWxDb3VudCA9IF90aGlzJGdldE91cHV0RGF0YVRleC50ZXhlbENvdW50OyAvLyDkvKDlhaUgb3V0cHV0IOe6ueeQhuWwuuWvuOWSjOaVsOaNrumVv+W6pu+8jOS+v+S6juWkmuS9meeahCB0ZXhlbCDmj5DliY3pgIDlh7pcblxuXG4gICAgdW5pZm9ybXMudV9PdXRwdXRUZXh0dXJlU2l6ZSA9IFt0ZXh0dXJlV2lkdGgsIHRleHR1cmVXaWR0aF07XG4gICAgdW5pZm9ybXMudV9PdXRwdXRUZXhlbENvdW50ID0gdGV4ZWxDb3VudDsgLy8g5L+d5a2Y5ZyoIEtlcm5lbCDnmoTkuIrkuIvmlofkuK3vvIzkvpvlhbbku5YgS2VybmVsIOW8leeUqFxuXG4gICAgdGhpcy5jb250ZXh0Lm91dHB1dC50ZXh0dXJlU2l6ZSA9IFt0ZXh0dXJlV2lkdGgsIHRleHR1cmVXaWR0aF07XG4gICAgdmFyIGRyYXdQYXJhbXMgPSB7XG4gICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgIGFfUG9zaXRpb246IFtbLTEsIDEsIDBdLCBbLTEsIC0xLCAwXSwgWzEsIDEsIDBdLCBbMSwgLTEsIDBdXSxcbiAgICAgICAgYV9UZXhDb29yZDogW1swLCAxXSwgWzAsIDBdLCBbMSwgMV0sIFsxLCAwXV1cbiAgICAgIH0sXG4gICAgICBmcmFnOiBcIiNpZmRlZiBHTF9GUkFHTUVOVF9QUkVDSVNJT05fSElHSFxcbiAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xcbiNlbHNlXFxuICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcXG4jZW5kaWZcXG5cIi5jb25jYXQodGhpcy5jb250ZXh0LnNoYWRlciksXG4gICAgICB1bmlmb3JtczogdW5pZm9ybXMsXG4gICAgICB2ZXJ0OiBxdWFkVmVydCxcbiAgICAgIC8vIFRPRE86IHVzZSBhIGZ1bGxzY3JlZW4gdHJpYW5nbGUgaW5zdGVhZC5cbiAgICAgIHByaW1pdGl2ZTogJ3RyaWFuZ2xlIHN0cmlwJyxcbiAgICAgIGNvdW50OiA0XG4gICAgfTtcbiAgICB0aGlzLmNvbXB1dGVDb21tYW5kID0gdGhpcy5yZUdsKGRyYXdQYXJhbXMpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFJlZ2xDb21wdXRlTW9kZWwsIFt7XG4gICAga2V5OiBcInJ1blwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBydW4oKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgaWYgKHRoaXMuY29udGV4dC5tYXhJdGVyYXRpb24gPiAxICYmIHRoaXMuY29udGV4dC5uZWVkUGluZ3BvbmcpIHtcbiAgICAgICAgdGhpcy5jb21waWxlZFBpbmdwb25nID0gdHJ1ZTtcbiAgICAgIH0gLy8gbmVlZCBwaW5ncG9uZyB3aGVuIChAaW5Ab3V0IGFuZCBleGVjdXRlKDEwKSkgb3IgdXNlIGBzZXRCaW5kaW5nKCdvdXQnLCBzZWxmKWBcbiAgICAgIC8vIHRoaXMubmVlZFBpbmdwb25nID1cbiAgICAgIC8vICAgISEodGhpcy5jb250ZXh0Lm1heEl0ZXJhdGlvbiA+IDEgJiYgdGhpcy5jb250ZXh0Lm5lZWRQaW5ncG9uZyk7XG4gICAgICAvLyBpZiAodGhpcy5yZWxhdGl2ZU91dHB1dFRleHR1cmVOYW1lcy5sZW5ndGgpIHtcbiAgICAgIC8vICAgY29uc3QgeyBpZCwgdGV4dHVyZSB9ID0gdGhpcy5nZXRPdXB1dERhdGFUZXh0dXJlKCk7XG4gICAgICAvLyAgIHRoaXMucmVsYXRpdmVPdXRwdXRUZXh0dXJlTmFtZXMuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgLy8gICAgIHRoaXMudGV4dHVyZUNhY2hlW25hbWVdLmlkID0gaWQ7XG4gICAgICAvLyAgICAgdGhpcy50ZXh0dXJlQ2FjaGVbbmFtZV0udGV4dHVyZSA9IHRleHR1cmU7XG4gICAgICAvLyAgIH0pO1xuICAgICAgLy8gICB0aGlzLnN3YXAoKTtcbiAgICAgIC8vIH1cblxuXG4gICAgICBpZiAodGhpcy5jb21waWxlZFBpbmdwb25nIHx8IHRoaXMuZHluYW1pY1Bpbmdwb25nKSB7XG4gICAgICAgIHRoaXMuc3dhcCgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnRleEZCTyA9IHRoaXMucmVHbC5mcmFtZWJ1ZmZlcih7XG4gICAgICAgIGNvbG9yOiB0aGlzLmdldE91cHV0RGF0YVRleHR1cmUoKS50ZXh0dXJlXG4gICAgICB9KTtcbiAgICAgIHRoaXMudGV4RkJPLnVzZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzMi5jb21wdXRlQ29tbWFuZCgpO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChkZWJ1Zykge1xuICAgICAgICBjb25zb2xlLmxvZyhcIltcIi5jb25jYXQodGhpcy5lbnRpdHksIFwiXTogb3V0cHV0IFwiKS5jb25jYXQodGhpcy5nZXRPdXB1dERhdGFUZXh0dXJlKCkuaWQpKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVhZERhdGFcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9yZWFkRGF0YSA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoKSB7XG4gICAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICAgIHZhciBwaXhlbHMsIF90aGlzJGdldE91cHV0RGF0YVRleDIsIG9yaWdpbmFsRGF0YUxlbmd0aCwgZWxlbWVudHNQZXJUZXhlbCwgX3RoaXMkZ2V0T3VwdXREYXRhVGV4MywgdHlwZWRBcnJheUNvbnN0cnVjdG9yLCBmb3JtYXR0ZWRQaXhlbHMsIGk7XG5cbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICB0aGlzLnJlR2woe1xuICAgICAgICAgICAgICAgICAgZnJhbWVidWZmZXI6IHRoaXMudGV4RkJPXG4gICAgICAgICAgICAgICAgfSkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgcGl4ZWxzID0gX3RoaXMzLnJlR2wucmVhZCgpO1xuICAgICAgICAgICAgICAgIH0pOyAvLyBAdHMtaWdub3JlXG5cbiAgICAgICAgICAgICAgICBpZiAoIXBpeGVscykge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDY7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBfdGhpcyRnZXRPdXB1dERhdGFUZXgyID0gdGhpcy5nZXRPdXB1dERhdGFUZXh0dXJlKCksIG9yaWdpbmFsRGF0YUxlbmd0aCA9IF90aGlzJGdldE91cHV0RGF0YVRleDIub3JpZ2luYWxEYXRhTGVuZ3RoLCBlbGVtZW50c1BlclRleGVsID0gX3RoaXMkZ2V0T3VwdXREYXRhVGV4Mi5lbGVtZW50c1BlclRleGVsLCBfdGhpcyRnZXRPdXB1dERhdGFUZXgzID0gX3RoaXMkZ2V0T3VwdXREYXRhVGV4Mi50eXBlZEFycmF5Q29uc3RydWN0b3IsIHR5cGVkQXJyYXlDb25zdHJ1Y3RvciA9IF90aGlzJGdldE91cHV0RGF0YVRleDMgPT09IHZvaWQgMCA/IEZsb2F0MzJBcnJheSA6IF90aGlzJGdldE91cHV0RGF0YVRleDM7XG4gICAgICAgICAgICAgICAgZm9ybWF0dGVkUGl4ZWxzID0gW107XG5cbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudHNQZXJUZXhlbCAhPT0gNCkge1xuICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHBpeGVscy5sZW5ndGg7IGkgKz0gNCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudHNQZXJUZXhlbCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZFBpeGVscy5wdXNoKHBpeGVsc1tpXSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudHNQZXJUZXhlbCA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZFBpeGVscy5wdXNoKHBpeGVsc1tpXSwgcGl4ZWxzW2kgKyAxXSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkUGl4ZWxzLnB1c2gocGl4ZWxzW2ldLCBwaXhlbHNbaSArIDFdLCBwaXhlbHNbaSArIDJdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICBmb3JtYXR0ZWRQaXhlbHMgPSBwaXhlbHM7XG4gICAgICAgICAgICAgICAgfSAvLyDmiKrlj5blpJrkvZnnmoTpg6jliIZcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG5cblxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5hYnJ1cHQoXCJyZXR1cm5cIiwgbmV3IHR5cGVkQXJyYXlDb25zdHJ1Y3Rvcihmb3JtYXR0ZWRQaXhlbHMuc2xpY2UoMCwgb3JpZ2luYWxEYXRhTGVuZ3RoKSkpO1xuXG4gICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuYWJydXB0KFwicmV0dXJuXCIsIG5ldyBGbG9hdDMyQXJyYXkoKSk7XG5cbiAgICAgICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiByZWFkRGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIF9yZWFkRGF0YS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVhZERhdGE7XG4gICAgfSgpXG4gIH0sIHtcbiAgICBrZXk6IFwiY29uZmlybUlucHV0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbmZpcm1JbnB1dChtb2RlbCwgaW5wdXROYW1lKSB7XG4gICAgICB2YXIgaW5wdXRNb2RlbDsgLy8gcmVmZXIgdG8gc2VsZiwgc2FtZSBhcyBwaW5ncG9uZ1xuXG4gICAgICBpZiAodGhpcy5lbnRpdHkgPT09IG1vZGVsLmVudGl0eSkge1xuICAgICAgICB0aGlzLmR5bmFtaWNQaW5ncG9uZyA9IHRydWU7XG4gICAgICAgIGlucHV0TW9kZWwgPSB0aGlzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5wdXRNb2RlbCA9IG1vZGVsO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnRleHR1cmVDYWNoZVtpbnB1dE5hbWVdLmlkID0gaW5wdXRNb2RlbC5nZXRPdXB1dERhdGFUZXh0dXJlKCkuaWQ7XG4gICAgICB0aGlzLnRleHR1cmVDYWNoZVtpbnB1dE5hbWVdLnRleHR1cmUgPSBpbnB1dE1vZGVsLmdldE91cHV0RGF0YVRleHR1cmUoKS50ZXh0dXJlO1xuXG4gICAgICBpZiAoZGVidWcpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJbXCIuY29uY2F0KHRoaXMuZW50aXR5LCBcIl06IGNvbmZpcm0gaW5wdXQgXCIpLmNvbmNhdChpbnB1dE5hbWUsIFwiIGZyb20gbW9kZWwgXCIpLmNvbmNhdChpbnB1dE1vZGVsLmVudGl0eSwgXCIsIFwiKS5jb25jYXQoaW5wdXRNb2RlbC5nZXRPdXB1dERhdGFUZXh0dXJlKCkuaWQpKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidXBkYXRlVW5pZm9ybVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1cGRhdGVVbmlmb3JtKCkgey8vIGFscmVhZHkgZ2V0IHVuaWZvcm0ncyBkYXRhIGR5bmFtaWNhbGx5IHdoZW4gY3JlYXRlZCwgZG8gbm90aGluZyBoZXJlXG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInVwZGF0ZUJ1ZmZlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1cGRhdGVCdWZmZXIoYnVmZmVyTmFtZSwgZGF0YSkge1xuICAgICAgdmFyIG9mZnNldCA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogMDtcbiAgICAgIC8vIHJlZ2VuZXJhdGUgZGF0YSB0ZXh0dXJlXG4gICAgICB2YXIgYnVmZmVyID0gdGhpcy5jb250ZXh0LnVuaWZvcm1zLmZpbmQoZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgICAgdmFyIG5hbWUgPSBfcmVmLm5hbWU7XG4gICAgICAgIHJldHVybiBuYW1lID09PSBidWZmZXJOYW1lO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChidWZmZXIpIHtcbiAgICAgICAgdmFyIF90aGlzJGNhbGNEYXRhVGV4dHVyZSA9IHRoaXMuY2FsY0RhdGFUZXh0dXJlKGJ1ZmZlck5hbWUsIGJ1ZmZlci50eXBlLCBkYXRhKSxcbiAgICAgICAgICAgIHRleHR1cmUgPSBfdGhpcyRjYWxjRGF0YVRleHR1cmUudGV4dHVyZSxcbiAgICAgICAgICAgIHBhZGRpbmdEYXRhID0gX3RoaXMkY2FsY0RhdGFUZXh0dXJlLmRhdGE7IC8vIFRPRE86IGRlc3Ryb3kgb3V0ZGF0ZWQgdGV4dHVyZVxuXG5cbiAgICAgICAgdGhpcy50ZXh0dXJlQ2FjaGVbYnVmZmVyTmFtZV0uZGF0YSA9IHBhZGRpbmdEYXRhO1xuICAgICAgICB0aGlzLnRleHR1cmVDYWNoZVtidWZmZXJOYW1lXS50ZXh0dXJlID0gdGV4dHVyZTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGVzdHJveVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkZXN0cm95KCkgey8vIHJlZ2wgd2lsbCBkZXN0cm95IGFsbCByZXNvdXJjZXNcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic3dhcFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzd2FwKCkge1xuICAgICAgaWYgKCF0aGlzLnN3YXBPdXRwdXRUZXh0dXJlTmFtZSkge1xuICAgICAgICB0aGlzLmNyZWF0ZVN3YXBPdXRwdXREYXRhVGV4dHVyZSgpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5jb21waWxlZFBpbmdwb25nKSB7XG4gICAgICAgIHZhciBvdXRwdXRUZXh0dXJlVW5pZm9ybU5hbWUgPSB0aGlzLmNvbnRleHQub3V0cHV0Lm5hbWU7XG4gICAgICAgIHRoaXMudGV4dHVyZUNhY2hlW291dHB1dFRleHR1cmVVbmlmb3JtTmFtZV0uaWQgPSB0aGlzLmdldE91cHV0RGF0YVRleHR1cmUoKS5pZDtcbiAgICAgICAgdGhpcy50ZXh0dXJlQ2FjaGVbb3V0cHV0VGV4dHVyZVVuaWZvcm1OYW1lXS50ZXh0dXJlID0gdGhpcy5nZXRPdXB1dERhdGFUZXh0dXJlKCkudGV4dHVyZTtcbiAgICAgIH1cblxuICAgICAgdmFyIHRtcCA9IHRoaXMub3V0cHV0VGV4dHVyZU5hbWU7XG4gICAgICB0aGlzLm91dHB1dFRleHR1cmVOYW1lID0gdGhpcy5zd2FwT3V0cHV0VGV4dHVyZU5hbWU7XG4gICAgICB0aGlzLnN3YXBPdXRwdXRUZXh0dXJlTmFtZSA9IHRtcDtcblxuICAgICAgaWYgKGRlYnVnKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiW1wiLmNvbmNhdCh0aGlzLmVudGl0eSwgXCJdOiBhZnRlciBzd2FwLCBvdXRwdXQgXCIpLmNvbmNhdCh0aGlzLmdldE91cHV0RGF0YVRleHR1cmUoKS5pZCkpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRPdXB1dERhdGFUZXh0dXJlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldE91cHV0RGF0YVRleHR1cmUoKSB7XG4gICAgICByZXR1cm4gdGhpcy50ZXh0dXJlQ2FjaGVbdGhpcy5vdXRwdXRUZXh0dXJlTmFtZV07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNyZWF0ZVN3YXBPdXRwdXREYXRhVGV4dHVyZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVTd2FwT3V0cHV0RGF0YVRleHR1cmUoKSB7XG4gICAgICB2YXIgdGV4dHVyZSA9IHRoaXMuY2xvbmVEYXRhVGV4dHVyZSh0aGlzLmdldE91cHV0RGF0YVRleHR1cmUoKSk7XG4gICAgICB0aGlzLnN3YXBPdXRwdXRUZXh0dXJlTmFtZSA9IFwiXCIuY29uY2F0KHRoaXMuZW50aXR5LCBcIi1zd2FwXCIpO1xuICAgICAgdGhpcy50ZXh0dXJlQ2FjaGVbdGhpcy5zd2FwT3V0cHV0VGV4dHVyZU5hbWVdID0gdGV4dHVyZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY2xvbmVEYXRhVGV4dHVyZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjbG9uZURhdGFUZXh0dXJlKHRleHR1cmUpIHtcbiAgICAgIHZhciBkYXRhID0gdGV4dHVyZS5kYXRhLFxuICAgICAgICAgIHRleHR1cmVXaWR0aCA9IHRleHR1cmUudGV4dHVyZVdpZHRoO1xuICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgdGV4dHVyZSksIHt9LCB7XG4gICAgICAgIGlkOiB0ZXh0dXJlSWQrKyxcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB0ZXh0dXJlOiB0aGlzLnJlR2wudGV4dHVyZSh7XG4gICAgICAgICAgd2lkdGg6IHRleHR1cmVXaWR0aCxcbiAgICAgICAgICBoZWlnaHQ6IHRleHR1cmVXaWR0aCxcbiAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgIHR5cGU6ICdmbG9hdCdcbiAgICAgICAgfSlcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjYWxjRGF0YVRleHR1cmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY2FsY0RhdGFUZXh0dXJlKG5hbWUsIHR5cGUsIGRhdGEpIHtcbiAgICAgIHZhciBlbGVtZW50c1BlclRleGVsID0gMTtcblxuICAgICAgaWYgKHR5cGUgPT09IEFTVF9UT0tFTl9UWVBFUy5WZWN0b3I0RmxvYXRBcnJheSkge1xuICAgICAgICBlbGVtZW50c1BlclRleGVsID0gNDtcbiAgICAgIH0gLy8g55SoIDAg6KGl5YWo5LiN6LazIHZlYzQg55qE6YOo5YiGXG5cblxuICAgICAgdmFyIHBhZGRpbmdEYXRhID0gW107XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkgKz0gZWxlbWVudHNQZXJUZXhlbCkge1xuICAgICAgICBpZiAoZWxlbWVudHNQZXJUZXhlbCA9PT0gMSkge1xuICAgICAgICAgIHBhZGRpbmdEYXRhLnB1c2goZGF0YVtpXSwgMCwgMCwgMCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudHNQZXJUZXhlbCA9PT0gMikge1xuICAgICAgICAgIHBhZGRpbmdEYXRhLnB1c2goZGF0YVtpXSwgZGF0YVtpICsgMV0sIDAsIDApO1xuICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnRzUGVyVGV4ZWwgPT09IDMpIHtcbiAgICAgICAgICBwYWRkaW5nRGF0YS5wdXNoKGRhdGFbaV0sIGRhdGFbaSArIDFdLCBkYXRhW2kgKyAyXSwgMCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudHNQZXJUZXhlbCA9PT0gNCkge1xuICAgICAgICAgIHBhZGRpbmdEYXRhLnB1c2goZGF0YVtpXSwgZGF0YVtpICsgMV0sIGRhdGFbaSArIDJdLCBkYXRhW2kgKyAzXSk7XG4gICAgICAgIH1cbiAgICAgIH0gLy8g5L2/55So57q555CG5a2Y5YKo77yM5L6L5aaCIEFycmF5KDgpIOS9v+eUqCAzICogMyDnurnnkIbvvIzmnKvlsL7nqbrnmb3kvb/nlKggMCDloavlhYVcblxuXG4gICAgICB2YXIgb3JpZ2luYWxEYXRhTGVuZ3RoID0gZGF0YS5sZW5ndGg7XG4gICAgICB2YXIgdGV4ZWxDb3VudCA9IE1hdGguY2VpbChvcmlnaW5hbERhdGFMZW5ndGggLyBlbGVtZW50c1BlclRleGVsKTtcbiAgICAgIHZhciB3aWR0aCA9IE1hdGguY2VpbChNYXRoLnNxcnQodGV4ZWxDb3VudCkpO1xuICAgICAgdmFyIHBhZGRpbmdUZXhlbENvdW50ID0gd2lkdGggKiB3aWR0aDtcblxuICAgICAgaWYgKHRleGVsQ291bnQgPCBwYWRkaW5nVGV4ZWxDb3VudCkge1xuICAgICAgICBwYWRkaW5nRGF0YS5wdXNoLmFwcGx5KHBhZGRpbmdEYXRhLCBfdG9Db25zdW1hYmxlQXJyYXkobmV3IEFycmF5KChwYWRkaW5nVGV4ZWxDb3VudCAtIHRleGVsQ291bnQpICogNCkuZmlsbCgwKSkpO1xuICAgICAgfVxuXG4gICAgICB2YXIgdGV4dHVyZSA9IHRoaXMucmVHbC50ZXh0dXJlKHtcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IHdpZHRoLFxuICAgICAgICBkYXRhOiBwYWRkaW5nRGF0YSxcbiAgICAgICAgdHlwZTogJ2Zsb2F0J1xuICAgICAgfSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogdGV4dHVyZUlkKyssXG4gICAgICAgIGRhdGE6IHBhZGRpbmdEYXRhLFxuICAgICAgICBvcmlnaW5hbERhdGFMZW5ndGg6IG9yaWdpbmFsRGF0YUxlbmd0aCxcbiAgICAgICAgdHlwZWRBcnJheUNvbnN0cnVjdG9yOiBpc1R5cGVkQXJyYXkoZGF0YSkgPyBkYXRhLmNvbnN0cnVjdG9yIDogdW5kZWZpbmVkLFxuICAgICAgICB0ZXh0dXJlV2lkdGg6IHdpZHRoLFxuICAgICAgICB0ZXh0dXJlOiB0ZXh0dXJlLFxuICAgICAgICB0ZXhlbENvdW50OiB0ZXhlbENvdW50LFxuICAgICAgICBlbGVtZW50c1BlclRleGVsOiBlbGVtZW50c1BlclRleGVsLFxuICAgICAgICBpc091dHB1dDogbmFtZSA9PT0gdGhpcy5jb250ZXh0Lm91dHB1dC5uYW1lXG4gICAgICB9O1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBSZWdsQ29tcHV0ZU1vZGVsO1xufSgpO1xuXG5leHBvcnQgeyBSZWdsQ29tcHV0ZU1vZGVsIGFzIGRlZmF1bHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJlZ2xDb21wdXRlTW9kZWwuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglComputeModel.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglElements.js":
/*!**************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglElements.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 ReglElements; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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 _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constants */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/constants.js\");\n\n\n\n\n/**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#elements\n */\n\nvar ReglElements = /*#__PURE__*/function () {\n function ReglElements(reGl, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ReglElements);\n\n this.elements = void 0;\n var data = options.data,\n usage = options.usage,\n type = options.type,\n count = options.count;\n this.elements = reGl.elements({\n data: data,\n usage: _constants__WEBPACK_IMPORTED_MODULE_3__[\"usageMap\"][usage || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].STATIC_DRAW],\n type: _constants__WEBPACK_IMPORTED_MODULE_3__[\"dataTypeMap\"][type || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].UNSIGNED_BYTE],\n count: count\n });\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(ReglElements, [{\n key: \"get\",\n value: function get() {\n return this.elements;\n }\n }, {\n key: \"subData\",\n value: function subData(_ref) {\n var data = _ref.data;\n this.elements.subdata(data);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.elements.destroy();\n }\n }]);\n\n return ReglElements;\n}();\n\n\n//# sourceMappingURL=ReglElements.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ2wvUmVnbEVsZW1lbnRzLmpzP2I3MmMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvRTtBQUNOO0FBQ3JCO0FBQ1c7QUFDcEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsbURBQVEsVUFBVSxzREFBRTtBQUNqQyxZQUFZLHNEQUFXLFNBQVMsc0RBQUU7QUFDbEM7QUFDQSxLQUFLO0FBQ0w7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQzs7QUFFa0M7QUFDbkMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ2wvUmVnbEVsZW1lbnRzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IHsgZ2wgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCB7IGRhdGFUeXBlTWFwLCB1c2FnZU1hcCB9IGZyb20gJy4vY29uc3RhbnRzJztcbi8qKlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmVnbC1wcm9qZWN0L3JlZ2wvYmxvYi9naC1wYWdlcy9BUEkubWQjZWxlbWVudHNcbiAqL1xuXG52YXIgUmVnbEVsZW1lbnRzID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gUmVnbEVsZW1lbnRzKHJlR2wsIG9wdGlvbnMpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVnbEVsZW1lbnRzKTtcblxuICAgIHRoaXMuZWxlbWVudHMgPSB2b2lkIDA7XG4gICAgdmFyIGRhdGEgPSBvcHRpb25zLmRhdGEsXG4gICAgICAgIHVzYWdlID0gb3B0aW9ucy51c2FnZSxcbiAgICAgICAgdHlwZSA9IG9wdGlvbnMudHlwZSxcbiAgICAgICAgY291bnQgPSBvcHRpb25zLmNvdW50O1xuICAgIHRoaXMuZWxlbWVudHMgPSByZUdsLmVsZW1lbnRzKHtcbiAgICAgIGRhdGE6IGRhdGEsXG4gICAgICB1c2FnZTogdXNhZ2VNYXBbdXNhZ2UgfHwgZ2wuU1RBVElDX0RSQVddLFxuICAgICAgdHlwZTogZGF0YVR5cGVNYXBbdHlwZSB8fCBnbC5VTlNJR05FRF9CWVRFXSxcbiAgICAgIGNvdW50OiBjb3VudFxuICAgIH0pO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFJlZ2xFbGVtZW50cywgW3tcbiAgICBrZXk6IFwiZ2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzdWJEYXRhXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN1YkRhdGEoX3JlZikge1xuICAgICAgdmFyIGRhdGEgPSBfcmVmLmRhdGE7XG4gICAgICB0aGlzLmVsZW1lbnRzLnN1YmRhdGEoZGF0YSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRlc3Ryb3lcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgIHRoaXMuZWxlbWVudHMuZGVzdHJveSgpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBSZWdsRWxlbWVudHM7XG59KCk7XG5cbmV4cG9ydCB7IFJlZ2xFbGVtZW50cyBhcyBkZWZhdWx0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1SZWdsRWxlbWVudHMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglElements.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglFramebuffer.js":
/*!*****************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglFramebuffer.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 ReglFramebuffer; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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\n/**\n * adaptor for regl.Framebuffer\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#framebuffers\n */\nvar ReglFramebuffer = /*#__PURE__*/function () {\n function ReglFramebuffer(reGl, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ReglFramebuffer);\n\n this.framebuffer = void 0;\n var width = options.width,\n height = options.height,\n color = options.color,\n colors = options.colors,\n depth = options.depth,\n stencil = options.stencil;\n var framebufferOptions = {\n width: width,\n height: height\n };\n\n if (Array.isArray(colors)) {\n framebufferOptions.colors = colors.map(function (c) {\n return c.get();\n });\n }\n\n if (color && typeof color !== 'boolean') {\n framebufferOptions.color = color.get();\n } // TODO: depth & stencil\n\n\n this.framebuffer = reGl.framebuffer(framebufferOptions);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(ReglFramebuffer, [{\n key: \"get\",\n value: function get() {\n return this.framebuffer;\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.framebuffer.destroy();\n }\n }, {\n key: \"resize\",\n value: function resize(_ref) {\n var width = _ref.width,\n height = _ref.height;\n this.framebuffer.resize(width, height);\n }\n }]);\n\n return ReglFramebuffer;\n}();\n\n\n//# sourceMappingURL=ReglFramebuffer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ2wvUmVnbEZyYW1lYnVmZmVyLmpzPzVmN2UiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ047O0FBRTlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQzs7QUFFcUM7QUFDdEMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ2wvUmVnbEZyYW1lYnVmZmVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuXG4vKipcbiAqIGFkYXB0b3IgZm9yIHJlZ2wuRnJhbWVidWZmZXJcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3JlZ2wtcHJvamVjdC9yZWdsL2Jsb2IvZ2gtcGFnZXMvQVBJLm1kI2ZyYW1lYnVmZmVyc1xuICovXG52YXIgUmVnbEZyYW1lYnVmZmVyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gUmVnbEZyYW1lYnVmZmVyKHJlR2wsIG9wdGlvbnMpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVnbEZyYW1lYnVmZmVyKTtcblxuICAgIHRoaXMuZnJhbWVidWZmZXIgPSB2b2lkIDA7XG4gICAgdmFyIHdpZHRoID0gb3B0aW9ucy53aWR0aCxcbiAgICAgICAgaGVpZ2h0ID0gb3B0aW9ucy5oZWlnaHQsXG4gICAgICAgIGNvbG9yID0gb3B0aW9ucy5jb2xvcixcbiAgICAgICAgY29sb3JzID0gb3B0aW9ucy5jb2xvcnMsXG4gICAgICAgIGRlcHRoID0gb3B0aW9ucy5kZXB0aCxcbiAgICAgICAgc3RlbmNpbCA9IG9wdGlvbnMuc3RlbmNpbDtcbiAgICB2YXIgZnJhbWVidWZmZXJPcHRpb25zID0ge1xuICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgaGVpZ2h0OiBoZWlnaHRcbiAgICB9O1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY29sb3JzKSkge1xuICAgICAgZnJhbWVidWZmZXJPcHRpb25zLmNvbG9ycyA9IGNvbG9ycy5tYXAoZnVuY3Rpb24gKGMpIHtcbiAgICAgICAgcmV0dXJuIGMuZ2V0KCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoY29sb3IgJiYgdHlwZW9mIGNvbG9yICE9PSAnYm9vbGVhbicpIHtcbiAgICAgIGZyYW1lYnVmZmVyT3B0aW9ucy5jb2xvciA9IGNvbG9yLmdldCgpO1xuICAgIH0gLy8gVE9ETzogZGVwdGggJiBzdGVuY2lsXG5cblxuICAgIHRoaXMuZnJhbWVidWZmZXIgPSByZUdsLmZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyT3B0aW9ucyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUmVnbEZyYW1lYnVmZmVyLCBbe1xuICAgIGtleTogXCJnZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuZnJhbWVidWZmZXI7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRlc3Ryb3lcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgIHRoaXMuZnJhbWVidWZmZXIuZGVzdHJveSgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZXNpemVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVzaXplKF9yZWYpIHtcbiAgICAgIHZhciB3aWR0aCA9IF9yZWYud2lkdGgsXG4gICAgICAgICAgaGVpZ2h0ID0gX3JlZi5oZWlnaHQ7XG4gICAgICB0aGlzLmZyYW1lYnVmZmVyLnJlc2l6ZSh3aWR0aCwgaGVpZ2h0KTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUmVnbEZyYW1lYnVmZmVyO1xufSgpO1xuXG5leHBvcnQgeyBSZWdsRnJhbWVidWZmZXIgYXMgZGVmYXVsdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UmVnbEZyYW1lYnVmZmVyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglFramebuffer.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglModel.js":
/*!***********************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglModel.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 ReglModel; });\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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@7.16.3@@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@7.16.3@@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 _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _utils_uniform__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/uniform */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/uniform.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./constants */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/constants.js\");\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n\n\n\n\n/**\n * adaptor for regl.DrawCommand\n */\nvar ReglModel = /*#__PURE__*/function () {\n function ReglModel(reGl, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, ReglModel);\n\n this.reGl = void 0;\n this.drawCommand = void 0;\n this.uniforms = {};\n this.reGl = reGl;\n var vs = options.vs,\n fs = options.fs,\n defines = options.defines,\n attributes = options.attributes,\n uniforms = options.uniforms,\n primitive = options.primitive,\n count = options.count,\n elements = options.elements,\n depth = options.depth,\n blend = options.blend,\n stencil = options.stencil,\n cull = options.cull,\n instances = options.instances,\n scissor = options.scissor,\n viewport = options.viewport;\n var reglUniforms = {};\n\n if (uniforms) {\n this.uniforms = Object(_utils_uniform__WEBPACK_IMPORTED_MODULE_5__[\"extractUniforms\"])(uniforms);\n Object.keys(uniforms).forEach(function (uniformName) {\n // use regl prop API\n // @ts-ignore\n reglUniforms[uniformName] = reGl.prop(uniformName);\n });\n }\n\n var reglAttributes = {};\n Object.keys(attributes).forEach(function (name) {\n reglAttributes[name] = attributes[name].get();\n });\n var defineStmts = defines && this.generateDefines(defines) || '';\n var drawParams = {\n attributes: reglAttributes,\n frag: \"#ifdef GL_FRAGMENT_PRECISION_HIGH\\n precision highp float;\\n#else\\n precision mediump float;\\n#endif\\n\".concat(defineStmts, \"\\n\").concat(fs),\n uniforms: reglUniforms,\n vert: \"\\n\".concat(defineStmts, \"\\n\").concat(vs),\n primitive: _constants__WEBPACK_IMPORTED_MODULE_6__[\"primitiveMap\"][primitive === undefined ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].TRIANGLES : primitive]\n };\n\n if (instances) {\n drawParams.instances = instances;\n } // elements 中可能包含 count,此时不应传入\n\n\n if (count) {\n drawParams.count = count;\n }\n\n if (elements) {\n drawParams.elements = elements.get();\n }\n\n if (scissor) {\n drawParams.scissor = scissor;\n }\n\n if (viewport) {\n drawParams.viewport = viewport;\n }\n\n this.initDepthDrawParams({\n depth: depth\n }, drawParams);\n this.initBlendDrawParams({\n blend: blend\n }, drawParams);\n this.initStencilDrawParams({\n stencil: stencil\n }, drawParams);\n this.initCullDrawParams({\n cull: cull\n }, drawParams);\n this.drawCommand = reGl(drawParams);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(ReglModel, [{\n key: \"addUniforms\",\n value: function addUniforms(uniforms) {\n this.uniforms = _objectSpread(_objectSpread({}, this.uniforms), Object(_utils_uniform__WEBPACK_IMPORTED_MODULE_5__[\"extractUniforms\"])(uniforms));\n }\n }, {\n key: \"draw\",\n value: function draw(options) {\n var uniforms = _objectSpread(_objectSpread({}, this.uniforms), Object(_utils_uniform__WEBPACK_IMPORTED_MODULE_5__[\"extractUniforms\"])(options.uniforms || {}));\n\n var reglDrawProps = {};\n Object.keys(uniforms).forEach(function (uniformName) {\n var type = _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default()(uniforms[uniformName]);\n\n if (type === 'boolean' || type === 'number' || Array.isArray(uniforms[uniformName]) || // @ts-ignore\n uniforms[uniformName].BYTES_PER_ELEMENT) {\n reglDrawProps[uniformName] = uniforms[uniformName];\n } else if (type === 'string') {// TODO: image url\n } else {\n reglDrawProps[uniformName] = uniforms[uniformName].get();\n }\n });\n this.drawCommand(reglDrawProps);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {// don't need do anything since we will call `rendererService.cleanup()`\n }\n /**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#depth-buffer\n */\n\n }, {\n key: \"initDepthDrawParams\",\n value: function initDepthDrawParams(_ref, drawParams) {\n var depth = _ref.depth;\n\n if (depth) {\n drawParams.depth = {\n enable: depth.enable === undefined ? true : !!depth.enable,\n mask: depth.mask === undefined ? true : !!depth.mask,\n func: _constants__WEBPACK_IMPORTED_MODULE_6__[\"depthFuncMap\"][depth.func || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].LESS],\n range: depth.range || [0, 1]\n };\n }\n }\n /**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#blending\n */\n\n }, {\n key: \"initBlendDrawParams\",\n value: function initBlendDrawParams(_ref2, drawParams) {\n var blend = _ref2.blend;\n\n if (blend) {\n var enable = blend.enable,\n func = blend.func,\n equation = blend.equation,\n _blend$color = blend.color,\n color = _blend$color === void 0 ? [0, 0, 0, 0] : _blend$color; // @ts-ignore\n\n drawParams.blend = {\n enable: !!enable,\n func: {\n srcRGB: _constants__WEBPACK_IMPORTED_MODULE_6__[\"blendFuncMap\"][func && func.srcRGB || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].SRC_ALPHA],\n srcAlpha: _constants__WEBPACK_IMPORTED_MODULE_6__[\"blendFuncMap\"][func && func.srcAlpha || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].SRC_ALPHA],\n dstRGB: _constants__WEBPACK_IMPORTED_MODULE_6__[\"blendFuncMap\"][func && func.dstRGB || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].ONE_MINUS_SRC_ALPHA],\n dstAlpha: _constants__WEBPACK_IMPORTED_MODULE_6__[\"blendFuncMap\"][func && func.dstAlpha || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].ONE_MINUS_SRC_ALPHA]\n },\n equation: {\n rgb: _constants__WEBPACK_IMPORTED_MODULE_6__[\"blendEquationMap\"][equation && equation.rgb || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].FUNC_ADD],\n alpha: _constants__WEBPACK_IMPORTED_MODULE_6__[\"blendEquationMap\"][equation && equation.alpha || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].FUNC_ADD]\n },\n color: color\n };\n }\n }\n /**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#stencil\n */\n\n }, {\n key: \"initStencilDrawParams\",\n value: function initStencilDrawParams(_ref3, drawParams) {\n var stencil = _ref3.stencil;\n\n if (stencil) {\n var enable = stencil.enable,\n _stencil$mask = stencil.mask,\n mask = _stencil$mask === void 0 ? -1 : _stencil$mask,\n _stencil$func = stencil.func,\n func = _stencil$func === void 0 ? {\n cmp: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].ALWAYS,\n ref: 0,\n mask: -1\n } : _stencil$func,\n _stencil$opFront = stencil.opFront,\n opFront = _stencil$opFront === void 0 ? {\n fail: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].KEEP,\n zfail: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].KEEP,\n zpass: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].KEEP\n } : _stencil$opFront,\n _stencil$opBack = stencil.opBack,\n opBack = _stencil$opBack === void 0 ? {\n fail: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].KEEP,\n zfail: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].KEEP,\n zpass: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].KEEP\n } : _stencil$opBack;\n drawParams.stencil = {\n enable: !!enable,\n mask: mask,\n func: _objectSpread(_objectSpread({}, func), {}, {\n cmp: _constants__WEBPACK_IMPORTED_MODULE_6__[\"stencilFuncMap\"][func.cmp]\n }),\n opFront: {\n fail: _constants__WEBPACK_IMPORTED_MODULE_6__[\"stencilOpMap\"][opFront.fail],\n zfail: _constants__WEBPACK_IMPORTED_MODULE_6__[\"stencilOpMap\"][opFront.zfail],\n zpass: _constants__WEBPACK_IMPORTED_MODULE_6__[\"stencilOpMap\"][opFront.zpass]\n },\n opBack: {\n fail: _constants__WEBPACK_IMPORTED_MODULE_6__[\"stencilOpMap\"][opBack.fail],\n zfail: _constants__WEBPACK_IMPORTED_MODULE_6__[\"stencilOpMap\"][opBack.zfail],\n zpass: _constants__WEBPACK_IMPORTED_MODULE_6__[\"stencilOpMap\"][opBack.zpass]\n }\n };\n }\n }\n /**\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#culling\n */\n\n }, {\n key: \"initCullDrawParams\",\n value: function initCullDrawParams(_ref4, drawParams) {\n var cull = _ref4.cull;\n\n if (cull) {\n var enable = cull.enable,\n _cull$face = cull.face,\n face = _cull$face === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].BACK : _cull$face;\n drawParams.cull = {\n enable: !!enable,\n face: _constants__WEBPACK_IMPORTED_MODULE_6__[\"cullFaceMap\"][face]\n };\n }\n }\n }, {\n key: \"generateDefines\",\n value: function generateDefines(defines) {\n return Object.keys(defines).map(function (name) {\n return \"#define \".concat(name, \" \").concat(Number(defines[name]));\n }).join('\\n');\n }\n }]);\n\n return ReglModel;\n}();\n\n\n//# sourceMappingURL=ReglModel.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ2wvUmVnbE1vZGVsLmpzP2IzMWEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0Q7QUFDZ0I7QUFDQTtBQUNOOztBQUU5RCwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSx1REFBdUQsQ0FBQyw0RUFBZSwyQkFBMkIsRUFBRSxFQUFFLEVBQUUsNkNBQTZDLDJFQUEyRSxFQUFFLE9BQU8saURBQWlELGtGQUFrRixFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWU7O0FBRTNlO0FBQ1U7QUFDaUY7O0FBRXBJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esc0JBQXNCLHNFQUFlO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSx3RUFBd0UsbUNBQW1DO0FBQzNHO0FBQ0E7QUFDQSxpQkFBaUIsdURBQVksMkJBQTJCLHNEQUFFO0FBQzFEOztBQUVBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0Esb0RBQW9ELGtCQUFrQixzRUFBZTtBQUNyRjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsbURBQW1ELGtCQUFrQixzRUFBZSx1QkFBdUI7O0FBRTNHO0FBQ0E7QUFDQSxtQkFBbUIsb0VBQU87O0FBRTFCO0FBQ0E7QUFDQTtBQUNBLFNBQVMsOEJBQThCO0FBQ3ZDLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQix1REFBWSxlQUFlLHNEQUFFO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBFQUEwRTs7QUFFMUU7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHVEQUFZLHdCQUF3QixzREFBRTtBQUMxRCxzQkFBc0IsdURBQVksMEJBQTBCLHNEQUFFO0FBQzlELG9CQUFvQix1REFBWSx3QkFBd0Isc0RBQUU7QUFDMUQsc0JBQXNCLHVEQUFZLDBCQUEwQixzREFBRTtBQUM5RCxXQUFXO0FBQ1g7QUFDQSxpQkFBaUIsMkRBQWdCLDZCQUE2QixzREFBRTtBQUNoRSxtQkFBbUIsMkRBQWdCLCtCQUErQixzREFBRTtBQUNwRSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFFO0FBQ2pCO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLGdCQUFnQixzREFBRTtBQUNsQixpQkFBaUIsc0RBQUU7QUFDbkIsaUJBQWlCLHNEQUFFO0FBQ25CLFNBQVM7QUFDVDtBQUNBO0FBQ0EsZ0JBQWdCLHNEQUFFO0FBQ2xCLGlCQUFpQixzREFBRTtBQUNuQixpQkFBaUIsc0RBQUU7QUFDbkIsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QyxXQUFXO0FBQ3pELGlCQUFpQix5REFBYztBQUMvQixXQUFXO0FBQ1g7QUFDQSxrQkFBa0IsdURBQVk7QUFDOUIsbUJBQW1CLHVEQUFZO0FBQy9CLG1CQUFtQix1REFBWTtBQUMvQixXQUFXO0FBQ1g7QUFDQSxrQkFBa0IsdURBQVk7QUFDOUIsbUJBQW1CLHVEQUFZO0FBQy9CLG1CQUFtQix1REFBWTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQyxzREFBRTtBQUM3QztBQUNBO0FBQ0EsZ0JBQWdCLHNEQUFXO0FBQzNCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDOztBQUUrQjtBQUNoQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtZW5naW5lQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWVuZ2luZS9lcy93ZWJnbC9SZWdsTW9kZWwuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2ZcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmltcG9ydCB7IGdsIH0gZnJvbSAnQGFudHYvZy13ZWJncHUtY29yZSc7XG5pbXBvcnQgeyBleHRyYWN0VW5pZm9ybXMgfSBmcm9tICcuLi91dGlscy91bmlmb3JtJztcbmltcG9ydCB7IGJsZW5kRXF1YXRpb25NYXAsIGJsZW5kRnVuY01hcCwgY3VsbEZhY2VNYXAsIGRlcHRoRnVuY01hcCwgcHJpbWl0aXZlTWFwLCBzdGVuY2lsRnVuY01hcCwgc3RlbmNpbE9wTWFwIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG4vKipcbiAqIGFkYXB0b3IgZm9yIHJlZ2wuRHJhd0NvbW1hbmRcbiAqL1xudmFyIFJlZ2xNb2RlbCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFJlZ2xNb2RlbChyZUdsLCBvcHRpb25zKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJlZ2xNb2RlbCk7XG5cbiAgICB0aGlzLnJlR2wgPSB2b2lkIDA7XG4gICAgdGhpcy5kcmF3Q29tbWFuZCA9IHZvaWQgMDtcbiAgICB0aGlzLnVuaWZvcm1zID0ge307XG4gICAgdGhpcy5yZUdsID0gcmVHbDtcbiAgICB2YXIgdnMgPSBvcHRpb25zLnZzLFxuICAgICAgICBmcyA9IG9wdGlvbnMuZnMsXG4gICAgICAgIGRlZmluZXMgPSBvcHRpb25zLmRlZmluZXMsXG4gICAgICAgIGF0dHJpYnV0ZXMgPSBvcHRpb25zLmF0dHJpYnV0ZXMsXG4gICAgICAgIHVuaWZvcm1zID0gb3B0aW9ucy51bmlmb3JtcyxcbiAgICAgICAgcHJpbWl0aXZlID0gb3B0aW9ucy5wcmltaXRpdmUsXG4gICAgICAgIGNvdW50ID0gb3B0aW9ucy5jb3VudCxcbiAgICAgICAgZWxlbWVudHMgPSBvcHRpb25zLmVsZW1lbnRzLFxuICAgICAgICBkZXB0aCA9IG9wdGlvbnMuZGVwdGgsXG4gICAgICAgIGJsZW5kID0gb3B0aW9ucy5ibGVuZCxcbiAgICAgICAgc3RlbmNpbCA9IG9wdGlvbnMuc3RlbmNpbCxcbiAgICAgICAgY3VsbCA9IG9wdGlvbnMuY3VsbCxcbiAgICAgICAgaW5zdGFuY2VzID0gb3B0aW9ucy5pbnN0YW5jZXMsXG4gICAgICAgIHNjaXNzb3IgPSBvcHRpb25zLnNjaXNzb3IsXG4gICAgICAgIHZpZXdwb3J0ID0gb3B0aW9ucy52aWV3cG9ydDtcbiAgICB2YXIgcmVnbFVuaWZvcm1zID0ge307XG5cbiAgICBpZiAodW5pZm9ybXMpIHtcbiAgICAgIHRoaXMudW5pZm9ybXMgPSBleHRyYWN0VW5pZm9ybXModW5pZm9ybXMpO1xuICAgICAgT2JqZWN0LmtleXModW5pZm9ybXMpLmZvckVhY2goZnVuY3Rpb24gKHVuaWZvcm1OYW1lKSB7XG4gICAgICAgIC8vIHVzZSByZWdsIHByb3AgQVBJXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcmVnbFVuaWZvcm1zW3VuaWZvcm1OYW1lXSA9IHJlR2wucHJvcCh1bmlmb3JtTmFtZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB2YXIgcmVnbEF0dHJpYnV0ZXMgPSB7fTtcbiAgICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICByZWdsQXR0cmlidXRlc1tuYW1lXSA9IGF0dHJpYnV0ZXNbbmFtZV0uZ2V0KCk7XG4gICAgfSk7XG4gICAgdmFyIGRlZmluZVN0bXRzID0gZGVmaW5lcyAmJiB0aGlzLmdlbmVyYXRlRGVmaW5lcyhkZWZpbmVzKSB8fCAnJztcbiAgICB2YXIgZHJhd1BhcmFtcyA9IHtcbiAgICAgIGF0dHJpYnV0ZXM6IHJlZ2xBdHRyaWJ1dGVzLFxuICAgICAgZnJhZzogXCIjaWZkZWYgR0xfRlJBR01FTlRfUFJFQ0lTSU9OX0hJR0hcXG4gIHByZWNpc2lvbiBoaWdocCBmbG9hdDtcXG4jZWxzZVxcbiAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XFxuI2VuZGlmXFxuXCIuY29uY2F0KGRlZmluZVN0bXRzLCBcIlxcblwiKS5jb25jYXQoZnMpLFxuICAgICAgdW5pZm9ybXM6IHJlZ2xVbmlmb3JtcyxcbiAgICAgIHZlcnQ6IFwiXFxuXCIuY29uY2F0KGRlZmluZVN0bXRzLCBcIlxcblwiKS5jb25jYXQodnMpLFxuICAgICAgcHJpbWl0aXZlOiBwcmltaXRpdmVNYXBbcHJpbWl0aXZlID09PSB1bmRlZmluZWQgPyBnbC5UUklBTkdMRVMgOiBwcmltaXRpdmVdXG4gICAgfTtcblxuICAgIGlmIChpbnN0YW5jZXMpIHtcbiAgICAgIGRyYXdQYXJhbXMuaW5zdGFuY2VzID0gaW5zdGFuY2VzO1xuICAgIH0gLy8gZWxlbWVudHMg5Lit5Y+v6IO95YyF5ZCrIGNvdW5077yM5q2k5pe25LiN5bqU5Lyg5YWlXG5cblxuICAgIGlmIChjb3VudCkge1xuICAgICAgZHJhd1BhcmFtcy5jb3VudCA9IGNvdW50O1xuICAgIH1cblxuICAgIGlmIChlbGVtZW50cykge1xuICAgICAgZHJhd1BhcmFtcy5lbGVtZW50cyA9IGVsZW1lbnRzLmdldCgpO1xuICAgIH1cblxuICAgIGlmIChzY2lzc29yKSB7XG4gICAgICBkcmF3UGFyYW1zLnNjaXNzb3IgPSBzY2lzc29yO1xuICAgIH1cblxuICAgIGlmICh2aWV3cG9ydCkge1xuICAgICAgZHJhd1BhcmFtcy52aWV3cG9ydCA9IHZpZXdwb3J0O1xuICAgIH1cblxuICAgIHRoaXMuaW5pdERlcHRoRHJhd1BhcmFtcyh7XG4gICAgICBkZXB0aDogZGVwdGhcbiAgICB9LCBkcmF3UGFyYW1zKTtcbiAgICB0aGlzLmluaXRCbGVuZERyYXdQYXJhbXMoe1xuICAgICAgYmxlbmQ6IGJsZW5kXG4gICAgfSwgZHJhd1BhcmFtcyk7XG4gICAgdGhpcy5pbml0U3RlbmNpbERyYXdQYXJhbXMoe1xuICAgICAgc3RlbmNpbDogc3RlbmNpbFxuICAgIH0sIGRyYXdQYXJhbXMpO1xuICAgIHRoaXMuaW5pdEN1bGxEcmF3UGFyYW1zKHtcbiAgICAgIGN1bGw6IGN1bGxcbiAgICB9LCBkcmF3UGFyYW1zKTtcbiAgICB0aGlzLmRyYXdDb21tYW5kID0gcmVHbChkcmF3UGFyYW1zKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhSZWdsTW9kZWwsIFt7XG4gICAga2V5OiBcImFkZFVuaWZvcm1zXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGFkZFVuaWZvcm1zKHVuaWZvcm1zKSB7XG4gICAgICB0aGlzLnVuaWZvcm1zID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCB0aGlzLnVuaWZvcm1zKSwgZXh0cmFjdFVuaWZvcm1zKHVuaWZvcm1zKSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRyYXdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZHJhdyhvcHRpb25zKSB7XG4gICAgICB2YXIgdW5pZm9ybXMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHRoaXMudW5pZm9ybXMpLCBleHRyYWN0VW5pZm9ybXMob3B0aW9ucy51bmlmb3JtcyB8fCB7fSkpO1xuXG4gICAgICB2YXIgcmVnbERyYXdQcm9wcyA9IHt9O1xuICAgICAgT2JqZWN0LmtleXModW5pZm9ybXMpLmZvckVhY2goZnVuY3Rpb24gKHVuaWZvcm1OYW1lKSB7XG4gICAgICAgIHZhciB0eXBlID0gX3R5cGVvZih1bmlmb3Jtc1t1bmlmb3JtTmFtZV0pO1xuXG4gICAgICAgIGlmICh0eXBlID09PSAnYm9vbGVhbicgfHwgdHlwZSA9PT0gJ251bWJlcicgfHwgQXJyYXkuaXNBcnJheSh1bmlmb3Jtc1t1bmlmb3JtTmFtZV0pIHx8IC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdW5pZm9ybXNbdW5pZm9ybU5hbWVdLkJZVEVTX1BFUl9FTEVNRU5UKSB7XG4gICAgICAgICAgcmVnbERyYXdQcm9wc1t1bmlmb3JtTmFtZV0gPSB1bmlmb3Jtc1t1bmlmb3JtTmFtZV07XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3N0cmluZycpIHsvLyBUT0RPOiBpbWFnZSB1cmxcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWdsRHJhd1Byb3BzW3VuaWZvcm1OYW1lXSA9IHVuaWZvcm1zW3VuaWZvcm1OYW1lXS5nZXQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLmRyYXdDb21tYW5kKHJlZ2xEcmF3UHJvcHMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkZXN0cm95XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7Ly8gZG9uJ3QgbmVlZCBkbyBhbnl0aGluZyBzaW5jZSB3ZSB3aWxsIGNhbGwgYHJlbmRlcmVyU2VydmljZS5jbGVhbnVwKClgXG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3JlZ2wtcHJvamVjdC9yZWdsL2Jsb2IvZ2gtcGFnZXMvQVBJLm1kI2RlcHRoLWJ1ZmZlclxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiaW5pdERlcHRoRHJhd1BhcmFtc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbml0RGVwdGhEcmF3UGFyYW1zKF9yZWYsIGRyYXdQYXJhbXMpIHtcbiAgICAgIHZhciBkZXB0aCA9IF9yZWYuZGVwdGg7XG5cbiAgICAgIGlmIChkZXB0aCkge1xuICAgICAgICBkcmF3UGFyYW1zLmRlcHRoID0ge1xuICAgICAgICAgIGVuYWJsZTogZGVwdGguZW5hYmxlID09PSB1bmRlZmluZWQgPyB0cnVlIDogISFkZXB0aC5lbmFibGUsXG4gICAgICAgICAgbWFzazogZGVwdGgubWFzayA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6ICEhZGVwdGgubWFzayxcbiAgICAgICAgICBmdW5jOiBkZXB0aEZ1bmNNYXBbZGVwdGguZnVuYyB8fCBnbC5MRVNTXSxcbiAgICAgICAgICByYW5nZTogZGVwdGgucmFuZ2UgfHwgWzAsIDFdXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3JlZ2wtcHJvamVjdC9yZWdsL2Jsb2IvZ2gtcGFnZXMvQVBJLm1kI2JsZW5kaW5nXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJpbml0QmxlbmREcmF3UGFyYW1zXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGluaXRCbGVuZERyYXdQYXJhbXMoX3JlZjIsIGRyYXdQYXJhbXMpIHtcbiAgICAgIHZhciBibGVuZCA9IF9yZWYyLmJsZW5kO1xuXG4gICAgICBpZiAoYmxlbmQpIHtcbiAgICAgICAgdmFyIGVuYWJsZSA9IGJsZW5kLmVuYWJsZSxcbiAgICAgICAgICAgIGZ1bmMgPSBibGVuZC5mdW5jLFxuICAgICAgICAgICAgZXF1YXRpb24gPSBibGVuZC5lcXVhdGlvbixcbiAgICAgICAgICAgIF9ibGVuZCRjb2xvciA9IGJsZW5kLmNvbG9yLFxuICAgICAgICAgICAgY29sb3IgPSBfYmxlbmQkY29sb3IgPT09IHZvaWQgMCA/IFswLCAwLCAwLCAwXSA6IF9ibGVuZCRjb2xvcjsgLy8gQHRzLWlnbm9yZVxuXG4gICAgICAgIGRyYXdQYXJhbXMuYmxlbmQgPSB7XG4gICAgICAgICAgZW5hYmxlOiAhIWVuYWJsZSxcbiAgICAgICAgICBmdW5jOiB7XG4gICAgICAgICAgICBzcmNSR0I6IGJsZW5kRnVuY01hcFtmdW5jICYmIGZ1bmMuc3JjUkdCIHx8IGdsLlNSQ19BTFBIQV0sXG4gICAgICAgICAgICBzcmNBbHBoYTogYmxlbmRGdW5jTWFwW2Z1bmMgJiYgZnVuYy5zcmNBbHBoYSB8fCBnbC5TUkNfQUxQSEFdLFxuICAgICAgICAgICAgZHN0UkdCOiBibGVuZEZ1bmNNYXBbZnVuYyAmJiBmdW5jLmRzdFJHQiB8fCBnbC5PTkVfTUlOVVNfU1JDX0FMUEhBXSxcbiAgICAgICAgICAgIGRzdEFscGhhOiBibGVuZEZ1bmNNYXBbZnVuYyAmJiBmdW5jLmRzdEFscGhhIHx8IGdsLk9ORV9NSU5VU19TUkNfQUxQSEFdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcXVhdGlvbjoge1xuICAgICAgICAgICAgcmdiOiBibGVuZEVxdWF0aW9uTWFwW2VxdWF0aW9uICYmIGVxdWF0aW9uLnJnYiB8fCBnbC5GVU5DX0FERF0sXG4gICAgICAgICAgICBhbHBoYTogYmxlbmRFcXVhdGlvbk1hcFtlcXVhdGlvbiAmJiBlcXVhdGlvbi5hbHBoYSB8fCBnbC5GVU5DX0FERF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvbG9yOiBjb2xvclxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWdsLXByb2plY3QvcmVnbC9ibG9iL2doLXBhZ2VzL0FQSS5tZCNzdGVuY2lsXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJpbml0U3RlbmNpbERyYXdQYXJhbXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW5pdFN0ZW5jaWxEcmF3UGFyYW1zKF9yZWYzLCBkcmF3UGFyYW1zKSB7XG4gICAgICB2YXIgc3RlbmNpbCA9IF9yZWYzLnN0ZW5jaWw7XG5cbiAgICAgIGlmIChzdGVuY2lsKSB7XG4gICAgICAgIHZhciBlbmFibGUgPSBzdGVuY2lsLmVuYWJsZSxcbiAgICAgICAgICAgIF9zdGVuY2lsJG1hc2sgPSBzdGVuY2lsLm1hc2ssXG4gICAgICAgICAgICBtYXNrID0gX3N0ZW5jaWwkbWFzayA9PT0gdm9pZCAwID8gLTEgOiBfc3RlbmNpbCRtYXNrLFxuICAgICAgICAgICAgX3N0ZW5jaWwkZnVuYyA9IHN0ZW5jaWwuZnVuYyxcbiAgICAgICAgICAgIGZ1bmMgPSBfc3RlbmNpbCRmdW5jID09PSB2b2lkIDAgPyB7XG4gICAgICAgICAgY21wOiBnbC5BTFdBWVMsXG4gICAgICAgICAgcmVmOiAwLFxuICAgICAgICAgIG1hc2s6IC0xXG4gICAgICAgIH0gOiBfc3RlbmNpbCRmdW5jLFxuICAgICAgICAgICAgX3N0ZW5jaWwkb3BGcm9udCA9IHN0ZW5jaWwub3BGcm9udCxcbiAgICAgICAgICAgIG9wRnJvbnQgPSBfc3RlbmNpbCRvcEZyb250ID09PSB2b2lkIDAgPyB7XG4gICAgICAgICAgZmFpbDogZ2wuS0VFUCxcbiAgICAgICAgICB6ZmFpbDogZ2wuS0VFUCxcbiAgICAgICAgICB6cGFzczogZ2wuS0VFUFxuICAgICAgICB9IDogX3N0ZW5jaWwkb3BGcm9udCxcbiAgICAgICAgICAgIF9zdGVuY2lsJG9wQmFjayA9IHN0ZW5jaWwub3BCYWNrLFxuICAgICAgICAgICAgb3BCYWNrID0gX3N0ZW5jaWwkb3BCYWNrID09PSB2b2lkIDAgPyB7XG4gICAgICAgICAgZmFpbDogZ2wuS0VFUCxcbiAgICAgICAgICB6ZmFpbDogZ2wuS0VFUCxcbiAgICAgICAgICB6cGFzczogZ2wuS0VFUFxuICAgICAgICB9IDogX3N0ZW5jaWwkb3BCYWNrO1xuICAgICAgICBkcmF3UGFyYW1zLnN0ZW5jaWwgPSB7XG4gICAgICAgICAgZW5hYmxlOiAhIWVuYWJsZSxcbiAgICAgICAgICBtYXNrOiBtYXNrLFxuICAgICAgICAgIGZ1bmM6IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZnVuYyksIHt9LCB7XG4gICAgICAgICAgICBjbXA6IHN0ZW5jaWxGdW5jTWFwW2Z1bmMuY21wXVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIG9wRnJvbnQ6IHtcbiAgICAgICAgICAgIGZhaWw6IHN0ZW5jaWxPcE1hcFtvcEZyb250LmZhaWxdLFxuICAgICAgICAgICAgemZhaWw6IHN0ZW5jaWxPcE1hcFtvcEZyb250LnpmYWlsXSxcbiAgICAgICAgICAgIHpwYXNzOiBzdGVuY2lsT3BNYXBbb3BGcm9udC56cGFzc11cbiAgICAgICAgICB9LFxuICAgICAgICAgIG9wQmFjazoge1xuICAgICAgICAgICAgZmFpbDogc3RlbmNpbE9wTWFwW29wQmFjay5mYWlsXSxcbiAgICAgICAgICAgIHpmYWlsOiBzdGVuY2lsT3BNYXBbb3BCYWNrLnpmYWlsXSxcbiAgICAgICAgICAgIHpwYXNzOiBzdGVuY2lsT3BNYXBbb3BCYWNrLnpwYXNzXVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmVnbC1wcm9qZWN0L3JlZ2wvYmxvYi9naC1wYWdlcy9BUEkubWQjY3VsbGluZ1xuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiaW5pdEN1bGxEcmF3UGFyYW1zXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGluaXRDdWxsRHJhd1BhcmFtcyhfcmVmNCwgZHJhd1BhcmFtcykge1xuICAgICAgdmFyIGN1bGwgPSBfcmVmNC5jdWxsO1xuXG4gICAgICBpZiAoY3VsbCkge1xuICAgICAgICB2YXIgZW5hYmxlID0gY3VsbC5lbmFibGUsXG4gICAgICAgICAgICBfY3VsbCRmYWNlID0gY3VsbC5mYWNlLFxuICAgICAgICAgICAgZmFjZSA9IF9jdWxsJGZhY2UgPT09IHZvaWQgMCA/IGdsLkJBQ0sgOiBfY3VsbCRmYWNlO1xuICAgICAgICBkcmF3UGFyYW1zLmN1bGwgPSB7XG4gICAgICAgICAgZW5hYmxlOiAhIWVuYWJsZSxcbiAgICAgICAgICBmYWNlOiBjdWxsRmFjZU1hcFtmYWNlXVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZW5lcmF0ZURlZmluZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2VuZXJhdGVEZWZpbmVzKGRlZmluZXMpIHtcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhkZWZpbmVzKS5tYXAoZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIFwiI2RlZmluZSBcIi5jb25jYXQobmFtZSwgXCIgXCIpLmNvbmNhdChOdW1iZXIoZGVmaW5lc1tuYW1lXSkpO1xuICAgICAgfSkuam9pbignXFxuJyk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFJlZ2xNb2RlbDtcbn0oKTtcblxuZXhwb3J0IHsgUmVnbE1vZGVsIGFzIGRlZmF1bHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJlZ2xNb2RlbC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglModel.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglTexture2D.js":
/*!***************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglTexture2D.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 ReglTexture2D; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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 _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constants */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/constants.js\");\n\n\n\n\n/**\n * adaptor for regl.Buffer\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#buffers\n */\n\nvar ReglTexture2D = /*#__PURE__*/function () {\n function ReglTexture2D(reGl, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ReglTexture2D);\n\n this.texture = void 0;\n this.width = void 0;\n this.height = void 0;\n var data = options.data,\n _options$type = options.type,\n type = _options$type === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].UNSIGNED_BYTE : _options$type,\n width = options.width,\n height = options.height,\n _options$flipY = options.flipY,\n flipY = _options$flipY === void 0 ? false : _options$flipY,\n _options$format = options.format,\n format = _options$format === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].RGBA : _options$format,\n _options$mipmap = options.mipmap,\n mipmap = _options$mipmap === void 0 ? false : _options$mipmap,\n _options$wrapS = options.wrapS,\n wrapS = _options$wrapS === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].CLAMP_TO_EDGE : _options$wrapS,\n _options$wrapT = options.wrapT,\n wrapT = _options$wrapT === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].CLAMP_TO_EDGE : _options$wrapT,\n _options$aniso = options.aniso,\n aniso = _options$aniso === void 0 ? 0 : _options$aniso,\n _options$alignment = options.alignment,\n alignment = _options$alignment === void 0 ? 1 : _options$alignment,\n _options$premultiplyA = options.premultiplyAlpha,\n premultiplyAlpha = _options$premultiplyA === void 0 ? false : _options$premultiplyA,\n _options$mag = options.mag,\n mag = _options$mag === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].NEAREST : _options$mag,\n _options$min = options.min,\n min = _options$min === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].NEAREST : _options$min,\n _options$colorSpace = options.colorSpace,\n colorSpace = _options$colorSpace === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].BROWSER_DEFAULT_WEBGL : _options$colorSpace;\n this.width = width;\n this.height = height;\n var textureOptions = {\n width: width,\n height: height,\n // @ts-ignore\n type: _constants__WEBPACK_IMPORTED_MODULE_3__[\"dataTypeMap\"][type],\n format: _constants__WEBPACK_IMPORTED_MODULE_3__[\"formatMap\"][format],\n wrapS: _constants__WEBPACK_IMPORTED_MODULE_3__[\"wrapModeMap\"][wrapS],\n wrapT: _constants__WEBPACK_IMPORTED_MODULE_3__[\"wrapModeMap\"][wrapT],\n // @ts-ignore\n mag: _constants__WEBPACK_IMPORTED_MODULE_3__[\"filterMap\"][mag],\n min: _constants__WEBPACK_IMPORTED_MODULE_3__[\"filterMap\"][min],\n alignment: alignment,\n flipY: flipY,\n colorSpace: _constants__WEBPACK_IMPORTED_MODULE_3__[\"colorSpaceMap\"][colorSpace],\n premultiplyAlpha: premultiplyAlpha,\n aniso: aniso\n };\n\n if (data) {\n textureOptions.data = data;\n }\n\n if (typeof mipmap === 'number') {\n textureOptions.mipmap = _constants__WEBPACK_IMPORTED_MODULE_3__[\"mipmapMap\"][mipmap];\n } else if (typeof mipmap === 'boolean') {\n textureOptions.mipmap = mipmap;\n }\n\n this.texture = reGl.texture(textureOptions);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(ReglTexture2D, [{\n key: \"get\",\n value: function get() {\n return this.texture;\n }\n }, {\n key: \"update\",\n value: function update() {\n // @ts-ignore\n this.texture._texture.bind();\n }\n }, {\n key: \"resize\",\n value: function resize(_ref) {\n var width = _ref.width,\n height = _ref.height;\n this.texture.resize(width, height);\n this.width = width;\n this.height = height;\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.texture.destroy();\n }\n }]);\n\n return ReglTexture2D;\n}();\n\n\n//# sourceMappingURL=ReglTexture2D.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ2wvUmVnbFRleHR1cmUyRC5qcz85NjM3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjtBQUNyQjtBQUM4RDtBQUN2RztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQyxzREFBRTtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDLHNEQUFFO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QyxzREFBRTtBQUM5QztBQUNBLDRDQUE0QyxzREFBRTtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QyxzREFBRTtBQUMxQztBQUNBLHdDQUF3QyxzREFBRTtBQUMxQztBQUNBLHNEQUFzRCxzREFBRTtBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHNEQUFXO0FBQ3ZCLGNBQWMsb0RBQVM7QUFDdkIsYUFBYSxzREFBVztBQUN4QixhQUFhLHNEQUFXO0FBQ3hCO0FBQ0EsV0FBVyxvREFBUztBQUNwQixXQUFXLG9EQUFTO0FBQ3BCO0FBQ0E7QUFDQSxrQkFBa0Isd0RBQWE7QUFDL0I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhCQUE4QixvREFBUztBQUN2QyxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQzs7QUFFbUM7QUFDcEMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ2wvUmVnbFRleHR1cmUyRC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCB7IGdsIH0gZnJvbSAnQGFudHYvZy13ZWJncHUtY29yZSc7XG5pbXBvcnQgeyBjb2xvclNwYWNlTWFwLCBkYXRhVHlwZU1hcCwgZmlsdGVyTWFwLCBmb3JtYXRNYXAsIG1pcG1hcE1hcCwgd3JhcE1vZGVNYXAgfSBmcm9tICcuL2NvbnN0YW50cyc7XG4vKipcbiAqIGFkYXB0b3IgZm9yIHJlZ2wuQnVmZmVyXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWdsLXByb2plY3QvcmVnbC9ibG9iL2doLXBhZ2VzL0FQSS5tZCNidWZmZXJzXG4gKi9cblxudmFyIFJlZ2xUZXh0dXJlMkQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBSZWdsVGV4dHVyZTJEKHJlR2wsIG9wdGlvbnMpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVnbFRleHR1cmUyRCk7XG5cbiAgICB0aGlzLnRleHR1cmUgPSB2b2lkIDA7XG4gICAgdGhpcy53aWR0aCA9IHZvaWQgMDtcbiAgICB0aGlzLmhlaWdodCA9IHZvaWQgMDtcbiAgICB2YXIgZGF0YSA9IG9wdGlvbnMuZGF0YSxcbiAgICAgICAgX29wdGlvbnMkdHlwZSA9IG9wdGlvbnMudHlwZSxcbiAgICAgICAgdHlwZSA9IF9vcHRpb25zJHR5cGUgPT09IHZvaWQgMCA/IGdsLlVOU0lHTkVEX0JZVEUgOiBfb3B0aW9ucyR0eXBlLFxuICAgICAgICB3aWR0aCA9IG9wdGlvbnMud2lkdGgsXG4gICAgICAgIGhlaWdodCA9IG9wdGlvbnMuaGVpZ2h0LFxuICAgICAgICBfb3B0aW9ucyRmbGlwWSA9IG9wdGlvbnMuZmxpcFksXG4gICAgICAgIGZsaXBZID0gX29wdGlvbnMkZmxpcFkgPT09IHZvaWQgMCA/IGZhbHNlIDogX29wdGlvbnMkZmxpcFksXG4gICAgICAgIF9vcHRpb25zJGZvcm1hdCA9IG9wdGlvbnMuZm9ybWF0LFxuICAgICAgICBmb3JtYXQgPSBfb3B0aW9ucyRmb3JtYXQgPT09IHZvaWQgMCA/IGdsLlJHQkEgOiBfb3B0aW9ucyRmb3JtYXQsXG4gICAgICAgIF9vcHRpb25zJG1pcG1hcCA9IG9wdGlvbnMubWlwbWFwLFxuICAgICAgICBtaXBtYXAgPSBfb3B0aW9ucyRtaXBtYXAgPT09IHZvaWQgMCA/IGZhbHNlIDogX29wdGlvbnMkbWlwbWFwLFxuICAgICAgICBfb3B0aW9ucyR3cmFwUyA9IG9wdGlvbnMud3JhcFMsXG4gICAgICAgIHdyYXBTID0gX29wdGlvbnMkd3JhcFMgPT09IHZvaWQgMCA/IGdsLkNMQU1QX1RPX0VER0UgOiBfb3B0aW9ucyR3cmFwUyxcbiAgICAgICAgX29wdGlvbnMkd3JhcFQgPSBvcHRpb25zLndyYXBULFxuICAgICAgICB3cmFwVCA9IF9vcHRpb25zJHdyYXBUID09PSB2b2lkIDAgPyBnbC5DTEFNUF9UT19FREdFIDogX29wdGlvbnMkd3JhcFQsXG4gICAgICAgIF9vcHRpb25zJGFuaXNvID0gb3B0aW9ucy5hbmlzbyxcbiAgICAgICAgYW5pc28gPSBfb3B0aW9ucyRhbmlzbyA9PT0gdm9pZCAwID8gMCA6IF9vcHRpb25zJGFuaXNvLFxuICAgICAgICBfb3B0aW9ucyRhbGlnbm1lbnQgPSBvcHRpb25zLmFsaWdubWVudCxcbiAgICAgICAgYWxpZ25tZW50ID0gX29wdGlvbnMkYWxpZ25tZW50ID09PSB2b2lkIDAgPyAxIDogX29wdGlvbnMkYWxpZ25tZW50LFxuICAgICAgICBfb3B0aW9ucyRwcmVtdWx0aXBseUEgPSBvcHRpb25zLnByZW11bHRpcGx5QWxwaGEsXG4gICAgICAgIHByZW11bHRpcGx5QWxwaGEgPSBfb3B0aW9ucyRwcmVtdWx0aXBseUEgPT09IHZvaWQgMCA/IGZhbHNlIDogX29wdGlvbnMkcHJlbXVsdGlwbHlBLFxuICAgICAgICBfb3B0aW9ucyRtYWcgPSBvcHRpb25zLm1hZyxcbiAgICAgICAgbWFnID0gX29wdGlvbnMkbWFnID09PSB2b2lkIDAgPyBnbC5ORUFSRVNUIDogX29wdGlvbnMkbWFnLFxuICAgICAgICBfb3B0aW9ucyRtaW4gPSBvcHRpb25zLm1pbixcbiAgICAgICAgbWluID0gX29wdGlvbnMkbWluID09PSB2b2lkIDAgPyBnbC5ORUFSRVNUIDogX29wdGlvbnMkbWluLFxuICAgICAgICBfb3B0aW9ucyRjb2xvclNwYWNlID0gb3B0aW9ucy5jb2xvclNwYWNlLFxuICAgICAgICBjb2xvclNwYWNlID0gX29wdGlvbnMkY29sb3JTcGFjZSA9PT0gdm9pZCAwID8gZ2wuQlJPV1NFUl9ERUZBVUxUX1dFQkdMIDogX29wdGlvbnMkY29sb3JTcGFjZTtcbiAgICB0aGlzLndpZHRoID0gd2lkdGg7XG4gICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgdmFyIHRleHR1cmVPcHRpb25zID0ge1xuICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0eXBlOiBkYXRhVHlwZU1hcFt0eXBlXSxcbiAgICAgIGZvcm1hdDogZm9ybWF0TWFwW2Zvcm1hdF0sXG4gICAgICB3cmFwUzogd3JhcE1vZGVNYXBbd3JhcFNdLFxuICAgICAgd3JhcFQ6IHdyYXBNb2RlTWFwW3dyYXBUXSxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIG1hZzogZmlsdGVyTWFwW21hZ10sXG4gICAgICBtaW46IGZpbHRlck1hcFttaW5dLFxuICAgICAgYWxpZ25tZW50OiBhbGlnbm1lbnQsXG4gICAgICBmbGlwWTogZmxpcFksXG4gICAgICBjb2xvclNwYWNlOiBjb2xvclNwYWNlTWFwW2NvbG9yU3BhY2VdLFxuICAgICAgcHJlbXVsdGlwbHlBbHBoYTogcHJlbXVsdGlwbHlBbHBoYSxcbiAgICAgIGFuaXNvOiBhbmlzb1xuICAgIH07XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgdGV4dHVyZU9wdGlvbnMuZGF0YSA9IGRhdGE7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBtaXBtYXAgPT09ICdudW1iZXInKSB7XG4gICAgICB0ZXh0dXJlT3B0aW9ucy5taXBtYXAgPSBtaXBtYXBNYXBbbWlwbWFwXTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBtaXBtYXAgPT09ICdib29sZWFuJykge1xuICAgICAgdGV4dHVyZU9wdGlvbnMubWlwbWFwID0gbWlwbWFwO1xuICAgIH1cblxuICAgIHRoaXMudGV4dHVyZSA9IHJlR2wudGV4dHVyZSh0ZXh0dXJlT3B0aW9ucyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUmVnbFRleHR1cmUyRCwgW3tcbiAgICBrZXk6IFwiZ2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLnRleHR1cmU7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInVwZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1cGRhdGUoKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0aGlzLnRleHR1cmUuX3RleHR1cmUuYmluZCgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZXNpemVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVzaXplKF9yZWYpIHtcbiAgICAgIHZhciB3aWR0aCA9IF9yZWYud2lkdGgsXG4gICAgICAgICAgaGVpZ2h0ID0gX3JlZi5oZWlnaHQ7XG4gICAgICB0aGlzLnRleHR1cmUucmVzaXplKHdpZHRoLCBoZWlnaHQpO1xuICAgICAgdGhpcy53aWR0aCA9IHdpZHRoO1xuICAgICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRlc3Ryb3lcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgIHRoaXMudGV4dHVyZS5kZXN0cm95KCk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFJlZ2xUZXh0dXJlMkQ7XG59KCk7XG5cbmV4cG9ydCB7IFJlZ2xUZXh0dXJlMkQgYXMgZGVmYXVsdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UmVnbFRleHR1cmUyRC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglTexture2D.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/constants.js":
/*!***********************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/constants.js ***!
\***********************************************************************************************/
/*! exports provided: primitiveMap, usageMap, dataTypeMap, formatMap, mipmapMap, filterMap, wrapModeMap, colorSpaceMap, depthFuncMap, blendEquationMap, blendFuncMap, stencilFuncMap, stencilOpMap, cullFaceMap */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"primitiveMap\", function() { return primitiveMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"usageMap\", function() { return usageMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dataTypeMap\", function() { return dataTypeMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatMap\", function() { return formatMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mipmapMap\", function() { return mipmapMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"filterMap\", function() { return filterMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"wrapModeMap\", function() { return wrapModeMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"colorSpaceMap\", function() { return colorSpaceMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"depthFuncMap\", function() { return depthFuncMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"blendEquationMap\", function() { return blendEquationMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"blendFuncMap\", function() { return blendFuncMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stencilFuncMap\", function() { return stencilFuncMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stencilOpMap\", function() { return stencilOpMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cullFaceMap\", function() { return cullFaceMap; });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@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 _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n\n\nvar _primitiveMap, _usageMap, _dataTypeMap, _formatMap, _mipmapMap, _filterMap, _wrapModeMap, _colorSpaceMap, _depthFuncMap, _blendEquationMap, _blendFuncMap, _stencilFuncMap, _stencilOpMap, _cullFaceMap;\n\n/**\n * @desc 由于 regl 使用大量字符串而非 WebGL 常量,因此需要映射\n */\n\n// @see https://github.com/regl-project/regl/blob/gh-pages/lib/constants/primitives.json\nvar primitiveMap = (_primitiveMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].POINTS, 'points'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINES, 'lines'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINE_LOOP, 'line loop'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINE_STRIP, 'line strip'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].TRIANGLES, 'triangles'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].TRIANGLE_FAN, 'triangle fan'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].TRIANGLE_STRIP, 'triangle strip'), _primitiveMap);\nvar usageMap = (_usageMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_usageMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].STATIC_DRAW, 'static'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_usageMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DYNAMIC_DRAW, 'dynamic'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_usageMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].STREAM_DRAW, 'stream'), _usageMap);\nvar dataTypeMap = (_dataTypeMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_dataTypeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].BYTE, 'int8'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_dataTypeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].UNSIGNED_INT, 'int16'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_dataTypeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].INT, 'int32'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_dataTypeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].UNSIGNED_BYTE, 'uint8'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_dataTypeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].UNSIGNED_SHORT, 'uint16'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_dataTypeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].UNSIGNED_INT, 'uint32'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_dataTypeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FLOAT, 'float'), _dataTypeMap);\nvar formatMap = (_formatMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ALPHA, 'alpha'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LUMINANCE, 'luminance'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LUMINANCE_ALPHA, 'luminance alpha'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].RGB, 'rgb'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].RGBA, 'rgba'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].RGBA4, 'rgba4'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].RGB5_A1, 'rgb5 a1'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].RGB565, 'rgb565'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DEPTH_COMPONENT, 'depth'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DEPTH_STENCIL, 'depth stencil'), _formatMap);\nvar mipmapMap = (_mipmapMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_mipmapMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DONT_CARE, 'dont care'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_mipmapMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NICEST, 'nice'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_mipmapMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FASTEST, 'fast'), _mipmapMap);\nvar filterMap = (_filterMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_filterMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NEAREST, 'nearest'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_filterMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINEAR, 'linear'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_filterMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINEAR_MIPMAP_LINEAR, 'mipmap'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_filterMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NEAREST_MIPMAP_LINEAR, 'nearest mipmap linear'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_filterMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINEAR_MIPMAP_NEAREST, 'linear mipmap nearest'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_filterMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NEAREST_MIPMAP_NEAREST, 'nearest mipmap nearest'), _filterMap);\nvar wrapModeMap = (_wrapModeMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_wrapModeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].REPEAT, 'repeat'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_wrapModeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].CLAMP_TO_EDGE, 'clamp'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_wrapModeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].MIRRORED_REPEAT, 'mirror'), _wrapModeMap);\nvar colorSpaceMap = (_colorSpaceMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_colorSpaceMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NONE, 'none'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_colorSpaceMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].BROWSER_DEFAULT_WEBGL, 'browser'), _colorSpaceMap);\nvar depthFuncMap = (_depthFuncMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NEVER, 'never'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ALWAYS, 'always'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LESS, 'less'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LEQUAL, 'lequal'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].GREATER, 'greater'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].GEQUAL, 'gequal'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].EQUAL, 'equal'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NOTEQUAL, 'notequal'), _depthFuncMap);\nvar blendEquationMap = (_blendEquationMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FUNC_ADD, 'add'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].MIN_EXT, 'min'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].MAX_EXT, 'max'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FUNC_SUBTRACT, 'subtract'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FUNC_REVERSE_SUBTRACT, 'reverse subtract'), _blendEquationMap);\nvar blendFuncMap = (_blendFuncMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ZERO, 'zero'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE, 'one'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].SRC_COLOR, 'src color'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_SRC_COLOR, 'one minus src color'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].SRC_ALPHA, 'src alpha'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_SRC_ALPHA, 'one minus src alpha'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DST_COLOR, 'dst color'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_DST_COLOR, 'one minus dst color'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DST_ALPHA, 'dst alpha'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_DST_ALPHA, 'one minus dst alpha'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].CONSTANT_COLOR, 'constant color'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_CONSTANT_COLOR, 'one minus constant color'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].CONSTANT_ALPHA, 'constant alpha'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_CONSTANT_ALPHA, 'one minus constant alpha'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].SRC_ALPHA_SATURATE, 'src alpha saturate'), _blendFuncMap);\nvar stencilFuncMap = (_stencilFuncMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NEVER, 'never'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ALWAYS, 'always'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LESS, 'less'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LEQUAL, 'lequal'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].GREATER, 'greater'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].GEQUAL, 'gequal'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].EQUAL, 'equal'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NOTEQUAL, 'notequal'), _stencilFuncMap);\nvar stencilOpMap = (_stencilOpMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilOpMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ZERO, 'zero'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilOpMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].KEEP, 'keep'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilOpMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].REPLACE, 'replace'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilOpMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].INVERT, 'invert'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilOpMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].INCR, 'increment'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilOpMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DECR, 'decrement'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilOpMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].INCR_WRAP, 'increment wrap'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_stencilOpMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DECR_WRAP, 'decrement wrap'), _stencilOpMap);\nvar cullFaceMap = (_cullFaceMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_cullFaceMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FRONT, 'front'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_cullFaceMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].BACK, 'back'), _cullFaceMap);\n//# sourceMappingURL=constants.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ2wvY29uc3RhbnRzLmpzPzk1MWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FOztBQUVwRTs7QUFFQTtBQUNBO0FBQ0E7QUFDeUM7QUFDekM7QUFDTyxzQ0FBc0MsRUFBRSw0RUFBZSxnQkFBZ0Isc0RBQUUsb0JBQW9CLDRFQUFlLGdCQUFnQixzREFBRSxrQkFBa0IsNEVBQWUsZ0JBQWdCLHNEQUFFLDBCQUEwQiw0RUFBZSxnQkFBZ0Isc0RBQUUsNEJBQTRCLDRFQUFlLGdCQUFnQixzREFBRSwwQkFBMEIsNEVBQWUsZ0JBQWdCLHNEQUFFLGdDQUFnQyw0RUFBZSxnQkFBZ0Isc0RBQUU7QUFDcmEsOEJBQThCLEVBQUUsNEVBQWUsWUFBWSxzREFBRSx5QkFBeUIsNEVBQWUsWUFBWSxzREFBRSwyQkFBMkIsNEVBQWUsWUFBWSxzREFBRTtBQUMzSyxvQ0FBb0MsRUFBRSw0RUFBZSxlQUFlLHNEQUFFLGdCQUFnQiw0RUFBZSxlQUFlLHNEQUFFLHlCQUF5Qiw0RUFBZSxlQUFlLHNEQUFFLGdCQUFnQiw0RUFBZSxlQUFlLHNEQUFFLDBCQUEwQiw0RUFBZSxlQUFlLHNEQUFFLDRCQUE0Qiw0RUFBZSxlQUFlLHNEQUFFLDBCQUEwQiw0RUFBZSxlQUFlLHNEQUFFO0FBQy9ZLGdDQUFnQyxFQUFFLDRFQUFlLGFBQWEsc0RBQUUsa0JBQWtCLDRFQUFlLGFBQWEsc0RBQUUsMEJBQTBCLDRFQUFlLGFBQWEsc0RBQUUsc0NBQXNDLDRFQUFlLGFBQWEsc0RBQUUsY0FBYyw0RUFBZSxhQUFhLHNEQUFFLGdCQUFnQiw0RUFBZSxhQUFhLHNEQUFFLGtCQUFrQiw0RUFBZSxhQUFhLHNEQUFFLHNCQUFzQiw0RUFBZSxhQUFhLHNEQUFFLG9CQUFvQiw0RUFBZSxhQUFhLHNEQUFFLDRCQUE0Qiw0RUFBZSxhQUFhLHNEQUFFO0FBQ3RoQixnQ0FBZ0MsRUFBRSw0RUFBZSxhQUFhLHNEQUFFLDBCQUEwQiw0RUFBZSxhQUFhLHNEQUFFLGtCQUFrQiw0RUFBZSxhQUFhLHNEQUFFO0FBQ3hLLGdDQUFnQyxFQUFFLDRFQUFlLGFBQWEsc0RBQUUsc0JBQXNCLDRFQUFlLGFBQWEsc0RBQUUsb0JBQW9CLDRFQUFlLGFBQWEsc0RBQUUsa0NBQWtDLDRFQUFlLGFBQWEsc0RBQUUsa0RBQWtELDRFQUFlLGFBQWEsc0RBQUUsa0RBQWtELDRFQUFlLGFBQWEsc0RBQUU7QUFDdFksb0NBQW9DLEVBQUUsNEVBQWUsZUFBZSxzREFBRSxvQkFBb0IsNEVBQWUsZUFBZSxzREFBRSwwQkFBMEIsNEVBQWUsZUFBZSxzREFBRTtBQUNwTCx3Q0FBd0MsRUFBRSw0RUFBZSxpQkFBaUIsc0RBQUUsZ0JBQWdCLDRFQUFlLGlCQUFpQixzREFBRTtBQUM5SCxzQ0FBc0MsRUFBRSw0RUFBZSxnQkFBZ0Isc0RBQUUsa0JBQWtCLDRFQUFlLGdCQUFnQixzREFBRSxvQkFBb0IsNEVBQWUsZ0JBQWdCLHNEQUFFLGdCQUFnQiw0RUFBZSxnQkFBZ0Isc0RBQUUsb0JBQW9CLDRFQUFlLGdCQUFnQixzREFBRSxzQkFBc0IsNEVBQWUsZ0JBQWdCLHNEQUFFLG9CQUFvQiw0RUFBZSxnQkFBZ0Isc0RBQUUsa0JBQWtCLDRFQUFlLGdCQUFnQixzREFBRTtBQUN0Yiw4Q0FBOEMsRUFBRSw0RUFBZSxvQkFBb0Isc0RBQUUsbUJBQW1CLDRFQUFlLG9CQUFvQixzREFBRSxrQkFBa0IsNEVBQWUsb0JBQW9CLHNEQUFFLGtCQUFrQiw0RUFBZSxvQkFBb0Isc0RBQUUsNkJBQTZCLDRFQUFlLG9CQUFvQixzREFBRTtBQUM3VCxzQ0FBc0MsRUFBRSw0RUFBZSxnQkFBZ0Isc0RBQUUsZ0JBQWdCLDRFQUFlLGdCQUFnQixzREFBRSxjQUFjLDRFQUFlLGdCQUFnQixzREFBRSwwQkFBMEIsNEVBQWUsZ0JBQWdCLHNEQUFFLDhDQUE4Qyw0RUFBZSxnQkFBZ0Isc0RBQUUsMEJBQTBCLDRFQUFlLGdCQUFnQixzREFBRSw4Q0FBOEMsNEVBQWUsZ0JBQWdCLHNEQUFFLDBCQUEwQiw0RUFBZSxnQkFBZ0Isc0RBQUUsOENBQThDLDRFQUFlLGdCQUFnQixzREFBRSwwQkFBMEIsNEVBQWUsZ0JBQWdCLHNEQUFFLDhDQUE4Qyw0RUFBZSxnQkFBZ0Isc0RBQUUsb0NBQW9DLDRFQUFlLGdCQUFnQixzREFBRSx3REFBd0QsNEVBQWUsZ0JBQWdCLHNEQUFFLG9DQUFvQyw0RUFBZSxnQkFBZ0Isc0RBQUUsd0RBQXdELDRFQUFlLGdCQUFnQixzREFBRTtBQUM3Z0MsMENBQTBDLEVBQUUsNEVBQWUsa0JBQWtCLHNEQUFFLGtCQUFrQiw0RUFBZSxrQkFBa0Isc0RBQUUsb0JBQW9CLDRFQUFlLGtCQUFrQixzREFBRSxnQkFBZ0IsNEVBQWUsa0JBQWtCLHNEQUFFLG9CQUFvQiw0RUFBZSxrQkFBa0Isc0RBQUUsc0JBQXNCLDRFQUFlLGtCQUFrQixzREFBRSxvQkFBb0IsNEVBQWUsa0JBQWtCLHNEQUFFLGtCQUFrQiw0RUFBZSxrQkFBa0Isc0RBQUU7QUFDMWMsc0NBQXNDLEVBQUUsNEVBQWUsZ0JBQWdCLHNEQUFFLGdCQUFnQiw0RUFBZSxnQkFBZ0Isc0RBQUUsZ0JBQWdCLDRFQUFlLGdCQUFnQixzREFBRSxzQkFBc0IsNEVBQWUsZ0JBQWdCLHNEQUFFLG9CQUFvQiw0RUFBZSxnQkFBZ0Isc0RBQUUscUJBQXFCLDRFQUFlLGdCQUFnQixzREFBRSxxQkFBcUIsNEVBQWUsZ0JBQWdCLHNEQUFFLCtCQUErQiw0RUFBZSxnQkFBZ0Isc0RBQUU7QUFDbmMsb0NBQW9DLEVBQUUsNEVBQWUsZUFBZSxzREFBRSxrQkFBa0IsNEVBQWUsZUFBZSxzREFBRTtBQUMvSCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtZW5naW5lQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWVuZ2luZS9lcy93ZWJnbC9jb25zdGFudHMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCI7XG5cbnZhciBfcHJpbWl0aXZlTWFwLCBfdXNhZ2VNYXAsIF9kYXRhVHlwZU1hcCwgX2Zvcm1hdE1hcCwgX21pcG1hcE1hcCwgX2ZpbHRlck1hcCwgX3dyYXBNb2RlTWFwLCBfY29sb3JTcGFjZU1hcCwgX2RlcHRoRnVuY01hcCwgX2JsZW5kRXF1YXRpb25NYXAsIF9ibGVuZEZ1bmNNYXAsIF9zdGVuY2lsRnVuY01hcCwgX3N0ZW5jaWxPcE1hcCwgX2N1bGxGYWNlTWFwO1xuXG4vKipcbiAqIEBkZXNjIOeUseS6jiByZWdsIOS9v+eUqOWkp+mHj+Wtl+espuS4suiAjOmdniBXZWJHTCDluLjph4/vvIzlm6DmraTpnIDopoHmmKDlsIRcbiAqL1xuaW1wb3J0IHsgZ2wgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbi8vIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3JlZ2wtcHJvamVjdC9yZWdsL2Jsb2IvZ2gtcGFnZXMvbGliL2NvbnN0YW50cy9wcmltaXRpdmVzLmpzb25cbmV4cG9ydCB2YXIgcHJpbWl0aXZlTWFwID0gKF9wcmltaXRpdmVNYXAgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9wcmltaXRpdmVNYXAsIGdsLlBPSU5UUywgJ3BvaW50cycpLCBfZGVmaW5lUHJvcGVydHkoX3ByaW1pdGl2ZU1hcCwgZ2wuTElORVMsICdsaW5lcycpLCBfZGVmaW5lUHJvcGVydHkoX3ByaW1pdGl2ZU1hcCwgZ2wuTElORV9MT09QLCAnbGluZSBsb29wJyksIF9kZWZpbmVQcm9wZXJ0eShfcHJpbWl0aXZlTWFwLCBnbC5MSU5FX1NUUklQLCAnbGluZSBzdHJpcCcpLCBfZGVmaW5lUHJvcGVydHkoX3ByaW1pdGl2ZU1hcCwgZ2wuVFJJQU5HTEVTLCAndHJpYW5nbGVzJyksIF9kZWZpbmVQcm9wZXJ0eShfcHJpbWl0aXZlTWFwLCBnbC5UUklBTkdMRV9GQU4sICd0cmlhbmdsZSBmYW4nKSwgX2RlZmluZVByb3BlcnR5KF9wcmltaXRpdmVNYXAsIGdsLlRSSUFOR0xFX1NUUklQLCAndHJpYW5nbGUgc3RyaXAnKSwgX3ByaW1pdGl2ZU1hcCk7XG5leHBvcnQgdmFyIHVzYWdlTWFwID0gKF91c2FnZU1hcCA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX3VzYWdlTWFwLCBnbC5TVEFUSUNfRFJBVywgJ3N0YXRpYycpLCBfZGVmaW5lUHJvcGVydHkoX3VzYWdlTWFwLCBnbC5EWU5BTUlDX0RSQVcsICdkeW5hbWljJyksIF9kZWZpbmVQcm9wZXJ0eShfdXNhZ2VNYXAsIGdsLlNUUkVBTV9EUkFXLCAnc3RyZWFtJyksIF91c2FnZU1hcCk7XG5leHBvcnQgdmFyIGRhdGFUeXBlTWFwID0gKF9kYXRhVHlwZU1hcCA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2RhdGFUeXBlTWFwLCBnbC5CWVRFLCAnaW50OCcpLCBfZGVmaW5lUHJvcGVydHkoX2RhdGFUeXBlTWFwLCBnbC5VTlNJR05FRF9JTlQsICdpbnQxNicpLCBfZGVmaW5lUHJvcGVydHkoX2RhdGFUeXBlTWFwLCBnbC5JTlQsICdpbnQzMicpLCBfZGVmaW5lUHJvcGVydHkoX2RhdGFUeXBlTWFwLCBnbC5VTlNJR05FRF9CWVRFLCAndWludDgnKSwgX2RlZmluZVByb3BlcnR5KF9kYXRhVHlwZU1hcCwgZ2wuVU5TSUdORURfU0hPUlQsICd1aW50MTYnKSwgX2RlZmluZVByb3BlcnR5KF9kYXRhVHlwZU1hcCwgZ2wuVU5TSUdORURfSU5ULCAndWludDMyJyksIF9kZWZpbmVQcm9wZXJ0eShfZGF0YVR5cGVNYXAsIGdsLkZMT0FULCAnZmxvYXQnKSwgX2RhdGFUeXBlTWFwKTtcbmV4cG9ydCB2YXIgZm9ybWF0TWFwID0gKF9mb3JtYXRNYXAgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9mb3JtYXRNYXAsIGdsLkFMUEhBLCAnYWxwaGEnKSwgX2RlZmluZVByb3BlcnR5KF9mb3JtYXRNYXAsIGdsLkxVTUlOQU5DRSwgJ2x1bWluYW5jZScpLCBfZGVmaW5lUHJvcGVydHkoX2Zvcm1hdE1hcCwgZ2wuTFVNSU5BTkNFX0FMUEhBLCAnbHVtaW5hbmNlIGFscGhhJyksIF9kZWZpbmVQcm9wZXJ0eShfZm9ybWF0TWFwLCBnbC5SR0IsICdyZ2InKSwgX2RlZmluZVByb3BlcnR5KF9mb3JtYXRNYXAsIGdsLlJHQkEsICdyZ2JhJyksIF9kZWZpbmVQcm9wZXJ0eShfZm9ybWF0TWFwLCBnbC5SR0JBNCwgJ3JnYmE0JyksIF9kZWZpbmVQcm9wZXJ0eShfZm9ybWF0TWFwLCBnbC5SR0I1X0ExLCAncmdiNSBhMScpLCBfZGVmaW5lUHJvcGVydHkoX2Zvcm1hdE1hcCwgZ2wuUkdCNTY1LCAncmdiNTY1JyksIF9kZWZpbmVQcm9wZXJ0eShfZm9ybWF0TWFwLCBnbC5ERVBUSF9DT01QT05FTlQsICdkZXB0aCcpLCBfZGVmaW5lUHJvcGVydHkoX2Zvcm1hdE1hcCwgZ2wuREVQVEhfU1RFTkNJTCwgJ2RlcHRoIHN0ZW5jaWwnKSwgX2Zvcm1hdE1hcCk7XG5leHBvcnQgdmFyIG1pcG1hcE1hcCA9IChfbWlwbWFwTWFwID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfbWlwbWFwTWFwLCBnbC5ET05UX0NBUkUsICdkb250IGNhcmUnKSwgX2RlZmluZVByb3BlcnR5KF9taXBtYXBNYXAsIGdsLk5JQ0VTVCwgJ25pY2UnKSwgX2RlZmluZVByb3BlcnR5KF9taXBtYXBNYXAsIGdsLkZBU1RFU1QsICdmYXN0JyksIF9taXBtYXBNYXApO1xuZXhwb3J0IHZhciBmaWx0ZXJNYXAgPSAoX2ZpbHRlck1hcCA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2ZpbHRlck1hcCwgZ2wuTkVBUkVTVCwgJ25lYXJlc3QnKSwgX2RlZmluZVByb3BlcnR5KF9maWx0ZXJNYXAsIGdsLkxJTkVBUiwgJ2xpbmVhcicpLCBfZGVmaW5lUHJvcGVydHkoX2ZpbHRlck1hcCwgZ2wuTElORUFSX01JUE1BUF9MSU5FQVIsICdtaXBtYXAnKSwgX2RlZmluZVByb3BlcnR5KF9maWx0ZXJNYXAsIGdsLk5FQVJFU1RfTUlQTUFQX0xJTkVBUiwgJ25lYXJlc3QgbWlwbWFwIGxpbmVhcicpLCBfZGVmaW5lUHJvcGVydHkoX2ZpbHRlck1hcCwgZ2wuTElORUFSX01JUE1BUF9ORUFSRVNULCAnbGluZWFyIG1pcG1hcCBuZWFyZXN0JyksIF9kZWZpbmVQcm9wZXJ0eShfZmlsdGVyTWFwLCBnbC5ORUFSRVNUX01JUE1BUF9ORUFSRVNULCAnbmVhcmVzdCBtaXBtYXAgbmVhcmVzdCcpLCBfZmlsdGVyTWFwKTtcbmV4cG9ydCB2YXIgd3JhcE1vZGVNYXAgPSAoX3dyYXBNb2RlTWFwID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfd3JhcE1vZGVNYXAsIGdsLlJFUEVBVCwgJ3JlcGVhdCcpLCBfZGVmaW5lUHJvcGVydHkoX3dyYXBNb2RlTWFwLCBnbC5DTEFNUF9UT19FREdFLCAnY2xhbXAnKSwgX2RlZmluZVByb3BlcnR5KF93cmFwTW9kZU1hcCwgZ2wuTUlSUk9SRURfUkVQRUFULCAnbWlycm9yJyksIF93cmFwTW9kZU1hcCk7XG5leHBvcnQgdmFyIGNvbG9yU3BhY2VNYXAgPSAoX2NvbG9yU3BhY2VNYXAgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9jb2xvclNwYWNlTWFwLCBnbC5OT05FLCAnbm9uZScpLCBfZGVmaW5lUHJvcGVydHkoX2NvbG9yU3BhY2VNYXAsIGdsLkJST1dTRVJfREVGQVVMVF9XRUJHTCwgJ2Jyb3dzZXInKSwgX2NvbG9yU3BhY2VNYXApO1xuZXhwb3J0IHZhciBkZXB0aEZ1bmNNYXAgPSAoX2RlcHRoRnVuY01hcCA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2RlcHRoRnVuY01hcCwgZ2wuTkVWRVIsICduZXZlcicpLCBfZGVmaW5lUHJvcGVydHkoX2RlcHRoRnVuY01hcCwgZ2wuQUxXQVlTLCAnYWx3YXlzJyksIF9kZWZpbmVQcm9wZXJ0eShfZGVwdGhGdW5jTWFwLCBnbC5MRVNTLCAnbGVzcycpLCBfZGVmaW5lUHJvcGVydHkoX2RlcHRoRnVuY01hcCwgZ2wuTEVRVUFMLCAnbGVxdWFsJyksIF9kZWZpbmVQcm9wZXJ0eShfZGVwdGhGdW5jTWFwLCBnbC5HUkVBVEVSLCAnZ3JlYXRlcicpLCBfZGVmaW5lUHJvcGVydHkoX2RlcHRoRnVuY01hcCwgZ2wuR0VRVUFMLCAnZ2VxdWFsJyksIF9kZWZpbmVQcm9wZXJ0eShfZGVwdGhGdW5jTWFwLCBnbC5FUVVBTCwgJ2VxdWFsJyksIF9kZWZpbmVQcm9wZXJ0eShfZGVwdGhGdW5jTWFwLCBnbC5OT1RFUVVBTCwgJ25vdGVxdWFsJyksIF9kZXB0aEZ1bmNNYXApO1xuZXhwb3J0IHZhciBibGVuZEVxdWF0aW9uTWFwID0gKF9ibGVuZEVxdWF0aW9uTWFwID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRFcXVhdGlvbk1hcCwgZ2wuRlVOQ19BREQsICdhZGQnKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEVxdWF0aW9uTWFwLCBnbC5NSU5fRVhULCAnbWluJyksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRFcXVhdGlvbk1hcCwgZ2wuTUFYX0VYVCwgJ21heCcpLCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRXF1YXRpb25NYXAsIGdsLkZVTkNfU1VCVFJBQ1QsICdzdWJ0cmFjdCcpLCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRXF1YXRpb25NYXAsIGdsLkZVTkNfUkVWRVJTRV9TVUJUUkFDVCwgJ3JldmVyc2Ugc3VidHJhY3QnKSwgX2JsZW5kRXF1YXRpb25NYXApO1xuZXhwb3J0IHZhciBibGVuZEZ1bmNNYXAgPSAoX2JsZW5kRnVuY01hcCA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRnVuY01hcCwgZ2wuWkVSTywgJ3plcm8nKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLk9ORSwgJ29uZScpLCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRnVuY01hcCwgZ2wuU1JDX0NPTE9SLCAnc3JjIGNvbG9yJyksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5PTkVfTUlOVVNfU1JDX0NPTE9SLCAnb25lIG1pbnVzIHNyYyBjb2xvcicpLCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRnVuY01hcCwgZ2wuU1JDX0FMUEhBLCAnc3JjIGFscGhhJyksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5PTkVfTUlOVVNfU1JDX0FMUEhBLCAnb25lIG1pbnVzIHNyYyBhbHBoYScpLCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRnVuY01hcCwgZ2wuRFNUX0NPTE9SLCAnZHN0IGNvbG9yJyksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5PTkVfTUlOVVNfRFNUX0NPTE9SLCAnb25lIG1pbnVzIGRzdCBjb2xvcicpLCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRnVuY01hcCwgZ2wuRFNUX0FMUEhBLCAnZHN0IGFscGhhJyksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5PTkVfTUlOVVNfRFNUX0FMUEhBLCAnb25lIG1pbnVzIGRzdCBhbHBoYScpLCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRnVuY01hcCwgZ2wuQ09OU1RBTlRfQ09MT1IsICdjb25zdGFudCBjb2xvcicpLCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRnVuY01hcCwgZ2wuT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SLCAnb25lIG1pbnVzIGNvbnN0YW50IGNvbG9yJyksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5DT05TVEFOVF9BTFBIQSwgJ2NvbnN0YW50IGFscGhhJyksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEsICdvbmUgbWludXMgY29uc3RhbnQgYWxwaGEnKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLlNSQ19BTFBIQV9TQVRVUkFURSwgJ3NyYyBhbHBoYSBzYXR1cmF0ZScpLCBfYmxlbmRGdW5jTWFwKTtcbmV4cG9ydCB2YXIgc3RlbmNpbEZ1bmNNYXAgPSAoX3N0ZW5jaWxGdW5jTWFwID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfc3RlbmNpbEZ1bmNNYXAsIGdsLk5FVkVSLCAnbmV2ZXInKSwgX2RlZmluZVByb3BlcnR5KF9zdGVuY2lsRnVuY01hcCwgZ2wuQUxXQVlTLCAnYWx3YXlzJyksIF9kZWZpbmVQcm9wZXJ0eShfc3RlbmNpbEZ1bmNNYXAsIGdsLkxFU1MsICdsZXNzJyksIF9kZWZpbmVQcm9wZXJ0eShfc3RlbmNpbEZ1bmNNYXAsIGdsLkxFUVVBTCwgJ2xlcXVhbCcpLCBfZGVmaW5lUHJvcGVydHkoX3N0ZW5jaWxGdW5jTWFwLCBnbC5HUkVBVEVSLCAnZ3JlYXRlcicpLCBfZGVmaW5lUHJvcGVydHkoX3N0ZW5jaWxGdW5jTWFwLCBnbC5HRVFVQUwsICdnZXF1YWwnKSwgX2RlZmluZVByb3BlcnR5KF9zdGVuY2lsRnVuY01hcCwgZ2wuRVFVQUwsICdlcXVhbCcpLCBfZGVmaW5lUHJvcGVydHkoX3N0ZW5jaWxGdW5jTWFwLCBnbC5OT1RFUVVBTCwgJ25vdGVxdWFsJyksIF9zdGVuY2lsRnVuY01hcCk7XG5leHBvcnQgdmFyIHN0ZW5jaWxPcE1hcCA9IChfc3RlbmNpbE9wTWFwID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfc3RlbmNpbE9wTWFwLCBnbC5aRVJPLCAnemVybycpLCBfZGVmaW5lUHJvcGVydHkoX3N0ZW5jaWxPcE1hcCwgZ2wuS0VFUCwgJ2tlZXAnKSwgX2RlZmluZVByb3BlcnR5KF9zdGVuY2lsT3BNYXAsIGdsLlJFUExBQ0UsICdyZXBsYWNlJyksIF9kZWZpbmVQcm9wZXJ0eShfc3RlbmNpbE9wTWFwLCBnbC5JTlZFUlQsICdpbnZlcnQnKSwgX2RlZmluZVByb3BlcnR5KF9zdGVuY2lsT3BNYXAsIGdsLklOQ1IsICdpbmNyZW1lbnQnKSwgX2RlZmluZVByb3BlcnR5KF9zdGVuY2lsT3BNYXAsIGdsLkRFQ1IsICdkZWNyZW1lbnQnKSwgX2RlZmluZVByb3BlcnR5KF9zdGVuY2lsT3BNYXAsIGdsLklOQ1JfV1JBUCwgJ2luY3JlbWVudCB3cmFwJyksIF9kZWZpbmVQcm9wZXJ0eShfc3RlbmNpbE9wTWFwLCBnbC5ERUNSX1dSQVAsICdkZWNyZW1lbnQgd3JhcCcpLCBfc3RlbmNpbE9wTWFwKTtcbmV4cG9ydCB2YXIgY3VsbEZhY2VNYXAgPSAoX2N1bGxGYWNlTWFwID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfY3VsbEZhY2VNYXAsIGdsLkZST05ULCAnZnJvbnQnKSwgX2RlZmluZVByb3BlcnR5KF9jdWxsRmFjZU1hcCwgZ2wuQkFDSywgJ2JhY2snKSwgX2N1bGxGYWNlTWFwKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbnN0YW50cy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/constants.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/index.js":
/*!*******************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/index.js ***!
\*******************************************************************************************/
/*! exports provided: WebGLEngine */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"WebGLEngine\", function() { return WebGLEngine; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__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@7.16.3@@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@7.16.3@@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@7.16.3@@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 _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var regl__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! regl */ \"./node_modules/_regl@1.7.0@regl/dist/regl.js\");\n/* harmony import */ var regl__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(regl__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _ReglAttribute__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./ReglAttribute */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglAttribute.js\");\n/* harmony import */ var _ReglBuffer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./ReglBuffer */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglBuffer.js\");\n/* harmony import */ var _ReglComputeModel__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ReglComputeModel */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglComputeModel.js\");\n/* harmony import */ var _ReglElements__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./ReglElements */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglElements.js\");\n/* harmony import */ var _ReglFramebuffer__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./ReglFramebuffer */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglFramebuffer.js\");\n/* harmony import */ var _ReglModel__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./ReglModel */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglModel.js\");\n/* harmony import */ var _ReglTexture2D__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./ReglTexture2D */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/ReglTexture2D.js\");\n\n\n\n\n\nvar _dec, _class, _temp;\n\n/**\n * render w/ regl\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md\n */\n\n\n\n\n\n\n\n\n\n\n/**\n * regl renderer\n */\n\nvar WebGLEngine = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_5__[\"injectable\"])(), _dec(_class = (_temp = /*#__PURE__*/function () {\n function WebGLEngine() {\n var _this = this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, WebGLEngine);\n\n this.supportWebGPU = false;\n this.useWGSL = false;\n this.$canvas = void 0;\n this.gl = void 0;\n this.inited = void 0;\n\n this.createModel = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(options) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!options.uniforms) {\n _context2.next = 3;\n break;\n }\n\n _context2.next = 3;\n return Promise.all(Object.keys(options.uniforms).map( /*#__PURE__*/function () {\n var _ref2 = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(name) {\n var texture;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!(options.uniforms[name] && options.uniforms[name].load !== undefined)) {\n _context.next = 5;\n break;\n }\n\n _context.next = 3;\n return options.uniforms[name].load();\n\n case 3:\n texture = _context.sent;\n // @ts-ignore\n options.uniforms[name] = texture;\n\n case 5:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x2) {\n return _ref2.apply(this, arguments);\n };\n }()));\n\n case 3:\n return _context2.abrupt(\"return\", new _ReglModel__WEBPACK_IMPORTED_MODULE_12__[\"default\"](_this.gl, options));\n\n case 4:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }();\n\n this.createAttribute = function (options) {\n return new _ReglAttribute__WEBPACK_IMPORTED_MODULE_7__[\"default\"](_this.gl, options);\n };\n\n this.createBuffer = function (options) {\n return new _ReglBuffer__WEBPACK_IMPORTED_MODULE_8__[\"default\"](_this.gl, options);\n };\n\n this.createElements = function (options) {\n return new _ReglElements__WEBPACK_IMPORTED_MODULE_10__[\"default\"](_this.gl, options);\n };\n\n this.createTexture2D = function (options) {\n return new _ReglTexture2D__WEBPACK_IMPORTED_MODULE_13__[\"default\"](_this.gl, options);\n };\n\n this.createFramebuffer = function (options) {\n return new _ReglFramebuffer__WEBPACK_IMPORTED_MODULE_11__[\"default\"](_this.gl, options);\n };\n\n this.useFramebuffer = function (framebuffer, drawCommands) {\n _this.gl({\n framebuffer: framebuffer ? framebuffer.get() : null\n })(drawCommands);\n };\n\n this.createComputeModel = /*#__PURE__*/function () {\n var _ref3 = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(context) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n return _context3.abrupt(\"return\", new _ReglComputeModel__WEBPACK_IMPORTED_MODULE_9__[\"default\"](_this.gl, context));\n\n case 1:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }));\n\n return function (_x3) {\n return _ref3.apply(this, arguments);\n };\n }();\n\n this.clear = function (options) {\n // @see https://github.com/regl-project/regl/blob/gh-pages/API.md#clear-the-draw-buffer\n var color = options.color,\n depth = options.depth,\n stencil = options.stencil,\n _options$framebuffer = options.framebuffer,\n framebuffer = _options$framebuffer === void 0 ? null : _options$framebuffer;\n var reglClearOptions = {\n color: color,\n depth: depth,\n stencil: stencil\n };\n reglClearOptions.framebuffer = framebuffer === null ? framebuffer : framebuffer.get();\n\n _this.gl.clear(reglClearOptions);\n };\n\n this.setScissor = function (scissor) {\n if (_this.gl && _this.gl._gl) {\n // https://developer.mozilla.org/zh-CN/docs/Web/API/WebGLRenderingContext/scissor\n if (scissor.enable && scissor.box) {\n // console.log(scissor.box);\n _this.gl._gl.enable(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].SCISSOR_TEST);\n\n _this.gl._gl.scissor(scissor.box.x, scissor.box.y, scissor.box.width, scissor.box.height);\n } else {\n _this.gl._gl.disable(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"gl\"].SCISSOR_TEST);\n }\n\n _this.gl._refresh();\n }\n };\n\n this.viewport = function (_ref4) {\n var x = _ref4.x,\n y = _ref4.y,\n width = _ref4.width,\n height = _ref4.height;\n\n if (_this.gl && _this.gl._gl) {\n // use WebGL context directly\n // @see https://github.com/regl-project/regl/blob/gh-pages/API.md#unsafe-escape-hatch\n _this.gl._gl.viewport(x, y, width, height);\n\n _this.gl._refresh();\n }\n };\n\n this.readPixels = function (options) {\n var framebuffer = options.framebuffer,\n x = options.x,\n y = options.y,\n width = options.width,\n height = options.height;\n var readPixelsOptions = {\n x: x,\n y: y,\n width: width,\n height: height\n };\n\n if (framebuffer) {\n readPixelsOptions.framebuffer = framebuffer.get();\n }\n\n return _this.gl.read(readPixelsOptions);\n };\n\n this.getCanvas = function () {\n return _this.$canvas;\n };\n\n this.getGLContext = function () {\n return _this.gl._gl;\n };\n\n this.destroy = function () {\n if (_this.gl) {\n // @see https://github.com/regl-project/regl/blob/gh-pages/API.md#clean-up\n _this.gl.destroy();\n\n _this.inited = false;\n }\n };\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(WebGLEngine, [{\n key: \"init\",\n value: function () {\n var _init = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4(cfg) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n if (!this.inited) {\n _context4.next = 2;\n break;\n }\n\n return _context4.abrupt(\"return\");\n\n case 2:\n this.$canvas = cfg.canvas; // tslint:disable-next-line:typedef\n\n _context4.next = 5;\n return new Promise(function (resolve, reject) {\n regl__WEBPACK_IMPORTED_MODULE_6___default()({\n canvas: cfg.canvas,\n attributes: {\n alpha: true,\n // use TAA instead of MSAA\n // @see https://www.khronos.org/registry/webgl/specs/1.0/#5.2.1\n antialias: cfg.antialias,\n premultipliedAlpha: true // preserveDrawingBuffer: false,\n\n },\n pixelRatio: 1,\n // TODO: use extensions\n extensions: ['OES_element_index_uint', 'OES_texture_float', 'OES_standard_derivatives', // wireframe\n 'angle_instanced_arrays' // VSM shadow map\n ],\n optionalExtensions: ['EXT_texture_filter_anisotropic', 'EXT_blend_minmax', 'WEBGL_depth_texture'],\n profile: true,\n onDone: function onDone(err, r) {\n if (err || !r) {\n reject(err);\n } // @ts-ignore\n\n\n resolve(r);\n }\n });\n });\n\n case 5:\n this.gl = _context4.sent;\n this.inited = true;\n\n case 7:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function init(_x4) {\n return _init.apply(this, arguments);\n }\n\n return init;\n }()\n }, {\n key: \"isFloatSupported\",\n value: function isFloatSupported() {\n // @see https://github.com/antvis/GWebGPUEngine/issues/26\n // @ts-ignore\n return this.gl.limits.readFloat;\n }\n }, {\n key: \"beginFrame\",\n value: function beginFrame() {//\n }\n }, {\n key: \"endFrame\",\n value: function endFrame() {//\n }\n }]);\n\n return WebGLEngine;\n}(), _temp)) || _class);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ2wvaW5kZXguanM/OWMxMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE2RDtBQUNXO0FBQ0o7QUFDTjs7QUFFOUQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDeUM7QUFDRjtBQUNmO0FBQ29CO0FBQ047QUFDWTtBQUNSO0FBQ007QUFDWjtBQUNRO0FBQzVDO0FBQ0E7QUFDQTs7QUFFTywwQkFBMEIsNERBQVU7QUFDM0M7QUFDQTs7QUFFQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUNwRSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsOEJBQThCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUNqRjtBQUNBLDJCQUEyQixpRUFBbUI7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCLG1CQUFtQjs7QUFFbkI7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBLHNEQUFzRCxtREFBUzs7QUFFL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSxpQkFBaUIsc0RBQWE7QUFDOUI7O0FBRUE7QUFDQSxpQkFBaUIsbURBQVU7QUFDM0I7O0FBRUE7QUFDQSxpQkFBaUIsc0RBQVk7QUFDN0I7O0FBRUE7QUFDQSxpQkFBaUIsdURBQWE7QUFDOUI7O0FBRUE7QUFDQSxpQkFBaUIseURBQWU7QUFDaEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0Esa0JBQWtCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUNyRSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQSxzREFBc0QseURBQWdCOztBQUV0RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsc0RBQUU7O0FBRWhDO0FBQ0EsU0FBUztBQUNULCtCQUErQixzREFBRTtBQUNqQzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQSxrQkFBa0IsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3JFLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsMENBQTBDOztBQUUxQztBQUNBO0FBQ0Esa0JBQWtCLDJDQUFJO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qjs7O0FBR3ZCO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkIsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0EsR0FBRztBQUNIO0FBQ0EsZ0NBQWdDO0FBQ2hDO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtZW5naW5lQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWVuZ2luZS9lcy93ZWJnbC9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfcmVnZW5lcmF0b3JSdW50aW1lIGZyb20gXCJAYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvclwiO1xuaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcblxudmFyIF9kZWMsIF9jbGFzcywgX3RlbXA7XG5cbi8qKlxuICogcmVuZGVyIHcvIHJlZ2xcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3JlZ2wtcHJvamVjdC9yZWdsL2Jsb2IvZ2gtcGFnZXMvQVBJLm1kXG4gKi9cbmltcG9ydCB7IGdsIH0gZnJvbSAnQGFudHYvZy13ZWJncHUtY29yZSc7XG5pbXBvcnQgeyBpbmplY3RhYmxlIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCByZWdsIGZyb20gJ3JlZ2wnO1xuaW1wb3J0IFJlZ2xBdHRyaWJ1dGUgZnJvbSAnLi9SZWdsQXR0cmlidXRlJztcbmltcG9ydCBSZWdsQnVmZmVyIGZyb20gJy4vUmVnbEJ1ZmZlcic7XG5pbXBvcnQgUmVnbENvbXB1dGVNb2RlbCBmcm9tICcuL1JlZ2xDb21wdXRlTW9kZWwnO1xuaW1wb3J0IFJlZ2xFbGVtZW50cyBmcm9tICcuL1JlZ2xFbGVtZW50cyc7XG5pbXBvcnQgUmVnbEZyYW1lYnVmZmVyIGZyb20gJy4vUmVnbEZyYW1lYnVmZmVyJztcbmltcG9ydCBSZWdsTW9kZWwgZnJvbSAnLi9SZWdsTW9kZWwnO1xuaW1wb3J0IFJlZ2xUZXh0dXJlMkQgZnJvbSAnLi9SZWdsVGV4dHVyZTJEJztcbi8qKlxuICogcmVnbCByZW5kZXJlclxuICovXG5cbmV4cG9ydCB2YXIgV2ViR0xFbmdpbmUgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYyhfY2xhc3MgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBXZWJHTEVuZ2luZSgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFdlYkdMRW5naW5lKTtcblxuICAgIHRoaXMuc3VwcG9ydFdlYkdQVSA9IGZhbHNlO1xuICAgIHRoaXMudXNlV0dTTCA9IGZhbHNlO1xuICAgIHRoaXMuJGNhbnZhcyA9IHZvaWQgMDtcbiAgICB0aGlzLmdsID0gdm9pZCAwO1xuICAgIHRoaXMuaW5pdGVkID0gdm9pZCAwO1xuXG4gICAgdGhpcy5jcmVhdGVNb2RlbCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3JlZiA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUyKG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlMiQoX2NvbnRleHQyKSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQyLnByZXYgPSBfY29udGV4dDIubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgaWYgKCFvcHRpb25zLnVuaWZvcm1zKSB7XG4gICAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDM7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDM7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKE9iamVjdC5rZXlzKG9wdGlvbnMudW5pZm9ybXMpLm1hcCggLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgIHZhciBfcmVmMiA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUobmFtZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGV4dHVyZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShvcHRpb25zLnVuaWZvcm1zW25hbWVdICYmIG9wdGlvbnMudW5pZm9ybXNbbmFtZV0ubG9hZCAhPT0gdW5kZWZpbmVkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy51bmlmb3Jtc1tuYW1lXS5sb2FkKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUgPSBfY29udGV4dC5zZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVuaWZvcm1zW25hbWVdID0gdGV4dHVyZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwgX2NhbGxlZSk7XG4gICAgICAgICAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoX3gyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfcmVmMi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KCkpKTtcblxuICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5hYnJ1cHQoXCJyZXR1cm5cIiwgbmV3IFJlZ2xNb2RlbChfdGhpcy5nbCwgb3B0aW9ucykpO1xuXG4gICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTIpO1xuICAgICAgfSkpO1xuXG4gICAgICByZXR1cm4gZnVuY3Rpb24gKF94KSB7XG4gICAgICAgIHJldHVybiBfcmVmLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuICAgIH0oKTtcblxuICAgIHRoaXMuY3JlYXRlQXR0cmlidXRlID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBuZXcgUmVnbEF0dHJpYnV0ZShfdGhpcy5nbCwgb3B0aW9ucyk7XG4gICAgfTtcblxuICAgIHRoaXMuY3JlYXRlQnVmZmVyID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBuZXcgUmVnbEJ1ZmZlcihfdGhpcy5nbCwgb3B0aW9ucyk7XG4gICAgfTtcblxuICAgIHRoaXMuY3JlYXRlRWxlbWVudHMgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgcmV0dXJuIG5ldyBSZWdsRWxlbWVudHMoX3RoaXMuZ2wsIG9wdGlvbnMpO1xuICAgIH07XG5cbiAgICB0aGlzLmNyZWF0ZVRleHR1cmUyRCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICByZXR1cm4gbmV3IFJlZ2xUZXh0dXJlMkQoX3RoaXMuZ2wsIG9wdGlvbnMpO1xuICAgIH07XG5cbiAgICB0aGlzLmNyZWF0ZUZyYW1lYnVmZmVyID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBuZXcgUmVnbEZyYW1lYnVmZmVyKF90aGlzLmdsLCBvcHRpb25zKTtcbiAgICB9O1xuXG4gICAgdGhpcy51c2VGcmFtZWJ1ZmZlciA9IGZ1bmN0aW9uIChmcmFtZWJ1ZmZlciwgZHJhd0NvbW1hbmRzKSB7XG4gICAgICBfdGhpcy5nbCh7XG4gICAgICAgIGZyYW1lYnVmZmVyOiBmcmFtZWJ1ZmZlciA/IGZyYW1lYnVmZmVyLmdldCgpIDogbnVsbFxuICAgICAgfSkoZHJhd0NvbW1hbmRzKTtcbiAgICB9O1xuXG4gICAgdGhpcy5jcmVhdGVDb21wdXRlTW9kZWwgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9yZWYzID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTMoY29udGV4dCkge1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUzJChfY29udGV4dDMpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDMucHJldiA9IF9jb250ZXh0My5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQzLmFicnVwdChcInJldHVyblwiLCBuZXcgUmVnbENvbXB1dGVNb2RlbChfdGhpcy5nbCwgY29udGV4dCkpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDMuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTMpO1xuICAgICAgfSkpO1xuXG4gICAgICByZXR1cm4gZnVuY3Rpb24gKF94Mykge1xuICAgICAgICByZXR1cm4gX3JlZjMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgfSgpO1xuXG4gICAgdGhpcy5jbGVhciA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICAvLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWdsLXByb2plY3QvcmVnbC9ibG9iL2doLXBhZ2VzL0FQSS5tZCNjbGVhci10aGUtZHJhdy1idWZmZXJcbiAgICAgIHZhciBjb2xvciA9IG9wdGlvbnMuY29sb3IsXG4gICAgICAgICAgZGVwdGggPSBvcHRpb25zLmRlcHRoLFxuICAgICAgICAgIHN0ZW5jaWwgPSBvcHRpb25zLnN0ZW5jaWwsXG4gICAgICAgICAgX29wdGlvbnMkZnJhbWVidWZmZXIgPSBvcHRpb25zLmZyYW1lYnVmZmVyLFxuICAgICAgICAgIGZyYW1lYnVmZmVyID0gX29wdGlvbnMkZnJhbWVidWZmZXIgPT09IHZvaWQgMCA/IG51bGwgOiBfb3B0aW9ucyRmcmFtZWJ1ZmZlcjtcbiAgICAgIHZhciByZWdsQ2xlYXJPcHRpb25zID0ge1xuICAgICAgICBjb2xvcjogY29sb3IsXG4gICAgICAgIGRlcHRoOiBkZXB0aCxcbiAgICAgICAgc3RlbmNpbDogc3RlbmNpbFxuICAgICAgfTtcbiAgICAgIHJlZ2xDbGVhck9wdGlvbnMuZnJhbWVidWZmZXIgPSBmcmFtZWJ1ZmZlciA9PT0gbnVsbCA/IGZyYW1lYnVmZmVyIDogZnJhbWVidWZmZXIuZ2V0KCk7XG5cbiAgICAgIF90aGlzLmdsLmNsZWFyKHJlZ2xDbGVhck9wdGlvbnMpO1xuICAgIH07XG5cbiAgICB0aGlzLnNldFNjaXNzb3IgPSBmdW5jdGlvbiAoc2Npc3Nvcikge1xuICAgICAgaWYgKF90aGlzLmdsICYmIF90aGlzLmdsLl9nbCkge1xuICAgICAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy96aC1DTi9kb2NzL1dlYi9BUEkvV2ViR0xSZW5kZXJpbmdDb250ZXh0L3NjaXNzb3JcbiAgICAgICAgaWYgKHNjaXNzb3IuZW5hYmxlICYmIHNjaXNzb3IuYm94KSB7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coc2Npc3Nvci5ib3gpO1xuICAgICAgICAgIF90aGlzLmdsLl9nbC5lbmFibGUoZ2wuU0NJU1NPUl9URVNUKTtcblxuICAgICAgICAgIF90aGlzLmdsLl9nbC5zY2lzc29yKHNjaXNzb3IuYm94LngsIHNjaXNzb3IuYm94LnksIHNjaXNzb3IuYm94LndpZHRoLCBzY2lzc29yLmJveC5oZWlnaHQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIF90aGlzLmdsLl9nbC5kaXNhYmxlKGdsLlNDSVNTT1JfVEVTVCk7XG4gICAgICAgIH1cblxuICAgICAgICBfdGhpcy5nbC5fcmVmcmVzaCgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB0aGlzLnZpZXdwb3J0ID0gZnVuY3Rpb24gKF9yZWY0KSB7XG4gICAgICB2YXIgeCA9IF9yZWY0LngsXG4gICAgICAgICAgeSA9IF9yZWY0LnksXG4gICAgICAgICAgd2lkdGggPSBfcmVmNC53aWR0aCxcbiAgICAgICAgICBoZWlnaHQgPSBfcmVmNC5oZWlnaHQ7XG5cbiAgICAgIGlmIChfdGhpcy5nbCAmJiBfdGhpcy5nbC5fZ2wpIHtcbiAgICAgICAgLy8gdXNlIFdlYkdMIGNvbnRleHQgZGlyZWN0bHlcbiAgICAgICAgLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmVnbC1wcm9qZWN0L3JlZ2wvYmxvYi9naC1wYWdlcy9BUEkubWQjdW5zYWZlLWVzY2FwZS1oYXRjaFxuICAgICAgICBfdGhpcy5nbC5fZ2wudmlld3BvcnQoeCwgeSwgd2lkdGgsIGhlaWdodCk7XG5cbiAgICAgICAgX3RoaXMuZ2wuX3JlZnJlc2goKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy5yZWFkUGl4ZWxzID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIHZhciBmcmFtZWJ1ZmZlciA9IG9wdGlvbnMuZnJhbWVidWZmZXIsXG4gICAgICAgICAgeCA9IG9wdGlvbnMueCxcbiAgICAgICAgICB5ID0gb3B0aW9ucy55LFxuICAgICAgICAgIHdpZHRoID0gb3B0aW9ucy53aWR0aCxcbiAgICAgICAgICBoZWlnaHQgPSBvcHRpb25zLmhlaWdodDtcbiAgICAgIHZhciByZWFkUGl4ZWxzT3B0aW9ucyA9IHtcbiAgICAgICAgeDogeCxcbiAgICAgICAgeTogeSxcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgfTtcblxuICAgICAgaWYgKGZyYW1lYnVmZmVyKSB7XG4gICAgICAgIHJlYWRQaXhlbHNPcHRpb25zLmZyYW1lYnVmZmVyID0gZnJhbWVidWZmZXIuZ2V0KCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBfdGhpcy5nbC5yZWFkKHJlYWRQaXhlbHNPcHRpb25zKTtcbiAgICB9O1xuXG4gICAgdGhpcy5nZXRDYW52YXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gX3RoaXMuJGNhbnZhcztcbiAgICB9O1xuXG4gICAgdGhpcy5nZXRHTENvbnRleHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gX3RoaXMuZ2wuX2dsO1xuICAgIH07XG5cbiAgICB0aGlzLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoX3RoaXMuZ2wpIHtcbiAgICAgICAgLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmVnbC1wcm9qZWN0L3JlZ2wvYmxvYi9naC1wYWdlcy9BUEkubWQjY2xlYW4tdXBcbiAgICAgICAgX3RoaXMuZ2wuZGVzdHJveSgpO1xuXG4gICAgICAgIF90aGlzLmluaXRlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoV2ViR0xFbmdpbmUsIFt7XG4gICAga2V5OiBcImluaXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9pbml0ID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTQoY2ZnKSB7XG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZTQkKF9jb250ZXh0NCkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0NC5wcmV2ID0gX2NvbnRleHQ0Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pbml0ZWQpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gMjtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDQuYWJydXB0KFwicmV0dXJuXCIpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICB0aGlzLiRjYW52YXMgPSBjZmcuY2FudmFzOyAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dHlwZWRlZlxuXG4gICAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSA1O1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICAgICAgICByZWdsKHtcbiAgICAgICAgICAgICAgICAgICAgY2FudmFzOiBjZmcuY2FudmFzLFxuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgYWxwaGE6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgLy8gdXNlIFRBQSBpbnN0ZWFkIG9mIE1TQUFcbiAgICAgICAgICAgICAgICAgICAgICAvLyBAc2VlIGh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L3dlYmdsL3NwZWNzLzEuMC8jNS4yLjFcbiAgICAgICAgICAgICAgICAgICAgICBhbnRpYWxpYXM6IGNmZy5hbnRpYWxpYXMsXG4gICAgICAgICAgICAgICAgICAgICAgcHJlbXVsdGlwbGllZEFscGhhOiB0cnVlIC8vIHByZXNlcnZlRHJhd2luZ0J1ZmZlcjogZmFsc2UsXG5cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcGl4ZWxSYXRpbzogMSxcbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogdXNlIGV4dGVuc2lvbnNcbiAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uczogWydPRVNfZWxlbWVudF9pbmRleF91aW50JywgJ09FU190ZXh0dXJlX2Zsb2F0JywgJ09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcycsIC8vIHdpcmVmcmFtZVxuICAgICAgICAgICAgICAgICAgICAnYW5nbGVfaW5zdGFuY2VkX2FycmF5cycgLy8gVlNNIHNoYWRvdyBtYXBcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxFeHRlbnNpb25zOiBbJ0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYycsICdFWFRfYmxlbmRfbWlubWF4JywgJ1dFQkdMX2RlcHRoX3RleHR1cmUnXSxcbiAgICAgICAgICAgICAgICAgICAgcHJvZmlsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgb25Eb25lOiBmdW5jdGlvbiBvbkRvbmUoZXJyLCByKSB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGVyciB8fCAhcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgfSAvLyBAdHMtaWdub3JlXG5cblxuICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICB0aGlzLmdsID0gX2NvbnRleHQ0LnNlbnQ7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0ZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDQuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTQsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBpbml0KF94NCkge1xuICAgICAgICByZXR1cm4gX2luaXQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGluaXQ7XG4gICAgfSgpXG4gIH0sIHtcbiAgICBrZXk6IFwiaXNGbG9hdFN1cHBvcnRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc0Zsb2F0U3VwcG9ydGVkKCkge1xuICAgICAgLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vYW50dmlzL0dXZWJHUFVFbmdpbmUvaXNzdWVzLzI2XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gdGhpcy5nbC5saW1pdHMucmVhZEZsb2F0O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJiZWdpbkZyYW1lXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGJlZ2luRnJhbWUoKSB7Ly9cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZW5kRnJhbWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZW5kRnJhbWUoKSB7Ly9cbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gV2ViR0xFbmdpbmU7XG59KCksIF90ZW1wKSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgl/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUAttribute.js":
/*!******************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUAttribute.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 WebGPUAttribute; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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\nvar WebGPUAttribute = /*#__PURE__*/function () {\n function WebGPUAttribute(engine, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, WebGPUAttribute);\n\n this.engine = engine;\n this.options = options;\n this.attribute = void 0;\n this.buffer = void 0;\n var _options = options,\n buffer = _options.buffer,\n offset = _options.offset,\n stride = _options.stride,\n normalized = _options.normalized,\n size = _options.size,\n divisor = _options.divisor,\n arrayStride = _options.arrayStride,\n attributes = _options.attributes,\n stepMode = _options.stepMode;\n this.buffer = buffer;\n this.attribute = {\n buffer: buffer.get(),\n offset: offset || 0,\n stride: stride || 0,\n normalized: normalized || false,\n divisor: divisor || 0,\n arrayStride: arrayStride || 0,\n // @ts-ignore\n attributes: attributes,\n stepMode: stepMode || 'vertex'\n };\n\n if (size) {\n this.attribute.size = size;\n }\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(WebGPUAttribute, [{\n key: \"get\",\n value: function get() {\n return this.attribute;\n }\n }, {\n key: \"updateBuffer\",\n value: function updateBuffer(options) {\n this.buffer.subData(options);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.buffer.destroy();\n }\n }]);\n\n return WebGPUAttribute;\n}();\n\n\n//# sourceMappingURL=WebGPUAttribute.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ3B1L1dlYkdQVUF0dHJpYnV0ZS5qcz8zZTExIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvRTtBQUNOOztBQUU5RDtBQUNBO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQzs7QUFFcUM7QUFDdEMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ3B1L1dlYkdQVUF0dHJpYnV0ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcblxudmFyIFdlYkdQVUF0dHJpYnV0ZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFdlYkdQVUF0dHJpYnV0ZShlbmdpbmUsIG9wdGlvbnMpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgV2ViR1BVQXR0cmlidXRlKTtcblxuICAgIHRoaXMuZW5naW5lID0gZW5naW5lO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgdGhpcy5hdHRyaWJ1dGUgPSB2b2lkIDA7XG4gICAgdGhpcy5idWZmZXIgPSB2b2lkIDA7XG4gICAgdmFyIF9vcHRpb25zID0gb3B0aW9ucyxcbiAgICAgICAgYnVmZmVyID0gX29wdGlvbnMuYnVmZmVyLFxuICAgICAgICBvZmZzZXQgPSBfb3B0aW9ucy5vZmZzZXQsXG4gICAgICAgIHN0cmlkZSA9IF9vcHRpb25zLnN0cmlkZSxcbiAgICAgICAgbm9ybWFsaXplZCA9IF9vcHRpb25zLm5vcm1hbGl6ZWQsXG4gICAgICAgIHNpemUgPSBfb3B0aW9ucy5zaXplLFxuICAgICAgICBkaXZpc29yID0gX29wdGlvbnMuZGl2aXNvcixcbiAgICAgICAgYXJyYXlTdHJpZGUgPSBfb3B0aW9ucy5hcnJheVN0cmlkZSxcbiAgICAgICAgYXR0cmlidXRlcyA9IF9vcHRpb25zLmF0dHJpYnV0ZXMsXG4gICAgICAgIHN0ZXBNb2RlID0gX29wdGlvbnMuc3RlcE1vZGU7XG4gICAgdGhpcy5idWZmZXIgPSBidWZmZXI7XG4gICAgdGhpcy5hdHRyaWJ1dGUgPSB7XG4gICAgICBidWZmZXI6IGJ1ZmZlci5nZXQoKSxcbiAgICAgIG9mZnNldDogb2Zmc2V0IHx8IDAsXG4gICAgICBzdHJpZGU6IHN0cmlkZSB8fCAwLFxuICAgICAgbm9ybWFsaXplZDogbm9ybWFsaXplZCB8fCBmYWxzZSxcbiAgICAgIGRpdmlzb3I6IGRpdmlzb3IgfHwgMCxcbiAgICAgIGFycmF5U3RyaWRlOiBhcnJheVN0cmlkZSB8fCAwLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgYXR0cmlidXRlczogYXR0cmlidXRlcyxcbiAgICAgIHN0ZXBNb2RlOiBzdGVwTW9kZSB8fCAndmVydGV4J1xuICAgIH07XG5cbiAgICBpZiAoc2l6ZSkge1xuICAgICAgdGhpcy5hdHRyaWJ1dGUuc2l6ZSA9IHNpemU7XG4gICAgfVxuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFdlYkdQVUF0dHJpYnV0ZSwgW3tcbiAgICBrZXk6IFwiZ2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidXBkYXRlQnVmZmVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVwZGF0ZUJ1ZmZlcihvcHRpb25zKSB7XG4gICAgICB0aGlzLmJ1ZmZlci5zdWJEYXRhKG9wdGlvbnMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkZXN0cm95XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgICB0aGlzLmJ1ZmZlci5kZXN0cm95KCk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFdlYkdQVUF0dHJpYnV0ZTtcbn0oKTtcblxuZXhwb3J0IHsgV2ViR1BVQXR0cmlidXRlIGFzIGRlZmF1bHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVdlYkdQVUF0dHJpYnV0ZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUAttribute.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUBuffer.js":
/*!***************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUBuffer.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 WebGPUBuffer; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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 _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/_@webgpu_types@0.0.31@@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\n\nvar WebGPUBuffer = /*#__PURE__*/function () {\n function WebGPUBuffer(engine, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, WebGPUBuffer);\n\n this.engine = engine;\n this.options = options;\n this.buffer = void 0;\n var _options = options,\n data = _options.data,\n usage = _options.usage,\n type = _options.type;\n this.buffer = this.createBuffer(data instanceof Array ? new Float32Array(data) : data, // TODO: WebGL 和 WebGPU buffer usage 映射关系\n usage || _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__[\"BufferUsage\"].Vertex | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__[\"BufferUsage\"].CopyDst);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(WebGPUBuffer, [{\n key: \"get\",\n value: function get() {\n return this.buffer;\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.buffer.destroy();\n }\n }, {\n key: \"subData\",\n value: function subData(_ref) {\n var data = _ref.data,\n offset = _ref.offset;\n this.setSubData(this.buffer, offset, data instanceof Array ? new Float32Array(data) : data);\n }\n }, {\n key: \"createBuffer\",\n value: function createBuffer(view, flags) {\n // @ts-ignore\n var padding = view.byteLength % 4;\n var verticesBufferDescriptor = {\n // @ts-ignore\n size: view.byteLength + padding,\n usage: flags\n };\n var buffer = this.engine.device.createBuffer(verticesBufferDescriptor);\n this.setSubData(buffer, 0, view);\n return buffer;\n }\n /**\n * 不同于 Babylon.js 的版本,使用最新的 GPUQueue.writeBuffer 方法\n * @see https://gpuweb.github.io/gpuweb/#dom-gpuqueue-writebuffer\n * 已废弃创建一个临时的 mapped buffer 用于拷贝数据 @see https://gpuweb.github.io/gpuweb/#GPUDevice-createBufferMapped\n * @see https://github.com/gpuweb/gpuweb/blob/master/design/BufferOperations.md#updating-data-to-an-existing-buffer-like-webgls-buffersubdata\n */\n\n }, {\n key: \"setSubData\",\n value: function setSubData(destBuffer, destOffset, srcArrayBuffer) {\n // deprecated API setSubData\n // destBuffer.setSubData(0, srcArrayBuffer);\n // deprecated API createBufferMapped\n // use createBuffer & getMappedRange instead\n // const [srcBuffer, arrayBuffer] = this.engine.device.createBufferMapped({\n // size: byteCount,\n // usage: WebGPUConstants.BufferUsage.CopySrc,\n // });\n var queue = _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"isSafari\"] ? // @ts-ignore\n this.engine.device.getQueue() : this.engine.device.defaultQueue; // @ts-ignore\n\n queue.writeBuffer(destBuffer, destOffset, srcArrayBuffer);\n }\n }]);\n\n return WebGPUBuffer;\n}();\n\n\n//# sourceMappingURL=WebGPUBuffer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5qcz9iNGI5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvRTtBQUNOO0FBQ2Y7QUFDaUI7O0FBRWhFO0FBQ0E7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSx3RUFBMkIsVUFBVSx3RUFBMkI7QUFDN0U7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWLGtCQUFrQiw0REFBUTtBQUMxQixzRUFBc0U7O0FBRXRFO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQzs7QUFFa0M7QUFDbkMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCB7IGlzU2FmYXJpIH0gZnJvbSAnQGFudHYvZy13ZWJncHUtY29yZSc7XG5pbXBvcnQgKiBhcyBXZWJHUFVDb25zdGFudHMgZnJvbSAnQHdlYmdwdS90eXBlcy9kaXN0L2NvbnN0YW50cyc7XG5cbnZhciBXZWJHUFVCdWZmZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBXZWJHUFVCdWZmZXIoZW5naW5lLCBvcHRpb25zKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFdlYkdQVUJ1ZmZlcik7XG5cbiAgICB0aGlzLmVuZ2luZSA9IGVuZ2luZTtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMuYnVmZmVyID0gdm9pZCAwO1xuICAgIHZhciBfb3B0aW9ucyA9IG9wdGlvbnMsXG4gICAgICAgIGRhdGEgPSBfb3B0aW9ucy5kYXRhLFxuICAgICAgICB1c2FnZSA9IF9vcHRpb25zLnVzYWdlLFxuICAgICAgICB0eXBlID0gX29wdGlvbnMudHlwZTtcbiAgICB0aGlzLmJ1ZmZlciA9IHRoaXMuY3JlYXRlQnVmZmVyKGRhdGEgaW5zdGFuY2VvZiBBcnJheSA/IG5ldyBGbG9hdDMyQXJyYXkoZGF0YSkgOiBkYXRhLCAvLyBUT0RPOiBXZWJHTCDlkowgV2ViR1BVIGJ1ZmZlciB1c2FnZSDmmKDlsITlhbPns7tcbiAgICB1c2FnZSB8fCBXZWJHUFVDb25zdGFudHMuQnVmZmVyVXNhZ2UuVmVydGV4IHwgV2ViR1BVQ29uc3RhbnRzLkJ1ZmZlclVzYWdlLkNvcHlEc3QpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFdlYkdQVUJ1ZmZlciwgW3tcbiAgICBrZXk6IFwiZ2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmJ1ZmZlcjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGVzdHJveVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgICAgdGhpcy5idWZmZXIuZGVzdHJveSgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzdWJEYXRhXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN1YkRhdGEoX3JlZikge1xuICAgICAgdmFyIGRhdGEgPSBfcmVmLmRhdGEsXG4gICAgICAgICAgb2Zmc2V0ID0gX3JlZi5vZmZzZXQ7XG4gICAgICB0aGlzLnNldFN1YkRhdGEodGhpcy5idWZmZXIsIG9mZnNldCwgZGF0YSBpbnN0YW5jZW9mIEFycmF5ID8gbmV3IEZsb2F0MzJBcnJheShkYXRhKSA6IGRhdGEpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVCdWZmZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlQnVmZmVyKHZpZXcsIGZsYWdzKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB2YXIgcGFkZGluZyA9IHZpZXcuYnl0ZUxlbmd0aCAlIDQ7XG4gICAgICB2YXIgdmVydGljZXNCdWZmZXJEZXNjcmlwdG9yID0ge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHNpemU6IHZpZXcuYnl0ZUxlbmd0aCArIHBhZGRpbmcsXG4gICAgICAgIHVzYWdlOiBmbGFnc1xuICAgICAgfTtcbiAgICAgIHZhciBidWZmZXIgPSB0aGlzLmVuZ2luZS5kZXZpY2UuY3JlYXRlQnVmZmVyKHZlcnRpY2VzQnVmZmVyRGVzY3JpcHRvcik7XG4gICAgICB0aGlzLnNldFN1YkRhdGEoYnVmZmVyLCAwLCB2aWV3KTtcbiAgICAgIHJldHVybiBidWZmZXI7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOS4jeWQjOS6jiBCYWJ5bG9uLmpzIOeahOeJiOacrO+8jOS9v+eUqOacgOaWsOeahCBHUFVRdWV1ZS53cml0ZUJ1ZmZlciDmlrnms5VcbiAgICAgKiBAc2VlIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2RvbS1ncHVxdWV1ZS13cml0ZWJ1ZmZlclxuICAgICAqIOW3suW6n+W8g+WIm+W7uuS4gOS4quS4tOaXtueahCBtYXBwZWQgYnVmZmVyIOeUqOS6juaLt+i0neaVsOaNriBAc2VlIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI0dQVURldmljZS1jcmVhdGVCdWZmZXJNYXBwZWRcbiAgICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ncHV3ZWIvZ3B1d2ViL2Jsb2IvbWFzdGVyL2Rlc2lnbi9CdWZmZXJPcGVyYXRpb25zLm1kI3VwZGF0aW5nLWRhdGEtdG8tYW4tZXhpc3RpbmctYnVmZmVyLWxpa2Utd2ViZ2xzLWJ1ZmZlcnN1YmRhdGFcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInNldFN1YkRhdGFcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0U3ViRGF0YShkZXN0QnVmZmVyLCBkZXN0T2Zmc2V0LCBzcmNBcnJheUJ1ZmZlcikge1xuICAgICAgLy8gZGVwcmVjYXRlZCBBUEkgc2V0U3ViRGF0YVxuICAgICAgLy8gZGVzdEJ1ZmZlci5zZXRTdWJEYXRhKDAsIHNyY0FycmF5QnVmZmVyKTtcbiAgICAgIC8vIGRlcHJlY2F0ZWQgQVBJIGNyZWF0ZUJ1ZmZlck1hcHBlZFxuICAgICAgLy8gdXNlIGNyZWF0ZUJ1ZmZlciAmIGdldE1hcHBlZFJhbmdlIGluc3RlYWRcbiAgICAgIC8vIGNvbnN0IFtzcmNCdWZmZXIsIGFycmF5QnVmZmVyXSA9IHRoaXMuZW5naW5lLmRldmljZS5jcmVhdGVCdWZmZXJNYXBwZWQoe1xuICAgICAgLy8gICBzaXplOiBieXRlQ291bnQsXG4gICAgICAvLyAgIHVzYWdlOiBXZWJHUFVDb25zdGFudHMuQnVmZmVyVXNhZ2UuQ29weVNyYyxcbiAgICAgIC8vIH0pO1xuICAgICAgdmFyIHF1ZXVlID0gaXNTYWZhcmkgPyAvLyBAdHMtaWdub3JlXG4gICAgICB0aGlzLmVuZ2luZS5kZXZpY2UuZ2V0UXVldWUoKSA6IHRoaXMuZW5naW5lLmRldmljZS5kZWZhdWx0UXVldWU7IC8vIEB0cy1pZ25vcmVcblxuICAgICAgcXVldWUud3JpdGVCdWZmZXIoZGVzdEJ1ZmZlciwgZGVzdE9mZnNldCwgc3JjQXJyYXlCdWZmZXIpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBXZWJHUFVCdWZmZXI7XG59KCk7XG5cbmV4cG9ydCB7IFdlYkdQVUJ1ZmZlciBhcyBkZWZhdWx0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1XZWJHUFVCdWZmZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUBuffer.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUComputeModel.js":
/*!*********************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUComputeModel.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 WebGPUComputeModel; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__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@7.16.3@@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@7.16.3@@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@7.16.3@@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@7.16.3@@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 _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/_@webgpu_types@0.0.31@@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _utils_is_number__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/is-number */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/is-number.js\");\n/* harmony import */ var _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./WebGPUBuffer */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUBuffer.js\");\n\n\n\n\n\n\n\n\n\n\nvar WebGPUComputeModel = /*#__PURE__*/function () {\n /**\n * 用于后续渲染时动态更新\n */\n function WebGPUComputeModel(engine, context) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, WebGPUComputeModel);\n\n this.engine = engine;\n this.context = context;\n this.entity = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"createEntity\"])();\n this.uniformGPUBufferLayout = [];\n this.uniformBuffer = void 0;\n this.vertexBuffers = {};\n this.outputBuffer = void 0;\n this.bindGroupEntries = void 0;\n this.bindGroup = void 0;\n this.computePipeline = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(WebGPUComputeModel, [{\n key: \"init\",\n value: function () {\n var _init = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var _this = this;\n\n var _yield$this$compileCo, computeStage, buffers, uniforms, bufferBindingIndex, offset, mergedUniformData;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.compileComputePipelineStageDescriptor(this.context.shader);\n\n case 2:\n _yield$this$compileCo = _context.sent;\n computeStage = _yield$this$compileCo.computeStage;\n buffers = this.context.uniforms.filter(function (uniform) {\n return uniform.storageClass === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"STORAGE_CLASS\"].StorageBuffer;\n });\n uniforms = this.context.uniforms.filter(function (uniform) {\n return uniform.storageClass === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"STORAGE_CLASS\"].Uniform;\n });\n bufferBindingIndex = uniforms.length ? 1 : 0;\n this.bindGroupEntries = [];\n\n if (bufferBindingIndex) {\n offset = 0; // FIXME: 所有 uniform 合并成一个 buffer,固定使用 Float32Array 存储,确实会造成一些内存的浪费\n // we use std140 layout @see https://www.khronos.org/opengl/wiki/Interface_Block_(GLSL)\n\n mergedUniformData = [];\n uniforms.forEach(function (uniform) {\n if (Object(_utils_is_number__WEBPACK_IMPORTED_MODULE_7__[\"isNumber\"])(uniform.data)) {\n _this.uniformGPUBufferLayout.push({\n name: uniform.name,\n offset: offset\n });\n\n offset += 4; // @ts-ignore\n\n mergedUniformData.push(uniform.data);\n } else {\n var _uniform$data;\n\n // @ts-ignore\n var originDataLength = ((_uniform$data = uniform.data) === null || _uniform$data === void 0 ? void 0 : _uniform$data.length) || 1;\n\n if (originDataLength === 3) {\n // vec3 -> vec4\n // @see http://ptgmedia.pearsoncmg.com/images/9780321552624/downloads/0321552628_AppL.pdf\n originDataLength = 4; // @ts-ignore\n\n uniform.data.push(0);\n } // 4 elements per block/line\n\n\n var padding = offset / 4 % 4;\n\n if (padding > 0) {\n var space = 4 - padding;\n\n if (originDataLength > 1 && originDataLength <= space) {\n if (originDataLength === 2) {\n if (space === 3) {\n offset += 4;\n mergedUniformData.push(0);\n } // @ts-ignore\n\n\n mergedUniformData.push.apply(mergedUniformData, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(uniform.data));\n\n _this.uniformGPUBufferLayout.push({\n name: uniform.name,\n offset: offset\n });\n }\n } else {\n for (var i = 0; i < space; i++) {\n offset += 4;\n mergedUniformData.push(0);\n } // @ts-ignore\n\n\n mergedUniformData.push.apply(mergedUniformData, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(uniform.data));\n\n _this.uniformGPUBufferLayout.push({\n name: uniform.name,\n offset: offset\n });\n }\n }\n\n offset += 4 * originDataLength;\n }\n });\n this.uniformBuffer = new _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_8__[\"default\"](this.engine, {\n // TODO: 处理 Struct 和 boolean\n // @ts-ignore\n data: mergedUniformData instanceof Array ? // @ts-ignore\n new Float32Array(mergedUniformData) : mergedUniformData,\n usage: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__[\"BufferUsage\"].Uniform | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__[\"BufferUsage\"].CopyDst\n });\n this.bindGroupEntries.push({\n binding: 0,\n resource: {\n buffer: this.uniformBuffer.get()\n }\n });\n } // create GPUBuffers for storeage buffers\n\n\n buffers.forEach(function (buffer) {\n if (buffer.data !== null) {\n if (buffer.type === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"AST_TOKEN_TYPES\"].Vector4FloatArray || buffer.type === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"AST_TOKEN_TYPES\"].FloatArray) {\n var gpuBuffer;\n\n if (buffer.name === _this.context.output.name) {\n gpuBuffer = new _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_8__[\"default\"](_this.engine, {\n // @ts-ignore\n data: isFinite(Number(buffer.data)) ? [buffer.data] : buffer.data,\n usage: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__[\"BufferUsage\"].Storage | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__[\"BufferUsage\"].CopyDst | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__[\"BufferUsage\"].CopySrc\n });\n _this.outputBuffer = gpuBuffer;\n _this.context.output = {\n name: buffer.name,\n // @ts-ignore\n length: isFinite(Number(buffer.data)) ? 1 : buffer.data.length,\n typedArrayConstructor: Float32Array,\n gpuBuffer: gpuBuffer.get()\n };\n } else {\n if (buffer.isReferer) {\n // @ts-ignore\n if (buffer.data.model && buffer.data.model.outputBuffer) {\n // @ts-ignore\n gpuBuffer = buffer.data.model.outputBuffer;\n } else {// referred kernel haven't been executed\n }\n } else {\n gpuBuffer = new _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_8__[\"default\"](_this.engine, {\n // @ts-ignore\n data: isFinite(Number(buffer.data)) ? [buffer.data] : buffer.data,\n usage: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__[\"BufferUsage\"].Storage | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__[\"BufferUsage\"].CopyDst | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__[\"BufferUsage\"].CopySrc\n });\n }\n } // @ts-ignore\n\n\n _this.vertexBuffers[buffer.name] = gpuBuffer;\n\n _this.bindGroupEntries.push({\n binding: bufferBindingIndex,\n resource: {\n name: buffer.name,\n refer: gpuBuffer ? undefined : buffer.data,\n // @ts-ignore\n buffer: gpuBuffer ? gpuBuffer.get() : undefined\n }\n });\n\n bufferBindingIndex++;\n }\n }\n }); // create compute pipeline layout\n\n this.computePipeline = this.engine.device.createComputePipeline({\n computeStage: computeStage\n });\n console.log(this.bindGroupEntries);\n this.bindGroup = this.engine.device.createBindGroup({\n layout: this.computePipeline.getBindGroupLayout(0),\n entries: this.bindGroupEntries\n });\n\n case 13:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function init() {\n return _init.apply(this, arguments);\n }\n\n return init;\n }()\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this2 = this;\n\n if (this.uniformBuffer) {\n this.uniformBuffer.destroy();\n }\n\n Object.keys(this.vertexBuffers).forEach(function (bufferName) {\n return _this2.vertexBuffers[bufferName].destroy();\n });\n }\n }, {\n key: \"readData\",\n value: function () {\n var _readData = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2() {\n var output, length, typedArrayConstructor, gpuBuffer, byteCount, gpuReadBuffer, encoder, queue, arraybuffer, typedArray;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n output = this.context.output;\n\n if (!output) {\n _context2.next = 16;\n break;\n }\n\n length = output.length, typedArrayConstructor = output.typedArrayConstructor, gpuBuffer = output.gpuBuffer;\n\n if (!gpuBuffer) {\n _context2.next = 16;\n break;\n }\n\n // await gpuBuffer.mapAsync(WebGPUConstants.MapMode.Read);\n // const arraybuffer = gpuBuffer.getMappedRange();\n // let arraybuffer;\n // if (isSafari) {\n // arraybuffer = await gpuBuffer.mapReadAsync();\n // } else {\n byteCount = length * typedArrayConstructor.BYTES_PER_ELEMENT; // @see https://developers.google.com/web/updates/2019/08/get-started-with-gpu-compute-on-the-web\n\n gpuReadBuffer = this.engine.device.createBuffer({\n size: byteCount,\n usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ\n });\n encoder = this.engine.device.createCommandEncoder();\n encoder.copyBufferToBuffer(gpuBuffer, 0, gpuReadBuffer, 0, byteCount);\n queue = _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"isSafari\"] ? // @ts-ignore\n this.engine.device.getQueue() : this.engine.device.defaultQueue;\n queue.submit([encoder.finish()]);\n _context2.next = 12;\n return gpuReadBuffer.mapAsync(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_6__[\"MapMode\"].Read);\n\n case 12:\n arraybuffer = gpuReadBuffer.getMappedRange();\n typedArray = new typedArrayConstructor(arraybuffer.slice(0));\n gpuReadBuffer.unmap();\n return _context2.abrupt(\"return\", typedArray);\n\n case 16:\n return _context2.abrupt(\"return\", new Float32Array());\n\n case 17:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function readData() {\n return _readData.apply(this, arguments);\n }\n\n return readData;\n }()\n }, {\n key: \"run\",\n value: function run() {\n if (this.engine.currentComputePass) {\n var _this$engine$currentC;\n\n this.engine.currentComputePass.setPipeline(this.computePipeline); // this.bindGroupEntries.forEach((entry) => {\n // if (!entry.resource.buffer) {\n // // get referred kernel's output\n // const gpuBuffer = (entry.resource.refer.model as WebGPUComputeModel)\n // .outputBuffer;\n // this.vertexBuffers[entry.resource.name] = gpuBuffer;\n // entry.resource.buffer = gpuBuffer.get();\n // }\n // });\n // const bindGroup = this.engine.device.createBindGroup({\n // layout: this.computePipeline.getBindGroupLayout(0),\n // entries: this.bindGroupEntries,\n // });\n\n this.engine.currentComputePass.setBindGroup(0, this.bindGroup);\n\n (_this$engine$currentC = this.engine.currentComputePass).dispatch.apply(_this$engine$currentC, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(this.context.dispatch));\n }\n }\n }, {\n key: \"updateBuffer\",\n value: function updateBuffer(bufferName, data) {\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var buffer = this.vertexBuffers[bufferName];\n\n if (buffer) {\n buffer.subData({\n data: data,\n offset: offset\n });\n }\n }\n }, {\n key: \"updateUniform\",\n value: function updateUniform(uniformName, data) {\n var layout = this.uniformGPUBufferLayout.find(function (l) {\n return l.name === uniformName;\n });\n\n if (layout) {\n this.uniformBuffer.subData({\n data: Number.isFinite(data) ? new Float32Array([data]) : new Float32Array(data),\n offset: layout.offset\n });\n }\n }\n }, {\n key: \"confirmInput\",\n value: function confirmInput(model, inputName) {\n // copy output GPUBuffer of kernel\n var inputBuffer = this.vertexBuffers[inputName];\n var outputBuffer = model.outputBuffer;\n\n if (inputBuffer && outputBuffer && inputBuffer !== outputBuffer) {\n var encoder = this.engine.device.createCommandEncoder();\n var _context$output = model.context.output,\n length = _context$output.length,\n typedArrayConstructor = _context$output.typedArrayConstructor;\n var byteCount = length * typedArrayConstructor.BYTES_PER_ELEMENT;\n encoder.copyBufferToBuffer(outputBuffer.get(), 0, inputBuffer.get(), 0, byteCount);\n var queue = _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"isSafari\"] ? // @ts-ignore\n this.engine.device.getQueue() : this.engine.device.defaultQueue;\n queue.submit([encoder.finish()]);\n }\n }\n }, {\n key: \"compileShaderToSpirV\",\n value: function compileShaderToSpirV(source, type, shaderVersion) {\n return this.compileRawShaderToSpirV(shaderVersion + source, type);\n }\n }, {\n key: \"compileRawShaderToSpirV\",\n value: function compileRawShaderToSpirV(source, type) {\n return this.engine.glslang.compileGLSL(source, type);\n }\n }, {\n key: \"compileComputePipelineStageDescriptor\",\n value: function () {\n var _compileComputePipelineStageDescriptor = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(computeCode) {\n var computeShader, shaderVersion;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n computeShader = computeCode;\n shaderVersion = '#version 450\\n';\n\n if (this.engine.options.useWGSL) {\n _context3.next = 6;\n break;\n }\n\n _context3.next = 5;\n return this.compileShaderToSpirV(computeCode, 'compute', shaderVersion);\n\n case 5:\n computeShader = _context3.sent;\n\n case 6:\n return _context3.abrupt(\"return\", {\n computeStage: {\n module: this.engine.device.createShaderModule({\n code: computeShader,\n // @ts-ignore\n isWHLSL: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"isSafari\"]\n }),\n entryPoint: 'main'\n }\n });\n\n case 7:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function compileComputePipelineStageDescriptor(_x) {\n return _compileComputePipelineStageDescriptor.apply(this, arguments);\n }\n\n return compileComputePipelineStageDescriptor;\n }()\n }]);\n\n return WebGPUComputeModel;\n}();\n\n\n//# sourceMappingURL=WebGPUComputeModel.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVNb2RlbC5qcz8wOWE1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkQ7QUFDYTtBQUNGO0FBQ0o7QUFDTjtBQUMrQjtBQUM3QjtBQUNsQjtBQUNKOztBQUUxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBLGtCQUFrQix3RUFBWTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0Esa0JBQWtCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUNyRTs7QUFFQTs7QUFFQSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0RBQWtELGlFQUFhO0FBQy9ELGlCQUFpQjtBQUNqQjtBQUNBLGtEQUFrRCxpRUFBYTtBQUMvRCxpQkFBaUI7QUFDakI7QUFDQTs7QUFFQTtBQUNBLDZCQUE2QjtBQUM3Qjs7QUFFQTtBQUNBO0FBQ0Esd0JBQXdCLGlFQUFRO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qjs7QUFFdkIsa0NBQWtDOztBQUVsQztBQUNBLHFCQUFxQjtBQUNyQjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2Qzs7QUFFN0M7QUFDQSx1QkFBdUI7OztBQUd2Qjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7OztBQUc3Qiw0RUFBNEUsK0VBQWtCOztBQUU5RjtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQSx5QkFBeUI7QUFDekIseUNBQXlDLFdBQVc7QUFDcEQ7QUFDQTtBQUNBLDJCQUEyQjs7O0FBRzNCLDBFQUEwRSwrRUFBa0I7O0FBRTVGO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkIsMkNBQTJDLHFEQUFZO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLHdFQUEyQixXQUFXLHdFQUEyQjtBQUM1RixtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQixpQkFBaUI7OztBQUdqQjtBQUNBO0FBQ0Esd0NBQXdDLG1FQUFlLHNDQUFzQyxtRUFBZTtBQUM1Rzs7QUFFQTtBQUNBLHdDQUF3QyxxREFBWTtBQUNwRDtBQUNBO0FBQ0EsaUNBQWlDLHdFQUEyQixXQUFXLHdFQUEyQixXQUFXLHdFQUEyQjtBQUN4SSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLE9BQU87QUFDbEM7QUFDQSx5QkFBeUI7QUFDekIsMENBQTBDLHFEQUFZO0FBQ3REO0FBQ0E7QUFDQSxtQ0FBbUMsd0VBQTJCLFdBQVcsd0VBQTJCLFdBQVcsd0VBQTJCO0FBQzFJLDJCQUEyQjtBQUMzQjtBQUNBLHVCQUF1Qjs7O0FBR3ZCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7O0FBRXZCO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixFQUFFOztBQUVuQjtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHNCQUFzQiw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDekU7QUFDQSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCLDZFQUE2RTs7QUFFN0U7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSx3QkFBd0IsNERBQVE7QUFDaEM7QUFDQTtBQUNBO0FBQ0EsOENBQThDLG9FQUF1Qjs7QUFFckU7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHlFQUF5RTtBQUN6RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQSxZQUFZOztBQUVaOztBQUVBLHVHQUF1RywrRUFBa0I7QUFDekg7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsNERBQVE7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLG1EQUFtRCw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDdEc7QUFDQSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsNERBQVE7QUFDdkMscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSxpQkFBaUI7O0FBRWpCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRXdDO0FBQ3pDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1lbmdpbmVAMC41LjZAQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdwdS9XZWJHUFVDb21wdXRlTW9kZWwuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX3JlZ2VuZXJhdG9yUnVudGltZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3JcIjtcbmltcG9ydCBfdG9Db25zdW1hYmxlQXJyYXkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXlcIjtcbmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yXCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgeyBBU1RfVE9LRU5fVFlQRVMsIGNyZWF0ZUVudGl0eSwgaXNTYWZhcmksIFNUT1JBR0VfQ0xBU1MgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCAqIGFzIFdlYkdQVUNvbnN0YW50cyBmcm9tICdAd2ViZ3B1L3R5cGVzL2Rpc3QvY29uc3RhbnRzJztcbmltcG9ydCB7IGlzTnVtYmVyIH0gZnJvbSAnLi4vdXRpbHMvaXMtbnVtYmVyJztcbmltcG9ydCBXZWJHUFVCdWZmZXIgZnJvbSAnLi9XZWJHUFVCdWZmZXInO1xuXG52YXIgV2ViR1BVQ29tcHV0ZU1vZGVsID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgLyoqXG4gICAqIOeUqOS6juWQjue7rea4suafk+aXtuWKqOaAgeabtOaWsFxuICAgKi9cbiAgZnVuY3Rpb24gV2ViR1BVQ29tcHV0ZU1vZGVsKGVuZ2luZSwgY29udGV4dCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBXZWJHUFVDb21wdXRlTW9kZWwpO1xuXG4gICAgdGhpcy5lbmdpbmUgPSBlbmdpbmU7XG4gICAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgICB0aGlzLmVudGl0eSA9IGNyZWF0ZUVudGl0eSgpO1xuICAgIHRoaXMudW5pZm9ybUdQVUJ1ZmZlckxheW91dCA9IFtdO1xuICAgIHRoaXMudW5pZm9ybUJ1ZmZlciA9IHZvaWQgMDtcbiAgICB0aGlzLnZlcnRleEJ1ZmZlcnMgPSB7fTtcbiAgICB0aGlzLm91dHB1dEJ1ZmZlciA9IHZvaWQgMDtcbiAgICB0aGlzLmJpbmRHcm91cEVudHJpZXMgPSB2b2lkIDA7XG4gICAgdGhpcy5iaW5kR3JvdXAgPSB2b2lkIDA7XG4gICAgdGhpcy5jb21wdXRlUGlwZWxpbmUgPSB2b2lkIDA7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoV2ViR1BVQ29tcHV0ZU1vZGVsLCBbe1xuICAgIGtleTogXCJpbml0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfaW5pdCA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgICAgdmFyIF95aWVsZCR0aGlzJGNvbXBpbGVDbywgY29tcHV0ZVN0YWdlLCBidWZmZXJzLCB1bmlmb3JtcywgYnVmZmVyQmluZGluZ0luZGV4LCBvZmZzZXQsIG1lcmdlZFVuaWZvcm1EYXRhO1xuXG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDI7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tcGlsZUNvbXB1dGVQaXBlbGluZVN0YWdlRGVzY3JpcHRvcih0aGlzLmNvbnRleHQuc2hhZGVyKTtcblxuICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgX3lpZWxkJHRoaXMkY29tcGlsZUNvID0gX2NvbnRleHQuc2VudDtcbiAgICAgICAgICAgICAgICBjb21wdXRlU3RhZ2UgPSBfeWllbGQkdGhpcyRjb21waWxlQ28uY29tcHV0ZVN0YWdlO1xuICAgICAgICAgICAgICAgIGJ1ZmZlcnMgPSB0aGlzLmNvbnRleHQudW5pZm9ybXMuZmlsdGVyKGZ1bmN0aW9uICh1bmlmb3JtKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdW5pZm9ybS5zdG9yYWdlQ2xhc3MgPT09IFNUT1JBR0VfQ0xBU1MuU3RvcmFnZUJ1ZmZlcjtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB1bmlmb3JtcyA9IHRoaXMuY29udGV4dC51bmlmb3Jtcy5maWx0ZXIoZnVuY3Rpb24gKHVuaWZvcm0pIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB1bmlmb3JtLnN0b3JhZ2VDbGFzcyA9PT0gU1RPUkFHRV9DTEFTUy5Vbmlmb3JtO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGJ1ZmZlckJpbmRpbmdJbmRleCA9IHVuaWZvcm1zLmxlbmd0aCA/IDEgOiAwO1xuICAgICAgICAgICAgICAgIHRoaXMuYmluZEdyb3VwRW50cmllcyA9IFtdO1xuXG4gICAgICAgICAgICAgICAgaWYgKGJ1ZmZlckJpbmRpbmdJbmRleCkge1xuICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gMDsgLy8gRklYTUU6IOaJgOaciSB1bmlmb3JtIOWQiOW5tuaIkOS4gOS4qiBidWZmZXLvvIzlm7rlrprkvb/nlKggRmxvYXQzMkFycmF5IOWtmOWCqO+8jOehruWunuS8mumAoOaIkOS4gOS6m+WGheWtmOeahOa1qui0uVxuICAgICAgICAgICAgICAgICAgLy8gd2UgdXNlIHN0ZDE0MCBsYXlvdXQgQHNlZSBodHRwczovL3d3dy5raHJvbm9zLm9yZy9vcGVuZ2wvd2lraS9JbnRlcmZhY2VfQmxvY2tfKEdMU0wpXG5cbiAgICAgICAgICAgICAgICAgIG1lcmdlZFVuaWZvcm1EYXRhID0gW107XG4gICAgICAgICAgICAgICAgICB1bmlmb3Jtcy5mb3JFYWNoKGZ1bmN0aW9uICh1bmlmb3JtKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc051bWJlcih1bmlmb3JtLmRhdGEpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgX3RoaXMudW5pZm9ybUdQVUJ1ZmZlckxheW91dC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHVuaWZvcm0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogb2Zmc2V0XG4gICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gNDsgLy8gQHRzLWlnbm9yZVxuXG4gICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkVW5pZm9ybURhdGEucHVzaCh1bmlmb3JtLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHZhciBfdW5pZm9ybSRkYXRhO1xuXG4gICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgIHZhciBvcmlnaW5EYXRhTGVuZ3RoID0gKChfdW5pZm9ybSRkYXRhID0gdW5pZm9ybS5kYXRhKSA9PT0gbnVsbCB8fCBfdW5pZm9ybSRkYXRhID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdW5pZm9ybSRkYXRhLmxlbmd0aCkgfHwgMTtcblxuICAgICAgICAgICAgICAgICAgICAgIGlmIChvcmlnaW5EYXRhTGVuZ3RoID09PSAzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB2ZWMzIC0+IHZlYzRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEBzZWUgaHR0cDovL3B0Z21lZGlhLnBlYXJzb25jbWcuY29tL2ltYWdlcy85NzgwMzIxNTUyNjI0L2Rvd25sb2Fkcy8wMzIxNTUyNjI4X0FwcEwucGRmXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5EYXRhTGVuZ3RoID0gNDsgLy8gQHRzLWlnbm9yZVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB1bmlmb3JtLmRhdGEucHVzaCgwKTtcbiAgICAgICAgICAgICAgICAgICAgICB9IC8vIDQgZWxlbWVudHMgcGVyIGJsb2NrL2xpbmVcblxuXG4gICAgICAgICAgICAgICAgICAgICAgdmFyIHBhZGRpbmcgPSBvZmZzZXQgLyA0ICUgNDtcblxuICAgICAgICAgICAgICAgICAgICAgIGlmIChwYWRkaW5nID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNwYWNlID0gNCAtIHBhZGRpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcmlnaW5EYXRhTGVuZ3RoID4gMSAmJiBvcmlnaW5EYXRhTGVuZ3RoIDw9IHNwYWNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcmlnaW5EYXRhTGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNwYWNlID09PSAzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZFVuaWZvcm1EYXRhLnB1c2goMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAvLyBAdHMtaWdub3JlXG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZFVuaWZvcm1EYXRhLnB1c2guYXBwbHkobWVyZ2VkVW5pZm9ybURhdGEsIF90b0NvbnN1bWFibGVBcnJheSh1bmlmb3JtLmRhdGEpKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLnVuaWZvcm1HUFVCdWZmZXJMYXlvdXQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB1bmlmb3JtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IG9mZnNldFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNwYWNlOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRVbmlmb3JtRGF0YS5wdXNoKDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9IC8vIEB0cy1pZ25vcmVcblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZFVuaWZvcm1EYXRhLnB1c2guYXBwbHkobWVyZ2VkVW5pZm9ybURhdGEsIF90b0NvbnN1bWFibGVBcnJheSh1bmlmb3JtLmRhdGEpKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy51bmlmb3JtR1BVQnVmZmVyTGF5b3V0LnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHVuaWZvcm0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IG9mZnNldFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gNCAqIG9yaWdpbkRhdGFMZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgdGhpcy51bmlmb3JtQnVmZmVyID0gbmV3IFdlYkdQVUJ1ZmZlcih0aGlzLmVuZ2luZSwge1xuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiDlpITnkIYgU3RydWN0IOWSjCBib29sZWFuXG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogbWVyZ2VkVW5pZm9ybURhdGEgaW5zdGFuY2VvZiBBcnJheSA/IC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgbmV3IEZsb2F0MzJBcnJheShtZXJnZWRVbmlmb3JtRGF0YSkgOiBtZXJnZWRVbmlmb3JtRGF0YSxcbiAgICAgICAgICAgICAgICAgICAgdXNhZ2U6IFdlYkdQVUNvbnN0YW50cy5CdWZmZXJVc2FnZS5Vbmlmb3JtIHwgV2ViR1BVQ29uc3RhbnRzLkJ1ZmZlclVzYWdlLkNvcHlEc3RcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgdGhpcy5iaW5kR3JvdXBFbnRyaWVzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBiaW5kaW5nOiAwLFxuICAgICAgICAgICAgICAgICAgICByZXNvdXJjZToge1xuICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcjogdGhpcy51bmlmb3JtQnVmZmVyLmdldCgpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gLy8gY3JlYXRlIEdQVUJ1ZmZlcnMgZm9yIHN0b3JlYWdlIGJ1ZmZlcnNcblxuXG4gICAgICAgICAgICAgICAgYnVmZmVycy5mb3JFYWNoKGZ1bmN0aW9uIChidWZmZXIpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChidWZmZXIuZGF0YSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYnVmZmVyLnR5cGUgPT09IEFTVF9UT0tFTl9UWVBFUy5WZWN0b3I0RmxvYXRBcnJheSB8fCBidWZmZXIudHlwZSA9PT0gQVNUX1RPS0VOX1RZUEVTLkZsb2F0QXJyYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgZ3B1QnVmZmVyO1xuXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGJ1ZmZlci5uYW1lID09PSBfdGhpcy5jb250ZXh0Lm91dHB1dC5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBncHVCdWZmZXIgPSBuZXcgV2ViR1BVQnVmZmVyKF90aGlzLmVuZ2luZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGlzRmluaXRlKE51bWJlcihidWZmZXIuZGF0YSkpID8gW2J1ZmZlci5kYXRhXSA6IGJ1ZmZlci5kYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB1c2FnZTogV2ViR1BVQ29uc3RhbnRzLkJ1ZmZlclVzYWdlLlN0b3JhZ2UgfCBXZWJHUFVDb25zdGFudHMuQnVmZmVyVXNhZ2UuQ29weURzdCB8IFdlYkdQVUNvbnN0YW50cy5CdWZmZXJVc2FnZS5Db3B5U3JjXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLm91dHB1dEJ1ZmZlciA9IGdwdUJ1ZmZlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLmNvbnRleHQub3V0cHV0ID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBidWZmZXIubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGg6IGlzRmluaXRlKE51bWJlcihidWZmZXIuZGF0YSkpID8gMSA6IGJ1ZmZlci5kYXRhLmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZWRBcnJheUNvbnN0cnVjdG9yOiBGbG9hdDMyQXJyYXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdwdUJ1ZmZlcjogZ3B1QnVmZmVyLmdldCgpXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYnVmZmVyLmlzUmVmZXJlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChidWZmZXIuZGF0YS5tb2RlbCAmJiBidWZmZXIuZGF0YS5tb2RlbC5vdXRwdXRCdWZmZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3B1QnVmZmVyID0gYnVmZmVyLmRhdGEubW9kZWwub3V0cHV0QnVmZmVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugey8vIHJlZmVycmVkIGtlcm5lbCBoYXZlbid0IGJlZW4gZXhlY3V0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3B1QnVmZmVyID0gbmV3IFdlYkdQVUJ1ZmZlcihfdGhpcy5lbmdpbmUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogaXNGaW5pdGUoTnVtYmVyKGJ1ZmZlci5kYXRhKSkgPyBbYnVmZmVyLmRhdGFdIDogYnVmZmVyLmRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNhZ2U6IFdlYkdQVUNvbnN0YW50cy5CdWZmZXJVc2FnZS5TdG9yYWdlIHwgV2ViR1BVQ29uc3RhbnRzLkJ1ZmZlclVzYWdlLkNvcHlEc3QgfCBXZWJHUFVDb25zdGFudHMuQnVmZmVyVXNhZ2UuQ29weVNyY1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9IC8vIEB0cy1pZ25vcmVcblxuXG4gICAgICAgICAgICAgICAgICAgICAgX3RoaXMudmVydGV4QnVmZmVyc1tidWZmZXIubmFtZV0gPSBncHVCdWZmZXI7XG5cbiAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5iaW5kR3JvdXBFbnRyaWVzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgYmluZGluZzogYnVmZmVyQmluZGluZ0luZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2U6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogYnVmZmVyLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyOiBncHVCdWZmZXIgPyB1bmRlZmluZWQgOiBidWZmZXIuZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXI6IGdwdUJ1ZmZlciA/IGdwdUJ1ZmZlci5nZXQoKSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgYnVmZmVyQmluZGluZ0luZGV4Kys7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTsgLy8gY3JlYXRlIGNvbXB1dGUgcGlwZWxpbmUgbGF5b3V0XG5cbiAgICAgICAgICAgICAgICB0aGlzLmNvbXB1dGVQaXBlbGluZSA9IHRoaXMuZW5naW5lLmRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoe1xuICAgICAgICAgICAgICAgICAgY29tcHV0ZVN0YWdlOiBjb21wdXRlU3RhZ2VcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmJpbmRHcm91cEVudHJpZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuYmluZEdyb3VwID0gdGhpcy5lbmdpbmUuZGV2aWNlLmNyZWF0ZUJpbmRHcm91cCh7XG4gICAgICAgICAgICAgICAgICBsYXlvdXQ6IHRoaXMuY29tcHV0ZVBpcGVsaW5lLmdldEJpbmRHcm91cExheW91dCgwKSxcbiAgICAgICAgICAgICAgICAgIGVudHJpZXM6IHRoaXMuYmluZEdyb3VwRW50cmllc1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTM6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZSwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGluaXQoKSB7XG4gICAgICAgIHJldHVybiBfaW5pdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5pdDtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogXCJkZXN0cm95XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgaWYgKHRoaXMudW5pZm9ybUJ1ZmZlcikge1xuICAgICAgICB0aGlzLnVuaWZvcm1CdWZmZXIuZGVzdHJveSgpO1xuICAgICAgfVxuXG4gICAgICBPYmplY3Qua2V5cyh0aGlzLnZlcnRleEJ1ZmZlcnMpLmZvckVhY2goZnVuY3Rpb24gKGJ1ZmZlck5hbWUpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzMi52ZXJ0ZXhCdWZmZXJzW2J1ZmZlck5hbWVdLmRlc3Ryb3koKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZWFkRGF0YVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3JlYWREYXRhID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTIoKSB7XG4gICAgICAgIHZhciBvdXRwdXQsIGxlbmd0aCwgdHlwZWRBcnJheUNvbnN0cnVjdG9yLCBncHVCdWZmZXIsIGJ5dGVDb3VudCwgZ3B1UmVhZEJ1ZmZlciwgZW5jb2RlciwgcXVldWUsIGFycmF5YnVmZmVyLCB0eXBlZEFycmF5O1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUyJChfY29udGV4dDIpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSB0aGlzLmNvbnRleHQub3V0cHV0O1xuXG4gICAgICAgICAgICAgICAgaWYgKCFvdXRwdXQpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMTY7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZW5ndGggPSBvdXRwdXQubGVuZ3RoLCB0eXBlZEFycmF5Q29uc3RydWN0b3IgPSBvdXRwdXQudHlwZWRBcnJheUNvbnN0cnVjdG9yLCBncHVCdWZmZXIgPSBvdXRwdXQuZ3B1QnVmZmVyO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFncHVCdWZmZXIpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMTY7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBhd2FpdCBncHVCdWZmZXIubWFwQXN5bmMoV2ViR1BVQ29uc3RhbnRzLk1hcE1vZGUuUmVhZCk7XG4gICAgICAgICAgICAgICAgLy8gY29uc3QgYXJyYXlidWZmZXIgPSBncHVCdWZmZXIuZ2V0TWFwcGVkUmFuZ2UoKTtcbiAgICAgICAgICAgICAgICAvLyBsZXQgYXJyYXlidWZmZXI7XG4gICAgICAgICAgICAgICAgLy8gaWYgKGlzU2FmYXJpKSB7XG4gICAgICAgICAgICAgICAgLy8gICBhcnJheWJ1ZmZlciA9IGF3YWl0IGdwdUJ1ZmZlci5tYXBSZWFkQXN5bmMoKTtcbiAgICAgICAgICAgICAgICAvLyB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGJ5dGVDb3VudCA9IGxlbmd0aCAqIHR5cGVkQXJyYXlDb25zdHJ1Y3Rvci5CWVRFU19QRVJfRUxFTUVOVDsgLy8gQHNlZSBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS93ZWIvdXBkYXRlcy8yMDE5LzA4L2dldC1zdGFydGVkLXdpdGgtZ3B1LWNvbXB1dGUtb24tdGhlLXdlYlxuXG4gICAgICAgICAgICAgICAgZ3B1UmVhZEJ1ZmZlciA9IHRoaXMuZW5naW5lLmRldmljZS5jcmVhdGVCdWZmZXIoe1xuICAgICAgICAgICAgICAgICAgc2l6ZTogYnl0ZUNvdW50LFxuICAgICAgICAgICAgICAgICAgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQURcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBlbmNvZGVyID0gdGhpcy5lbmdpbmUuZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7XG4gICAgICAgICAgICAgICAgZW5jb2Rlci5jb3B5QnVmZmVyVG9CdWZmZXIoZ3B1QnVmZmVyLCAwLCBncHVSZWFkQnVmZmVyLCAwLCBieXRlQ291bnQpO1xuICAgICAgICAgICAgICAgIHF1ZXVlID0gaXNTYWZhcmkgPyAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgdGhpcy5lbmdpbmUuZGV2aWNlLmdldFF1ZXVlKCkgOiB0aGlzLmVuZ2luZS5kZXZpY2UuZGVmYXVsdFF1ZXVlO1xuICAgICAgICAgICAgICAgIHF1ZXVlLnN1Ym1pdChbZW5jb2Rlci5maW5pc2goKV0pO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMTI7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGdwdVJlYWRCdWZmZXIubWFwQXN5bmMoV2ViR1BVQ29uc3RhbnRzLk1hcE1vZGUuUmVhZCk7XG5cbiAgICAgICAgICAgICAgY2FzZSAxMjpcbiAgICAgICAgICAgICAgICBhcnJheWJ1ZmZlciA9IGdwdVJlYWRCdWZmZXIuZ2V0TWFwcGVkUmFuZ2UoKTtcbiAgICAgICAgICAgICAgICB0eXBlZEFycmF5ID0gbmV3IHR5cGVkQXJyYXlDb25zdHJ1Y3RvcihhcnJheWJ1ZmZlci5zbGljZSgwKSk7XG4gICAgICAgICAgICAgICAgZ3B1UmVhZEJ1ZmZlci51bm1hcCgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuYWJydXB0KFwicmV0dXJuXCIsIHR5cGVkQXJyYXkpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTY6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5hYnJ1cHQoXCJyZXR1cm5cIiwgbmV3IEZsb2F0MzJBcnJheSgpKTtcblxuICAgICAgICAgICAgICBjYXNlIDE3OlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlMiwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIHJlYWREYXRhKCkge1xuICAgICAgICByZXR1cm4gX3JlYWREYXRhLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWFkRGF0YTtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogXCJydW5cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcnVuKCkge1xuICAgICAgaWYgKHRoaXMuZW5naW5lLmN1cnJlbnRDb21wdXRlUGFzcykge1xuICAgICAgICB2YXIgX3RoaXMkZW5naW5lJGN1cnJlbnRDO1xuXG4gICAgICAgIHRoaXMuZW5naW5lLmN1cnJlbnRDb21wdXRlUGFzcy5zZXRQaXBlbGluZSh0aGlzLmNvbXB1dGVQaXBlbGluZSk7IC8vIHRoaXMuYmluZEdyb3VwRW50cmllcy5mb3JFYWNoKChlbnRyeSkgPT4ge1xuICAgICAgICAvLyAgIGlmICghZW50cnkucmVzb3VyY2UuYnVmZmVyKSB7XG4gICAgICAgIC8vICAgICAvLyBnZXQgcmVmZXJyZWQga2VybmVsJ3Mgb3V0cHV0XG4gICAgICAgIC8vICAgICBjb25zdCBncHVCdWZmZXIgPSAoZW50cnkucmVzb3VyY2UucmVmZXIubW9kZWwgYXMgV2ViR1BVQ29tcHV0ZU1vZGVsKVxuICAgICAgICAvLyAgICAgICAub3V0cHV0QnVmZmVyO1xuICAgICAgICAvLyAgICAgdGhpcy52ZXJ0ZXhCdWZmZXJzW2VudHJ5LnJlc291cmNlLm5hbWVdID0gZ3B1QnVmZmVyO1xuICAgICAgICAvLyAgICAgZW50cnkucmVzb3VyY2UuYnVmZmVyID0gZ3B1QnVmZmVyLmdldCgpO1xuICAgICAgICAvLyAgIH1cbiAgICAgICAgLy8gfSk7XG4gICAgICAgIC8vIGNvbnN0IGJpbmRHcm91cCA9IHRoaXMuZW5naW5lLmRldmljZS5jcmVhdGVCaW5kR3JvdXAoe1xuICAgICAgICAvLyAgIGxheW91dDogdGhpcy5jb21wdXRlUGlwZWxpbmUuZ2V0QmluZEdyb3VwTGF5b3V0KDApLFxuICAgICAgICAvLyAgIGVudHJpZXM6IHRoaXMuYmluZEdyb3VwRW50cmllcyxcbiAgICAgICAgLy8gfSk7XG5cbiAgICAgICAgdGhpcy5lbmdpbmUuY3VycmVudENvbXB1dGVQYXNzLnNldEJpbmRHcm91cCgwLCB0aGlzLmJpbmRHcm91cCk7XG5cbiAgICAgICAgKF90aGlzJGVuZ2luZSRjdXJyZW50QyA9IHRoaXMuZW5naW5lLmN1cnJlbnRDb21wdXRlUGFzcykuZGlzcGF0Y2guYXBwbHkoX3RoaXMkZW5naW5lJGN1cnJlbnRDLCBfdG9Db25zdW1hYmxlQXJyYXkodGhpcy5jb250ZXh0LmRpc3BhdGNoKSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInVwZGF0ZUJ1ZmZlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1cGRhdGVCdWZmZXIoYnVmZmVyTmFtZSwgZGF0YSkge1xuICAgICAgdmFyIG9mZnNldCA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogMDtcbiAgICAgIHZhciBidWZmZXIgPSB0aGlzLnZlcnRleEJ1ZmZlcnNbYnVmZmVyTmFtZV07XG5cbiAgICAgIGlmIChidWZmZXIpIHtcbiAgICAgICAgYnVmZmVyLnN1YkRhdGEoe1xuICAgICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgICAgb2Zmc2V0OiBvZmZzZXRcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInVwZGF0ZVVuaWZvcm1cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdXBkYXRlVW5pZm9ybSh1bmlmb3JtTmFtZSwgZGF0YSkge1xuICAgICAgdmFyIGxheW91dCA9IHRoaXMudW5pZm9ybUdQVUJ1ZmZlckxheW91dC5maW5kKGZ1bmN0aW9uIChsKSB7XG4gICAgICAgIHJldHVybiBsLm5hbWUgPT09IHVuaWZvcm1OYW1lO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChsYXlvdXQpIHtcbiAgICAgICAgdGhpcy51bmlmb3JtQnVmZmVyLnN1YkRhdGEoe1xuICAgICAgICAgIGRhdGE6IE51bWJlci5pc0Zpbml0ZShkYXRhKSA/IG5ldyBGbG9hdDMyQXJyYXkoW2RhdGFdKSA6IG5ldyBGbG9hdDMyQXJyYXkoZGF0YSksXG4gICAgICAgICAgb2Zmc2V0OiBsYXlvdXQub2Zmc2V0XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb25maXJtSW5wdXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29uZmlybUlucHV0KG1vZGVsLCBpbnB1dE5hbWUpIHtcbiAgICAgIC8vIGNvcHkgb3V0cHV0IEdQVUJ1ZmZlciBvZiBrZXJuZWxcbiAgICAgIHZhciBpbnB1dEJ1ZmZlciA9IHRoaXMudmVydGV4QnVmZmVyc1tpbnB1dE5hbWVdO1xuICAgICAgdmFyIG91dHB1dEJ1ZmZlciA9IG1vZGVsLm91dHB1dEJ1ZmZlcjtcblxuICAgICAgaWYgKGlucHV0QnVmZmVyICYmIG91dHB1dEJ1ZmZlciAmJiBpbnB1dEJ1ZmZlciAhPT0gb3V0cHV0QnVmZmVyKSB7XG4gICAgICAgIHZhciBlbmNvZGVyID0gdGhpcy5lbmdpbmUuZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7XG4gICAgICAgIHZhciBfY29udGV4dCRvdXRwdXQgPSBtb2RlbC5jb250ZXh0Lm91dHB1dCxcbiAgICAgICAgICAgIGxlbmd0aCA9IF9jb250ZXh0JG91dHB1dC5sZW5ndGgsXG4gICAgICAgICAgICB0eXBlZEFycmF5Q29uc3RydWN0b3IgPSBfY29udGV4dCRvdXRwdXQudHlwZWRBcnJheUNvbnN0cnVjdG9yO1xuICAgICAgICB2YXIgYnl0ZUNvdW50ID0gbGVuZ3RoICogdHlwZWRBcnJheUNvbnN0cnVjdG9yLkJZVEVTX1BFUl9FTEVNRU5UO1xuICAgICAgICBlbmNvZGVyLmNvcHlCdWZmZXJUb0J1ZmZlcihvdXRwdXRCdWZmZXIuZ2V0KCksIDAsIGlucHV0QnVmZmVyLmdldCgpLCAwLCBieXRlQ291bnQpO1xuICAgICAgICB2YXIgcXVldWUgPSBpc1NhZmFyaSA/IC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdGhpcy5lbmdpbmUuZGV2aWNlLmdldFF1ZXVlKCkgOiB0aGlzLmVuZ2luZS5kZXZpY2UuZGVmYXVsdFF1ZXVlO1xuICAgICAgICBxdWV1ZS5zdWJtaXQoW2VuY29kZXIuZmluaXNoKCldKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcGlsZVNoYWRlclRvU3BpclZcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcGlsZVNoYWRlclRvU3BpclYoc291cmNlLCB0eXBlLCBzaGFkZXJWZXJzaW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb21waWxlUmF3U2hhZGVyVG9TcGlyVihzaGFkZXJWZXJzaW9uICsgc291cmNlLCB0eXBlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcGlsZVJhd1NoYWRlclRvU3BpclZcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcGlsZVJhd1NoYWRlclRvU3BpclYoc291cmNlLCB0eXBlKSB7XG4gICAgICByZXR1cm4gdGhpcy5lbmdpbmUuZ2xzbGFuZy5jb21waWxlR0xTTChzb3VyY2UsIHR5cGUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21waWxlQ29tcHV0ZVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfY29tcGlsZUNvbXB1dGVQaXBlbGluZVN0YWdlRGVzY3JpcHRvciA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUzKGNvbXB1dGVDb2RlKSB7XG4gICAgICAgIHZhciBjb21wdXRlU2hhZGVyLCBzaGFkZXJWZXJzaW9uO1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUzJChfY29udGV4dDMpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDMucHJldiA9IF9jb250ZXh0My5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBjb21wdXRlU2hhZGVyID0gY29tcHV0ZUNvZGU7XG4gICAgICAgICAgICAgICAgc2hhZGVyVmVyc2lvbiA9ICcjdmVyc2lvbiA0NTBcXG4nO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZW5naW5lLm9wdGlvbnMudXNlV0dTTCkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSA2O1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSA1O1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbXBpbGVTaGFkZXJUb1NwaXJWKGNvbXB1dGVDb2RlLCAnY29tcHV0ZScsIHNoYWRlclZlcnNpb24pO1xuXG4gICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICBjb21wdXRlU2hhZGVyID0gX2NvbnRleHQzLnNlbnQ7XG5cbiAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDMuYWJydXB0KFwicmV0dXJuXCIsIHtcbiAgICAgICAgICAgICAgICAgIGNvbXB1dGVTdGFnZToge1xuICAgICAgICAgICAgICAgICAgICBtb2R1bGU6IHRoaXMuZW5naW5lLmRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe1xuICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IGNvbXB1dGVTaGFkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgIGlzV0hMU0w6IGlzU2FmYXJpXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICBlbnRyeVBvaW50OiAnbWFpbidcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQzLnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUzLCB0aGlzKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gY29tcGlsZUNvbXB1dGVQaXBlbGluZVN0YWdlRGVzY3JpcHRvcihfeCkge1xuICAgICAgICByZXR1cm4gX2NvbXBpbGVDb21wdXRlUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbXBpbGVDb21wdXRlUGlwZWxpbmVTdGFnZURlc2NyaXB0b3I7XG4gICAgfSgpXG4gIH1dKTtcblxuICByZXR1cm4gV2ViR1BVQ29tcHV0ZU1vZGVsO1xufSgpO1xuXG5leHBvcnQgeyBXZWJHUFVDb21wdXRlTW9kZWwgYXMgZGVmYXVsdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9V2ViR1BVQ29tcHV0ZU1vZGVsLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUComputeModel.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUElements.js":
/*!*****************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUElements.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 WebGPUElements; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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 _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/_@webgpu_types@0.0.31@@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./WebGPUBuffer */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUBuffer.js\");\n\n\n\n\n\nvar WebGPUElements = /*#__PURE__*/function () {\n function WebGPUElements(engine, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, WebGPUElements);\n\n this.engine = engine;\n this.options = options;\n this.indexCount = void 0;\n this.buffer = void 0;\n var _options = options,\n data = _options.data,\n usage = _options.usage,\n type = _options.type,\n count = _options.count;\n this.indexCount = count || 0;\n this.buffer = new _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_3__[\"default\"](engine, {\n // @ts-ignore\n data: data instanceof Array ? new Uint16Array(data) : data,\n usage: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BufferUsage\"].Index | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BufferUsage\"].CopyDst\n });\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(WebGPUElements, [{\n key: \"get\",\n value: function get() {\n return this.buffer;\n }\n }, {\n key: \"subData\",\n value: function subData(options) {\n this.buffer.subData(options);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.buffer.destroy();\n }\n }]);\n\n return WebGPUElements;\n}();\n\n\n//# sourceMappingURL=WebGPUElements.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ3B1L1dlYkdQVUVsZW1lbnRzLmpzP2ZhZDgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ047QUFDRTtBQUN0Qjs7QUFFMUM7QUFDQTtBQUNBLElBQUksNEVBQWU7O0FBRW5CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLHFEQUFZO0FBQ2xDO0FBQ0E7QUFDQSxhQUFhLHdFQUEyQixTQUFTLHdFQUEyQjtBQUM1RSxLQUFLO0FBQ0w7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRW9DO0FBQ3JDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1lbmdpbmVAMC41LjZAQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdwdS9XZWJHUFVFbGVtZW50cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCAqIGFzIFdlYkdQVUNvbnN0YW50cyBmcm9tICdAd2ViZ3B1L3R5cGVzL2Rpc3QvY29uc3RhbnRzJztcbmltcG9ydCBXZWJHUFVCdWZmZXIgZnJvbSAnLi9XZWJHUFVCdWZmZXInO1xuXG52YXIgV2ViR1BVRWxlbWVudHMgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBXZWJHUFVFbGVtZW50cyhlbmdpbmUsIG9wdGlvbnMpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgV2ViR1BVRWxlbWVudHMpO1xuXG4gICAgdGhpcy5lbmdpbmUgPSBlbmdpbmU7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB0aGlzLmluZGV4Q291bnQgPSB2b2lkIDA7XG4gICAgdGhpcy5idWZmZXIgPSB2b2lkIDA7XG4gICAgdmFyIF9vcHRpb25zID0gb3B0aW9ucyxcbiAgICAgICAgZGF0YSA9IF9vcHRpb25zLmRhdGEsXG4gICAgICAgIHVzYWdlID0gX29wdGlvbnMudXNhZ2UsXG4gICAgICAgIHR5cGUgPSBfb3B0aW9ucy50eXBlLFxuICAgICAgICBjb3VudCA9IF9vcHRpb25zLmNvdW50O1xuICAgIHRoaXMuaW5kZXhDb3VudCA9IGNvdW50IHx8IDA7XG4gICAgdGhpcy5idWZmZXIgPSBuZXcgV2ViR1BVQnVmZmVyKGVuZ2luZSwge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgZGF0YTogZGF0YSBpbnN0YW5jZW9mIEFycmF5ID8gbmV3IFVpbnQxNkFycmF5KGRhdGEpIDogZGF0YSxcbiAgICAgIHVzYWdlOiBXZWJHUFVDb25zdGFudHMuQnVmZmVyVXNhZ2UuSW5kZXggfCBXZWJHUFVDb25zdGFudHMuQnVmZmVyVXNhZ2UuQ29weURzdFxuICAgIH0pO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFdlYkdQVUVsZW1lbnRzLCBbe1xuICAgIGtleTogXCJnZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzdWJEYXRhXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN1YkRhdGEob3B0aW9ucykge1xuICAgICAgdGhpcy5idWZmZXIuc3ViRGF0YShvcHRpb25zKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGVzdHJveVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgICAgdGhpcy5idWZmZXIuZGVzdHJveSgpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBXZWJHUFVFbGVtZW50cztcbn0oKTtcblxuZXhwb3J0IHsgV2ViR1BVRWxlbWVudHMgYXMgZGVmYXVsdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9V2ViR1BVRWxlbWVudHMuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUElements.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUFramebuffer.js":
/*!********************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUFramebuffer.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 WebGPUFramebuffer; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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\nvar WebGPUFramebuffer = /*#__PURE__*/function () {\n function WebGPUFramebuffer(engine, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, WebGPUFramebuffer);\n\n this.engine = engine;\n this.options = options;\n this.colorTexture = void 0;\n this.depthTexture = void 0;\n this.width = 0;\n this.height = 0;\n var _options = options,\n width = _options.width,\n height = _options.height,\n color = _options.color,\n colors = _options.colors,\n depth = _options.depth,\n stencil = _options.stencil;\n\n if (color) {\n this.colorTexture = color;\n }\n\n if (depth) {\n this.depthTexture = depth;\n } // TODO: depth & stencil\n\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(WebGPUFramebuffer, [{\n key: \"get\",\n value: function get() {\n var _this$colorTexture, _this$depthTexture;\n\n return {\n color: (_this$colorTexture = this.colorTexture) === null || _this$colorTexture === void 0 ? void 0 : _this$colorTexture.get(),\n depth: (_this$depthTexture = this.depthTexture) === null || _this$depthTexture === void 0 ? void 0 : _this$depthTexture.get()\n };\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this$colorTexture2, _this$depthTexture2;\n\n (_this$colorTexture2 = this.colorTexture) === null || _this$colorTexture2 === void 0 ? void 0 : _this$colorTexture2.destroy();\n (_this$depthTexture2 = this.depthTexture) === null || _this$depthTexture2 === void 0 ? void 0 : _this$depthTexture2.destroy();\n }\n }, {\n key: \"resize\",\n value: function resize(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n if (width !== this.width || height !== this.height) {\n var _this$colorTexture3, _this$depthTexture3;\n\n (_this$colorTexture3 = this.colorTexture) === null || _this$colorTexture3 === void 0 ? void 0 : _this$colorTexture3.resize({\n width: width,\n height: height\n });\n (_this$depthTexture3 = this.depthTexture) === null || _this$depthTexture3 === void 0 ? void 0 : _this$depthTexture3.resize({\n width: width,\n height: height\n });\n }\n\n this.width = width;\n this.height = height;\n }\n }]);\n\n return WebGPUFramebuffer;\n}();\n\n\n//# sourceMappingURL=WebGPUFramebuffer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ3B1L1dlYkdQVUZyYW1lYnVmZmVyLmpzPzQzYmUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ047O0FBRTlEO0FBQ0E7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDOztBQUV1QztBQUN4QyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtZW5naW5lQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWVuZ2luZS9lcy93ZWJncHUvV2ViR1BVRnJhbWVidWZmZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5cbnZhciBXZWJHUFVGcmFtZWJ1ZmZlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFdlYkdQVUZyYW1lYnVmZmVyKGVuZ2luZSwgb3B0aW9ucykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBXZWJHUFVGcmFtZWJ1ZmZlcik7XG5cbiAgICB0aGlzLmVuZ2luZSA9IGVuZ2luZTtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMuY29sb3JUZXh0dXJlID0gdm9pZCAwO1xuICAgIHRoaXMuZGVwdGhUZXh0dXJlID0gdm9pZCAwO1xuICAgIHRoaXMud2lkdGggPSAwO1xuICAgIHRoaXMuaGVpZ2h0ID0gMDtcbiAgICB2YXIgX29wdGlvbnMgPSBvcHRpb25zLFxuICAgICAgICB3aWR0aCA9IF9vcHRpb25zLndpZHRoLFxuICAgICAgICBoZWlnaHQgPSBfb3B0aW9ucy5oZWlnaHQsXG4gICAgICAgIGNvbG9yID0gX29wdGlvbnMuY29sb3IsXG4gICAgICAgIGNvbG9ycyA9IF9vcHRpb25zLmNvbG9ycyxcbiAgICAgICAgZGVwdGggPSBfb3B0aW9ucy5kZXB0aCxcbiAgICAgICAgc3RlbmNpbCA9IF9vcHRpb25zLnN0ZW5jaWw7XG5cbiAgICBpZiAoY29sb3IpIHtcbiAgICAgIHRoaXMuY29sb3JUZXh0dXJlID0gY29sb3I7XG4gICAgfVxuXG4gICAgaWYgKGRlcHRoKSB7XG4gICAgICB0aGlzLmRlcHRoVGV4dHVyZSA9IGRlcHRoO1xuICAgIH0gLy8gVE9ETzogZGVwdGggJiBzdGVuY2lsXG5cbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhXZWJHUFVGcmFtZWJ1ZmZlciwgW3tcbiAgICBrZXk6IFwiZ2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHZhciBfdGhpcyRjb2xvclRleHR1cmUsIF90aGlzJGRlcHRoVGV4dHVyZTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29sb3I6IChfdGhpcyRjb2xvclRleHR1cmUgPSB0aGlzLmNvbG9yVGV4dHVyZSkgPT09IG51bGwgfHwgX3RoaXMkY29sb3JUZXh0dXJlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRjb2xvclRleHR1cmUuZ2V0KCksXG4gICAgICAgIGRlcHRoOiAoX3RoaXMkZGVwdGhUZXh0dXJlID0gdGhpcy5kZXB0aFRleHR1cmUpID09PSBudWxsIHx8IF90aGlzJGRlcHRoVGV4dHVyZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkZGVwdGhUZXh0dXJlLmdldCgpXG4gICAgICB9O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkZXN0cm95XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgICB2YXIgX3RoaXMkY29sb3JUZXh0dXJlMiwgX3RoaXMkZGVwdGhUZXh0dXJlMjtcblxuICAgICAgKF90aGlzJGNvbG9yVGV4dHVyZTIgPSB0aGlzLmNvbG9yVGV4dHVyZSkgPT09IG51bGwgfHwgX3RoaXMkY29sb3JUZXh0dXJlMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkY29sb3JUZXh0dXJlMi5kZXN0cm95KCk7XG4gICAgICAoX3RoaXMkZGVwdGhUZXh0dXJlMiA9IHRoaXMuZGVwdGhUZXh0dXJlKSA9PT0gbnVsbCB8fCBfdGhpcyRkZXB0aFRleHR1cmUyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRkZXB0aFRleHR1cmUyLmRlc3Ryb3koKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVzaXplXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlc2l6ZShfcmVmKSB7XG4gICAgICB2YXIgd2lkdGggPSBfcmVmLndpZHRoLFxuICAgICAgICAgIGhlaWdodCA9IF9yZWYuaGVpZ2h0O1xuXG4gICAgICBpZiAod2lkdGggIT09IHRoaXMud2lkdGggfHwgaGVpZ2h0ICE9PSB0aGlzLmhlaWdodCkge1xuICAgICAgICB2YXIgX3RoaXMkY29sb3JUZXh0dXJlMywgX3RoaXMkZGVwdGhUZXh0dXJlMztcblxuICAgICAgICAoX3RoaXMkY29sb3JUZXh0dXJlMyA9IHRoaXMuY29sb3JUZXh0dXJlKSA9PT0gbnVsbCB8fCBfdGhpcyRjb2xvclRleHR1cmUzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRjb2xvclRleHR1cmUzLnJlc2l6ZSh7XG4gICAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICAgIH0pO1xuICAgICAgICAoX3RoaXMkZGVwdGhUZXh0dXJlMyA9IHRoaXMuZGVwdGhUZXh0dXJlKSA9PT0gbnVsbCB8fCBfdGhpcyRkZXB0aFRleHR1cmUzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRkZXB0aFRleHR1cmUzLnJlc2l6ZSh7XG4gICAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLndpZHRoID0gd2lkdGg7XG4gICAgICB0aGlzLmhlaWdodCA9IGhlaWdodDtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gV2ViR1BVRnJhbWVidWZmZXI7XG59KCk7XG5cbmV4cG9ydCB7IFdlYkdQVUZyYW1lYnVmZmVyIGFzIGRlZmF1bHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVdlYkdQVUZyYW1lYnVmZmVyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUFramebuffer.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUModel.js":
/*!**************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUModel.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 WebGPUModel; });\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/_@babel_runtime@7.16.3@@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_typeof__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/typeof.js\");\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@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 _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@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_asyncToGenerator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__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@7.16.3@@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@7.16.3@@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 _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/_@webgpu_types@0.0.31@@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _utils_uniform__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/uniform */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/uniform.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./constants */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/constants.js\");\n/* harmony import */ var _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./WebGPUBuffer */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUBuffer.js\");\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_3___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n\n\n\n\n\n\n// @ts-ignore\nfunction concatenate(resultConstructor) {\n var totalLength = 0;\n\n for (var _len = arguments.length, arrays = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n arrays[_key - 1] = arguments[_key];\n }\n\n for (var _i = 0, _arrays = arrays; _i < _arrays.length; _i++) {\n var arr = _arrays[_i];\n totalLength += arr.length;\n }\n\n var result = new resultConstructor(totalLength);\n var offset = 0;\n\n for (var _i2 = 0, _arrays2 = arrays; _i2 < _arrays2.length; _i2++) {\n var _arr = _arrays2[_i2];\n result.set(_arr, offset);\n offset += _arr.length;\n }\n\n return result;\n}\n\nvar WebGPUModel = /*#__PURE__*/function () {\n /**\n * 用于后续渲染时动态更新\n */\n\n /**\n * vertex\n */\n\n /**\n * indices's buffer\n */\n function WebGPUModel(engine, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_5___default()(this, WebGPUModel);\n\n this.engine = engine;\n this.options = options;\n this.pipelineLayout = void 0;\n this.renderPipeline = void 0;\n this.uniformsBindGroupLayout = void 0;\n this.uniformBindGroup = void 0;\n this.uniformBuffer = void 0;\n this.uniforms = {};\n this.uniformGPUBufferLayout = [];\n this.attributeCache = {};\n this.indexBuffer = void 0;\n this.indexCount = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_6___default()(WebGPUModel, [{\n key: \"init\",\n value: function () {\n var _init = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_4___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.mark(function _callee() {\n var _this = this;\n\n var _this$options, vs, fs, attributes, uniforms, primitive, count, elements, depth, blend, stencil, cull, instances, _yield$this$compilePi, vertexStage, fragmentStage, vertexState, descriptor;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _this$options = this.options, vs = _this$options.vs, fs = _this$options.fs, attributes = _this$options.attributes, uniforms = _this$options.uniforms, primitive = _this$options.primitive, count = _this$options.count, elements = _this$options.elements, depth = _this$options.depth, blend = _this$options.blend, stencil = _this$options.stencil, cull = _this$options.cull, instances = _this$options.instances; // build shaders first\n\n _context.next = 3;\n return this.compilePipelineStageDescriptor(vs, fs, null);\n\n case 3:\n _yield$this$compilePi = _context.sent;\n vertexStage = _yield$this$compilePi.vertexStage;\n fragmentStage = _yield$this$compilePi.fragmentStage;\n\n if (uniforms) {\n // create uniform bind groups & layout\n this.buildUniformBindGroup(uniforms);\n }\n\n if (elements) {\n this.indexBuffer = elements.get();\n this.indexCount = elements.indexCount;\n } // TODO: instanced array\n\n\n vertexState = {\n vertexBuffers: Object.keys(attributes).map(function (attributeName, i) {\n var attribute = attributes[attributeName];\n\n var _attribute$get = attribute.get(),\n arrayStride = _attribute$get.arrayStride,\n stepMode = _attribute$get.stepMode,\n ats = _attribute$get.attributes;\n\n _this.attributeCache[attributeName] = attribute;\n return {\n arrayStride: arrayStride,\n stepMode: stepMode,\n attributes: ats\n };\n })\n };\n descriptor = {\n sampleCount: this.engine.mainPassSampleCount,\n primitiveTopology: _constants__WEBPACK_IMPORTED_MODULE_10__[\"primitiveMap\"][primitive || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__[\"gl\"].TRIANGLES],\n rasterizationState: _objectSpread(_objectSpread({}, this.getDefaultRasterizationStateDescriptor()), {}, {\n // TODO: support frontface\n cullMode: Object(_constants__WEBPACK_IMPORTED_MODULE_10__[\"getCullMode\"])({\n cull: cull\n })\n }),\n depthStencilState: Object(_constants__WEBPACK_IMPORTED_MODULE_10__[\"getDepthStencilStateDescriptor\"])({\n depth: depth,\n stencil: stencil\n }),\n colorStates: Object(_constants__WEBPACK_IMPORTED_MODULE_10__[\"getColorStateDescriptors\"])({\n blend: blend\n }, this.engine.options.swapChainFormat),\n layout: this.pipelineLayout,\n vertexStage: vertexStage,\n fragmentStage: fragmentStage,\n vertexState: vertexState\n }; // create pipeline\n\n this.renderPipeline = this.engine.device.createRenderPipeline(descriptor);\n\n case 11:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function init() {\n return _init.apply(this, arguments);\n }\n\n return init;\n }()\n }, {\n key: \"addUniforms\",\n value: function addUniforms(uniforms) {\n this.uniforms = _objectSpread(_objectSpread({}, this.uniforms), Object(_utils_uniform__WEBPACK_IMPORTED_MODULE_9__[\"extractUniforms\"])(uniforms));\n }\n }, {\n key: \"draw\",\n value: function draw(options) {\n var _this2 = this;\n\n var renderPass = this.engine.getCurrentRenderPass();\n\n var uniforms = _objectSpread(_objectSpread({}, this.uniforms), Object(_utils_uniform__WEBPACK_IMPORTED_MODULE_9__[\"extractUniforms\"])(options.uniforms || {}));\n\n var bindGroupBindings = []; // TODO: uniform 发生修改\n\n Object.keys(uniforms).forEach(function (uniformName) {\n var type = _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_1___default()(uniforms[uniformName]);\n\n if (type === 'boolean' || type === 'number' || Array.isArray(uniforms[uniformName]) || // @ts-ignore\n uniforms[uniformName].BYTES_PER_ELEMENT) {\n var _this2$uniformGPUBuff;\n\n var offset = (_this2$uniformGPUBuff = _this2.uniformGPUBufferLayout.find(function (_ref) {\n var name = _ref.name;\n return name === uniformName;\n })) === null || _this2$uniformGPUBuff === void 0 ? void 0 : _this2$uniformGPUBuff.offset;\n\n if (offset !== null) {\n _this2.uniformBuffer.subData({\n // @ts-ignore\n data: uniforms[uniformName],\n // @ts-ignore\n offset: offset\n });\n }\n } else {\n var _this2$uniformGPUBuff2;\n\n var _offset = (_this2$uniformGPUBuff2 = _this2.uniformGPUBufferLayout.find(function (_ref2) {\n var name = _ref2.name;\n return name === uniformName;\n })) === null || _this2$uniformGPUBuff2 === void 0 ? void 0 : _this2$uniformGPUBuff2.offset;\n\n if (_offset !== null) {\n var textureOrFramebuffer = uniforms[uniformName].get();\n\n var _ref3 = // @ts-ignore\n textureOrFramebuffer.color || textureOrFramebuffer,\n texture = _ref3.texture,\n sampler = _ref3.sampler;\n\n if (sampler) {\n bindGroupBindings.push({\n // @ts-ignore\n binding: _offset,\n resource: sampler\n }); // @ts-ignore\n\n _offset++;\n }\n\n bindGroupBindings.push({\n // @ts-ignore\n binding: _offset,\n resource: texture.createView()\n });\n }\n }\n });\n\n if (this.uniformBuffer) {\n bindGroupBindings[0] = {\n binding: 0,\n resource: {\n buffer: this.uniformBuffer.get() // 返回 GPUBuffer 原生对象\n\n }\n };\n }\n\n this.uniformBindGroup = this.engine.device.createBindGroup({\n layout: this.uniformsBindGroupLayout,\n entries: bindGroupBindings\n });\n\n if (this.renderPipeline) {\n renderPass.setPipeline(this.renderPipeline);\n }\n\n renderPass.setBindGroup(0, this.uniformBindGroup);\n\n if (this.indexBuffer) {\n renderPass.setIndexBuffer(this.indexBuffer.get(), _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"IndexFormat\"].Uint32, 0);\n }\n\n Object.keys(this.attributeCache).forEach(function (attributeName, i) {\n renderPass.setVertexBuffer(0 + i, _this2.attributeCache[attributeName].get().buffer, 0);\n }); // renderPass.draw(verticesCount, instancesCount, verticesStart, 0);\n\n if (this.indexBuffer) {\n renderPass.drawIndexed(this.indexCount, this.options.instances || 1, 0, 0, 0);\n } else {\n renderPass.draw(this.options.count || 0, this.options.instances || 0, 0, 0);\n }\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n throw new Error('Method not implemented.');\n }\n }, {\n key: \"compilePipelineStageDescriptor\",\n value: function () {\n var _compilePipelineStageDescriptor = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_4___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.mark(function _callee2(vertexCode, fragmentCode, defines) {\n var shaderVersion, vertexShader, fragmentShader;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n shaderVersion = '#version 450\\n';\n vertexShader = vertexCode;\n fragmentShader = fragmentCode;\n\n if (this.engine.options.useWGSL) {\n _context2.next = 10;\n break;\n }\n\n _context2.next = 6;\n return this.compileShaderToSpirV(vertexCode, 'vertex', shaderVersion);\n\n case 6:\n vertexShader = _context2.sent;\n _context2.next = 9;\n return this.compileShaderToSpirV(fragmentCode, 'fragment', shaderVersion);\n\n case 9:\n fragmentShader = _context2.sent;\n\n case 10:\n return _context2.abrupt(\"return\", this.createPipelineStageDescriptor(vertexShader, fragmentShader));\n\n case 11:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function compilePipelineStageDescriptor(_x, _x2, _x3) {\n return _compilePipelineStageDescriptor.apply(this, arguments);\n }\n\n return compilePipelineStageDescriptor;\n }()\n }, {\n key: \"compileShaderToSpirV\",\n value: function compileShaderToSpirV(source, type, shaderVersion) {\n return this.compileRawShaderToSpirV(shaderVersion + source, type);\n }\n }, {\n key: \"compileRawShaderToSpirV\",\n value: function compileRawShaderToSpirV(source, type) {\n return this.engine.glslang.compileGLSL(source, type);\n }\n }, {\n key: \"createPipelineStageDescriptor\",\n value: function createPipelineStageDescriptor(vertexShader, fragmentShader) {\n return {\n vertexStage: {\n module: this.engine.device.createShaderModule({\n code: vertexShader,\n // @ts-ignore\n isWHLSL: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__[\"isSafari\"]\n }),\n entryPoint: 'main'\n },\n fragmentStage: {\n module: this.engine.device.createShaderModule({\n code: fragmentShader,\n // @ts-ignore\n isWHLSL: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__[\"isSafari\"]\n }),\n entryPoint: 'main'\n }\n };\n }\n /**\n * @see https://gpuweb.github.io/gpuweb/#rasterization-state\n */\n\n }, {\n key: \"getDefaultRasterizationStateDescriptor\",\n value: function getDefaultRasterizationStateDescriptor() {\n return {\n frontFace: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"FrontFace\"].CCW,\n cullMode: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"CullMode\"].None,\n depthBias: 0,\n depthBiasSlopeScale: 0,\n depthBiasClamp: 0\n };\n }\n }, {\n key: \"buildUniformBindGroup\",\n value: function buildUniformBindGroup(uniforms) {\n var _this3 = this;\n\n var offset = 0; // FIXME: 所有 uniform 合并成一个 buffer,固定使用 Float32Array 存储,确实会造成一些内存的浪费\n\n var mergedUniformData = concatenate.apply(void 0, [Float32Array].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(Object.keys(uniforms).map(function (uniformName) {\n if (uniforms[uniformName]) {\n _this3.uniformGPUBufferLayout.push({\n name: uniformName,\n offset: offset\n }); // @ts-ignore\n\n\n offset += (uniforms[uniformName].length || 1) * 4;\n return uniforms[uniformName];\n } else {\n // texture & framebuffer\n return [];\n }\n }))));\n var entries = [];\n var hasUniform = false;\n\n if (mergedUniformData.length) {\n hasUniform = true; // TODO: 所有 uniform 绑定到 slot 0,通过解析 Shader 代码判定可见性\n\n entries.push({\n // TODO: 暂时都绑定到 slot 0\n binding: 0,\n visibility: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"ShaderStage\"].Fragment | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"ShaderStage\"].Vertex,\n // TODO: 暂时 VS 和 FS 都可见\n type: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"BindingType\"].UniformBuffer\n });\n } // 声明 texture & sampler\n\n\n Object.keys(uniforms).filter(function (uniformName) {\n return uniforms[uniformName] === null;\n }).forEach(function (uniformName, i) {\n _this3.uniformGPUBufferLayout.push({\n name: uniformName,\n offset: i * 2 + (hasUniform ? 1 : 0)\n });\n\n entries.push({\n // Sampler\n binding: i * 2 + (hasUniform ? 1 : 0),\n visibility: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"ShaderStage\"].Fragment,\n type: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"BindingType\"].Sampler\n }, {\n // Texture view\n binding: i * 2 + (hasUniform ? 1 : 0) + 1,\n visibility: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"ShaderStage\"].Fragment,\n type: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"BindingType\"].SampledTexture\n });\n });\n this.uniformsBindGroupLayout = this.engine.device.createBindGroupLayout({\n // 最新 API 0.0.22 版本使用 entries。Chrome Canary 84.0.4110.0 已实现。\n // 使用 bindings 会报 Warning: GPUBindGroupLayoutDescriptor.bindings is deprecated: renamed to entries\n // @see https://github.com/antvis/GWebGPUEngine/issues/5\n entries: entries\n });\n this.pipelineLayout = this.engine.device.createPipelineLayout({\n bindGroupLayouts: [this.uniformsBindGroupLayout]\n });\n\n if (hasUniform) {\n this.uniformBuffer = new _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_11__[\"default\"](this.engine, {\n // TODO: 处理 Struct 和 boolean\n // @ts-ignore\n data: mergedUniformData instanceof Array ? // @ts-ignore\n new Float32Array(mergedUniformData) : mergedUniformData,\n usage: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"BufferUsage\"].Uniform | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"BufferUsage\"].CopyDst\n });\n }\n }\n }]);\n\n return WebGPUModel;\n}();\n\n\n//# sourceMappingURL=WebGPUModel.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ3B1L1dlYkdQVU1vZGVsLmpzP2E0NTAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMEU7QUFDdEI7QUFDUztBQUNPO0FBQ0k7QUFDSjtBQUNOOztBQUU5RCwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSx1REFBdUQsQ0FBQyw0RUFBZSwyQkFBMkIsRUFBRSxFQUFFLEVBQUUsNkNBQTZDLDJFQUEyRSxFQUFFLE9BQU8saURBQWlELGtGQUFrRixFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWU7O0FBRWplO0FBQ2E7QUFDYjtBQUMrRDtBQUN4RTs7QUFFMUM7QUFDQTtBQUNBOztBQUVBLDBGQUEwRixhQUFhO0FBQ3ZHO0FBQ0E7O0FBRUEsb0NBQW9DLHFCQUFxQjtBQUN6RDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxzQ0FBc0MsdUJBQXVCO0FBQzdEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQSxrQkFBa0IsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3JFOztBQUVBOztBQUVBLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBLHFhQUFxYTs7QUFFcmE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7OztBQUdqQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyx3REFBWSxjQUFjLHNEQUFFO0FBQ2pFLG9FQUFvRSxvREFBb0Q7QUFDeEg7QUFDQSw4QkFBOEIsK0RBQVc7QUFDekM7QUFDQSxxQkFBcUI7QUFDckIsbUJBQW1CO0FBQ25CLHFDQUFxQyxrRkFBOEI7QUFDbkU7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQiwrQkFBK0IsNEVBQXdCO0FBQ3ZEO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCOztBQUVsQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0Esb0RBQW9ELGtCQUFrQixzRUFBZTtBQUNyRjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsbURBQW1ELGtCQUFrQixzRUFBZSx1QkFBdUI7O0FBRTNHLGlDQUFpQzs7QUFFakM7QUFDQSxtQkFBbUIsb0VBQU87O0FBRTFCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXOztBQUVYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXOztBQUVYO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsRUFBRTs7QUFFakI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLDBEQUEwRCx3RUFBMkI7QUFDckY7O0FBRUE7QUFDQTtBQUNBLE9BQU8sRUFBRTs7QUFFVDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsNENBQTRDLDhFQUFpQixlQUFlLGlFQUFtQjtBQUMvRjtBQUNBLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiw0REFBUTtBQUM3QixXQUFXO0FBQ1g7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsNERBQVE7QUFDN0IsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsc0VBQXlCO0FBQzVDLGtCQUFrQixxRUFBd0I7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCOztBQUVyQiw4RUFBOEUsK0VBQWtCO0FBQ2hHO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFOzs7QUFHYjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0EsMEJBQTBCOztBQUUxQjtBQUNBO0FBQ0E7QUFDQSxzQkFBc0Isd0VBQTJCLFlBQVksd0VBQTJCO0FBQ3hGO0FBQ0EsZ0JBQWdCLHdFQUEyQjtBQUMzQyxTQUFTO0FBQ1QsT0FBTzs7O0FBR1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQix3RUFBMkI7QUFDakQsZ0JBQWdCLHdFQUEyQjtBQUMzQyxTQUFTO0FBQ1Q7QUFDQTtBQUNBLHNCQUFzQix3RUFBMkI7QUFDakQsZ0JBQWdCLHdFQUEyQjtBQUMzQyxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQSxpQ0FBaUMsc0RBQVk7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsd0VBQTJCLFdBQVcsd0VBQTJCO0FBQ2xGLFNBQVM7QUFDVDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRWlDO0FBQ2xDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1lbmdpbmVAMC41LjZAQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdwdS9XZWJHUFVNb2RlbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfdG9Db25zdW1hYmxlQXJyYXkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXlcIjtcbmltcG9ydCBfdHlwZW9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiO1xuaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSBcIkBiYWJlbC9ydW50aW1lL3JlZ2VuZXJhdG9yXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvclwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuaW1wb3J0IHsgZ2wsIGlzU2FmYXJpIH0gZnJvbSAnQGFudHYvZy13ZWJncHUtY29yZSc7XG5pbXBvcnQgKiBhcyBXZWJHUFVDb25zdGFudHMgZnJvbSAnQHdlYmdwdS90eXBlcy9kaXN0L2NvbnN0YW50cyc7XG5pbXBvcnQgeyBleHRyYWN0VW5pZm9ybXMgfSBmcm9tICcuLi91dGlscy91bmlmb3JtJztcbmltcG9ydCB7IGdldENvbG9yU3RhdGVEZXNjcmlwdG9ycywgZ2V0Q3VsbE1vZGUsIGdldERlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvciwgcHJpbWl0aXZlTWFwIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IFdlYkdQVUJ1ZmZlciBmcm9tICcuL1dlYkdQVUJ1ZmZlcic7XG5cbi8vIEB0cy1pZ25vcmVcbmZ1bmN0aW9uIGNvbmNhdGVuYXRlKHJlc3VsdENvbnN0cnVjdG9yKSB7XG4gIHZhciB0b3RhbExlbmd0aCA9IDA7XG5cbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFycmF5cyA9IG5ldyBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgYXJyYXlzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIGZvciAodmFyIF9pID0gMCwgX2FycmF5cyA9IGFycmF5czsgX2kgPCBfYXJyYXlzLmxlbmd0aDsgX2krKykge1xuICAgIHZhciBhcnIgPSBfYXJyYXlzW19pXTtcbiAgICB0b3RhbExlbmd0aCArPSBhcnIubGVuZ3RoO1xuICB9XG5cbiAgdmFyIHJlc3VsdCA9IG5ldyByZXN1bHRDb25zdHJ1Y3Rvcih0b3RhbExlbmd0aCk7XG4gIHZhciBvZmZzZXQgPSAwO1xuXG4gIGZvciAodmFyIF9pMiA9IDAsIF9hcnJheXMyID0gYXJyYXlzOyBfaTIgPCBfYXJyYXlzMi5sZW5ndGg7IF9pMisrKSB7XG4gICAgdmFyIF9hcnIgPSBfYXJyYXlzMltfaTJdO1xuICAgIHJlc3VsdC5zZXQoX2Fyciwgb2Zmc2V0KTtcbiAgICBvZmZzZXQgKz0gX2Fyci5sZW5ndGg7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG52YXIgV2ViR1BVTW9kZWwgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICog55So5LqO5ZCO57ut5riy5p+T5pe25Yqo5oCB5pu05pawXG4gICAqL1xuXG4gIC8qKlxuICAgKiB2ZXJ0ZXhcbiAgICovXG5cbiAgLyoqXG4gICAqIGluZGljZXMncyBidWZmZXJcbiAgICovXG4gIGZ1bmN0aW9uIFdlYkdQVU1vZGVsKGVuZ2luZSwgb3B0aW9ucykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBXZWJHUFVNb2RlbCk7XG5cbiAgICB0aGlzLmVuZ2luZSA9IGVuZ2luZTtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMucGlwZWxpbmVMYXlvdXQgPSB2b2lkIDA7XG4gICAgdGhpcy5yZW5kZXJQaXBlbGluZSA9IHZvaWQgMDtcbiAgICB0aGlzLnVuaWZvcm1zQmluZEdyb3VwTGF5b3V0ID0gdm9pZCAwO1xuICAgIHRoaXMudW5pZm9ybUJpbmRHcm91cCA9IHZvaWQgMDtcbiAgICB0aGlzLnVuaWZvcm1CdWZmZXIgPSB2b2lkIDA7XG4gICAgdGhpcy51bmlmb3JtcyA9IHt9O1xuICAgIHRoaXMudW5pZm9ybUdQVUJ1ZmZlckxheW91dCA9IFtdO1xuICAgIHRoaXMuYXR0cmlidXRlQ2FjaGUgPSB7fTtcbiAgICB0aGlzLmluZGV4QnVmZmVyID0gdm9pZCAwO1xuICAgIHRoaXMuaW5kZXhDb3VudCA9IHZvaWQgMDtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhXZWJHUFVNb2RlbCwgW3tcbiAgICBrZXk6IFwiaW5pdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2luaXQgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICAgIHZhciBfdGhpcyRvcHRpb25zLCB2cywgZnMsIGF0dHJpYnV0ZXMsIHVuaWZvcm1zLCBwcmltaXRpdmUsIGNvdW50LCBlbGVtZW50cywgZGVwdGgsIGJsZW5kLCBzdGVuY2lsLCBjdWxsLCBpbnN0YW5jZXMsIF95aWVsZCR0aGlzJGNvbXBpbGVQaSwgdmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIHZlcnRleFN0YXRlLCBkZXNjcmlwdG9yO1xuXG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgX3RoaXMkb3B0aW9ucyA9IHRoaXMub3B0aW9ucywgdnMgPSBfdGhpcyRvcHRpb25zLnZzLCBmcyA9IF90aGlzJG9wdGlvbnMuZnMsIGF0dHJpYnV0ZXMgPSBfdGhpcyRvcHRpb25zLmF0dHJpYnV0ZXMsIHVuaWZvcm1zID0gX3RoaXMkb3B0aW9ucy51bmlmb3JtcywgcHJpbWl0aXZlID0gX3RoaXMkb3B0aW9ucy5wcmltaXRpdmUsIGNvdW50ID0gX3RoaXMkb3B0aW9ucy5jb3VudCwgZWxlbWVudHMgPSBfdGhpcyRvcHRpb25zLmVsZW1lbnRzLCBkZXB0aCA9IF90aGlzJG9wdGlvbnMuZGVwdGgsIGJsZW5kID0gX3RoaXMkb3B0aW9ucy5ibGVuZCwgc3RlbmNpbCA9IF90aGlzJG9wdGlvbnMuc3RlbmNpbCwgY3VsbCA9IF90aGlzJG9wdGlvbnMuY3VsbCwgaW5zdGFuY2VzID0gX3RoaXMkb3B0aW9ucy5pbnN0YW5jZXM7IC8vIGJ1aWxkIHNoYWRlcnMgZmlyc3RcblxuICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAzO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbXBpbGVQaXBlbGluZVN0YWdlRGVzY3JpcHRvcih2cywgZnMsIG51bGwpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICBfeWllbGQkdGhpcyRjb21waWxlUGkgPSBfY29udGV4dC5zZW50O1xuICAgICAgICAgICAgICAgIHZlcnRleFN0YWdlID0gX3lpZWxkJHRoaXMkY29tcGlsZVBpLnZlcnRleFN0YWdlO1xuICAgICAgICAgICAgICAgIGZyYWdtZW50U3RhZ2UgPSBfeWllbGQkdGhpcyRjb21waWxlUGkuZnJhZ21lbnRTdGFnZTtcblxuICAgICAgICAgICAgICAgIGlmICh1bmlmb3Jtcykge1xuICAgICAgICAgICAgICAgICAgLy8gY3JlYXRlIHVuaWZvcm0gYmluZCBncm91cHMgJiBsYXlvdXRcbiAgICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRVbmlmb3JtQmluZEdyb3VwKHVuaWZvcm1zKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudHMpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuaW5kZXhCdWZmZXIgPSBlbGVtZW50cy5nZXQoKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuaW5kZXhDb3VudCA9IGVsZW1lbnRzLmluZGV4Q291bnQ7XG4gICAgICAgICAgICAgICAgfSAvLyBUT0RPOiBpbnN0YW5jZWQgYXJyYXlcblxuXG4gICAgICAgICAgICAgICAgdmVydGV4U3RhdGUgPSB7XG4gICAgICAgICAgICAgICAgICB2ZXJ0ZXhCdWZmZXJzOiBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5tYXAoZnVuY3Rpb24gKGF0dHJpYnV0ZU5hbWUsIGkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV07XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hdHRyaWJ1dGUkZ2V0ID0gYXR0cmlidXRlLmdldCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlTdHJpZGUgPSBfYXR0cmlidXRlJGdldC5hcnJheVN0cmlkZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXBNb2RlID0gX2F0dHJpYnV0ZSRnZXQuc3RlcE1vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHMgPSBfYXR0cmlidXRlJGdldC5hdHRyaWJ1dGVzO1xuXG4gICAgICAgICAgICAgICAgICAgIF90aGlzLmF0dHJpYnV0ZUNhY2hlW2F0dHJpYnV0ZU5hbWVdID0gYXR0cmlidXRlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgIGFycmF5U3RyaWRlOiBhcnJheVN0cmlkZSxcbiAgICAgICAgICAgICAgICAgICAgICBzdGVwTW9kZTogc3RlcE1vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczogYXRzXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRvciA9IHtcbiAgICAgICAgICAgICAgICAgIHNhbXBsZUNvdW50OiB0aGlzLmVuZ2luZS5tYWluUGFzc1NhbXBsZUNvdW50LFxuICAgICAgICAgICAgICAgICAgcHJpbWl0aXZlVG9wb2xvZ3k6IHByaW1pdGl2ZU1hcFtwcmltaXRpdmUgfHwgZ2wuVFJJQU5HTEVTXSxcbiAgICAgICAgICAgICAgICAgIHJhc3Rlcml6YXRpb25TdGF0ZTogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCB0aGlzLmdldERlZmF1bHRSYXN0ZXJpemF0aW9uU3RhdGVEZXNjcmlwdG9yKCkpLCB7fSwge1xuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBzdXBwb3J0IGZyb250ZmFjZVxuICAgICAgICAgICAgICAgICAgICBjdWxsTW9kZTogZ2V0Q3VsbE1vZGUoe1xuICAgICAgICAgICAgICAgICAgICAgIGN1bGw6IGN1bGxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgZGVwdGhTdGVuY2lsU3RhdGU6IGdldERlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvcih7XG4gICAgICAgICAgICAgICAgICAgIGRlcHRoOiBkZXB0aCxcbiAgICAgICAgICAgICAgICAgICAgc3RlbmNpbDogc3RlbmNpbFxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICBjb2xvclN0YXRlczogZ2V0Q29sb3JTdGF0ZURlc2NyaXB0b3JzKHtcbiAgICAgICAgICAgICAgICAgICAgYmxlbmQ6IGJsZW5kXG4gICAgICAgICAgICAgICAgICB9LCB0aGlzLmVuZ2luZS5vcHRpb25zLnN3YXBDaGFpbkZvcm1hdCksXG4gICAgICAgICAgICAgICAgICBsYXlvdXQ6IHRoaXMucGlwZWxpbmVMYXlvdXQsXG4gICAgICAgICAgICAgICAgICB2ZXJ0ZXhTdGFnZTogdmVydGV4U3RhZ2UsXG4gICAgICAgICAgICAgICAgICBmcmFnbWVudFN0YWdlOiBmcmFnbWVudFN0YWdlLFxuICAgICAgICAgICAgICAgICAgdmVydGV4U3RhdGU6IHZlcnRleFN0YXRlXG4gICAgICAgICAgICAgICAgfTsgLy8gY3JlYXRlIHBpcGVsaW5lXG5cbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlclBpcGVsaW5lID0gdGhpcy5lbmdpbmUuZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKGRlc2NyaXB0b3IpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZSwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGluaXQoKSB7XG4gICAgICAgIHJldHVybiBfaW5pdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5pdDtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogXCJhZGRVbmlmb3Jtc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhZGRVbmlmb3Jtcyh1bmlmb3Jtcykge1xuICAgICAgdGhpcy51bmlmb3JtcyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgdGhpcy51bmlmb3JtcyksIGV4dHJhY3RVbmlmb3Jtcyh1bmlmb3JtcykpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkcmF3XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRyYXcob3B0aW9ucykge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHZhciByZW5kZXJQYXNzID0gdGhpcy5lbmdpbmUuZ2V0Q3VycmVudFJlbmRlclBhc3MoKTtcblxuICAgICAgdmFyIHVuaWZvcm1zID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCB0aGlzLnVuaWZvcm1zKSwgZXh0cmFjdFVuaWZvcm1zKG9wdGlvbnMudW5pZm9ybXMgfHwge30pKTtcblxuICAgICAgdmFyIGJpbmRHcm91cEJpbmRpbmdzID0gW107IC8vIFRPRE86IHVuaWZvcm0g5Y+R55Sf5L+u5pS5XG5cbiAgICAgIE9iamVjdC5rZXlzKHVuaWZvcm1zKS5mb3JFYWNoKGZ1bmN0aW9uICh1bmlmb3JtTmFtZSkge1xuICAgICAgICB2YXIgdHlwZSA9IF90eXBlb2YodW5pZm9ybXNbdW5pZm9ybU5hbWVdKTtcblxuICAgICAgICBpZiAodHlwZSA9PT0gJ2Jvb2xlYW4nIHx8IHR5cGUgPT09ICdudW1iZXInIHx8IEFycmF5LmlzQXJyYXkodW5pZm9ybXNbdW5pZm9ybU5hbWVdKSB8fCAvLyBAdHMtaWdub3JlXG4gICAgICAgIHVuaWZvcm1zW3VuaWZvcm1OYW1lXS5CWVRFU19QRVJfRUxFTUVOVCkge1xuICAgICAgICAgIHZhciBfdGhpczIkdW5pZm9ybUdQVUJ1ZmY7XG5cbiAgICAgICAgICB2YXIgb2Zmc2V0ID0gKF90aGlzMiR1bmlmb3JtR1BVQnVmZiA9IF90aGlzMi51bmlmb3JtR1BVQnVmZmVyTGF5b3V0LmZpbmQoZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgICAgICAgIHZhciBuYW1lID0gX3JlZi5uYW1lO1xuICAgICAgICAgICAgcmV0dXJuIG5hbWUgPT09IHVuaWZvcm1OYW1lO1xuICAgICAgICAgIH0pKSA9PT0gbnVsbCB8fCBfdGhpczIkdW5pZm9ybUdQVUJ1ZmYgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzMiR1bmlmb3JtR1BVQnVmZi5vZmZzZXQ7XG5cbiAgICAgICAgICBpZiAob2Zmc2V0ICE9PSBudWxsKSB7XG4gICAgICAgICAgICBfdGhpczIudW5pZm9ybUJ1ZmZlci5zdWJEYXRhKHtcbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICBkYXRhOiB1bmlmb3Jtc1t1bmlmb3JtTmFtZV0sXG4gICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgb2Zmc2V0OiBvZmZzZXRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgX3RoaXMyJHVuaWZvcm1HUFVCdWZmMjtcblxuICAgICAgICAgIHZhciBfb2Zmc2V0ID0gKF90aGlzMiR1bmlmb3JtR1BVQnVmZjIgPSBfdGhpczIudW5pZm9ybUdQVUJ1ZmZlckxheW91dC5maW5kKGZ1bmN0aW9uIChfcmVmMikge1xuICAgICAgICAgICAgdmFyIG5hbWUgPSBfcmVmMi5uYW1lO1xuICAgICAgICAgICAgcmV0dXJuIG5hbWUgPT09IHVuaWZvcm1OYW1lO1xuICAgICAgICAgIH0pKSA9PT0gbnVsbCB8fCBfdGhpczIkdW5pZm9ybUdQVUJ1ZmYyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpczIkdW5pZm9ybUdQVUJ1ZmYyLm9mZnNldDtcblxuICAgICAgICAgIGlmIChfb2Zmc2V0ICE9PSBudWxsKSB7XG4gICAgICAgICAgICB2YXIgdGV4dHVyZU9yRnJhbWVidWZmZXIgPSB1bmlmb3Jtc1t1bmlmb3JtTmFtZV0uZ2V0KCk7XG5cbiAgICAgICAgICAgIHZhciBfcmVmMyA9IC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHRleHR1cmVPckZyYW1lYnVmZmVyLmNvbG9yIHx8IHRleHR1cmVPckZyYW1lYnVmZmVyLFxuICAgICAgICAgICAgICAgIHRleHR1cmUgPSBfcmVmMy50ZXh0dXJlLFxuICAgICAgICAgICAgICAgIHNhbXBsZXIgPSBfcmVmMy5zYW1wbGVyO1xuXG4gICAgICAgICAgICBpZiAoc2FtcGxlcikge1xuICAgICAgICAgICAgICBiaW5kR3JvdXBCaW5kaW5ncy5wdXNoKHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgYmluZGluZzogX29mZnNldCxcbiAgICAgICAgICAgICAgICByZXNvdXJjZTogc2FtcGxlclxuICAgICAgICAgICAgICB9KTsgLy8gQHRzLWlnbm9yZVxuXG4gICAgICAgICAgICAgIF9vZmZzZXQrKztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYmluZEdyb3VwQmluZGluZ3MucHVzaCh7XG4gICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgYmluZGluZzogX29mZnNldCxcbiAgICAgICAgICAgICAgcmVzb3VyY2U6IHRleHR1cmUuY3JlYXRlVmlldygpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy51bmlmb3JtQnVmZmVyKSB7XG4gICAgICAgIGJpbmRHcm91cEJpbmRpbmdzWzBdID0ge1xuICAgICAgICAgIGJpbmRpbmc6IDAsXG4gICAgICAgICAgcmVzb3VyY2U6IHtcbiAgICAgICAgICAgIGJ1ZmZlcjogdGhpcy51bmlmb3JtQnVmZmVyLmdldCgpIC8vIOi/lOWbniBHUFVCdWZmZXIg5Y6f55Sf5a+56LGhXG5cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHRoaXMudW5pZm9ybUJpbmRHcm91cCA9IHRoaXMuZW5naW5lLmRldmljZS5jcmVhdGVCaW5kR3JvdXAoe1xuICAgICAgICBsYXlvdXQ6IHRoaXMudW5pZm9ybXNCaW5kR3JvdXBMYXlvdXQsXG4gICAgICAgIGVudHJpZXM6IGJpbmRHcm91cEJpbmRpbmdzXG4gICAgICB9KTtcblxuICAgICAgaWYgKHRoaXMucmVuZGVyUGlwZWxpbmUpIHtcbiAgICAgICAgcmVuZGVyUGFzcy5zZXRQaXBlbGluZSh0aGlzLnJlbmRlclBpcGVsaW5lKTtcbiAgICAgIH1cblxuICAgICAgcmVuZGVyUGFzcy5zZXRCaW5kR3JvdXAoMCwgdGhpcy51bmlmb3JtQmluZEdyb3VwKTtcblxuICAgICAgaWYgKHRoaXMuaW5kZXhCdWZmZXIpIHtcbiAgICAgICAgcmVuZGVyUGFzcy5zZXRJbmRleEJ1ZmZlcih0aGlzLmluZGV4QnVmZmVyLmdldCgpLCBXZWJHUFVDb25zdGFudHMuSW5kZXhGb3JtYXQuVWludDMyLCAwKTtcbiAgICAgIH1cblxuICAgICAgT2JqZWN0LmtleXModGhpcy5hdHRyaWJ1dGVDYWNoZSkuZm9yRWFjaChmdW5jdGlvbiAoYXR0cmlidXRlTmFtZSwgaSkge1xuICAgICAgICByZW5kZXJQYXNzLnNldFZlcnRleEJ1ZmZlcigwICsgaSwgX3RoaXMyLmF0dHJpYnV0ZUNhY2hlW2F0dHJpYnV0ZU5hbWVdLmdldCgpLmJ1ZmZlciwgMCk7XG4gICAgICB9KTsgLy8gcmVuZGVyUGFzcy5kcmF3KHZlcnRpY2VzQ291bnQsIGluc3RhbmNlc0NvdW50LCB2ZXJ0aWNlc1N0YXJ0LCAwKTtcblxuICAgICAgaWYgKHRoaXMuaW5kZXhCdWZmZXIpIHtcbiAgICAgICAgcmVuZGVyUGFzcy5kcmF3SW5kZXhlZCh0aGlzLmluZGV4Q291bnQsIHRoaXMub3B0aW9ucy5pbnN0YW5jZXMgfHwgMSwgMCwgMCwgMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZW5kZXJQYXNzLmRyYXcodGhpcy5vcHRpb25zLmNvdW50IHx8IDAsIHRoaXMub3B0aW9ucy5pbnN0YW5jZXMgfHwgMCwgMCwgMCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRlc3Ryb3lcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcGlsZVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfY29tcGlsZVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTIodmVydGV4Q29kZSwgZnJhZ21lbnRDb2RlLCBkZWZpbmVzKSB7XG4gICAgICAgIHZhciBzaGFkZXJWZXJzaW9uLCB2ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVyO1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUyJChfY29udGV4dDIpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBzaGFkZXJWZXJzaW9uID0gJyN2ZXJzaW9uIDQ1MFxcbic7XG4gICAgICAgICAgICAgICAgdmVydGV4U2hhZGVyID0gdmVydGV4Q29kZTtcbiAgICAgICAgICAgICAgICBmcmFnbWVudFNoYWRlciA9IGZyYWdtZW50Q29kZTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmVuZ2luZS5vcHRpb25zLnVzZVdHU0wpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMTA7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDY7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tcGlsZVNoYWRlclRvU3BpclYodmVydGV4Q29kZSwgJ3ZlcnRleCcsIHNoYWRlclZlcnNpb24pO1xuXG4gICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICB2ZXJ0ZXhTaGFkZXIgPSBfY29udGV4dDIuc2VudDtcbiAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tcGlsZVNoYWRlclRvU3BpclYoZnJhZ21lbnRDb2RlLCAnZnJhZ21lbnQnLCBzaGFkZXJWZXJzaW9uKTtcblxuICAgICAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICAgICAgZnJhZ21lbnRTaGFkZXIgPSBfY29udGV4dDIuc2VudDtcblxuICAgICAgICAgICAgICBjYXNlIDEwOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuYWJydXB0KFwicmV0dXJuXCIsIHRoaXMuY3JlYXRlUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IodmVydGV4U2hhZGVyLCBmcmFnbWVudFNoYWRlcikpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUyLCB0aGlzKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gY29tcGlsZVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yKF94LCBfeDIsIF94Mykge1xuICAgICAgICByZXR1cm4gX2NvbXBpbGVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29tcGlsZVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yO1xuICAgIH0oKVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBpbGVTaGFkZXJUb1NwaXJWXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBpbGVTaGFkZXJUb1NwaXJWKHNvdXJjZSwgdHlwZSwgc2hhZGVyVmVyc2lvbikge1xuICAgICAgcmV0dXJuIHRoaXMuY29tcGlsZVJhd1NoYWRlclRvU3BpclYoc2hhZGVyVmVyc2lvbiArIHNvdXJjZSwgdHlwZSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBpbGVSYXdTaGFkZXJUb1NwaXJWXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBpbGVSYXdTaGFkZXJUb1NwaXJWKHNvdXJjZSwgdHlwZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZW5naW5lLmdsc2xhbmcuY29tcGlsZUdMU0woc291cmNlLCB0eXBlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY3JlYXRlUGlwZWxpbmVTdGFnZURlc2NyaXB0b3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IodmVydGV4U2hhZGVyLCBmcmFnbWVudFNoYWRlcikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmVydGV4U3RhZ2U6IHtcbiAgICAgICAgICBtb2R1bGU6IHRoaXMuZW5naW5lLmRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoe1xuICAgICAgICAgICAgY29kZTogdmVydGV4U2hhZGVyLFxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgaXNXSExTTDogaXNTYWZhcmlcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBlbnRyeVBvaW50OiAnbWFpbidcbiAgICAgICAgfSxcbiAgICAgICAgZnJhZ21lbnRTdGFnZToge1xuICAgICAgICAgIG1vZHVsZTogdGhpcy5lbmdpbmUuZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7XG4gICAgICAgICAgICBjb2RlOiBmcmFnbWVudFNoYWRlcixcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGlzV0hMU0w6IGlzU2FmYXJpXG4gICAgICAgICAgfSksXG4gICAgICAgICAgZW50cnlQb2ludDogJ21haW4nXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBzZWUgaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jcmFzdGVyaXphdGlvbi1zdGF0ZVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0RGVmYXVsdFJhc3Rlcml6YXRpb25TdGF0ZURlc2NyaXB0b3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RGVmYXVsdFJhc3Rlcml6YXRpb25TdGF0ZURlc2NyaXB0b3IoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBmcm9udEZhY2U6IFdlYkdQVUNvbnN0YW50cy5Gcm9udEZhY2UuQ0NXLFxuICAgICAgICBjdWxsTW9kZTogV2ViR1BVQ29uc3RhbnRzLkN1bGxNb2RlLk5vbmUsXG4gICAgICAgIGRlcHRoQmlhczogMCxcbiAgICAgICAgZGVwdGhCaWFzU2xvcGVTY2FsZTogMCxcbiAgICAgICAgZGVwdGhCaWFzQ2xhbXA6IDBcbiAgICAgIH07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImJ1aWxkVW5pZm9ybUJpbmRHcm91cFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBidWlsZFVuaWZvcm1CaW5kR3JvdXAodW5pZm9ybXMpIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICB2YXIgb2Zmc2V0ID0gMDsgLy8gRklYTUU6IOaJgOaciSB1bmlmb3JtIOWQiOW5tuaIkOS4gOS4qiBidWZmZXLvvIzlm7rlrprkvb/nlKggRmxvYXQzMkFycmF5IOWtmOWCqO+8jOehruWunuS8mumAoOaIkOS4gOS6m+WGheWtmOeahOa1qui0uVxuXG4gICAgICB2YXIgbWVyZ2VkVW5pZm9ybURhdGEgPSBjb25jYXRlbmF0ZS5hcHBseSh2b2lkIDAsIFtGbG9hdDMyQXJyYXldLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkoT2JqZWN0LmtleXModW5pZm9ybXMpLm1hcChmdW5jdGlvbiAodW5pZm9ybU5hbWUpIHtcbiAgICAgICAgaWYgKHVuaWZvcm1zW3VuaWZvcm1OYW1lXSkge1xuICAgICAgICAgIF90aGlzMy51bmlmb3JtR1BVQnVmZmVyTGF5b3V0LnB1c2goe1xuICAgICAgICAgICAgbmFtZTogdW5pZm9ybU5hbWUsXG4gICAgICAgICAgICBvZmZzZXQ6IG9mZnNldFxuICAgICAgICAgIH0pOyAvLyBAdHMtaWdub3JlXG5cblxuICAgICAgICAgIG9mZnNldCArPSAodW5pZm9ybXNbdW5pZm9ybU5hbWVdLmxlbmd0aCB8fCAxKSAqIDQ7XG4gICAgICAgICAgcmV0dXJuIHVuaWZvcm1zW3VuaWZvcm1OYW1lXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyB0ZXh0dXJlICYgZnJhbWVidWZmZXJcbiAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgIH0pKSkpO1xuICAgICAgdmFyIGVudHJpZXMgPSBbXTtcbiAgICAgIHZhciBoYXNVbmlmb3JtID0gZmFsc2U7XG5cbiAgICAgIGlmIChtZXJnZWRVbmlmb3JtRGF0YS5sZW5ndGgpIHtcbiAgICAgICAgaGFzVW5pZm9ybSA9IHRydWU7IC8vIFRPRE86IOaJgOaciSB1bmlmb3JtIOe7keWumuWIsCBzbG90IDDvvIzpgJrov4fop6PmnpAgU2hhZGVyIOS7o+eggeWIpOWumuWPr+ingeaAp1xuXG4gICAgICAgIGVudHJpZXMucHVzaCh7XG4gICAgICAgICAgLy8gVE9ETzog5pqC5pe26YO957uR5a6a5YiwIHNsb3QgMFxuICAgICAgICAgIGJpbmRpbmc6IDAsXG4gICAgICAgICAgdmlzaWJpbGl0eTogV2ViR1BVQ29uc3RhbnRzLlNoYWRlclN0YWdlLkZyYWdtZW50IHwgV2ViR1BVQ29uc3RhbnRzLlNoYWRlclN0YWdlLlZlcnRleCxcbiAgICAgICAgICAvLyBUT0RPOiDmmoLml7YgVlMg5ZKMIEZTIOmDveWPr+ingVxuICAgICAgICAgIHR5cGU6IFdlYkdQVUNvbnN0YW50cy5CaW5kaW5nVHlwZS5Vbmlmb3JtQnVmZmVyXG4gICAgICAgIH0pO1xuICAgICAgfSAvLyDlo7DmmI4gdGV4dHVyZSAmIHNhbXBsZXJcblxuXG4gICAgICBPYmplY3Qua2V5cyh1bmlmb3JtcykuZmlsdGVyKGZ1bmN0aW9uICh1bmlmb3JtTmFtZSkge1xuICAgICAgICByZXR1cm4gdW5pZm9ybXNbdW5pZm9ybU5hbWVdID09PSBudWxsO1xuICAgICAgfSkuZm9yRWFjaChmdW5jdGlvbiAodW5pZm9ybU5hbWUsIGkpIHtcbiAgICAgICAgX3RoaXMzLnVuaWZvcm1HUFVCdWZmZXJMYXlvdXQucHVzaCh7XG4gICAgICAgICAgbmFtZTogdW5pZm9ybU5hbWUsXG4gICAgICAgICAgb2Zmc2V0OiBpICogMiArIChoYXNVbmlmb3JtID8gMSA6IDApXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGVudHJpZXMucHVzaCh7XG4gICAgICAgICAgLy8gU2FtcGxlclxuICAgICAgICAgIGJpbmRpbmc6IGkgKiAyICsgKGhhc1VuaWZvcm0gPyAxIDogMCksXG4gICAgICAgICAgdmlzaWJpbGl0eTogV2ViR1BVQ29uc3RhbnRzLlNoYWRlclN0YWdlLkZyYWdtZW50LFxuICAgICAgICAgIHR5cGU6IFdlYkdQVUNvbnN0YW50cy5CaW5kaW5nVHlwZS5TYW1wbGVyXG4gICAgICAgIH0sIHtcbiAgICAgICAgICAvLyBUZXh0dXJlIHZpZXdcbiAgICAgICAgICBiaW5kaW5nOiBpICogMiArIChoYXNVbmlmb3JtID8gMSA6IDApICsgMSxcbiAgICAgICAgICB2aXNpYmlsaXR5OiBXZWJHUFVDb25zdGFudHMuU2hhZGVyU3RhZ2UuRnJhZ21lbnQsXG4gICAgICAgICAgdHlwZTogV2ViR1BVQ29uc3RhbnRzLkJpbmRpbmdUeXBlLlNhbXBsZWRUZXh0dXJlXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnVuaWZvcm1zQmluZEdyb3VwTGF5b3V0ID0gdGhpcy5lbmdpbmUuZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dCh7XG4gICAgICAgIC8vIOacgOaWsCBBUEkgMC4wLjIyIOeJiOacrOS9v+eUqCBlbnRyaWVz44CCQ2hyb21lIENhbmFyeSA4NC4wLjQxMTAuMCDlt7Llrp7njrDjgIJcbiAgICAgICAgLy8g5L2/55SoIGJpbmRpbmdzIOS8muaKpSBXYXJuaW5nOiBHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmJpbmRpbmdzIGlzIGRlcHJlY2F0ZWQ6IHJlbmFtZWQgdG8gZW50cmllc1xuICAgICAgICAvLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnR2aXMvR1dlYkdQVUVuZ2luZS9pc3N1ZXMvNVxuICAgICAgICBlbnRyaWVzOiBlbnRyaWVzXG4gICAgICB9KTtcbiAgICAgIHRoaXMucGlwZWxpbmVMYXlvdXQgPSB0aGlzLmVuZ2luZS5kZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQoe1xuICAgICAgICBiaW5kR3JvdXBMYXlvdXRzOiBbdGhpcy51bmlmb3Jtc0JpbmRHcm91cExheW91dF1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAoaGFzVW5pZm9ybSkge1xuICAgICAgICB0aGlzLnVuaWZvcm1CdWZmZXIgPSBuZXcgV2ViR1BVQnVmZmVyKHRoaXMuZW5naW5lLCB7XG4gICAgICAgICAgLy8gVE9ETzog5aSE55CGIFN0cnVjdCDlkowgYm9vbGVhblxuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBkYXRhOiBtZXJnZWRVbmlmb3JtRGF0YSBpbnN0YW5jZW9mIEFycmF5ID8gLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIG5ldyBGbG9hdDMyQXJyYXkobWVyZ2VkVW5pZm9ybURhdGEpIDogbWVyZ2VkVW5pZm9ybURhdGEsXG4gICAgICAgICAgdXNhZ2U6IFdlYkdQVUNvbnN0YW50cy5CdWZmZXJVc2FnZS5Vbmlmb3JtIHwgV2ViR1BVQ29uc3RhbnRzLkJ1ZmZlclVzYWdlLkNvcHlEc3RcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFdlYkdQVU1vZGVsO1xufSgpO1xuXG5leHBvcnQgeyBXZWJHUFVNb2RlbCBhcyBkZWZhdWx0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1XZWJHUFVNb2RlbC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUModel.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUTexture2D.js":
/*!******************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUTexture2D.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 WebGPUTexture2D; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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 _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/_@webgpu_types@0.0.31@@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./constants */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/constants.js\");\n\n\n\n\n\n/**\n * adaptor for regl.Buffer\n * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#buffers\n */\n\nvar WebGPUTexture2D = /*#__PURE__*/function () {\n function WebGPUTexture2D(engine, options) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, WebGPUTexture2D);\n\n this.engine = engine;\n this.options = options;\n this.texture = void 0;\n this.sampler = void 0;\n this.width = void 0;\n this.height = void 0;\n this.createTexture();\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(WebGPUTexture2D, [{\n key: \"get\",\n value: function get() {\n return {\n texture: this.texture,\n sampler: this.sampler\n };\n }\n }, {\n key: \"update\",\n value: function update() {// TODO\n }\n }, {\n key: \"resize\",\n value: function resize(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n // TODO: it seems that Texture doesn't support `resize`\n if (width !== this.width || height !== this.height) {\n this.destroy();\n this.createTexture();\n }\n\n this.width = width;\n this.height = height;\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n if (this.texture) {\n this.texture.destroy();\n }\n }\n }, {\n key: \"createTexture\",\n value: function createTexture() {\n var _this$options = this.options,\n data = _this$options.data,\n _this$options$type = _this$options.type,\n type = _this$options$type === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].UNSIGNED_BYTE : _this$options$type,\n width = _this$options.width,\n height = _this$options.height,\n _this$options$flipY = _this$options.flipY,\n flipY = _this$options$flipY === void 0 ? false : _this$options$flipY,\n _this$options$format = _this$options.format,\n format = _this$options$format === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].RGBA : _this$options$format,\n _this$options$mipmap = _this$options.mipmap,\n mipmap = _this$options$mipmap === void 0 ? false : _this$options$mipmap,\n _this$options$wrapS = _this$options.wrapS,\n wrapS = _this$options$wrapS === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].CLAMP_TO_EDGE : _this$options$wrapS,\n _this$options$wrapT = _this$options.wrapT,\n wrapT = _this$options$wrapT === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].CLAMP_TO_EDGE : _this$options$wrapT,\n _this$options$aniso = _this$options.aniso,\n aniso = _this$options$aniso === void 0 ? 0 : _this$options$aniso,\n _this$options$alignme = _this$options.alignment,\n alignment = _this$options$alignme === void 0 ? 1 : _this$options$alignme,\n _this$options$premult = _this$options.premultiplyAlpha,\n premultiplyAlpha = _this$options$premult === void 0 ? false : _this$options$premult,\n _this$options$mag = _this$options.mag,\n mag = _this$options$mag === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].NEAREST : _this$options$mag,\n _this$options$min = _this$options.min,\n min = _this$options$min === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].NEAREST : _this$options$min,\n _this$options$colorSp = _this$options.colorSpace,\n colorSpace = _this$options$colorSp === void 0 ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_2__[\"gl\"].BROWSER_DEFAULT_WEBGL : _this$options$colorSp,\n usage = _this$options.usage;\n this.width = width;\n this.height = height;\n this.texture = this.engine.device.createTexture({\n size: [width, height, 1],\n // TODO: arrayLayerCount is deprecated: use size.depth\n // arrayLayerCount: 1,\n mipLevelCount: 1,\n // TODO: https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-miplevelcount\n sampleCount: 1,\n dimension: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__[\"TextureDimension\"].E2d,\n format: _constants__WEBPACK_IMPORTED_MODULE_4__[\"formatMap\"][format],\n // could throw texture binding usage mismatch\n usage: usage || _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__[\"TextureUsage\"].Sampled | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__[\"TextureUsage\"].CopyDst\n });\n\n if (!usage || usage & _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_3__[\"TextureUsage\"].Sampled) {\n this.sampler = this.engine.device.createSampler({\n addressModeU: _constants__WEBPACK_IMPORTED_MODULE_4__[\"wrapModeMap\"][wrapS],\n addressModeV: _constants__WEBPACK_IMPORTED_MODULE_4__[\"wrapModeMap\"][wrapT],\n addressModeW: _constants__WEBPACK_IMPORTED_MODULE_4__[\"wrapModeMap\"][wrapS],\n // TODO: same as addressModeU\n magFilter: _constants__WEBPACK_IMPORTED_MODULE_4__[\"filterMap\"][mag],\n minFilter: _constants__WEBPACK_IMPORTED_MODULE_4__[\"filterMap\"][min],\n maxAnisotropy: aniso // @see https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-maxanisotropy\n\n });\n }\n }\n }]);\n\n return WebGPUTexture2D;\n}();\n\n\n//# sourceMappingURL=WebGPUTexture2D.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUyRC5qcz85NmY2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ047QUFDckI7QUFDdUI7QUFDQTtBQUNoRTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQsc0RBQUU7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRCxzREFBRTtBQUN2RDtBQUNBO0FBQ0E7QUFDQSxtREFBbUQsc0RBQUU7QUFDckQ7QUFDQSxtREFBbUQsc0RBQUU7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0Msc0RBQUU7QUFDakQ7QUFDQSwrQ0FBK0Msc0RBQUU7QUFDakQ7QUFDQSwwREFBMEQsc0RBQUU7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsNkVBQWdDO0FBQ25ELGdCQUFnQixvREFBUztBQUN6QjtBQUNBLHdCQUF3Qix5RUFBNEIsV0FBVyx5RUFBNEI7QUFDM0YsT0FBTzs7QUFFUCw0QkFBNEIseUVBQTRCO0FBQ3hEO0FBQ0Esd0JBQXdCLHNEQUFXO0FBQ25DLHdCQUF3QixzREFBVztBQUNuQyx3QkFBd0Isc0RBQVc7QUFDbkM7QUFDQSxxQkFBcUIsb0RBQVM7QUFDOUIscUJBQXFCLG9EQUFTO0FBQzlCOztBQUVBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRXFDO0FBQ3RDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdS1lbmdpbmVAMC41LjZAQGFudHYvZy13ZWJncHUtZW5naW5lL2VzL3dlYmdwdS9XZWJHUFVUZXh0dXJlMkQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgeyBnbCB9IGZyb20gJ0BhbnR2L2ctd2ViZ3B1LWNvcmUnO1xuaW1wb3J0ICogYXMgV2ViR1BVQ29uc3RhbnRzIGZyb20gJ0B3ZWJncHUvdHlwZXMvZGlzdC9jb25zdGFudHMnO1xuaW1wb3J0IHsgZmlsdGVyTWFwLCBmb3JtYXRNYXAsIHdyYXBNb2RlTWFwIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuLyoqXG4gKiBhZGFwdG9yIGZvciByZWdsLkJ1ZmZlclxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmVnbC1wcm9qZWN0L3JlZ2wvYmxvYi9naC1wYWdlcy9BUEkubWQjYnVmZmVyc1xuICovXG5cbnZhciBXZWJHUFVUZXh0dXJlMkQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBXZWJHUFVUZXh0dXJlMkQoZW5naW5lLCBvcHRpb25zKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFdlYkdQVVRleHR1cmUyRCk7XG5cbiAgICB0aGlzLmVuZ2luZSA9IGVuZ2luZTtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMudGV4dHVyZSA9IHZvaWQgMDtcbiAgICB0aGlzLnNhbXBsZXIgPSB2b2lkIDA7XG4gICAgdGhpcy53aWR0aCA9IHZvaWQgMDtcbiAgICB0aGlzLmhlaWdodCA9IHZvaWQgMDtcbiAgICB0aGlzLmNyZWF0ZVRleHR1cmUoKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhXZWJHUFVUZXh0dXJlMkQsIFt7XG4gICAga2V5OiBcImdldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0ZXh0dXJlOiB0aGlzLnRleHR1cmUsXG4gICAgICAgIHNhbXBsZXI6IHRoaXMuc2FtcGxlclxuICAgICAgfTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidXBkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVwZGF0ZSgpIHsvLyBUT0RPXG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlc2l6ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZXNpemUoX3JlZikge1xuICAgICAgdmFyIHdpZHRoID0gX3JlZi53aWR0aCxcbiAgICAgICAgICBoZWlnaHQgPSBfcmVmLmhlaWdodDtcblxuICAgICAgLy8gVE9ETzogaXQgc2VlbXMgdGhhdCBUZXh0dXJlIGRvZXNuJ3Qgc3VwcG9ydCBgcmVzaXplYFxuICAgICAgaWYgKHdpZHRoICE9PSB0aGlzLndpZHRoIHx8IGhlaWdodCAhPT0gdGhpcy5oZWlnaHQpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuY3JlYXRlVGV4dHVyZSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLndpZHRoID0gd2lkdGg7XG4gICAgICB0aGlzLmhlaWdodCA9IGhlaWdodDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGVzdHJveVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgICAgaWYgKHRoaXMudGV4dHVyZSkge1xuICAgICAgICB0aGlzLnRleHR1cmUuZGVzdHJveSgpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVUZXh0dXJlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZVRleHR1cmUoKSB7XG4gICAgICB2YXIgX3RoaXMkb3B0aW9ucyA9IHRoaXMub3B0aW9ucyxcbiAgICAgICAgICBkYXRhID0gX3RoaXMkb3B0aW9ucy5kYXRhLFxuICAgICAgICAgIF90aGlzJG9wdGlvbnMkdHlwZSA9IF90aGlzJG9wdGlvbnMudHlwZSxcbiAgICAgICAgICB0eXBlID0gX3RoaXMkb3B0aW9ucyR0eXBlID09PSB2b2lkIDAgPyBnbC5VTlNJR05FRF9CWVRFIDogX3RoaXMkb3B0aW9ucyR0eXBlLFxuICAgICAgICAgIHdpZHRoID0gX3RoaXMkb3B0aW9ucy53aWR0aCxcbiAgICAgICAgICBoZWlnaHQgPSBfdGhpcyRvcHRpb25zLmhlaWdodCxcbiAgICAgICAgICBfdGhpcyRvcHRpb25zJGZsaXBZID0gX3RoaXMkb3B0aW9ucy5mbGlwWSxcbiAgICAgICAgICBmbGlwWSA9IF90aGlzJG9wdGlvbnMkZmxpcFkgPT09IHZvaWQgMCA/IGZhbHNlIDogX3RoaXMkb3B0aW9ucyRmbGlwWSxcbiAgICAgICAgICBfdGhpcyRvcHRpb25zJGZvcm1hdCA9IF90aGlzJG9wdGlvbnMuZm9ybWF0LFxuICAgICAgICAgIGZvcm1hdCA9IF90aGlzJG9wdGlvbnMkZm9ybWF0ID09PSB2b2lkIDAgPyBnbC5SR0JBIDogX3RoaXMkb3B0aW9ucyRmb3JtYXQsXG4gICAgICAgICAgX3RoaXMkb3B0aW9ucyRtaXBtYXAgPSBfdGhpcyRvcHRpb25zLm1pcG1hcCxcbiAgICAgICAgICBtaXBtYXAgPSBfdGhpcyRvcHRpb25zJG1pcG1hcCA9PT0gdm9pZCAwID8gZmFsc2UgOiBfdGhpcyRvcHRpb25zJG1pcG1hcCxcbiAgICAgICAgICBfdGhpcyRvcHRpb25zJHdyYXBTID0gX3RoaXMkb3B0aW9ucy53cmFwUyxcbiAgICAgICAgICB3cmFwUyA9IF90aGlzJG9wdGlvbnMkd3JhcFMgPT09IHZvaWQgMCA/IGdsLkNMQU1QX1RPX0VER0UgOiBfdGhpcyRvcHRpb25zJHdyYXBTLFxuICAgICAgICAgIF90aGlzJG9wdGlvbnMkd3JhcFQgPSBfdGhpcyRvcHRpb25zLndyYXBULFxuICAgICAgICAgIHdyYXBUID0gX3RoaXMkb3B0aW9ucyR3cmFwVCA9PT0gdm9pZCAwID8gZ2wuQ0xBTVBfVE9fRURHRSA6IF90aGlzJG9wdGlvbnMkd3JhcFQsXG4gICAgICAgICAgX3RoaXMkb3B0aW9ucyRhbmlzbyA9IF90aGlzJG9wdGlvbnMuYW5pc28sXG4gICAgICAgICAgYW5pc28gPSBfdGhpcyRvcHRpb25zJGFuaXNvID09PSB2b2lkIDAgPyAwIDogX3RoaXMkb3B0aW9ucyRhbmlzbyxcbiAgICAgICAgICBfdGhpcyRvcHRpb25zJGFsaWdubWUgPSBfdGhpcyRvcHRpb25zLmFsaWdubWVudCxcbiAgICAgICAgICBhbGlnbm1lbnQgPSBfdGhpcyRvcHRpb25zJGFsaWdubWUgPT09IHZvaWQgMCA/IDEgOiBfdGhpcyRvcHRpb25zJGFsaWdubWUsXG4gICAgICAgICAgX3RoaXMkb3B0aW9ucyRwcmVtdWx0ID0gX3RoaXMkb3B0aW9ucy5wcmVtdWx0aXBseUFscGhhLFxuICAgICAgICAgIHByZW11bHRpcGx5QWxwaGEgPSBfdGhpcyRvcHRpb25zJHByZW11bHQgPT09IHZvaWQgMCA/IGZhbHNlIDogX3RoaXMkb3B0aW9ucyRwcmVtdWx0LFxuICAgICAgICAgIF90aGlzJG9wdGlvbnMkbWFnID0gX3RoaXMkb3B0aW9ucy5tYWcsXG4gICAgICAgICAgbWFnID0gX3RoaXMkb3B0aW9ucyRtYWcgPT09IHZvaWQgMCA/IGdsLk5FQVJFU1QgOiBfdGhpcyRvcHRpb25zJG1hZyxcbiAgICAgICAgICBfdGhpcyRvcHRpb25zJG1pbiA9IF90aGlzJG9wdGlvbnMubWluLFxuICAgICAgICAgIG1pbiA9IF90aGlzJG9wdGlvbnMkbWluID09PSB2b2lkIDAgPyBnbC5ORUFSRVNUIDogX3RoaXMkb3B0aW9ucyRtaW4sXG4gICAgICAgICAgX3RoaXMkb3B0aW9ucyRjb2xvclNwID0gX3RoaXMkb3B0aW9ucy5jb2xvclNwYWNlLFxuICAgICAgICAgIGNvbG9yU3BhY2UgPSBfdGhpcyRvcHRpb25zJGNvbG9yU3AgPT09IHZvaWQgMCA/IGdsLkJST1dTRVJfREVGQVVMVF9XRUJHTCA6IF90aGlzJG9wdGlvbnMkY29sb3JTcCxcbiAgICAgICAgICB1c2FnZSA9IF90aGlzJG9wdGlvbnMudXNhZ2U7XG4gICAgICB0aGlzLndpZHRoID0gd2lkdGg7XG4gICAgICB0aGlzLmhlaWdodCA9IGhlaWdodDtcbiAgICAgIHRoaXMudGV4dHVyZSA9IHRoaXMuZW5naW5lLmRldmljZS5jcmVhdGVUZXh0dXJlKHtcbiAgICAgICAgc2l6ZTogW3dpZHRoLCBoZWlnaHQsIDFdLFxuICAgICAgICAvLyBUT0RPOiBhcnJheUxheWVyQ291bnQgaXMgZGVwcmVjYXRlZDogdXNlIHNpemUuZGVwdGhcbiAgICAgICAgLy8gYXJyYXlMYXllckNvdW50OiAxLFxuICAgICAgICBtaXBMZXZlbENvdW50OiAxLFxuICAgICAgICAvLyBUT0RPOiBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1dGV4dHVyZXZpZXdkZXNjcmlwdG9yLW1pcGxldmVsY291bnRcbiAgICAgICAgc2FtcGxlQ291bnQ6IDEsXG4gICAgICAgIGRpbWVuc2lvbjogV2ViR1BVQ29uc3RhbnRzLlRleHR1cmVEaW1lbnNpb24uRTJkLFxuICAgICAgICBmb3JtYXQ6IGZvcm1hdE1hcFtmb3JtYXRdLFxuICAgICAgICAvLyBjb3VsZCB0aHJvdyB0ZXh0dXJlIGJpbmRpbmcgdXNhZ2UgbWlzbWF0Y2hcbiAgICAgICAgdXNhZ2U6IHVzYWdlIHx8IFdlYkdQVUNvbnN0YW50cy5UZXh0dXJlVXNhZ2UuU2FtcGxlZCB8IFdlYkdQVUNvbnN0YW50cy5UZXh0dXJlVXNhZ2UuQ29weURzdFxuICAgICAgfSk7XG5cbiAgICAgIGlmICghdXNhZ2UgfHwgdXNhZ2UgJiBXZWJHUFVDb25zdGFudHMuVGV4dHVyZVVzYWdlLlNhbXBsZWQpIHtcbiAgICAgICAgdGhpcy5zYW1wbGVyID0gdGhpcy5lbmdpbmUuZGV2aWNlLmNyZWF0ZVNhbXBsZXIoe1xuICAgICAgICAgIGFkZHJlc3NNb2RlVTogd3JhcE1vZGVNYXBbd3JhcFNdLFxuICAgICAgICAgIGFkZHJlc3NNb2RlVjogd3JhcE1vZGVNYXBbd3JhcFRdLFxuICAgICAgICAgIGFkZHJlc3NNb2RlVzogd3JhcE1vZGVNYXBbd3JhcFNdLFxuICAgICAgICAgIC8vIFRPRE86IHNhbWUgYXMgYWRkcmVzc01vZGVVXG4gICAgICAgICAgbWFnRmlsdGVyOiBmaWx0ZXJNYXBbbWFnXSxcbiAgICAgICAgICBtaW5GaWx0ZXI6IGZpbHRlck1hcFttaW5dLFxuICAgICAgICAgIG1heEFuaXNvdHJvcHk6IGFuaXNvIC8vIEBzZWUgaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZG9tLWdwdXNhbXBsZXJkZXNjcmlwdG9yLW1heGFuaXNvdHJvcHlcblxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gV2ViR1BVVGV4dHVyZTJEO1xufSgpO1xuXG5leHBvcnQgeyBXZWJHUFVUZXh0dXJlMkQgYXMgZGVmYXVsdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9V2ViR1BVVGV4dHVyZTJELmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUTexture2D.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/constants.js":
/*!************************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/constants.js ***!
\************************************************************************************************/
/*! exports provided: primitiveMap, depthFuncMap, blendEquationMap, blendFuncMap, formatMap, filterMap, wrapModeMap, getCullMode, getDepthStencilStateDescriptor, getColorStateDescriptors */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"primitiveMap\", function() { return primitiveMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"depthFuncMap\", function() { return depthFuncMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"blendEquationMap\", function() { return blendEquationMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"blendFuncMap\", function() { return blendFuncMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatMap\", function() { return formatMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"filterMap\", function() { return filterMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"wrapModeMap\", function() { return wrapModeMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCullMode\", function() { return getCullMode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDepthStencilStateDescriptor\", function() { return getDepthStencilStateDescriptor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getColorStateDescriptors\", function() { return getColorStateDescriptors; });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@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 _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/_@webgpu_types@0.0.31@@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__);\n\n\nvar _primitiveMap, _depthFuncMap, _blendEquationMap, _blendFuncMap, _formatMap, _filterMap, _wrapModeMap;\n\n\n // WebGPU 不支持 LINE_LOOP & TRIANGLE_FAN\n\nvar primitiveMap = (_primitiveMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].POINTS, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"PrimitiveTopology\"].PointList), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINES, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"PrimitiveTopology\"].LineList), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINE_LOOP, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"PrimitiveTopology\"].LineList), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINE_STRIP, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"PrimitiveTopology\"].LineStrip), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].TRIANGLES, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"PrimitiveTopology\"].TriangleList), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].TRIANGLE_FAN, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"PrimitiveTopology\"].TriangleList), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_primitiveMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].TRIANGLE_STRIP, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"PrimitiveTopology\"].TriangleStrip), _primitiveMap);\nvar depthFuncMap = (_depthFuncMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NEVER, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CompareFunction\"].Never), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ALWAYS, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CompareFunction\"].Always), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LESS, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CompareFunction\"].Less), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LEQUAL, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CompareFunction\"].LessEqual), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].GREATER, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CompareFunction\"].Greater), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].GEQUAL, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CompareFunction\"].GreaterEqual), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].EQUAL, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CompareFunction\"].Equal), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_depthFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NOTEQUAL, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CompareFunction\"].NotEqual), _depthFuncMap);\nvar blendEquationMap = (_blendEquationMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FUNC_ADD, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendOperation\"].Add), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].MIN_EXT, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendOperation\"].Min), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].MAX_EXT, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendOperation\"].Max), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FUNC_SUBTRACT, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendOperation\"].Subtract), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendEquationMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FUNC_REVERSE_SUBTRACT, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendOperation\"].ReverseSubtract), _blendEquationMap); // @see https://gpuweb.github.io/gpuweb/#blend-state\n// 不支持 'constant alpha' 和 'one minus constant alpha'\n\nvar blendFuncMap = (_blendFuncMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ZERO, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].Zero), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].One), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].SRC_COLOR, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].SrcColor), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_SRC_COLOR, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].OneMinusSrcColor), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].SRC_ALPHA, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].SrcAlpha), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_SRC_ALPHA, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].OneMinusSrcAlpha), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DST_COLOR, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].DstColor), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_DST_COLOR, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].OneMinusDstColor), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DST_ALPHA, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].DstAlpha), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_DST_ALPHA, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].OneMinusDstAlpha), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].CONSTANT_COLOR, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].BlendColor), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE_MINUS_CONSTANT_COLOR, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].OneMinusBlendColor), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_blendFuncMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].SRC_ALPHA_SATURATE, _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"BlendFactor\"].SrcAlphaSaturated), _blendFuncMap); // @see https://gpuweb.github.io/gpuweb/#texture-formats\n\nvar formatMap = (_formatMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ALPHA, 'r8unorm'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].RGBA, 'rgba8unorm'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DEPTH_COMPONENT, 'depth32float'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_formatMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].DEPTH_STENCIL, 'depth24plus-stencil8'), _formatMap); // @see https://gpuweb.github.io/gpuweb/#enumdef-gpufiltermode\n\nvar filterMap = (_filterMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_filterMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].NEAREST, 'nearest'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_filterMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].LINEAR, 'linear'), _filterMap); // @see https://gpuweb.github.io/gpuweb/#enumdef-gpuaddressmode\n\nvar wrapModeMap = (_wrapModeMap = {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_wrapModeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].REPEAT, 'repeat'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_wrapModeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].CLAMP_TO_EDGE, 'clamp-to-edge'), _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_wrapModeMap, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].MIRRORED_REPEAT, 'mirror-repeat'), _wrapModeMap);\nfunction getCullMode(_ref) {\n var cull = _ref.cull;\n\n if (!cull || !cull.enable) {\n return _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CullMode\"].None;\n }\n\n if (cull.face) {\n return cull.face === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FRONT ? _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CullMode\"].Front : _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CullMode\"].Back;\n }\n}\nfunction getDepthStencilStateDescriptor(_ref2) {\n var depth = _ref2.depth,\n stencil = _ref2.stencil;\n // TODO: stencil\n var stencilFrontBack = {\n compare: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"CompareFunction\"].Always,\n depthFailOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"StencilOperation\"].Keep,\n failOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"StencilOperation\"].Keep,\n passOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"StencilOperation\"].Keep\n };\n return {\n depthWriteEnabled: depth && depth.enable,\n depthCompare: depthFuncMap[(depth === null || depth === void 0 ? void 0 : depth.func) || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ALWAYS],\n format: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"TextureFormat\"].Depth24PlusStencil8,\n stencilFront: stencilFrontBack,\n stencilBack: stencilFrontBack,\n stencilReadMask: 0xffffffff,\n stencilWriteMask: 0xffffffff\n };\n}\n/**\n * @see https://gpuweb.github.io/gpuweb/#color-state\n */\n\nfunction getColorStateDescriptors(_ref3, swapChainFormat) {\n var blend = _ref3.blend;\n return [{\n format: swapChainFormat,\n // https://gpuweb.github.io/gpuweb/#blend-state\n alphaBlend: {\n srcFactor: blendFuncMap[blend && blend.func && blend.func.srcAlpha || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE],\n dstFactor: blendFuncMap[blend && blend.func && blend.func.dstAlpha || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ZERO],\n operation: blendEquationMap[blend && blend.equation && blend.equation.alpha || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FUNC_ADD]\n },\n colorBlend: {\n srcFactor: blendFuncMap[blend && blend.func && blend.func.srcRGB || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ONE],\n dstFactor: blendFuncMap[blend && blend.func && blend.func.dstRGB || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].ZERO],\n operation: blendEquationMap[blend && blend.equation && blend.equation.rgb || _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_1__[\"gl\"].FUNC_ADD]\n },\n writeMask: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_2__[\"ColorWrite\"].All\n }];\n}\n//# sourceMappingURL=constants.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ3B1L2NvbnN0YW50cy5qcz9iZjY4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FOztBQUVwRTs7QUFFeUM7QUFDdUI7O0FBRXpELHNDQUFzQyxFQUFFLDRFQUFlLGdCQUFnQixzREFBRSxTQUFTLDhFQUFpQyxhQUFhLDRFQUFlLGdCQUFnQixzREFBRSxRQUFRLDhFQUFpQyxZQUFZLDRFQUFlLGdCQUFnQixzREFBRSxZQUFZLDhFQUFpQyxZQUFZLDRFQUFlLGdCQUFnQixzREFBRSxhQUFhLDhFQUFpQyxhQUFhLDRFQUFlLGdCQUFnQixzREFBRSxZQUFZLDhFQUFpQyxnQkFBZ0IsNEVBQWUsZ0JBQWdCLHNEQUFFLGVBQWUsOEVBQWlDLGdCQUFnQiw0RUFBZSxnQkFBZ0Isc0RBQUUsaUJBQWlCLDhFQUFpQztBQUM5cEIsc0NBQXNDLEVBQUUsNEVBQWUsZ0JBQWdCLHNEQUFFLFFBQVEsNEVBQStCLFNBQVMsNEVBQWUsZ0JBQWdCLHNEQUFFLFNBQVMsNEVBQStCLFVBQVUsNEVBQWUsZ0JBQWdCLHNEQUFFLE9BQU8sNEVBQStCLFFBQVEsNEVBQWUsZ0JBQWdCLHNEQUFFLFNBQVMsNEVBQStCLGFBQWEsNEVBQWUsZ0JBQWdCLHNEQUFFLFVBQVUsNEVBQStCLFdBQVcsNEVBQWUsZ0JBQWdCLHNEQUFFLFNBQVMsNEVBQStCLGdCQUFnQiw0RUFBZSxnQkFBZ0Isc0RBQUUsUUFBUSw0RUFBK0IsU0FBUyw0RUFBZSxnQkFBZ0Isc0RBQUUsV0FBVyw0RUFBK0I7QUFDM3JCLDhDQUE4QyxFQUFFLDRFQUFlLG9CQUFvQixzREFBRSxXQUFXLDJFQUE4QixPQUFPLDRFQUFlLG9CQUFvQixzREFBRSxVQUFVLDJFQUE4QixPQUFPLDRFQUFlLG9CQUFvQixzREFBRSxVQUFVLDJFQUE4QixPQUFPLDRFQUFlLG9CQUFvQixzREFBRSxnQkFBZ0IsMkVBQThCLFlBQVksNEVBQWUsb0JBQW9CLHNEQUFFLHdCQUF3QiwyRUFBOEIsc0NBQXNDO0FBQ3BoQjs7QUFFTyxzQ0FBc0MsRUFBRSw0RUFBZSxnQkFBZ0Isc0RBQUUsT0FBTyx3RUFBMkIsUUFBUSw0RUFBZSxnQkFBZ0Isc0RBQUUsTUFBTSx3RUFBMkIsT0FBTyw0RUFBZSxnQkFBZ0Isc0RBQUUsWUFBWSx3RUFBMkIsWUFBWSw0RUFBZSxnQkFBZ0Isc0RBQUUsc0JBQXNCLHdFQUEyQixvQkFBb0IsNEVBQWUsZ0JBQWdCLHNEQUFFLFlBQVksd0VBQTJCLFlBQVksNEVBQWUsZ0JBQWdCLHNEQUFFLHNCQUFzQix3RUFBMkIsb0JBQW9CLDRFQUFlLGdCQUFnQixzREFBRSxZQUFZLHdFQUEyQixZQUFZLDRFQUFlLGdCQUFnQixzREFBRSxzQkFBc0Isd0VBQTJCLG9CQUFvQiw0RUFBZSxnQkFBZ0Isc0RBQUUsWUFBWSx3RUFBMkIsWUFBWSw0RUFBZSxnQkFBZ0Isc0RBQUUsc0JBQXNCLHdFQUEyQixvQkFBb0IsNEVBQWUsZ0JBQWdCLHNEQUFFLGlCQUFpQix3RUFBMkIsY0FBYyw0RUFBZSxnQkFBZ0Isc0RBQUUsMkJBQTJCLHdFQUEyQixzQkFBc0IsNEVBQWUsZ0JBQWdCLHNEQUFFLHFCQUFxQix3RUFBMkIsb0NBQW9DOztBQUVqdUMsZ0NBQWdDLEVBQUUsNEVBQWUsYUFBYSxzREFBRSxvQkFBb0IsNEVBQWUsYUFBYSxzREFBRSxzQkFBc0IsNEVBQWUsYUFBYSxzREFBRSxtQ0FBbUMsNEVBQWUsYUFBYSxzREFBRSxxREFBcUQ7O0FBRTVSLGdDQUFnQyxFQUFFLDRFQUFlLGFBQWEsc0RBQUUsc0JBQXNCLDRFQUFlLGFBQWEsc0RBQUUsZ0NBQWdDOztBQUVwSixvQ0FBb0MsRUFBRSw0RUFBZSxlQUFlLHNEQUFFLG9CQUFvQiw0RUFBZSxlQUFlLHNEQUFFLGtDQUFrQyw0RUFBZSxlQUFlLHNEQUFFO0FBQzVMO0FBQ1A7O0FBRUE7QUFDQSxXQUFXLHFFQUF3QjtBQUNuQzs7QUFFQTtBQUNBLHlCQUF5QixzREFBRSxTQUFTLHFFQUF3QixTQUFTLHFFQUF3QjtBQUM3RjtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsNEVBQStCO0FBQzVDLGlCQUFpQiw2RUFBZ0M7QUFDakQsWUFBWSw2RUFBZ0M7QUFDNUMsWUFBWSw2RUFBZ0M7QUFDNUM7QUFDQTtBQUNBO0FBQ0EsNkZBQTZGLHNEQUFFO0FBQy9GLFlBQVksMEVBQTZCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0RUFBNEUsc0RBQUU7QUFDOUUsNEVBQTRFLHNEQUFFO0FBQzlFLHFGQUFxRixzREFBRTtBQUN2RixLQUFLO0FBQ0w7QUFDQSwwRUFBMEUsc0RBQUU7QUFDNUUsMEVBQTBFLHNEQUFFO0FBQzVFLG1GQUFtRixzREFBRTtBQUNyRixLQUFLO0FBQ0wsZUFBZSx1RUFBMEI7QUFDekMsR0FBRztBQUNIO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ3B1L2NvbnN0YW50cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIjtcblxudmFyIF9wcmltaXRpdmVNYXAsIF9kZXB0aEZ1bmNNYXAsIF9ibGVuZEVxdWF0aW9uTWFwLCBfYmxlbmRGdW5jTWFwLCBfZm9ybWF0TWFwLCBfZmlsdGVyTWFwLCBfd3JhcE1vZGVNYXA7XG5cbmltcG9ydCB7IGdsIH0gZnJvbSAnQGFudHYvZy13ZWJncHUtY29yZSc7XG5pbXBvcnQgKiBhcyBXZWJHUFVDb25zdGFudHMgZnJvbSAnQHdlYmdwdS90eXBlcy9kaXN0L2NvbnN0YW50cyc7IC8vIFdlYkdQVSDkuI3mlK/mjIEgTElORV9MT09QICYgVFJJQU5HTEVfRkFOXG5cbmV4cG9ydCB2YXIgcHJpbWl0aXZlTWFwID0gKF9wcmltaXRpdmVNYXAgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9wcmltaXRpdmVNYXAsIGdsLlBPSU5UUywgV2ViR1BVQ29uc3RhbnRzLlByaW1pdGl2ZVRvcG9sb2d5LlBvaW50TGlzdCksIF9kZWZpbmVQcm9wZXJ0eShfcHJpbWl0aXZlTWFwLCBnbC5MSU5FUywgV2ViR1BVQ29uc3RhbnRzLlByaW1pdGl2ZVRvcG9sb2d5LkxpbmVMaXN0KSwgX2RlZmluZVByb3BlcnR5KF9wcmltaXRpdmVNYXAsIGdsLkxJTkVfTE9PUCwgV2ViR1BVQ29uc3RhbnRzLlByaW1pdGl2ZVRvcG9sb2d5LkxpbmVMaXN0KSwgX2RlZmluZVByb3BlcnR5KF9wcmltaXRpdmVNYXAsIGdsLkxJTkVfU1RSSVAsIFdlYkdQVUNvbnN0YW50cy5QcmltaXRpdmVUb3BvbG9neS5MaW5lU3RyaXApLCBfZGVmaW5lUHJvcGVydHkoX3ByaW1pdGl2ZU1hcCwgZ2wuVFJJQU5HTEVTLCBXZWJHUFVDb25zdGFudHMuUHJpbWl0aXZlVG9wb2xvZ3kuVHJpYW5nbGVMaXN0KSwgX2RlZmluZVByb3BlcnR5KF9wcmltaXRpdmVNYXAsIGdsLlRSSUFOR0xFX0ZBTiwgV2ViR1BVQ29uc3RhbnRzLlByaW1pdGl2ZVRvcG9sb2d5LlRyaWFuZ2xlTGlzdCksIF9kZWZpbmVQcm9wZXJ0eShfcHJpbWl0aXZlTWFwLCBnbC5UUklBTkdMRV9TVFJJUCwgV2ViR1BVQ29uc3RhbnRzLlByaW1pdGl2ZVRvcG9sb2d5LlRyaWFuZ2xlU3RyaXApLCBfcHJpbWl0aXZlTWFwKTtcbmV4cG9ydCB2YXIgZGVwdGhGdW5jTWFwID0gKF9kZXB0aEZ1bmNNYXAgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9kZXB0aEZ1bmNNYXAsIGdsLk5FVkVSLCBXZWJHUFVDb25zdGFudHMuQ29tcGFyZUZ1bmN0aW9uLk5ldmVyKSwgX2RlZmluZVByb3BlcnR5KF9kZXB0aEZ1bmNNYXAsIGdsLkFMV0FZUywgV2ViR1BVQ29uc3RhbnRzLkNvbXBhcmVGdW5jdGlvbi5BbHdheXMpLCBfZGVmaW5lUHJvcGVydHkoX2RlcHRoRnVuY01hcCwgZ2wuTEVTUywgV2ViR1BVQ29uc3RhbnRzLkNvbXBhcmVGdW5jdGlvbi5MZXNzKSwgX2RlZmluZVByb3BlcnR5KF9kZXB0aEZ1bmNNYXAsIGdsLkxFUVVBTCwgV2ViR1BVQ29uc3RhbnRzLkNvbXBhcmVGdW5jdGlvbi5MZXNzRXF1YWwpLCBfZGVmaW5lUHJvcGVydHkoX2RlcHRoRnVuY01hcCwgZ2wuR1JFQVRFUiwgV2ViR1BVQ29uc3RhbnRzLkNvbXBhcmVGdW5jdGlvbi5HcmVhdGVyKSwgX2RlZmluZVByb3BlcnR5KF9kZXB0aEZ1bmNNYXAsIGdsLkdFUVVBTCwgV2ViR1BVQ29uc3RhbnRzLkNvbXBhcmVGdW5jdGlvbi5HcmVhdGVyRXF1YWwpLCBfZGVmaW5lUHJvcGVydHkoX2RlcHRoRnVuY01hcCwgZ2wuRVFVQUwsIFdlYkdQVUNvbnN0YW50cy5Db21wYXJlRnVuY3Rpb24uRXF1YWwpLCBfZGVmaW5lUHJvcGVydHkoX2RlcHRoRnVuY01hcCwgZ2wuTk9URVFVQUwsIFdlYkdQVUNvbnN0YW50cy5Db21wYXJlRnVuY3Rpb24uTm90RXF1YWwpLCBfZGVwdGhGdW5jTWFwKTtcbmV4cG9ydCB2YXIgYmxlbmRFcXVhdGlvbk1hcCA9IChfYmxlbmRFcXVhdGlvbk1hcCA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRXF1YXRpb25NYXAsIGdsLkZVTkNfQURELCBXZWJHUFVDb25zdGFudHMuQmxlbmRPcGVyYXRpb24uQWRkKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEVxdWF0aW9uTWFwLCBnbC5NSU5fRVhULCBXZWJHUFVDb25zdGFudHMuQmxlbmRPcGVyYXRpb24uTWluKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEVxdWF0aW9uTWFwLCBnbC5NQVhfRVhULCBXZWJHUFVDb25zdGFudHMuQmxlbmRPcGVyYXRpb24uTWF4KSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEVxdWF0aW9uTWFwLCBnbC5GVU5DX1NVQlRSQUNULCBXZWJHUFVDb25zdGFudHMuQmxlbmRPcGVyYXRpb24uU3VidHJhY3QpLCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRXF1YXRpb25NYXAsIGdsLkZVTkNfUkVWRVJTRV9TVUJUUkFDVCwgV2ViR1BVQ29uc3RhbnRzLkJsZW5kT3BlcmF0aW9uLlJldmVyc2VTdWJ0cmFjdCksIF9ibGVuZEVxdWF0aW9uTWFwKTsgLy8gQHNlZSBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNibGVuZC1zdGF0ZVxuLy8g5LiN5pSv5oyBICdjb25zdGFudCBhbHBoYScg5ZKMICdvbmUgbWludXMgY29uc3RhbnQgYWxwaGEnXG5cbmV4cG9ydCB2YXIgYmxlbmRGdW5jTWFwID0gKF9ibGVuZEZ1bmNNYXAgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLlpFUk8sIFdlYkdQVUNvbnN0YW50cy5CbGVuZEZhY3Rvci5aZXJvKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLk9ORSwgV2ViR1BVQ29uc3RhbnRzLkJsZW5kRmFjdG9yLk9uZSksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5TUkNfQ09MT1IsIFdlYkdQVUNvbnN0YW50cy5CbGVuZEZhY3Rvci5TcmNDb2xvciksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5PTkVfTUlOVVNfU1JDX0NPTE9SLCBXZWJHUFVDb25zdGFudHMuQmxlbmRGYWN0b3IuT25lTWludXNTcmNDb2xvciksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5TUkNfQUxQSEEsIFdlYkdQVUNvbnN0YW50cy5CbGVuZEZhY3Rvci5TcmNBbHBoYSksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5PTkVfTUlOVVNfU1JDX0FMUEhBLCBXZWJHUFVDb25zdGFudHMuQmxlbmRGYWN0b3IuT25lTWludXNTcmNBbHBoYSksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5EU1RfQ09MT1IsIFdlYkdQVUNvbnN0YW50cy5CbGVuZEZhY3Rvci5Ec3RDb2xvciksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5PTkVfTUlOVVNfRFNUX0NPTE9SLCBXZWJHUFVDb25zdGFudHMuQmxlbmRGYWN0b3IuT25lTWludXNEc3RDb2xvciksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5EU1RfQUxQSEEsIFdlYkdQVUNvbnN0YW50cy5CbGVuZEZhY3Rvci5Ec3RBbHBoYSksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5PTkVfTUlOVVNfRFNUX0FMUEhBLCBXZWJHUFVDb25zdGFudHMuQmxlbmRGYWN0b3IuT25lTWludXNEc3RBbHBoYSksIF9kZWZpbmVQcm9wZXJ0eShfYmxlbmRGdW5jTWFwLCBnbC5DT05TVEFOVF9DT0xPUiwgV2ViR1BVQ29uc3RhbnRzLkJsZW5kRmFjdG9yLkJsZW5kQ29sb3IpLCBfZGVmaW5lUHJvcGVydHkoX2JsZW5kRnVuY01hcCwgZ2wuT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SLCBXZWJHUFVDb25zdGFudHMuQmxlbmRGYWN0b3IuT25lTWludXNCbGVuZENvbG9yKSwgX2RlZmluZVByb3BlcnR5KF9ibGVuZEZ1bmNNYXAsIGdsLlNSQ19BTFBIQV9TQVRVUkFURSwgV2ViR1BVQ29uc3RhbnRzLkJsZW5kRmFjdG9yLlNyY0FscGhhU2F0dXJhdGVkKSwgX2JsZW5kRnVuY01hcCk7IC8vIEBzZWUgaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jdGV4dHVyZS1mb3JtYXRzXG5cbmV4cG9ydCB2YXIgZm9ybWF0TWFwID0gKF9mb3JtYXRNYXAgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9mb3JtYXRNYXAsIGdsLkFMUEhBLCAncjh1bm9ybScpLCBfZGVmaW5lUHJvcGVydHkoX2Zvcm1hdE1hcCwgZ2wuUkdCQSwgJ3JnYmE4dW5vcm0nKSwgX2RlZmluZVByb3BlcnR5KF9mb3JtYXRNYXAsIGdsLkRFUFRIX0NPTVBPTkVOVCwgJ2RlcHRoMzJmbG9hdCcpLCBfZGVmaW5lUHJvcGVydHkoX2Zvcm1hdE1hcCwgZ2wuREVQVEhfU1RFTkNJTCwgJ2RlcHRoMjRwbHVzLXN0ZW5jaWw4JyksIF9mb3JtYXRNYXApOyAvLyBAc2VlIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2VudW1kZWYtZ3B1ZmlsdGVybW9kZVxuXG5leHBvcnQgdmFyIGZpbHRlck1hcCA9IChfZmlsdGVyTWFwID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfZmlsdGVyTWFwLCBnbC5ORUFSRVNULCAnbmVhcmVzdCcpLCBfZGVmaW5lUHJvcGVydHkoX2ZpbHRlck1hcCwgZ2wuTElORUFSLCAnbGluZWFyJyksIF9maWx0ZXJNYXApOyAvLyBAc2VlIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2VudW1kZWYtZ3B1YWRkcmVzc21vZGVcblxuZXhwb3J0IHZhciB3cmFwTW9kZU1hcCA9IChfd3JhcE1vZGVNYXAgPSB7fSwgX2RlZmluZVByb3BlcnR5KF93cmFwTW9kZU1hcCwgZ2wuUkVQRUFULCAncmVwZWF0JyksIF9kZWZpbmVQcm9wZXJ0eShfd3JhcE1vZGVNYXAsIGdsLkNMQU1QX1RPX0VER0UsICdjbGFtcC10by1lZGdlJyksIF9kZWZpbmVQcm9wZXJ0eShfd3JhcE1vZGVNYXAsIGdsLk1JUlJPUkVEX1JFUEVBVCwgJ21pcnJvci1yZXBlYXQnKSwgX3dyYXBNb2RlTWFwKTtcbmV4cG9ydCBmdW5jdGlvbiBnZXRDdWxsTW9kZShfcmVmKSB7XG4gIHZhciBjdWxsID0gX3JlZi5jdWxsO1xuXG4gIGlmICghY3VsbCB8fCAhY3VsbC5lbmFibGUpIHtcbiAgICByZXR1cm4gV2ViR1BVQ29uc3RhbnRzLkN1bGxNb2RlLk5vbmU7XG4gIH1cblxuICBpZiAoY3VsbC5mYWNlKSB7XG4gICAgcmV0dXJuIGN1bGwuZmFjZSA9PT0gZ2wuRlJPTlQgPyBXZWJHUFVDb25zdGFudHMuQ3VsbE1vZGUuRnJvbnQgOiBXZWJHUFVDb25zdGFudHMuQ3VsbE1vZGUuQmFjaztcbiAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIGdldERlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvcihfcmVmMikge1xuICB2YXIgZGVwdGggPSBfcmVmMi5kZXB0aCxcbiAgICAgIHN0ZW5jaWwgPSBfcmVmMi5zdGVuY2lsO1xuICAvLyBUT0RPOiBzdGVuY2lsXG4gIHZhciBzdGVuY2lsRnJvbnRCYWNrID0ge1xuICAgIGNvbXBhcmU6IFdlYkdQVUNvbnN0YW50cy5Db21wYXJlRnVuY3Rpb24uQWx3YXlzLFxuICAgIGRlcHRoRmFpbE9wOiBXZWJHUFVDb25zdGFudHMuU3RlbmNpbE9wZXJhdGlvbi5LZWVwLFxuICAgIGZhaWxPcDogV2ViR1BVQ29uc3RhbnRzLlN0ZW5jaWxPcGVyYXRpb24uS2VlcCxcbiAgICBwYXNzT3A6IFdlYkdQVUNvbnN0YW50cy5TdGVuY2lsT3BlcmF0aW9uLktlZXBcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBkZXB0aFdyaXRlRW5hYmxlZDogZGVwdGggJiYgZGVwdGguZW5hYmxlLFxuICAgIGRlcHRoQ29tcGFyZTogZGVwdGhGdW5jTWFwWyhkZXB0aCA9PT0gbnVsbCB8fCBkZXB0aCA9PT0gdm9pZCAwID8gdm9pZCAwIDogZGVwdGguZnVuYykgfHwgZ2wuQUxXQVlTXSxcbiAgICBmb3JtYXQ6IFdlYkdQVUNvbnN0YW50cy5UZXh0dXJlRm9ybWF0LkRlcHRoMjRQbHVzU3RlbmNpbDgsXG4gICAgc3RlbmNpbEZyb250OiBzdGVuY2lsRnJvbnRCYWNrLFxuICAgIHN0ZW5jaWxCYWNrOiBzdGVuY2lsRnJvbnRCYWNrLFxuICAgIHN0ZW5jaWxSZWFkTWFzazogMHhmZmZmZmZmZixcbiAgICBzdGVuY2lsV3JpdGVNYXNrOiAweGZmZmZmZmZmXG4gIH07XG59XG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jY29sb3Itc3RhdGVcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29sb3JTdGF0ZURlc2NyaXB0b3JzKF9yZWYzLCBzd2FwQ2hhaW5Gb3JtYXQpIHtcbiAgdmFyIGJsZW5kID0gX3JlZjMuYmxlbmQ7XG4gIHJldHVybiBbe1xuICAgIGZvcm1hdDogc3dhcENoYWluRm9ybWF0LFxuICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2JsZW5kLXN0YXRlXG4gICAgYWxwaGFCbGVuZDoge1xuICAgICAgc3JjRmFjdG9yOiBibGVuZEZ1bmNNYXBbYmxlbmQgJiYgYmxlbmQuZnVuYyAmJiBibGVuZC5mdW5jLnNyY0FscGhhIHx8IGdsLk9ORV0sXG4gICAgICBkc3RGYWN0b3I6IGJsZW5kRnVuY01hcFtibGVuZCAmJiBibGVuZC5mdW5jICYmIGJsZW5kLmZ1bmMuZHN0QWxwaGEgfHwgZ2wuWkVST10sXG4gICAgICBvcGVyYXRpb246IGJsZW5kRXF1YXRpb25NYXBbYmxlbmQgJiYgYmxlbmQuZXF1YXRpb24gJiYgYmxlbmQuZXF1YXRpb24uYWxwaGEgfHwgZ2wuRlVOQ19BRERdXG4gICAgfSxcbiAgICBjb2xvckJsZW5kOiB7XG4gICAgICBzcmNGYWN0b3I6IGJsZW5kRnVuY01hcFtibGVuZCAmJiBibGVuZC5mdW5jICYmIGJsZW5kLmZ1bmMuc3JjUkdCIHx8IGdsLk9ORV0sXG4gICAgICBkc3RGYWN0b3I6IGJsZW5kRnVuY01hcFtibGVuZCAmJiBibGVuZC5mdW5jICYmIGJsZW5kLmZ1bmMuZHN0UkdCIHx8IGdsLlpFUk9dLFxuICAgICAgb3BlcmF0aW9uOiBibGVuZEVxdWF0aW9uTWFwW2JsZW5kICYmIGJsZW5kLmVxdWF0aW9uICYmIGJsZW5kLmVxdWF0aW9uLnJnYiB8fCBnbC5GVU5DX0FERF1cbiAgICB9LFxuICAgIHdyaXRlTWFzazogV2ViR1BVQ29uc3RhbnRzLkNvbG9yV3JpdGUuQWxsXG4gIH1dO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29uc3RhbnRzLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/constants.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/glslang.js":
/*!**********************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/glslang.js ***!
\**********************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__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@7.16.3@@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 _utils_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/dom */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/utils/dom.js\");\n\n\n\nvar glslang;\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return _ref.apply(this, arguments);\n});\n\nfunction _ref() {\n _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!glslang) {\n _context.next = 2;\n break;\n }\n\n return _context.abrupt(\"return\", glslang);\n\n case 2:\n _context.next = 4;\n return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__[\"loadScriptAsync\"])('https://preview.babylonjs.com/glslang/glslang.js');\n\n case 4:\n glslang = window.glslang('https://preview.babylonjs.com/glslang/glslang.wasm');\n return _context.abrupt(\"return\", glslang);\n\n case 6:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n return _ref.apply(this, arguments);\n}\n//# sourceMappingURL=glslang.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ3B1L2dsc2xhbmcuanM/ZTc2MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkQ7QUFDVztBQUN6QjtBQUMvQztBQUNlO0FBQ2Y7QUFDQSxDQUFDOztBQUVEO0FBQ0EsU0FBUyw4RUFBaUIsZUFBZSxpRUFBbUI7QUFDNUQsV0FBVyxpRUFBbUI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLG1CQUFtQixrRUFBZTs7QUFFbEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHUtZW5naW5lQDAuNS42QEBhbnR2L2ctd2ViZ3B1LWVuZ2luZS9lcy93ZWJncHUvZ2xzbGFuZy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfcmVnZW5lcmF0b3JSdW50aW1lIGZyb20gXCJAYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvclwiO1xuaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCB7IGxvYWRTY3JpcHRBc3luYyB9IGZyb20gJy4uL3V0aWxzL2RvbSc7XG52YXIgZ2xzbGFuZztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIF9yZWYuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cblxuZnVuY3Rpb24gX3JlZigpIHtcbiAgX3JlZiA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoKSB7XG4gICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkge1xuICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgIGlmICghZ2xzbGFuZykge1xuICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMjtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5hYnJ1cHQoXCJyZXR1cm5cIiwgZ2xzbGFuZyk7XG5cbiAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gNDtcbiAgICAgICAgICAgIHJldHVybiBsb2FkU2NyaXB0QXN5bmMoJ2h0dHBzOi8vcHJldmlldy5iYWJ5bG9uanMuY29tL2dsc2xhbmcvZ2xzbGFuZy5qcycpO1xuXG4gICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgZ2xzbGFuZyA9IHdpbmRvdy5nbHNsYW5nKCdodHRwczovL3ByZXZpZXcuYmFieWxvbmpzLmNvbS9nbHNsYW5nL2dsc2xhbmcud2FzbScpO1xuICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmFicnVwdChcInJldHVyblwiLCBnbHNsYW5nKTtcblxuICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgX2NhbGxlZSk7XG4gIH0pKTtcbiAgcmV0dXJuIF9yZWYuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdsc2xhbmcuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/glslang.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/index.js":
/*!********************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/index.js ***!
\********************************************************************************************/
/*! exports provided: WebGPUEngine */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"WebGPUEngine\", function() { return WebGPUEngine; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__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@7.16.3@@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@7.16.3@@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@7.16.3@@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 _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/_@webgpu_types@0.0.31@@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _glslang__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./glslang */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/glslang.js\");\n/* harmony import */ var _WebGPUAttribute__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./WebGPUAttribute */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUAttribute.js\");\n/* harmony import */ var _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./WebGPUBuffer */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUBuffer.js\");\n/* harmony import */ var _WebGPUComputeModel__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./WebGPUComputeModel */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUComputeModel.js\");\n/* harmony import */ var _WebGPUElements__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./WebGPUElements */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUElements.js\");\n/* harmony import */ var _WebGPUFramebuffer__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./WebGPUFramebuffer */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUFramebuffer.js\");\n/* harmony import */ var _WebGPUModel__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./WebGPUModel */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUModel.js\");\n/* harmony import */ var _WebGPUTexture2D__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./WebGPUTexture2D */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/WebGPUTexture2D.js\");\n\n\n\n\n\nvar _dec, _class, _temp;\n\n/**\n * implements renderService with WebGPU API\n * @see https://webgpu.io/\n * @see https://github.com/BabylonJS/Babylon.js/blob/WebGPU/src/Engines/webgpuEngine.ts\n */\n // import { Glslang } from '@webgpu/glslang/dist/web-devel/glslang.onefile';\n\n\n\n\n\n\n\n\n\n\n\nvar WebGPUEngine = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"injectable\"])(), _dec(_class = (_temp = /*#__PURE__*/function () {\n function WebGPUEngine() {\n var _this = this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, WebGPUEngine);\n\n this.supportWebGPU = true;\n this.useWGSL = false;\n this.options = void 0;\n this.canvas = void 0;\n this.context = void 0;\n this.glslang = void 0;\n this.adapter = void 0;\n this.device = void 0;\n this.swapChain = void 0;\n this.mainPassSampleCount = void 0;\n this.mainTexture = void 0;\n this.depthTexture = void 0;\n this.mainColorAttachments = void 0;\n this.mainTextureExtends = void 0;\n this.mainDepthAttachment = void 0;\n this.uploadEncoder = void 0;\n this.renderEncoder = void 0;\n this.computeEncoder = void 0;\n this.renderTargetEncoder = void 0;\n this.commandBuffers = new Array(4).fill(undefined);\n this.currentRenderPass = null;\n this.mainRenderPass = null;\n this.currentRenderTargetViewDescriptor = void 0;\n this.currentComputePass = null;\n this.bundleEncoder = void 0;\n this.tempBuffers = [];\n this.currentRenderTarget = null;\n this.uploadEncoderDescriptor = {\n label: 'upload'\n };\n this.renderEncoderDescriptor = {\n label: 'render'\n };\n this.renderTargetEncoderDescriptor = {\n label: 'renderTarget'\n };\n this.computeEncoderDescriptor = {\n label: 'compute'\n };\n this.pipelines = {};\n this.computePipelines = {};\n this.defaultSampleCount = 4;\n this.clearDepthValue = 1;\n this.clearStencilValue = 0;\n this.transientViewport = {\n x: Infinity,\n y: 0,\n width: 0,\n height: 0\n };\n this.cachedViewport = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n\n this.clear = function (options) {\n var framebuffer = options.framebuffer,\n color = options.color,\n depth = options.depth,\n stencil = options.stencil;\n\n if (_this.options.supportCompute) {\n _this.startComputePass();\n } // We need to recreate the render pass so that the new parameters for clear color / depth / stencil are taken into account\n\n\n if (_this.currentRenderTarget) {\n if (_this.currentRenderPass) {\n _this.endRenderTargetRenderPass();\n }\n\n _this.startRenderTargetRenderPass(_this.currentRenderTarget, color ? color : null, !!depth, !!stencil);\n } else {\n // if (this.useReverseDepthBuffer) {\n // this._depthCullingState.depthFunc = Constants.GREATER;\n // }\n _this.mainColorAttachments[0].loadValue = color ? color : _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"LoadOp\"].Load;\n _this.mainDepthAttachment.depthLoadValue = depth ? depth : _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"LoadOp\"].Load;\n _this.mainDepthAttachment.stencilLoadValue = stencil ? _this.clearStencilValue : _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"LoadOp\"].Load;\n\n if (_this.mainRenderPass) {\n _this.endMainRenderPass();\n }\n\n _this.startMainRenderPass();\n }\n };\n\n this.createModel = /*#__PURE__*/function () {\n var _ref = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(options) {\n var model;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n model = new _WebGPUModel__WEBPACK_IMPORTED_MODULE_13__[\"default\"](_this, options);\n _context.next = 3;\n return model.init();\n\n case 3:\n return _context.abrupt(\"return\", model);\n\n case 4:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }();\n\n this.createAttribute = function (options) {\n return new _WebGPUAttribute__WEBPACK_IMPORTED_MODULE_8__[\"default\"](_this, options);\n };\n\n this.createBuffer = function (options) {\n return new _WebGPUBuffer__WEBPACK_IMPORTED_MODULE_9__[\"default\"](_this, options);\n };\n\n this.createElements = function (options) {\n return new _WebGPUElements__WEBPACK_IMPORTED_MODULE_11__[\"default\"](_this, options);\n };\n\n this.createTexture2D = function (options) {\n return new _WebGPUTexture2D__WEBPACK_IMPORTED_MODULE_14__[\"default\"](_this, options);\n };\n\n this.createFramebuffer = function (options) {\n return new _WebGPUFramebuffer__WEBPACK_IMPORTED_MODULE_12__[\"default\"](_this, options);\n };\n\n this.useFramebuffer = function (framebuffer, drawCommands) {\n // bind\n if (_this.currentRenderTarget) {\n _this.unbindFramebuffer(_this.currentRenderTarget);\n }\n\n _this.currentRenderTarget = framebuffer; // TODO: use mipmap options in framebuffer\n\n _this.currentRenderTargetViewDescriptor = {\n dimension: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureViewDimension\"].E2d,\n // mipLevelCount: bindWithMipMaps ? WebGPUTextureHelper.computeNumMipmapLevels(texture.width, texture.height) - lodLevel : 1,\n // baseArrayLayer: faceIndex,\n // baseMipLevel: lodLevel,\n arrayLayerCount: 1,\n aspect: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureAspect\"].All\n };\n _this.currentRenderPass = null;\n drawCommands();\n };\n\n this.createComputeModel = /*#__PURE__*/function () {\n var _ref2 = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(context) {\n var model;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n model = new _WebGPUComputeModel__WEBPACK_IMPORTED_MODULE_10__[\"default\"](_this, context);\n _context2.next = 3;\n return model.init();\n\n case 3:\n return _context2.abrupt(\"return\", model);\n\n case 4:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n\n return function (_x2) {\n return _ref2.apply(this, arguments);\n };\n }();\n\n this.getCanvas = function () {\n return _this.canvas;\n };\n\n this.getGLContext = function () {\n throw new Error('Method not implemented.');\n };\n\n this.viewport = function (_ref3) {\n var x = _ref3.x,\n y = _ref3.y,\n width = _ref3.width,\n height = _ref3.height;\n\n if (!_this.currentRenderPass) {\n // call viewport() before current render pass created\n _this.transientViewport = {\n x: x,\n y: y,\n width: width,\n height: height\n };\n } else if (_this.transientViewport.x !== Infinity) {\n var renderPass = _this.getCurrentRenderPass(); // @see https://gpuweb.github.io/gpuweb/#dom-gpurenderpassencoder-setviewport\n\n\n renderPass.setViewport(_this.transientViewport.x, _this.transientViewport.y, _this.transientViewport.width, _this.transientViewport.height, 0, 1);\n } else if (x !== _this.cachedViewport.x || y !== _this.cachedViewport.y || width !== _this.cachedViewport.width || height !== _this.cachedViewport.height) {\n _this.cachedViewport = {\n x: x,\n y: y,\n width: width,\n height: height\n };\n\n var _renderPass = _this.getCurrentRenderPass();\n\n _renderPass.setViewport(x, y, width, height, 0, 1);\n }\n };\n\n this.readPixels = function (options) {\n throw new Error('Method not implemented.');\n };\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(WebGPUEngine, [{\n key: \"isFloatSupported\",\n value: function isFloatSupported() {\n return true;\n }\n }, {\n key: \"init\",\n value: function () {\n var _init = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(config) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n this.canvas = config.canvas;\n this.options = config;\n this.useWGSL = !!config.useWGSL;\n this.mainPassSampleCount = config.antialiasing ? this.defaultSampleCount : 1;\n _context3.next = 6;\n return this.initGlslang();\n\n case 6:\n this.initContextAndSwapChain();\n this.initMainAttachments();\n\n case 8:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function init(_x3) {\n return _init.apply(this, arguments);\n }\n\n return init;\n }()\n }, {\n key: \"setScissor\",\n value: function setScissor(scissor) {\n throw new Error('Method not implemented.');\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n if (this.mainTexture) {\n this.mainTexture.destroy();\n }\n\n if (this.depthTexture) {\n this.depthTexture.destroy();\n }\n\n this.tempBuffers.forEach(function (buffer) {\n return buffer.destroy();\n });\n this.tempBuffers = [];\n }\n }, {\n key: \"beginFrame\",\n value: function beginFrame() {\n this.uploadEncoder = this.device.createCommandEncoder(this.uploadEncoderDescriptor);\n this.renderEncoder = this.device.createCommandEncoder(this.renderEncoderDescriptor);\n this.renderTargetEncoder = this.device.createCommandEncoder(this.renderTargetEncoderDescriptor);\n\n if (this.options.supportCompute) {\n this.computeEncoder = this.device.createCommandEncoder(this.computeEncoderDescriptor);\n }\n }\n }, {\n key: \"endFrame\",\n value: function endFrame() {\n if (this.options.supportCompute) {\n this.endComputePass();\n }\n\n this.endMainRenderPass();\n this.commandBuffers[0] = this.uploadEncoder.finish();\n this.commandBuffers[1] = this.renderEncoder.finish();\n\n if (this.options.supportCompute) {\n this.commandBuffers[2] = this.computeEncoder.finish();\n }\n\n this.commandBuffers[3] = this.renderTargetEncoder.finish();\n\n if (_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"isSafari\"]) {\n this.device // @ts-ignore\n .getQueue().submit(this.commandBuffers.filter(function (buffer) {\n return buffer;\n }));\n } else {\n this.device.defaultQueue.submit(this.commandBuffers.filter(function (buffer) {\n return buffer;\n }));\n }\n }\n }, {\n key: \"getCurrentRenderPass\",\n value: function getCurrentRenderPass() {\n if (this.currentRenderTarget && !this.currentRenderPass) {\n this.startRenderTargetRenderPass(this.currentRenderTarget, null, false, false);\n } else if (!this.currentRenderPass) {\n this.startMainRenderPass();\n }\n\n return this.currentRenderPass;\n }\n }, {\n key: \"initGlslang\",\n value: function () {\n var _initGlslang = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4() {\n var _navigator, _navigator$gpu;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return Object(_glslang__WEBPACK_IMPORTED_MODULE_7__[\"default\"])();\n\n case 2:\n this.glslang = _context4.sent;\n _context4.next = 5;\n return (_navigator = navigator) === null || _navigator === void 0 ? void 0 : (_navigator$gpu = _navigator.gpu) === null || _navigator$gpu === void 0 ? void 0 : _navigator$gpu.requestAdapter();\n\n case 5:\n this.adapter = _context4.sent;\n _context4.next = 8;\n return this.adapter.requestDevice();\n\n case 8:\n this.device = _context4.sent;\n\n case 9:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function initGlslang() {\n return _initGlslang.apply(this, arguments);\n }\n\n return initGlslang;\n }()\n }, {\n key: \"initContextAndSwapChain\",\n value: function initContextAndSwapChain() {\n this.context = this.canvas.getContext(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"isSafari\"] ? 'gpu' : 'gpupresent');\n this.swapChain = this.context.configureSwapChain({\n device: this.device,\n format: this.options.swapChainFormat,\n usage: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureUsage\"].OutputAttachment | _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureUsage\"].CopySrc\n });\n }\n }, {\n key: \"initMainAttachments\",\n value: function initMainAttachments() {\n this.mainTextureExtends = {\n width: this.canvas.width,\n height: this.canvas.height,\n depth: 1\n };\n\n if (this.options.antialiasing) {\n var mainTextureDescriptor = {\n size: this.mainTextureExtends,\n // TODO: arrayLayerCount is deprecated: use size.depth\n // arrayLayerCount: 1,\n mipLevelCount: 1,\n sampleCount: this.mainPassSampleCount,\n dimension: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureDimension\"].E2d,\n format: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureFormat\"].BGRA8Unorm,\n usage: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureUsage\"].OutputAttachment\n };\n\n if (this.mainTexture) {\n this.mainTexture.destroy();\n }\n\n this.mainTexture = this.device.createTexture(mainTextureDescriptor);\n this.mainColorAttachments = [{\n attachment: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"isSafari\"] ? // @ts-ignore\n this.mainTexture.createDefaultView() : this.mainTexture.createView(),\n loadValue: [0, 0, 0, 1],\n storeOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"StoreOp\"].Store\n }];\n } else {\n this.mainColorAttachments = [{\n attachment: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"isSafari\"] ? // @ts-ignore\n this.swapChain.getCurrentTexture().createDefaultView() : this.swapChain.getCurrentTexture().createView(),\n loadValue: [0, 0, 0, 1],\n storeOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"StoreOp\"].Store\n }];\n }\n\n var depthTextureDescriptor = {\n size: this.mainTextureExtends,\n // arrayLayerCount: 1,\n mipLevelCount: 1,\n sampleCount: this.mainPassSampleCount,\n dimension: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureDimension\"].E2d,\n format: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"isSafari\"] ? 'depth32float-stencil8' : _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureFormat\"].Depth24PlusStencil8,\n usage: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"TextureUsage\"].OutputAttachment\n };\n\n if (this.depthTexture) {\n this.depthTexture.destroy();\n }\n\n this.depthTexture = this.device.createTexture( // @ts-ignore\n depthTextureDescriptor);\n this.mainDepthAttachment = {\n attachment: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"isSafari\"] ? // @ts-ignore\n this.depthTexture.createDefaultView() : this.depthTexture.createView(),\n depthLoadValue: this.clearDepthValue,\n depthStoreOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"StoreOp\"].Store,\n stencilLoadValue: this.clearStencilValue,\n stencilStoreOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"StoreOp\"].Store\n };\n }\n }, {\n key: \"startComputePass\",\n value: function startComputePass() {\n if (this.currentComputePass) {\n this.endComputePass();\n }\n\n this.currentComputePass = this.computeEncoder.beginComputePass();\n }\n }, {\n key: \"startMainRenderPass\",\n value: function startMainRenderPass() {\n if (this.currentRenderPass && !this.currentRenderTarget) {\n this.endMainRenderPass();\n } // Resolve in case of MSAA\n\n\n if (this.options.antialiasing) {\n this.mainColorAttachments[0].resolveTarget = _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"isSafari\"] ? // @ts-ignore\n this.swapChain.getCurrentTexture().createDefaultView() : this.swapChain.getCurrentTexture().createView();\n } else {\n this.mainColorAttachments[0].attachment = _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_4__[\"isSafari\"] ? // @ts-ignore\n this.swapChain.getCurrentTexture().createDefaultView() : this.swapChain.getCurrentTexture().createView();\n }\n\n this.currentRenderPass = this.renderEncoder.beginRenderPass({\n colorAttachments: this.mainColorAttachments,\n depthStencilAttachment: this.mainDepthAttachment // TODO: use framebuffer's depth & stencil\n\n });\n this.mainRenderPass = this.currentRenderPass;\n\n if (this.cachedViewport) {\n this.viewport(this.cachedViewport);\n }\n }\n }, {\n key: \"startRenderTargetRenderPass\",\n value: function startRenderTargetRenderPass(renderTarget, clearColor, clearDepth) {\n var _renderTarget$get$col, _renderTarget$get$dep;\n\n var clearStencil = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n var gpuTexture = (_renderTarget$get$col = renderTarget.get().color) === null || _renderTarget$get$col === void 0 ? void 0 : _renderTarget$get$col.texture;\n var colorTextureView;\n\n if (gpuTexture) {\n colorTextureView = gpuTexture.createView(this.currentRenderTargetViewDescriptor);\n }\n\n var depthStencilTexture = (_renderTarget$get$dep = renderTarget.get().depth) === null || _renderTarget$get$dep === void 0 ? void 0 : _renderTarget$get$dep.texture;\n var depthStencilTextureView;\n\n if (depthStencilTexture) {\n depthStencilTextureView = depthStencilTexture.createView();\n }\n\n var renderPass = this.renderTargetEncoder.beginRenderPass({\n colorAttachments: [{\n attachment: colorTextureView,\n loadValue: clearColor !== null ? clearColor : _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"LoadOp\"].Load,\n storeOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"StoreOp\"].Store\n }],\n depthStencilAttachment: depthStencilTexture && depthStencilTextureView ? {\n attachment: depthStencilTextureView,\n depthLoadValue: clearDepth ? this.clearDepthValue : _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"LoadOp\"].Load,\n depthStoreOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"StoreOp\"].Store,\n stencilLoadValue: clearStencil ? this.clearStencilValue : _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"LoadOp\"].Load,\n stencilStoreOp: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_5__[\"StoreOp\"].Store\n } : undefined\n });\n this.currentRenderPass = renderPass;\n\n if (this.cachedViewport) {\n this.viewport(this.cachedViewport);\n } // TODO WEBGPU set the scissor rect and the stencil reference value\n\n }\n }, {\n key: \"endMainRenderPass\",\n value: function endMainRenderPass() {\n if (this.currentRenderPass === this.mainRenderPass && this.currentRenderPass !== null) {\n this.currentRenderPass.endPass();\n this.resetCachedViewport();\n this.currentRenderPass = null;\n this.mainRenderPass = null;\n }\n }\n }, {\n key: \"endComputePass\",\n value: function endComputePass() {\n if (this.currentComputePass) {\n this.currentComputePass.endPass();\n this.currentComputePass = null;\n }\n }\n }, {\n key: \"endRenderTargetRenderPass\",\n value: function endRenderTargetRenderPass() {\n if (this.currentRenderPass) {\n this.currentRenderPass.endPass();\n this.resetCachedViewport();\n }\n }\n }, {\n key: \"resetCachedViewport\",\n value: function resetCachedViewport() {\n this.cachedViewport = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n }\n }, {\n key: \"unbindFramebuffer\",\n value: function unbindFramebuffer(framebuffer) {\n // unbind\n if (this.currentRenderPass && this.currentRenderPass !== this.mainRenderPass) {\n this.endRenderTargetRenderPass();\n }\n\n this.transientViewport.x = Infinity;\n this.currentRenderTarget = null; // if (texture.generateMipMaps && !disableGenerateMipMaps && !texture.isCube) {\n // this._generateMipmaps(texture);\n // }\n\n this.currentRenderPass = this.mainRenderPass;\n }\n }]);\n\n return WebGPUEngine;\n}(), _temp)) || _class);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ3B1L2luZGV4LmpzPzlhYTAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE2RDtBQUNXO0FBQ0o7QUFDTjs7QUFFOUQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUMrQyxZQUFZLFVBQVU7O0FBRUw7QUFDekI7QUFDUDtBQUNnQjtBQUNOO0FBQ1k7QUFDUjtBQUNNO0FBQ1o7QUFDUTtBQUtoRCwyQkFBMkIsNERBQVU7QUFDckM7QUFDQTs7QUFFQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLGtFQUFrRSxtRUFBc0I7QUFDeEYsbUVBQW1FLG1FQUFzQjtBQUN6Rix5RkFBeUYsbUVBQXNCOztBQUUvRztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUNwRTtBQUNBLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixxREFBVztBQUN2QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSxpQkFBaUIsd0RBQWU7QUFDaEM7O0FBRUE7QUFDQSxpQkFBaUIscURBQVk7QUFDN0I7O0FBRUE7QUFDQSxpQkFBaUIsd0RBQWM7QUFDL0I7O0FBRUE7QUFDQSxpQkFBaUIseURBQWU7QUFDaEM7O0FBRUE7QUFDQSxpQkFBaUIsMkRBQWlCO0FBQ2xDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsOENBQThDOztBQUU5QztBQUNBLG1CQUFtQixpRkFBb0M7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsMEVBQTZCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esa0JBQWtCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUNyRTtBQUNBLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBLDRCQUE0Qiw0REFBa0I7QUFDOUM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLHNEQUFzRDs7O0FBR3REO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxrQkFBa0IsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3JFLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBLFVBQVUsNERBQVE7QUFDbEI7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSx5QkFBeUIsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQzVFOztBQUVBLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHdEQUFPOztBQUU5QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQSw0Q0FBNEMsNERBQVE7QUFDcEQ7QUFDQTtBQUNBO0FBQ0EsZUFBZSx5RUFBNEIsb0JBQW9CLHlFQUE0QjtBQUMzRixPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsNkVBQWdDO0FBQ3JELGtCQUFrQiwwRUFBNkI7QUFDL0MsaUJBQWlCLHlFQUE0QjtBQUM3Qzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHNCQUFzQiw0REFBUTtBQUM5QjtBQUNBO0FBQ0EsbUJBQW1CLG9FQUF1QjtBQUMxQyxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0Esc0JBQXNCLDREQUFRO0FBQzlCO0FBQ0E7QUFDQSxtQkFBbUIsb0VBQXVCO0FBQzFDLFNBQVM7QUFDVDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLDZFQUFnQztBQUNuRCxnQkFBZ0IsNERBQVEsNkJBQTZCLDBFQUE2QjtBQUNsRixlQUFlLHlFQUE0QjtBQUMzQzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLDREQUFRO0FBQzVCO0FBQ0E7QUFDQSxzQkFBc0Isb0VBQXVCO0FBQzdDO0FBQ0Esd0JBQXdCLG9FQUF1QjtBQUMvQztBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0EscURBQXFELDREQUFRO0FBQzdEO0FBQ0EsT0FBTztBQUNQLGtEQUFrRCw0REFBUTtBQUMxRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esd0RBQXdELG1FQUFzQjtBQUM5RSxtQkFBbUIsb0VBQXVCO0FBQzFDLFNBQVM7QUFDVDtBQUNBO0FBQ0EsOERBQThELG1FQUFzQjtBQUNwRix3QkFBd0Isb0VBQXVCO0FBQy9DLG9FQUFvRSxtRUFBc0I7QUFDMUYsMEJBQTBCLG9FQUF1QjtBQUNqRCxTQUFTO0FBQ1QsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esc0NBQXNDO0FBQ3RDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1LWVuZ2luZUAwLjUuNkBAYW50di9nLXdlYmdwdS1lbmdpbmUvZXMvd2ViZ3B1L2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSBcIkBiYWJlbC9ydW50aW1lL3JlZ2VuZXJhdG9yXCI7XG5pbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvclwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuXG52YXIgX2RlYywgX2NsYXNzLCBfdGVtcDtcblxuLyoqXG4gKiBpbXBsZW1lbnRzIHJlbmRlclNlcnZpY2Ugd2l0aCBXZWJHUFUgQVBJXG4gKiBAc2VlIGh0dHBzOi8vd2ViZ3B1LmlvL1xuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vQmFieWxvbkpTL0JhYnlsb24uanMvYmxvYi9XZWJHUFUvc3JjL0VuZ2luZXMvd2ViZ3B1RW5naW5lLnRzXG4gKi9cbmltcG9ydCB7IGlzU2FmYXJpIH0gZnJvbSAnQGFudHYvZy13ZWJncHUtY29yZSc7IC8vIGltcG9ydCB7IEdsc2xhbmcgfSBmcm9tICdAd2ViZ3B1L2dsc2xhbmcvZGlzdC93ZWItZGV2ZWwvZ2xzbGFuZy5vbmVmaWxlJztcblxuaW1wb3J0ICogYXMgV2ViR1BVQ29uc3RhbnRzIGZyb20gJ0B3ZWJncHUvdHlwZXMvZGlzdC9jb25zdGFudHMnO1xuaW1wb3J0IHsgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5pbXBvcnQgZ2xzbGFuZyBmcm9tICcuL2dsc2xhbmcnO1xuaW1wb3J0IFdlYkdQVUF0dHJpYnV0ZSBmcm9tICcuL1dlYkdQVUF0dHJpYnV0ZSc7XG5pbXBvcnQgV2ViR1BVQnVmZmVyIGZyb20gJy4vV2ViR1BVQnVmZmVyJztcbmltcG9ydCBXZWJHUFVDb21wdXRlTW9kZWwgZnJvbSAnLi9XZWJHUFVDb21wdXRlTW9kZWwnO1xuaW1wb3J0IFdlYkdQVUVsZW1lbnRzIGZyb20gJy4vV2ViR1BVRWxlbWVudHMnO1xuaW1wb3J0IFdlYkdQVUZyYW1lYnVmZmVyIGZyb20gJy4vV2ViR1BVRnJhbWVidWZmZXInO1xuaW1wb3J0IFdlYkdQVU1vZGVsIGZyb20gJy4vV2ViR1BVTW9kZWwnO1xuaW1wb3J0IFdlYkdQVVRleHR1cmUyRCBmcm9tICcuL1dlYkdQVVRleHR1cmUyRCc7XG5leHBvcnRcbi8qKlxuICogcmVnbCByZW5kZXJlclxuICovXG52YXIgV2ViR1BVRW5naW5lID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMoX2NsYXNzID0gKF90ZW1wID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gV2ViR1BVRW5naW5lKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgV2ViR1BVRW5naW5lKTtcblxuICAgIHRoaXMuc3VwcG9ydFdlYkdQVSA9IHRydWU7XG4gICAgdGhpcy51c2VXR1NMID0gZmFsc2U7XG4gICAgdGhpcy5vcHRpb25zID0gdm9pZCAwO1xuICAgIHRoaXMuY2FudmFzID0gdm9pZCAwO1xuICAgIHRoaXMuY29udGV4dCA9IHZvaWQgMDtcbiAgICB0aGlzLmdsc2xhbmcgPSB2b2lkIDA7XG4gICAgdGhpcy5hZGFwdGVyID0gdm9pZCAwO1xuICAgIHRoaXMuZGV2aWNlID0gdm9pZCAwO1xuICAgIHRoaXMuc3dhcENoYWluID0gdm9pZCAwO1xuICAgIHRoaXMubWFpblBhc3NTYW1wbGVDb3VudCA9IHZvaWQgMDtcbiAgICB0aGlzLm1haW5UZXh0dXJlID0gdm9pZCAwO1xuICAgIHRoaXMuZGVwdGhUZXh0dXJlID0gdm9pZCAwO1xuICAgIHRoaXMubWFpbkNvbG9yQXR0YWNobWVudHMgPSB2b2lkIDA7XG4gICAgdGhpcy5tYWluVGV4dHVyZUV4dGVuZHMgPSB2b2lkIDA7XG4gICAgdGhpcy5tYWluRGVwdGhBdHRhY2htZW50ID0gdm9pZCAwO1xuICAgIHRoaXMudXBsb2FkRW5jb2RlciA9IHZvaWQgMDtcbiAgICB0aGlzLnJlbmRlckVuY29kZXIgPSB2b2lkIDA7XG4gICAgdGhpcy5jb21wdXRlRW5jb2RlciA9IHZvaWQgMDtcbiAgICB0aGlzLnJlbmRlclRhcmdldEVuY29kZXIgPSB2b2lkIDA7XG4gICAgdGhpcy5jb21tYW5kQnVmZmVycyA9IG5ldyBBcnJheSg0KS5maWxsKHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jdXJyZW50UmVuZGVyUGFzcyA9IG51bGw7XG4gICAgdGhpcy5tYWluUmVuZGVyUGFzcyA9IG51bGw7XG4gICAgdGhpcy5jdXJyZW50UmVuZGVyVGFyZ2V0Vmlld0Rlc2NyaXB0b3IgPSB2b2lkIDA7XG4gICAgdGhpcy5jdXJyZW50Q29tcHV0ZVBhc3MgPSBudWxsO1xuICAgIHRoaXMuYnVuZGxlRW5jb2RlciA9IHZvaWQgMDtcbiAgICB0aGlzLnRlbXBCdWZmZXJzID0gW107XG4gICAgdGhpcy5jdXJyZW50UmVuZGVyVGFyZ2V0ID0gbnVsbDtcbiAgICB0aGlzLnVwbG9hZEVuY29kZXJEZXNjcmlwdG9yID0ge1xuICAgICAgbGFiZWw6ICd1cGxvYWQnXG4gICAgfTtcbiAgICB0aGlzLnJlbmRlckVuY29kZXJEZXNjcmlwdG9yID0ge1xuICAgICAgbGFiZWw6ICdyZW5kZXInXG4gICAgfTtcbiAgICB0aGlzLnJlbmRlclRhcmdldEVuY29kZXJEZXNjcmlwdG9yID0ge1xuICAgICAgbGFiZWw6ICdyZW5kZXJUYXJnZXQnXG4gICAgfTtcbiAgICB0aGlzLmNvbXB1dGVFbmNvZGVyRGVzY3JpcHRvciA9IHtcbiAgICAgIGxhYmVsOiAnY29tcHV0ZSdcbiAgICB9O1xuICAgIHRoaXMucGlwZWxpbmVzID0ge307XG4gICAgdGhpcy5jb21wdXRlUGlwZWxpbmVzID0ge307XG4gICAgdGhpcy5kZWZhdWx0U2FtcGxlQ291bnQgPSA0O1xuICAgIHRoaXMuY2xlYXJEZXB0aFZhbHVlID0gMTtcbiAgICB0aGlzLmNsZWFyU3RlbmNpbFZhbHVlID0gMDtcbiAgICB0aGlzLnRyYW5zaWVudFZpZXdwb3J0ID0ge1xuICAgICAgeDogSW5maW5pdHksXG4gICAgICB5OiAwLFxuICAgICAgd2lkdGg6IDAsXG4gICAgICBoZWlnaHQ6IDBcbiAgICB9O1xuICAgIHRoaXMuY2FjaGVkVmlld3BvcnQgPSB7XG4gICAgICB4OiAwLFxuICAgICAgeTogMCxcbiAgICAgIHdpZHRoOiAwLFxuICAgICAgaGVpZ2h0OiAwXG4gICAgfTtcblxuICAgIHRoaXMuY2xlYXIgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgdmFyIGZyYW1lYnVmZmVyID0gb3B0aW9ucy5mcmFtZWJ1ZmZlcixcbiAgICAgICAgICBjb2xvciA9IG9wdGlvbnMuY29sb3IsXG4gICAgICAgICAgZGVwdGggPSBvcHRpb25zLmRlcHRoLFxuICAgICAgICAgIHN0ZW5jaWwgPSBvcHRpb25zLnN0ZW5jaWw7XG5cbiAgICAgIGlmIChfdGhpcy5vcHRpb25zLnN1cHBvcnRDb21wdXRlKSB7XG4gICAgICAgIF90aGlzLnN0YXJ0Q29tcHV0ZVBhc3MoKTtcbiAgICAgIH0gLy8gV2UgbmVlZCB0byByZWNyZWF0ZSB0aGUgcmVuZGVyIHBhc3Mgc28gdGhhdCB0aGUgbmV3IHBhcmFtZXRlcnMgZm9yIGNsZWFyIGNvbG9yIC8gZGVwdGggLyBzdGVuY2lsIGFyZSB0YWtlbiBpbnRvIGFjY291bnRcblxuXG4gICAgICBpZiAoX3RoaXMuY3VycmVudFJlbmRlclRhcmdldCkge1xuICAgICAgICBpZiAoX3RoaXMuY3VycmVudFJlbmRlclBhc3MpIHtcbiAgICAgICAgICBfdGhpcy5lbmRSZW5kZXJUYXJnZXRSZW5kZXJQYXNzKCk7XG4gICAgICAgIH1cblxuICAgICAgICBfdGhpcy5zdGFydFJlbmRlclRhcmdldFJlbmRlclBhc3MoX3RoaXMuY3VycmVudFJlbmRlclRhcmdldCwgY29sb3IgPyBjb2xvciA6IG51bGwsICEhZGVwdGgsICEhc3RlbmNpbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBpZiAodGhpcy51c2VSZXZlcnNlRGVwdGhCdWZmZXIpIHtcbiAgICAgICAgLy8gICAgIHRoaXMuX2RlcHRoQ3VsbGluZ1N0YXRlLmRlcHRoRnVuYyA9IENvbnN0YW50cy5HUkVBVEVSO1xuICAgICAgICAvLyB9XG4gICAgICAgIF90aGlzLm1haW5Db2xvckF0dGFjaG1lbnRzWzBdLmxvYWRWYWx1ZSA9IGNvbG9yID8gY29sb3IgOiBXZWJHUFVDb25zdGFudHMuTG9hZE9wLkxvYWQ7XG4gICAgICAgIF90aGlzLm1haW5EZXB0aEF0dGFjaG1lbnQuZGVwdGhMb2FkVmFsdWUgPSBkZXB0aCA/IGRlcHRoIDogV2ViR1BVQ29uc3RhbnRzLkxvYWRPcC5Mb2FkO1xuICAgICAgICBfdGhpcy5tYWluRGVwdGhBdHRhY2htZW50LnN0ZW5jaWxMb2FkVmFsdWUgPSBzdGVuY2lsID8gX3RoaXMuY2xlYXJTdGVuY2lsVmFsdWUgOiBXZWJHUFVDb25zdGFudHMuTG9hZE9wLkxvYWQ7XG5cbiAgICAgICAgaWYgKF90aGlzLm1haW5SZW5kZXJQYXNzKSB7XG4gICAgICAgICAgX3RoaXMuZW5kTWFpblJlbmRlclBhc3MoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIF90aGlzLnN0YXJ0TWFpblJlbmRlclBhc3MoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy5jcmVhdGVNb2RlbCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3JlZiA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUob3B0aW9ucykge1xuICAgICAgICB2YXIgbW9kZWw7XG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgbW9kZWwgPSBuZXcgV2ViR1BVTW9kZWwoX3RoaXMsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAzO1xuICAgICAgICAgICAgICAgIHJldHVybiBtb2RlbC5pbml0KCk7XG5cbiAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5hYnJ1cHQoXCJyZXR1cm5cIiwgbW9kZWwpO1xuXG4gICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlKTtcbiAgICAgIH0pKTtcblxuICAgICAgcmV0dXJuIGZ1bmN0aW9uIChfeCkge1xuICAgICAgICByZXR1cm4gX3JlZi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfTtcbiAgICB9KCk7XG5cbiAgICB0aGlzLmNyZWF0ZUF0dHJpYnV0ZSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICByZXR1cm4gbmV3IFdlYkdQVUF0dHJpYnV0ZShfdGhpcywgb3B0aW9ucyk7XG4gICAgfTtcblxuICAgIHRoaXMuY3JlYXRlQnVmZmVyID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBuZXcgV2ViR1BVQnVmZmVyKF90aGlzLCBvcHRpb25zKTtcbiAgICB9O1xuXG4gICAgdGhpcy5jcmVhdGVFbGVtZW50cyA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICByZXR1cm4gbmV3IFdlYkdQVUVsZW1lbnRzKF90aGlzLCBvcHRpb25zKTtcbiAgICB9O1xuXG4gICAgdGhpcy5jcmVhdGVUZXh0dXJlMkQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgcmV0dXJuIG5ldyBXZWJHUFVUZXh0dXJlMkQoX3RoaXMsIG9wdGlvbnMpO1xuICAgIH07XG5cbiAgICB0aGlzLmNyZWF0ZUZyYW1lYnVmZmVyID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBuZXcgV2ViR1BVRnJhbWVidWZmZXIoX3RoaXMsIG9wdGlvbnMpO1xuICAgIH07XG5cbiAgICB0aGlzLnVzZUZyYW1lYnVmZmVyID0gZnVuY3Rpb24gKGZyYW1lYnVmZmVyLCBkcmF3Q29tbWFuZHMpIHtcbiAgICAgIC8vIGJpbmRcbiAgICAgIGlmIChfdGhpcy5jdXJyZW50UmVuZGVyVGFyZ2V0KSB7XG4gICAgICAgIF90aGlzLnVuYmluZEZyYW1lYnVmZmVyKF90aGlzLmN1cnJlbnRSZW5kZXJUYXJnZXQpO1xuICAgICAgfVxuXG4gICAgICBfdGhpcy5jdXJyZW50UmVuZGVyVGFyZ2V0ID0gZnJhbWVidWZmZXI7IC8vIFRPRE86IHVzZSBtaXBtYXAgb3B0aW9ucyBpbiBmcmFtZWJ1ZmZlclxuXG4gICAgICBfdGhpcy5jdXJyZW50UmVuZGVyVGFyZ2V0Vmlld0Rlc2NyaXB0b3IgPSB7XG4gICAgICAgIGRpbWVuc2lvbjogV2ViR1BVQ29uc3RhbnRzLlRleHR1cmVWaWV3RGltZW5zaW9uLkUyZCxcbiAgICAgICAgLy8gbWlwTGV2ZWxDb3VudDogYmluZFdpdGhNaXBNYXBzID8gV2ViR1BVVGV4dHVyZUhlbHBlci5jb21wdXRlTnVtTWlwbWFwTGV2ZWxzKHRleHR1cmUud2lkdGgsIHRleHR1cmUuaGVpZ2h0KSAtIGxvZExldmVsIDogMSxcbiAgICAgICAgLy8gYmFzZUFycmF5TGF5ZXI6IGZhY2VJbmRleCxcbiAgICAgICAgLy8gYmFzZU1pcExldmVsOiBsb2RMZXZlbCxcbiAgICAgICAgYXJyYXlMYXllckNvdW50OiAxLFxuICAgICAgICBhc3BlY3Q6IFdlYkdQVUNvbnN0YW50cy5UZXh0dXJlQXNwZWN0LkFsbFxuICAgICAgfTtcbiAgICAgIF90aGlzLmN1cnJlbnRSZW5kZXJQYXNzID0gbnVsbDtcbiAgICAgIGRyYXdDb21tYW5kcygpO1xuICAgIH07XG5cbiAgICB0aGlzLmNyZWF0ZUNvbXB1dGVNb2RlbCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3JlZjIgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlMihjb250ZXh0KSB7XG4gICAgICAgIHZhciBtb2RlbDtcbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlMiQoX2NvbnRleHQyKSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQyLnByZXYgPSBfY29udGV4dDIubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgbW9kZWwgPSBuZXcgV2ViR1BVQ29tcHV0ZU1vZGVsKF90aGlzLCBjb250ZXh0KTtcbiAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDM7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vZGVsLmluaXQoKTtcblxuICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5hYnJ1cHQoXCJyZXR1cm5cIiwgbW9kZWwpO1xuXG4gICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTIpO1xuICAgICAgfSkpO1xuXG4gICAgICByZXR1cm4gZnVuY3Rpb24gKF94Mikge1xuICAgICAgICByZXR1cm4gX3JlZjIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgfSgpO1xuXG4gICAgdGhpcy5nZXRDYW52YXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gX3RoaXMuY2FudmFzO1xuICAgIH07XG5cbiAgICB0aGlzLmdldEdMQ29udGV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgICB9O1xuXG4gICAgdGhpcy52aWV3cG9ydCA9IGZ1bmN0aW9uIChfcmVmMykge1xuICAgICAgdmFyIHggPSBfcmVmMy54LFxuICAgICAgICAgIHkgPSBfcmVmMy55LFxuICAgICAgICAgIHdpZHRoID0gX3JlZjMud2lkdGgsXG4gICAgICAgICAgaGVpZ2h0ID0gX3JlZjMuaGVpZ2h0O1xuXG4gICAgICBpZiAoIV90aGlzLmN1cnJlbnRSZW5kZXJQYXNzKSB7XG4gICAgICAgIC8vIGNhbGwgdmlld3BvcnQoKSBiZWZvcmUgY3VycmVudCByZW5kZXIgcGFzcyBjcmVhdGVkXG4gICAgICAgIF90aGlzLnRyYW5zaWVudFZpZXdwb3J0ID0ge1xuICAgICAgICAgIHg6IHgsXG4gICAgICAgICAgeTogeSxcbiAgICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgICAgaGVpZ2h0OiBoZWlnaHRcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoX3RoaXMudHJhbnNpZW50Vmlld3BvcnQueCAhPT0gSW5maW5pdHkpIHtcbiAgICAgICAgdmFyIHJlbmRlclBhc3MgPSBfdGhpcy5nZXRDdXJyZW50UmVuZGVyUGFzcygpOyAvLyBAc2VlIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2RvbS1ncHVyZW5kZXJwYXNzZW5jb2Rlci1zZXR2aWV3cG9ydFxuXG5cbiAgICAgICAgcmVuZGVyUGFzcy5zZXRWaWV3cG9ydChfdGhpcy50cmFuc2llbnRWaWV3cG9ydC54LCBfdGhpcy50cmFuc2llbnRWaWV3cG9ydC55LCBfdGhpcy50cmFuc2llbnRWaWV3cG9ydC53aWR0aCwgX3RoaXMudHJhbnNpZW50Vmlld3BvcnQuaGVpZ2h0LCAwLCAxKTtcbiAgICAgIH0gZWxzZSBpZiAoeCAhPT0gX3RoaXMuY2FjaGVkVmlld3BvcnQueCB8fCB5ICE9PSBfdGhpcy5jYWNoZWRWaWV3cG9ydC55IHx8IHdpZHRoICE9PSBfdGhpcy5jYWNoZWRWaWV3cG9ydC53aWR0aCB8fCBoZWlnaHQgIT09IF90aGlzLmNhY2hlZFZpZXdwb3J0LmhlaWdodCkge1xuICAgICAgICBfdGhpcy5jYWNoZWRWaWV3cG9ydCA9IHtcbiAgICAgICAgICB4OiB4LFxuICAgICAgICAgIHk6IHksXG4gICAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIF9yZW5kZXJQYXNzID0gX3RoaXMuZ2V0Q3VycmVudFJlbmRlclBhc3MoKTtcblxuICAgICAgICBfcmVuZGVyUGFzcy5zZXRWaWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCAwLCAxKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy5yZWFkUGl4ZWxzID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgICB9O1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFdlYkdQVUVuZ2luZSwgW3tcbiAgICBrZXk6IFwiaXNGbG9hdFN1cHBvcnRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc0Zsb2F0U3VwcG9ydGVkKCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImluaXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9pbml0ID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTMoY29uZmlnKSB7XG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZTMkKF9jb250ZXh0Mykge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0My5wcmV2ID0gX2NvbnRleHQzLm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIHRoaXMuY2FudmFzID0gY29uZmlnLmNhbnZhcztcbiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMgPSBjb25maWc7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VXR1NMID0gISFjb25maWcudXNlV0dTTDtcbiAgICAgICAgICAgICAgICB0aGlzLm1haW5QYXNzU2FtcGxlQ291bnQgPSBjb25maWcuYW50aWFsaWFzaW5nID8gdGhpcy5kZWZhdWx0U2FtcGxlQ291bnQgOiAxO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gNjtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pbml0R2xzbGFuZygpO1xuXG4gICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRDb250ZXh0QW5kU3dhcENoYWluKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0TWFpbkF0dGFjaG1lbnRzKCk7XG5cbiAgICAgICAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlMywgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGluaXQoX3gzKSB7XG4gICAgICAgIHJldHVybiBfaW5pdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5pdDtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogXCJzZXRTY2lzc29yXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldFNjaXNzb3Ioc2Npc3Nvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkZXN0cm95XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgICBpZiAodGhpcy5tYWluVGV4dHVyZSkge1xuICAgICAgICB0aGlzLm1haW5UZXh0dXJlLmRlc3Ryb3koKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZGVwdGhUZXh0dXJlKSB7XG4gICAgICAgIHRoaXMuZGVwdGhUZXh0dXJlLmRlc3Ryb3koKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy50ZW1wQnVmZmVycy5mb3JFYWNoKGZ1bmN0aW9uIChidWZmZXIpIHtcbiAgICAgICAgcmV0dXJuIGJ1ZmZlci5kZXN0cm95KCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMudGVtcEJ1ZmZlcnMgPSBbXTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiYmVnaW5GcmFtZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBiZWdpbkZyYW1lKCkge1xuICAgICAgdGhpcy51cGxvYWRFbmNvZGVyID0gdGhpcy5kZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIodGhpcy51cGxvYWRFbmNvZGVyRGVzY3JpcHRvcik7XG4gICAgICB0aGlzLnJlbmRlckVuY29kZXIgPSB0aGlzLmRldmljZS5jcmVhdGVDb21tYW5kRW5jb2Rlcih0aGlzLnJlbmRlckVuY29kZXJEZXNjcmlwdG9yKTtcbiAgICAgIHRoaXMucmVuZGVyVGFyZ2V0RW5jb2RlciA9IHRoaXMuZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKHRoaXMucmVuZGVyVGFyZ2V0RW5jb2RlckRlc2NyaXB0b3IpO1xuXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnN1cHBvcnRDb21wdXRlKSB7XG4gICAgICAgIHRoaXMuY29tcHV0ZUVuY29kZXIgPSB0aGlzLmRldmljZS5jcmVhdGVDb21tYW5kRW5jb2Rlcih0aGlzLmNvbXB1dGVFbmNvZGVyRGVzY3JpcHRvcik7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImVuZEZyYW1lXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGVuZEZyYW1lKCkge1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy5zdXBwb3J0Q29tcHV0ZSkge1xuICAgICAgICB0aGlzLmVuZENvbXB1dGVQYXNzKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZW5kTWFpblJlbmRlclBhc3MoKTtcbiAgICAgIHRoaXMuY29tbWFuZEJ1ZmZlcnNbMF0gPSB0aGlzLnVwbG9hZEVuY29kZXIuZmluaXNoKCk7XG4gICAgICB0aGlzLmNvbW1hbmRCdWZmZXJzWzFdID0gdGhpcy5yZW5kZXJFbmNvZGVyLmZpbmlzaCgpO1xuXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnN1cHBvcnRDb21wdXRlKSB7XG4gICAgICAgIHRoaXMuY29tbWFuZEJ1ZmZlcnNbMl0gPSB0aGlzLmNvbXB1dGVFbmNvZGVyLmZpbmlzaCgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNvbW1hbmRCdWZmZXJzWzNdID0gdGhpcy5yZW5kZXJUYXJnZXRFbmNvZGVyLmZpbmlzaCgpO1xuXG4gICAgICBpZiAoaXNTYWZhcmkpIHtcbiAgICAgICAgdGhpcy5kZXZpY2UgLy8gQHRzLWlnbm9yZVxuICAgICAgICAuZ2V0UXVldWUoKS5zdWJtaXQodGhpcy5jb21tYW5kQnVmZmVycy5maWx0ZXIoZnVuY3Rpb24gKGJ1ZmZlcikge1xuICAgICAgICAgIHJldHVybiBidWZmZXI7XG4gICAgICAgIH0pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGV2aWNlLmRlZmF1bHRRdWV1ZS5zdWJtaXQodGhpcy5jb21tYW5kQnVmZmVycy5maWx0ZXIoZnVuY3Rpb24gKGJ1ZmZlcikge1xuICAgICAgICAgIHJldHVybiBidWZmZXI7XG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Q3VycmVudFJlbmRlclBhc3NcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q3VycmVudFJlbmRlclBhc3MoKSB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50UmVuZGVyVGFyZ2V0ICYmICF0aGlzLmN1cnJlbnRSZW5kZXJQYXNzKSB7XG4gICAgICAgIHRoaXMuc3RhcnRSZW5kZXJUYXJnZXRSZW5kZXJQYXNzKHRoaXMuY3VycmVudFJlbmRlclRhcmdldCwgbnVsbCwgZmFsc2UsIGZhbHNlKTtcbiAgICAgIH0gZWxzZSBpZiAoIXRoaXMuY3VycmVudFJlbmRlclBhc3MpIHtcbiAgICAgICAgdGhpcy5zdGFydE1haW5SZW5kZXJQYXNzKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRSZW5kZXJQYXNzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpbml0R2xzbGFuZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2luaXRHbHNsYW5nID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTQoKSB7XG4gICAgICAgIHZhciBfbmF2aWdhdG9yLCBfbmF2aWdhdG9yJGdwdTtcblxuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU0JChfY29udGV4dDQpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDQucHJldiA9IF9jb250ZXh0NC5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDI7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGdsc2xhbmcoKTtcblxuICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgdGhpcy5nbHNsYW5nID0gX2NvbnRleHQ0LnNlbnQ7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSA1O1xuICAgICAgICAgICAgICAgIHJldHVybiAoX25hdmlnYXRvciA9IG5hdmlnYXRvcikgPT09IG51bGwgfHwgX25hdmlnYXRvciA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9uYXZpZ2F0b3IkZ3B1ID0gX25hdmlnYXRvci5ncHUpID09PSBudWxsIHx8IF9uYXZpZ2F0b3IkZ3B1ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbmF2aWdhdG9yJGdwdS5yZXF1ZXN0QWRhcHRlcigpO1xuXG4gICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICB0aGlzLmFkYXB0ZXIgPSBfY29udGV4dDQuc2VudDtcbiAgICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDg7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRhcHRlci5yZXF1ZXN0RGV2aWNlKCk7XG5cbiAgICAgICAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgICAgIHRoaXMuZGV2aWNlID0gX2NvbnRleHQ0LnNlbnQ7XG5cbiAgICAgICAgICAgICAgY2FzZSA5OlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NC5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlNCwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGluaXRHbHNsYW5nKCkge1xuICAgICAgICByZXR1cm4gX2luaXRHbHNsYW5nLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbml0R2xzbGFuZztcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogXCJpbml0Q29udGV4dEFuZFN3YXBDaGFpblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbml0Q29udGV4dEFuZFN3YXBDaGFpbigpIHtcbiAgICAgIHRoaXMuY29udGV4dCA9IHRoaXMuY2FudmFzLmdldENvbnRleHQoaXNTYWZhcmkgPyAnZ3B1JyA6ICdncHVwcmVzZW50Jyk7XG4gICAgICB0aGlzLnN3YXBDaGFpbiA9IHRoaXMuY29udGV4dC5jb25maWd1cmVTd2FwQ2hhaW4oe1xuICAgICAgICBkZXZpY2U6IHRoaXMuZGV2aWNlLFxuICAgICAgICBmb3JtYXQ6IHRoaXMub3B0aW9ucy5zd2FwQ2hhaW5Gb3JtYXQsXG4gICAgICAgIHVzYWdlOiBXZWJHUFVDb25zdGFudHMuVGV4dHVyZVVzYWdlLk91dHB1dEF0dGFjaG1lbnQgfCBXZWJHUFVDb25zdGFudHMuVGV4dHVyZVVzYWdlLkNvcHlTcmNcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpbml0TWFpbkF0dGFjaG1lbnRzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGluaXRNYWluQXR0YWNobWVudHMoKSB7XG4gICAgICB0aGlzLm1haW5UZXh0dXJlRXh0ZW5kcyA9IHtcbiAgICAgICAgd2lkdGg6IHRoaXMuY2FudmFzLndpZHRoLFxuICAgICAgICBoZWlnaHQ6IHRoaXMuY2FudmFzLmhlaWdodCxcbiAgICAgICAgZGVwdGg6IDFcbiAgICAgIH07XG5cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuYW50aWFsaWFzaW5nKSB7XG4gICAgICAgIHZhciBtYWluVGV4dHVyZURlc2NyaXB0b3IgPSB7XG4gICAgICAgICAgc2l6ZTogdGhpcy5tYWluVGV4dHVyZUV4dGVuZHMsXG4gICAgICAgICAgLy8gVE9ETzogYXJyYXlMYXllckNvdW50IGlzIGRlcHJlY2F0ZWQ6IHVzZSBzaXplLmRlcHRoXG4gICAgICAgICAgLy8gYXJyYXlMYXllckNvdW50OiAxLFxuICAgICAgICAgIG1pcExldmVsQ291bnQ6IDEsXG4gICAgICAgICAgc2FtcGxlQ291bnQ6IHRoaXMubWFpblBhc3NTYW1wbGVDb3VudCxcbiAgICAgICAgICBkaW1lbnNpb246IFdlYkdQVUNvbnN0YW50cy5UZXh0dXJlRGltZW5zaW9uLkUyZCxcbiAgICAgICAgICBmb3JtYXQ6IFdlYkdQVUNvbnN0YW50cy5UZXh0dXJlRm9ybWF0LkJHUkE4VW5vcm0sXG4gICAgICAgICAgdXNhZ2U6IFdlYkdQVUNvbnN0YW50cy5UZXh0dXJlVXNhZ2UuT3V0cHV0QXR0YWNobWVudFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aGlzLm1haW5UZXh0dXJlKSB7XG4gICAgICAgICAgdGhpcy5tYWluVGV4dHVyZS5kZXN0cm95KCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm1haW5UZXh0dXJlID0gdGhpcy5kZXZpY2UuY3JlYXRlVGV4dHVyZShtYWluVGV4dHVyZURlc2NyaXB0b3IpO1xuICAgICAgICB0aGlzLm1haW5Db2xvckF0dGFjaG1lbnRzID0gW3tcbiAgICAgICAgICBhdHRhY2htZW50OiBpc1NhZmFyaSA/IC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICB0aGlzLm1haW5UZXh0dXJlLmNyZWF0ZURlZmF1bHRWaWV3KCkgOiB0aGlzLm1haW5UZXh0dXJlLmNyZWF0ZVZpZXcoKSxcbiAgICAgICAgICBsb2FkVmFsdWU6IFswLCAwLCAwLCAxXSxcbiAgICAgICAgICBzdG9yZU9wOiBXZWJHUFVDb25zdGFudHMuU3RvcmVPcC5TdG9yZVxuICAgICAgICB9XTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubWFpbkNvbG9yQXR0YWNobWVudHMgPSBbe1xuICAgICAgICAgIGF0dGFjaG1lbnQ6IGlzU2FmYXJpID8gLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHRoaXMuc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCkuY3JlYXRlRGVmYXVsdFZpZXcoKSA6IHRoaXMuc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCkuY3JlYXRlVmlldygpLFxuICAgICAgICAgIGxvYWRWYWx1ZTogWzAsIDAsIDAsIDFdLFxuICAgICAgICAgIHN0b3JlT3A6IFdlYkdQVUNvbnN0YW50cy5TdG9yZU9wLlN0b3JlXG4gICAgICAgIH1dO1xuICAgICAgfVxuXG4gICAgICB2YXIgZGVwdGhUZXh0dXJlRGVzY3JpcHRvciA9IHtcbiAgICAgICAgc2l6ZTogdGhpcy5tYWluVGV4dHVyZUV4dGVuZHMsXG4gICAgICAgIC8vIGFycmF5TGF5ZXJDb3VudDogMSxcbiAgICAgICAgbWlwTGV2ZWxDb3VudDogMSxcbiAgICAgICAgc2FtcGxlQ291bnQ6IHRoaXMubWFpblBhc3NTYW1wbGVDb3VudCxcbiAgICAgICAgZGltZW5zaW9uOiBXZWJHUFVDb25zdGFudHMuVGV4dHVyZURpbWVuc2lvbi5FMmQsXG4gICAgICAgIGZvcm1hdDogaXNTYWZhcmkgPyAnZGVwdGgzMmZsb2F0LXN0ZW5jaWw4JyA6IFdlYkdQVUNvbnN0YW50cy5UZXh0dXJlRm9ybWF0LkRlcHRoMjRQbHVzU3RlbmNpbDgsXG4gICAgICAgIHVzYWdlOiBXZWJHUFVDb25zdGFudHMuVGV4dHVyZVVzYWdlLk91dHB1dEF0dGFjaG1lbnRcbiAgICAgIH07XG5cbiAgICAgIGlmICh0aGlzLmRlcHRoVGV4dHVyZSkge1xuICAgICAgICB0aGlzLmRlcHRoVGV4dHVyZS5kZXN0cm95KCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZGVwdGhUZXh0dXJlID0gdGhpcy5kZXZpY2UuY3JlYXRlVGV4dHVyZSggLy8gQHRzLWlnbm9yZVxuICAgICAgZGVwdGhUZXh0dXJlRGVzY3JpcHRvcik7XG4gICAgICB0aGlzLm1haW5EZXB0aEF0dGFjaG1lbnQgPSB7XG4gICAgICAgIGF0dGFjaG1lbnQ6IGlzU2FmYXJpID8gLy8gQHRzLWlnbm9yZVxuICAgICAgICB0aGlzLmRlcHRoVGV4dHVyZS5jcmVhdGVEZWZhdWx0VmlldygpIDogdGhpcy5kZXB0aFRleHR1cmUuY3JlYXRlVmlldygpLFxuICAgICAgICBkZXB0aExvYWRWYWx1ZTogdGhpcy5jbGVhckRlcHRoVmFsdWUsXG4gICAgICAgIGRlcHRoU3RvcmVPcDogV2ViR1BVQ29uc3RhbnRzLlN0b3JlT3AuU3RvcmUsXG4gICAgICAgIHN0ZW5jaWxMb2FkVmFsdWU6IHRoaXMuY2xlYXJTdGVuY2lsVmFsdWUsXG4gICAgICAgIHN0ZW5jaWxTdG9yZU9wOiBXZWJHUFVDb25zdGFudHMuU3RvcmVPcC5TdG9yZVxuICAgICAgfTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic3RhcnRDb21wdXRlUGFzc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzdGFydENvbXB1dGVQYXNzKCkge1xuICAgICAgaWYgKHRoaXMuY3VycmVudENvbXB1dGVQYXNzKSB7XG4gICAgICAgIHRoaXMuZW5kQ29tcHV0ZVBhc3MoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jdXJyZW50Q29tcHV0ZVBhc3MgPSB0aGlzLmNvbXB1dGVFbmNvZGVyLmJlZ2luQ29tcHV0ZVBhc3MoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic3RhcnRNYWluUmVuZGVyUGFzc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzdGFydE1haW5SZW5kZXJQYXNzKCkge1xuICAgICAgaWYgKHRoaXMuY3VycmVudFJlbmRlclBhc3MgJiYgIXRoaXMuY3VycmVudFJlbmRlclRhcmdldCkge1xuICAgICAgICB0aGlzLmVuZE1haW5SZW5kZXJQYXNzKCk7XG4gICAgICB9IC8vIFJlc29sdmUgaW4gY2FzZSBvZiBNU0FBXG5cblxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5hbnRpYWxpYXNpbmcpIHtcbiAgICAgICAgdGhpcy5tYWluQ29sb3JBdHRhY2htZW50c1swXS5yZXNvbHZlVGFyZ2V0ID0gaXNTYWZhcmkgPyAvLyBAdHMtaWdub3JlXG4gICAgICAgIHRoaXMuc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCkuY3JlYXRlRGVmYXVsdFZpZXcoKSA6IHRoaXMuc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCkuY3JlYXRlVmlldygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5tYWluQ29sb3JBdHRhY2htZW50c1swXS5hdHRhY2htZW50ID0gaXNTYWZhcmkgPyAvLyBAdHMtaWdub3JlXG4gICAgICAgIHRoaXMuc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCkuY3JlYXRlRGVmYXVsdFZpZXcoKSA6IHRoaXMuc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCkuY3JlYXRlVmlldygpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmN1cnJlbnRSZW5kZXJQYXNzID0gdGhpcy5yZW5kZXJFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyh7XG4gICAgICAgIGNvbG9yQXR0YWNobWVudHM6IHRoaXMubWFpbkNvbG9yQXR0YWNobWVudHMsXG4gICAgICAgIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQ6IHRoaXMubWFpbkRlcHRoQXR0YWNobWVudCAvLyBUT0RPOiB1c2UgZnJhbWVidWZmZXIncyBkZXB0aCAmIHN0ZW5jaWxcblxuICAgICAgfSk7XG4gICAgICB0aGlzLm1haW5SZW5kZXJQYXNzID0gdGhpcy5jdXJyZW50UmVuZGVyUGFzcztcblxuICAgICAgaWYgKHRoaXMuY2FjaGVkVmlld3BvcnQpIHtcbiAgICAgICAgdGhpcy52aWV3cG9ydCh0aGlzLmNhY2hlZFZpZXdwb3J0KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic3RhcnRSZW5kZXJUYXJnZXRSZW5kZXJQYXNzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0YXJ0UmVuZGVyVGFyZ2V0UmVuZGVyUGFzcyhyZW5kZXJUYXJnZXQsIGNsZWFyQ29sb3IsIGNsZWFyRGVwdGgpIHtcbiAgICAgIHZhciBfcmVuZGVyVGFyZ2V0JGdldCRjb2wsIF9yZW5kZXJUYXJnZXQkZ2V0JGRlcDtcblxuICAgICAgdmFyIGNsZWFyU3RlbmNpbCA9IGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIGFyZ3VtZW50c1szXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzNdIDogZmFsc2U7XG4gICAgICB2YXIgZ3B1VGV4dHVyZSA9IChfcmVuZGVyVGFyZ2V0JGdldCRjb2wgPSByZW5kZXJUYXJnZXQuZ2V0KCkuY29sb3IpID09PSBudWxsIHx8IF9yZW5kZXJUYXJnZXQkZ2V0JGNvbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3JlbmRlclRhcmdldCRnZXQkY29sLnRleHR1cmU7XG4gICAgICB2YXIgY29sb3JUZXh0dXJlVmlldztcblxuICAgICAgaWYgKGdwdVRleHR1cmUpIHtcbiAgICAgICAgY29sb3JUZXh0dXJlVmlldyA9IGdwdVRleHR1cmUuY3JlYXRlVmlldyh0aGlzLmN1cnJlbnRSZW5kZXJUYXJnZXRWaWV3RGVzY3JpcHRvcik7XG4gICAgICB9XG5cbiAgICAgIHZhciBkZXB0aFN0ZW5jaWxUZXh0dXJlID0gKF9yZW5kZXJUYXJnZXQkZ2V0JGRlcCA9IHJlbmRlclRhcmdldC5nZXQoKS5kZXB0aCkgPT09IG51bGwgfHwgX3JlbmRlclRhcmdldCRnZXQkZGVwID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfcmVuZGVyVGFyZ2V0JGdldCRkZXAudGV4dHVyZTtcbiAgICAgIHZhciBkZXB0aFN0ZW5jaWxUZXh0dXJlVmlldztcblxuICAgICAgaWYgKGRlcHRoU3RlbmNpbFRleHR1cmUpIHtcbiAgICAgICAgZGVwdGhTdGVuY2lsVGV4dHVyZVZpZXcgPSBkZXB0aFN0ZW5jaWxUZXh0dXJlLmNyZWF0ZVZpZXcoKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHJlbmRlclBhc3MgPSB0aGlzLnJlbmRlclRhcmdldEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHtcbiAgICAgICAgY29sb3JBdHRhY2htZW50czogW3tcbiAgICAgICAgICBhdHRhY2htZW50OiBjb2xvclRleHR1cmVWaWV3LFxuICAgICAgICAgIGxvYWRWYWx1ZTogY2xlYXJDb2xvciAhPT0gbnVsbCA/IGNsZWFyQ29sb3IgOiBXZWJHUFVDb25zdGFudHMuTG9hZE9wLkxvYWQsXG4gICAgICAgICAgc3RvcmVPcDogV2ViR1BVQ29uc3RhbnRzLlN0b3JlT3AuU3RvcmVcbiAgICAgICAgfV0sXG4gICAgICAgIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQ6IGRlcHRoU3RlbmNpbFRleHR1cmUgJiYgZGVwdGhTdGVuY2lsVGV4dHVyZVZpZXcgPyB7XG4gICAgICAgICAgYXR0YWNobWVudDogZGVwdGhTdGVuY2lsVGV4dHVyZVZpZXcsXG4gICAgICAgICAgZGVwdGhMb2FkVmFsdWU6IGNsZWFyRGVwdGggPyB0aGlzLmNsZWFyRGVwdGhWYWx1ZSA6IFdlYkdQVUNvbnN0YW50cy5Mb2FkT3AuTG9hZCxcbiAgICAgICAgICBkZXB0aFN0b3JlT3A6IFdlYkdQVUNvbnN0YW50cy5TdG9yZU9wLlN0b3JlLFxuICAgICAgICAgIHN0ZW5jaWxMb2FkVmFsdWU6IGNsZWFyU3RlbmNpbCA/IHRoaXMuY2xlYXJTdGVuY2lsVmFsdWUgOiBXZWJHUFVDb25zdGFudHMuTG9hZE9wLkxvYWQsXG4gICAgICAgICAgc3RlbmNpbFN0b3JlT3A6IFdlYkdQVUNvbnN0YW50cy5TdG9yZU9wLlN0b3JlXG4gICAgICAgIH0gOiB1bmRlZmluZWRcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jdXJyZW50UmVuZGVyUGFzcyA9IHJlbmRlclBhc3M7XG5cbiAgICAgIGlmICh0aGlzLmNhY2hlZFZpZXdwb3J0KSB7XG4gICAgICAgIHRoaXMudmlld3BvcnQodGhpcy5jYWNoZWRWaWV3cG9ydCk7XG4gICAgICB9IC8vIFRPRE8gV0VCR1BVIHNldCB0aGUgc2Npc3NvciByZWN0IGFuZCB0aGUgc3RlbmNpbCByZWZlcmVuY2UgdmFsdWVcblxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJlbmRNYWluUmVuZGVyUGFzc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBlbmRNYWluUmVuZGVyUGFzcygpIHtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRSZW5kZXJQYXNzID09PSB0aGlzLm1haW5SZW5kZXJQYXNzICYmIHRoaXMuY3VycmVudFJlbmRlclBhc3MgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50UmVuZGVyUGFzcy5lbmRQYXNzKCk7XG4gICAgICAgIHRoaXMucmVzZXRDYWNoZWRWaWV3cG9ydCgpO1xuICAgICAgICB0aGlzLmN1cnJlbnRSZW5kZXJQYXNzID0gbnVsbDtcbiAgICAgICAgdGhpcy5tYWluUmVuZGVyUGFzcyA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImVuZENvbXB1dGVQYXNzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGVuZENvbXB1dGVQYXNzKCkge1xuICAgICAgaWYgKHRoaXMuY3VycmVudENvbXB1dGVQYXNzKSB7XG4gICAgICAgIHRoaXMuY3VycmVudENvbXB1dGVQYXNzLmVuZFBhc3MoKTtcbiAgICAgICAgdGhpcy5jdXJyZW50Q29tcHV0ZVBhc3MgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJlbmRSZW5kZXJUYXJnZXRSZW5kZXJQYXNzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGVuZFJlbmRlclRhcmdldFJlbmRlclBhc3MoKSB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50UmVuZGVyUGFzcykge1xuICAgICAgICB0aGlzLmN1cnJlbnRSZW5kZXJQYXNzLmVuZFBhc3MoKTtcbiAgICAgICAgdGhpcy5yZXNldENhY2hlZFZpZXdwb3J0KCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlc2V0Q2FjaGVkVmlld3BvcnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVzZXRDYWNoZWRWaWV3cG9ydCgpIHtcbiAgICAgIHRoaXMuY2FjaGVkVmlld3BvcnQgPSB7XG4gICAgICAgIHg6IDAsXG4gICAgICAgIHk6IDAsXG4gICAgICAgIHdpZHRoOiAwLFxuICAgICAgICBoZWlnaHQ6IDBcbiAgICAgIH07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInVuYmluZEZyYW1lYnVmZmVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVuYmluZEZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKSB7XG4gICAgICAvLyB1bmJpbmRcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRSZW5kZXJQYXNzICYmIHRoaXMuY3VycmVudFJlbmRlclBhc3MgIT09IHRoaXMubWFpblJlbmRlclBhc3MpIHtcbiAgICAgICAgdGhpcy5lbmRSZW5kZXJUYXJnZXRSZW5kZXJQYXNzKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudHJhbnNpZW50Vmlld3BvcnQueCA9IEluZmluaXR5O1xuICAgICAgdGhpcy5jdXJyZW50UmVuZGVyVGFyZ2V0ID0gbnVsbDsgLy8gaWYgKHRleHR1cmUuZ2VuZXJhdGVNaXBNYXBzICYmICFkaXNhYmxlR2VuZXJhdGVNaXBNYXBzICYmICF0ZXh0dXJlLmlzQ3ViZSkge1xuICAgICAgLy8gICB0aGlzLl9nZW5lcmF0ZU1pcG1hcHModGV4dHVyZSk7XG4gICAgICAvLyB9XG5cbiAgICAgIHRoaXMuY3VycmVudFJlbmRlclBhc3MgPSB0aGlzLm1haW5SZW5kZXJQYXNzO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBXZWJHUFVFbmdpbmU7XG59KCksIF90ZW1wKSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/webgpu/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/Kernel.js":
/*!************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/Kernel.js ***!
\************************************************************************/
/*! exports provided: Kernel */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Kernel\", function() { return Kernel; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__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@7.16.3@@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@7.16.3@@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_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__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@7.16.3@@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@7.16.3@@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_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/_@webgpu_types@0.0.31@@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _utils_canvas__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./utils/canvas */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/canvas.js\");\n/* harmony import */ var _utils_is_array__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utils/is-array */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-array.js\");\n/* harmony import */ var _utils_is_number__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./utils/is-number */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-number.js\");\n/* harmony import */ var _utils_is_typedarray__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./utils/is-typedarray */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-typedarray.js\");\n\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _class, _class2, _descriptor, _descriptor2, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n // tslint:disable-next-line:no-submodule-imports\n\n\n\n\n\n\n\nvar Kernel = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_10__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_10__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].RenderEngine), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_10__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].ConfigService), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function Kernel() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default()(this, Kernel);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, \"engine\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, \"configService\", _descriptor2, this);\n\n this.entity = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"createEntity\"])();\n this.model = void 0;\n this.dirty = true;\n this.compiledBundle = void 0;\n this.initPromise = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default()(Kernel, [{\n key: \"init\",\n value: function init() {\n var _this$configService$g = this.configService.get(),\n canvas = _this$configService$g.canvas,\n engineOptions = _this$configService$g.engineOptions;\n\n this.initPromise = this.engine.init(_objectSpread({\n canvas: canvas || Object(_utils_canvas__WEBPACK_IMPORTED_MODULE_11__[\"createCanvas\"])(),\n swapChainFormat: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_9__[\"TextureFormat\"].BGRA8Unorm,\n antialiasing: false\n }, engineOptions));\n }\n }, {\n key: \"setBundle\",\n value: function setBundle(bundle) {\n // deep clone\n this.compiledBundle = JSON.parse(JSON.stringify(bundle));\n }\n }, {\n key: \"setDispatch\",\n value: function setDispatch(dispatch) {\n if (this.compiledBundle.context) {\n this.compiledBundle.context.dispatch = dispatch;\n }\n\n return this;\n }\n }, {\n key: \"setMaxIteration\",\n value: function setMaxIteration(maxIteration) {\n if (this.compiledBundle.context) {\n this.compiledBundle.context.maxIteration = maxIteration;\n }\n\n return this;\n }\n }, {\n key: \"setBinding\",\n value: function setBinding(name, data) {\n var _this = this;\n\n if (typeof name === 'string') {\n var isNumberLikeData = Object(_utils_is_number__WEBPACK_IMPORTED_MODULE_13__[\"isNumber\"])(data) || Object(_utils_is_typedarray__WEBPACK_IMPORTED_MODULE_14__[\"isTypedArray\"])(data) || Object(_utils_is_array__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(data);\n\n if (this.compiledBundle && this.compiledBundle.context) {\n // set define, eg. setBinding('MAX_LENGTH', 10)\n var existedDefine = this.compiledBundle.context.defines.find(function (b) {\n return b.name === name;\n });\n\n if (existedDefine) {\n existedDefine.value = data;\n return this;\n } // set uniform\n\n\n var existedBinding = this.compiledBundle.context.uniforms.find(function (b) {\n return b.name === name;\n });\n\n if (existedBinding) {\n // update uniform or buffer\n if (isNumberLikeData) {\n // @ts-ignore\n existedBinding.data = data;\n existedBinding.isReferer = false;\n\n if (existedBinding.storageClass === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"STORAGE_CLASS\"].Uniform) {\n if (this.model) {\n // @ts-ignore\n this.model.updateUniform(name, data);\n }\n } else {\n if (this.model) {\n // @ts-ignore\n this.model.updateBuffer(name, data);\n }\n }\n } else {\n // update with another kernel\n existedBinding.isReferer = true; // @ts-ignore\n\n existedBinding.data = data;\n }\n }\n }\n } else {\n Object.keys(name).forEach(function (key) {\n _this.setBinding(key, name[key]);\n });\n }\n\n return this;\n }\n }, {\n key: \"execute\",\n value: function () {\n var _execute = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var _this2 = this;\n\n var iteration,\n i,\n _args = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n iteration = _args.length > 0 && _args[0] !== undefined ? _args[0] : 1;\n\n if (!this.dirty) {\n _context.next = 6;\n break;\n }\n\n if (this.compiledBundle.context) {\n if (iteration > 1) {\n this.compiledBundle.context.maxIteration = iteration;\n } else {\n this.compiledBundle.context.maxIteration++;\n }\n }\n\n _context.next = 5;\n return this.compile();\n\n case 5:\n this.dirty = false;\n\n case 6:\n this.engine.beginFrame(); // 首先开启当前 frame 的 compute pass\n\n this.engine.clear({});\n\n if (this.compiledBundle.context) {\n this.compiledBundle.context.uniforms.filter(function (_ref) {\n var isReferer = _ref.isReferer;\n return isReferer;\n }).forEach(function (_ref2) {\n var data = _ref2.data,\n name = _ref2.name;\n\n // @ts-ignore\n _this2.model.confirmInput(data.model, name);\n });\n }\n\n for (i = 0; i < iteration; i++) {\n this.model.run();\n }\n\n this.engine.endFrame();\n return _context.abrupt(\"return\", this);\n\n case 12:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function execute() {\n return _execute.apply(this, arguments);\n }\n\n return execute;\n }()\n /**\n * read output from GPUBuffer\n */\n\n }, {\n key: \"getOutput\",\n value: function () {\n var _getOutput = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n return _context2.abrupt(\"return\", this.model.readData());\n\n case 1:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function getOutput() {\n return _getOutput.apply(this, arguments);\n }\n\n return getOutput;\n }()\n }, {\n key: \"compile\",\n value: function () {\n var _compile = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3() {\n var context, target, shader;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.initPromise;\n\n case 2:\n context = _objectSpread({}, this.compiledBundle.context);\n target = this.engine.supportWebGPU ? this.engine.useWGSL ? _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"Target\"].WGSL : _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"Target\"].GLSL450 : _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"Target\"].GLSL100;\n shader = this.compiledBundle.shaders[target]; // this.bindings?.forEach(({ name, data }) => {\n // if (name === name.toUpperCase()) {\n // const define = context.defines.find((d) => d.name === name);\n // if (define) {\n // // @ts-ignore\n // define.value = data;\n // }\n // }\n // });\n // 生成运行时 define\n\n context.defines.filter(function (define) {\n return define.runtime;\n }).forEach(function (define) {\n var valuePlaceHolder = \"\".concat(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"DefineValuePlaceholder\"]).concat(define.name);\n shader = shader.replace(valuePlaceHolder, \"\".concat(define.value));\n });\n context.shader = shader; // 添加 uniform 绑定的数据\n\n context.uniforms.forEach(function (uniform) {\n // const binding = this.bindings.find((b) => b.name === uniform.name);\n // if (binding) {\n // // @ts-ignore\n // uniform.data = binding.referer || binding.data;\n // // @ts-ignore\n // uniform.isReferer = !!binding.referer;\n // }\n // 未指定数据,尝试根据 uniform 类型初始化\n if (!uniform.data) {\n if (uniform.storageClass === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"STORAGE_CLASS\"].StorageBuffer) {\n var sizePerElement = 1;\n\n if (uniform.type === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"AST_TOKEN_TYPES\"].FloatArray) {\n sizePerElement = 1;\n } else if (uniform.type === _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"AST_TOKEN_TYPES\"].Vector4FloatArray) {\n sizePerElement = 4;\n }\n\n uniform.data = new Float32Array(context.output.length * sizePerElement).fill(0);\n }\n }\n }); // } else if (uniform.type === 'image2D') {\n // // @ts-ignore\n // buffer.data = new Uint8ClampedArray(context.output.length!).fill(0);\n // }\n\n this.compiledBundle.context = context;\n _context3.next = 11;\n return this.engine.createComputeModel(this.compiledBundle.context);\n\n case 11:\n this.model = _context3.sent;\n\n case 12:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function compile() {\n return _compile.apply(this, arguments);\n }\n\n return compile;\n }()\n }]);\n\n return Kernel;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default()(_class2.prototype, \"engine\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default()(_class2.prototype, \"configService\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=Kernel.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL0tlcm5lbC5qcz8wMzMxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUE2RDtBQUNXO0FBQ0o7QUFDc0I7QUFDdEI7QUFDTjtBQUMwQjtBQUNBOztBQUV4Rjs7QUFFQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSx1REFBdUQsQ0FBQyw0RUFBZSwyQkFBMkIsRUFBRSxFQUFFLEVBQUUsNkNBQTZDLDJFQUEyRSxFQUFFLE9BQU8saURBQWlELGtGQUFrRixFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWU7O0FBRXJaOztBQUUvRDtBQUNqQjtBQUNEO0FBQ1A7QUFDTTtBQUNRO0FBQzlDLHFCQUFxQiw2REFBVSxZQUFZLHlEQUFNLENBQUMsOERBQVUsd0JBQXdCLHlEQUFNLENBQUMsOERBQVU7QUFDNUc7QUFDQSxJQUFJLDRFQUFlOztBQUVuQixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCLGtCQUFrQix3RUFBWTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMEJBQTBCLG1FQUFZO0FBQ3RDLHlCQUF5QiwwRUFBNkI7QUFDdEQ7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLCtCQUErQixrRUFBUSxVQUFVLDBFQUFZLFVBQVUsZ0VBQU87O0FBRTlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVzs7QUFFWDtBQUNBO0FBQ0E7QUFDQSxXQUFXOzs7QUFHWDtBQUNBO0FBQ0EsV0FBVzs7QUFFWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsa0RBQWtELGlFQUFhO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSw4Q0FBOEM7O0FBRTlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EscUJBQXFCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUN4RTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLHlDQUF5Qzs7QUFFekMsb0NBQW9DOztBQUVwQztBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7O0FBRUEsMkJBQTJCLGVBQWU7QUFDMUM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsdUJBQXVCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUMxRSxlQUFlLGlFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0EscUJBQXFCLDhFQUFpQixlQUFlLGlFQUFtQjtBQUN4RTtBQUNBLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQ0FBMEM7QUFDMUMsMkVBQTJFLDBEQUFNLFFBQVEsMERBQU0sV0FBVywwREFBTTtBQUNoSCw2REFBNkQsNkJBQTZCLGFBQWE7QUFDdkc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEI7O0FBRUE7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQixtREFBbUQsMEVBQXNCO0FBQ3pFO0FBQ0EsaUJBQWlCO0FBQ2pCLHdDQUF3Qzs7QUFFeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQsaUVBQWE7QUFDOUQ7O0FBRUEsMkNBQTJDLG1FQUFlO0FBQzFEO0FBQ0EsdUJBQXVCLDJCQUEyQixtRUFBZTtBQUNqRTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixFQUFFLEtBQUs7QUFDeEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBLENBQUMsMkJBQTJCLHNGQUF5QjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHVAMC41LjVAQGFudHYvZy13ZWJncHUvZXMvS2VybmVsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSBcIkBiYWJlbC9ydW50aW1lL3JlZ2VuZXJhdG9yXCI7XG5pbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplcldhcm5pbmdIZWxwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyXCI7XG5cbnZhciBfZGVjLCBfZGVjMiwgX2RlYzMsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9kZXNjcmlwdG9yMiwgX3RlbXA7XG5cbmZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5pbXBvcnQgeyBBU1RfVE9LRU5fVFlQRVMsIGNyZWF0ZUVudGl0eSwgRGVmaW5lVmFsdWVQbGFjZWhvbGRlciwgSURFTlRJRklFUiwgU1RPUkFHRV9DTEFTUywgVGFyZ2V0IH0gZnJvbSAnQGFudHYvZy13ZWJncHUtY29yZSc7IC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1zdWJtb2R1bGUtaW1wb3J0c1xuXG5pbXBvcnQgKiBhcyBXZWJHUFVDb25zdGFudHMgZnJvbSAnQHdlYmdwdS90eXBlcy9kaXN0L2NvbnN0YW50cyc7XG5pbXBvcnQgeyBpbmplY3QsIGluamVjdGFibGUgfSBmcm9tICdpbnZlcnNpZnknO1xuaW1wb3J0IHsgY3JlYXRlQ2FudmFzIH0gZnJvbSAnLi91dGlscy9jYW52YXMnO1xuaW1wb3J0IGlzQXJyYXkgZnJvbSAnLi91dGlscy9pcy1hcnJheSc7XG5pbXBvcnQgeyBpc051bWJlciB9IGZyb20gJy4vdXRpbHMvaXMtbnVtYmVyJztcbmltcG9ydCB7IGlzVHlwZWRBcnJheSB9IGZyb20gJy4vdXRpbHMvaXMtdHlwZWRhcnJheSc7XG5leHBvcnQgdmFyIEtlcm5lbCA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjMiA9IGluamVjdChJREVOVElGSUVSLlJlbmRlckVuZ2luZSksIF9kZWMzID0gaW5qZWN0KElERU5USUZJRVIuQ29uZmlnU2VydmljZSksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBLZXJuZWwoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEtlcm5lbCk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImVuZ2luZVwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImNvbmZpZ1NlcnZpY2VcIiwgX2Rlc2NyaXB0b3IyLCB0aGlzKTtcblxuICAgIHRoaXMuZW50aXR5ID0gY3JlYXRlRW50aXR5KCk7XG4gICAgdGhpcy5tb2RlbCA9IHZvaWQgMDtcbiAgICB0aGlzLmRpcnR5ID0gdHJ1ZTtcbiAgICB0aGlzLmNvbXBpbGVkQnVuZGxlID0gdm9pZCAwO1xuICAgIHRoaXMuaW5pdFByb21pc2UgPSB2b2lkIDA7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoS2VybmVsLCBbe1xuICAgIGtleTogXCJpbml0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGluaXQoKSB7XG4gICAgICB2YXIgX3RoaXMkY29uZmlnU2VydmljZSRnID0gdGhpcy5jb25maWdTZXJ2aWNlLmdldCgpLFxuICAgICAgICAgIGNhbnZhcyA9IF90aGlzJGNvbmZpZ1NlcnZpY2UkZy5jYW52YXMsXG4gICAgICAgICAgZW5naW5lT3B0aW9ucyA9IF90aGlzJGNvbmZpZ1NlcnZpY2UkZy5lbmdpbmVPcHRpb25zO1xuXG4gICAgICB0aGlzLmluaXRQcm9taXNlID0gdGhpcy5lbmdpbmUuaW5pdChfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgY2FudmFzOiBjYW52YXMgfHwgY3JlYXRlQ2FudmFzKCksXG4gICAgICAgIHN3YXBDaGFpbkZvcm1hdDogV2ViR1BVQ29uc3RhbnRzLlRleHR1cmVGb3JtYXQuQkdSQThVbm9ybSxcbiAgICAgICAgYW50aWFsaWFzaW5nOiBmYWxzZVxuICAgICAgfSwgZW5naW5lT3B0aW9ucykpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRCdW5kbGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0QnVuZGxlKGJ1bmRsZSkge1xuICAgICAgLy8gZGVlcCBjbG9uZVxuICAgICAgdGhpcy5jb21waWxlZEJ1bmRsZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoYnVuZGxlKSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldERpc3BhdGNoXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldERpc3BhdGNoKGRpc3BhdGNoKSB7XG4gICAgICBpZiAodGhpcy5jb21waWxlZEJ1bmRsZS5jb250ZXh0KSB7XG4gICAgICAgIHRoaXMuY29tcGlsZWRCdW5kbGUuY29udGV4dC5kaXNwYXRjaCA9IGRpc3BhdGNoO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0TWF4SXRlcmF0aW9uXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldE1heEl0ZXJhdGlvbihtYXhJdGVyYXRpb24pIHtcbiAgICAgIGlmICh0aGlzLmNvbXBpbGVkQnVuZGxlLmNvbnRleHQpIHtcbiAgICAgICAgdGhpcy5jb21waWxlZEJ1bmRsZS5jb250ZXh0Lm1heEl0ZXJhdGlvbiA9IG1heEl0ZXJhdGlvbjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldEJpbmRpbmdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0QmluZGluZyhuYW1lLCBkYXRhKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBpZiAodHlwZW9mIG5hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHZhciBpc051bWJlckxpa2VEYXRhID0gaXNOdW1iZXIoZGF0YSkgfHwgaXNUeXBlZEFycmF5KGRhdGEpIHx8IGlzQXJyYXkoZGF0YSk7XG5cbiAgICAgICAgaWYgKHRoaXMuY29tcGlsZWRCdW5kbGUgJiYgdGhpcy5jb21waWxlZEJ1bmRsZS5jb250ZXh0KSB7XG4gICAgICAgICAgLy8gc2V0IGRlZmluZSwgZWcuIHNldEJpbmRpbmcoJ01BWF9MRU5HVEgnLCAxMClcbiAgICAgICAgICB2YXIgZXhpc3RlZERlZmluZSA9IHRoaXMuY29tcGlsZWRCdW5kbGUuY29udGV4dC5kZWZpbmVzLmZpbmQoZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgICAgIHJldHVybiBiLm5hbWUgPT09IG5hbWU7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAoZXhpc3RlZERlZmluZSkge1xuICAgICAgICAgICAgZXhpc3RlZERlZmluZS52YWx1ZSA9IGRhdGE7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgICB9IC8vIHNldCB1bmlmb3JtXG5cblxuICAgICAgICAgIHZhciBleGlzdGVkQmluZGluZyA9IHRoaXMuY29tcGlsZWRCdW5kbGUuY29udGV4dC51bmlmb3Jtcy5maW5kKGZ1bmN0aW9uIChiKSB7XG4gICAgICAgICAgICByZXR1cm4gYi5uYW1lID09PSBuYW1lO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKGV4aXN0ZWRCaW5kaW5nKSB7XG4gICAgICAgICAgICAvLyB1cGRhdGUgdW5pZm9ybSBvciBidWZmZXJcbiAgICAgICAgICAgIGlmIChpc051bWJlckxpa2VEYXRhKSB7XG4gICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgZXhpc3RlZEJpbmRpbmcuZGF0YSA9IGRhdGE7XG4gICAgICAgICAgICAgIGV4aXN0ZWRCaW5kaW5nLmlzUmVmZXJlciA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgIGlmIChleGlzdGVkQmluZGluZy5zdG9yYWdlQ2xhc3MgPT09IFNUT1JBR0VfQ0xBU1MuVW5pZm9ybSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1vZGVsKSB7XG4gICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLnVwZGF0ZVVuaWZvcm0obmFtZSwgZGF0YSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1vZGVsKSB7XG4gICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLnVwZGF0ZUJ1ZmZlcihuYW1lLCBkYXRhKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIHVwZGF0ZSB3aXRoIGFub3RoZXIga2VybmVsXG4gICAgICAgICAgICAgIGV4aXN0ZWRCaW5kaW5nLmlzUmVmZXJlciA9IHRydWU7IC8vIEB0cy1pZ25vcmVcblxuICAgICAgICAgICAgICBleGlzdGVkQmluZGluZy5kYXRhID0gZGF0YTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIE9iamVjdC5rZXlzKG5hbWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgIF90aGlzLnNldEJpbmRpbmcoa2V5LCBuYW1lW2tleV0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImV4ZWN1dGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9leGVjdXRlID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZSgpIHtcbiAgICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgICAgdmFyIGl0ZXJhdGlvbixcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBfYXJncyA9IGFyZ3VtZW50cztcbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBpdGVyYXRpb24gPSBfYXJncy5sZW5ndGggPiAwICYmIF9hcmdzWzBdICE9PSB1bmRlZmluZWQgPyBfYXJnc1swXSA6IDE7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZGlydHkpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSA2O1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29tcGlsZWRCdW5kbGUuY29udGV4dCkge1xuICAgICAgICAgICAgICAgICAgaWYgKGl0ZXJhdGlvbiA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21waWxlZEJ1bmRsZS5jb250ZXh0Lm1heEl0ZXJhdGlvbiA9IGl0ZXJhdGlvbjtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcGlsZWRCdW5kbGUuY29udGV4dC5tYXhJdGVyYXRpb24rKztcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gNTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb21waWxlKCk7XG5cbiAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgIHRoaXMuZGlydHkgPSBmYWxzZTtcblxuICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgdGhpcy5lbmdpbmUuYmVnaW5GcmFtZSgpOyAvLyDpppblhYjlvIDlkK/lvZPliY0gZnJhbWUg55qEIGNvbXB1dGUgcGFzc1xuXG4gICAgICAgICAgICAgICAgdGhpcy5lbmdpbmUuY2xlYXIoe30pO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29tcGlsZWRCdW5kbGUuY29udGV4dCkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5jb21waWxlZEJ1bmRsZS5jb250ZXh0LnVuaWZvcm1zLmZpbHRlcihmdW5jdGlvbiAoX3JlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaXNSZWZlcmVyID0gX3JlZi5pc1JlZmVyZXI7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpc1JlZmVyZXI7XG4gICAgICAgICAgICAgICAgICB9KS5mb3JFYWNoKGZ1bmN0aW9uIChfcmVmMikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IF9yZWYyLmRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gX3JlZjIubmFtZTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgIF90aGlzMi5tb2RlbC5jb25maXJtSW5wdXQoZGF0YS5tb2RlbCwgbmFtZSk7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgaXRlcmF0aW9uOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMubW9kZWwucnVuKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5lbmdpbmUuZW5kRnJhbWUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuYWJydXB0KFwicmV0dXJuXCIsIHRoaXMpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTI6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZSwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGV4ZWN1dGUoKSB7XG4gICAgICAgIHJldHVybiBfZXhlY3V0ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZXhlY3V0ZTtcbiAgICB9KClcbiAgICAvKipcbiAgICAgKiByZWFkIG91dHB1dCBmcm9tIEdQVUJ1ZmZlclxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0T3V0cHV0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfZ2V0T3V0cHV0ID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTIoKSB7XG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0Mikge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0Mi5wcmV2ID0gX2NvbnRleHQyLm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuYWJydXB0KFwicmV0dXJuXCIsIHRoaXMubW9kZWwucmVhZERhdGEoKSk7XG5cbiAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlMiwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGdldE91dHB1dCgpIHtcbiAgICAgICAgcmV0dXJuIF9nZXRPdXRwdXQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGdldE91dHB1dDtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogXCJjb21waWxlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfY29tcGlsZSA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUzKCkge1xuICAgICAgICB2YXIgY29udGV4dCwgdGFyZ2V0LCBzaGFkZXI7XG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZTMkKF9jb250ZXh0Mykge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0My5wcmV2ID0gX2NvbnRleHQzLm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gMjtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pbml0UHJvbWlzZTtcblxuICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgY29udGV4dCA9IF9vYmplY3RTcHJlYWQoe30sIHRoaXMuY29tcGlsZWRCdW5kbGUuY29udGV4dCk7XG4gICAgICAgICAgICAgICAgdGFyZ2V0ID0gdGhpcy5lbmdpbmUuc3VwcG9ydFdlYkdQVSA/IHRoaXMuZW5naW5lLnVzZVdHU0wgPyBUYXJnZXQuV0dTTCA6IFRhcmdldC5HTFNMNDUwIDogVGFyZ2V0LkdMU0wxMDA7XG4gICAgICAgICAgICAgICAgc2hhZGVyID0gdGhpcy5jb21waWxlZEJ1bmRsZS5zaGFkZXJzW3RhcmdldF07IC8vIHRoaXMuYmluZGluZ3M/LmZvckVhY2goKHsgbmFtZSwgZGF0YSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gICBpZiAobmFtZSA9PT0gbmFtZS50b1VwcGVyQ2FzZSgpKSB7XG4gICAgICAgICAgICAgICAgLy8gICAgIGNvbnN0IGRlZmluZSA9IGNvbnRleHQuZGVmaW5lcy5maW5kKChkKSA9PiBkLm5hbWUgPT09IG5hbWUpO1xuICAgICAgICAgICAgICAgIC8vICAgICBpZiAoZGVmaW5lKSB7XG4gICAgICAgICAgICAgICAgLy8gICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIC8vICAgICAgIGRlZmluZS52YWx1ZSA9IGRhdGE7XG4gICAgICAgICAgICAgICAgLy8gICAgIH1cbiAgICAgICAgICAgICAgICAvLyAgIH1cbiAgICAgICAgICAgICAgICAvLyB9KTtcbiAgICAgICAgICAgICAgICAvLyDnlJ/miJDov5DooYzml7YgZGVmaW5lXG5cbiAgICAgICAgICAgICAgICBjb250ZXh0LmRlZmluZXMuZmlsdGVyKGZ1bmN0aW9uIChkZWZpbmUpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBkZWZpbmUucnVudGltZTtcbiAgICAgICAgICAgICAgICB9KS5mb3JFYWNoKGZ1bmN0aW9uIChkZWZpbmUpIHtcbiAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZVBsYWNlSG9sZGVyID0gXCJcIi5jb25jYXQoRGVmaW5lVmFsdWVQbGFjZWhvbGRlcikuY29uY2F0KGRlZmluZS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgIHNoYWRlciA9IHNoYWRlci5yZXBsYWNlKHZhbHVlUGxhY2VIb2xkZXIsIFwiXCIuY29uY2F0KGRlZmluZS52YWx1ZSkpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGNvbnRleHQuc2hhZGVyID0gc2hhZGVyOyAvLyDmt7vliqAgdW5pZm9ybSDnu5HlrprnmoTmlbDmja5cblxuICAgICAgICAgICAgICAgIGNvbnRleHQudW5pZm9ybXMuZm9yRWFjaChmdW5jdGlvbiAodW5pZm9ybSkge1xuICAgICAgICAgICAgICAgICAgLy8gY29uc3QgYmluZGluZyA9IHRoaXMuYmluZGluZ3MuZmluZCgoYikgPT4gYi5uYW1lID09PSB1bmlmb3JtLm5hbWUpO1xuICAgICAgICAgICAgICAgICAgLy8gaWYgKGJpbmRpbmcpIHtcbiAgICAgICAgICAgICAgICAgIC8vICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgLy8gICB1bmlmb3JtLmRhdGEgPSBiaW5kaW5nLnJlZmVyZXIgfHwgYmluZGluZy5kYXRhO1xuICAgICAgICAgICAgICAgICAgLy8gICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAvLyAgIHVuaWZvcm0uaXNSZWZlcmVyID0gISFiaW5kaW5nLnJlZmVyZXI7XG4gICAgICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICAgICAgICAvLyDmnKrmjIflrprmlbDmja7vvIzlsJ3or5XmoLnmja4gdW5pZm9ybSDnsbvlnovliJ3lp4vljJZcbiAgICAgICAgICAgICAgICAgIGlmICghdW5pZm9ybS5kYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh1bmlmb3JtLnN0b3JhZ2VDbGFzcyA9PT0gU1RPUkFHRV9DTEFTUy5TdG9yYWdlQnVmZmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdmFyIHNpemVQZXJFbGVtZW50ID0gMTtcblxuICAgICAgICAgICAgICAgICAgICAgIGlmICh1bmlmb3JtLnR5cGUgPT09IEFTVF9UT0tFTl9UWVBFUy5GbG9hdEFycmF5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplUGVyRWxlbWVudCA9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh1bmlmb3JtLnR5cGUgPT09IEFTVF9UT0tFTl9UWVBFUy5WZWN0b3I0RmxvYXRBcnJheSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZVBlckVsZW1lbnQgPSA0O1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIHVuaWZvcm0uZGF0YSA9IG5ldyBGbG9hdDMyQXJyYXkoY29udGV4dC5vdXRwdXQubGVuZ3RoICogc2l6ZVBlckVsZW1lbnQpLmZpbGwoMCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTsgLy8gfSBlbHNlIGlmICh1bmlmb3JtLnR5cGUgPT09ICdpbWFnZTJEJykge1xuICAgICAgICAgICAgICAgIC8vICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIC8vICAgYnVmZmVyLmRhdGEgPSBuZXcgVWludDhDbGFtcGVkQXJyYXkoY29udGV4dC5vdXRwdXQubGVuZ3RoISkuZmlsbCgwKTtcbiAgICAgICAgICAgICAgICAvLyB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBpbGVkQnVuZGxlLmNvbnRleHQgPSBjb250ZXh0O1xuICAgICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gMTE7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZW5naW5lLmNyZWF0ZUNvbXB1dGVNb2RlbCh0aGlzLmNvbXBpbGVkQnVuZGxlLmNvbnRleHQpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgICAgICAgdGhpcy5tb2RlbCA9IF9jb250ZXh0My5zZW50O1xuXG4gICAgICAgICAgICAgIGNhc2UgMTI6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQzLnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUzLCB0aGlzKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gY29tcGlsZSgpIHtcbiAgICAgICAgcmV0dXJuIF9jb21waWxlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb21waWxlO1xuICAgIH0oKVxuICB9XSk7XG5cbiAgcmV0dXJuIEtlcm5lbDtcbn0oKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImVuZ2luZVwiLCBbX2RlYzJdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSwgX2Rlc2NyaXB0b3IyID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJjb25maWdTZXJ2aWNlXCIsIFtfZGVjM10sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pKSwgX2NsYXNzMikpIHx8IF9jbGFzcyk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1LZXJuZWwuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/Kernel.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/Renderer.js":
/*!**************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/Renderer.js ***!
\**************************************************************************/
/*! exports provided: Renderer */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Renderer\", function() { return Renderer; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__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@7.16.3@@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_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__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@7.16.3@@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@7.16.3@@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_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/_@webgpu_types@0.0.31@@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_9__);\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _class, _class2, _descriptor, _descriptor2, _descriptor3, _temp;\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, 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 normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n // tslint:disable-next-line:no-submodule-imports\n\n\n\n\n/* babel-plugin-inline-import './material/shaders/map.frag.declaration.glsl' */\nvar mapFragDeclaration = \"#ifdef USE_MAP\\n uniform sampler2D map;\\n#endif\";\n\n/* babel-plugin-inline-import './material/shaders/map.frag.main.glsl' */\nvar mapFragMain = \"#ifdef USE_MAP\\n vec4 texelColor = texture2D(map, vUv);\\n // texelColor = mapTexelToLinear(texelColor);\\n diffuseColor *= texelColor;\\n#endif\";\n\n/* babel-plugin-inline-import './material/shaders/uv.frag.declaration.glsl' */\nvar uvFragDeclaration = \"#if (defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ))\\n varying vec2 vUv;\\n#endif\";\n\n/* babel-plugin-inline-import './material/shaders/uv.vert.declaration.glsl' */\nvar uvVertDeclaration = \"#ifdef USE_UV\\n attribute vec2 uv;\\n\\t#ifdef UVS_VERTEX_ONLY\\n vec2 vUv;\\n\\t#else\\n\\t\\tvarying vec2 vUv;\\n\\t#endif\\n\\tuniform mat3 uvTransform;\\n#endif\";\n\n/* babel-plugin-inline-import './material/shaders/uv.vert.main.glsl' */\nvar uvVertMain = \"#ifdef USE_UV\\n vUv = (uvTransform * vec3(uv, 1)).xy;\\n#endif\";\nvar Renderer = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_9__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_9__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__[\"IDENTIFIER\"].RenderEngine), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_9__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__[\"IDENTIFIER\"].ShaderModuleService), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_9__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__[\"IDENTIFIER\"].ConfigService), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function Renderer() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, Renderer);\n\n this.container = void 0;\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"engine\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"shaderModule\", _descriptor2, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(this, \"configService\", _descriptor3, this);\n\n this.inited = false;\n this.rendering = false;\n this.pendings = [];\n this.views = [];\n this.size = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(Renderer, [{\n key: \"init\",\n value: function () {\n var _init = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var systems, config, _iterator, _step, system;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n // 模块化处理\n this.shaderModule.registerBuiltinModules();\n this.shaderModule.registerModule('uv.vert.declaration', {\n vs: uvVertDeclaration\n });\n this.shaderModule.registerModule('uv.vert.main', {\n vs: uvVertMain\n });\n this.shaderModule.registerModule('uv.frag.declaration', {\n fs: uvFragDeclaration\n });\n this.shaderModule.registerModule('map.frag.declaration', {\n fs: mapFragDeclaration\n });\n this.shaderModule.registerModule('map.frag.main', {\n fs: mapFragMain\n });\n systems = this.container.getAll(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__[\"IDENTIFIER\"].Systems);\n config = this.configService.get();\n\n if (!config.canvas) {\n _context.next = 30;\n break;\n }\n\n _context.next = 11;\n return this.engine.init({\n canvas: config.canvas,\n swapChainFormat: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_8__[\"TextureFormat\"].BGRA8Unorm,\n antialiasing: false\n });\n\n case 11:\n _iterator = _createForOfIteratorHelper(systems);\n _context.prev = 12;\n\n _iterator.s();\n\n case 14:\n if ((_step = _iterator.n()).done) {\n _context.next = 21;\n break;\n }\n\n system = _step.value;\n\n if (!system.initialize) {\n _context.next = 19;\n break;\n }\n\n _context.next = 19;\n return system.initialize();\n\n case 19:\n _context.next = 14;\n break;\n\n case 21:\n _context.next = 26;\n break;\n\n case 23:\n _context.prev = 23;\n _context.t0 = _context[\"catch\"](12);\n\n _iterator.e(_context.t0);\n\n case 26:\n _context.prev = 26;\n\n _iterator.f();\n\n return _context.finish(26);\n\n case 29:\n this.inited = true;\n\n case 30:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[12, 23, 26, 29]]);\n }));\n\n function init() {\n return _init.apply(this, arguments);\n }\n\n return init;\n }()\n }, {\n key: \"render\",\n value: function () {\n var _render = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2() {\n var systems,\n _len,\n views,\n _key,\n _iterator2,\n _step2,\n system,\n _args2 = arguments;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!(!this.inited || this.rendering)) {\n _context2.next = 2;\n break;\n }\n\n return _context2.abrupt(\"return\");\n\n case 2:\n if (this.pendings.length) {\n this.pendings.forEach(function (pending) {\n pending();\n });\n }\n\n this.rendering = true;\n this.engine.beginFrame();\n systems = this.container.getAll(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_7__[\"IDENTIFIER\"].Systems);\n\n for (_len = _args2.length, views = new Array(_len), _key = 0; _key < _len; _key++) {\n views[_key] = _args2[_key];\n }\n\n _iterator2 = _createForOfIteratorHelper(systems);\n _context2.prev = 8;\n\n _iterator2.s();\n\n case 10:\n if ((_step2 = _iterator2.n()).done) {\n _context2.next = 17;\n break;\n }\n\n system = _step2.value;\n\n if (!system.execute) {\n _context2.next = 15;\n break;\n }\n\n _context2.next = 15;\n return system.execute(views);\n\n case 15:\n _context2.next = 10;\n break;\n\n case 17:\n _context2.next = 22;\n break;\n\n case 19:\n _context2.prev = 19;\n _context2.t0 = _context2[\"catch\"](8);\n\n _iterator2.e(_context2.t0);\n\n case 22:\n _context2.prev = 22;\n\n _iterator2.f();\n\n return _context2.finish(22);\n\n case 25:\n // 录制一遍绘制命令,后续直接播放\n // if (this.useRenderBundle) {\n // if (!this.renderBundleRecorded) {\n // this.engine.startRecordBundle();\n // if (this.onUpdate) {\n // await this.onUpdate(this.engine);\n // }\n // this.renderBundle = this.engine.stopRecordBundle();\n // this.renderBundleRecorded = true;\n // }\n // this.engine.executeBundles([this.renderBundle]);\n // } else {\n // if (this.onUpdate) {\n // await this.onUpdate(this.engine);\n // }\n // }\n this.engine.endFrame();\n this.rendering = false;\n\n case 27:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[8, 19, 22, 25]]);\n }));\n\n function render() {\n return _render.apply(this, arguments);\n }\n\n return render;\n }()\n }, {\n key: \"clear\",\n value: function clear(options) {\n var _this = this;\n\n if (this.inited) {\n this.engine.clear(options);\n } else {\n this.pendings.unshift(function () {\n _this.engine.clear(options);\n\n _this.pendings.shift();\n });\n }\n\n return this;\n } // public setScissor(\n // scissor: Partial<{\n // enable: boolean;\n // box: {\n // x: number;\n // y: number;\n // width: number;\n // height: number;\n // };\n // }>,\n // ) {\n // this.engine.setScissor(scissor);\n // return this;\n // }\n\n }, {\n key: \"setSize\",\n value: function setSize(_ref) {\n var width = _ref.width,\n height = _ref.height;\n var canvas = this.engine.getCanvas();\n this.size = {\n width: width,\n height: height\n };\n canvas.width = width;\n canvas.height = height;\n return this;\n }\n }, {\n key: \"getSize\",\n value: function getSize() {\n return this.size;\n }\n }]);\n\n return Renderer;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"engine\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"shaderModule\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, \"configService\", [_dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=Renderer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL1JlbmRlcmVyLmpzPzZmM2YiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZEO0FBQ1c7QUFDa0I7QUFDdEI7QUFDTjtBQUMwQjtBQUNBOztBQUV4Rjs7QUFFQSx3REFBd0QsUUFBUSxtRUFBbUUsd0hBQXdILGdCQUFnQixXQUFXLHlCQUF5QixTQUFTLHdCQUF3Qiw0QkFBNEIsY0FBYyxTQUFTLDhCQUE4QixFQUFFLHFCQUFxQixVQUFVLEVBQUUsU0FBUyxFQUFFLDhKQUE4SixFQUFFLGtEQUFrRCxTQUFTLGtCQUFrQiwyQkFBMkIsRUFBRSxtQkFBbUIsc0JBQXNCLDhCQUE4QixhQUFhLEVBQUUsc0JBQXNCLGVBQWUsV0FBVyxFQUFFLG1CQUFtQixNQUFNLHlEQUF5RCxFQUFFLFVBQVUsdUJBQXVCLEVBQUUsRUFBRSxHQUFHOztBQUU3OUIsaURBQWlELGdCQUFnQixnRUFBZ0Usd0RBQXdELDZEQUE2RCxzREFBc0Qsa0hBQWtIOztBQUU5WixzQ0FBc0MsdURBQXVELHVDQUF1QyxTQUFTLE9BQU8sa0JBQWtCLEVBQUUsYUFBYTs7QUFFcEk7O0FBRWU7QUFDakI7O0FBRS9DO0FBQ0Esa0VBQWtFOztBQUVsRTtBQUNBLDJFQUEyRSxpREFBaUQsK0JBQStCOztBQUUzSjtBQUNBLHFHQUFxRzs7QUFFckc7QUFDQSw0REFBNEQseUNBQXlDLGdDQUFnQyx1Q0FBdUM7O0FBRTVLO0FBQ0Esd0VBQXdFO0FBQ2pFLHVCQUF1Qiw0REFBVSxZQUFZLHdEQUFNLENBQUMsOERBQVUsd0JBQXdCLHdEQUFNLENBQUMsOERBQVUsK0JBQStCLHdEQUFNLENBQUMsOERBQVU7QUFDOUo7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjs7QUFFQSxJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCOztBQUU5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQSxrQkFBa0IsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3JFOztBQUVBLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakIsZ0RBQWdELDhEQUFVO0FBQzFEOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQywwRUFBNkI7QUFDaEU7QUFDQSxpQkFBaUI7O0FBRWpCO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQSxvQkFBb0IsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsZUFBZSxpRUFBbUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7O0FBRUE7QUFDQTtBQUNBLGdEQUFnRCw4REFBVTs7QUFFMUQsNkVBQTZFLGFBQWE7QUFDMUY7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDLDJCQUEyQixzRkFBeUI7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGtCQUFrQixzRkFBeUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGtCQUFrQixzRkFBeUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL1JlbmRlcmVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSBcIkBiYWJlbC9ydW50aW1lL3JlZ2VuZXJhdG9yXCI7XG5pbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplcldhcm5pbmdIZWxwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyXCI7XG5cbnZhciBfZGVjLCBfZGVjMiwgX2RlYzMsIF9kZWM0LCBfY2xhc3MsIF9jbGFzczIsIF9kZXNjcmlwdG9yLCBfZGVzY3JpcHRvcjIsIF9kZXNjcmlwdG9yMywgX3RlbXA7XG5cbmZ1bmN0aW9uIF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKG8sIGFsbG93QXJyYXlMaWtlKSB7IHZhciBpdDsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwidW5kZWZpbmVkXCIgfHwgb1tTeW1ib2wuaXRlcmF0b3JdID09IG51bGwpIHsgaWYgKEFycmF5LmlzQXJyYXkobykgfHwgKGl0ID0gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8pKSB8fCBhbGxvd0FycmF5TGlrZSAmJiBvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgeyBpZiAoaXQpIG8gPSBpdDsgdmFyIGkgPSAwOyB2YXIgRiA9IGZ1bmN0aW9uIEYoKSB7fTsgcmV0dXJuIHsgczogRiwgbjogZnVuY3Rpb24gbigpIHsgaWYgKGkgPj0gby5sZW5ndGgpIHJldHVybiB7IGRvbmU6IHRydWUgfTsgcmV0dXJuIHsgZG9uZTogZmFsc2UsIHZhbHVlOiBvW2krK10gfTsgfSwgZTogZnVuY3Rpb24gZShfZSkgeyB0aHJvdyBfZTsgfSwgZjogRiB9OyB9IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTsgfSB2YXIgbm9ybWFsQ29tcGxldGlvbiA9IHRydWUsIGRpZEVyciA9IGZhbHNlLCBlcnI7IHJldHVybiB7IHM6IGZ1bmN0aW9uIHMoKSB7IGl0ID0gb1tTeW1ib2wuaXRlcmF0b3JdKCk7IH0sIG46IGZ1bmN0aW9uIG4oKSB7IHZhciBzdGVwID0gaXQubmV4dCgpOyBub3JtYWxDb21wbGV0aW9uID0gc3RlcC5kb25lOyByZXR1cm4gc3RlcDsgfSwgZTogZnVuY3Rpb24gZShfZTIpIHsgZGlkRXJyID0gdHJ1ZTsgZXJyID0gX2UyOyB9LCBmOiBmdW5jdGlvbiBmKCkgeyB0cnkgeyBpZiAoIW5vcm1hbENvbXBsZXRpb24gJiYgaXQucmV0dXJuICE9IG51bGwpIGl0LnJldHVybigpOyB9IGZpbmFsbHkgeyBpZiAoZGlkRXJyKSB0aHJvdyBlcnI7IH0gfSB9OyB9XG5cbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHsgaWYgKCFvKSByZXR1cm47IGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTsgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTsgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7IGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgfVxuXG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikgeyBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSB7IGFycjJbaV0gPSBhcnJbaV07IH0gcmV0dXJuIGFycjI7IH1cblxuaW1wb3J0IHsgSURFTlRJRklFUiB9IGZyb20gJ0BhbnR2L2ctd2ViZ3B1LWNvcmUnOyAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tc3VibW9kdWxlLWltcG9ydHNcblxuaW1wb3J0ICogYXMgV2ViR1BVQ29uc3RhbnRzIGZyb20gJ0B3ZWJncHUvdHlwZXMvZGlzdC9jb25zdGFudHMnO1xuaW1wb3J0IHsgaW5qZWN0LCBpbmplY3RhYmxlIH0gZnJvbSAnaW52ZXJzaWZ5JztcblxuLyogYmFiZWwtcGx1Z2luLWlubGluZS1pbXBvcnQgJy4vbWF0ZXJpYWwvc2hhZGVycy9tYXAuZnJhZy5kZWNsYXJhdGlvbi5nbHNsJyAqL1xudmFyIG1hcEZyYWdEZWNsYXJhdGlvbiA9IFwiI2lmZGVmIFVTRV9NQVBcXG4gIHVuaWZvcm0gc2FtcGxlcjJEIG1hcDtcXG4jZW5kaWZcIjtcblxuLyogYmFiZWwtcGx1Z2luLWlubGluZS1pbXBvcnQgJy4vbWF0ZXJpYWwvc2hhZGVycy9tYXAuZnJhZy5tYWluLmdsc2wnICovXG52YXIgbWFwRnJhZ01haW4gPSBcIiNpZmRlZiBVU0VfTUFQXFxuICB2ZWM0IHRleGVsQ29sb3IgPSB0ZXh0dXJlMkQobWFwLCB2VXYpO1xcbiAgLy8gdGV4ZWxDb2xvciA9IG1hcFRleGVsVG9MaW5lYXIodGV4ZWxDb2xvcik7XFxuICBkaWZmdXNlQ29sb3IgKj0gdGV4ZWxDb2xvcjtcXG4jZW5kaWZcIjtcblxuLyogYmFiZWwtcGx1Z2luLWlubGluZS1pbXBvcnQgJy4vbWF0ZXJpYWwvc2hhZGVycy91di5mcmFnLmRlY2xhcmF0aW9uLmdsc2wnICovXG52YXIgdXZGcmFnRGVjbGFyYXRpb24gPSBcIiNpZiAoZGVmaW5lZCggVVNFX1VWICkgJiYgISBkZWZpbmVkKCBVVlNfVkVSVEVYX09OTFkgKSlcXG4gIHZhcnlpbmcgdmVjMiB2VXY7XFxuI2VuZGlmXCI7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuL21hdGVyaWFsL3NoYWRlcnMvdXYudmVydC5kZWNsYXJhdGlvbi5nbHNsJyAqL1xudmFyIHV2VmVydERlY2xhcmF0aW9uID0gXCIjaWZkZWYgVVNFX1VWXFxuICBhdHRyaWJ1dGUgdmVjMiB1djtcXG5cXHQjaWZkZWYgVVZTX1ZFUlRFWF9PTkxZXFxuICAgIHZlYzIgdlV2O1xcblxcdCNlbHNlXFxuXFx0XFx0dmFyeWluZyB2ZWMyIHZVdjtcXG5cXHQjZW5kaWZcXG5cXHR1bmlmb3JtIG1hdDMgdXZUcmFuc2Zvcm07XFxuI2VuZGlmXCI7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuL21hdGVyaWFsL3NoYWRlcnMvdXYudmVydC5tYWluLmdsc2wnICovXG52YXIgdXZWZXJ0TWFpbiA9IFwiI2lmZGVmIFVTRV9VVlxcbiAgdlV2ID0gKHV2VHJhbnNmb3JtICogdmVjMyh1diwgMSkpLnh5O1xcbiNlbmRpZlwiO1xuZXhwb3J0IHZhciBSZW5kZXJlciA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjMiA9IGluamVjdChJREVOVElGSUVSLlJlbmRlckVuZ2luZSksIF9kZWMzID0gaW5qZWN0KElERU5USUZJRVIuU2hhZGVyTW9kdWxlU2VydmljZSksIF9kZWM0ID0gaW5qZWN0KElERU5USUZJRVIuQ29uZmlnU2VydmljZSksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBSZW5kZXJlcigpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVuZGVyZXIpO1xuXG4gICAgdGhpcy5jb250YWluZXIgPSB2b2lkIDA7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImVuZ2luZVwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcInNoYWRlck1vZHVsZVwiLCBfZGVzY3JpcHRvcjIsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJjb25maWdTZXJ2aWNlXCIsIF9kZXNjcmlwdG9yMywgdGhpcyk7XG5cbiAgICB0aGlzLmluaXRlZCA9IGZhbHNlO1xuICAgIHRoaXMucmVuZGVyaW5nID0gZmFsc2U7XG4gICAgdGhpcy5wZW5kaW5ncyA9IFtdO1xuICAgIHRoaXMudmlld3MgPSBbXTtcbiAgICB0aGlzLnNpemUgPSB2b2lkIDA7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUmVuZGVyZXIsIFt7XG4gICAga2V5OiBcImluaXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9pbml0ID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZSgpIHtcbiAgICAgICAgdmFyIHN5c3RlbXMsIGNvbmZpZywgX2l0ZXJhdG9yLCBfc3RlcCwgc3lzdGVtO1xuXG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgLy8g5qih5Z2X5YyW5aSE55CGXG4gICAgICAgICAgICAgICAgdGhpcy5zaGFkZXJNb2R1bGUucmVnaXN0ZXJCdWlsdGluTW9kdWxlcygpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2hhZGVyTW9kdWxlLnJlZ2lzdGVyTW9kdWxlKCd1di52ZXJ0LmRlY2xhcmF0aW9uJywge1xuICAgICAgICAgICAgICAgICAgdnM6IHV2VmVydERlY2xhcmF0aW9uXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zaGFkZXJNb2R1bGUucmVnaXN0ZXJNb2R1bGUoJ3V2LnZlcnQubWFpbicsIHtcbiAgICAgICAgICAgICAgICAgIHZzOiB1dlZlcnRNYWluXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zaGFkZXJNb2R1bGUucmVnaXN0ZXJNb2R1bGUoJ3V2LmZyYWcuZGVjbGFyYXRpb24nLCB7XG4gICAgICAgICAgICAgICAgICBmczogdXZGcmFnRGVjbGFyYXRpb25cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLnNoYWRlck1vZHVsZS5yZWdpc3Rlck1vZHVsZSgnbWFwLmZyYWcuZGVjbGFyYXRpb24nLCB7XG4gICAgICAgICAgICAgICAgICBmczogbWFwRnJhZ0RlY2xhcmF0aW9uXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zaGFkZXJNb2R1bGUucmVnaXN0ZXJNb2R1bGUoJ21hcC5mcmFnLm1haW4nLCB7XG4gICAgICAgICAgICAgICAgICBmczogbWFwRnJhZ01haW5cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBzeXN0ZW1zID0gdGhpcy5jb250YWluZXIuZ2V0QWxsKElERU5USUZJRVIuU3lzdGVtcyk7XG4gICAgICAgICAgICAgICAgY29uZmlnID0gdGhpcy5jb25maWdTZXJ2aWNlLmdldCgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFjb25maWcuY2FudmFzKSB7XG4gICAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMzA7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMTE7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZW5naW5lLmluaXQoe1xuICAgICAgICAgICAgICAgICAgY2FudmFzOiBjb25maWcuY2FudmFzLFxuICAgICAgICAgICAgICAgICAgc3dhcENoYWluRm9ybWF0OiBXZWJHUFVDb25zdGFudHMuVGV4dHVyZUZvcm1hdC5CR1JBOFVub3JtLFxuICAgICAgICAgICAgICAgICAgYW50aWFsaWFzaW5nOiBmYWxzZVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIoc3lzdGVtcyk7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDEyO1xuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yLnMoKTtcblxuICAgICAgICAgICAgICBjYXNlIDE0OlxuICAgICAgICAgICAgICAgIGlmICgoX3N0ZXAgPSBfaXRlcmF0b3IubigpKS5kb25lKSB7XG4gICAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMjE7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzeXN0ZW0gPSBfc3RlcC52YWx1ZTtcblxuICAgICAgICAgICAgICAgIGlmICghc3lzdGVtLmluaXRpYWxpemUpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxOTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxOTtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3lzdGVtLmluaXRpYWxpemUoKTtcblxuICAgICAgICAgICAgICBjYXNlIDE5OlxuICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxNDtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICBjYXNlIDIxOlxuICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAyNjtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICBjYXNlIDIzOlxuICAgICAgICAgICAgICAgIF9jb250ZXh0LnByZXYgPSAyMztcbiAgICAgICAgICAgICAgICBfY29udGV4dC50MCA9IF9jb250ZXh0W1wiY2F0Y2hcIl0oMTIpO1xuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yLmUoX2NvbnRleHQudDApO1xuXG4gICAgICAgICAgICAgIGNhc2UgMjY6XG4gICAgICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDI2O1xuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yLmYoKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5maW5pc2goMjYpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMjk6XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0ZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICAgIGNhc2UgMzA6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZSwgdGhpcywgW1sxMiwgMjMsIDI2LCAyOV1dKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gaW5pdCgpIHtcbiAgICAgICAgcmV0dXJuIF9pbml0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbml0O1xuICAgIH0oKVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3JlbmRlciA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUyKCkge1xuICAgICAgICB2YXIgc3lzdGVtcyxcbiAgICAgICAgICAgIF9sZW4sXG4gICAgICAgICAgICB2aWV3cyxcbiAgICAgICAgICAgIF9rZXksXG4gICAgICAgICAgICBfaXRlcmF0b3IyLFxuICAgICAgICAgICAgX3N0ZXAyLFxuICAgICAgICAgICAgc3lzdGVtLFxuICAgICAgICAgICAgX2FyZ3MyID0gYXJndW1lbnRzO1xuXG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0Mikge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0Mi5wcmV2ID0gX2NvbnRleHQyLm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIGlmICghKCF0aGlzLmluaXRlZCB8fCB0aGlzLnJlbmRlcmluZykpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMjtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuYWJydXB0KFwicmV0dXJuXCIpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wZW5kaW5ncy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZ3MuZm9yRWFjaChmdW5jdGlvbiAocGVuZGluZykge1xuICAgICAgICAgICAgICAgICAgICBwZW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5lbmdpbmUuYmVnaW5GcmFtZSgpO1xuICAgICAgICAgICAgICAgIHN5c3RlbXMgPSB0aGlzLmNvbnRhaW5lci5nZXRBbGwoSURFTlRJRklFUi5TeXN0ZW1zKTtcblxuICAgICAgICAgICAgICAgIGZvciAoX2xlbiA9IF9hcmdzMi5sZW5ndGgsIHZpZXdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgICAgICAgICAgICAgdmlld3NbX2tleV0gPSBfYXJnczJbX2tleV07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yMiA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKHN5c3RlbXMpO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5wcmV2ID0gODtcblxuICAgICAgICAgICAgICAgIF9pdGVyYXRvcjIucygpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgICAgICAgaWYgKChfc3RlcDIgPSBfaXRlcmF0b3IyLm4oKSkuZG9uZSkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxNztcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHN5c3RlbSA9IF9zdGVwMi52YWx1ZTtcblxuICAgICAgICAgICAgICAgIGlmICghc3lzdGVtLmV4ZWN1dGUpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMTU7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDE1O1xuICAgICAgICAgICAgICAgIHJldHVybiBzeXN0ZW0uZXhlY3V0ZSh2aWV3cyk7XG5cbiAgICAgICAgICAgICAgY2FzZSAxNTpcbiAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDEwO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTc6XG4gICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAyMjtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICBjYXNlIDE5OlxuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5wcmV2ID0gMTk7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQyLnQwID0gX2NvbnRleHQyW1wiY2F0Y2hcIl0oOCk7XG5cbiAgICAgICAgICAgICAgICBfaXRlcmF0b3IyLmUoX2NvbnRleHQyLnQwKTtcblxuICAgICAgICAgICAgICBjYXNlIDIyOlxuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5wcmV2ID0gMjI7XG5cbiAgICAgICAgICAgICAgICBfaXRlcmF0b3IyLmYoKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuZmluaXNoKDIyKTtcblxuICAgICAgICAgICAgICBjYXNlIDI1OlxuICAgICAgICAgICAgICAgIC8vIOW9leWItuS4gOmBjee7mOWItuWRveS7pO+8jOWQjue7reebtOaOpeaSreaUvlxuICAgICAgICAgICAgICAgIC8vIGlmICh0aGlzLnVzZVJlbmRlckJ1bmRsZSkge1xuICAgICAgICAgICAgICAgIC8vICAgaWYgKCF0aGlzLnJlbmRlckJ1bmRsZVJlY29yZGVkKSB7XG4gICAgICAgICAgICAgICAgLy8gICAgIHRoaXMuZW5naW5lLnN0YXJ0UmVjb3JkQnVuZGxlKCk7XG4gICAgICAgICAgICAgICAgLy8gICAgIGlmICh0aGlzLm9uVXBkYXRlKSB7XG4gICAgICAgICAgICAgICAgLy8gICAgICAgYXdhaXQgdGhpcy5vblVwZGF0ZSh0aGlzLmVuZ2luZSk7XG4gICAgICAgICAgICAgICAgLy8gICAgIH1cbiAgICAgICAgICAgICAgICAvLyAgICAgdGhpcy5yZW5kZXJCdW5kbGUgPSB0aGlzLmVuZ2luZS5zdG9wUmVjb3JkQnVuZGxlKCk7XG4gICAgICAgICAgICAgICAgLy8gICAgIHRoaXMucmVuZGVyQnVuZGxlUmVjb3JkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIC8vICAgfVxuICAgICAgICAgICAgICAgIC8vICAgdGhpcy5lbmdpbmUuZXhlY3V0ZUJ1bmRsZXMoW3RoaXMucmVuZGVyQnVuZGxlXSk7XG4gICAgICAgICAgICAgICAgLy8gfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyAgIGlmICh0aGlzLm9uVXBkYXRlKSB7XG4gICAgICAgICAgICAgICAgLy8gICAgIGF3YWl0IHRoaXMub25VcGRhdGUodGhpcy5lbmdpbmUpO1xuICAgICAgICAgICAgICAgIC8vICAgfVxuICAgICAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgICAgICB0aGlzLmVuZ2luZS5lbmRGcmFtZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyaW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgY2FzZSAyNzpcbiAgICAgICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTIsIHRoaXMsIFtbOCwgMTksIDIyLCAyNV1dKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgICByZXR1cm4gX3JlbmRlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVuZGVyO1xuICAgIH0oKVxuICB9LCB7XG4gICAga2V5OiBcImNsZWFyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNsZWFyKG9wdGlvbnMpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIGlmICh0aGlzLmluaXRlZCkge1xuICAgICAgICB0aGlzLmVuZ2luZS5jbGVhcihvcHRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucGVuZGluZ3MudW5zaGlmdChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgX3RoaXMuZW5naW5lLmNsZWFyKG9wdGlvbnMpO1xuXG4gICAgICAgICAgX3RoaXMucGVuZGluZ3Muc2hpZnQoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0gLy8gcHVibGljIHNldFNjaXNzb3IoXG4gICAgLy8gICBzY2lzc29yOiBQYXJ0aWFsPHtcbiAgICAvLyAgICAgZW5hYmxlOiBib29sZWFuO1xuICAgIC8vICAgICBib3g6IHtcbiAgICAvLyAgICAgICB4OiBudW1iZXI7XG4gICAgLy8gICAgICAgeTogbnVtYmVyO1xuICAgIC8vICAgICAgIHdpZHRoOiBudW1iZXI7XG4gICAgLy8gICAgICAgaGVpZ2h0OiBudW1iZXI7XG4gICAgLy8gICAgIH07XG4gICAgLy8gICB9PixcbiAgICAvLyApIHtcbiAgICAvLyAgIHRoaXMuZW5naW5lLnNldFNjaXNzb3Ioc2Npc3Nvcik7XG4gICAgLy8gICByZXR1cm4gdGhpcztcbiAgICAvLyB9XG5cbiAgfSwge1xuICAgIGtleTogXCJzZXRTaXplXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldFNpemUoX3JlZikge1xuICAgICAgdmFyIHdpZHRoID0gX3JlZi53aWR0aCxcbiAgICAgICAgICBoZWlnaHQgPSBfcmVmLmhlaWdodDtcbiAgICAgIHZhciBjYW52YXMgPSB0aGlzLmVuZ2luZS5nZXRDYW52YXMoKTtcbiAgICAgIHRoaXMuc2l6ZSA9IHtcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgfTtcbiAgICAgIGNhbnZhcy53aWR0aCA9IHdpZHRoO1xuICAgICAgY2FudmFzLmhlaWdodCA9IGhlaWdodDtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRTaXplXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFNpemUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5zaXplO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBSZW5kZXJlcjtcbn0oKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImVuZ2luZVwiLCBbX2RlYzJdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSwgX2Rlc2NyaXB0b3IyID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJzaGFkZXJNb2R1bGVcIiwgW19kZWMzXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMyA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiY29uZmlnU2VydmljZVwiLCBbX2RlYzRdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UmVuZGVyZXIuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/Renderer.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/Scene.js":
/*!***********************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/Scene.js ***!
\***********************************************************************/
/*! exports provided: Scene */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Scene\", function() { return Scene; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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 inversify__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nvar _dec, _class, _temp;\n\n\nvar Scene = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_2__[\"injectable\"])(), _dec(_class = (_temp = /*#__PURE__*/function () {\n function Scene() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, Scene);\n\n this.entities = [];\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(Scene, [{\n key: \"getEntities\",\n value: function getEntities() {\n return this.entities;\n }\n }, {\n key: \"addRenderable\",\n value: function addRenderable(renderable) {\n this.addEntity(renderable.getEntity());\n return this;\n }\n }, {\n key: \"removeRenderable\",\n value: function removeRenderable(renderable) {\n this.removeEntity(renderable.getEntity());\n return this;\n }\n }, {\n key: \"addLight\",\n value: function addLight() {}\n }, {\n key: \"addEntity\",\n value: function addEntity(entity) {\n if (this.entities.indexOf(entity) === -1) {\n this.entities.push(entity);\n }\n\n return this;\n }\n }, {\n key: \"removeEntity\",\n value: function removeEntity(entity) {\n var index = this.entities.indexOf(entity);\n this.entities.splice(index, 1);\n return this;\n }\n }]);\n\n return Scene;\n}(), _temp)) || _class);\n//# sourceMappingURL=Scene.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL1NjZW5lLmpzPzQ5ZmMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvRTtBQUNOOztBQUU5RDs7QUFFdUM7QUFDaEMsb0JBQW9CLDREQUFVO0FBQ3JDO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL1NjZW5lLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuXG52YXIgX2RlYywgX2NsYXNzLCBfdGVtcDtcblxuaW1wb3J0IHsgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5leHBvcnQgdmFyIFNjZW5lID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMoX2NsYXNzID0gKF90ZW1wID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gU2NlbmUoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFNjZW5lKTtcblxuICAgIHRoaXMuZW50aXRpZXMgPSBbXTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhTY2VuZSwgW3tcbiAgICBrZXk6IFwiZ2V0RW50aXRpZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RW50aXRpZXMoKSB7XG4gICAgICByZXR1cm4gdGhpcy5lbnRpdGllcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiYWRkUmVuZGVyYWJsZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhZGRSZW5kZXJhYmxlKHJlbmRlcmFibGUpIHtcbiAgICAgIHRoaXMuYWRkRW50aXR5KHJlbmRlcmFibGUuZ2V0RW50aXR5KCkpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbW92ZVJlbmRlcmFibGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVtb3ZlUmVuZGVyYWJsZShyZW5kZXJhYmxlKSB7XG4gICAgICB0aGlzLnJlbW92ZUVudGl0eShyZW5kZXJhYmxlLmdldEVudGl0eSgpKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJhZGRMaWdodFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhZGRMaWdodCgpIHt9XG4gIH0sIHtcbiAgICBrZXk6IFwiYWRkRW50aXR5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGFkZEVudGl0eShlbnRpdHkpIHtcbiAgICAgIGlmICh0aGlzLmVudGl0aWVzLmluZGV4T2YoZW50aXR5KSA9PT0gLTEpIHtcbiAgICAgICAgdGhpcy5lbnRpdGllcy5wdXNoKGVudGl0eSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW1vdmVFbnRpdHlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVtb3ZlRW50aXR5KGVudGl0eSkge1xuICAgICAgdmFyIGluZGV4ID0gdGhpcy5lbnRpdGllcy5pbmRleE9mKGVudGl0eSk7XG4gICAgICB0aGlzLmVudGl0aWVzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gU2NlbmU7XG59KCksIF90ZW1wKSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVNjZW5lLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/Scene.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/View.js":
/*!**********************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/View.js ***!
\**********************************************************************/
/*! exports provided: View */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"View\", function() { return View; });\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__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@7.16.3@@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@7.16.3@@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_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_6__);\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _class, _class2, _descriptor, _temp;\n\n\n\nvar View = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].Systems), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"named\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].RendererSystem), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function View() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, View);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, \"rendererSystem\", _descriptor, this);\n\n this.camera = void 0;\n this.scene = void 0;\n this.viewport = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n this.clearColor = [1, 1, 1, 1];\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(View, [{\n key: \"getCamera\",\n value: function getCamera() {\n return this.camera;\n }\n }, {\n key: \"getScene\",\n value: function getScene() {\n return this.scene;\n }\n }, {\n key: \"getViewport\",\n value: function getViewport() {\n return this.viewport;\n }\n }, {\n key: \"getClearColor\",\n value: function getClearColor() {\n return this.clearColor;\n }\n }, {\n key: \"setCamera\",\n value: function setCamera(camera) {\n this.camera = camera;\n return this;\n }\n }, {\n key: \"setScene\",\n value: function setScene(scene) {\n this.scene = scene;\n return this;\n }\n }, {\n key: \"setViewport\",\n value: function setViewport(viewport) {\n this.viewport = viewport;\n return this;\n }\n }, {\n key: \"setClearColor\",\n value: function setClearColor(clearColor) {\n this.clearColor = clearColor;\n return this;\n }\n }, {\n key: \"pick\",\n value: function pick(position) {\n return this.rendererSystem.pick(position, this);\n }\n }]);\n\n return View;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class2.prototype, \"rendererSystem\", [_dec2, _dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=View.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL1ZpZXcuanM/NGM1MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMEY7QUFDdEI7QUFDTjtBQUMwQjtBQUNBOztBQUV4Rjs7QUFFaUQ7QUFDSztBQUMvQyxtQkFBbUIsNERBQVUsWUFBWSx3REFBTSxDQUFDLDhEQUFVLG1CQUFtQix1REFBSyxDQUFDLDhEQUFVO0FBQ3BHO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkIsSUFBSSx1RkFBMEI7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsMkJBQTJCLHNGQUF5QjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHVAMC41LjVAQGFudHYvZy13ZWJncHUvZXMvVmlldy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9kZWMzLCBfY2xhc3MsIF9jbGFzczIsIF9kZXNjcmlwdG9yLCBfdGVtcDtcblxuaW1wb3J0IHsgSURFTlRJRklFUiB9IGZyb20gJ0BhbnR2L2ctd2ViZ3B1LWNvcmUnO1xuaW1wb3J0IHsgaW5qZWN0LCBpbmplY3RhYmxlLCBuYW1lZCB9IGZyb20gJ2ludmVyc2lmeSc7XG5leHBvcnQgdmFyIFZpZXcgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoSURFTlRJRklFUi5TeXN0ZW1zKSwgX2RlYzMgPSBuYW1lZChJREVOVElGSUVSLlJlbmRlcmVyU3lzdGVtKSwgX2RlYyhfY2xhc3MgPSAoX2NsYXNzMiA9IChfdGVtcCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFZpZXcoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFZpZXcpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJyZW5kZXJlclN5c3RlbVwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG5cbiAgICB0aGlzLmNhbWVyYSA9IHZvaWQgMDtcbiAgICB0aGlzLnNjZW5lID0gdm9pZCAwO1xuICAgIHRoaXMudmlld3BvcnQgPSB7XG4gICAgICB4OiAwLFxuICAgICAgeTogMCxcbiAgICAgIHdpZHRoOiAwLFxuICAgICAgaGVpZ2h0OiAwXG4gICAgfTtcbiAgICB0aGlzLmNsZWFyQ29sb3IgPSBbMSwgMSwgMSwgMV07XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoVmlldywgW3tcbiAgICBrZXk6IFwiZ2V0Q2FtZXJhXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldENhbWVyYSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmNhbWVyYTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0U2NlbmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0U2NlbmUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5zY2VuZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Vmlld3BvcnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Vmlld3BvcnQoKSB7XG4gICAgICByZXR1cm4gdGhpcy52aWV3cG9ydDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Q2xlYXJDb2xvclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDbGVhckNvbG9yKCkge1xuICAgICAgcmV0dXJuIHRoaXMuY2xlYXJDb2xvcjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0Q2FtZXJhXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldENhbWVyYShjYW1lcmEpIHtcbiAgICAgIHRoaXMuY2FtZXJhID0gY2FtZXJhO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFNjZW5lXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldFNjZW5lKHNjZW5lKSB7XG4gICAgICB0aGlzLnNjZW5lID0gc2NlbmU7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0Vmlld3BvcnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0Vmlld3BvcnQodmlld3BvcnQpIHtcbiAgICAgIHRoaXMudmlld3BvcnQgPSB2aWV3cG9ydDtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRDbGVhckNvbG9yXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldENsZWFyQ29sb3IoY2xlYXJDb2xvcikge1xuICAgICAgdGhpcy5jbGVhckNvbG9yID0gY2xlYXJDb2xvcjtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwaWNrXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBpY2socG9zaXRpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLnJlbmRlcmVyU3lzdGVtLnBpY2socG9zaXRpb24sIHRoaXMpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBWaWV3O1xufSgpLCBfdGVtcCksIChfZGVzY3JpcHRvciA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwicmVuZGVyZXJTeXN0ZW1cIiwgW19kZWMyLCBfZGVjM10sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pKSwgX2NsYXNzMikpIHx8IF9jbGFzcyk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1WaWV3LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/View.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/World.js":
/*!***********************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/World.js ***!
\***********************************************************************/
/*! exports provided: World */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"World\", function() { return World; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__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@7.16.3@@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@7.16.3@@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_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__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@7.16.3@@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@7.16.3@@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_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var _antv_g_webgpu_engine__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @antv/g-webgpu-engine */ \"./node_modules/_@antv_g-webgpu-engine@0.5.6@@antv/g-webgpu-engine/es/index.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @webgpu/types/dist/constants */ \"./node_modules/_@webgpu_types@0.0.31@@webgpu/types/dist/constants.js\");\n/* harmony import */ var _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _camera_Camera__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./camera/Camera */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/camera/Camera.js\");\n/* harmony import */ var _geometry__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./geometry */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/index.js\");\n/* harmony import */ var _geometry_Box__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./geometry/Box */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/Box.js\");\n/* harmony import */ var _geometry_Merged__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./geometry/Merged */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/Merged.js\");\n/* harmony import */ var _geometry_Plane__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./geometry/Plane */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/Plane.js\");\n/* harmony import */ var _geometry_Sphere__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./geometry/Sphere */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/Sphere.js\");\n/* harmony import */ var _Kernel__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./Kernel */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/Kernel.js\");\n/* harmony import */ var _material__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./material */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/material/index.js\");\n/* harmony import */ var _material_basic__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./material/basic */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/material/basic/index.js\");\n/* harmony import */ var _renderable_grid__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./renderable/grid */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/grid/index.js\");\n/* harmony import */ var _renderable_line__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./renderable/line */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/line/index.js\");\n/* harmony import */ var _renderable_point__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./renderable/point */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/point/index.js\");\n/* harmony import */ var _renderable_Renderable__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./renderable/Renderable */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/Renderable.js\");\n/* harmony import */ var _Renderer__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./Renderer */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/Renderer.js\");\n/* harmony import */ var _Scene__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./Scene */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/Scene.js\");\n/* harmony import */ var _texture_Cache__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./texture/Cache */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/texture/Cache.js\");\n/* harmony import */ var _texture_Texture2D__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./texture/Texture2D */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/texture/Texture2D.js\");\n/* harmony import */ var _utils_canvas__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./utils/canvas */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/canvas.js\");\n/* harmony import */ var _View__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./View */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/View.js\");\n\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _class, _class2, _descriptor, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n// tslint:disable-next-line:no-reference\n/// \n\n // tslint:disable-next-line:no-submodule-imports\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar World = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].ConfigService), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function World() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default()(this, World);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, \"configService\", _descriptor, this);\n\n this.container = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default()(World, [{\n key: \"getEngine\",\n value: function () {\n var _getEngine = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var engine, _this$configService$g, canvas, engineOptions;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n engine = this.container.get(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].RenderEngine);\n _this$configService$g = this.configService.get(), canvas = _this$configService$g.canvas, engineOptions = _this$configService$g.engineOptions;\n _context.next = 4;\n return engine.init(_objectSpread({\n canvas: canvas || Object(_utils_canvas__WEBPACK_IMPORTED_MODULE_29__[\"createCanvas\"])(),\n swapChainFormat: _webgpu_types_dist_constants__WEBPACK_IMPORTED_MODULE_10__[\"TextureFormat\"].BGRA8Unorm,\n antialiasing: false\n }, engineOptions));\n\n case 4:\n return _context.abrupt(\"return\", engine);\n\n case 5:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getEngine() {\n return _getEngine.apply(this, arguments);\n }\n\n return getEngine;\n }()\n /**\n * get transform component\n * @param entity\n */\n\n }, {\n key: \"getTransformComponent\",\n value: function getTransformComponent(entity) {\n var manager = this.container.get(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].TransformComponentManager);\n return manager.getComponentByEntity(entity);\n }\n }, {\n key: \"getMeshComponent\",\n value: function getMeshComponent(entity) {\n var manager = this.container.get(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].MeshComponentManager);\n return manager.getComponentByEntity(entity);\n }\n }, {\n key: \"setConfig\",\n value: function setConfig(config) {\n this.configService.set(config);\n }\n }, {\n key: \"setContainer\",\n value: function setContainer(container) {\n this.container = container;\n }\n }, {\n key: \"getContainer\",\n value: function getContainer() {\n return this.container;\n }\n }, {\n key: \"createEntity\",\n value: function createEntity() {\n return Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"createEntity\"])();\n }\n }, {\n key: \"createScene\",\n value: function createScene() {\n return this.container.get(_Scene__WEBPACK_IMPORTED_MODULE_26__[\"Scene\"]);\n }\n }, {\n key: \"createCamera\",\n value: function createCamera() {\n return this.container.get(_camera_Camera__WEBPACK_IMPORTED_MODULE_12__[\"Camera\"]);\n }\n }, {\n key: \"createView\",\n value: function createView() {\n return this.container.get(_View__WEBPACK_IMPORTED_MODULE_30__[\"View\"]);\n } // public createLight(type: string,) {\n // return this.container.getNamed(IDENTIFIER.Light, type)\n // }\n\n }, {\n key: \"createRenderable\",\n value: function createRenderable(type, config) {\n var renderable = type ? this.container.getNamed(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Renderable, type) : this.container.get(_renderable_Renderable__WEBPACK_IMPORTED_MODULE_24__[\"Renderable\"]);\n\n var entity = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"createEntity\"])();\n\n renderable.setConfig(config || {});\n renderable.setEntity(entity);\n return renderable;\n }\n }, {\n key: \"createGeometry\",\n value: function createGeometry(type, config) {\n var geometry = this.container.getNamed(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Geometry, type);\n\n var entity = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"createEntity\"])();\n\n geometry.setConfig(config || {});\n geometry.setEntity(entity);\n return geometry.getComponent();\n }\n }, {\n key: \"createMaterial\",\n value: function createMaterial(type, config) {\n var material = this.container.getNamed(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Material, type);\n\n var entity = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"createEntity\"])();\n\n material.setConfig(config || {});\n material.setEntity(entity, type);\n return material.getComponent();\n }\n }, {\n key: \"createTexture2D\",\n value: function createTexture2D(config) {\n var texture = this.container.get(_texture_Texture2D__WEBPACK_IMPORTED_MODULE_28__[\"Texture2D\"]);\n texture.setConfig(config);\n return texture;\n }\n }, {\n key: \"createBufferGeometry\",\n value: function createBufferGeometry(params) {\n var geometrySystem = this.container.getNamed(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Systems, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].GeometrySystem);\n return geometrySystem.createBufferGeometry(params);\n }\n }, {\n key: \"createInstancedBufferGeometry\",\n value: function createInstancedBufferGeometry(params) {\n var geometrySystem = this.container.getNamed(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Systems, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].GeometrySystem);\n return geometrySystem.createInstancedBufferGeometry(params);\n }\n }, {\n key: \"createShaderMaterial\",\n value: function createShaderMaterial(params) {\n var materialSystem = this.container.getNamed(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Systems, _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].MaterialSystem);\n return materialSystem.createShaderMaterial(params);\n }\n }, {\n key: \"createKernel\",\n value: function createKernel(precompiledBundle) {\n var kernel = this.container.get(_Kernel__WEBPACK_IMPORTED_MODULE_18__[\"Kernel\"]);\n\n if (typeof precompiledBundle === 'string') {\n kernel.setBundle(JSON.parse(precompiledBundle));\n } else {\n kernel.setBundle(precompiledBundle);\n }\n\n kernel.init();\n return kernel;\n }\n }, {\n key: \"createRenderer\",\n value: function createRenderer() {\n var renderer = this.container.get(_Renderer__WEBPACK_IMPORTED_MODULE_25__[\"Renderer\"]);\n renderer.container = this.container;\n renderer.init();\n return renderer;\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var systems = this.container.getAll(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Systems);\n systems.forEach(function (system) {\n if (system.tearDown) {\n system.tearDown();\n }\n });\n var engine = this.container.get(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].RenderEngine);\n engine.destroy();\n var interactor = this.container.get(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].InteractorService);\n interactor.destroy();\n }\n }], [{\n key: \"create\",\n value: function create() {\n var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var worldContainer = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"createWorldContainer\"])(); // bind render engine, fallback to WebGL\n\n var engineClazz = !navigator.gpu ? _antv_g_webgpu_engine__WEBPACK_IMPORTED_MODULE_9__[\"WebGLEngine\"] : _antv_g_webgpu_engine__WEBPACK_IMPORTED_MODULE_9__[\"WebGPUEngine\"];\n\n if (!worldContainer.isBound(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].RenderEngine)) {\n worldContainer.bind(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].RenderEngine) // @ts-ignore\n .to(engineClazz).inSingletonScope();\n }\n\n worldContainer.bind(_Renderer__WEBPACK_IMPORTED_MODULE_25__[\"Renderer\"]).toSelf();\n worldContainer.bind(_Kernel__WEBPACK_IMPORTED_MODULE_18__[\"Kernel\"]).toSelf();\n worldContainer.bind(_renderable_Renderable__WEBPACK_IMPORTED_MODULE_24__[\"Renderable\"]).toSelf();\n worldContainer.bind(_View__WEBPACK_IMPORTED_MODULE_30__[\"View\"]).toSelf();\n worldContainer.bind(_camera_Camera__WEBPACK_IMPORTED_MODULE_12__[\"Camera\"]).toSelf();\n worldContainer.bind(_Scene__WEBPACK_IMPORTED_MODULE_26__[\"Scene\"]).toSelf();\n worldContainer.bind(World).toSelf();\n worldContainer.bind(_texture_Cache__WEBPACK_IMPORTED_MODULE_27__[\"TextureCache\"]).toSelf();\n worldContainer.bind(_texture_Texture2D__WEBPACK_IMPORTED_MODULE_28__[\"Texture2D\"]).toSelf(); // bind geometries\n\n worldContainer.bind(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Geometry).to(_geometry_Box__WEBPACK_IMPORTED_MODULE_14__[\"Box\"]).whenTargetNamed(_geometry__WEBPACK_IMPORTED_MODULE_13__[\"Geometry\"].BOX);\n worldContainer.bind(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Geometry).to(_geometry_Sphere__WEBPACK_IMPORTED_MODULE_17__[\"Sphere\"]).whenTargetNamed(_geometry__WEBPACK_IMPORTED_MODULE_13__[\"Geometry\"].SPHERE);\n worldContainer.bind(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Geometry).to(_geometry_Plane__WEBPACK_IMPORTED_MODULE_16__[\"Plane\"]).whenTargetNamed(_geometry__WEBPACK_IMPORTED_MODULE_13__[\"Geometry\"].PLANE);\n worldContainer.bind(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Geometry).to(_geometry_Merged__WEBPACK_IMPORTED_MODULE_15__[\"Merged\"]).whenTargetNamed(_geometry__WEBPACK_IMPORTED_MODULE_13__[\"Geometry\"].MERGED); // bind materials\n\n worldContainer.bind(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Material).to(_material_basic__WEBPACK_IMPORTED_MODULE_20__[\"Basic\"]).whenTargetNamed(_material__WEBPACK_IMPORTED_MODULE_19__[\"Material\"].BASIC); // bind renderables\n\n worldContainer.bind(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Renderable).to(_renderable_point__WEBPACK_IMPORTED_MODULE_23__[\"Point\"]).whenTargetNamed(_renderable_Renderable__WEBPACK_IMPORTED_MODULE_24__[\"Renderable\"].POINT);\n worldContainer.bind(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Renderable).to(_renderable_line__WEBPACK_IMPORTED_MODULE_22__[\"Line\"]).whenTargetNamed(_renderable_Renderable__WEBPACK_IMPORTED_MODULE_24__[\"Renderable\"].LINE);\n worldContainer.bind(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].Renderable).to(_renderable_grid__WEBPACK_IMPORTED_MODULE_21__[\"Grid\"]).whenTargetNamed(_renderable_Renderable__WEBPACK_IMPORTED_MODULE_24__[\"Renderable\"].GRID);\n var world = worldContainer.get(World);\n world.setContainer(worldContainer);\n world.setConfig(config);\n return world;\n }\n }]);\n\n return World;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default()(_class2.prototype, \"configService\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=World.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL1dvcmxkLmpzPzQ0YTYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkQ7QUFDTztBQUNJO0FBQ2tCO0FBQ3RCO0FBQ047QUFDMEI7QUFDQTs7QUFFeEY7O0FBRUEsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsdURBQXVELENBQUMsNEVBQWUsMkJBQTJCLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLGlEQUFpRCxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVwaEI7QUFDQTtBQUNzRztBQUNwQzs7QUFFRjtBQUNqQjtBQUNOO0FBQ0g7QUFDRDtBQUNNO0FBQ0Y7QUFDRTtBQUNUO0FBQ0k7QUFDRztBQUNBO0FBQ0E7QUFDRTtBQUNVO0FBQ2Y7QUFDTjtBQUNlO0FBQ0M7QUFDRjtBQUNoQjtBQUN2QixvQkFBb0IsNkRBQVUsWUFBWSx5REFBTSxDQUFDLDhEQUFVO0FBQ2xFO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkIsSUFBSSx1RkFBMEI7O0FBRTlCO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQSx1QkFBdUIsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQzFFOztBQUVBLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBLDRDQUE0Qyw4REFBVTtBQUN0RDtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsbUVBQVk7QUFDaEQsbUNBQW1DLDJFQUE2QjtBQUNoRTtBQUNBLGlCQUFpQjs7QUFFakI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsdUNBQXVDLDhEQUFVO0FBQ2pEO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHVDQUF1Qyw4REFBVTtBQUNqRDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxhQUFhLHdFQUFhO0FBQzFCO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxnQ0FBZ0MsNkNBQUs7QUFDckM7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGdDQUFnQyxzREFBTTtBQUN0QztBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsZ0NBQWdDLDJDQUFJO0FBQ3BDLEtBQUs7QUFDTDtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0Esc0RBQXNELDhEQUFVLHdDQUF3QyxrRUFBVTs7QUFFbEgsbUJBQW1CLHdFQUFhOztBQUVoQyx1Q0FBdUM7QUFDdkM7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSw2Q0FBNkMsOERBQVU7O0FBRXZELG1CQUFtQix3RUFBYTs7QUFFaEMscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsNkNBQTZDLDhEQUFVOztBQUV2RCxtQkFBbUIsd0VBQWE7O0FBRWhDLHFDQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHVDQUF1Qyw2REFBUztBQUNoRDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLG1EQUFtRCw4REFBVSxVQUFVLDhEQUFVO0FBQ2pGO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLG1EQUFtRCw4REFBVSxVQUFVLDhEQUFVO0FBQ2pGO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLG1EQUFtRCw4REFBVSxVQUFVLDhEQUFVO0FBQ2pGO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHNDQUFzQywrQ0FBTTs7QUFFNUM7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0Esd0NBQXdDLG1EQUFRO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSwwQ0FBMEMsOERBQVU7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1Asc0NBQXNDLDhEQUFVO0FBQ2hEO0FBQ0EsMENBQTBDLDhEQUFVO0FBQ3BEO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLGdGQUFvQixHQUFHOztBQUVsRCx5Q0FBeUMsaUVBQVcsR0FBRyxrRUFBWTs7QUFFbkUsa0NBQWtDLDhEQUFVO0FBQzVDLDRCQUE0Qiw4REFBVTtBQUN0QztBQUNBOztBQUVBLDBCQUEwQixtREFBUTtBQUNsQywwQkFBMEIsK0NBQU07QUFDaEMsMEJBQTBCLGtFQUFVO0FBQ3BDLDBCQUEwQiwyQ0FBSTtBQUM5QiwwQkFBMEIsc0RBQU07QUFDaEMsMEJBQTBCLDZDQUFLO0FBQy9CO0FBQ0EsMEJBQTBCLDREQUFZO0FBQ3RDLDBCQUEwQiw2REFBUyxXQUFXOztBQUU5QywwQkFBMEIsOERBQVUsY0FBYyxrREFBRyxrQkFBa0IsbURBQVE7QUFDL0UsMEJBQTBCLDhEQUFVLGNBQWMsd0RBQU0sa0JBQWtCLG1EQUFRO0FBQ2xGLDBCQUEwQiw4REFBVSxjQUFjLHNEQUFLLGtCQUFrQixtREFBUTtBQUNqRiwwQkFBMEIsOERBQVUsY0FBYyx3REFBTSxrQkFBa0IsbURBQVEsU0FBUzs7QUFFM0YsMEJBQTBCLDhEQUFVLGNBQWMsc0RBQUssa0JBQWtCLG1EQUFRLFFBQVE7O0FBRXpGLDBCQUEwQiw4REFBVSxnQkFBZ0Isd0RBQUssa0JBQWtCLGtFQUFVO0FBQ3JGLDBCQUEwQiw4REFBVSxnQkFBZ0Isc0RBQUksa0JBQWtCLGtFQUFVO0FBQ3BGLDBCQUEwQiw4REFBVSxnQkFBZ0Isc0RBQUksa0JBQWtCLGtFQUFVO0FBQ3BGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQywyQkFBMkIsc0ZBQXlCO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdUAwLjUuNUBAYW50di9nLXdlYmdwdS9lcy9Xb3JsZC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfcmVnZW5lcmF0b3JSdW50aW1lIGZyb20gXCJAYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF90ZW1wO1xuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLXJlZmVyZW5jZVxuLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9Ad2ViZ3B1L3R5cGVzL2Rpc3QvaW5kZXguZC50c1wiIC8+XG5pbXBvcnQgeyBjcmVhdGVFbnRpdHkgYXMgX2NyZWF0ZUVudGl0eSwgY3JlYXRlV29ybGRDb250YWluZXIsIElERU5USUZJRVIgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCB7IFdlYkdMRW5naW5lLCBXZWJHUFVFbmdpbmUgfSBmcm9tICdAYW50di9nLXdlYmdwdS1lbmdpbmUnOyAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tc3VibW9kdWxlLWltcG9ydHNcblxuaW1wb3J0ICogYXMgV2ViR1BVQ29uc3RhbnRzIGZyb20gJ0B3ZWJncHUvdHlwZXMvZGlzdC9jb25zdGFudHMnO1xuaW1wb3J0IHsgaW5qZWN0LCBpbmplY3RhYmxlIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCB7IENhbWVyYSB9IGZyb20gJy4vY2FtZXJhL0NhbWVyYSc7XG5pbXBvcnQgeyBHZW9tZXRyeSB9IGZyb20gJy4vZ2VvbWV0cnknO1xuaW1wb3J0IHsgQm94IH0gZnJvbSAnLi9nZW9tZXRyeS9Cb3gnO1xuaW1wb3J0IHsgTWVyZ2VkIH0gZnJvbSAnLi9nZW9tZXRyeS9NZXJnZWQnO1xuaW1wb3J0IHsgUGxhbmUgfSBmcm9tICcuL2dlb21ldHJ5L1BsYW5lJztcbmltcG9ydCB7IFNwaGVyZSB9IGZyb20gJy4vZ2VvbWV0cnkvU3BoZXJlJztcbmltcG9ydCB7IEtlcm5lbCB9IGZyb20gJy4vS2VybmVsJztcbmltcG9ydCB7IE1hdGVyaWFsIH0gZnJvbSAnLi9tYXRlcmlhbCc7XG5pbXBvcnQgeyBCYXNpYyB9IGZyb20gJy4vbWF0ZXJpYWwvYmFzaWMnO1xuaW1wb3J0IHsgR3JpZCB9IGZyb20gJy4vcmVuZGVyYWJsZS9ncmlkJztcbmltcG9ydCB7IExpbmUgfSBmcm9tICcuL3JlbmRlcmFibGUvbGluZSc7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4vcmVuZGVyYWJsZS9wb2ludCc7XG5pbXBvcnQgeyBSZW5kZXJhYmxlIH0gZnJvbSAnLi9yZW5kZXJhYmxlL1JlbmRlcmFibGUnO1xuaW1wb3J0IHsgUmVuZGVyZXIgfSBmcm9tICcuL1JlbmRlcmVyJztcbmltcG9ydCB7IFNjZW5lIH0gZnJvbSAnLi9TY2VuZSc7XG5pbXBvcnQgeyBUZXh0dXJlQ2FjaGUgfSBmcm9tICcuL3RleHR1cmUvQ2FjaGUnO1xuaW1wb3J0IHsgVGV4dHVyZTJEIH0gZnJvbSAnLi90ZXh0dXJlL1RleHR1cmUyRCc7XG5pbXBvcnQgeyBjcmVhdGVDYW52YXMgfSBmcm9tICcuL3V0aWxzL2NhbnZhcyc7XG5pbXBvcnQgeyBWaWV3IH0gZnJvbSAnLi9WaWV3JztcbmV4cG9ydCB2YXIgV29ybGQgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoSURFTlRJRklFUi5Db25maWdTZXJ2aWNlKSwgX2RlYyhfY2xhc3MgPSAoX2NsYXNzMiA9IChfdGVtcCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFdvcmxkKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBXb3JsZCk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcImNvbmZpZ1NlcnZpY2VcIiwgX2Rlc2NyaXB0b3IsIHRoaXMpO1xuXG4gICAgdGhpcy5jb250YWluZXIgPSB2b2lkIDA7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoV29ybGQsIFt7XG4gICAga2V5OiBcImdldEVuZ2luZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2dldEVuZ2luZSA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoKSB7XG4gICAgICAgIHZhciBlbmdpbmUsIF90aGlzJGNvbmZpZ1NlcnZpY2UkZywgY2FudmFzLCBlbmdpbmVPcHRpb25zO1xuXG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgZW5naW5lID0gdGhpcy5jb250YWluZXIuZ2V0KElERU5USUZJRVIuUmVuZGVyRW5naW5lKTtcbiAgICAgICAgICAgICAgICBfdGhpcyRjb25maWdTZXJ2aWNlJGcgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCksIGNhbnZhcyA9IF90aGlzJGNvbmZpZ1NlcnZpY2UkZy5jYW52YXMsIGVuZ2luZU9wdGlvbnMgPSBfdGhpcyRjb25maWdTZXJ2aWNlJGcuZW5naW5lT3B0aW9ucztcbiAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gNDtcbiAgICAgICAgICAgICAgICByZXR1cm4gZW5naW5lLmluaXQoX29iamVjdFNwcmVhZCh7XG4gICAgICAgICAgICAgICAgICBjYW52YXM6IGNhbnZhcyB8fCBjcmVhdGVDYW52YXMoKSxcbiAgICAgICAgICAgICAgICAgIHN3YXBDaGFpbkZvcm1hdDogV2ViR1BVQ29uc3RhbnRzLlRleHR1cmVGb3JtYXQuQkdSQThVbm9ybSxcbiAgICAgICAgICAgICAgICAgIGFudGlhbGlhc2luZzogZmFsc2VcbiAgICAgICAgICAgICAgICB9LCBlbmdpbmVPcHRpb25zKSk7XG5cbiAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5hYnJ1cHQoXCJyZXR1cm5cIiwgZW5naW5lKTtcblxuICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZSwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGdldEVuZ2luZSgpIHtcbiAgICAgICAgcmV0dXJuIF9nZXRFbmdpbmUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGdldEVuZ2luZTtcbiAgICB9KClcbiAgICAvKipcbiAgICAgKiBnZXQgdHJhbnNmb3JtIGNvbXBvbmVudFxuICAgICAqIEBwYXJhbSBlbnRpdHlcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImdldFRyYW5zZm9ybUNvbXBvbmVudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRUcmFuc2Zvcm1Db21wb25lbnQoZW50aXR5KSB7XG4gICAgICB2YXIgbWFuYWdlciA9IHRoaXMuY29udGFpbmVyLmdldChJREVOVElGSUVSLlRyYW5zZm9ybUNvbXBvbmVudE1hbmFnZXIpO1xuICAgICAgcmV0dXJuIG1hbmFnZXIuZ2V0Q29tcG9uZW50QnlFbnRpdHkoZW50aXR5KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0TWVzaENvbXBvbmVudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRNZXNoQ29tcG9uZW50KGVudGl0eSkge1xuICAgICAgdmFyIG1hbmFnZXIgPSB0aGlzLmNvbnRhaW5lci5nZXQoSURFTlRJRklFUi5NZXNoQ29tcG9uZW50TWFuYWdlcik7XG4gICAgICByZXR1cm4gbWFuYWdlci5nZXRDb21wb25lbnRCeUVudGl0eShlbnRpdHkpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRDb25maWdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0Q29uZmlnKGNvbmZpZykge1xuICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLnNldChjb25maWcpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRDb250YWluZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0Q29udGFpbmVyKGNvbnRhaW5lcikge1xuICAgICAgdGhpcy5jb250YWluZXIgPSBjb250YWluZXI7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldENvbnRhaW5lclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDb250YWluZXIoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb250YWluZXI7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNyZWF0ZUVudGl0eVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVFbnRpdHkoKSB7XG4gICAgICByZXR1cm4gX2NyZWF0ZUVudGl0eSgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVTY2VuZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVTY2VuZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnRhaW5lci5nZXQoU2NlbmUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVDYW1lcmFcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlQ2FtZXJhKCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29udGFpbmVyLmdldChDYW1lcmEpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVWaWV3XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZVZpZXcoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb250YWluZXIuZ2V0KFZpZXcpO1xuICAgIH0gLy8gcHVibGljIGNyZWF0ZUxpZ2h0KHR5cGU6IHN0cmluZywpIHtcbiAgICAvLyAgIHJldHVybiB0aGlzLmNvbnRhaW5lci5nZXROYW1lZChJREVOVElGSUVSLkxpZ2h0LCB0eXBlKVxuICAgIC8vIH1cblxuICB9LCB7XG4gICAga2V5OiBcImNyZWF0ZVJlbmRlcmFibGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlUmVuZGVyYWJsZSh0eXBlLCBjb25maWcpIHtcbiAgICAgIHZhciByZW5kZXJhYmxlID0gdHlwZSA/IHRoaXMuY29udGFpbmVyLmdldE5hbWVkKElERU5USUZJRVIuUmVuZGVyYWJsZSwgdHlwZSkgOiB0aGlzLmNvbnRhaW5lci5nZXQoUmVuZGVyYWJsZSk7XG5cbiAgICAgIHZhciBlbnRpdHkgPSBfY3JlYXRlRW50aXR5KCk7XG5cbiAgICAgIHJlbmRlcmFibGUuc2V0Q29uZmlnKGNvbmZpZyB8fCB7fSk7XG4gICAgICByZW5kZXJhYmxlLnNldEVudGl0eShlbnRpdHkpO1xuICAgICAgcmV0dXJuIHJlbmRlcmFibGU7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNyZWF0ZUdlb21ldHJ5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZUdlb21ldHJ5KHR5cGUsIGNvbmZpZykge1xuICAgICAgdmFyIGdlb21ldHJ5ID0gdGhpcy5jb250YWluZXIuZ2V0TmFtZWQoSURFTlRJRklFUi5HZW9tZXRyeSwgdHlwZSk7XG5cbiAgICAgIHZhciBlbnRpdHkgPSBfY3JlYXRlRW50aXR5KCk7XG5cbiAgICAgIGdlb21ldHJ5LnNldENvbmZpZyhjb25maWcgfHwge30pO1xuICAgICAgZ2VvbWV0cnkuc2V0RW50aXR5KGVudGl0eSk7XG4gICAgICByZXR1cm4gZ2VvbWV0cnkuZ2V0Q29tcG9uZW50KCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNyZWF0ZU1hdGVyaWFsXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZU1hdGVyaWFsKHR5cGUsIGNvbmZpZykge1xuICAgICAgdmFyIG1hdGVyaWFsID0gdGhpcy5jb250YWluZXIuZ2V0TmFtZWQoSURFTlRJRklFUi5NYXRlcmlhbCwgdHlwZSk7XG5cbiAgICAgIHZhciBlbnRpdHkgPSBfY3JlYXRlRW50aXR5KCk7XG5cbiAgICAgIG1hdGVyaWFsLnNldENvbmZpZyhjb25maWcgfHwge30pO1xuICAgICAgbWF0ZXJpYWwuc2V0RW50aXR5KGVudGl0eSwgdHlwZSk7XG4gICAgICByZXR1cm4gbWF0ZXJpYWwuZ2V0Q29tcG9uZW50KCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNyZWF0ZVRleHR1cmUyRFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVUZXh0dXJlMkQoY29uZmlnKSB7XG4gICAgICB2YXIgdGV4dHVyZSA9IHRoaXMuY29udGFpbmVyLmdldChUZXh0dXJlMkQpO1xuICAgICAgdGV4dHVyZS5zZXRDb25maWcoY29uZmlnKTtcbiAgICAgIHJldHVybiB0ZXh0dXJlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVCdWZmZXJHZW9tZXRyeVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVCdWZmZXJHZW9tZXRyeShwYXJhbXMpIHtcbiAgICAgIHZhciBnZW9tZXRyeVN5c3RlbSA9IHRoaXMuY29udGFpbmVyLmdldE5hbWVkKElERU5USUZJRVIuU3lzdGVtcywgSURFTlRJRklFUi5HZW9tZXRyeVN5c3RlbSk7XG4gICAgICByZXR1cm4gZ2VvbWV0cnlTeXN0ZW0uY3JlYXRlQnVmZmVyR2VvbWV0cnkocGFyYW1zKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY3JlYXRlSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkocGFyYW1zKSB7XG4gICAgICB2YXIgZ2VvbWV0cnlTeXN0ZW0gPSB0aGlzLmNvbnRhaW5lci5nZXROYW1lZChJREVOVElGSUVSLlN5c3RlbXMsIElERU5USUZJRVIuR2VvbWV0cnlTeXN0ZW0pO1xuICAgICAgcmV0dXJuIGdlb21ldHJ5U3lzdGVtLmNyZWF0ZUluc3RhbmNlZEJ1ZmZlckdlb21ldHJ5KHBhcmFtcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNyZWF0ZVNoYWRlck1hdGVyaWFsXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZVNoYWRlck1hdGVyaWFsKHBhcmFtcykge1xuICAgICAgdmFyIG1hdGVyaWFsU3lzdGVtID0gdGhpcy5jb250YWluZXIuZ2V0TmFtZWQoSURFTlRJRklFUi5TeXN0ZW1zLCBJREVOVElGSUVSLk1hdGVyaWFsU3lzdGVtKTtcbiAgICAgIHJldHVybiBtYXRlcmlhbFN5c3RlbS5jcmVhdGVTaGFkZXJNYXRlcmlhbChwYXJhbXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVLZXJuZWxcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlS2VybmVsKHByZWNvbXBpbGVkQnVuZGxlKSB7XG4gICAgICB2YXIga2VybmVsID0gdGhpcy5jb250YWluZXIuZ2V0KEtlcm5lbCk7XG5cbiAgICAgIGlmICh0eXBlb2YgcHJlY29tcGlsZWRCdW5kbGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGtlcm5lbC5zZXRCdW5kbGUoSlNPTi5wYXJzZShwcmVjb21waWxlZEJ1bmRsZSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAga2VybmVsLnNldEJ1bmRsZShwcmVjb21waWxlZEJ1bmRsZSk7XG4gICAgICB9XG5cbiAgICAgIGtlcm5lbC5pbml0KCk7XG4gICAgICByZXR1cm4ga2VybmVsO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVSZW5kZXJlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVSZW5kZXJlcigpIHtcbiAgICAgIHZhciByZW5kZXJlciA9IHRoaXMuY29udGFpbmVyLmdldChSZW5kZXJlcik7XG4gICAgICByZW5kZXJlci5jb250YWluZXIgPSB0aGlzLmNvbnRhaW5lcjtcbiAgICAgIHJlbmRlcmVyLmluaXQoKTtcbiAgICAgIHJldHVybiByZW5kZXJlcjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGVzdHJveVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgICAgdmFyIHN5c3RlbXMgPSB0aGlzLmNvbnRhaW5lci5nZXRBbGwoSURFTlRJRklFUi5TeXN0ZW1zKTtcbiAgICAgIHN5c3RlbXMuZm9yRWFjaChmdW5jdGlvbiAoc3lzdGVtKSB7XG4gICAgICAgIGlmIChzeXN0ZW0udGVhckRvd24pIHtcbiAgICAgICAgICBzeXN0ZW0udGVhckRvd24oKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB2YXIgZW5naW5lID0gdGhpcy5jb250YWluZXIuZ2V0KElERU5USUZJRVIuUmVuZGVyRW5naW5lKTtcbiAgICAgIGVuZ2luZS5kZXN0cm95KCk7XG4gICAgICB2YXIgaW50ZXJhY3RvciA9IHRoaXMuY29udGFpbmVyLmdldChJREVOVElGSUVSLkludGVyYWN0b3JTZXJ2aWNlKTtcbiAgICAgIGludGVyYWN0b3IuZGVzdHJveSgpO1xuICAgIH1cbiAgfV0sIFt7XG4gICAga2V5OiBcImNyZWF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGUoKSB7XG4gICAgICB2YXIgY29uZmlnID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB7fTtcbiAgICAgIHZhciB3b3JsZENvbnRhaW5lciA9IGNyZWF0ZVdvcmxkQ29udGFpbmVyKCk7IC8vIGJpbmQgcmVuZGVyIGVuZ2luZSwgZmFsbGJhY2sgdG8gV2ViR0xcblxuICAgICAgdmFyIGVuZ2luZUNsYXp6ID0gIW5hdmlnYXRvci5ncHUgPyBXZWJHTEVuZ2luZSA6IFdlYkdQVUVuZ2luZTtcblxuICAgICAgaWYgKCF3b3JsZENvbnRhaW5lci5pc0JvdW5kKElERU5USUZJRVIuUmVuZGVyRW5naW5lKSkge1xuICAgICAgICB3b3JsZENvbnRhaW5lci5iaW5kKElERU5USUZJRVIuUmVuZGVyRW5naW5lKSAvLyBAdHMtaWdub3JlXG4gICAgICAgIC50byhlbmdpbmVDbGF6eikuaW5TaW5nbGV0b25TY29wZSgpO1xuICAgICAgfVxuXG4gICAgICB3b3JsZENvbnRhaW5lci5iaW5kKFJlbmRlcmVyKS50b1NlbGYoKTtcbiAgICAgIHdvcmxkQ29udGFpbmVyLmJpbmQoS2VybmVsKS50b1NlbGYoKTtcbiAgICAgIHdvcmxkQ29udGFpbmVyLmJpbmQoUmVuZGVyYWJsZSkudG9TZWxmKCk7XG4gICAgICB3b3JsZENvbnRhaW5lci5iaW5kKFZpZXcpLnRvU2VsZigpO1xuICAgICAgd29ybGRDb250YWluZXIuYmluZChDYW1lcmEpLnRvU2VsZigpO1xuICAgICAgd29ybGRDb250YWluZXIuYmluZChTY2VuZSkudG9TZWxmKCk7XG4gICAgICB3b3JsZENvbnRhaW5lci5iaW5kKFdvcmxkKS50b1NlbGYoKTtcbiAgICAgIHdvcmxkQ29udGFpbmVyLmJpbmQoVGV4dHVyZUNhY2hlKS50b1NlbGYoKTtcbiAgICAgIHdvcmxkQ29udGFpbmVyLmJpbmQoVGV4dHVyZTJEKS50b1NlbGYoKTsgLy8gYmluZCBnZW9tZXRyaWVzXG5cbiAgICAgIHdvcmxkQ29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5HZW9tZXRyeSkudG8oQm94KS53aGVuVGFyZ2V0TmFtZWQoR2VvbWV0cnkuQk9YKTtcbiAgICAgIHdvcmxkQ29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5HZW9tZXRyeSkudG8oU3BoZXJlKS53aGVuVGFyZ2V0TmFtZWQoR2VvbWV0cnkuU1BIRVJFKTtcbiAgICAgIHdvcmxkQ29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5HZW9tZXRyeSkudG8oUGxhbmUpLndoZW5UYXJnZXROYW1lZChHZW9tZXRyeS5QTEFORSk7XG4gICAgICB3b3JsZENvbnRhaW5lci5iaW5kKElERU5USUZJRVIuR2VvbWV0cnkpLnRvKE1lcmdlZCkud2hlblRhcmdldE5hbWVkKEdlb21ldHJ5Lk1FUkdFRCk7IC8vIGJpbmQgbWF0ZXJpYWxzXG5cbiAgICAgIHdvcmxkQ29udGFpbmVyLmJpbmQoSURFTlRJRklFUi5NYXRlcmlhbCkudG8oQmFzaWMpLndoZW5UYXJnZXROYW1lZChNYXRlcmlhbC5CQVNJQyk7IC8vIGJpbmQgcmVuZGVyYWJsZXNcblxuICAgICAgd29ybGRDb250YWluZXIuYmluZChJREVOVElGSUVSLlJlbmRlcmFibGUpLnRvKFBvaW50KS53aGVuVGFyZ2V0TmFtZWQoUmVuZGVyYWJsZS5QT0lOVCk7XG4gICAgICB3b3JsZENvbnRhaW5lci5iaW5kKElERU5USUZJRVIuUmVuZGVyYWJsZSkudG8oTGluZSkud2hlblRhcmdldE5hbWVkKFJlbmRlcmFibGUuTElORSk7XG4gICAgICB3b3JsZENvbnRhaW5lci5iaW5kKElERU5USUZJRVIuUmVuZGVyYWJsZSkudG8oR3JpZCkud2hlblRhcmdldE5hbWVkKFJlbmRlcmFibGUuR1JJRCk7XG4gICAgICB2YXIgd29ybGQgPSB3b3JsZENvbnRhaW5lci5nZXQoV29ybGQpO1xuICAgICAgd29ybGQuc2V0Q29udGFpbmVyKHdvcmxkQ29udGFpbmVyKTtcbiAgICAgIHdvcmxkLnNldENvbmZpZyhjb25maWcpO1xuICAgICAgcmV0dXJuIHdvcmxkO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBXb3JsZDtcbn0oKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImNvbmZpZ1NlcnZpY2VcIiwgW19kZWMyXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSkpLCBfY2xhc3MyKSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVdvcmxkLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/World.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/camera/Camera.js":
/*!*******************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/camera/Camera.js ***!
\*******************************************************************************/
/*! exports provided: CAMERA_TYPE, CAMERA_TRACKING_MODE, CAMERA_PROJECTION_MODE, Camera */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CAMERA_TYPE\", function() { return CAMERA_TYPE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CAMERA_TRACKING_MODE\", function() { return CAMERA_TRACKING_MODE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CAMERA_PROJECTION_MODE\", function() { return CAMERA_PROJECTION_MODE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Camera\", function() { return Camera; });\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__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@7.16.3@@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@7.16.3@@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_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _utils_math__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/math */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/math.js\");\n/* harmony import */ var _Landmark__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Landmark */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/camera/Landmark.js\");\n\n\n\n\n\n\nvar _dec, _dec2, _class, _class2, _descriptor, _class3, _temp;\n\n\n\n\n\n\nvar CAMERA_TYPE;\n\n(function (CAMERA_TYPE) {\n CAMERA_TYPE[\"ORBITING\"] = \"ORBITING\";\n CAMERA_TYPE[\"EXPLORING\"] = \"EXPLORING\";\n CAMERA_TYPE[\"TRACKING\"] = \"TRACKING\";\n})(CAMERA_TYPE || (CAMERA_TYPE = {}));\n\nvar CAMERA_TRACKING_MODE;\n\n(function (CAMERA_TRACKING_MODE) {\n CAMERA_TRACKING_MODE[\"DEFAULT\"] = \"DEFAULT\";\n CAMERA_TRACKING_MODE[\"ROTATIONAL\"] = \"ROTATIONAL\";\n CAMERA_TRACKING_MODE[\"TRANSLATIONAL\"] = \"TRANSLATIONAL\";\n CAMERA_TRACKING_MODE[\"CINEMATIC\"] = \"CINEMATIC\";\n})(CAMERA_TRACKING_MODE || (CAMERA_TRACKING_MODE = {}));\n\nvar CAMERA_PROJECTION_MODE;\n\n(function (CAMERA_PROJECTION_MODE) {\n CAMERA_PROJECTION_MODE[\"ORTHOGRAPHIC\"] = \"ORTHOGRAPHIC\";\n CAMERA_PROJECTION_MODE[\"PERSPECTIVE\"] = \"PERSPECTIVE\";\n})(CAMERA_PROJECTION_MODE || (CAMERA_PROJECTION_MODE = {}));\n\nvar DEG_2_RAD = Math.PI / 180;\nvar RAD_2_DEG = 180 / Math.PI;\n/**\n * 参考「WebGL Insights - 23.Designing Cameras for WebGL Applications」,基于 Responsible Camera 思路设计\n * 保存相机参数,定义相机动作:\n * 1. dolly 沿 n 轴移动\n * 2. pan 沿 u v 轴移动\n * 3. rotate 以方位角旋转\n * 4. 移动到 Landmark,具有平滑的动画效果,其间禁止其他用户交互\n */\n\nvar Camera = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].InteractorService), _dec(_class = (_class2 = (_temp = _class3 = /*#__PURE__*/function () {\n function Camera() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Camera);\n\n this.matrix = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create();\n this.right = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(1, 0, 0);\n this.up = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(0, 1, 0);\n this.forward = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(0, 0, 1);\n this.position = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(0, 0, 1);\n this.focalPoint = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(0, 0, 0);\n this.distanceVector = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(0, 0, 0);\n this.distance = 1;\n this.azimuth = 0;\n this.elevation = 0;\n this.roll = 0;\n this.relAzimuth = 0;\n this.relElevation = 0;\n this.relRoll = 0;\n this.dollyingStep = 0;\n this.maxDistance = Infinity;\n this.minDistance = -Infinity;\n this.rotateWorld = false;\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, \"interactor\", _descriptor, this);\n\n this.fov = 30;\n this.near = 0.1;\n this.far = 10000;\n this.aspect = 1;\n this.left = void 0;\n this.rright = void 0;\n this.top = void 0;\n this.bottom = void 0;\n this.zoom = 1;\n this.perspective = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create();\n this.view = void 0;\n this.following = undefined;\n this.type = CAMERA_TYPE.EXPLORING;\n this.trackingMode = CAMERA_TRACKING_MODE.DEFAULT;\n this.projectionMode = CAMERA_PROJECTION_MODE.PERSPECTIVE;\n this.frustum = new _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"Frustum\"]();\n this.landmarks = [];\n this.landmarkAnimationID = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Camera, [{\n key: \"clone\",\n value: function clone() {\n var camera = new Camera();\n camera.setType(this.type, undefined);\n camera.interactor = this.interactor;\n return camera;\n }\n }, {\n key: \"getProjectionMode\",\n value: function getProjectionMode() {\n return this.projectionMode;\n }\n }, {\n key: \"getPerspective\",\n value: function getPerspective() {\n return this.perspective;\n }\n }, {\n key: \"getFrustum\",\n value: function getFrustum() {\n return this.frustum;\n }\n }, {\n key: \"getPosition\",\n value: function getPosition() {\n return this.position;\n }\n }, {\n key: \"setType\",\n value: function setType(type, trackingMode) {\n this.type = type;\n\n if (this.type === CAMERA_TYPE.EXPLORING) {\n this.setWorldRotation(true);\n } else {\n this.setWorldRotation(false);\n }\n\n this._getAngles();\n\n if (this.type === CAMERA_TYPE.TRACKING && trackingMode !== undefined) {\n this.setTrackingMode(trackingMode);\n }\n\n return this;\n }\n }, {\n key: \"setProjectionMode\",\n value: function setProjectionMode(projectionMode) {\n this.projectionMode = projectionMode;\n return this;\n }\n }, {\n key: \"setTrackingMode\",\n value: function setTrackingMode(trackingMode) {\n if (this.type !== CAMERA_TYPE.TRACKING) {\n throw new Error('Impossible to set a tracking mode if the camera is not of tracking type');\n }\n\n this.trackingMode = trackingMode;\n return this;\n }\n /**\n * If flag is true, it reverses the azimuth and elevation angles.\n * Subsequent calls to rotate, setAzimuth, setElevation,\n * changeAzimuth or changeElevation will cause the inverted effect.\n * setRoll or changeRoll is not affected by this method.\n *\n * This inversion is useful when one wants to simulate that the world\n * is moving, instead of the camera.\n *\n * By default the camera angles are not reversed.\n * @param {Boolean} flag the boolean flag to reverse the angles.\n */\n\n }, {\n key: \"setWorldRotation\",\n value: function setWorldRotation(flag) {\n this.rotateWorld = flag;\n\n this._getAngles();\n }\n /**\n * 计算 MV 矩阵,为相机矩阵的逆矩阵\n */\n\n }, {\n key: \"getViewTransform\",\n value: function getViewTransform() {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].invert(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create(), this.matrix);\n }\n }, {\n key: \"getWorldTransform\",\n value: function getWorldTransform() {\n return this.matrix;\n }\n /**\n * 设置相机矩阵\n */\n\n }, {\n key: \"setMatrix\",\n value: function setMatrix(matrix) {\n this.matrix = matrix;\n\n this._update();\n\n return this;\n }\n }, {\n key: \"setAspect\",\n value: function setAspect(aspect) {\n this.setPerspective(this.near, this.far, this.fov, aspect);\n return this;\n }\n /**\n * Sets an offset in a larger frustum, used in PixelPicking\n */\n\n }, {\n key: \"setViewOffset\",\n value: function setViewOffset(fullWidth, fullHeight, x, y, width, height) {\n this.aspect = fullWidth / fullHeight;\n\n if (this.view === undefined) {\n this.view = {\n enabled: true,\n fullWidth: 1,\n fullHeight: 1,\n offsetX: 0,\n offsetY: 0,\n width: 1,\n height: 1\n };\n }\n\n this.view.enabled = true;\n this.view.fullWidth = fullWidth;\n this.view.fullHeight = fullHeight;\n this.view.offsetX = x;\n this.view.offsetY = y;\n this.view.width = width;\n this.view.height = height;\n\n if (this.projectionMode === CAMERA_PROJECTION_MODE.PERSPECTIVE) {\n this.setPerspective(this.near, this.far, this.fov, this.aspect);\n } else {\n this.setOrthographic(this.left, this.rright, this.top, this.bottom, this.near, this.far);\n }\n\n return this;\n }\n }, {\n key: \"clearViewOffset\",\n value: function clearViewOffset() {\n if (this.view !== undefined) {\n this.view.enabled = false;\n }\n\n if (this.projectionMode === CAMERA_PROJECTION_MODE.PERSPECTIVE) {\n this.setPerspective(this.near, this.far, this.fov, this.aspect);\n } else {\n this.setOrthographic(this.left, this.rright, this.top, this.bottom, this.near, this.far);\n }\n\n return this;\n }\n }, {\n key: \"setPerspective\",\n value: function setPerspective(near, far, fov, aspect) {\n this.projectionMode = CAMERA_PROJECTION_MODE.PERSPECTIVE;\n this.fov = fov;\n this.near = near;\n this.far = far;\n this.aspect = aspect;\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].perspective(this.perspective, this.fov * DEG_2_RAD, this.aspect, this.near, this.far);\n return this;\n }\n }, {\n key: \"setOrthographic\",\n value: function setOrthographic(l, r, t, b, near, far) {\n this.projectionMode = CAMERA_PROJECTION_MODE.ORTHOGRAPHIC;\n this.rright = r;\n this.left = l;\n this.top = t;\n this.bottom = b;\n this.near = near;\n this.far = far;\n var dx = (this.rright - this.left) / (2 * this.zoom);\n var dy = (this.top - this.bottom) / (2 * this.zoom);\n var cx = (this.rright + this.left) / 2;\n var cy = (this.top + this.bottom) / 2;\n var left = cx - dx;\n var right = cx + dx;\n var top = cy + dy;\n var bottom = cy - dy;\n\n if (this.view !== undefined && this.view.enabled) {\n var scaleW = (this.rright - this.left) / this.view.fullWidth / this.zoom;\n var scaleH = (this.top - this.bottom) / this.view.fullHeight / this.zoom;\n left += scaleW * this.view.offsetX;\n right = left + scaleW * this.view.width;\n top -= scaleH * this.view.offsetY;\n bottom = top - scaleH * this.view.height;\n }\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].ortho(this.perspective, left, right, top, bottom, near, far);\n return this;\n }\n /**\n * 设置相机位置\n */\n\n }, {\n key: \"setPosition\",\n value: function setPosition(x, y, z) {\n this._setPosition(x, y, z);\n\n this.setFocalPoint(this.focalPoint);\n return this;\n }\n /**\n * 设置视点位置\n */\n\n }, {\n key: \"setFocalPoint\",\n value: function setFocalPoint(x, y, z) {\n var up = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].fromValues(0, 1, 0);\n this.focalPoint = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"createVec3\"])(x, y, z);\n\n if (this.trackingMode === CAMERA_TRACKING_MODE.CINEMATIC) {\n var d = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].subtract(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create(), this.focalPoint, this.position);\n x = d[0];\n y = d[1];\n z = d[2];\n var r = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].length(d);\n var el = Math.asin(y / r) * RAD_2_DEG;\n var az = 90 + Math.atan2(z, x) * RAD_2_DEG;\n var m = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create();\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].rotateY(m, m, az * DEG_2_RAD);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].rotateX(m, m, el * DEG_2_RAD);\n up = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].transformMat4(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create(), [0, 1, 0], m);\n }\n\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].invert(this.matrix, gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].lookAt(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create(), this.position, this.focalPoint, up));\n\n this._getAxes();\n\n this._getDistance();\n\n this._getAngles();\n\n return this;\n }\n /**\n * 固定当前视点,按指定距离放置相机\n */\n\n }, {\n key: \"setDistance\",\n value: function setDistance(d) {\n if (this.distance === d || d < 0) {\n return;\n }\n\n this.distance = d;\n\n if (this.distance < 0.0002) {\n this.distance = 0.0002;\n }\n\n this.dollyingStep = this.distance / 100;\n var pos = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create();\n d = this.distance;\n var n = this.forward;\n var f = this.focalPoint;\n pos[0] = d * n[0] + f[0];\n pos[1] = d * n[1] + f[1];\n pos[2] = d * n[2] + f[2];\n\n this._setPosition(pos);\n\n return this;\n }\n }, {\n key: \"setMaxDistance\",\n value: function setMaxDistance(d) {\n this.maxDistance = d;\n return this;\n }\n }, {\n key: \"setMinDistance\",\n value: function setMinDistance(d) {\n this.minDistance = d;\n return this;\n }\n /**\n * Changes the initial azimuth of the camera\n */\n\n }, {\n key: \"changeAzimuth\",\n value: function changeAzimuth(az) {\n this.setAzimuth(this.azimuth + az);\n return this;\n }\n /**\n * Changes the initial elevation of the camera\n */\n\n }, {\n key: \"changeElevation\",\n value: function changeElevation(el) {\n this.setElevation(this.elevation + el);\n return this;\n }\n /**\n * Changes the initial roll of the camera\n */\n\n }, {\n key: \"changeRoll\",\n value: function changeRoll(rl) {\n this.setRoll(this.roll + rl);\n return this;\n }\n /**\n * 设置相机方位角,不同相机模式下需要重新计算相机位置或者是视点位置\n * @param {Number} el the azimuth in degrees\n */\n\n }, {\n key: \"setAzimuth\",\n value: function setAzimuth(az) {\n this.azimuth = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"getAngle\"])(az);\n this.computeMatrix();\n\n this._getAxes();\n\n if (this.type === CAMERA_TYPE.ORBITING || this.type === CAMERA_TYPE.EXPLORING) {\n this._getPosition();\n } else if (this.type === CAMERA_TYPE.TRACKING) {\n this._getFocalPoint();\n }\n\n return this;\n }\n }, {\n key: \"getAzimuth\",\n value: function getAzimuth() {\n return this.azimuth;\n }\n /**\n * 设置相机方位角,不同相机模式下需要重新计算相机位置或者是视点位置\n * @param {Number} el the elevation in degrees\n */\n\n }, {\n key: \"setElevation\",\n value: function setElevation(el) {\n this.elevation = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"getAngle\"])(el);\n this.computeMatrix();\n\n this._getAxes();\n\n if (this.type === CAMERA_TYPE.ORBITING || this.type === CAMERA_TYPE.EXPLORING) {\n this._getPosition();\n } else if (this.type === CAMERA_TYPE.TRACKING) {\n this._getFocalPoint();\n }\n\n return this;\n }\n /**\n * 设置相机方位角,不同相机模式下需要重新计算相机位置或者是视点位置\n * @param {Number} angle the roll angle\n */\n\n }, {\n key: \"setRoll\",\n value: function setRoll(angle) {\n this.roll = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"getAngle\"])(angle);\n this.computeMatrix();\n\n this._getAxes();\n\n if (this.type === CAMERA_TYPE.ORBITING || this.type === CAMERA_TYPE.EXPLORING) {\n this._getPosition();\n } else if (this.type === CAMERA_TYPE.TRACKING) {\n this._getFocalPoint();\n }\n\n return this;\n }\n /**\n * Changes the azimuth and elevation with respect to the current camera axes\n * @param {Number} azimuth the relative azimuth\n * @param {Number} elevation the relative elevation\n * @param {Number} roll the relative roll\n */\n\n }, {\n key: \"rotate\",\n value: function rotate(azimuth, elevation, roll) {\n if (this.type === CAMERA_TYPE.EXPLORING) {\n azimuth = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"getAngle\"])(azimuth);\n elevation = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"getAngle\"])(elevation);\n roll = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"getAngle\"])(roll);\n var rotX = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].setAxisAngle(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), [1, 0, 0], (this.rotateWorld ? 1 : -1) * elevation * DEG_2_RAD);\n var rotY = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].setAxisAngle(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), [0, 1, 0], (this.rotateWorld ? 1 : -1) * azimuth * DEG_2_RAD);\n var rotZ = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].setAxisAngle(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), [0, 0, 1], roll * DEG_2_RAD);\n var rotQ = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), rotY, rotX);\n rotQ = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), rotQ, rotZ);\n var rotMatrix = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].fromQuat(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create(), rotQ);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].translate(this.matrix, this.matrix, [0, 0, -this.distance]);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].multiply(this.matrix, this.matrix, rotMatrix);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].translate(this.matrix, this.matrix, [0, 0, this.distance]);\n } else {\n if (Math.abs(this.elevation + elevation) > 90) {\n return;\n }\n\n this.relElevation = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"getAngle\"])(elevation);\n this.relAzimuth = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"getAngle\"])(azimuth);\n this.relRoll = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"getAngle\"])(roll);\n this.elevation += this.relElevation;\n this.azimuth += this.relAzimuth;\n this.roll += this.relRoll;\n this.computeMatrix();\n }\n\n this._getAxes();\n\n if (this.type === CAMERA_TYPE.ORBITING || this.type === CAMERA_TYPE.EXPLORING) {\n this._getPosition();\n } else if (this.type === CAMERA_TYPE.TRACKING) {\n this._getFocalPoint();\n }\n\n this._update();\n\n return this;\n }\n /**\n * 沿水平(right) & 垂直(up)平移相机\n */\n\n }, {\n key: \"pan\",\n value: function pan(tx, ty) {\n var coords = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"createVec3\"])(tx, ty, 0);\n var pos = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].clone(this.position);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].add(pos, pos, gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].scale(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create(), this.right, coords[0]));\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].add(pos, pos, gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].scale(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create(), this.up, coords[1]));\n\n this._setPosition(pos);\n\n return this;\n }\n /**\n * 沿 n 轴移动,当距离视点远时移动速度较快,离视点越近速度越慢\n */\n\n }, {\n key: \"dolly\",\n value: function dolly(value) {\n var n = this.forward;\n var pos = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].clone(this.position);\n var step = value * this.dollyingStep;\n var updatedDistance = this.distance + value * this.dollyingStep; // 限制视点距离范围\n\n step = Math.max(Math.min(updatedDistance, this.maxDistance), this.minDistance) - this.distance;\n pos[0] += step * n[0];\n pos[1] += step * n[1];\n pos[2] += step * n[2];\n\n this._setPosition(pos);\n\n if (this.type === CAMERA_TYPE.ORBITING || this.type === CAMERA_TYPE.EXPLORING) {\n // 重新计算视点距离\n this._getDistance();\n } else if (this.type === CAMERA_TYPE.TRACKING) {\n // 保持视距,移动视点位置\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].add(this.focalPoint, pos, this.distanceVector);\n }\n\n return this;\n }\n }, {\n key: \"createLandmark\",\n value: function createLandmark(name, params) {\n var camera = this.clone();\n camera.setPosition(params.position);\n camera.setFocalPoint(params.focalPoint);\n\n if (params.roll !== undefined) {\n camera.setRoll(params.roll);\n }\n\n var landmark = new _Landmark__WEBPACK_IMPORTED_MODULE_9__[\"default\"](name, camera);\n this.landmarks.push(landmark);\n return landmark;\n }\n }, {\n key: \"setLandmark\",\n value: function setLandmark(name) {\n var landmark = new _Landmark__WEBPACK_IMPORTED_MODULE_9__[\"default\"](name, this);\n this.landmarks.push(landmark);\n return this;\n }\n }, {\n key: \"gotoLandmark\",\n value: function gotoLandmark(name) {\n var _this = this;\n\n var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1000;\n var landmark = this.landmarks.find(function (l) {\n return l.name === name;\n });\n\n if (landmark) {\n if (duration === 0) {\n landmark.retrieve(this);\n return;\n }\n\n if (this.landmarkAnimationID !== undefined) {\n window.cancelAnimationFrame(this.landmarkAnimationID);\n } // TODO: do not process events during animation\n\n\n this.interactor.disconnect();\n var destPosition = landmark.getPosition();\n var destFocalPoint = landmark.getFocalPoint();\n var destRoll = landmark.getRoll();\n var timeStart;\n\n var animate = function animate(timestamp) {\n if (timeStart === undefined) {\n timeStart = timestamp;\n }\n\n var elapsed = timestamp - timeStart; // TODO: use better ease function\n\n var t = (1 - Math.cos(elapsed / duration * Math.PI)) / 2;\n var interFocalPoint = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create();\n var interPosition = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create();\n var interRoll = 0;\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].lerp(interFocalPoint, _this.focalPoint, destFocalPoint, t);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].lerp(interPosition, _this.position, destPosition, t);\n interRoll = _this.roll * (1 - t) + destRoll * t;\n\n _this.setFocalPoint(interFocalPoint);\n\n _this.setPosition(interPosition);\n\n _this.setRoll(interRoll);\n\n _this.computeMatrix();\n\n var dist = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].dist(interFocalPoint, destFocalPoint) + gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].dist(interPosition, destPosition);\n\n if (dist > 0.01) {//\n } else {\n _this.setFocalPoint(interFocalPoint);\n\n _this.setPosition(interPosition);\n\n _this.setRoll(interRoll);\n\n _this.computeMatrix();\n\n _this.interactor.connect();\n\n return;\n }\n\n if (elapsed < duration) {\n _this.landmarkAnimationID = window.requestAnimationFrame(animate);\n }\n };\n\n window.requestAnimationFrame(animate);\n }\n }\n /**\n * 根据相机矩阵重新计算各种相机参数\n */\n\n }, {\n key: \"_update\",\n value: function _update() {\n this._getAxes();\n\n this._getPosition();\n\n this._getDistance();\n\n this._getAngles();\n }\n /**\n * 计算相机矩阵\n */\n\n }, {\n key: \"computeMatrix\",\n value: function computeMatrix() {\n var rotX;\n var rotY; // 使用四元数描述 3D 旋转\n // @see https://xiaoiver.github.io/coding/2018/12/28/Camera-%E8%AE%BE%E8%AE%A1-%E4%B8%80.html\n\n var rotZ = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].setAxisAngle(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), [0, 0, 1], this.roll * DEG_2_RAD);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].identity(this.matrix); // only consider HCS for EXPLORING and ORBITING cameras\n\n rotX = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].setAxisAngle(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), [1, 0, 0], (this.rotateWorld && this.type !== CAMERA_TYPE.TRACKING || this.type === CAMERA_TYPE.TRACKING ? 1 : -1) * this.elevation * DEG_2_RAD);\n rotY = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].setAxisAngle(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), [0, 1, 0], (this.rotateWorld && this.type !== CAMERA_TYPE.TRACKING || this.type === CAMERA_TYPE.TRACKING ? 1 : -1) * this.azimuth * DEG_2_RAD);\n var rotQ = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), rotY, rotX);\n rotQ = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].multiply(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"quat\"].create(), rotQ, rotZ);\n var rotMatrix = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].fromQuat(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].create(), rotQ);\n\n if (this.type === CAMERA_TYPE.ORBITING || this.type === CAMERA_TYPE.EXPLORING) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].translate(this.matrix, this.matrix, this.focalPoint);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].multiply(this.matrix, this.matrix, rotMatrix);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].translate(this.matrix, this.matrix, [0, 0, this.distance]);\n } else if (this.type === CAMERA_TYPE.TRACKING) {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].translate(this.matrix, this.matrix, this.position);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat4\"].multiply(this.matrix, this.matrix, rotMatrix);\n }\n }\n /**\n * Sets the camera position in the camera matrix\n */\n\n }, {\n key: \"_setPosition\",\n value: function _setPosition(x, y, z) {\n this.position = Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"createVec3\"])(x, y, z);\n var m = this.matrix;\n m[12] = this.position[0];\n m[13] = this.position[1];\n m[14] = this.position[2];\n m[15] = 1;\n }\n /**\n * Recalculates axes based on the current matrix\n */\n\n }, {\n key: \"_getAxes\",\n value: function _getAxes() {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].copy(this.right, Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"createVec3\"])(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec4\"].transformMat4(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec4\"].create(), [1, 0, 0, 0], this.matrix)));\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].copy(this.up, Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"createVec3\"])(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec4\"].transformMat4(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec4\"].create(), [0, 1, 0, 0], this.matrix)));\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].copy(this.forward, Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"createVec3\"])(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec4\"].transformMat4(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec4\"].create(), [0, 0, 1, 0], this.matrix)));\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].normalize(this.right, this.right);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].normalize(this.up, this.up);\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].normalize(this.forward, this.forward);\n }\n /**\n * Recalculates euler angles based on the current state\n */\n\n }, {\n key: \"_getAngles\",\n value: function _getAngles() {\n // Recalculates angles\n var x = this.distanceVector[0];\n var y = this.distanceVector[1];\n var z = this.distanceVector[2];\n var r = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].length(this.distanceVector); // FAST FAIL: If there is no distance we cannot compute angles\n\n if (r === 0) {\n this.elevation = 0;\n this.azimuth = 0;\n return;\n }\n\n if (this.type === CAMERA_TYPE.TRACKING) {\n this.elevation = Math.asin(y / r) * RAD_2_DEG;\n this.azimuth = Math.atan2(-x, -z) * RAD_2_DEG;\n } else {\n if (this.rotateWorld) {\n this.elevation = Math.asin(y / r) * RAD_2_DEG;\n this.azimuth = Math.atan2(-x, -z) * RAD_2_DEG;\n } else {\n this.elevation = -Math.asin(y / r) * RAD_2_DEG;\n this.azimuth = -Math.atan2(-x, -z) * RAD_2_DEG;\n }\n }\n }\n /**\n * 重新计算相机位置,只有 ORBITING 模式相机位置才会发生变化\n */\n\n }, {\n key: \"_getPosition\",\n value: function _getPosition() {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].copy(this.position, Object(_utils_math__WEBPACK_IMPORTED_MODULE_8__[\"createVec3\"])(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec4\"].transformMat4(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec4\"].create(), [0, 0, 0, 1], this.matrix))); // 相机位置变化,需要重新计算视距\n\n this._getDistance();\n }\n /**\n * 重新计算视点,只有 TRACKING 模式视点才会发生变化\n */\n\n }, {\n key: \"_getFocalPoint\",\n value: function _getFocalPoint() {\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].transformMat3(this.distanceVector, [0, 0, -this.distance], gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat3\"].fromMat4(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"mat3\"].create(), this.matrix));\n gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].add(this.focalPoint, this.position, this.distanceVector); // 视点变化,需要重新计算视距\n\n this._getDistance();\n }\n /**\n * 重新计算视距\n */\n\n }, {\n key: \"_getDistance\",\n value: function _getDistance() {\n this.distanceVector = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].subtract(gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].create(), this.focalPoint, this.position);\n this.distance = gl_matrix__WEBPACK_IMPORTED_MODULE_6__[\"vec3\"].length(this.distanceVector);\n this.dollyingStep = this.distance / 100;\n }\n }]);\n\n return Camera;\n}(), _class3.ProjectionMode = {\n ORTHOGRAPHIC: 'ORTHOGRAPHIC',\n PERSPECTIVE: 'PERSPECTIVE'\n}, _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class2.prototype, \"interactor\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=Camera.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL2NhbWVyYS9DYW1lcmEuanM/NDJiMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMEY7QUFDdEI7QUFDTjtBQUMwQjtBQUNBOztBQUV4Rjs7QUFFMEQ7QUFDRDtBQUNWO0FBQ007QUFDbkI7QUFDM0I7O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGtDQUFrQzs7QUFFNUI7O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsb0RBQW9EOztBQUU5Qzs7QUFFUDtBQUNBO0FBQ0E7QUFDQSxDQUFDLHdEQUF3RDs7QUFFekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU8scUJBQXFCLDREQUFVLFlBQVksd0RBQU0sQ0FBQyw4REFBVTtBQUNuRTtBQUNBLElBQUksNEVBQWU7O0FBRW5CLGtCQUFrQiw4Q0FBSTtBQUN0QixpQkFBaUIsOENBQUk7QUFDckIsY0FBYyw4Q0FBSTtBQUNsQixtQkFBbUIsOENBQUk7QUFDdkIsb0JBQW9CLDhDQUFJO0FBQ3hCLHNCQUFzQiw4Q0FBSTtBQUMxQiwwQkFBMEIsOENBQUk7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJLHVGQUEwQjs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLDhDQUFJO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsMkRBQU87QUFDOUI7QUFDQTtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsUUFBUTtBQUN2Qjs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQSxhQUFhLDhDQUFJLFFBQVEsOENBQUk7QUFDN0I7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLDhDQUFJO0FBQ1Y7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTSw4Q0FBSTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQSxlQUFlLDhDQUFJO0FBQ25CLHdCQUF3Qiw4REFBVTs7QUFFbEM7QUFDQSxnQkFBZ0IsOENBQUksVUFBVSw4Q0FBSTtBQUNsQztBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsOENBQUk7QUFDcEI7QUFDQTtBQUNBLGdCQUFnQiw4Q0FBSTtBQUNwQixRQUFRLDhDQUFJO0FBQ1osUUFBUSw4Q0FBSTtBQUNaLGFBQWEsOENBQUksZUFBZSw4Q0FBSTtBQUNwQzs7QUFFQSxNQUFNLDhDQUFJLHFCQUFxQiw4Q0FBSSxRQUFRLDhDQUFJOztBQUUvQzs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGdCQUFnQiw4Q0FBSTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0EscUJBQXFCLDREQUFRO0FBQzdCOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsT0FBTztBQUN0Qjs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHVCQUF1Qiw0REFBUTtBQUMvQjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE9BQU87QUFDdEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQSxrQkFBa0IsNERBQVE7QUFDMUI7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxPQUFPO0FBQ3RCLGVBQWUsT0FBTztBQUN0QixlQUFlLE9BQU87QUFDdEI7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQiw0REFBUTtBQUMxQixvQkFBb0IsNERBQVE7QUFDNUIsZUFBZSw0REFBUTtBQUN2QixtQkFBbUIsOENBQUksY0FBYyw4Q0FBSTtBQUN6QyxtQkFBbUIsOENBQUksY0FBYyw4Q0FBSTtBQUN6QyxtQkFBbUIsOENBQUksY0FBYyw4Q0FBSTtBQUN6QyxtQkFBbUIsOENBQUksVUFBVSw4Q0FBSTtBQUNyQyxlQUFlLDhDQUFJLFVBQVUsOENBQUk7QUFDakMsd0JBQXdCLDhDQUFJLFVBQVUsOENBQUk7QUFDMUMsUUFBUSw4Q0FBSTtBQUNaLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1osT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQSw0QkFBNEIsNERBQVE7QUFDcEMsMEJBQTBCLDREQUFRO0FBQ2xDLHVCQUF1Qiw0REFBUTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsbUJBQW1CLDhEQUFVO0FBQzdCLGdCQUFnQiw4Q0FBSTtBQUNwQixNQUFNLDhDQUFJLGVBQWUsOENBQUksT0FBTyw4Q0FBSTtBQUN4QyxNQUFNLDhDQUFJLGVBQWUsOENBQUksT0FBTyw4Q0FBSTs7QUFFeEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDhDQUFJO0FBQ3BCO0FBQ0Esc0VBQXNFOztBQUV0RTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxRQUFRLDhDQUFJO0FBQ1o7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSx5QkFBeUIsaURBQVE7QUFDakM7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSx5QkFBeUIsaURBQVE7QUFDakM7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFNBQVM7OztBQUdUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsOENBQThDOztBQUU5QztBQUNBLGdDQUFnQyw4Q0FBSTtBQUNwQyw4QkFBOEIsOENBQUk7QUFDbEM7QUFDQSxVQUFVLDhDQUFJO0FBQ2QsVUFBVSw4Q0FBSTtBQUNkOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBLHFCQUFxQiw4Q0FBSSx5Q0FBeUMsOENBQUk7O0FBRXRFLDRCQUE0QjtBQUM1QixXQUFXO0FBQ1g7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7O0FBRUEsaUJBQWlCLDhDQUFJLGNBQWMsOENBQUk7QUFDdkMsTUFBTSw4Q0FBSSx1QkFBdUI7O0FBRWpDLGFBQWEsOENBQUksY0FBYyw4Q0FBSTtBQUNuQyxhQUFhLDhDQUFJLGNBQWMsOENBQUk7QUFDbkMsaUJBQWlCLDhDQUFJLFVBQVUsOENBQUk7QUFDbkMsYUFBYSw4Q0FBSSxVQUFVLDhDQUFJO0FBQy9CLHNCQUFzQiw4Q0FBSSxVQUFVLDhDQUFJOztBQUV4QztBQUNBLFFBQVEsOENBQUk7QUFDWixRQUFRLDhDQUFJO0FBQ1osUUFBUSw4Q0FBSTtBQUNaLE9BQU87QUFDUCxRQUFRLDhDQUFJO0FBQ1osUUFBUSw4Q0FBSTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQSxzQkFBc0IsOERBQVU7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsTUFBTSw4Q0FBSSxrQkFBa0IsOERBQVUsQ0FBQyw4Q0FBSSxlQUFlLDhDQUFJO0FBQzlELE1BQU0sOENBQUksZUFBZSw4REFBVSxDQUFDLDhDQUFJLGVBQWUsOENBQUk7QUFDM0QsTUFBTSw4Q0FBSSxvQkFBb0IsOERBQVUsQ0FBQyw4Q0FBSSxlQUFlLDhDQUFJO0FBQ2hFLE1BQU0sOENBQUk7QUFDVixNQUFNLDhDQUFJO0FBQ1YsTUFBTSw4Q0FBSTtBQUNWO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLDhDQUFJLDZCQUE2Qjs7QUFFL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQSxNQUFNLDhDQUFJLHFCQUFxQiw4REFBVSxDQUFDLDhDQUFJLGVBQWUsOENBQUksd0NBQXdDOztBQUV6RztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsTUFBTSw4Q0FBSSw0REFBNEQsOENBQUksVUFBVSw4Q0FBSTtBQUN4RixNQUFNLDhDQUFJLDBEQUEwRDs7QUFFcEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLDRCQUE0Qiw4Q0FBSSxVQUFVLDhDQUFJO0FBQzlDLHNCQUFzQiw4Q0FBSTtBQUMxQjtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EsQ0FBQyx5QkFBeUIsc0ZBQXlCO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdUAwLjUuNUBAYW50di9nLXdlYmdwdS9lcy9jYW1lcmEvQ2FtZXJhLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplcldhcm5pbmdIZWxwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyXCI7XG5cbnZhciBfZGVjLCBfZGVjMiwgX2NsYXNzLCBfY2xhc3MyLCBfZGVzY3JpcHRvciwgX2NsYXNzMywgX3RlbXA7XG5cbmltcG9ydCB7IEZydXN0dW0sIElERU5USUZJRVIgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCB7IG1hdDMsIG1hdDQsIHF1YXQsIHZlYzMsIHZlYzQgfSBmcm9tICdnbC1tYXRyaXgnO1xuaW1wb3J0IHsgaW5qZWN0LCBpbmplY3RhYmxlIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCB7IGNyZWF0ZVZlYzMsIGdldEFuZ2xlIH0gZnJvbSAnLi4vdXRpbHMvbWF0aCc7XG5pbXBvcnQgTGFuZG1hcmsgZnJvbSAnLi9MYW5kbWFyayc7XG5leHBvcnQgdmFyIENBTUVSQV9UWVBFO1xuXG4oZnVuY3Rpb24gKENBTUVSQV9UWVBFKSB7XG4gIENBTUVSQV9UWVBFW1wiT1JCSVRJTkdcIl0gPSBcIk9SQklUSU5HXCI7XG4gIENBTUVSQV9UWVBFW1wiRVhQTE9SSU5HXCJdID0gXCJFWFBMT1JJTkdcIjtcbiAgQ0FNRVJBX1RZUEVbXCJUUkFDS0lOR1wiXSA9IFwiVFJBQ0tJTkdcIjtcbn0pKENBTUVSQV9UWVBFIHx8IChDQU1FUkFfVFlQRSA9IHt9KSk7XG5cbmV4cG9ydCB2YXIgQ0FNRVJBX1RSQUNLSU5HX01PREU7XG5cbihmdW5jdGlvbiAoQ0FNRVJBX1RSQUNLSU5HX01PREUpIHtcbiAgQ0FNRVJBX1RSQUNLSU5HX01PREVbXCJERUZBVUxUXCJdID0gXCJERUZBVUxUXCI7XG4gIENBTUVSQV9UUkFDS0lOR19NT0RFW1wiUk9UQVRJT05BTFwiXSA9IFwiUk9UQVRJT05BTFwiO1xuICBDQU1FUkFfVFJBQ0tJTkdfTU9ERVtcIlRSQU5TTEFUSU9OQUxcIl0gPSBcIlRSQU5TTEFUSU9OQUxcIjtcbiAgQ0FNRVJBX1RSQUNLSU5HX01PREVbXCJDSU5FTUFUSUNcIl0gPSBcIkNJTkVNQVRJQ1wiO1xufSkoQ0FNRVJBX1RSQUNLSU5HX01PREUgfHwgKENBTUVSQV9UUkFDS0lOR19NT0RFID0ge30pKTtcblxuZXhwb3J0IHZhciBDQU1FUkFfUFJPSkVDVElPTl9NT0RFO1xuXG4oZnVuY3Rpb24gKENBTUVSQV9QUk9KRUNUSU9OX01PREUpIHtcbiAgQ0FNRVJBX1BST0pFQ1RJT05fTU9ERVtcIk9SVEhPR1JBUEhJQ1wiXSA9IFwiT1JUSE9HUkFQSElDXCI7XG4gIENBTUVSQV9QUk9KRUNUSU9OX01PREVbXCJQRVJTUEVDVElWRVwiXSA9IFwiUEVSU1BFQ1RJVkVcIjtcbn0pKENBTUVSQV9QUk9KRUNUSU9OX01PREUgfHwgKENBTUVSQV9QUk9KRUNUSU9OX01PREUgPSB7fSkpO1xuXG52YXIgREVHXzJfUkFEID0gTWF0aC5QSSAvIDE4MDtcbnZhciBSQURfMl9ERUcgPSAxODAgLyBNYXRoLlBJO1xuLyoqXG4gKiDlj4LogIPjgIxXZWJHTCBJbnNpZ2h0cyAtIDIzLkRlc2lnbmluZyBDYW1lcmFzIGZvciBXZWJHTCBBcHBsaWNhdGlvbnPjgI3vvIzln7rkuo4gUmVzcG9uc2libGUgQ2FtZXJhIOaAnei3r+iuvuiuoVxuICog5L+d5a2Y55u45py65Y+C5pWw77yM5a6a5LmJ55u45py65Yqo5L2c77yaXG4gKiAxLiBkb2xseSDmsr8gbiDovbTnp7vliqhcbiAqIDIuIHBhbiDmsr8gdSB2IOi9tOenu+WKqFxuICogMy4gcm90YXRlIOS7peaWueS9jeinkuaXi+i9rFxuICogNC4g56e75Yqo5YiwIExhbmRtYXJr77yM5YW35pyJ5bmz5ruR55qE5Yqo55S75pWI5p6c77yM5YW26Ze056aB5q2i5YW25LuW55So5oi35Lqk5LqSXG4gKi9cblxuZXhwb3J0IHZhciBDYW1lcmEgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoSURFTlRJRklFUi5JbnRlcmFjdG9yU2VydmljZSksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSBfY2xhc3MzID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gQ2FtZXJhKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDYW1lcmEpO1xuXG4gICAgdGhpcy5tYXRyaXggPSBtYXQ0LmNyZWF0ZSgpO1xuICAgIHRoaXMucmlnaHQgPSB2ZWMzLmZyb21WYWx1ZXMoMSwgMCwgMCk7XG4gICAgdGhpcy51cCA9IHZlYzMuZnJvbVZhbHVlcygwLCAxLCAwKTtcbiAgICB0aGlzLmZvcndhcmQgPSB2ZWMzLmZyb21WYWx1ZXMoMCwgMCwgMSk7XG4gICAgdGhpcy5wb3NpdGlvbiA9IHZlYzMuZnJvbVZhbHVlcygwLCAwLCAxKTtcbiAgICB0aGlzLmZvY2FsUG9pbnQgPSB2ZWMzLmZyb21WYWx1ZXMoMCwgMCwgMCk7XG4gICAgdGhpcy5kaXN0YW5jZVZlY3RvciA9IHZlYzMuZnJvbVZhbHVlcygwLCAwLCAwKTtcbiAgICB0aGlzLmRpc3RhbmNlID0gMTtcbiAgICB0aGlzLmF6aW11dGggPSAwO1xuICAgIHRoaXMuZWxldmF0aW9uID0gMDtcbiAgICB0aGlzLnJvbGwgPSAwO1xuICAgIHRoaXMucmVsQXppbXV0aCA9IDA7XG4gICAgdGhpcy5yZWxFbGV2YXRpb24gPSAwO1xuICAgIHRoaXMucmVsUm9sbCA9IDA7XG4gICAgdGhpcy5kb2xseWluZ1N0ZXAgPSAwO1xuICAgIHRoaXMubWF4RGlzdGFuY2UgPSBJbmZpbml0eTtcbiAgICB0aGlzLm1pbkRpc3RhbmNlID0gLUluZmluaXR5O1xuICAgIHRoaXMucm90YXRlV29ybGQgPSBmYWxzZTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwiaW50ZXJhY3RvclwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG5cbiAgICB0aGlzLmZvdiA9IDMwO1xuICAgIHRoaXMubmVhciA9IDAuMTtcbiAgICB0aGlzLmZhciA9IDEwMDAwO1xuICAgIHRoaXMuYXNwZWN0ID0gMTtcbiAgICB0aGlzLmxlZnQgPSB2b2lkIDA7XG4gICAgdGhpcy5ycmlnaHQgPSB2b2lkIDA7XG4gICAgdGhpcy50b3AgPSB2b2lkIDA7XG4gICAgdGhpcy5ib3R0b20gPSB2b2lkIDA7XG4gICAgdGhpcy56b29tID0gMTtcbiAgICB0aGlzLnBlcnNwZWN0aXZlID0gbWF0NC5jcmVhdGUoKTtcbiAgICB0aGlzLnZpZXcgPSB2b2lkIDA7XG4gICAgdGhpcy5mb2xsb3dpbmcgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy50eXBlID0gQ0FNRVJBX1RZUEUuRVhQTE9SSU5HO1xuICAgIHRoaXMudHJhY2tpbmdNb2RlID0gQ0FNRVJBX1RSQUNLSU5HX01PREUuREVGQVVMVDtcbiAgICB0aGlzLnByb2plY3Rpb25Nb2RlID0gQ0FNRVJBX1BST0pFQ1RJT05fTU9ERS5QRVJTUEVDVElWRTtcbiAgICB0aGlzLmZydXN0dW0gPSBuZXcgRnJ1c3R1bSgpO1xuICAgIHRoaXMubGFuZG1hcmtzID0gW107XG4gICAgdGhpcy5sYW5kbWFya0FuaW1hdGlvbklEID0gdm9pZCAwO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKENhbWVyYSwgW3tcbiAgICBrZXk6IFwiY2xvbmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY2xvbmUoKSB7XG4gICAgICB2YXIgY2FtZXJhID0gbmV3IENhbWVyYSgpO1xuICAgICAgY2FtZXJhLnNldFR5cGUodGhpcy50eXBlLCB1bmRlZmluZWQpO1xuICAgICAgY2FtZXJhLmludGVyYWN0b3IgPSB0aGlzLmludGVyYWN0b3I7XG4gICAgICByZXR1cm4gY2FtZXJhO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRQcm9qZWN0aW9uTW9kZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRQcm9qZWN0aW9uTW9kZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb2plY3Rpb25Nb2RlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRQZXJzcGVjdGl2ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRQZXJzcGVjdGl2ZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLnBlcnNwZWN0aXZlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRGcnVzdHVtXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEZydXN0dW0oKSB7XG4gICAgICByZXR1cm4gdGhpcy5mcnVzdHVtO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRQb3NpdGlvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRQb3NpdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLnBvc2l0aW9uO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRUeXBlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldFR5cGUodHlwZSwgdHJhY2tpbmdNb2RlKSB7XG4gICAgICB0aGlzLnR5cGUgPSB0eXBlO1xuXG4gICAgICBpZiAodGhpcy50eXBlID09PSBDQU1FUkFfVFlQRS5FWFBMT1JJTkcpIHtcbiAgICAgICAgdGhpcy5zZXRXb3JsZFJvdGF0aW9uKHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZXRXb3JsZFJvdGF0aW9uKGZhbHNlKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fZ2V0QW5nbGVzKCk7XG5cbiAgICAgIGlmICh0aGlzLnR5cGUgPT09IENBTUVSQV9UWVBFLlRSQUNLSU5HICYmIHRyYWNraW5nTW9kZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuc2V0VHJhY2tpbmdNb2RlKHRyYWNraW5nTW9kZSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRQcm9qZWN0aW9uTW9kZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRQcm9qZWN0aW9uTW9kZShwcm9qZWN0aW9uTW9kZSkge1xuICAgICAgdGhpcy5wcm9qZWN0aW9uTW9kZSA9IHByb2plY3Rpb25Nb2RlO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFRyYWNraW5nTW9kZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRUcmFja2luZ01vZGUodHJhY2tpbmdNb2RlKSB7XG4gICAgICBpZiAodGhpcy50eXBlICE9PSBDQU1FUkFfVFlQRS5UUkFDS0lORykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ltcG9zc2libGUgdG8gc2V0IGEgdHJhY2tpbmcgbW9kZSBpZiB0aGUgY2FtZXJhIGlzIG5vdCBvZiB0cmFja2luZyB0eXBlJyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudHJhY2tpbmdNb2RlID0gdHJhY2tpbmdNb2RlO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIElmIGZsYWcgaXMgdHJ1ZSwgaXQgcmV2ZXJzZXMgdGhlIGF6aW11dGggYW5kIGVsZXZhdGlvbiBhbmdsZXMuXG4gICAgICogU3Vic2VxdWVudCBjYWxscyB0byByb3RhdGUsIHNldEF6aW11dGgsIHNldEVsZXZhdGlvbixcbiAgICAgKiBjaGFuZ2VBemltdXRoIG9yIGNoYW5nZUVsZXZhdGlvbiB3aWxsIGNhdXNlIHRoZSBpbnZlcnRlZCBlZmZlY3QuXG4gICAgICogc2V0Um9sbCBvciBjaGFuZ2VSb2xsIGlzIG5vdCBhZmZlY3RlZCBieSB0aGlzIG1ldGhvZC5cbiAgICAgKlxuICAgICAqIFRoaXMgaW52ZXJzaW9uIGlzIHVzZWZ1bCB3aGVuIG9uZSB3YW50cyB0byBzaW11bGF0ZSB0aGF0IHRoZSB3b3JsZFxuICAgICAqIGlzIG1vdmluZywgaW5zdGVhZCBvZiB0aGUgY2FtZXJhLlxuICAgICAqXG4gICAgICogQnkgZGVmYXVsdCB0aGUgY2FtZXJhIGFuZ2xlcyBhcmUgbm90IHJldmVyc2VkLlxuICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gZmxhZyB0aGUgYm9vbGVhbiBmbGFnIHRvIHJldmVyc2UgdGhlIGFuZ2xlcy5cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInNldFdvcmxkUm90YXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0V29ybGRSb3RhdGlvbihmbGFnKSB7XG4gICAgICB0aGlzLnJvdGF0ZVdvcmxkID0gZmxhZztcblxuICAgICAgdGhpcy5fZ2V0QW5nbGVzKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOiuoeeulyBNViDnn6npmLXvvIzkuLrnm7jmnLrnn6npmLXnmoTpgIbnn6npmLVcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImdldFZpZXdUcmFuc2Zvcm1cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Vmlld1RyYW5zZm9ybSgpIHtcbiAgICAgIHJldHVybiBtYXQ0LmludmVydChtYXQ0LmNyZWF0ZSgpLCB0aGlzLm1hdHJpeCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFdvcmxkVHJhbnNmb3JtXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFdvcmxkVHJhbnNmb3JtKCkge1xuICAgICAgcmV0dXJuIHRoaXMubWF0cml4O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDorr7nva7nm7jmnLrnn6npmLVcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInNldE1hdHJpeFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRNYXRyaXgobWF0cml4KSB7XG4gICAgICB0aGlzLm1hdHJpeCA9IG1hdHJpeDtcblxuICAgICAgdGhpcy5fdXBkYXRlKCk7XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRBc3BlY3RcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0QXNwZWN0KGFzcGVjdCkge1xuICAgICAgdGhpcy5zZXRQZXJzcGVjdGl2ZSh0aGlzLm5lYXIsIHRoaXMuZmFyLCB0aGlzLmZvdiwgYXNwZWN0KTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZXRzIGFuIG9mZnNldCBpbiBhIGxhcmdlciBmcnVzdHVtLCB1c2VkIGluIFBpeGVsUGlja2luZ1xuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwic2V0Vmlld09mZnNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRWaWV3T2Zmc2V0KGZ1bGxXaWR0aCwgZnVsbEhlaWdodCwgeCwgeSwgd2lkdGgsIGhlaWdodCkge1xuICAgICAgdGhpcy5hc3BlY3QgPSBmdWxsV2lkdGggLyBmdWxsSGVpZ2h0O1xuXG4gICAgICBpZiAodGhpcy52aWV3ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy52aWV3ID0ge1xuICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgZnVsbFdpZHRoOiAxLFxuICAgICAgICAgIGZ1bGxIZWlnaHQ6IDEsXG4gICAgICAgICAgb2Zmc2V0WDogMCxcbiAgICAgICAgICBvZmZzZXRZOiAwLFxuICAgICAgICAgIHdpZHRoOiAxLFxuICAgICAgICAgIGhlaWdodDogMVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICB0aGlzLnZpZXcuZW5hYmxlZCA9IHRydWU7XG4gICAgICB0aGlzLnZpZXcuZnVsbFdpZHRoID0gZnVsbFdpZHRoO1xuICAgICAgdGhpcy52aWV3LmZ1bGxIZWlnaHQgPSBmdWxsSGVpZ2h0O1xuICAgICAgdGhpcy52aWV3Lm9mZnNldFggPSB4O1xuICAgICAgdGhpcy52aWV3Lm9mZnNldFkgPSB5O1xuICAgICAgdGhpcy52aWV3LndpZHRoID0gd2lkdGg7XG4gICAgICB0aGlzLnZpZXcuaGVpZ2h0ID0gaGVpZ2h0O1xuXG4gICAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSA9PT0gQ0FNRVJBX1BST0pFQ1RJT05fTU9ERS5QRVJTUEVDVElWRSkge1xuICAgICAgICB0aGlzLnNldFBlcnNwZWN0aXZlKHRoaXMubmVhciwgdGhpcy5mYXIsIHRoaXMuZm92LCB0aGlzLmFzcGVjdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNldE9ydGhvZ3JhcGhpYyh0aGlzLmxlZnQsIHRoaXMucnJpZ2h0LCB0aGlzLnRvcCwgdGhpcy5ib3R0b20sIHRoaXMubmVhciwgdGhpcy5mYXIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY2xlYXJWaWV3T2Zmc2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNsZWFyVmlld09mZnNldCgpIHtcbiAgICAgIGlmICh0aGlzLnZpZXcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnZpZXcuZW5hYmxlZCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSA9PT0gQ0FNRVJBX1BST0pFQ1RJT05fTU9ERS5QRVJTUEVDVElWRSkge1xuICAgICAgICB0aGlzLnNldFBlcnNwZWN0aXZlKHRoaXMubmVhciwgdGhpcy5mYXIsIHRoaXMuZm92LCB0aGlzLmFzcGVjdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNldE9ydGhvZ3JhcGhpYyh0aGlzLmxlZnQsIHRoaXMucnJpZ2h0LCB0aGlzLnRvcCwgdGhpcy5ib3R0b20sIHRoaXMubmVhciwgdGhpcy5mYXIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0UGVyc3BlY3RpdmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0UGVyc3BlY3RpdmUobmVhciwgZmFyLCBmb3YsIGFzcGVjdCkge1xuICAgICAgdGhpcy5wcm9qZWN0aW9uTW9kZSA9IENBTUVSQV9QUk9KRUNUSU9OX01PREUuUEVSU1BFQ1RJVkU7XG4gICAgICB0aGlzLmZvdiA9IGZvdjtcbiAgICAgIHRoaXMubmVhciA9IG5lYXI7XG4gICAgICB0aGlzLmZhciA9IGZhcjtcbiAgICAgIHRoaXMuYXNwZWN0ID0gYXNwZWN0O1xuICAgICAgbWF0NC5wZXJzcGVjdGl2ZSh0aGlzLnBlcnNwZWN0aXZlLCB0aGlzLmZvdiAqIERFR18yX1JBRCwgdGhpcy5hc3BlY3QsIHRoaXMubmVhciwgdGhpcy5mYXIpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldE9ydGhvZ3JhcGhpY1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRPcnRob2dyYXBoaWMobCwgciwgdCwgYiwgbmVhciwgZmFyKSB7XG4gICAgICB0aGlzLnByb2plY3Rpb25Nb2RlID0gQ0FNRVJBX1BST0pFQ1RJT05fTU9ERS5PUlRIT0dSQVBISUM7XG4gICAgICB0aGlzLnJyaWdodCA9IHI7XG4gICAgICB0aGlzLmxlZnQgPSBsO1xuICAgICAgdGhpcy50b3AgPSB0O1xuICAgICAgdGhpcy5ib3R0b20gPSBiO1xuICAgICAgdGhpcy5uZWFyID0gbmVhcjtcbiAgICAgIHRoaXMuZmFyID0gZmFyO1xuICAgICAgdmFyIGR4ID0gKHRoaXMucnJpZ2h0IC0gdGhpcy5sZWZ0KSAvICgyICogdGhpcy56b29tKTtcbiAgICAgIHZhciBkeSA9ICh0aGlzLnRvcCAtIHRoaXMuYm90dG9tKSAvICgyICogdGhpcy56b29tKTtcbiAgICAgIHZhciBjeCA9ICh0aGlzLnJyaWdodCArIHRoaXMubGVmdCkgLyAyO1xuICAgICAgdmFyIGN5ID0gKHRoaXMudG9wICsgdGhpcy5ib3R0b20pIC8gMjtcbiAgICAgIHZhciBsZWZ0ID0gY3ggLSBkeDtcbiAgICAgIHZhciByaWdodCA9IGN4ICsgZHg7XG4gICAgICB2YXIgdG9wID0gY3kgKyBkeTtcbiAgICAgIHZhciBib3R0b20gPSBjeSAtIGR5O1xuXG4gICAgICBpZiAodGhpcy52aWV3ICE9PSB1bmRlZmluZWQgJiYgdGhpcy52aWV3LmVuYWJsZWQpIHtcbiAgICAgICAgdmFyIHNjYWxlVyA9ICh0aGlzLnJyaWdodCAtIHRoaXMubGVmdCkgLyB0aGlzLnZpZXcuZnVsbFdpZHRoIC8gdGhpcy56b29tO1xuICAgICAgICB2YXIgc2NhbGVIID0gKHRoaXMudG9wIC0gdGhpcy5ib3R0b20pIC8gdGhpcy52aWV3LmZ1bGxIZWlnaHQgLyB0aGlzLnpvb207XG4gICAgICAgIGxlZnQgKz0gc2NhbGVXICogdGhpcy52aWV3Lm9mZnNldFg7XG4gICAgICAgIHJpZ2h0ID0gbGVmdCArIHNjYWxlVyAqIHRoaXMudmlldy53aWR0aDtcbiAgICAgICAgdG9wIC09IHNjYWxlSCAqIHRoaXMudmlldy5vZmZzZXRZO1xuICAgICAgICBib3R0b20gPSB0b3AgLSBzY2FsZUggKiB0aGlzLnZpZXcuaGVpZ2h0O1xuICAgICAgfVxuXG4gICAgICBtYXQ0Lm9ydGhvKHRoaXMucGVyc3BlY3RpdmUsIGxlZnQsIHJpZ2h0LCB0b3AsIGJvdHRvbSwgbmVhciwgZmFyKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDorr7nva7nm7jmnLrkvY3nva5cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInNldFBvc2l0aW9uXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldFBvc2l0aW9uKHgsIHksIHopIHtcbiAgICAgIHRoaXMuX3NldFBvc2l0aW9uKHgsIHksIHopO1xuXG4gICAgICB0aGlzLnNldEZvY2FsUG9pbnQodGhpcy5mb2NhbFBvaW50KTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDorr7nva7op4bngrnkvY3nva5cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInNldEZvY2FsUG9pbnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0Rm9jYWxQb2ludCh4LCB5LCB6KSB7XG4gICAgICB2YXIgdXAgPSB2ZWMzLmZyb21WYWx1ZXMoMCwgMSwgMCk7XG4gICAgICB0aGlzLmZvY2FsUG9pbnQgPSBjcmVhdGVWZWMzKHgsIHksIHopO1xuXG4gICAgICBpZiAodGhpcy50cmFja2luZ01vZGUgPT09IENBTUVSQV9UUkFDS0lOR19NT0RFLkNJTkVNQVRJQykge1xuICAgICAgICB2YXIgZCA9IHZlYzMuc3VidHJhY3QodmVjMy5jcmVhdGUoKSwgdGhpcy5mb2NhbFBvaW50LCB0aGlzLnBvc2l0aW9uKTtcbiAgICAgICAgeCA9IGRbMF07XG4gICAgICAgIHkgPSBkWzFdO1xuICAgICAgICB6ID0gZFsyXTtcbiAgICAgICAgdmFyIHIgPSB2ZWMzLmxlbmd0aChkKTtcbiAgICAgICAgdmFyIGVsID0gTWF0aC5hc2luKHkgLyByKSAqIFJBRF8yX0RFRztcbiAgICAgICAgdmFyIGF6ID0gOTAgKyBNYXRoLmF0YW4yKHosIHgpICogUkFEXzJfREVHO1xuICAgICAgICB2YXIgbSA9IG1hdDQuY3JlYXRlKCk7XG4gICAgICAgIG1hdDQucm90YXRlWShtLCBtLCBheiAqIERFR18yX1JBRCk7XG4gICAgICAgIG1hdDQucm90YXRlWChtLCBtLCBlbCAqIERFR18yX1JBRCk7XG4gICAgICAgIHVwID0gdmVjMy50cmFuc2Zvcm1NYXQ0KHZlYzMuY3JlYXRlKCksIFswLCAxLCAwXSwgbSk7XG4gICAgICB9XG5cbiAgICAgIG1hdDQuaW52ZXJ0KHRoaXMubWF0cml4LCBtYXQ0Lmxvb2tBdChtYXQ0LmNyZWF0ZSgpLCB0aGlzLnBvc2l0aW9uLCB0aGlzLmZvY2FsUG9pbnQsIHVwKSk7XG5cbiAgICAgIHRoaXMuX2dldEF4ZXMoKTtcblxuICAgICAgdGhpcy5fZ2V0RGlzdGFuY2UoKTtcblxuICAgICAgdGhpcy5fZ2V0QW5nbGVzKCk7XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDlm7rlrprlvZPliY3op4bngrnvvIzmjInmjIflrprot53nprvmlL7nva7nm7jmnLpcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInNldERpc3RhbmNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldERpc3RhbmNlKGQpIHtcbiAgICAgIGlmICh0aGlzLmRpc3RhbmNlID09PSBkIHx8IGQgPCAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5kaXN0YW5jZSA9IGQ7XG5cbiAgICAgIGlmICh0aGlzLmRpc3RhbmNlIDwgMC4wMDAyKSB7XG4gICAgICAgIHRoaXMuZGlzdGFuY2UgPSAwLjAwMDI7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZG9sbHlpbmdTdGVwID0gdGhpcy5kaXN0YW5jZSAvIDEwMDtcbiAgICAgIHZhciBwb3MgPSB2ZWMzLmNyZWF0ZSgpO1xuICAgICAgZCA9IHRoaXMuZGlzdGFuY2U7XG4gICAgICB2YXIgbiA9IHRoaXMuZm9yd2FyZDtcbiAgICAgIHZhciBmID0gdGhpcy5mb2NhbFBvaW50O1xuICAgICAgcG9zWzBdID0gZCAqIG5bMF0gKyBmWzBdO1xuICAgICAgcG9zWzFdID0gZCAqIG5bMV0gKyBmWzFdO1xuICAgICAgcG9zWzJdID0gZCAqIG5bMl0gKyBmWzJdO1xuXG4gICAgICB0aGlzLl9zZXRQb3NpdGlvbihwb3MpO1xuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0TWF4RGlzdGFuY2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0TWF4RGlzdGFuY2UoZCkge1xuICAgICAgdGhpcy5tYXhEaXN0YW5jZSA9IGQ7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0TWluRGlzdGFuY2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0TWluRGlzdGFuY2UoZCkge1xuICAgICAgdGhpcy5taW5EaXN0YW5jZSA9IGQ7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2hhbmdlcyB0aGUgaW5pdGlhbCBhemltdXRoIG9mIHRoZSBjYW1lcmFcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImNoYW5nZUF6aW11dGhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY2hhbmdlQXppbXV0aChheikge1xuICAgICAgdGhpcy5zZXRBemltdXRoKHRoaXMuYXppbXV0aCArIGF6KTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDaGFuZ2VzIHRoZSBpbml0aWFsIGVsZXZhdGlvbiBvZiB0aGUgY2FtZXJhXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJjaGFuZ2VFbGV2YXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY2hhbmdlRWxldmF0aW9uKGVsKSB7XG4gICAgICB0aGlzLnNldEVsZXZhdGlvbih0aGlzLmVsZXZhdGlvbiArIGVsKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDaGFuZ2VzIHRoZSBpbml0aWFsIHJvbGwgb2YgdGhlIGNhbWVyYVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiY2hhbmdlUm9sbFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjaGFuZ2VSb2xsKHJsKSB7XG4gICAgICB0aGlzLnNldFJvbGwodGhpcy5yb2xsICsgcmwpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOiuvue9ruebuOacuuaWueS9jeinku+8jOS4jeWQjOebuOacuuaooeW8j+S4i+mcgOimgemHjeaWsOiuoeeul+ebuOacuuS9jee9ruaIluiAheaYr+inhueCueS9jee9rlxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBlbCB0aGUgYXppbXV0aCBpbiBkZWdyZWVzXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJzZXRBemltdXRoXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldEF6aW11dGgoYXopIHtcbiAgICAgIHRoaXMuYXppbXV0aCA9IGdldEFuZ2xlKGF6KTtcbiAgICAgIHRoaXMuY29tcHV0ZU1hdHJpeCgpO1xuXG4gICAgICB0aGlzLl9nZXRBeGVzKCk7XG5cbiAgICAgIGlmICh0aGlzLnR5cGUgPT09IENBTUVSQV9UWVBFLk9SQklUSU5HIHx8IHRoaXMudHlwZSA9PT0gQ0FNRVJBX1RZUEUuRVhQTE9SSU5HKSB7XG4gICAgICAgIHRoaXMuX2dldFBvc2l0aW9uKCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gQ0FNRVJBX1RZUEUuVFJBQ0tJTkcpIHtcbiAgICAgICAgdGhpcy5fZ2V0Rm9jYWxQb2ludCgpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0QXppbXV0aFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRBemltdXRoKCkge1xuICAgICAgcmV0dXJuIHRoaXMuYXppbXV0aDtcbiAgICB9XG4gICAgLyoqXG4gICAgICog6K6+572u55u45py65pa55L2N6KeS77yM5LiN5ZCM55u45py65qih5byP5LiL6ZyA6KaB6YeN5paw6K6h566X55u45py65L2N572u5oiW6ICF5piv6KeG54K55L2N572uXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IGVsIHRoZSBlbGV2YXRpb24gaW4gZGVncmVlc1xuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwic2V0RWxldmF0aW9uXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldEVsZXZhdGlvbihlbCkge1xuICAgICAgdGhpcy5lbGV2YXRpb24gPSBnZXRBbmdsZShlbCk7XG4gICAgICB0aGlzLmNvbXB1dGVNYXRyaXgoKTtcblxuICAgICAgdGhpcy5fZ2V0QXhlcygpO1xuXG4gICAgICBpZiAodGhpcy50eXBlID09PSBDQU1FUkFfVFlQRS5PUkJJVElORyB8fCB0aGlzLnR5cGUgPT09IENBTUVSQV9UWVBFLkVYUExPUklORykge1xuICAgICAgICB0aGlzLl9nZXRQb3NpdGlvbigpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09IENBTUVSQV9UWVBFLlRSQUNLSU5HKSB7XG4gICAgICAgIHRoaXMuX2dldEZvY2FsUG9pbnQoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOiuvue9ruebuOacuuaWueS9jeinku+8jOS4jeWQjOebuOacuuaooeW8j+S4i+mcgOimgemHjeaWsOiuoeeul+ebuOacuuS9jee9ruaIluiAheaYr+inhueCueS9jee9rlxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBhbmdsZSB0aGUgcm9sbCBhbmdsZVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwic2V0Um9sbFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRSb2xsKGFuZ2xlKSB7XG4gICAgICB0aGlzLnJvbGwgPSBnZXRBbmdsZShhbmdsZSk7XG4gICAgICB0aGlzLmNvbXB1dGVNYXRyaXgoKTtcblxuICAgICAgdGhpcy5fZ2V0QXhlcygpO1xuXG4gICAgICBpZiAodGhpcy50eXBlID09PSBDQU1FUkFfVFlQRS5PUkJJVElORyB8fCB0aGlzLnR5cGUgPT09IENBTUVSQV9UWVBFLkVYUExPUklORykge1xuICAgICAgICB0aGlzLl9nZXRQb3NpdGlvbigpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09IENBTUVSQV9UWVBFLlRSQUNLSU5HKSB7XG4gICAgICAgIHRoaXMuX2dldEZvY2FsUG9pbnQoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENoYW5nZXMgdGhlIGF6aW11dGggYW5kIGVsZXZhdGlvbiB3aXRoIHJlc3BlY3QgdG8gdGhlIGN1cnJlbnQgY2FtZXJhIGF4ZXNcbiAgICAgKiBAcGFyYW0ge051bWJlcn0gYXppbXV0aCB0aGUgcmVsYXRpdmUgYXppbXV0aFxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBlbGV2YXRpb24gdGhlIHJlbGF0aXZlIGVsZXZhdGlvblxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSByb2xsIHRoZSByZWxhdGl2ZSByb2xsXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJyb3RhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcm90YXRlKGF6aW11dGgsIGVsZXZhdGlvbiwgcm9sbCkge1xuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gQ0FNRVJBX1RZUEUuRVhQTE9SSU5HKSB7XG4gICAgICAgIGF6aW11dGggPSBnZXRBbmdsZShhemltdXRoKTtcbiAgICAgICAgZWxldmF0aW9uID0gZ2V0QW5nbGUoZWxldmF0aW9uKTtcbiAgICAgICAgcm9sbCA9IGdldEFuZ2xlKHJvbGwpO1xuICAgICAgICB2YXIgcm90WCA9IHF1YXQuc2V0QXhpc0FuZ2xlKHF1YXQuY3JlYXRlKCksIFsxLCAwLCAwXSwgKHRoaXMucm90YXRlV29ybGQgPyAxIDogLTEpICogZWxldmF0aW9uICogREVHXzJfUkFEKTtcbiAgICAgICAgdmFyIHJvdFkgPSBxdWF0LnNldEF4aXNBbmdsZShxdWF0LmNyZWF0ZSgpLCBbMCwgMSwgMF0sICh0aGlzLnJvdGF0ZVdvcmxkID8gMSA6IC0xKSAqIGF6aW11dGggKiBERUdfMl9SQUQpO1xuICAgICAgICB2YXIgcm90WiA9IHF1YXQuc2V0QXhpc0FuZ2xlKHF1YXQuY3JlYXRlKCksIFswLCAwLCAxXSwgcm9sbCAqIERFR18yX1JBRCk7XG4gICAgICAgIHZhciByb3RRID0gcXVhdC5tdWx0aXBseShxdWF0LmNyZWF0ZSgpLCByb3RZLCByb3RYKTtcbiAgICAgICAgcm90USA9IHF1YXQubXVsdGlwbHkocXVhdC5jcmVhdGUoKSwgcm90USwgcm90Wik7XG4gICAgICAgIHZhciByb3RNYXRyaXggPSBtYXQ0LmZyb21RdWF0KG1hdDQuY3JlYXRlKCksIHJvdFEpO1xuICAgICAgICBtYXQ0LnRyYW5zbGF0ZSh0aGlzLm1hdHJpeCwgdGhpcy5tYXRyaXgsIFswLCAwLCAtdGhpcy5kaXN0YW5jZV0pO1xuICAgICAgICBtYXQ0Lm11bHRpcGx5KHRoaXMubWF0cml4LCB0aGlzLm1hdHJpeCwgcm90TWF0cml4KTtcbiAgICAgICAgbWF0NC50cmFuc2xhdGUodGhpcy5tYXRyaXgsIHRoaXMubWF0cml4LCBbMCwgMCwgdGhpcy5kaXN0YW5jZV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKE1hdGguYWJzKHRoaXMuZWxldmF0aW9uICsgZWxldmF0aW9uKSA+IDkwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZWxFbGV2YXRpb24gPSBnZXRBbmdsZShlbGV2YXRpb24pO1xuICAgICAgICB0aGlzLnJlbEF6aW11dGggPSBnZXRBbmdsZShhemltdXRoKTtcbiAgICAgICAgdGhpcy5yZWxSb2xsID0gZ2V0QW5nbGUocm9sbCk7XG4gICAgICAgIHRoaXMuZWxldmF0aW9uICs9IHRoaXMucmVsRWxldmF0aW9uO1xuICAgICAgICB0aGlzLmF6aW11dGggKz0gdGhpcy5yZWxBemltdXRoO1xuICAgICAgICB0aGlzLnJvbGwgKz0gdGhpcy5yZWxSb2xsO1xuICAgICAgICB0aGlzLmNvbXB1dGVNYXRyaXgoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fZ2V0QXhlcygpO1xuXG4gICAgICBpZiAodGhpcy50eXBlID09PSBDQU1FUkFfVFlQRS5PUkJJVElORyB8fCB0aGlzLnR5cGUgPT09IENBTUVSQV9UWVBFLkVYUExPUklORykge1xuICAgICAgICB0aGlzLl9nZXRQb3NpdGlvbigpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09IENBTUVSQV9UWVBFLlRSQUNLSU5HKSB7XG4gICAgICAgIHRoaXMuX2dldEZvY2FsUG9pbnQoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fdXBkYXRlKCk7XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDmsr/msLTlubMocmlnaHQpICYg5Z6C55u0KHVwKeW5s+enu+ebuOaculxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwicGFuXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhbih0eCwgdHkpIHtcbiAgICAgIHZhciBjb29yZHMgPSBjcmVhdGVWZWMzKHR4LCB0eSwgMCk7XG4gICAgICB2YXIgcG9zID0gdmVjMy5jbG9uZSh0aGlzLnBvc2l0aW9uKTtcbiAgICAgIHZlYzMuYWRkKHBvcywgcG9zLCB2ZWMzLnNjYWxlKHZlYzMuY3JlYXRlKCksIHRoaXMucmlnaHQsIGNvb3Jkc1swXSkpO1xuICAgICAgdmVjMy5hZGQocG9zLCBwb3MsIHZlYzMuc2NhbGUodmVjMy5jcmVhdGUoKSwgdGhpcy51cCwgY29vcmRzWzFdKSk7XG5cbiAgICAgIHRoaXMuX3NldFBvc2l0aW9uKHBvcyk7XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDmsr8gbiDovbTnp7vliqjvvIzlvZPot53nprvop4bngrnov5zml7bnp7vliqjpgJ/luqbovoPlv6vvvIznprvop4bngrnotorov5HpgJ/luqbotormhaJcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImRvbGx5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRvbGx5KHZhbHVlKSB7XG4gICAgICB2YXIgbiA9IHRoaXMuZm9yd2FyZDtcbiAgICAgIHZhciBwb3MgPSB2ZWMzLmNsb25lKHRoaXMucG9zaXRpb24pO1xuICAgICAgdmFyIHN0ZXAgPSB2YWx1ZSAqIHRoaXMuZG9sbHlpbmdTdGVwO1xuICAgICAgdmFyIHVwZGF0ZWREaXN0YW5jZSA9IHRoaXMuZGlzdGFuY2UgKyB2YWx1ZSAqIHRoaXMuZG9sbHlpbmdTdGVwOyAvLyDpmZDliLbop4bngrnot53nprvojIPlm7RcblxuICAgICAgc3RlcCA9IE1hdGgubWF4KE1hdGgubWluKHVwZGF0ZWREaXN0YW5jZSwgdGhpcy5tYXhEaXN0YW5jZSksIHRoaXMubWluRGlzdGFuY2UpIC0gdGhpcy5kaXN0YW5jZTtcbiAgICAgIHBvc1swXSArPSBzdGVwICogblswXTtcbiAgICAgIHBvc1sxXSArPSBzdGVwICogblsxXTtcbiAgICAgIHBvc1syXSArPSBzdGVwICogblsyXTtcblxuICAgICAgdGhpcy5fc2V0UG9zaXRpb24ocG9zKTtcblxuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gQ0FNRVJBX1RZUEUuT1JCSVRJTkcgfHwgdGhpcy50eXBlID09PSBDQU1FUkFfVFlQRS5FWFBMT1JJTkcpIHtcbiAgICAgICAgLy8g6YeN5paw6K6h566X6KeG54K56Led56a7XG4gICAgICAgIHRoaXMuX2dldERpc3RhbmNlKCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gQ0FNRVJBX1RZUEUuVFJBQ0tJTkcpIHtcbiAgICAgICAgLy8g5L+d5oyB6KeG6Led77yM56e75Yqo6KeG54K55L2N572uXG4gICAgICAgIHZlYzMuYWRkKHRoaXMuZm9jYWxQb2ludCwgcG9zLCB0aGlzLmRpc3RhbmNlVmVjdG9yKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNyZWF0ZUxhbmRtYXJrXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZUxhbmRtYXJrKG5hbWUsIHBhcmFtcykge1xuICAgICAgdmFyIGNhbWVyYSA9IHRoaXMuY2xvbmUoKTtcbiAgICAgIGNhbWVyYS5zZXRQb3NpdGlvbihwYXJhbXMucG9zaXRpb24pO1xuICAgICAgY2FtZXJhLnNldEZvY2FsUG9pbnQocGFyYW1zLmZvY2FsUG9pbnQpO1xuXG4gICAgICBpZiAocGFyYW1zLnJvbGwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjYW1lcmEuc2V0Um9sbChwYXJhbXMucm9sbCk7XG4gICAgICB9XG5cbiAgICAgIHZhciBsYW5kbWFyayA9IG5ldyBMYW5kbWFyayhuYW1lLCBjYW1lcmEpO1xuICAgICAgdGhpcy5sYW5kbWFya3MucHVzaChsYW5kbWFyayk7XG4gICAgICByZXR1cm4gbGFuZG1hcms7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldExhbmRtYXJrXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldExhbmRtYXJrKG5hbWUpIHtcbiAgICAgIHZhciBsYW5kbWFyayA9IG5ldyBMYW5kbWFyayhuYW1lLCB0aGlzKTtcbiAgICAgIHRoaXMubGFuZG1hcmtzLnB1c2gobGFuZG1hcmspO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdvdG9MYW5kbWFya1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnb3RvTGFuZG1hcmsobmFtZSkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgdmFyIGR1cmF0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAxMDAwO1xuICAgICAgdmFyIGxhbmRtYXJrID0gdGhpcy5sYW5kbWFya3MuZmluZChmdW5jdGlvbiAobCkge1xuICAgICAgICByZXR1cm4gbC5uYW1lID09PSBuYW1lO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChsYW5kbWFyaykge1xuICAgICAgICBpZiAoZHVyYXRpb24gPT09IDApIHtcbiAgICAgICAgICBsYW5kbWFyay5yZXRyaWV2ZSh0aGlzKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5sYW5kbWFya0FuaW1hdGlvbklEICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5sYW5kbWFya0FuaW1hdGlvbklEKTtcbiAgICAgICAgfSAvLyBUT0RPOiBkbyBub3QgcHJvY2VzcyBldmVudHMgZHVyaW5nIGFuaW1hdGlvblxuXG5cbiAgICAgICAgdGhpcy5pbnRlcmFjdG9yLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgdmFyIGRlc3RQb3NpdGlvbiA9IGxhbmRtYXJrLmdldFBvc2l0aW9uKCk7XG4gICAgICAgIHZhciBkZXN0Rm9jYWxQb2ludCA9IGxhbmRtYXJrLmdldEZvY2FsUG9pbnQoKTtcbiAgICAgICAgdmFyIGRlc3RSb2xsID0gbGFuZG1hcmsuZ2V0Um9sbCgpO1xuICAgICAgICB2YXIgdGltZVN0YXJ0O1xuXG4gICAgICAgIHZhciBhbmltYXRlID0gZnVuY3Rpb24gYW5pbWF0ZSh0aW1lc3RhbXApIHtcbiAgICAgICAgICBpZiAodGltZVN0YXJ0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRpbWVTdGFydCA9IHRpbWVzdGFtcDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgZWxhcHNlZCA9IHRpbWVzdGFtcCAtIHRpbWVTdGFydDsgLy8gVE9ETzogdXNlIGJldHRlciBlYXNlIGZ1bmN0aW9uXG5cbiAgICAgICAgICB2YXIgdCA9ICgxIC0gTWF0aC5jb3MoZWxhcHNlZCAvIGR1cmF0aW9uICogTWF0aC5QSSkpIC8gMjtcbiAgICAgICAgICB2YXIgaW50ZXJGb2NhbFBvaW50ID0gdmVjMy5jcmVhdGUoKTtcbiAgICAgICAgICB2YXIgaW50ZXJQb3NpdGlvbiA9IHZlYzMuY3JlYXRlKCk7XG4gICAgICAgICAgdmFyIGludGVyUm9sbCA9IDA7XG4gICAgICAgICAgdmVjMy5sZXJwKGludGVyRm9jYWxQb2ludCwgX3RoaXMuZm9jYWxQb2ludCwgZGVzdEZvY2FsUG9pbnQsIHQpO1xuICAgICAgICAgIHZlYzMubGVycChpbnRlclBvc2l0aW9uLCBfdGhpcy5wb3NpdGlvbiwgZGVzdFBvc2l0aW9uLCB0KTtcbiAgICAgICAgICBpbnRlclJvbGwgPSBfdGhpcy5yb2xsICogKDEgLSB0KSArIGRlc3RSb2xsICogdDtcblxuICAgICAgICAgIF90aGlzLnNldEZvY2FsUG9pbnQoaW50ZXJGb2NhbFBvaW50KTtcblxuICAgICAgICAgIF90aGlzLnNldFBvc2l0aW9uKGludGVyUG9zaXRpb24pO1xuXG4gICAgICAgICAgX3RoaXMuc2V0Um9sbChpbnRlclJvbGwpO1xuXG4gICAgICAgICAgX3RoaXMuY29tcHV0ZU1hdHJpeCgpO1xuXG4gICAgICAgICAgdmFyIGRpc3QgPSB2ZWMzLmRpc3QoaW50ZXJGb2NhbFBvaW50LCBkZXN0Rm9jYWxQb2ludCkgKyB2ZWMzLmRpc3QoaW50ZXJQb3NpdGlvbiwgZGVzdFBvc2l0aW9uKTtcblxuICAgICAgICAgIGlmIChkaXN0ID4gMC4wMSkgey8vXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF90aGlzLnNldEZvY2FsUG9pbnQoaW50ZXJGb2NhbFBvaW50KTtcblxuICAgICAgICAgICAgX3RoaXMuc2V0UG9zaXRpb24oaW50ZXJQb3NpdGlvbik7XG5cbiAgICAgICAgICAgIF90aGlzLnNldFJvbGwoaW50ZXJSb2xsKTtcblxuICAgICAgICAgICAgX3RoaXMuY29tcHV0ZU1hdHJpeCgpO1xuXG4gICAgICAgICAgICBfdGhpcy5pbnRlcmFjdG9yLmNvbm5lY3QoKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChlbGFwc2VkIDwgZHVyYXRpb24pIHtcbiAgICAgICAgICAgIF90aGlzLmxhbmRtYXJrQW5pbWF0aW9uSUQgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGUpO1xuICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiDmoLnmja7nm7jmnLrnn6npmLXph43mlrDorqHnrpflkITnp43nm7jmnLrlj4LmlbBcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcIl91cGRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gX3VwZGF0ZSgpIHtcbiAgICAgIHRoaXMuX2dldEF4ZXMoKTtcblxuICAgICAgdGhpcy5fZ2V0UG9zaXRpb24oKTtcblxuICAgICAgdGhpcy5fZ2V0RGlzdGFuY2UoKTtcblxuICAgICAgdGhpcy5fZ2V0QW5nbGVzKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOiuoeeul+ebuOacuuefqemYtVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcHV0ZU1hdHJpeFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wdXRlTWF0cml4KCkge1xuICAgICAgdmFyIHJvdFg7XG4gICAgICB2YXIgcm90WTsgLy8g5L2/55So5Zub5YWD5pWw5o+P6L+wIDNEIOaXi+i9rFxuICAgICAgLy8gQHNlZSBodHRwczovL3hpYW9pdmVyLmdpdGh1Yi5pby9jb2RpbmcvMjAxOC8xMi8yOC9DYW1lcmEtJUU4JUFFJUJFJUU4JUFFJUExLSVFNCVCOCU4MC5odG1sXG5cbiAgICAgIHZhciByb3RaID0gcXVhdC5zZXRBeGlzQW5nbGUocXVhdC5jcmVhdGUoKSwgWzAsIDAsIDFdLCB0aGlzLnJvbGwgKiBERUdfMl9SQUQpO1xuICAgICAgbWF0NC5pZGVudGl0eSh0aGlzLm1hdHJpeCk7IC8vIG9ubHkgY29uc2lkZXIgSENTIGZvciBFWFBMT1JJTkcgYW5kIE9SQklUSU5HIGNhbWVyYXNcblxuICAgICAgcm90WCA9IHF1YXQuc2V0QXhpc0FuZ2xlKHF1YXQuY3JlYXRlKCksIFsxLCAwLCAwXSwgKHRoaXMucm90YXRlV29ybGQgJiYgdGhpcy50eXBlICE9PSBDQU1FUkFfVFlQRS5UUkFDS0lORyB8fCB0aGlzLnR5cGUgPT09IENBTUVSQV9UWVBFLlRSQUNLSU5HID8gMSA6IC0xKSAqIHRoaXMuZWxldmF0aW9uICogREVHXzJfUkFEKTtcbiAgICAgIHJvdFkgPSBxdWF0LnNldEF4aXNBbmdsZShxdWF0LmNyZWF0ZSgpLCBbMCwgMSwgMF0sICh0aGlzLnJvdGF0ZVdvcmxkICYmIHRoaXMudHlwZSAhPT0gQ0FNRVJBX1RZUEUuVFJBQ0tJTkcgfHwgdGhpcy50eXBlID09PSBDQU1FUkFfVFlQRS5UUkFDS0lORyA/IDEgOiAtMSkgKiB0aGlzLmF6aW11dGggKiBERUdfMl9SQUQpO1xuICAgICAgdmFyIHJvdFEgPSBxdWF0Lm11bHRpcGx5KHF1YXQuY3JlYXRlKCksIHJvdFksIHJvdFgpO1xuICAgICAgcm90USA9IHF1YXQubXVsdGlwbHkocXVhdC5jcmVhdGUoKSwgcm90USwgcm90Wik7XG4gICAgICB2YXIgcm90TWF0cml4ID0gbWF0NC5mcm9tUXVhdChtYXQ0LmNyZWF0ZSgpLCByb3RRKTtcblxuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gQ0FNRVJBX1RZUEUuT1JCSVRJTkcgfHwgdGhpcy50eXBlID09PSBDQU1FUkFfVFlQRS5FWFBMT1JJTkcpIHtcbiAgICAgICAgbWF0NC50cmFuc2xhdGUodGhpcy5tYXRyaXgsIHRoaXMubWF0cml4LCB0aGlzLmZvY2FsUG9pbnQpO1xuICAgICAgICBtYXQ0Lm11bHRpcGx5KHRoaXMubWF0cml4LCB0aGlzLm1hdHJpeCwgcm90TWF0cml4KTtcbiAgICAgICAgbWF0NC50cmFuc2xhdGUodGhpcy5tYXRyaXgsIHRoaXMubWF0cml4LCBbMCwgMCwgdGhpcy5kaXN0YW5jZV0pO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09IENBTUVSQV9UWVBFLlRSQUNLSU5HKSB7XG4gICAgICAgIG1hdDQudHJhbnNsYXRlKHRoaXMubWF0cml4LCB0aGlzLm1hdHJpeCwgdGhpcy5wb3NpdGlvbik7XG4gICAgICAgIG1hdDQubXVsdGlwbHkodGhpcy5tYXRyaXgsIHRoaXMubWF0cml4LCByb3RNYXRyaXgpO1xuICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBjYW1lcmEgcG9zaXRpb24gaW4gdGhlIGNhbWVyYSBtYXRyaXhcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcIl9zZXRQb3NpdGlvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfc2V0UG9zaXRpb24oeCwgeSwgeikge1xuICAgICAgdGhpcy5wb3NpdGlvbiA9IGNyZWF0ZVZlYzMoeCwgeSwgeik7XG4gICAgICB2YXIgbSA9IHRoaXMubWF0cml4O1xuICAgICAgbVsxMl0gPSB0aGlzLnBvc2l0aW9uWzBdO1xuICAgICAgbVsxM10gPSB0aGlzLnBvc2l0aW9uWzFdO1xuICAgICAgbVsxNF0gPSB0aGlzLnBvc2l0aW9uWzJdO1xuICAgICAgbVsxNV0gPSAxO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZWNhbGN1bGF0ZXMgYXhlcyBiYXNlZCBvbiB0aGUgY3VycmVudCBtYXRyaXhcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcIl9nZXRBeGVzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9nZXRBeGVzKCkge1xuICAgICAgdmVjMy5jb3B5KHRoaXMucmlnaHQsIGNyZWF0ZVZlYzModmVjNC50cmFuc2Zvcm1NYXQ0KHZlYzQuY3JlYXRlKCksIFsxLCAwLCAwLCAwXSwgdGhpcy5tYXRyaXgpKSk7XG4gICAgICB2ZWMzLmNvcHkodGhpcy51cCwgY3JlYXRlVmVjMyh2ZWM0LnRyYW5zZm9ybU1hdDQodmVjNC5jcmVhdGUoKSwgWzAsIDEsIDAsIDBdLCB0aGlzLm1hdHJpeCkpKTtcbiAgICAgIHZlYzMuY29weSh0aGlzLmZvcndhcmQsIGNyZWF0ZVZlYzModmVjNC50cmFuc2Zvcm1NYXQ0KHZlYzQuY3JlYXRlKCksIFswLCAwLCAxLCAwXSwgdGhpcy5tYXRyaXgpKSk7XG4gICAgICB2ZWMzLm5vcm1hbGl6ZSh0aGlzLnJpZ2h0LCB0aGlzLnJpZ2h0KTtcbiAgICAgIHZlYzMubm9ybWFsaXplKHRoaXMudXAsIHRoaXMudXApO1xuICAgICAgdmVjMy5ub3JtYWxpemUodGhpcy5mb3J3YXJkLCB0aGlzLmZvcndhcmQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZWNhbGN1bGF0ZXMgZXVsZXIgYW5nbGVzIGJhc2VkIG9uIHRoZSBjdXJyZW50IHN0YXRlXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJfZ2V0QW5nbGVzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9nZXRBbmdsZXMoKSB7XG4gICAgICAvLyBSZWNhbGN1bGF0ZXMgYW5nbGVzXG4gICAgICB2YXIgeCA9IHRoaXMuZGlzdGFuY2VWZWN0b3JbMF07XG4gICAgICB2YXIgeSA9IHRoaXMuZGlzdGFuY2VWZWN0b3JbMV07XG4gICAgICB2YXIgeiA9IHRoaXMuZGlzdGFuY2VWZWN0b3JbMl07XG4gICAgICB2YXIgciA9IHZlYzMubGVuZ3RoKHRoaXMuZGlzdGFuY2VWZWN0b3IpOyAvLyBGQVNUIEZBSUw6IElmIHRoZXJlIGlzIG5vIGRpc3RhbmNlIHdlIGNhbm5vdCBjb21wdXRlIGFuZ2xlc1xuXG4gICAgICBpZiAociA9PT0gMCkge1xuICAgICAgICB0aGlzLmVsZXZhdGlvbiA9IDA7XG4gICAgICAgIHRoaXMuYXppbXV0aCA9IDA7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gQ0FNRVJBX1RZUEUuVFJBQ0tJTkcpIHtcbiAgICAgICAgdGhpcy5lbGV2YXRpb24gPSBNYXRoLmFzaW4oeSAvIHIpICogUkFEXzJfREVHO1xuICAgICAgICB0aGlzLmF6aW11dGggPSBNYXRoLmF0YW4yKC14LCAteikgKiBSQURfMl9ERUc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5yb3RhdGVXb3JsZCkge1xuICAgICAgICAgIHRoaXMuZWxldmF0aW9uID0gTWF0aC5hc2luKHkgLyByKSAqIFJBRF8yX0RFRztcbiAgICAgICAgICB0aGlzLmF6aW11dGggPSBNYXRoLmF0YW4yKC14LCAteikgKiBSQURfMl9ERUc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5lbGV2YXRpb24gPSAtTWF0aC5hc2luKHkgLyByKSAqIFJBRF8yX0RFRztcbiAgICAgICAgICB0aGlzLmF6aW11dGggPSAtTWF0aC5hdGFuMigteCwgLXopICogUkFEXzJfREVHO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOmHjeaWsOiuoeeul+ebuOacuuS9jee9ru+8jOWPquaciSBPUkJJVElORyDmqKHlvI/nm7jmnLrkvY3nva7miY3kvJrlj5HnlJ/lj5jljJZcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcIl9nZXRQb3NpdGlvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfZ2V0UG9zaXRpb24oKSB7XG4gICAgICB2ZWMzLmNvcHkodGhpcy5wb3NpdGlvbiwgY3JlYXRlVmVjMyh2ZWM0LnRyYW5zZm9ybU1hdDQodmVjNC5jcmVhdGUoKSwgWzAsIDAsIDAsIDFdLCB0aGlzLm1hdHJpeCkpKTsgLy8g55u45py65L2N572u5Y+Y5YyW77yM6ZyA6KaB6YeN5paw6K6h566X6KeG6LedXG5cbiAgICAgIHRoaXMuX2dldERpc3RhbmNlKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOmHjeaWsOiuoeeul+inhueCue+8jOWPquaciSBUUkFDS0lORyDmqKHlvI/op4bngrnmiY3kvJrlj5HnlJ/lj5jljJZcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcIl9nZXRGb2NhbFBvaW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9nZXRGb2NhbFBvaW50KCkge1xuICAgICAgdmVjMy50cmFuc2Zvcm1NYXQzKHRoaXMuZGlzdGFuY2VWZWN0b3IsIFswLCAwLCAtdGhpcy5kaXN0YW5jZV0sIG1hdDMuZnJvbU1hdDQobWF0My5jcmVhdGUoKSwgdGhpcy5tYXRyaXgpKTtcbiAgICAgIHZlYzMuYWRkKHRoaXMuZm9jYWxQb2ludCwgdGhpcy5wb3NpdGlvbiwgdGhpcy5kaXN0YW5jZVZlY3Rvcik7IC8vIOinhueCueWPmOWMlu+8jOmcgOimgemHjeaWsOiuoeeul+inhui3nVxuXG4gICAgICB0aGlzLl9nZXREaXN0YW5jZSgpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDph43mlrDorqHnrpfop4bot51cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcIl9nZXREaXN0YW5jZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfZ2V0RGlzdGFuY2UoKSB7XG4gICAgICB0aGlzLmRpc3RhbmNlVmVjdG9yID0gdmVjMy5zdWJ0cmFjdCh2ZWMzLmNyZWF0ZSgpLCB0aGlzLmZvY2FsUG9pbnQsIHRoaXMucG9zaXRpb24pO1xuICAgICAgdGhpcy5kaXN0YW5jZSA9IHZlYzMubGVuZ3RoKHRoaXMuZGlzdGFuY2VWZWN0b3IpO1xuICAgICAgdGhpcy5kb2xseWluZ1N0ZXAgPSB0aGlzLmRpc3RhbmNlIC8gMTAwO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBDYW1lcmE7XG59KCksIF9jbGFzczMuUHJvamVjdGlvbk1vZGUgPSB7XG4gIE9SVEhPR1JBUEhJQzogJ09SVEhPR1JBUEhJQycsXG4gIFBFUlNQRUNUSVZFOiAnUEVSU1BFQ1RJVkUnXG59LCBfdGVtcCksIChfZGVzY3JpcHRvciA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiaW50ZXJhY3RvclwiLCBbX2RlYzJdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q2FtZXJhLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/camera/Camera.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/camera/Landmark.js":
/*!*********************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/camera/Landmark.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 Landmark; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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 gl_matrix__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n\n\n\n\n/**\n * 保存相机状态,便于后续在多个 Landmark 间移动\n */\nvar Landmark = /*#__PURE__*/function () {\n function Landmark(name, c) {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, Landmark);\n\n this.name = void 0;\n this.matrix = void 0;\n this.right = void 0;\n this.up = void 0;\n this.forward = void 0;\n this.position = void 0;\n this.focalPoint = void 0;\n this.distanceVector = void 0;\n this.distance = void 0;\n this.dollyingStep = void 0;\n this.azimuth = 0;\n this.elevation = 0;\n this.roll = 0;\n this.relAzimuth = 0;\n this.relElevation = 0;\n this.relRoll = 0;\n this.name = name;\n this.matrix = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"mat4\"].clone(c.matrix);\n this.right = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].clone(c.right);\n this.up = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].clone(c.up);\n this.forward = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].clone(c.forward);\n this.position = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].clone(c.position);\n this.focalPoint = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].clone(c.focalPoint);\n this.distanceVector = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].clone(c.distanceVector);\n this.azimuth = c.azimuth;\n this.elevation = c.elevation;\n this.roll = c.roll;\n this.relAzimuth = c.relAzimuth;\n this.relElevation = c.relElevation;\n this.relRoll = c.relRoll;\n this.dollyingStep = c.dollyingStep;\n this.distance = c.distance;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(Landmark, [{\n key: \"getPosition\",\n value: function getPosition() {\n return this.position;\n }\n }, {\n key: \"getFocalPoint\",\n value: function getFocalPoint() {\n return this.focalPoint;\n }\n }, {\n key: \"getRoll\",\n value: function getRoll() {\n return this.roll;\n }\n }, {\n key: \"retrieve\",\n value: function retrieve(c) {\n c.matrix = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"mat4\"].copy(c.matrix, this.matrix);\n c.right = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(c.right, this.right);\n c.up = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(c.up, this.up);\n c.forward = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(c.forward, this.forward);\n c.position = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(c.position, this.position);\n c.focalPoint = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(c.focalPoint, this.focalPoint);\n c.distanceVector = gl_matrix__WEBPACK_IMPORTED_MODULE_2__[\"vec3\"].copy(c.distanceVector, this.distanceVector);\n c.azimuth = this.azimuth;\n c.elevation = this.elevation;\n c.roll = this.roll;\n c.relAzimuth = this.relAzimuth;\n c.relElevation = this.relElevation;\n c.relRoll = this.relRoll;\n c.dollyingStep = this.dollyingStep;\n c.distance = this.distance;\n }\n }]);\n\n return Landmark;\n}();\n\n\n//# sourceMappingURL=Landmark.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL2NhbWVyYS9MYW5kbWFyay5qcz8wMDkxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ047QUFDdkI7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLDhDQUFJO0FBQ3RCLGlCQUFpQiw4Q0FBSTtBQUNyQixjQUFjLDhDQUFJO0FBQ2xCLG1CQUFtQiw4Q0FBSTtBQUN2QixvQkFBb0IsOENBQUk7QUFDeEIsc0JBQXNCLDhDQUFJO0FBQzFCLDBCQUEwQiw4Q0FBSTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxpQkFBaUIsOENBQUk7QUFDckIsZ0JBQWdCLDhDQUFJO0FBQ3BCLGFBQWEsOENBQUk7QUFDakIsa0JBQWtCLDhDQUFJO0FBQ3RCLG1CQUFtQiw4Q0FBSTtBQUN2QixxQkFBcUIsOENBQUk7QUFDekIseUJBQXlCLDhDQUFJO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDOztBQUU4QjtBQUMvQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHVAMC41LjVAQGFudHYvZy13ZWJncHUvZXMvY2FtZXJhL0xhbmRtYXJrLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IHsgbWF0NCwgdmVjMyB9IGZyb20gJ2dsLW1hdHJpeCc7XG5cbi8qKlxuICog5L+d5a2Y55u45py654q25oCB77yM5L6/5LqO5ZCO57ut5Zyo5aSa5LiqIExhbmRtYXJrIOmXtOenu+WKqFxuICovXG52YXIgTGFuZG1hcmsgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBMYW5kbWFyayhuYW1lLCBjKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIExhbmRtYXJrKTtcblxuICAgIHRoaXMubmFtZSA9IHZvaWQgMDtcbiAgICB0aGlzLm1hdHJpeCA9IHZvaWQgMDtcbiAgICB0aGlzLnJpZ2h0ID0gdm9pZCAwO1xuICAgIHRoaXMudXAgPSB2b2lkIDA7XG4gICAgdGhpcy5mb3J3YXJkID0gdm9pZCAwO1xuICAgIHRoaXMucG9zaXRpb24gPSB2b2lkIDA7XG4gICAgdGhpcy5mb2NhbFBvaW50ID0gdm9pZCAwO1xuICAgIHRoaXMuZGlzdGFuY2VWZWN0b3IgPSB2b2lkIDA7XG4gICAgdGhpcy5kaXN0YW5jZSA9IHZvaWQgMDtcbiAgICB0aGlzLmRvbGx5aW5nU3RlcCA9IHZvaWQgMDtcbiAgICB0aGlzLmF6aW11dGggPSAwO1xuICAgIHRoaXMuZWxldmF0aW9uID0gMDtcbiAgICB0aGlzLnJvbGwgPSAwO1xuICAgIHRoaXMucmVsQXppbXV0aCA9IDA7XG4gICAgdGhpcy5yZWxFbGV2YXRpb24gPSAwO1xuICAgIHRoaXMucmVsUm9sbCA9IDA7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLm1hdHJpeCA9IG1hdDQuY2xvbmUoYy5tYXRyaXgpO1xuICAgIHRoaXMucmlnaHQgPSB2ZWMzLmNsb25lKGMucmlnaHQpO1xuICAgIHRoaXMudXAgPSB2ZWMzLmNsb25lKGMudXApO1xuICAgIHRoaXMuZm9yd2FyZCA9IHZlYzMuY2xvbmUoYy5mb3J3YXJkKTtcbiAgICB0aGlzLnBvc2l0aW9uID0gdmVjMy5jbG9uZShjLnBvc2l0aW9uKTtcbiAgICB0aGlzLmZvY2FsUG9pbnQgPSB2ZWMzLmNsb25lKGMuZm9jYWxQb2ludCk7XG4gICAgdGhpcy5kaXN0YW5jZVZlY3RvciA9IHZlYzMuY2xvbmUoYy5kaXN0YW5jZVZlY3Rvcik7XG4gICAgdGhpcy5hemltdXRoID0gYy5hemltdXRoO1xuICAgIHRoaXMuZWxldmF0aW9uID0gYy5lbGV2YXRpb247XG4gICAgdGhpcy5yb2xsID0gYy5yb2xsO1xuICAgIHRoaXMucmVsQXppbXV0aCA9IGMucmVsQXppbXV0aDtcbiAgICB0aGlzLnJlbEVsZXZhdGlvbiA9IGMucmVsRWxldmF0aW9uO1xuICAgIHRoaXMucmVsUm9sbCA9IGMucmVsUm9sbDtcbiAgICB0aGlzLmRvbGx5aW5nU3RlcCA9IGMuZG9sbHlpbmdTdGVwO1xuICAgIHRoaXMuZGlzdGFuY2UgPSBjLmRpc3RhbmNlO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKExhbmRtYXJrLCBbe1xuICAgIGtleTogXCJnZXRQb3NpdGlvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRQb3NpdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLnBvc2l0aW9uO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRGb2NhbFBvaW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEZvY2FsUG9pbnQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5mb2NhbFBvaW50O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRSb2xsXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFJvbGwoKSB7XG4gICAgICByZXR1cm4gdGhpcy5yb2xsO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZXRyaWV2ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZXRyaWV2ZShjKSB7XG4gICAgICBjLm1hdHJpeCA9IG1hdDQuY29weShjLm1hdHJpeCwgdGhpcy5tYXRyaXgpO1xuICAgICAgYy5yaWdodCA9IHZlYzMuY29weShjLnJpZ2h0LCB0aGlzLnJpZ2h0KTtcbiAgICAgIGMudXAgPSB2ZWMzLmNvcHkoYy51cCwgdGhpcy51cCk7XG4gICAgICBjLmZvcndhcmQgPSB2ZWMzLmNvcHkoYy5mb3J3YXJkLCB0aGlzLmZvcndhcmQpO1xuICAgICAgYy5wb3NpdGlvbiA9IHZlYzMuY29weShjLnBvc2l0aW9uLCB0aGlzLnBvc2l0aW9uKTtcbiAgICAgIGMuZm9jYWxQb2ludCA9IHZlYzMuY29weShjLmZvY2FsUG9pbnQsIHRoaXMuZm9jYWxQb2ludCk7XG4gICAgICBjLmRpc3RhbmNlVmVjdG9yID0gdmVjMy5jb3B5KGMuZGlzdGFuY2VWZWN0b3IsIHRoaXMuZGlzdGFuY2VWZWN0b3IpO1xuICAgICAgYy5hemltdXRoID0gdGhpcy5hemltdXRoO1xuICAgICAgYy5lbGV2YXRpb24gPSB0aGlzLmVsZXZhdGlvbjtcbiAgICAgIGMucm9sbCA9IHRoaXMucm9sbDtcbiAgICAgIGMucmVsQXppbXV0aCA9IHRoaXMucmVsQXppbXV0aDtcbiAgICAgIGMucmVsRWxldmF0aW9uID0gdGhpcy5yZWxFbGV2YXRpb247XG4gICAgICBjLnJlbFJvbGwgPSB0aGlzLnJlbFJvbGw7XG4gICAgICBjLmRvbGx5aW5nU3RlcCA9IHRoaXMuZG9sbHlpbmdTdGVwO1xuICAgICAgYy5kaXN0YW5jZSA9IHRoaXMuZGlzdGFuY2U7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIExhbmRtYXJrO1xufSgpO1xuXG5leHBvcnQgeyBMYW5kbWFyayBhcyBkZWZhdWx0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1MYW5kbWFyay5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/camera/Landmark.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/Box.js":
/*!******************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/Box.js ***!
\******************************************************************************/
/*! exports provided: Box */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Box\", function() { return Box; });\n/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ \"./node_modules/_@babel_runtime@7.16.3@@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_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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_inherits__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__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@7.16.3@@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@7.16.3@@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 _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! . */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/index.js\");\n\n\n\n\n\n\n\nvar _dec, _class;\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\nvar primitiveUv1Padding = 4.0 / 64;\nvar primitiveUv1PaddingScale = 1.0 - primitiveUv1Padding * 2;\nvar\n/**\n * borrow from playcanvas:\n * Creates a procedural box-shaped mesh\n */\nBox = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_8__[\"injectable\"])(), _dec(_class = /*#__PURE__*/function (_Geometry) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3___default()(Box, _Geometry);\n\n var _super = _createSuper(Box);\n\n function Box() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Box);\n\n return _super.apply(this, arguments);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Box, [{\n key: \"onEntityCreated\",\n value: function onEntityCreated() {\n var _this$config = this.config,\n _this$config$widthSeg = _this$config.widthSegments,\n widthSegments = _this$config$widthSeg === void 0 ? 1 : _this$config$widthSeg,\n _this$config$heightSe = _this$config.heightSegments,\n heightSegments = _this$config$heightSe === void 0 ? 1 : _this$config$heightSe,\n _this$config$depthSeg = _this$config.depthSegments,\n depthSegments = _this$config$depthSeg === void 0 ? 1 : _this$config$depthSeg,\n _this$config$halfExte = _this$config.halfExtents,\n halfExtents = _this$config$halfExte === void 0 ? gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues(0.5, 0.5, 0.5) : _this$config$halfExte;\n var ws = widthSegments;\n var hs = heightSegments;\n var ds = depthSegments;\n\n var _halfExtents = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(halfExtents, 3),\n hex = _halfExtents[0],\n hey = _halfExtents[1],\n hez = _halfExtents[2];\n\n var corners = [gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues(-hex, -hey, hez), gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues(hex, -hey, hez), gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues(hex, hey, hez), gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues(-hex, hey, hez), gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues(hex, -hey, -hez), gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues(-hex, -hey, -hez), gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues(-hex, hey, -hez), gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].fromValues(hex, hey, -hez)];\n var faceAxes = [[0, 1, 3], // FRONT\n [4, 5, 7], // BACK\n [3, 2, 6], // TOP\n [1, 0, 4], // BOTTOM\n [1, 4, 2], // RIGHT\n [5, 0, 6] // LEFT\n ];\n var faceNormals = [[0, 0, 1], // FRONT\n [0, 0, -1], // BACK\n [0, 1, 0], // TOP\n [0, -1, 0], // BOTTOM\n [1, 0, 0], // RIGHT\n [-1, 0, 0] // LEFT\n ];\n var sides = {\n FRONT: 0,\n BACK: 1,\n TOP: 2,\n BOTTOM: 3,\n RIGHT: 4,\n LEFT: 5\n };\n var positions = [];\n var normals = [];\n var uvs = [];\n var uvs1 = [];\n var indices = [];\n var vcounter = 0;\n\n var generateFace = function generateFace(side, uSegments, vSegments) {\n var u;\n var v;\n var i;\n var j;\n\n for (i = 0; i <= uSegments; i++) {\n for (j = 0; j <= vSegments; j++) {\n var temp1 = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].create();\n var temp2 = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].create();\n var temp3 = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].create();\n var r = gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].create();\n gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].lerp(temp1, corners[faceAxes[side][0]], corners[faceAxes[side][1]], i / uSegments);\n gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].lerp(temp2, corners[faceAxes[side][0]], corners[faceAxes[side][2]], j / vSegments);\n gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].sub(temp3, temp2, corners[faceAxes[side][0]]);\n gl_matrix__WEBPACK_IMPORTED_MODULE_7__[\"vec3\"].add(r, temp1, temp3);\n u = i / uSegments;\n v = j / vSegments;\n positions.push(r[0], r[1], r[2]);\n normals.push(faceNormals[side][0], faceNormals[side][1], faceNormals[side][2]);\n uvs.push(u, v); // pack as 3x2\n // 1/3 will be empty, but it's either that or stretched pixels\n // TODO: generate non-rectangular lightMaps, so we could use space without stretching\n\n u /= 3;\n v /= 3;\n u = u * primitiveUv1PaddingScale + primitiveUv1Padding;\n v = v * primitiveUv1PaddingScale + primitiveUv1Padding;\n u += side % 3 / 3;\n v += Math.floor(side / 3) / 3;\n uvs1.push(u, v);\n\n if (i < uSegments && j < vSegments) {\n indices.push(vcounter + vSegments + 1, vcounter + 1, vcounter);\n indices.push(vcounter + vSegments + 1, vcounter + vSegments + 2, vcounter + 1);\n }\n\n vcounter++;\n }\n }\n };\n\n generateFace(sides.FRONT, ws, hs);\n generateFace(sides.BACK, ws, hs);\n generateFace(sides.TOP, ws, ds);\n generateFace(sides.BOTTOM, ws, ds);\n generateFace(sides.RIGHT, ds, hs);\n generateFace(sides.LEFT, ds, hs); // generate AABB\n\n var aabb = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_6__[\"generateAABBFromVertices\"])(positions);\n var component = this.getComponent();\n component.indices = Uint32Array.from(indices);\n component.aabb = aabb;\n component.vertexCount = vcounter;\n component.attributes = [{\n dirty: true,\n name: 'position',\n data: Float32Array.from(positions),\n arrayStride: 4 * 3,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 0,\n offset: 0,\n format: 'float3'\n }]\n }, {\n dirty: true,\n name: 'normal',\n data: Float32Array.from(normals),\n arrayStride: 4 * 3,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 1,\n offset: 0,\n format: 'float3'\n }]\n }, {\n dirty: true,\n name: 'uv',\n data: Float32Array.from(uvs),\n arrayStride: 4 * 2,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 2,\n offset: 0,\n format: 'float2'\n }]\n }]; // TODO: barycentric & tangent\n }\n }]);\n\n return Box;\n}(___WEBPACK_IMPORTED_MODULE_9__[\"Geometry\"])) || _class);\n//# sourceMappingURL=Box.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL2dlb21ldHJ5L0JveC5qcz84OTJmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtFO0FBQ0U7QUFDTjtBQUNOO0FBQ2tDO0FBQ3RCOztBQUVwRTs7QUFFQSxnQ0FBZ0MsNkRBQTZELHlDQUF5QyxhQUFhLDRFQUFlLGtCQUFrQixpQ0FBaUMsaUJBQWlCLDRFQUFlLG1CQUFtQix5REFBeUQsRUFBRSxPQUFPLHVDQUF1QyxFQUFFLFFBQVEsdUZBQTBCLGVBQWUsR0FBRzs7QUFFdmEsc0NBQXNDLHdFQUF3RSwwQ0FBMEMsOENBQThDLE1BQU0sd0VBQXdFLEdBQUcsYUFBYSxFQUFFLFlBQVksY0FBYyxFQUFFOztBQUVuUTtBQUM5QjtBQUNNO0FBQ1Y7QUFDN0I7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLDREQUFVO0FBQ3hCLEVBQUUsc0VBQVM7O0FBRVg7O0FBRUE7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJEQUEyRCw4Q0FBSTtBQUMvRDtBQUNBO0FBQ0E7O0FBRUEseUJBQXlCLDJFQUFjO0FBQ3ZDO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIsOENBQUksOEJBQThCLDhDQUFJLDZCQUE2Qiw4Q0FBSSw0QkFBNEIsOENBQUksNkJBQTZCLDhDQUFJLDhCQUE4Qiw4Q0FBSSwrQkFBK0IsOENBQUksOEJBQThCLDhDQUFJO0FBQ3BRO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQyxxQkFBcUIsZ0JBQWdCO0FBQ3JDLHdCQUF3Qiw4Q0FBSTtBQUM1Qix3QkFBd0IsOENBQUk7QUFDNUIsd0JBQXdCLDhDQUFJO0FBQzVCLG9CQUFvQiw4Q0FBSTtBQUN4QixZQUFZLDhDQUFJO0FBQ2hCLFlBQVksOENBQUk7QUFDaEIsWUFBWSw4Q0FBSTtBQUNoQixZQUFZLDhDQUFJO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1Qzs7QUFFdkMsaUJBQWlCLG9GQUF3QjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPLEVBQUU7QUFDVDtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDLENBQUMsMENBQVE7QUFDViIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHVAMC41LjVAQGFudHYvZy13ZWJncHUvZXMvZ2VvbWV0cnkvQm94LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9zbGljZWRUb0FycmF5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHNcIjtcbmltcG9ydCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuXCI7XG5pbXBvcnQgX2dldFByb3RvdHlwZU9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mXCI7XG5cbnZhciBfZGVjLCBfY2xhc3M7XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuaW1wb3J0IHsgZ2VuZXJhdGVBQUJCRnJvbVZlcnRpY2VzIH0gZnJvbSAnQGFudHYvZy13ZWJncHUtY29yZSc7XG5pbXBvcnQgeyB2ZWMzIH0gZnJvbSAnZ2wtbWF0cml4JztcbmltcG9ydCB7IGluamVjdGFibGUgfSBmcm9tICdpbnZlcnNpZnknO1xuaW1wb3J0IHsgR2VvbWV0cnkgfSBmcm9tICcuJztcbnZhciBwcmltaXRpdmVVdjFQYWRkaW5nID0gNC4wIC8gNjQ7XG52YXIgcHJpbWl0aXZlVXYxUGFkZGluZ1NjYWxlID0gMS4wIC0gcHJpbWl0aXZlVXYxUGFkZGluZyAqIDI7XG5leHBvcnQgdmFyXG4vKipcbiAqIGJvcnJvdyBmcm9tIHBsYXljYW52YXM6XG4gKiBDcmVhdGVzIGEgcHJvY2VkdXJhbCBib3gtc2hhcGVkIG1lc2hcbiAqL1xuQm94ID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMoX2NsYXNzID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfR2VvbWV0cnkpIHtcbiAgX2luaGVyaXRzKEJveCwgX0dlb21ldHJ5KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKEJveCk7XG5cbiAgZnVuY3Rpb24gQm94KCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBCb3gpO1xuXG4gICAgcmV0dXJuIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKEJveCwgW3tcbiAgICBrZXk6IFwib25FbnRpdHlDcmVhdGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uRW50aXR5Q3JlYXRlZCgpIHtcbiAgICAgIHZhciBfdGhpcyRjb25maWcgPSB0aGlzLmNvbmZpZyxcbiAgICAgICAgICBfdGhpcyRjb25maWckd2lkdGhTZWcgPSBfdGhpcyRjb25maWcud2lkdGhTZWdtZW50cyxcbiAgICAgICAgICB3aWR0aFNlZ21lbnRzID0gX3RoaXMkY29uZmlnJHdpZHRoU2VnID09PSB2b2lkIDAgPyAxIDogX3RoaXMkY29uZmlnJHdpZHRoU2VnLFxuICAgICAgICAgIF90aGlzJGNvbmZpZyRoZWlnaHRTZSA9IF90aGlzJGNvbmZpZy5oZWlnaHRTZWdtZW50cyxcbiAgICAgICAgICBoZWlnaHRTZWdtZW50cyA9IF90aGlzJGNvbmZpZyRoZWlnaHRTZSA9PT0gdm9pZCAwID8gMSA6IF90aGlzJGNvbmZpZyRoZWlnaHRTZSxcbiAgICAgICAgICBfdGhpcyRjb25maWckZGVwdGhTZWcgPSBfdGhpcyRjb25maWcuZGVwdGhTZWdtZW50cyxcbiAgICAgICAgICBkZXB0aFNlZ21lbnRzID0gX3RoaXMkY29uZmlnJGRlcHRoU2VnID09PSB2b2lkIDAgPyAxIDogX3RoaXMkY29uZmlnJGRlcHRoU2VnLFxuICAgICAgICAgIF90aGlzJGNvbmZpZyRoYWxmRXh0ZSA9IF90aGlzJGNvbmZpZy5oYWxmRXh0ZW50cyxcbiAgICAgICAgICBoYWxmRXh0ZW50cyA9IF90aGlzJGNvbmZpZyRoYWxmRXh0ZSA9PT0gdm9pZCAwID8gdmVjMy5mcm9tVmFsdWVzKDAuNSwgMC41LCAwLjUpIDogX3RoaXMkY29uZmlnJGhhbGZFeHRlO1xuICAgICAgdmFyIHdzID0gd2lkdGhTZWdtZW50cztcbiAgICAgIHZhciBocyA9IGhlaWdodFNlZ21lbnRzO1xuICAgICAgdmFyIGRzID0gZGVwdGhTZWdtZW50cztcblxuICAgICAgdmFyIF9oYWxmRXh0ZW50cyA9IF9zbGljZWRUb0FycmF5KGhhbGZFeHRlbnRzLCAzKSxcbiAgICAgICAgICBoZXggPSBfaGFsZkV4dGVudHNbMF0sXG4gICAgICAgICAgaGV5ID0gX2hhbGZFeHRlbnRzWzFdLFxuICAgICAgICAgIGhleiA9IF9oYWxmRXh0ZW50c1syXTtcblxuICAgICAgdmFyIGNvcm5lcnMgPSBbdmVjMy5mcm9tVmFsdWVzKC1oZXgsIC1oZXksIGhleiksIHZlYzMuZnJvbVZhbHVlcyhoZXgsIC1oZXksIGhleiksIHZlYzMuZnJvbVZhbHVlcyhoZXgsIGhleSwgaGV6KSwgdmVjMy5mcm9tVmFsdWVzKC1oZXgsIGhleSwgaGV6KSwgdmVjMy5mcm9tVmFsdWVzKGhleCwgLWhleSwgLWhleiksIHZlYzMuZnJvbVZhbHVlcygtaGV4LCAtaGV5LCAtaGV6KSwgdmVjMy5mcm9tVmFsdWVzKC1oZXgsIGhleSwgLWhleiksIHZlYzMuZnJvbVZhbHVlcyhoZXgsIGhleSwgLWhleildO1xuICAgICAgdmFyIGZhY2VBeGVzID0gW1swLCAxLCAzXSwgLy8gRlJPTlRcbiAgICAgIFs0LCA1LCA3XSwgLy8gQkFDS1xuICAgICAgWzMsIDIsIDZdLCAvLyBUT1BcbiAgICAgIFsxLCAwLCA0XSwgLy8gQk9UVE9NXG4gICAgICBbMSwgNCwgMl0sIC8vIFJJR0hUXG4gICAgICBbNSwgMCwgNl0gLy8gTEVGVFxuICAgICAgXTtcbiAgICAgIHZhciBmYWNlTm9ybWFscyA9IFtbMCwgMCwgMV0sIC8vIEZST05UXG4gICAgICBbMCwgMCwgLTFdLCAvLyBCQUNLXG4gICAgICBbMCwgMSwgMF0sIC8vIFRPUFxuICAgICAgWzAsIC0xLCAwXSwgLy8gQk9UVE9NXG4gICAgICBbMSwgMCwgMF0sIC8vIFJJR0hUXG4gICAgICBbLTEsIDAsIDBdIC8vIExFRlRcbiAgICAgIF07XG4gICAgICB2YXIgc2lkZXMgPSB7XG4gICAgICAgIEZST05UOiAwLFxuICAgICAgICBCQUNLOiAxLFxuICAgICAgICBUT1A6IDIsXG4gICAgICAgIEJPVFRPTTogMyxcbiAgICAgICAgUklHSFQ6IDQsXG4gICAgICAgIExFRlQ6IDVcbiAgICAgIH07XG4gICAgICB2YXIgcG9zaXRpb25zID0gW107XG4gICAgICB2YXIgbm9ybWFscyA9IFtdO1xuICAgICAgdmFyIHV2cyA9IFtdO1xuICAgICAgdmFyIHV2czEgPSBbXTtcbiAgICAgIHZhciBpbmRpY2VzID0gW107XG4gICAgICB2YXIgdmNvdW50ZXIgPSAwO1xuXG4gICAgICB2YXIgZ2VuZXJhdGVGYWNlID0gZnVuY3Rpb24gZ2VuZXJhdGVGYWNlKHNpZGUsIHVTZWdtZW50cywgdlNlZ21lbnRzKSB7XG4gICAgICAgIHZhciB1O1xuICAgICAgICB2YXIgdjtcbiAgICAgICAgdmFyIGk7XG4gICAgICAgIHZhciBqO1xuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPD0gdVNlZ21lbnRzOyBpKyspIHtcbiAgICAgICAgICBmb3IgKGogPSAwOyBqIDw9IHZTZWdtZW50czsgaisrKSB7XG4gICAgICAgICAgICB2YXIgdGVtcDEgPSB2ZWMzLmNyZWF0ZSgpO1xuICAgICAgICAgICAgdmFyIHRlbXAyID0gdmVjMy5jcmVhdGUoKTtcbiAgICAgICAgICAgIHZhciB0ZW1wMyA9IHZlYzMuY3JlYXRlKCk7XG4gICAgICAgICAgICB2YXIgciA9IHZlYzMuY3JlYXRlKCk7XG4gICAgICAgICAgICB2ZWMzLmxlcnAodGVtcDEsIGNvcm5lcnNbZmFjZUF4ZXNbc2lkZV1bMF1dLCBjb3JuZXJzW2ZhY2VBeGVzW3NpZGVdWzFdXSwgaSAvIHVTZWdtZW50cyk7XG4gICAgICAgICAgICB2ZWMzLmxlcnAodGVtcDIsIGNvcm5lcnNbZmFjZUF4ZXNbc2lkZV1bMF1dLCBjb3JuZXJzW2ZhY2VBeGVzW3NpZGVdWzJdXSwgaiAvIHZTZWdtZW50cyk7XG4gICAgICAgICAgICB2ZWMzLnN1Yih0ZW1wMywgdGVtcDIsIGNvcm5lcnNbZmFjZUF4ZXNbc2lkZV1bMF1dKTtcbiAgICAgICAgICAgIHZlYzMuYWRkKHIsIHRlbXAxLCB0ZW1wMyk7XG4gICAgICAgICAgICB1ID0gaSAvIHVTZWdtZW50cztcbiAgICAgICAgICAgIHYgPSBqIC8gdlNlZ21lbnRzO1xuICAgICAgICAgICAgcG9zaXRpb25zLnB1c2goclswXSwgclsxXSwgclsyXSk7XG4gICAgICAgICAgICBub3JtYWxzLnB1c2goZmFjZU5vcm1hbHNbc2lkZV1bMF0sIGZhY2VOb3JtYWxzW3NpZGVdWzFdLCBmYWNlTm9ybWFsc1tzaWRlXVsyXSk7XG4gICAgICAgICAgICB1dnMucHVzaCh1LCB2KTsgLy8gcGFjayBhcyAzeDJcbiAgICAgICAgICAgIC8vIDEvMyB3aWxsIGJlIGVtcHR5LCBidXQgaXQncyBlaXRoZXIgdGhhdCBvciBzdHJldGNoZWQgcGl4ZWxzXG4gICAgICAgICAgICAvLyBUT0RPOiBnZW5lcmF0ZSBub24tcmVjdGFuZ3VsYXIgbGlnaHRNYXBzLCBzbyB3ZSBjb3VsZCB1c2Ugc3BhY2Ugd2l0aG91dCBzdHJldGNoaW5nXG5cbiAgICAgICAgICAgIHUgLz0gMztcbiAgICAgICAgICAgIHYgLz0gMztcbiAgICAgICAgICAgIHUgPSB1ICogcHJpbWl0aXZlVXYxUGFkZGluZ1NjYWxlICsgcHJpbWl0aXZlVXYxUGFkZGluZztcbiAgICAgICAgICAgIHYgPSB2ICogcHJpbWl0aXZlVXYxUGFkZGluZ1NjYWxlICsgcHJpbWl0aXZlVXYxUGFkZGluZztcbiAgICAgICAgICAgIHUgKz0gc2lkZSAlIDMgLyAzO1xuICAgICAgICAgICAgdiArPSBNYXRoLmZsb29yKHNpZGUgLyAzKSAvIDM7XG4gICAgICAgICAgICB1dnMxLnB1c2godSwgdik7XG5cbiAgICAgICAgICAgIGlmIChpIDwgdVNlZ21lbnRzICYmIGogPCB2U2VnbWVudHMpIHtcbiAgICAgICAgICAgICAgaW5kaWNlcy5wdXNoKHZjb3VudGVyICsgdlNlZ21lbnRzICsgMSwgdmNvdW50ZXIgKyAxLCB2Y291bnRlcik7XG4gICAgICAgICAgICAgIGluZGljZXMucHVzaCh2Y291bnRlciArIHZTZWdtZW50cyArIDEsIHZjb3VudGVyICsgdlNlZ21lbnRzICsgMiwgdmNvdW50ZXIgKyAxKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmNvdW50ZXIrKztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGdlbmVyYXRlRmFjZShzaWRlcy5GUk9OVCwgd3MsIGhzKTtcbiAgICAgIGdlbmVyYXRlRmFjZShzaWRlcy5CQUNLLCB3cywgaHMpO1xuICAgICAgZ2VuZXJhdGVGYWNlKHNpZGVzLlRPUCwgd3MsIGRzKTtcbiAgICAgIGdlbmVyYXRlRmFjZShzaWRlcy5CT1RUT00sIHdzLCBkcyk7XG4gICAgICBnZW5lcmF0ZUZhY2Uoc2lkZXMuUklHSFQsIGRzLCBocyk7XG4gICAgICBnZW5lcmF0ZUZhY2Uoc2lkZXMuTEVGVCwgZHMsIGhzKTsgLy8gZ2VuZXJhdGUgQUFCQlxuXG4gICAgICB2YXIgYWFiYiA9IGdlbmVyYXRlQUFCQkZyb21WZXJ0aWNlcyhwb3NpdGlvbnMpO1xuICAgICAgdmFyIGNvbXBvbmVudCA9IHRoaXMuZ2V0Q29tcG9uZW50KCk7XG4gICAgICBjb21wb25lbnQuaW5kaWNlcyA9IFVpbnQzMkFycmF5LmZyb20oaW5kaWNlcyk7XG4gICAgICBjb21wb25lbnQuYWFiYiA9IGFhYmI7XG4gICAgICBjb21wb25lbnQudmVydGV4Q291bnQgPSB2Y291bnRlcjtcbiAgICAgIGNvbXBvbmVudC5hdHRyaWJ1dGVzID0gW3tcbiAgICAgICAgZGlydHk6IHRydWUsXG4gICAgICAgIG5hbWU6ICdwb3NpdGlvbicsXG4gICAgICAgIGRhdGE6IEZsb2F0MzJBcnJheS5mcm9tKHBvc2l0aW9ucyksXG4gICAgICAgIGFycmF5U3RyaWRlOiA0ICogMyxcbiAgICAgICAgc3RlcE1vZGU6ICd2ZXJ0ZXgnLFxuICAgICAgICBhdHRyaWJ1dGVzOiBbe1xuICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiAwLFxuICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICBmb3JtYXQ6ICdmbG9hdDMnXG4gICAgICAgIH1dXG4gICAgICB9LCB7XG4gICAgICAgIGRpcnR5OiB0cnVlLFxuICAgICAgICBuYW1lOiAnbm9ybWFsJyxcbiAgICAgICAgZGF0YTogRmxvYXQzMkFycmF5LmZyb20obm9ybWFscyksXG4gICAgICAgIGFycmF5U3RyaWRlOiA0ICogMyxcbiAgICAgICAgc3RlcE1vZGU6ICd2ZXJ0ZXgnLFxuICAgICAgICBhdHRyaWJ1dGVzOiBbe1xuICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiAxLFxuICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICBmb3JtYXQ6ICdmbG9hdDMnXG4gICAgICAgIH1dXG4gICAgICB9LCB7XG4gICAgICAgIGRpcnR5OiB0cnVlLFxuICAgICAgICBuYW1lOiAndXYnLFxuICAgICAgICBkYXRhOiBGbG9hdDMyQXJyYXkuZnJvbSh1dnMpLFxuICAgICAgICBhcnJheVN0cmlkZTogNCAqIDIsXG4gICAgICAgIHN0ZXBNb2RlOiAndmVydGV4JyxcbiAgICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMixcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgZm9ybWF0OiAnZmxvYXQyJ1xuICAgICAgICB9XVxuICAgICAgfV07IC8vIFRPRE86IGJhcnljZW50cmljICYgdGFuZ2VudFxuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBCb3g7XG59KEdlb21ldHJ5KSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJveC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/Box.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/Merged.js":
/*!*********************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/Merged.js ***!
\*********************************************************************************/
/*! exports provided: Merged */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Merged\", function() { return Merged; });\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/_@babel_runtime@7.16.3@@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_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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_inherits__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__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@7.16.3@@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@7.16.3@@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 _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! . */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/index.js\");\n/* harmony import */ var _utils_is_number__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/is-number */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-number.js\");\n/* harmony import */ var _utils_is_typedarray__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/is-typedarray */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-typedarray.js\");\n/* harmony import */ var _utils_typedarray__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/typedarray */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/typedarray.js\");\n\n\n\n\n\n\n\nvar _dec, _class;\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n\nvar\n/**\n * merge many geometries into one, use a batch of draw calls\n */\nMerged = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_7__[\"injectable\"])(), _dec(_class = /*#__PURE__*/function (_Geometry) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3___default()(Merged, _Geometry);\n\n var _super = _createSuper(Merged);\n\n function Merged() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Merged);\n\n return _super.apply(this, arguments);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Merged, [{\n key: \"onEntityCreated\",\n value: function onEntityCreated() {\n var _this$config$geometri = this.config.geometries,\n geometries = _this$config$geometri === void 0 ? [] : _this$config$geometri;\n var mergedComponent = this.getComponent();\n mergedComponent.aabb = new _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_6__[\"AABB\"]();\n var mergedAttributes = [];\n var mergedIndices = [];\n var indexOffset = 0;\n geometries.forEach(function (geometry) {\n var aabb = geometry.aabb,\n indices = geometry.indices,\n vertexCount = geometry.vertexCount,\n attributes = geometry.attributes; // merge aabb\n\n mergedComponent.aabb.add(aabb);\n mergedComponent.vertexCount += vertexCount; // merge indices\n\n if (indices) {\n mergedIndices.push.apply(mergedIndices, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(indices.map(function (index) {\n return index + indexOffset;\n })));\n }\n\n indexOffset += vertexCount; // merge attributes\n\n attributes.forEach(function (attribute, i) {\n if (!mergedAttributes[i]) {\n mergedAttributes[i] = attribute;\n mergedAttributes[i].dirty = true;\n } else {\n if (attribute.data) {\n if (Object(_utils_is_number__WEBPACK_IMPORTED_MODULE_9__[\"isNumber\"])(attribute.data)) {\n // @ts-ignore\n mergedAttributes[i].push(attribute.data);\n } else if (Object(_utils_is_typedarray__WEBPACK_IMPORTED_MODULE_10__[\"isTypedArray\"])(attribute.data)) {\n // @ts-ignore\n mergedAttributes[i].data = Object(_utils_typedarray__WEBPACK_IMPORTED_MODULE_11__[\"merge\"])( // @ts-ignore\n mergedAttributes[i].data, attribute.data);\n } else {\n // @ts-ignore\n mergedAttributes[i].data = mergedAttributes[i].data.concat(attribute.data);\n }\n }\n }\n });\n });\n mergedComponent.attributes = mergedAttributes;\n mergedComponent.indices = Uint32Array.from(mergedIndices);\n mergedComponent.dirty = true;\n }\n }]);\n\n return Merged;\n}(___WEBPACK_IMPORTED_MODULE_8__[\"Geometry\"])) || _class);\n//# sourceMappingURL=Merged.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL2dlb21ldHJ5L01lcmdlZC5qcz9jMGVlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEwRTtBQUNOO0FBQ047QUFDTjtBQUNrQztBQUN0Qjs7QUFFcEU7O0FBRUEsZ0NBQWdDLDZEQUE2RCx5Q0FBeUMsYUFBYSw0RUFBZSxrQkFBa0IsaUNBQWlDLGlCQUFpQiw0RUFBZSxtQkFBbUIseURBQXlELEVBQUUsT0FBTyx1Q0FBdUMsRUFBRSxRQUFRLHVGQUEwQixlQUFlLEdBQUc7O0FBRXZhLHNDQUFzQyx3RUFBd0UsMENBQTBDLDhDQUE4QyxNQUFNLHdFQUF3RSxHQUFHLGFBQWEsRUFBRSxZQUFZLGNBQWMsRUFBRTs7QUFFdlI7QUFDSjtBQUNWO0FBQ2lCO0FBQ1E7QUFDVjtBQUNyQztBQUNQO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiw0REFBVTtBQUMzQixFQUFFLHNFQUFTOztBQUVYOztBQUVBO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQyx3REFBSTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2Qzs7QUFFN0M7QUFDQSxtREFBbUQ7O0FBRW5EO0FBQ0Esa0RBQWtELCtFQUFrQjtBQUNwRTtBQUNBLFdBQVc7QUFDWDs7QUFFQSxtQ0FBbUM7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0Esa0JBQWtCLGlFQUFRO0FBQzFCO0FBQ0E7QUFDQSxlQUFlLFVBQVUsMEVBQVk7QUFDckM7QUFDQSwyQ0FBMkMsZ0VBQUs7QUFDaEQ7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQyxDQUFDLDBDQUFRO0FBQ1YiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL2dlb21ldHJ5L01lcmdlZC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfdG9Db25zdW1hYmxlQXJyYXkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHNcIjtcbmltcG9ydCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuXCI7XG5pbXBvcnQgX2dldFByb3RvdHlwZU9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mXCI7XG5cbnZhciBfZGVjLCBfY2xhc3M7XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuaW1wb3J0IHsgQUFCQiB9IGZyb20gJ0BhbnR2L2ctd2ViZ3B1LWNvcmUnO1xuaW1wb3J0IHsgaW5qZWN0YWJsZSB9IGZyb20gJ2ludmVyc2lmeSc7XG5pbXBvcnQgeyBHZW9tZXRyeSB9IGZyb20gJy4nO1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICcuLi91dGlscy9pcy1udW1iZXInO1xuaW1wb3J0IHsgaXNUeXBlZEFycmF5IH0gZnJvbSAnLi4vdXRpbHMvaXMtdHlwZWRhcnJheSc7XG5pbXBvcnQgeyBtZXJnZSB9IGZyb20gJy4uL3V0aWxzL3R5cGVkYXJyYXknO1xuZXhwb3J0IHZhclxuLyoqXG4gKiBtZXJnZSBtYW55IGdlb21ldHJpZXMgaW50byBvbmUsIHVzZSBhIGJhdGNoIG9mIGRyYXcgY2FsbHNcbiAqL1xuTWVyZ2VkID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMoX2NsYXNzID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfR2VvbWV0cnkpIHtcbiAgX2luaGVyaXRzKE1lcmdlZCwgX0dlb21ldHJ5KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKE1lcmdlZCk7XG5cbiAgZnVuY3Rpb24gTWVyZ2VkKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBNZXJnZWQpO1xuXG4gICAgcmV0dXJuIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKE1lcmdlZCwgW3tcbiAgICBrZXk6IFwib25FbnRpdHlDcmVhdGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uRW50aXR5Q3JlYXRlZCgpIHtcbiAgICAgIHZhciBfdGhpcyRjb25maWckZ2VvbWV0cmkgPSB0aGlzLmNvbmZpZy5nZW9tZXRyaWVzLFxuICAgICAgICAgIGdlb21ldHJpZXMgPSBfdGhpcyRjb25maWckZ2VvbWV0cmkgPT09IHZvaWQgMCA/IFtdIDogX3RoaXMkY29uZmlnJGdlb21ldHJpO1xuICAgICAgdmFyIG1lcmdlZENvbXBvbmVudCA9IHRoaXMuZ2V0Q29tcG9uZW50KCk7XG4gICAgICBtZXJnZWRDb21wb25lbnQuYWFiYiA9IG5ldyBBQUJCKCk7XG4gICAgICB2YXIgbWVyZ2VkQXR0cmlidXRlcyA9IFtdO1xuICAgICAgdmFyIG1lcmdlZEluZGljZXMgPSBbXTtcbiAgICAgIHZhciBpbmRleE9mZnNldCA9IDA7XG4gICAgICBnZW9tZXRyaWVzLmZvckVhY2goZnVuY3Rpb24gKGdlb21ldHJ5KSB7XG4gICAgICAgIHZhciBhYWJiID0gZ2VvbWV0cnkuYWFiYixcbiAgICAgICAgICAgIGluZGljZXMgPSBnZW9tZXRyeS5pbmRpY2VzLFxuICAgICAgICAgICAgdmVydGV4Q291bnQgPSBnZW9tZXRyeS52ZXJ0ZXhDb3VudCxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMgPSBnZW9tZXRyeS5hdHRyaWJ1dGVzOyAvLyBtZXJnZSBhYWJiXG5cbiAgICAgICAgbWVyZ2VkQ29tcG9uZW50LmFhYmIuYWRkKGFhYmIpO1xuICAgICAgICBtZXJnZWRDb21wb25lbnQudmVydGV4Q291bnQgKz0gdmVydGV4Q291bnQ7IC8vIG1lcmdlIGluZGljZXNcblxuICAgICAgICBpZiAoaW5kaWNlcykge1xuICAgICAgICAgIG1lcmdlZEluZGljZXMucHVzaC5hcHBseShtZXJnZWRJbmRpY2VzLCBfdG9Db25zdW1hYmxlQXJyYXkoaW5kaWNlcy5tYXAoZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgICAgICAgICByZXR1cm4gaW5kZXggKyBpbmRleE9mZnNldDtcbiAgICAgICAgICB9KSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaW5kZXhPZmZzZXQgKz0gdmVydGV4Q291bnQ7IC8vIG1lcmdlIGF0dHJpYnV0ZXNcblxuICAgICAgICBhdHRyaWJ1dGVzLmZvckVhY2goZnVuY3Rpb24gKGF0dHJpYnV0ZSwgaSkge1xuICAgICAgICAgIGlmICghbWVyZ2VkQXR0cmlidXRlc1tpXSkge1xuICAgICAgICAgICAgbWVyZ2VkQXR0cmlidXRlc1tpXSA9IGF0dHJpYnV0ZTtcbiAgICAgICAgICAgIG1lcmdlZEF0dHJpYnV0ZXNbaV0uZGlydHkgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoYXR0cmlidXRlLmRhdGEpIHtcbiAgICAgICAgICAgICAgaWYgKGlzTnVtYmVyKGF0dHJpYnV0ZS5kYXRhKSkge1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICBtZXJnZWRBdHRyaWJ1dGVzW2ldLnB1c2goYXR0cmlidXRlLmRhdGEpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzVHlwZWRBcnJheShhdHRyaWJ1dGUuZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgbWVyZ2VkQXR0cmlidXRlc1tpXS5kYXRhID0gbWVyZ2UoIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICBtZXJnZWRBdHRyaWJ1dGVzW2ldLmRhdGEsIGF0dHJpYnV0ZS5kYXRhKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgbWVyZ2VkQXR0cmlidXRlc1tpXS5kYXRhID0gbWVyZ2VkQXR0cmlidXRlc1tpXS5kYXRhLmNvbmNhdChhdHRyaWJ1dGUuZGF0YSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBtZXJnZWRDb21wb25lbnQuYXR0cmlidXRlcyA9IG1lcmdlZEF0dHJpYnV0ZXM7XG4gICAgICBtZXJnZWRDb21wb25lbnQuaW5kaWNlcyA9IFVpbnQzMkFycmF5LmZyb20obWVyZ2VkSW5kaWNlcyk7XG4gICAgICBtZXJnZWRDb21wb25lbnQuZGlydHkgPSB0cnVlO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBNZXJnZWQ7XG59KEdlb21ldHJ5KSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU1lcmdlZC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/Merged.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/Plane.js":
/*!********************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/Plane.js ***!
\********************************************************************************/
/*! exports provided: Plane */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Plane\", function() { return Plane; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__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@7.16.3@@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@7.16.3@@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 _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! . */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/index.js\");\n\n\n\n\n\n\nvar _dec, _class;\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\nvar\n/**\n * borrow from playcanvas\n */\nPlane = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"injectable\"])(), _dec(_class = /*#__PURE__*/function (_Geometry) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default()(Plane, _Geometry);\n\n var _super = _createSuper(Plane);\n\n function Plane() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, Plane);\n\n return _super.apply(this, arguments);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(Plane, [{\n key: \"onEntityCreated\",\n value: function onEntityCreated() {\n var _this$config = this.config,\n _this$config$halfExte = _this$config.halfExtents,\n halfExtents = _this$config$halfExte === void 0 ? [0.5, 0.5] : _this$config$halfExte,\n _this$config$widthSeg = _this$config.widthSegments,\n widthSegments = _this$config$widthSeg === void 0 ? 5 : _this$config$widthSeg,\n _this$config$lengthSe = _this$config.lengthSegments,\n lengthSegments = _this$config$lengthSe === void 0 ? 5 : _this$config$lengthSe;\n var positions = [];\n var normals = [];\n var uvs = [];\n var indices = [];\n var vcounter = 0;\n\n for (var i = 0; i <= widthSegments; i++) {\n for (var j = 0; j <= lengthSegments; j++) {\n var x = -halfExtents[0] + 2.0 * halfExtents[0] * i / widthSegments;\n var y = 0.0;\n var z = -(-halfExtents[1] + 2.0 * halfExtents[1] * j / lengthSegments);\n var u = i / widthSegments;\n var v = j / lengthSegments;\n positions.push(x, y, z);\n normals.push(0.0, 1.0, 0.0);\n uvs.push(u, v);\n\n if (i < widthSegments && j < lengthSegments) {\n indices.push(vcounter + lengthSegments + 1, vcounter + 1, vcounter);\n indices.push(vcounter + lengthSegments + 1, vcounter + lengthSegments + 2, vcounter + 1);\n }\n\n vcounter++;\n }\n } // generate AABB\n\n\n var aabb = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"generateAABBFromVertices\"])(positions);\n var component = this.getComponent();\n component.indices = Uint32Array.from(indices);\n component.aabb = aabb;\n component.vertexCount = vcounter;\n component.attributes = [{\n dirty: true,\n name: 'position',\n data: Float32Array.from(positions),\n arrayStride: 4 * 3,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 0,\n offset: 0,\n format: 'float3'\n }]\n }, {\n dirty: true,\n name: 'normal',\n data: Float32Array.from(normals),\n arrayStride: 4 * 3,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 1,\n offset: 0,\n format: 'float3'\n }]\n }, {\n dirty: true,\n name: 'uv',\n data: Float32Array.from(uvs),\n arrayStride: 4 * 2,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 2,\n offset: 0,\n format: 'float2'\n }]\n }]; // TODO: barycentric & tangent\n }\n }]);\n\n return Plane;\n}(___WEBPACK_IMPORTED_MODULE_7__[\"Geometry\"])) || _class);\n//# sourceMappingURL=Plane.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL2dlb21ldHJ5L1BsYW5lLmpzP2FlODYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0U7QUFDTjtBQUNOO0FBQ2tDO0FBQ3RCOztBQUVwRTs7QUFFQSxnQ0FBZ0MsNkRBQTZELHlDQUF5QyxhQUFhLDRFQUFlLGtCQUFrQixpQ0FBaUMsaUJBQWlCLDRFQUFlLG1CQUFtQix5REFBeUQsRUFBRSxPQUFPLHVDQUF1QyxFQUFFLFFBQVEsdUZBQTBCLGVBQWUsR0FBRzs7QUFFdmEsc0NBQXNDLHdFQUF3RSwwQ0FBMEMsOENBQThDLE1BQU0sd0VBQXdFLEdBQUcsYUFBYSxFQUFFLFlBQVksY0FBYyxFQUFFOztBQUVuUTtBQUN4QjtBQUNWO0FBQ3RCO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDREQUFVO0FBQzFCLEVBQUUsc0VBQVM7O0FBRVg7O0FBRUE7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHFCQUFxQixvQkFBb0I7QUFDekMsdUJBQXVCLHFCQUFxQjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUCxpQkFBaUIsb0ZBQXdCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU8sRUFBRTtBQUNUO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsQ0FBQywwQ0FBUTtBQUNWIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdUAwLjUuNUBAYW50di9nLXdlYmdwdS9lcy9nZW9tZXRyeS9QbGFuZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHNcIjtcbmltcG9ydCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuXCI7XG5pbXBvcnQgX2dldFByb3RvdHlwZU9mIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mXCI7XG5cbnZhciBfZGVjLCBfY2xhc3M7XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuaW1wb3J0IHsgZ2VuZXJhdGVBQUJCRnJvbVZlcnRpY2VzIH0gZnJvbSAnQGFudHYvZy13ZWJncHUtY29yZSc7XG5pbXBvcnQgeyBpbmplY3RhYmxlIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCB7IEdlb21ldHJ5IH0gZnJvbSAnLic7XG5leHBvcnQgdmFyXG4vKipcbiAqIGJvcnJvdyBmcm9tIHBsYXljYW52YXNcbiAqL1xuUGxhbmUgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYyhfY2xhc3MgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9HZW9tZXRyeSkge1xuICBfaW5oZXJpdHMoUGxhbmUsIF9HZW9tZXRyeSk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihQbGFuZSk7XG5cbiAgZnVuY3Rpb24gUGxhbmUoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFBsYW5lKTtcblxuICAgIHJldHVybiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhQbGFuZSwgW3tcbiAgICBrZXk6IFwib25FbnRpdHlDcmVhdGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uRW50aXR5Q3JlYXRlZCgpIHtcbiAgICAgIHZhciBfdGhpcyRjb25maWcgPSB0aGlzLmNvbmZpZyxcbiAgICAgICAgICBfdGhpcyRjb25maWckaGFsZkV4dGUgPSBfdGhpcyRjb25maWcuaGFsZkV4dGVudHMsXG4gICAgICAgICAgaGFsZkV4dGVudHMgPSBfdGhpcyRjb25maWckaGFsZkV4dGUgPT09IHZvaWQgMCA/IFswLjUsIDAuNV0gOiBfdGhpcyRjb25maWckaGFsZkV4dGUsXG4gICAgICAgICAgX3RoaXMkY29uZmlnJHdpZHRoU2VnID0gX3RoaXMkY29uZmlnLndpZHRoU2VnbWVudHMsXG4gICAgICAgICAgd2lkdGhTZWdtZW50cyA9IF90aGlzJGNvbmZpZyR3aWR0aFNlZyA9PT0gdm9pZCAwID8gNSA6IF90aGlzJGNvbmZpZyR3aWR0aFNlZyxcbiAgICAgICAgICBfdGhpcyRjb25maWckbGVuZ3RoU2UgPSBfdGhpcyRjb25maWcubGVuZ3RoU2VnbWVudHMsXG4gICAgICAgICAgbGVuZ3RoU2VnbWVudHMgPSBfdGhpcyRjb25maWckbGVuZ3RoU2UgPT09IHZvaWQgMCA/IDUgOiBfdGhpcyRjb25maWckbGVuZ3RoU2U7XG4gICAgICB2YXIgcG9zaXRpb25zID0gW107XG4gICAgICB2YXIgbm9ybWFscyA9IFtdO1xuICAgICAgdmFyIHV2cyA9IFtdO1xuICAgICAgdmFyIGluZGljZXMgPSBbXTtcbiAgICAgIHZhciB2Y291bnRlciA9IDA7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDw9IHdpZHRoU2VnbWVudHM7IGkrKykge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8PSBsZW5ndGhTZWdtZW50czsgaisrKSB7XG4gICAgICAgICAgdmFyIHggPSAtaGFsZkV4dGVudHNbMF0gKyAyLjAgKiBoYWxmRXh0ZW50c1swXSAqIGkgLyB3aWR0aFNlZ21lbnRzO1xuICAgICAgICAgIHZhciB5ID0gMC4wO1xuICAgICAgICAgIHZhciB6ID0gLSgtaGFsZkV4dGVudHNbMV0gKyAyLjAgKiBoYWxmRXh0ZW50c1sxXSAqIGogLyBsZW5ndGhTZWdtZW50cyk7XG4gICAgICAgICAgdmFyIHUgPSBpIC8gd2lkdGhTZWdtZW50cztcbiAgICAgICAgICB2YXIgdiA9IGogLyBsZW5ndGhTZWdtZW50cztcbiAgICAgICAgICBwb3NpdGlvbnMucHVzaCh4LCB5LCB6KTtcbiAgICAgICAgICBub3JtYWxzLnB1c2goMC4wLCAxLjAsIDAuMCk7XG4gICAgICAgICAgdXZzLnB1c2godSwgdik7XG5cbiAgICAgICAgICBpZiAoaSA8IHdpZHRoU2VnbWVudHMgJiYgaiA8IGxlbmd0aFNlZ21lbnRzKSB7XG4gICAgICAgICAgICBpbmRpY2VzLnB1c2godmNvdW50ZXIgKyBsZW5ndGhTZWdtZW50cyArIDEsIHZjb3VudGVyICsgMSwgdmNvdW50ZXIpO1xuICAgICAgICAgICAgaW5kaWNlcy5wdXNoKHZjb3VudGVyICsgbGVuZ3RoU2VnbWVudHMgKyAxLCB2Y291bnRlciArIGxlbmd0aFNlZ21lbnRzICsgMiwgdmNvdW50ZXIgKyAxKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2Y291bnRlcisrO1xuICAgICAgICB9XG4gICAgICB9IC8vIGdlbmVyYXRlIEFBQkJcblxuXG4gICAgICB2YXIgYWFiYiA9IGdlbmVyYXRlQUFCQkZyb21WZXJ0aWNlcyhwb3NpdGlvbnMpO1xuICAgICAgdmFyIGNvbXBvbmVudCA9IHRoaXMuZ2V0Q29tcG9uZW50KCk7XG4gICAgICBjb21wb25lbnQuaW5kaWNlcyA9IFVpbnQzMkFycmF5LmZyb20oaW5kaWNlcyk7XG4gICAgICBjb21wb25lbnQuYWFiYiA9IGFhYmI7XG4gICAgICBjb21wb25lbnQudmVydGV4Q291bnQgPSB2Y291bnRlcjtcbiAgICAgIGNvbXBvbmVudC5hdHRyaWJ1dGVzID0gW3tcbiAgICAgICAgZGlydHk6IHRydWUsXG4gICAgICAgIG5hbWU6ICdwb3NpdGlvbicsXG4gICAgICAgIGRhdGE6IEZsb2F0MzJBcnJheS5mcm9tKHBvc2l0aW9ucyksXG4gICAgICAgIGFycmF5U3RyaWRlOiA0ICogMyxcbiAgICAgICAgc3RlcE1vZGU6ICd2ZXJ0ZXgnLFxuICAgICAgICBhdHRyaWJ1dGVzOiBbe1xuICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiAwLFxuICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICBmb3JtYXQ6ICdmbG9hdDMnXG4gICAgICAgIH1dXG4gICAgICB9LCB7XG4gICAgICAgIGRpcnR5OiB0cnVlLFxuICAgICAgICBuYW1lOiAnbm9ybWFsJyxcbiAgICAgICAgZGF0YTogRmxvYXQzMkFycmF5LmZyb20obm9ybWFscyksXG4gICAgICAgIGFycmF5U3RyaWRlOiA0ICogMyxcbiAgICAgICAgc3RlcE1vZGU6ICd2ZXJ0ZXgnLFxuICAgICAgICBhdHRyaWJ1dGVzOiBbe1xuICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiAxLFxuICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICBmb3JtYXQ6ICdmbG9hdDMnXG4gICAgICAgIH1dXG4gICAgICB9LCB7XG4gICAgICAgIGRpcnR5OiB0cnVlLFxuICAgICAgICBuYW1lOiAndXYnLFxuICAgICAgICBkYXRhOiBGbG9hdDMyQXJyYXkuZnJvbSh1dnMpLFxuICAgICAgICBhcnJheVN0cmlkZTogNCAqIDIsXG4gICAgICAgIHN0ZXBNb2RlOiAndmVydGV4JyxcbiAgICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMixcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgZm9ybWF0OiAnZmxvYXQyJ1xuICAgICAgICB9XVxuICAgICAgfV07IC8vIFRPRE86IGJhcnljZW50cmljICYgdGFuZ2VudFxuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBQbGFuZTtcbn0oR2VvbWV0cnkpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UGxhbmUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/Plane.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/Sphere.js":
/*!*********************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/Sphere.js ***!
\*********************************************************************************/
/*! exports provided: Sphere */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Sphere\", function() { return Sphere; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/inherits */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/inherits.js\");\n/* harmony import */ var _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_inherits__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@7.16.3@@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@7.16.3@@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 _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! . */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/index.js\");\n\n\n\n\n\n\nvar _dec, _class;\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\nvar\n/**\n * borrow from playcanvas\n */\nSphere = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"injectable\"])(), _dec(_class = /*#__PURE__*/function (_Geometry) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_2___default()(Sphere, _Geometry);\n\n var _super = _createSuper(Sphere);\n\n function Sphere() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, Sphere);\n\n return _super.apply(this, arguments);\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(Sphere, [{\n key: \"onEntityCreated\",\n value: function onEntityCreated() {\n var _this$config = this.config,\n _this$config$radius = _this$config.radius,\n radius = _this$config$radius === void 0 ? 0.5 : _this$config$radius,\n _this$config$latitude = _this$config.latitudeBands,\n latitudeBands = _this$config$latitude === void 0 ? 16 : _this$config$latitude,\n _this$config$longitud = _this$config.longitudeBands,\n longitudeBands = _this$config$longitud === void 0 ? 16 : _this$config$longitud;\n var positions = [];\n var normals = [];\n var uvs = [];\n var indices = [];\n\n for (var lat = 0; lat <= latitudeBands; lat++) {\n var theta = lat * Math.PI / latitudeBands;\n var sinTheta = Math.sin(theta);\n var cosTheta = Math.cos(theta);\n\n for (var lon = 0; lon <= longitudeBands; lon++) {\n // Sweep the sphere from the positive Z axis to match a 3DS Max sphere\n var phi = lon * 2 * Math.PI / longitudeBands - Math.PI / 2.0;\n var sinPhi = Math.sin(phi);\n var cosPhi = Math.cos(phi);\n var x = cosPhi * sinTheta;\n var y = cosTheta;\n var z = sinPhi * sinTheta;\n var u = 1.0 - lon / longitudeBands;\n var v = 1.0 - lat / latitudeBands;\n positions.push(x * radius, y * radius, z * radius);\n normals.push(x, y, z);\n uvs.push(u, v);\n }\n }\n\n for (var _lat = 0; _lat < latitudeBands; ++_lat) {\n for (var _lon = 0; _lon < longitudeBands; ++_lon) {\n var first = _lat * (longitudeBands + 1) + _lon;\n var second = first + longitudeBands + 1;\n indices.push(first + 1, second, first);\n indices.push(first + 1, second + 1, second);\n }\n } // generate AABB\n\n\n var aabb = Object(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"generateAABBFromVertices\"])(positions);\n var component = this.getComponent();\n component.indices = Uint32Array.from(indices);\n component.aabb = aabb;\n component.vertexCount = positions.length / 3;\n component.attributes = [{\n dirty: true,\n name: 'position',\n data: Float32Array.from(positions),\n arrayStride: 4 * 3,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 0,\n offset: 0,\n format: 'float3'\n }]\n }, {\n dirty: true,\n name: 'normal',\n data: Float32Array.from(normals),\n arrayStride: 4 * 3,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 1,\n offset: 0,\n format: 'float3'\n }]\n }, {\n dirty: true,\n name: 'uv',\n data: Float32Array.from(uvs),\n arrayStride: 4 * 2,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 2,\n offset: 0,\n format: 'float2'\n }]\n }]; // TODO: barycentric & tangent\n }\n }]);\n\n return Sphere;\n}(___WEBPACK_IMPORTED_MODULE_7__[\"Geometry\"])) || _class);\n//# sourceMappingURL=Sphere.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL2dlb21ldHJ5L1NwaGVyZS5qcz9kZjlmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ047QUFDTjtBQUNrQztBQUN0Qjs7QUFFcEU7O0FBRUEsZ0NBQWdDLDZEQUE2RCx5Q0FBeUMsYUFBYSw0RUFBZSxrQkFBa0IsaUNBQWlDLGlCQUFpQiw0RUFBZSxtQkFBbUIseURBQXlELEVBQUUsT0FBTyx1Q0FBdUMsRUFBRSxRQUFRLHVGQUEwQixlQUFlLEdBQUc7O0FBRXZhLHNDQUFzQyx3RUFBd0UsMENBQTBDLDhDQUE4QyxNQUFNLHdFQUF3RSxHQUFHLGFBQWEsRUFBRSxZQUFZLGNBQWMsRUFBRTs7QUFFblE7QUFDeEI7QUFDVjtBQUN0QjtBQUNQO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiw0REFBVTtBQUMzQixFQUFFLHNFQUFTOztBQUVYOztBQUVBO0FBQ0EsSUFBSSw0RUFBZTs7QUFFbkI7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsdUJBQXVCLHNCQUFzQjtBQUM3QztBQUNBO0FBQ0E7O0FBRUEseUJBQXlCLHVCQUF1QjtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHdCQUF3QixzQkFBc0I7QUFDOUMsMEJBQTBCLHVCQUF1QjtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1AsaUJBQWlCLG9GQUF3QjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPLEVBQUU7QUFDVDtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDLENBQUMsMENBQVE7QUFDViIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHVAMC41LjVAQGFudHYvZy13ZWJncHUvZXMvZ2VvbWV0cnkvU3BoZXJlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0c1wiO1xuaW1wb3J0IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm5cIjtcbmltcG9ydCBfZ2V0UHJvdG90eXBlT2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZ2V0UHJvdG90eXBlT2ZcIjtcblxudmFyIF9kZWMsIF9jbGFzcztcblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5pbXBvcnQgeyBnZW5lcmF0ZUFBQkJGcm9tVmVydGljZXMgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCB7IGluamVjdGFibGUgfSBmcm9tICdpbnZlcnNpZnknO1xuaW1wb3J0IHsgR2VvbWV0cnkgfSBmcm9tICcuJztcbmV4cG9ydCB2YXJcbi8qKlxuICogYm9ycm93IGZyb20gcGxheWNhbnZhc1xuICovXG5TcGhlcmUgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYyhfY2xhc3MgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9HZW9tZXRyeSkge1xuICBfaW5oZXJpdHMoU3BoZXJlLCBfR2VvbWV0cnkpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoU3BoZXJlKTtcblxuICBmdW5jdGlvbiBTcGhlcmUoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFNwaGVyZSk7XG5cbiAgICByZXR1cm4gX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoU3BoZXJlLCBbe1xuICAgIGtleTogXCJvbkVudGl0eUNyZWF0ZWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25FbnRpdHlDcmVhdGVkKCkge1xuICAgICAgdmFyIF90aGlzJGNvbmZpZyA9IHRoaXMuY29uZmlnLFxuICAgICAgICAgIF90aGlzJGNvbmZpZyRyYWRpdXMgPSBfdGhpcyRjb25maWcucmFkaXVzLFxuICAgICAgICAgIHJhZGl1cyA9IF90aGlzJGNvbmZpZyRyYWRpdXMgPT09IHZvaWQgMCA/IDAuNSA6IF90aGlzJGNvbmZpZyRyYWRpdXMsXG4gICAgICAgICAgX3RoaXMkY29uZmlnJGxhdGl0dWRlID0gX3RoaXMkY29uZmlnLmxhdGl0dWRlQmFuZHMsXG4gICAgICAgICAgbGF0aXR1ZGVCYW5kcyA9IF90aGlzJGNvbmZpZyRsYXRpdHVkZSA9PT0gdm9pZCAwID8gMTYgOiBfdGhpcyRjb25maWckbGF0aXR1ZGUsXG4gICAgICAgICAgX3RoaXMkY29uZmlnJGxvbmdpdHVkID0gX3RoaXMkY29uZmlnLmxvbmdpdHVkZUJhbmRzLFxuICAgICAgICAgIGxvbmdpdHVkZUJhbmRzID0gX3RoaXMkY29uZmlnJGxvbmdpdHVkID09PSB2b2lkIDAgPyAxNiA6IF90aGlzJGNvbmZpZyRsb25naXR1ZDtcbiAgICAgIHZhciBwb3NpdGlvbnMgPSBbXTtcbiAgICAgIHZhciBub3JtYWxzID0gW107XG4gICAgICB2YXIgdXZzID0gW107XG4gICAgICB2YXIgaW5kaWNlcyA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBsYXQgPSAwOyBsYXQgPD0gbGF0aXR1ZGVCYW5kczsgbGF0KyspIHtcbiAgICAgICAgdmFyIHRoZXRhID0gbGF0ICogTWF0aC5QSSAvIGxhdGl0dWRlQmFuZHM7XG4gICAgICAgIHZhciBzaW5UaGV0YSA9IE1hdGguc2luKHRoZXRhKTtcbiAgICAgICAgdmFyIGNvc1RoZXRhID0gTWF0aC5jb3ModGhldGEpO1xuXG4gICAgICAgIGZvciAodmFyIGxvbiA9IDA7IGxvbiA8PSBsb25naXR1ZGVCYW5kczsgbG9uKyspIHtcbiAgICAgICAgICAvLyBTd2VlcCB0aGUgc3BoZXJlIGZyb20gdGhlIHBvc2l0aXZlIFogYXhpcyB0byBtYXRjaCBhIDNEUyBNYXggc3BoZXJlXG4gICAgICAgICAgdmFyIHBoaSA9IGxvbiAqIDIgKiBNYXRoLlBJIC8gbG9uZ2l0dWRlQmFuZHMgLSBNYXRoLlBJIC8gMi4wO1xuICAgICAgICAgIHZhciBzaW5QaGkgPSBNYXRoLnNpbihwaGkpO1xuICAgICAgICAgIHZhciBjb3NQaGkgPSBNYXRoLmNvcyhwaGkpO1xuICAgICAgICAgIHZhciB4ID0gY29zUGhpICogc2luVGhldGE7XG4gICAgICAgICAgdmFyIHkgPSBjb3NUaGV0YTtcbiAgICAgICAgICB2YXIgeiA9IHNpblBoaSAqIHNpblRoZXRhO1xuICAgICAgICAgIHZhciB1ID0gMS4wIC0gbG9uIC8gbG9uZ2l0dWRlQmFuZHM7XG4gICAgICAgICAgdmFyIHYgPSAxLjAgLSBsYXQgLyBsYXRpdHVkZUJhbmRzO1xuICAgICAgICAgIHBvc2l0aW9ucy5wdXNoKHggKiByYWRpdXMsIHkgKiByYWRpdXMsIHogKiByYWRpdXMpO1xuICAgICAgICAgIG5vcm1hbHMucHVzaCh4LCB5LCB6KTtcbiAgICAgICAgICB1dnMucHVzaCh1LCB2KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBfbGF0ID0gMDsgX2xhdCA8IGxhdGl0dWRlQmFuZHM7ICsrX2xhdCkge1xuICAgICAgICBmb3IgKHZhciBfbG9uID0gMDsgX2xvbiA8IGxvbmdpdHVkZUJhbmRzOyArK19sb24pIHtcbiAgICAgICAgICB2YXIgZmlyc3QgPSBfbGF0ICogKGxvbmdpdHVkZUJhbmRzICsgMSkgKyBfbG9uO1xuICAgICAgICAgIHZhciBzZWNvbmQgPSBmaXJzdCArIGxvbmdpdHVkZUJhbmRzICsgMTtcbiAgICAgICAgICBpbmRpY2VzLnB1c2goZmlyc3QgKyAxLCBzZWNvbmQsIGZpcnN0KTtcbiAgICAgICAgICBpbmRpY2VzLnB1c2goZmlyc3QgKyAxLCBzZWNvbmQgKyAxLCBzZWNvbmQpO1xuICAgICAgICB9XG4gICAgICB9IC8vIGdlbmVyYXRlIEFBQkJcblxuXG4gICAgICB2YXIgYWFiYiA9IGdlbmVyYXRlQUFCQkZyb21WZXJ0aWNlcyhwb3NpdGlvbnMpO1xuICAgICAgdmFyIGNvbXBvbmVudCA9IHRoaXMuZ2V0Q29tcG9uZW50KCk7XG4gICAgICBjb21wb25lbnQuaW5kaWNlcyA9IFVpbnQzMkFycmF5LmZyb20oaW5kaWNlcyk7XG4gICAgICBjb21wb25lbnQuYWFiYiA9IGFhYmI7XG4gICAgICBjb21wb25lbnQudmVydGV4Q291bnQgPSBwb3NpdGlvbnMubGVuZ3RoIC8gMztcbiAgICAgIGNvbXBvbmVudC5hdHRyaWJ1dGVzID0gW3tcbiAgICAgICAgZGlydHk6IHRydWUsXG4gICAgICAgIG5hbWU6ICdwb3NpdGlvbicsXG4gICAgICAgIGRhdGE6IEZsb2F0MzJBcnJheS5mcm9tKHBvc2l0aW9ucyksXG4gICAgICAgIGFycmF5U3RyaWRlOiA0ICogMyxcbiAgICAgICAgc3RlcE1vZGU6ICd2ZXJ0ZXgnLFxuICAgICAgICBhdHRyaWJ1dGVzOiBbe1xuICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiAwLFxuICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICBmb3JtYXQ6ICdmbG9hdDMnXG4gICAgICAgIH1dXG4gICAgICB9LCB7XG4gICAgICAgIGRpcnR5OiB0cnVlLFxuICAgICAgICBuYW1lOiAnbm9ybWFsJyxcbiAgICAgICAgZGF0YTogRmxvYXQzMkFycmF5LmZyb20obm9ybWFscyksXG4gICAgICAgIGFycmF5U3RyaWRlOiA0ICogMyxcbiAgICAgICAgc3RlcE1vZGU6ICd2ZXJ0ZXgnLFxuICAgICAgICBhdHRyaWJ1dGVzOiBbe1xuICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiAxLFxuICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICBmb3JtYXQ6ICdmbG9hdDMnXG4gICAgICAgIH1dXG4gICAgICB9LCB7XG4gICAgICAgIGRpcnR5OiB0cnVlLFxuICAgICAgICBuYW1lOiAndXYnLFxuICAgICAgICBkYXRhOiBGbG9hdDMyQXJyYXkuZnJvbSh1dnMpLFxuICAgICAgICBhcnJheVN0cmlkZTogNCAqIDIsXG4gICAgICAgIHN0ZXBNb2RlOiAndmVydGV4JyxcbiAgICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMixcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgZm9ybWF0OiAnZmxvYXQyJ1xuICAgICAgICB9XVxuICAgICAgfV07IC8vIFRPRE86IGJhcnljZW50cmljICYgdGFuZ2VudFxuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBTcGhlcmU7XG59KEdlb21ldHJ5KSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVNwaGVyZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/Sphere.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/index.js":
/*!********************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/index.js ***!
\********************************************************************************/
/*! exports provided: Geometry */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Geometry\", function() { return Geometry; });\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__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@7.16.3@@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@7.16.3@@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_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_6__);\n\n\n\n\n\n\nvar _dec, _dec2, _class, _class2, _descriptor, _class3, _temp;\n\n\n\nvar Geometry = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].GeometryComponentManager), _dec(_class = (_class2 = (_temp = _class3 = /*#__PURE__*/function () {\n function Geometry() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Geometry);\n\n this.config = void 0;\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, \"geometry\", _descriptor, this);\n\n this.entity = void 0;\n this.component = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Geometry, [{\n key: \"getEntity\",\n value: function getEntity() {\n return this.entity;\n }\n }, {\n key: \"getComponent\",\n value: function getComponent() {\n return this.component;\n }\n }, {\n key: \"setConfig\",\n value: function setConfig(config) {\n this.config = config;\n }\n }, {\n key: \"setEntity\",\n value: function setEntity(entity) {\n this.entity = entity;\n this.component = this.geometry.create(entity);\n this.component.entity = entity;\n this.onEntityCreated();\n }\n }, {\n key: \"onEntityCreated\",\n value: function onEntityCreated() {//\n }\n }]);\n\n return Geometry;\n}(), _class3.BOX = 'box', _class3.SPHERE = 'sphere', _class3.PLANE = 'plane', _class3.MERGED = 'merged', _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class2.prototype, \"geometry\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL2dlb21ldHJ5L2luZGV4LmpzPzRkYjYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTBGO0FBQ3RCO0FBQ047QUFDMEI7QUFDQTs7QUFFeEY7O0FBRWlEO0FBQ0Y7QUFDeEMsdUJBQXVCLDREQUFVLFlBQVksd0RBQU0sQ0FBQyw4REFBVTtBQUNyRTtBQUNBLElBQUksNEVBQWU7O0FBRW5COztBQUVBLElBQUksdUZBQTBCOztBQUU5QjtBQUNBO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsdUNBQXVDO0FBQ3ZDO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsK0hBQStILHNGQUF5QjtBQUN6SjtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHVAMC41LjVAQGFudHYvZy13ZWJncHUvZXMvZ2VvbWV0cnkvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiO1xuaW1wb3J0IF9jcmVhdGVDbGFzcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiO1xuaW1wb3J0IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yXCI7XG5pbXBvcnQgX2luaXRpYWxpemVyV2FybmluZ0hlbHBlciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplcldhcm5pbmdIZWxwZXJcIjtcblxudmFyIF9kZWMsIF9kZWMyLCBfY2xhc3MsIF9jbGFzczIsIF9kZXNjcmlwdG9yLCBfY2xhc3MzLCBfdGVtcDtcblxuaW1wb3J0IHsgSURFTlRJRklFUiB9IGZyb20gJ0BhbnR2L2ctd2ViZ3B1LWNvcmUnO1xuaW1wb3J0IHsgaW5qZWN0LCBpbmplY3RhYmxlIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmV4cG9ydCB2YXIgR2VvbWV0cnkgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoSURFTlRJRklFUi5HZW9tZXRyeUNvbXBvbmVudE1hbmFnZXIpLCBfZGVjKF9jbGFzcyA9IChfY2xhc3MyID0gKF90ZW1wID0gX2NsYXNzMyA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEdlb21ldHJ5KCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBHZW9tZXRyeSk7XG5cbiAgICB0aGlzLmNvbmZpZyA9IHZvaWQgMDtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwiZ2VvbWV0cnlcIiwgX2Rlc2NyaXB0b3IsIHRoaXMpO1xuXG4gICAgdGhpcy5lbnRpdHkgPSB2b2lkIDA7XG4gICAgdGhpcy5jb21wb25lbnQgPSB2b2lkIDA7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoR2VvbWV0cnksIFt7XG4gICAga2V5OiBcImdldEVudGl0eVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRFbnRpdHkoKSB7XG4gICAgICByZXR1cm4gdGhpcy5lbnRpdHk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldENvbXBvbmVudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDb21wb25lbnQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb21wb25lbnQ7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldENvbmZpZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRDb25maWcoY29uZmlnKSB7XG4gICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0RW50aXR5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldEVudGl0eShlbnRpdHkpIHtcbiAgICAgIHRoaXMuZW50aXR5ID0gZW50aXR5O1xuICAgICAgdGhpcy5jb21wb25lbnQgPSB0aGlzLmdlb21ldHJ5LmNyZWF0ZShlbnRpdHkpO1xuICAgICAgdGhpcy5jb21wb25lbnQuZW50aXR5ID0gZW50aXR5O1xuICAgICAgdGhpcy5vbkVudGl0eUNyZWF0ZWQoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwib25FbnRpdHlDcmVhdGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uRW50aXR5Q3JlYXRlZCgpIHsvL1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBHZW9tZXRyeTtcbn0oKSwgX2NsYXNzMy5CT1ggPSAnYm94JywgX2NsYXNzMy5TUEhFUkUgPSAnc3BoZXJlJywgX2NsYXNzMy5QTEFORSA9ICdwbGFuZScsIF9jbGFzczMuTUVSR0VEID0gJ21lcmdlZCcsIF90ZW1wKSwgKF9kZXNjcmlwdG9yID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJnZW9tZXRyeVwiLCBbX2RlYzJdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/index.js":
/*!***********************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/index.js ***!
\***********************************************************************/
/*! exports provided: World, Kernel, Camera, Renderable, Geometry, Material */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _camera_Camera__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./camera/Camera */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/camera/Camera.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Camera\", function() { return _camera_Camera__WEBPACK_IMPORTED_MODULE_0__[\"Camera\"]; });\n\n/* harmony import */ var _geometry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./geometry */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/geometry/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Geometry\", function() { return _geometry__WEBPACK_IMPORTED_MODULE_1__[\"Geometry\"]; });\n\n/* harmony import */ var _Kernel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Kernel */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/Kernel.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Kernel\", function() { return _Kernel__WEBPACK_IMPORTED_MODULE_2__[\"Kernel\"]; });\n\n/* harmony import */ var _material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./material */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/material/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Material\", function() { return _material__WEBPACK_IMPORTED_MODULE_3__[\"Material\"]; });\n\n/* harmony import */ var _renderable_Renderable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./renderable/Renderable */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/Renderable.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Renderable\", function() { return _renderable_Renderable__WEBPACK_IMPORTED_MODULE_4__[\"Renderable\"]; });\n\n/* harmony import */ var _World__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./World */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/World.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"World\", function() { return _World__WEBPACK_IMPORTED_MODULE_5__[\"World\"]; });\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL2luZGV4LmpzP2JiMTkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBeUM7QUFDSDtBQUNKO0FBQ0k7QUFDZTtBQUNyQjtBQUNpQztBQUNqRSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHVAMC41LjVAQGFudHYvZy13ZWJncHUvZXMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDYW1lcmEgfSBmcm9tICcuL2NhbWVyYS9DYW1lcmEnO1xuaW1wb3J0IHsgR2VvbWV0cnkgfSBmcm9tICcuL2dlb21ldHJ5JztcbmltcG9ydCB7IEtlcm5lbCB9IGZyb20gJy4vS2VybmVsJztcbmltcG9ydCB7IE1hdGVyaWFsIH0gZnJvbSAnLi9tYXRlcmlhbCc7XG5pbXBvcnQgeyBSZW5kZXJhYmxlIH0gZnJvbSAnLi9yZW5kZXJhYmxlL1JlbmRlcmFibGUnO1xuaW1wb3J0IHsgV29ybGQgfSBmcm9tICcuL1dvcmxkJztcbmV4cG9ydCB7IFdvcmxkLCBLZXJuZWwsIENhbWVyYSwgUmVuZGVyYWJsZSwgR2VvbWV0cnksIE1hdGVyaWFsIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/material/basic/index.js":
/*!**************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/material/basic/index.js ***!
\**************************************************************************************/
/*! exports provided: Basic */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Basic\", function() { return Basic; });\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__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@7.16.3@@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@7.16.3@@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_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__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@7.16.3@@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 _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! .. */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/material/index.js\");\n\n\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _class, _class2, _descriptor, _descriptor2, _temp;\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n/* babel-plugin-inline-import './shaders/webgl.basic.frag.glsl' */\nvar webglFragmentShaderGLSL = \"varying vec4 fragColor;\\n\\n#pragma include \\\"uv.frag.declaration\\\"\\n#pragma include \\\"map.frag.declaration\\\"\\n\\nvoid main() {\\n vec4 diffuseColor = fragColor;\\n\\n #pragma include \\\"map.frag.main\\\"\\n\\n gl_FragColor = diffuseColor;\\n}\";\n\n/* babel-plugin-inline-import './shaders/webgl.basic.vert.glsl' */\nvar webglVertexShaderGLSL = \"attribute vec3 position;\\nattribute vec3 normal;\\n\\nuniform mat4 projectionMatrix;\\nuniform mat4 modelViewMatrix;\\nuniform vec4 color;\\n\\nvarying vec4 fragColor;\\n\\n#pragma include \\\"uv.vert.declaration\\\"\\n\\nvoid main() {\\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\\n fragColor = color;\\n\\n #pragma include \\\"uv.vert.main\\\"\\n}\";\n\n/* babel-plugin-inline-import './shaders/webgpu.basic.frag.glsl' */\nvar webgpuFragmentShaderGLSL = \"// layout(set = 0, binding = 1) uniform WireframeUniforms {\\n// float lineWidth;\\n// vec4 lineColor;\\n// } wireframe;\\n\\nlayout(location = 0) in vec4 fragColor;\\n// layout(location = 1) in vec3 v_Barycentric;\\n\\nlayout(location = 0) out vec4 outColor;\\n\\n// wireframe\\n// float edgeFactor() {\\n// vec3 d = fwidth(v_Barycentric);\\n// vec3 a3 = smoothstep(vec3(0.0), d * wireframe.lineWidth, v_Barycentric);\\n// return min(min(a3.x, a3.y), a3.z);\\n// }\\n\\nvoid main() {\\n // outColor = mix(fragColor, wireframe.lineColor, (1.0 - edgeFactor()));\\n outColor = fragColor;\\n}\";\n\n/* babel-plugin-inline-import './shaders/webgpu.basic.vert.glsl' */\nvar webgpuVertexShaderGLSL = \"layout(set = 0, binding = 0) uniform Uniforms {\\n vec4 color;\\n mat4 projectionMatrix;\\n mat4 modelViewMatrix;\\n} uniforms;\\n\\nlayout(location = 0) in vec3 position;\\n// layout(location = 1) in vec3 barycentric;\\n\\nlayout(location = 0) out vec4 fragColor;\\n// layout(location = 1) out vec3 v_Barycentric;\\n\\nvoid main() {\\n gl_Position = uniforms.projectionMatrix * uniforms.modelViewMatrix * vec4(position, 1.0);\\n fragColor = uniforms.color;\\n // v_Barycentric = barycentric;\\n}\";\nvar\n/**\n * This material is not affected by lights.\n * @see https://threejs.org/docs/#api/en/materials/MeshBasicMaterial\n */\nBasic = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].RenderEngine), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].ShaderModuleService), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function (_Material) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default()(Basic, _Material);\n\n var _super = _createSuper(Basic);\n\n function Basic() {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Basic);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_this, \"engine\", _descriptor, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default()(_this));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_this, \"shaderModuleService\", _descriptor2, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default()(_this));\n\n return _this;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Basic, [{\n key: \"onEntityCreated\",\n value: function onEntityCreated() {\n var component = this.getComponent();\n var vertexShaderGLSL = this.engine.supportWebGPU ? webgpuVertexShaderGLSL : webglVertexShaderGLSL;\n var fragmentShaderGLSL = this.engine.supportWebGPU ? webgpuFragmentShaderGLSL : webglFragmentShaderGLSL;\n this.shaderModuleService.registerModule('material-basic', {\n vs: vertexShaderGLSL,\n fs: fragmentShaderGLSL\n });\n\n var _this$shaderModuleSer = this.shaderModuleService.getModule('material-basic'),\n vs = _this$shaderModuleSer.vs,\n fs = _this$shaderModuleSer.fs,\n extractedUniforms = _this$shaderModuleSer.uniforms;\n\n component.vertexShaderGLSL = vs;\n component.fragmentShaderGLSL = fs; // @ts-ignore\n\n component.setUniform(extractedUniforms);\n\n if (this.config.map) {\n component.setDefines({\n USE_UV: 1,\n USE_MAP: 1\n });\n component.setUniform({\n // @ts-ignore\n map: this.config.map,\n uvTransform: gl_matrix__WEBPACK_IMPORTED_MODULE_10__[\"mat3\"].create()\n });\n }\n }\n }]);\n\n return Basic;\n}(___WEBPACK_IMPORTED_MODULE_12__[\"Material\"]), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7___default()(_class2.prototype, \"engine\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7___default()(_class2.prototype, \"shaderModuleService\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL21hdGVyaWFsL2Jhc2ljL2luZGV4LmpzPzYzMDUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMEY7QUFDdEI7QUFDTjtBQUNvQjtBQUMxQjtBQUNrQztBQUN0QjtBQUNvQjtBQUNBOztBQUV4Rjs7QUFFQSxnQ0FBZ0MsNkRBQTZELHlDQUF5QyxhQUFhLDRFQUFlLGtCQUFrQixpQ0FBaUMsaUJBQWlCLDRFQUFlLG1CQUFtQix5REFBeUQsRUFBRSxPQUFPLHVDQUF1QyxFQUFFLFFBQVEsdUZBQTBCLGVBQWUsR0FBRzs7QUFFdmEsc0NBQXNDLHdFQUF3RSwwQ0FBMEMsOENBQThDLE1BQU0sd0VBQXdFLEdBQUcsYUFBYSxFQUFFLFlBQVksY0FBYyxFQUFFOztBQUVqUjtBQUNoQjtBQUNjO0FBQ2pCOztBQUU5QjtBQUNBLHNEQUFzRCxzR0FBc0csa0NBQWtDLHlFQUF5RSxHQUFHOztBQUUxUTtBQUNBLHFEQUFxRCx3QkFBd0Isa0NBQWtDLCtCQUErQixxQkFBcUIsMkJBQTJCLDREQUE0RCwyRUFBMkUsc0JBQXNCLHlDQUF5Qzs7QUFFcFk7QUFDQSwyRkFBMkYsdUJBQXVCLHNCQUFzQixNQUFNLFdBQVcsMkNBQTJDLGdEQUFnRCwyQ0FBMkMseUNBQXlDLHNDQUFzQywrRUFBK0UseUNBQXlDLE1BQU0saUJBQWlCLDRFQUE0RSx5QkFBeUIsR0FBRzs7QUFFcm1CO0FBQ0EsNkVBQTZFLGVBQWUsMEJBQTBCLHlCQUF5QixHQUFHLFVBQVUsMENBQTBDLDhDQUE4Qyw0Q0FBNEMsaURBQWlELGlCQUFpQiw2RkFBNkYsK0JBQStCLG1DQUFtQyxHQUFHO0FBQzdmO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsNkRBQVUsWUFBWSx5REFBTSxDQUFDLDhEQUFVLHdCQUF3Qix5REFBTSxDQUFDLDhEQUFVO0FBQ2hHLEVBQUUsc0VBQVM7O0FBRVg7O0FBRUE7QUFDQTs7QUFFQSxJQUFJLDRFQUFlOztBQUVuQix1RUFBdUUsYUFBYTtBQUNwRjtBQUNBOztBQUVBOztBQUVBLElBQUksdUZBQTBCLCtCQUErQixtRkFBc0I7O0FBRW5GLElBQUksdUZBQTBCLDZDQUE2QyxtRkFBc0I7O0FBRWpHO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esd0NBQXdDOztBQUV4Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsK0NBQUk7QUFDM0IsU0FBUztBQUNUO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQyxDQUFDLDJDQUFRLDBCQUEwQixzRkFBeUI7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGtCQUFrQixzRkFBeUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL21hdGVyaWFsL2Jhc2ljL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0c1wiO1xuaW1wb3J0IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm5cIjtcbmltcG9ydCBfZ2V0UHJvdG90eXBlT2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZ2V0UHJvdG90eXBlT2ZcIjtcbmltcG9ydCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplcldhcm5pbmdIZWxwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyXCI7XG5cbnZhciBfZGVjLCBfZGVjMiwgX2RlYzMsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9kZXNjcmlwdG9yMiwgX3RlbXA7XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuaW1wb3J0IHsgSURFTlRJRklFUiB9IGZyb20gJ0BhbnR2L2ctd2ViZ3B1LWNvcmUnO1xuaW1wb3J0IHsgbWF0MyB9IGZyb20gJ2dsLW1hdHJpeCc7XG5pbXBvcnQgeyBpbmplY3QsIGluamVjdGFibGUgfSBmcm9tICdpbnZlcnNpZnknO1xuaW1wb3J0IHsgTWF0ZXJpYWwgfSBmcm9tICcuLic7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuL3NoYWRlcnMvd2ViZ2wuYmFzaWMuZnJhZy5nbHNsJyAqL1xudmFyIHdlYmdsRnJhZ21lbnRTaGFkZXJHTFNMID0gXCJ2YXJ5aW5nIHZlYzQgZnJhZ0NvbG9yO1xcblxcbiNwcmFnbWEgaW5jbHVkZSBcXFwidXYuZnJhZy5kZWNsYXJhdGlvblxcXCJcXG4jcHJhZ21hIGluY2x1ZGUgXFxcIm1hcC5mcmFnLmRlY2xhcmF0aW9uXFxcIlxcblxcbnZvaWQgbWFpbigpIHtcXG4gIHZlYzQgZGlmZnVzZUNvbG9yID0gZnJhZ0NvbG9yO1xcblxcbiAgI3ByYWdtYSBpbmNsdWRlIFxcXCJtYXAuZnJhZy5tYWluXFxcIlxcblxcbiAgZ2xfRnJhZ0NvbG9yID0gZGlmZnVzZUNvbG9yO1xcbn1cIjtcblxuLyogYmFiZWwtcGx1Z2luLWlubGluZS1pbXBvcnQgJy4vc2hhZGVycy93ZWJnbC5iYXNpYy52ZXJ0Lmdsc2wnICovXG52YXIgd2ViZ2xWZXJ0ZXhTaGFkZXJHTFNMID0gXCJhdHRyaWJ1dGUgdmVjMyBwb3NpdGlvbjtcXG5hdHRyaWJ1dGUgdmVjMyBub3JtYWw7XFxuXFxudW5pZm9ybSBtYXQ0IHByb2plY3Rpb25NYXRyaXg7XFxudW5pZm9ybSBtYXQ0IG1vZGVsVmlld01hdHJpeDtcXG51bmlmb3JtIHZlYzQgY29sb3I7XFxuXFxudmFyeWluZyB2ZWM0IGZyYWdDb2xvcjtcXG5cXG4jcHJhZ21hIGluY2x1ZGUgXFxcInV2LnZlcnQuZGVjbGFyYXRpb25cXFwiXFxuXFxudm9pZCBtYWluKCkge1xcbiAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogbW9kZWxWaWV3TWF0cml4ICogdmVjNChwb3NpdGlvbiwgMS4wKTtcXG4gIGZyYWdDb2xvciA9IGNvbG9yO1xcblxcbiAgI3ByYWdtYSBpbmNsdWRlIFxcXCJ1di52ZXJ0Lm1haW5cXFwiXFxufVwiO1xuXG4vKiBiYWJlbC1wbHVnaW4taW5saW5lLWltcG9ydCAnLi9zaGFkZXJzL3dlYmdwdS5iYXNpYy5mcmFnLmdsc2wnICovXG52YXIgd2ViZ3B1RnJhZ21lbnRTaGFkZXJHTFNMID0gXCIvLyBsYXlvdXQoc2V0ID0gMCwgYmluZGluZyA9IDEpIHVuaWZvcm0gV2lyZWZyYW1lVW5pZm9ybXMge1xcbi8vICAgZmxvYXQgbGluZVdpZHRoO1xcbi8vICAgdmVjNCBsaW5lQ29sb3I7XFxuLy8gfSB3aXJlZnJhbWU7XFxuXFxubGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gdmVjNCBmcmFnQ29sb3I7XFxuLy8gbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gdmVjMyB2X0JhcnljZW50cmljO1xcblxcbmxheW91dChsb2NhdGlvbiA9IDApIG91dCB2ZWM0IG91dENvbG9yO1xcblxcbi8vIHdpcmVmcmFtZVxcbi8vIGZsb2F0IGVkZ2VGYWN0b3IoKSB7XFxuLy8gICB2ZWMzIGQgPSBmd2lkdGgodl9CYXJ5Y2VudHJpYyk7XFxuLy8gICB2ZWMzIGEzID0gc21vb3Roc3RlcCh2ZWMzKDAuMCksIGQgKiB3aXJlZnJhbWUubGluZVdpZHRoLCB2X0JhcnljZW50cmljKTtcXG4vLyAgIHJldHVybiBtaW4obWluKGEzLngsIGEzLnkpLCBhMy56KTtcXG4vLyB9XFxuXFxudm9pZCBtYWluKCkge1xcbiAgLy8gb3V0Q29sb3IgPSBtaXgoZnJhZ0NvbG9yLCB3aXJlZnJhbWUubGluZUNvbG9yLCAoMS4wIC0gZWRnZUZhY3RvcigpKSk7XFxuICBvdXRDb2xvciA9IGZyYWdDb2xvcjtcXG59XCI7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuL3NoYWRlcnMvd2ViZ3B1LmJhc2ljLnZlcnQuZ2xzbCcgKi9cbnZhciB3ZWJncHVWZXJ0ZXhTaGFkZXJHTFNMID0gXCJsYXlvdXQoc2V0ID0gMCwgYmluZGluZyA9IDApIHVuaWZvcm0gVW5pZm9ybXMge1xcbiAgdmVjNCBjb2xvcjtcXG4gIG1hdDQgcHJvamVjdGlvbk1hdHJpeDtcXG4gIG1hdDQgbW9kZWxWaWV3TWF0cml4O1xcbn0gdW5pZm9ybXM7XFxuXFxubGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gdmVjMyBwb3NpdGlvbjtcXG4vLyBsYXlvdXQobG9jYXRpb24gPSAxKSBpbiB2ZWMzIGJhcnljZW50cmljO1xcblxcbmxheW91dChsb2NhdGlvbiA9IDApIG91dCB2ZWM0IGZyYWdDb2xvcjtcXG4vLyBsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgdmVjMyB2X0JhcnljZW50cmljO1xcblxcbnZvaWQgbWFpbigpIHtcXG4gIGdsX1Bvc2l0aW9uID0gdW5pZm9ybXMucHJvamVjdGlvbk1hdHJpeCAqIHVuaWZvcm1zLm1vZGVsVmlld01hdHJpeCAqIHZlYzQocG9zaXRpb24sIDEuMCk7XFxuICBmcmFnQ29sb3IgPSB1bmlmb3Jtcy5jb2xvcjtcXG4gIC8vIHZfQmFyeWNlbnRyaWMgPSBiYXJ5Y2VudHJpYztcXG59XCI7XG5leHBvcnQgdmFyXG4vKipcbiAqIFRoaXMgbWF0ZXJpYWwgaXMgbm90IGFmZmVjdGVkIGJ5IGxpZ2h0cy5cbiAqIEBzZWUgaHR0cHM6Ly90aHJlZWpzLm9yZy9kb2NzLyNhcGkvZW4vbWF0ZXJpYWxzL01lc2hCYXNpY01hdGVyaWFsXG4gKi9cbkJhc2ljID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMyID0gaW5qZWN0KElERU5USUZJRVIuUmVuZGVyRW5naW5lKSwgX2RlYzMgPSBpbmplY3QoSURFTlRJRklFUi5TaGFkZXJNb2R1bGVTZXJ2aWNlKSwgX2RlYyhfY2xhc3MgPSAoX2NsYXNzMiA9IChfdGVtcCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX01hdGVyaWFsKSB7XG4gIF9pbmhlcml0cyhCYXNpYywgX01hdGVyaWFsKTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKEJhc2ljKTtcblxuICBmdW5jdGlvbiBCYXNpYygpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQmFzaWMpO1xuXG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KF90aGlzLCBcImVuZ2luZVwiLCBfZGVzY3JpcHRvciwgX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkoX3RoaXMsIFwic2hhZGVyTW9kdWxlU2VydmljZVwiLCBfZGVzY3JpcHRvcjIsIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhCYXNpYywgW3tcbiAgICBrZXk6IFwib25FbnRpdHlDcmVhdGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uRW50aXR5Q3JlYXRlZCgpIHtcbiAgICAgIHZhciBjb21wb25lbnQgPSB0aGlzLmdldENvbXBvbmVudCgpO1xuICAgICAgdmFyIHZlcnRleFNoYWRlckdMU0wgPSB0aGlzLmVuZ2luZS5zdXBwb3J0V2ViR1BVID8gd2ViZ3B1VmVydGV4U2hhZGVyR0xTTCA6IHdlYmdsVmVydGV4U2hhZGVyR0xTTDtcbiAgICAgIHZhciBmcmFnbWVudFNoYWRlckdMU0wgPSB0aGlzLmVuZ2luZS5zdXBwb3J0V2ViR1BVID8gd2ViZ3B1RnJhZ21lbnRTaGFkZXJHTFNMIDogd2ViZ2xGcmFnbWVudFNoYWRlckdMU0w7XG4gICAgICB0aGlzLnNoYWRlck1vZHVsZVNlcnZpY2UucmVnaXN0ZXJNb2R1bGUoJ21hdGVyaWFsLWJhc2ljJywge1xuICAgICAgICB2czogdmVydGV4U2hhZGVyR0xTTCxcbiAgICAgICAgZnM6IGZyYWdtZW50U2hhZGVyR0xTTFxuICAgICAgfSk7XG5cbiAgICAgIHZhciBfdGhpcyRzaGFkZXJNb2R1bGVTZXIgPSB0aGlzLnNoYWRlck1vZHVsZVNlcnZpY2UuZ2V0TW9kdWxlKCdtYXRlcmlhbC1iYXNpYycpLFxuICAgICAgICAgIHZzID0gX3RoaXMkc2hhZGVyTW9kdWxlU2VyLnZzLFxuICAgICAgICAgIGZzID0gX3RoaXMkc2hhZGVyTW9kdWxlU2VyLmZzLFxuICAgICAgICAgIGV4dHJhY3RlZFVuaWZvcm1zID0gX3RoaXMkc2hhZGVyTW9kdWxlU2VyLnVuaWZvcm1zO1xuXG4gICAgICBjb21wb25lbnQudmVydGV4U2hhZGVyR0xTTCA9IHZzO1xuICAgICAgY29tcG9uZW50LmZyYWdtZW50U2hhZGVyR0xTTCA9IGZzOyAvLyBAdHMtaWdub3JlXG5cbiAgICAgIGNvbXBvbmVudC5zZXRVbmlmb3JtKGV4dHJhY3RlZFVuaWZvcm1zKTtcblxuICAgICAgaWYgKHRoaXMuY29uZmlnLm1hcCkge1xuICAgICAgICBjb21wb25lbnQuc2V0RGVmaW5lcyh7XG4gICAgICAgICAgVVNFX1VWOiAxLFxuICAgICAgICAgIFVTRV9NQVA6IDFcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbXBvbmVudC5zZXRVbmlmb3JtKHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgbWFwOiB0aGlzLmNvbmZpZy5tYXAsXG4gICAgICAgICAgdXZUcmFuc2Zvcm06IG1hdDMuY3JlYXRlKClcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEJhc2ljO1xufShNYXRlcmlhbCksIF90ZW1wKSwgKF9kZXNjcmlwdG9yID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJlbmdpbmVcIiwgW19kZWMyXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMiA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwic2hhZGVyTW9kdWxlU2VydmljZVwiLCBbX2RlYzNdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/material/basic/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/material/index.js":
/*!********************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/material/index.js ***!
\********************************************************************************/
/*! exports provided: Material */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Material\", function() { return Material; });\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__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@7.16.3@@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@7.16.3@@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_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_6__);\n\n\n\n\n\n\nvar _dec, _dec2, _class, _class2, _descriptor, _class3, _temp;\n\n\n\nvar Material = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].MaterialComponentManager), _dec(_class = (_class2 = (_temp = _class3 = /*#__PURE__*/function () {\n function Material() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Material);\n\n this.config = void 0;\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, \"material\", _descriptor, this);\n\n this.entity = void 0;\n this.component = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Material, [{\n key: \"getEntity\",\n value: function getEntity() {\n return this.entity;\n }\n }, {\n key: \"getComponent\",\n value: function getComponent() {\n return this.component;\n }\n }, {\n key: \"setConfig\",\n value: function setConfig(config) {\n this.config = config;\n }\n }, {\n key: \"setEntity\",\n value: function setEntity(entity, type) {\n this.entity = entity;\n this.component = this.material.create(entity);\n this.component.entity = entity;\n this.component.type = type;\n this.onEntityCreated();\n }\n }, {\n key: \"onEntityCreated\",\n value: function onEntityCreated() {//\n }\n }]);\n\n return Material;\n}(), _class3.BASIC = 'basic', _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class2.prototype, \"material\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL21hdGVyaWFsL2luZGV4LmpzP2Y5ZWEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTBGO0FBQ3RCO0FBQ047QUFDMEI7QUFDQTs7QUFFeEY7O0FBRWlEO0FBQ0Y7QUFDeEMsdUJBQXVCLDREQUFVLFlBQVksd0RBQU0sQ0FBQyw4REFBVTtBQUNyRTtBQUNBLElBQUksNEVBQWU7O0FBRW5COztBQUVBLElBQUksdUZBQTBCOztBQUU5QjtBQUNBO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQyxvREFBb0Qsc0ZBQXlCO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdUAwLjUuNUBAYW50di9nLXdlYmdwdS9lcy9tYXRlcmlhbC9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9jbGFzczMsIF90ZW1wO1xuXG5pbXBvcnQgeyBJREVOVElGSUVSIH0gZnJvbSAnQGFudHYvZy13ZWJncHUtY29yZSc7XG5pbXBvcnQgeyBpbmplY3QsIGluamVjdGFibGUgfSBmcm9tICdpbnZlcnNpZnknO1xuZXhwb3J0IHZhciBNYXRlcmlhbCA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjMiA9IGluamVjdChJREVOVElGSUVSLk1hdGVyaWFsQ29tcG9uZW50TWFuYWdlciksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSBfY2xhc3MzID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gTWF0ZXJpYWwoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIE1hdGVyaWFsKTtcblxuICAgIHRoaXMuY29uZmlnID0gdm9pZCAwO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJtYXRlcmlhbFwiLCBfZGVzY3JpcHRvciwgdGhpcyk7XG5cbiAgICB0aGlzLmVudGl0eSA9IHZvaWQgMDtcbiAgICB0aGlzLmNvbXBvbmVudCA9IHZvaWQgMDtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhNYXRlcmlhbCwgW3tcbiAgICBrZXk6IFwiZ2V0RW50aXR5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEVudGl0eSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmVudGl0eTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Q29tcG9uZW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldENvbXBvbmVudCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbXBvbmVudDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0Q29uZmlnXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldENvbmZpZyhjb25maWcpIHtcbiAgICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRFbnRpdHlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0RW50aXR5KGVudGl0eSwgdHlwZSkge1xuICAgICAgdGhpcy5lbnRpdHkgPSBlbnRpdHk7XG4gICAgICB0aGlzLmNvbXBvbmVudCA9IHRoaXMubWF0ZXJpYWwuY3JlYXRlKGVudGl0eSk7XG4gICAgICB0aGlzLmNvbXBvbmVudC5lbnRpdHkgPSBlbnRpdHk7XG4gICAgICB0aGlzLmNvbXBvbmVudC50eXBlID0gdHlwZTtcbiAgICAgIHRoaXMub25FbnRpdHlDcmVhdGVkKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIm9uRW50aXR5Q3JlYXRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbkVudGl0eUNyZWF0ZWQoKSB7Ly9cbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gTWF0ZXJpYWw7XG59KCksIF9jbGFzczMuQkFTSUMgPSAnYmFzaWMnLCBfdGVtcCksIChfZGVzY3JpcHRvciA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwibWF0ZXJpYWxcIiwgW19kZWMyXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSkpLCBfY2xhc3MyKSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/material/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/Renderable.js":
/*!***************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/Renderable.js ***!
\***************************************************************************************/
/*! exports provided: Renderable */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Renderable\", function() { return Renderable; });\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__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@7.16.3@@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@7.16.3@@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_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_6__);\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _class3, _temp;\n\n\n\nvar Renderable = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].MeshComponentManager), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].CullableComponentManager), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].TransformComponentManager), _dec5 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].Systems), _dec6 = Object(inversify__WEBPACK_IMPORTED_MODULE_6__[\"named\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_5__[\"IDENTIFIER\"].SceneGraphSystem), _dec(_class = (_class2 = (_temp = _class3 = /*#__PURE__*/function () {\n function Renderable() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Renderable);\n\n this.attributes = {};\n this.config = void 0;\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, \"mesh\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, \"cullable\", _descriptor2, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, \"transform\", _descriptor3, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(this, \"sceneGraphSystem\", _descriptor4, this);\n\n this.meshComponent = void 0;\n this.transformComponent = void 0;\n this.entity = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Renderable, [{\n key: \"getEntity\",\n value: function getEntity() {\n return this.entity;\n }\n }, {\n key: \"getTransformComponent\",\n value: function getTransformComponent() {\n return this.transformComponent;\n }\n }, {\n key: \"getMeshComponent\",\n value: function getMeshComponent() {\n return this.meshComponent;\n }\n }, {\n key: \"setConfig\",\n value: function setConfig(config) {\n this.config = config;\n }\n }, {\n key: \"setEntity\",\n value: function setEntity(entity) {\n this.entity = entity;\n this.cullable.create(entity);\n this.meshComponent = this.mesh.create(entity);\n this.transformComponent = this.transform.create(entity);\n this.onEntityCreated();\n }\n }, {\n key: \"setMaterial\",\n value: function setMaterial(material) {\n this.meshComponent.material = material;\n return this;\n }\n }, {\n key: \"setGeometry\",\n value: function setGeometry(geometry) {\n this.meshComponent.geometry = geometry;\n return this;\n }\n }, {\n key: \"setAttributes\",\n value: function setAttributes(attributes) {\n var _this = this;\n\n Object.keys(attributes).forEach(function (name) {\n if (attributes[name] !== undefined && attributes[name] !== _this.attributes[name]) {\n _this.onAttributeChanged({\n name: name,\n data: attributes[name]\n });\n\n _this.attributes[name] = attributes[name];\n }\n });\n }\n }, {\n key: \"setVisible\",\n value: function setVisible(visible) {\n var _this2 = this;\n\n this.meshComponent.visible = visible;\n this.meshComponent.children.forEach(function (childEntity) {\n var child = _this2.mesh.getComponentByEntity(childEntity);\n\n if (child) {\n child.visible = visible;\n }\n });\n return this;\n }\n }, {\n key: \"isVisible\",\n value: function isVisible() {\n return this.meshComponent.visible;\n }\n }, {\n key: \"attach\",\n value: function attach(parentRenderable) {\n this.sceneGraphSystem.attach(this.entity, parentRenderable.entity);\n return this;\n }\n }, {\n key: \"detach\",\n value: function detach() {\n this.sceneGraphSystem.detach(this.entity);\n return this;\n }\n }, {\n key: \"detachChildren\",\n value: function detachChildren() {\n this.sceneGraphSystem.detachChildren(this.entity);\n return this;\n }\n }, {\n key: \"onEntityCreated\",\n value: function onEntityCreated() {//\n }\n }, {\n key: \"onAttributeChanged\",\n value: function onAttributeChanged(_ref) {\n var name = _ref.name,\n data = _ref.data;\n\n if (this.meshComponent && this.meshComponent.material) {\n this.meshComponent.material.setUniform(this.convertAttributeName2UniformName(name), data);\n }\n }\n }, {\n key: \"convertAttributeName2UniformName\",\n value: function convertAttributeName2UniformName(attributeName) {\n return attributeName;\n }\n }]);\n\n return Renderable;\n}(), _class3.POINT = 'point', _class3.LINE = 'line', _class3.GRID = 'grid', _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class2.prototype, \"mesh\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class2.prototype, \"cullable\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class2.prototype, \"transform\", [_dec4], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor4 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class2.prototype, \"sceneGraphSystem\", [_dec5, _dec6], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=Renderable.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3JlbmRlcmFibGUvUmVuZGVyYWJsZS5qcz82NWE3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEwRjtBQUN0QjtBQUNOO0FBQzBCO0FBQ0E7O0FBRXhGOztBQUVpRDtBQUNLO0FBQy9DLHlCQUF5Qiw0REFBVSxZQUFZLHdEQUFNLENBQUMsOERBQVUsZ0NBQWdDLHdEQUFNLENBQUMsOERBQVUsb0NBQW9DLHdEQUFNLENBQUMsOERBQVUscUNBQXFDLHdEQUFNLENBQUMsOERBQVUsbUJBQW1CLHVEQUFLLENBQUMsOERBQVU7QUFDdFE7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBOztBQUVBLElBQUksdUZBQTBCOztBQUU5QixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCLElBQUksdUZBQTBCOztBQUU5QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXOztBQUVYO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLHVDQUF1QztBQUN2QztBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDLGtHQUFrRyxzRkFBeUI7QUFDNUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGtCQUFrQixzRkFBeUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGtCQUFrQixzRkFBeUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGtCQUFrQixzRkFBeUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3JlbmRlcmFibGUvUmVuZGVyYWJsZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9kZWMzLCBfZGVjNCwgX2RlYzUsIF9kZWM2LCBfY2xhc3MsIF9jbGFzczIsIF9kZXNjcmlwdG9yLCBfZGVzY3JpcHRvcjIsIF9kZXNjcmlwdG9yMywgX2Rlc2NyaXB0b3I0LCBfY2xhc3MzLCBfdGVtcDtcblxuaW1wb3J0IHsgSURFTlRJRklFUiB9IGZyb20gJ0BhbnR2L2ctd2ViZ3B1LWNvcmUnO1xuaW1wb3J0IHsgaW5qZWN0LCBpbmplY3RhYmxlLCBuYW1lZCB9IGZyb20gJ2ludmVyc2lmeSc7XG5leHBvcnQgdmFyIFJlbmRlcmFibGUgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoSURFTlRJRklFUi5NZXNoQ29tcG9uZW50TWFuYWdlciksIF9kZWMzID0gaW5qZWN0KElERU5USUZJRVIuQ3VsbGFibGVDb21wb25lbnRNYW5hZ2VyKSwgX2RlYzQgPSBpbmplY3QoSURFTlRJRklFUi5UcmFuc2Zvcm1Db21wb25lbnRNYW5hZ2VyKSwgX2RlYzUgPSBpbmplY3QoSURFTlRJRklFUi5TeXN0ZW1zKSwgX2RlYzYgPSBuYW1lZChJREVOVElGSUVSLlNjZW5lR3JhcGhTeXN0ZW0pLCBfZGVjKF9jbGFzcyA9IChfY2xhc3MyID0gKF90ZW1wID0gX2NsYXNzMyA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFJlbmRlcmFibGUoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJlbmRlcmFibGUpO1xuXG4gICAgdGhpcy5hdHRyaWJ1dGVzID0ge307XG4gICAgdGhpcy5jb25maWcgPSB2b2lkIDA7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSh0aGlzLCBcIm1lc2hcIiwgX2Rlc2NyaXB0b3IsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJjdWxsYWJsZVwiLCBfZGVzY3JpcHRvcjIsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJ0cmFuc2Zvcm1cIiwgX2Rlc2NyaXB0b3IzLCB0aGlzKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KHRoaXMsIFwic2NlbmVHcmFwaFN5c3RlbVwiLCBfZGVzY3JpcHRvcjQsIHRoaXMpO1xuXG4gICAgdGhpcy5tZXNoQ29tcG9uZW50ID0gdm9pZCAwO1xuICAgIHRoaXMudHJhbnNmb3JtQ29tcG9uZW50ID0gdm9pZCAwO1xuICAgIHRoaXMuZW50aXR5ID0gdm9pZCAwO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFJlbmRlcmFibGUsIFt7XG4gICAga2V5OiBcImdldEVudGl0eVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRFbnRpdHkoKSB7XG4gICAgICByZXR1cm4gdGhpcy5lbnRpdHk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFRyYW5zZm9ybUNvbXBvbmVudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRUcmFuc2Zvcm1Db21wb25lbnQoKSB7XG4gICAgICByZXR1cm4gdGhpcy50cmFuc2Zvcm1Db21wb25lbnQ7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldE1lc2hDb21wb25lbnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0TWVzaENvbXBvbmVudCgpIHtcbiAgICAgIHJldHVybiB0aGlzLm1lc2hDb21wb25lbnQ7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldENvbmZpZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRDb25maWcoY29uZmlnKSB7XG4gICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0RW50aXR5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldEVudGl0eShlbnRpdHkpIHtcbiAgICAgIHRoaXMuZW50aXR5ID0gZW50aXR5O1xuICAgICAgdGhpcy5jdWxsYWJsZS5jcmVhdGUoZW50aXR5KTtcbiAgICAgIHRoaXMubWVzaENvbXBvbmVudCA9IHRoaXMubWVzaC5jcmVhdGUoZW50aXR5KTtcbiAgICAgIHRoaXMudHJhbnNmb3JtQ29tcG9uZW50ID0gdGhpcy50cmFuc2Zvcm0uY3JlYXRlKGVudGl0eSk7XG4gICAgICB0aGlzLm9uRW50aXR5Q3JlYXRlZCgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRNYXRlcmlhbFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRNYXRlcmlhbChtYXRlcmlhbCkge1xuICAgICAgdGhpcy5tZXNoQ29tcG9uZW50Lm1hdGVyaWFsID0gbWF0ZXJpYWw7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0R2VvbWV0cnlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0R2VvbWV0cnkoZ2VvbWV0cnkpIHtcbiAgICAgIHRoaXMubWVzaENvbXBvbmVudC5nZW9tZXRyeSA9IGdlb21ldHJ5O1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldEF0dHJpYnV0ZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0QXR0cmlidXRlcyhhdHRyaWJ1dGVzKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgIGlmIChhdHRyaWJ1dGVzW25hbWVdICE9PSB1bmRlZmluZWQgJiYgYXR0cmlidXRlc1tuYW1lXSAhPT0gX3RoaXMuYXR0cmlidXRlc1tuYW1lXSkge1xuICAgICAgICAgIF90aGlzLm9uQXR0cmlidXRlQ2hhbmdlZCh7XG4gICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgZGF0YTogYXR0cmlidXRlc1tuYW1lXVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgX3RoaXMuYXR0cmlidXRlc1tuYW1lXSA9IGF0dHJpYnV0ZXNbbmFtZV07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRWaXNpYmxlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldFZpc2libGUodmlzaWJsZSkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHRoaXMubWVzaENvbXBvbmVudC52aXNpYmxlID0gdmlzaWJsZTtcbiAgICAgIHRoaXMubWVzaENvbXBvbmVudC5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZEVudGl0eSkge1xuICAgICAgICB2YXIgY2hpbGQgPSBfdGhpczIubWVzaC5nZXRDb21wb25lbnRCeUVudGl0eShjaGlsZEVudGl0eSk7XG5cbiAgICAgICAgaWYgKGNoaWxkKSB7XG4gICAgICAgICAgY2hpbGQudmlzaWJsZSA9IHZpc2libGU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImlzVmlzaWJsZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc1Zpc2libGUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5tZXNoQ29tcG9uZW50LnZpc2libGU7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImF0dGFjaFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhdHRhY2gocGFyZW50UmVuZGVyYWJsZSkge1xuICAgICAgdGhpcy5zY2VuZUdyYXBoU3lzdGVtLmF0dGFjaCh0aGlzLmVudGl0eSwgcGFyZW50UmVuZGVyYWJsZS5lbnRpdHkpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRldGFjaFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkZXRhY2goKSB7XG4gICAgICB0aGlzLnNjZW5lR3JhcGhTeXN0ZW0uZGV0YWNoKHRoaXMuZW50aXR5KTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkZXRhY2hDaGlsZHJlblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkZXRhY2hDaGlsZHJlbigpIHtcbiAgICAgIHRoaXMuc2NlbmVHcmFwaFN5c3RlbS5kZXRhY2hDaGlsZHJlbih0aGlzLmVudGl0eSk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwib25FbnRpdHlDcmVhdGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uRW50aXR5Q3JlYXRlZCgpIHsvL1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJvbkF0dHJpYnV0ZUNoYW5nZWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25BdHRyaWJ1dGVDaGFuZ2VkKF9yZWYpIHtcbiAgICAgIHZhciBuYW1lID0gX3JlZi5uYW1lLFxuICAgICAgICAgIGRhdGEgPSBfcmVmLmRhdGE7XG5cbiAgICAgIGlmICh0aGlzLm1lc2hDb21wb25lbnQgJiYgdGhpcy5tZXNoQ29tcG9uZW50Lm1hdGVyaWFsKSB7XG4gICAgICAgIHRoaXMubWVzaENvbXBvbmVudC5tYXRlcmlhbC5zZXRVbmlmb3JtKHRoaXMuY29udmVydEF0dHJpYnV0ZU5hbWUyVW5pZm9ybU5hbWUobmFtZSksIGRhdGEpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb252ZXJ0QXR0cmlidXRlTmFtZTJVbmlmb3JtTmFtZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb252ZXJ0QXR0cmlidXRlTmFtZTJVbmlmb3JtTmFtZShhdHRyaWJ1dGVOYW1lKSB7XG4gICAgICByZXR1cm4gYXR0cmlidXRlTmFtZTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUmVuZGVyYWJsZTtcbn0oKSwgX2NsYXNzMy5QT0lOVCA9ICdwb2ludCcsIF9jbGFzczMuTElORSA9ICdsaW5lJywgX2NsYXNzMy5HUklEID0gJ2dyaWQnLCBfdGVtcCksIChfZGVzY3JpcHRvciA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwibWVzaFwiLCBbX2RlYzJdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSwgX2Rlc2NyaXB0b3IyID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJjdWxsYWJsZVwiLCBbX2RlYzNdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSwgX2Rlc2NyaXB0b3IzID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJ0cmFuc2Zvcm1cIiwgW19kZWM0XSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yNCA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwic2NlbmVHcmFwaFN5c3RlbVwiLCBbX2RlYzUsIF9kZWM2XSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSkpLCBfY2xhc3MyKSkgfHwgX2NsYXNzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJlbmRlcmFibGUuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/Renderable.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/grid/index.js":
/*!***************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/grid/index.js ***!
\***************************************************************************************/
/*! exports provided: Grid */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Grid\", function() { return Grid; });\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__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@7.16.3@@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@7.16.3@@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_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__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@7.16.3@@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 _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _Renderable__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../Renderable */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/Renderable.js\");\n\n\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _class, _class2, _descriptor, _descriptor2, _descriptor3, _temp;\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_6___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_5___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n/* babel-plugin-inline-import './shaders/webgl.grid.frag.glsl' */\nvar gridFrag = \"// generate grid, borrow from clay.gl viewer\\n// @see https://github.com/pissang/clay-viewer/blob/master/src/graphic/ground.glsl\\n#extension GL_OES_standard_derivatives : enable\\n\\nvarying vec3 v_Position;\\n// varying vec3 v_Normal;\\n\\nuniform float u_GridSize : 5;\\nuniform float u_GridSize2 : .5;\\nuniform vec4 u_GridColor : [0, 0, 0, 1];\\nuniform vec4 u_GridColor2 : [0.3, 0.3, 0.3, 1];\\nuniform bool u_GridEnabled : true;\\n\\n// uniform vec3 u_LightDirection;\\n// uniform vec3 u_LightColor;\\n// uniform vec3 u_Camera;\\n\\nvoid main() {\\n // vec3 n = v_Normal;\\n // vec3 l = normalize(u_LightDirection);\\n // float NdotL = clamp(dot(n, l), 0.001, 1.0);\\n\\n gl_FragColor = vec4(1.);\\n\\n if (u_GridEnabled) {\\n float wx = v_Position.x;\\n float wz = v_Position.z;\\n // float x0 = abs(fract(wx / u_GridSize - 0.5) - 0.5) / fwidth(wx) * u_GridSize / 2.0;\\n // float z0 = abs(fract(wz / u_GridSize - 0.5) - 0.5) / fwidth(wz) * u_GridSize / 2.0;\\n\\n float x1 = abs(fract(wx / u_GridSize2 - 0.5) - 0.5) / fwidth(wx) * u_GridSize2;\\n float z1 = abs(fract(wz / u_GridSize2 - 0.5) - 0.5) / fwidth(wz) * u_GridSize2;\\n\\n // float v0 = 1.0 - clamp(min(x0, z0), 0.0, 1.0);\\n float v1 = 1.0 - clamp(min(x1, z1), 0.0, 1.0);\\n // if (v0 > 0.1) {\\n // gl_FragColor = mix(gl_FragColor, u_GridColor, v0);\\n // }\\n // else {\\n gl_FragColor = mix(gl_FragColor, u_GridColor2, v1);\\n // }\\n }\\n\\n // float shadowFactor = calcShadow(u_ShadowMap, v_PositionFromLight, l, n);\\n // vec3 diffuseColor = u_LightColor * NdotL * shadowFactor;\\n\\n // gl_FragColor.rgb *= diffuseColor;\\n}\";\n\n/* babel-plugin-inline-import './shaders/webgl.grid.vert.glsl' */\nvar gridVert = \"attribute vec3 a_Position;\\n\\nvarying vec3 v_Position;\\n\\nuniform mat4 projectionMatrix;\\nuniform mat4 modelViewMatrix;\\n\\nvoid main() {\\n v_Position = a_Position;\\n gl_Position = projectionMatrix * modelViewMatrix * vec4(a_Position, 1.);\\n}\";\nvar Grid = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_10__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_10__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].Systems), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_10__[\"named\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].MaterialSystem), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_10__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].Systems), _dec5 = Object(inversify__WEBPACK_IMPORTED_MODULE_10__[\"named\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].GeometrySystem), _dec6 = Object(inversify__WEBPACK_IMPORTED_MODULE_10__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__[\"IDENTIFIER\"].ShaderModuleService), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function (_Renderable) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default()(Grid, _Renderable);\n\n var _super = _createSuper(Grid);\n\n function Grid() {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Grid);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_this, \"materialSystem\", _descriptor, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default()(_this));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_this, \"geometrySystem\", _descriptor2, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default()(_this));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_0___default()(_this, \"shaderModuleService\", _descriptor3, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default()(_this));\n\n return _this;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Grid, [{\n key: \"onAttributeChanged\",\n value: function onAttributeChanged(_ref) {\n var name = _ref.name,\n data = _ref.data;\n var mesh = this.getMeshComponent();\n\n if (mesh && mesh.material) {\n if (name === 'gridColor') {\n mesh.material.setUniform('u_GridColor', data);\n mesh.material.setUniform('u_GridColor2', data);\n } else if (name === 'gridSize') {\n mesh.material.setUniform('u_GridSize', data);\n mesh.material.setUniform('u_GridSize2', data);\n }\n }\n }\n }, {\n key: \"onEntityCreated\",\n value: function onEntityCreated() {\n this.shaderModuleService.registerModule('grid', {\n vs: gridVert,\n fs: gridFrag\n });\n\n var _this$shaderModuleSer = this.shaderModuleService.getModule('grid'),\n vs = _this$shaderModuleSer.vs,\n fs = _this$shaderModuleSer.fs,\n extractedUniforms = _this$shaderModuleSer.uniforms;\n\n var material = this.materialSystem.createShaderMaterial({\n vertexShader: vs,\n fragmentShader: fs\n });\n this.setMaterial(material);\n var geometry = this.geometrySystem.createBufferGeometry({\n vertexCount: 4\n });\n this.setGeometry(geometry);\n material.setCull({\n enable: false,\n face: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__[\"gl\"].BACK\n }).setDepth({\n enable: true,\n func: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_9__[\"gl\"].LESS\n }); // @ts-ignore\n\n material.setUniform(extractedUniforms);\n this.setAttributes({\n gridColor: this.config.gridColor,\n gridSize: this.config.gridSize\n });\n geometry.setIndex([0, 3, 2, 2, 1, 0]);\n geometry.setAttribute('a_Position', Float32Array.from([-4, -1, -4, 4, -1, -4, 4, -1, 4, -4, -1, 4]), {\n arrayStride: 4 * 2,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 0,\n offset: 0,\n format: 'float2'\n }]\n });\n }\n }]);\n\n return Grid;\n}(_Renderable__WEBPACK_IMPORTED_MODULE_11__[\"Renderable\"]), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7___default()(_class2.prototype, \"materialSystem\", [_dec2, _dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7___default()(_class2.prototype, \"geometrySystem\", [_dec4, _dec5], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_7___default()(_class2.prototype, \"shaderModuleService\", [_dec6], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3JlbmRlcmFibGUvZ3JpZC9pbmRleC5qcz9hZjFiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEwRjtBQUN0QjtBQUNOO0FBQ29CO0FBQzFCO0FBQ2tDO0FBQ3RCO0FBQ29CO0FBQ0E7O0FBRXhGOztBQUVBLGdDQUFnQyw2REFBNkQseUNBQXlDLGFBQWEsNEVBQWUsa0JBQWtCLGlDQUFpQyxpQkFBaUIsNEVBQWUsbUJBQW1CLHlEQUF5RCxFQUFFLE9BQU8sdUNBQXVDLEVBQUUsUUFBUSx1RkFBMEIsZUFBZSxHQUFHOztBQUV2YSxzQ0FBc0Msd0VBQXdFLDBDQUEwQyw4Q0FBOEMsTUFBTSx3RUFBd0UsR0FBRyxhQUFhLEVBQUUsWUFBWSxjQUFjLEVBQUU7O0FBRTdRO0FBQ0M7QUFDWDs7QUFFM0M7QUFDQSw2TkFBNk4sMkJBQTJCLGlDQUFpQyxpQ0FBaUMsMENBQTBDLGlEQUFpRCxvQ0FBb0MscUNBQXFDLCtCQUErQiwyQkFBMkIsaUJBQWlCLHlCQUF5Qiw0Q0FBNEMsa0RBQWtELDhCQUE4QiwwQkFBMEIsOEJBQThCLDhCQUE4Qiw0RkFBNEYsNEZBQTRGLHVGQUF1RixxRkFBcUYseURBQXlELG9EQUFvRCx3QkFBd0IsK0RBQStELFVBQVUsZUFBZSw2REFBNkQsVUFBVSxLQUFLLGlGQUFpRiwrREFBK0QsMENBQTBDLEdBQUc7O0FBRTlsRDtBQUNBLDBDQUEwQyw0QkFBNEIsa0NBQWtDLCtCQUErQixpQkFBaUIsNEJBQTRCLDRFQUE0RSxHQUFHO0FBQzVQLG1CQUFtQiw2REFBVSxZQUFZLHlEQUFNLENBQUMsOERBQVUsbUJBQW1CLHdEQUFLLENBQUMsOERBQVUsMEJBQTBCLHlEQUFNLENBQUMsOERBQVUsbUJBQW1CLHdEQUFLLENBQUMsOERBQVUsMEJBQTBCLHlEQUFNLENBQUMsOERBQVU7QUFDN04sRUFBRSxzRUFBUzs7QUFFWDs7QUFFQTtBQUNBOztBQUVBLElBQUksNEVBQWU7O0FBRW5CLHVFQUF1RSxhQUFhO0FBQ3BGO0FBQ0E7O0FBRUE7O0FBRUEsSUFBSSx1RkFBMEIsdUNBQXVDLG1GQUFzQjs7QUFFM0YsSUFBSSx1RkFBMEIsd0NBQXdDLG1GQUFzQjs7QUFFNUYsSUFBSSx1RkFBMEIsNkNBQTZDLG1GQUFzQjs7QUFFakc7QUFDQTs7QUFFQSxFQUFFLHlFQUFZO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsY0FBYyxzREFBRTtBQUNoQixPQUFPO0FBQ1A7QUFDQSxjQUFjLHNEQUFFO0FBQ2hCLE9BQU8sRUFBRTs7QUFFVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDLENBQUMsdURBQVUsMEJBQTBCLHNGQUF5QjtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHVAMC41LjVAQGFudHYvZy13ZWJncHUvZXMvcmVuZGVyYWJsZS9ncmlkL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0c1wiO1xuaW1wb3J0IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm5cIjtcbmltcG9ydCBfZ2V0UHJvdG90eXBlT2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZ2V0UHJvdG90eXBlT2ZcIjtcbmltcG9ydCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplcldhcm5pbmdIZWxwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyXCI7XG5cbnZhciBfZGVjLCBfZGVjMiwgX2RlYzMsIF9kZWM0LCBfZGVjNSwgX2RlYzYsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9kZXNjcmlwdG9yMiwgX2Rlc2NyaXB0b3IzLCBfdGVtcDtcblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5pbXBvcnQgeyBnbCwgSURFTlRJRklFUiB9IGZyb20gJ0BhbnR2L2ctd2ViZ3B1LWNvcmUnO1xuaW1wb3J0IHsgaW5qZWN0LCBpbmplY3RhYmxlLCBuYW1lZCB9IGZyb20gJ2ludmVyc2lmeSc7XG5pbXBvcnQgeyBSZW5kZXJhYmxlIH0gZnJvbSAnLi4vUmVuZGVyYWJsZSc7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuL3NoYWRlcnMvd2ViZ2wuZ3JpZC5mcmFnLmdsc2wnICovXG52YXIgZ3JpZEZyYWcgPSBcIi8vIGdlbmVyYXRlIGdyaWQsIGJvcnJvdyBmcm9tIGNsYXkuZ2wgdmlld2VyXFxuLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcGlzc2FuZy9jbGF5LXZpZXdlci9ibG9iL21hc3Rlci9zcmMvZ3JhcGhpYy9ncm91bmQuZ2xzbFxcbiNleHRlbnNpb24gR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIDogZW5hYmxlXFxuXFxudmFyeWluZyB2ZWMzIHZfUG9zaXRpb247XFxuLy8gdmFyeWluZyB2ZWMzIHZfTm9ybWFsO1xcblxcbnVuaWZvcm0gZmxvYXQgdV9HcmlkU2l6ZSA6IDU7XFxudW5pZm9ybSBmbG9hdCB1X0dyaWRTaXplMiA6IC41O1xcbnVuaWZvcm0gdmVjNCB1X0dyaWRDb2xvciA6IFswLCAwLCAwLCAxXTtcXG51bmlmb3JtIHZlYzQgdV9HcmlkQ29sb3IyIDogWzAuMywgMC4zLCAwLjMsIDFdO1xcbnVuaWZvcm0gYm9vbCB1X0dyaWRFbmFibGVkIDogdHJ1ZTtcXG5cXG4vLyB1bmlmb3JtIHZlYzMgdV9MaWdodERpcmVjdGlvbjtcXG4vLyB1bmlmb3JtIHZlYzMgdV9MaWdodENvbG9yO1xcbi8vIHVuaWZvcm0gdmVjMyB1X0NhbWVyYTtcXG5cXG52b2lkIG1haW4oKSB7XFxuICAvLyB2ZWMzIG4gPSB2X05vcm1hbDtcXG4gIC8vIHZlYzMgbCA9IG5vcm1hbGl6ZSh1X0xpZ2h0RGlyZWN0aW9uKTtcXG4gIC8vIGZsb2F0IE5kb3RMID0gY2xhbXAoZG90KG4sIGwpLCAwLjAwMSwgMS4wKTtcXG5cXG4gIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4pO1xcblxcbiAgaWYgKHVfR3JpZEVuYWJsZWQpIHtcXG4gICAgZmxvYXQgd3ggPSB2X1Bvc2l0aW9uLng7XFxuICAgIGZsb2F0IHd6ID0gdl9Qb3NpdGlvbi56O1xcbiAgICAvLyBmbG9hdCB4MCA9IGFicyhmcmFjdCh3eCAvIHVfR3JpZFNpemUgLSAwLjUpIC0gMC41KSAvIGZ3aWR0aCh3eCkgKiB1X0dyaWRTaXplIC8gMi4wO1xcbiAgICAvLyBmbG9hdCB6MCA9IGFicyhmcmFjdCh3eiAvIHVfR3JpZFNpemUgLSAwLjUpIC0gMC41KSAvIGZ3aWR0aCh3eikgKiB1X0dyaWRTaXplIC8gMi4wO1xcblxcbiAgICBmbG9hdCB4MSA9IGFicyhmcmFjdCh3eCAvIHVfR3JpZFNpemUyIC0gMC41KSAtIDAuNSkgLyBmd2lkdGgod3gpICogdV9HcmlkU2l6ZTI7XFxuICAgIGZsb2F0IHoxID0gYWJzKGZyYWN0KHd6IC8gdV9HcmlkU2l6ZTIgLSAwLjUpIC0gMC41KSAvIGZ3aWR0aCh3eikgKiB1X0dyaWRTaXplMjtcXG5cXG4gICAgLy8gZmxvYXQgdjAgPSAxLjAgLSBjbGFtcChtaW4oeDAsIHowKSwgMC4wLCAxLjApO1xcbiAgICBmbG9hdCB2MSA9IDEuMCAtIGNsYW1wKG1pbih4MSwgejEpLCAwLjAsIDEuMCk7XFxuICAgIC8vIGlmICh2MCA+IDAuMSkge1xcbiAgICAgICAgLy8gZ2xfRnJhZ0NvbG9yID0gbWl4KGdsX0ZyYWdDb2xvciwgdV9HcmlkQ29sb3IsIHYwKTtcXG4gICAgLy8gfVxcbiAgICAvLyBlbHNlIHtcXG4gICAgICAgIGdsX0ZyYWdDb2xvciA9IG1peChnbF9GcmFnQ29sb3IsIHVfR3JpZENvbG9yMiwgdjEpO1xcbiAgICAvLyB9XFxuICB9XFxuXFxuICAvLyBmbG9hdCBzaGFkb3dGYWN0b3IgPSBjYWxjU2hhZG93KHVfU2hhZG93TWFwLCB2X1Bvc2l0aW9uRnJvbUxpZ2h0LCBsLCBuKTtcXG4gIC8vIHZlYzMgZGlmZnVzZUNvbG9yID0gdV9MaWdodENvbG9yICogTmRvdEwgKiBzaGFkb3dGYWN0b3I7XFxuXFxuICAvLyBnbF9GcmFnQ29sb3IucmdiICo9IGRpZmZ1c2VDb2xvcjtcXG59XCI7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuL3NoYWRlcnMvd2ViZ2wuZ3JpZC52ZXJ0Lmdsc2wnICovXG52YXIgZ3JpZFZlcnQgPSBcImF0dHJpYnV0ZSB2ZWMzIGFfUG9zaXRpb247XFxuXFxudmFyeWluZyB2ZWMzIHZfUG9zaXRpb247XFxuXFxudW5pZm9ybSBtYXQ0IHByb2plY3Rpb25NYXRyaXg7XFxudW5pZm9ybSBtYXQ0IG1vZGVsVmlld01hdHJpeDtcXG5cXG52b2lkIG1haW4oKSB7XFxuICB2X1Bvc2l0aW9uID0gYV9Qb3NpdGlvbjtcXG4gIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIG1vZGVsVmlld01hdHJpeCAqIHZlYzQoYV9Qb3NpdGlvbiwgMS4pO1xcbn1cIjtcbmV4cG9ydCB2YXIgR3JpZCA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjMiA9IGluamVjdChJREVOVElGSUVSLlN5c3RlbXMpLCBfZGVjMyA9IG5hbWVkKElERU5USUZJRVIuTWF0ZXJpYWxTeXN0ZW0pLCBfZGVjNCA9IGluamVjdChJREVOVElGSUVSLlN5c3RlbXMpLCBfZGVjNSA9IG5hbWVkKElERU5USUZJRVIuR2VvbWV0cnlTeXN0ZW0pLCBfZGVjNiA9IGluamVjdChJREVOVElGSUVSLlNoYWRlck1vZHVsZVNlcnZpY2UpLCBfZGVjKF9jbGFzcyA9IChfY2xhc3MyID0gKF90ZW1wID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUmVuZGVyYWJsZSkge1xuICBfaW5oZXJpdHMoR3JpZCwgX1JlbmRlcmFibGUpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoR3JpZCk7XG5cbiAgZnVuY3Rpb24gR3JpZCgpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgR3JpZCk7XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkoX3RoaXMsIFwibWF0ZXJpYWxTeXN0ZW1cIiwgX2Rlc2NyaXB0b3IsIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KF90aGlzLCBcImdlb21ldHJ5U3lzdGVtXCIsIF9kZXNjcmlwdG9yMiwgX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkoX3RoaXMsIFwic2hhZGVyTW9kdWxlU2VydmljZVwiLCBfZGVzY3JpcHRvcjMsIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhHcmlkLCBbe1xuICAgIGtleTogXCJvbkF0dHJpYnV0ZUNoYW5nZWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25BdHRyaWJ1dGVDaGFuZ2VkKF9yZWYpIHtcbiAgICAgIHZhciBuYW1lID0gX3JlZi5uYW1lLFxuICAgICAgICAgIGRhdGEgPSBfcmVmLmRhdGE7XG4gICAgICB2YXIgbWVzaCA9IHRoaXMuZ2V0TWVzaENvbXBvbmVudCgpO1xuXG4gICAgICBpZiAobWVzaCAmJiBtZXNoLm1hdGVyaWFsKSB7XG4gICAgICAgIGlmIChuYW1lID09PSAnZ3JpZENvbG9yJykge1xuICAgICAgICAgIG1lc2gubWF0ZXJpYWwuc2V0VW5pZm9ybSgndV9HcmlkQ29sb3InLCBkYXRhKTtcbiAgICAgICAgICBtZXNoLm1hdGVyaWFsLnNldFVuaWZvcm0oJ3VfR3JpZENvbG9yMicsIGRhdGEpO1xuICAgICAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdncmlkU2l6ZScpIHtcbiAgICAgICAgICBtZXNoLm1hdGVyaWFsLnNldFVuaWZvcm0oJ3VfR3JpZFNpemUnLCBkYXRhKTtcbiAgICAgICAgICBtZXNoLm1hdGVyaWFsLnNldFVuaWZvcm0oJ3VfR3JpZFNpemUyJywgZGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwib25FbnRpdHlDcmVhdGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uRW50aXR5Q3JlYXRlZCgpIHtcbiAgICAgIHRoaXMuc2hhZGVyTW9kdWxlU2VydmljZS5yZWdpc3Rlck1vZHVsZSgnZ3JpZCcsIHtcbiAgICAgICAgdnM6IGdyaWRWZXJ0LFxuICAgICAgICBmczogZ3JpZEZyYWdcbiAgICAgIH0pO1xuXG4gICAgICB2YXIgX3RoaXMkc2hhZGVyTW9kdWxlU2VyID0gdGhpcy5zaGFkZXJNb2R1bGVTZXJ2aWNlLmdldE1vZHVsZSgnZ3JpZCcpLFxuICAgICAgICAgIHZzID0gX3RoaXMkc2hhZGVyTW9kdWxlU2VyLnZzLFxuICAgICAgICAgIGZzID0gX3RoaXMkc2hhZGVyTW9kdWxlU2VyLmZzLFxuICAgICAgICAgIGV4dHJhY3RlZFVuaWZvcm1zID0gX3RoaXMkc2hhZGVyTW9kdWxlU2VyLnVuaWZvcm1zO1xuXG4gICAgICB2YXIgbWF0ZXJpYWwgPSB0aGlzLm1hdGVyaWFsU3lzdGVtLmNyZWF0ZVNoYWRlck1hdGVyaWFsKHtcbiAgICAgICAgdmVydGV4U2hhZGVyOiB2cyxcbiAgICAgICAgZnJhZ21lbnRTaGFkZXI6IGZzXG4gICAgICB9KTtcbiAgICAgIHRoaXMuc2V0TWF0ZXJpYWwobWF0ZXJpYWwpO1xuICAgICAgdmFyIGdlb21ldHJ5ID0gdGhpcy5nZW9tZXRyeVN5c3RlbS5jcmVhdGVCdWZmZXJHZW9tZXRyeSh7XG4gICAgICAgIHZlcnRleENvdW50OiA0XG4gICAgICB9KTtcbiAgICAgIHRoaXMuc2V0R2VvbWV0cnkoZ2VvbWV0cnkpO1xuICAgICAgbWF0ZXJpYWwuc2V0Q3VsbCh7XG4gICAgICAgIGVuYWJsZTogZmFsc2UsXG4gICAgICAgIGZhY2U6IGdsLkJBQ0tcbiAgICAgIH0pLnNldERlcHRoKHtcbiAgICAgICAgZW5hYmxlOiB0cnVlLFxuICAgICAgICBmdW5jOiBnbC5MRVNTXG4gICAgICB9KTsgLy8gQHRzLWlnbm9yZVxuXG4gICAgICBtYXRlcmlhbC5zZXRVbmlmb3JtKGV4dHJhY3RlZFVuaWZvcm1zKTtcbiAgICAgIHRoaXMuc2V0QXR0cmlidXRlcyh7XG4gICAgICAgIGdyaWRDb2xvcjogdGhpcy5jb25maWcuZ3JpZENvbG9yLFxuICAgICAgICBncmlkU2l6ZTogdGhpcy5jb25maWcuZ3JpZFNpemVcbiAgICAgIH0pO1xuICAgICAgZ2VvbWV0cnkuc2V0SW5kZXgoWzAsIDMsIDIsIDIsIDEsIDBdKTtcbiAgICAgIGdlb21ldHJ5LnNldEF0dHJpYnV0ZSgnYV9Qb3NpdGlvbicsIEZsb2F0MzJBcnJheS5mcm9tKFstNCwgLTEsIC00LCA0LCAtMSwgLTQsIDQsIC0xLCA0LCAtNCwgLTEsIDRdKSwge1xuICAgICAgICBhcnJheVN0cmlkZTogNCAqIDIsXG4gICAgICAgIHN0ZXBNb2RlOiAndmVydGV4JyxcbiAgICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMCxcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgZm9ybWF0OiAnZmxvYXQyJ1xuICAgICAgICB9XVxuICAgICAgfSk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEdyaWQ7XG59KFJlbmRlcmFibGUpLCBfdGVtcCksIChfZGVzY3JpcHRvciA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwibWF0ZXJpYWxTeXN0ZW1cIiwgW19kZWMyLCBfZGVjM10sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pLCBfZGVzY3JpcHRvcjIgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcImdlb21ldHJ5U3lzdGVtXCIsIFtfZGVjNCwgX2RlYzVdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSwgX2Rlc2NyaXB0b3IzID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJzaGFkZXJNb2R1bGVTZXJ2aWNlXCIsIFtfZGVjNl0sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pKSwgX2NsYXNzMikpIHx8IF9jbGFzcyk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/grid/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/line/index.js":
/*!***************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/line/index.js ***!
\***************************************************************************************/
/*! exports provided: Line */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Line\", function() { return Line; });\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/_@babel_runtime@7.16.3@@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_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__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@7.16.3@@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@7.16.3@@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_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__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@7.16.3@@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_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _utils_polyline_normals__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../utils/polyline-normals */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/polyline-normals.js\");\n/* harmony import */ var _Renderable__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../Renderable */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/Renderable.js\");\n\n\n\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _class, _class2, _descriptor, _descriptor2, _descriptor3, _temp;\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_7___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_6___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n/* babel-plugin-inline-import './shaders/webgl.line.frag.glsl' */\nvar lineFrag = \"uniform float u_dash_array : 0.02;\\nuniform float u_dash_offset : 0;\\nuniform float u_dash_ratio : 0;\\nuniform float u_thickness : 0.02;\\n\\nvarying vec4 v_color;\\nvarying vec2 v_normal;\\nvarying float v_counters;\\n\\nvoid main() {\\n float blur = 1. - smoothstep(0.98, 1., length(v_normal));\\n\\n gl_FragColor = v_color;\\n gl_FragColor.a *= blur * ceil(mod(v_counters + u_dash_offset, u_dash_array) - (u_dash_array * u_dash_ratio));\\n}\";\n\n/* babel-plugin-inline-import './shaders/webgl.line.vert.glsl' */\nvar lineVert = \"attribute vec2 a_pos;\\nattribute vec4 a_color;\\nattribute float a_line_miter;\\nattribute vec2 a_line_normal;\\nattribute float a_counters;\\n\\nuniform mat4 projectionMatrix;\\nuniform mat4 modelViewMatrix;\\nuniform float u_thickness : 0.02;\\nuniform vec2 u_viewport;\\n\\nvarying vec4 v_color;\\nvarying vec2 v_normal;\\nvarying float v_counters;\\n\\nvoid main() {\\n v_color = a_color;\\n v_counters = a_counters;\\n\\n vec3 normal = normalize(vec3(a_line_normal, 0.0));\\n\\n vec4 offset = vec4(normal * u_thickness / 2.0 * a_line_miter, 0.0);\\n\\n v_normal = vec2(normal * sign(a_line_miter));\\n\\n gl_Position = projectionMatrix * modelViewMatrix * vec4(a_pos, 0.0, 1.0) + offset;\\n}\\n\";\nvar Line = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_10__[\"IDENTIFIER\"].Systems), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"named\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_10__[\"IDENTIFIER\"].MaterialSystem), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_10__[\"IDENTIFIER\"].Systems), _dec5 = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"named\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_10__[\"IDENTIFIER\"].GeometrySystem), _dec6 = Object(inversify__WEBPACK_IMPORTED_MODULE_11__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_10__[\"IDENTIFIER\"].ShaderModuleService), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function (_Renderable) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default()(Line, _Renderable);\n\n var _super = _createSuper(Line);\n\n function Line() {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2___default()(this, Line);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_1___default()(_this, \"materialSystem\", _descriptor, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4___default()(_this));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_1___default()(_this, \"geometrySystem\", _descriptor2, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4___default()(_this));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_1___default()(_this, \"shaderModuleService\", _descriptor3, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4___default()(_this));\n\n _this.vertexCount = void 0;\n return _this;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3___default()(Line, [{\n key: \"onAttributeChanged\",\n value: function onAttributeChanged(_ref) {\n var name = _ref.name,\n data = _ref.data;\n var mesh = this.getMeshComponent();\n\n if (mesh && mesh.material) {\n switch (name) {\n case 'dashArray':\n mesh.material.setUniform('u_dash_array', data);\n break;\n\n case 'dashOffset':\n mesh.material.setUniform('u_dash_offset', data);\n break;\n\n case 'dashRatio':\n mesh.material.setUniform('u_dash_ratio', data);\n break;\n\n case 'thickness':\n mesh.material.setUniform('u_thickness', data);\n break;\n\n case 'color':\n var colors = new Array(this.vertexCount).fill(undefined).map(function () {\n return data;\n }).reduce(function (prev, cur) {\n // @ts-ignore\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(prev), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(cur));\n }, []); // @ts-ignore\n\n mesh.geometry.setAttribute('a_color', Float32Array.from(colors), {\n arrayStride: 4 * 4,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 1,\n offset: 0,\n format: 'float4'\n }]\n });\n break;\n }\n }\n }\n }, {\n key: \"onEntityCreated\",\n value: function onEntityCreated() {\n var _this2 = this;\n\n this.shaderModuleService.registerModule('line', {\n vs: lineVert,\n fs: lineFrag\n });\n\n var _this$shaderModuleSer = this.shaderModuleService.getModule('line'),\n vs = _this$shaderModuleSer.vs,\n fs = _this$shaderModuleSer.fs,\n extractedUniforms = _this$shaderModuleSer.uniforms;\n\n var material = this.materialSystem.createShaderMaterial({\n vertexShader: vs,\n fragmentShader: fs\n });\n\n var _getNormals = Object(_utils_polyline_normals__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(this.config.points, false),\n normals = _getNormals.normals,\n attrIndex = _getNormals.attrIndex,\n attrPos = _getNormals.attrPos,\n attrCounters = _getNormals.attrCounters;\n\n var vertexCount = attrPos.length;\n this.vertexCount = vertexCount;\n var geometry = this.geometrySystem.createBufferGeometry({\n vertexCount: vertexCount\n });\n this.setMaterial(material);\n this.setGeometry(geometry);\n material.setCull({\n enable: false,\n face: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_10__[\"gl\"].BACK\n }) // @ts-ignore\n .setUniform(extractedUniforms);\n this.setAttributes({\n dashArray: this.config.dashArray,\n dashOffset: this.config.dashOffset,\n dashRatio: this.config.dashRatio,\n thickness: this.config.thickness\n });\n var attrNormal = [];\n var attrMiter = [];\n normals.forEach(function (n) {\n var norm = n[0];\n var miter = n[1];\n attrNormal.push([norm[0], norm[1]]); // @ts-ignore\n\n attrMiter.push(miter);\n }); // [[0,1,2], [2,1,3]]\n\n geometry.setIndex(attrIndex.reduce(function (prev, cur) {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(prev), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(cur));\n }, []));\n geometry.setAttribute('a_pos', Float32Array.from(attrPos.reduce(function (prev, cur) {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(prev), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(cur));\n }, [])), {\n arrayStride: 4 * 2,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 0,\n offset: 0,\n format: 'float2'\n }]\n });\n var colors = new Array(vertexCount).fill(undefined).map(function () {\n return _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(_this2.config.color);\n }).reduce(function (prev, cur) {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(prev), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(cur));\n }, []);\n geometry.setAttribute('a_color', Float32Array.from(colors), {\n arrayStride: 4 * 4,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 1,\n offset: 0,\n format: 'float4'\n }]\n });\n geometry.setAttribute('a_line_miter', Float32Array.from(attrMiter), {\n arrayStride: 4 * 1,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 2,\n offset: 0,\n format: 'float'\n }]\n });\n geometry.setAttribute('a_line_normal', Float32Array.from(attrNormal.reduce(function (prev, cur) {\n return [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(prev), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(cur));\n }, [])), {\n arrayStride: 4 * 2,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 3,\n offset: 0,\n format: 'float2'\n }]\n });\n geometry.setAttribute('a_counters', Float32Array.from(attrCounters), {\n arrayStride: 4 * 1,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 4,\n offset: 0,\n format: 'float'\n }]\n });\n }\n }]);\n\n return Line;\n}(_Renderable__WEBPACK_IMPORTED_MODULE_13__[\"Renderable\"]), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_8___default()(_class2.prototype, \"materialSystem\", [_dec2, _dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_8___default()(_class2.prototype, \"geometrySystem\", [_dec4, _dec5], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_8___default()(_class2.prototype, \"shaderModuleService\", [_dec6], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3JlbmRlcmFibGUvbGluZS9pbmRleC5qcz8wYWNkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEwRTtBQUNnQjtBQUN0QjtBQUNOO0FBQ29CO0FBQzFCO0FBQ2tDO0FBQ3RCO0FBQ29CO0FBQ0E7O0FBRXhGOztBQUVBLGdDQUFnQyw2REFBNkQseUNBQXlDLGFBQWEsNEVBQWUsa0JBQWtCLGlDQUFpQyxpQkFBaUIsNEVBQWUsbUJBQW1CLHlEQUF5RCxFQUFFLE9BQU8sdUNBQXVDLEVBQUUsUUFBUSx1RkFBMEIsZUFBZSxHQUFHOztBQUV2YSxzQ0FBc0Msd0VBQXdFLDBDQUEwQyw4Q0FBOEMsTUFBTSx3RUFBd0UsR0FBRyxhQUFhLEVBQUUsWUFBWSxjQUFjLEVBQUU7O0FBRTdRO0FBQ0M7QUFDQTtBQUNYOztBQUUzQztBQUNBLGtEQUFrRCxrQ0FBa0MsaUNBQWlDLG1DQUFtQyx5QkFBeUIsd0JBQXdCLDJCQUEyQixpQkFBaUIsK0RBQStELCtCQUErQixtSEFBbUgsR0FBRzs7QUFFemM7QUFDQSxxQ0FBcUMseUJBQXlCLCtCQUErQiwrQkFBK0IsNkJBQTZCLGtDQUFrQywrQkFBK0IsbUNBQW1DLDBCQUEwQix5QkFBeUIsd0JBQXdCLDJCQUEyQixpQkFBaUIsc0JBQXNCLDRCQUE0Qix3REFBd0QseUVBQXlFLG1EQUFtRCx3RkFBd0YsR0FBRztBQUM5cUIsbUJBQW1CLDZEQUFVLFlBQVkseURBQU0sQ0FBQywrREFBVSxtQkFBbUIsd0RBQUssQ0FBQywrREFBVSwwQkFBMEIseURBQU0sQ0FBQywrREFBVSxtQkFBbUIsd0RBQUssQ0FBQywrREFBVSwwQkFBMEIseURBQU0sQ0FBQywrREFBVTtBQUM3TixFQUFFLHNFQUFTOztBQUVYOztBQUVBO0FBQ0E7O0FBRUEsSUFBSSw0RUFBZTs7QUFFbkIsdUVBQXVFLGFBQWE7QUFDcEY7QUFDQTs7QUFFQTs7QUFFQSxJQUFJLHVGQUEwQix1Q0FBdUMsbUZBQXNCOztBQUUzRixJQUFJLHVGQUEwQix3Q0FBd0MsbUZBQXNCOztBQUU1RixJQUFJLHVGQUEwQiw2Q0FBNkMsbUZBQXNCOztBQUVqRztBQUNBO0FBQ0E7O0FBRUEsRUFBRSx5RUFBWTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSwrQkFBK0IsK0VBQWtCLFFBQVEsK0VBQWtCO0FBQzNFLGFBQWEsTUFBTTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2YsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVAsd0JBQXdCLHdFQUFVO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyx1REFBRTtBQUNoQixPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEM7O0FBRTVDO0FBQ0EsT0FBTyxFQUFFOztBQUVUO0FBQ0EseUJBQXlCLCtFQUFrQixRQUFRLCtFQUFrQjtBQUNyRSxPQUFPO0FBQ1A7QUFDQSx5QkFBeUIsK0VBQWtCLFFBQVEsK0VBQWtCO0FBQ3JFLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EsZUFBZSwrRUFBa0I7QUFDakMsT0FBTztBQUNQLHlCQUF5QiwrRUFBa0IsUUFBUSwrRUFBa0I7QUFDckUsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSx5QkFBeUIsK0VBQWtCLFFBQVEsK0VBQWtCO0FBQ3JFLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDLENBQUMsdURBQVUsMEJBQTBCLHNGQUF5QjtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCLHNGQUF5QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHVAMC41LjVAQGFudHYvZy13ZWJncHUvZXMvcmVuZGVyYWJsZS9saW5lL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheVwiO1xuaW1wb3J0IF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0c1wiO1xuaW1wb3J0IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm5cIjtcbmltcG9ydCBfZ2V0UHJvdG90eXBlT2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZ2V0UHJvdG90eXBlT2ZcIjtcbmltcG9ydCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplcldhcm5pbmdIZWxwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyXCI7XG5cbnZhciBfZGVjLCBfZGVjMiwgX2RlYzMsIF9kZWM0LCBfZGVjNSwgX2RlYzYsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9kZXNjcmlwdG9yMiwgX2Rlc2NyaXB0b3IzLCBfdGVtcDtcblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5pbXBvcnQgeyBnbCwgSURFTlRJRklFUiB9IGZyb20gJ0BhbnR2L2ctd2ViZ3B1LWNvcmUnO1xuaW1wb3J0IHsgaW5qZWN0LCBpbmplY3RhYmxlLCBuYW1lZCB9IGZyb20gJ2ludmVyc2lmeSc7XG5pbXBvcnQgZ2V0Tm9ybWFscyBmcm9tICcuLi8uLi91dGlscy9wb2x5bGluZS1ub3JtYWxzJztcbmltcG9ydCB7IFJlbmRlcmFibGUgfSBmcm9tICcuLi9SZW5kZXJhYmxlJztcblxuLyogYmFiZWwtcGx1Z2luLWlubGluZS1pbXBvcnQgJy4vc2hhZGVycy93ZWJnbC5saW5lLmZyYWcuZ2xzbCcgKi9cbnZhciBsaW5lRnJhZyA9IFwidW5pZm9ybSBmbG9hdCB1X2Rhc2hfYXJyYXkgOiAwLjAyO1xcbnVuaWZvcm0gZmxvYXQgdV9kYXNoX29mZnNldCA6IDA7XFxudW5pZm9ybSBmbG9hdCB1X2Rhc2hfcmF0aW8gOiAwO1xcbnVuaWZvcm0gZmxvYXQgdV90aGlja25lc3MgOiAwLjAyO1xcblxcbnZhcnlpbmcgdmVjNCB2X2NvbG9yO1xcbnZhcnlpbmcgdmVjMiB2X25vcm1hbDtcXG52YXJ5aW5nIGZsb2F0IHZfY291bnRlcnM7XFxuXFxudm9pZCBtYWluKCkge1xcbiAgICBmbG9hdCBibHVyID0gMS4gLSBzbW9vdGhzdGVwKDAuOTgsIDEuLCBsZW5ndGgodl9ub3JtYWwpKTtcXG5cXG4gICAgZ2xfRnJhZ0NvbG9yID0gdl9jb2xvcjtcXG4gICAgZ2xfRnJhZ0NvbG9yLmEgKj0gYmx1ciAqIGNlaWwobW9kKHZfY291bnRlcnMgKyB1X2Rhc2hfb2Zmc2V0LCB1X2Rhc2hfYXJyYXkpIC0gKHVfZGFzaF9hcnJheSAqIHVfZGFzaF9yYXRpbykpO1xcbn1cIjtcblxuLyogYmFiZWwtcGx1Z2luLWlubGluZS1pbXBvcnQgJy4vc2hhZGVycy93ZWJnbC5saW5lLnZlcnQuZ2xzbCcgKi9cbnZhciBsaW5lVmVydCA9IFwiYXR0cmlidXRlIHZlYzIgYV9wb3M7XFxuYXR0cmlidXRlIHZlYzQgYV9jb2xvcjtcXG5hdHRyaWJ1dGUgZmxvYXQgYV9saW5lX21pdGVyO1xcbmF0dHJpYnV0ZSB2ZWMyIGFfbGluZV9ub3JtYWw7XFxuYXR0cmlidXRlIGZsb2F0IGFfY291bnRlcnM7XFxuXFxudW5pZm9ybSBtYXQ0IHByb2plY3Rpb25NYXRyaXg7XFxudW5pZm9ybSBtYXQ0IG1vZGVsVmlld01hdHJpeDtcXG51bmlmb3JtIGZsb2F0IHVfdGhpY2tuZXNzIDogMC4wMjtcXG51bmlmb3JtIHZlYzIgdV92aWV3cG9ydDtcXG5cXG52YXJ5aW5nIHZlYzQgdl9jb2xvcjtcXG52YXJ5aW5nIHZlYzIgdl9ub3JtYWw7XFxudmFyeWluZyBmbG9hdCB2X2NvdW50ZXJzO1xcblxcbnZvaWQgbWFpbigpIHtcXG4gIHZfY29sb3IgPSBhX2NvbG9yO1xcbiAgdl9jb3VudGVycyA9IGFfY291bnRlcnM7XFxuXFxuICB2ZWMzIG5vcm1hbCA9IG5vcm1hbGl6ZSh2ZWMzKGFfbGluZV9ub3JtYWwsIDAuMCkpO1xcblxcbiAgdmVjNCBvZmZzZXQgPSB2ZWM0KG5vcm1hbCAqIHVfdGhpY2tuZXNzIC8gMi4wICogYV9saW5lX21pdGVyLCAwLjApO1xcblxcbiAgdl9ub3JtYWwgPSB2ZWMyKG5vcm1hbCAqIHNpZ24oYV9saW5lX21pdGVyKSk7XFxuXFxuICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiBtb2RlbFZpZXdNYXRyaXggKiB2ZWM0KGFfcG9zLCAwLjAsIDEuMCkgKyBvZmZzZXQ7XFxufVxcblwiO1xuZXhwb3J0IHZhciBMaW5lID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMyID0gaW5qZWN0KElERU5USUZJRVIuU3lzdGVtcyksIF9kZWMzID0gbmFtZWQoSURFTlRJRklFUi5NYXRlcmlhbFN5c3RlbSksIF9kZWM0ID0gaW5qZWN0KElERU5USUZJRVIuU3lzdGVtcyksIF9kZWM1ID0gbmFtZWQoSURFTlRJRklFUi5HZW9tZXRyeVN5c3RlbSksIF9kZWM2ID0gaW5qZWN0KElERU5USUZJRVIuU2hhZGVyTW9kdWxlU2VydmljZSksIF9kZWMoX2NsYXNzID0gKF9jbGFzczIgPSAoX3RlbXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9SZW5kZXJhYmxlKSB7XG4gIF9pbmhlcml0cyhMaW5lLCBfUmVuZGVyYWJsZSk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihMaW5lKTtcblxuICBmdW5jdGlvbiBMaW5lKCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBMaW5lKTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJtYXRlcmlhbFN5c3RlbVwiLCBfZGVzY3JpcHRvciwgX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkoX3RoaXMsIFwiZ2VvbWV0cnlTeXN0ZW1cIiwgX2Rlc2NyaXB0b3IyLCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJzaGFkZXJNb2R1bGVTZXJ2aWNlXCIsIF9kZXNjcmlwdG9yMywgX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpO1xuXG4gICAgX3RoaXMudmVydGV4Q291bnQgPSB2b2lkIDA7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKExpbmUsIFt7XG4gICAga2V5OiBcIm9uQXR0cmlidXRlQ2hhbmdlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbkF0dHJpYnV0ZUNoYW5nZWQoX3JlZikge1xuICAgICAgdmFyIG5hbWUgPSBfcmVmLm5hbWUsXG4gICAgICAgICAgZGF0YSA9IF9yZWYuZGF0YTtcbiAgICAgIHZhciBtZXNoID0gdGhpcy5nZXRNZXNoQ29tcG9uZW50KCk7XG5cbiAgICAgIGlmIChtZXNoICYmIG1lc2gubWF0ZXJpYWwpIHtcbiAgICAgICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICAgICAgY2FzZSAnZGFzaEFycmF5JzpcbiAgICAgICAgICAgIG1lc2gubWF0ZXJpYWwuc2V0VW5pZm9ybSgndV9kYXNoX2FycmF5JywgZGF0YSk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ2Rhc2hPZmZzZXQnOlxuICAgICAgICAgICAgbWVzaC5tYXRlcmlhbC5zZXRVbmlmb3JtKCd1X2Rhc2hfb2Zmc2V0JywgZGF0YSk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ2Rhc2hSYXRpbyc6XG4gICAgICAgICAgICBtZXNoLm1hdGVyaWFsLnNldFVuaWZvcm0oJ3VfZGFzaF9yYXRpbycsIGRhdGEpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICd0aGlja25lc3MnOlxuICAgICAgICAgICAgbWVzaC5tYXRlcmlhbC5zZXRVbmlmb3JtKCd1X3RoaWNrbmVzcycsIGRhdGEpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdjb2xvcic6XG4gICAgICAgICAgICB2YXIgY29sb3JzID0gbmV3IEFycmF5KHRoaXMudmVydGV4Q291bnQpLmZpbGwodW5kZWZpbmVkKS5tYXAoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgICAgIH0pLnJlZHVjZShmdW5jdGlvbiAocHJldiwgY3VyKSB7XG4gICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgcmV0dXJuIFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkocHJldiksIF90b0NvbnN1bWFibGVBcnJheShjdXIpKTtcbiAgICAgICAgICAgIH0sIFtdKTsgLy8gQHRzLWlnbm9yZVxuXG4gICAgICAgICAgICBtZXNoLmdlb21ldHJ5LnNldEF0dHJpYnV0ZSgnYV9jb2xvcicsIEZsb2F0MzJBcnJheS5mcm9tKGNvbG9ycyksIHtcbiAgICAgICAgICAgICAgYXJyYXlTdHJpZGU6IDQgKiA0LFxuICAgICAgICAgICAgICBzdGVwTW9kZTogJ3ZlcnRleCcsXG4gICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IFt7XG4gICAgICAgICAgICAgICAgc2hhZGVyTG9jYXRpb246IDEsXG4gICAgICAgICAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICAgICAgICAgIGZvcm1hdDogJ2Zsb2F0NCdcbiAgICAgICAgICAgICAgfV1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwib25FbnRpdHlDcmVhdGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uRW50aXR5Q3JlYXRlZCgpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICB0aGlzLnNoYWRlck1vZHVsZVNlcnZpY2UucmVnaXN0ZXJNb2R1bGUoJ2xpbmUnLCB7XG4gICAgICAgIHZzOiBsaW5lVmVydCxcbiAgICAgICAgZnM6IGxpbmVGcmFnXG4gICAgICB9KTtcblxuICAgICAgdmFyIF90aGlzJHNoYWRlck1vZHVsZVNlciA9IHRoaXMuc2hhZGVyTW9kdWxlU2VydmljZS5nZXRNb2R1bGUoJ2xpbmUnKSxcbiAgICAgICAgICB2cyA9IF90aGlzJHNoYWRlck1vZHVsZVNlci52cyxcbiAgICAgICAgICBmcyA9IF90aGlzJHNoYWRlck1vZHVsZVNlci5mcyxcbiAgICAgICAgICBleHRyYWN0ZWRVbmlmb3JtcyA9IF90aGlzJHNoYWRlck1vZHVsZVNlci51bmlmb3JtcztcblxuICAgICAgdmFyIG1hdGVyaWFsID0gdGhpcy5tYXRlcmlhbFN5c3RlbS5jcmVhdGVTaGFkZXJNYXRlcmlhbCh7XG4gICAgICAgIHZlcnRleFNoYWRlcjogdnMsXG4gICAgICAgIGZyYWdtZW50U2hhZGVyOiBmc1xuICAgICAgfSk7XG5cbiAgICAgIHZhciBfZ2V0Tm9ybWFscyA9IGdldE5vcm1hbHModGhpcy5jb25maWcucG9pbnRzLCBmYWxzZSksXG4gICAgICAgICAgbm9ybWFscyA9IF9nZXROb3JtYWxzLm5vcm1hbHMsXG4gICAgICAgICAgYXR0ckluZGV4ID0gX2dldE5vcm1hbHMuYXR0ckluZGV4LFxuICAgICAgICAgIGF0dHJQb3MgPSBfZ2V0Tm9ybWFscy5hdHRyUG9zLFxuICAgICAgICAgIGF0dHJDb3VudGVycyA9IF9nZXROb3JtYWxzLmF0dHJDb3VudGVycztcblxuICAgICAgdmFyIHZlcnRleENvdW50ID0gYXR0clBvcy5sZW5ndGg7XG4gICAgICB0aGlzLnZlcnRleENvdW50ID0gdmVydGV4Q291bnQ7XG4gICAgICB2YXIgZ2VvbWV0cnkgPSB0aGlzLmdlb21ldHJ5U3lzdGVtLmNyZWF0ZUJ1ZmZlckdlb21ldHJ5KHtcbiAgICAgICAgdmVydGV4Q291bnQ6IHZlcnRleENvdW50XG4gICAgICB9KTtcbiAgICAgIHRoaXMuc2V0TWF0ZXJpYWwobWF0ZXJpYWwpO1xuICAgICAgdGhpcy5zZXRHZW9tZXRyeShnZW9tZXRyeSk7XG4gICAgICBtYXRlcmlhbC5zZXRDdWxsKHtcbiAgICAgICAgZW5hYmxlOiBmYWxzZSxcbiAgICAgICAgZmFjZTogZ2wuQkFDS1xuICAgICAgfSkgLy8gQHRzLWlnbm9yZVxuICAgICAgLnNldFVuaWZvcm0oZXh0cmFjdGVkVW5pZm9ybXMpO1xuICAgICAgdGhpcy5zZXRBdHRyaWJ1dGVzKHtcbiAgICAgICAgZGFzaEFycmF5OiB0aGlzLmNvbmZpZy5kYXNoQXJyYXksXG4gICAgICAgIGRhc2hPZmZzZXQ6IHRoaXMuY29uZmlnLmRhc2hPZmZzZXQsXG4gICAgICAgIGRhc2hSYXRpbzogdGhpcy5jb25maWcuZGFzaFJhdGlvLFxuICAgICAgICB0aGlja25lc3M6IHRoaXMuY29uZmlnLnRoaWNrbmVzc1xuICAgICAgfSk7XG4gICAgICB2YXIgYXR0ck5vcm1hbCA9IFtdO1xuICAgICAgdmFyIGF0dHJNaXRlciA9IFtdO1xuICAgICAgbm9ybWFscy5mb3JFYWNoKGZ1bmN0aW9uIChuKSB7XG4gICAgICAgIHZhciBub3JtID0gblswXTtcbiAgICAgICAgdmFyIG1pdGVyID0gblsxXTtcbiAgICAgICAgYXR0ck5vcm1hbC5wdXNoKFtub3JtWzBdLCBub3JtWzFdXSk7IC8vIEB0cy1pZ25vcmVcblxuICAgICAgICBhdHRyTWl0ZXIucHVzaChtaXRlcik7XG4gICAgICB9KTsgLy8gW1swLDEsMl0sIFsyLDEsM11dXG5cbiAgICAgIGdlb21ldHJ5LnNldEluZGV4KGF0dHJJbmRleC5yZWR1Y2UoZnVuY3Rpb24gKHByZXYsIGN1cikge1xuICAgICAgICByZXR1cm4gW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShwcmV2KSwgX3RvQ29uc3VtYWJsZUFycmF5KGN1cikpO1xuICAgICAgfSwgW10pKTtcbiAgICAgIGdlb21ldHJ5LnNldEF0dHJpYnV0ZSgnYV9wb3MnLCBGbG9hdDMyQXJyYXkuZnJvbShhdHRyUG9zLnJlZHVjZShmdW5jdGlvbiAocHJldiwgY3VyKSB7XG4gICAgICAgIHJldHVybiBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHByZXYpLCBfdG9Db25zdW1hYmxlQXJyYXkoY3VyKSk7XG4gICAgICB9LCBbXSkpLCB7XG4gICAgICAgIGFycmF5U3RyaWRlOiA0ICogMixcbiAgICAgICAgc3RlcE1vZGU6ICd2ZXJ0ZXgnLFxuICAgICAgICBhdHRyaWJ1dGVzOiBbe1xuICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiAwLFxuICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICBmb3JtYXQ6ICdmbG9hdDInXG4gICAgICAgIH1dXG4gICAgICB9KTtcbiAgICAgIHZhciBjb2xvcnMgPSBuZXcgQXJyYXkodmVydGV4Q291bnQpLmZpbGwodW5kZWZpbmVkKS5tYXAoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gX3RvQ29uc3VtYWJsZUFycmF5KF90aGlzMi5jb25maWcuY29sb3IpO1xuICAgICAgfSkucmVkdWNlKGZ1bmN0aW9uIChwcmV2LCBjdXIpIHtcbiAgICAgICAgcmV0dXJuIFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkocHJldiksIF90b0NvbnN1bWFibGVBcnJheShjdXIpKTtcbiAgICAgIH0sIFtdKTtcbiAgICAgIGdlb21ldHJ5LnNldEF0dHJpYnV0ZSgnYV9jb2xvcicsIEZsb2F0MzJBcnJheS5mcm9tKGNvbG9ycyksIHtcbiAgICAgICAgYXJyYXlTdHJpZGU6IDQgKiA0LFxuICAgICAgICBzdGVwTW9kZTogJ3ZlcnRleCcsXG4gICAgICAgIGF0dHJpYnV0ZXM6IFt7XG4gICAgICAgICAgc2hhZGVyTG9jYXRpb246IDEsXG4gICAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICAgIGZvcm1hdDogJ2Zsb2F0NCdcbiAgICAgICAgfV1cbiAgICAgIH0pO1xuICAgICAgZ2VvbWV0cnkuc2V0QXR0cmlidXRlKCdhX2xpbmVfbWl0ZXInLCBGbG9hdDMyQXJyYXkuZnJvbShhdHRyTWl0ZXIpLCB7XG4gICAgICAgIGFycmF5U3RyaWRlOiA0ICogMSxcbiAgICAgICAgc3RlcE1vZGU6ICd2ZXJ0ZXgnLFxuICAgICAgICBhdHRyaWJ1dGVzOiBbe1xuICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiAyLFxuICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICBmb3JtYXQ6ICdmbG9hdCdcbiAgICAgICAgfV1cbiAgICAgIH0pO1xuICAgICAgZ2VvbWV0cnkuc2V0QXR0cmlidXRlKCdhX2xpbmVfbm9ybWFsJywgRmxvYXQzMkFycmF5LmZyb20oYXR0ck5vcm1hbC5yZWR1Y2UoZnVuY3Rpb24gKHByZXYsIGN1cikge1xuICAgICAgICByZXR1cm4gW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShwcmV2KSwgX3RvQ29uc3VtYWJsZUFycmF5KGN1cikpO1xuICAgICAgfSwgW10pKSwge1xuICAgICAgICBhcnJheVN0cmlkZTogNCAqIDIsXG4gICAgICAgIHN0ZXBNb2RlOiAndmVydGV4JyxcbiAgICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMyxcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgZm9ybWF0OiAnZmxvYXQyJ1xuICAgICAgICB9XVxuICAgICAgfSk7XG4gICAgICBnZW9tZXRyeS5zZXRBdHRyaWJ1dGUoJ2FfY291bnRlcnMnLCBGbG9hdDMyQXJyYXkuZnJvbShhdHRyQ291bnRlcnMpLCB7XG4gICAgICAgIGFycmF5U3RyaWRlOiA0ICogMSxcbiAgICAgICAgc3RlcE1vZGU6ICd2ZXJ0ZXgnLFxuICAgICAgICBhdHRyaWJ1dGVzOiBbe1xuICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiA0LFxuICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICBmb3JtYXQ6ICdmbG9hdCdcbiAgICAgICAgfV1cbiAgICAgIH0pO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBMaW5lO1xufShSZW5kZXJhYmxlKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcIm1hdGVyaWFsU3lzdGVtXCIsIFtfZGVjMiwgX2RlYzNdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSwgX2Rlc2NyaXB0b3IyID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJnZW9tZXRyeVN5c3RlbVwiLCBbX2RlYzQsIF9kZWM1XSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMyA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwic2hhZGVyTW9kdWxlU2VydmljZVwiLCBbX2RlYzZdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/line/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/point/index.js":
/*!****************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/point/index.js ***!
\****************************************************************************************/
/*! exports provided: Point */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Point\", function() { return Point; });\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__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@7.16.3@@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@7.16.3@@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_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/assertThisInitialized.js\");\n/* harmony import */ var _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_assertThisInitialized__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@7.16.3@@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_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _utils_picking__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../utils/picking */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/picking.js\");\n/* harmony import */ var _Renderable__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../Renderable */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/Renderable.js\");\n\n\n\n\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _class, _class2, _descriptor, _descriptor2, _descriptor3, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_8___default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_8___default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_7___default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n/* babel-plugin-inline-import './shaders/webgl.point.frag.glsl' */\nvar pointFrag = \"uniform float u_blur : 0.05;\\nuniform float u_opacity : 0.7;\\nuniform float u_stroke_width : 0.01;\\nuniform vec4 u_stroke_color : [0, 0, 0, 0];\\nuniform float u_stroke_opacity : 1;\\n\\nvarying vec4 v_color;\\nvarying vec4 v_data;\\nvarying float v_radius;\\n\\n#pragma include \\\"sdf2d\\\"\\n#pragma include \\\"picking\\\"\\n\\nvoid main() {\\n int shape = int(floor(v_data.w + 0.5));\\n\\n float antialiasblur = v_data.z;\\n float antialiased_blur = -max(u_blur, antialiasblur);\\n float r = v_radius / (v_radius + u_stroke_width);\\n\\n float outer_df;\\n float inner_df;\\n // 'circle', 'triangle', 'square', 'pentagon', 'hexagon', 'octogon', 'hexagram', 'rhombus', 'vesica'\\n // if (shape == 0) {\\n outer_df = sdCircle(v_data.xy, 1.0);\\n inner_df = sdCircle(v_data.xy, r);\\n // } else if (shape == 1) {\\n // outer_df = sdEquilateralTriangle(1.1 * v_data.xy);\\n // inner_df = sdEquilateralTriangle(1.1 / r * v_data.xy);\\n // } else if (shape == 2) {\\n // outer_df = sdBox(v_data.xy, vec2(1.));\\n // inner_df = sdBox(v_data.xy, vec2(r));\\n // } else if (shape == 3) {\\n // outer_df = sdPentagon(v_data.xy, 0.8);\\n // inner_df = sdPentagon(v_data.xy, r * 0.8);\\n // } else if (shape == 4) {\\n // outer_df = sdHexagon(v_data.xy, 0.8);\\n // inner_df = sdHexagon(v_data.xy, r * 0.8);\\n // } else if (shape == 5) {\\n // outer_df = sdOctogon(v_data.xy, 1.0);\\n // inner_df = sdOctogon(v_data.xy, r);\\n // } else if (shape == 6) {\\n // outer_df = sdHexagram(v_data.xy, 0.52);\\n // inner_df = sdHexagram(v_data.xy, r * 0.52);\\n // } else if (shape == 7) {\\n // outer_df = sdRhombus(v_data.xy, vec2(1.0));\\n // inner_df = sdRhombus(v_data.xy, vec2(r));\\n // } else if (shape == 8) {\\n // outer_df = sdVesica(v_data.xy, 1.1, 0.8);\\n // inner_df = sdVesica(v_data.xy, r * 1.1, r * 0.8);\\n // }\\n\\n float opacity_t = smoothstep(0.0, antialiased_blur, outer_df);\\n\\n float color_t = u_stroke_width < 0.01 ? 0.0 : smoothstep(\\n antialiased_blur,\\n 0.0,\\n inner_df\\n );\\n vec4 strokeColor = u_stroke_color == vec4(0) ? v_color : u_stroke_color;\\n\\n gl_FragColor = mix(vec4(v_color.rgb, v_color.a * u_opacity), strokeColor * u_stroke_opacity, color_t);\\n gl_FragColor.a = gl_FragColor.a * opacity_t;\\n\\n gl_FragColor = filterColor(gl_FragColor);\\n}\";\n\n/* babel-plugin-inline-import './shaders/webgl.point.vert.glsl' */\nvar pointVert = \"attribute vec2 position;\\nattribute vec4 color;\\nattribute float shape;\\nattribute vec2 offset;\\nattribute float size;\\n\\nuniform mat4 projectionMatrix;\\nuniform mat4 modelViewMatrix;\\n\\nuniform float u_stroke_width : 0.01;\\nuniform float u_device_pixel_ratio;\\nuniform vec2 u_viewport;\\n\\nvarying vec4 v_color;\\nvarying vec4 v_data;\\nvarying float v_radius;\\n\\n#pragma include \\\"picking\\\"\\n\\nvoid main() {\\n v_color = color;\\n v_radius = size;\\n\\n lowp float antialiasblur = 1.0 / u_device_pixel_ratio * (size + u_stroke_width);\\n\\n // construct point coords\\n v_data = vec4(position, antialiasblur, shape);\\n\\n gl_Position = projectionMatrix * modelViewMatrix\\n * vec4(position * size + offset, 0.0, 1.0);\\n\\n setPickingColor(a_PickingColor);\\n}\";\nvar pointShapes = ['circle', 'triangle', 'square', 'pentagon', 'hexagon', 'octogon', 'hexagram', 'rhombus', 'vesica'];\nvar Point = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_12__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_12__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_11__[\"IDENTIFIER\"].Systems), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_12__[\"named\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_11__[\"IDENTIFIER\"].MaterialSystem), _dec4 = Object(inversify__WEBPACK_IMPORTED_MODULE_12__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_11__[\"IDENTIFIER\"].Systems), _dec5 = Object(inversify__WEBPACK_IMPORTED_MODULE_12__[\"named\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_11__[\"IDENTIFIER\"].GeometrySystem), _dec6 = Object(inversify__WEBPACK_IMPORTED_MODULE_12__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_11__[\"IDENTIFIER\"].ShaderModuleService), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function (_Renderable) {\n _babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default()(Point, _Renderable);\n\n var _super = _createSuper(Point);\n\n function Point() {\n var _this;\n\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_3___default()(this, Point);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(_this, \"materialSystem\", _descriptor, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default()(_this));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(_this, \"geometrySystem\", _descriptor2, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default()(_this));\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_2___default()(_this, \"shaderModuleService\", _descriptor3, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5___default()(_this));\n\n return _this;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4___default()(Point, [{\n key: \"onAttributeChanged\",\n value: function onAttributeChanged(_ref) {\n var name = _ref.name,\n data = _ref.data;\n var mesh = this.getMeshComponent();\n\n if (mesh && mesh.material) {\n if (name === 'strokeWidth') {\n mesh.material.setUniform('u_stroke_width', data);\n } else if (name === 'strokeColor') {\n mesh.material.setUniform('u_stroke_color', data);\n } else if (name === 'strokeOpacity') {\n mesh.material.setUniform('u_stroke_opacity', data);\n } else if (name === 'opacity') {\n mesh.material.setUniform('u_opacity', data);\n } else if (name === 'blur') {\n mesh.material.setUniform('u_blur', data);\n }\n }\n }\n }, {\n key: \"onEntityCreated\",\n value: function onEntityCreated() {\n this.shaderModuleService.registerModule('grid', {\n vs: pointVert,\n fs: pointFrag\n });\n\n var _this$shaderModuleSer = this.shaderModuleService.getModule('grid'),\n vs = _this$shaderModuleSer.vs,\n fs = _this$shaderModuleSer.fs,\n extractedUniforms = _this$shaderModuleSer.uniforms;\n\n var material = this.materialSystem.createShaderMaterial({\n vertexShader: vs,\n fragmentShader: fs,\n cull: {\n enable: false\n },\n depth: {\n enable: false\n },\n blend: {\n enable: true,\n func: {\n srcRGB: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_11__[\"gl\"].SRC_ALPHA,\n dstRGB: _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_11__[\"gl\"].ONE_MINUS_SRC_ALPHA,\n srcAlpha: 1,\n dstAlpha: 1\n }\n }\n }); // TODO: support define stroke-relative props per point\n\n material.setUniform(_objectSpread({\n u_device_pixel_ratio: window.devicePixelRatio\n }, extractedUniforms));\n var attributes = this.buildAttributes();\n var geometry = this.geometrySystem.createInstancedBufferGeometry({\n maxInstancedCount: attributes.instancedOffsets.length / 2,\n vertexCount: 6\n });\n geometry.setIndex([0, 2, 1, 0, 3, 2]);\n geometry.setAttribute('position', Float32Array.from(attributes.positions), {\n arrayStride: 4 * 2,\n stepMode: 'vertex',\n attributes: [{\n shaderLocation: 0,\n offset: 0,\n format: 'float2'\n }]\n });\n geometry.setAttribute('offset', Float32Array.from(attributes.instancedOffsets), {\n arrayStride: 4 * 2,\n stepMode: 'instance',\n attributes: [{\n shaderLocation: 1,\n offset: 0,\n format: 'float2'\n }]\n });\n geometry.setAttribute('color', Float32Array.from(attributes.instancedColors), {\n arrayStride: 4 * 4,\n stepMode: 'instance',\n attributes: [{\n shaderLocation: 2,\n offset: 0,\n format: 'float4'\n }]\n });\n geometry.setAttribute('size', Float32Array.from(attributes.instancedSizes), {\n arrayStride: 4,\n stepMode: 'instance',\n attributes: [{\n shaderLocation: 3,\n offset: 0,\n format: 'float'\n }]\n });\n geometry.setAttribute('shape', Float32Array.from(attributes.instancedShapes), {\n arrayStride: 4,\n stepMode: 'instance',\n attributes: [{\n shaderLocation: 4,\n offset: 0,\n format: 'float'\n }]\n });\n geometry.setAttribute('a_PickingColor', Float32Array.from(attributes.instancedPickingColors), {\n arrayStride: 4 * 3,\n stepMode: 'instance',\n attributes: [{\n shaderLocation: 6,\n offset: 0,\n format: 'float3'\n }]\n });\n this.setMaterial(material);\n this.setGeometry(geometry);\n }\n }, {\n key: \"buildAttribute\",\n value: function buildAttribute(config, attributes, index) {\n var _attributes$instanced, _attributes$instanced2, _attributes$instanced3, _attributes$instanced4;\n\n (_attributes$instanced = attributes.instancedPickingColors).push.apply(_attributes$instanced, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(Object(_utils_picking__WEBPACK_IMPORTED_MODULE_13__[\"encodePickingColor\"])(config.id || index)));\n\n attributes.instancedShapes.push(pointShapes.indexOf(config.shape || 'circle'));\n\n (_attributes$instanced2 = attributes.instancedColors).push.apply(_attributes$instanced2, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(config.color || [1, 0, 0, 1]));\n\n (_attributes$instanced3 = attributes.instancedOffsets).push.apply(_attributes$instanced3, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(config.position || [0, 0]));\n\n (_attributes$instanced4 = attributes.instancedSizes).push.apply(_attributes$instanced4, _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default()(config.size || [0.2, 0.2]));\n }\n }, {\n key: \"buildAttributes\",\n value: function buildAttributes() {\n var _this2 = this;\n\n var attributes = {\n positions: [1, 1, 1, -1, -1, -1, -1, 1],\n instancedOffsets: [],\n instancedColors: [],\n instancedSizes: [],\n instancedShapes: [],\n instancedPickingColors: []\n };\n\n if (Array.isArray(this.config)) {\n this.config.forEach(function (config, i) {\n _this2.buildAttribute(config, attributes, i);\n });\n } else {\n this.buildAttribute(this.config, attributes, 0);\n }\n\n return attributes;\n }\n }]);\n\n return Point;\n}(_Renderable__WEBPACK_IMPORTED_MODULE_14__[\"Renderable\"]), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_9___default()(_class2.prototype, \"materialSystem\", [_dec2, _dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_9___default()(_class2.prototype, \"geometrySystem\", [_dec4, _dec5], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor3 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_9___default()(_class2.prototype, \"shaderModuleService\", [_dec6], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3JlbmRlcmFibGUvcG9pbnQvaW5kZXguanM/Y2M5MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTBFO0FBQ047QUFDc0I7QUFDdEI7QUFDTjtBQUNvQjtBQUMxQjtBQUNrQztBQUN0QjtBQUNvQjtBQUNBOztBQUV4Rjs7QUFFQSwwQ0FBMEMsZ0NBQWdDLG9DQUFvQyxvREFBb0QsOERBQThELGdFQUFnRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsYUFBYTs7QUFFblYsZ0NBQWdDLGdCQUFnQixzQkFBc0IsT0FBTyx1REFBdUQsYUFBYSx1REFBdUQsQ0FBQyw0RUFBZSwyQkFBMkIsRUFBRSxFQUFFLEVBQUUsNkNBQTZDLDJFQUEyRSxFQUFFLE9BQU8saURBQWlELGtGQUFrRixFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWU7O0FBRXBoQixnQ0FBZ0MsNkRBQTZELHlDQUF5QyxhQUFhLDRFQUFlLGtCQUFrQixpQ0FBaUMsaUJBQWlCLDRFQUFlLG1CQUFtQix5REFBeUQsRUFBRSxPQUFPLHVDQUF1QyxFQUFFLFFBQVEsdUZBQTBCLGVBQWUsR0FBRzs7QUFFdmEsc0NBQXNDLHdFQUF3RSwwQ0FBMEMsOENBQThDLE1BQU0sd0VBQXdFLEdBQUcsYUFBYSxFQUFFLFlBQVksY0FBYyxFQUFFOztBQUU3UTtBQUNDO0FBQ0c7QUFDZDs7QUFFM0M7QUFDQSw2Q0FBNkMsZ0NBQWdDLHNDQUFzQyw2Q0FBNkMscUNBQXFDLHlCQUF5QixzQkFBc0IseUJBQXlCLDJFQUEyRSwyQ0FBMkMscUNBQXFDLHlEQUF5RCxxREFBcUQscUJBQXFCLG1CQUFtQixnSUFBZ0ksMENBQTBDLHdDQUF3QyxRQUFRLHVCQUF1QiwyREFBMkQsK0RBQStELFFBQVEsdUJBQXVCLCtDQUErQyw4Q0FBOEMsUUFBUSx1QkFBdUIsK0NBQStDLG1EQUFtRCxRQUFRLHVCQUF1Qiw4Q0FBOEMsa0RBQWtELFFBQVEsdUJBQXVCLDhDQUE4Qyw0Q0FBNEMsUUFBUSx1QkFBdUIsZ0RBQWdELG9EQUFvRCxRQUFRLHVCQUF1QixvREFBb0Qsa0RBQWtELFFBQVEsdUJBQXVCLGtEQUFrRCwwREFBMEQsUUFBUSxvRUFBb0Usb0hBQW9ILDRFQUE0RSw0R0FBNEcsZ0RBQWdELCtDQUErQyxHQUFHOztBQUUzd0U7QUFDQSx5Q0FBeUMsdUJBQXVCLHdCQUF3Qix3QkFBd0IsdUJBQXVCLGtDQUFrQywrQkFBK0Isd0NBQXdDLHFDQUFxQywwQkFBMEIseUJBQXlCLHNCQUFzQix5QkFBeUIsZ0RBQWdELG9CQUFvQixvQkFBb0Isc0ZBQXNGLGlGQUFpRix1R0FBdUcsc0NBQXNDLEdBQUc7QUFDdHdCO0FBS0Esb0JBQW9CLDZEQUFVLFlBQVkseURBQU0sQ0FBQywrREFBVSxtQkFBbUIsd0RBQUssQ0FBQywrREFBVSwwQkFBMEIseURBQU0sQ0FBQywrREFBVSxtQkFBbUIsd0RBQUssQ0FBQywrREFBVSwwQkFBMEIseURBQU0sQ0FBQywrREFBVTtBQUN2TixFQUFFLHNFQUFTOztBQUVYOztBQUVBO0FBQ0E7O0FBRUEsSUFBSSw0RUFBZTs7QUFFbkIsdUVBQXVFLGFBQWE7QUFDcEY7QUFDQTs7QUFFQTs7QUFFQSxJQUFJLHVGQUEwQix1Q0FBdUMsbUZBQXNCOztBQUUzRixJQUFJLHVGQUEwQix3Q0FBd0MsbUZBQXNCOztBQUU1RixJQUFJLHVGQUEwQiw2Q0FBNkMsbUZBQXNCOztBQUVqRztBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHVEQUFFO0FBQ3RCLG9CQUFvQix1REFBRTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sRUFBRTs7QUFFVDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQSxvR0FBb0csK0VBQWtCLENBQUMsMEVBQWtCOztBQUV6STs7QUFFQSwrRkFBK0YsK0VBQWtCOztBQUVqSCxnR0FBZ0csK0VBQWtCOztBQUVsSCw4RkFBOEYsK0VBQWtCO0FBQ2hIO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUMsQ0FBQyx1REFBVSwwQkFBMEIsc0ZBQXlCO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdUAwLjUuNUBAYW50di9nLXdlYmdwdS9lcy9yZW5kZXJhYmxlL3BvaW50L2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheVwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIjtcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0c1wiO1xuaW1wb3J0IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm5cIjtcbmltcG9ydCBfZ2V0UHJvdG90eXBlT2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZ2V0UHJvdG90eXBlT2ZcIjtcbmltcG9ydCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvclwiO1xuaW1wb3J0IF9pbml0aWFsaXplcldhcm5pbmdIZWxwZXIgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyXCI7XG5cbnZhciBfZGVjLCBfZGVjMiwgX2RlYzMsIF9kZWM0LCBfZGVjNSwgX2RlYzYsIF9jbGFzcywgX2NsYXNzMiwgX2Rlc2NyaXB0b3IsIF9kZXNjcmlwdG9yMiwgX2Rlc2NyaXB0b3IzLCBfdGVtcDtcblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuaW1wb3J0IHsgZ2wsIElERU5USUZJRVIgfSBmcm9tICdAYW50di9nLXdlYmdwdS1jb3JlJztcbmltcG9ydCB7IGluamVjdCwgaW5qZWN0YWJsZSwgbmFtZWQgfSBmcm9tICdpbnZlcnNpZnknO1xuaW1wb3J0IHsgZW5jb2RlUGlja2luZ0NvbG9yIH0gZnJvbSAnLi4vLi4vdXRpbHMvcGlja2luZyc7XG5pbXBvcnQgeyBSZW5kZXJhYmxlIH0gZnJvbSAnLi4vUmVuZGVyYWJsZSc7XG5cbi8qIGJhYmVsLXBsdWdpbi1pbmxpbmUtaW1wb3J0ICcuL3NoYWRlcnMvd2ViZ2wucG9pbnQuZnJhZy5nbHNsJyAqL1xudmFyIHBvaW50RnJhZyA9IFwidW5pZm9ybSBmbG9hdCB1X2JsdXIgOiAwLjA1O1xcbnVuaWZvcm0gZmxvYXQgdV9vcGFjaXR5IDogMC43O1xcbnVuaWZvcm0gZmxvYXQgdV9zdHJva2Vfd2lkdGggOiAwLjAxO1xcbnVuaWZvcm0gdmVjNCB1X3N0cm9rZV9jb2xvciA6IFswLCAwLCAwLCAwXTtcXG51bmlmb3JtIGZsb2F0IHVfc3Ryb2tlX29wYWNpdHkgOiAxO1xcblxcbnZhcnlpbmcgdmVjNCB2X2NvbG9yO1xcbnZhcnlpbmcgdmVjNCB2X2RhdGE7XFxudmFyeWluZyBmbG9hdCB2X3JhZGl1cztcXG5cXG4jcHJhZ21hIGluY2x1ZGUgXFxcInNkZjJkXFxcIlxcbiNwcmFnbWEgaW5jbHVkZSBcXFwicGlja2luZ1xcXCJcXG5cXG52b2lkIG1haW4oKSB7XFxuICBpbnQgc2hhcGUgPSBpbnQoZmxvb3Iodl9kYXRhLncgKyAwLjUpKTtcXG5cXG4gIGZsb2F0IGFudGlhbGlhc2JsdXIgPSB2X2RhdGEuejtcXG4gIGZsb2F0IGFudGlhbGlhc2VkX2JsdXIgPSAtbWF4KHVfYmx1ciwgYW50aWFsaWFzYmx1cik7XFxuICBmbG9hdCByID0gdl9yYWRpdXMgLyAodl9yYWRpdXMgKyB1X3N0cm9rZV93aWR0aCk7XFxuXFxuICBmbG9hdCBvdXRlcl9kZjtcXG4gIGZsb2F0IGlubmVyX2RmO1xcbiAgLy8gJ2NpcmNsZScsICd0cmlhbmdsZScsICdzcXVhcmUnLCAncGVudGFnb24nLCAnaGV4YWdvbicsICdvY3RvZ29uJywgJ2hleGFncmFtJywgJ3Job21idXMnLCAndmVzaWNhJ1xcbiAgLy8gaWYgKHNoYXBlID09IDApIHtcXG4gICAgb3V0ZXJfZGYgPSBzZENpcmNsZSh2X2RhdGEueHksIDEuMCk7XFxuICAgIGlubmVyX2RmID0gc2RDaXJjbGUodl9kYXRhLnh5LCByKTtcXG4gIC8vIH0gZWxzZSBpZiAoc2hhcGUgPT0gMSkge1xcbiAgLy8gICBvdXRlcl9kZiA9IHNkRXF1aWxhdGVyYWxUcmlhbmdsZSgxLjEgKiB2X2RhdGEueHkpO1xcbiAgLy8gICBpbm5lcl9kZiA9IHNkRXF1aWxhdGVyYWxUcmlhbmdsZSgxLjEgLyByICogdl9kYXRhLnh5KTtcXG4gIC8vIH0gZWxzZSBpZiAoc2hhcGUgPT0gMikge1xcbiAgLy8gICBvdXRlcl9kZiA9IHNkQm94KHZfZGF0YS54eSwgdmVjMigxLikpO1xcbiAgLy8gICBpbm5lcl9kZiA9IHNkQm94KHZfZGF0YS54eSwgdmVjMihyKSk7XFxuICAvLyB9IGVsc2UgaWYgKHNoYXBlID09IDMpIHtcXG4gIC8vICAgb3V0ZXJfZGYgPSBzZFBlbnRhZ29uKHZfZGF0YS54eSwgMC44KTtcXG4gIC8vICAgaW5uZXJfZGYgPSBzZFBlbnRhZ29uKHZfZGF0YS54eSwgciAqIDAuOCk7XFxuICAvLyB9IGVsc2UgaWYgKHNoYXBlID09IDQpIHtcXG4gIC8vICAgb3V0ZXJfZGYgPSBzZEhleGFnb24odl9kYXRhLnh5LCAwLjgpO1xcbiAgLy8gICBpbm5lcl9kZiA9IHNkSGV4YWdvbih2X2RhdGEueHksIHIgKiAwLjgpO1xcbiAgLy8gfSBlbHNlIGlmIChzaGFwZSA9PSA1KSB7XFxuICAvLyAgIG91dGVyX2RmID0gc2RPY3RvZ29uKHZfZGF0YS54eSwgMS4wKTtcXG4gIC8vICAgaW5uZXJfZGYgPSBzZE9jdG9nb24odl9kYXRhLnh5LCByKTtcXG4gIC8vIH0gZWxzZSBpZiAoc2hhcGUgPT0gNikge1xcbiAgLy8gICBvdXRlcl9kZiA9IHNkSGV4YWdyYW0odl9kYXRhLnh5LCAwLjUyKTtcXG4gIC8vICAgaW5uZXJfZGYgPSBzZEhleGFncmFtKHZfZGF0YS54eSwgciAqIDAuNTIpO1xcbiAgLy8gfSBlbHNlIGlmIChzaGFwZSA9PSA3KSB7XFxuICAvLyAgIG91dGVyX2RmID0gc2RSaG9tYnVzKHZfZGF0YS54eSwgdmVjMigxLjApKTtcXG4gIC8vICAgaW5uZXJfZGYgPSBzZFJob21idXModl9kYXRhLnh5LCB2ZWMyKHIpKTtcXG4gIC8vIH0gZWxzZSBpZiAoc2hhcGUgPT0gOCkge1xcbiAgLy8gICBvdXRlcl9kZiA9IHNkVmVzaWNhKHZfZGF0YS54eSwgMS4xLCAwLjgpO1xcbiAgLy8gICBpbm5lcl9kZiA9IHNkVmVzaWNhKHZfZGF0YS54eSwgciAqIDEuMSwgciAqIDAuOCk7XFxuICAvLyB9XFxuXFxuICBmbG9hdCBvcGFjaXR5X3QgPSBzbW9vdGhzdGVwKDAuMCwgYW50aWFsaWFzZWRfYmx1ciwgb3V0ZXJfZGYpO1xcblxcbiAgZmxvYXQgY29sb3JfdCA9IHVfc3Ryb2tlX3dpZHRoIDwgMC4wMSA/IDAuMCA6IHNtb290aHN0ZXAoXFxuICAgIGFudGlhbGlhc2VkX2JsdXIsXFxuICAgIDAuMCxcXG4gICAgaW5uZXJfZGZcXG4gICk7XFxuICB2ZWM0IHN0cm9rZUNvbG9yID0gdV9zdHJva2VfY29sb3IgPT0gdmVjNCgwKSA/IHZfY29sb3IgOiB1X3N0cm9rZV9jb2xvcjtcXG5cXG4gIGdsX0ZyYWdDb2xvciA9IG1peCh2ZWM0KHZfY29sb3IucmdiLCB2X2NvbG9yLmEgKiB1X29wYWNpdHkpLCBzdHJva2VDb2xvciAqIHVfc3Ryb2tlX29wYWNpdHksIGNvbG9yX3QpO1xcbiAgZ2xfRnJhZ0NvbG9yLmEgPSBnbF9GcmFnQ29sb3IuYSAqIG9wYWNpdHlfdDtcXG5cXG4gIGdsX0ZyYWdDb2xvciA9IGZpbHRlckNvbG9yKGdsX0ZyYWdDb2xvcik7XFxufVwiO1xuXG4vKiBiYWJlbC1wbHVnaW4taW5saW5lLWltcG9ydCAnLi9zaGFkZXJzL3dlYmdsLnBvaW50LnZlcnQuZ2xzbCcgKi9cbnZhciBwb2ludFZlcnQgPSBcImF0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uO1xcbmF0dHJpYnV0ZSB2ZWM0IGNvbG9yO1xcbmF0dHJpYnV0ZSBmbG9hdCBzaGFwZTtcXG5hdHRyaWJ1dGUgdmVjMiBvZmZzZXQ7XFxuYXR0cmlidXRlIGZsb2F0IHNpemU7XFxuXFxudW5pZm9ybSBtYXQ0IHByb2plY3Rpb25NYXRyaXg7XFxudW5pZm9ybSBtYXQ0IG1vZGVsVmlld01hdHJpeDtcXG5cXG51bmlmb3JtIGZsb2F0IHVfc3Ryb2tlX3dpZHRoIDogMC4wMTtcXG51bmlmb3JtIGZsb2F0IHVfZGV2aWNlX3BpeGVsX3JhdGlvO1xcbnVuaWZvcm0gdmVjMiB1X3ZpZXdwb3J0O1xcblxcbnZhcnlpbmcgdmVjNCB2X2NvbG9yO1xcbnZhcnlpbmcgdmVjNCB2X2RhdGE7XFxudmFyeWluZyBmbG9hdCB2X3JhZGl1cztcXG5cXG4jcHJhZ21hIGluY2x1ZGUgXFxcInBpY2tpbmdcXFwiXFxuXFxudm9pZCBtYWluKCkge1xcbiAgdl9jb2xvciA9IGNvbG9yO1xcbiAgdl9yYWRpdXMgPSBzaXplO1xcblxcbiAgbG93cCBmbG9hdCBhbnRpYWxpYXNibHVyID0gMS4wIC8gdV9kZXZpY2VfcGl4ZWxfcmF0aW8gKiAoc2l6ZSArIHVfc3Ryb2tlX3dpZHRoKTtcXG5cXG4gIC8vIGNvbnN0cnVjdCBwb2ludCBjb29yZHNcXG4gIHZfZGF0YSA9IHZlYzQocG9zaXRpb24sIGFudGlhbGlhc2JsdXIsIHNoYXBlKTtcXG5cXG4gIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIG1vZGVsVmlld01hdHJpeFxcbiAgICAqIHZlYzQocG9zaXRpb24gKiBzaXplICsgb2Zmc2V0LCAwLjAsIDEuMCk7XFxuXFxuICBzZXRQaWNraW5nQ29sb3IoYV9QaWNraW5nQ29sb3IpO1xcbn1cIjtcbnZhciBwb2ludFNoYXBlcyA9IFsnY2lyY2xlJywgJ3RyaWFuZ2xlJywgJ3NxdWFyZScsICdwZW50YWdvbicsICdoZXhhZ29uJywgJ29jdG9nb24nLCAnaGV4YWdyYW0nLCAncmhvbWJ1cycsICd2ZXNpY2EnXTtcbmV4cG9ydFxuLyoqXG4gKiBVc2UgU0RGIHRvIGRyYXcgMkQgcG9pbnQgd2l0aCBzdHJva2UuXG4gKi9cbnZhciBQb2ludCA9IChfZGVjID0gaW5qZWN0YWJsZSgpLCBfZGVjMiA9IGluamVjdChJREVOVElGSUVSLlN5c3RlbXMpLCBfZGVjMyA9IG5hbWVkKElERU5USUZJRVIuTWF0ZXJpYWxTeXN0ZW0pLCBfZGVjNCA9IGluamVjdChJREVOVElGSUVSLlN5c3RlbXMpLCBfZGVjNSA9IG5hbWVkKElERU5USUZJRVIuR2VvbWV0cnlTeXN0ZW0pLCBfZGVjNiA9IGluamVjdChJREVOVElGSUVSLlNoYWRlck1vZHVsZVNlcnZpY2UpLCBfZGVjKF9jbGFzcyA9IChfY2xhc3MyID0gKF90ZW1wID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUmVuZGVyYWJsZSkge1xuICBfaW5oZXJpdHMoUG9pbnQsIF9SZW5kZXJhYmxlKTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFBvaW50KTtcblxuICBmdW5jdGlvbiBQb2ludCgpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUG9pbnQpO1xuXG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KF90aGlzLCBcIm1hdGVyaWFsU3lzdGVtXCIsIF9kZXNjcmlwdG9yLCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSk7XG5cbiAgICBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eShfdGhpcywgXCJnZW9tZXRyeVN5c3RlbVwiLCBfZGVzY3JpcHRvcjIsIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKTtcblxuICAgIF9pbml0aWFsaXplckRlZmluZVByb3BlcnR5KF90aGlzLCBcInNoYWRlck1vZHVsZVNlcnZpY2VcIiwgX2Rlc2NyaXB0b3IzLCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSk7XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUG9pbnQsIFt7XG4gICAga2V5OiBcIm9uQXR0cmlidXRlQ2hhbmdlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbkF0dHJpYnV0ZUNoYW5nZWQoX3JlZikge1xuICAgICAgdmFyIG5hbWUgPSBfcmVmLm5hbWUsXG4gICAgICAgICAgZGF0YSA9IF9yZWYuZGF0YTtcbiAgICAgIHZhciBtZXNoID0gdGhpcy5nZXRNZXNoQ29tcG9uZW50KCk7XG5cbiAgICAgIGlmIChtZXNoICYmIG1lc2gubWF0ZXJpYWwpIHtcbiAgICAgICAgaWYgKG5hbWUgPT09ICdzdHJva2VXaWR0aCcpIHtcbiAgICAgICAgICBtZXNoLm1hdGVyaWFsLnNldFVuaWZvcm0oJ3Vfc3Ryb2tlX3dpZHRoJywgZGF0YSk7XG4gICAgICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3N0cm9rZUNvbG9yJykge1xuICAgICAgICAgIG1lc2gubWF0ZXJpYWwuc2V0VW5pZm9ybSgndV9zdHJva2VfY29sb3InLCBkYXRhKTtcbiAgICAgICAgfSBlbHNlIGlmIChuYW1lID09PSAnc3Ryb2tlT3BhY2l0eScpIHtcbiAgICAgICAgICBtZXNoLm1hdGVyaWFsLnNldFVuaWZvcm0oJ3Vfc3Ryb2tlX29wYWNpdHknLCBkYXRhKTtcbiAgICAgICAgfSBlbHNlIGlmIChuYW1lID09PSAnb3BhY2l0eScpIHtcbiAgICAgICAgICBtZXNoLm1hdGVyaWFsLnNldFVuaWZvcm0oJ3Vfb3BhY2l0eScsIGRhdGEpO1xuICAgICAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdibHVyJykge1xuICAgICAgICAgIG1lc2gubWF0ZXJpYWwuc2V0VW5pZm9ybSgndV9ibHVyJywgZGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwib25FbnRpdHlDcmVhdGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uRW50aXR5Q3JlYXRlZCgpIHtcbiAgICAgIHRoaXMuc2hhZGVyTW9kdWxlU2VydmljZS5yZWdpc3Rlck1vZHVsZSgnZ3JpZCcsIHtcbiAgICAgICAgdnM6IHBvaW50VmVydCxcbiAgICAgICAgZnM6IHBvaW50RnJhZ1xuICAgICAgfSk7XG5cbiAgICAgIHZhciBfdGhpcyRzaGFkZXJNb2R1bGVTZXIgPSB0aGlzLnNoYWRlck1vZHVsZVNlcnZpY2UuZ2V0TW9kdWxlKCdncmlkJyksXG4gICAgICAgICAgdnMgPSBfdGhpcyRzaGFkZXJNb2R1bGVTZXIudnMsXG4gICAgICAgICAgZnMgPSBfdGhpcyRzaGFkZXJNb2R1bGVTZXIuZnMsXG4gICAgICAgICAgZXh0cmFjdGVkVW5pZm9ybXMgPSBfdGhpcyRzaGFkZXJNb2R1bGVTZXIudW5pZm9ybXM7XG5cbiAgICAgIHZhciBtYXRlcmlhbCA9IHRoaXMubWF0ZXJpYWxTeXN0ZW0uY3JlYXRlU2hhZGVyTWF0ZXJpYWwoe1xuICAgICAgICB2ZXJ0ZXhTaGFkZXI6IHZzLFxuICAgICAgICBmcmFnbWVudFNoYWRlcjogZnMsXG4gICAgICAgIGN1bGw6IHtcbiAgICAgICAgICBlbmFibGU6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIGRlcHRoOiB7XG4gICAgICAgICAgZW5hYmxlOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBibGVuZDoge1xuICAgICAgICAgIGVuYWJsZTogdHJ1ZSxcbiAgICAgICAgICBmdW5jOiB7XG4gICAgICAgICAgICBzcmNSR0I6IGdsLlNSQ19BTFBIQSxcbiAgICAgICAgICAgIGRzdFJHQjogZ2wuT05FX01JTlVTX1NSQ19BTFBIQSxcbiAgICAgICAgICAgIHNyY0FscGhhOiAxLFxuICAgICAgICAgICAgZHN0QWxwaGE6IDFcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pOyAvLyBUT0RPOiBzdXBwb3J0IGRlZmluZSBzdHJva2UtcmVsYXRpdmUgcHJvcHMgcGVyIHBvaW50XG5cbiAgICAgIG1hdGVyaWFsLnNldFVuaWZvcm0oX29iamVjdFNwcmVhZCh7XG4gICAgICAgIHVfZGV2aWNlX3BpeGVsX3JhdGlvOiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpb1xuICAgICAgfSwgZXh0cmFjdGVkVW5pZm9ybXMpKTtcbiAgICAgIHZhciBhdHRyaWJ1dGVzID0gdGhpcy5idWlsZEF0dHJpYnV0ZXMoKTtcbiAgICAgIHZhciBnZW9tZXRyeSA9IHRoaXMuZ2VvbWV0cnlTeXN0ZW0uY3JlYXRlSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkoe1xuICAgICAgICBtYXhJbnN0YW5jZWRDb3VudDogYXR0cmlidXRlcy5pbnN0YW5jZWRPZmZzZXRzLmxlbmd0aCAvIDIsXG4gICAgICAgIHZlcnRleENvdW50OiA2XG4gICAgICB9KTtcbiAgICAgIGdlb21ldHJ5LnNldEluZGV4KFswLCAyLCAxLCAwLCAzLCAyXSk7XG4gICAgICBnZW9tZXRyeS5zZXRBdHRyaWJ1dGUoJ3Bvc2l0aW9uJywgRmxvYXQzMkFycmF5LmZyb20oYXR0cmlidXRlcy5wb3NpdGlvbnMpLCB7XG4gICAgICAgIGFycmF5U3RyaWRlOiA0ICogMixcbiAgICAgICAgc3RlcE1vZGU6ICd2ZXJ0ZXgnLFxuICAgICAgICBhdHRyaWJ1dGVzOiBbe1xuICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiAwLFxuICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICBmb3JtYXQ6ICdmbG9hdDInXG4gICAgICAgIH1dXG4gICAgICB9KTtcbiAgICAgIGdlb21ldHJ5LnNldEF0dHJpYnV0ZSgnb2Zmc2V0JywgRmxvYXQzMkFycmF5LmZyb20oYXR0cmlidXRlcy5pbnN0YW5jZWRPZmZzZXRzKSwge1xuICAgICAgICBhcnJheVN0cmlkZTogNCAqIDIsXG4gICAgICAgIHN0ZXBNb2RlOiAnaW5zdGFuY2UnLFxuICAgICAgICBhdHRyaWJ1dGVzOiBbe1xuICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiAxLFxuICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICBmb3JtYXQ6ICdmbG9hdDInXG4gICAgICAgIH1dXG4gICAgICB9KTtcbiAgICAgIGdlb21ldHJ5LnNldEF0dHJpYnV0ZSgnY29sb3InLCBGbG9hdDMyQXJyYXkuZnJvbShhdHRyaWJ1dGVzLmluc3RhbmNlZENvbG9ycyksIHtcbiAgICAgICAgYXJyYXlTdHJpZGU6IDQgKiA0LFxuICAgICAgICBzdGVwTW9kZTogJ2luc3RhbmNlJyxcbiAgICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogMixcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgZm9ybWF0OiAnZmxvYXQ0J1xuICAgICAgICB9XVxuICAgICAgfSk7XG4gICAgICBnZW9tZXRyeS5zZXRBdHRyaWJ1dGUoJ3NpemUnLCBGbG9hdDMyQXJyYXkuZnJvbShhdHRyaWJ1dGVzLmluc3RhbmNlZFNpemVzKSwge1xuICAgICAgICBhcnJheVN0cmlkZTogNCxcbiAgICAgICAgc3RlcE1vZGU6ICdpbnN0YW5jZScsXG4gICAgICAgIGF0dHJpYnV0ZXM6IFt7XG4gICAgICAgICAgc2hhZGVyTG9jYXRpb246IDMsXG4gICAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICAgIGZvcm1hdDogJ2Zsb2F0J1xuICAgICAgICB9XVxuICAgICAgfSk7XG4gICAgICBnZW9tZXRyeS5zZXRBdHRyaWJ1dGUoJ3NoYXBlJywgRmxvYXQzMkFycmF5LmZyb20oYXR0cmlidXRlcy5pbnN0YW5jZWRTaGFwZXMpLCB7XG4gICAgICAgIGFycmF5U3RyaWRlOiA0LFxuICAgICAgICBzdGVwTW9kZTogJ2luc3RhbmNlJyxcbiAgICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogNCxcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgZm9ybWF0OiAnZmxvYXQnXG4gICAgICAgIH1dXG4gICAgICB9KTtcbiAgICAgIGdlb21ldHJ5LnNldEF0dHJpYnV0ZSgnYV9QaWNraW5nQ29sb3InLCBGbG9hdDMyQXJyYXkuZnJvbShhdHRyaWJ1dGVzLmluc3RhbmNlZFBpY2tpbmdDb2xvcnMpLCB7XG4gICAgICAgIGFycmF5U3RyaWRlOiA0ICogMyxcbiAgICAgICAgc3RlcE1vZGU6ICdpbnN0YW5jZScsXG4gICAgICAgIGF0dHJpYnV0ZXM6IFt7XG4gICAgICAgICAgc2hhZGVyTG9jYXRpb246IDYsXG4gICAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICAgIGZvcm1hdDogJ2Zsb2F0MydcbiAgICAgICAgfV1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5zZXRNYXRlcmlhbChtYXRlcmlhbCk7XG4gICAgICB0aGlzLnNldEdlb21ldHJ5KGdlb21ldHJ5KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiYnVpbGRBdHRyaWJ1dGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYnVpbGRBdHRyaWJ1dGUoY29uZmlnLCBhdHRyaWJ1dGVzLCBpbmRleCkge1xuICAgICAgdmFyIF9hdHRyaWJ1dGVzJGluc3RhbmNlZCwgX2F0dHJpYnV0ZXMkaW5zdGFuY2VkMiwgX2F0dHJpYnV0ZXMkaW5zdGFuY2VkMywgX2F0dHJpYnV0ZXMkaW5zdGFuY2VkNDtcblxuICAgICAgKF9hdHRyaWJ1dGVzJGluc3RhbmNlZCA9IGF0dHJpYnV0ZXMuaW5zdGFuY2VkUGlja2luZ0NvbG9ycykucHVzaC5hcHBseShfYXR0cmlidXRlcyRpbnN0YW5jZWQsIF90b0NvbnN1bWFibGVBcnJheShlbmNvZGVQaWNraW5nQ29sb3IoY29uZmlnLmlkIHx8IGluZGV4KSkpO1xuXG4gICAgICBhdHRyaWJ1dGVzLmluc3RhbmNlZFNoYXBlcy5wdXNoKHBvaW50U2hhcGVzLmluZGV4T2YoY29uZmlnLnNoYXBlIHx8ICdjaXJjbGUnKSk7XG5cbiAgICAgIChfYXR0cmlidXRlcyRpbnN0YW5jZWQyID0gYXR0cmlidXRlcy5pbnN0YW5jZWRDb2xvcnMpLnB1c2guYXBwbHkoX2F0dHJpYnV0ZXMkaW5zdGFuY2VkMiwgX3RvQ29uc3VtYWJsZUFycmF5KGNvbmZpZy5jb2xvciB8fCBbMSwgMCwgMCwgMV0pKTtcblxuICAgICAgKF9hdHRyaWJ1dGVzJGluc3RhbmNlZDMgPSBhdHRyaWJ1dGVzLmluc3RhbmNlZE9mZnNldHMpLnB1c2guYXBwbHkoX2F0dHJpYnV0ZXMkaW5zdGFuY2VkMywgX3RvQ29uc3VtYWJsZUFycmF5KGNvbmZpZy5wb3NpdGlvbiB8fCBbMCwgMF0pKTtcblxuICAgICAgKF9hdHRyaWJ1dGVzJGluc3RhbmNlZDQgPSBhdHRyaWJ1dGVzLmluc3RhbmNlZFNpemVzKS5wdXNoLmFwcGx5KF9hdHRyaWJ1dGVzJGluc3RhbmNlZDQsIF90b0NvbnN1bWFibGVBcnJheShjb25maWcuc2l6ZSB8fCBbMC4yLCAwLjJdKSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImJ1aWxkQXR0cmlidXRlc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBidWlsZEF0dHJpYnV0ZXMoKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgdmFyIGF0dHJpYnV0ZXMgPSB7XG4gICAgICAgIHBvc2l0aW9uczogWzEsIDEsIDEsIC0xLCAtMSwgLTEsIC0xLCAxXSxcbiAgICAgICAgaW5zdGFuY2VkT2Zmc2V0czogW10sXG4gICAgICAgIGluc3RhbmNlZENvbG9yczogW10sXG4gICAgICAgIGluc3RhbmNlZFNpemVzOiBbXSxcbiAgICAgICAgaW5zdGFuY2VkU2hhcGVzOiBbXSxcbiAgICAgICAgaW5zdGFuY2VkUGlja2luZ0NvbG9yczogW11cbiAgICAgIH07XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuY29uZmlnKSkge1xuICAgICAgICB0aGlzLmNvbmZpZy5mb3JFYWNoKGZ1bmN0aW9uIChjb25maWcsIGkpIHtcbiAgICAgICAgICBfdGhpczIuYnVpbGRBdHRyaWJ1dGUoY29uZmlnLCBhdHRyaWJ1dGVzLCBpKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmJ1aWxkQXR0cmlidXRlKHRoaXMuY29uZmlnLCBhdHRyaWJ1dGVzLCAwKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGF0dHJpYnV0ZXM7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFBvaW50O1xufShSZW5kZXJhYmxlKSwgX3RlbXApLCAoX2Rlc2NyaXB0b3IgPSBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzczIucHJvdG90eXBlLCBcIm1hdGVyaWFsU3lzdGVtXCIsIFtfZGVjMiwgX2RlYzNdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSwgX2Rlc2NyaXB0b3IyID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJnZW9tZXRyeVN5c3RlbVwiLCBbX2RlYzQsIF9kZWM1XSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMyA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwic2hhZGVyTW9kdWxlU2VydmljZVwiLCBbX2RlYzZdLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgd3JpdGFibGU6IHRydWUsXG4gIGluaXRpYWxpemVyOiBudWxsXG59KSksIF9jbGFzczIpKSB8fCBfY2xhc3MpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/renderable/point/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/texture/Cache.js":
/*!*******************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/texture/Cache.js ***!
\*******************************************************************************/
/*! exports provided: TextureCache */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TextureCache\", function() { return TextureCache; });\n/* harmony import */ var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/_@babel_runtime@7.16.3@@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@7.16.3@@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 inversify__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nvar _dec, _class, _temp;\n\n\nvar TextureCache = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_2__[\"injectable\"])(), _dec(_class = (_temp = /*#__PURE__*/function () {\n function TextureCache() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, TextureCache);\n\n this.cache = {};\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default()(TextureCache, [{\n key: \"get\",\n value: function get(name) {\n return this.cache[name];\n }\n }, {\n key: \"set\",\n value: function set(name, texture) {\n this.cache[name] = texture;\n }\n }]);\n\n return TextureCache;\n}(), _temp)) || _class);\n//# sourceMappingURL=Cache.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3RleHR1cmUvQ2FjaGUuanM/Nzc4MCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9FO0FBQ047O0FBRTlEOztBQUV1QztBQUNoQywyQkFBMkIsNERBQVU7QUFDNUM7QUFDQSxJQUFJLDRFQUFlOztBQUVuQjtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDO0FBQ0QiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3RleHR1cmUvQ2FjaGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5cbnZhciBfZGVjLCBfY2xhc3MsIF90ZW1wO1xuXG5pbXBvcnQgeyBpbmplY3RhYmxlIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmV4cG9ydCB2YXIgVGV4dHVyZUNhY2hlID0gKF9kZWMgPSBpbmplY3RhYmxlKCksIF9kZWMoX2NsYXNzID0gKF90ZW1wID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gVGV4dHVyZUNhY2hlKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBUZXh0dXJlQ2FjaGUpO1xuXG4gICAgdGhpcy5jYWNoZSA9IHt9O1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFRleHR1cmVDYWNoZSwgW3tcbiAgICBrZXk6IFwiZ2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldChuYW1lKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWNoZVtuYW1lXTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChuYW1lLCB0ZXh0dXJlKSB7XG4gICAgICB0aGlzLmNhY2hlW25hbWVdID0gdGV4dHVyZTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gVGV4dHVyZUNhY2hlO1xufSgpLCBfdGVtcCkpIHx8IF9jbGFzcyk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1DYWNoZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/texture/Cache.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/texture/Texture2D.js":
/*!***********************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/texture/Texture2D.js ***!
\***********************************************************************************/
/*! exports provided: Texture2D */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Texture2D\", function() { return Texture2D; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__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@7.16.3@@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@7.16.3@@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_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/initializerDefineProperty */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerDefineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerDefineProperty__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@7.16.3@@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@7.16.3@@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_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/applyDecoratedDescriptor */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/applyDecoratedDescriptor.js\");\n/* harmony import */ var _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime/helpers/initializerWarningHelper */ \"./node_modules/_@babel_runtime@7.16.3@@babel/runtime/helpers/initializerWarningHelper.js\");\n/* harmony import */ var _babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_initializerWarningHelper__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @antv/g-webgpu-core */ \"./node_modules/_@antv_g-webgpu-core@0.5.6@@antv/g-webgpu-core/es/index.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! inversify */ \"./node_modules/_inversify@5.1.1@inversify/lib/inversify.js\");\n/* harmony import */ var inversify__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(inversify__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _Cache__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Cache */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/texture/Cache.js\");\n\n\n\n\n\n\n\n\n\nvar _dec, _dec2, _dec3, _class, _class2, _descriptor, _descriptor2, _temp;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n\n\n\nvar Texture2D = (_dec = Object(inversify__WEBPACK_IMPORTED_MODULE_9__[\"injectable\"])(), _dec2 = Object(inversify__WEBPACK_IMPORTED_MODULE_9__[\"inject\"])(_Cache__WEBPACK_IMPORTED_MODULE_10__[\"TextureCache\"]), _dec3 = Object(inversify__WEBPACK_IMPORTED_MODULE_9__[\"inject\"])(_antv_g_webgpu_core__WEBPACK_IMPORTED_MODULE_8__[\"IDENTIFIER\"].RenderEngine), _dec(_class = (_class2 = (_temp = /*#__PURE__*/function () {\n function Texture2D() {\n _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default()(this, Texture2D);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, \"textureCache\", _descriptor, this);\n\n _babel_runtime_helpers_initializerDefineProperty__WEBPACK_IMPORTED_MODULE_3___default()(this, \"engine\", _descriptor2, this);\n\n this.config = void 0;\n this.loaded = false;\n this.texture = void 0;\n }\n\n _babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default()(Texture2D, [{\n key: \"setConfig\",\n value: function setConfig(config) {\n this.config = config;\n }\n }, {\n key: \"isLoaded\",\n value: function isLoaded() {\n return this.loaded;\n } // public update(config: ITexture2DInitializationOptions) {\n // if (this.loaded && this.texture) {\n // const t = this.texture.get();\n // }\n // }\n\n }, {\n key: \"load\",\n value: function () {\n var _load = _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var _this = this;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!this.config.url) {\n _context.next = 4;\n break;\n }\n\n return _context.abrupt(\"return\", new Promise(function (resolve, reject) {\n var existed = _this.textureCache.get(_this.config.url);\n\n if (existed) {\n resolve(existed);\n } else {\n var image = new Image();\n image.crossOrigin = 'Anonymous';\n image.src = _this.config.url;\n\n image.onload = function () {\n var texture = _this.engine.createTexture2D(_objectSpread(_objectSpread({}, _this.config), {}, {\n data: image,\n width: image.width,\n height: image.height,\n flipY: true\n }));\n\n _this.textureCache.set(_this.config.url, texture);\n\n _this.texture = texture;\n _this.loaded = true;\n resolve(texture);\n };\n\n image.onerror = function () {\n reject();\n };\n }\n }));\n\n case 4:\n this.loaded = true;\n this.texture = this.engine.createTexture2D(this.config);\n return _context.abrupt(\"return\", this.texture);\n\n case 7:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function load() {\n return _load.apply(this, arguments);\n }\n\n return load;\n }()\n }]);\n\n return Texture2D;\n}(), _temp), (_descriptor = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default()(_class2.prototype, \"textureCache\", [_dec2], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _descriptor2 = _babel_runtime_helpers_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_6___default()(_class2.prototype, \"engine\", [_dec3], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n})), _class2)) || _class);\n//# sourceMappingURL=Texture2D.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3RleHR1cmUvVGV4dHVyZTJELmpzPzNlZjkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkQ7QUFDTztBQUNJO0FBQ2tCO0FBQ3RCO0FBQ047QUFDMEI7QUFDQTs7QUFFeEY7O0FBRUEsMENBQTBDLGdDQUFnQyxvQ0FBb0Msb0RBQW9ELDhEQUE4RCxnRUFBZ0UsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLGFBQWE7O0FBRW5WLGdDQUFnQyxnQkFBZ0Isc0JBQXNCLE9BQU8sdURBQXVELGFBQWEsdURBQXVELENBQUMsNEVBQWUsMkJBQTJCLEVBQUUsRUFBRSxFQUFFLDZDQUE2QywyRUFBMkUsRUFBRSxPQUFPLGlEQUFpRCxrRkFBa0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxlQUFlOztBQUVuZTtBQUNGO0FBQ1I7QUFDaEMsd0JBQXdCLDREQUFVLFlBQVksd0RBQU0sQ0FBQyxvREFBWSxXQUFXLHdEQUFNLENBQUMsOERBQVU7QUFDcEc7QUFDQSxJQUFJLDRFQUFlOztBQUVuQixJQUFJLHVGQUEwQjs7QUFFOUIsSUFBSSx1RkFBMEI7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEVBQUUseUVBQVk7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQSxrQkFBa0IsOEVBQWlCLGVBQWUsaUVBQW1CO0FBQ3JFOztBQUVBLGVBQWUsaUVBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwrRkFBK0YsbUJBQW1CO0FBQ2xIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCOztBQUV2Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0EsQ0FBQywyQkFBMkIsc0ZBQXlCO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxrQkFBa0Isc0ZBQXlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdUAwLjUuNUBAYW50di9nLXdlYmdwdS9lcy90ZXh0dXJlL1RleHR1cmUyRC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfcmVnZW5lcmF0b3JSdW50aW1lIGZyb20gXCJAYmFiZWwvcnVudGltZS9yZWdlbmVyYXRvclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbml0aWFsaXplckRlZmluZVByb3BlcnR5XCI7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcHBseURlY29yYXRlZERlc2NyaXB0b3JcIjtcbmltcG9ydCBfaW5pdGlhbGl6ZXJXYXJuaW5nSGVscGVyIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaXRpYWxpemVyV2FybmluZ0hlbHBlclwiO1xuXG52YXIgX2RlYywgX2RlYzIsIF9kZWMzLCBfY2xhc3MsIF9jbGFzczIsIF9kZXNjcmlwdG9yLCBfZGVzY3JpcHRvcjIsIF90ZW1wO1xuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuaW1wb3J0IHsgSURFTlRJRklFUiB9IGZyb20gJ0BhbnR2L2ctd2ViZ3B1LWNvcmUnO1xuaW1wb3J0IHsgaW5qZWN0LCBpbmplY3RhYmxlIH0gZnJvbSAnaW52ZXJzaWZ5JztcbmltcG9ydCB7IFRleHR1cmVDYWNoZSB9IGZyb20gJy4vQ2FjaGUnO1xuZXhwb3J0IHZhciBUZXh0dXJlMkQgPSAoX2RlYyA9IGluamVjdGFibGUoKSwgX2RlYzIgPSBpbmplY3QoVGV4dHVyZUNhY2hlKSwgX2RlYzMgPSBpbmplY3QoSURFTlRJRklFUi5SZW5kZXJFbmdpbmUpLCBfZGVjKF9jbGFzcyA9IChfY2xhc3MyID0gKF90ZW1wID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gVGV4dHVyZTJEKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBUZXh0dXJlMkQpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJ0ZXh0dXJlQ2FjaGVcIiwgX2Rlc2NyaXB0b3IsIHRoaXMpO1xuXG4gICAgX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkodGhpcywgXCJlbmdpbmVcIiwgX2Rlc2NyaXB0b3IyLCB0aGlzKTtcblxuICAgIHRoaXMuY29uZmlnID0gdm9pZCAwO1xuICAgIHRoaXMubG9hZGVkID0gZmFsc2U7XG4gICAgdGhpcy50ZXh0dXJlID0gdm9pZCAwO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFRleHR1cmUyRCwgW3tcbiAgICBrZXk6IFwic2V0Q29uZmlnXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldENvbmZpZyhjb25maWcpIHtcbiAgICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpc0xvYWRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc0xvYWRlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmxvYWRlZDtcbiAgICB9IC8vIHB1YmxpYyB1cGRhdGUoY29uZmlnOiBJVGV4dHVyZTJESW5pdGlhbGl6YXRpb25PcHRpb25zKSB7XG4gICAgLy8gICBpZiAodGhpcy5sb2FkZWQgJiYgdGhpcy50ZXh0dXJlKSB7XG4gICAgLy8gICAgIGNvbnN0IHQgPSB0aGlzLnRleHR1cmUuZ2V0KCk7XG4gICAgLy8gICB9XG4gICAgLy8gfVxuXG4gIH0sIHtcbiAgICBrZXk6IFwibG9hZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX2xvYWQgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNvbmZpZy51cmwpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSA0O1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmFicnVwdChcInJldHVyblwiLCBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICAgICAgICB2YXIgZXhpc3RlZCA9IF90aGlzLnRleHR1cmVDYWNoZS5nZXQoX3RoaXMuY29uZmlnLnVybCk7XG5cbiAgICAgICAgICAgICAgICAgIGlmIChleGlzdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZXhpc3RlZCk7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaW1hZ2UgPSBuZXcgSW1hZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2UuY3Jvc3NPcmlnaW4gPSAnQW5vbnltb3VzJztcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2Uuc3JjID0gX3RoaXMuY29uZmlnLnVybDtcblxuICAgICAgICAgICAgICAgICAgICBpbWFnZS5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdmFyIHRleHR1cmUgPSBfdGhpcy5lbmdpbmUuY3JlYXRlVGV4dHVyZTJEKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgX3RoaXMuY29uZmlnKSwge30sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGltYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGltYWdlLndpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBpbWFnZS5oZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBmbGlwWTogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgIH0pKTtcblxuICAgICAgICAgICAgICAgICAgICAgIF90aGlzLnRleHR1cmVDYWNoZS5zZXQoX3RoaXMuY29uZmlnLnVybCwgdGV4dHVyZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICBfdGhpcy50ZXh0dXJlID0gdGV4dHVyZTtcbiAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5sb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodGV4dHVyZSk7XG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgaW1hZ2Uub25lcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZWplY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgIHRoaXMubG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnRleHR1cmUgPSB0aGlzLmVuZ2luZS5jcmVhdGVUZXh0dXJlMkQodGhpcy5jb25maWcpO1xuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5hYnJ1cHQoXCJyZXR1cm5cIiwgdGhpcy50ZXh0dXJlKTtcblxuICAgICAgICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZSwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGxvYWQoKSB7XG4gICAgICAgIHJldHVybiBfbG9hZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbG9hZDtcbiAgICB9KClcbiAgfV0pO1xuXG4gIHJldHVybiBUZXh0dXJlMkQ7XG59KCksIF90ZW1wKSwgKF9kZXNjcmlwdG9yID0gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MyLnByb3RvdHlwZSwgXCJ0ZXh0dXJlQ2FjaGVcIiwgW19kZWMyXSwge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIHdyaXRhYmxlOiB0cnVlLFxuICBpbml0aWFsaXplcjogbnVsbFxufSksIF9kZXNjcmlwdG9yMiA9IF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzMi5wcm90b3R5cGUsIFwiZW5naW5lXCIsIFtfZGVjM10sIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICB3cml0YWJsZTogdHJ1ZSxcbiAgaW5pdGlhbGl6ZXI6IG51bGxcbn0pKSwgX2NsYXNzMikpIHx8IF9jbGFzcyk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UZXh0dXJlMkQuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/texture/Texture2D.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/canvas.js":
/*!******************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/canvas.js ***!
\******************************************************************************/
/*! exports provided: createCanvas */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createCanvas\", function() { return createCanvas; });\nfunction createCanvas() {\n if (typeof document !== 'undefined') {\n return document.createElement('canvas');\n } else {\n throw new Error('Cannot create a canvas in this context');\n }\n}\n//# sourceMappingURL=canvas.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3V0aWxzL2NhbnZhcy5qcz8zNjIzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBTztBQUNQO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3V0aWxzL2NhbnZhcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDYW52YXMoKSB7XG4gIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGNyZWF0ZSBhIGNhbnZhcyBpbiB0aGlzIGNvbnRleHQnKTtcbiAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y2FudmFzLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/canvas.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-array.js":
/*!********************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-array.js ***!
\********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _is_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-type */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-type.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (value) {\n return Array.isArray ? Array.isArray(value) : Object(_is_type__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value, 'Array');\n});\n//# sourceMappingURL=is-array.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3V0aWxzL2lzLWFycmF5LmpzP2U4YmQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUErQjtBQUNmO0FBQ2hCLGdEQUFnRCx3REFBTTtBQUN0RCxDQUFDLEVBQUU7QUFDSCIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHVAMC41LjVAQGFudHYvZy13ZWJncHUvZXMvdXRpbHMvaXMtYXJyYXkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNUeXBlIGZyb20gJy4vaXMtdHlwZSc7XG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5ID8gQXJyYXkuaXNBcnJheSh2YWx1ZSkgOiBpc1R5cGUodmFsdWUsICdBcnJheScpO1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pcy1hcnJheS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-array.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-number.js":
/*!*********************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-number.js ***!
\*********************************************************************************/
/*! exports provided: isNumber */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumber\", function() { return isNumber; });\nfunction isNumber(value) {\n return typeof value === 'number';\n}\n//# sourceMappingURL=is-number.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3V0aWxzL2lzLW51bWJlci5qcz8yNGQyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBTztBQUNQO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHVAMC41LjVAQGFudHYvZy13ZWJncHUvZXMvdXRpbHMvaXMtbnVtYmVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtbnVtYmVyLmpzLm1hcCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-number.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-type.js":
/*!*******************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-type.js ***!
\*******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar toString = {}.toString;\n\nvar isType = function isType(value, type) {\n return toString.call(value) === '[object ' + type + ']';\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (isType);\n//# sourceMappingURL=is-type.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3V0aWxzL2lzLXR5cGUuanM/ZDQzNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBOztBQUVlLHFFQUFNLEVBQUM7QUFDdEIiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3V0aWxzL2lzLXR5cGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcblxudmFyIGlzVHlwZSA9IGZ1bmN0aW9uIGlzVHlwZSh2YWx1ZSwgdHlwZSkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0ICcgKyB0eXBlICsgJ10nO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgaXNUeXBlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtdHlwZS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-type.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-typedarray.js":
/*!*************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-typedarray.js ***!
\*************************************************************************************/
/*! exports provided: isTypedArray */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTypedArray\", function() { return isTypedArray; });\n/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/_@babel_runtime@7.16.3@@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\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/** `Object#toString` result references. */\n\nvar argsTag = '[object Arguments]';\nvar arrayTag = '[object Array]';\nvar boolTag = '[object Boolean]';\nvar dateTag = '[object Date]';\nvar errorTag = '[object Error]';\nvar funcTag = '[object Function]';\nvar mapTag = '[object Map]';\nvar numberTag = '[object Number]';\nvar objectTag = '[object Object]';\nvar regexpTag = '[object RegExp]';\nvar setTag = '[object Set]';\nvar stringTag = '[object String]';\nvar weakMapTag = '[object WeakMap]';\nvar arrayBufferTag = '[object ArrayBuffer]';\nvar dataViewTag = '[object DataView]';\nvar float32Tag = '[object Float32Array]';\nvar float64Tag = '[object Float64Array]';\nvar int8Tag = '[object Int8Array]';\nvar int16Tag = '[object Int16Array]';\nvar int32Tag = '[object Int32Array]';\nvar uint8Tag = '[object Uint8Array]';\nvar uint8ClampedTag = '[object Uint8ClampedArray]';\nvar uint16Tag = '[object Uint16Array]';\nvar uint32Tag = '[object Uint32Array]';\n/** Used to identify `toStringTag` values of typed arrays. */\n\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n\nfunction baseUnary(func) {\n return function (value) {\n return func(value);\n };\n}\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar objectToString = objectProto.toString;\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\nfunction isLength(value) {\n return typeof value === 'number' && value > -1 && value % 1 === 0 && value <= MAX_SAFE_INTEGER;\n}\n\nfunction isObjectLike(value) {\n return !!value && _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default()(value) === 'object';\n}\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n\n\nvar isTypedArray = baseIsTypedArray;\n//# sourceMappingURL=is-typedarray.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3V0aWxzL2lzLXR5cGVkYXJyYXkuanM/MDRmOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvRDs7QUFFcEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsU0FBUztBQUN0Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvQkFBb0Isb0VBQU87QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHTztBQUNQIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdUAwLjUuNUBAYW50di9nLXdlYmdwdS9lcy91dGlscy9pcy10eXBlZGFycmF5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF90eXBlb2YgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCI7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xuXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nO1xudmFyIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJztcbnZhciBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nO1xudmFyIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXSc7XG52YXIgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nO1xudmFyIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nO1xudmFyIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nO1xudmFyIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nO1xudmFyIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nO1xudmFyIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nO1xudmFyIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nO1xudmFyIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nO1xudmFyIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nO1xudmFyIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJztcbnZhciBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XSc7XG52YXIgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nO1xudmFyIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJztcbnZhciBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJztcbnZhciBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJztcbnZhciB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJztcbnZhciB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nO1xudmFyIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XSc7XG52YXIgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcbi8qKiBVc2VkIHRvIGlkZW50aWZ5IGB0b1N0cmluZ1RhZ2AgdmFsdWVzIG9mIHR5cGVkIGFycmF5cy4gKi9cblxudmFyIHR5cGVkQXJyYXlUYWdzID0ge307XG50eXBlZEFycmF5VGFnc1tmbG9hdDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Zsb2F0NjRUYWddID0gdHlwZWRBcnJheVRhZ3NbaW50OFRhZ10gPSB0eXBlZEFycmF5VGFnc1tpbnQxNlRhZ10gPSB0eXBlZEFycmF5VGFnc1tpbnQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50OFRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50OENsYW1wZWRUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDE2VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQzMlRhZ10gPSB0cnVlO1xudHlwZWRBcnJheVRhZ3NbYXJnc1RhZ10gPSB0eXBlZEFycmF5VGFnc1thcnJheVRhZ10gPSB0eXBlZEFycmF5VGFnc1thcnJheUJ1ZmZlclRhZ10gPSB0eXBlZEFycmF5VGFnc1tib29sVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2RhdGFWaWV3VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2RhdGVUYWddID0gdHlwZWRBcnJheVRhZ3NbZXJyb3JUYWddID0gdHlwZWRBcnJheVRhZ3NbZnVuY1RhZ10gPSB0eXBlZEFycmF5VGFnc1ttYXBUYWddID0gdHlwZWRBcnJheVRhZ3NbbnVtYmVyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW29iamVjdFRhZ10gPSB0eXBlZEFycmF5VGFnc1tyZWdleHBUYWddID0gdHlwZWRBcnJheVRhZ3Nbc2V0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3N0cmluZ1RhZ10gPSB0eXBlZEFycmF5VGFnc1t3ZWFrTWFwVGFnXSA9IGZhbHNlO1xuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bmFyeWAgd2l0aG91dCBzdXBwb3J0IGZvciBzdG9yaW5nIG1ldGFkYXRhLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjYXAgYXJndW1lbnRzIGZvci5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNhcHBlZCBmdW5jdGlvbi5cbiAqL1xuXG5mdW5jdGlvbiBiYXNlVW5hcnkoZnVuYykge1xuICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgcmV0dXJuIGZ1bmModmFsdWUpO1xuICB9O1xufVxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xuXG5cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG5cbnZhciBvYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc1R5cGVkQXJyYXlgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqL1xuXG5mdW5jdGlvbiBiYXNlSXNUeXBlZEFycmF5KHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgISF0eXBlZEFycmF5VGFnc1tvYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKV07XG59XG5cbmZ1bmN0aW9uIGlzTGVuZ3RoKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09PSAwICYmIHZhbHVlIDw9IE1BWF9TQUZFX0lOVEVHRVI7XG59XG5cbmZ1bmN0aW9uIGlzT2JqZWN0TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gISF2YWx1ZSAmJiBfdHlwZW9mKHZhbHVlKSA9PT0gJ29iamVjdCc7XG59XG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSB0eXBlZCBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KG5ldyBVaW50OEFycmF5KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzVHlwZWRBcnJheShbXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5cblxuZXhwb3J0IHZhciBpc1R5cGVkQXJyYXkgPSBiYXNlSXNUeXBlZEFycmF5O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXMtdHlwZWRhcnJheS5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-typedarray.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/math.js":
/*!****************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/math.js ***!
\****************************************************************************/
/*! exports provided: getAngle, createVec3 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAngle\", function() { return getAngle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createVec3\", function() { return createVec3; });\n/* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! gl-matrix */ \"./node_modules/_gl-matrix@3.4.3@gl-matrix/esm/index.js\");\n/* harmony import */ var _is_number__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is-number */ \"./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/is-number.js\");\n\n\nfunction getAngle(angle) {\n if (angle === undefined) {\n return 0;\n } else if (angle > 360 || angle < -360) {\n return angle % 360;\n }\n\n return angle;\n}\nfunction createVec3(x, y, z) {\n if (Object(_is_number__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(x)) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"vec3\"].fromValues(x, y, z);\n }\n\n if (x.length === 3) {\n return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"vec3\"].clone(x);\n } // @ts-ignore\n\n\n return gl_matrix__WEBPACK_IMPORTED_MODULE_0__[\"vec3\"].fromValues(x[0], x[1], x[2]);\n}\n//# sourceMappingURL=math.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3V0aWxzL21hdGguanM/NTlkOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ007QUFDaEM7QUFDUDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNPO0FBQ1AsTUFBTSwyREFBUTtBQUNkLFdBQVcsOENBQUk7QUFDZjs7QUFFQTtBQUNBLFdBQVcsOENBQUk7QUFDZixHQUFHOzs7QUFHSCxTQUFTLDhDQUFJO0FBQ2I7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZy13ZWJncHVAMC41LjVAQGFudHYvZy13ZWJncHUvZXMvdXRpbHMvbWF0aC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHZlYzMgfSBmcm9tICdnbC1tYXRyaXgnO1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICcuL2lzLW51bWJlcic7XG5leHBvcnQgZnVuY3Rpb24gZ2V0QW5nbGUoYW5nbGUpIHtcbiAgaWYgKGFuZ2xlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gMDtcbiAgfSBlbHNlIGlmIChhbmdsZSA+IDM2MCB8fCBhbmdsZSA8IC0zNjApIHtcbiAgICByZXR1cm4gYW5nbGUgJSAzNjA7XG4gIH1cblxuICByZXR1cm4gYW5nbGU7XG59XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVmVjMyh4LCB5LCB6KSB7XG4gIGlmIChpc051bWJlcih4KSkge1xuICAgIHJldHVybiB2ZWMzLmZyb21WYWx1ZXMoeCwgeSwgeik7XG4gIH1cblxuICBpZiAoeC5sZW5ndGggPT09IDMpIHtcbiAgICByZXR1cm4gdmVjMy5jbG9uZSh4KTtcbiAgfSAvLyBAdHMtaWdub3JlXG5cblxuICByZXR1cm4gdmVjMy5mcm9tVmFsdWVzKHhbMF0sIHhbMV0sIHhbMl0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWF0aC5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/math.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/picking.js":
/*!*******************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/picking.js ***!
\*******************************************************************************/
/*! exports provided: encodePickingColor */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"encodePickingColor\", function() { return encodePickingColor; });\nfunction encodePickingColor(featureIdx) {\n return [featureIdx + 1 & 255, featureIdx + 1 >> 8 & 255, featureIdx + 1 >> 8 >> 8 & 255];\n}\n//# sourceMappingURL=picking.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3V0aWxzL3BpY2tpbmcuanM/OWQyMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQU87QUFDUDtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3V0aWxzL3BpY2tpbmcuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZW5jb2RlUGlja2luZ0NvbG9yKGZlYXR1cmVJZHgpIHtcbiAgcmV0dXJuIFtmZWF0dXJlSWR4ICsgMSAmIDI1NSwgZmVhdHVyZUlkeCArIDEgPj4gOCAmIDI1NSwgZmVhdHVyZUlkeCArIDEgPj4gOCA+PiA4ICYgMjU1XTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBpY2tpbmcuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/picking.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/polyline-normals.js":
/*!****************************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/polyline-normals.js ***!
\****************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var gl_vec2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! gl-vec2 */ \"./node_modules/_gl-vec2@1.3.0@gl-vec2/index.js\");\n/* harmony import */ var gl_vec2__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(gl_vec2__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var polyline_miter_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! polyline-miter-util */ \"./node_modules/_polyline-miter-util@1.0.1@polyline-miter-util/index.js\");\n/* harmony import */ var polyline_miter_util__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(polyline_miter_util__WEBPACK_IMPORTED_MODULE_1__);\n// @ts-ignore\n // @ts-ignore\n\n\n\nfunction extrusions(positions, out, point, normal, scale) {\n addNext(out, normal, -scale);\n addNext(out, normal, scale);\n positions.push(point);\n positions.push(point);\n}\n\nfunction addNext(out, normal, length) {\n out.push([[normal[0], normal[1]], length]);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (points, closed, indexOffset) {\n var lineA = [0, 0];\n var lineB = [0, 0];\n var tangent = [0, 0];\n var miter = [0, 0];\n\n var _lastFlip = -1;\n\n var _started = false;\n var _normal = null;\n var tmp = Object(gl_vec2__WEBPACK_IMPORTED_MODULE_0__[\"create\"])();\n var count = indexOffset || 0;\n var miterLimit = 3;\n var out = [];\n var attrPos = [];\n var attrIndex = [];\n var attrCounters = [0, 0];\n\n if (closed) {\n points = points.slice();\n points.push(points[0]);\n }\n\n var total = points.length;\n\n for (var i = 1; i < total; i++) {\n var index = count;\n var last = points[i - 1];\n var cur = points[i];\n var next = i < points.length - 1 ? points[i + 1] : null;\n attrCounters.push(i / total, i / total);\n Object(polyline_miter_util__WEBPACK_IMPORTED_MODULE_1__[\"direction\"])(lineA, cur, last);\n\n if (!_normal) {\n _normal = [0, 0];\n Object(polyline_miter_util__WEBPACK_IMPORTED_MODULE_1__[\"normal\"])(_normal, lineA);\n }\n\n if (!_started) {\n _started = true;\n extrusions(attrPos, out, last, _normal, 1);\n }\n\n attrIndex.push([index + 0, index + 1, index + 2]);\n\n if (!next) {\n // no miter, simple segment\n Object(polyline_miter_util__WEBPACK_IMPORTED_MODULE_1__[\"normal\"])(_normal, lineA); // reset normal\n\n extrusions(attrPos, out, cur, _normal, 1);\n attrIndex.push(_lastFlip === 1 ? [index, index + 2, index + 3] : [index + 2, index + 1, index + 3]);\n count += 2;\n } else {\n // miter with last\n // get unit dir of next line\n Object(polyline_miter_util__WEBPACK_IMPORTED_MODULE_1__[\"direction\"])(lineB, next, cur); // stores tangent & miter\n\n var miterLen = Object(polyline_miter_util__WEBPACK_IMPORTED_MODULE_1__[\"computeMiter\"])(tangent, miter, lineA, lineB, 1); // get orientation\n\n var flip = Object(gl_vec2__WEBPACK_IMPORTED_MODULE_0__[\"dot\"])(tangent, _normal) < 0 ? -1 : 1;\n var bevel = miterLen > miterLimit; // 处理相邻线段重叠的情况\n\n if (!isFinite(miterLen)) {\n Object(polyline_miter_util__WEBPACK_IMPORTED_MODULE_1__[\"normal\"])(_normal, lineA); // reset normal\n\n extrusions(attrPos, out, cur, _normal, 1);\n attrIndex.push(_lastFlip === 1 ? [index, index + 2, index + 3] : [index + 2, index + 1, index + 3]);\n count += 2;\n _lastFlip = flip;\n continue;\n }\n\n if (bevel) {\n miterLen = miterLimit;\n attrCounters.push(i / total); // next two points in our first segment\n\n addNext(out, _normal, -flip);\n attrPos.push(cur);\n addNext(out, miter, miterLen * flip);\n attrPos.push(cur);\n attrIndex.push(_lastFlip !== -flip ? [index, index + 2, index + 3] : [index + 2, index + 1, index + 3]); // now add the bevel triangle\n\n attrIndex.push([index + 2, index + 3, index + 4]);\n Object(polyline_miter_util__WEBPACK_IMPORTED_MODULE_1__[\"normal\"])(tmp, lineB);\n Object(gl_vec2__WEBPACK_IMPORTED_MODULE_0__[\"copy\"])(_normal, tmp); // store normal for next round\n\n addNext(out, _normal, -flip);\n attrPos.push(cur); // the miter is now the normal for our next join\n\n count += 3;\n } else {\n // miter\n // next two points for our miter join\n extrusions(attrPos, out, cur, miter, miterLen);\n attrIndex.push(_lastFlip === 1 ? [index, index + 2, index + 3] : [index + 2, index + 1, index + 3]);\n flip = -1; // the miter is now the normal for our next join\n\n Object(gl_vec2__WEBPACK_IMPORTED_MODULE_0__[\"copy\"])(_normal, miter);\n count += 2;\n }\n\n _lastFlip = flip;\n }\n }\n\n return {\n normals: out,\n attrIndex: attrIndex,\n attrPos: attrPos,\n attrCounters: attrCounters\n };\n});\n//# sourceMappingURL=polyline-normals.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3V0aWxzL3BvbHlsaW5lLW5vcm1hbHMuanM/MGY4MiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDNEM7O0FBRTBCOztBQUV0RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLFlBQVksc0RBQU07QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLGlCQUFpQixXQUFXO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHFFQUFTOztBQUViO0FBQ0E7QUFDQSxNQUFNLGtFQUFNO0FBQ1o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE1BQU0sa0VBQU0saUJBQWlCOztBQUU3QjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLE1BQU0scUVBQVMsbUJBQW1COztBQUVsQyxxQkFBcUIsd0VBQVksa0NBQWtDOztBQUVuRSxpQkFBaUIsbURBQUc7QUFDcEIsd0NBQXdDOztBQUV4QztBQUNBLFFBQVEsa0VBQU0saUJBQWlCOztBQUUvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHFDQUFxQzs7QUFFckM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnSEFBZ0g7O0FBRWhIO0FBQ0EsUUFBUSxrRUFBTTtBQUNkLFFBQVEsb0RBQUksZUFBZTs7QUFFM0I7QUFDQSwwQkFBMEI7O0FBRTFCO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCOztBQUVsQixRQUFRLG9EQUFJO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdUAwLjUuNUBAYW50di9nLXdlYmdwdS9lcy91dGlscy9wb2x5bGluZS1ub3JtYWxzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgY29weSwgY3JlYXRlLCBkb3QgfSBmcm9tICdnbC12ZWMyJzsgLy8gQHRzLWlnbm9yZVxuXG5pbXBvcnQgeyBjb21wdXRlTWl0ZXIsIGRpcmVjdGlvbiwgbm9ybWFsIH0gZnJvbSAncG9seWxpbmUtbWl0ZXItdXRpbCc7XG5cbmZ1bmN0aW9uIGV4dHJ1c2lvbnMocG9zaXRpb25zLCBvdXQsIHBvaW50LCBub3JtYWwsIHNjYWxlKSB7XG4gIGFkZE5leHQob3V0LCBub3JtYWwsIC1zY2FsZSk7XG4gIGFkZE5leHQob3V0LCBub3JtYWwsIHNjYWxlKTtcbiAgcG9zaXRpb25zLnB1c2gocG9pbnQpO1xuICBwb3NpdGlvbnMucHVzaChwb2ludCk7XG59XG5cbmZ1bmN0aW9uIGFkZE5leHQob3V0LCBub3JtYWwsIGxlbmd0aCkge1xuICBvdXQucHVzaChbW25vcm1hbFswXSwgbm9ybWFsWzFdXSwgbGVuZ3RoXSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChwb2ludHMsIGNsb3NlZCwgaW5kZXhPZmZzZXQpIHtcbiAgdmFyIGxpbmVBID0gWzAsIDBdO1xuICB2YXIgbGluZUIgPSBbMCwgMF07XG4gIHZhciB0YW5nZW50ID0gWzAsIDBdO1xuICB2YXIgbWl0ZXIgPSBbMCwgMF07XG5cbiAgdmFyIF9sYXN0RmxpcCA9IC0xO1xuXG4gIHZhciBfc3RhcnRlZCA9IGZhbHNlO1xuICB2YXIgX25vcm1hbCA9IG51bGw7XG4gIHZhciB0bXAgPSBjcmVhdGUoKTtcbiAgdmFyIGNvdW50ID0gaW5kZXhPZmZzZXQgfHwgMDtcbiAgdmFyIG1pdGVyTGltaXQgPSAzO1xuICB2YXIgb3V0ID0gW107XG4gIHZhciBhdHRyUG9zID0gW107XG4gIHZhciBhdHRySW5kZXggPSBbXTtcbiAgdmFyIGF0dHJDb3VudGVycyA9IFswLCAwXTtcblxuICBpZiAoY2xvc2VkKSB7XG4gICAgcG9pbnRzID0gcG9pbnRzLnNsaWNlKCk7XG4gICAgcG9pbnRzLnB1c2gocG9pbnRzWzBdKTtcbiAgfVxuXG4gIHZhciB0b3RhbCA9IHBvaW50cy5sZW5ndGg7XG5cbiAgZm9yICh2YXIgaSA9IDE7IGkgPCB0b3RhbDsgaSsrKSB7XG4gICAgdmFyIGluZGV4ID0gY291bnQ7XG4gICAgdmFyIGxhc3QgPSBwb2ludHNbaSAtIDFdO1xuICAgIHZhciBjdXIgPSBwb2ludHNbaV07XG4gICAgdmFyIG5leHQgPSBpIDwgcG9pbnRzLmxlbmd0aCAtIDEgPyBwb2ludHNbaSArIDFdIDogbnVsbDtcbiAgICBhdHRyQ291bnRlcnMucHVzaChpIC8gdG90YWwsIGkgLyB0b3RhbCk7XG4gICAgZGlyZWN0aW9uKGxpbmVBLCBjdXIsIGxhc3QpO1xuXG4gICAgaWYgKCFfbm9ybWFsKSB7XG4gICAgICBfbm9ybWFsID0gWzAsIDBdO1xuICAgICAgbm9ybWFsKF9ub3JtYWwsIGxpbmVBKTtcbiAgICB9XG5cbiAgICBpZiAoIV9zdGFydGVkKSB7XG4gICAgICBfc3RhcnRlZCA9IHRydWU7XG4gICAgICBleHRydXNpb25zKGF0dHJQb3MsIG91dCwgbGFzdCwgX25vcm1hbCwgMSk7XG4gICAgfVxuXG4gICAgYXR0ckluZGV4LnB1c2goW2luZGV4ICsgMCwgaW5kZXggKyAxLCBpbmRleCArIDJdKTtcblxuICAgIGlmICghbmV4dCkge1xuICAgICAgLy8gbm8gbWl0ZXIsIHNpbXBsZSBzZWdtZW50XG4gICAgICBub3JtYWwoX25vcm1hbCwgbGluZUEpOyAvLyByZXNldCBub3JtYWxcblxuICAgICAgZXh0cnVzaW9ucyhhdHRyUG9zLCBvdXQsIGN1ciwgX25vcm1hbCwgMSk7XG4gICAgICBhdHRySW5kZXgucHVzaChfbGFzdEZsaXAgPT09IDEgPyBbaW5kZXgsIGluZGV4ICsgMiwgaW5kZXggKyAzXSA6IFtpbmRleCArIDIsIGluZGV4ICsgMSwgaW5kZXggKyAzXSk7XG4gICAgICBjb3VudCArPSAyO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBtaXRlciB3aXRoIGxhc3RcbiAgICAgIC8vIGdldCB1bml0IGRpciBvZiBuZXh0IGxpbmVcbiAgICAgIGRpcmVjdGlvbihsaW5lQiwgbmV4dCwgY3VyKTsgLy8gc3RvcmVzIHRhbmdlbnQgJiBtaXRlclxuXG4gICAgICB2YXIgbWl0ZXJMZW4gPSBjb21wdXRlTWl0ZXIodGFuZ2VudCwgbWl0ZXIsIGxpbmVBLCBsaW5lQiwgMSk7IC8vIGdldCBvcmllbnRhdGlvblxuXG4gICAgICB2YXIgZmxpcCA9IGRvdCh0YW5nZW50LCBfbm9ybWFsKSA8IDAgPyAtMSA6IDE7XG4gICAgICB2YXIgYmV2ZWwgPSBtaXRlckxlbiA+IG1pdGVyTGltaXQ7IC8vIOWkhOeQhuebuOmCu+e6v+autemHjeWPoOeahOaDheWGtVxuXG4gICAgICBpZiAoIWlzRmluaXRlKG1pdGVyTGVuKSkge1xuICAgICAgICBub3JtYWwoX25vcm1hbCwgbGluZUEpOyAvLyByZXNldCBub3JtYWxcblxuICAgICAgICBleHRydXNpb25zKGF0dHJQb3MsIG91dCwgY3VyLCBfbm9ybWFsLCAxKTtcbiAgICAgICAgYXR0ckluZGV4LnB1c2goX2xhc3RGbGlwID09PSAxID8gW2luZGV4LCBpbmRleCArIDIsIGluZGV4ICsgM10gOiBbaW5kZXggKyAyLCBpbmRleCArIDEsIGluZGV4ICsgM10pO1xuICAgICAgICBjb3VudCArPSAyO1xuICAgICAgICBfbGFzdEZsaXAgPSBmbGlwO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGJldmVsKSB7XG4gICAgICAgIG1pdGVyTGVuID0gbWl0ZXJMaW1pdDtcbiAgICAgICAgYXR0ckNvdW50ZXJzLnB1c2goaSAvIHRvdGFsKTsgLy8gbmV4dCB0d28gcG9pbnRzIGluIG91ciBmaXJzdCBzZWdtZW50XG5cbiAgICAgICAgYWRkTmV4dChvdXQsIF9ub3JtYWwsIC1mbGlwKTtcbiAgICAgICAgYXR0clBvcy5wdXNoKGN1cik7XG4gICAgICAgIGFkZE5leHQob3V0LCBtaXRlciwgbWl0ZXJMZW4gKiBmbGlwKTtcbiAgICAgICAgYXR0clBvcy5wdXNoKGN1cik7XG4gICAgICAgIGF0dHJJbmRleC5wdXNoKF9sYXN0RmxpcCAhPT0gLWZsaXAgPyBbaW5kZXgsIGluZGV4ICsgMiwgaW5kZXggKyAzXSA6IFtpbmRleCArIDIsIGluZGV4ICsgMSwgaW5kZXggKyAzXSk7IC8vIG5vdyBhZGQgdGhlIGJldmVsIHRyaWFuZ2xlXG5cbiAgICAgICAgYXR0ckluZGV4LnB1c2goW2luZGV4ICsgMiwgaW5kZXggKyAzLCBpbmRleCArIDRdKTtcbiAgICAgICAgbm9ybWFsKHRtcCwgbGluZUIpO1xuICAgICAgICBjb3B5KF9ub3JtYWwsIHRtcCk7IC8vIHN0b3JlIG5vcm1hbCBmb3IgbmV4dCByb3VuZFxuXG4gICAgICAgIGFkZE5leHQob3V0LCBfbm9ybWFsLCAtZmxpcCk7XG4gICAgICAgIGF0dHJQb3MucHVzaChjdXIpOyAvLyB0aGUgbWl0ZXIgaXMgbm93IHRoZSBub3JtYWwgZm9yIG91ciBuZXh0IGpvaW5cblxuICAgICAgICBjb3VudCArPSAzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gbWl0ZXJcbiAgICAgICAgLy8gbmV4dCB0d28gcG9pbnRzIGZvciBvdXIgbWl0ZXIgam9pblxuICAgICAgICBleHRydXNpb25zKGF0dHJQb3MsIG91dCwgY3VyLCBtaXRlciwgbWl0ZXJMZW4pO1xuICAgICAgICBhdHRySW5kZXgucHVzaChfbGFzdEZsaXAgPT09IDEgPyBbaW5kZXgsIGluZGV4ICsgMiwgaW5kZXggKyAzXSA6IFtpbmRleCArIDIsIGluZGV4ICsgMSwgaW5kZXggKyAzXSk7XG4gICAgICAgIGZsaXAgPSAtMTsgLy8gdGhlIG1pdGVyIGlzIG5vdyB0aGUgbm9ybWFsIGZvciBvdXIgbmV4dCBqb2luXG5cbiAgICAgICAgY29weShfbm9ybWFsLCBtaXRlcik7XG4gICAgICAgIGNvdW50ICs9IDI7XG4gICAgICB9XG5cbiAgICAgIF9sYXN0RmxpcCA9IGZsaXA7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBub3JtYWxzOiBvdXQsXG4gICAgYXR0ckluZGV4OiBhdHRySW5kZXgsXG4gICAgYXR0clBvczogYXR0clBvcyxcbiAgICBhdHRyQ291bnRlcnM6IGF0dHJDb3VudGVyc1xuICB9O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cG9seWxpbmUtbm9ybWFscy5qcy5tYXAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/polyline-normals.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/typedarray.js":
/*!**********************************************************************************!*\
!*** ./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/typedarray.js ***!
\**********************************************************************************/
/*! exports provided: merge */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"merge\", function() { return merge; });\nfunction merge(a, b) {\n // Checks for truthy values on both arrays\n if (!a && !b) {\n throw new Error('Please specify valid arguments for parameters a and b.');\n } // Checks for truthy values or empty arrays on each argument\n // to avoid the unnecessary construction of a new array and\n // the type comparison\n\n\n if (!b || b.length === 0) {\n return a;\n }\n\n if (!a || a.length === 0) {\n return b;\n } // Make sure that both typed arrays are of the same type\n\n\n if (Object.prototype.toString.call(a) !== Object.prototype.toString.call(b)) {\n throw new Error('The types of the two arguments passed for parameters a and b do not match.');\n } // @ts-ignore\n\n\n var c = new a.constructor(a.length + b.length);\n c.set(a);\n c.set(b, a.length);\n return c;\n}\n//# sourceMappingURL=typedarray.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2ctd2ViZ3B1QDAuNS41QEBhbnR2L2ctd2ViZ3B1L2VzL3V0aWxzL3R5cGVkYXJyYXkuanM/MTdmYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nLXdlYmdwdUAwLjUuNUBAYW50di9nLXdlYmdwdS9lcy91dGlscy90eXBlZGFycmF5LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIG1lcmdlKGEsIGIpIHtcbiAgLy8gQ2hlY2tzIGZvciB0cnV0aHkgdmFsdWVzIG9uIGJvdGggYXJyYXlzXG4gIGlmICghYSAmJiAhYikge1xuICAgIHRocm93IG5ldyBFcnJvcignUGxlYXNlIHNwZWNpZnkgdmFsaWQgYXJndW1lbnRzIGZvciBwYXJhbWV0ZXJzIGEgYW5kIGIuJyk7XG4gIH0gLy8gQ2hlY2tzIGZvciB0cnV0aHkgdmFsdWVzIG9yIGVtcHR5IGFycmF5cyBvbiBlYWNoIGFyZ3VtZW50XG4gIC8vIHRvIGF2b2lkIHRoZSB1bm5lY2Vzc2FyeSBjb25zdHJ1Y3Rpb24gb2YgYSBuZXcgYXJyYXkgYW5kXG4gIC8vIHRoZSB0eXBlIGNvbXBhcmlzb25cblxuXG4gIGlmICghYiB8fCBiLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBhO1xuICB9XG5cbiAgaWYgKCFhIHx8IGEubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGI7XG4gIH0gLy8gTWFrZSBzdXJlIHRoYXQgYm90aCB0eXBlZCBhcnJheXMgYXJlIG9mIHRoZSBzYW1lIHR5cGVcblxuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSkgIT09IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChiKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhlIHR5cGVzIG9mIHRoZSB0d28gYXJndW1lbnRzIHBhc3NlZCBmb3IgcGFyYW1ldGVycyBhIGFuZCBiIGRvIG5vdCBtYXRjaC4nKTtcbiAgfSAvLyBAdHMtaWdub3JlXG5cblxuICB2YXIgYyA9IG5ldyBhLmNvbnN0cnVjdG9yKGEubGVuZ3RoICsgYi5sZW5ndGgpO1xuICBjLnNldChhKTtcbiAgYy5zZXQoYiwgYS5sZW5ndGgpO1xuICByZXR1cm4gYztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXR5cGVkYXJyYXkuanMubWFwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g-webgpu@0.5.5@@antv/g-webgpu/es/utils/typedarray.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/behavior/behavior.js":
/*!*********************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/behavior/behavior.js ***!
\*********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _behaviorOption__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./behaviorOption */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/behavior/behaviorOption.js\");\n\n\n\nvar Behavior =\n/** @class */\nfunction () {\n function Behavior() {}\n /**\n * 自定义 Behavior\n * @param type Behavior 名称\n * @param behavior Behavior 定义的方法集合\n */\n\n\n Behavior.registerBehavior = function (type, behavior) {\n if (!behavior) {\n throw new Error(\"please specify handler for this behavior: \" + type);\n }\n\n var prototype = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"clone\"])(_behaviorOption__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n Object.assign(prototype, behavior); // eslint-disable-next-line func-names\n\n var base = function base(cfg) {\n var _this = this;\n\n Object.assign(this, this.getDefaultCfg(), cfg);\n var events = this.getEvents();\n this.events = null;\n var eventsToBind = {};\n\n if (events) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(events, function (handle, event) {\n eventsToBind[event] = Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"wrapBehavior\"])(_this, handle);\n });\n this.events = eventsToBind;\n }\n };\n\n base.prototype = prototype;\n Behavior.types[type] = base;\n };\n\n Behavior.hasBehavior = function (type) {\n return !!Behavior.types[type];\n };\n\n Behavior.getBehavior = function (type) {\n return Behavior.types[type];\n }; // 所有自定义的 Behavior 的实例\n\n\n Behavior.types = {};\n return Behavior;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Behavior);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9iZWhhdmlvci9iZWhhdmlvci5qcz83ZjFiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUF1RDtBQUNUOztBQUU5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG9CQUFvQix3REFBSyxDQUFDLHVEQUFjO0FBQ3hDLHVDQUF1Qzs7QUFFdkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFFBQVEsdURBQUk7QUFDWixnQ0FBZ0MsK0RBQVk7QUFDNUMsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0EsQ0FBQzs7QUFFYyx1RUFBUSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtY29yZUAwLjUuMEBAYW50di9nNi1jb3JlL2VzL2JlaGF2aW9yL2JlaGF2aW9yLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2xvbmUsIGVhY2gsIHdyYXBCZWhhdmlvciB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IGJlaGF2aW9yT3B0aW9uIGZyb20gJy4vYmVoYXZpb3JPcHRpb24nO1xuXG52YXIgQmVoYXZpb3IgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBCZWhhdmlvcigpIHt9XG4gIC8qKlxuICAgKiDoh6rlrprkuYkgQmVoYXZpb3JcbiAgICogQHBhcmFtIHR5cGUgQmVoYXZpb3Ig5ZCN56ewXG4gICAqIEBwYXJhbSBiZWhhdmlvciBCZWhhdmlvciDlrprkuYnnmoTmlrnms5Xpm4blkIhcbiAgICovXG5cblxuICBCZWhhdmlvci5yZWdpc3RlckJlaGF2aW9yID0gZnVuY3Rpb24gKHR5cGUsIGJlaGF2aW9yKSB7XG4gICAgaWYgKCFiZWhhdmlvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwicGxlYXNlIHNwZWNpZnkgaGFuZGxlciBmb3IgdGhpcyBiZWhhdmlvcjogXCIgKyB0eXBlKTtcbiAgICB9XG5cbiAgICB2YXIgcHJvdG90eXBlID0gY2xvbmUoYmVoYXZpb3JPcHRpb24pO1xuICAgIE9iamVjdC5hc3NpZ24ocHJvdG90eXBlLCBiZWhhdmlvcik7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG5cbiAgICB2YXIgYmFzZSA9IGZ1bmN0aW9uIGJhc2UoY2ZnKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMsIHRoaXMuZ2V0RGVmYXVsdENmZygpLCBjZmcpO1xuICAgICAgdmFyIGV2ZW50cyA9IHRoaXMuZ2V0RXZlbnRzKCk7XG4gICAgICB0aGlzLmV2ZW50cyA9IG51bGw7XG4gICAgICB2YXIgZXZlbnRzVG9CaW5kID0ge307XG5cbiAgICAgIGlmIChldmVudHMpIHtcbiAgICAgICAgZWFjaChldmVudHMsIGZ1bmN0aW9uIChoYW5kbGUsIGV2ZW50KSB7XG4gICAgICAgICAgZXZlbnRzVG9CaW5kW2V2ZW50XSA9IHdyYXBCZWhhdmlvcihfdGhpcywgaGFuZGxlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZXZlbnRzID0gZXZlbnRzVG9CaW5kO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBiYXNlLnByb3RvdHlwZSA9IHByb3RvdHlwZTtcbiAgICBCZWhhdmlvci50eXBlc1t0eXBlXSA9IGJhc2U7XG4gIH07XG5cbiAgQmVoYXZpb3IuaGFzQmVoYXZpb3IgPSBmdW5jdGlvbiAodHlwZSkge1xuICAgIHJldHVybiAhIUJlaGF2aW9yLnR5cGVzW3R5cGVdO1xuICB9O1xuXG4gIEJlaGF2aW9yLmdldEJlaGF2aW9yID0gZnVuY3Rpb24gKHR5cGUpIHtcbiAgICByZXR1cm4gQmVoYXZpb3IudHlwZXNbdHlwZV07XG4gIH07IC8vIOaJgOacieiHquWumuS5ieeahCBCZWhhdmlvciDnmoTlrp7kvotcblxuXG4gIEJlaGF2aW9yLnR5cGVzID0ge307XG4gIHJldHVybiBCZWhhdmlvcjtcbn0oKTtcblxuZXhwb3J0IGRlZmF1bHQgQmVoYXZpb3I7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/behavior/behavior.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/behavior/behaviorOption.js":
/*!***************************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/behavior/behaviorOption.js ***!
\***************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n // 自定义 Behavior 时候共有的方法\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {};\n },\n\n /**\n * register event handler, behavior will auto bind events\n * for example:\n * return {\n * click: 'onClick'\n * }\n */\n getEvents: function getEvents() {\n return {};\n },\n updateCfg: function updateCfg(cfg) {\n Object.assign(this, cfg);\n return true;\n },\n shouldBegin: function shouldBegin() {\n return true;\n },\n shouldUpdate: function shouldUpdate() {\n return true;\n },\n shouldEnd: function shouldEnd() {\n return true;\n },\n\n /**\n * auto bind events when register behavior\n * @param graph Graph instance\n */\n bind: function bind(graph) {\n var _this = this;\n\n var events = this.events;\n this.graph = graph;\n\n if (this.type === 'drag-canvas' || this.type === 'brush-select' || this.type === 'lasso-select') {\n graph.get('canvas').set('draggable', true);\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(events, function (handler, event) {\n graph.on(event, handler);\n }); // To avoid the tabs switching makes the keydown related behaviors disable\n\n document.addEventListener('visibilitychange', function () {\n _this.keydown = false;\n });\n },\n unbind: function unbind(graph) {\n var events = this.events;\n var draggable = graph.get('canvas').get('draggable');\n\n if (this.type === 'drag-canvas' || this.type === 'brush-select' || this.type === 'lasso-select') {\n graph.get('canvas').set('draggable', false);\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(events, function (handler, event) {\n graph.off(event, handler);\n });\n graph.get('canvas').set('draggable', draggable);\n },\n get: function get(val) {\n return this[val];\n },\n set: function set(key, val) {\n this[key] = val;\n return this;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9iZWhhdmlvci9iZWhhdmlvck9wdGlvbi5qcz83NmZjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBa0M7O0FBRW5CO0FBQ2Y7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLElBQUksdURBQUk7QUFDUjtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLElBQUksdURBQUk7QUFDUjtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtY29yZUAwLjUuMEBAYW50di9nNi1jb3JlL2VzL2JlaGF2aW9yL2JlaGF2aW9yT3B0aW9uLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZWFjaCB9IGZyb20gJ0BhbnR2L3V0aWwnOyAvLyDoh6rlrprkuYkgQmVoYXZpb3Ig5pe25YCZ5YWx5pyJ55qE5pa55rOVXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0RGVmYXVsdENmZzogZnVuY3Rpb24gZ2V0RGVmYXVsdENmZygpIHtcbiAgICByZXR1cm4ge307XG4gIH0sXG5cbiAgLyoqXG4gICAqIHJlZ2lzdGVyIGV2ZW50IGhhbmRsZXIsIGJlaGF2aW9yIHdpbGwgYXV0byBiaW5kIGV2ZW50c1xuICAgKiBmb3IgZXhhbXBsZTpcbiAgICogcmV0dXJuIHtcbiAgICogIGNsaWNrOiAnb25DbGljaydcbiAgICogfVxuICAgKi9cbiAgZ2V0RXZlbnRzOiBmdW5jdGlvbiBnZXRFdmVudHMoKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9LFxuICB1cGRhdGVDZmc6IGZ1bmN0aW9uIHVwZGF0ZUNmZyhjZmcpIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIGNmZyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIHNob3VsZEJlZ2luOiBmdW5jdGlvbiBzaG91bGRCZWdpbigpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcbiAgc2hvdWxkVXBkYXRlOiBmdW5jdGlvbiBzaG91bGRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIHNob3VsZEVuZDogZnVuY3Rpb24gc2hvdWxkRW5kKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBhdXRvIGJpbmQgZXZlbnRzIHdoZW4gcmVnaXN0ZXIgYmVoYXZpb3JcbiAgICogQHBhcmFtIGdyYXBoIEdyYXBoIGluc3RhbmNlXG4gICAqL1xuICBiaW5kOiBmdW5jdGlvbiBiaW5kKGdyYXBoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBldmVudHMgPSB0aGlzLmV2ZW50cztcbiAgICB0aGlzLmdyYXBoID0gZ3JhcGg7XG5cbiAgICBpZiAodGhpcy50eXBlID09PSAnZHJhZy1jYW52YXMnIHx8IHRoaXMudHlwZSA9PT0gJ2JydXNoLXNlbGVjdCcgfHwgdGhpcy50eXBlID09PSAnbGFzc28tc2VsZWN0Jykge1xuICAgICAgZ3JhcGguZ2V0KCdjYW52YXMnKS5zZXQoJ2RyYWdnYWJsZScsIHRydWUpO1xuICAgIH1cblxuICAgIGVhY2goZXZlbnRzLCBmdW5jdGlvbiAoaGFuZGxlciwgZXZlbnQpIHtcbiAgICAgIGdyYXBoLm9uKGV2ZW50LCBoYW5kbGVyKTtcbiAgICB9KTsgLy8gVG8gYXZvaWQgdGhlIHRhYnMgc3dpdGNoaW5nIG1ha2VzIHRoZSBrZXlkb3duIHJlbGF0ZWQgYmVoYXZpb3JzIGRpc2FibGVcblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpcy5rZXlkb3duID0gZmFsc2U7XG4gICAgfSk7XG4gIH0sXG4gIHVuYmluZDogZnVuY3Rpb24gdW5iaW5kKGdyYXBoKSB7XG4gICAgdmFyIGV2ZW50cyA9IHRoaXMuZXZlbnRzO1xuICAgIHZhciBkcmFnZ2FibGUgPSBncmFwaC5nZXQoJ2NhbnZhcycpLmdldCgnZHJhZ2dhYmxlJyk7XG5cbiAgICBpZiAodGhpcy50eXBlID09PSAnZHJhZy1jYW52YXMnIHx8IHRoaXMudHlwZSA9PT0gJ2JydXNoLXNlbGVjdCcgfHwgdGhpcy50eXBlID09PSAnbGFzc28tc2VsZWN0Jykge1xuICAgICAgZ3JhcGguZ2V0KCdjYW52YXMnKS5zZXQoJ2RyYWdnYWJsZScsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBlYWNoKGV2ZW50cywgZnVuY3Rpb24gKGhhbmRsZXIsIGV2ZW50KSB7XG4gICAgICBncmFwaC5vZmYoZXZlbnQsIGhhbmRsZXIpO1xuICAgIH0pO1xuICAgIGdyYXBoLmdldCgnY2FudmFzJykuc2V0KCdkcmFnZ2FibGUnLCBkcmFnZ2FibGUpO1xuICB9LFxuICBnZXQ6IGZ1bmN0aW9uIGdldCh2YWwpIHtcbiAgICByZXR1cm4gdGhpc1t2YWxdO1xuICB9LFxuICBzZXQ6IGZ1bmN0aW9uIHNldChrZXksIHZhbCkge1xuICAgIHRoaXNba2V5XSA9IHZhbDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/behavior/behaviorOption.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/behavior/index.js":
/*!******************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/behavior/index.js ***!
\******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _behavior__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./behavior */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/behavior/behavior.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_behavior__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9iZWhhdmlvci9pbmRleC5qcz9mYjlmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBa0M7QUFDbkIsZ0hBQVEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9iZWhhdmlvci9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCZWhhdmlvciBmcm9tICcuL2JlaGF2aW9yJztcbmV4cG9ydCBkZWZhdWx0IEJlaGF2aW9yOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/behavior/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/arrow.js":
/*!*****************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/arrow.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 triangle: function triangle(width, length, d) {\n if (width === void 0) {\n width = 10;\n }\n\n if (length === void 0) {\n length = 15;\n }\n\n if (d === void 0) {\n d = 0;\n }\n\n var begin = d * 2;\n var path = \"M \" + begin + \",0 L \" + (begin + length) + \",-\" + width / 2 + \" L \" + (begin + length) + \",\" + width / 2 + \" Z\";\n return path;\n },\n vee: function vee(width, length, d) {\n if (width === void 0) {\n width = 15;\n }\n\n if (length === void 0) {\n length = 20;\n }\n\n if (d === void 0) {\n d = 0;\n }\n\n var begin = d * 2;\n var path = \"M \" + begin + \",0 L \" + (begin + length) + \",-\" + width / 2 + \"\\n L \" + (begin + 2 * length / 3) + \",0 L \" + (begin + length) + \",\" + width / 2 + \" Z\";\n return path;\n },\n circle: function circle(r, d) {\n if (r === void 0) {\n r = 5;\n }\n\n if (d === void 0) {\n d = 0;\n }\n\n var begin = d * 2;\n var path = \"M \" + begin + \", 0\\n a \" + r + \",\" + r + \" 0 1,0 \" + r * 2 + \",0\\n a \" + r + \",\" + r + \" 0 1,0 \" + -r * 2 + \",0\";\n return path;\n },\n rect: function rect(width, length, d) {\n if (width === void 0) {\n width = 10;\n }\n\n if (length === void 0) {\n length = 10;\n }\n\n if (d === void 0) {\n d = 0;\n }\n\n var begin = d * 2;\n var path = \"M \" + begin + \",\" + -width / 2 + \" \\n L \" + (begin + length) + \",\" + -width / 2 + \" \\n L \" + (begin + length) + \",\" + width / 2 + \" \\n L \" + begin + \",\" + width / 2 + \" Z\";\n return path;\n },\n diamond: function diamond(width, length, d) {\n if (width === void 0) {\n width = 15;\n }\n\n if (length === void 0) {\n length = 15;\n }\n\n if (d === void 0) {\n d = 0;\n }\n\n var begin = d * 2;\n var path = \"M \" + begin + \",0 \\n L \" + (begin + length / 2) + \",\" + -width / 2 + \" \\n L \" + (begin + length) + \",0 \\n L \" + (begin + length / 2) + \",\" + width / 2 + \" Z\";\n return path;\n },\n triangleRect: function triangleRect(tWidth, tLength, rWidth, rLength, gap, d) {\n if (tWidth === void 0) {\n tWidth = 15;\n }\n\n if (tLength === void 0) {\n tLength = 15;\n }\n\n if (rWidth === void 0) {\n rWidth = 15;\n }\n\n if (rLength === void 0) {\n rLength = 3;\n }\n\n if (gap === void 0) {\n gap = 5;\n }\n\n if (d === void 0) {\n d = 0;\n }\n\n var begin = d * 2;\n var rectBegin = begin + tLength + gap;\n var path = \"M \" + begin + \",0 L \" + (begin + tLength) + \",-\" + tWidth / 2 + \" L \" + (begin + tLength) + \",\" + tWidth / 2 + \" Z\\n M \" + rectBegin + \", -\" + rWidth / 2 + \"\\n L \" + (rectBegin + rLength) + \" -\" + rWidth / 2 + \"\\n L \" + (rectBegin + rLength) + \" \" + rWidth / 2 + \"\\n L \" + rectBegin + \" \" + rWidth / 2 + \"\\n Z\";\n return path;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2Fycm93LmpzP2MyN2UiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtY29yZUAwLjUuMEBAYW50di9nNi1jb3JlL2VzL2VsZW1lbnQvYXJyb3cuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB7XG4gIHRyaWFuZ2xlOiBmdW5jdGlvbiB0cmlhbmdsZSh3aWR0aCwgbGVuZ3RoLCBkKSB7XG4gICAgaWYgKHdpZHRoID09PSB2b2lkIDApIHtcbiAgICAgIHdpZHRoID0gMTA7XG4gICAgfVxuXG4gICAgaWYgKGxlbmd0aCA9PT0gdm9pZCAwKSB7XG4gICAgICBsZW5ndGggPSAxNTtcbiAgICB9XG5cbiAgICBpZiAoZCA9PT0gdm9pZCAwKSB7XG4gICAgICBkID0gMDtcbiAgICB9XG5cbiAgICB2YXIgYmVnaW4gPSBkICogMjtcbiAgICB2YXIgcGF0aCA9IFwiTSBcIiArIGJlZ2luICsgXCIsMCBMIFwiICsgKGJlZ2luICsgbGVuZ3RoKSArIFwiLC1cIiArIHdpZHRoIC8gMiArIFwiIEwgXCIgKyAoYmVnaW4gKyBsZW5ndGgpICsgXCIsXCIgKyB3aWR0aCAvIDIgKyBcIiBaXCI7XG4gICAgcmV0dXJuIHBhdGg7XG4gIH0sXG4gIHZlZTogZnVuY3Rpb24gdmVlKHdpZHRoLCBsZW5ndGgsIGQpIHtcbiAgICBpZiAod2lkdGggPT09IHZvaWQgMCkge1xuICAgICAgd2lkdGggPSAxNTtcbiAgICB9XG5cbiAgICBpZiAobGVuZ3RoID09PSB2b2lkIDApIHtcbiAgICAgIGxlbmd0aCA9IDIwO1xuICAgIH1cblxuICAgIGlmIChkID09PSB2b2lkIDApIHtcbiAgICAgIGQgPSAwO1xuICAgIH1cblxuICAgIHZhciBiZWdpbiA9IGQgKiAyO1xuICAgIHZhciBwYXRoID0gXCJNIFwiICsgYmVnaW4gKyBcIiwwIEwgXCIgKyAoYmVnaW4gKyBsZW5ndGgpICsgXCIsLVwiICsgd2lkdGggLyAyICsgXCJcXG4gICAgICAgIEwgXCIgKyAoYmVnaW4gKyAyICogbGVuZ3RoIC8gMykgKyBcIiwwIEwgXCIgKyAoYmVnaW4gKyBsZW5ndGgpICsgXCIsXCIgKyB3aWR0aCAvIDIgKyBcIiBaXCI7XG4gICAgcmV0dXJuIHBhdGg7XG4gIH0sXG4gIGNpcmNsZTogZnVuY3Rpb24gY2lyY2xlKHIsIGQpIHtcbiAgICBpZiAociA9PT0gdm9pZCAwKSB7XG4gICAgICByID0gNTtcbiAgICB9XG5cbiAgICBpZiAoZCA9PT0gdm9pZCAwKSB7XG4gICAgICBkID0gMDtcbiAgICB9XG5cbiAgICB2YXIgYmVnaW4gPSBkICogMjtcbiAgICB2YXIgcGF0aCA9IFwiTSBcIiArIGJlZ2luICsgXCIsIDBcXG4gICAgICAgICAgICBhIFwiICsgciArIFwiLFwiICsgciArIFwiIDAgMSwwIFwiICsgciAqIDIgKyBcIiwwXFxuICAgICAgICAgICAgYSBcIiArIHIgKyBcIixcIiArIHIgKyBcIiAwIDEsMCBcIiArIC1yICogMiArIFwiLDBcIjtcbiAgICByZXR1cm4gcGF0aDtcbiAgfSxcbiAgcmVjdDogZnVuY3Rpb24gcmVjdCh3aWR0aCwgbGVuZ3RoLCBkKSB7XG4gICAgaWYgKHdpZHRoID09PSB2b2lkIDApIHtcbiAgICAgIHdpZHRoID0gMTA7XG4gICAgfVxuXG4gICAgaWYgKGxlbmd0aCA9PT0gdm9pZCAwKSB7XG4gICAgICBsZW5ndGggPSAxMDtcbiAgICB9XG5cbiAgICBpZiAoZCA9PT0gdm9pZCAwKSB7XG4gICAgICBkID0gMDtcbiAgICB9XG5cbiAgICB2YXIgYmVnaW4gPSBkICogMjtcbiAgICB2YXIgcGF0aCA9IFwiTSBcIiArIGJlZ2luICsgXCIsXCIgKyAtd2lkdGggLyAyICsgXCIgXFxuICAgICAgICBMIFwiICsgKGJlZ2luICsgbGVuZ3RoKSArIFwiLFwiICsgLXdpZHRoIC8gMiArIFwiIFxcbiAgICAgICAgTCBcIiArIChiZWdpbiArIGxlbmd0aCkgKyBcIixcIiArIHdpZHRoIC8gMiArIFwiIFxcbiAgICAgICAgTCBcIiArIGJlZ2luICsgXCIsXCIgKyB3aWR0aCAvIDIgKyBcIiBaXCI7XG4gICAgcmV0dXJuIHBhdGg7XG4gIH0sXG4gIGRpYW1vbmQ6IGZ1bmN0aW9uIGRpYW1vbmQod2lkdGgsIGxlbmd0aCwgZCkge1xuICAgIGlmICh3aWR0aCA9PT0gdm9pZCAwKSB7XG4gICAgICB3aWR0aCA9IDE1O1xuICAgIH1cblxuICAgIGlmIChsZW5ndGggPT09IHZvaWQgMCkge1xuICAgICAgbGVuZ3RoID0gMTU7XG4gICAgfVxuXG4gICAgaWYgKGQgPT09IHZvaWQgMCkge1xuICAgICAgZCA9IDA7XG4gICAgfVxuXG4gICAgdmFyIGJlZ2luID0gZCAqIDI7XG4gICAgdmFyIHBhdGggPSBcIk0gXCIgKyBiZWdpbiArIFwiLDAgXFxuICAgICAgICBMIFwiICsgKGJlZ2luICsgbGVuZ3RoIC8gMikgKyBcIixcIiArIC13aWR0aCAvIDIgKyBcIiBcXG4gICAgICAgIEwgXCIgKyAoYmVnaW4gKyBsZW5ndGgpICsgXCIsMCBcXG4gICAgICAgIEwgXCIgKyAoYmVnaW4gKyBsZW5ndGggLyAyKSArIFwiLFwiICsgd2lkdGggLyAyICsgXCIgWlwiO1xuICAgIHJldHVybiBwYXRoO1xuICB9LFxuICB0cmlhbmdsZVJlY3Q6IGZ1bmN0aW9uIHRyaWFuZ2xlUmVjdCh0V2lkdGgsIHRMZW5ndGgsIHJXaWR0aCwgckxlbmd0aCwgZ2FwLCBkKSB7XG4gICAgaWYgKHRXaWR0aCA9PT0gdm9pZCAwKSB7XG4gICAgICB0V2lkdGggPSAxNTtcbiAgICB9XG5cbiAgICBpZiAodExlbmd0aCA9PT0gdm9pZCAwKSB7XG4gICAgICB0TGVuZ3RoID0gMTU7XG4gICAgfVxuXG4gICAgaWYgKHJXaWR0aCA9PT0gdm9pZCAwKSB7XG4gICAgICByV2lkdGggPSAxNTtcbiAgICB9XG5cbiAgICBpZiAockxlbmd0aCA9PT0gdm9pZCAwKSB7XG4gICAgICByTGVuZ3RoID0gMztcbiAgICB9XG5cbiAgICBpZiAoZ2FwID09PSB2b2lkIDApIHtcbiAgICAgIGdhcCA9IDU7XG4gICAgfVxuXG4gICAgaWYgKGQgPT09IHZvaWQgMCkge1xuICAgICAgZCA9IDA7XG4gICAgfVxuXG4gICAgdmFyIGJlZ2luID0gZCAqIDI7XG4gICAgdmFyIHJlY3RCZWdpbiA9IGJlZ2luICsgdExlbmd0aCArIGdhcDtcbiAgICB2YXIgcGF0aCA9IFwiTSBcIiArIGJlZ2luICsgXCIsMCBMIFwiICsgKGJlZ2luICsgdExlbmd0aCkgKyBcIiwtXCIgKyB0V2lkdGggLyAyICsgXCIgTCBcIiArIChiZWdpbiArIHRMZW5ndGgpICsgXCIsXCIgKyB0V2lkdGggLyAyICsgXCIgWlxcbiAgICAgICAgICAgIE0gXCIgKyByZWN0QmVnaW4gKyBcIiwgLVwiICsgcldpZHRoIC8gMiArIFwiXFxuICAgICAgICAgICAgTCBcIiArIChyZWN0QmVnaW4gKyByTGVuZ3RoKSArIFwiIC1cIiArIHJXaWR0aCAvIDIgKyBcIlxcbiAgICAgICAgICAgIEwgXCIgKyAocmVjdEJlZ2luICsgckxlbmd0aCkgKyBcIiBcIiArIHJXaWR0aCAvIDIgKyBcIlxcbiAgICAgICAgICAgIEwgXCIgKyByZWN0QmVnaW4gKyBcIiBcIiArIHJXaWR0aCAvIDIgKyBcIlxcbiAgICAgICAgICAgIFpcIjtcbiAgICByZXR1cm4gcGF0aDtcbiAgfVxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/arrow.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/combo.js":
/*!*****************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/combo.js ***!
\*****************************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../global */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/global.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shape */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shape.js\");\n/* harmony import */ var _shapeBase__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./shapeBase */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shapeBase.js\");\n\n\n\n\n\nvar singleCombo = {\n itemType: 'combo',\n // 单个图形的类型\n shapeType: 'single-combo',\n\n /**\n * Combo 标题文本相对图形的位置,默认为 top\n * 位置包括: top, bottom, left, right, center\n * @type {String}\n */\n labelPosition: 'top',\n\n /**\n * 标题文本相对偏移,当 labelPosition 不为 center 时有效\n * @type {Number}\n */\n refX: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].comboLabel.refX,\n refY: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].comboLabel.refY,\n options: {\n style: {\n stroke: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.style.stroke,\n fill: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.style.fill,\n lineWidth: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.style.lineWidth\n },\n labelCfg: {\n style: {\n fill: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].comboLabel.style.fill,\n fontSize: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].comboLabel.style.fontSize,\n fontFamily: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].windowFontFamily\n }\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].comboStateStyles)\n },\n\n /**\n * 获取 Combo 宽高\n * @internal 返回 Combo 的大小,以 [width, height] 的方式维护\n * @param {Object} cfg Combo 的配置项\n * @return {Array} 宽高\n */\n getSize: function getSize(cfg) {\n var size = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(cfg.size || this.options.size || _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.size); // size 是数组,若长度为 1,则补长度为 2\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(size) && size.length === 1) {\n size = [size[0], size[0]];\n } // size 为数字,则转换为数组\n\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(size)) {\n size = [size, size];\n }\n\n return size;\n },\n // 私有方法,不希望扩展的 Combo 复写这个方法\n getLabelStyleByPosition: function getLabelStyleByPosition(cfg, labelCfg) {\n var labelPosition = labelCfg.position || this.labelPosition;\n var cfgStyle = cfg.style;\n var padding = cfg.padding || this.options.padding;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(padding)) padding = padding[0];\n var refX = labelCfg.refX,\n refY = labelCfg.refY; // 考虑 refX 和 refY = 0 的场景,不用用 labelCfg.refX || Global.nodeLabel.refX\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(refX)) {\n refX = this.refX; // 不居中时的偏移量\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(refY)) {\n refY = this.refY; // 不居中时的偏移量\n }\n\n var size = this.getSize(cfg);\n var r = Math.max(cfgStyle.r, size[0] / 2) || size[0] / 2;\n var dis = r + padding;\n var style;\n\n switch (labelPosition) {\n case 'top':\n style = {\n x: 0,\n y: -dis - refY,\n textBaseline: 'bottom',\n textAlign: 'center'\n };\n break;\n\n case 'bottom':\n style = {\n x: 0,\n y: dis + refY,\n textBaseline: 'bottom',\n textAlign: 'center'\n };\n break;\n\n case 'left':\n style = {\n x: -dis + refX,\n y: 0,\n textAlign: 'left'\n };\n break;\n\n case 'center':\n style = {\n x: 0,\n y: 0,\n text: cfg.label,\n textAlign: 'center'\n };\n break;\n\n default:\n style = {\n x: dis + refX,\n y: 0,\n textAlign: 'right'\n };\n break;\n }\n\n style.text = cfg.label;\n return style;\n },\n drawShape: function drawShape(cfg, group) {\n var shapeType = this.shapeType; // || this.type,都已经加了 shapeType\n\n var style = this.getShapeStyle(cfg);\n var shape = group.addShape(shapeType, {\n attrs: style,\n draggable: true,\n name: 'combo-shape'\n });\n return shape;\n },\n updateShape: function updateShape(cfg, item, keyShapeStyle) {\n var keyShape = item.get('keyShape');\n var animate = cfg.animate === undefined ? this.options.animate : cfg.animate;\n\n if (animate && keyShape.animate) {\n keyShape.animate(keyShapeStyle, {\n duration: 200,\n easing: 'easeLinear'\n });\n } else {\n keyShape.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, keyShapeStyle));\n }\n\n this.updateLabel(cfg, item); // special for some types of nodes\n }\n};\n\nvar singleComboDef = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _shapeBase__WEBPACK_IMPORTED_MODULE_4__[\"shapeBase\"]), singleCombo);\n\n_shape__WEBPACK_IMPORTED_MODULE_3__[\"default\"].registerCombo('single-combo', singleComboDef);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2NvbWJvLmpzPzI4YjMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ2tCO0FBQ3BCO0FBQ0g7QUFDWTtBQUN4QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0EsUUFBUSwrQ0FBTTtBQUNkLFFBQVEsK0NBQU07QUFDZDtBQUNBO0FBQ0EsY0FBYywrQ0FBTTtBQUNwQixZQUFZLCtDQUFNO0FBQ2xCLGlCQUFpQiwrQ0FBTTtBQUN2QixLQUFLO0FBQ0w7QUFDQTtBQUNBLGNBQWMsK0NBQU07QUFDcEIsa0JBQWtCLCtDQUFNO0FBQ3hCLG9CQUFvQiwrQ0FBTTtBQUMxQjtBQUNBLEtBQUs7QUFDTCxpQkFBaUIsc0RBQVEsR0FBRyxFQUFFLCtDQUFNO0FBQ3BDLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsTUFBTTtBQUNwQjtBQUNBO0FBQ0EsZUFBZSx3REFBSyxrQ0FBa0MsK0NBQU0sb0JBQW9COztBQUVoRixRQUFRLDBEQUFPO0FBQ2Y7QUFDQSxLQUFLOzs7QUFHTCxTQUFTLDBEQUFPO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsMERBQU87QUFDZjtBQUNBLDZCQUE2Qjs7QUFFN0IsUUFBUSx3REFBSztBQUNiLHVCQUF1QjtBQUN2Qjs7QUFFQSxRQUFRLHdEQUFLO0FBQ2IsdUJBQXVCO0FBQ3ZCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsbUNBQW1DOztBQUVuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsb0JBQW9CLHNEQUFRLEdBQUc7QUFDL0I7O0FBRUEsZ0NBQWdDO0FBQ2hDO0FBQ0E7O0FBRUEscUJBQXFCLHNEQUFRLENBQUMsc0RBQVEsR0FBRyxFQUFFLG9EQUFTOztBQUVwRCw4Q0FBSyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtY29yZUAwLjUuMEBAYW50di9nNi1jb3JlL2VzL2VsZW1lbnQvY29tYm8uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgaXNBcnJheSwgaXNOaWwsIGNsb25lIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgR2xvYmFsIGZyb20gJy4uL2dsb2JhbCc7XG5pbXBvcnQgU2hhcGUgZnJvbSAnLi9zaGFwZSc7XG5pbXBvcnQgeyBzaGFwZUJhc2UgfSBmcm9tICcuL3NoYXBlQmFzZSc7XG52YXIgc2luZ2xlQ29tYm8gPSB7XG4gIGl0ZW1UeXBlOiAnY29tYm8nLFxuICAvLyDljZXkuKrlm77lvaLnmoTnsbvlnotcbiAgc2hhcGVUeXBlOiAnc2luZ2xlLWNvbWJvJyxcblxuICAvKipcbiAgICogQ29tYm8g5qCH6aKY5paH5pys55u45a+55Zu+5b2i55qE5L2N572u77yM6buY6K6k5Li6IHRvcFxuICAgKiDkvY3nva7ljIXmi6zvvJogdG9wLCBib3R0b20sIGxlZnQsIHJpZ2h0LCBjZW50ZXJcbiAgICogQHR5cGUge1N0cmluZ31cbiAgICovXG4gIGxhYmVsUG9zaXRpb246ICd0b3AnLFxuXG4gIC8qKlxuICAgKiDmoIfpopjmlofmnKznm7jlr7nlgY/np7vvvIzlvZMgbGFiZWxQb3NpdGlvbiDkuI3kuLogY2VudGVyIOaXtuacieaViFxuICAgKiBAdHlwZSB7TnVtYmVyfVxuICAgKi9cbiAgcmVmWDogR2xvYmFsLmNvbWJvTGFiZWwucmVmWCxcbiAgcmVmWTogR2xvYmFsLmNvbWJvTGFiZWwucmVmWSxcbiAgb3B0aW9uczoge1xuICAgIHN0eWxlOiB7XG4gICAgICBzdHJva2U6IEdsb2JhbC5kZWZhdWx0Q29tYm8uc3R5bGUuc3Ryb2tlLFxuICAgICAgZmlsbDogR2xvYmFsLmRlZmF1bHRDb21iby5zdHlsZS5maWxsLFxuICAgICAgbGluZVdpZHRoOiBHbG9iYWwuZGVmYXVsdENvbWJvLnN0eWxlLmxpbmVXaWR0aFxuICAgIH0sXG4gICAgbGFiZWxDZmc6IHtcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIGZpbGw6IEdsb2JhbC5jb21ib0xhYmVsLnN0eWxlLmZpbGwsXG4gICAgICAgIGZvbnRTaXplOiBHbG9iYWwuY29tYm9MYWJlbC5zdHlsZS5mb250U2l6ZSxcbiAgICAgICAgZm9udEZhbWlseTogR2xvYmFsLndpbmRvd0ZvbnRGYW1pbHlcbiAgICAgIH1cbiAgICB9LFxuICAgIHN0YXRlU3R5bGVzOiBfX2Fzc2lnbih7fSwgR2xvYmFsLmNvbWJvU3RhdGVTdHlsZXMpXG4gIH0sXG5cbiAgLyoqXG4gICAqIOiOt+WPliBDb21ibyDlrr3pq5hcbiAgICogQGludGVybmFsIOi/lOWbniBDb21ibyDnmoTlpKflsI/vvIzku6UgW3dpZHRoLCBoZWlnaHRdIOeahOaWueW8j+e7tOaKpFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGNmZyBDb21ibyDnmoTphY3nva7poblcbiAgICogQHJldHVybiB7QXJyYXl9IOWuvemrmFxuICAgKi9cbiAgZ2V0U2l6ZTogZnVuY3Rpb24gZ2V0U2l6ZShjZmcpIHtcbiAgICB2YXIgc2l6ZSA9IGNsb25lKGNmZy5zaXplIHx8IHRoaXMub3B0aW9ucy5zaXplIHx8IEdsb2JhbC5kZWZhdWx0Q29tYm8uc2l6ZSk7IC8vIHNpemUg5piv5pWw57uE77yM6Iul6ZW/5bqm5Li6IDHvvIzliJnooaXplb/luqbkuLogMlxuXG4gICAgaWYgKGlzQXJyYXkoc2l6ZSkgJiYgc2l6ZS5sZW5ndGggPT09IDEpIHtcbiAgICAgIHNpemUgPSBbc2l6ZVswXSwgc2l6ZVswXV07XG4gICAgfSAvLyBzaXplIOS4uuaVsOWtl++8jOWImei9rOaNouS4uuaVsOe7hFxuXG5cbiAgICBpZiAoIWlzQXJyYXkoc2l6ZSkpIHtcbiAgICAgIHNpemUgPSBbc2l6ZSwgc2l6ZV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHNpemU7XG4gIH0sXG4gIC8vIOengeacieaWueazle+8jOS4jeW4jOacm+aJqeWxleeahCBDb21ibyDlpI3lhpnov5nkuKrmlrnms5VcbiAgZ2V0TGFiZWxTdHlsZUJ5UG9zaXRpb246IGZ1bmN0aW9uIGdldExhYmVsU3R5bGVCeVBvc2l0aW9uKGNmZywgbGFiZWxDZmcpIHtcbiAgICB2YXIgbGFiZWxQb3NpdGlvbiA9IGxhYmVsQ2ZnLnBvc2l0aW9uIHx8IHRoaXMubGFiZWxQb3NpdGlvbjtcbiAgICB2YXIgY2ZnU3R5bGUgPSBjZmcuc3R5bGU7XG4gICAgdmFyIHBhZGRpbmcgPSBjZmcucGFkZGluZyB8fCB0aGlzLm9wdGlvbnMucGFkZGluZztcbiAgICBpZiAoaXNBcnJheShwYWRkaW5nKSkgcGFkZGluZyA9IHBhZGRpbmdbMF07XG4gICAgdmFyIHJlZlggPSBsYWJlbENmZy5yZWZYLFxuICAgICAgICByZWZZID0gbGFiZWxDZmcucmVmWTsgLy8g6ICD6JmRIHJlZlgg5ZKMIHJlZlkgPSAwIOeahOWcuuaZr++8jOS4jeeUqOeUqCBsYWJlbENmZy5yZWZYIHx8IEdsb2JhbC5ub2RlTGFiZWwucmVmWFxuXG4gICAgaWYgKGlzTmlsKHJlZlgpKSB7XG4gICAgICByZWZYID0gdGhpcy5yZWZYOyAvLyDkuI3lsYXkuK3ml7bnmoTlgY/np7vph49cbiAgICB9XG5cbiAgICBpZiAoaXNOaWwocmVmWSkpIHtcbiAgICAgIHJlZlkgPSB0aGlzLnJlZlk7IC8vIOS4jeWxheS4reaXtueahOWBj+enu+mHj1xuICAgIH1cblxuICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgdmFyIHIgPSBNYXRoLm1heChjZmdTdHlsZS5yLCBzaXplWzBdIC8gMikgfHwgc2l6ZVswXSAvIDI7XG4gICAgdmFyIGRpcyA9IHIgKyBwYWRkaW5nO1xuICAgIHZhciBzdHlsZTtcblxuICAgIHN3aXRjaCAobGFiZWxQb3NpdGlvbikge1xuICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgc3R5bGUgPSB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAtZGlzIC0gcmVmWSxcbiAgICAgICAgICB0ZXh0QmFzZWxpbmU6ICdib3R0b20nLFxuICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgIHN0eWxlID0ge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogZGlzICsgcmVmWSxcbiAgICAgICAgICB0ZXh0QmFzZWxpbmU6ICdib3R0b20nLFxuICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICBzdHlsZSA9IHtcbiAgICAgICAgICB4OiAtZGlzICsgcmVmWCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHRleHRBbGlnbjogJ2xlZnQnXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdjZW50ZXInOlxuICAgICAgICBzdHlsZSA9IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgdGV4dDogY2ZnLmxhYmVsLFxuICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHN0eWxlID0ge1xuICAgICAgICAgIHg6IGRpcyArIHJlZlgsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICB0ZXh0QWxpZ246ICdyaWdodCdcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgc3R5bGUudGV4dCA9IGNmZy5sYWJlbDtcbiAgICByZXR1cm4gc3R5bGU7XG4gIH0sXG4gIGRyYXdTaGFwZTogZnVuY3Rpb24gZHJhd1NoYXBlKGNmZywgZ3JvdXApIHtcbiAgICB2YXIgc2hhcGVUeXBlID0gdGhpcy5zaGFwZVR5cGU7IC8vIHx8IHRoaXMudHlwZe+8jOmDveW3sue7j+WKoOS6hiBzaGFwZVR5cGVcblxuICAgIHZhciBzdHlsZSA9IHRoaXMuZ2V0U2hhcGVTdHlsZShjZmcpO1xuICAgIHZhciBzaGFwZSA9IGdyb3VwLmFkZFNoYXBlKHNoYXBlVHlwZSwge1xuICAgICAgYXR0cnM6IHN0eWxlLFxuICAgICAgZHJhZ2dhYmxlOiB0cnVlLFxuICAgICAgbmFtZTogJ2NvbWJvLXNoYXBlJ1xuICAgIH0pO1xuICAgIHJldHVybiBzaGFwZTtcbiAgfSxcbiAgdXBkYXRlU2hhcGU6IGZ1bmN0aW9uIHVwZGF0ZVNoYXBlKGNmZywgaXRlbSwga2V5U2hhcGVTdHlsZSkge1xuICAgIHZhciBrZXlTaGFwZSA9IGl0ZW0uZ2V0KCdrZXlTaGFwZScpO1xuICAgIHZhciBhbmltYXRlID0gY2ZnLmFuaW1hdGUgPT09IHVuZGVmaW5lZCA/IHRoaXMub3B0aW9ucy5hbmltYXRlIDogY2ZnLmFuaW1hdGU7XG5cbiAgICBpZiAoYW5pbWF0ZSAmJiBrZXlTaGFwZS5hbmltYXRlKSB7XG4gICAgICBrZXlTaGFwZS5hbmltYXRlKGtleVNoYXBlU3R5bGUsIHtcbiAgICAgICAgZHVyYXRpb246IDIwMCxcbiAgICAgICAgZWFzaW5nOiAnZWFzZUxpbmVhcidcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBrZXlTaGFwZS5hdHRyKF9fYXNzaWduKHt9LCBrZXlTaGFwZVN0eWxlKSk7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVMYWJlbChjZmcsIGl0ZW0pOyAvLyBzcGVjaWFsIGZvciBzb21lIHR5cGVzIG9mIG5vZGVzXG4gIH1cbn07XG5cbnZhciBzaW5nbGVDb21ib0RlZiA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzaGFwZUJhc2UpLCBzaW5nbGVDb21ibyk7XG5cblNoYXBlLnJlZ2lzdGVyQ29tYm8oJ3NpbmdsZS1jb21ibycsIHNpbmdsZUNvbWJvRGVmKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/combo.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/combos/circle.js":
/*!*************************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/combos/circle.js ***!
\*************************************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../global */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/global.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shape */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shape.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\n\n\n // 圆形 Combo\n\n_shape__WEBPACK_IMPORTED_MODULE_2__[\"default\"].registerCombo('circle', {\n // 自定义节点时的配置\n options: {\n size: [_global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].defaultCombo.size[0], _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].defaultCombo.size[0]],\n padding: _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].defaultCombo.padding[0],\n animate: true,\n style: {\n stroke: _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].defaultCombo.style.stroke,\n fill: _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].defaultCombo.style.fill,\n lineWidth: _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].defaultCombo.style.lineWidth\n },\n labelCfg: {\n style: {\n fill: _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].comboLabel.style.fill,\n fontSize: _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].comboLabel.style.fontSize\n },\n refX: 0,\n refY: 0\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].comboStateStyles)\n },\n shapeType: 'circle',\n // 文本位置\n labelPosition: 'top',\n drawShape: function drawShape(cfg, group) {\n var style = this.getShapeStyle(cfg);\n delete style.height;\n delete style.width;\n var keyShape = group.addShape('circle', {\n attrs: style,\n className: 'circle-combo',\n name: 'circle-combo',\n draggable: true\n });\n return keyShape;\n },\n\n /**\n * 获取 Combo 的样式,供基于该 Combo 自定义时使用\n * @param {Object} cfg Combo 数据模型\n * @return {Object} Combo 的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = this.options.style;\n var padding = cfg.padding || this.options.padding;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isArray\"])(padding)) padding = padding[0];\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])({}, defaultStyle, strokeStyle, cfg.style);\n var r;\n\n if (cfg.fixSize) {\n r = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isNumber\"])(cfg.fixSize) ? cfg.fixSize : cfg.fixSize[0];\n } else {\n var size = this.getSize(cfg);\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isNumber\"])(style.r) || isNaN(style.r)) r = size[0] / 2 || _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].defaultCombo.style.r;else r = Math.max(style.r, size[0] / 2) || size[0] / 2;\n }\n\n style.r = r + padding;\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0\n }, style);\n\n if (cfg.style) cfg.style.r = r;else {\n cfg.style = {\n r: r\n };\n }\n return styles;\n },\n update: function update(cfg, item) {\n var size = this.getSize(cfg);\n var padding = cfg.padding || this.options.padding;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isArray\"])(padding)) padding = padding[0];\n var cfgStyle = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(cfg.style);\n var r;\n\n if (cfg.fixSize) {\n r = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isNumber\"])(cfg.fixSize) ? cfg.fixSize : cfg.fixSize[0];\n } else {\n r = Math.max(cfgStyle.r, size[0] / 2) || size[0] / 2;\n }\n\n cfgStyle.r = r + padding;\n var itemCacheSize = item.get('sizeCache');\n\n if (itemCacheSize) {\n itemCacheSize.r = cfgStyle.r;\n } // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n\n\n var strokeStyle = {\n stroke: cfg.color\n }; // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n\n var keyShape = item.get('keyShape');\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])({}, keyShape.attr(), strokeStyle, cfgStyle);\n if (cfg.style) cfg.style.r = r;else {\n cfg.style = {\n r: r\n };\n }\n this.updateShape(cfg, item, style, true);\n }\n}, 'single-combo');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2NvbWJvcy9jaXJjbGUuanM/M2EyYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ0M7QUFDTDtBQUM4Qjs7QUFFM0QsOENBQUs7QUFDTDtBQUNBO0FBQ0EsV0FBVywrQ0FBTSx1QkFBdUIsK0NBQU07QUFDOUMsYUFBYSwrQ0FBTTtBQUNuQjtBQUNBO0FBQ0EsY0FBYywrQ0FBTTtBQUNwQixZQUFZLCtDQUFNO0FBQ2xCLGlCQUFpQiwrQ0FBTTtBQUN2QixLQUFLO0FBQ0w7QUFDQTtBQUNBLGNBQWMsK0NBQU07QUFDcEIsa0JBQWtCLCtDQUFNO0FBQ3hCLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMLGlCQUFpQixzREFBUSxHQUFHLEVBQUUsK0NBQU07QUFDcEMsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDBEQUFPO0FBQ2Y7QUFDQTtBQUNBLE1BQU07O0FBRU4sZ0JBQWdCLHNEQUFHLEdBQUc7QUFDdEI7O0FBRUE7QUFDQSxVQUFVLDJEQUFRO0FBQ2xCLEtBQUs7QUFDTDtBQUNBLFdBQVcsMkRBQVEsZ0RBQWdELCtDQUFNLHNCQUFzQjtBQUMvRjs7QUFFQTs7QUFFQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBLEtBQUs7O0FBRUwsbUNBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsUUFBUSwwREFBTztBQUNmLG1CQUFtQix3REFBSztBQUN4Qjs7QUFFQTtBQUNBLFVBQVUsMkRBQVE7QUFDbEIsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQSxnQkFBZ0Isc0RBQUcsR0FBRztBQUN0QixtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtY29yZUAwLjUuMEBAYW50di9nNi1jb3JlL2VzL2VsZW1lbnQvY29tYm9zL2NpcmNsZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgR2xvYmFsIGZyb20gJy4uLy4uL2dsb2JhbCc7XG5pbXBvcnQgU2hhcGUgZnJvbSAnLi4vc2hhcGUnO1xuaW1wb3J0IHsgaXNOdW1iZXIsIGNsb25lLCBtaXgsIGlzQXJyYXkgfSBmcm9tICdAYW50di91dGlsJzsgLy8g5ZyG5b2iIENvbWJvXG5cblNoYXBlLnJlZ2lzdGVyQ29tYm8oJ2NpcmNsZScsIHtcbiAgLy8g6Ieq5a6a5LmJ6IqC54K55pe255qE6YWN572uXG4gIG9wdGlvbnM6IHtcbiAgICBzaXplOiBbR2xvYmFsLmRlZmF1bHRDb21iby5zaXplWzBdLCBHbG9iYWwuZGVmYXVsdENvbWJvLnNpemVbMF1dLFxuICAgIHBhZGRpbmc6IEdsb2JhbC5kZWZhdWx0Q29tYm8ucGFkZGluZ1swXSxcbiAgICBhbmltYXRlOiB0cnVlLFxuICAgIHN0eWxlOiB7XG4gICAgICBzdHJva2U6IEdsb2JhbC5kZWZhdWx0Q29tYm8uc3R5bGUuc3Ryb2tlLFxuICAgICAgZmlsbDogR2xvYmFsLmRlZmF1bHRDb21iby5zdHlsZS5maWxsLFxuICAgICAgbGluZVdpZHRoOiBHbG9iYWwuZGVmYXVsdENvbWJvLnN0eWxlLmxpbmVXaWR0aFxuICAgIH0sXG4gICAgbGFiZWxDZmc6IHtcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIGZpbGw6IEdsb2JhbC5jb21ib0xhYmVsLnN0eWxlLmZpbGwsXG4gICAgICAgIGZvbnRTaXplOiBHbG9iYWwuY29tYm9MYWJlbC5zdHlsZS5mb250U2l6ZVxuICAgICAgfSxcbiAgICAgIHJlZlg6IDAsXG4gICAgICByZWZZOiAwXG4gICAgfSxcbiAgICBzdGF0ZVN0eWxlczogX19hc3NpZ24oe30sIEdsb2JhbC5jb21ib1N0YXRlU3R5bGVzKVxuICB9LFxuICBzaGFwZVR5cGU6ICdjaXJjbGUnLFxuICAvLyDmlofmnKzkvY3nva5cbiAgbGFiZWxQb3NpdGlvbjogJ3RvcCcsXG4gIGRyYXdTaGFwZTogZnVuY3Rpb24gZHJhd1NoYXBlKGNmZywgZ3JvdXApIHtcbiAgICB2YXIgc3R5bGUgPSB0aGlzLmdldFNoYXBlU3R5bGUoY2ZnKTtcbiAgICBkZWxldGUgc3R5bGUuaGVpZ2h0O1xuICAgIGRlbGV0ZSBzdHlsZS53aWR0aDtcbiAgICB2YXIga2V5U2hhcGUgPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgYXR0cnM6IHN0eWxlLFxuICAgICAgY2xhc3NOYW1lOiAnY2lyY2xlLWNvbWJvJyxcbiAgICAgIG5hbWU6ICdjaXJjbGUtY29tYm8nLFxuICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIGtleVNoYXBlO1xuICB9LFxuXG4gIC8qKlxuICAgKiDojrflj5YgQ29tYm8g55qE5qC35byP77yM5L6b5Z+65LqO6K+lIENvbWJvIOiHquWumuS5ieaXtuS9v+eUqFxuICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIENvbWJvIOaVsOaNruaooeWei1xuICAgKiBAcmV0dXJuIHtPYmplY3R9IENvbWJvIOeahOagt+W8j1xuICAgKi9cbiAgZ2V0U2hhcGVTdHlsZTogZnVuY3Rpb24gZ2V0U2hhcGVTdHlsZShjZmcpIHtcbiAgICB2YXIgZGVmYXVsdFN0eWxlID0gdGhpcy5vcHRpb25zLnN0eWxlO1xuICAgIHZhciBwYWRkaW5nID0gY2ZnLnBhZGRpbmcgfHwgdGhpcy5vcHRpb25zLnBhZGRpbmc7XG4gICAgaWYgKGlzQXJyYXkocGFkZGluZykpIHBhZGRpbmcgPSBwYWRkaW5nWzBdO1xuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yXG4gICAgfTsgLy8g5aaC5p6c6K6+572u5LqGY29sb3LvvIzliJnopobnm5bpu5jorqTnmoRzdHJva2XlsZ7mgKdcblxuICAgIHZhciBzdHlsZSA9IG1peCh7fSwgZGVmYXVsdFN0eWxlLCBzdHJva2VTdHlsZSwgY2ZnLnN0eWxlKTtcbiAgICB2YXIgcjtcblxuICAgIGlmIChjZmcuZml4U2l6ZSkge1xuICAgICAgciA9IGlzTnVtYmVyKGNmZy5maXhTaXplKSA/IGNmZy5maXhTaXplIDogY2ZnLmZpeFNpemVbMF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgICBpZiAoIWlzTnVtYmVyKHN0eWxlLnIpIHx8IGlzTmFOKHN0eWxlLnIpKSByID0gc2l6ZVswXSAvIDIgfHwgR2xvYmFsLmRlZmF1bHRDb21iby5zdHlsZS5yO2Vsc2UgciA9IE1hdGgubWF4KHN0eWxlLnIsIHNpemVbMF0gLyAyKSB8fCBzaXplWzBdIC8gMjtcbiAgICB9XG5cbiAgICBzdHlsZS5yID0gciArIHBhZGRpbmc7XG5cbiAgICB2YXIgc3R5bGVzID0gX19hc3NpZ24oe1xuICAgICAgeDogMCxcbiAgICAgIHk6IDBcbiAgICB9LCBzdHlsZSk7XG5cbiAgICBpZiAoY2ZnLnN0eWxlKSBjZmcuc3R5bGUuciA9IHI7ZWxzZSB7XG4gICAgICBjZmcuc3R5bGUgPSB7XG4gICAgICAgIHI6IHJcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBzdHlsZXM7XG4gIH0sXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKGNmZywgaXRlbSkge1xuICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgdmFyIHBhZGRpbmcgPSBjZmcucGFkZGluZyB8fCB0aGlzLm9wdGlvbnMucGFkZGluZztcbiAgICBpZiAoaXNBcnJheShwYWRkaW5nKSkgcGFkZGluZyA9IHBhZGRpbmdbMF07XG4gICAgdmFyIGNmZ1N0eWxlID0gY2xvbmUoY2ZnLnN0eWxlKTtcbiAgICB2YXIgcjtcblxuICAgIGlmIChjZmcuZml4U2l6ZSkge1xuICAgICAgciA9IGlzTnVtYmVyKGNmZy5maXhTaXplKSA/IGNmZy5maXhTaXplIDogY2ZnLmZpeFNpemVbMF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHIgPSBNYXRoLm1heChjZmdTdHlsZS5yLCBzaXplWzBdIC8gMikgfHwgc2l6ZVswXSAvIDI7XG4gICAgfVxuXG4gICAgY2ZnU3R5bGUuciA9IHIgKyBwYWRkaW5nO1xuICAgIHZhciBpdGVtQ2FjaGVTaXplID0gaXRlbS5nZXQoJ3NpemVDYWNoZScpO1xuXG4gICAgaWYgKGl0ZW1DYWNoZVNpemUpIHtcbiAgICAgIGl0ZW1DYWNoZVNpemUuciA9IGNmZ1N0eWxlLnI7XG4gICAgfSAvLyDkuIvpnaLov5nkupvlsZ7mgKfpnIDopoHopobnm5bpu5jorqTmoLflvI/kuI7nm67liY3moLflvI/vvIzkvYboi6XlnKggY2ZnIOS4reacieaMh+WumuWImeW6lOivpeiiqyBjZmcg55qE55u45bqU6YWN572u6KaG55uW44CCXG5cblxuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yXG4gICAgfTsgLy8g5LiOIGdldFNoYXBlU3R5bGUg5LiN5ZCM5Zyo5LqO77yMdXBkYXRlIOaXtumcgOimgeiOt+WPluWIsOW9k+WJjeeahCBzdHlsZSDov5vooYzono3lkIjjgILljbPmlrDkvKDlhaXnmoTphY3nva7pobnkuK3msqHmnInmtonlj4rnmoTlsZ7mgKfvvIzkv53nlZnlvZPliY3nmoTphY3nva7jgIJcblxuICAgIHZhciBrZXlTaGFwZSA9IGl0ZW0uZ2V0KCdrZXlTaGFwZScpO1xuICAgIHZhciBzdHlsZSA9IG1peCh7fSwga2V5U2hhcGUuYXR0cigpLCBzdHJva2VTdHlsZSwgY2ZnU3R5bGUpO1xuICAgIGlmIChjZmcuc3R5bGUpIGNmZy5zdHlsZS5yID0gcjtlbHNlIHtcbiAgICAgIGNmZy5zdHlsZSA9IHtcbiAgICAgICAgcjogclxuICAgICAgfTtcbiAgICB9XG4gICAgdGhpcy51cGRhdGVTaGFwZShjZmcsIGl0ZW0sIHN0eWxlLCB0cnVlKTtcbiAgfVxufSwgJ3NpbmdsZS1jb21ibycpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/combos/circle.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/combos/index.js":
/*!************************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/combos/index.js ***!
\************************************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _circle__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./circle */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/combos/circle.js\");\n/* harmony import */ var _rect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rect */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/combos/rect.js\");\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2NvbWJvcy9pbmRleC5qcz9kZTU5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFrQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtY29yZUAwLjUuMEBAYW50di9nNi1jb3JlL2VzL2VsZW1lbnQvY29tYm9zL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICcuL2NpcmNsZSc7XG5pbXBvcnQgJy4vcmVjdCc7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/combos/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/combos/rect.js":
/*!***********************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/combos/rect.js ***!
\***********************************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../global */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/global.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shape */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shape.js\");\n\n\n\n\n_shape__WEBPACK_IMPORTED_MODULE_3__[\"default\"].registerCombo('rect', {\n // 自定义 Combo 时的配置\n options: {\n size: [40, 5],\n padding: [25, 20, 15, 20],\n animate: true,\n style: {\n radius: 0,\n stroke: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.style.stroke,\n fill: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.style.fill,\n lineWidth: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.style.lineWidth\n },\n // 文本样式配置\n labelCfg: {\n style: {\n fill: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].comboLabel.style.fill,\n fontSize: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].comboLabel.style.fontSize,\n fontFamily: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].windowFontFamily\n }\n },\n // 连接点,默认为左右\n anchorPoints: [[0, 0.5], [1, 0.5]],\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].comboStateStyles)\n },\n shapeType: 'rect',\n labelPosition: 'top',\n drawShape: function drawShape(cfg, group) {\n var style = this.getShapeStyle(cfg);\n var keyShape = group.addShape('rect', {\n attrs: style,\n className: 'rect-combo',\n name: 'rect-combo',\n draggable: true\n });\n return keyShape;\n },\n // 私有方法,不希望扩展的 Combo 复写这个方法\n getLabelStyleByPosition: function getLabelStyleByPosition(cfg, labelCfg) {\n var labelPosition = labelCfg.position || this.labelPosition;\n var cfgStyle = cfg.style;\n var padding = cfg.padding || this.options.padding;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(padding)) padding = [padding, padding, padding, padding];\n var refX = labelCfg.refX,\n refY = labelCfg.refY; // 考虑 refX 和 refY = 0 的场景,不用用 labelCfg.refX || Global.nodeLabel.refY\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(refX)) {\n refX = this.refX; // 不居中时的偏移量\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(refY)) {\n refY = this.refY; // 不居中时的偏移量\n }\n\n var leftDis = cfgStyle.width / 2 + padding[3];\n var topDis = cfgStyle.height / 2 + padding[0];\n var style;\n\n switch (labelPosition) {\n case 'top':\n style = {\n x: 0 - leftDis + refX,\n y: 0 - topDis + refY,\n textBaseline: 'top',\n textAlign: 'left'\n };\n break;\n\n case 'bottom':\n style = {\n x: 0,\n y: topDis + refY,\n textBaseline: 'bottom',\n textAlign: 'center'\n };\n break;\n\n case 'left':\n style = {\n x: 0 - leftDis + refY,\n y: 0,\n textAlign: 'left'\n };\n break;\n\n case 'center':\n style = {\n x: 0,\n y: 0,\n text: cfg.label,\n textAlign: 'center'\n };\n break;\n\n default:\n style = {\n x: leftDis + refX,\n y: 0,\n textAlign: 'right'\n };\n break;\n }\n\n style.text = cfg.label;\n return style;\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = this.options.style;\n var padding = cfg.padding || this.options.padding;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(padding)) padding = [padding, padding, padding, padding];\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultStyle, strokeStyle, cfg.style);\n var size = this.getSize(cfg);\n var width;\n var height;\n var fixSize = cfg.collapsed && cfg.fixCollapseSize ? cfg.fixCollapseSize : cfg.fixSize;\n\n if (fixSize) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(fixSize)) {\n width = fixSize;\n height = fixSize;\n } else {\n width = fixSize[0];\n height = fixSize[1];\n }\n } else {\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(style.width) || isNaN(style.width)) width = size[0] || _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.style.width;else width = Math.max(style.width, size[0]) || size[0];\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(style.height) || isNaN(style.height)) height = size[1] || _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.style.height;else height = Math.max(style.height, size[1]) || size[1];\n }\n\n var x = -width / 2 - padding[3];\n var y = -height / 2 - padding[0];\n style.width = width + padding[1] + padding[3];\n style.height = height + padding[0] + padding[2];\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: x,\n y: y\n }, style);\n\n if (!cfg.style) {\n cfg.style = {\n width: width,\n height: height\n };\n } else {\n cfg.style.width = width;\n cfg.style.height = height;\n }\n\n return styles;\n },\n update: function update(cfg, item) {\n var size = this.getSize(cfg);\n var padding = cfg.padding || this.options.padding;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(padding)) padding = [padding, padding, padding, padding];\n var cfgStyle = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(cfg.style);\n var width, height;\n var fixSize = cfg.collapsed && cfg.fixCollapseSize ? cfg.fixCollapseSize : cfg.fixSize;\n\n if (fixSize) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(fixSize)) {\n width = fixSize;\n height = fixSize;\n } else {\n width = fixSize[0];\n height = fixSize[1];\n }\n } else {\n width = Math.max(cfgStyle.width, size[0]) || size[0];\n height = Math.max(cfgStyle.height, size[1]) || size[1];\n }\n\n cfgStyle.width = width + padding[1] + padding[3];\n cfgStyle.height = height + padding[0] + padding[2];\n var itemCacheSize = item.get('sizeCache');\n\n if (itemCacheSize) {\n itemCacheSize.width = cfgStyle.width;\n itemCacheSize.height = cfgStyle.height;\n }\n\n cfgStyle.x = -width / 2 - padding[3];\n cfgStyle.y = -height / 2 - padding[0]; // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n\n var strokeStyle = {\n stroke: cfg.color\n }; // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n\n var keyShape = item.get('keyShape');\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, keyShape.attr(), strokeStyle, cfgStyle);\n\n if (cfg.style) {\n cfg.style.width = width;\n cfg.style.height = height;\n } else {\n cfg.style = {\n width: width,\n height: height\n };\n }\n\n this.updateShape(cfg, item, style, false);\n },\n updateShape: function updateShape(cfg, item, keyShapeStyle) {\n var keyShape = item.get('keyShape');\n var animate = cfg.animate === undefined ? this.options.animate : cfg.animate;\n\n if (animate && keyShape.animate) {\n keyShape.animate(keyShapeStyle, {\n duration: 200,\n easing: 'easeLinear'\n });\n } else {\n keyShape.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, keyShapeStyle));\n }\n\n this.updateLabel(cfg, item);\n }\n}, 'single-combo');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2NvbWJvcy9yZWN0LmpzPzEyMWIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUN3QjtBQUN2QjtBQUNMO0FBQzdCLDhDQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLCtDQUFNO0FBQ3BCLFlBQVksK0NBQU07QUFDbEIsaUJBQWlCLCtDQUFNO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxjQUFjLCtDQUFNO0FBQ3BCLGtCQUFrQiwrQ0FBTTtBQUN4QixvQkFBb0IsK0NBQU07QUFDMUI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLGlCQUFpQixzREFBUSxHQUFHLEVBQUUsK0NBQU07QUFDcEMsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSwyREFBUTtBQUNoQjtBQUNBLDZCQUE2Qjs7QUFFN0IsUUFBUSx3REFBSztBQUNiLHVCQUF1QjtBQUN2Qjs7QUFFQSxRQUFRLHdEQUFLO0FBQ2IsdUJBQXVCO0FBQ3ZCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7QUFDQSxNQUFNOztBQUVOLGdCQUFnQixzREFBRyxHQUFHO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVSwyREFBUTtBQUNsQjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxXQUFXLDJEQUFRLHdEQUF3RCwrQ0FBTSwwQkFBMEI7QUFDM0csV0FBVywyREFBUSwyREFBMkQsK0NBQU0sMkJBQTJCO0FBQy9HOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixzREFBUTtBQUN6QjtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxRQUFRLDJEQUFRO0FBQ2hCLG1CQUFtQix3REFBSztBQUN4QjtBQUNBOztBQUVBO0FBQ0EsVUFBVSwyREFBUTtBQUNsQjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMENBQTBDOztBQUUxQztBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBLGdCQUFnQixzREFBRyxHQUFHOztBQUV0QjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLG9CQUFvQixzREFBUSxHQUFHO0FBQy9COztBQUVBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1jb3JlQDAuNS4wQEBhbnR2L2c2LWNvcmUvZXMvZWxlbWVudC9jb21ib3MvcmVjdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBtaXgsIGlzTnVtYmVyLCBjbG9uZSwgaXNOaWwgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBHbG9iYWwgZnJvbSAnLi4vLi4vZ2xvYmFsJztcbmltcG9ydCBTaGFwZSBmcm9tICcuLi9zaGFwZSc7XG5TaGFwZS5yZWdpc3RlckNvbWJvKCdyZWN0Jywge1xuICAvLyDoh6rlrprkuYkgQ29tYm8g5pe255qE6YWN572uXG4gIG9wdGlvbnM6IHtcbiAgICBzaXplOiBbNDAsIDVdLFxuICAgIHBhZGRpbmc6IFsyNSwgMjAsIDE1LCAyMF0sXG4gICAgYW5pbWF0ZTogdHJ1ZSxcbiAgICBzdHlsZToge1xuICAgICAgcmFkaXVzOiAwLFxuICAgICAgc3Ryb2tlOiBHbG9iYWwuZGVmYXVsdENvbWJvLnN0eWxlLnN0cm9rZSxcbiAgICAgIGZpbGw6IEdsb2JhbC5kZWZhdWx0Q29tYm8uc3R5bGUuZmlsbCxcbiAgICAgIGxpbmVXaWR0aDogR2xvYmFsLmRlZmF1bHRDb21iby5zdHlsZS5saW5lV2lkdGhcbiAgICB9LFxuICAgIC8vIOaWh+acrOagt+W8j+mFjee9rlxuICAgIGxhYmVsQ2ZnOiB7XG4gICAgICBzdHlsZToge1xuICAgICAgICBmaWxsOiBHbG9iYWwuY29tYm9MYWJlbC5zdHlsZS5maWxsLFxuICAgICAgICBmb250U2l6ZTogR2xvYmFsLmNvbWJvTGFiZWwuc3R5bGUuZm9udFNpemUsXG4gICAgICAgIGZvbnRGYW1pbHk6IEdsb2JhbC53aW5kb3dGb250RmFtaWx5XG4gICAgICB9XG4gICAgfSxcbiAgICAvLyDov57mjqXngrnvvIzpu5jorqTkuLrlt6blj7NcbiAgICBhbmNob3JQb2ludHM6IFtbMCwgMC41XSwgWzEsIDAuNV1dLFxuICAgIHN0YXRlU3R5bGVzOiBfX2Fzc2lnbih7fSwgR2xvYmFsLmNvbWJvU3RhdGVTdHlsZXMpXG4gIH0sXG4gIHNoYXBlVHlwZTogJ3JlY3QnLFxuICBsYWJlbFBvc2l0aW9uOiAndG9wJyxcbiAgZHJhd1NoYXBlOiBmdW5jdGlvbiBkcmF3U2hhcGUoY2ZnLCBncm91cCkge1xuICAgIHZhciBzdHlsZSA9IHRoaXMuZ2V0U2hhcGVTdHlsZShjZmcpO1xuICAgIHZhciBrZXlTaGFwZSA9IGdyb3VwLmFkZFNoYXBlKCdyZWN0Jywge1xuICAgICAgYXR0cnM6IHN0eWxlLFxuICAgICAgY2xhc3NOYW1lOiAncmVjdC1jb21ibycsXG4gICAgICBuYW1lOiAncmVjdC1jb21ibycsXG4gICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4ga2V5U2hhcGU7XG4gIH0sXG4gIC8vIOengeacieaWueazle+8jOS4jeW4jOacm+aJqeWxleeahCBDb21ibyDlpI3lhpnov5nkuKrmlrnms5VcbiAgZ2V0TGFiZWxTdHlsZUJ5UG9zaXRpb246IGZ1bmN0aW9uIGdldExhYmVsU3R5bGVCeVBvc2l0aW9uKGNmZywgbGFiZWxDZmcpIHtcbiAgICB2YXIgbGFiZWxQb3NpdGlvbiA9IGxhYmVsQ2ZnLnBvc2l0aW9uIHx8IHRoaXMubGFiZWxQb3NpdGlvbjtcbiAgICB2YXIgY2ZnU3R5bGUgPSBjZmcuc3R5bGU7XG4gICAgdmFyIHBhZGRpbmcgPSBjZmcucGFkZGluZyB8fCB0aGlzLm9wdGlvbnMucGFkZGluZztcbiAgICBpZiAoaXNOdW1iZXIocGFkZGluZykpIHBhZGRpbmcgPSBbcGFkZGluZywgcGFkZGluZywgcGFkZGluZywgcGFkZGluZ107XG4gICAgdmFyIHJlZlggPSBsYWJlbENmZy5yZWZYLFxuICAgICAgICByZWZZID0gbGFiZWxDZmcucmVmWTsgLy8g6ICD6JmRIHJlZlgg5ZKMIHJlZlkgPSAwIOeahOWcuuaZr++8jOS4jeeUqOeUqCBsYWJlbENmZy5yZWZYIHx8IEdsb2JhbC5ub2RlTGFiZWwucmVmWVxuXG4gICAgaWYgKGlzTmlsKHJlZlgpKSB7XG4gICAgICByZWZYID0gdGhpcy5yZWZYOyAvLyDkuI3lsYXkuK3ml7bnmoTlgY/np7vph49cbiAgICB9XG5cbiAgICBpZiAoaXNOaWwocmVmWSkpIHtcbiAgICAgIHJlZlkgPSB0aGlzLnJlZlk7IC8vIOS4jeWxheS4reaXtueahOWBj+enu+mHj1xuICAgIH1cblxuICAgIHZhciBsZWZ0RGlzID0gY2ZnU3R5bGUud2lkdGggLyAyICsgcGFkZGluZ1szXTtcbiAgICB2YXIgdG9wRGlzID0gY2ZnU3R5bGUuaGVpZ2h0IC8gMiArIHBhZGRpbmdbMF07XG4gICAgdmFyIHN0eWxlO1xuXG4gICAgc3dpdGNoIChsYWJlbFBvc2l0aW9uKSB7XG4gICAgICBjYXNlICd0b3AnOlxuICAgICAgICBzdHlsZSA9IHtcbiAgICAgICAgICB4OiAwIC0gbGVmdERpcyArIHJlZlgsXG4gICAgICAgICAgeTogMCAtIHRvcERpcyArIHJlZlksXG4gICAgICAgICAgdGV4dEJhc2VsaW5lOiAndG9wJyxcbiAgICAgICAgICB0ZXh0QWxpZ246ICdsZWZ0J1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgc3R5bGUgPSB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiB0b3BEaXMgKyByZWZZLFxuICAgICAgICAgIHRleHRCYXNlbGluZTogJ2JvdHRvbScsXG4gICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJ1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgIHN0eWxlID0ge1xuICAgICAgICAgIHg6IDAgLSBsZWZ0RGlzICsgcmVmWSxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHRleHRBbGlnbjogJ2xlZnQnXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdjZW50ZXInOlxuICAgICAgICBzdHlsZSA9IHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgdGV4dDogY2ZnLmxhYmVsLFxuICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHN0eWxlID0ge1xuICAgICAgICAgIHg6IGxlZnREaXMgKyByZWZYLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgdGV4dEFsaWduOiAncmlnaHQnXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHN0eWxlLnRleHQgPSBjZmcubGFiZWw7XG4gICAgcmV0dXJuIHN0eWxlO1xuICB9LFxuXG4gIC8qKlxuICAgKiDojrflj5boioLngrnnmoTmoLflvI/vvIzkvpvln7rkuo7or6XoioLngrnoh6rlrprkuYnml7bkvb/nlKhcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyDoioLngrnmlbDmja7mqKHlnotcbiAgICogQHJldHVybiB7T2JqZWN0fSDoioLngrnnmoTmoLflvI9cbiAgICovXG4gIGdldFNoYXBlU3R5bGU6IGZ1bmN0aW9uIGdldFNoYXBlU3R5bGUoY2ZnKSB7XG4gICAgdmFyIGRlZmF1bHRTdHlsZSA9IHRoaXMub3B0aW9ucy5zdHlsZTtcbiAgICB2YXIgcGFkZGluZyA9IGNmZy5wYWRkaW5nIHx8IHRoaXMub3B0aW9ucy5wYWRkaW5nO1xuICAgIGlmIChpc051bWJlcihwYWRkaW5nKSkgcGFkZGluZyA9IFtwYWRkaW5nLCBwYWRkaW5nLCBwYWRkaW5nLCBwYWRkaW5nXTtcbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvclxuICAgIH07IC8vIOWmguaenOiuvue9ruS6hmNvbG9y77yM5YiZ6KaG55uW6buY6K6k55qEc3Ryb2tl5bGe5oCnXG5cbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwgc3Ryb2tlU3R5bGUsIGNmZy5zdHlsZSk7XG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgd2lkdGg7XG4gICAgdmFyIGhlaWdodDtcbiAgICB2YXIgZml4U2l6ZSA9IGNmZy5jb2xsYXBzZWQgJiYgY2ZnLmZpeENvbGxhcHNlU2l6ZSA/IGNmZy5maXhDb2xsYXBzZVNpemUgOiBjZmcuZml4U2l6ZTtcblxuICAgIGlmIChmaXhTaXplKSB7XG4gICAgICBpZiAoaXNOdW1iZXIoZml4U2l6ZSkpIHtcbiAgICAgICAgd2lkdGggPSBmaXhTaXplO1xuICAgICAgICBoZWlnaHQgPSBmaXhTaXplO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2lkdGggPSBmaXhTaXplWzBdO1xuICAgICAgICBoZWlnaHQgPSBmaXhTaXplWzFdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWlzTnVtYmVyKHN0eWxlLndpZHRoKSB8fCBpc05hTihzdHlsZS53aWR0aCkpIHdpZHRoID0gc2l6ZVswXSB8fCBHbG9iYWwuZGVmYXVsdENvbWJvLnN0eWxlLndpZHRoO2Vsc2Ugd2lkdGggPSBNYXRoLm1heChzdHlsZS53aWR0aCwgc2l6ZVswXSkgfHwgc2l6ZVswXTtcbiAgICAgIGlmICghaXNOdW1iZXIoc3R5bGUuaGVpZ2h0KSB8fCBpc05hTihzdHlsZS5oZWlnaHQpKSBoZWlnaHQgPSBzaXplWzFdIHx8IEdsb2JhbC5kZWZhdWx0Q29tYm8uc3R5bGUuaGVpZ2h0O2Vsc2UgaGVpZ2h0ID0gTWF0aC5tYXgoc3R5bGUuaGVpZ2h0LCBzaXplWzFdKSB8fCBzaXplWzFdO1xuICAgIH1cblxuICAgIHZhciB4ID0gLXdpZHRoIC8gMiAtIHBhZGRpbmdbM107XG4gICAgdmFyIHkgPSAtaGVpZ2h0IC8gMiAtIHBhZGRpbmdbMF07XG4gICAgc3R5bGUud2lkdGggPSB3aWR0aCArIHBhZGRpbmdbMV0gKyBwYWRkaW5nWzNdO1xuICAgIHN0eWxlLmhlaWdodCA9IGhlaWdodCArIHBhZGRpbmdbMF0gKyBwYWRkaW5nWzJdO1xuXG4gICAgdmFyIHN0eWxlcyA9IF9fYXNzaWduKHtcbiAgICAgIHg6IHgsXG4gICAgICB5OiB5XG4gICAgfSwgc3R5bGUpO1xuXG4gICAgaWYgKCFjZmcuc3R5bGUpIHtcbiAgICAgIGNmZy5zdHlsZSA9IHtcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2ZnLnN0eWxlLndpZHRoID0gd2lkdGg7XG4gICAgICBjZmcuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgIH1cblxuICAgIHJldHVybiBzdHlsZXM7XG4gIH0sXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKGNmZywgaXRlbSkge1xuICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgdmFyIHBhZGRpbmcgPSBjZmcucGFkZGluZyB8fCB0aGlzLm9wdGlvbnMucGFkZGluZztcbiAgICBpZiAoaXNOdW1iZXIocGFkZGluZykpIHBhZGRpbmcgPSBbcGFkZGluZywgcGFkZGluZywgcGFkZGluZywgcGFkZGluZ107XG4gICAgdmFyIGNmZ1N0eWxlID0gY2xvbmUoY2ZnLnN0eWxlKTtcbiAgICB2YXIgd2lkdGgsIGhlaWdodDtcbiAgICB2YXIgZml4U2l6ZSA9IGNmZy5jb2xsYXBzZWQgJiYgY2ZnLmZpeENvbGxhcHNlU2l6ZSA/IGNmZy5maXhDb2xsYXBzZVNpemUgOiBjZmcuZml4U2l6ZTtcblxuICAgIGlmIChmaXhTaXplKSB7XG4gICAgICBpZiAoaXNOdW1iZXIoZml4U2l6ZSkpIHtcbiAgICAgICAgd2lkdGggPSBmaXhTaXplO1xuICAgICAgICBoZWlnaHQgPSBmaXhTaXplO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2lkdGggPSBmaXhTaXplWzBdO1xuICAgICAgICBoZWlnaHQgPSBmaXhTaXplWzFdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB3aWR0aCA9IE1hdGgubWF4KGNmZ1N0eWxlLndpZHRoLCBzaXplWzBdKSB8fCBzaXplWzBdO1xuICAgICAgaGVpZ2h0ID0gTWF0aC5tYXgoY2ZnU3R5bGUuaGVpZ2h0LCBzaXplWzFdKSB8fCBzaXplWzFdO1xuICAgIH1cblxuICAgIGNmZ1N0eWxlLndpZHRoID0gd2lkdGggKyBwYWRkaW5nWzFdICsgcGFkZGluZ1szXTtcbiAgICBjZmdTdHlsZS5oZWlnaHQgPSBoZWlnaHQgKyBwYWRkaW5nWzBdICsgcGFkZGluZ1syXTtcbiAgICB2YXIgaXRlbUNhY2hlU2l6ZSA9IGl0ZW0uZ2V0KCdzaXplQ2FjaGUnKTtcblxuICAgIGlmIChpdGVtQ2FjaGVTaXplKSB7XG4gICAgICBpdGVtQ2FjaGVTaXplLndpZHRoID0gY2ZnU3R5bGUud2lkdGg7XG4gICAgICBpdGVtQ2FjaGVTaXplLmhlaWdodCA9IGNmZ1N0eWxlLmhlaWdodDtcbiAgICB9XG5cbiAgICBjZmdTdHlsZS54ID0gLXdpZHRoIC8gMiAtIHBhZGRpbmdbM107XG4gICAgY2ZnU3R5bGUueSA9IC1oZWlnaHQgLyAyIC0gcGFkZGluZ1swXTsgLy8g5LiL6Z2i6L+Z5Lqb5bGe5oCn6ZyA6KaB6KaG55uW6buY6K6k5qC35byP5LiO55uu5YmN5qC35byP77yM5L2G6Iul5ZyoIGNmZyDkuK3mnInmjIflrprliJnlupTor6XooqsgY2ZnIOeahOebuOW6lOmFjee9ruimhuebluOAglxuXG4gICAgdmFyIHN0cm9rZVN0eWxlID0ge1xuICAgICAgc3Ryb2tlOiBjZmcuY29sb3JcbiAgICB9OyAvLyDkuI4gZ2V0U2hhcGVTdHlsZSDkuI3lkIzlnKjkuo7vvIx1cGRhdGUg5pe26ZyA6KaB6I635Y+W5Yiw5b2T5YmN55qEIHN0eWxlIOi/m+ihjOiejeWQiOOAguWNs+aWsOS8oOWFpeeahOmFjee9rumhueS4reayoeaciea2ieWPiueahOWxnuaAp++8jOS/neeVmeW9k+WJjeeahOmFjee9ruOAglxuXG4gICAgdmFyIGtleVNoYXBlID0gaXRlbS5nZXQoJ2tleVNoYXBlJyk7XG4gICAgdmFyIHN0eWxlID0gbWl4KHt9LCBrZXlTaGFwZS5hdHRyKCksIHN0cm9rZVN0eWxlLCBjZmdTdHlsZSk7XG5cbiAgICBpZiAoY2ZnLnN0eWxlKSB7XG4gICAgICBjZmcuc3R5bGUud2lkdGggPSB3aWR0aDtcbiAgICAgIGNmZy5zdHlsZS5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNmZy5zdHlsZSA9IHtcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZVNoYXBlKGNmZywgaXRlbSwgc3R5bGUsIGZhbHNlKTtcbiAgfSxcbiAgdXBkYXRlU2hhcGU6IGZ1bmN0aW9uIHVwZGF0ZVNoYXBlKGNmZywgaXRlbSwga2V5U2hhcGVTdHlsZSkge1xuICAgIHZhciBrZXlTaGFwZSA9IGl0ZW0uZ2V0KCdrZXlTaGFwZScpO1xuICAgIHZhciBhbmltYXRlID0gY2ZnLmFuaW1hdGUgPT09IHVuZGVmaW5lZCA/IHRoaXMub3B0aW9ucy5hbmltYXRlIDogY2ZnLmFuaW1hdGU7XG5cbiAgICBpZiAoYW5pbWF0ZSAmJiBrZXlTaGFwZS5hbmltYXRlKSB7XG4gICAgICBrZXlTaGFwZS5hbmltYXRlKGtleVNoYXBlU3R5bGUsIHtcbiAgICAgICAgZHVyYXRpb246IDIwMCxcbiAgICAgICAgZWFzaW5nOiAnZWFzZUxpbmVhcidcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBrZXlTaGFwZS5hdHRyKF9fYXNzaWduKHt9LCBrZXlTaGFwZVN0eWxlKSk7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVMYWJlbChjZmcsIGl0ZW0pO1xuICB9XG59LCAnc2luZ2xlLWNvbWJvJyk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/combos/rect.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/edge.js":
/*!****************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/edge.js ***!
\****************************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util_graphic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/graphic */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/graphic.js\");\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/math */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/math.js\");\n/* harmony import */ var _util_path__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/path */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/path.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../global */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/global.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./shape */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shape.js\");\n/* harmony import */ var _shapeBase__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./shapeBase */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shapeBase.js\");\n/**\n * @fileOverview 自定义边\n * @description 自定义边中有大量逻辑同自定义节点重复,虽然可以提取成为 mixin ,但是考虑到代码的可读性,还是单独实现。\n */\n\n\n\n\n\n\n\n\nvar CLS_SHAPE = 'edge-shape'; // start,end 倒置,center 不变\n\nfunction revertAlign(labelPosition) {\n var textAlign = labelPosition;\n\n if (labelPosition === 'start') {\n textAlign = 'end';\n } else if (labelPosition === 'end') {\n textAlign = 'start';\n }\n\n return textAlign;\n}\n\nvar singleEdge = {\n itemType: 'edge',\n\n /**\n * 文本的位置\n * @type {String}\n */\n labelPosition: 'center',\n\n /**\n * 文本的 x 偏移\n * @type {Number}\n */\n refX: 0,\n\n /**\n * 文本的 y 偏移\n * @type {Number}\n */\n refY: 0,\n\n /**\n * 文本是否跟着线自动旋转,默认 false\n * @type {Boolean}\n */\n labelAutoRotate: false,\n // 自定义边时的配置\n options: {\n size: _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].defaultEdge.size,\n style: {\n x: 0,\n y: 0,\n stroke: _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].defaultEdge.style.stroke,\n lineAppendWidth: _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].defaultEdge.style.lineAppendWidth\n },\n labelCfg: {\n style: {\n fill: _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].edgeLabel.style.fill,\n fontSize: _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].edgeLabel.style.fontSize,\n fontFamily: _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].windowFontFamily\n }\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].edgeStateStyles)\n },\n\n /**\n * 获取边的 path\n * @internal 供扩展的边覆盖\n * @param {Array} points 构成边的点的集合\n * @return {Array} 构成 path 的数组\n */\n getPath: function getPath(points) {\n var path = [];\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(points, function (point, index) {\n if (index === 0) {\n path.push(['M', point.x, point.y]);\n } else {\n path.push(['L', point.x, point.y]);\n }\n });\n return path;\n },\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = this.options.style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultStyle, strokeStyle, cfg.style);\n var size = cfg.size || _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].defaultEdge.size;\n cfg = this.getPathPoints(cfg);\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n var controlPoints = this.getControlPoints(cfg);\n var points = [startPoint]; // 添加起始点\n // 添加控制点\n\n if (controlPoints) {\n points = points.concat(controlPoints);\n } // 添加结束点\n\n\n points.push(endPoint);\n var path = this.getPath(points);\n var styles = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].defaultEdge.style, {\n stroke: _global__WEBPACK_IMPORTED_MODULE_5__[\"default\"].defaultEdge.color,\n lineWidth: size,\n path: path\n }, style);\n return styles;\n },\n updateShapeStyle: function updateShapeStyle(cfg, item, updateType) {\n var _a;\n\n var group = item.getContainer(); // const strokeStyle: ShapeStyle = {\n // stroke: cfg.color,\n // };\n\n var shape = ((_a = item.getKeyShape) === null || _a === void 0 ? void 0 : _a.call(item)) || group['shapeMap']['edge-shape']; // group.find((element) => element.get('className') === 'edge-shape');\n\n var size = cfg.size;\n cfg = this.getPathPoints(cfg);\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n var controlPoints = this.getControlPoints(cfg); // || cfg.controlPoints;\n\n var points = [startPoint]; // 添加起始点\n // 添加控制点\n\n if (controlPoints) {\n points = points.concat(controlPoints);\n } // 添加结束点\n\n\n points.push(endPoint);\n var currentAttr = shape.attr(); // const previousStyle = mix({}, strokeStyle, currentAttr, cfg.style);\n\n var previousStyle = cfg.style || {};\n\n if (previousStyle.stroke === undefined) {\n previousStyle.stroke = cfg.color;\n }\n\n var source = cfg.sourceNode;\n var target = cfg.targetNode;\n var routeCfg = {\n radius: previousStyle.radius\n };\n\n if (!controlPoints) {\n routeCfg = {\n source: source,\n target: target,\n offset: previousStyle.offset,\n radius: previousStyle.radius\n };\n }\n\n var path = this.getPath(points, routeCfg);\n var style = {};\n\n if (updateType === 'move') {\n style = {\n path: path\n };\n } else {\n if (currentAttr.endArrow && previousStyle.endArrow === false) {\n cfg.style.endArrow = {\n path: ''\n };\n }\n\n if (currentAttr.startArrow && previousStyle.startArrow === false) {\n cfg.style.startArrow = {\n path: ''\n };\n }\n\n style = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, cfg.style);\n if (style.lineWidth === undefined) style.lineWdith = (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(size) ? size : size === null || size === void 0 ? void 0 : size[0]) || currentAttr.lineWidth;\n if (style.path === undefined) style.path = path;\n if (style.stroke === undefined) style.stroke = currentAttr.stroke || cfg.color;\n }\n\n if (shape) {\n shape.attr(style);\n }\n },\n getLabelStyleByPosition: function getLabelStyleByPosition(cfg, labelCfg, group) {\n var labelPosition = labelCfg.position || this.labelPosition; // 文本的位置用户可以传入\n\n var style = {};\n var pathShape = group === null || group === void 0 ? void 0 : group['shapeMap'][CLS_SHAPE]; // group?.find((element) => element.get('className') === CLS_SHAPE);\n // 不对 pathShape 进行判空,如果线不存在,说明有问题了\n\n var pointPercent;\n\n if (labelPosition === 'start') {\n pointPercent = 0;\n } else if (labelPosition === 'end') {\n pointPercent = 1;\n } else {\n pointPercent = 0.5;\n } // 偏移量\n\n\n var offsetX = labelCfg.refX || this.refX;\n var offsetY = labelCfg.refY || this.refY; // 如果两个节点重叠,线就变成了一个点,这时候label的位置,就是这个点 + 绝对偏移\n\n if (cfg.startPoint.x === cfg.endPoint.x && cfg.startPoint.y === cfg.endPoint.y) {\n style.x = cfg.startPoint.x + offsetX;\n style.y = cfg.startPoint.y + offsetY;\n style.text = cfg.label;\n return style;\n }\n\n var autoRotate;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(labelCfg.autoRotate)) autoRotate = this.labelAutoRotate;else autoRotate = labelCfg.autoRotate;\n var offsetStyle = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_2__[\"getLabelPosition\"])(pathShape, pointPercent, offsetX, offsetY, autoRotate);\n style.x = offsetStyle.x;\n style.y = offsetStyle.y;\n style.rotate = offsetStyle.rotate;\n style.textAlign = this._getTextAlign(labelPosition, offsetStyle.angle);\n style.text = cfg.label;\n return style;\n },\n getLabelBgStyleByPosition: function getLabelBgStyleByPosition(label, cfg, labelCfg, group) {\n if (!label) {\n return {};\n }\n\n var bbox = label.getBBox();\n var backgroundStyle = labelCfg.style && labelCfg.style.background;\n\n if (!backgroundStyle) {\n return {};\n }\n\n var padding = backgroundStyle.padding;\n var backgroundWidth = bbox.width + padding[1] + padding[3];\n var backgroundHeight = bbox.height + padding[0] + padding[2];\n var labelPosition = labelCfg.position || this.labelPosition;\n\n var style = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, backgroundStyle), {\n width: backgroundWidth,\n height: backgroundHeight,\n x: bbox.minX - padding[2],\n y: bbox.minY - padding[0],\n rotate: 0\n });\n\n var autoRotate;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(labelCfg.autoRotate)) autoRotate = this.labelAutoRotate;else autoRotate = labelCfg.autoRotate;\n var pathShape = group === null || group === void 0 ? void 0 : group['shapeMap'][CLS_SHAPE]; // group?.find((element) => element.get('className') === CLS_SHAPE);\n // 不对 pathShape 进行判空,如果线不存在,说明有问题了\n\n var pointPercent;\n\n if (labelPosition === 'start') {\n pointPercent = 0;\n } else if (labelPosition === 'end') {\n pointPercent = 1;\n } else {\n pointPercent = 0.5;\n } // 偏移量\n\n\n var offsetX = labelCfg.refX || this.refX;\n var offsetY = labelCfg.refY || this.refY; // // 如果两个节点重叠,线就变成了一个点,这时候label的位置,就是这个点 + 绝对偏移\n\n if (cfg.startPoint.x === cfg.endPoint.x && cfg.startPoint.y === cfg.endPoint.y) {\n style.x = cfg.startPoint.x + offsetX - backgroundWidth / 2;\n style.y = cfg.startPoint.y + offsetY - backgroundHeight / 2;\n return style;\n }\n\n var bgOffsetX = offsetX - backgroundWidth / 2;\n\n if (labelCfg.position === 'start') {\n bgOffsetX = offsetX - padding[2];\n } else if (labelCfg.position === 'end') {\n bgOffsetX = offsetX - backgroundWidth;\n }\n\n var offsetStyle = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_2__[\"getLabelPosition\"])(pathShape, pointPercent, bgOffsetX, offsetY + backgroundHeight / 2, autoRotate);\n\n if (autoRotate) {\n style.x = offsetStyle.x;\n style.y = offsetStyle.y;\n }\n\n style.rotate = offsetStyle.rotate;\n return style;\n },\n // 获取文本对齐方式\n _getTextAlign: function _getTextAlign(labelPosition, angle) {\n var textAlign = 'center';\n\n if (!angle) {\n return labelPosition;\n }\n\n angle = angle % (Math.PI * 2); // 取模\n\n if (labelPosition !== 'center') {\n if (angle >= 0 && angle <= Math.PI / 2 || angle >= 3 / 2 * Math.PI && angle < 2 * Math.PI) {\n textAlign = labelPosition;\n } else {\n textAlign = revertAlign(labelPosition);\n }\n }\n\n return textAlign;\n },\n\n /**\n * @internal 获取边的控制点\n * @param {Object} cfg 边的配置项\n * @return {Array} 控制点的数组\n */\n getControlPoints: function getControlPoints(cfg) {\n return cfg.controlPoints;\n },\n\n /**\n * @internal 处理需要重计算点和边的情况\n * @param {Object} cfg 边的配置项\n * @return {Object} 边的配置项\n */\n getPathPoints: function getPathPoints(cfg) {\n return cfg;\n },\n\n /**\n * 绘制边\n * @override\n * @param {Object} cfg 边的配置项\n * @param {G.Group} group 边的容器\n * @return {IShape} 图形\n */\n drawShape: function drawShape(cfg, group) {\n var shapeStyle = this.getShapeStyle(cfg);\n var shape = group.addShape('path', {\n className: CLS_SHAPE,\n name: CLS_SHAPE,\n attrs: shapeStyle\n });\n group['shapeMap'][CLS_SHAPE] = shape;\n return shape;\n },\n drawLabel: function drawLabel(cfg, group) {\n var defaultLabelCfg = this.options.labelCfg;\n var labelCfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, defaultLabelCfg, cfg.labelCfg);\n var labelStyle = this.getLabelStyle(cfg, labelCfg, group);\n var rotate = labelStyle.rotate;\n delete labelStyle.rotate;\n var label = group.addShape('text', {\n attrs: labelStyle,\n name: 'text-shape'\n });\n group['shapeMap']['text-shape'] = label;\n\n if (!isNaN(rotate) && rotate !== '') {\n label.rotateAtStart(rotate);\n }\n\n if (labelStyle.background) {\n var rect = this.drawLabelBg(cfg, group, label, labelStyle, rotate);\n var labelBgClassname = this.itemType + _shapeBase__WEBPACK_IMPORTED_MODULE_7__[\"CLS_LABEL_BG_SUFFIX\"];\n rect.set('classname', labelBgClassname);\n group['shapeMap'][labelBgClassname] = rect;\n label.toFront();\n }\n\n return label;\n },\n drawLabelBg: function drawLabelBg(cfg, group, label, labelStyle, rotate) {\n var defaultLabelCfg = this.options.labelCfg;\n var labelCfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, defaultLabelCfg, cfg.labelCfg);\n var style = this.getLabelBgStyleByPosition(label, cfg, labelCfg, group);\n delete style.rotate;\n var rect = group.addShape('rect', {\n name: 'text-bg-shape',\n attrs: style\n });\n group['shapeMap']['text-bg-shape'] = rect;\n if (!isNaN(rotate)) rect.rotateAtStart(rotate);\n return rect;\n }\n};\n\nvar singleEdgeDef = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _shapeBase__WEBPACK_IMPORTED_MODULE_7__[\"shapeBase\"]), singleEdge);\n\n_shape__WEBPACK_IMPORTED_MODULE_6__[\"default\"].registerEdge('single-edge', singleEdgeDef); // 直线, 不支持控制点\n\n_shape__WEBPACK_IMPORTED_MODULE_6__[\"default\"].registerEdge('line', {\n // 控制点不生效\n getControlPoints: function getControlPoints() {\n return undefined;\n }\n}, 'single-edge'); // 直线\n\n_shape__WEBPACK_IMPORTED_MODULE_6__[\"default\"].registerEdge('spline', {\n getPath: function getPath(points) {\n var path = Object(_util_path__WEBPACK_IMPORTED_MODULE_4__[\"getSpline\"])(points);\n return path;\n }\n}, 'single-edge');\n_shape__WEBPACK_IMPORTED_MODULE_6__[\"default\"].registerEdge('arc', {\n curveOffset: 20,\n clockwise: 1,\n getControlPoints: function getControlPoints(cfg) {\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n var midPoint = {\n x: (startPoint.x + endPoint.x) / 2,\n y: (startPoint.y + endPoint.y) / 2\n };\n var center;\n var arcPoint; // 根据给定点计算圆弧\n\n if (cfg.controlPoints !== undefined) {\n arcPoint = cfg.controlPoints[0];\n center = Object(_util_math__WEBPACK_IMPORTED_MODULE_3__[\"getCircleCenterByPoints\"])(startPoint, arcPoint, endPoint); // 根据控制点和直线关系决定 clockwise值\n\n if (startPoint.x <= endPoint.x && startPoint.y > endPoint.y) {\n this.clockwise = center.x > arcPoint.x ? 0 : 1;\n } else if (startPoint.x <= endPoint.x && startPoint.y < endPoint.y) {\n this.clockwise = center.x > arcPoint.x ? 1 : 0;\n } else if (startPoint.x > endPoint.x && startPoint.y <= endPoint.y) {\n this.clockwise = center.y < arcPoint.y ? 0 : 1;\n } else {\n this.clockwise = center.y < arcPoint.y ? 1 : 0;\n } // 若给定点和两端点共线,无法生成圆弧,绘制直线\n\n\n if ((arcPoint.x - startPoint.x) / (arcPoint.y - startPoint.y) === (endPoint.x - startPoint.x) / (endPoint.y - startPoint.y)) {\n return [];\n }\n } else {\n // 根据直线连线中点的的偏移计算圆弧\n // 若用户给定偏移量则根据其计算,否则按照默认偏移值计算\n if (cfg.curveOffset === undefined) {\n cfg.curveOffset = this.curveOffset;\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(cfg.curveOffset)) {\n cfg.curveOffset = cfg.curveOffset[0];\n }\n\n if (cfg.curveOffset < 0) {\n this.clockwise = 0;\n } else {\n this.clockwise = 1;\n }\n\n var vec = {\n x: endPoint.x - startPoint.x,\n y: endPoint.y - startPoint.y\n };\n var edgeAngle = Math.atan2(vec.y, vec.x);\n arcPoint = {\n x: cfg.curveOffset * Math.cos(-Math.PI / 2 + edgeAngle) + midPoint.x,\n y: cfg.curveOffset * Math.sin(-Math.PI / 2 + edgeAngle) + midPoint.y\n };\n center = Object(_util_math__WEBPACK_IMPORTED_MODULE_3__[\"getCircleCenterByPoints\"])(startPoint, arcPoint, endPoint);\n }\n\n var radius = Object(_util_math__WEBPACK_IMPORTED_MODULE_3__[\"distance\"])(startPoint, center);\n var controlPoints = [{\n x: radius,\n y: radius\n }];\n return controlPoints;\n },\n getPath: function getPath(points) {\n var path = [];\n path.push(['M', points[0].x, points[0].y]); // 控制点与端点共线\n\n if (points.length === 2) {\n path.push(['L', points[1].x, points[1].y]);\n } else {\n path.push(['A', points[1].x, points[1].y, 0, 0, this.clockwise, points[2].x, points[2].y]);\n }\n\n return path;\n }\n}, 'single-edge');\n_shape__WEBPACK_IMPORTED_MODULE_6__[\"default\"].registerEdge('quadratic', {\n curvePosition: 0.5,\n curveOffset: -20,\n getControlPoints: function getControlPoints(cfg) {\n var controlPoints = cfg.controlPoints; // 指定controlPoints\n\n if (!controlPoints || !controlPoints.length) {\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n if (cfg.curveOffset === undefined) cfg.curveOffset = this.curveOffset;\n if (cfg.curvePosition === undefined) cfg.curvePosition = this.curvePosition;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(this.curveOffset)) cfg.curveOffset = cfg.curveOffset[0];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(this.curvePosition)) cfg.curvePosition = cfg.curveOffset[0];\n var innerPoint = Object(_util_path__WEBPACK_IMPORTED_MODULE_4__[\"getControlPoint\"])(startPoint, endPoint, cfg.curvePosition, cfg.curveOffset);\n controlPoints = [innerPoint];\n }\n\n return controlPoints;\n },\n getPath: function getPath(points) {\n var path = [];\n path.push(['M', points[0].x, points[0].y]);\n path.push(['Q', points[1].x, points[1].y, points[2].x, points[2].y]);\n return path;\n }\n}, 'single-edge');\n_shape__WEBPACK_IMPORTED_MODULE_6__[\"default\"].registerEdge('cubic', {\n curvePosition: [1 / 2, 1 / 2],\n curveOffset: [-20, 20],\n getControlPoints: function getControlPoints(cfg) {\n var controlPoints = cfg.controlPoints; // 指定 controlPoints\n\n if (cfg.curveOffset === undefined) cfg.curveOffset = this.curveOffset;\n if (cfg.curvePosition === undefined) cfg.curvePosition = this.curvePosition;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.curveOffset)) cfg.curveOffset = [cfg.curveOffset, -cfg.curveOffset];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.curvePosition)) cfg.curvePosition = [cfg.curvePosition, 1 - cfg.curvePosition];\n\n if (!controlPoints || !controlPoints.length || controlPoints.length < 2) {\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n var innerPoint1 = Object(_util_path__WEBPACK_IMPORTED_MODULE_4__[\"getControlPoint\"])(startPoint, endPoint, cfg.curvePosition[0], cfg.curveOffset[0]);\n var innerPoint2 = Object(_util_path__WEBPACK_IMPORTED_MODULE_4__[\"getControlPoint\"])(startPoint, endPoint, cfg.curvePosition[1], cfg.curveOffset[1]);\n controlPoints = [innerPoint1, innerPoint2];\n }\n\n return controlPoints;\n },\n getPath: function getPath(points) {\n var path = [];\n path.push(['M', points[0].x, points[0].y]);\n path.push(['C', points[1].x, points[1].y, points[2].x, points[2].y, points[3].x, points[3].y]);\n return path;\n }\n}, 'single-edge'); // 垂直方向的三阶贝塞尔曲线,不再考虑用户外部传入的控制点\n\n_shape__WEBPACK_IMPORTED_MODULE_6__[\"default\"].registerEdge('cubic-vertical', {\n curvePosition: [1 / 2, 1 / 2],\n minCurveOffset: [0, 0],\n curveOffset: undefined,\n getControlPoints: function getControlPoints(cfg) {\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n if (cfg.curvePosition === undefined) cfg.curvePosition = this.curvePosition;\n if (cfg.curveOffset === undefined) cfg.curveOffset = this.curveOffset;\n if (cfg.minCurveOffset === undefined) cfg.minCurveOffset = this.minCurveOffset;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.curveOffset)) cfg.curveOffset = [cfg.curveOffset, -cfg.curveOffset];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.minCurveOffset)) cfg.minCurveOffset = [cfg.minCurveOffset, -cfg.minCurveOffset];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.curvePosition)) cfg.curvePosition = [cfg.curvePosition, 1 - cfg.curvePosition];\n var yDist = endPoint.y - startPoint.y;\n var curveOffset = [0, 0];\n\n if (cfg.curveOffset) {\n curveOffset = cfg.curveOffset;\n } else if (Math.abs(yDist) < Math.abs(cfg.minCurveOffset[0])) {\n curveOffset = cfg.minCurveOffset;\n }\n\n var innerPoint1 = {\n x: startPoint.x,\n y: startPoint.y + yDist * this.curvePosition[0] + curveOffset[0]\n };\n var innerPoint2 = {\n x: endPoint.x,\n y: endPoint.y - yDist * this.curvePosition[1] + curveOffset[1]\n };\n return [innerPoint1, innerPoint2];\n }\n}, 'cubic'); // 水平方向的三阶贝塞尔曲线,不再考虑用户外部传入的控制点\n\n_shape__WEBPACK_IMPORTED_MODULE_6__[\"default\"].registerEdge('cubic-horizontal', {\n curvePosition: [1 / 2, 1 / 2],\n minCurveOffset: [0, 0],\n curveOffset: undefined,\n getControlPoints: function getControlPoints(cfg) {\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n if (cfg.curvePosition === undefined) cfg.curvePosition = this.curvePosition;\n if (cfg.curveOffset === undefined) cfg.curveOffset = this.curveOffset;\n if (cfg.minCurveOffset === undefined) cfg.minCurveOffset = this.minCurveOffset;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.curveOffset)) cfg.curveOffset = [cfg.curveOffset, -cfg.curveOffset];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.minCurveOffset)) cfg.minCurveOffset = [cfg.minCurveOffset, -cfg.minCurveOffset];\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.curvePosition)) cfg.curvePosition = [cfg.curvePosition, 1 - cfg.curvePosition];\n var xDist = endPoint.x - startPoint.x;\n var curveOffset = [0, 0];\n\n if (cfg.curveOffset) {\n curveOffset = cfg.curveOffset;\n } else if (Math.abs(xDist) < Math.abs(cfg.minCurveOffset[0])) {\n curveOffset = cfg.minCurveOffset;\n }\n\n var innerPoint1 = {\n x: startPoint.x + xDist * this.curvePosition[0] + curveOffset[0],\n y: startPoint.y\n };\n var innerPoint2 = {\n x: endPoint.x - xDist * this.curvePosition[1] + curveOffset[1],\n y: endPoint.y\n };\n var controlPoints = [innerPoint1, innerPoint2];\n return controlPoints;\n }\n}, 'cubic');\n_shape__WEBPACK_IMPORTED_MODULE_6__[\"default\"].registerEdge('loop', {\n getPathPoints: function getPathPoints(cfg) {\n return Object(_util_graphic__WEBPACK_IMPORTED_MODULE_2__[\"getLoopCfgs\"])(cfg);\n },\n getControlPoints: function getControlPoints(cfg) {\n return cfg.controlPoints;\n },\n afterDraw: function afterDraw(cfg) {\n cfg.controlPoints = undefined;\n },\n afterUpdate: function afterUpdate(cfg) {\n cfg.controlPoints = undefined;\n }\n}, 'cubic');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2VkZ2UuanM/YWM5ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNpQztBQUN5QztBQUNWO0FBQ0M7QUFDUDtBQUMzQjtBQUNIO0FBQ2lDO0FBQzdELDZCQUE2Qjs7QUFFN0I7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLCtDQUFNO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBLGNBQWMsK0NBQU07QUFDcEIsdUJBQXVCLCtDQUFNO0FBQzdCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsY0FBYywrQ0FBTTtBQUNwQixrQkFBa0IsK0NBQU07QUFDeEIsb0JBQW9CLCtDQUFNO0FBQzFCO0FBQ0EsS0FBSztBQUNMLGlCQUFpQixzREFBUSxHQUFHLEVBQUUsK0NBQU07QUFDcEMsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxjQUFjLE1BQU07QUFDcEIsY0FBYyxNQUFNO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQUk7QUFDUjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOLGdCQUFnQixzREFBRyxHQUFHO0FBQ3RCLDJCQUEyQiwrQ0FBTTtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QjtBQUM5Qjs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBLGlCQUFpQixzREFBRyxHQUFHLEVBQUUsK0NBQU07QUFDL0IsY0FBYywrQ0FBTTtBQUNwQjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUEsb0NBQW9DO0FBQ3BDO0FBQ0E7O0FBRUEsZ0lBQWdJOztBQUVoSTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1EQUFtRDs7QUFFbkQsOEJBQThCO0FBQzlCOztBQUVBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBLG1DQUFtQyxnQ0FBZ0M7O0FBRW5FOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsY0FBYyxzREFBUSxHQUFHO0FBQ3pCLDREQUE0RCwyREFBUTtBQUNwRTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsZ0VBQWdFOztBQUVoRTtBQUNBLCtGQUErRjtBQUMvRjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQSw2Q0FBNkM7O0FBRTdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFFBQVEsd0RBQUsseURBQXlEO0FBQ3RFLHNCQUFzQixzRUFBZ0I7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGdCQUFnQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSxRQUFRLHdEQUFLLHlEQUF5RDtBQUN0RSwrRkFBK0Y7QUFDL0Y7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7OztBQUdMO0FBQ0EsNkNBQTZDOztBQUU3QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQSxzQkFBc0Isc0VBQWdCOztBQUV0QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsa0NBQWtDOztBQUVsQztBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsTUFBTTtBQUNwQjtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsUUFBUTtBQUN0QixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsbUJBQW1CLDBEQUFPLEdBQUc7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNkNBQTZDLDhEQUFtQjtBQUNoRTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsbUJBQW1CLDBEQUFPLEdBQUc7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG9CQUFvQixzREFBUSxDQUFDLHNEQUFRLEdBQUcsRUFBRSxvREFBUzs7QUFFbkQsOENBQUssNENBQTRDOztBQUVqRCw4Q0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxpQkFBaUI7O0FBRWxCLDhDQUFLO0FBQ0w7QUFDQSxlQUFlLDREQUFTO0FBQ3hCO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsOENBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjs7QUFFakI7QUFDQTtBQUNBLGVBQWUsMEVBQXVCLGlDQUFpQzs7QUFFdkU7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFVBQVUsMERBQU87QUFDakI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSwwRUFBdUI7QUFDdEM7O0FBRUEsaUJBQWlCLDJEQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsK0NBQStDOztBQUUvQztBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUM7QUFDRCw4Q0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQzs7QUFFMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsMERBQU87QUFDakIsVUFBVSwwREFBTztBQUNqQix1QkFBdUIsa0VBQWU7QUFDdEM7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsOENBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEM7O0FBRTFDO0FBQ0E7QUFDQSxRQUFRLDJEQUFRO0FBQ2hCLFFBQVEsMkRBQVE7O0FBRWhCO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixrRUFBZTtBQUN2Qyx3QkFBd0Isa0VBQWU7QUFDdkM7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGlCQUFpQjs7QUFFbEIsOENBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDJEQUFRO0FBQ2hCLFFBQVEsMkRBQVE7QUFDaEIsUUFBUSwyREFBUTtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsV0FBVzs7QUFFWiw4Q0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsMkRBQVE7QUFDaEIsUUFBUSwyREFBUTtBQUNoQixRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsOENBQUs7QUFDTDtBQUNBLFdBQVcsaUVBQVc7QUFDdEIsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1jb3JlQDAuNS4wQEBhbnR2L2c2LWNvcmUvZXMvZWxlbWVudC9lZGdlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IOiHquWumuS5iei+uVxuICogQGRlc2NyaXB0aW9uIOiHquWumuS5iei+ueS4reacieWkp+mHj+mAu+i+keWQjOiHquWumuS5ieiKgueCuemHjeWkje+8jOiZveeEtuWPr+S7peaPkOWPluaIkOS4uiBtaXhpbiDvvIzkvYbmmK/ogIPomZHliLDku6PnoIHnmoTlj6/or7vmgKfvvIzov5jmmK/ljZXni6zlrp7njrDjgIJcbiAqL1xuaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGRlZXBNaXgsIG1peCwgZWFjaCwgaXNOaWwsIGlzTnVtYmVyLCBpc0FycmF5IH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBnZXRMYWJlbFBvc2l0aW9uLCBnZXRMb29wQ2ZncyB9IGZyb20gJy4uL3V0aWwvZ3JhcGhpYyc7XG5pbXBvcnQgeyBkaXN0YW5jZSwgZ2V0Q2lyY2xlQ2VudGVyQnlQb2ludHMgfSBmcm9tICcuLi91dGlsL21hdGgnO1xuaW1wb3J0IHsgZ2V0Q29udHJvbFBvaW50LCBnZXRTcGxpbmUgfSBmcm9tICcuLi91dGlsL3BhdGgnO1xuaW1wb3J0IEdsb2JhbCBmcm9tICcuLi9nbG9iYWwnO1xuaW1wb3J0IFNoYXBlIGZyb20gJy4vc2hhcGUnO1xuaW1wb3J0IHsgc2hhcGVCYXNlLCBDTFNfTEFCRUxfQkdfU1VGRklYIH0gZnJvbSAnLi9zaGFwZUJhc2UnO1xudmFyIENMU19TSEFQRSA9ICdlZGdlLXNoYXBlJzsgLy8gc3RhcnQsZW5kIOWAkue9ru+8jGNlbnRlciDkuI3lj5hcblxuZnVuY3Rpb24gcmV2ZXJ0QWxpZ24obGFiZWxQb3NpdGlvbikge1xuICB2YXIgdGV4dEFsaWduID0gbGFiZWxQb3NpdGlvbjtcblxuICBpZiAobGFiZWxQb3NpdGlvbiA9PT0gJ3N0YXJ0Jykge1xuICAgIHRleHRBbGlnbiA9ICdlbmQnO1xuICB9IGVsc2UgaWYgKGxhYmVsUG9zaXRpb24gPT09ICdlbmQnKSB7XG4gICAgdGV4dEFsaWduID0gJ3N0YXJ0JztcbiAgfVxuXG4gIHJldHVybiB0ZXh0QWxpZ247XG59XG5cbnZhciBzaW5nbGVFZGdlID0ge1xuICBpdGVtVHlwZTogJ2VkZ2UnLFxuXG4gIC8qKlxuICAgKiDmlofmnKznmoTkvY3nva5cbiAgICogQHR5cGUge1N0cmluZ31cbiAgICovXG4gIGxhYmVsUG9zaXRpb246ICdjZW50ZXInLFxuXG4gIC8qKlxuICAgKiDmlofmnKznmoQgeCDlgY/np7tcbiAgICogQHR5cGUge051bWJlcn1cbiAgICovXG4gIHJlZlg6IDAsXG5cbiAgLyoqXG4gICAqIOaWh+acrOeahCB5IOWBj+enu1xuICAgKiBAdHlwZSB7TnVtYmVyfVxuICAgKi9cbiAgcmVmWTogMCxcblxuICAvKipcbiAgICog5paH5pys5piv5ZCm6Lef552A57q/6Ieq5Yqo5peL6L2s77yM6buY6K6kIGZhbHNlXG4gICAqIEB0eXBlIHtCb29sZWFufVxuICAgKi9cbiAgbGFiZWxBdXRvUm90YXRlOiBmYWxzZSxcbiAgLy8g6Ieq5a6a5LmJ6L655pe255qE6YWN572uXG4gIG9wdGlvbnM6IHtcbiAgICBzaXplOiBHbG9iYWwuZGVmYXVsdEVkZ2Uuc2l6ZSxcbiAgICBzdHlsZToge1xuICAgICAgeDogMCxcbiAgICAgIHk6IDAsXG4gICAgICBzdHJva2U6IEdsb2JhbC5kZWZhdWx0RWRnZS5zdHlsZS5zdHJva2UsXG4gICAgICBsaW5lQXBwZW5kV2lkdGg6IEdsb2JhbC5kZWZhdWx0RWRnZS5zdHlsZS5saW5lQXBwZW5kV2lkdGhcbiAgICB9LFxuICAgIGxhYmVsQ2ZnOiB7XG4gICAgICBzdHlsZToge1xuICAgICAgICBmaWxsOiBHbG9iYWwuZWRnZUxhYmVsLnN0eWxlLmZpbGwsXG4gICAgICAgIGZvbnRTaXplOiBHbG9iYWwuZWRnZUxhYmVsLnN0eWxlLmZvbnRTaXplLFxuICAgICAgICBmb250RmFtaWx5OiBHbG9iYWwud2luZG93Rm9udEZhbWlseVxuICAgICAgfVxuICAgIH0sXG4gICAgc3RhdGVTdHlsZXM6IF9fYXNzaWduKHt9LCBHbG9iYWwuZWRnZVN0YXRlU3R5bGVzKVxuICB9LFxuXG4gIC8qKlxuICAgKiDojrflj5bovrnnmoQgcGF0aFxuICAgKiBAaW50ZXJuYWwg5L6b5omp5bGV55qE6L656KaG55uWXG4gICAqIEBwYXJhbSAge0FycmF5fSBwb2ludHMg5p6E5oiQ6L6555qE54K555qE6ZuG5ZCIXG4gICAqIEByZXR1cm4ge0FycmF5fSDmnoTmiJAgcGF0aCDnmoTmlbDnu4RcbiAgICovXG4gIGdldFBhdGg6IGZ1bmN0aW9uIGdldFBhdGgocG9pbnRzKSB7XG4gICAgdmFyIHBhdGggPSBbXTtcbiAgICBlYWNoKHBvaW50cywgZnVuY3Rpb24gKHBvaW50LCBpbmRleCkge1xuICAgICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICAgIHBhdGgucHVzaChbJ00nLCBwb2ludC54LCBwb2ludC55XSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXRoLnB1c2goWydMJywgcG9pbnQueCwgcG9pbnQueV0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBwYXRoO1xuICB9LFxuICBnZXRTaGFwZVN0eWxlOiBmdW5jdGlvbiBnZXRTaGFwZVN0eWxlKGNmZykge1xuICAgIHZhciBkZWZhdWx0U3R5bGUgPSB0aGlzLm9wdGlvbnMuc3R5bGU7XG4gICAgdmFyIHN0cm9rZVN0eWxlID0ge1xuICAgICAgc3Ryb2tlOiBjZmcuY29sb3JcbiAgICB9OyAvLyDlpoLmnpzorr7nva7kuoZjb2xvcu+8jOWImeimhueblum7mOiupOeahHN0cm9rZeWxnuaAp1xuXG4gICAgdmFyIHN0eWxlID0gbWl4KHt9LCBkZWZhdWx0U3R5bGUsIHN0cm9rZVN0eWxlLCBjZmcuc3R5bGUpO1xuICAgIHZhciBzaXplID0gY2ZnLnNpemUgfHwgR2xvYmFsLmRlZmF1bHRFZGdlLnNpemU7XG4gICAgY2ZnID0gdGhpcy5nZXRQYXRoUG9pbnRzKGNmZyk7XG4gICAgdmFyIHN0YXJ0UG9pbnQgPSBjZmcuc3RhcnRQb2ludCxcbiAgICAgICAgZW5kUG9pbnQgPSBjZmcuZW5kUG9pbnQ7XG4gICAgdmFyIGNvbnRyb2xQb2ludHMgPSB0aGlzLmdldENvbnRyb2xQb2ludHMoY2ZnKTtcbiAgICB2YXIgcG9pbnRzID0gW3N0YXJ0UG9pbnRdOyAvLyDmt7vliqDotbflp4vngrlcbiAgICAvLyDmt7vliqDmjqfliLbngrlcblxuICAgIGlmIChjb250cm9sUG9pbnRzKSB7XG4gICAgICBwb2ludHMgPSBwb2ludHMuY29uY2F0KGNvbnRyb2xQb2ludHMpO1xuICAgIH0gLy8g5re75Yqg57uT5p2f54K5XG5cblxuICAgIHBvaW50cy5wdXNoKGVuZFBvaW50KTtcbiAgICB2YXIgcGF0aCA9IHRoaXMuZ2V0UGF0aChwb2ludHMpO1xuICAgIHZhciBzdHlsZXMgPSBtaXgoe30sIEdsb2JhbC5kZWZhdWx0RWRnZS5zdHlsZSwge1xuICAgICAgc3Ryb2tlOiBHbG9iYWwuZGVmYXVsdEVkZ2UuY29sb3IsXG4gICAgICBsaW5lV2lkdGg6IHNpemUsXG4gICAgICBwYXRoOiBwYXRoXG4gICAgfSwgc3R5bGUpO1xuICAgIHJldHVybiBzdHlsZXM7XG4gIH0sXG4gIHVwZGF0ZVNoYXBlU3R5bGU6IGZ1bmN0aW9uIHVwZGF0ZVNoYXBlU3R5bGUoY2ZnLCBpdGVtLCB1cGRhdGVUeXBlKSB7XG4gICAgdmFyIF9hO1xuXG4gICAgdmFyIGdyb3VwID0gaXRlbS5nZXRDb250YWluZXIoKTsgLy8gY29uc3Qgc3Ryb2tlU3R5bGU6IFNoYXBlU3R5bGUgPSB7XG4gICAgLy8gICBzdHJva2U6IGNmZy5jb2xvcixcbiAgICAvLyB9O1xuXG4gICAgdmFyIHNoYXBlID0gKChfYSA9IGl0ZW0uZ2V0S2V5U2hhcGUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKGl0ZW0pKSB8fCBncm91cFsnc2hhcGVNYXAnXVsnZWRnZS1zaGFwZSddOyAvLyBncm91cC5maW5kKChlbGVtZW50KSA9PiBlbGVtZW50LmdldCgnY2xhc3NOYW1lJykgPT09ICdlZGdlLXNoYXBlJyk7XG5cbiAgICB2YXIgc2l6ZSA9IGNmZy5zaXplO1xuICAgIGNmZyA9IHRoaXMuZ2V0UGF0aFBvaW50cyhjZmcpO1xuICAgIHZhciBzdGFydFBvaW50ID0gY2ZnLnN0YXJ0UG9pbnQsXG4gICAgICAgIGVuZFBvaW50ID0gY2ZnLmVuZFBvaW50O1xuICAgIHZhciBjb250cm9sUG9pbnRzID0gdGhpcy5nZXRDb250cm9sUG9pbnRzKGNmZyk7IC8vIHx8IGNmZy5jb250cm9sUG9pbnRzO1xuXG4gICAgdmFyIHBvaW50cyA9IFtzdGFydFBvaW50XTsgLy8g5re75Yqg6LW35aeL54K5XG4gICAgLy8g5re75Yqg5o6n5Yi254K5XG5cbiAgICBpZiAoY29udHJvbFBvaW50cykge1xuICAgICAgcG9pbnRzID0gcG9pbnRzLmNvbmNhdChjb250cm9sUG9pbnRzKTtcbiAgICB9IC8vIOa3u+WKoOe7k+adn+eCuVxuXG5cbiAgICBwb2ludHMucHVzaChlbmRQb2ludCk7XG4gICAgdmFyIGN1cnJlbnRBdHRyID0gc2hhcGUuYXR0cigpOyAvLyBjb25zdCBwcmV2aW91c1N0eWxlID0gbWl4KHt9LCBzdHJva2VTdHlsZSwgY3VycmVudEF0dHIsIGNmZy5zdHlsZSk7XG5cbiAgICB2YXIgcHJldmlvdXNTdHlsZSA9IGNmZy5zdHlsZSB8fCB7fTtcblxuICAgIGlmIChwcmV2aW91c1N0eWxlLnN0cm9rZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBwcmV2aW91c1N0eWxlLnN0cm9rZSA9IGNmZy5jb2xvcjtcbiAgICB9XG5cbiAgICB2YXIgc291cmNlID0gY2ZnLnNvdXJjZU5vZGU7XG4gICAgdmFyIHRhcmdldCA9IGNmZy50YXJnZXROb2RlO1xuICAgIHZhciByb3V0ZUNmZyA9IHtcbiAgICAgIHJhZGl1czogcHJldmlvdXNTdHlsZS5yYWRpdXNcbiAgICB9O1xuXG4gICAgaWYgKCFjb250cm9sUG9pbnRzKSB7XG4gICAgICByb3V0ZUNmZyA9IHtcbiAgICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICAgIHRhcmdldDogdGFyZ2V0LFxuICAgICAgICBvZmZzZXQ6IHByZXZpb3VzU3R5bGUub2Zmc2V0LFxuICAgICAgICByYWRpdXM6IHByZXZpb3VzU3R5bGUucmFkaXVzXG4gICAgICB9O1xuICAgIH1cblxuICAgIHZhciBwYXRoID0gdGhpcy5nZXRQYXRoKHBvaW50cywgcm91dGVDZmcpO1xuICAgIHZhciBzdHlsZSA9IHt9O1xuXG4gICAgaWYgKHVwZGF0ZVR5cGUgPT09ICdtb3ZlJykge1xuICAgICAgc3R5bGUgPSB7XG4gICAgICAgIHBhdGg6IHBhdGhcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjdXJyZW50QXR0ci5lbmRBcnJvdyAmJiBwcmV2aW91c1N0eWxlLmVuZEFycm93ID09PSBmYWxzZSkge1xuICAgICAgICBjZmcuc3R5bGUuZW5kQXJyb3cgPSB7XG4gICAgICAgICAgcGF0aDogJydcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKGN1cnJlbnRBdHRyLnN0YXJ0QXJyb3cgJiYgcHJldmlvdXNTdHlsZS5zdGFydEFycm93ID09PSBmYWxzZSkge1xuICAgICAgICBjZmcuc3R5bGUuc3RhcnRBcnJvdyA9IHtcbiAgICAgICAgICBwYXRoOiAnJ1xuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBzdHlsZSA9IF9fYXNzaWduKHt9LCBjZmcuc3R5bGUpO1xuICAgICAgaWYgKHN0eWxlLmxpbmVXaWR0aCA9PT0gdW5kZWZpbmVkKSBzdHlsZS5saW5lV2RpdGggPSAoaXNOdW1iZXIoc2l6ZSkgPyBzaXplIDogc2l6ZSA9PT0gbnVsbCB8fCBzaXplID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzaXplWzBdKSB8fCBjdXJyZW50QXR0ci5saW5lV2lkdGg7XG4gICAgICBpZiAoc3R5bGUucGF0aCA9PT0gdW5kZWZpbmVkKSBzdHlsZS5wYXRoID0gcGF0aDtcbiAgICAgIGlmIChzdHlsZS5zdHJva2UgPT09IHVuZGVmaW5lZCkgc3R5bGUuc3Ryb2tlID0gY3VycmVudEF0dHIuc3Ryb2tlIHx8IGNmZy5jb2xvcjtcbiAgICB9XG5cbiAgICBpZiAoc2hhcGUpIHtcbiAgICAgIHNoYXBlLmF0dHIoc3R5bGUpO1xuICAgIH1cbiAgfSxcbiAgZ2V0TGFiZWxTdHlsZUJ5UG9zaXRpb246IGZ1bmN0aW9uIGdldExhYmVsU3R5bGVCeVBvc2l0aW9uKGNmZywgbGFiZWxDZmcsIGdyb3VwKSB7XG4gICAgdmFyIGxhYmVsUG9zaXRpb24gPSBsYWJlbENmZy5wb3NpdGlvbiB8fCB0aGlzLmxhYmVsUG9zaXRpb247IC8vIOaWh+acrOeahOS9jee9rueUqOaIt+WPr+S7peS8oOWFpVxuXG4gICAgdmFyIHN0eWxlID0ge307XG4gICAgdmFyIHBhdGhTaGFwZSA9IGdyb3VwID09PSBudWxsIHx8IGdyb3VwID09PSB2b2lkIDAgPyB2b2lkIDAgOiBncm91cFsnc2hhcGVNYXAnXVtDTFNfU0hBUEVdOyAvLyBncm91cD8uZmluZCgoZWxlbWVudCkgPT4gZWxlbWVudC5nZXQoJ2NsYXNzTmFtZScpID09PSBDTFNfU0hBUEUpO1xuICAgIC8vIOS4jeWvuSBwYXRoU2hhcGUg6L+b6KGM5Yik56m677yM5aaC5p6c57q/5LiN5a2Y5Zyo77yM6K+05piO5pyJ6Zeu6aKY5LqGXG5cbiAgICB2YXIgcG9pbnRQZXJjZW50O1xuXG4gICAgaWYgKGxhYmVsUG9zaXRpb24gPT09ICdzdGFydCcpIHtcbiAgICAgIHBvaW50UGVyY2VudCA9IDA7XG4gICAgfSBlbHNlIGlmIChsYWJlbFBvc2l0aW9uID09PSAnZW5kJykge1xuICAgICAgcG9pbnRQZXJjZW50ID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgcG9pbnRQZXJjZW50ID0gMC41O1xuICAgIH0gLy8g5YGP56e76YePXG5cblxuICAgIHZhciBvZmZzZXRYID0gbGFiZWxDZmcucmVmWCB8fCB0aGlzLnJlZlg7XG4gICAgdmFyIG9mZnNldFkgPSBsYWJlbENmZy5yZWZZIHx8IHRoaXMucmVmWTsgLy8g5aaC5p6c5Lik5Liq6IqC54K56YeN5Y+g77yM57q/5bCx5Y+Y5oiQ5LqG5LiA5Liq54K577yM6L+Z5pe25YCZbGFiZWznmoTkvY3nva7vvIzlsLHmmK/ov5nkuKrngrkgKyDnu53lr7nlgY/np7tcblxuICAgIGlmIChjZmcuc3RhcnRQb2ludC54ID09PSBjZmcuZW5kUG9pbnQueCAmJiBjZmcuc3RhcnRQb2ludC55ID09PSBjZmcuZW5kUG9pbnQueSkge1xuICAgICAgc3R5bGUueCA9IGNmZy5zdGFydFBvaW50LnggKyBvZmZzZXRYO1xuICAgICAgc3R5bGUueSA9IGNmZy5zdGFydFBvaW50LnkgKyBvZmZzZXRZO1xuICAgICAgc3R5bGUudGV4dCA9IGNmZy5sYWJlbDtcbiAgICAgIHJldHVybiBzdHlsZTtcbiAgICB9XG5cbiAgICB2YXIgYXV0b1JvdGF0ZTtcbiAgICBpZiAoaXNOaWwobGFiZWxDZmcuYXV0b1JvdGF0ZSkpIGF1dG9Sb3RhdGUgPSB0aGlzLmxhYmVsQXV0b1JvdGF0ZTtlbHNlIGF1dG9Sb3RhdGUgPSBsYWJlbENmZy5hdXRvUm90YXRlO1xuICAgIHZhciBvZmZzZXRTdHlsZSA9IGdldExhYmVsUG9zaXRpb24ocGF0aFNoYXBlLCBwb2ludFBlcmNlbnQsIG9mZnNldFgsIG9mZnNldFksIGF1dG9Sb3RhdGUpO1xuICAgIHN0eWxlLnggPSBvZmZzZXRTdHlsZS54O1xuICAgIHN0eWxlLnkgPSBvZmZzZXRTdHlsZS55O1xuICAgIHN0eWxlLnJvdGF0ZSA9IG9mZnNldFN0eWxlLnJvdGF0ZTtcbiAgICBzdHlsZS50ZXh0QWxpZ24gPSB0aGlzLl9nZXRUZXh0QWxpZ24obGFiZWxQb3NpdGlvbiwgb2Zmc2V0U3R5bGUuYW5nbGUpO1xuICAgIHN0eWxlLnRleHQgPSBjZmcubGFiZWw7XG4gICAgcmV0dXJuIHN0eWxlO1xuICB9LFxuICBnZXRMYWJlbEJnU3R5bGVCeVBvc2l0aW9uOiBmdW5jdGlvbiBnZXRMYWJlbEJnU3R5bGVCeVBvc2l0aW9uKGxhYmVsLCBjZmcsIGxhYmVsQ2ZnLCBncm91cCkge1xuICAgIGlmICghbGFiZWwpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICB2YXIgYmJveCA9IGxhYmVsLmdldEJCb3goKTtcbiAgICB2YXIgYmFja2dyb3VuZFN0eWxlID0gbGFiZWxDZmcuc3R5bGUgJiYgbGFiZWxDZmcuc3R5bGUuYmFja2dyb3VuZDtcblxuICAgIGlmICghYmFja2dyb3VuZFN0eWxlKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgdmFyIHBhZGRpbmcgPSBiYWNrZ3JvdW5kU3R5bGUucGFkZGluZztcbiAgICB2YXIgYmFja2dyb3VuZFdpZHRoID0gYmJveC53aWR0aCArIHBhZGRpbmdbMV0gKyBwYWRkaW5nWzNdO1xuICAgIHZhciBiYWNrZ3JvdW5kSGVpZ2h0ID0gYmJveC5oZWlnaHQgKyBwYWRkaW5nWzBdICsgcGFkZGluZ1syXTtcbiAgICB2YXIgbGFiZWxQb3NpdGlvbiA9IGxhYmVsQ2ZnLnBvc2l0aW9uIHx8IHRoaXMubGFiZWxQb3NpdGlvbjtcblxuICAgIHZhciBzdHlsZSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBiYWNrZ3JvdW5kU3R5bGUpLCB7XG4gICAgICB3aWR0aDogYmFja2dyb3VuZFdpZHRoLFxuICAgICAgaGVpZ2h0OiBiYWNrZ3JvdW5kSGVpZ2h0LFxuICAgICAgeDogYmJveC5taW5YIC0gcGFkZGluZ1syXSxcbiAgICAgIHk6IGJib3gubWluWSAtIHBhZGRpbmdbMF0sXG4gICAgICByb3RhdGU6IDBcbiAgICB9KTtcblxuICAgIHZhciBhdXRvUm90YXRlO1xuICAgIGlmIChpc05pbChsYWJlbENmZy5hdXRvUm90YXRlKSkgYXV0b1JvdGF0ZSA9IHRoaXMubGFiZWxBdXRvUm90YXRlO2Vsc2UgYXV0b1JvdGF0ZSA9IGxhYmVsQ2ZnLmF1dG9Sb3RhdGU7XG4gICAgdmFyIHBhdGhTaGFwZSA9IGdyb3VwID09PSBudWxsIHx8IGdyb3VwID09PSB2b2lkIDAgPyB2b2lkIDAgOiBncm91cFsnc2hhcGVNYXAnXVtDTFNfU0hBUEVdOyAvLyBncm91cD8uZmluZCgoZWxlbWVudCkgPT4gZWxlbWVudC5nZXQoJ2NsYXNzTmFtZScpID09PSBDTFNfU0hBUEUpO1xuICAgIC8vIOS4jeWvuSBwYXRoU2hhcGUg6L+b6KGM5Yik56m677yM5aaC5p6c57q/5LiN5a2Y5Zyo77yM6K+05piO5pyJ6Zeu6aKY5LqGXG5cbiAgICB2YXIgcG9pbnRQZXJjZW50O1xuXG4gICAgaWYgKGxhYmVsUG9zaXRpb24gPT09ICdzdGFydCcpIHtcbiAgICAgIHBvaW50UGVyY2VudCA9IDA7XG4gICAgfSBlbHNlIGlmIChsYWJlbFBvc2l0aW9uID09PSAnZW5kJykge1xuICAgICAgcG9pbnRQZXJjZW50ID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgcG9pbnRQZXJjZW50ID0gMC41O1xuICAgIH0gLy8g5YGP56e76YePXG5cblxuICAgIHZhciBvZmZzZXRYID0gbGFiZWxDZmcucmVmWCB8fCB0aGlzLnJlZlg7XG4gICAgdmFyIG9mZnNldFkgPSBsYWJlbENmZy5yZWZZIHx8IHRoaXMucmVmWTsgLy8gLy8g5aaC5p6c5Lik5Liq6IqC54K56YeN5Y+g77yM57q/5bCx5Y+Y5oiQ5LqG5LiA5Liq54K577yM6L+Z5pe25YCZbGFiZWznmoTkvY3nva7vvIzlsLHmmK/ov5nkuKrngrkgKyDnu53lr7nlgY/np7tcblxuICAgIGlmIChjZmcuc3RhcnRQb2ludC54ID09PSBjZmcuZW5kUG9pbnQueCAmJiBjZmcuc3RhcnRQb2ludC55ID09PSBjZmcuZW5kUG9pbnQueSkge1xuICAgICAgc3R5bGUueCA9IGNmZy5zdGFydFBvaW50LnggKyBvZmZzZXRYIC0gYmFja2dyb3VuZFdpZHRoIC8gMjtcbiAgICAgIHN0eWxlLnkgPSBjZmcuc3RhcnRQb2ludC55ICsgb2Zmc2V0WSAtIGJhY2tncm91bmRIZWlnaHQgLyAyO1xuICAgICAgcmV0dXJuIHN0eWxlO1xuICAgIH1cblxuICAgIHZhciBiZ09mZnNldFggPSBvZmZzZXRYIC0gYmFja2dyb3VuZFdpZHRoIC8gMjtcblxuICAgIGlmIChsYWJlbENmZy5wb3NpdGlvbiA9PT0gJ3N0YXJ0Jykge1xuICAgICAgYmdPZmZzZXRYID0gb2Zmc2V0WCAtIHBhZGRpbmdbMl07XG4gICAgfSBlbHNlIGlmIChsYWJlbENmZy5wb3NpdGlvbiA9PT0gJ2VuZCcpIHtcbiAgICAgIGJnT2Zmc2V0WCA9IG9mZnNldFggLSBiYWNrZ3JvdW5kV2lkdGg7XG4gICAgfVxuXG4gICAgdmFyIG9mZnNldFN0eWxlID0gZ2V0TGFiZWxQb3NpdGlvbihwYXRoU2hhcGUsIHBvaW50UGVyY2VudCwgYmdPZmZzZXRYLCBvZmZzZXRZICsgYmFja2dyb3VuZEhlaWdodCAvIDIsIGF1dG9Sb3RhdGUpO1xuXG4gICAgaWYgKGF1dG9Sb3RhdGUpIHtcbiAgICAgIHN0eWxlLnggPSBvZmZzZXRTdHlsZS54O1xuICAgICAgc3R5bGUueSA9IG9mZnNldFN0eWxlLnk7XG4gICAgfVxuXG4gICAgc3R5bGUucm90YXRlID0gb2Zmc2V0U3R5bGUucm90YXRlO1xuICAgIHJldHVybiBzdHlsZTtcbiAgfSxcbiAgLy8g6I635Y+W5paH5pys5a+56b2Q5pa55byPXG4gIF9nZXRUZXh0QWxpZ246IGZ1bmN0aW9uIF9nZXRUZXh0QWxpZ24obGFiZWxQb3NpdGlvbiwgYW5nbGUpIHtcbiAgICB2YXIgdGV4dEFsaWduID0gJ2NlbnRlcic7XG5cbiAgICBpZiAoIWFuZ2xlKSB7XG4gICAgICByZXR1cm4gbGFiZWxQb3NpdGlvbjtcbiAgICB9XG5cbiAgICBhbmdsZSA9IGFuZ2xlICUgKE1hdGguUEkgKiAyKTsgLy8g5Y+W5qihXG5cbiAgICBpZiAobGFiZWxQb3NpdGlvbiAhPT0gJ2NlbnRlcicpIHtcbiAgICAgIGlmIChhbmdsZSA+PSAwICYmIGFuZ2xlIDw9IE1hdGguUEkgLyAyIHx8IGFuZ2xlID49IDMgLyAyICogTWF0aC5QSSAmJiBhbmdsZSA8IDIgKiBNYXRoLlBJKSB7XG4gICAgICAgIHRleHRBbGlnbiA9IGxhYmVsUG9zaXRpb247XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0ZXh0QWxpZ24gPSByZXZlcnRBbGlnbihsYWJlbFBvc2l0aW9uKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGV4dEFsaWduO1xuICB9LFxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWwg6I635Y+W6L6555qE5o6n5Yi254K5XG4gICAqIEBwYXJhbSAge09iamVjdH0gY2ZnIOi+ueeahOmFjee9rumhuVxuICAgKiBAcmV0dXJuIHtBcnJheX0g5o6n5Yi254K555qE5pWw57uEXG4gICAqL1xuICBnZXRDb250cm9sUG9pbnRzOiBmdW5jdGlvbiBnZXRDb250cm9sUG9pbnRzKGNmZykge1xuICAgIHJldHVybiBjZmcuY29udHJvbFBvaW50cztcbiAgfSxcblxuICAvKipcbiAgICogQGludGVybmFsIOWkhOeQhumcgOimgemHjeiuoeeul+eCueWSjOi+ueeahOaDheWGtVxuICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIOi+ueeahOmFjee9rumhuVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IOi+ueeahOmFjee9rumhuVxuICAgKi9cbiAgZ2V0UGF0aFBvaW50czogZnVuY3Rpb24gZ2V0UGF0aFBvaW50cyhjZmcpIHtcbiAgICByZXR1cm4gY2ZnO1xuICB9LFxuXG4gIC8qKlxuICAgKiDnu5jliLbovrlcbiAgICogQG92ZXJyaWRlXG4gICAqIEBwYXJhbSAge09iamVjdH0gY2ZnICAg6L6555qE6YWN572u6aG5XG4gICAqIEBwYXJhbSAge0cuR3JvdXB9IGdyb3VwIOi+ueeahOWuueWZqFxuICAgKiBAcmV0dXJuIHtJU2hhcGV9IOWbvuW9olxuICAgKi9cbiAgZHJhd1NoYXBlOiBmdW5jdGlvbiBkcmF3U2hhcGUoY2ZnLCBncm91cCkge1xuICAgIHZhciBzaGFwZVN0eWxlID0gdGhpcy5nZXRTaGFwZVN0eWxlKGNmZyk7XG4gICAgdmFyIHNoYXBlID0gZ3JvdXAuYWRkU2hhcGUoJ3BhdGgnLCB7XG4gICAgICBjbGFzc05hbWU6IENMU19TSEFQRSxcbiAgICAgIG5hbWU6IENMU19TSEFQRSxcbiAgICAgIGF0dHJzOiBzaGFwZVN0eWxlXG4gICAgfSk7XG4gICAgZ3JvdXBbJ3NoYXBlTWFwJ11bQ0xTX1NIQVBFXSA9IHNoYXBlO1xuICAgIHJldHVybiBzaGFwZTtcbiAgfSxcbiAgZHJhd0xhYmVsOiBmdW5jdGlvbiBkcmF3TGFiZWwoY2ZnLCBncm91cCkge1xuICAgIHZhciBkZWZhdWx0TGFiZWxDZmcgPSB0aGlzLm9wdGlvbnMubGFiZWxDZmc7XG4gICAgdmFyIGxhYmVsQ2ZnID0gZGVlcE1peCh7fSwgZGVmYXVsdExhYmVsQ2ZnLCBjZmcubGFiZWxDZmcpO1xuICAgIHZhciBsYWJlbFN0eWxlID0gdGhpcy5nZXRMYWJlbFN0eWxlKGNmZywgbGFiZWxDZmcsIGdyb3VwKTtcbiAgICB2YXIgcm90YXRlID0gbGFiZWxTdHlsZS5yb3RhdGU7XG4gICAgZGVsZXRlIGxhYmVsU3R5bGUucm90YXRlO1xuICAgIHZhciBsYWJlbCA9IGdyb3VwLmFkZFNoYXBlKCd0ZXh0Jywge1xuICAgICAgYXR0cnM6IGxhYmVsU3R5bGUsXG4gICAgICBuYW1lOiAndGV4dC1zaGFwZSdcbiAgICB9KTtcbiAgICBncm91cFsnc2hhcGVNYXAnXVsndGV4dC1zaGFwZSddID0gbGFiZWw7XG5cbiAgICBpZiAoIWlzTmFOKHJvdGF0ZSkgJiYgcm90YXRlICE9PSAnJykge1xuICAgICAgbGFiZWwucm90YXRlQXRTdGFydChyb3RhdGUpO1xuICAgIH1cblxuICAgIGlmIChsYWJlbFN0eWxlLmJhY2tncm91bmQpIHtcbiAgICAgIHZhciByZWN0ID0gdGhpcy5kcmF3TGFiZWxCZyhjZmcsIGdyb3VwLCBsYWJlbCwgbGFiZWxTdHlsZSwgcm90YXRlKTtcbiAgICAgIHZhciBsYWJlbEJnQ2xhc3NuYW1lID0gdGhpcy5pdGVtVHlwZSArIENMU19MQUJFTF9CR19TVUZGSVg7XG4gICAgICByZWN0LnNldCgnY2xhc3NuYW1lJywgbGFiZWxCZ0NsYXNzbmFtZSk7XG4gICAgICBncm91cFsnc2hhcGVNYXAnXVtsYWJlbEJnQ2xhc3NuYW1lXSA9IHJlY3Q7XG4gICAgICBsYWJlbC50b0Zyb250KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhYmVsO1xuICB9LFxuICBkcmF3TGFiZWxCZzogZnVuY3Rpb24gZHJhd0xhYmVsQmcoY2ZnLCBncm91cCwgbGFiZWwsIGxhYmVsU3R5bGUsIHJvdGF0ZSkge1xuICAgIHZhciBkZWZhdWx0TGFiZWxDZmcgPSB0aGlzLm9wdGlvbnMubGFiZWxDZmc7XG4gICAgdmFyIGxhYmVsQ2ZnID0gZGVlcE1peCh7fSwgZGVmYXVsdExhYmVsQ2ZnLCBjZmcubGFiZWxDZmcpO1xuICAgIHZhciBzdHlsZSA9IHRoaXMuZ2V0TGFiZWxCZ1N0eWxlQnlQb3NpdGlvbihsYWJlbCwgY2ZnLCBsYWJlbENmZywgZ3JvdXApO1xuICAgIGRlbGV0ZSBzdHlsZS5yb3RhdGU7XG4gICAgdmFyIHJlY3QgPSBncm91cC5hZGRTaGFwZSgncmVjdCcsIHtcbiAgICAgIG5hbWU6ICd0ZXh0LWJnLXNoYXBlJyxcbiAgICAgIGF0dHJzOiBzdHlsZVxuICAgIH0pO1xuICAgIGdyb3VwWydzaGFwZU1hcCddWyd0ZXh0LWJnLXNoYXBlJ10gPSByZWN0O1xuICAgIGlmICghaXNOYU4ocm90YXRlKSkgcmVjdC5yb3RhdGVBdFN0YXJ0KHJvdGF0ZSk7XG4gICAgcmV0dXJuIHJlY3Q7XG4gIH1cbn07XG5cbnZhciBzaW5nbGVFZGdlRGVmID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHNoYXBlQmFzZSksIHNpbmdsZUVkZ2UpO1xuXG5TaGFwZS5yZWdpc3RlckVkZ2UoJ3NpbmdsZS1lZGdlJywgc2luZ2xlRWRnZURlZik7IC8vIOebtOe6vywg5LiN5pSv5oyB5o6n5Yi254K5XG5cblNoYXBlLnJlZ2lzdGVyRWRnZSgnbGluZScsIHtcbiAgLy8g5o6n5Yi254K55LiN55Sf5pWIXG4gIGdldENvbnRyb2xQb2ludHM6IGZ1bmN0aW9uIGdldENvbnRyb2xQb2ludHMoKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufSwgJ3NpbmdsZS1lZGdlJyk7IC8vIOebtOe6v1xuXG5TaGFwZS5yZWdpc3RlckVkZ2UoJ3NwbGluZScsIHtcbiAgZ2V0UGF0aDogZnVuY3Rpb24gZ2V0UGF0aChwb2ludHMpIHtcbiAgICB2YXIgcGF0aCA9IGdldFNwbGluZShwb2ludHMpO1xuICAgIHJldHVybiBwYXRoO1xuICB9XG59LCAnc2luZ2xlLWVkZ2UnKTtcblNoYXBlLnJlZ2lzdGVyRWRnZSgnYXJjJywge1xuICBjdXJ2ZU9mZnNldDogMjAsXG4gIGNsb2Nrd2lzZTogMSxcbiAgZ2V0Q29udHJvbFBvaW50czogZnVuY3Rpb24gZ2V0Q29udHJvbFBvaW50cyhjZmcpIHtcbiAgICB2YXIgc3RhcnRQb2ludCA9IGNmZy5zdGFydFBvaW50LFxuICAgICAgICBlbmRQb2ludCA9IGNmZy5lbmRQb2ludDtcbiAgICB2YXIgbWlkUG9pbnQgPSB7XG4gICAgICB4OiAoc3RhcnRQb2ludC54ICsgZW5kUG9pbnQueCkgLyAyLFxuICAgICAgeTogKHN0YXJ0UG9pbnQueSArIGVuZFBvaW50LnkpIC8gMlxuICAgIH07XG4gICAgdmFyIGNlbnRlcjtcbiAgICB2YXIgYXJjUG9pbnQ7IC8vIOagueaNrue7meWumueCueiuoeeul+WchuW8p1xuXG4gICAgaWYgKGNmZy5jb250cm9sUG9pbnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGFyY1BvaW50ID0gY2ZnLmNvbnRyb2xQb2ludHNbMF07XG4gICAgICBjZW50ZXIgPSBnZXRDaXJjbGVDZW50ZXJCeVBvaW50cyhzdGFydFBvaW50LCBhcmNQb2ludCwgZW5kUG9pbnQpOyAvLyDmoLnmja7mjqfliLbngrnlkoznm7Tnur/lhbPns7vlhrPlrpogY2xvY2t3aXNl5YC8XG5cbiAgICAgIGlmIChzdGFydFBvaW50LnggPD0gZW5kUG9pbnQueCAmJiBzdGFydFBvaW50LnkgPiBlbmRQb2ludC55KSB7XG4gICAgICAgIHRoaXMuY2xvY2t3aXNlID0gY2VudGVyLnggPiBhcmNQb2ludC54ID8gMCA6IDE7XG4gICAgICB9IGVsc2UgaWYgKHN0YXJ0UG9pbnQueCA8PSBlbmRQb2ludC54ICYmIHN0YXJ0UG9pbnQueSA8IGVuZFBvaW50LnkpIHtcbiAgICAgICAgdGhpcy5jbG9ja3dpc2UgPSBjZW50ZXIueCA+IGFyY1BvaW50LnggPyAxIDogMDtcbiAgICAgIH0gZWxzZSBpZiAoc3RhcnRQb2ludC54ID4gZW5kUG9pbnQueCAmJiBzdGFydFBvaW50LnkgPD0gZW5kUG9pbnQueSkge1xuICAgICAgICB0aGlzLmNsb2Nrd2lzZSA9IGNlbnRlci55IDwgYXJjUG9pbnQueSA/IDAgOiAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jbG9ja3dpc2UgPSBjZW50ZXIueSA8IGFyY1BvaW50LnkgPyAxIDogMDtcbiAgICAgIH0gLy8g6Iul57uZ5a6a54K55ZKM5Lik56uv54K55YWx57q/77yM5peg5rOV55Sf5oiQ5ZyG5byn77yM57uY5Yi255u057q/XG5cblxuICAgICAgaWYgKChhcmNQb2ludC54IC0gc3RhcnRQb2ludC54KSAvIChhcmNQb2ludC55IC0gc3RhcnRQb2ludC55KSA9PT0gKGVuZFBvaW50LnggLSBzdGFydFBvaW50LngpIC8gKGVuZFBvaW50LnkgLSBzdGFydFBvaW50LnkpKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8g5qC55o2u55u057q/6L+e57q/5Lit54K555qE55qE5YGP56e76K6h566X5ZyG5bynXG4gICAgICAvLyDoi6XnlKjmiLfnu5nlrprlgY/np7vph4/liJnmoLnmja7lhbborqHnrpfvvIzlkKbliJnmjInnhafpu5jorqTlgY/np7vlgLzorqHnrpdcbiAgICAgIGlmIChjZmcuY3VydmVPZmZzZXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjZmcuY3VydmVPZmZzZXQgPSB0aGlzLmN1cnZlT2Zmc2V0O1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNBcnJheShjZmcuY3VydmVPZmZzZXQpKSB7XG4gICAgICAgIGNmZy5jdXJ2ZU9mZnNldCA9IGNmZy5jdXJ2ZU9mZnNldFswXTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNmZy5jdXJ2ZU9mZnNldCA8IDApIHtcbiAgICAgICAgdGhpcy5jbG9ja3dpc2UgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jbG9ja3dpc2UgPSAxO1xuICAgICAgfVxuXG4gICAgICB2YXIgdmVjID0ge1xuICAgICAgICB4OiBlbmRQb2ludC54IC0gc3RhcnRQb2ludC54LFxuICAgICAgICB5OiBlbmRQb2ludC55IC0gc3RhcnRQb2ludC55XG4gICAgICB9O1xuICAgICAgdmFyIGVkZ2VBbmdsZSA9IE1hdGguYXRhbjIodmVjLnksIHZlYy54KTtcbiAgICAgIGFyY1BvaW50ID0ge1xuICAgICAgICB4OiBjZmcuY3VydmVPZmZzZXQgKiBNYXRoLmNvcygtTWF0aC5QSSAvIDIgKyBlZGdlQW5nbGUpICsgbWlkUG9pbnQueCxcbiAgICAgICAgeTogY2ZnLmN1cnZlT2Zmc2V0ICogTWF0aC5zaW4oLU1hdGguUEkgLyAyICsgZWRnZUFuZ2xlKSArIG1pZFBvaW50LnlcbiAgICAgIH07XG4gICAgICBjZW50ZXIgPSBnZXRDaXJjbGVDZW50ZXJCeVBvaW50cyhzdGFydFBvaW50LCBhcmNQb2ludCwgZW5kUG9pbnQpO1xuICAgIH1cblxuICAgIHZhciByYWRpdXMgPSBkaXN0YW5jZShzdGFydFBvaW50LCBjZW50ZXIpO1xuICAgIHZhciBjb250cm9sUG9pbnRzID0gW3tcbiAgICAgIHg6IHJhZGl1cyxcbiAgICAgIHk6IHJhZGl1c1xuICAgIH1dO1xuICAgIHJldHVybiBjb250cm9sUG9pbnRzO1xuICB9LFxuICBnZXRQYXRoOiBmdW5jdGlvbiBnZXRQYXRoKHBvaW50cykge1xuICAgIHZhciBwYXRoID0gW107XG4gICAgcGF0aC5wdXNoKFsnTScsIHBvaW50c1swXS54LCBwb2ludHNbMF0ueV0pOyAvLyDmjqfliLbngrnkuI7nq6/ngrnlhbHnur9cblxuICAgIGlmIChwb2ludHMubGVuZ3RoID09PSAyKSB7XG4gICAgICBwYXRoLnB1c2goWydMJywgcG9pbnRzWzFdLngsIHBvaW50c1sxXS55XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhdGgucHVzaChbJ0EnLCBwb2ludHNbMV0ueCwgcG9pbnRzWzFdLnksIDAsIDAsIHRoaXMuY2xvY2t3aXNlLCBwb2ludHNbMl0ueCwgcG9pbnRzWzJdLnldKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGF0aDtcbiAgfVxufSwgJ3NpbmdsZS1lZGdlJyk7XG5TaGFwZS5yZWdpc3RlckVkZ2UoJ3F1YWRyYXRpYycsIHtcbiAgY3VydmVQb3NpdGlvbjogMC41LFxuICBjdXJ2ZU9mZnNldDogLTIwLFxuICBnZXRDb250cm9sUG9pbnRzOiBmdW5jdGlvbiBnZXRDb250cm9sUG9pbnRzKGNmZykge1xuICAgIHZhciBjb250cm9sUG9pbnRzID0gY2ZnLmNvbnRyb2xQb2ludHM7IC8vIOaMh+WummNvbnRyb2xQb2ludHNcblxuICAgIGlmICghY29udHJvbFBvaW50cyB8fCAhY29udHJvbFBvaW50cy5sZW5ndGgpIHtcbiAgICAgIHZhciBzdGFydFBvaW50ID0gY2ZnLnN0YXJ0UG9pbnQsXG4gICAgICAgICAgZW5kUG9pbnQgPSBjZmcuZW5kUG9pbnQ7XG4gICAgICBpZiAoY2ZnLmN1cnZlT2Zmc2V0ID09PSB1bmRlZmluZWQpIGNmZy5jdXJ2ZU9mZnNldCA9IHRoaXMuY3VydmVPZmZzZXQ7XG4gICAgICBpZiAoY2ZnLmN1cnZlUG9zaXRpb24gPT09IHVuZGVmaW5lZCkgY2ZnLmN1cnZlUG9zaXRpb24gPSB0aGlzLmN1cnZlUG9zaXRpb247XG4gICAgICBpZiAoaXNBcnJheSh0aGlzLmN1cnZlT2Zmc2V0KSkgY2ZnLmN1cnZlT2Zmc2V0ID0gY2ZnLmN1cnZlT2Zmc2V0WzBdO1xuICAgICAgaWYgKGlzQXJyYXkodGhpcy5jdXJ2ZVBvc2l0aW9uKSkgY2ZnLmN1cnZlUG9zaXRpb24gPSBjZmcuY3VydmVPZmZzZXRbMF07XG4gICAgICB2YXIgaW5uZXJQb2ludCA9IGdldENvbnRyb2xQb2ludChzdGFydFBvaW50LCBlbmRQb2ludCwgY2ZnLmN1cnZlUG9zaXRpb24sIGNmZy5jdXJ2ZU9mZnNldCk7XG4gICAgICBjb250cm9sUG9pbnRzID0gW2lubmVyUG9pbnRdO1xuICAgIH1cblxuICAgIHJldHVybiBjb250cm9sUG9pbnRzO1xuICB9LFxuICBnZXRQYXRoOiBmdW5jdGlvbiBnZXRQYXRoKHBvaW50cykge1xuICAgIHZhciBwYXRoID0gW107XG4gICAgcGF0aC5wdXNoKFsnTScsIHBvaW50c1swXS54LCBwb2ludHNbMF0ueV0pO1xuICAgIHBhdGgucHVzaChbJ1EnLCBwb2ludHNbMV0ueCwgcG9pbnRzWzFdLnksIHBvaW50c1syXS54LCBwb2ludHNbMl0ueV0pO1xuICAgIHJldHVybiBwYXRoO1xuICB9XG59LCAnc2luZ2xlLWVkZ2UnKTtcblNoYXBlLnJlZ2lzdGVyRWRnZSgnY3ViaWMnLCB7XG4gIGN1cnZlUG9zaXRpb246IFsxIC8gMiwgMSAvIDJdLFxuICBjdXJ2ZU9mZnNldDogWy0yMCwgMjBdLFxuICBnZXRDb250cm9sUG9pbnRzOiBmdW5jdGlvbiBnZXRDb250cm9sUG9pbnRzKGNmZykge1xuICAgIHZhciBjb250cm9sUG9pbnRzID0gY2ZnLmNvbnRyb2xQb2ludHM7IC8vIOaMh+WumiBjb250cm9sUG9pbnRzXG5cbiAgICBpZiAoY2ZnLmN1cnZlT2Zmc2V0ID09PSB1bmRlZmluZWQpIGNmZy5jdXJ2ZU9mZnNldCA9IHRoaXMuY3VydmVPZmZzZXQ7XG4gICAgaWYgKGNmZy5jdXJ2ZVBvc2l0aW9uID09PSB1bmRlZmluZWQpIGNmZy5jdXJ2ZVBvc2l0aW9uID0gdGhpcy5jdXJ2ZVBvc2l0aW9uO1xuICAgIGlmIChpc051bWJlcihjZmcuY3VydmVPZmZzZXQpKSBjZmcuY3VydmVPZmZzZXQgPSBbY2ZnLmN1cnZlT2Zmc2V0LCAtY2ZnLmN1cnZlT2Zmc2V0XTtcbiAgICBpZiAoaXNOdW1iZXIoY2ZnLmN1cnZlUG9zaXRpb24pKSBjZmcuY3VydmVQb3NpdGlvbiA9IFtjZmcuY3VydmVQb3NpdGlvbiwgMSAtIGNmZy5jdXJ2ZVBvc2l0aW9uXTtcblxuICAgIGlmICghY29udHJvbFBvaW50cyB8fCAhY29udHJvbFBvaW50cy5sZW5ndGggfHwgY29udHJvbFBvaW50cy5sZW5ndGggPCAyKSB7XG4gICAgICB2YXIgc3RhcnRQb2ludCA9IGNmZy5zdGFydFBvaW50LFxuICAgICAgICAgIGVuZFBvaW50ID0gY2ZnLmVuZFBvaW50O1xuICAgICAgdmFyIGlubmVyUG9pbnQxID0gZ2V0Q29udHJvbFBvaW50KHN0YXJ0UG9pbnQsIGVuZFBvaW50LCBjZmcuY3VydmVQb3NpdGlvblswXSwgY2ZnLmN1cnZlT2Zmc2V0WzBdKTtcbiAgICAgIHZhciBpbm5lclBvaW50MiA9IGdldENvbnRyb2xQb2ludChzdGFydFBvaW50LCBlbmRQb2ludCwgY2ZnLmN1cnZlUG9zaXRpb25bMV0sIGNmZy5jdXJ2ZU9mZnNldFsxXSk7XG4gICAgICBjb250cm9sUG9pbnRzID0gW2lubmVyUG9pbnQxLCBpbm5lclBvaW50Ml07XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRyb2xQb2ludHM7XG4gIH0sXG4gIGdldFBhdGg6IGZ1bmN0aW9uIGdldFBhdGgocG9pbnRzKSB7XG4gICAgdmFyIHBhdGggPSBbXTtcbiAgICBwYXRoLnB1c2goWydNJywgcG9pbnRzWzBdLngsIHBvaW50c1swXS55XSk7XG4gICAgcGF0aC5wdXNoKFsnQycsIHBvaW50c1sxXS54LCBwb2ludHNbMV0ueSwgcG9pbnRzWzJdLngsIHBvaW50c1syXS55LCBwb2ludHNbM10ueCwgcG9pbnRzWzNdLnldKTtcbiAgICByZXR1cm4gcGF0aDtcbiAgfVxufSwgJ3NpbmdsZS1lZGdlJyk7IC8vIOWeguebtOaWueWQkeeahOS4iemYtui0neWhnuWwlOabsue6v++8jOS4jeWGjeiAg+iZkeeUqOaIt+WklumDqOS8oOWFpeeahOaOp+WItueCuVxuXG5TaGFwZS5yZWdpc3RlckVkZ2UoJ2N1YmljLXZlcnRpY2FsJywge1xuICBjdXJ2ZVBvc2l0aW9uOiBbMSAvIDIsIDEgLyAyXSxcbiAgbWluQ3VydmVPZmZzZXQ6IFswLCAwXSxcbiAgY3VydmVPZmZzZXQ6IHVuZGVmaW5lZCxcbiAgZ2V0Q29udHJvbFBvaW50czogZnVuY3Rpb24gZ2V0Q29udHJvbFBvaW50cyhjZmcpIHtcbiAgICB2YXIgc3RhcnRQb2ludCA9IGNmZy5zdGFydFBvaW50LFxuICAgICAgICBlbmRQb2ludCA9IGNmZy5lbmRQb2ludDtcbiAgICBpZiAoY2ZnLmN1cnZlUG9zaXRpb24gPT09IHVuZGVmaW5lZCkgY2ZnLmN1cnZlUG9zaXRpb24gPSB0aGlzLmN1cnZlUG9zaXRpb247XG4gICAgaWYgKGNmZy5jdXJ2ZU9mZnNldCA9PT0gdW5kZWZpbmVkKSBjZmcuY3VydmVPZmZzZXQgPSB0aGlzLmN1cnZlT2Zmc2V0O1xuICAgIGlmIChjZmcubWluQ3VydmVPZmZzZXQgPT09IHVuZGVmaW5lZCkgY2ZnLm1pbkN1cnZlT2Zmc2V0ID0gdGhpcy5taW5DdXJ2ZU9mZnNldDtcbiAgICBpZiAoaXNOdW1iZXIoY2ZnLmN1cnZlT2Zmc2V0KSkgY2ZnLmN1cnZlT2Zmc2V0ID0gW2NmZy5jdXJ2ZU9mZnNldCwgLWNmZy5jdXJ2ZU9mZnNldF07XG4gICAgaWYgKGlzTnVtYmVyKGNmZy5taW5DdXJ2ZU9mZnNldCkpIGNmZy5taW5DdXJ2ZU9mZnNldCA9IFtjZmcubWluQ3VydmVPZmZzZXQsIC1jZmcubWluQ3VydmVPZmZzZXRdO1xuICAgIGlmIChpc051bWJlcihjZmcuY3VydmVQb3NpdGlvbikpIGNmZy5jdXJ2ZVBvc2l0aW9uID0gW2NmZy5jdXJ2ZVBvc2l0aW9uLCAxIC0gY2ZnLmN1cnZlUG9zaXRpb25dO1xuICAgIHZhciB5RGlzdCA9IGVuZFBvaW50LnkgLSBzdGFydFBvaW50Lnk7XG4gICAgdmFyIGN1cnZlT2Zmc2V0ID0gWzAsIDBdO1xuXG4gICAgaWYgKGNmZy5jdXJ2ZU9mZnNldCkge1xuICAgICAgY3VydmVPZmZzZXQgPSBjZmcuY3VydmVPZmZzZXQ7XG4gICAgfSBlbHNlIGlmIChNYXRoLmFicyh5RGlzdCkgPCBNYXRoLmFicyhjZmcubWluQ3VydmVPZmZzZXRbMF0pKSB7XG4gICAgICBjdXJ2ZU9mZnNldCA9IGNmZy5taW5DdXJ2ZU9mZnNldDtcbiAgICB9XG5cbiAgICB2YXIgaW5uZXJQb2ludDEgPSB7XG4gICAgICB4OiBzdGFydFBvaW50LngsXG4gICAgICB5OiBzdGFydFBvaW50LnkgKyB5RGlzdCAqIHRoaXMuY3VydmVQb3NpdGlvblswXSArIGN1cnZlT2Zmc2V0WzBdXG4gICAgfTtcbiAgICB2YXIgaW5uZXJQb2ludDIgPSB7XG4gICAgICB4OiBlbmRQb2ludC54LFxuICAgICAgeTogZW5kUG9pbnQueSAtIHlEaXN0ICogdGhpcy5jdXJ2ZVBvc2l0aW9uWzFdICsgY3VydmVPZmZzZXRbMV1cbiAgICB9O1xuICAgIHJldHVybiBbaW5uZXJQb2ludDEsIGlubmVyUG9pbnQyXTtcbiAgfVxufSwgJ2N1YmljJyk7IC8vIOawtOW5s+aWueWQkeeahOS4iemYtui0neWhnuWwlOabsue6v++8jOS4jeWGjeiAg+iZkeeUqOaIt+WklumDqOS8oOWFpeeahOaOp+WItueCuVxuXG5TaGFwZS5yZWdpc3RlckVkZ2UoJ2N1YmljLWhvcml6b250YWwnLCB7XG4gIGN1cnZlUG9zaXRpb246IFsxIC8gMiwgMSAvIDJdLFxuICBtaW5DdXJ2ZU9mZnNldDogWzAsIDBdLFxuICBjdXJ2ZU9mZnNldDogdW5kZWZpbmVkLFxuICBnZXRDb250cm9sUG9pbnRzOiBmdW5jdGlvbiBnZXRDb250cm9sUG9pbnRzKGNmZykge1xuICAgIHZhciBzdGFydFBvaW50ID0gY2ZnLnN0YXJ0UG9pbnQsXG4gICAgICAgIGVuZFBvaW50ID0gY2ZnLmVuZFBvaW50O1xuICAgIGlmIChjZmcuY3VydmVQb3NpdGlvbiA9PT0gdW5kZWZpbmVkKSBjZmcuY3VydmVQb3NpdGlvbiA9IHRoaXMuY3VydmVQb3NpdGlvbjtcbiAgICBpZiAoY2ZnLmN1cnZlT2Zmc2V0ID09PSB1bmRlZmluZWQpIGNmZy5jdXJ2ZU9mZnNldCA9IHRoaXMuY3VydmVPZmZzZXQ7XG4gICAgaWYgKGNmZy5taW5DdXJ2ZU9mZnNldCA9PT0gdW5kZWZpbmVkKSBjZmcubWluQ3VydmVPZmZzZXQgPSB0aGlzLm1pbkN1cnZlT2Zmc2V0O1xuICAgIGlmIChpc051bWJlcihjZmcuY3VydmVPZmZzZXQpKSBjZmcuY3VydmVPZmZzZXQgPSBbY2ZnLmN1cnZlT2Zmc2V0LCAtY2ZnLmN1cnZlT2Zmc2V0XTtcbiAgICBpZiAoaXNOdW1iZXIoY2ZnLm1pbkN1cnZlT2Zmc2V0KSkgY2ZnLm1pbkN1cnZlT2Zmc2V0ID0gW2NmZy5taW5DdXJ2ZU9mZnNldCwgLWNmZy5taW5DdXJ2ZU9mZnNldF07XG4gICAgaWYgKGlzTnVtYmVyKGNmZy5jdXJ2ZVBvc2l0aW9uKSkgY2ZnLmN1cnZlUG9zaXRpb24gPSBbY2ZnLmN1cnZlUG9zaXRpb24sIDEgLSBjZmcuY3VydmVQb3NpdGlvbl07XG4gICAgdmFyIHhEaXN0ID0gZW5kUG9pbnQueCAtIHN0YXJ0UG9pbnQueDtcbiAgICB2YXIgY3VydmVPZmZzZXQgPSBbMCwgMF07XG5cbiAgICBpZiAoY2ZnLmN1cnZlT2Zmc2V0KSB7XG4gICAgICBjdXJ2ZU9mZnNldCA9IGNmZy5jdXJ2ZU9mZnNldDtcbiAgICB9IGVsc2UgaWYgKE1hdGguYWJzKHhEaXN0KSA8IE1hdGguYWJzKGNmZy5taW5DdXJ2ZU9mZnNldFswXSkpIHtcbiAgICAgIGN1cnZlT2Zmc2V0ID0gY2ZnLm1pbkN1cnZlT2Zmc2V0O1xuICAgIH1cblxuICAgIHZhciBpbm5lclBvaW50MSA9IHtcbiAgICAgIHg6IHN0YXJ0UG9pbnQueCArIHhEaXN0ICogdGhpcy5jdXJ2ZVBvc2l0aW9uWzBdICsgY3VydmVPZmZzZXRbMF0sXG4gICAgICB5OiBzdGFydFBvaW50LnlcbiAgICB9O1xuICAgIHZhciBpbm5lclBvaW50MiA9IHtcbiAgICAgIHg6IGVuZFBvaW50LnggLSB4RGlzdCAqIHRoaXMuY3VydmVQb3NpdGlvblsxXSArIGN1cnZlT2Zmc2V0WzFdLFxuICAgICAgeTogZW5kUG9pbnQueVxuICAgIH07XG4gICAgdmFyIGNvbnRyb2xQb2ludHMgPSBbaW5uZXJQb2ludDEsIGlubmVyUG9pbnQyXTtcbiAgICByZXR1cm4gY29udHJvbFBvaW50cztcbiAgfVxufSwgJ2N1YmljJyk7XG5TaGFwZS5yZWdpc3RlckVkZ2UoJ2xvb3AnLCB7XG4gIGdldFBhdGhQb2ludHM6IGZ1bmN0aW9uIGdldFBhdGhQb2ludHMoY2ZnKSB7XG4gICAgcmV0dXJuIGdldExvb3BDZmdzKGNmZyk7XG4gIH0sXG4gIGdldENvbnRyb2xQb2ludHM6IGZ1bmN0aW9uIGdldENvbnRyb2xQb2ludHMoY2ZnKSB7XG4gICAgcmV0dXJuIGNmZy5jb250cm9sUG9pbnRzO1xuICB9LFxuICBhZnRlckRyYXc6IGZ1bmN0aW9uIGFmdGVyRHJhdyhjZmcpIHtcbiAgICBjZmcuY29udHJvbFBvaW50cyA9IHVuZGVmaW5lZDtcbiAgfSxcbiAgYWZ0ZXJVcGRhdGU6IGZ1bmN0aW9uIGFmdGVyVXBkYXRlKGNmZykge1xuICAgIGNmZy5jb250cm9sUG9pbnRzID0gdW5kZWZpbmVkO1xuICB9XG59LCAnY3ViaWMnKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/edge.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/hull/bubbleset.js":
/*!**************************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/hull/bubbleset.js ***!
\**************************************************************************************/
/*! exports provided: genBubbleSet */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"genBubbleSet\", function() { return genBubbleSet; });\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util/math */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/math.js\");\n\nvar defaultOps = {\n maxRoutingIterations: 100,\n maxMarchingIterations: 100,\n pixelGroupSize: 2,\n edgeR0: 10,\n edgeR1: 10,\n nodeR0: 5,\n nodeR1: 10,\n morphBuffer: 5,\n threshold: 0.001,\n skip: 16,\n nodeInfluenceFactor: 1,\n edgeInfluenceFactor: 1,\n negativeNodeInfluenceFactor: -0.5\n};\n/**\n * Marching square algorithm for traching the contour of a pixel group\n * https://www.emanueleferonato.com/2013/03/01/using-marching-squares-algorithm-to-trace-the-contour-of-an-image/\n * @param potentialArea\n * @param threshold\n */\n\nfunction MarchingSquares(contour, potentialArea, threshold) {\n var marched = false;\n\n var getVal = function getVal(x, y) {\n return potentialArea.cells[x + y * potentialArea.width];\n };\n\n var getState = function getState(x, y) {\n var squareVal = 0;\n\n if (getVal(x - 1, y - 1) >= threshold) {\n squareVal += 1;\n }\n\n if (getVal(x, y - 1) > threshold) {\n squareVal += 2;\n }\n\n if (getVal(x - 1, y) > threshold) {\n squareVal += 4;\n }\n\n if (getVal(x, y) > threshold) {\n squareVal += 8;\n }\n\n return squareVal;\n };\n\n var doMarch = function doMarch(xPos, yPos) {\n var x = xPos;\n var y = yPos;\n var prevX;\n var prevY;\n\n for (var i = 0; i < potentialArea.width * potentialArea.height; i++) {\n prevX = x;\n prevY = y;\n\n if (contour.findIndex(function (item) {\n return item.x === x && item.y === y;\n }) > -1) {\n if (contour[0].x !== x || contour[0].y !== y) {// encountered a loop but haven't returned to start: change direction using conditionals and continue back to start\n } else {\n return true;\n }\n } else {\n contour.push({\n x: x,\n y: y\n });\n }\n\n var state = getState(x, y); // assign the move direction according to state of the square\n\n switch (state) {\n case -1:\n console.warn('Marched out of bounds');\n return true;\n\n case 0:\n case 3:\n case 2:\n case 7:\n x++; // go right\n\n break;\n\n case 12:\n case 14:\n case 4:\n x--; // go left\n\n break;\n\n case 6:\n // go left if come from up else go right\n if (prevX === 0) {\n if (prevY === -1) {\n x -= 1;\n } else {\n x += 1;\n }\n }\n\n break;\n\n case 1:\n case 13:\n case 5:\n y--; // go up\n\n break;\n\n case 9:\n // go up if come from right else go down\n if (prevX === 1) {\n if (prevY === 0) {\n y -= 1;\n } else {\n y += 1;\n }\n }\n\n break;\n\n case 10:\n case 8:\n case 11:\n y++; // go down\n\n break;\n\n default:\n console.warn(\"Marching squares invalid state: \" + state);\n return true;\n }\n }\n };\n\n this.march = function () {\n for (var x = 0; x < potentialArea.width && !marched; x += 1) {\n for (var y = 0; y < potentialArea.height && !marched; y += 1) {\n if (getVal(x, y) > threshold && getState(x, y) !== 15) {\n marched = doMarch(x, y);\n }\n }\n }\n\n return marched;\n };\n}\n/**\n * Space partition & assign value to each cell\n * @param points\n */\n\n\nvar initGridCells = function initGridCells(width, height, pixelGroupSize) {\n var scaleWidth = Math.ceil(width / pixelGroupSize);\n var scaleHeight = Math.ceil(height / pixelGroupSize);\n var gridCells = new Float32Array(Math.max(0, scaleWidth * scaleHeight)).fill(0);\n return {\n cells: gridCells,\n width: scaleWidth,\n height: scaleHeight\n };\n};\n/**\n * Find the optimal already visited member to item;\n Optimal: minimize cost(j) = distance(i,j) ∗ countObstacles(i,j)\n * @param item\n * @param visited\n */\n\n\nvar pickBestNeighbor = function pickBestNeighbor(item, visited, nonMembers) {\n var closestNeighbour = null;\n var minCost = Number.POSITIVE_INFINITY;\n visited.forEach(function (neighbourItem) {\n var itemP = {\n x: item.getModel().x,\n y: item.getModel().y\n };\n var neighbourItemP = {\n x: neighbourItem.getModel().x,\n y: neighbourItem.getModel().y\n };\n var dist = Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"squareDist\"])(itemP, neighbourItemP);\n var directLine = new _util_math__WEBPACK_IMPORTED_MODULE_0__[\"Line\"](itemP.x, itemP.y, neighbourItemP.x, neighbourItemP.y);\n var numberObstacles = nonMembers.reduce(function (count, _item) {\n if (Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"fractionToLine\"])(_item, directLine) > 0) {\n return count + 1;\n }\n\n return count;\n }, 0);\n\n if (dist * Math.pow(numberObstacles + 1, 2) < minCost) {\n closestNeighbour = neighbourItem;\n minCost = dist * Math.pow(numberObstacles + 1, 2);\n }\n });\n return closestNeighbour;\n};\n/**\n * 返回和线相交的item中,离边的起点最近的item\n * @param items\n * @param line\n */\n\n\nvar getIntersectItem = function getIntersectItem(items, line) {\n var minDistance = Number.POSITIVE_INFINITY;\n var closestItem = null;\n items.forEach(function (item) {\n var distance = Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"fractionToLine\"])(item, line); // find closest intersection\n\n if (distance >= 0 && distance < minDistance) {\n closestItem = item;\n minDistance = distance;\n }\n });\n return closestItem;\n};\n/**\n * Modify the directLine and Route virtual edges around obstacles\n */\n\n\nvar computeRoute = function computeRoute(directLine, nonMembers, maxRoutingIterations, morphBuffer) {\n var checkedLines = [];\n var linesToCheck = [];\n linesToCheck.push(directLine);\n var hasIntersection = true;\n var iterations = 0;\n\n var pointExists = function pointExists(point, lines) {\n var flag = false;\n lines.forEach(function (line) {\n if (flag) return;\n\n if (Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"isPointsOverlap\"])(point, {\n x: line.x1,\n y: line.y1\n }) || Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"isPointsOverlap\"])(point, {\n x: line.x2,\n y: line.y2\n })) {\n flag = true;\n }\n });\n return flag;\n };\n\n var isPointInNonMembers = function isPointInNonMembers(point, _nonMembers) {\n for (var _i = 0, _nonMembers_1 = _nonMembers; _i < _nonMembers_1.length; _i++) {\n var item = _nonMembers_1[_i];\n var bbox = item.getBBox();\n var itemContour = [[bbox.x, bbox.y], [bbox.x + bbox.width, bbox.y], [bbox.x, bbox.y + bbox.height], [bbox.x + bbox.width, bbox.y + bbox.height]];\n\n if (Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"isPointInPolygon\"])(itemContour, point.x, point.y)) {\n return true;\n }\n }\n\n return false;\n }; // outer loop end when no more intersections or out of iterations\n\n\n while (hasIntersection && iterations < maxRoutingIterations) {\n hasIntersection = false;\n\n var _loop_1 = function _loop_1() {\n var line = linesToCheck.pop();\n var closestItem = getIntersectItem(nonMembers, line);\n\n if (closestItem) {\n var _a = Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"itemIntersectByLine\"])(closestItem, line),\n intersections_1 = _a[0],\n countIntersections = _a[1]; // if line passes through item\n\n\n if (countIntersections === 2) {\n var testReroute = function testReroute(isFirst) {\n var tempMorphBuffer = morphBuffer;\n var virtualNode = rerouteLine(closestItem, tempMorphBuffer, intersections_1, isFirst); // test the virtualNode already exists\n\n var exist = pointExists(virtualNode, linesToCheck) || pointExists(virtualNode, checkedLines);\n var pointInside = isPointInNonMembers(virtualNode, nonMembers);\n\n while (!exist && pointInside && tempMorphBuffer >= 1) {\n // try a smaller buffer\n tempMorphBuffer /= 1.5;\n virtualNode = rerouteLine(closestItem, tempMorphBuffer, intersections_1, isFirst);\n exist = pointExists(virtualNode, linesToCheck) || pointExists(virtualNode, checkedLines);\n pointInside = isPointInNonMembers(virtualNode, nonMembers);\n } // 第二次route时不要求pointInside\n\n\n if (virtualNode && !exist && (!isFirst || !pointInside)) {\n // add 2 rerouted lines to check\n linesToCheck.push(new _util_math__WEBPACK_IMPORTED_MODULE_0__[\"Line\"](line.x1, line.y1, virtualNode.x, virtualNode.y));\n linesToCheck.push(new _util_math__WEBPACK_IMPORTED_MODULE_0__[\"Line\"](virtualNode.x, virtualNode.y, line.x2, line.y2));\n hasIntersection = true;\n }\n };\n\n testReroute(true);\n\n if (!hasIntersection) {\n // if we didn't find a valid point around the first corner, try the second\n testReroute(false);\n }\n }\n } // no intersection found, mark this line as completed\n\n\n if (!hasIntersection) {\n checkedLines.push(line);\n }\n\n iterations += 1;\n }; // inner loop end when out of lines or found an intersection\n\n\n while (!hasIntersection && linesToCheck.length) {\n _loop_1();\n }\n } // 加入剩余的线\n\n\n while (linesToCheck.length) {\n checkedLines.push(linesToCheck.pop());\n }\n\n return checkedLines;\n};\n/**\n * Connect item with visited members using direct line or virtual edges\n */\n\n\nfunction getRoute(item, nonMembers, visited, maxRoutingIterations, morphBuffer) {\n var optimalNeighbor = pickBestNeighbor(item, visited, nonMembers);\n\n if (optimalNeighbor === null) {\n return [];\n } // merge the consecutive lines\n\n\n var mergeLines = function mergeLines(checkedLines) {\n var finalRoute = [];\n\n while (checkedLines.length > 0) {\n var line1 = checkedLines.pop();\n\n if (checkedLines.length === 0) {\n finalRoute.push(line1);\n break;\n }\n\n var line2 = checkedLines.pop();\n var mergeLine = new _util_math__WEBPACK_IMPORTED_MODULE_0__[\"Line\"](line1.x1, line1.y1, line2.x2, line2.y2);\n var closestItem = getIntersectItem(nonMembers, mergeLine); // merge most recent line and previous line\n\n if (!closestItem) {\n checkedLines.push(mergeLine);\n } else {\n finalRoute.push(line1);\n checkedLines.push(line2);\n }\n }\n\n return finalRoute;\n };\n\n var directLine = new _util_math__WEBPACK_IMPORTED_MODULE_0__[\"Line\"](item.getModel().x, item.getModel().y, optimalNeighbor.getModel().x, optimalNeighbor.getModel().y);\n var checkedLines = computeRoute(directLine, nonMembers, maxRoutingIterations, morphBuffer);\n var finalRoute = mergeLines(checkedLines);\n return finalRoute;\n}\n/**\n * Calculate the countor that includes the selected items and exclues the non-selected items\n * @param graph\n * @param members\n * @param nonMembers\n * @param options\n */\n\n\nvar genBubbleSet = function genBubbleSet(members, nonMembers, ops) {\n // eslint-disable-next-line no-redeclare\n var options = Object.assign(defaultOps, ops);\n var centroid = Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"getPointsCenter\"])(members.map(function (item) {\n return {\n x: item.getModel().x,\n y: item.getModel().y\n };\n })); // 按照到中心距离远近排序\n\n members = members.sort(function (a, b) {\n return Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"squareDist\"])({\n x: a.getModel().x,\n y: a.getModel().y\n }, centroid) - Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"squareDist\"])({\n x: b.getModel().x,\n y: b.getModel().y\n }, centroid);\n });\n var visited = [];\n var virtualEdges = [];\n members.forEach(function (item) {\n var lines = getRoute(item, nonMembers, visited, options.maxRoutingIterations, options.morphBuffer);\n lines.forEach(function (l) {\n virtualEdges.push(l);\n });\n visited.push(item);\n }); // 由于edge也可以作为member和nonMember传入,暂时不考虑把edges作为参数传入genBubbleSet\n // edges && edges.forEach(e => {\n // virtualEdges.push(new Line(e.getSource().getModel().x, e.getSource().getModel().y, e.getTarget().getModel().x, e.getTarget().getModel().y));\n // });\n\n var activeRegion = getActiveRregion(members, virtualEdges, options.nodeR0);\n var potentialArea = initGridCells(activeRegion.width, activeRegion.height, options.pixelGroupSize); // Use march squares to generate contour\n\n var contour = [];\n var hull = [];\n\n for (var iterations = 0; iterations < options.maxMarchingIterations; iterations++) {\n fillPotentialArea(members, nonMembers, virtualEdges, activeRegion, potentialArea, options);\n contour = [];\n hull = [];\n if (!new MarchingSquares(contour, potentialArea, options.threshold).march()) continue;\n var marchedPath = contour.map(function (point) {\n return {\n x: Math.round(point.x * options.pixelGroupSize + activeRegion.minX),\n y: Math.round(point.y * options.pixelGroupSize + activeRegion.minY)\n };\n }); // const marchedPath = marchingSquares(potentialArea, options.threshold).map(point => ({ x: Math.round(point.x * options.pixelGroupSize + activeRegion.minX), y: Math.round(point.y * options.pixelGroupSize + activeRegion.minY) }))\n\n if (marchedPath) {\n var size = marchedPath.length;\n\n if (options.skip > 1) {\n size = Math.floor(marchedPath.length / options.skip); // if we reduced too much (fewer than three points in reduced surface) reduce skip and try again\n\n while (size < 3 && options.skip > 1) {\n options.skip -= 1;\n size = Math.floor(marchedPath.length / options.skip);\n }\n } // copy hull values\n\n\n for (var i = 0, j = 0; j < size; j += 1, i += options.skip) {\n hull.push({\n x: marchedPath[i].x,\n y: marchedPath[i].y\n });\n }\n }\n\n var isContourValid = function isContourValid() {\n for (var _i = 0, members_1 = members; _i < members_1.length; _i++) {\n var item = members_1[_i];\n var hullPoints = hull.map(function (point) {\n return [point.x, point.y];\n });\n if (!Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"isPointInPolygon\"])(hullPoints, item.getBBox().centerX, item.getBBox().centerY)) return false;\n } // 不强制要求所有nonMembers都没有包含在内\n // for (const item of nonMembers) {\n // if (isPointInPolygon({ x: item.getBBox().centerX, y: item.getBBox().centerY }, contour)) return false\n // }\n\n\n return true;\n };\n\n if (hull && isContourValid()) {\n return hull;\n } // update parameters for next iteraction\n\n\n options.threshold *= 0.9;\n\n if (iterations <= options.maxMarchingIterations * 0.5) {\n options.memberInfluenceFactor *= 1.2;\n options.edgeInfluenceFactor *= 1.2;\n } else if (options.nonMemberInfluenceFactor !== 0 && nonMembers.length > 0) {\n // after half the iterations, start increasing positive energy and lowering the threshold\n options.nonMemberInfluenceFactor *= 0.8;\n } else {\n break;\n }\n }\n\n return hull;\n};\n/**\n * unionboundingbox\n * @param members\n * @param edges\n */\n\nfunction getActiveRregion(members, edges, offset) {\n var activeRegion = {\n minX: Number.POSITIVE_INFINITY,\n minY: Number.POSITIVE_INFINITY,\n maxX: Number.NEGATIVE_INFINITY,\n maxY: Number.NEGATIVE_INFINITY,\n width: 0,\n height: 0,\n x: 0,\n y: 0\n };\n var bboxes = [];\n members.forEach(function (item) {\n bboxes.push(item.getBBox());\n });\n edges.forEach(function (l) {\n bboxes.push(l.getBBox());\n });\n\n for (var _i = 0, bboxes_1 = bboxes; _i < bboxes_1.length; _i++) {\n var bbox = bboxes_1[_i];\n activeRegion.minX = (bbox.minX < activeRegion.minX ? bbox.minX : activeRegion.minX) - offset;\n activeRegion.minY = (bbox.minY < activeRegion.minY ? bbox.minY : activeRegion.minY) - offset;\n activeRegion.maxX = (bbox.maxX > activeRegion.maxX ? bbox.maxX : activeRegion.maxX) + offset;\n activeRegion.maxY = (bbox.maxY > activeRegion.maxY ? bbox.maxY : activeRegion.maxY) + offset;\n }\n\n activeRegion.width = activeRegion.maxX - activeRegion.minX;\n activeRegion.height = activeRegion.maxY - activeRegion.minY;\n activeRegion.x = activeRegion.minX;\n activeRegion.y = activeRegion.minY;\n return activeRegion;\n}\n\nfunction fillPotentialArea(members, nonMembers, edges, activeRegion, potentialArea, options) {\n function pos2GridIx(x, offset) {\n var gridIx = Math.floor((x - offset) / options.pixelGroupSize);\n return gridIx < 0 ? 0 : gridIx;\n }\n\n function gridIx2Pos(x, offset) {\n return x * options.pixelGroupSize + offset;\n } // using inverse a for numerical stability\n\n\n var nodeInfA = (options.nodeR0 - options.nodeR1) * (options.nodeR0 - options.nodeR1);\n var edgeInfA = (options.edgeR0 - options.edgeR1) * (options.edgeR0 - options.edgeR1);\n\n var getAffectedRegion = function getAffectedRegion(bbox, thresholdR) {\n var startX = Math.min(pos2GridIx(bbox.minX, thresholdR + activeRegion.minX), potentialArea.width);\n var startY = Math.min(pos2GridIx(bbox.minY, thresholdR + activeRegion.minY), potentialArea.height);\n var endX = Math.min(pos2GridIx(bbox.maxX, -thresholdR + activeRegion.minX), potentialArea.width);\n var endY = Math.min(pos2GridIx(bbox.maxY, -thresholdR + activeRegion.minY), potentialArea.height);\n return [startX, startY, endX, endY];\n };\n\n var addItemInfluence = function addItemInfluence(item, influenceFactor) {\n var bbox = item.getBBox();\n\n var _a = getAffectedRegion(bbox, options.nodeR1),\n startX = _a[0],\n startY = _a[1],\n endX = _a[2],\n endY = _a[3]; // calculate item influence for each cell\n\n\n for (var y = startY; y < endY; y += 1) {\n for (var x = startX; x < endX; x += 1) {\n if (influenceFactor < 0 && potentialArea[x + y * potentialArea.width] <= 0) {\n continue;\n }\n\n var tempX = gridIx2Pos(x, activeRegion.minX);\n var tempY = gridIx2Pos(y, activeRegion.minY);\n var distanceSq = Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"pointRectSquareDist\"])({\n x: tempX,\n y: tempY\n }, {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.width,\n height: bbox.height\n });\n\n if (distanceSq < Math.pow(options.nodeR1, 2)) {\n var dr = Math.sqrt(distanceSq) - options.nodeR1;\n potentialArea.cells[x + y * potentialArea.width] += influenceFactor * dr * dr;\n }\n }\n }\n };\n\n var addEdgeInfluence = function addEdgeInfluence(line, influenceFactor) {\n var bbox = line.getBBox();\n\n var _a = getAffectedRegion(bbox, options.edgeR1),\n startX = _a[0],\n startY = _a[1],\n endX = _a[2],\n endY = _a[3]; // for every point in active part of potentialArea, calculate distance to nearest point on line and add influence\n\n\n for (var y = startY; y < endY; y += 1) {\n for (var x = startX; x < endX; x += 1) {\n if (influenceFactor < 0 && potentialArea.cells[x + y * potentialArea.width] <= 0) {\n continue;\n }\n\n var tempX = gridIx2Pos(x, activeRegion.minX);\n var tempY = gridIx2Pos(y, activeRegion.minY);\n var minDistanceSq = Object(_util_math__WEBPACK_IMPORTED_MODULE_0__[\"pointLineSquareDist\"])({\n x: tempX,\n y: tempY\n }, line); // only influence if less than r1\n\n if (minDistanceSq < Math.pow(options.edgeR1, 2)) {\n var mdr = Math.sqrt(minDistanceSq) - options.edgeR1;\n potentialArea.cells[x + y * potentialArea.width] += influenceFactor * mdr * mdr;\n }\n }\n }\n };\n\n if (options.nodeInfluenceFactor) {\n members.forEach(function (item) {\n addItemInfluence(item, options.nodeInfluenceFactor / nodeInfA);\n });\n }\n\n if (options.edgeInfluenceFactor) {\n edges.forEach(function (edge) {\n addEdgeInfluence(edge, options.edgeInfluenceFactor / edgeInfA);\n });\n }\n\n if (options.negativeNodeInfluenceFactor) {\n nonMembers.forEach(function (item) {\n addItemInfluence(item, options.negativeNodeInfluenceFactor / nodeInfA);\n });\n }\n}\n\nfunction rerouteLine(item, buffer, intersections, wrapNormal) {\n var bbox = item.getBBox();\n var topIntersect = intersections[0],\n leftIntersect = intersections[1],\n bottomIntersect = intersections[2],\n rightIntersect = intersections[3];\n var cornerPos = {\n topLeft: {\n x: bbox.minX - buffer,\n y: bbox.minY - buffer\n },\n topRight: {\n x: bbox.maxX + buffer,\n y: bbox.minY - buffer\n },\n bottomLeft: {\n x: bbox.minX - buffer,\n y: bbox.maxY + buffer\n },\n bottomRight: {\n x: bbox.maxX + buffer,\n y: bbox.maxY + buffer\n }\n };\n var totalArea = bbox.height * bbox.width;\n\n function calcHalfArea(intersect1, intersect2) {\n return bbox.width * ((intersect1.y - bbox.minY + (intersect2.y - bbox.minY)) * 0.5);\n } // 根据线和boundingbox相交的情况,确定control point的位置\n\n\n if (leftIntersect) {\n // 相交区域有三角形\n if (topIntersect) return wrapNormal ? cornerPos.topLeft : cornerPos.bottomRight;\n if (bottomIntersect) return wrapNormal ? cornerPos.bottomLeft : cornerPos.topRight; // 相交区域分成上下两个梯形,比较面积\n\n var topArea = calcHalfArea(leftIntersect, rightIntersect);\n\n if (topArea < totalArea * 0.5) {\n if (leftIntersect.y > rightIntersect.y) return wrapNormal ? cornerPos.topLeft : cornerPos.bottomRight;\n return wrapNormal ? cornerPos.topRight : cornerPos.bottomLeft;\n }\n\n if (leftIntersect.y < rightIntersect.y) return wrapNormal ? cornerPos.bottomLeft : cornerPos.topRight;\n return wrapNormal ? cornerPos.bottomRight : cornerPos.topLeft;\n }\n\n if (rightIntersect) {\n if (topIntersect) return wrapNormal ? cornerPos.topRight : cornerPos.bottomLeft;\n if (bottomIntersect) return wrapNormal ? cornerPos.bottomRight : cornerPos.topLeft;\n } // 相交区域分成左右两个梯形\n\n\n var leftArea = calcHalfArea(topIntersect, bottomIntersect);\n\n if (leftArea < totalArea * 0.5) {\n if (topIntersect.x > bottomIntersect.x) return wrapNormal ? cornerPos.topLeft : cornerPos.bottomRight;\n return wrapNormal ? cornerPos.bottomLeft : cornerPos.topRight;\n }\n\n if (topIntersect.x < bottomIntersect.x) return wrapNormal ? cornerPos.topRight : cornerPos.bottomLeft;\n return wrapNormal ? cornerPos.bottomRight : cornerPos.topLeft;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2h1bGwvYnViYmxlc2V0LmpzPzU4NjYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQXNMO0FBQ3RMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGdEQUFnRDtBQUNuRTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsdURBQXVEO0FBQ3ZELFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQSxpQ0FBaUM7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYzs7QUFFZDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxjQUFjOztBQUVkOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7O0FBRWQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsY0FBYzs7QUFFZDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIscUNBQXFDO0FBQ3hELHFCQUFxQixzQ0FBc0M7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsNkRBQVU7QUFDekIseUJBQXlCLCtDQUFJO0FBQzdCO0FBQ0EsVUFBVSxpRUFBYztBQUN4QjtBQUNBOztBQUVBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsaUVBQWMsYUFBYTs7QUFFOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFVBQVUsa0VBQWU7QUFDekI7QUFDQTtBQUNBLE9BQU8sS0FBSyxrRUFBZTtBQUMzQjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBLGlEQUFpRCwyQkFBMkI7QUFDNUU7QUFDQTtBQUNBOztBQUVBLFVBQVUsbUVBQWdCO0FBQzFCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCLHNFQUFtQjtBQUNwQztBQUNBLHVDQUF1Qzs7O0FBR3ZDO0FBQ0E7QUFDQTtBQUNBLGtHQUFrRzs7QUFFbEc7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhOzs7QUFHYjtBQUNBO0FBQ0Esb0NBQW9DLCtDQUFJO0FBQ3hDLG9DQUFvQywrQ0FBSTtBQUN4QztBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE1BQU07OztBQUdOO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQkFBMEIsK0NBQUk7QUFDOUIsZ0VBQWdFOztBQUVoRTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsdUJBQXVCLCtDQUFJO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdPO0FBQ1A7QUFDQTtBQUNBLGlCQUFpQixrRUFBZTtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsR0FBRzs7QUFFTjtBQUNBLFdBQVcsNkRBQVU7QUFDckI7QUFDQTtBQUNBLEtBQUssY0FBYyw2REFBVTtBQUM3QjtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHLEVBQUU7QUFDTDtBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBLHFHQUFxRzs7QUFFckc7QUFDQTs7QUFFQSwwQkFBMEIsNENBQTRDO0FBQ3RFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssRUFBRSx5RkFBeUYsMklBQTJJOztBQUUzTztBQUNBOztBQUVBO0FBQ0EsNkRBQTZEOztBQUU3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQLDRCQUE0QixVQUFVO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0EsMkNBQTJDLHVCQUF1QjtBQUNsRTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsYUFBYSxtRUFBZ0I7QUFDN0IsT0FBTztBQUNQO0FBQ0EsaUNBQWlDLHVEQUF1RDtBQUN4Rjs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7O0FBRUgscUNBQXFDLHNCQUFzQjtBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjs7O0FBR3JCLHdCQUF3QixVQUFVO0FBQ2xDLDBCQUEwQixVQUFVO0FBQ3BDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EseUJBQXlCLHNFQUFtQjtBQUM1QztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCOzs7QUFHckIsd0JBQXdCLFVBQVU7QUFDbEMsMEJBQTBCLFVBQVU7QUFDcEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSw0QkFBNEIsc0VBQW1CO0FBQy9DO0FBQ0E7QUFDQSxTQUFTLFFBQVE7O0FBRWpCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBLHVGQUF1Rjs7QUFFdkY7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtY29yZUAwLjUuMEBAYW50di9nNi1jb3JlL2VzL2VsZW1lbnQvaHVsbC9idWJibGVzZXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzcXVhcmVEaXN0LCBwb2ludExpbmVTcXVhcmVEaXN0LCBpdGVtSW50ZXJzZWN0QnlMaW5lLCBnZXRQb2ludHNDZW50ZXIsIGZyYWN0aW9uVG9MaW5lLCBpc1BvaW50c092ZXJsYXAsIHBvaW50UmVjdFNxdWFyZURpc3QsIExpbmUsIGlzUG9pbnRJblBvbHlnb24gfSBmcm9tICcuLi8uLi91dGlsL21hdGgnO1xudmFyIGRlZmF1bHRPcHMgPSB7XG4gIG1heFJvdXRpbmdJdGVyYXRpb25zOiAxMDAsXG4gIG1heE1hcmNoaW5nSXRlcmF0aW9uczogMTAwLFxuICBwaXhlbEdyb3VwU2l6ZTogMixcbiAgZWRnZVIwOiAxMCxcbiAgZWRnZVIxOiAxMCxcbiAgbm9kZVIwOiA1LFxuICBub2RlUjE6IDEwLFxuICBtb3JwaEJ1ZmZlcjogNSxcbiAgdGhyZXNob2xkOiAwLjAwMSxcbiAgc2tpcDogMTYsXG4gIG5vZGVJbmZsdWVuY2VGYWN0b3I6IDEsXG4gIGVkZ2VJbmZsdWVuY2VGYWN0b3I6IDEsXG4gIG5lZ2F0aXZlTm9kZUluZmx1ZW5jZUZhY3RvcjogLTAuNVxufTtcbi8qKlxuICogTWFyY2hpbmcgc3F1YXJlIGFsZ29yaXRobSBmb3IgdHJhY2hpbmcgdGhlIGNvbnRvdXIgb2YgYSBwaXhlbCBncm91cFxuICogaHR0cHM6Ly93d3cuZW1hbnVlbGVmZXJvbmF0by5jb20vMjAxMy8wMy8wMS91c2luZy1tYXJjaGluZy1zcXVhcmVzLWFsZ29yaXRobS10by10cmFjZS10aGUtY29udG91ci1vZi1hbi1pbWFnZS9cbiAqIEBwYXJhbSBwb3RlbnRpYWxBcmVhXG4gKiBAcGFyYW0gdGhyZXNob2xkXG4gKi9cblxuZnVuY3Rpb24gTWFyY2hpbmdTcXVhcmVzKGNvbnRvdXIsIHBvdGVudGlhbEFyZWEsIHRocmVzaG9sZCkge1xuICB2YXIgbWFyY2hlZCA9IGZhbHNlO1xuXG4gIHZhciBnZXRWYWwgPSBmdW5jdGlvbiBnZXRWYWwoeCwgeSkge1xuICAgIHJldHVybiBwb3RlbnRpYWxBcmVhLmNlbGxzW3ggKyB5ICogcG90ZW50aWFsQXJlYS53aWR0aF07XG4gIH07XG5cbiAgdmFyIGdldFN0YXRlID0gZnVuY3Rpb24gZ2V0U3RhdGUoeCwgeSkge1xuICAgIHZhciBzcXVhcmVWYWwgPSAwO1xuXG4gICAgaWYgKGdldFZhbCh4IC0gMSwgeSAtIDEpID49IHRocmVzaG9sZCkge1xuICAgICAgc3F1YXJlVmFsICs9IDE7XG4gICAgfVxuXG4gICAgaWYgKGdldFZhbCh4LCB5IC0gMSkgPiB0aHJlc2hvbGQpIHtcbiAgICAgIHNxdWFyZVZhbCArPSAyO1xuICAgIH1cblxuICAgIGlmIChnZXRWYWwoeCAtIDEsIHkpID4gdGhyZXNob2xkKSB7XG4gICAgICBzcXVhcmVWYWwgKz0gNDtcbiAgICB9XG5cbiAgICBpZiAoZ2V0VmFsKHgsIHkpID4gdGhyZXNob2xkKSB7XG4gICAgICBzcXVhcmVWYWwgKz0gODtcbiAgICB9XG5cbiAgICByZXR1cm4gc3F1YXJlVmFsO1xuICB9O1xuXG4gIHZhciBkb01hcmNoID0gZnVuY3Rpb24gZG9NYXJjaCh4UG9zLCB5UG9zKSB7XG4gICAgdmFyIHggPSB4UG9zO1xuICAgIHZhciB5ID0geVBvcztcbiAgICB2YXIgcHJldlg7XG4gICAgdmFyIHByZXZZO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb3RlbnRpYWxBcmVhLndpZHRoICogcG90ZW50aWFsQXJlYS5oZWlnaHQ7IGkrKykge1xuICAgICAgcHJldlggPSB4O1xuICAgICAgcHJldlkgPSB5O1xuXG4gICAgICBpZiAoY29udG91ci5maW5kSW5kZXgoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0ueCA9PT0geCAmJiBpdGVtLnkgPT09IHk7XG4gICAgICB9KSA+IC0xKSB7XG4gICAgICAgIGlmIChjb250b3VyWzBdLnggIT09IHggfHwgY29udG91clswXS55ICE9PSB5KSB7Ly8gZW5jb3VudGVyZWQgYSBsb29wIGJ1dCBoYXZlbid0IHJldHVybmVkIHRvIHN0YXJ0OiBjaGFuZ2UgZGlyZWN0aW9uIHVzaW5nIGNvbmRpdGlvbmFscyBhbmQgY29udGludWUgYmFjayB0byBzdGFydFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250b3VyLnB1c2goe1xuICAgICAgICAgIHg6IHgsXG4gICAgICAgICAgeTogeVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdmFyIHN0YXRlID0gZ2V0U3RhdGUoeCwgeSk7IC8vIGFzc2lnbiB0aGUgbW92ZSBkaXJlY3Rpb24gYWNjb3JkaW5nIHRvIHN0YXRlIG9mIHRoZSBzcXVhcmVcblxuICAgICAgc3dpdGNoIChzdGF0ZSkge1xuICAgICAgICBjYXNlIC0xOlxuICAgICAgICAgIGNvbnNvbGUud2FybignTWFyY2hlZCBvdXQgb2YgYm91bmRzJyk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG5cbiAgICAgICAgY2FzZSAwOlxuICAgICAgICBjYXNlIDM6XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgY2FzZSA3OlxuICAgICAgICAgIHgrKzsgLy8gZ28gcmlnaHRcblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgMTI6XG4gICAgICAgIGNhc2UgMTQ6XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICB4LS07IC8vIGdvIGxlZnRcblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAvLyBnbyBsZWZ0IGlmIGNvbWUgZnJvbSB1cCBlbHNlIGdvIHJpZ2h0XG4gICAgICAgICAgaWYgKHByZXZYID09PSAwKSB7XG4gICAgICAgICAgICBpZiAocHJldlkgPT09IC0xKSB7XG4gICAgICAgICAgICAgIHggLT0gMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHggKz0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDE6XG4gICAgICAgIGNhc2UgMTM6XG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICB5LS07IC8vIGdvIHVwXG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgLy8gZ28gdXAgaWYgY29tZSBmcm9tIHJpZ2h0IGVsc2UgZ28gZG93blxuICAgICAgICAgIGlmIChwcmV2WCA9PT0gMSkge1xuICAgICAgICAgICAgaWYgKHByZXZZID09PSAwKSB7XG4gICAgICAgICAgICAgIHkgLT0gMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHkgKz0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDEwOlxuICAgICAgICBjYXNlIDg6XG4gICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgeSsrOyAvLyBnbyBkb3duXG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNvbnNvbGUud2FybihcIk1hcmNoaW5nIHNxdWFyZXMgaW52YWxpZCBzdGF0ZTogXCIgKyBzdGF0ZSk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHRoaXMubWFyY2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgZm9yICh2YXIgeCA9IDA7IHggPCBwb3RlbnRpYWxBcmVhLndpZHRoICYmICFtYXJjaGVkOyB4ICs9IDEpIHtcbiAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgcG90ZW50aWFsQXJlYS5oZWlnaHQgJiYgIW1hcmNoZWQ7IHkgKz0gMSkge1xuICAgICAgICBpZiAoZ2V0VmFsKHgsIHkpID4gdGhyZXNob2xkICYmIGdldFN0YXRlKHgsIHkpICE9PSAxNSkge1xuICAgICAgICAgIG1hcmNoZWQgPSBkb01hcmNoKHgsIHkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcmNoZWQ7XG4gIH07XG59XG4vKipcbiAqIFNwYWNlIHBhcnRpdGlvbiAmIGFzc2lnbiB2YWx1ZSB0byBlYWNoIGNlbGxcbiAqIEBwYXJhbSBwb2ludHNcbiAqL1xuXG5cbnZhciBpbml0R3JpZENlbGxzID0gZnVuY3Rpb24gaW5pdEdyaWRDZWxscyh3aWR0aCwgaGVpZ2h0LCBwaXhlbEdyb3VwU2l6ZSkge1xuICB2YXIgc2NhbGVXaWR0aCA9IE1hdGguY2VpbCh3aWR0aCAvIHBpeGVsR3JvdXBTaXplKTtcbiAgdmFyIHNjYWxlSGVpZ2h0ID0gTWF0aC5jZWlsKGhlaWdodCAvIHBpeGVsR3JvdXBTaXplKTtcbiAgdmFyIGdyaWRDZWxscyA9IG5ldyBGbG9hdDMyQXJyYXkoTWF0aC5tYXgoMCwgc2NhbGVXaWR0aCAqIHNjYWxlSGVpZ2h0KSkuZmlsbCgwKTtcbiAgcmV0dXJuIHtcbiAgICBjZWxsczogZ3JpZENlbGxzLFxuICAgIHdpZHRoOiBzY2FsZVdpZHRoLFxuICAgIGhlaWdodDogc2NhbGVIZWlnaHRcbiAgfTtcbn07XG4vKipcbiAqIEZpbmQgdGhlIG9wdGltYWwgYWxyZWFkeSB2aXNpdGVkIG1lbWJlciB0byBpdGVtO1xuICAgT3B0aW1hbDogbWluaW1pemUgY29zdChqKSA9IGRpc3RhbmNlKGksaikg4oiXIGNvdW50T2JzdGFjbGVzKGksailcbiAqIEBwYXJhbSBpdGVtXG4gKiBAcGFyYW0gdmlzaXRlZFxuICovXG5cblxudmFyIHBpY2tCZXN0TmVpZ2hib3IgPSBmdW5jdGlvbiBwaWNrQmVzdE5laWdoYm9yKGl0ZW0sIHZpc2l0ZWQsIG5vbk1lbWJlcnMpIHtcbiAgdmFyIGNsb3Nlc3ROZWlnaGJvdXIgPSBudWxsO1xuICB2YXIgbWluQ29zdCA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgdmlzaXRlZC5mb3JFYWNoKGZ1bmN0aW9uIChuZWlnaGJvdXJJdGVtKSB7XG4gICAgdmFyIGl0ZW1QID0ge1xuICAgICAgeDogaXRlbS5nZXRNb2RlbCgpLngsXG4gICAgICB5OiBpdGVtLmdldE1vZGVsKCkueVxuICAgIH07XG4gICAgdmFyIG5laWdoYm91ckl0ZW1QID0ge1xuICAgICAgeDogbmVpZ2hib3VySXRlbS5nZXRNb2RlbCgpLngsXG4gICAgICB5OiBuZWlnaGJvdXJJdGVtLmdldE1vZGVsKCkueVxuICAgIH07XG4gICAgdmFyIGRpc3QgPSBzcXVhcmVEaXN0KGl0ZW1QLCBuZWlnaGJvdXJJdGVtUCk7XG4gICAgdmFyIGRpcmVjdExpbmUgPSBuZXcgTGluZShpdGVtUC54LCBpdGVtUC55LCBuZWlnaGJvdXJJdGVtUC54LCBuZWlnaGJvdXJJdGVtUC55KTtcbiAgICB2YXIgbnVtYmVyT2JzdGFjbGVzID0gbm9uTWVtYmVycy5yZWR1Y2UoZnVuY3Rpb24gKGNvdW50LCBfaXRlbSkge1xuICAgICAgaWYgKGZyYWN0aW9uVG9MaW5lKF9pdGVtLCBkaXJlY3RMaW5lKSA+IDApIHtcbiAgICAgICAgcmV0dXJuIGNvdW50ICsgMTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvdW50O1xuICAgIH0sIDApO1xuXG4gICAgaWYgKGRpc3QgKiBNYXRoLnBvdyhudW1iZXJPYnN0YWNsZXMgKyAxLCAyKSA8IG1pbkNvc3QpIHtcbiAgICAgIGNsb3Nlc3ROZWlnaGJvdXIgPSBuZWlnaGJvdXJJdGVtO1xuICAgICAgbWluQ29zdCA9IGRpc3QgKiBNYXRoLnBvdyhudW1iZXJPYnN0YWNsZXMgKyAxLCAyKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gY2xvc2VzdE5laWdoYm91cjtcbn07XG4vKipcbiAqIOi/lOWbnuWSjOe6v+ebuOS6pOeahGl0ZW3kuK3vvIznprvovrnnmoTotbfngrnmnIDov5HnmoRpdGVtXG4gKiBAcGFyYW0gaXRlbXNcbiAqIEBwYXJhbSBsaW5lXG4gKi9cblxuXG52YXIgZ2V0SW50ZXJzZWN0SXRlbSA9IGZ1bmN0aW9uIGdldEludGVyc2VjdEl0ZW0oaXRlbXMsIGxpbmUpIHtcbiAgdmFyIG1pbkRpc3RhbmNlID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuICB2YXIgY2xvc2VzdEl0ZW0gPSBudWxsO1xuICBpdGVtcy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdmFyIGRpc3RhbmNlID0gZnJhY3Rpb25Ub0xpbmUoaXRlbSwgbGluZSk7IC8vIGZpbmQgY2xvc2VzdCBpbnRlcnNlY3Rpb25cblxuICAgIGlmIChkaXN0YW5jZSA+PSAwICYmIGRpc3RhbmNlIDwgbWluRGlzdGFuY2UpIHtcbiAgICAgIGNsb3Nlc3RJdGVtID0gaXRlbTtcbiAgICAgIG1pbkRpc3RhbmNlID0gZGlzdGFuY2U7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGNsb3Nlc3RJdGVtO1xufTtcbi8qKlxuICogTW9kaWZ5IHRoZSBkaXJlY3RMaW5lIGFuZCBSb3V0ZSB2aXJ0dWFsIGVkZ2VzIGFyb3VuZCBvYnN0YWNsZXNcbiAqL1xuXG5cbnZhciBjb21wdXRlUm91dGUgPSBmdW5jdGlvbiBjb21wdXRlUm91dGUoZGlyZWN0TGluZSwgbm9uTWVtYmVycywgbWF4Um91dGluZ0l0ZXJhdGlvbnMsIG1vcnBoQnVmZmVyKSB7XG4gIHZhciBjaGVja2VkTGluZXMgPSBbXTtcbiAgdmFyIGxpbmVzVG9DaGVjayA9IFtdO1xuICBsaW5lc1RvQ2hlY2sucHVzaChkaXJlY3RMaW5lKTtcbiAgdmFyIGhhc0ludGVyc2VjdGlvbiA9IHRydWU7XG4gIHZhciBpdGVyYXRpb25zID0gMDtcblxuICB2YXIgcG9pbnRFeGlzdHMgPSBmdW5jdGlvbiBwb2ludEV4aXN0cyhwb2ludCwgbGluZXMpIHtcbiAgICB2YXIgZmxhZyA9IGZhbHNlO1xuICAgIGxpbmVzLmZvckVhY2goZnVuY3Rpb24gKGxpbmUpIHtcbiAgICAgIGlmIChmbGFnKSByZXR1cm47XG5cbiAgICAgIGlmIChpc1BvaW50c092ZXJsYXAocG9pbnQsIHtcbiAgICAgICAgeDogbGluZS54MSxcbiAgICAgICAgeTogbGluZS55MVxuICAgICAgfSkgfHwgaXNQb2ludHNPdmVybGFwKHBvaW50LCB7XG4gICAgICAgIHg6IGxpbmUueDIsXG4gICAgICAgIHk6IGxpbmUueTJcbiAgICAgIH0pKSB7XG4gICAgICAgIGZsYWcgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBmbGFnO1xuICB9O1xuXG4gIHZhciBpc1BvaW50SW5Ob25NZW1iZXJzID0gZnVuY3Rpb24gaXNQb2ludEluTm9uTWVtYmVycyhwb2ludCwgX25vbk1lbWJlcnMpIHtcbiAgICBmb3IgKHZhciBfaSA9IDAsIF9ub25NZW1iZXJzXzEgPSBfbm9uTWVtYmVyczsgX2kgPCBfbm9uTWVtYmVyc18xLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIGl0ZW0gPSBfbm9uTWVtYmVyc18xW19pXTtcbiAgICAgIHZhciBiYm94ID0gaXRlbS5nZXRCQm94KCk7XG4gICAgICB2YXIgaXRlbUNvbnRvdXIgPSBbW2Jib3gueCwgYmJveC55XSwgW2Jib3gueCArIGJib3gud2lkdGgsIGJib3gueV0sIFtiYm94LngsIGJib3gueSArIGJib3guaGVpZ2h0XSwgW2Jib3gueCArIGJib3gud2lkdGgsIGJib3gueSArIGJib3guaGVpZ2h0XV07XG5cbiAgICAgIGlmIChpc1BvaW50SW5Qb2x5Z29uKGl0ZW1Db250b3VyLCBwb2ludC54LCBwb2ludC55KSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07IC8vIG91dGVyIGxvb3AgZW5kIHdoZW4gbm8gbW9yZSBpbnRlcnNlY3Rpb25zIG9yIG91dCBvZiBpdGVyYXRpb25zXG5cblxuICB3aGlsZSAoaGFzSW50ZXJzZWN0aW9uICYmIGl0ZXJhdGlvbnMgPCBtYXhSb3V0aW5nSXRlcmF0aW9ucykge1xuICAgIGhhc0ludGVyc2VjdGlvbiA9IGZhbHNlO1xuXG4gICAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiBfbG9vcF8xKCkge1xuICAgICAgdmFyIGxpbmUgPSBsaW5lc1RvQ2hlY2sucG9wKCk7XG4gICAgICB2YXIgY2xvc2VzdEl0ZW0gPSBnZXRJbnRlcnNlY3RJdGVtKG5vbk1lbWJlcnMsIGxpbmUpO1xuXG4gICAgICBpZiAoY2xvc2VzdEl0ZW0pIHtcbiAgICAgICAgdmFyIF9hID0gaXRlbUludGVyc2VjdEJ5TGluZShjbG9zZXN0SXRlbSwgbGluZSksXG4gICAgICAgICAgICBpbnRlcnNlY3Rpb25zXzEgPSBfYVswXSxcbiAgICAgICAgICAgIGNvdW50SW50ZXJzZWN0aW9ucyA9IF9hWzFdOyAvLyBpZiBsaW5lIHBhc3NlcyB0aHJvdWdoIGl0ZW1cblxuXG4gICAgICAgIGlmIChjb3VudEludGVyc2VjdGlvbnMgPT09IDIpIHtcbiAgICAgICAgICB2YXIgdGVzdFJlcm91dGUgPSBmdW5jdGlvbiB0ZXN0UmVyb3V0ZShpc0ZpcnN0KSB7XG4gICAgICAgICAgICB2YXIgdGVtcE1vcnBoQnVmZmVyID0gbW9ycGhCdWZmZXI7XG4gICAgICAgICAgICB2YXIgdmlydHVhbE5vZGUgPSByZXJvdXRlTGluZShjbG9zZXN0SXRlbSwgdGVtcE1vcnBoQnVmZmVyLCBpbnRlcnNlY3Rpb25zXzEsIGlzRmlyc3QpOyAvLyB0ZXN0IHRoZSB2aXJ0dWFsTm9kZSBhbHJlYWR5IGV4aXN0c1xuXG4gICAgICAgICAgICB2YXIgZXhpc3QgPSBwb2ludEV4aXN0cyh2aXJ0dWFsTm9kZSwgbGluZXNUb0NoZWNrKSB8fCBwb2ludEV4aXN0cyh2aXJ0dWFsTm9kZSwgY2hlY2tlZExpbmVzKTtcbiAgICAgICAgICAgIHZhciBwb2ludEluc2lkZSA9IGlzUG9pbnRJbk5vbk1lbWJlcnModmlydHVhbE5vZGUsIG5vbk1lbWJlcnMpO1xuXG4gICAgICAgICAgICB3aGlsZSAoIWV4aXN0ICYmIHBvaW50SW5zaWRlICYmIHRlbXBNb3JwaEJ1ZmZlciA+PSAxKSB7XG4gICAgICAgICAgICAgIC8vIHRyeSBhIHNtYWxsZXIgYnVmZmVyXG4gICAgICAgICAgICAgIHRlbXBNb3JwaEJ1ZmZlciAvPSAxLjU7XG4gICAgICAgICAgICAgIHZpcnR1YWxOb2RlID0gcmVyb3V0ZUxpbmUoY2xvc2VzdEl0ZW0sIHRlbXBNb3JwaEJ1ZmZlciwgaW50ZXJzZWN0aW9uc18xLCBpc0ZpcnN0KTtcbiAgICAgICAgICAgICAgZXhpc3QgPSBwb2ludEV4aXN0cyh2aXJ0dWFsTm9kZSwgbGluZXNUb0NoZWNrKSB8fCBwb2ludEV4aXN0cyh2aXJ0dWFsTm9kZSwgY2hlY2tlZExpbmVzKTtcbiAgICAgICAgICAgICAgcG9pbnRJbnNpZGUgPSBpc1BvaW50SW5Ob25NZW1iZXJzKHZpcnR1YWxOb2RlLCBub25NZW1iZXJzKTtcbiAgICAgICAgICAgIH0gLy8g56ys5LqM5qyhcm91dGXml7bkuI3opoHmsYJwb2ludEluc2lkZVxuXG5cbiAgICAgICAgICAgIGlmICh2aXJ0dWFsTm9kZSAmJiAhZXhpc3QgJiYgKCFpc0ZpcnN0IHx8ICFwb2ludEluc2lkZSkpIHtcbiAgICAgICAgICAgICAgLy8gYWRkIDIgcmVyb3V0ZWQgbGluZXMgdG8gY2hlY2tcbiAgICAgICAgICAgICAgbGluZXNUb0NoZWNrLnB1c2gobmV3IExpbmUobGluZS54MSwgbGluZS55MSwgdmlydHVhbE5vZGUueCwgdmlydHVhbE5vZGUueSkpO1xuICAgICAgICAgICAgICBsaW5lc1RvQ2hlY2sucHVzaChuZXcgTGluZSh2aXJ0dWFsTm9kZS54LCB2aXJ0dWFsTm9kZS55LCBsaW5lLngyLCBsaW5lLnkyKSk7XG4gICAgICAgICAgICAgIGhhc0ludGVyc2VjdGlvbiA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHRlc3RSZXJvdXRlKHRydWUpO1xuXG4gICAgICAgICAgaWYgKCFoYXNJbnRlcnNlY3Rpb24pIHtcbiAgICAgICAgICAgIC8vIGlmIHdlIGRpZG4ndCBmaW5kIGEgdmFsaWQgcG9pbnQgYXJvdW5kIHRoZSBmaXJzdCBjb3JuZXIsIHRyeSB0aGUgc2Vjb25kXG4gICAgICAgICAgICB0ZXN0UmVyb3V0ZShmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IC8vIG5vIGludGVyc2VjdGlvbiBmb3VuZCwgbWFyayB0aGlzIGxpbmUgYXMgY29tcGxldGVkXG5cblxuICAgICAgaWYgKCFoYXNJbnRlcnNlY3Rpb24pIHtcbiAgICAgICAgY2hlY2tlZExpbmVzLnB1c2gobGluZSk7XG4gICAgICB9XG5cbiAgICAgIGl0ZXJhdGlvbnMgKz0gMTtcbiAgICB9OyAvLyBpbm5lciBsb29wIGVuZCB3aGVuIG91dCBvZiBsaW5lcyBvciBmb3VuZCBhbiBpbnRlcnNlY3Rpb25cblxuXG4gICAgd2hpbGUgKCFoYXNJbnRlcnNlY3Rpb24gJiYgbGluZXNUb0NoZWNrLmxlbmd0aCkge1xuICAgICAgX2xvb3BfMSgpO1xuICAgIH1cbiAgfSAvLyDliqDlhaXliankvZnnmoTnur9cblxuXG4gIHdoaWxlIChsaW5lc1RvQ2hlY2subGVuZ3RoKSB7XG4gICAgY2hlY2tlZExpbmVzLnB1c2gobGluZXNUb0NoZWNrLnBvcCgpKTtcbiAgfVxuXG4gIHJldHVybiBjaGVja2VkTGluZXM7XG59O1xuLyoqXG4gKiAgQ29ubmVjdCBpdGVtIHdpdGggdmlzaXRlZCBtZW1iZXJzIHVzaW5nIGRpcmVjdCBsaW5lIG9yIHZpcnR1YWwgZWRnZXNcbiAqL1xuXG5cbmZ1bmN0aW9uIGdldFJvdXRlKGl0ZW0sIG5vbk1lbWJlcnMsIHZpc2l0ZWQsIG1heFJvdXRpbmdJdGVyYXRpb25zLCBtb3JwaEJ1ZmZlcikge1xuICB2YXIgb3B0aW1hbE5laWdoYm9yID0gcGlja0Jlc3ROZWlnaGJvcihpdGVtLCB2aXNpdGVkLCBub25NZW1iZXJzKTtcblxuICBpZiAob3B0aW1hbE5laWdoYm9yID09PSBudWxsKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9IC8vICBtZXJnZSB0aGUgY29uc2VjdXRpdmUgbGluZXNcblxuXG4gIHZhciBtZXJnZUxpbmVzID0gZnVuY3Rpb24gbWVyZ2VMaW5lcyhjaGVja2VkTGluZXMpIHtcbiAgICB2YXIgZmluYWxSb3V0ZSA9IFtdO1xuXG4gICAgd2hpbGUgKGNoZWNrZWRMaW5lcy5sZW5ndGggPiAwKSB7XG4gICAgICB2YXIgbGluZTEgPSBjaGVja2VkTGluZXMucG9wKCk7XG5cbiAgICAgIGlmIChjaGVja2VkTGluZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGZpbmFsUm91dGUucHVzaChsaW5lMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICB2YXIgbGluZTIgPSBjaGVja2VkTGluZXMucG9wKCk7XG4gICAgICB2YXIgbWVyZ2VMaW5lID0gbmV3IExpbmUobGluZTEueDEsIGxpbmUxLnkxLCBsaW5lMi54MiwgbGluZTIueTIpO1xuICAgICAgdmFyIGNsb3Nlc3RJdGVtID0gZ2V0SW50ZXJzZWN0SXRlbShub25NZW1iZXJzLCBtZXJnZUxpbmUpOyAvLyBtZXJnZSBtb3N0IHJlY2VudCBsaW5lIGFuZCBwcmV2aW91cyBsaW5lXG5cbiAgICAgIGlmICghY2xvc2VzdEl0ZW0pIHtcbiAgICAgICAgY2hlY2tlZExpbmVzLnB1c2gobWVyZ2VMaW5lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZpbmFsUm91dGUucHVzaChsaW5lMSk7XG4gICAgICAgIGNoZWNrZWRMaW5lcy5wdXNoKGxpbmUyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmluYWxSb3V0ZTtcbiAgfTtcblxuICB2YXIgZGlyZWN0TGluZSA9IG5ldyBMaW5lKGl0ZW0uZ2V0TW9kZWwoKS54LCBpdGVtLmdldE1vZGVsKCkueSwgb3B0aW1hbE5laWdoYm9yLmdldE1vZGVsKCkueCwgb3B0aW1hbE5laWdoYm9yLmdldE1vZGVsKCkueSk7XG4gIHZhciBjaGVja2VkTGluZXMgPSBjb21wdXRlUm91dGUoZGlyZWN0TGluZSwgbm9uTWVtYmVycywgbWF4Um91dGluZ0l0ZXJhdGlvbnMsIG1vcnBoQnVmZmVyKTtcbiAgdmFyIGZpbmFsUm91dGUgPSBtZXJnZUxpbmVzKGNoZWNrZWRMaW5lcyk7XG4gIHJldHVybiBmaW5hbFJvdXRlO1xufVxuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIGNvdW50b3IgdGhhdCBpbmNsdWRlcyB0aGUgIHNlbGVjdGVkIGl0ZW1zIGFuZCBleGNsdWVzIHRoZSBub24tc2VsZWN0ZWQgaXRlbXNcbiAqIEBwYXJhbSBncmFwaFxuICogQHBhcmFtIG1lbWJlcnNcbiAqIEBwYXJhbSBub25NZW1iZXJzXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5cblxuZXhwb3J0IHZhciBnZW5CdWJibGVTZXQgPSBmdW5jdGlvbiBnZW5CdWJibGVTZXQobWVtYmVycywgbm9uTWVtYmVycywgb3BzKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZWRlY2xhcmVcbiAgdmFyIG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKGRlZmF1bHRPcHMsIG9wcyk7XG4gIHZhciBjZW50cm9pZCA9IGdldFBvaW50c0NlbnRlcihtZW1iZXJzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgIHJldHVybiB7XG4gICAgICB4OiBpdGVtLmdldE1vZGVsKCkueCxcbiAgICAgIHk6IGl0ZW0uZ2V0TW9kZWwoKS55XG4gICAgfTtcbiAgfSkpOyAvLyDmjInnhafliLDkuK3lv4Pot53nprvov5zov5HmjpLluo9cblxuICBtZW1iZXJzID0gbWVtYmVycy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIHNxdWFyZURpc3Qoe1xuICAgICAgeDogYS5nZXRNb2RlbCgpLngsXG4gICAgICB5OiBhLmdldE1vZGVsKCkueVxuICAgIH0sIGNlbnRyb2lkKSAtIHNxdWFyZURpc3Qoe1xuICAgICAgeDogYi5nZXRNb2RlbCgpLngsXG4gICAgICB5OiBiLmdldE1vZGVsKCkueVxuICAgIH0sIGNlbnRyb2lkKTtcbiAgfSk7XG4gIHZhciB2aXNpdGVkID0gW107XG4gIHZhciB2aXJ0dWFsRWRnZXMgPSBbXTtcbiAgbWVtYmVycy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdmFyIGxpbmVzID0gZ2V0Um91dGUoaXRlbSwgbm9uTWVtYmVycywgdmlzaXRlZCwgb3B0aW9ucy5tYXhSb3V0aW5nSXRlcmF0aW9ucywgb3B0aW9ucy5tb3JwaEJ1ZmZlcik7XG4gICAgbGluZXMuZm9yRWFjaChmdW5jdGlvbiAobCkge1xuICAgICAgdmlydHVhbEVkZ2VzLnB1c2gobCk7XG4gICAgfSk7XG4gICAgdmlzaXRlZC5wdXNoKGl0ZW0pO1xuICB9KTsgLy8g55Sx5LqOZWRnZeS5n+WPr+S7peS9nOS4um1lbWJlcuWSjG5vbk1lbWJlcuS8oOWFpe+8jOaaguaXtuS4jeiAg+iZkeaKimVkZ2Vz5L2c5Li65Y+C5pWw5Lyg5YWlZ2VuQnViYmxlU2V0XG4gIC8vIGVkZ2VzICYmIGVkZ2VzLmZvckVhY2goZSA9PiB7XG4gIC8vICAgdmlydHVhbEVkZ2VzLnB1c2gobmV3IExpbmUoZS5nZXRTb3VyY2UoKS5nZXRNb2RlbCgpLngsIGUuZ2V0U291cmNlKCkuZ2V0TW9kZWwoKS55LCBlLmdldFRhcmdldCgpLmdldE1vZGVsKCkueCwgZS5nZXRUYXJnZXQoKS5nZXRNb2RlbCgpLnkpKTtcbiAgLy8gfSk7XG5cbiAgdmFyIGFjdGl2ZVJlZ2lvbiA9IGdldEFjdGl2ZVJyZWdpb24obWVtYmVycywgdmlydHVhbEVkZ2VzLCBvcHRpb25zLm5vZGVSMCk7XG4gIHZhciBwb3RlbnRpYWxBcmVhID0gaW5pdEdyaWRDZWxscyhhY3RpdmVSZWdpb24ud2lkdGgsIGFjdGl2ZVJlZ2lvbi5oZWlnaHQsIG9wdGlvbnMucGl4ZWxHcm91cFNpemUpOyAvLyBVc2UgbWFyY2ggc3F1YXJlcyB0byBnZW5lcmF0ZSBjb250b3VyXG5cbiAgdmFyIGNvbnRvdXIgPSBbXTtcbiAgdmFyIGh1bGwgPSBbXTtcblxuICBmb3IgKHZhciBpdGVyYXRpb25zID0gMDsgaXRlcmF0aW9ucyA8IG9wdGlvbnMubWF4TWFyY2hpbmdJdGVyYXRpb25zOyBpdGVyYXRpb25zKyspIHtcbiAgICBmaWxsUG90ZW50aWFsQXJlYShtZW1iZXJzLCBub25NZW1iZXJzLCB2aXJ0dWFsRWRnZXMsIGFjdGl2ZVJlZ2lvbiwgcG90ZW50aWFsQXJlYSwgb3B0aW9ucyk7XG4gICAgY29udG91ciA9IFtdO1xuICAgIGh1bGwgPSBbXTtcbiAgICBpZiAoIW5ldyBNYXJjaGluZ1NxdWFyZXMoY29udG91ciwgcG90ZW50aWFsQXJlYSwgb3B0aW9ucy50aHJlc2hvbGQpLm1hcmNoKCkpIGNvbnRpbnVlO1xuICAgIHZhciBtYXJjaGVkUGF0aCA9IGNvbnRvdXIubWFwKGZ1bmN0aW9uIChwb2ludCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeDogTWF0aC5yb3VuZChwb2ludC54ICogb3B0aW9ucy5waXhlbEdyb3VwU2l6ZSArIGFjdGl2ZVJlZ2lvbi5taW5YKSxcbiAgICAgICAgeTogTWF0aC5yb3VuZChwb2ludC55ICogb3B0aW9ucy5waXhlbEdyb3VwU2l6ZSArIGFjdGl2ZVJlZ2lvbi5taW5ZKVxuICAgICAgfTtcbiAgICB9KTsgLy8gY29uc3QgbWFyY2hlZFBhdGggPSBtYXJjaGluZ1NxdWFyZXMocG90ZW50aWFsQXJlYSwgb3B0aW9ucy50aHJlc2hvbGQpLm1hcChwb2ludCA9PiAoeyB4OiBNYXRoLnJvdW5kKHBvaW50LnggKiBvcHRpb25zLnBpeGVsR3JvdXBTaXplICsgYWN0aXZlUmVnaW9uLm1pblgpLCB5OiBNYXRoLnJvdW5kKHBvaW50LnkgKiBvcHRpb25zLnBpeGVsR3JvdXBTaXplICsgYWN0aXZlUmVnaW9uLm1pblkpIH0pKVxuXG4gICAgaWYgKG1hcmNoZWRQYXRoKSB7XG4gICAgICB2YXIgc2l6ZSA9IG1hcmNoZWRQYXRoLmxlbmd0aDtcblxuICAgICAgaWYgKG9wdGlvbnMuc2tpcCA+IDEpIHtcbiAgICAgICAgc2l6ZSA9IE1hdGguZmxvb3IobWFyY2hlZFBhdGgubGVuZ3RoIC8gb3B0aW9ucy5za2lwKTsgLy8gaWYgd2UgcmVkdWNlZCB0b28gbXVjaCAoZmV3ZXIgdGhhbiB0aHJlZSBwb2ludHMgaW4gcmVkdWNlZCBzdXJmYWNlKSByZWR1Y2Ugc2tpcCBhbmQgdHJ5IGFnYWluXG5cbiAgICAgICAgd2hpbGUgKHNpemUgPCAzICYmIG9wdGlvbnMuc2tpcCA+IDEpIHtcbiAgICAgICAgICBvcHRpb25zLnNraXAgLT0gMTtcbiAgICAgICAgICBzaXplID0gTWF0aC5mbG9vcihtYXJjaGVkUGF0aC5sZW5ndGggLyBvcHRpb25zLnNraXApO1xuICAgICAgICB9XG4gICAgICB9IC8vIGNvcHkgaHVsbCB2YWx1ZXNcblxuXG4gICAgICBmb3IgKHZhciBpID0gMCwgaiA9IDA7IGogPCBzaXplOyBqICs9IDEsIGkgKz0gb3B0aW9ucy5za2lwKSB7XG4gICAgICAgIGh1bGwucHVzaCh7XG4gICAgICAgICAgeDogbWFyY2hlZFBhdGhbaV0ueCxcbiAgICAgICAgICB5OiBtYXJjaGVkUGF0aFtpXS55XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBpc0NvbnRvdXJWYWxpZCA9IGZ1bmN0aW9uIGlzQ29udG91clZhbGlkKCkge1xuICAgICAgZm9yICh2YXIgX2kgPSAwLCBtZW1iZXJzXzEgPSBtZW1iZXJzOyBfaSA8IG1lbWJlcnNfMS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgdmFyIGl0ZW0gPSBtZW1iZXJzXzFbX2ldO1xuICAgICAgICB2YXIgaHVsbFBvaW50cyA9IGh1bGwubWFwKGZ1bmN0aW9uIChwb2ludCkge1xuICAgICAgICAgIHJldHVybiBbcG9pbnQueCwgcG9pbnQueV07XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIWlzUG9pbnRJblBvbHlnb24oaHVsbFBvaW50cywgaXRlbS5nZXRCQm94KCkuY2VudGVyWCwgaXRlbS5nZXRCQm94KCkuY2VudGVyWSkpIHJldHVybiBmYWxzZTtcbiAgICAgIH0gLy8g5LiN5by65Yi26KaB5rGC5omA5pyJbm9uTWVtYmVyc+mDveayoeacieWMheWQq+WcqOWGhVxuICAgICAgLy8gZm9yIChjb25zdCBpdGVtIG9mIG5vbk1lbWJlcnMpIHtcbiAgICAgIC8vICAgaWYgKGlzUG9pbnRJblBvbHlnb24oeyB4OiBpdGVtLmdldEJCb3goKS5jZW50ZXJYLCB5OiBpdGVtLmdldEJCb3goKS5jZW50ZXJZIH0sIGNvbnRvdXIpKSByZXR1cm4gZmFsc2VcbiAgICAgIC8vIH1cblxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuXG4gICAgaWYgKGh1bGwgJiYgaXNDb250b3VyVmFsaWQoKSkge1xuICAgICAgcmV0dXJuIGh1bGw7XG4gICAgfSAvLyB1cGRhdGUgcGFyYW1ldGVycyBmb3IgbmV4dCBpdGVyYWN0aW9uXG5cblxuICAgIG9wdGlvbnMudGhyZXNob2xkICo9IDAuOTtcblxuICAgIGlmIChpdGVyYXRpb25zIDw9IG9wdGlvbnMubWF4TWFyY2hpbmdJdGVyYXRpb25zICogMC41KSB7XG4gICAgICBvcHRpb25zLm1lbWJlckluZmx1ZW5jZUZhY3RvciAqPSAxLjI7XG4gICAgICBvcHRpb25zLmVkZ2VJbmZsdWVuY2VGYWN0b3IgKj0gMS4yO1xuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5ub25NZW1iZXJJbmZsdWVuY2VGYWN0b3IgIT09IDAgJiYgbm9uTWVtYmVycy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBhZnRlciBoYWxmIHRoZSBpdGVyYXRpb25zLCBzdGFydCBpbmNyZWFzaW5nIHBvc2l0aXZlIGVuZXJneSBhbmQgbG93ZXJpbmcgdGhlIHRocmVzaG9sZFxuICAgICAgb3B0aW9ucy5ub25NZW1iZXJJbmZsdWVuY2VGYWN0b3IgKj0gMC44O1xuICAgIH0gZWxzZSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaHVsbDtcbn07XG4vKipcbiAqIHVuaW9uYm91bmRpbmdib3hcbiAqIEBwYXJhbSBtZW1iZXJzXG4gKiBAcGFyYW0gZWRnZXNcbiAqL1xuXG5mdW5jdGlvbiBnZXRBY3RpdmVScmVnaW9uKG1lbWJlcnMsIGVkZ2VzLCBvZmZzZXQpIHtcbiAgdmFyIGFjdGl2ZVJlZ2lvbiA9IHtcbiAgICBtaW5YOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXG4gICAgbWluWTogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxuICAgIG1heFg6IE51bWJlci5ORUdBVElWRV9JTkZJTklUWSxcbiAgICBtYXhZOiBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksXG4gICAgd2lkdGg6IDAsXG4gICAgaGVpZ2h0OiAwLFxuICAgIHg6IDAsXG4gICAgeTogMFxuICB9O1xuICB2YXIgYmJveGVzID0gW107XG4gIG1lbWJlcnMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgIGJib3hlcy5wdXNoKGl0ZW0uZ2V0QkJveCgpKTtcbiAgfSk7XG4gIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGwpIHtcbiAgICBiYm94ZXMucHVzaChsLmdldEJCb3goKSk7XG4gIH0pO1xuXG4gIGZvciAodmFyIF9pID0gMCwgYmJveGVzXzEgPSBiYm94ZXM7IF9pIDwgYmJveGVzXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgdmFyIGJib3ggPSBiYm94ZXNfMVtfaV07XG4gICAgYWN0aXZlUmVnaW9uLm1pblggPSAoYmJveC5taW5YIDwgYWN0aXZlUmVnaW9uLm1pblggPyBiYm94Lm1pblggOiBhY3RpdmVSZWdpb24ubWluWCkgLSBvZmZzZXQ7XG4gICAgYWN0aXZlUmVnaW9uLm1pblkgPSAoYmJveC5taW5ZIDwgYWN0aXZlUmVnaW9uLm1pblkgPyBiYm94Lm1pblkgOiBhY3RpdmVSZWdpb24ubWluWSkgLSBvZmZzZXQ7XG4gICAgYWN0aXZlUmVnaW9uLm1heFggPSAoYmJveC5tYXhYID4gYWN0aXZlUmVnaW9uLm1heFggPyBiYm94Lm1heFggOiBhY3RpdmVSZWdpb24ubWF4WCkgKyBvZmZzZXQ7XG4gICAgYWN0aXZlUmVnaW9uLm1heFkgPSAoYmJveC5tYXhZID4gYWN0aXZlUmVnaW9uLm1heFkgPyBiYm94Lm1heFkgOiBhY3RpdmVSZWdpb24ubWF4WSkgKyBvZmZzZXQ7XG4gIH1cblxuICBhY3RpdmVSZWdpb24ud2lkdGggPSBhY3RpdmVSZWdpb24ubWF4WCAtIGFjdGl2ZVJlZ2lvbi5taW5YO1xuICBhY3RpdmVSZWdpb24uaGVpZ2h0ID0gYWN0aXZlUmVnaW9uLm1heFkgLSBhY3RpdmVSZWdpb24ubWluWTtcbiAgYWN0aXZlUmVnaW9uLnggPSBhY3RpdmVSZWdpb24ubWluWDtcbiAgYWN0aXZlUmVnaW9uLnkgPSBhY3RpdmVSZWdpb24ubWluWTtcbiAgcmV0dXJuIGFjdGl2ZVJlZ2lvbjtcbn1cblxuZnVuY3Rpb24gZmlsbFBvdGVudGlhbEFyZWEobWVtYmVycywgbm9uTWVtYmVycywgZWRnZXMsIGFjdGl2ZVJlZ2lvbiwgcG90ZW50aWFsQXJlYSwgb3B0aW9ucykge1xuICBmdW5jdGlvbiBwb3MyR3JpZEl4KHgsIG9mZnNldCkge1xuICAgIHZhciBncmlkSXggPSBNYXRoLmZsb29yKCh4IC0gb2Zmc2V0KSAvIG9wdGlvbnMucGl4ZWxHcm91cFNpemUpO1xuICAgIHJldHVybiBncmlkSXggPCAwID8gMCA6IGdyaWRJeDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdyaWRJeDJQb3MoeCwgb2Zmc2V0KSB7XG4gICAgcmV0dXJuIHggKiBvcHRpb25zLnBpeGVsR3JvdXBTaXplICsgb2Zmc2V0O1xuICB9IC8vIHVzaW5nIGludmVyc2UgYSBmb3IgbnVtZXJpY2FsIHN0YWJpbGl0eVxuXG5cbiAgdmFyIG5vZGVJbmZBID0gKG9wdGlvbnMubm9kZVIwIC0gb3B0aW9ucy5ub2RlUjEpICogKG9wdGlvbnMubm9kZVIwIC0gb3B0aW9ucy5ub2RlUjEpO1xuICB2YXIgZWRnZUluZkEgPSAob3B0aW9ucy5lZGdlUjAgLSBvcHRpb25zLmVkZ2VSMSkgKiAob3B0aW9ucy5lZGdlUjAgLSBvcHRpb25zLmVkZ2VSMSk7XG5cbiAgdmFyIGdldEFmZmVjdGVkUmVnaW9uID0gZnVuY3Rpb24gZ2V0QWZmZWN0ZWRSZWdpb24oYmJveCwgdGhyZXNob2xkUikge1xuICAgIHZhciBzdGFydFggPSBNYXRoLm1pbihwb3MyR3JpZEl4KGJib3gubWluWCwgdGhyZXNob2xkUiArIGFjdGl2ZVJlZ2lvbi5taW5YKSwgcG90ZW50aWFsQXJlYS53aWR0aCk7XG4gICAgdmFyIHN0YXJ0WSA9IE1hdGgubWluKHBvczJHcmlkSXgoYmJveC5taW5ZLCB0aHJlc2hvbGRSICsgYWN0aXZlUmVnaW9uLm1pblkpLCBwb3RlbnRpYWxBcmVhLmhlaWdodCk7XG4gICAgdmFyIGVuZFggPSBNYXRoLm1pbihwb3MyR3JpZEl4KGJib3gubWF4WCwgLXRocmVzaG9sZFIgKyBhY3RpdmVSZWdpb24ubWluWCksIHBvdGVudGlhbEFyZWEud2lkdGgpO1xuICAgIHZhciBlbmRZID0gTWF0aC5taW4ocG9zMkdyaWRJeChiYm94Lm1heFksIC10aHJlc2hvbGRSICsgYWN0aXZlUmVnaW9uLm1pblkpLCBwb3RlbnRpYWxBcmVhLmhlaWdodCk7XG4gICAgcmV0dXJuIFtzdGFydFgsIHN0YXJ0WSwgZW5kWCwgZW5kWV07XG4gIH07XG5cbiAgdmFyIGFkZEl0ZW1JbmZsdWVuY2UgPSBmdW5jdGlvbiBhZGRJdGVtSW5mbHVlbmNlKGl0ZW0sIGluZmx1ZW5jZUZhY3Rvcikge1xuICAgIHZhciBiYm94ID0gaXRlbS5nZXRCQm94KCk7XG5cbiAgICB2YXIgX2EgPSBnZXRBZmZlY3RlZFJlZ2lvbihiYm94LCBvcHRpb25zLm5vZGVSMSksXG4gICAgICAgIHN0YXJ0WCA9IF9hWzBdLFxuICAgICAgICBzdGFydFkgPSBfYVsxXSxcbiAgICAgICAgZW5kWCA9IF9hWzJdLFxuICAgICAgICBlbmRZID0gX2FbM107IC8vIGNhbGN1bGF0ZSBpdGVtIGluZmx1ZW5jZSBmb3IgZWFjaCBjZWxsXG5cblxuICAgIGZvciAodmFyIHkgPSBzdGFydFk7IHkgPCBlbmRZOyB5ICs9IDEpIHtcbiAgICAgIGZvciAodmFyIHggPSBzdGFydFg7IHggPCBlbmRYOyB4ICs9IDEpIHtcbiAgICAgICAgaWYgKGluZmx1ZW5jZUZhY3RvciA8IDAgJiYgcG90ZW50aWFsQXJlYVt4ICsgeSAqIHBvdGVudGlhbEFyZWEud2lkdGhdIDw9IDApIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB0ZW1wWCA9IGdyaWRJeDJQb3MoeCwgYWN0aXZlUmVnaW9uLm1pblgpO1xuICAgICAgICB2YXIgdGVtcFkgPSBncmlkSXgyUG9zKHksIGFjdGl2ZVJlZ2lvbi5taW5ZKTtcbiAgICAgICAgdmFyIGRpc3RhbmNlU3EgPSBwb2ludFJlY3RTcXVhcmVEaXN0KHtcbiAgICAgICAgICB4OiB0ZW1wWCxcbiAgICAgICAgICB5OiB0ZW1wWVxuICAgICAgICB9LCB7XG4gICAgICAgICAgeDogYmJveC5taW5YLFxuICAgICAgICAgIHk6IGJib3gubWluWSxcbiAgICAgICAgICB3aWR0aDogYmJveC53aWR0aCxcbiAgICAgICAgICBoZWlnaHQ6IGJib3guaGVpZ2h0XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChkaXN0YW5jZVNxIDwgTWF0aC5wb3cob3B0aW9ucy5ub2RlUjEsIDIpKSB7XG4gICAgICAgICAgdmFyIGRyID0gTWF0aC5zcXJ0KGRpc3RhbmNlU3EpIC0gb3B0aW9ucy5ub2RlUjE7XG4gICAgICAgICAgcG90ZW50aWFsQXJlYS5jZWxsc1t4ICsgeSAqIHBvdGVudGlhbEFyZWEud2lkdGhdICs9IGluZmx1ZW5jZUZhY3RvciAqIGRyICogZHI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgdmFyIGFkZEVkZ2VJbmZsdWVuY2UgPSBmdW5jdGlvbiBhZGRFZGdlSW5mbHVlbmNlKGxpbmUsIGluZmx1ZW5jZUZhY3Rvcikge1xuICAgIHZhciBiYm94ID0gbGluZS5nZXRCQm94KCk7XG5cbiAgICB2YXIgX2EgPSBnZXRBZmZlY3RlZFJlZ2lvbihiYm94LCBvcHRpb25zLmVkZ2VSMSksXG4gICAgICAgIHN0YXJ0WCA9IF9hWzBdLFxuICAgICAgICBzdGFydFkgPSBfYVsxXSxcbiAgICAgICAgZW5kWCA9IF9hWzJdLFxuICAgICAgICBlbmRZID0gX2FbM107IC8vIGZvciBldmVyeSBwb2ludCBpbiBhY3RpdmUgcGFydCBvZiBwb3RlbnRpYWxBcmVhLCBjYWxjdWxhdGUgZGlzdGFuY2UgdG8gbmVhcmVzdCBwb2ludCBvbiBsaW5lIGFuZCBhZGQgaW5mbHVlbmNlXG5cblxuICAgIGZvciAodmFyIHkgPSBzdGFydFk7IHkgPCBlbmRZOyB5ICs9IDEpIHtcbiAgICAgIGZvciAodmFyIHggPSBzdGFydFg7IHggPCBlbmRYOyB4ICs9IDEpIHtcbiAgICAgICAgaWYgKGluZmx1ZW5jZUZhY3RvciA8IDAgJiYgcG90ZW50aWFsQXJlYS5jZWxsc1t4ICsgeSAqIHBvdGVudGlhbEFyZWEud2lkdGhdIDw9IDApIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB0ZW1wWCA9IGdyaWRJeDJQb3MoeCwgYWN0aXZlUmVnaW9uLm1pblgpO1xuICAgICAgICB2YXIgdGVtcFkgPSBncmlkSXgyUG9zKHksIGFjdGl2ZVJlZ2lvbi5taW5ZKTtcbiAgICAgICAgdmFyIG1pbkRpc3RhbmNlU3EgPSBwb2ludExpbmVTcXVhcmVEaXN0KHtcbiAgICAgICAgICB4OiB0ZW1wWCxcbiAgICAgICAgICB5OiB0ZW1wWVxuICAgICAgICB9LCBsaW5lKTsgLy8gb25seSBpbmZsdWVuY2UgaWYgbGVzcyB0aGFuIHIxXG5cbiAgICAgICAgaWYgKG1pbkRpc3RhbmNlU3EgPCBNYXRoLnBvdyhvcHRpb25zLmVkZ2VSMSwgMikpIHtcbiAgICAgICAgICB2YXIgbWRyID0gTWF0aC5zcXJ0KG1pbkRpc3RhbmNlU3EpIC0gb3B0aW9ucy5lZGdlUjE7XG4gICAgICAgICAgcG90ZW50aWFsQXJlYS5jZWxsc1t4ICsgeSAqIHBvdGVudGlhbEFyZWEud2lkdGhdICs9IGluZmx1ZW5jZUZhY3RvciAqIG1kciAqIG1kcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBpZiAob3B0aW9ucy5ub2RlSW5mbHVlbmNlRmFjdG9yKSB7XG4gICAgbWVtYmVycy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICBhZGRJdGVtSW5mbHVlbmNlKGl0ZW0sIG9wdGlvbnMubm9kZUluZmx1ZW5jZUZhY3RvciAvIG5vZGVJbmZBKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmVkZ2VJbmZsdWVuY2VGYWN0b3IpIHtcbiAgICBlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICBhZGRFZGdlSW5mbHVlbmNlKGVkZ2UsIG9wdGlvbnMuZWRnZUluZmx1ZW5jZUZhY3RvciAvIGVkZ2VJbmZBKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLm5lZ2F0aXZlTm9kZUluZmx1ZW5jZUZhY3Rvcikge1xuICAgIG5vbk1lbWJlcnMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgYWRkSXRlbUluZmx1ZW5jZShpdGVtLCBvcHRpb25zLm5lZ2F0aXZlTm9kZUluZmx1ZW5jZUZhY3RvciAvIG5vZGVJbmZBKTtcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZXJvdXRlTGluZShpdGVtLCBidWZmZXIsIGludGVyc2VjdGlvbnMsIHdyYXBOb3JtYWwpIHtcbiAgdmFyIGJib3ggPSBpdGVtLmdldEJCb3goKTtcbiAgdmFyIHRvcEludGVyc2VjdCA9IGludGVyc2VjdGlvbnNbMF0sXG4gICAgICBsZWZ0SW50ZXJzZWN0ID0gaW50ZXJzZWN0aW9uc1sxXSxcbiAgICAgIGJvdHRvbUludGVyc2VjdCA9IGludGVyc2VjdGlvbnNbMl0sXG4gICAgICByaWdodEludGVyc2VjdCA9IGludGVyc2VjdGlvbnNbM107XG4gIHZhciBjb3JuZXJQb3MgPSB7XG4gICAgdG9wTGVmdDoge1xuICAgICAgeDogYmJveC5taW5YIC0gYnVmZmVyLFxuICAgICAgeTogYmJveC5taW5ZIC0gYnVmZmVyXG4gICAgfSxcbiAgICB0b3BSaWdodDoge1xuICAgICAgeDogYmJveC5tYXhYICsgYnVmZmVyLFxuICAgICAgeTogYmJveC5taW5ZIC0gYnVmZmVyXG4gICAgfSxcbiAgICBib3R0b21MZWZ0OiB7XG4gICAgICB4OiBiYm94Lm1pblggLSBidWZmZXIsXG4gICAgICB5OiBiYm94Lm1heFkgKyBidWZmZXJcbiAgICB9LFxuICAgIGJvdHRvbVJpZ2h0OiB7XG4gICAgICB4OiBiYm94Lm1heFggKyBidWZmZXIsXG4gICAgICB5OiBiYm94Lm1heFkgKyBidWZmZXJcbiAgICB9XG4gIH07XG4gIHZhciB0b3RhbEFyZWEgPSBiYm94LmhlaWdodCAqIGJib3gud2lkdGg7XG5cbiAgZnVuY3Rpb24gY2FsY0hhbGZBcmVhKGludGVyc2VjdDEsIGludGVyc2VjdDIpIHtcbiAgICByZXR1cm4gYmJveC53aWR0aCAqICgoaW50ZXJzZWN0MS55IC0gYmJveC5taW5ZICsgKGludGVyc2VjdDIueSAtIGJib3gubWluWSkpICogMC41KTtcbiAgfSAvLyDmoLnmja7nur/lkoxib3VuZGluZ2JveOebuOS6pOeahOaDheWGte+8jOehruWummNvbnRyb2wgcG9pbnTnmoTkvY3nva5cblxuXG4gIGlmIChsZWZ0SW50ZXJzZWN0KSB7XG4gICAgLy8g55u45Lqk5Yy65Z+f5pyJ5LiJ6KeS5b2iXG4gICAgaWYgKHRvcEludGVyc2VjdCkgcmV0dXJuIHdyYXBOb3JtYWwgPyBjb3JuZXJQb3MudG9wTGVmdCA6IGNvcm5lclBvcy5ib3R0b21SaWdodDtcbiAgICBpZiAoYm90dG9tSW50ZXJzZWN0KSByZXR1cm4gd3JhcE5vcm1hbCA/IGNvcm5lclBvcy5ib3R0b21MZWZ0IDogY29ybmVyUG9zLnRvcFJpZ2h0OyAvLyDnm7jkuqTljLrln5/liIbmiJDkuIrkuIvkuKTkuKrmoq/lvaLvvIzmr5TovoPpnaLnp69cblxuICAgIHZhciB0b3BBcmVhID0gY2FsY0hhbGZBcmVhKGxlZnRJbnRlcnNlY3QsIHJpZ2h0SW50ZXJzZWN0KTtcblxuICAgIGlmICh0b3BBcmVhIDwgdG90YWxBcmVhICogMC41KSB7XG4gICAgICBpZiAobGVmdEludGVyc2VjdC55ID4gcmlnaHRJbnRlcnNlY3QueSkgcmV0dXJuIHdyYXBOb3JtYWwgPyBjb3JuZXJQb3MudG9wTGVmdCA6IGNvcm5lclBvcy5ib3R0b21SaWdodDtcbiAgICAgIHJldHVybiB3cmFwTm9ybWFsID8gY29ybmVyUG9zLnRvcFJpZ2h0IDogY29ybmVyUG9zLmJvdHRvbUxlZnQ7XG4gICAgfVxuXG4gICAgaWYgKGxlZnRJbnRlcnNlY3QueSA8IHJpZ2h0SW50ZXJzZWN0LnkpIHJldHVybiB3cmFwTm9ybWFsID8gY29ybmVyUG9zLmJvdHRvbUxlZnQgOiBjb3JuZXJQb3MudG9wUmlnaHQ7XG4gICAgcmV0dXJuIHdyYXBOb3JtYWwgPyBjb3JuZXJQb3MuYm90dG9tUmlnaHQgOiBjb3JuZXJQb3MudG9wTGVmdDtcbiAgfVxuXG4gIGlmIChyaWdodEludGVyc2VjdCkge1xuICAgIGlmICh0b3BJbnRlcnNlY3QpIHJldHVybiB3cmFwTm9ybWFsID8gY29ybmVyUG9zLnRvcFJpZ2h0IDogY29ybmVyUG9zLmJvdHRvbUxlZnQ7XG4gICAgaWYgKGJvdHRvbUludGVyc2VjdCkgcmV0dXJuIHdyYXBOb3JtYWwgPyBjb3JuZXJQb3MuYm90dG9tUmlnaHQgOiBjb3JuZXJQb3MudG9wTGVmdDtcbiAgfSAvLyDnm7jkuqTljLrln5/liIbmiJDlt6blj7PkuKTkuKrmoq/lvaJcblxuXG4gIHZhciBsZWZ0QXJlYSA9IGNhbGNIYWxmQXJlYSh0b3BJbnRlcnNlY3QsIGJvdHRvbUludGVyc2VjdCk7XG5cbiAgaWYgKGxlZnRBcmVhIDwgdG90YWxBcmVhICogMC41KSB7XG4gICAgaWYgKHRvcEludGVyc2VjdC54ID4gYm90dG9tSW50ZXJzZWN0LngpIHJldHVybiB3cmFwTm9ybWFsID8gY29ybmVyUG9zLnRvcExlZnQgOiBjb3JuZXJQb3MuYm90dG9tUmlnaHQ7XG4gICAgcmV0dXJuIHdyYXBOb3JtYWwgPyBjb3JuZXJQb3MuYm90dG9tTGVmdCA6IGNvcm5lclBvcy50b3BSaWdodDtcbiAgfVxuXG4gIGlmICh0b3BJbnRlcnNlY3QueCA8IGJvdHRvbUludGVyc2VjdC54KSByZXR1cm4gd3JhcE5vcm1hbCA/IGNvcm5lclBvcy50b3BSaWdodCA6IGNvcm5lclBvcy5ib3R0b21MZWZ0O1xuICByZXR1cm4gd3JhcE5vcm1hbCA/IGNvcm5lclBvcy5ib3R0b21SaWdodCA6IGNvcm5lclBvcy50b3BMZWZ0O1xufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/hull/bubbleset.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/hull/convexHull.js":
/*!***************************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/hull/convexHull.js ***!
\***************************************************************************************/
/*! exports provided: cross, genConvexHull */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cross\", function() { return cross; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"genConvexHull\", function() { return genConvexHull; });\n/**\n * Use cross product to judge the direction of the turn.\n * Returns a positive value, if OAB makes a clockwise turn,\n * negative for counter-clockwise turn, and zero if the points are collinear.\n */\nvar cross = function cross(a, b, o) {\n return (a.y - o.y) * (b.x - o.x) - (a.x - o.x) * (b.y - o.y);\n};\n/**\n * Generate a convex hull of given points. Andrew's monotone chain algorithm.\n * @param points An array of [x, y] representing the coordinates of points.\n * @return a list of vertices of the convex hull in counter-clockwise order,\n */\n\nvar genConvexHull = function genConvexHull(items) {\n var points = items.map(function (item) {\n return {\n x: item.getModel().x,\n y: item.getModel().y\n };\n });\n points.sort(function (a, b) {\n return a.x === b.x ? a.y - b.y : a.x - b.x;\n });\n\n if (points.length === 1) {\n return points;\n } // build the lower hull\n\n\n var lower = [];\n\n for (var i = 0; i < points.length; i++) {\n while (lower.length >= 2 && cross(lower[lower.length - 2], lower[lower.length - 1], points[i]) <= 0) {\n lower.pop();\n }\n\n lower.push(points[i]);\n } // build the upper hull\n\n\n var upper = [];\n\n for (var i = points.length - 1; i >= 0; i--) {\n while (upper.length >= 2 && cross(upper[upper.length - 2], upper[upper.length - 1], points[i]) <= 0) {\n upper.pop();\n }\n\n upper.push(points[i]);\n }\n\n upper.pop();\n lower.pop();\n var strictHull = lower.concat(upper);\n return strictHull;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2h1bGwvY29udmV4SHVsbC5qcz9jY2E1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7O0FBRUEsaUJBQWlCLG1CQUFtQjtBQUNwQztBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHOzs7QUFHSDs7QUFFQSxpQ0FBaUMsUUFBUTtBQUN6QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1jb3JlQDAuNS4wQEBhbnR2L2c2LWNvcmUvZXMvZWxlbWVudC9odWxsL2NvbnZleEh1bGwuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFVzZSBjcm9zcyBwcm9kdWN0IHRvIGp1ZGdlIHRoZSBkaXJlY3Rpb24gb2YgdGhlIHR1cm4uXG4gKiBSZXR1cm5zIGEgcG9zaXRpdmUgdmFsdWUsIGlmIE9BQiBtYWtlcyBhIGNsb2Nrd2lzZSB0dXJuLFxuICogbmVnYXRpdmUgZm9yIGNvdW50ZXItY2xvY2t3aXNlIHR1cm4sIGFuZCB6ZXJvIGlmIHRoZSBwb2ludHMgYXJlIGNvbGxpbmVhci5cbiAqL1xuZXhwb3J0IHZhciBjcm9zcyA9IGZ1bmN0aW9uIGNyb3NzKGEsIGIsIG8pIHtcbiAgcmV0dXJuIChhLnkgLSBvLnkpICogKGIueCAtIG8ueCkgLSAoYS54IC0gby54KSAqIChiLnkgLSBvLnkpO1xufTtcbi8qKlxuICogR2VuZXJhdGUgYSBjb252ZXggaHVsbCBvZiBnaXZlbiBwb2ludHMuIEFuZHJldydzIG1vbm90b25lIGNoYWluIGFsZ29yaXRobS5cbiAqIEBwYXJhbSBwb2ludHMgQW4gYXJyYXkgb2YgW3gsIHldIHJlcHJlc2VudGluZyB0aGUgY29vcmRpbmF0ZXMgb2YgcG9pbnRzLlxuICogQHJldHVybiBhIGxpc3Qgb2YgdmVydGljZXMgb2YgdGhlIGNvbnZleCBodWxsIGluIGNvdW50ZXItY2xvY2t3aXNlIG9yZGVyLFxuICovXG5cbmV4cG9ydCB2YXIgZ2VuQ29udmV4SHVsbCA9IGZ1bmN0aW9uIGdlbkNvbnZleEh1bGwoaXRlbXMpIHtcbiAgdmFyIHBvaW50cyA9IGl0ZW1zLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgIHJldHVybiB7XG4gICAgICB4OiBpdGVtLmdldE1vZGVsKCkueCxcbiAgICAgIHk6IGl0ZW0uZ2V0TW9kZWwoKS55XG4gICAgfTtcbiAgfSk7XG4gIHBvaW50cy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIGEueCA9PT0gYi54ID8gYS55IC0gYi55IDogYS54IC0gYi54O1xuICB9KTtcblxuICBpZiAocG9pbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgIHJldHVybiBwb2ludHM7XG4gIH0gLy8gYnVpbGQgdGhlIGxvd2VyIGh1bGxcblxuXG4gIHZhciBsb3dlciA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgd2hpbGUgKGxvd2VyLmxlbmd0aCA+PSAyICYmIGNyb3NzKGxvd2VyW2xvd2VyLmxlbmd0aCAtIDJdLCBsb3dlcltsb3dlci5sZW5ndGggLSAxXSwgcG9pbnRzW2ldKSA8PSAwKSB7XG4gICAgICBsb3dlci5wb3AoKTtcbiAgICB9XG5cbiAgICBsb3dlci5wdXNoKHBvaW50c1tpXSk7XG4gIH0gLy8gYnVpbGQgdGhlIHVwcGVyIGh1bGxcblxuXG4gIHZhciB1cHBlciA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSBwb2ludHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB3aGlsZSAodXBwZXIubGVuZ3RoID49IDIgJiYgY3Jvc3ModXBwZXJbdXBwZXIubGVuZ3RoIC0gMl0sIHVwcGVyW3VwcGVyLmxlbmd0aCAtIDFdLCBwb2ludHNbaV0pIDw9IDApIHtcbiAgICAgIHVwcGVyLnBvcCgpO1xuICAgIH1cblxuICAgIHVwcGVyLnB1c2gocG9pbnRzW2ldKTtcbiAgfVxuXG4gIHVwcGVyLnBvcCgpO1xuICBsb3dlci5wb3AoKTtcbiAgdmFyIHN0cmljdEh1bGwgPSBsb3dlci5jb25jYXQodXBwZXIpO1xuICByZXR1cm4gc3RyaWN0SHVsbDtcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/hull/convexHull.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/index.js":
/*!*****************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/index.js ***!
\*****************************************************************************/
/*! exports provided: Arrow, Marker, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./shape */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shape.js\");\n/* harmony import */ var _node__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/node.js\");\n/* harmony import */ var _edge__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./edge */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/edge.js\");\n/* harmony import */ var _combo__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./combo */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/combo.js\");\n/* harmony import */ var _combos__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./combos */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/combos/index.js\");\n/* harmony import */ var _nodes__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./nodes */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/nodes/index.js\");\n/* harmony import */ var _arrow__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./arrow */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/arrow.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Arrow\", function() { return _arrow__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _marker__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./marker */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/marker.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Marker\", function() { return _marker__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_shape__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2luZGV4LmpzP2I2NDciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNEI7QUFDWjtBQUNBO0FBQ0M7QUFDQztBQUNEO0FBQzBCO0FBQ0U7QUFDOUIsNkdBQUsiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFNoYXBlIGZyb20gJy4vc2hhcGUnO1xuaW1wb3J0ICcuL25vZGUnO1xuaW1wb3J0ICcuL2VkZ2UnO1xuaW1wb3J0ICcuL2NvbWJvJztcbmltcG9ydCAnLi9jb21ib3MnO1xuaW1wb3J0ICcuL25vZGVzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQXJyb3cgfSBmcm9tICcuL2Fycm93JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTWFya2VyIH0gZnJvbSAnLi9tYXJrZXInO1xuZXhwb3J0IGRlZmF1bHQgU2hhcGU7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/marker.js":
/*!******************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/marker.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 collapse: function collapse(x, y, r) {\n return [['M', x - r, y], ['a', r, r, 0, 1, 0, r * 2, 0], ['a', r, r, 0, 1, 0, -r * 2, 0], ['M', x - r + 4, y], ['L', x + r - 4, y]];\n },\n expand: function expand(x, y, r) {\n return [['M', x - r, y], ['a', r, r, 0, 1, 0, r * 2, 0], ['a', r, r, 0, 1, 0, -r * 2, 0], ['M', x - r + 4, y], ['L', x - r + 2 * r - 4, y], ['M', x - r + r, y - r + 4], ['L', x, y + r - 4]];\n },\n upTriangle: function upTriangle(x, y, r) {\n var l1 = r * Math.cos(Math.PI / 6);\n var l2 = r * Math.sin(Math.PI / 6);\n return [['M', x - l1, y + l2], ['L', x + l1, y + l2], ['L', x, y - r], ['Z']];\n },\n downTriangle: function downTriangle(x, y, r) {\n var l1 = r * Math.cos(Math.PI / 6);\n var l2 = r * Math.sin(Math.PI / 6);\n return [['M', x - l1, y - l2], ['L', x + l1, y - l2], ['L', x, y + r], ['Z']];\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L21hcmtlci5qcz83NGFjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQWU7QUFDZjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L21hcmtlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IHtcbiAgY29sbGFwc2U6IGZ1bmN0aW9uIGNvbGxhcHNlKHgsIHksIHIpIHtcbiAgICByZXR1cm4gW1snTScsIHggLSByLCB5XSwgWydhJywgciwgciwgMCwgMSwgMCwgciAqIDIsIDBdLCBbJ2EnLCByLCByLCAwLCAxLCAwLCAtciAqIDIsIDBdLCBbJ00nLCB4IC0gciArIDQsIHldLCBbJ0wnLCB4ICsgciAtIDQsIHldXTtcbiAgfSxcbiAgZXhwYW5kOiBmdW5jdGlvbiBleHBhbmQoeCwgeSwgcikge1xuICAgIHJldHVybiBbWydNJywgeCAtIHIsIHldLCBbJ2EnLCByLCByLCAwLCAxLCAwLCByICogMiwgMF0sIFsnYScsIHIsIHIsIDAsIDEsIDAsIC1yICogMiwgMF0sIFsnTScsIHggLSByICsgNCwgeV0sIFsnTCcsIHggLSByICsgMiAqIHIgLSA0LCB5XSwgWydNJywgeCAtIHIgKyByLCB5IC0gciArIDRdLCBbJ0wnLCB4LCB5ICsgciAtIDRdXTtcbiAgfSxcbiAgdXBUcmlhbmdsZTogZnVuY3Rpb24gdXBUcmlhbmdsZSh4LCB5LCByKSB7XG4gICAgdmFyIGwxID0gciAqIE1hdGguY29zKE1hdGguUEkgLyA2KTtcbiAgICB2YXIgbDIgPSByICogTWF0aC5zaW4oTWF0aC5QSSAvIDYpO1xuICAgIHJldHVybiBbWydNJywgeCAtIGwxLCB5ICsgbDJdLCBbJ0wnLCB4ICsgbDEsIHkgKyBsMl0sIFsnTCcsIHgsIHkgLSByXSwgWydaJ11dO1xuICB9LFxuICBkb3duVHJpYW5nbGU6IGZ1bmN0aW9uIGRvd25UcmlhbmdsZSh4LCB5LCByKSB7XG4gICAgdmFyIGwxID0gciAqIE1hdGguY29zKE1hdGguUEkgLyA2KTtcbiAgICB2YXIgbDIgPSByICogTWF0aC5zaW4oTWF0aC5QSSAvIDYpO1xuICAgIHJldHVybiBbWydNJywgeCAtIGwxLCB5IC0gbDJdLCBbJ0wnLCB4ICsgbDEsIHkgLSBsMl0sIFsnTCcsIHgsIHkgKyByXSwgWydaJ11dO1xuICB9XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/marker.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/node.js":
/*!****************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/node.js ***!
\****************************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util_base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/base */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/base.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../global */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/global.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./shape */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shape.js\");\n/* harmony import */ var _shapeBase__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./shapeBase */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shapeBase.js\");\n\n\n\n\n\n\nvar singleNode = {\n itemType: 'node',\n // 单个图形的类型\n shapeType: 'single-node',\n\n /**\n * 文本相对图形的位置,默认以中心点\n * 位置包括: top, bottom, left, right, center\n * @type {String}\n */\n labelPosition: 'center',\n\n /**\n * 文本相对偏移,当 labelPosition 不为 center 时有效\n * @type {Number}\n */\n offset: _global__WEBPACK_IMPORTED_MODULE_3__[\"default\"].nodeLabel.offset,\n\n /**\n * 获取节点宽高\n * @internal 返回节点的大小,以 [width, height] 的方式维护\n * @param {Object} cfg 节点的配置项\n * @return {Array} 宽高\n */\n getSize: function getSize(cfg) {\n var _a;\n\n var size = ((_a = this.mergeStyle) === null || _a === void 0 ? void 0 : _a.size) || cfg.size || this.getOptions({}).size || _global__WEBPACK_IMPORTED_MODULE_3__[\"default\"].defaultNode.size; // Global.defaultNode.size; // \n // size 是数组,但长度为1,则补长度为2\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(size) && size.length === 1) {\n size = [size[0], size[0]];\n } // size 为数字,则转换为数组\n\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(size)) {\n size = [size, size];\n }\n\n return size;\n },\n // 私有方法,不希望扩展的节点复写这个方法\n getLabelStyleByPosition: function getLabelStyleByPosition(cfg, labelCfg) {\n var labelPosition = labelCfg.position || this.labelPosition; // 默认的位置(最可能的情形),所以放在最上面\n\n if (labelPosition === 'center') {\n return {\n x: 0,\n y: 0,\n text: cfg.label\n };\n }\n\n var offset = labelCfg.offset;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(offset)) {\n // 考虑 offset = 0 的场景,不用用 labelCfg.offset || Global.nodeLabel.offset\n offset = this.offset; // 不居中时的偏移量\n }\n\n var size = this.getSize(cfg);\n var style;\n\n switch (labelPosition) {\n case 'top':\n style = {\n x: 0,\n y: -size[1] / 2 - offset,\n textBaseline: 'bottom' // 文本在图形的上面\n\n };\n break;\n\n case 'bottom':\n style = {\n x: 0,\n y: size[1] / 2 + offset,\n textBaseline: 'top'\n };\n break;\n\n case 'left':\n style = {\n x: -size[0] / 2 - offset,\n y: 0,\n textAlign: 'right'\n };\n break;\n\n default:\n style = {\n x: size[0] / 2 + offset,\n y: 0,\n textAlign: 'left'\n };\n break;\n }\n\n style.text = cfg.label;\n return style;\n },\n getLabelBgStyleByPosition: function getLabelBgStyleByPosition(label, cfg, labelCfg, group) {\n var _a;\n\n if (!label) return {};\n var backgroundStyle = (_a = labelCfg.style) === null || _a === void 0 ? void 0 : _a.background;\n if (!backgroundStyle) return {};\n var bbox = label.getBBox();\n var padding = Object(_util_base__WEBPACK_IMPORTED_MODULE_2__[\"formatPadding\"])(backgroundStyle.padding);\n var backgroundWidth = bbox.width + padding[1] + padding[3];\n var backgroundHeight = bbox.height + padding[0] + padding[2];\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: bbox.minX - padding[3],\n y: bbox.minY - padding[0]\n }, backgroundStyle), {\n width: backgroundWidth,\n height: backgroundHeight\n });\n },\n drawShape: function drawShape(cfg, group) {\n var shapeType = this.shapeType; // || this.type,都已经加了 shapeType\n\n var style = this.getShapeStyle(cfg);\n var shape = group.addShape(shapeType, {\n attrs: style,\n draggable: true,\n name: 'node-shape'\n });\n group['shapeMap']['node-shape'] = shape;\n return shape;\n },\n\n /**\n * 更新linkPoints\n * @param {Object} cfg 节点数据配置项\n * @param {Group} group Item所在的group\n */\n updateLinkPoints: function updateLinkPoints(cfg, group) {\n var defaultLinkPoints = (this.mergeStyle || this.getOptions(cfg)).linkPoints;\n var markLeft = group['shapeMap']['link-point-left'] || group.find(function (element) {\n return element.get('className') === 'link-point-left';\n });\n var markRight = group['shapeMap']['link-point-right'] || group.find(function (element) {\n return element.get('className') === 'link-point-right';\n });\n var markTop = group['shapeMap']['link-point-top'] || group.find(function (element) {\n return element.get('className') === 'link-point-top';\n });\n var markBottom = group['shapeMap']['link-point-bottom'] || group.find(function (element) {\n return element.get('className') === 'link-point-bottom';\n });\n var currentLinkPoints;\n\n if (markLeft) {\n currentLinkPoints = markLeft.attr();\n }\n\n if (markRight && !currentLinkPoints) {\n currentLinkPoints = markRight.attr();\n }\n\n if (markTop && !currentLinkPoints) {\n currentLinkPoints = markTop.attr();\n }\n\n if (markBottom && !currentLinkPoints) {\n currentLinkPoints = markBottom.attr();\n }\n\n if (!currentLinkPoints) currentLinkPoints = defaultLinkPoints;\n var linkPoints = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, currentLinkPoints, cfg.linkPoints);\n var markFill = linkPoints.fill,\n markStroke = linkPoints.stroke,\n borderWidth = linkPoints.lineWidth;\n var markSize = linkPoints.size / 2;\n if (!markSize) markSize = linkPoints.r;\n\n var _a = cfg.linkPoints ? cfg.linkPoints : {\n left: undefined,\n right: undefined,\n top: undefined,\n bottom: undefined\n },\n left = _a.left,\n right = _a.right,\n top = _a.top,\n bottom = _a.bottom;\n\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n var styles = {\n r: markSize,\n fill: markFill,\n stroke: markStroke,\n lineWidth: borderWidth\n };\n\n if (markLeft) {\n if (!left && left !== undefined) {\n markLeft.remove();\n delete group['shapeMap']['link-point-left'];\n } else {\n markLeft.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: -width / 2,\n y: 0\n }));\n }\n } else if (left) {\n var name_1 = 'link-point-left';\n group['shapeMap'][name_1] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: -width / 2,\n y: 0\n }),\n className: name_1,\n name: name_1,\n isAnchorPoint: true\n });\n }\n\n if (markRight) {\n if (!right && right !== undefined) {\n markRight.remove();\n delete group['shapeMap']['link-point-right'];\n }\n\n markRight.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: width / 2,\n y: 0\n }));\n } else if (right) {\n var name_2 = 'link-point-right';\n group['shapeMap'][name_2] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: width / 2,\n y: 0\n }),\n className: name_2,\n name: name_2,\n isAnchorPoint: true\n });\n }\n\n if (markTop) {\n if (!top && top !== undefined) {\n markTop.remove();\n delete group['shapeMap']['link-point-top'];\n }\n\n markTop.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: 0,\n y: -height / 2\n }));\n } else if (top) {\n var name_3 = 'link-point-top';\n group['shapeMap'][name_3] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: 0,\n y: -height / 2\n }),\n className: name_3,\n name: name_3,\n isAnchorPoint: true\n });\n }\n\n if (markBottom) {\n if (!bottom && bottom !== undefined) {\n markBottom.remove();\n delete group['shapeMap']['link-point-bottom'];\n } else {\n markBottom.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: 0,\n y: height / 2\n }));\n }\n } else if (bottom) {\n var name_4 = 'link-point-bottom';\n group['shapeMap'][name_4] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: 0,\n y: height / 2\n }),\n className: name_4,\n name: name_4,\n isAnchorPoint: true\n });\n }\n },\n updateShape: function updateShape(cfg, item, keyShapeStyle, hasIcon, updateType) {\n var keyShape = item.get('keyShape');\n keyShape.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, keyShapeStyle));\n\n if (!undefined || (updateType === null || updateType === void 0 ? void 0 : updateType.includes('label'))) {\n this.updateLabel(cfg, item, updateType);\n }\n\n if (hasIcon) {\n this.updateIcon(cfg, item);\n }\n },\n updateIcon: function updateIcon(cfg, item) {\n var _this = this;\n\n var group = item.getContainer();\n var icon = (this.mergeStyle || this.getOptions(cfg)).icon;\n var show = (cfg.icon ? cfg.icon : {\n show: undefined\n }).show;\n var iconShape = group['shapeMap'][this.type + \"-icon\"] || group.find(function (ele) {\n return ele.get('name') === _this.type + \"-icon\";\n });\n\n if (iconShape) {\n // 若原先存在 icon\n if (show || show === undefined) {\n // 若传入 show: true, 或没有设置,则更新原有的 icon 样式\n var iconConfig = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, iconShape.attr(), icon);\n var _a = iconConfig.width,\n w = _a === void 0 ? 20 : _a,\n _b = iconConfig.height,\n h = _b === void 0 ? 20 : _b;\n iconShape.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, iconConfig), {\n x: -w / 2,\n y: -h / 2\n }));\n } else {\n // 若传入了 show: false 则删除原先的 icon\n iconShape.remove();\n }\n } else if (show) {\n // 如果原先不存在 icon,但传入了 show: true,则新增 icon\n var w = icon.width,\n h = icon.height;\n var name_5 = this.type + \"-icon\";\n group['shapeMap'][name_5] = group.addShape('image', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, icon), {\n x: -w / 2,\n y: -h / 2\n }),\n className: name_5,\n name: name_5\n }); // to ensure the label is on the top of all the shapes\n\n var labelShape = group['shapeMap']['node-label'] || group.find(function (ele) {\n return ele.get('name') === 'node-label';\n });\n\n if (labelShape) {\n labelShape.toFront();\n }\n }\n }\n};\n\nvar singleNodeDef = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _shapeBase__WEBPACK_IMPORTED_MODULE_5__[\"shapeBase\"]), singleNode);\n\n_shape__WEBPACK_IMPORTED_MODULE_4__[\"default\"].registerNode('single-node', singleNodeDef);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L25vZGUuanM/ODFkOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNnQjtBQUNKO0FBQ2Q7QUFDSDtBQUNZO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQSxVQUFVLCtDQUFNOztBQUVoQjtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckIsY0FBYyxNQUFNO0FBQ3BCO0FBQ0E7QUFDQTs7QUFFQSxzSEFBc0gsVUFBVSwrQ0FBTSxrQkFBa0IsNEJBQTRCO0FBQ3BMOztBQUVBLFFBQVEsMERBQU87QUFDZjtBQUNBLEtBQUs7OztBQUdMLFNBQVMsMERBQU87QUFDaEI7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsZ0VBQWdFOztBQUVoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxRQUFRLHdEQUFLO0FBQ2I7QUFDQSwyQkFBMkI7QUFDM0I7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixnRUFBYTtBQUMvQjtBQUNBO0FBQ0EsV0FBVyxzREFBUSxDQUFDLHNEQUFRO0FBQzVCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxtQ0FBbUM7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxQkFBcUIsc0RBQUcsR0FBRztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLHNCQUFzQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDMUM7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ3pDO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDdkM7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLHdCQUF3QixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDNUM7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGtCQUFrQixzREFBUSxHQUFHOztBQUU3QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsc0RBQUcsR0FBRztBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDM0M7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG9CQUFvQixzREFBUSxDQUFDLHNEQUFRLEdBQUcsRUFBRSxvREFBUzs7QUFFbkQsOENBQUsiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L25vZGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgaXNBcnJheSwgaXNOaWwsIG1peCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgZm9ybWF0UGFkZGluZyB9IGZyb20gJy4uL3V0aWwvYmFzZSc7XG5pbXBvcnQgR2xvYmFsIGZyb20gJy4uL2dsb2JhbCc7XG5pbXBvcnQgU2hhcGUgZnJvbSAnLi9zaGFwZSc7XG5pbXBvcnQgeyBzaGFwZUJhc2UgfSBmcm9tICcuL3NoYXBlQmFzZSc7XG52YXIgc2luZ2xlTm9kZSA9IHtcbiAgaXRlbVR5cGU6ICdub2RlJyxcbiAgLy8g5Y2V5Liq5Zu+5b2i55qE57G75Z6LXG4gIHNoYXBlVHlwZTogJ3NpbmdsZS1ub2RlJyxcblxuICAvKipcbiAgICog5paH5pys55u45a+55Zu+5b2i55qE5L2N572u77yM6buY6K6k5Lul5Lit5b+D54K5XG4gICAqIOS9jee9ruWMheaLrO+8miB0b3AsIGJvdHRvbSwgbGVmdCwgcmlnaHQsIGNlbnRlclxuICAgKiBAdHlwZSB7U3RyaW5nfVxuICAgKi9cbiAgbGFiZWxQb3NpdGlvbjogJ2NlbnRlcicsXG5cbiAgLyoqXG4gICAqIOaWh+acrOebuOWvueWBj+enu++8jOW9kyBsYWJlbFBvc2l0aW9uIOS4jeS4uiBjZW50ZXIg5pe25pyJ5pWIXG4gICAqIEB0eXBlIHtOdW1iZXJ9XG4gICAqL1xuICBvZmZzZXQ6IEdsb2JhbC5ub2RlTGFiZWwub2Zmc2V0LFxuXG4gIC8qKlxuICAgKiDojrflj5boioLngrnlrr3pq5hcbiAgICogQGludGVybmFsIOi/lOWbnuiKgueCueeahOWkp+Wwj++8jOS7pSBbd2lkdGgsIGhlaWdodF0g55qE5pa55byP57u05oqkXG4gICAqIEBwYXJhbSAge09iamVjdH0gY2ZnIOiKgueCueeahOmFjee9rumhuVxuICAgKiBAcmV0dXJuIHtBcnJheX0g5a696auYXG4gICAqL1xuICBnZXRTaXplOiBmdW5jdGlvbiBnZXRTaXplKGNmZykge1xuICAgIHZhciBfYTtcblxuICAgIHZhciBzaXplID0gKChfYSA9IHRoaXMubWVyZ2VTdHlsZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnNpemUpIHx8IGNmZy5zaXplIHx8IHRoaXMuZ2V0T3B0aW9ucyh7fSkuc2l6ZSB8fCBHbG9iYWwuZGVmYXVsdE5vZGUuc2l6ZTsgLy8gR2xvYmFsLmRlZmF1bHROb2RlLnNpemU7IC8vICBcbiAgICAvLyBzaXplIOaYr+aVsOe7hO+8jOS9humVv+W6puS4ujHvvIzliJnooaXplb/luqbkuLoyXG5cbiAgICBpZiAoaXNBcnJheShzaXplKSAmJiBzaXplLmxlbmd0aCA9PT0gMSkge1xuICAgICAgc2l6ZSA9IFtzaXplWzBdLCBzaXplWzBdXTtcbiAgICB9IC8vIHNpemUg5Li65pWw5a2X77yM5YiZ6L2s5o2i5Li65pWw57uEXG5cblxuICAgIGlmICghaXNBcnJheShzaXplKSkge1xuICAgICAgc2l6ZSA9IFtzaXplLCBzaXplXTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2l6ZTtcbiAgfSxcbiAgLy8g56eB5pyJ5pa55rOV77yM5LiN5biM5pyb5omp5bGV55qE6IqC54K55aSN5YaZ6L+Z5Liq5pa55rOVXG4gIGdldExhYmVsU3R5bGVCeVBvc2l0aW9uOiBmdW5jdGlvbiBnZXRMYWJlbFN0eWxlQnlQb3NpdGlvbihjZmcsIGxhYmVsQ2ZnKSB7XG4gICAgdmFyIGxhYmVsUG9zaXRpb24gPSBsYWJlbENmZy5wb3NpdGlvbiB8fCB0aGlzLmxhYmVsUG9zaXRpb247IC8vIOm7mOiupOeahOS9jee9ru+8iOacgOWPr+iDveeahOaDheW9ou+8ie+8jOaJgOS7peaUvuWcqOacgOS4iumdolxuXG4gICAgaWYgKGxhYmVsUG9zaXRpb24gPT09ICdjZW50ZXInKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiAwLFxuICAgICAgICB5OiAwLFxuICAgICAgICB0ZXh0OiBjZmcubGFiZWxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIG9mZnNldCA9IGxhYmVsQ2ZnLm9mZnNldDtcblxuICAgIGlmIChpc05pbChvZmZzZXQpKSB7XG4gICAgICAvLyDogIPomZEgb2Zmc2V0ID0gMCDnmoTlnLrmma/vvIzkuI3nlKjnlKggbGFiZWxDZmcub2Zmc2V0IHx8IEdsb2JhbC5ub2RlTGFiZWwub2Zmc2V0XG4gICAgICBvZmZzZXQgPSB0aGlzLm9mZnNldDsgLy8g5LiN5bGF5Lit5pe255qE5YGP56e76YePXG4gICAgfVxuXG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgc3R5bGU7XG5cbiAgICBzd2l0Y2ggKGxhYmVsUG9zaXRpb24pIHtcbiAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgIHN0eWxlID0ge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogLXNpemVbMV0gLyAyIC0gb2Zmc2V0LFxuICAgICAgICAgIHRleHRCYXNlbGluZTogJ2JvdHRvbScgLy8g5paH5pys5Zyo5Zu+5b2i55qE5LiK6Z2iXG5cbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgIHN0eWxlID0ge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogc2l6ZVsxXSAvIDIgKyBvZmZzZXQsXG4gICAgICAgICAgdGV4dEJhc2VsaW5lOiAndG9wJ1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgIHN0eWxlID0ge1xuICAgICAgICAgIHg6IC1zaXplWzBdIC8gMiAtIG9mZnNldCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHRleHRBbGlnbjogJ3JpZ2h0J1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgc3R5bGUgPSB7XG4gICAgICAgICAgeDogc2l6ZVswXSAvIDIgKyBvZmZzZXQsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICB0ZXh0QWxpZ246ICdsZWZ0J1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBzdHlsZS50ZXh0ID0gY2ZnLmxhYmVsO1xuICAgIHJldHVybiBzdHlsZTtcbiAgfSxcbiAgZ2V0TGFiZWxCZ1N0eWxlQnlQb3NpdGlvbjogZnVuY3Rpb24gZ2V0TGFiZWxCZ1N0eWxlQnlQb3NpdGlvbihsYWJlbCwgY2ZnLCBsYWJlbENmZywgZ3JvdXApIHtcbiAgICB2YXIgX2E7XG5cbiAgICBpZiAoIWxhYmVsKSByZXR1cm4ge307XG4gICAgdmFyIGJhY2tncm91bmRTdHlsZSA9IChfYSA9IGxhYmVsQ2ZnLnN0eWxlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuYmFja2dyb3VuZDtcbiAgICBpZiAoIWJhY2tncm91bmRTdHlsZSkgcmV0dXJuIHt9O1xuICAgIHZhciBiYm94ID0gbGFiZWwuZ2V0QkJveCgpO1xuICAgIHZhciBwYWRkaW5nID0gZm9ybWF0UGFkZGluZyhiYWNrZ3JvdW5kU3R5bGUucGFkZGluZyk7XG4gICAgdmFyIGJhY2tncm91bmRXaWR0aCA9IGJib3gud2lkdGggKyBwYWRkaW5nWzFdICsgcGFkZGluZ1szXTtcbiAgICB2YXIgYmFja2dyb3VuZEhlaWdodCA9IGJib3guaGVpZ2h0ICsgcGFkZGluZ1swXSArIHBhZGRpbmdbMl07XG4gICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHtcbiAgICAgIHg6IGJib3gubWluWCAtIHBhZGRpbmdbM10sXG4gICAgICB5OiBiYm94Lm1pblkgLSBwYWRkaW5nWzBdXG4gICAgfSwgYmFja2dyb3VuZFN0eWxlKSwge1xuICAgICAgd2lkdGg6IGJhY2tncm91bmRXaWR0aCxcbiAgICAgIGhlaWdodDogYmFja2dyb3VuZEhlaWdodFxuICAgIH0pO1xuICB9LFxuICBkcmF3U2hhcGU6IGZ1bmN0aW9uIGRyYXdTaGFwZShjZmcsIGdyb3VwKSB7XG4gICAgdmFyIHNoYXBlVHlwZSA9IHRoaXMuc2hhcGVUeXBlOyAvLyB8fCB0aGlzLnR5cGXvvIzpg73lt7Lnu4/liqDkuoYgc2hhcGVUeXBlXG5cbiAgICB2YXIgc3R5bGUgPSB0aGlzLmdldFNoYXBlU3R5bGUoY2ZnKTtcbiAgICB2YXIgc2hhcGUgPSBncm91cC5hZGRTaGFwZShzaGFwZVR5cGUsIHtcbiAgICAgIGF0dHJzOiBzdHlsZSxcbiAgICAgIGRyYWdnYWJsZTogdHJ1ZSxcbiAgICAgIG5hbWU6ICdub2RlLXNoYXBlJ1xuICAgIH0pO1xuICAgIGdyb3VwWydzaGFwZU1hcCddWydub2RlLXNoYXBlJ10gPSBzaGFwZTtcbiAgICByZXR1cm4gc2hhcGU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOabtOaWsGxpbmtQb2ludHNcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyDoioLngrnmlbDmja7phY3nva7poblcbiAgICogQHBhcmFtIHtHcm91cH0gZ3JvdXAgSXRlbeaJgOWcqOeahGdyb3VwXG4gICAqL1xuICB1cGRhdGVMaW5rUG9pbnRzOiBmdW5jdGlvbiB1cGRhdGVMaW5rUG9pbnRzKGNmZywgZ3JvdXApIHtcbiAgICB2YXIgZGVmYXVsdExpbmtQb2ludHMgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpKS5saW5rUG9pbnRzO1xuICAgIHZhciBtYXJrTGVmdCA9IGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWxlZnQnXSB8fCBncm91cC5maW5kKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ2NsYXNzTmFtZScpID09PSAnbGluay1wb2ludC1sZWZ0JztcbiAgICB9KTtcbiAgICB2YXIgbWFya1JpZ2h0ID0gZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtcmlnaHQnXSB8fCBncm91cC5maW5kKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ2NsYXNzTmFtZScpID09PSAnbGluay1wb2ludC1yaWdodCc7XG4gICAgfSk7XG4gICAgdmFyIG1hcmtUb3AgPSBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC10b3AnXSB8fCBncm91cC5maW5kKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ2NsYXNzTmFtZScpID09PSAnbGluay1wb2ludC10b3AnO1xuICAgIH0pO1xuICAgIHZhciBtYXJrQm90dG9tID0gZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtYm90dG9tJ10gfHwgZ3JvdXAuZmluZChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCdjbGFzc05hbWUnKSA9PT0gJ2xpbmstcG9pbnQtYm90dG9tJztcbiAgICB9KTtcbiAgICB2YXIgY3VycmVudExpbmtQb2ludHM7XG5cbiAgICBpZiAobWFya0xlZnQpIHtcbiAgICAgIGN1cnJlbnRMaW5rUG9pbnRzID0gbWFya0xlZnQuYXR0cigpO1xuICAgIH1cblxuICAgIGlmIChtYXJrUmlnaHQgJiYgIWN1cnJlbnRMaW5rUG9pbnRzKSB7XG4gICAgICBjdXJyZW50TGlua1BvaW50cyA9IG1hcmtSaWdodC5hdHRyKCk7XG4gICAgfVxuXG4gICAgaWYgKG1hcmtUb3AgJiYgIWN1cnJlbnRMaW5rUG9pbnRzKSB7XG4gICAgICBjdXJyZW50TGlua1BvaW50cyA9IG1hcmtUb3AuYXR0cigpO1xuICAgIH1cblxuICAgIGlmIChtYXJrQm90dG9tICYmICFjdXJyZW50TGlua1BvaW50cykge1xuICAgICAgY3VycmVudExpbmtQb2ludHMgPSBtYXJrQm90dG9tLmF0dHIoKTtcbiAgICB9XG5cbiAgICBpZiAoIWN1cnJlbnRMaW5rUG9pbnRzKSBjdXJyZW50TGlua1BvaW50cyA9IGRlZmF1bHRMaW5rUG9pbnRzO1xuICAgIHZhciBsaW5rUG9pbnRzID0gbWl4KHt9LCBjdXJyZW50TGlua1BvaW50cywgY2ZnLmxpbmtQb2ludHMpO1xuICAgIHZhciBtYXJrRmlsbCA9IGxpbmtQb2ludHMuZmlsbCxcbiAgICAgICAgbWFya1N0cm9rZSA9IGxpbmtQb2ludHMuc3Ryb2tlLFxuICAgICAgICBib3JkZXJXaWR0aCA9IGxpbmtQb2ludHMubGluZVdpZHRoO1xuICAgIHZhciBtYXJrU2l6ZSA9IGxpbmtQb2ludHMuc2l6ZSAvIDI7XG4gICAgaWYgKCFtYXJrU2l6ZSkgbWFya1NpemUgPSBsaW5rUG9pbnRzLnI7XG5cbiAgICB2YXIgX2EgPSBjZmcubGlua1BvaW50cyA/IGNmZy5saW5rUG9pbnRzIDoge1xuICAgICAgbGVmdDogdW5kZWZpbmVkLFxuICAgICAgcmlnaHQ6IHVuZGVmaW5lZCxcbiAgICAgIHRvcDogdW5kZWZpbmVkLFxuICAgICAgYm90dG9tOiB1bmRlZmluZWRcbiAgICB9LFxuICAgICAgICBsZWZ0ID0gX2EubGVmdCxcbiAgICAgICAgcmlnaHQgPSBfYS5yaWdodCxcbiAgICAgICAgdG9wID0gX2EudG9wLFxuICAgICAgICBib3R0b20gPSBfYS5ib3R0b207XG5cbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciB3aWR0aCA9IHNpemVbMF07XG4gICAgdmFyIGhlaWdodCA9IHNpemVbMV07XG4gICAgdmFyIHN0eWxlcyA9IHtcbiAgICAgIHI6IG1hcmtTaXplLFxuICAgICAgZmlsbDogbWFya0ZpbGwsXG4gICAgICBzdHJva2U6IG1hcmtTdHJva2UsXG4gICAgICBsaW5lV2lkdGg6IGJvcmRlcldpZHRoXG4gICAgfTtcblxuICAgIGlmIChtYXJrTGVmdCkge1xuICAgICAgaWYgKCFsZWZ0ICYmIGxlZnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBtYXJrTGVmdC5yZW1vdmUoKTtcbiAgICAgICAgZGVsZXRlIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWxlZnQnXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hcmtMZWZ0LmF0dHIoX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICB4OiAtd2lkdGggLyAyLFxuICAgICAgICAgIHk6IDBcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobGVmdCkge1xuICAgICAgdmFyIG5hbWVfMSA9ICdsaW5rLXBvaW50LWxlZnQnO1xuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bbmFtZV8xXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3R5bGVzKSwge1xuICAgICAgICAgIHg6IC13aWR0aCAvIDIsXG4gICAgICAgICAgeTogMFxuICAgICAgICB9KSxcbiAgICAgICAgY2xhc3NOYW1lOiBuYW1lXzEsXG4gICAgICAgIG5hbWU6IG5hbWVfMSxcbiAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKG1hcmtSaWdodCkge1xuICAgICAgaWYgKCFyaWdodCAmJiByaWdodCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG1hcmtSaWdodC5yZW1vdmUoKTtcbiAgICAgICAgZGVsZXRlIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXJpZ2h0J107XG4gICAgICB9XG5cbiAgICAgIG1hcmtSaWdodC5hdHRyKF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgIHg6IHdpZHRoIC8gMixcbiAgICAgICAgeTogMFxuICAgICAgfSkpO1xuICAgIH0gZWxzZSBpZiAocmlnaHQpIHtcbiAgICAgIHZhciBuYW1lXzIgPSAnbGluay1wb2ludC1yaWdodCc7XG4gICAgICBncm91cFsnc2hhcGVNYXAnXVtuYW1lXzJdID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgICAgeDogd2lkdGggLyAyLFxuICAgICAgICAgIHk6IDBcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogbmFtZV8yLFxuICAgICAgICBuYW1lOiBuYW1lXzIsXG4gICAgICAgIGlzQW5jaG9yUG9pbnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChtYXJrVG9wKSB7XG4gICAgICBpZiAoIXRvcCAmJiB0b3AgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBtYXJrVG9wLnJlbW92ZSgpO1xuICAgICAgICBkZWxldGUgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtdG9wJ107XG4gICAgICB9XG5cbiAgICAgIG1hcmtUb3AuYXR0cihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3R5bGVzKSwge1xuICAgICAgICB4OiAwLFxuICAgICAgICB5OiAtaGVpZ2h0IC8gMlxuICAgICAgfSkpO1xuICAgIH0gZWxzZSBpZiAodG9wKSB7XG4gICAgICB2YXIgbmFtZV8zID0gJ2xpbmstcG9pbnQtdG9wJztcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddW25hbWVfM10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IC1oZWlnaHQgLyAyXG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6IG5hbWVfMyxcbiAgICAgICAgbmFtZTogbmFtZV8zLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAobWFya0JvdHRvbSkge1xuICAgICAgaWYgKCFib3R0b20gJiYgYm90dG9tICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbWFya0JvdHRvbS5yZW1vdmUoKTtcbiAgICAgICAgZGVsZXRlIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWJvdHRvbSddO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWFya0JvdHRvbS5hdHRyKF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiBoZWlnaHQgLyAyXG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGJvdHRvbSkge1xuICAgICAgdmFyIG5hbWVfNCA9ICdsaW5rLXBvaW50LWJvdHRvbSc7XG4gICAgICBncm91cFsnc2hhcGVNYXAnXVtuYW1lXzRdID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiBoZWlnaHQgLyAyXG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6IG5hbWVfNCxcbiAgICAgICAgbmFtZTogbmFtZV80LFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIHVwZGF0ZVNoYXBlOiBmdW5jdGlvbiB1cGRhdGVTaGFwZShjZmcsIGl0ZW0sIGtleVNoYXBlU3R5bGUsIGhhc0ljb24sIHVwZGF0ZVR5cGUpIHtcbiAgICB2YXIga2V5U2hhcGUgPSBpdGVtLmdldCgna2V5U2hhcGUnKTtcbiAgICBrZXlTaGFwZS5hdHRyKF9fYXNzaWduKHt9LCBrZXlTaGFwZVN0eWxlKSk7XG5cbiAgICBpZiAoIXVuZGVmaW5lZCB8fCAodXBkYXRlVHlwZSA9PT0gbnVsbCB8fCB1cGRhdGVUeXBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiB1cGRhdGVUeXBlLmluY2x1ZGVzKCdsYWJlbCcpKSkge1xuICAgICAgdGhpcy51cGRhdGVMYWJlbChjZmcsIGl0ZW0sIHVwZGF0ZVR5cGUpO1xuICAgIH1cblxuICAgIGlmIChoYXNJY29uKSB7XG4gICAgICB0aGlzLnVwZGF0ZUljb24oY2ZnLCBpdGVtKTtcbiAgICB9XG4gIH0sXG4gIHVwZGF0ZUljb246IGZ1bmN0aW9uIHVwZGF0ZUljb24oY2ZnLCBpdGVtKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBncm91cCA9IGl0ZW0uZ2V0Q29udGFpbmVyKCk7XG4gICAgdmFyIGljb24gPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpKS5pY29uO1xuICAgIHZhciBzaG93ID0gKGNmZy5pY29uID8gY2ZnLmljb24gOiB7XG4gICAgICBzaG93OiB1bmRlZmluZWRcbiAgICB9KS5zaG93O1xuICAgIHZhciBpY29uU2hhcGUgPSBncm91cFsnc2hhcGVNYXAnXVt0aGlzLnR5cGUgKyBcIi1pY29uXCJdIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZSkge1xuICAgICAgcmV0dXJuIGVsZS5nZXQoJ25hbWUnKSA9PT0gX3RoaXMudHlwZSArIFwiLWljb25cIjtcbiAgICB9KTtcblxuICAgIGlmIChpY29uU2hhcGUpIHtcbiAgICAgIC8vIOiLpeWOn+WFiOWtmOWcqCBpY29uXG4gICAgICBpZiAoc2hvdyB8fCBzaG93ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8g6Iul5Lyg5YWlIHNob3c6IHRydWUsIOaIluayoeacieiuvue9ru+8jOWImeabtOaWsOWOn+acieeahCBpY29uIOagt+W8j1xuICAgICAgICB2YXIgaWNvbkNvbmZpZyA9IG1peCh7fSwgaWNvblNoYXBlLmF0dHIoKSwgaWNvbik7XG4gICAgICAgIHZhciBfYSA9IGljb25Db25maWcud2lkdGgsXG4gICAgICAgICAgICB3ID0gX2EgPT09IHZvaWQgMCA/IDIwIDogX2EsXG4gICAgICAgICAgICBfYiA9IGljb25Db25maWcuaGVpZ2h0LFxuICAgICAgICAgICAgaCA9IF9iID09PSB2b2lkIDAgPyAyMCA6IF9iO1xuICAgICAgICBpY29uU2hhcGUuYXR0cihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgaWNvbkNvbmZpZyksIHtcbiAgICAgICAgICB4OiAtdyAvIDIsXG4gICAgICAgICAgeTogLWggLyAyXG4gICAgICAgIH0pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIOiLpeS8oOWFpeS6hiBzaG93OiBmYWxzZSDliJnliKDpmaTljp/lhYjnmoQgaWNvblxuICAgICAgICBpY29uU2hhcGUucmVtb3ZlKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzaG93KSB7XG4gICAgICAvLyDlpoLmnpzljp/lhYjkuI3lrZjlnKggaWNvbu+8jOS9huS8oOWFpeS6hiBzaG93OiB0cnVl77yM5YiZ5paw5aKeIGljb25cbiAgICAgIHZhciB3ID0gaWNvbi53aWR0aCxcbiAgICAgICAgICBoID0gaWNvbi5oZWlnaHQ7XG4gICAgICB2YXIgbmFtZV81ID0gdGhpcy50eXBlICsgXCItaWNvblwiO1xuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bbmFtZV81XSA9IGdyb3VwLmFkZFNoYXBlKCdpbWFnZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBpY29uKSwge1xuICAgICAgICAgIHg6IC13IC8gMixcbiAgICAgICAgICB5OiAtaCAvIDJcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogbmFtZV81LFxuICAgICAgICBuYW1lOiBuYW1lXzVcbiAgICAgIH0pOyAvLyB0byBlbnN1cmUgdGhlIGxhYmVsIGlzIG9uIHRoZSB0b3Agb2YgYWxsIHRoZSBzaGFwZXNcblxuICAgICAgdmFyIGxhYmVsU2hhcGUgPSBncm91cFsnc2hhcGVNYXAnXVsnbm9kZS1sYWJlbCddIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZSkge1xuICAgICAgICByZXR1cm4gZWxlLmdldCgnbmFtZScpID09PSAnbm9kZS1sYWJlbCc7XG4gICAgICB9KTtcblxuICAgICAgaWYgKGxhYmVsU2hhcGUpIHtcbiAgICAgICAgbGFiZWxTaGFwZS50b0Zyb250KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG52YXIgc2luZ2xlTm9kZURlZiA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzaGFwZUJhc2UpLCBzaW5nbGVOb2RlKTtcblxuU2hhcGUucmVnaXN0ZXJOb2RlKCdzaW5nbGUtbm9kZScsIHNpbmdsZU5vZGVEZWYpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/node.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/nodes/image.js":
/*!***********************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/nodes/image.js ***!
\***********************************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shape */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shape.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../global */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/global.js\");\n\n\n\n/**\n * 基本的图片,可以添加文本,默认文本在图片的下面\n */\n\n_shape__WEBPACK_IMPORTED_MODULE_1__[\"default\"].registerNode('image', {\n options: {\n img: 'https://gw.alipayobjects.com/mdn/rms_f8c6a0/afts/img/A*eD7nT6tmYgAAAAAAAAAAAABkARQnAQ',\n size: 200,\n labelCfg: {\n style: {\n fontFamily: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].windowFontFamily\n }\n },\n clipCfg: {\n show: false,\n type: 'circle',\n // circle\n r: 50,\n // ellipse\n rx: 50,\n ry: 35,\n // rect\n width: 50,\n height: 35,\n // polygon\n points: [[30, 12], [12, 30], [30, 48], [48, 30]],\n // path\n path: [['M', 25, 25], ['L', 50, 25], ['A', 12.5, 12.5, 0, 1, 1, 50, 50], ['A', 12.5, 12.5, 0, 1, 0, 50, 50], ['L', 25, 75], ['Z']],\n // 坐标\n x: 0,\n y: 0 // clip 的属性样式\n // style: {\n // lineWidth: 1\n // },\n\n }\n },\n shapeType: 'image',\n labelPosition: 'bottom',\n drawShape: function drawShape(cfg, group) {\n var shapeType = this.shapeType;\n var style = this.getShapeStyle(cfg);\n delete style.fill;\n var shape = group.addShape(shapeType, {\n attrs: style,\n className: this.type + \"-keyShape\",\n name: this.type + \"-keyShape\",\n draggable: true\n });\n this.drawClip(cfg, shape);\n return shape;\n },\n drawClip: function drawClip(cfg, shape) {\n var clip = (this.mergeStyle || this.getOptions(cfg)).clipCfg;\n\n if (!clip.show) {\n return;\n } // 支持 circle、rect、ellipse、Polygon 及自定义 path clip\n\n\n var type = clip.type,\n x = clip.x,\n y = clip.y,\n style = clip.style;\n\n if (type === 'circle') {\n var r = clip.r;\n shape.setClip({\n type: 'circle',\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n r: r,\n x: x,\n y: y\n }, style)\n });\n } else if (type === 'rect') {\n var width = clip.width,\n height = clip.height;\n var rectX = x - width / 2;\n var rectY = y - height / 2;\n shape.setClip({\n type: 'rect',\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: rectX,\n y: rectY,\n width: width,\n height: height\n }, style)\n });\n } else if (type === 'ellipse') {\n var rx = clip.rx,\n ry = clip.ry;\n shape.setClip({\n type: 'ellipse',\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: x,\n y: y,\n rx: rx,\n ry: ry\n }, style)\n });\n } else if (type === 'polygon') {\n var points = clip.points;\n shape.setClip({\n type: 'polygon',\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n points: points\n }, style)\n });\n } else if (type === 'path') {\n var path = clip.path;\n shape.setClip({\n type: 'path',\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n path: path\n }, style)\n });\n }\n },\n getShapeStyle: function getShapeStyle(cfg) {\n var _a = this.mergeStyle || this.getOptions(cfg),\n defaultStyle = _a.style,\n img = _a.img;\n\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n\n if (defaultStyle) {\n width = defaultStyle.width || size[0];\n height = defaultStyle.height || size[1];\n }\n\n var style = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -width / 2,\n y: -height / 2,\n width: width,\n height: height,\n img: img\n }, defaultStyle);\n\n return style;\n },\n updateShapeStyle: function updateShapeStyle(cfg, item) {\n var group = item.getContainer();\n var shapeClassName = this.itemType + \"-shape\";\n var shape = group['shapeMap'][shapeClassName] || group.find(function (element) {\n return element.get('className') === shapeClassName;\n }) || item.getKeyShape();\n var shapeStyle = this.getShapeStyle(cfg);\n\n if (shape && !shape.destroyed) {\n shape.attr(shapeStyle);\n }\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L25vZGVzL2ltYWdlLmpzP2Q3M2MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUM7QUFDSjtBQUNLO0FBQ2xDO0FBQ0E7QUFDQTs7QUFFQSw4Q0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsK0NBQU07QUFDMUI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7O0FBRVY7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUTtBQUN2QjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUTtBQUN2QjtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVE7QUFDdkI7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxnQkFBZ0Isc0RBQVE7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L25vZGVzL2ltYWdlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCBTaGFwZSBmcm9tICcuLi9zaGFwZSc7XG5pbXBvcnQgR2xvYmFsIGZyb20gJy4uLy4uL2dsb2JhbCc7XG4vKipcbiAqIOWfuuacrOeahOWbvueJh++8jOWPr+S7pea3u+WKoOaWh+acrO+8jOm7mOiupOaWh+acrOWcqOWbvueJh+eahOS4i+mdolxuICovXG5cblNoYXBlLnJlZ2lzdGVyTm9kZSgnaW1hZ2UnLCB7XG4gIG9wdGlvbnM6IHtcbiAgICBpbWc6ICdodHRwczovL2d3LmFsaXBheW9iamVjdHMuY29tL21kbi9ybXNfZjhjNmEwL2FmdHMvaW1nL0EqZUQ3blQ2dG1ZZ0FBQUFBQUFBQUFBQUJrQVJRbkFRJyxcbiAgICBzaXplOiAyMDAsXG4gICAgbGFiZWxDZmc6IHtcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIGZvbnRGYW1pbHk6IEdsb2JhbC53aW5kb3dGb250RmFtaWx5XG4gICAgICB9XG4gICAgfSxcbiAgICBjbGlwQ2ZnOiB7XG4gICAgICBzaG93OiBmYWxzZSxcbiAgICAgIHR5cGU6ICdjaXJjbGUnLFxuICAgICAgLy8gY2lyY2xlXG4gICAgICByOiA1MCxcbiAgICAgIC8vIGVsbGlwc2VcbiAgICAgIHJ4OiA1MCxcbiAgICAgIHJ5OiAzNSxcbiAgICAgIC8vIHJlY3RcbiAgICAgIHdpZHRoOiA1MCxcbiAgICAgIGhlaWdodDogMzUsXG4gICAgICAvLyBwb2x5Z29uXG4gICAgICBwb2ludHM6IFtbMzAsIDEyXSwgWzEyLCAzMF0sIFszMCwgNDhdLCBbNDgsIDMwXV0sXG4gICAgICAvLyBwYXRoXG4gICAgICBwYXRoOiBbWydNJywgMjUsIDI1XSwgWydMJywgNTAsIDI1XSwgWydBJywgMTIuNSwgMTIuNSwgMCwgMSwgMSwgNTAsIDUwXSwgWydBJywgMTIuNSwgMTIuNSwgMCwgMSwgMCwgNTAsIDUwXSwgWydMJywgMjUsIDc1XSwgWydaJ11dLFxuICAgICAgLy8g5Z2Q5qCHXG4gICAgICB4OiAwLFxuICAgICAgeTogMCAvLyBjbGlwIOeahOWxnuaAp+agt+W8j1xuICAgICAgLy8gc3R5bGU6IHtcbiAgICAgIC8vICAgbGluZVdpZHRoOiAxXG4gICAgICAvLyB9LFxuXG4gICAgfVxuICB9LFxuICBzaGFwZVR5cGU6ICdpbWFnZScsXG4gIGxhYmVsUG9zaXRpb246ICdib3R0b20nLFxuICBkcmF3U2hhcGU6IGZ1bmN0aW9uIGRyYXdTaGFwZShjZmcsIGdyb3VwKSB7XG4gICAgdmFyIHNoYXBlVHlwZSA9IHRoaXMuc2hhcGVUeXBlO1xuICAgIHZhciBzdHlsZSA9IHRoaXMuZ2V0U2hhcGVTdHlsZShjZmcpO1xuICAgIGRlbGV0ZSBzdHlsZS5maWxsO1xuICAgIHZhciBzaGFwZSA9IGdyb3VwLmFkZFNoYXBlKHNoYXBlVHlwZSwge1xuICAgICAgYXR0cnM6IHN0eWxlLFxuICAgICAgY2xhc3NOYW1lOiB0aGlzLnR5cGUgKyBcIi1rZXlTaGFwZVwiLFxuICAgICAgbmFtZTogdGhpcy50eXBlICsgXCIta2V5U2hhcGVcIixcbiAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIHRoaXMuZHJhd0NsaXAoY2ZnLCBzaGFwZSk7XG4gICAgcmV0dXJuIHNoYXBlO1xuICB9LFxuICBkcmF3Q2xpcDogZnVuY3Rpb24gZHJhd0NsaXAoY2ZnLCBzaGFwZSkge1xuICAgIHZhciBjbGlwID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkuY2xpcENmZztcblxuICAgIGlmICghY2xpcC5zaG93KSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyDmlK/mjIEgY2lyY2xl44CBcmVjdOOAgWVsbGlwc2XjgIFQb2x5Z29uIOWPiuiHquWumuS5iSBwYXRoIGNsaXBcblxuXG4gICAgdmFyIHR5cGUgPSBjbGlwLnR5cGUsXG4gICAgICAgIHggPSBjbGlwLngsXG4gICAgICAgIHkgPSBjbGlwLnksXG4gICAgICAgIHN0eWxlID0gY2xpcC5zdHlsZTtcblxuICAgIGlmICh0eXBlID09PSAnY2lyY2xlJykge1xuICAgICAgdmFyIHIgPSBjbGlwLnI7XG4gICAgICBzaGFwZS5zZXRDbGlwKHtcbiAgICAgICAgdHlwZTogJ2NpcmNsZScsXG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgICAgcjogcixcbiAgICAgICAgICB4OiB4LFxuICAgICAgICAgIHk6IHlcbiAgICAgICAgfSwgc3R5bGUpXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdyZWN0Jykge1xuICAgICAgdmFyIHdpZHRoID0gY2xpcC53aWR0aCxcbiAgICAgICAgICBoZWlnaHQgPSBjbGlwLmhlaWdodDtcbiAgICAgIHZhciByZWN0WCA9IHggLSB3aWR0aCAvIDI7XG4gICAgICB2YXIgcmVjdFkgPSB5IC0gaGVpZ2h0IC8gMjtcbiAgICAgIHNoYXBlLnNldENsaXAoe1xuICAgICAgICB0eXBlOiAncmVjdCcsXG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgICAgeDogcmVjdFgsXG4gICAgICAgICAgeTogcmVjdFksXG4gICAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICAgIH0sIHN0eWxlKVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnZWxsaXBzZScpIHtcbiAgICAgIHZhciByeCA9IGNsaXAucngsXG4gICAgICAgICAgcnkgPSBjbGlwLnJ5O1xuICAgICAgc2hhcGUuc2V0Q2xpcCh7XG4gICAgICAgIHR5cGU6ICdlbGxpcHNlJyxcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICB4OiB4LFxuICAgICAgICAgIHk6IHksXG4gICAgICAgICAgcng6IHJ4LFxuICAgICAgICAgIHJ5OiByeVxuICAgICAgICB9LCBzdHlsZSlcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3BvbHlnb24nKSB7XG4gICAgICB2YXIgcG9pbnRzID0gY2xpcC5wb2ludHM7XG4gICAgICBzaGFwZS5zZXRDbGlwKHtcbiAgICAgICAgdHlwZTogJ3BvbHlnb24nLFxuICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgIHBvaW50czogcG9pbnRzXG4gICAgICAgIH0sIHN0eWxlKVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAncGF0aCcpIHtcbiAgICAgIHZhciBwYXRoID0gY2xpcC5wYXRoO1xuICAgICAgc2hhcGUuc2V0Q2xpcCh7XG4gICAgICAgIHR5cGU6ICdwYXRoJyxcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICBwYXRoOiBwYXRoXG4gICAgICAgIH0sIHN0eWxlKVxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICBnZXRTaGFwZVN0eWxlOiBmdW5jdGlvbiBnZXRTaGFwZVN0eWxlKGNmZykge1xuICAgIHZhciBfYSA9IHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSxcbiAgICAgICAgZGVmYXVsdFN0eWxlID0gX2Euc3R5bGUsXG4gICAgICAgIGltZyA9IF9hLmltZztcblxuICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgdmFyIHdpZHRoID0gc2l6ZVswXTtcbiAgICB2YXIgaGVpZ2h0ID0gc2l6ZVsxXTtcblxuICAgIGlmIChkZWZhdWx0U3R5bGUpIHtcbiAgICAgIHdpZHRoID0gZGVmYXVsdFN0eWxlLndpZHRoIHx8IHNpemVbMF07XG4gICAgICBoZWlnaHQgPSBkZWZhdWx0U3R5bGUuaGVpZ2h0IHx8IHNpemVbMV07XG4gICAgfVxuXG4gICAgdmFyIHN0eWxlID0gX19hc3NpZ24oe1xuICAgICAgeDogLXdpZHRoIC8gMixcbiAgICAgIHk6IC1oZWlnaHQgLyAyLFxuICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICBpbWc6IGltZ1xuICAgIH0sIGRlZmF1bHRTdHlsZSk7XG5cbiAgICByZXR1cm4gc3R5bGU7XG4gIH0sXG4gIHVwZGF0ZVNoYXBlU3R5bGU6IGZ1bmN0aW9uIHVwZGF0ZVNoYXBlU3R5bGUoY2ZnLCBpdGVtKSB7XG4gICAgdmFyIGdyb3VwID0gaXRlbS5nZXRDb250YWluZXIoKTtcbiAgICB2YXIgc2hhcGVDbGFzc05hbWUgPSB0aGlzLml0ZW1UeXBlICsgXCItc2hhcGVcIjtcbiAgICB2YXIgc2hhcGUgPSBncm91cFsnc2hhcGVNYXAnXVtzaGFwZUNsYXNzTmFtZV0gfHwgZ3JvdXAuZmluZChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCdjbGFzc05hbWUnKSA9PT0gc2hhcGVDbGFzc05hbWU7XG4gICAgfSkgfHwgaXRlbS5nZXRLZXlTaGFwZSgpO1xuICAgIHZhciBzaGFwZVN0eWxlID0gdGhpcy5nZXRTaGFwZVN0eWxlKGNmZyk7XG5cbiAgICBpZiAoc2hhcGUgJiYgIXNoYXBlLmRlc3Ryb3llZCkge1xuICAgICAgc2hhcGUuYXR0cihzaGFwZVN0eWxlKTtcbiAgICB9XG4gIH1cbn0sICdzaW5nbGUtbm9kZScpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/nodes/image.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/nodes/index.js":
/*!***********************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/nodes/index.js ***!
\***********************************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _simple_circle__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./simple-circle */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/nodes/simple-circle.js\");\n/* harmony import */ var _simple_rect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./simple-rect */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/nodes/simple-rect.js\");\n/* harmony import */ var _image__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./image */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/nodes/image.js\");\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L25vZGVzL2luZGV4LmpzPzIyMWQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBeUI7QUFDRiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtY29yZUAwLjUuMEBAYW50di9nNi1jb3JlL2VzL2VsZW1lbnQvbm9kZXMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJy4vc2ltcGxlLWNpcmNsZSc7XG5pbXBvcnQgJy4vc2ltcGxlLXJlY3QnO1xuaW1wb3J0ICcuL2ltYWdlJzsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/nodes/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/nodes/simple-circle.js":
/*!*******************************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/nodes/simple-circle.js ***!
\*******************************************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../global */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/global.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shape */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shape.js\");\n\n\n\n // 带有图标的圆,可用于拓扑图中\n\n_shape__WEBPACK_IMPORTED_MODULE_3__[\"default\"].registerNode('simple-circle', {\n // 自定义节点时的配置\n options: {\n size: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultNode.size,\n style: {\n x: 0,\n y: 0,\n stroke: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultNode.style.stroke,\n fill: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultNode.style.fill,\n lineWidth: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultNode.style.lineWidth\n },\n labelCfg: {\n style: {\n fill: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].nodeLabel.style.fill,\n fontSize: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].nodeLabel.style.fontSize,\n fontFamily: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].windowFontFamily\n }\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].nodeStateStyles)\n },\n shapeType: 'simple-circle',\n // 文本位置\n labelPosition: 'center',\n shapeMap: {},\n drawShape: function drawShape(cfg, group) {\n var style = this.getShapeStyle(cfg);\n var name = this.type + \"-keyShape\";\n var keyShape = group.addShape('circle', {\n attrs: style,\n className: this.type + \"-keyShape\",\n name: name,\n draggable: true\n });\n group['shapeMap'][name] = keyShape;\n return keyShape;\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, defaultStyle, strokeStyle);\n var size = this.getSize(cfg);\n var r = size[0] / 2;\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n r: r\n }, style);\n\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var size = this.getSize(cfg); // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n\n var strokeStyle = {\n stroke: cfg.color,\n r: size[0] / 2\n }; // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n\n var keyShape = item.get('keyShape');\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, keyShape.attr(), strokeStyle, cfg.style);\n this.updateShape(cfg, item, style, true, updateType);\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L25vZGVzL3NpbXBsZS1jaXJjbGUuanM/NjUxYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ0k7QUFDSDtBQUNMOztBQUU3Qiw4Q0FBSztBQUNMO0FBQ0E7QUFDQSxVQUFVLCtDQUFNO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBLGNBQWMsK0NBQU07QUFDcEIsWUFBWSwrQ0FBTTtBQUNsQixpQkFBaUIsK0NBQU07QUFDdkIsS0FBSztBQUNMO0FBQ0E7QUFDQSxjQUFjLCtDQUFNO0FBQ3BCLGtCQUFrQiwrQ0FBTTtBQUN4QixvQkFBb0IsK0NBQU07QUFDMUI7QUFDQSxLQUFLO0FBQ0wsaUJBQWlCLHNEQUFRLEdBQUcsRUFBRSwrQ0FBTTtBQUNwQyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU4sZ0JBQWdCLDBEQUFPLEdBQUc7QUFDMUI7QUFDQTs7QUFFQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLEdBQUc7QUFDSDtBQUNBLGlDQUFpQzs7QUFFakM7QUFDQTtBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBLGdCQUFnQiwwREFBTyxHQUFHO0FBQzFCO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1jb3JlQDAuNS4wQEBhbnR2L2c2LWNvcmUvZXMvZWxlbWVudC9ub2Rlcy9zaW1wbGUtY2lyY2xlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGRlZXBNaXggfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBHbG9iYWwgZnJvbSAnLi4vLi4vZ2xvYmFsJztcbmltcG9ydCBTaGFwZSBmcm9tICcuLi9zaGFwZSc7IC8vIOW4puacieWbvuagh+eahOWchu+8jOWPr+eUqOS6juaLk+aJkeWbvuS4rVxuXG5TaGFwZS5yZWdpc3Rlck5vZGUoJ3NpbXBsZS1jaXJjbGUnLCB7XG4gIC8vIOiHquWumuS5ieiKgueCueaXtueahOmFjee9rlxuICBvcHRpb25zOiB7XG4gICAgc2l6ZTogR2xvYmFsLmRlZmF1bHROb2RlLnNpemUsXG4gICAgc3R5bGU6IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwLFxuICAgICAgc3Ryb2tlOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUuc3Ryb2tlLFxuICAgICAgZmlsbDogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLmZpbGwsXG4gICAgICBsaW5lV2lkdGg6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zdHlsZS5saW5lV2lkdGhcbiAgICB9LFxuICAgIGxhYmVsQ2ZnOiB7XG4gICAgICBzdHlsZToge1xuICAgICAgICBmaWxsOiBHbG9iYWwubm9kZUxhYmVsLnN0eWxlLmZpbGwsXG4gICAgICAgIGZvbnRTaXplOiBHbG9iYWwubm9kZUxhYmVsLnN0eWxlLmZvbnRTaXplLFxuICAgICAgICBmb250RmFtaWx5OiBHbG9iYWwud2luZG93Rm9udEZhbWlseVxuICAgICAgfVxuICAgIH0sXG4gICAgc3RhdGVTdHlsZXM6IF9fYXNzaWduKHt9LCBHbG9iYWwubm9kZVN0YXRlU3R5bGVzKVxuICB9LFxuICBzaGFwZVR5cGU6ICdzaW1wbGUtY2lyY2xlJyxcbiAgLy8g5paH5pys5L2N572uXG4gIGxhYmVsUG9zaXRpb246ICdjZW50ZXInLFxuICBzaGFwZU1hcDoge30sXG4gIGRyYXdTaGFwZTogZnVuY3Rpb24gZHJhd1NoYXBlKGNmZywgZ3JvdXApIHtcbiAgICB2YXIgc3R5bGUgPSB0aGlzLmdldFNoYXBlU3R5bGUoY2ZnKTtcbiAgICB2YXIgbmFtZSA9IHRoaXMudHlwZSArIFwiLWtleVNoYXBlXCI7XG4gICAgdmFyIGtleVNoYXBlID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgIGF0dHJzOiBzdHlsZSxcbiAgICAgIGNsYXNzTmFtZTogdGhpcy50eXBlICsgXCIta2V5U2hhcGVcIixcbiAgICAgIG5hbWU6IG5hbWUsXG4gICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICB9KTtcbiAgICBncm91cFsnc2hhcGVNYXAnXVtuYW1lXSA9IGtleVNoYXBlO1xuICAgIHJldHVybiBrZXlTaGFwZTtcbiAgfSxcblxuICAvKipcbiAgICog6I635Y+W6IqC54K555qE5qC35byP77yM5L6b5Z+65LqO6K+l6IqC54K56Ieq5a6a5LmJ5pe25L2/55SoXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcg6IqC54K55pWw5o2u5qih5Z6LXG4gICAqIEByZXR1cm4ge09iamVjdH0g6IqC54K555qE5qC35byPXG4gICAqL1xuICBnZXRTaGFwZVN0eWxlOiBmdW5jdGlvbiBnZXRTaGFwZVN0eWxlKGNmZykge1xuICAgIHZhciBkZWZhdWx0U3R5bGUgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpKS5zdHlsZTtcbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvclxuICAgIH07IC8vIOWmguaenOiuvue9ruS6hmNvbG9y77yM5YiZ6KaG55uW6buY6K6k55qEc3Ryb2tl5bGe5oCnXG5cbiAgICB2YXIgc3R5bGUgPSBkZWVwTWl4KHt9LCBkZWZhdWx0U3R5bGUsIHN0cm9rZVN0eWxlKTtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciByID0gc2l6ZVswXSAvIDI7XG5cbiAgICB2YXIgc3R5bGVzID0gX19hc3NpZ24oe1xuICAgICAgeDogMCxcbiAgICAgIHk6IDAsXG4gICAgICByOiByXG4gICAgfSwgc3R5bGUpO1xuXG4gICAgcmV0dXJuIHN0eWxlcztcbiAgfSxcbiAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUoY2ZnLCBpdGVtLCB1cGRhdGVUeXBlKSB7XG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTsgLy8g5LiL6Z2i6L+Z5Lqb5bGe5oCn6ZyA6KaB6KaG55uW6buY6K6k5qC35byP5LiO55uu5YmN5qC35byP77yM5L2G6Iul5ZyoIGNmZyDkuK3mnInmjIflrprliJnlupTor6XooqsgY2ZnIOeahOebuOW6lOmFjee9ruimhuebluOAglxuXG4gICAgdmFyIHN0cm9rZVN0eWxlID0ge1xuICAgICAgc3Ryb2tlOiBjZmcuY29sb3IsXG4gICAgICByOiBzaXplWzBdIC8gMlxuICAgIH07IC8vIOS4jiBnZXRTaGFwZVN0eWxlIOS4jeWQjOWcqOS6ju+8jHVwZGF0ZSDml7bpnIDopoHojrflj5bliLDlvZPliY3nmoQgc3R5bGUg6L+b6KGM6J6N5ZCI44CC5Y2z5paw5Lyg5YWl55qE6YWN572u6aG55Lit5rKh5pyJ5raJ5Y+K55qE5bGe5oCn77yM5L+d55WZ5b2T5YmN55qE6YWN572u44CCXG5cbiAgICB2YXIga2V5U2hhcGUgPSBpdGVtLmdldCgna2V5U2hhcGUnKTtcbiAgICB2YXIgc3R5bGUgPSBkZWVwTWl4KHt9LCBrZXlTaGFwZS5hdHRyKCksIHN0cm9rZVN0eWxlLCBjZmcuc3R5bGUpO1xuICAgIHRoaXMudXBkYXRlU2hhcGUoY2ZnLCBpdGVtLCBzdHlsZSwgdHJ1ZSwgdXBkYXRlVHlwZSk7XG4gIH1cbn0sICdzaW5nbGUtbm9kZScpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/nodes/simple-circle.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/nodes/simple-rect.js":
/*!*****************************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/nodes/simple-rect.js ***!
\*****************************************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../global */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/global.js\");\n/* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shape */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shape.js\");\n\n\n\n\n_shape__WEBPACK_IMPORTED_MODULE_3__[\"default\"].registerNode('simple-rect', {\n // 自定义节点时的配置\n options: {\n size: [100, 30],\n style: {\n radius: 0,\n stroke: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultNode.style.stroke,\n fill: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultNode.style.fill,\n lineWidth: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultNode.style.lineWidth\n },\n // 文本样式配置\n labelCfg: {\n style: {\n fill: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].nodeLabel.style.fill,\n fontSize: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].nodeLabel.style.fontSize,\n fontFamily: _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].windowFontFamily\n }\n },\n // 连接点,默认为左右\n // anchorPoints: [{ x: 0, y: 0.5 }, { x: 1, y: 0.5 }]\n anchorPoints: [[0, 0.5], [1, 0.5]],\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].nodeStateStyles)\n },\n shapeType: 'simple-rect',\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var style = this.getShapeStyle(cfg);\n var keyShape = group.addShape('rect', {\n attrs: style,\n className: this.type + \"-keyShape\",\n name: this.type + \"-keyShape\",\n draggable: true\n });\n return keyShape;\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultStyle, strokeStyle);\n var size = this.getSize(cfg);\n var width = style.width || size[0];\n var height = style.height || size[1];\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -width / 2,\n y: -height / 2,\n width: width,\n height: height\n }, style);\n\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var group = item.getContainer(); // 这里不传 cfg 参数是因为 cfg.style 需要最后覆盖样式\n\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var size = this.getSize(cfg);\n var keyShape = item.get('keyShape');\n\n if (!cfg.size) {\n size[0] = keyShape.attr('width') || defaultStyle.width;\n size[1] = keyShape.attr('height') || defaultStyle.height;\n } // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n\n\n var strokeStyle = {\n stroke: cfg.color,\n x: -size[0] / 2,\n y: -size[1] / 2,\n width: size[0],\n height: size[1]\n }; // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultStyle, keyShape.attr(), strokeStyle);\n style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])(style, cfg.style);\n this.updateShape(cfg, item, style, false, updateType);\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L25vZGVzL3NpbXBsZS1yZWN0LmpzP2FmMzkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNBO0FBQ0M7QUFDTDtBQUM3Qiw4Q0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLCtDQUFNO0FBQ3BCLFlBQVksK0NBQU07QUFDbEIsaUJBQWlCLCtDQUFNO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxjQUFjLCtDQUFNO0FBQ3BCLGtCQUFrQiwrQ0FBTTtBQUN4QixvQkFBb0IsK0NBQU07QUFDMUI7QUFDQSxLQUFLO0FBQ0w7QUFDQSx1QkFBdUIsZUFBZSxHQUFHLGVBQWU7QUFDeEQ7QUFDQSxpQkFBaUIsc0RBQVEsR0FBRyxFQUFFLCtDQUFNO0FBQ3BDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOLGdCQUFnQixzREFBRyxHQUFHO0FBQ3RCO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0EsR0FBRztBQUNIO0FBQ0Esb0NBQW9DOztBQUVwQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTs7QUFFTixnQkFBZ0Isc0RBQUcsR0FBRztBQUN0QixZQUFZLHNEQUFHO0FBQ2Y7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L25vZGVzL3NpbXBsZS1yZWN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IG1peCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IEdsb2JhbCBmcm9tICcuLi8uLi9nbG9iYWwnO1xuaW1wb3J0IFNoYXBlIGZyb20gJy4uL3NoYXBlJztcblNoYXBlLnJlZ2lzdGVyTm9kZSgnc2ltcGxlLXJlY3QnLCB7XG4gIC8vIOiHquWumuS5ieiKgueCueaXtueahOmFjee9rlxuICBvcHRpb25zOiB7XG4gICAgc2l6ZTogWzEwMCwgMzBdLFxuICAgIHN0eWxlOiB7XG4gICAgICByYWRpdXM6IDAsXG4gICAgICBzdHJva2U6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zdHlsZS5zdHJva2UsXG4gICAgICBmaWxsOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUuZmlsbCxcbiAgICAgIGxpbmVXaWR0aDogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLmxpbmVXaWR0aFxuICAgIH0sXG4gICAgLy8g5paH5pys5qC35byP6YWN572uXG4gICAgbGFiZWxDZmc6IHtcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIGZpbGw6IEdsb2JhbC5ub2RlTGFiZWwuc3R5bGUuZmlsbCxcbiAgICAgICAgZm9udFNpemU6IEdsb2JhbC5ub2RlTGFiZWwuc3R5bGUuZm9udFNpemUsXG4gICAgICAgIGZvbnRGYW1pbHk6IEdsb2JhbC53aW5kb3dGb250RmFtaWx5XG4gICAgICB9XG4gICAgfSxcbiAgICAvLyDov57mjqXngrnvvIzpu5jorqTkuLrlt6blj7NcbiAgICAvLyBhbmNob3JQb2ludHM6IFt7IHg6IDAsIHk6IDAuNSB9LCB7IHg6IDEsIHk6IDAuNSB9XVxuICAgIGFuY2hvclBvaW50czogW1swLCAwLjVdLCBbMSwgMC41XV0sXG4gICAgc3RhdGVTdHlsZXM6IF9fYXNzaWduKHt9LCBHbG9iYWwubm9kZVN0YXRlU3R5bGVzKVxuICB9LFxuICBzaGFwZVR5cGU6ICdzaW1wbGUtcmVjdCcsXG4gIGxhYmVsUG9zaXRpb246ICdjZW50ZXInLFxuICBkcmF3U2hhcGU6IGZ1bmN0aW9uIGRyYXdTaGFwZShjZmcsIGdyb3VwKSB7XG4gICAgdmFyIHN0eWxlID0gdGhpcy5nZXRTaGFwZVN0eWxlKGNmZyk7XG4gICAgdmFyIGtleVNoYXBlID0gZ3JvdXAuYWRkU2hhcGUoJ3JlY3QnLCB7XG4gICAgICBhdHRyczogc3R5bGUsXG4gICAgICBjbGFzc05hbWU6IHRoaXMudHlwZSArIFwiLWtleVNoYXBlXCIsXG4gICAgICBuYW1lOiB0aGlzLnR5cGUgKyBcIi1rZXlTaGFwZVwiLFxuICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIGtleVNoYXBlO1xuICB9LFxuXG4gIC8qKlxuICAgKiDojrflj5boioLngrnnmoTmoLflvI/vvIzkvpvln7rkuo7or6XoioLngrnoh6rlrprkuYnml7bkvb/nlKhcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyDoioLngrnmlbDmja7mqKHlnotcbiAgICogQHJldHVybiB7T2JqZWN0fSDoioLngrnnmoTmoLflvI9cbiAgICovXG4gIGdldFNoYXBlU3R5bGU6IGZ1bmN0aW9uIGdldFNoYXBlU3R5bGUoY2ZnKSB7XG4gICAgdmFyIGRlZmF1bHRTdHlsZSA9ICh0aGlzLm1lcmdlU3R5bGUgfHwgdGhpcy5nZXRPcHRpb25zKGNmZykpLnN0eWxlO1xuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yXG4gICAgfTsgLy8g5aaC5p6c6K6+572u5LqGY29sb3LvvIzliJnopobnm5bpu5jorqTnmoRzdHJva2XlsZ7mgKdcblxuICAgIHZhciBzdHlsZSA9IG1peCh7fSwgZGVmYXVsdFN0eWxlLCBzdHJva2VTdHlsZSk7XG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgd2lkdGggPSBzdHlsZS53aWR0aCB8fCBzaXplWzBdO1xuICAgIHZhciBoZWlnaHQgPSBzdHlsZS5oZWlnaHQgfHwgc2l6ZVsxXTtcblxuICAgIHZhciBzdHlsZXMgPSBfX2Fzc2lnbih7XG4gICAgICB4OiAtd2lkdGggLyAyLFxuICAgICAgeTogLWhlaWdodCAvIDIsXG4gICAgICB3aWR0aDogd2lkdGgsXG4gICAgICBoZWlnaHQ6IGhlaWdodFxuICAgIH0sIHN0eWxlKTtcblxuICAgIHJldHVybiBzdHlsZXM7XG4gIH0sXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKGNmZywgaXRlbSwgdXBkYXRlVHlwZSkge1xuICAgIHZhciBncm91cCA9IGl0ZW0uZ2V0Q29udGFpbmVyKCk7IC8vIOi/memHjOS4jeS8oCBjZmcg5Y+C5pWw5piv5Zug5Li6IGNmZy5zdHlsZSDpnIDopoHmnIDlkI7opobnm5bmoLflvI9cblxuICAgIHZhciBkZWZhdWx0U3R5bGUgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpKS5zdHlsZTtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciBrZXlTaGFwZSA9IGl0ZW0uZ2V0KCdrZXlTaGFwZScpO1xuXG4gICAgaWYgKCFjZmcuc2l6ZSkge1xuICAgICAgc2l6ZVswXSA9IGtleVNoYXBlLmF0dHIoJ3dpZHRoJykgfHwgZGVmYXVsdFN0eWxlLndpZHRoO1xuICAgICAgc2l6ZVsxXSA9IGtleVNoYXBlLmF0dHIoJ2hlaWdodCcpIHx8IGRlZmF1bHRTdHlsZS5oZWlnaHQ7XG4gICAgfSAvLyDkuIvpnaLov5nkupvlsZ7mgKfpnIDopoHopobnm5bpu5jorqTmoLflvI/kuI7nm67liY3moLflvI/vvIzkvYboi6XlnKggY2ZnIOS4reacieaMh+WumuWImeW6lOivpeiiqyBjZmcg55qE55u45bqU6YWN572u6KaG55uW44CCXG5cblxuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yLFxuICAgICAgeDogLXNpemVbMF0gLyAyLFxuICAgICAgeTogLXNpemVbMV0gLyAyLFxuICAgICAgd2lkdGg6IHNpemVbMF0sXG4gICAgICBoZWlnaHQ6IHNpemVbMV1cbiAgICB9OyAvLyDkuI4gZ2V0U2hhcGVTdHlsZSDkuI3lkIzlnKjkuo7vvIx1cGRhdGUg5pe26ZyA6KaB6I635Y+W5Yiw5b2T5YmN55qEIHN0eWxlIOi/m+ihjOiejeWQiOOAguWNs+aWsOS8oOWFpeeahOmFjee9rumhueS4reayoeaciea2ieWPiueahOWxnuaAp++8jOS/neeVmeW9k+WJjeeahOmFjee9ruOAglxuXG4gICAgdmFyIHN0eWxlID0gbWl4KHt9LCBkZWZhdWx0U3R5bGUsIGtleVNoYXBlLmF0dHIoKSwgc3Ryb2tlU3R5bGUpO1xuICAgIHN0eWxlID0gbWl4KHN0eWxlLCBjZmcuc3R5bGUpO1xuICAgIHRoaXMudXBkYXRlU2hhcGUoY2ZnLCBpdGVtLCBzdHlsZSwgZmFsc2UsIHVwZGF0ZVR5cGUpO1xuICB9XG59LCAnc2luZ2xlLW5vZGUnKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/nodes/simple-rect.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shape.js":
/*!*****************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shape.js ***!
\*****************************************************************************/
/*! exports provided: ShapeFactoryBase, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ShapeFactoryBase\", function() { return ShapeFactoryBase; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _xml__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./xml */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/xml.js\");\n\n\n\nvar cache = {}; // ucfirst 开销过大,进行缓存\n// 首字母大写\n\nfunction ucfirst(str) {\n if (!cache[str]) {\n cache[str] = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"upperFirst\"])(str);\n }\n\n return cache[str];\n}\n/**\n * 工厂方法的基类\n * @type Shape.FactoryBase\n */\n\n\nvar ShapeFactoryBase = {\n /**\n * 默认的形状,当没有指定/匹配 shapeType 时,使用默认的\n * @type {String}\n */\n defaultShapeType: 'defaultType',\n\n /**\n * 形状的 className,用于搜索\n * @type {String}\n */\n className: null,\n\n /**\n * 获取绘制 Shape 的工具类,无状态\n * @param {String} type 类型\n * @return {Shape} 工具类\n */\n getShape: function getShape(type) {\n var self = this;\n var shape = self[type] || self[self.defaultShapeType] || self['simple-circle'];\n return shape;\n },\n\n /**\n * 绘制图形\n * @param {String} type 类型\n * @param {Object} cfg 配置项\n * @param {G.Group} group 图形的分组\n * @return {IShape} 图形对象\n */\n draw: function draw(type, cfg, group) {\n var shape = this.getShape(type);\n group['shapeMap'] = {};\n var rst = shape.draw(cfg, group);\n\n if (shape.afterDraw) {\n shape.afterDraw(cfg, group, rst);\n }\n\n return rst;\n },\n\n /**\n * 更新\n * @param {String} type 类型\n * @param {Object} cfg 配置项\n * @param {G6.Item} item 节点、边、分组等\n */\n baseUpdate: function baseUpdate(type, cfg, item, updateType) {\n var _a, _b;\n\n var shape = this.getShape(type); // 防止没定义 update 函数\n\n if (shape.update) {\n // shape.mergeStyle = updateType === 'move' || updateType === 'bbox' ? {} : shape.getOptions?.(cfg);\n shape.mergeStyle = (_a = shape.getOptions) === null || _a === void 0 ? void 0 : _a.call(shape, cfg, updateType);\n (_b = shape.update) === null || _b === void 0 ? void 0 : _b.call(shape, cfg, item, updateType);\n }\n\n if (shape.afterUpdate) {\n shape.afterUpdate(cfg, item);\n }\n },\n\n /**\n * 设置状态\n * @param {String} type 类型\n * @param {String} name 状态名\n * @param {String | Boolean} value 状态值\n * @param {G6.Item} item 节点、边、分组等\n */\n setState: function setState(type, name, value, item) {\n var shape = this.getShape(type); // 调用 shape/shapeBase.ts 中的 setState 方法\n\n shape.setState(name, value, item);\n },\n\n /**\n * 是否允许更新,不重新绘制图形\n * @param {String} type 类型\n * @return {Boolean} 是否允许使用更新\n */\n shouldUpdate: function shouldUpdate(type) {\n var shape = this.getShape(type);\n return !!shape.update;\n },\n getControlPoints: function getControlPoints(type, cfg) {\n var shape = this.getShape(type);\n return shape.getControlPoints(cfg);\n },\n\n /**\n * 获取控制点\n * @param {String} type 节点、边类型\n * @param {Object} cfg 节点、边的配置项\n * @return {Array|null} 控制点的数组,如果为 null,则没有控制点\n */\n getAnchorPoints: function getAnchorPoints(type, cfg) {\n var shape = this.getShape(type);\n return shape.getAnchorPoints(cfg);\n }\n};\n/**\n * 元素的框架\n */\n\nvar ShapeFramework = {\n // 默认样式及配置\n options: {},\n\n /**\n * 绘制\n */\n draw: function draw(cfg, group) {\n return this.drawShape(cfg, group);\n },\n\n /**\n * 绘制\n */\n drawShape: function drawShape() {},\n\n /**\n * 绘制完成后的操作,便于用户继承现有的节点、边\n */\n afterDraw: function afterDraw() {},\n // update(cfg, item) // 默认不定义\n afterUpdate: function afterUpdate() {},\n\n /**\n * 设置节点、边状态\n */\n setState: function setState() {},\n\n /**\n * 获取控制点\n * @param {Object} cfg 节点、边的配置项\n * @return {Array|null} 控制点的数组,如果为 null,则没有控制点\n */\n getControlPoints: function getControlPoints(cfg) {\n return cfg.controlPoints;\n },\n\n /**\n * 获取控制点\n * @param {Object} cfg 节点、边的配置项\n * @return {Array|null} 控制点的数组,如果为 null,则没有控制点\n */\n getAnchorPoints: function getAnchorPoints(cfg) {\n var defaultAnchorPoints = this.options.anchorPoints;\n var anchorPoints = cfg.anchorPoints || defaultAnchorPoints;\n return anchorPoints;\n }\n /* 如果没定义 update 方法,每次都调用 draw 方法\n update(cfg, item) {\n }\n */\n\n};\n\nvar Shape =\n/** @class */\nfunction () {\n function Shape() {}\n\n Shape.registerFactory = function (factoryType, cfg) {\n var className = ucfirst(factoryType);\n var factoryBase = ShapeFactoryBase;\n\n var shapeFactory = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, factoryBase), cfg);\n\n Shape[className] = shapeFactory;\n shapeFactory.className = className;\n return shapeFactory;\n };\n\n Shape.getFactory = function (factoryType) {\n var className = ucfirst(factoryType);\n return Shape[className];\n };\n\n Shape.registerNode = function (shapeType, nodeDefinition, extendShapeType) {\n var shapeFactory = Shape.Node;\n var shapeObj;\n\n if (typeof nodeDefinition === 'string' || typeof nodeDefinition === 'function') {\n var autoNodeDefinition = Object(_xml__WEBPACK_IMPORTED_MODULE_2__[\"createNodeFromXML\"])(nodeDefinition);\n shapeObj = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, shapeFactory.getShape('single-node')), autoNodeDefinition);\n } else if (nodeDefinition.jsx) {\n var jsx = nodeDefinition.jsx;\n var autoNodeDefinition = Object(_xml__WEBPACK_IMPORTED_MODULE_2__[\"createNodeFromXML\"])(jsx);\n shapeObj = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, shapeFactory.getShape('single-node')), autoNodeDefinition), nodeDefinition);\n } else {\n shapeFactory.getShape(extendShapeType);\n var extendShape = extendShapeType ? shapeFactory.getShape(extendShapeType) : ShapeFramework;\n shapeObj = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, extendShape), nodeDefinition);\n }\n\n shapeObj.type = shapeType;\n shapeObj.itemType = 'node';\n shapeFactory[shapeType] = shapeObj;\n return shapeObj;\n };\n\n Shape.registerEdge = function (shapeType, edgeDefinition, extendShapeType) {\n var shapeFactory = Shape.Edge;\n var extendShape = extendShapeType ? shapeFactory.getShape(extendShapeType) : ShapeFramework;\n\n var shapeObj = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, extendShape), edgeDefinition);\n\n shapeObj.type = shapeType;\n shapeObj.itemType = 'edge';\n shapeFactory[shapeType] = shapeObj;\n return shapeObj;\n };\n\n Shape.registerCombo = function (shapeType, comboDefinition, extendShapeType) {\n var shapeFactory = Shape.Combo;\n var extendShape = extendShapeType ? shapeFactory.getShape(extendShapeType) : ShapeFramework;\n\n var shapeObj = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, extendShape), comboDefinition);\n\n shapeObj.type = shapeType;\n shapeObj.itemType = 'combo';\n shapeFactory[shapeType] = shapeObj;\n return shapeObj;\n };\n\n return Shape;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Shape); // 注册 Node 的工厂方法\n\nShape.registerFactory('node', {\n defaultShapeType: 'circle'\n}); // 注册 Edge 的工厂方法\n\nShape.registerFactory('edge', {\n defaultShapeType: 'line'\n}); // 注册 Combo 的工厂方法\n\nShape.registerFactory('combo', {\n defaultShapeType: 'circle'\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L3NoYXBlLmpzP2FlZTAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNPO0FBQ0U7QUFDMUMsZUFBZTtBQUNmOztBQUVBO0FBQ0E7QUFDQSxpQkFBaUIsNkRBQVU7QUFDM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHTztBQUNQO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLE1BQU07QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLE9BQU87QUFDckIsY0FBYyxRQUFRO0FBQ3RCLGNBQWMsT0FBTztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLE9BQU87QUFDckIsY0FBYyxRQUFRO0FBQ3RCO0FBQ0E7QUFDQTs7QUFFQSxvQ0FBb0M7O0FBRXBDO0FBQ0EsK0VBQStFO0FBQy9FO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsaUJBQWlCO0FBQzlCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0Esb0NBQW9DOztBQUVwQztBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLFFBQVE7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGNBQWMsT0FBTztBQUNyQixjQUFjLFdBQVc7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxhQUFhOztBQUViO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQzs7QUFFcEM7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DO0FBQ3BDO0FBQ0Esd0NBQXdDOztBQUV4QztBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7O0FBRWxDO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckIsY0FBYyxXQUFXO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLFdBQVc7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHVCQUF1QixzREFBUSxDQUFDLHNEQUFRLEdBQUc7O0FBRTNDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLCtCQUErQiw4REFBaUI7QUFDaEQsaUJBQWlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNyQyxLQUFLO0FBQ0w7QUFDQSwrQkFBK0IsOERBQWlCO0FBQ2hELGlCQUFpQixzREFBUSxDQUFDLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUM5QyxLQUFLO0FBQ0w7QUFDQTtBQUNBLGlCQUFpQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDckM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLHNEQUFRLENBQUMsc0RBQVEsR0FBRzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLHNEQUFRLENBQUMsc0RBQVEsR0FBRzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRWMsb0VBQUssRUFBQzs7QUFFckI7QUFDQTtBQUNBLENBQUMsRUFBRTs7QUFFSDtBQUNBO0FBQ0EsQ0FBQyxFQUFFOztBQUVIO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1jb3JlQDAuNS4wQEBhbnR2L2c2LWNvcmUvZXMvZWxlbWVudC9zaGFwZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyB1cHBlckZpcnN0IH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBjcmVhdGVOb2RlRnJvbVhNTCB9IGZyb20gJy4veG1sJztcbnZhciBjYWNoZSA9IHt9OyAvLyB1Y2ZpcnN0IOW8gOmUgOi/h+Wkp++8jOi/m+ihjOe8k+WtmFxuLy8g6aaW5a2X5q+N5aSn5YaZXG5cbmZ1bmN0aW9uIHVjZmlyc3Qoc3RyKSB7XG4gIGlmICghY2FjaGVbc3RyXSkge1xuICAgIGNhY2hlW3N0cl0gPSB1cHBlckZpcnN0KHN0cik7XG4gIH1cblxuICByZXR1cm4gY2FjaGVbc3RyXTtcbn1cbi8qKlxuICog5bel5Y6C5pa55rOV55qE5Z+657G7XG4gKiBAdHlwZSBTaGFwZS5GYWN0b3J5QmFzZVxuICovXG5cblxuZXhwb3J0IHZhciBTaGFwZUZhY3RvcnlCYXNlID0ge1xuICAvKipcbiAgICog6buY6K6k55qE5b2i54q277yM5b2T5rKh5pyJ5oyH5a6aL+WMuemFjSBzaGFwZVR5cGUg5pe277yM5L2/55So6buY6K6k55qEXG4gICAqIEB0eXBlIHtTdHJpbmd9XG4gICAqL1xuICBkZWZhdWx0U2hhcGVUeXBlOiAnZGVmYXVsdFR5cGUnLFxuXG4gIC8qKlxuICAgKiDlvaLnirbnmoQgY2xhc3NOYW1l77yM55So5LqO5pCc57SiXG4gICAqIEB0eXBlIHtTdHJpbmd9XG4gICAqL1xuICBjbGFzc05hbWU6IG51bGwsXG5cbiAgLyoqXG4gICAqIOiOt+WPlue7mOWItiBTaGFwZSDnmoTlt6XlhbfnsbvvvIzml6DnirbmgIFcbiAgICogQHBhcmFtICB7U3RyaW5nfSB0eXBlIOexu+Wei1xuICAgKiBAcmV0dXJuIHtTaGFwZX0g5bel5YW357G7XG4gICAqL1xuICBnZXRTaGFwZTogZnVuY3Rpb24gZ2V0U2hhcGUodHlwZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgc2hhcGUgPSBzZWxmW3R5cGVdIHx8IHNlbGZbc2VsZi5kZWZhdWx0U2hhcGVUeXBlXSB8fCBzZWxmWydzaW1wbGUtY2lyY2xlJ107XG4gICAgcmV0dXJuIHNoYXBlO1xuICB9LFxuXG4gIC8qKlxuICAgKiDnu5jliLblm77lvaJcbiAgICogQHBhcmFtICB7U3RyaW5nfSB0eXBlICDnsbvlnotcbiAgICogQHBhcmFtICB7T2JqZWN0fSBjZmcg6YWN572u6aG5XG4gICAqIEBwYXJhbSAge0cuR3JvdXB9IGdyb3VwIOWbvuW9oueahOWIhue7hFxuICAgKiBAcmV0dXJuIHtJU2hhcGV9IOWbvuW9ouWvueixoVxuICAgKi9cbiAgZHJhdzogZnVuY3Rpb24gZHJhdyh0eXBlLCBjZmcsIGdyb3VwKSB7XG4gICAgdmFyIHNoYXBlID0gdGhpcy5nZXRTaGFwZSh0eXBlKTtcbiAgICBncm91cFsnc2hhcGVNYXAnXSA9IHt9O1xuICAgIHZhciByc3QgPSBzaGFwZS5kcmF3KGNmZywgZ3JvdXApO1xuXG4gICAgaWYgKHNoYXBlLmFmdGVyRHJhdykge1xuICAgICAgc2hhcGUuYWZ0ZXJEcmF3KGNmZywgZ3JvdXAsIHJzdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJzdDtcbiAgfSxcblxuICAvKipcbiAgICog5pu05pawXG4gICAqIEBwYXJhbSAge1N0cmluZ30gdHlwZSAg57G75Z6LXG4gICAqIEBwYXJhbSAge09iamVjdH0gY2ZnIOmFjee9rumhuVxuICAgKiBAcGFyYW0gIHtHNi5JdGVtfSBpdGVtIOiKgueCueOAgei+ueOAgeWIhue7hOetiVxuICAgKi9cbiAgYmFzZVVwZGF0ZTogZnVuY3Rpb24gYmFzZVVwZGF0ZSh0eXBlLCBjZmcsIGl0ZW0sIHVwZGF0ZVR5cGUpIHtcbiAgICB2YXIgX2EsIF9iO1xuXG4gICAgdmFyIHNoYXBlID0gdGhpcy5nZXRTaGFwZSh0eXBlKTsgLy8g6Ziy5q2i5rKh5a6a5LmJIHVwZGF0ZSDlh73mlbBcblxuICAgIGlmIChzaGFwZS51cGRhdGUpIHtcbiAgICAgIC8vIHNoYXBlLm1lcmdlU3R5bGUgPSB1cGRhdGVUeXBlID09PSAnbW92ZScgfHwgdXBkYXRlVHlwZSA9PT0gJ2Jib3gnID8ge30gOiBzaGFwZS5nZXRPcHRpb25zPy4oY2ZnKTtcbiAgICAgIHNoYXBlLm1lcmdlU3R5bGUgPSAoX2EgPSBzaGFwZS5nZXRPcHRpb25zKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChzaGFwZSwgY2ZnLCB1cGRhdGVUeXBlKTtcbiAgICAgIChfYiA9IHNoYXBlLnVwZGF0ZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoc2hhcGUsIGNmZywgaXRlbSwgdXBkYXRlVHlwZSk7XG4gICAgfVxuXG4gICAgaWYgKHNoYXBlLmFmdGVyVXBkYXRlKSB7XG4gICAgICBzaGFwZS5hZnRlclVwZGF0ZShjZmcsIGl0ZW0pO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICog6K6+572u54q25oCBXG4gICAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlICDnsbvlnotcbiAgICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgIOeKtuaAgeWQjVxuICAgKiBAcGFyYW0ge1N0cmluZyB8IEJvb2xlYW59IHZhbHVlIOeKtuaAgeWAvFxuICAgKiBAcGFyYW0ge0c2Lkl0ZW19IGl0ZW0gIOiKgueCueOAgei+ueOAgeWIhue7hOetiVxuICAgKi9cbiAgc2V0U3RhdGU6IGZ1bmN0aW9uIHNldFN0YXRlKHR5cGUsIG5hbWUsIHZhbHVlLCBpdGVtKSB7XG4gICAgdmFyIHNoYXBlID0gdGhpcy5nZXRTaGFwZSh0eXBlKTsgLy8g6LCD55SoIHNoYXBlL3NoYXBlQmFzZS50cyDkuK3nmoQgc2V0U3RhdGUg5pa55rOVXG5cbiAgICBzaGFwZS5zZXRTdGF0ZShuYW1lLCB2YWx1ZSwgaXRlbSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOaYr+WQpuWFgeiuuOabtOaWsO+8jOS4jemHjeaWsOe7mOWItuWbvuW9olxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IHR5cGUg57G75Z6LXG4gICAqIEByZXR1cm4ge0Jvb2xlYW59IOaYr+WQpuWFgeiuuOS9v+eUqOabtOaWsFxuICAgKi9cbiAgc2hvdWxkVXBkYXRlOiBmdW5jdGlvbiBzaG91bGRVcGRhdGUodHlwZSkge1xuICAgIHZhciBzaGFwZSA9IHRoaXMuZ2V0U2hhcGUodHlwZSk7XG4gICAgcmV0dXJuICEhc2hhcGUudXBkYXRlO1xuICB9LFxuICBnZXRDb250cm9sUG9pbnRzOiBmdW5jdGlvbiBnZXRDb250cm9sUG9pbnRzKHR5cGUsIGNmZykge1xuICAgIHZhciBzaGFwZSA9IHRoaXMuZ2V0U2hhcGUodHlwZSk7XG4gICAgcmV0dXJuIHNoYXBlLmdldENvbnRyb2xQb2ludHMoY2ZnKTtcbiAgfSxcblxuICAvKipcbiAgICog6I635Y+W5o6n5Yi254K5XG4gICAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlIOiKgueCueOAgei+ueexu+Wei1xuICAgKiBAcGFyYW0gIHtPYmplY3R9IGNmZyDoioLngrnjgIHovrnnmoTphY3nva7poblcbiAgICogQHJldHVybiB7QXJyYXl8bnVsbH0g5o6n5Yi254K555qE5pWw57uELOWmguaenOS4uiBudWxs77yM5YiZ5rKh5pyJ5o6n5Yi254K5XG4gICAqL1xuICBnZXRBbmNob3JQb2ludHM6IGZ1bmN0aW9uIGdldEFuY2hvclBvaW50cyh0eXBlLCBjZmcpIHtcbiAgICB2YXIgc2hhcGUgPSB0aGlzLmdldFNoYXBlKHR5cGUpO1xuICAgIHJldHVybiBzaGFwZS5nZXRBbmNob3JQb2ludHMoY2ZnKTtcbiAgfVxufTtcbi8qKlxuICog5YWD57Sg55qE5qGG5p62XG4gKi9cblxudmFyIFNoYXBlRnJhbWV3b3JrID0ge1xuICAvLyDpu5jorqTmoLflvI/lj4rphY3nva5cbiAgb3B0aW9uczoge30sXG5cbiAgLyoqXG4gICAqIOe7mOWItlxuICAgKi9cbiAgZHJhdzogZnVuY3Rpb24gZHJhdyhjZmcsIGdyb3VwKSB7XG4gICAgcmV0dXJuIHRoaXMuZHJhd1NoYXBlKGNmZywgZ3JvdXApO1xuICB9LFxuXG4gIC8qKlxuICAgKiDnu5jliLZcbiAgICovXG4gIGRyYXdTaGFwZTogZnVuY3Rpb24gZHJhd1NoYXBlKCkge30sXG5cbiAgLyoqXG4gICAqIOe7mOWItuWujOaIkOWQjueahOaTjeS9nO+8jOS+v+S6jueUqOaIt+e7p+aJv+eOsOacieeahOiKgueCueOAgei+uVxuICAgKi9cbiAgYWZ0ZXJEcmF3OiBmdW5jdGlvbiBhZnRlckRyYXcoKSB7fSxcbiAgLy8gdXBkYXRlKGNmZywgaXRlbSkgLy8g6buY6K6k5LiN5a6a5LmJXG4gIGFmdGVyVXBkYXRlOiBmdW5jdGlvbiBhZnRlclVwZGF0ZSgpIHt9LFxuXG4gIC8qKlxuICAgKiDorr7nva7oioLngrnjgIHovrnnirbmgIFcbiAgICovXG4gIHNldFN0YXRlOiBmdW5jdGlvbiBzZXRTdGF0ZSgpIHt9LFxuXG4gIC8qKlxuICAgKiDojrflj5bmjqfliLbngrlcbiAgICogQHBhcmFtICB7T2JqZWN0fSBjZmcg6IqC54K544CB6L6555qE6YWN572u6aG5XG4gICAqIEByZXR1cm4ge0FycmF5fG51bGx9IOaOp+WItueCueeahOaVsOe7hCzlpoLmnpzkuLogbnVsbO+8jOWImeayoeacieaOp+WItueCuVxuICAgKi9cbiAgZ2V0Q29udHJvbFBvaW50czogZnVuY3Rpb24gZ2V0Q29udHJvbFBvaW50cyhjZmcpIHtcbiAgICByZXR1cm4gY2ZnLmNvbnRyb2xQb2ludHM7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOiOt+WPluaOp+WItueCuVxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGNmZyDoioLngrnjgIHovrnnmoTphY3nva7poblcbiAgICogQHJldHVybiB7QXJyYXl8bnVsbH0g5o6n5Yi254K555qE5pWw57uELOWmguaenOS4uiBudWxs77yM5YiZ5rKh5pyJ5o6n5Yi254K5XG4gICAqL1xuICBnZXRBbmNob3JQb2ludHM6IGZ1bmN0aW9uIGdldEFuY2hvclBvaW50cyhjZmcpIHtcbiAgICB2YXIgZGVmYXVsdEFuY2hvclBvaW50cyA9IHRoaXMub3B0aW9ucy5hbmNob3JQb2ludHM7XG4gICAgdmFyIGFuY2hvclBvaW50cyA9IGNmZy5hbmNob3JQb2ludHMgfHwgZGVmYXVsdEFuY2hvclBvaW50cztcbiAgICByZXR1cm4gYW5jaG9yUG9pbnRzO1xuICB9XG4gIC8qIOWmguaenOayoeWumuS5iSB1cGRhdGUg5pa55rOV77yM5q+P5qyh6YO96LCD55SoIGRyYXcg5pa55rOVXG4gIHVwZGF0ZShjZmcsIGl0ZW0pIHtcbiAgICAgfVxuICAqL1xuXG59O1xuXG52YXIgU2hhcGUgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBTaGFwZSgpIHt9XG5cbiAgU2hhcGUucmVnaXN0ZXJGYWN0b3J5ID0gZnVuY3Rpb24gKGZhY3RvcnlUeXBlLCBjZmcpIHtcbiAgICB2YXIgY2xhc3NOYW1lID0gdWNmaXJzdChmYWN0b3J5VHlwZSk7XG4gICAgdmFyIGZhY3RvcnlCYXNlID0gU2hhcGVGYWN0b3J5QmFzZTtcblxuICAgIHZhciBzaGFwZUZhY3RvcnkgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZmFjdG9yeUJhc2UpLCBjZmcpO1xuXG4gICAgU2hhcGVbY2xhc3NOYW1lXSA9IHNoYXBlRmFjdG9yeTtcbiAgICBzaGFwZUZhY3RvcnkuY2xhc3NOYW1lID0gY2xhc3NOYW1lO1xuICAgIHJldHVybiBzaGFwZUZhY3Rvcnk7XG4gIH07XG5cbiAgU2hhcGUuZ2V0RmFjdG9yeSA9IGZ1bmN0aW9uIChmYWN0b3J5VHlwZSkge1xuICAgIHZhciBjbGFzc05hbWUgPSB1Y2ZpcnN0KGZhY3RvcnlUeXBlKTtcbiAgICByZXR1cm4gU2hhcGVbY2xhc3NOYW1lXTtcbiAgfTtcblxuICBTaGFwZS5yZWdpc3Rlck5vZGUgPSBmdW5jdGlvbiAoc2hhcGVUeXBlLCBub2RlRGVmaW5pdGlvbiwgZXh0ZW5kU2hhcGVUeXBlKSB7XG4gICAgdmFyIHNoYXBlRmFjdG9yeSA9IFNoYXBlLk5vZGU7XG4gICAgdmFyIHNoYXBlT2JqO1xuXG4gICAgaWYgKHR5cGVvZiBub2RlRGVmaW5pdGlvbiA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIG5vZGVEZWZpbml0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB2YXIgYXV0b05vZGVEZWZpbml0aW9uID0gY3JlYXRlTm9kZUZyb21YTUwobm9kZURlZmluaXRpb24pO1xuICAgICAgc2hhcGVPYmogPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc2hhcGVGYWN0b3J5LmdldFNoYXBlKCdzaW5nbGUtbm9kZScpKSwgYXV0b05vZGVEZWZpbml0aW9uKTtcbiAgICB9IGVsc2UgaWYgKG5vZGVEZWZpbml0aW9uLmpzeCkge1xuICAgICAgdmFyIGpzeCA9IG5vZGVEZWZpbml0aW9uLmpzeDtcbiAgICAgIHZhciBhdXRvTm9kZURlZmluaXRpb24gPSBjcmVhdGVOb2RlRnJvbVhNTChqc3gpO1xuICAgICAgc2hhcGVPYmogPSBfX2Fzc2lnbihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc2hhcGVGYWN0b3J5LmdldFNoYXBlKCdzaW5nbGUtbm9kZScpKSwgYXV0b05vZGVEZWZpbml0aW9uKSwgbm9kZURlZmluaXRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzaGFwZUZhY3RvcnkuZ2V0U2hhcGUoZXh0ZW5kU2hhcGVUeXBlKTtcbiAgICAgIHZhciBleHRlbmRTaGFwZSA9IGV4dGVuZFNoYXBlVHlwZSA/IHNoYXBlRmFjdG9yeS5nZXRTaGFwZShleHRlbmRTaGFwZVR5cGUpIDogU2hhcGVGcmFtZXdvcms7XG4gICAgICBzaGFwZU9iaiA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBleHRlbmRTaGFwZSksIG5vZGVEZWZpbml0aW9uKTtcbiAgICB9XG5cbiAgICBzaGFwZU9iai50eXBlID0gc2hhcGVUeXBlO1xuICAgIHNoYXBlT2JqLml0ZW1UeXBlID0gJ25vZGUnO1xuICAgIHNoYXBlRmFjdG9yeVtzaGFwZVR5cGVdID0gc2hhcGVPYmo7XG4gICAgcmV0dXJuIHNoYXBlT2JqO1xuICB9O1xuXG4gIFNoYXBlLnJlZ2lzdGVyRWRnZSA9IGZ1bmN0aW9uIChzaGFwZVR5cGUsIGVkZ2VEZWZpbml0aW9uLCBleHRlbmRTaGFwZVR5cGUpIHtcbiAgICB2YXIgc2hhcGVGYWN0b3J5ID0gU2hhcGUuRWRnZTtcbiAgICB2YXIgZXh0ZW5kU2hhcGUgPSBleHRlbmRTaGFwZVR5cGUgPyBzaGFwZUZhY3RvcnkuZ2V0U2hhcGUoZXh0ZW5kU2hhcGVUeXBlKSA6IFNoYXBlRnJhbWV3b3JrO1xuXG4gICAgdmFyIHNoYXBlT2JqID0gX19hc3NpZ24oX19hc3NpZ24oe30sIGV4dGVuZFNoYXBlKSwgZWRnZURlZmluaXRpb24pO1xuXG4gICAgc2hhcGVPYmoudHlwZSA9IHNoYXBlVHlwZTtcbiAgICBzaGFwZU9iai5pdGVtVHlwZSA9ICdlZGdlJztcbiAgICBzaGFwZUZhY3Rvcnlbc2hhcGVUeXBlXSA9IHNoYXBlT2JqO1xuICAgIHJldHVybiBzaGFwZU9iajtcbiAgfTtcblxuICBTaGFwZS5yZWdpc3RlckNvbWJvID0gZnVuY3Rpb24gKHNoYXBlVHlwZSwgY29tYm9EZWZpbml0aW9uLCBleHRlbmRTaGFwZVR5cGUpIHtcbiAgICB2YXIgc2hhcGVGYWN0b3J5ID0gU2hhcGUuQ29tYm87XG4gICAgdmFyIGV4dGVuZFNoYXBlID0gZXh0ZW5kU2hhcGVUeXBlID8gc2hhcGVGYWN0b3J5LmdldFNoYXBlKGV4dGVuZFNoYXBlVHlwZSkgOiBTaGFwZUZyYW1ld29yaztcblxuICAgIHZhciBzaGFwZU9iaiA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBleHRlbmRTaGFwZSksIGNvbWJvRGVmaW5pdGlvbik7XG5cbiAgICBzaGFwZU9iai50eXBlID0gc2hhcGVUeXBlO1xuICAgIHNoYXBlT2JqLml0ZW1UeXBlID0gJ2NvbWJvJztcbiAgICBzaGFwZUZhY3Rvcnlbc2hhcGVUeXBlXSA9IHNoYXBlT2JqO1xuICAgIHJldHVybiBzaGFwZU9iajtcbiAgfTtcblxuICByZXR1cm4gU2hhcGU7XG59KCk7XG5cbmV4cG9ydCBkZWZhdWx0IFNoYXBlOyAvLyDms6jlhowgTm9kZSDnmoTlt6XljoLmlrnms5VcblxuU2hhcGUucmVnaXN0ZXJGYWN0b3J5KCdub2RlJywge1xuICBkZWZhdWx0U2hhcGVUeXBlOiAnY2lyY2xlJ1xufSk7IC8vIOazqOWGjCBFZGdlIOeahOW3peWOguaWueazlVxuXG5TaGFwZS5yZWdpc3RlckZhY3RvcnkoJ2VkZ2UnLCB7XG4gIGRlZmF1bHRTaGFwZVR5cGU6ICdsaW5lJ1xufSk7IC8vIOazqOWGjCBDb21ibyDnmoTlt6XljoLmlrnms5VcblxuU2hhcGUucmVnaXN0ZXJGYWN0b3J5KCdjb21ibycsIHtcbiAgZGVmYXVsdFNoYXBlVHlwZTogJ2NpcmNsZSdcbn0pOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shape.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shapeBase.js":
/*!*********************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shapeBase.js ***!
\*********************************************************************************/
/*! exports provided: CLS_LABEL_BG_SUFFIX, shapeBase */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CLS_LABEL_BG_SUFFIX\", function() { return CLS_LABEL_BG_SUFFIX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"shapeBase\", function() { return shapeBase; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../global */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/global.js\");\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/_@antv_matrix-util@3.1.0-beta.3@@antv/matrix-util/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util_graphic__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/graphic */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/graphic.js\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n\n\n\nvar transform = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_2__[\"ext\"].transform;\nvar CLS_SHAPE_SUFFIX = '-shape';\nvar CLS_LABEL_SUFFIX = '-label';\nvar ARROWS = ['startArrow', 'endArrow'];\nvar SHAPE_DEFAULT_ATTRS = {\n lineWidth: 1,\n stroke: undefined,\n fill: undefined,\n lineAppendWidth: 1,\n opacity: undefined,\n strokeOpacity: undefined,\n fillOpacity: undefined,\n x: 0,\n y: 0,\n r: 10,\n width: 20,\n height: 20,\n shadowColor: undefined,\n shadowBlur: 0,\n shadowOffsetX: 0,\n shadowOffsetY: 0\n};\nvar PATH_SHAPE_DEFAULT_ATTRS = {\n lineWidth: 1,\n stroke: '#000',\n lineDash: undefined,\n startArrow: false,\n endArrow: false,\n opacity: undefined,\n strokeOpacity: undefined,\n fillOpacity: undefined,\n shadowColor: undefined,\n shadowBlur: 0,\n shadowOffsetX: 0,\n shadowOffsetY: 0\n};\nvar SHAPES_DEFAULT_ATTRS = {\n edge: PATH_SHAPE_DEFAULT_ATTRS,\n node: SHAPE_DEFAULT_ATTRS,\n combo: SHAPE_DEFAULT_ATTRS\n};\nvar CLS_LABEL_BG_SUFFIX = '-label-bg'; // 单个 shape 带有一个 label,共用这段代码\n\nvar shapeBase = {\n // 默认样式及配置\n options: {\n labelCfg: {\n style: {\n fontFamily: _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].windowFontFamily\n }\n },\n descriptionCfg: {\n style: {\n fontFamily: _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"].windowFontFamily\n }\n }\n },\n itemType: '',\n\n /**\n * 形状的类型,例如 circle,ellipse,polyline...\n */\n type: '',\n getCustomConfig: function getCustomConfig(cfg) {\n return {};\n },\n getOptions: function getOptions(cfg, updateType) {\n if (updateType === 'move' || (updateType === null || updateType === void 0 ? void 0 : updateType.includes('bbox'))) {\n return {};\n }\n\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"deepMix\"])({}, this.options, this.getCustomConfig(cfg) || {}, cfg);\n },\n\n /**\n * 绘制节点/边,包含文本\n * @override\n * @param {Object} cfg 节点的配置项\n * @param {G.Group} group 节点的容器\n * @return {IShape} 绘制的图形\n */\n draw: function draw(cfg, group) {\n group['shapeMap'] = {};\n this.mergeStyle = this.getOptions(cfg);\n var shape = this.drawShape(cfg, group);\n shape.set('className', this.itemType + CLS_SHAPE_SUFFIX);\n group['shapeMap'][this.itemType + CLS_SHAPE_SUFFIX] = shape;\n\n if (cfg.label) {\n var label = this.drawLabel(cfg, group);\n label.set('className', this.itemType + CLS_LABEL_SUFFIX);\n group['shapeMap'][this.itemType + CLS_LABEL_SUFFIX] = label;\n }\n\n return shape;\n },\n\n /**\n * 绘制完成后的操作,便于用户继承现有的节点、边\n * @param cfg\n * @param group\n * @param keyShape\n */\n afterDraw: function afterDraw(cfg, group, keyShape) {},\n drawShape: function drawShape(cfg, group) {\n return null;\n },\n drawLabel: function drawLabel(cfg, group) {\n var defaultLabelCfg = (this.mergeStyle || this.getOptions(cfg) || {}).labelCfg; // image的情况下有可能为null\n\n var labelCfg = defaultLabelCfg || {};\n var labelStyle = this.getLabelStyle(cfg, labelCfg, group);\n var rotate = labelStyle.rotate;\n delete labelStyle.rotate;\n var label = group.addShape('text', {\n attrs: labelStyle,\n draggable: true,\n className: 'text-shape',\n name: 'text-shape'\n });\n group['shapeMap']['text-shape'] = label;\n\n if (!isNaN(rotate) && rotate !== '') {\n var labelBBox = label.getBBox();\n var labelMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n\n if (labelStyle.rotateCenter) {\n switch (labelStyle.rotateCenter) {\n case 'center':\n labelMatrix = transform(labelMatrix, [['t', -labelBBox.width / 2, -labelBBox.height / 2], ['r', rotate], ['t', labelBBox.width / 2, labelBBox.height / 2]]);\n break;\n\n case 'lefttop':\n labelMatrix = transform(labelMatrix, [['t', -labelStyle.x, -labelStyle.y], ['r', rotate], ['t', labelStyle.x, labelStyle.y]]);\n break;\n\n case 'leftcenter':\n labelMatrix = transform(labelMatrix, [['t', -labelStyle.x, -labelStyle.y - labelBBox.height / 2], ['r', rotate], ['t', labelStyle.x, labelStyle.y + labelBBox.height / 2]]);\n break;\n\n default:\n labelMatrix = transform(labelMatrix, [['t', -labelBBox.width / 2, -labelBBox.height / 2], ['r', rotate], ['t', labelBBox.width / 2, labelBBox.height / 2]]);\n break;\n }\n } else {\n labelMatrix = transform(labelMatrix, [['t', -labelStyle.x, -labelStyle.y - labelBBox.height / 2], ['r', rotate], ['t', labelStyle.x, labelStyle.y + labelBBox.height / 2]]);\n }\n\n label.setMatrix(labelMatrix);\n }\n\n if (labelStyle.background) {\n var rect = this.drawLabelBg(cfg, group, label);\n var labelBgClassname = this.itemType + CLS_LABEL_BG_SUFFIX;\n rect.set('classname', labelBgClassname);\n group['shapeMap'][labelBgClassname] = rect;\n label.toFront();\n }\n\n return label;\n },\n drawLabelBg: function drawLabelBg(cfg, group, label) {\n var defaultLabelCfg = this.options.labelCfg;\n var labelCfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])({}, defaultLabelCfg, cfg.labelCfg);\n var style = this.getLabelBgStyleByPosition(label, cfg, labelCfg, group);\n var rect = group.addShape('rect', {\n name: 'text-bg-shape',\n attrs: style\n });\n group['shapeMap']['text-bg-shape'] = rect;\n return rect;\n },\n getLabelStyleByPosition: function getLabelStyleByPosition(cfg, labelCfg, group) {\n return {\n text: cfg.label\n };\n },\n getLabelBgStyleByPosition: function getLabelBgStyleByPosition(label, cfg, labelCfg, group) {\n return {};\n },\n\n /**\n * 获取文本的配置项\n * @param cfg 节点的配置项\n * @param labelCfg 文本的配置项\n * @param group 父容器,label 的定位可能与图形相关\n */\n getLabelStyle: function getLabelStyle(cfg, labelCfg, group) {\n var calculateStyle = this.getLabelStyleByPosition(cfg, labelCfg, group);\n var attrName = this.itemType + \"Label\"; // 取 nodeLabel,edgeLabel 的配置项\n\n var defaultStyle = _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"][attrName] ? _global__WEBPACK_IMPORTED_MODULE_1__[\"default\"][attrName].style : null;\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, defaultStyle), calculateStyle), labelCfg.style);\n },\n\n /**\n * 获取图形的配置项\n * @param cfg\n */\n getShapeStyle: function getShapeStyle(cfg) {\n return cfg.style;\n },\n\n /**\n * 更新节点,包含文本\n * @override\n * @param {Object} cfg 节点/边的配置项\n * @param {G6.Item} item 节点/边\n */\n update: function update(cfg, item, updateType) {\n this.updateShapeStyle(cfg, item, updateType);\n this.updateLabel(cfg, item, updateType);\n },\n updateShapeStyle: function updateShapeStyle(cfg, item, updateType) {\n var _a;\n\n var group = item.getContainer();\n var shape = item.getKeyShape();\n var shapeStyle = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])({}, shape.attr(), cfg.style);\n\n var _loop_1 = function _loop_1(key) {\n var _b;\n\n var style = shapeStyle[key];\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isPlainObject\"])(style)) {\n // 更新图元素样式,支持更新子元素\n var subShape = ((_a = group['shapeMap']) === null || _a === void 0 ? void 0 : _a[key]) || group.find(function (element) {\n return element.get('name') === key;\n });\n subShape === null || subShape === void 0 ? void 0 : subShape.attr(style);\n } else {\n shape.attr((_b = {}, _b[key] = style, _b));\n }\n };\n\n for (var key in shapeStyle) {\n _loop_1(key);\n }\n },\n updateLabel: function updateLabel(cfg, item, updateType) {\n var _a, _b; // 防止 cfg.label = \"\" 的情况\n\n\n if (cfg.label || cfg.label === '') {\n var group = item.getContainer();\n var _c = (this.mergeStyle || this.getOptions({}, updateType) || {}).labelCfg,\n labelCfg = _c === void 0 ? {} : _c;\n var labelClassName_1 = this.itemType + CLS_LABEL_SUFFIX;\n var label = group['shapeMap'][labelClassName_1] || group.find(function (ele) {\n return ele.get('className') === labelClassName_1;\n });\n var labelBgClassname_1 = this.itemType + CLS_LABEL_BG_SUFFIX;\n var labelBg = group['shapeMap'][labelBgClassname_1] || group.find(function (ele) {\n return ele.get('className') === labelBgClassname_1;\n }); // 若传入的新配置中有 label,(用户没传入但原先有 label,label 也会有值)\n\n if (!label) {\n // 若原先不存在 label,则绘制一个新的 label\n var newLabel = this.drawLabel(cfg, group);\n newLabel.set('className', labelClassName_1);\n group['shapeMap'][labelClassName_1] = newLabel;\n } else {\n // 若原先存在 label,则更新样式。与 getLabelStyle 不同在于这里需要融合当前 label 的样式\n // 融合 style 以外的属性:position, offset, ...\n if (!updateType || updateType === 'bbox|label' || this.itemType === 'edge' && updateType !== 'style') {\n labelCfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"deepMix\"])(labelCfg, cfg.labelCfg);\n } // 获取位置信息\n\n\n var calculateStyle = this.getLabelStyleByPosition(cfg, labelCfg, group); // 取 nodeLabel,edgeLabel 的配置项\n\n var cfgStyle = (_a = cfg.labelCfg) === null || _a === void 0 ? void 0 : _a.style; // const cfgBgStyle = labelCfg.style?.background;\n // 需要融合当前\b label 的样式 label.attr()。不再需要全局/默认样式,因为已经应用在当前的 label 上\n\n var labelStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, calculateStyle), cfgStyle);\n\n var rotate = labelStyle.rotate;\n delete labelStyle.rotate; // 计算 label 的旋转矩阵\n\n if (!isNaN(rotate) && rotate !== '') {\n // if G 4.x define the rotateAtStart, use it directly instead of using the following codes\n var rotateMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n rotateMatrix = transform(rotateMatrix, [['t', -labelStyle.x, -labelStyle.y], ['r', rotate], ['t', labelStyle.x, labelStyle.y]]);\n labelStyle.matrix = rotateMatrix;\n label.attr(labelStyle);\n } else {\n if (((_b = label.getMatrix()) === null || _b === void 0 ? void 0 : _b[4]) !== 1) {\n label.resetMatrix();\n }\n\n label.attr(labelStyle);\n }\n\n if (!labelBg) {\n if (labelStyle.background) {\n labelBg = this.drawLabelBg(cfg, group, label);\n labelBg.set('classname', labelBgClassname_1);\n group['shapeMap'][labelBgClassname_1] = labelBg;\n label.toFront();\n }\n } else if (labelStyle.background) {\n var calculateBgStyle = this.getLabelBgStyleByPosition(label, cfg, labelCfg, group);\n var labelBgStyle = calculateBgStyle;\n\n if (!isNaN(rotate) && rotate !== '') {\n var bgRotateMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n bgRotateMatrix = transform(bgRotateMatrix, [['t', -labelBgStyle.x, -labelBgStyle.y], ['r', rotate], ['t', labelBgStyle.x, labelBgStyle.y]]);\n labelBgStyle.matrix = bgRotateMatrix;\n } else {\n labelBg.resetMatrix();\n }\n\n labelBg.attr(labelBgStyle);\n } else {\n group.removeChild(labelBg);\n }\n }\n }\n },\n // update(cfg, item) // 默认不定义\n afterUpdate: function afterUpdate(cfg, item) {},\n\n /**\n * 设置节点的状态,主要是交互状态,业务状态请在 draw 方法中实现\n * 单图形的节点仅考虑 selected、active 状态,有其他状态需求的用户自己复写这个方法\n * @override\n * @param {String} name 状态名称\n * @param {String | Boolean} value 状态值\n * @param {G6.Item} item 节点\n */\n setState: function setState(name, value, item) {\n var _a, _b;\n\n var _c;\n\n var shape = item.get('keyShape');\n if (!shape || shape.destroyed) return;\n var type = item.getType();\n var stateName = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isBoolean\"])(value) ? name : name + \":\" + value;\n var shapeStateStyle = this.getStateStyle(stateName, item);\n var itemStateStyle = item.getStateStyle(stateName); // const originStyle = item.getOriginStyle();\n // 不允许设置一个不存在的状态\n\n if (!itemStateStyle && !shapeStateStyle) {\n return;\n } // 要设置或取消的状态的样式\n // 当没有 state 状态时,默认使用 model.stateStyles 中的样式\n\n\n var styles = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])({}, itemStateStyle || shapeStateStyle);\n var group = item.getContainer(); // 从图元素现有的样式中删除本次要取消的 states 中存在的属性值。使用对象检索更快\n\n var keptAttrs = {\n x: 1,\n y: 1,\n cx: 1,\n cy: 1\n };\n\n if (type === 'combo') {\n keptAttrs.r = 1;\n keptAttrs.width = 1;\n keptAttrs.height = 1;\n }\n\n if (value) {\n var _loop_2 = function _loop_2(key) {\n var _d;\n\n var style = styles[key];\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isPlainObject\"])(style) && !ARROWS.includes(key)) {\n var subShape = ((_c = group['shapeMap']) === null || _c === void 0 ? void 0 : _c[key]) || group.find(function (element) {\n return element.get('name') === key;\n });\n subShape === null || subShape === void 0 ? void 0 : subShape.attr(style);\n } else {\n // 非纯对象,则认为是设置到 keyShape 上面的\n shape.attr((_d = {}, _d[key] = style, _d));\n }\n }; // style 为要设置的状态的样式\n\n\n for (var key in styles) {\n _loop_2(key);\n }\n } else {\n // 所有生效的 state 的样式\n var enableStatesStyle = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_4__[\"cloneBesidesImg\"])(item.getCurrentStatesStyle());\n var model = item.getModel(); // 原始样式\n\n var originStyle_1 = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])({}, model.style, Object(_util_graphic__WEBPACK_IMPORTED_MODULE_4__[\"cloneBesidesImg\"])(item.getOriginStyle()));\n var keyShapeName_1 = shape.get('name'); // cloning shape.attr(), keys.forEach to avoid cloning the img attr, which leads to maximum clone heap #2383\n // const keyShapeStyles = clone(shape.attr())\n\n var shapeAttrs_1 = shape.attr();\n var keyShapeStyles_1 = {};\n Object.keys(shapeAttrs_1).forEach(function (key) {\n if (key === 'img') return;\n var attr = shapeAttrs_1[key];\n\n if (attr && _typeof(attr) === 'object') {\n keyShapeStyles_1[key] = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(attr);\n } else {\n keyShapeStyles_1[key] = attr;\n }\n }); // 已有样式 - 要取消的状态的样式\n\n var filtetDisableStatesStyle = {};\n\n var _loop_3 = function _loop_3(p) {\n var style = styles[p];\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isPlainObject\"])(style) && !ARROWS.includes(p)) {\n var subShape_1 = group['shapeMap'][p] || group.find(function (ele) {\n return ele.get('name') === p;\n });\n\n if (subShape_1) {\n var subShapeStyles_1 = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_4__[\"cloneBesidesImg\"])(subShape_1.attr());\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(style, function (v, key) {\n if (p === keyShapeName_1 && keyShapeStyles_1[key] && !keptAttrs[key]) {\n delete keyShapeStyles_1[key];\n var value_1 = originStyle_1[p][key] || SHAPES_DEFAULT_ATTRS[type][key];\n shape.attr(key, value_1);\n } else if (subShapeStyles_1[key] || subShapeStyles_1[key] === 0) {\n delete subShapeStyles_1[key];\n var value_2 = originStyle_1[p][key] || SHAPES_DEFAULT_ATTRS[type][key];\n subShape_1.attr(key, value_2);\n }\n });\n filtetDisableStatesStyle[p] = subShapeStyles_1;\n }\n } else {\n if (keyShapeStyles_1[p] && !keptAttrs[p]) {\n delete keyShapeStyles_1[p];\n var value_3 = originStyle_1[p] || (originStyle_1[keyShapeName_1] ? originStyle_1[keyShapeName_1][p] : undefined) || SHAPES_DEFAULT_ATTRS[type][p];\n shape.attr(p, value_3);\n }\n }\n }; // styles 为要取消的状态的样式\n\n\n for (var p in styles) {\n _loop_3(p);\n } // 从图元素现有的样式中删除本次要取消的 states 中存在的属性值后,\n // 如果 keyShape 有 name 属性,则 filtetDisableStatesStyle 的格式为 { keyShapeName: {} }\n // 否则为普通对象\n\n\n if (!keyShapeName_1) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])(filtetDisableStatesStyle, keyShapeStyles_1);\n } else {\n filtetDisableStatesStyle[keyShapeName_1] = keyShapeStyles_1;\n }\n\n for (var key in enableStatesStyle) {\n if (keptAttrs[key]) continue;\n var enableStyle = enableStatesStyle[key];\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isPlainObject\"])(enableStyle) || ARROWS.includes(key)) {\n // 把样式属性merge到keyShape中\n if (!keyShapeName_1) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])(originStyle_1, (_a = {}, _a[key] = enableStyle, _a));\n } else {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])(originStyle_1[keyShapeName_1], (_b = {}, _b[key] = enableStyle, _b));\n delete originStyle_1[key];\n }\n\n delete enableStatesStyle[key];\n }\n }\n\n var originstyles = {};\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"deepMix\"])(originstyles, originStyle_1, filtetDisableStatesStyle, enableStatesStyle);\n var keyShapeSetted = false;\n\n var _loop_4 = function _loop_4(originKey) {\n var _e, _f;\n\n var style = originstyles[originKey];\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isPlainObject\"])(style) && !ARROWS.includes(originKey)) {\n var subShape = group['shapeMap'][originKey] || group.find(function (ele) {\n return ele.get('name') === originKey;\n });\n\n if (subShape) {\n // The text's position and matrix is not allowed to be affected by states\n if (subShape.get('type') === 'text') {\n delete style.x;\n delete style.y;\n delete style.matrix;\n }\n\n if (originKey === keyShapeName_1) {\n if (type === 'combo') {\n delete style.r;\n delete style.width;\n delete style.height;\n }\n\n keyShapeSetted = true;\n }\n\n subShape.attr(style);\n }\n } else if (!keyShapeSetted) {\n var value_4 = style || SHAPES_DEFAULT_ATTRS[type][originKey]; // 当更新 combo 状态时,当不存在 keyShapeName 时候,则认为是设置到 keyShape 上面的\n\n if (type === 'combo') {\n if (!keyShapeName_1) {\n shape.attr((_e = {}, _e[originKey] = value_4, _e));\n }\n } else {\n shape.attr((_f = {}, _f[originKey] = value_4, _f));\n }\n }\n };\n\n for (var originKey in originstyles) {\n _loop_4(originKey);\n }\n }\n },\n\n /**\n * 获取不同状态下的样式\n *\n * @param {string} name 状态名称\n * @param {Item} item Node或Edge的实例\n * @return {object} 样式\n */\n getStateStyle: function getStateStyle(name, item) {\n var model = item.getModel();\n var type = item.getType();\n\n var _a = this.getOptions(model),\n stateStyles = _a.stateStyles,\n _b = _a.style,\n style = _b === void 0 ? {} : _b;\n\n var modelStateStyle = model.stateStyles ? model.stateStyles[name] : stateStyles && stateStyles[name];\n\n if (type === 'combo') {\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(modelStateStyle);\n }\n\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"mix\"])({}, style, modelStateStyle);\n },\n\n /**\n * 获取控制点\n * @param {Object} cfg 节点、边的配置项\n * @return {Array|null} 控制点的数组,如果为 null,则没有控制点\n */\n getControlPoints: function getControlPoints(cfg) {\n return cfg.controlPoints;\n },\n\n /**\n * 获取控制点\n * @param {Object} cfg 节点、边的配置项\n * @return {Array|null} 锚点的数组,如果为 null,则没有锚点\n */\n getAnchorPoints: function getAnchorPoints(cfg) {\n var _a, _b;\n\n var anchorPoints = (cfg === null || cfg === void 0 ? void 0 : cfg.anchorPoints) || ((_a = this.getCustomConfig(cfg)) === null || _a === void 0 ? void 0 : _a.anchorPoints) || ((_b = this.options) === null || _b === void 0 ? void 0 : _b.anchorPoints);\n return anchorPoints;\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L3NoYXBlQmFzZS5qcz8zYzY4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSx1QkFBdUIsMkJBQTJCLDJFQUEyRSxrQ0FBa0MsbUJBQW1CLEdBQUcsRUFBRSxPQUFPLGtDQUFrQyw4SEFBOEgsR0FBRyxFQUFFLHFCQUFxQjs7QUFFdlY7QUFDRjtBQUNTO0FBQ3lDO0FBQy9CO0FBQ2xELGdCQUFnQixxREFBRztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLHNDQUFzQzs7QUFFdEM7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiwrQ0FBTTtBQUMxQjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0Esb0JBQW9CLCtDQUFNO0FBQzFCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFdBQVcsMERBQU8sR0FBRywrQ0FBK0M7QUFDcEUsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckIsY0FBYyxRQUFRO0FBQ3RCLGNBQWMsT0FBTztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3REFBd0Q7QUFDeEQ7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLHdFQUF3RSxXQUFXOztBQUVuRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLG1CQUFtQixzREFBRyxHQUFHO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQzs7QUFFM0MsdUJBQXVCLCtDQUFNLGFBQWEsK0NBQU07QUFDaEQsV0FBVyxzREFBUSxDQUFDLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUN4QyxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsUUFBUTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxxQkFBcUIsc0RBQUcsR0FBRzs7QUFFM0I7QUFDQTs7QUFFQTs7QUFFQSxVQUFVLGdFQUFhO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLE9BQU87QUFDUCwyQkFBMkI7QUFDM0I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxlQUFlOzs7QUFHZjtBQUNBO0FBQ0EscURBQXFELG1CQUFtQjtBQUN4RSx1Q0FBdUM7QUFDdkM7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU8sRUFBRTs7QUFFVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiwwREFBTztBQUM1QixTQUFTOzs7QUFHVCxnRkFBZ0Y7O0FBRWhGLHlGQUF5RjtBQUN6Rjs7QUFFQSx5QkFBeUIsc0RBQVEsQ0FBQyxzREFBUSxHQUFHOztBQUU3QztBQUNBLGlDQUFpQzs7QUFFakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTs7QUFFQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLGlEQUFpRDs7QUFFakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckIsY0FBYyxpQkFBaUI7QUFDL0IsY0FBYyxRQUFRO0FBQ3RCO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsNERBQVM7QUFDN0I7QUFDQSx1REFBdUQ7QUFDdkQ7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDs7O0FBR0EsaUJBQWlCLHNEQUFHLEdBQUc7QUFDdkIsb0NBQW9DOztBQUVwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsWUFBWSxnRUFBYTtBQUN6QjtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsU0FBUztBQUNUO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0EsUUFBUTs7O0FBR1I7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsOEJBQThCLHFFQUFlO0FBQzdDLGtDQUFrQzs7QUFFbEMsMEJBQTBCLHNEQUFHLEdBQUcsZUFBZSxxRUFBZTtBQUM5RCw2Q0FBNkM7QUFDN0M7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtDQUFrQyx3REFBSztBQUN2QyxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU8sRUFBRTs7QUFFVDs7QUFFQTtBQUNBOztBQUVBLFlBQVksZ0VBQWE7QUFDekI7QUFDQTtBQUNBLFdBQVc7O0FBRVg7QUFDQSxtQ0FBbUMscUVBQWU7QUFDbEQsWUFBWSx1REFBSTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7OztBQUdSO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsZ0VBQWdFLGlCQUFpQjtBQUNqRjs7O0FBR0E7QUFDQSxRQUFRLHNEQUFHO0FBQ1gsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGFBQWEsZ0VBQWE7QUFDMUI7QUFDQTtBQUNBLFlBQVksc0RBQUcsd0JBQXdCO0FBQ3ZDLFdBQVc7QUFDWCxZQUFZLHNEQUFHLHdDQUF3QztBQUN2RDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE1BQU0sMERBQU87QUFDYjs7QUFFQTtBQUNBOztBQUVBOztBQUVBLFlBQVksZ0VBQWE7QUFDekI7QUFDQTtBQUNBLFdBQVc7O0FBRVg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFNBQVM7QUFDVCx1RUFBdUU7O0FBRXZFO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQSxXQUFXO0FBQ1gsK0JBQStCO0FBQy9CO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsS0FBSztBQUNsQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDOztBQUVsQzs7QUFFQTtBQUNBLGFBQWEsd0RBQUs7QUFDbEI7O0FBRUEsV0FBVyxzREFBRyxHQUFHO0FBQ2pCLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixjQUFjLFdBQVc7QUFDekI7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsV0FBVztBQUN6QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L3NoYXBlQmFzZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCBHbG9iYWwgZnJvbSAnLi4vZ2xvYmFsJztcbmltcG9ydCB7IGV4dCB9IGZyb20gJ0BhbnR2L21hdHJpeC11dGlsJztcbmltcG9ydCB7IGRlZXBNaXgsIGVhY2gsIG1peCwgaXNCb29sZWFuLCBpc1BsYWluT2JqZWN0LCBjbG9uZSB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgY2xvbmVCZXNpZGVzSW1nIH0gZnJvbSAnLi4vdXRpbC9ncmFwaGljJztcbnZhciB0cmFuc2Zvcm0gPSBleHQudHJhbnNmb3JtO1xudmFyIENMU19TSEFQRV9TVUZGSVggPSAnLXNoYXBlJztcbnZhciBDTFNfTEFCRUxfU1VGRklYID0gJy1sYWJlbCc7XG52YXIgQVJST1dTID0gWydzdGFydEFycm93JywgJ2VuZEFycm93J107XG52YXIgU0hBUEVfREVGQVVMVF9BVFRSUyA9IHtcbiAgbGluZVdpZHRoOiAxLFxuICBzdHJva2U6IHVuZGVmaW5lZCxcbiAgZmlsbDogdW5kZWZpbmVkLFxuICBsaW5lQXBwZW5kV2lkdGg6IDEsXG4gIG9wYWNpdHk6IHVuZGVmaW5lZCxcbiAgc3Ryb2tlT3BhY2l0eTogdW5kZWZpbmVkLFxuICBmaWxsT3BhY2l0eTogdW5kZWZpbmVkLFxuICB4OiAwLFxuICB5OiAwLFxuICByOiAxMCxcbiAgd2lkdGg6IDIwLFxuICBoZWlnaHQ6IDIwLFxuICBzaGFkb3dDb2xvcjogdW5kZWZpbmVkLFxuICBzaGFkb3dCbHVyOiAwLFxuICBzaGFkb3dPZmZzZXRYOiAwLFxuICBzaGFkb3dPZmZzZXRZOiAwXG59O1xudmFyIFBBVEhfU0hBUEVfREVGQVVMVF9BVFRSUyA9IHtcbiAgbGluZVdpZHRoOiAxLFxuICBzdHJva2U6ICcjMDAwJyxcbiAgbGluZURhc2g6IHVuZGVmaW5lZCxcbiAgc3RhcnRBcnJvdzogZmFsc2UsXG4gIGVuZEFycm93OiBmYWxzZSxcbiAgb3BhY2l0eTogdW5kZWZpbmVkLFxuICBzdHJva2VPcGFjaXR5OiB1bmRlZmluZWQsXG4gIGZpbGxPcGFjaXR5OiB1bmRlZmluZWQsXG4gIHNoYWRvd0NvbG9yOiB1bmRlZmluZWQsXG4gIHNoYWRvd0JsdXI6IDAsXG4gIHNoYWRvd09mZnNldFg6IDAsXG4gIHNoYWRvd09mZnNldFk6IDBcbn07XG52YXIgU0hBUEVTX0RFRkFVTFRfQVRUUlMgPSB7XG4gIGVkZ2U6IFBBVEhfU0hBUEVfREVGQVVMVF9BVFRSUyxcbiAgbm9kZTogU0hBUEVfREVGQVVMVF9BVFRSUyxcbiAgY29tYm86IFNIQVBFX0RFRkFVTFRfQVRUUlNcbn07XG5leHBvcnQgdmFyIENMU19MQUJFTF9CR19TVUZGSVggPSAnLWxhYmVsLWJnJzsgLy8g5Y2V5LiqIHNoYXBlIOW4puacieS4gOS4qiBsYWJlbO+8jOWFseeUqOi/meauteS7o+eggVxuXG5leHBvcnQgdmFyIHNoYXBlQmFzZSA9IHtcbiAgLy8g6buY6K6k5qC35byP5Y+K6YWN572uXG4gIG9wdGlvbnM6IHtcbiAgICBsYWJlbENmZzoge1xuICAgICAgc3R5bGU6IHtcbiAgICAgICAgZm9udEZhbWlseTogR2xvYmFsLndpbmRvd0ZvbnRGYW1pbHlcbiAgICAgIH1cbiAgICB9LFxuICAgIGRlc2NyaXB0aW9uQ2ZnOiB7XG4gICAgICBzdHlsZToge1xuICAgICAgICBmb250RmFtaWx5OiBHbG9iYWwud2luZG93Rm9udEZhbWlseVxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgaXRlbVR5cGU6ICcnLFxuXG4gIC8qKlxuICAgKiDlvaLnirbnmoTnsbvlnovvvIzkvovlpoIgY2lyY2xl77yMZWxsaXBzZe+8jHBvbHlsaW5lLi4uXG4gICAqL1xuICB0eXBlOiAnJyxcbiAgZ2V0Q3VzdG9tQ29uZmlnOiBmdW5jdGlvbiBnZXRDdXN0b21Db25maWcoY2ZnKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9LFxuICBnZXRPcHRpb25zOiBmdW5jdGlvbiBnZXRPcHRpb25zKGNmZywgdXBkYXRlVHlwZSkge1xuICAgIGlmICh1cGRhdGVUeXBlID09PSAnbW92ZScgfHwgKHVwZGF0ZVR5cGUgPT09IG51bGwgfHwgdXBkYXRlVHlwZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogdXBkYXRlVHlwZS5pbmNsdWRlcygnYmJveCcpKSkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIHJldHVybiBkZWVwTWl4KHt9LCB0aGlzLm9wdGlvbnMsIHRoaXMuZ2V0Q3VzdG9tQ29uZmlnKGNmZykgfHwge30sIGNmZyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOe7mOWItuiKgueCuS/ovrnvvIzljIXlkKvmlofmnKxcbiAgICogQG92ZXJyaWRlXG4gICAqIEBwYXJhbSAge09iamVjdH0gY2ZnIOiKgueCueeahOmFjee9rumhuVxuICAgKiBAcGFyYW0gIHtHLkdyb3VwfSBncm91cCDoioLngrnnmoTlrrnlmahcbiAgICogQHJldHVybiB7SVNoYXBlfSDnu5jliLbnmoTlm77lvaJcbiAgICovXG4gIGRyYXc6IGZ1bmN0aW9uIGRyYXcoY2ZnLCBncm91cCkge1xuICAgIGdyb3VwWydzaGFwZU1hcCddID0ge307XG4gICAgdGhpcy5tZXJnZVN0eWxlID0gdGhpcy5nZXRPcHRpb25zKGNmZyk7XG4gICAgdmFyIHNoYXBlID0gdGhpcy5kcmF3U2hhcGUoY2ZnLCBncm91cCk7XG4gICAgc2hhcGUuc2V0KCdjbGFzc05hbWUnLCB0aGlzLml0ZW1UeXBlICsgQ0xTX1NIQVBFX1NVRkZJWCk7XG4gICAgZ3JvdXBbJ3NoYXBlTWFwJ11bdGhpcy5pdGVtVHlwZSArIENMU19TSEFQRV9TVUZGSVhdID0gc2hhcGU7XG5cbiAgICBpZiAoY2ZnLmxhYmVsKSB7XG4gICAgICB2YXIgbGFiZWwgPSB0aGlzLmRyYXdMYWJlbChjZmcsIGdyb3VwKTtcbiAgICAgIGxhYmVsLnNldCgnY2xhc3NOYW1lJywgdGhpcy5pdGVtVHlwZSArIENMU19MQUJFTF9TVUZGSVgpO1xuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bdGhpcy5pdGVtVHlwZSArIENMU19MQUJFTF9TVUZGSVhdID0gbGFiZWw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNoYXBlO1xuICB9LFxuXG4gIC8qKlxuICAgKiDnu5jliLblrozmiJDlkI7nmoTmk43kvZzvvIzkvr/kuo7nlKjmiLfnu6fmib/njrDmnInnmoToioLngrnjgIHovrlcbiAgICogQHBhcmFtIGNmZ1xuICAgKiBAcGFyYW0gZ3JvdXBcbiAgICogQHBhcmFtIGtleVNoYXBlXG4gICAqL1xuICBhZnRlckRyYXc6IGZ1bmN0aW9uIGFmdGVyRHJhdyhjZmcsIGdyb3VwLCBrZXlTaGFwZSkge30sXG4gIGRyYXdTaGFwZTogZnVuY3Rpb24gZHJhd1NoYXBlKGNmZywgZ3JvdXApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSxcbiAgZHJhd0xhYmVsOiBmdW5jdGlvbiBkcmF3TGFiZWwoY2ZnLCBncm91cCkge1xuICAgIHZhciBkZWZhdWx0TGFiZWxDZmcgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpIHx8IHt9KS5sYWJlbENmZzsgLy8gaW1hZ2XnmoTmg4XlhrXkuIvmnInlj6/og73kuLpudWxsXG5cbiAgICB2YXIgbGFiZWxDZmcgPSBkZWZhdWx0TGFiZWxDZmcgfHwge307XG4gICAgdmFyIGxhYmVsU3R5bGUgPSB0aGlzLmdldExhYmVsU3R5bGUoY2ZnLCBsYWJlbENmZywgZ3JvdXApO1xuICAgIHZhciByb3RhdGUgPSBsYWJlbFN0eWxlLnJvdGF0ZTtcbiAgICBkZWxldGUgbGFiZWxTdHlsZS5yb3RhdGU7XG4gICAgdmFyIGxhYmVsID0gZ3JvdXAuYWRkU2hhcGUoJ3RleHQnLCB7XG4gICAgICBhdHRyczogbGFiZWxTdHlsZSxcbiAgICAgIGRyYWdnYWJsZTogdHJ1ZSxcbiAgICAgIGNsYXNzTmFtZTogJ3RleHQtc2hhcGUnLFxuICAgICAgbmFtZTogJ3RleHQtc2hhcGUnXG4gICAgfSk7XG4gICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ3RleHQtc2hhcGUnXSA9IGxhYmVsO1xuXG4gICAgaWYgKCFpc05hTihyb3RhdGUpICYmIHJvdGF0ZSAhPT0gJycpIHtcbiAgICAgIHZhciBsYWJlbEJCb3ggPSBsYWJlbC5nZXRCQm94KCk7XG4gICAgICB2YXIgbGFiZWxNYXRyaXggPSBbMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMV07XG5cbiAgICAgIGlmIChsYWJlbFN0eWxlLnJvdGF0ZUNlbnRlcikge1xuICAgICAgICBzd2l0Y2ggKGxhYmVsU3R5bGUucm90YXRlQ2VudGVyKSB7XG4gICAgICAgICAgY2FzZSAnY2VudGVyJzpcbiAgICAgICAgICAgIGxhYmVsTWF0cml4ID0gdHJhbnNmb3JtKGxhYmVsTWF0cml4LCBbWyd0JywgLWxhYmVsQkJveC53aWR0aCAvIDIsIC1sYWJlbEJCb3guaGVpZ2h0IC8gMl0sIFsncicsIHJvdGF0ZV0sIFsndCcsIGxhYmVsQkJveC53aWR0aCAvIDIsIGxhYmVsQkJveC5oZWlnaHQgLyAyXV0pO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdsZWZ0dG9wJzpcbiAgICAgICAgICAgIGxhYmVsTWF0cml4ID0gdHJhbnNmb3JtKGxhYmVsTWF0cml4LCBbWyd0JywgLWxhYmVsU3R5bGUueCwgLWxhYmVsU3R5bGUueV0sIFsncicsIHJvdGF0ZV0sIFsndCcsIGxhYmVsU3R5bGUueCwgbGFiZWxTdHlsZS55XV0pO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdsZWZ0Y2VudGVyJzpcbiAgICAgICAgICAgIGxhYmVsTWF0cml4ID0gdHJhbnNmb3JtKGxhYmVsTWF0cml4LCBbWyd0JywgLWxhYmVsU3R5bGUueCwgLWxhYmVsU3R5bGUueSAtIGxhYmVsQkJveC5oZWlnaHQgLyAyXSwgWydyJywgcm90YXRlXSwgWyd0JywgbGFiZWxTdHlsZS54LCBsYWJlbFN0eWxlLnkgKyBsYWJlbEJCb3guaGVpZ2h0IC8gMl1dKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGxhYmVsTWF0cml4ID0gdHJhbnNmb3JtKGxhYmVsTWF0cml4LCBbWyd0JywgLWxhYmVsQkJveC53aWR0aCAvIDIsIC1sYWJlbEJCb3guaGVpZ2h0IC8gMl0sIFsncicsIHJvdGF0ZV0sIFsndCcsIGxhYmVsQkJveC53aWR0aCAvIDIsIGxhYmVsQkJveC5oZWlnaHQgLyAyXV0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxhYmVsTWF0cml4ID0gdHJhbnNmb3JtKGxhYmVsTWF0cml4LCBbWyd0JywgLWxhYmVsU3R5bGUueCwgLWxhYmVsU3R5bGUueSAtIGxhYmVsQkJveC5oZWlnaHQgLyAyXSwgWydyJywgcm90YXRlXSwgWyd0JywgbGFiZWxTdHlsZS54LCBsYWJlbFN0eWxlLnkgKyBsYWJlbEJCb3guaGVpZ2h0IC8gMl1dKTtcbiAgICAgIH1cblxuICAgICAgbGFiZWwuc2V0TWF0cml4KGxhYmVsTWF0cml4KTtcbiAgICB9XG5cbiAgICBpZiAobGFiZWxTdHlsZS5iYWNrZ3JvdW5kKSB7XG4gICAgICB2YXIgcmVjdCA9IHRoaXMuZHJhd0xhYmVsQmcoY2ZnLCBncm91cCwgbGFiZWwpO1xuICAgICAgdmFyIGxhYmVsQmdDbGFzc25hbWUgPSB0aGlzLml0ZW1UeXBlICsgQ0xTX0xBQkVMX0JHX1NVRkZJWDtcbiAgICAgIHJlY3Quc2V0KCdjbGFzc25hbWUnLCBsYWJlbEJnQ2xhc3NuYW1lKTtcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddW2xhYmVsQmdDbGFzc25hbWVdID0gcmVjdDtcbiAgICAgIGxhYmVsLnRvRnJvbnQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbGFiZWw7XG4gIH0sXG4gIGRyYXdMYWJlbEJnOiBmdW5jdGlvbiBkcmF3TGFiZWxCZyhjZmcsIGdyb3VwLCBsYWJlbCkge1xuICAgIHZhciBkZWZhdWx0TGFiZWxDZmcgPSB0aGlzLm9wdGlvbnMubGFiZWxDZmc7XG4gICAgdmFyIGxhYmVsQ2ZnID0gbWl4KHt9LCBkZWZhdWx0TGFiZWxDZmcsIGNmZy5sYWJlbENmZyk7XG4gICAgdmFyIHN0eWxlID0gdGhpcy5nZXRMYWJlbEJnU3R5bGVCeVBvc2l0aW9uKGxhYmVsLCBjZmcsIGxhYmVsQ2ZnLCBncm91cCk7XG4gICAgdmFyIHJlY3QgPSBncm91cC5hZGRTaGFwZSgncmVjdCcsIHtcbiAgICAgIG5hbWU6ICd0ZXh0LWJnLXNoYXBlJyxcbiAgICAgIGF0dHJzOiBzdHlsZVxuICAgIH0pO1xuICAgIGdyb3VwWydzaGFwZU1hcCddWyd0ZXh0LWJnLXNoYXBlJ10gPSByZWN0O1xuICAgIHJldHVybiByZWN0O1xuICB9LFxuICBnZXRMYWJlbFN0eWxlQnlQb3NpdGlvbjogZnVuY3Rpb24gZ2V0TGFiZWxTdHlsZUJ5UG9zaXRpb24oY2ZnLCBsYWJlbENmZywgZ3JvdXApIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGV4dDogY2ZnLmxhYmVsXG4gICAgfTtcbiAgfSxcbiAgZ2V0TGFiZWxCZ1N0eWxlQnlQb3NpdGlvbjogZnVuY3Rpb24gZ2V0TGFiZWxCZ1N0eWxlQnlQb3NpdGlvbihsYWJlbCwgY2ZnLCBsYWJlbENmZywgZ3JvdXApIHtcbiAgICByZXR1cm4ge307XG4gIH0sXG5cbiAgLyoqXG4gICAqIOiOt+WPluaWh+acrOeahOmFjee9rumhuVxuICAgKiBAcGFyYW0gY2ZnIOiKgueCueeahOmFjee9rumhuVxuICAgKiBAcGFyYW0gbGFiZWxDZmcg5paH5pys55qE6YWN572u6aG5XG4gICAqIEBwYXJhbSBncm91cCDniLblrrnlmajvvIxsYWJlbCDnmoTlrprkvY3lj6/og73kuI7lm77lvaLnm7jlhbNcbiAgICovXG4gIGdldExhYmVsU3R5bGU6IGZ1bmN0aW9uIGdldExhYmVsU3R5bGUoY2ZnLCBsYWJlbENmZywgZ3JvdXApIHtcbiAgICB2YXIgY2FsY3VsYXRlU3R5bGUgPSB0aGlzLmdldExhYmVsU3R5bGVCeVBvc2l0aW9uKGNmZywgbGFiZWxDZmcsIGdyb3VwKTtcbiAgICB2YXIgYXR0ck5hbWUgPSB0aGlzLml0ZW1UeXBlICsgXCJMYWJlbFwiOyAvLyDlj5Ygbm9kZUxhYmVs77yMZWRnZUxhYmVsIOeahOmFjee9rumhuVxuXG4gICAgdmFyIGRlZmF1bHRTdHlsZSA9IEdsb2JhbFthdHRyTmFtZV0gPyBHbG9iYWxbYXR0ck5hbWVdLnN0eWxlIDogbnVsbDtcbiAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oX19hc3NpZ24oe30sIGRlZmF1bHRTdHlsZSksIGNhbGN1bGF0ZVN0eWxlKSwgbGFiZWxDZmcuc3R5bGUpO1xuICB9LFxuXG4gIC8qKlxuICAgKiDojrflj5blm77lvaLnmoTphY3nva7poblcbiAgICogQHBhcmFtIGNmZ1xuICAgKi9cbiAgZ2V0U2hhcGVTdHlsZTogZnVuY3Rpb24gZ2V0U2hhcGVTdHlsZShjZmcpIHtcbiAgICByZXR1cm4gY2ZnLnN0eWxlO1xuICB9LFxuXG4gIC8qKlxuICAgKiDmm7TmlrDoioLngrnvvIzljIXlkKvmlofmnKxcbiAgICogQG92ZXJyaWRlXG4gICAqIEBwYXJhbSAge09iamVjdH0gY2ZnIOiKgueCuS/ovrnnmoTphY3nva7poblcbiAgICogQHBhcmFtICB7RzYuSXRlbX0gaXRlbSDoioLngrkv6L65XG4gICAqL1xuICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZShjZmcsIGl0ZW0sIHVwZGF0ZVR5cGUpIHtcbiAgICB0aGlzLnVwZGF0ZVNoYXBlU3R5bGUoY2ZnLCBpdGVtLCB1cGRhdGVUeXBlKTtcbiAgICB0aGlzLnVwZGF0ZUxhYmVsKGNmZywgaXRlbSwgdXBkYXRlVHlwZSk7XG4gIH0sXG4gIHVwZGF0ZVNoYXBlU3R5bGU6IGZ1bmN0aW9uIHVwZGF0ZVNoYXBlU3R5bGUoY2ZnLCBpdGVtLCB1cGRhdGVUeXBlKSB7XG4gICAgdmFyIF9hO1xuXG4gICAgdmFyIGdyb3VwID0gaXRlbS5nZXRDb250YWluZXIoKTtcbiAgICB2YXIgc2hhcGUgPSBpdGVtLmdldEtleVNoYXBlKCk7XG4gICAgdmFyIHNoYXBlU3R5bGUgPSBtaXgoe30sIHNoYXBlLmF0dHIoKSwgY2ZnLnN0eWxlKTtcblxuICAgIHZhciBfbG9vcF8xID0gZnVuY3Rpb24gX2xvb3BfMShrZXkpIHtcbiAgICAgIHZhciBfYjtcblxuICAgICAgdmFyIHN0eWxlID0gc2hhcGVTdHlsZVtrZXldO1xuXG4gICAgICBpZiAoaXNQbGFpbk9iamVjdChzdHlsZSkpIHtcbiAgICAgICAgLy8g5pu05paw5Zu+5YWD57Sg5qC35byP77yM5pSv5oyB5pu05paw5a2Q5YWD57SgXG4gICAgICAgIHZhciBzdWJTaGFwZSA9ICgoX2EgPSBncm91cFsnc2hhcGVNYXAnXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hW2tleV0pIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ25hbWUnKSA9PT0ga2V5O1xuICAgICAgICB9KTtcbiAgICAgICAgc3ViU2hhcGUgPT09IG51bGwgfHwgc3ViU2hhcGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN1YlNoYXBlLmF0dHIoc3R5bGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2hhcGUuYXR0cigoX2IgPSB7fSwgX2Jba2V5XSA9IHN0eWxlLCBfYikpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gc2hhcGVTdHlsZSkge1xuICAgICAgX2xvb3BfMShrZXkpO1xuICAgIH1cbiAgfSxcbiAgdXBkYXRlTGFiZWw6IGZ1bmN0aW9uIHVwZGF0ZUxhYmVsKGNmZywgaXRlbSwgdXBkYXRlVHlwZSkge1xuICAgIHZhciBfYSwgX2I7IC8vIOmYsuatoiBjZmcubGFiZWwgPSBcIlwiIOeahOaDheWGtVxuXG5cbiAgICBpZiAoY2ZnLmxhYmVsIHx8IGNmZy5sYWJlbCA9PT0gJycpIHtcbiAgICAgIHZhciBncm91cCA9IGl0ZW0uZ2V0Q29udGFpbmVyKCk7XG4gICAgICB2YXIgX2MgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyh7fSwgdXBkYXRlVHlwZSkgfHwge30pLmxhYmVsQ2ZnLFxuICAgICAgICAgIGxhYmVsQ2ZnID0gX2MgPT09IHZvaWQgMCA/IHt9IDogX2M7XG4gICAgICB2YXIgbGFiZWxDbGFzc05hbWVfMSA9IHRoaXMuaXRlbVR5cGUgKyBDTFNfTEFCRUxfU1VGRklYO1xuICAgICAgdmFyIGxhYmVsID0gZ3JvdXBbJ3NoYXBlTWFwJ11bbGFiZWxDbGFzc05hbWVfMV0gfHwgZ3JvdXAuZmluZChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgIHJldHVybiBlbGUuZ2V0KCdjbGFzc05hbWUnKSA9PT0gbGFiZWxDbGFzc05hbWVfMTtcbiAgICAgIH0pO1xuICAgICAgdmFyIGxhYmVsQmdDbGFzc25hbWVfMSA9IHRoaXMuaXRlbVR5cGUgKyBDTFNfTEFCRUxfQkdfU1VGRklYO1xuICAgICAgdmFyIGxhYmVsQmcgPSBncm91cFsnc2hhcGVNYXAnXVtsYWJlbEJnQ2xhc3NuYW1lXzFdIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZSkge1xuICAgICAgICByZXR1cm4gZWxlLmdldCgnY2xhc3NOYW1lJykgPT09IGxhYmVsQmdDbGFzc25hbWVfMTtcbiAgICAgIH0pOyAvLyDoi6XkvKDlhaXnmoTmlrDphY3nva7kuK3mnIkgbGFiZWzvvIzvvIjnlKjmiLfmsqHkvKDlhaXkvYbljp/lhYjmnIkgbGFiZWzvvIxsYWJlbCDkuZ/kvJrmnInlgLzvvIlcblxuICAgICAgaWYgKCFsYWJlbCkge1xuICAgICAgICAvLyDoi6Xljp/lhYjkuI3lrZjlnKggbGFiZWzvvIzliJnnu5jliLbkuIDkuKrmlrDnmoQgbGFiZWxcbiAgICAgICAgdmFyIG5ld0xhYmVsID0gdGhpcy5kcmF3TGFiZWwoY2ZnLCBncm91cCk7XG4gICAgICAgIG5ld0xhYmVsLnNldCgnY2xhc3NOYW1lJywgbGFiZWxDbGFzc05hbWVfMSk7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW2xhYmVsQ2xhc3NOYW1lXzFdID0gbmV3TGFiZWw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyDoi6Xljp/lhYjlrZjlnKggbGFiZWzvvIzliJnmm7TmlrDmoLflvI/jgILkuI4gZ2V0TGFiZWxTdHlsZSDkuI3lkIzlnKjkuo7ov5nph4zpnIDopoHono3lkIjlvZPliY0gbGFiZWwg55qE5qC35byPXG4gICAgICAgIC8vIOiejeWQiCBzdHlsZSDku6XlpJbnmoTlsZ7mgKfvvJpwb3NpdGlvbiwgb2Zmc2V0LCAuLi5cbiAgICAgICAgaWYgKCF1cGRhdGVUeXBlIHx8IHVwZGF0ZVR5cGUgPT09ICdiYm94fGxhYmVsJyB8fCB0aGlzLml0ZW1UeXBlID09PSAnZWRnZScgJiYgdXBkYXRlVHlwZSAhPT0gJ3N0eWxlJykge1xuICAgICAgICAgIGxhYmVsQ2ZnID0gZGVlcE1peChsYWJlbENmZywgY2ZnLmxhYmVsQ2ZnKTtcbiAgICAgICAgfSAvLyDojrflj5bkvY3nva7kv6Hmga9cblxuXG4gICAgICAgIHZhciBjYWxjdWxhdGVTdHlsZSA9IHRoaXMuZ2V0TGFiZWxTdHlsZUJ5UG9zaXRpb24oY2ZnLCBsYWJlbENmZywgZ3JvdXApOyAvLyDlj5Ygbm9kZUxhYmVs77yMZWRnZUxhYmVsIOeahOmFjee9rumhuVxuXG4gICAgICAgIHZhciBjZmdTdHlsZSA9IChfYSA9IGNmZy5sYWJlbENmZykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnN0eWxlOyAvLyBjb25zdCBjZmdCZ1N0eWxlID0gbGFiZWxDZmcuc3R5bGU/LmJhY2tncm91bmQ7XG4gICAgICAgIC8vIOmcgOimgeiejeWQiOW9k+WJjVxiIGxhYmVsIOeahOagt+W8jyBsYWJlbC5hdHRyKCnjgILkuI3lho3pnIDopoHlhajlsYAv6buY6K6k5qC35byP77yM5Zug5Li65bey57uP5bqU55So5Zyo5b2T5YmN55qEIGxhYmVsIOS4ilxuXG4gICAgICAgIHZhciBsYWJlbFN0eWxlID0gX19hc3NpZ24oX19hc3NpZ24oe30sIGNhbGN1bGF0ZVN0eWxlKSwgY2ZnU3R5bGUpO1xuXG4gICAgICAgIHZhciByb3RhdGUgPSBsYWJlbFN0eWxlLnJvdGF0ZTtcbiAgICAgICAgZGVsZXRlIGxhYmVsU3R5bGUucm90YXRlOyAvLyDorqHnrpcgbGFiZWwg55qE5peL6L2s55+p6Zi1XG5cbiAgICAgICAgaWYgKCFpc05hTihyb3RhdGUpICYmIHJvdGF0ZSAhPT0gJycpIHtcbiAgICAgICAgICAvLyBpZiBHIDQueCBkZWZpbmUgdGhlIHJvdGF0ZUF0U3RhcnQsIHVzZSBpdCBkaXJlY3RseSBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBmb2xsb3dpbmcgY29kZXNcbiAgICAgICAgICB2YXIgcm90YXRlTWF0cml4ID0gWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuICAgICAgICAgIHJvdGF0ZU1hdHJpeCA9IHRyYW5zZm9ybShyb3RhdGVNYXRyaXgsIFtbJ3QnLCAtbGFiZWxTdHlsZS54LCAtbGFiZWxTdHlsZS55XSwgWydyJywgcm90YXRlXSwgWyd0JywgbGFiZWxTdHlsZS54LCBsYWJlbFN0eWxlLnldXSk7XG4gICAgICAgICAgbGFiZWxTdHlsZS5tYXRyaXggPSByb3RhdGVNYXRyaXg7XG4gICAgICAgICAgbGFiZWwuYXR0cihsYWJlbFN0eWxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoKChfYiA9IGxhYmVsLmdldE1hdHJpeCgpKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2JbNF0pICE9PSAxKSB7XG4gICAgICAgICAgICBsYWJlbC5yZXNldE1hdHJpeCgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGxhYmVsLmF0dHIobGFiZWxTdHlsZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWxhYmVsQmcpIHtcbiAgICAgICAgICBpZiAobGFiZWxTdHlsZS5iYWNrZ3JvdW5kKSB7XG4gICAgICAgICAgICBsYWJlbEJnID0gdGhpcy5kcmF3TGFiZWxCZyhjZmcsIGdyb3VwLCBsYWJlbCk7XG4gICAgICAgICAgICBsYWJlbEJnLnNldCgnY2xhc3NuYW1lJywgbGFiZWxCZ0NsYXNzbmFtZV8xKTtcbiAgICAgICAgICAgIGdyb3VwWydzaGFwZU1hcCddW2xhYmVsQmdDbGFzc25hbWVfMV0gPSBsYWJlbEJnO1xuICAgICAgICAgICAgbGFiZWwudG9Gcm9udCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChsYWJlbFN0eWxlLmJhY2tncm91bmQpIHtcbiAgICAgICAgICB2YXIgY2FsY3VsYXRlQmdTdHlsZSA9IHRoaXMuZ2V0TGFiZWxCZ1N0eWxlQnlQb3NpdGlvbihsYWJlbCwgY2ZnLCBsYWJlbENmZywgZ3JvdXApO1xuICAgICAgICAgIHZhciBsYWJlbEJnU3R5bGUgPSBjYWxjdWxhdGVCZ1N0eWxlO1xuXG4gICAgICAgICAgaWYgKCFpc05hTihyb3RhdGUpICYmIHJvdGF0ZSAhPT0gJycpIHtcbiAgICAgICAgICAgIHZhciBiZ1JvdGF0ZU1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICAgICAgICAgIGJnUm90YXRlTWF0cml4ID0gdHJhbnNmb3JtKGJnUm90YXRlTWF0cml4LCBbWyd0JywgLWxhYmVsQmdTdHlsZS54LCAtbGFiZWxCZ1N0eWxlLnldLCBbJ3InLCByb3RhdGVdLCBbJ3QnLCBsYWJlbEJnU3R5bGUueCwgbGFiZWxCZ1N0eWxlLnldXSk7XG4gICAgICAgICAgICBsYWJlbEJnU3R5bGUubWF0cml4ID0gYmdSb3RhdGVNYXRyaXg7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxhYmVsQmcucmVzZXRNYXRyaXgoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsYWJlbEJnLmF0dHIobGFiZWxCZ1N0eWxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBncm91cC5yZW1vdmVDaGlsZChsYWJlbEJnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgLy8gdXBkYXRlKGNmZywgaXRlbSkgLy8g6buY6K6k5LiN5a6a5LmJXG4gIGFmdGVyVXBkYXRlOiBmdW5jdGlvbiBhZnRlclVwZGF0ZShjZmcsIGl0ZW0pIHt9LFxuXG4gIC8qKlxuICAgKiDorr7nva7oioLngrnnmoTnirbmgIHvvIzkuLvopoHmmK/kuqTkupLnirbmgIHvvIzkuJrliqHnirbmgIHor7flnKggZHJhdyDmlrnms5XkuK3lrp7njrBcbiAgICog5Y2V5Zu+5b2i55qE6IqC54K55LuF6ICD6JmRIHNlbGVjdGVk44CBYWN0aXZlIOeKtuaAge+8jOacieWFtuS7lueKtuaAgemcgOaxgueahOeUqOaIt+iHquW3seWkjeWGmei/meS4quaWueazlVxuICAgKiBAb3ZlcnJpZGVcbiAgICogQHBhcmFtICB7U3RyaW5nfSBuYW1lIOeKtuaAgeWQjeensFxuICAgKiBAcGFyYW0gIHtTdHJpbmcgfCBCb29sZWFufSB2YWx1ZSDnirbmgIHlgLxcbiAgICogQHBhcmFtICB7RzYuSXRlbX0gaXRlbSDoioLngrlcbiAgICovXG4gIHNldFN0YXRlOiBmdW5jdGlvbiBzZXRTdGF0ZShuYW1lLCB2YWx1ZSwgaXRlbSkge1xuICAgIHZhciBfYSwgX2I7XG5cbiAgICB2YXIgX2M7XG5cbiAgICB2YXIgc2hhcGUgPSBpdGVtLmdldCgna2V5U2hhcGUnKTtcbiAgICBpZiAoIXNoYXBlIHx8IHNoYXBlLmRlc3Ryb3llZCkgcmV0dXJuO1xuICAgIHZhciB0eXBlID0gaXRlbS5nZXRUeXBlKCk7XG4gICAgdmFyIHN0YXRlTmFtZSA9IGlzQm9vbGVhbih2YWx1ZSkgPyBuYW1lIDogbmFtZSArIFwiOlwiICsgdmFsdWU7XG4gICAgdmFyIHNoYXBlU3RhdGVTdHlsZSA9IHRoaXMuZ2V0U3RhdGVTdHlsZShzdGF0ZU5hbWUsIGl0ZW0pO1xuICAgIHZhciBpdGVtU3RhdGVTdHlsZSA9IGl0ZW0uZ2V0U3RhdGVTdHlsZShzdGF0ZU5hbWUpOyAvLyBjb25zdCBvcmlnaW5TdHlsZSA9IGl0ZW0uZ2V0T3JpZ2luU3R5bGUoKTtcbiAgICAvLyDkuI3lhYHorrjorr7nva7kuIDkuKrkuI3lrZjlnKjnmoTnirbmgIFcblxuICAgIGlmICghaXRlbVN0YXRlU3R5bGUgJiYgIXNoYXBlU3RhdGVTdHlsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8g6KaB6K6+572u5oiW5Y+W5raI55qE54q25oCB55qE5qC35byPXG4gICAgLy8g5b2T5rKh5pyJIHN0YXRlIOeKtuaAgeaXtu+8jOm7mOiupOS9v+eUqCBtb2RlbC5zdGF0ZVN0eWxlcyDkuK3nmoTmoLflvI9cblxuXG4gICAgdmFyIHN0eWxlcyA9IG1peCh7fSwgaXRlbVN0YXRlU3R5bGUgfHwgc2hhcGVTdGF0ZVN0eWxlKTtcbiAgICB2YXIgZ3JvdXAgPSBpdGVtLmdldENvbnRhaW5lcigpOyAvLyDku47lm77lhYPntKDnjrDmnInnmoTmoLflvI/kuK3liKDpmaTmnKzmrKHopoHlj5bmtojnmoQgc3RhdGVzIOS4reWtmOWcqOeahOWxnuaAp+WAvOOAguS9v+eUqOWvueixoeajgOe0ouabtOW/q1xuXG4gICAgdmFyIGtlcHRBdHRycyA9IHtcbiAgICAgIHg6IDEsXG4gICAgICB5OiAxLFxuICAgICAgY3g6IDEsXG4gICAgICBjeTogMVxuICAgIH07XG5cbiAgICBpZiAodHlwZSA9PT0gJ2NvbWJvJykge1xuICAgICAga2VwdEF0dHJzLnIgPSAxO1xuICAgICAga2VwdEF0dHJzLndpZHRoID0gMTtcbiAgICAgIGtlcHRBdHRycy5oZWlnaHQgPSAxO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdmFyIF9sb29wXzIgPSBmdW5jdGlvbiBfbG9vcF8yKGtleSkge1xuICAgICAgICB2YXIgX2Q7XG5cbiAgICAgICAgdmFyIHN0eWxlID0gc3R5bGVzW2tleV07XG5cbiAgICAgICAgaWYgKGlzUGxhaW5PYmplY3Qoc3R5bGUpICYmICFBUlJPV1MuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgIHZhciBzdWJTaGFwZSA9ICgoX2MgPSBncm91cFsnc2hhcGVNYXAnXSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jW2tleV0pIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50LmdldCgnbmFtZScpID09PSBrZXk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgc3ViU2hhcGUgPT09IG51bGwgfHwgc3ViU2hhcGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN1YlNoYXBlLmF0dHIoc3R5bGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIOmdnue6r+Wvueixoe+8jOWImeiupOS4uuaYr+iuvue9ruWIsCBrZXlTaGFwZSDkuIrpnaLnmoRcbiAgICAgICAgICBzaGFwZS5hdHRyKChfZCA9IHt9LCBfZFtrZXldID0gc3R5bGUsIF9kKSk7XG4gICAgICAgIH1cbiAgICAgIH07IC8vIHN0eWxlIOS4uuimgeiuvue9rueahOeKtuaAgeeahOagt+W8j1xuXG5cbiAgICAgIGZvciAodmFyIGtleSBpbiBzdHlsZXMpIHtcbiAgICAgICAgX2xvb3BfMihrZXkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyDmiYDmnInnlJ/mlYjnmoQgc3RhdGUg55qE5qC35byPXG4gICAgICB2YXIgZW5hYmxlU3RhdGVzU3R5bGUgPSBjbG9uZUJlc2lkZXNJbWcoaXRlbS5nZXRDdXJyZW50U3RhdGVzU3R5bGUoKSk7XG4gICAgICB2YXIgbW9kZWwgPSBpdGVtLmdldE1vZGVsKCk7IC8vIOWOn+Wni+agt+W8j1xuXG4gICAgICB2YXIgb3JpZ2luU3R5bGVfMSA9IG1peCh7fSwgbW9kZWwuc3R5bGUsIGNsb25lQmVzaWRlc0ltZyhpdGVtLmdldE9yaWdpblN0eWxlKCkpKTtcbiAgICAgIHZhciBrZXlTaGFwZU5hbWVfMSA9IHNoYXBlLmdldCgnbmFtZScpOyAvLyBjbG9uaW5nICBzaGFwZS5hdHRyKCksIGtleXMuZm9yRWFjaCB0byBhdm9pZCBjbG9uaW5nIHRoZSBpbWcgYXR0ciwgd2hpY2ggbGVhZHMgdG8gbWF4aW11bSBjbG9uZSBoZWFwICMyMzgzXG4gICAgICAvLyBjb25zdCBrZXlTaGFwZVN0eWxlcyA9IGNsb25lKHNoYXBlLmF0dHIoKSlcblxuICAgICAgdmFyIHNoYXBlQXR0cnNfMSA9IHNoYXBlLmF0dHIoKTtcbiAgICAgIHZhciBrZXlTaGFwZVN0eWxlc18xID0ge307XG4gICAgICBPYmplY3Qua2V5cyhzaGFwZUF0dHJzXzEpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBpZiAoa2V5ID09PSAnaW1nJykgcmV0dXJuO1xuICAgICAgICB2YXIgYXR0ciA9IHNoYXBlQXR0cnNfMVtrZXldO1xuXG4gICAgICAgIGlmIChhdHRyICYmIF90eXBlb2YoYXR0cikgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAga2V5U2hhcGVTdHlsZXNfMVtrZXldID0gY2xvbmUoYXR0cik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAga2V5U2hhcGVTdHlsZXNfMVtrZXldID0gYXR0cjtcbiAgICAgICAgfVxuICAgICAgfSk7IC8vIOW3suacieagt+W8jyAtIOimgeWPlua2iOeahOeKtuaAgeeahOagt+W8j1xuXG4gICAgICB2YXIgZmlsdGV0RGlzYWJsZVN0YXRlc1N0eWxlID0ge307XG5cbiAgICAgIHZhciBfbG9vcF8zID0gZnVuY3Rpb24gX2xvb3BfMyhwKSB7XG4gICAgICAgIHZhciBzdHlsZSA9IHN0eWxlc1twXTtcblxuICAgICAgICBpZiAoaXNQbGFpbk9iamVjdChzdHlsZSkgJiYgIUFSUk9XUy5pbmNsdWRlcyhwKSkge1xuICAgICAgICAgIHZhciBzdWJTaGFwZV8xID0gZ3JvdXBbJ3NoYXBlTWFwJ11bcF0gfHwgZ3JvdXAuZmluZChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlLmdldCgnbmFtZScpID09PSBwO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKHN1YlNoYXBlXzEpIHtcbiAgICAgICAgICAgIHZhciBzdWJTaGFwZVN0eWxlc18xID0gY2xvbmVCZXNpZGVzSW1nKHN1YlNoYXBlXzEuYXR0cigpKTtcbiAgICAgICAgICAgIGVhY2goc3R5bGUsIGZ1bmN0aW9uICh2LCBrZXkpIHtcbiAgICAgICAgICAgICAgaWYgKHAgPT09IGtleVNoYXBlTmFtZV8xICYmIGtleVNoYXBlU3R5bGVzXzFba2V5XSAmJiAha2VwdEF0dHJzW2tleV0pIHtcbiAgICAgICAgICAgICAgICBkZWxldGUga2V5U2hhcGVTdHlsZXNfMVtrZXldO1xuICAgICAgICAgICAgICAgIHZhciB2YWx1ZV8xID0gb3JpZ2luU3R5bGVfMVtwXVtrZXldIHx8IFNIQVBFU19ERUZBVUxUX0FUVFJTW3R5cGVdW2tleV07XG4gICAgICAgICAgICAgICAgc2hhcGUuYXR0cihrZXksIHZhbHVlXzEpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN1YlNoYXBlU3R5bGVzXzFba2V5XSB8fCBzdWJTaGFwZVN0eWxlc18xW2tleV0gPT09IDApIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgc3ViU2hhcGVTdHlsZXNfMVtrZXldO1xuICAgICAgICAgICAgICAgIHZhciB2YWx1ZV8yID0gb3JpZ2luU3R5bGVfMVtwXVtrZXldIHx8IFNIQVBFU19ERUZBVUxUX0FUVFJTW3R5cGVdW2tleV07XG4gICAgICAgICAgICAgICAgc3ViU2hhcGVfMS5hdHRyKGtleSwgdmFsdWVfMik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZmlsdGV0RGlzYWJsZVN0YXRlc1N0eWxlW3BdID0gc3ViU2hhcGVTdHlsZXNfMTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGtleVNoYXBlU3R5bGVzXzFbcF0gJiYgIWtlcHRBdHRyc1twXSkge1xuICAgICAgICAgICAgZGVsZXRlIGtleVNoYXBlU3R5bGVzXzFbcF07XG4gICAgICAgICAgICB2YXIgdmFsdWVfMyA9IG9yaWdpblN0eWxlXzFbcF0gfHwgKG9yaWdpblN0eWxlXzFba2V5U2hhcGVOYW1lXzFdID8gb3JpZ2luU3R5bGVfMVtrZXlTaGFwZU5hbWVfMV1bcF0gOiB1bmRlZmluZWQpIHx8IFNIQVBFU19ERUZBVUxUX0FUVFJTW3R5cGVdW3BdO1xuICAgICAgICAgICAgc2hhcGUuYXR0cihwLCB2YWx1ZV8zKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07IC8vIHN0eWxlcyDkuLropoHlj5bmtojnmoTnirbmgIHnmoTmoLflvI9cblxuXG4gICAgICBmb3IgKHZhciBwIGluIHN0eWxlcykge1xuICAgICAgICBfbG9vcF8zKHApO1xuICAgICAgfSAvLyDku47lm77lhYPntKDnjrDmnInnmoTmoLflvI/kuK3liKDpmaTmnKzmrKHopoHlj5bmtojnmoQgc3RhdGVzIOS4reWtmOWcqOeahOWxnuaAp+WAvOWQju+8jFxuICAgICAgLy8g5aaC5p6cIGtleVNoYXBlIOaciSBuYW1lIOWxnuaAp++8jOWImSBmaWx0ZXREaXNhYmxlU3RhdGVzU3R5bGUg55qE5qC85byP5Li6IHsga2V5U2hhcGVOYW1lOiB7fSB9XG4gICAgICAvLyDlkKbliJnkuLrmma7pgJrlr7nosaFcblxuXG4gICAgICBpZiAoIWtleVNoYXBlTmFtZV8xKSB7XG4gICAgICAgIG1peChmaWx0ZXREaXNhYmxlU3RhdGVzU3R5bGUsIGtleVNoYXBlU3R5bGVzXzEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmlsdGV0RGlzYWJsZVN0YXRlc1N0eWxlW2tleVNoYXBlTmFtZV8xXSA9IGtleVNoYXBlU3R5bGVzXzE7XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGtleSBpbiBlbmFibGVTdGF0ZXNTdHlsZSkge1xuICAgICAgICBpZiAoa2VwdEF0dHJzW2tleV0pIGNvbnRpbnVlO1xuICAgICAgICB2YXIgZW5hYmxlU3R5bGUgPSBlbmFibGVTdGF0ZXNTdHlsZVtrZXldO1xuXG4gICAgICAgIGlmICghaXNQbGFpbk9iamVjdChlbmFibGVTdHlsZSkgfHwgQVJST1dTLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgICAvLyDmiormoLflvI/lsZ7mgKdtZXJnZeWIsGtleVNoYXBl5LitXG4gICAgICAgICAgaWYgKCFrZXlTaGFwZU5hbWVfMSkge1xuICAgICAgICAgICAgbWl4KG9yaWdpblN0eWxlXzEsIChfYSA9IHt9LCBfYVtrZXldID0gZW5hYmxlU3R5bGUsIF9hKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1peChvcmlnaW5TdHlsZV8xW2tleVNoYXBlTmFtZV8xXSwgKF9iID0ge30sIF9iW2tleV0gPSBlbmFibGVTdHlsZSwgX2IpKTtcbiAgICAgICAgICAgIGRlbGV0ZSBvcmlnaW5TdHlsZV8xW2tleV07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZGVsZXRlIGVuYWJsZVN0YXRlc1N0eWxlW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIG9yaWdpbnN0eWxlcyA9IHt9O1xuICAgICAgZGVlcE1peChvcmlnaW5zdHlsZXMsIG9yaWdpblN0eWxlXzEsIGZpbHRldERpc2FibGVTdGF0ZXNTdHlsZSwgZW5hYmxlU3RhdGVzU3R5bGUpO1xuICAgICAgdmFyIGtleVNoYXBlU2V0dGVkID0gZmFsc2U7XG5cbiAgICAgIHZhciBfbG9vcF80ID0gZnVuY3Rpb24gX2xvb3BfNChvcmlnaW5LZXkpIHtcbiAgICAgICAgdmFyIF9lLCBfZjtcblxuICAgICAgICB2YXIgc3R5bGUgPSBvcmlnaW5zdHlsZXNbb3JpZ2luS2V5XTtcblxuICAgICAgICBpZiAoaXNQbGFpbk9iamVjdChzdHlsZSkgJiYgIUFSUk9XUy5pbmNsdWRlcyhvcmlnaW5LZXkpKSB7XG4gICAgICAgICAgdmFyIHN1YlNoYXBlID0gZ3JvdXBbJ3NoYXBlTWFwJ11bb3JpZ2luS2V5XSB8fCBncm91cC5maW5kKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgICAgICAgIHJldHVybiBlbGUuZ2V0KCduYW1lJykgPT09IG9yaWdpbktleTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmIChzdWJTaGFwZSkge1xuICAgICAgICAgICAgLy8gVGhlIHRleHQncyBwb3NpdGlvbiBhbmQgbWF0cml4IGlzIG5vdCBhbGxvd2VkIHRvIGJlIGFmZmVjdGVkIGJ5IHN0YXRlc1xuICAgICAgICAgICAgaWYgKHN1YlNoYXBlLmdldCgndHlwZScpID09PSAndGV4dCcpIHtcbiAgICAgICAgICAgICAgZGVsZXRlIHN0eWxlLng7XG4gICAgICAgICAgICAgIGRlbGV0ZSBzdHlsZS55O1xuICAgICAgICAgICAgICBkZWxldGUgc3R5bGUubWF0cml4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAob3JpZ2luS2V5ID09PSBrZXlTaGFwZU5hbWVfMSkge1xuICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2NvbWJvJykge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBzdHlsZS5yO1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBzdHlsZS53aWR0aDtcbiAgICAgICAgICAgICAgICBkZWxldGUgc3R5bGUuaGVpZ2h0O1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAga2V5U2hhcGVTZXR0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzdWJTaGFwZS5hdHRyKHN0eWxlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoIWtleVNoYXBlU2V0dGVkKSB7XG4gICAgICAgICAgdmFyIHZhbHVlXzQgPSBzdHlsZSB8fCBTSEFQRVNfREVGQVVMVF9BVFRSU1t0eXBlXVtvcmlnaW5LZXldOyAvLyDlvZPmm7TmlrAgY29tYm8g54q25oCB5pe277yM5b2T5LiN5a2Y5ZyoIGtleVNoYXBlTmFtZSDml7blgJnvvIzliJnorqTkuLrmmK/orr7nva7liLAga2V5U2hhcGUg5LiK6Z2i55qEXG5cbiAgICAgICAgICBpZiAodHlwZSA9PT0gJ2NvbWJvJykge1xuICAgICAgICAgICAgaWYgKCFrZXlTaGFwZU5hbWVfMSkge1xuICAgICAgICAgICAgICBzaGFwZS5hdHRyKChfZSA9IHt9LCBfZVtvcmlnaW5LZXldID0gdmFsdWVfNCwgX2UpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2hhcGUuYXR0cigoX2YgPSB7fSwgX2Zbb3JpZ2luS2V5XSA9IHZhbHVlXzQsIF9mKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3IgKHZhciBvcmlnaW5LZXkgaW4gb3JpZ2luc3R5bGVzKSB7XG4gICAgICAgIF9sb29wXzQob3JpZ2luS2V5KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIOiOt+WPluS4jeWQjOeKtuaAgeS4i+eahOagt+W8j1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSDnirbmgIHlkI3np7BcbiAgICogQHBhcmFtIHtJdGVtfSBpdGVtIE5vZGXmiJZFZGdl55qE5a6e5L6LXG4gICAqIEByZXR1cm4ge29iamVjdH0g5qC35byPXG4gICAqL1xuICBnZXRTdGF0ZVN0eWxlOiBmdW5jdGlvbiBnZXRTdGF0ZVN0eWxlKG5hbWUsIGl0ZW0pIHtcbiAgICB2YXIgbW9kZWwgPSBpdGVtLmdldE1vZGVsKCk7XG4gICAgdmFyIHR5cGUgPSBpdGVtLmdldFR5cGUoKTtcblxuICAgIHZhciBfYSA9IHRoaXMuZ2V0T3B0aW9ucyhtb2RlbCksXG4gICAgICAgIHN0YXRlU3R5bGVzID0gX2Euc3RhdGVTdHlsZXMsXG4gICAgICAgIF9iID0gX2Euc3R5bGUsXG4gICAgICAgIHN0eWxlID0gX2IgPT09IHZvaWQgMCA/IHt9IDogX2I7XG5cbiAgICB2YXIgbW9kZWxTdGF0ZVN0eWxlID0gbW9kZWwuc3RhdGVTdHlsZXMgPyBtb2RlbC5zdGF0ZVN0eWxlc1tuYW1lXSA6IHN0YXRlU3R5bGVzICYmIHN0YXRlU3R5bGVzW25hbWVdO1xuXG4gICAgaWYgKHR5cGUgPT09ICdjb21ibycpIHtcbiAgICAgIHJldHVybiBjbG9uZShtb2RlbFN0YXRlU3R5bGUpO1xuICAgIH1cblxuICAgIHJldHVybiBtaXgoe30sIHN0eWxlLCBtb2RlbFN0YXRlU3R5bGUpO1xuICB9LFxuXG4gIC8qKlxuICAgKiDojrflj5bmjqfliLbngrlcbiAgICogQHBhcmFtICB7T2JqZWN0fSBjZmcg6IqC54K544CB6L6555qE6YWN572u6aG5XG4gICAqIEByZXR1cm4ge0FycmF5fG51bGx9IOaOp+WItueCueeahOaVsOe7hCzlpoLmnpzkuLogbnVsbO+8jOWImeayoeacieaOp+WItueCuVxuICAgKi9cbiAgZ2V0Q29udHJvbFBvaW50czogZnVuY3Rpb24gZ2V0Q29udHJvbFBvaW50cyhjZmcpIHtcbiAgICByZXR1cm4gY2ZnLmNvbnRyb2xQb2ludHM7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOiOt+WPluaOp+WItueCuVxuICAgKiBAcGFyYW0gIHtPYmplY3R9IGNmZyDoioLngrnjgIHovrnnmoTphY3nva7poblcbiAgICogQHJldHVybiB7QXJyYXl8bnVsbH0g6ZSa54K555qE5pWw57uELOWmguaenOS4uiBudWxs77yM5YiZ5rKh5pyJ6ZSa54K5XG4gICAqL1xuICBnZXRBbmNob3JQb2ludHM6IGZ1bmN0aW9uIGdldEFuY2hvclBvaW50cyhjZmcpIHtcbiAgICB2YXIgX2EsIF9iO1xuXG4gICAgdmFyIGFuY2hvclBvaW50cyA9IChjZmcgPT09IG51bGwgfHwgY2ZnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjZmcuYW5jaG9yUG9pbnRzKSB8fCAoKF9hID0gdGhpcy5nZXRDdXN0b21Db25maWcoY2ZnKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmFuY2hvclBvaW50cykgfHwgKChfYiA9IHRoaXMub3B0aW9ucykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmFuY2hvclBvaW50cyk7XG4gICAgcmV0dXJuIGFuY2hvclBvaW50cztcbiAgfVxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shapeBase.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/xml.js":
/*!***************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/xml.js ***!
\***************************************************************************/
/*! exports provided: xmlDataRenderer, parseXML, getBBox, generateTarget, compareTwoTarget, createNodeFromXML */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"xmlDataRenderer\", function() { return xmlDataRenderer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseXML\", function() { return parseXML; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBox\", function() { return getBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"generateTarget\", function() { return generateTarget; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"compareTwoTarget\", function() { return compareTwoTarget; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createNodeFromXML\", function() { return createNodeFromXML; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util_graphic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/graphic */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/graphic.js\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * @fileOverview 从xml建立自定义Node,包含update\n * @author xuzhi.mxz@antfin.com\n */\n\n\n\n/**\n * 一种更宽松的JSON 解析,如果遇到不符合规范的字段会直接转为字符串\n * @param text json 内容\n */\n\nfunction looseJSONParse(text) {\n if (typeof text !== 'string') {\n return text;\n }\n\n var safeParse = function safeParse(str) {\n if (typeof str !== 'string') {\n return str;\n }\n\n try {\n return JSON.parse(str.trim());\n } catch (e) {\n return str.trim();\n }\n };\n\n var firstAttempt = safeParse(text);\n\n if (typeof firstAttempt !== 'string') {\n return firstAttempt;\n }\n\n var tail = function tail(arr) {\n return arr[arr.length - 1];\n };\n\n var str = text.trim();\n var objectStack = [];\n var syntaxStack = [];\n\n var isLastPair = function isLastPair() {\n var syntaxes = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n syntaxes[_i] = arguments[_i];\n }\n\n return syntaxes.some(function (syntax) {\n return tail(syntaxStack) === syntax;\n });\n };\n\n var getValueStore = function getValueStore() {\n return tail(objectStack);\n };\n\n var rst = null;\n var i = 0;\n var temp = '';\n\n while (i < str.length) {\n var nowChar = str[i];\n var isInString = isLastPair('\"', \"'\");\n\n if (!isInString && !nowChar.trim()) {\n i += 1;\n continue;\n }\n\n var isLastTranslate = str[i - 1] === '\\\\';\n var isInObject = isLastPair('}');\n var isInArray = isLastPair(']');\n var isWaitingValue = isLastPair(',');\n var tempArr = getValueStore();\n\n if (isInString) {\n if (tail(syntaxStack) === nowChar && !isLastTranslate) {\n syntaxStack.pop();\n var value = safeParse(temp);\n tempArr.push(value);\n rst = value;\n temp = '';\n } else {\n temp += nowChar;\n }\n } else if (isInArray && nowChar === ',') {\n if (temp) {\n tempArr.push(safeParse(temp));\n temp = '';\n }\n } else if (isInObject && nowChar === ':') {\n syntaxStack.push(',');\n\n if (temp) {\n tempArr.push(temp);\n temp = '';\n }\n } else if (isWaitingValue && nowChar === ',') {\n if (temp) {\n tempArr.push(safeParse(temp));\n temp = '';\n }\n\n syntaxStack.pop();\n } else if (nowChar === '}' && (isInObject || isWaitingValue)) {\n if (temp) {\n tempArr.push(safeParse(temp));\n temp = '';\n }\n\n if (isWaitingValue) {\n syntaxStack.pop();\n }\n\n var obj = {};\n\n for (var c = 1; c < tempArr.length; c += 2) {\n obj[tempArr[c - 1]] = tempArr[c];\n }\n\n objectStack.pop();\n\n if (objectStack.length) {\n tail(objectStack).push(obj);\n }\n\n syntaxStack.pop();\n rst = obj;\n } else if (nowChar === ']' && isInArray) {\n if (temp) {\n tempArr.push(safeParse(temp));\n temp = '';\n }\n\n objectStack.pop();\n\n if (objectStack.length) {\n tail(objectStack).push(tempArr);\n }\n\n syntaxStack.pop();\n rst = tempArr;\n } else if (nowChar === '{') {\n objectStack.push([]);\n syntaxStack.push('}');\n } else if (nowChar === '[') {\n objectStack.push([]);\n syntaxStack.push(']');\n } else if (nowChar === '\"') {\n syntaxStack.push('\"');\n } else if (nowChar === \"'\") {\n syntaxStack.push(\"'\");\n } else {\n temp += nowChar;\n }\n\n i += 1;\n }\n\n return rst || temp;\n}\n\nvar keyConvert = function keyConvert(str) {\n return str.split('-').reduce(function (a, b) {\n return a + b.charAt(0).toUpperCase() + b.slice(1);\n });\n};\n/**\n * 简单的一个{{}}模板渲染,不包含任何复杂语法\n * @param xml\n */\n\n\nvar xmlDataRenderer = function xmlDataRenderer(xml) {\n return function (data) {\n var len = xml.length;\n var arr = [];\n var i = 0;\n var tmp = '';\n\n while (i < len) {\n if (xml[i] === '{' && xml[i + 1] === '{') {\n arr.push(tmp);\n tmp = '';\n i += 2;\n } else if (xml[i] === '}' && xml[i + 1] === '}') {\n if (arr.length) {\n var last = arr.pop();\n tmp = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"get\"])(data, tmp, last.endsWith('=') ? \"\\\"{\" + tmp + \"}\\\"\" : tmp);\n arr.push(last + tmp);\n }\n\n i += 2;\n tmp = '';\n } else {\n tmp += xml[i];\n i += 1;\n }\n }\n\n arr.push(tmp);\n return arr.map(function (e, index) {\n return arr[index - 1] && arr[index - 1].endsWith('=') ? \"\\\"{\" + e + \"}\\\"\" : e;\n }).join('');\n };\n};\n/**\n * 解析XML,并转化为相应的JSON结构\n * @param xml xml解析后的节点\n */\n\nfunction parseXML(xml, cfg) {\n var attrs = {};\n var keys = xml.getAttributeNames && xml.getAttributeNames() || [];\n var children = xml.children && Array.from(xml.children).map(function (e) {\n return parseXML(e, cfg);\n });\n var rst = {};\n var tagName = xml.tagName ? xml.tagName.toLowerCase() : 'group';\n\n if (tagName === 'text') {\n attrs.text = xml.innerText;\n }\n\n rst.type = tagName;\n\n if (tagName === 'img') {\n rst.type = 'image';\n }\n\n Array.from(keys).forEach(function (k) {\n var key = keyConvert(k);\n var val = xml.getAttribute(k);\n\n try {\n if (key === 'style' || key === 'attrs') {\n var style = looseJSONParse(val);\n attrs = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, attrs), style);\n } else {\n rst[key] = looseJSONParse(val);\n }\n } catch (e) {\n if (key === 'style') {\n throw e;\n }\n\n rst[key] = val;\n }\n });\n rst.attrs = attrs;\n\n if (cfg && cfg.style && rst.name && _typeof(cfg.style[rst.name]) === 'object') {\n rst.attrs = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, rst.attrs), cfg.style[rst.name]);\n }\n\n if (cfg && cfg.style && rst.keyshape) {\n rst.attrs = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, rst.attrs), cfg.style);\n }\n\n if (children.length) {\n rst.children = children;\n }\n\n return rst;\n}\n/**\n * 根据偏移量和内部节点最终的bounding box来得出该shape最终的bbox\n */\n\nfunction getBBox(node, offset, chilrenBBox) {\n var _a = node.attrs,\n attrs = _a === void 0 ? {} : _a;\n var bbox = {\n x: offset.x || 0,\n y: offset.y || 0,\n width: chilrenBBox.width || 0,\n height: chilrenBBox.height || 0\n };\n var shapeHeight, shapeWidth;\n\n switch (node.type) {\n case 'maker':\n case 'circle':\n if (attrs.r) {\n shapeWidth = 2 * attrs.r;\n shapeHeight = 2 * attrs.r;\n }\n\n break;\n\n case 'text':\n if (attrs.text) {\n shapeWidth = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_2__[\"getTextSize\"])(attrs.text, attrs.fontSize || 12)[0];\n shapeHeight = 16;\n bbox.y += shapeHeight;\n bbox.height = shapeHeight;\n bbox.width = shapeWidth;\n node.attrs = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n fontSize: 12,\n fill: '#000'\n }, attrs);\n }\n\n break;\n\n default:\n if (attrs.width) {\n shapeWidth = attrs.width;\n }\n\n if (attrs.height) {\n shapeHeight = attrs.height;\n }\n\n }\n\n if (shapeHeight >= 0) {\n bbox.height = shapeHeight;\n }\n\n if (shapeWidth >= 0) {\n bbox.width = shapeWidth;\n }\n\n if (attrs.marginTop) {\n bbox.y += attrs.marginTop;\n }\n\n if (attrs.marginLeft) {\n bbox.x += attrs.marginLeft;\n }\n\n return bbox;\n}\n/**\n * 把从xml计算出的结构填上位置信息,补全attrs\n * @param target\n * @param lastOffset\n */\n\nfunction generateTarget(target, lastOffset) {\n var _a;\n\n if (lastOffset === void 0) {\n lastOffset = {\n x: 0,\n y: 0\n };\n }\n\n var defaultBbox = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n width: 0,\n height: 0\n }, lastOffset);\n\n if ((_a = target.children) === null || _a === void 0 ? void 0 : _a.length) {\n var _b = target.attrs,\n attrs = _b === void 0 ? {} : _b;\n var marginTop = attrs.marginTop;\n\n var offset = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, lastOffset);\n\n if (marginTop) {\n offset.y += marginTop;\n }\n\n for (var index = 0; index < target.children.length; index++) {\n target.children[index].attrs.key = (attrs.key || 'root') + \" -\" + index + \" \";\n var node = generateTarget(target.children[index], offset);\n\n if (node.bbox) {\n var bbox = node.bbox;\n\n if (node.attrs.next === 'inline') {\n offset.x += node.bbox.width;\n } else {\n offset.y += node.bbox.height;\n }\n\n if (bbox.width + bbox.x > defaultBbox.width) {\n defaultBbox.width = bbox.width + bbox.x;\n }\n\n if (bbox.height + bbox.y > defaultBbox.height) {\n defaultBbox.height = bbox.height + bbox.y;\n }\n }\n }\n }\n\n target.bbox = getBBox(target, lastOffset, defaultBbox);\n target.attrs = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, target.attrs), target.bbox);\n return target;\n}\n/**\n * 对比前后两个最终计算出来的node,并对比出最小改动,\n * 动作: 'add' 添加节点 | ’delete‘ 删除节点 | ’change‘ 改变节点attrs | 'restructure' 重构节点\n * @param nowTarget\n * @param formerTarget\n */\n\nfunction compareTwoTarget(nowTarget, formerTarget) {\n var _a, _b, _c, _d;\n\n var type = (nowTarget || {}).type;\n var key = ((formerTarget === null || formerTarget === void 0 ? void 0 : formerTarget.attrs) || {}).key;\n\n if (key && nowTarget) {\n nowTarget.attrs.key = key;\n }\n\n if (!nowTarget && formerTarget) {\n return {\n action: 'delete',\n val: formerTarget,\n type: type,\n key: key\n };\n }\n\n if (nowTarget && !formerTarget) {\n return {\n action: 'add',\n val: nowTarget,\n type: type\n };\n }\n\n if (!nowTarget && !formerTarget) {\n return {\n action: 'same',\n type: type\n };\n }\n\n var children = [];\n\n if (((_a = nowTarget.children) === null || _a === void 0 ? void 0 : _a.length) > 0 || ((_b = formerTarget.children) === null || _b === void 0 ? void 0 : _b.length) > 0) {\n var length_1 = Math.max((_c = nowTarget.children) === null || _c === void 0 ? void 0 : _c.length, (_d = formerTarget.children) === null || _d === void 0 ? void 0 : _d.length);\n var formerChilren = formerTarget.children || [];\n var nowChilren = nowTarget.children || [];\n\n for (var index = 0; index < length_1; index += 1) {\n children.push(compareTwoTarget(nowChilren[index], formerChilren[index]));\n }\n }\n\n var formerKeys = Object.keys(formerTarget.attrs);\n var nowKeys = Object.keys(nowTarget.attrs);\n\n if (formerTarget.type !== nowTarget.type) {\n return {\n action: 'restructure',\n nowTarget: nowTarget,\n formerTarget: formerTarget,\n key: key,\n children: children\n };\n }\n\n if (formerKeys.filter(function (e) {\n return e !== 'children';\n }).some(function (e) {\n return nowTarget.attrs[e] !== formerTarget.attrs[e] || !nowKeys.includes(e);\n })) {\n return {\n action: 'change',\n val: nowTarget,\n children: children,\n type: type,\n key: key\n };\n }\n\n return {\n action: 'same',\n children: children,\n type: type,\n key: key\n };\n}\n/**\n * 根据xml或者返回xml的函数构建自定义节点的结构\n * @param gen\n */\n\nfunction createNodeFromXML(gen) {\n var structures = {};\n\n var compileXML = function compileXML(cfg) {\n var rawStr = typeof gen === 'function' ? gen(cfg) : gen;\n var target = xmlDataRenderer(rawStr)(cfg);\n var xmlParser = document.createElement('div');\n xmlParser.innerHTML = target;\n var xml = xmlParser.children[0];\n var result = generateTarget(parseXML(xml, cfg));\n xmlParser.remove();\n return result;\n };\n\n return {\n draw: function draw(cfg, group) {\n var resultTarget = compileXML(cfg);\n var keyshape = group;\n\n var renderTarget = function renderTarget(target) {\n var _a = target.attrs,\n attrs = _a === void 0 ? {} : _a,\n bbox = target.bbox,\n type = target.type,\n children = target.children,\n rest = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(target, [\"attrs\", \"bbox\", \"type\", \"children\"]);\n\n if (target.type !== 'group') {\n var shape = group.addShape(target.type, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n attrs: attrs,\n origin: {\n bbox: bbox,\n type: type,\n children: children\n }\n }, rest));\n\n if (target.keyshape) {\n keyshape = shape;\n }\n }\n\n if (target.children) {\n target.children.forEach(function (n) {\n return renderTarget(n);\n });\n }\n };\n\n renderTarget(resultTarget);\n structures[cfg.id] = [resultTarget];\n return keyshape;\n },\n update: function update(cfg, node) {\n if (!structures[cfg.id]) {\n structures[cfg.id] = [];\n }\n\n var container = node.getContainer();\n var children = container.get('children');\n var newTarget = compileXML(cfg);\n var lastTarget = structures[cfg.id].pop();\n var diffResult = compareTwoTarget(newTarget, lastTarget);\n\n var addShape = function addShape(shape) {\n var _a;\n\n if (shape.type !== 'group') {\n container.addShape(shape.type, {\n attrs: shape.attrs\n });\n }\n\n if ((_a = shape.children) === null || _a === void 0 ? void 0 : _a.length) {\n shape.children.map(function (e) {\n return addShape(e);\n });\n }\n };\n\n var delShape = function delShape(shape) {\n var _a;\n\n var targetShape = children.find(function (e) {\n return e.attrs.key === shape.attrs.key;\n });\n\n if (targetShape) {\n container.removeChild(targetShape);\n }\n\n if ((_a = shape.children) === null || _a === void 0 ? void 0 : _a.length) {\n shape.children.map(function (e) {\n return delShape(e);\n });\n }\n };\n\n var updateTarget = function updateTarget(target) {\n var key = target.key;\n\n if (target.type !== 'group') {\n var targetShape = children.find(function (e) {\n return e.attrs.key === key;\n });\n\n switch (target.action) {\n case 'change':\n if (targetShape) {\n var originAttr = target.val.keyshape ? node.getOriginStyle() : {};\n targetShape.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, originAttr), target.val.attrs));\n }\n\n break;\n\n case 'add':\n addShape(target.val);\n break;\n\n case 'delete':\n delShape(target.val);\n break;\n\n case 'restructure':\n delShape(target.formerTarget);\n addShape(target.nowTarget);\n break;\n\n default:\n break;\n }\n }\n\n if (target.children) {\n target.children.forEach(function (n) {\n return updateTarget(n);\n });\n }\n };\n\n updateTarget(diffResult);\n structures[cfg.id].push(newTarget);\n },\n getAnchorPoints: function getAnchorPoints() {\n return [[0, 0.5], [1, 0.5], [0.5, 1], [0.5, 0]];\n }\n };\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L3htbC5qcz9kZGIyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsdUJBQXVCLDJCQUEyQiwyRUFBMkUsa0NBQWtDLG1CQUFtQixHQUFHLEVBQUUsT0FBTyxrQ0FBa0MsOEhBQThILEdBQUcsRUFBRSxxQkFBcUI7O0FBRXhYO0FBQ0E7QUFDQTtBQUNBO0FBQ3lDO0FBQ1I7QUFDYTtBQUM5QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLG9CQUFvQix1QkFBdUI7QUFDM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSyx3QkFBd0I7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBLHFCQUFxQixvQkFBb0I7QUFDekM7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUssd0JBQXdCO0FBQzdCO0FBQ0EseUJBQXlCO0FBQ3pCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7OztBQUdPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHVCQUF1QixzQkFBc0I7QUFDN0M7QUFDQTtBQUNBO0FBQ0EsT0FBTyx1QkFBdUIsc0JBQXNCO0FBQ3BEO0FBQ0E7QUFDQSxnQkFBZ0Isc0RBQUcscUNBQXFDLFlBQVk7QUFDcEU7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxrRUFBa0UsVUFBVTtBQUM1RSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0Isc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ3BDLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0EsZ0JBQWdCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNwQzs7QUFFQTtBQUNBLGdCQUFnQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDcEM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBLGdDQUFnQztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EscUJBQXFCLGlFQUFXO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLHNEQUFRO0FBQzdCO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0Isc0RBQVE7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxrQ0FBa0M7QUFDbEM7O0FBRUEsaUJBQWlCLHNEQUFRLEdBQUc7O0FBRTVCO0FBQ0E7QUFDQTs7QUFFQSx1QkFBdUIsZ0NBQWdDO0FBQ3ZEO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQOztBQUVBLDZCQUE2QjtBQUM3QixtR0FBbUc7O0FBRW5HO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx1QkFBdUIsa0JBQWtCO0FBQ3pDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxzQ0FBc0M7QUFDdEM7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLG9EQUFNOztBQUV6QjtBQUNBLGtEQUFrRCxzREFBUTtBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXOztBQUVYO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVzs7QUFFWDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQyxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDckQ7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9lbGVtZW50L3htbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IOS7jnhtbOW7uueri+iHquWumuS5iU5vZGXvvIzljIXlkKt1cGRhdGVcbiAqIEBhdXRob3IgeHV6aGkubXh6QGFudGZpbi5jb21cbiAqL1xuaW1wb3J0IHsgX19hc3NpZ24sIF9fcmVzdCB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgZ2V0IH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBnZXRUZXh0U2l6ZSB9IGZyb20gJy4uL3V0aWwvZ3JhcGhpYyc7XG4vKipcbiAqIOS4gOenjeabtOWuveadvueahEpTT04g6Kej5p6Q77yM5aaC5p6c6YGH5Yiw5LiN56ym5ZCI6KeE6IyD55qE5a2X5q615Lya55u05o6l6L2s5Li65a2X56ym5LiyXG4gKiBAcGFyYW0gdGV4dCBqc29uIOWGheWuuVxuICovXG5cbmZ1bmN0aW9uIGxvb3NlSlNPTlBhcnNlKHRleHQpIHtcbiAgaWYgKHR5cGVvZiB0ZXh0ICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB0ZXh0O1xuICB9XG5cbiAgdmFyIHNhZmVQYXJzZSA9IGZ1bmN0aW9uIHNhZmVQYXJzZShzdHIpIHtcbiAgICBpZiAodHlwZW9mIHN0ciAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBzdHI7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKHN0ci50cmltKCkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBzdHIudHJpbSgpO1xuICAgIH1cbiAgfTtcblxuICB2YXIgZmlyc3RBdHRlbXB0ID0gc2FmZVBhcnNlKHRleHQpO1xuXG4gIGlmICh0eXBlb2YgZmlyc3RBdHRlbXB0ICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmaXJzdEF0dGVtcHQ7XG4gIH1cblxuICB2YXIgdGFpbCA9IGZ1bmN0aW9uIHRhaWwoYXJyKSB7XG4gICAgcmV0dXJuIGFyclthcnIubGVuZ3RoIC0gMV07XG4gIH07XG5cbiAgdmFyIHN0ciA9IHRleHQudHJpbSgpO1xuICB2YXIgb2JqZWN0U3RhY2sgPSBbXTtcbiAgdmFyIHN5bnRheFN0YWNrID0gW107XG5cbiAgdmFyIGlzTGFzdFBhaXIgPSBmdW5jdGlvbiBpc0xhc3RQYWlyKCkge1xuICAgIHZhciBzeW50YXhlcyA9IFtdO1xuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHN5bnRheGVzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHN5bnRheGVzLnNvbWUoZnVuY3Rpb24gKHN5bnRheCkge1xuICAgICAgcmV0dXJuIHRhaWwoc3ludGF4U3RhY2spID09PSBzeW50YXg7XG4gICAgfSk7XG4gIH07XG5cbiAgdmFyIGdldFZhbHVlU3RvcmUgPSBmdW5jdGlvbiBnZXRWYWx1ZVN0b3JlKCkge1xuICAgIHJldHVybiB0YWlsKG9iamVjdFN0YWNrKTtcbiAgfTtcblxuICB2YXIgcnN0ID0gbnVsbDtcbiAgdmFyIGkgPSAwO1xuICB2YXIgdGVtcCA9ICcnO1xuXG4gIHdoaWxlIChpIDwgc3RyLmxlbmd0aCkge1xuICAgIHZhciBub3dDaGFyID0gc3RyW2ldO1xuICAgIHZhciBpc0luU3RyaW5nID0gaXNMYXN0UGFpcignXCInLCBcIidcIik7XG5cbiAgICBpZiAoIWlzSW5TdHJpbmcgJiYgIW5vd0NoYXIudHJpbSgpKSB7XG4gICAgICBpICs9IDE7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB2YXIgaXNMYXN0VHJhbnNsYXRlID0gc3RyW2kgLSAxXSA9PT0gJ1xcXFwnO1xuICAgIHZhciBpc0luT2JqZWN0ID0gaXNMYXN0UGFpcignfScpO1xuICAgIHZhciBpc0luQXJyYXkgPSBpc0xhc3RQYWlyKCddJyk7XG4gICAgdmFyIGlzV2FpdGluZ1ZhbHVlID0gaXNMYXN0UGFpcignLCcpO1xuICAgIHZhciB0ZW1wQXJyID0gZ2V0VmFsdWVTdG9yZSgpO1xuXG4gICAgaWYgKGlzSW5TdHJpbmcpIHtcbiAgICAgIGlmICh0YWlsKHN5bnRheFN0YWNrKSA9PT0gbm93Q2hhciAmJiAhaXNMYXN0VHJhbnNsYXRlKSB7XG4gICAgICAgIHN5bnRheFN0YWNrLnBvcCgpO1xuICAgICAgICB2YXIgdmFsdWUgPSBzYWZlUGFyc2UodGVtcCk7XG4gICAgICAgIHRlbXBBcnIucHVzaCh2YWx1ZSk7XG4gICAgICAgIHJzdCA9IHZhbHVlO1xuICAgICAgICB0ZW1wID0gJyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0ZW1wICs9IG5vd0NoYXI7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc0luQXJyYXkgJiYgbm93Q2hhciA9PT0gJywnKSB7XG4gICAgICBpZiAodGVtcCkge1xuICAgICAgICB0ZW1wQXJyLnB1c2goc2FmZVBhcnNlKHRlbXApKTtcbiAgICAgICAgdGVtcCA9ICcnO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNJbk9iamVjdCAmJiBub3dDaGFyID09PSAnOicpIHtcbiAgICAgIHN5bnRheFN0YWNrLnB1c2goJywnKTtcblxuICAgICAgaWYgKHRlbXApIHtcbiAgICAgICAgdGVtcEFyci5wdXNoKHRlbXApO1xuICAgICAgICB0ZW1wID0gJyc7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1dhaXRpbmdWYWx1ZSAmJiBub3dDaGFyID09PSAnLCcpIHtcbiAgICAgIGlmICh0ZW1wKSB7XG4gICAgICAgIHRlbXBBcnIucHVzaChzYWZlUGFyc2UodGVtcCkpO1xuICAgICAgICB0ZW1wID0gJyc7XG4gICAgICB9XG5cbiAgICAgIHN5bnRheFN0YWNrLnBvcCgpO1xuICAgIH0gZWxzZSBpZiAobm93Q2hhciA9PT0gJ30nICYmIChpc0luT2JqZWN0IHx8IGlzV2FpdGluZ1ZhbHVlKSkge1xuICAgICAgaWYgKHRlbXApIHtcbiAgICAgICAgdGVtcEFyci5wdXNoKHNhZmVQYXJzZSh0ZW1wKSk7XG4gICAgICAgIHRlbXAgPSAnJztcbiAgICAgIH1cblxuICAgICAgaWYgKGlzV2FpdGluZ1ZhbHVlKSB7XG4gICAgICAgIHN5bnRheFN0YWNrLnBvcCgpO1xuICAgICAgfVxuXG4gICAgICB2YXIgb2JqID0ge307XG5cbiAgICAgIGZvciAodmFyIGMgPSAxOyBjIDwgdGVtcEFyci5sZW5ndGg7IGMgKz0gMikge1xuICAgICAgICBvYmpbdGVtcEFycltjIC0gMV1dID0gdGVtcEFycltjXTtcbiAgICAgIH1cblxuICAgICAgb2JqZWN0U3RhY2sucG9wKCk7XG5cbiAgICAgIGlmIChvYmplY3RTdGFjay5sZW5ndGgpIHtcbiAgICAgICAgdGFpbChvYmplY3RTdGFjaykucHVzaChvYmopO1xuICAgICAgfVxuXG4gICAgICBzeW50YXhTdGFjay5wb3AoKTtcbiAgICAgIHJzdCA9IG9iajtcbiAgICB9IGVsc2UgaWYgKG5vd0NoYXIgPT09ICddJyAmJiBpc0luQXJyYXkpIHtcbiAgICAgIGlmICh0ZW1wKSB7XG4gICAgICAgIHRlbXBBcnIucHVzaChzYWZlUGFyc2UodGVtcCkpO1xuICAgICAgICB0ZW1wID0gJyc7XG4gICAgICB9XG5cbiAgICAgIG9iamVjdFN0YWNrLnBvcCgpO1xuXG4gICAgICBpZiAob2JqZWN0U3RhY2subGVuZ3RoKSB7XG4gICAgICAgIHRhaWwob2JqZWN0U3RhY2spLnB1c2godGVtcEFycik7XG4gICAgICB9XG5cbiAgICAgIHN5bnRheFN0YWNrLnBvcCgpO1xuICAgICAgcnN0ID0gdGVtcEFycjtcbiAgICB9IGVsc2UgaWYgKG5vd0NoYXIgPT09ICd7Jykge1xuICAgICAgb2JqZWN0U3RhY2sucHVzaChbXSk7XG4gICAgICBzeW50YXhTdGFjay5wdXNoKCd9Jyk7XG4gICAgfSBlbHNlIGlmIChub3dDaGFyID09PSAnWycpIHtcbiAgICAgIG9iamVjdFN0YWNrLnB1c2goW10pO1xuICAgICAgc3ludGF4U3RhY2sucHVzaCgnXScpO1xuICAgIH0gZWxzZSBpZiAobm93Q2hhciA9PT0gJ1wiJykge1xuICAgICAgc3ludGF4U3RhY2sucHVzaCgnXCInKTtcbiAgICB9IGVsc2UgaWYgKG5vd0NoYXIgPT09IFwiJ1wiKSB7XG4gICAgICBzeW50YXhTdGFjay5wdXNoKFwiJ1wiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGVtcCArPSBub3dDaGFyO1xuICAgIH1cblxuICAgIGkgKz0gMTtcbiAgfVxuXG4gIHJldHVybiByc3QgfHwgdGVtcDtcbn1cblxudmFyIGtleUNvbnZlcnQgPSBmdW5jdGlvbiBrZXlDb252ZXJ0KHN0cikge1xuICByZXR1cm4gc3RyLnNwbGl0KCctJykucmVkdWNlKGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIGEgKyBiLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgYi5zbGljZSgxKTtcbiAgfSk7XG59O1xuLyoqXG4gKiDnroDljZXnmoTkuIDkuKp7e3195qih5p2/5riy5p+T77yM5LiN5YyF5ZCr5Lu75L2V5aSN5p2C6K+t5rOVXG4gKiBAcGFyYW0geG1sXG4gKi9cblxuXG5leHBvcnQgdmFyIHhtbERhdGFSZW5kZXJlciA9IGZ1bmN0aW9uIHhtbERhdGFSZW5kZXJlcih4bWwpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdmFyIGxlbiA9IHhtbC5sZW5ndGg7XG4gICAgdmFyIGFyciA9IFtdO1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIgdG1wID0gJyc7XG5cbiAgICB3aGlsZSAoaSA8IGxlbikge1xuICAgICAgaWYgKHhtbFtpXSA9PT0gJ3snICYmIHhtbFtpICsgMV0gPT09ICd7Jykge1xuICAgICAgICBhcnIucHVzaCh0bXApO1xuICAgICAgICB0bXAgPSAnJztcbiAgICAgICAgaSArPSAyO1xuICAgICAgfSBlbHNlIGlmICh4bWxbaV0gPT09ICd9JyAmJiB4bWxbaSArIDFdID09PSAnfScpIHtcbiAgICAgICAgaWYgKGFyci5sZW5ndGgpIHtcbiAgICAgICAgICB2YXIgbGFzdCA9IGFyci5wb3AoKTtcbiAgICAgICAgICB0bXAgPSBnZXQoZGF0YSwgdG1wLCBsYXN0LmVuZHNXaXRoKCc9JykgPyBcIlxcXCJ7XCIgKyB0bXAgKyBcIn1cXFwiXCIgOiB0bXApO1xuICAgICAgICAgIGFyci5wdXNoKGxhc3QgKyB0bXApO1xuICAgICAgICB9XG5cbiAgICAgICAgaSArPSAyO1xuICAgICAgICB0bXAgPSAnJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRtcCArPSB4bWxbaV07XG4gICAgICAgIGkgKz0gMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhcnIucHVzaCh0bXApO1xuICAgIHJldHVybiBhcnIubWFwKGZ1bmN0aW9uIChlLCBpbmRleCkge1xuICAgICAgcmV0dXJuIGFycltpbmRleCAtIDFdICYmIGFycltpbmRleCAtIDFdLmVuZHNXaXRoKCc9JykgPyBcIlxcXCJ7XCIgKyBlICsgXCJ9XFxcIlwiIDogZTtcbiAgICB9KS5qb2luKCcnKTtcbiAgfTtcbn07XG4vKipcbiAqIOino+aekFhNTO+8jOW5tui9rOWMluS4uuebuOW6lOeahEpTT07nu5PmnoRcbiAqIEBwYXJhbSB4bWwgeG1s6Kej5p6Q5ZCO55qE6IqC54K5XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlWE1MKHhtbCwgY2ZnKSB7XG4gIHZhciBhdHRycyA9IHt9O1xuICB2YXIga2V5cyA9IHhtbC5nZXRBdHRyaWJ1dGVOYW1lcyAmJiB4bWwuZ2V0QXR0cmlidXRlTmFtZXMoKSB8fCBbXTtcbiAgdmFyIGNoaWxkcmVuID0geG1sLmNoaWxkcmVuICYmIEFycmF5LmZyb20oeG1sLmNoaWxkcmVuKS5tYXAoZnVuY3Rpb24gKGUpIHtcbiAgICByZXR1cm4gcGFyc2VYTUwoZSwgY2ZnKTtcbiAgfSk7XG4gIHZhciByc3QgPSB7fTtcbiAgdmFyIHRhZ05hbWUgPSB4bWwudGFnTmFtZSA/IHhtbC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgOiAnZ3JvdXAnO1xuXG4gIGlmICh0YWdOYW1lID09PSAndGV4dCcpIHtcbiAgICBhdHRycy50ZXh0ID0geG1sLmlubmVyVGV4dDtcbiAgfVxuXG4gIHJzdC50eXBlID0gdGFnTmFtZTtcblxuICBpZiAodGFnTmFtZSA9PT0gJ2ltZycpIHtcbiAgICByc3QudHlwZSA9ICdpbWFnZSc7XG4gIH1cblxuICBBcnJheS5mcm9tKGtleXMpLmZvckVhY2goZnVuY3Rpb24gKGspIHtcbiAgICB2YXIga2V5ID0ga2V5Q29udmVydChrKTtcbiAgICB2YXIgdmFsID0geG1sLmdldEF0dHJpYnV0ZShrKTtcblxuICAgIHRyeSB7XG4gICAgICBpZiAoa2V5ID09PSAnc3R5bGUnIHx8IGtleSA9PT0gJ2F0dHJzJykge1xuICAgICAgICB2YXIgc3R5bGUgPSBsb29zZUpTT05QYXJzZSh2YWwpO1xuICAgICAgICBhdHRycyA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBhdHRycyksIHN0eWxlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJzdFtrZXldID0gbG9vc2VKU09OUGFyc2UodmFsKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoa2V5ID09PSAnc3R5bGUnKSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG5cbiAgICAgIHJzdFtrZXldID0gdmFsO1xuICAgIH1cbiAgfSk7XG4gIHJzdC5hdHRycyA9IGF0dHJzO1xuXG4gIGlmIChjZmcgJiYgY2ZnLnN0eWxlICYmIHJzdC5uYW1lICYmIF90eXBlb2YoY2ZnLnN0eWxlW3JzdC5uYW1lXSkgPT09ICdvYmplY3QnKSB7XG4gICAgcnN0LmF0dHJzID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHJzdC5hdHRycyksIGNmZy5zdHlsZVtyc3QubmFtZV0pO1xuICB9XG5cbiAgaWYgKGNmZyAmJiBjZmcuc3R5bGUgJiYgcnN0LmtleXNoYXBlKSB7XG4gICAgcnN0LmF0dHJzID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHJzdC5hdHRycyksIGNmZy5zdHlsZSk7XG4gIH1cblxuICBpZiAoY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgcnN0LmNoaWxkcmVuID0gY2hpbGRyZW47XG4gIH1cblxuICByZXR1cm4gcnN0O1xufVxuLyoqXG4gKiDmoLnmja7lgY/np7vph4/lkozlhoXpg6joioLngrnmnIDnu4jnmoRib3VuZGluZyBib3jmnaXlvpflh7ror6VzaGFwZeacgOe7iOeahGJib3hcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QkJveChub2RlLCBvZmZzZXQsIGNoaWxyZW5CQm94KSB7XG4gIHZhciBfYSA9IG5vZGUuYXR0cnMsXG4gICAgICBhdHRycyA9IF9hID09PSB2b2lkIDAgPyB7fSA6IF9hO1xuICB2YXIgYmJveCA9IHtcbiAgICB4OiBvZmZzZXQueCB8fCAwLFxuICAgIHk6IG9mZnNldC55IHx8IDAsXG4gICAgd2lkdGg6IGNoaWxyZW5CQm94LndpZHRoIHx8IDAsXG4gICAgaGVpZ2h0OiBjaGlscmVuQkJveC5oZWlnaHQgfHwgMFxuICB9O1xuICB2YXIgc2hhcGVIZWlnaHQsIHNoYXBlV2lkdGg7XG5cbiAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICBjYXNlICdtYWtlcic6XG4gICAgY2FzZSAnY2lyY2xlJzpcbiAgICAgIGlmIChhdHRycy5yKSB7XG4gICAgICAgIHNoYXBlV2lkdGggPSAyICogYXR0cnMucjtcbiAgICAgICAgc2hhcGVIZWlnaHQgPSAyICogYXR0cnMucjtcbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICd0ZXh0JzpcbiAgICAgIGlmIChhdHRycy50ZXh0KSB7XG4gICAgICAgIHNoYXBlV2lkdGggPSBnZXRUZXh0U2l6ZShhdHRycy50ZXh0LCBhdHRycy5mb250U2l6ZSB8fCAxMilbMF07XG4gICAgICAgIHNoYXBlSGVpZ2h0ID0gMTY7XG4gICAgICAgIGJib3gueSArPSBzaGFwZUhlaWdodDtcbiAgICAgICAgYmJveC5oZWlnaHQgPSBzaGFwZUhlaWdodDtcbiAgICAgICAgYmJveC53aWR0aCA9IHNoYXBlV2lkdGg7XG4gICAgICAgIG5vZGUuYXR0cnMgPSBfX2Fzc2lnbih7XG4gICAgICAgICAgZm9udFNpemU6IDEyLFxuICAgICAgICAgIGZpbGw6ICcjMDAwJ1xuICAgICAgICB9LCBhdHRycyk7XG4gICAgICB9XG5cbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIGlmIChhdHRycy53aWR0aCkge1xuICAgICAgICBzaGFwZVdpZHRoID0gYXR0cnMud2lkdGg7XG4gICAgICB9XG5cbiAgICAgIGlmIChhdHRycy5oZWlnaHQpIHtcbiAgICAgICAgc2hhcGVIZWlnaHQgPSBhdHRycy5oZWlnaHQ7XG4gICAgICB9XG5cbiAgfVxuXG4gIGlmIChzaGFwZUhlaWdodCA+PSAwKSB7XG4gICAgYmJveC5oZWlnaHQgPSBzaGFwZUhlaWdodDtcbiAgfVxuXG4gIGlmIChzaGFwZVdpZHRoID49IDApIHtcbiAgICBiYm94LndpZHRoID0gc2hhcGVXaWR0aDtcbiAgfVxuXG4gIGlmIChhdHRycy5tYXJnaW5Ub3ApIHtcbiAgICBiYm94LnkgKz0gYXR0cnMubWFyZ2luVG9wO1xuICB9XG5cbiAgaWYgKGF0dHJzLm1hcmdpbkxlZnQpIHtcbiAgICBiYm94LnggKz0gYXR0cnMubWFyZ2luTGVmdDtcbiAgfVxuXG4gIHJldHVybiBiYm94O1xufVxuLyoqXG4gKiDmiorku454bWzorqHnrpflh7rnmoTnu5PmnoTloavkuIrkvY3nva7kv6Hmga/vvIzooaXlhahhdHRyc1xuICogQHBhcmFtIHRhcmdldFxuICogQHBhcmFtIGxhc3RPZmZzZXRcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVUYXJnZXQodGFyZ2V0LCBsYXN0T2Zmc2V0KSB7XG4gIHZhciBfYTtcblxuICBpZiAobGFzdE9mZnNldCA9PT0gdm9pZCAwKSB7XG4gICAgbGFzdE9mZnNldCA9IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwXG4gICAgfTtcbiAgfVxuXG4gIHZhciBkZWZhdWx0QmJveCA9IF9fYXNzaWduKHtcbiAgICB4OiAwLFxuICAgIHk6IDAsXG4gICAgd2lkdGg6IDAsXG4gICAgaGVpZ2h0OiAwXG4gIH0sIGxhc3RPZmZzZXQpO1xuXG4gIGlmICgoX2EgPSB0YXJnZXQuY2hpbGRyZW4pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGgpIHtcbiAgICB2YXIgX2IgPSB0YXJnZXQuYXR0cnMsXG4gICAgICAgIGF0dHJzID0gX2IgPT09IHZvaWQgMCA/IHt9IDogX2I7XG4gICAgdmFyIG1hcmdpblRvcCA9IGF0dHJzLm1hcmdpblRvcDtcblxuICAgIHZhciBvZmZzZXQgPSBfX2Fzc2lnbih7fSwgbGFzdE9mZnNldCk7XG5cbiAgICBpZiAobWFyZ2luVG9wKSB7XG4gICAgICBvZmZzZXQueSArPSBtYXJnaW5Ub3A7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IHRhcmdldC5jaGlsZHJlbi5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIHRhcmdldC5jaGlsZHJlbltpbmRleF0uYXR0cnMua2V5ID0gKGF0dHJzLmtleSB8fCAncm9vdCcpICsgXCIgLVwiICsgaW5kZXggKyBcIiBcIjtcbiAgICAgIHZhciBub2RlID0gZ2VuZXJhdGVUYXJnZXQodGFyZ2V0LmNoaWxkcmVuW2luZGV4XSwgb2Zmc2V0KTtcblxuICAgICAgaWYgKG5vZGUuYmJveCkge1xuICAgICAgICB2YXIgYmJveCA9IG5vZGUuYmJveDtcblxuICAgICAgICBpZiAobm9kZS5hdHRycy5uZXh0ID09PSAnaW5saW5lJykge1xuICAgICAgICAgIG9mZnNldC54ICs9IG5vZGUuYmJveC53aWR0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvZmZzZXQueSArPSBub2RlLmJib3guaGVpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJib3gud2lkdGggKyBiYm94LnggPiBkZWZhdWx0QmJveC53aWR0aCkge1xuICAgICAgICAgIGRlZmF1bHRCYm94LndpZHRoID0gYmJveC53aWR0aCArIGJib3gueDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChiYm94LmhlaWdodCArIGJib3gueSA+IGRlZmF1bHRCYm94LmhlaWdodCkge1xuICAgICAgICAgIGRlZmF1bHRCYm94LmhlaWdodCA9IGJib3guaGVpZ2h0ICsgYmJveC55O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdGFyZ2V0LmJib3ggPSBnZXRCQm94KHRhcmdldCwgbGFzdE9mZnNldCwgZGVmYXVsdEJib3gpO1xuICB0YXJnZXQuYXR0cnMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgdGFyZ2V0LmF0dHJzKSwgdGFyZ2V0LmJib3gpO1xuICByZXR1cm4gdGFyZ2V0O1xufVxuLyoqXG4gKiDlr7nmr5TliY3lkI7kuKTkuKrmnIDnu4jorqHnrpflh7rmnaXnmoRub2Rl77yM5bm25a+55q+U5Ye65pyA5bCP5pS55YqoLFxuICog5Yqo5L2c77yaICdhZGQnIOa3u+WKoOiKgueCuSDvvZwg4oCZZGVsZXRl4oCYIOWIoOmZpOiKgueCuSDvvZwg4oCZY2hhbmdl4oCYIOaUueWPmOiKgueCuWF0dHJzIO+9nCAncmVzdHJ1Y3R1cmUnIOmHjeaehOiKgueCuVxuICogQHBhcmFtIG5vd1RhcmdldFxuICogQHBhcmFtIGZvcm1lclRhcmdldFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wYXJlVHdvVGFyZ2V0KG5vd1RhcmdldCwgZm9ybWVyVGFyZ2V0KSB7XG4gIHZhciBfYSwgX2IsIF9jLCBfZDtcblxuICB2YXIgdHlwZSA9IChub3dUYXJnZXQgfHwge30pLnR5cGU7XG4gIHZhciBrZXkgPSAoKGZvcm1lclRhcmdldCA9PT0gbnVsbCB8fCBmb3JtZXJUYXJnZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGZvcm1lclRhcmdldC5hdHRycykgfHwge30pLmtleTtcblxuICBpZiAoa2V5ICYmIG5vd1RhcmdldCkge1xuICAgIG5vd1RhcmdldC5hdHRycy5rZXkgPSBrZXk7XG4gIH1cblxuICBpZiAoIW5vd1RhcmdldCAmJiBmb3JtZXJUYXJnZXQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYWN0aW9uOiAnZGVsZXRlJyxcbiAgICAgIHZhbDogZm9ybWVyVGFyZ2V0LFxuICAgICAgdHlwZTogdHlwZSxcbiAgICAgIGtleToga2V5XG4gICAgfTtcbiAgfVxuXG4gIGlmIChub3dUYXJnZXQgJiYgIWZvcm1lclRhcmdldCkge1xuICAgIHJldHVybiB7XG4gICAgICBhY3Rpb246ICdhZGQnLFxuICAgICAgdmFsOiBub3dUYXJnZXQsXG4gICAgICB0eXBlOiB0eXBlXG4gICAgfTtcbiAgfVxuXG4gIGlmICghbm93VGFyZ2V0ICYmICFmb3JtZXJUYXJnZXQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYWN0aW9uOiAnc2FtZScsXG4gICAgICB0eXBlOiB0eXBlXG4gICAgfTtcbiAgfVxuXG4gIHZhciBjaGlsZHJlbiA9IFtdO1xuXG4gIGlmICgoKF9hID0gbm93VGFyZ2V0LmNoaWxkcmVuKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSA+IDAgfHwgKChfYiA9IGZvcm1lclRhcmdldC5jaGlsZHJlbikgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmxlbmd0aCkgPiAwKSB7XG4gICAgdmFyIGxlbmd0aF8xID0gTWF0aC5tYXgoKF9jID0gbm93VGFyZ2V0LmNoaWxkcmVuKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MubGVuZ3RoLCAoX2QgPSBmb3JtZXJUYXJnZXQuY2hpbGRyZW4pID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC5sZW5ndGgpO1xuICAgIHZhciBmb3JtZXJDaGlscmVuID0gZm9ybWVyVGFyZ2V0LmNoaWxkcmVuIHx8IFtdO1xuICAgIHZhciBub3dDaGlscmVuID0gbm93VGFyZ2V0LmNoaWxkcmVuIHx8IFtdO1xuXG4gICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aF8xOyBpbmRleCArPSAxKSB7XG4gICAgICBjaGlsZHJlbi5wdXNoKGNvbXBhcmVUd29UYXJnZXQobm93Q2hpbHJlbltpbmRleF0sIGZvcm1lckNoaWxyZW5baW5kZXhdKSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIGZvcm1lcktleXMgPSBPYmplY3Qua2V5cyhmb3JtZXJUYXJnZXQuYXR0cnMpO1xuICB2YXIgbm93S2V5cyA9IE9iamVjdC5rZXlzKG5vd1RhcmdldC5hdHRycyk7XG5cbiAgaWYgKGZvcm1lclRhcmdldC50eXBlICE9PSBub3dUYXJnZXQudHlwZSkge1xuICAgIHJldHVybiB7XG4gICAgICBhY3Rpb246ICdyZXN0cnVjdHVyZScsXG4gICAgICBub3dUYXJnZXQ6IG5vd1RhcmdldCxcbiAgICAgIGZvcm1lclRhcmdldDogZm9ybWVyVGFyZ2V0LFxuICAgICAga2V5OiBrZXksXG4gICAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgICB9O1xuICB9XG5cbiAgaWYgKGZvcm1lcktleXMuZmlsdGVyKGZ1bmN0aW9uIChlKSB7XG4gICAgcmV0dXJuIGUgIT09ICdjaGlsZHJlbic7XG4gIH0pLnNvbWUoZnVuY3Rpb24gKGUpIHtcbiAgICByZXR1cm4gbm93VGFyZ2V0LmF0dHJzW2VdICE9PSBmb3JtZXJUYXJnZXQuYXR0cnNbZV0gfHwgIW5vd0tleXMuaW5jbHVkZXMoZSk7XG4gIH0pKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGlvbjogJ2NoYW5nZScsXG4gICAgICB2YWw6IG5vd1RhcmdldCxcbiAgICAgIGNoaWxkcmVuOiBjaGlsZHJlbixcbiAgICAgIHR5cGU6IHR5cGUsXG4gICAgICBrZXk6IGtleVxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFjdGlvbjogJ3NhbWUnLFxuICAgIGNoaWxkcmVuOiBjaGlsZHJlbixcbiAgICB0eXBlOiB0eXBlLFxuICAgIGtleToga2V5XG4gIH07XG59XG4vKipcbiAqIOagueaNrnhtbOaIluiAhei/lOWbnnhtbOeahOWHveaVsOaehOW7uuiHquWumuS5ieiKgueCueeahOe7k+aehFxuICogQHBhcmFtIGdlblxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVOb2RlRnJvbVhNTChnZW4pIHtcbiAgdmFyIHN0cnVjdHVyZXMgPSB7fTtcblxuICB2YXIgY29tcGlsZVhNTCA9IGZ1bmN0aW9uIGNvbXBpbGVYTUwoY2ZnKSB7XG4gICAgdmFyIHJhd1N0ciA9IHR5cGVvZiBnZW4gPT09ICdmdW5jdGlvbicgPyBnZW4oY2ZnKSA6IGdlbjtcbiAgICB2YXIgdGFyZ2V0ID0geG1sRGF0YVJlbmRlcmVyKHJhd1N0cikoY2ZnKTtcbiAgICB2YXIgeG1sUGFyc2VyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgeG1sUGFyc2VyLmlubmVySFRNTCA9IHRhcmdldDtcbiAgICB2YXIgeG1sID0geG1sUGFyc2VyLmNoaWxkcmVuWzBdO1xuICAgIHZhciByZXN1bHQgPSBnZW5lcmF0ZVRhcmdldChwYXJzZVhNTCh4bWwsIGNmZykpO1xuICAgIHhtbFBhcnNlci5yZW1vdmUoKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgZHJhdzogZnVuY3Rpb24gZHJhdyhjZmcsIGdyb3VwKSB7XG4gICAgICB2YXIgcmVzdWx0VGFyZ2V0ID0gY29tcGlsZVhNTChjZmcpO1xuICAgICAgdmFyIGtleXNoYXBlID0gZ3JvdXA7XG5cbiAgICAgIHZhciByZW5kZXJUYXJnZXQgPSBmdW5jdGlvbiByZW5kZXJUYXJnZXQodGFyZ2V0KSB7XG4gICAgICAgIHZhciBfYSA9IHRhcmdldC5hdHRycyxcbiAgICAgICAgICAgIGF0dHJzID0gX2EgPT09IHZvaWQgMCA/IHt9IDogX2EsXG4gICAgICAgICAgICBiYm94ID0gdGFyZ2V0LmJib3gsXG4gICAgICAgICAgICB0eXBlID0gdGFyZ2V0LnR5cGUsXG4gICAgICAgICAgICBjaGlsZHJlbiA9IHRhcmdldC5jaGlsZHJlbixcbiAgICAgICAgICAgIHJlc3QgPSBfX3Jlc3QodGFyZ2V0LCBbXCJhdHRyc1wiLCBcImJib3hcIiwgXCJ0eXBlXCIsIFwiY2hpbGRyZW5cIl0pO1xuXG4gICAgICAgIGlmICh0YXJnZXQudHlwZSAhPT0gJ2dyb3VwJykge1xuICAgICAgICAgIHZhciBzaGFwZSA9IGdyb3VwLmFkZFNoYXBlKHRhcmdldC50eXBlLCBfX2Fzc2lnbih7XG4gICAgICAgICAgICBhdHRyczogYXR0cnMsXG4gICAgICAgICAgICBvcmlnaW46IHtcbiAgICAgICAgICAgICAgYmJveDogYmJveCxcbiAgICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgcmVzdCkpO1xuXG4gICAgICAgICAgaWYgKHRhcmdldC5rZXlzaGFwZSkge1xuICAgICAgICAgICAga2V5c2hhcGUgPSBzaGFwZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGFyZ2V0LmNoaWxkcmVuKSB7XG4gICAgICAgICAgdGFyZ2V0LmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgICAgIHJldHVybiByZW5kZXJUYXJnZXQobik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHJlbmRlclRhcmdldChyZXN1bHRUYXJnZXQpO1xuICAgICAgc3RydWN0dXJlc1tjZmcuaWRdID0gW3Jlc3VsdFRhcmdldF07XG4gICAgICByZXR1cm4ga2V5c2hhcGU7XG4gICAgfSxcbiAgICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZShjZmcsIG5vZGUpIHtcbiAgICAgIGlmICghc3RydWN0dXJlc1tjZmcuaWRdKSB7XG4gICAgICAgIHN0cnVjdHVyZXNbY2ZnLmlkXSA9IFtdO1xuICAgICAgfVxuXG4gICAgICB2YXIgY29udGFpbmVyID0gbm9kZS5nZXRDb250YWluZXIoKTtcbiAgICAgIHZhciBjaGlsZHJlbiA9IGNvbnRhaW5lci5nZXQoJ2NoaWxkcmVuJyk7XG4gICAgICB2YXIgbmV3VGFyZ2V0ID0gY29tcGlsZVhNTChjZmcpO1xuICAgICAgdmFyIGxhc3RUYXJnZXQgPSBzdHJ1Y3R1cmVzW2NmZy5pZF0ucG9wKCk7XG4gICAgICB2YXIgZGlmZlJlc3VsdCA9IGNvbXBhcmVUd29UYXJnZXQobmV3VGFyZ2V0LCBsYXN0VGFyZ2V0KTtcblxuICAgICAgdmFyIGFkZFNoYXBlID0gZnVuY3Rpb24gYWRkU2hhcGUoc2hhcGUpIHtcbiAgICAgICAgdmFyIF9hO1xuXG4gICAgICAgIGlmIChzaGFwZS50eXBlICE9PSAnZ3JvdXAnKSB7XG4gICAgICAgICAgY29udGFpbmVyLmFkZFNoYXBlKHNoYXBlLnR5cGUsIHtcbiAgICAgICAgICAgIGF0dHJzOiBzaGFwZS5hdHRyc1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKChfYSA9IHNoYXBlLmNoaWxkcmVuKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoKSB7XG4gICAgICAgICAgc2hhcGUuY2hpbGRyZW4ubWFwKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICByZXR1cm4gYWRkU2hhcGUoZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHZhciBkZWxTaGFwZSA9IGZ1bmN0aW9uIGRlbFNoYXBlKHNoYXBlKSB7XG4gICAgICAgIHZhciBfYTtcblxuICAgICAgICB2YXIgdGFyZ2V0U2hhcGUgPSBjaGlsZHJlbi5maW5kKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgcmV0dXJuIGUuYXR0cnMua2V5ID09PSBzaGFwZS5hdHRycy5rZXk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0YXJnZXRTaGFwZSkge1xuICAgICAgICAgIGNvbnRhaW5lci5yZW1vdmVDaGlsZCh0YXJnZXRTaGFwZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoKF9hID0gc2hhcGUuY2hpbGRyZW4pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGgpIHtcbiAgICAgICAgICBzaGFwZS5jaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWxTaGFwZShlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgdmFyIHVwZGF0ZVRhcmdldCA9IGZ1bmN0aW9uIHVwZGF0ZVRhcmdldCh0YXJnZXQpIHtcbiAgICAgICAgdmFyIGtleSA9IHRhcmdldC5rZXk7XG5cbiAgICAgICAgaWYgKHRhcmdldC50eXBlICE9PSAnZ3JvdXAnKSB7XG4gICAgICAgICAgdmFyIHRhcmdldFNoYXBlID0gY2hpbGRyZW4uZmluZChmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIGUuYXR0cnMua2V5ID09PSBrZXk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBzd2l0Y2ggKHRhcmdldC5hY3Rpb24pIHtcbiAgICAgICAgICAgIGNhc2UgJ2NoYW5nZSc6XG4gICAgICAgICAgICAgIGlmICh0YXJnZXRTaGFwZSkge1xuICAgICAgICAgICAgICAgIHZhciBvcmlnaW5BdHRyID0gdGFyZ2V0LnZhbC5rZXlzaGFwZSA/IG5vZGUuZ2V0T3JpZ2luU3R5bGUoKSA6IHt9O1xuICAgICAgICAgICAgICAgIHRhcmdldFNoYXBlLmF0dHIoX19hc3NpZ24oX19hc3NpZ24oe30sIG9yaWdpbkF0dHIpLCB0YXJnZXQudmFsLmF0dHJzKSk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnYWRkJzpcbiAgICAgICAgICAgICAgYWRkU2hhcGUodGFyZ2V0LnZhbCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdkZWxldGUnOlxuICAgICAgICAgICAgICBkZWxTaGFwZSh0YXJnZXQudmFsKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ3Jlc3RydWN0dXJlJzpcbiAgICAgICAgICAgICAgZGVsU2hhcGUodGFyZ2V0LmZvcm1lclRhcmdldCk7XG4gICAgICAgICAgICAgIGFkZFNoYXBlKHRhcmdldC5ub3dUYXJnZXQpO1xuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRhcmdldC5jaGlsZHJlbikge1xuICAgICAgICAgIHRhcmdldC5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChuKSB7XG4gICAgICAgICAgICByZXR1cm4gdXBkYXRlVGFyZ2V0KG4pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICB1cGRhdGVUYXJnZXQoZGlmZlJlc3VsdCk7XG4gICAgICBzdHJ1Y3R1cmVzW2NmZy5pZF0ucHVzaChuZXdUYXJnZXQpO1xuICAgIH0sXG4gICAgZ2V0QW5jaG9yUG9pbnRzOiBmdW5jdGlvbiBnZXRBbmNob3JQb2ludHMoKSB7XG4gICAgICByZXR1cm4gW1swLCAwLjVdLCBbMSwgMC41XSwgWzAuNSwgMV0sIFswLjUsIDBdXTtcbiAgICB9XG4gIH07XG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/xml.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/global.js":
/*!**********************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/global.js ***!
\**********************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar subjectColor = 'rgb(95, 149, 255)';\nvar backColor = 'rgb(255, 255, 255)';\nvar textColor = 'rgb(0, 0, 0)';\nvar activeFill = 'rgb(247, 250, 255)';\nvar nodeMainFill = 'rgb(239, 244, 255)';\nvar comboFill = 'rgb(253, 253, 253)';\nvar disabledFill = 'rgb(250, 250, 250)';\nvar edgeMainStroke = 'rgb(224, 224, 224)';\nvar edgeInactiveStroke = 'rgb(234, 234, 234)';\nvar edgeDisablesStroke = 'rgb(245, 245, 245)';\nvar inactiveStroke = 'rgb(191, 213, 255)';\nvar highlightStroke = '#4572d9';\nvar highlightFill = 'rgb(223, 234, 255)';\nvar colorSet = {\n // for nodes\n mainStroke: subjectColor,\n mainFill: nodeMainFill,\n activeStroke: subjectColor,\n activeFill: activeFill,\n inactiveStroke: inactiveStroke,\n inactiveFill: activeFill,\n selectedStroke: subjectColor,\n selectedFill: backColor,\n highlightStroke: highlightStroke,\n highlightFill: highlightFill,\n disableStroke: edgeMainStroke,\n disableFill: disabledFill,\n // for edges\n edgeMainStroke: edgeMainStroke,\n edgeActiveStroke: subjectColor,\n edgeInactiveStroke: edgeInactiveStroke,\n edgeSelectedStroke: subjectColor,\n edgeHighlightStroke: subjectColor,\n edgeDisableStroke: edgeDisablesStroke,\n // for combos\n comboMainStroke: edgeMainStroke,\n comboMainFill: comboFill,\n comboActiveStroke: subjectColor,\n comboActiveFill: activeFill,\n comboInactiveStroke: edgeMainStroke,\n comboInactiveFill: comboFill,\n comboSelectedStroke: subjectColor,\n comboSelectedFill: comboFill,\n comboHighlightStroke: highlightStroke,\n comboHighlightFill: comboFill,\n comboDisableStroke: edgeInactiveStroke,\n comboDisableFill: disabledFill\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n version: '0.5.0',\n rootContainerClassName: 'root-container',\n nodeContainerClassName: 'node-container',\n edgeContainerClassName: 'edge-container',\n comboContainerClassName: 'combo-container',\n delegateContainerClassName: 'delegate-container',\n defaultLoopPosition: 'top',\n nodeLabel: {\n style: {\n fill: '#000',\n fontSize: 12,\n textAlign: 'center',\n textBaseline: 'middle'\n },\n offset: 4 // 节点的默认文本不居中时的偏移量\n\n },\n defaultNode: {\n type: 'circle',\n style: {\n lineWidth: 1,\n stroke: colorSet.mainStroke,\n fill: nodeMainFill\n },\n size: 20,\n color: colorSet.mainStroke,\n linkPoints: {\n size: 8,\n lineWidth: 1,\n fill: colorSet.activeFill,\n stroke: colorSet.activeStroke\n }\n },\n // 节点应用状态后的样式,默认仅提供 active、selected、highlight、inactive、disable,用户可以自己扩展\n nodeStateStyles: {\n active: {\n fill: colorSet.activeFill,\n stroke: colorSet.activeStroke,\n lineWidth: 2,\n shadowColor: colorSet.mainStroke,\n shadowBlur: 10\n },\n selected: {\n fill: colorSet.selectedFill,\n stroke: colorSet.selectedStroke,\n lineWidth: 4,\n shadowColor: colorSet.selectedStroke,\n shadowBlur: 10,\n 'text-shape': {\n fontWeight: 500\n }\n },\n highlight: {\n fill: colorSet.highlightFill,\n stroke: colorSet.highlightStroke,\n lineWidth: 2,\n 'text-shape': {\n fontWeight: 500\n }\n },\n inactive: {\n fill: colorSet.inactiveFill,\n stroke: colorSet.inactiveStroke,\n lineWidth: 1\n },\n disable: {\n fill: colorSet.disableFill,\n stroke: colorSet.disableStroke,\n lineWidth: 1\n }\n },\n edgeLabel: {\n style: {\n fill: textColor,\n textAlign: 'center',\n textBaseline: 'middle',\n fontSize: 12\n }\n },\n defaultEdge: {\n type: 'line',\n size: 1,\n style: {\n stroke: colorSet.edgeMainStroke,\n lineAppendWidth: 2\n },\n color: colorSet.edgeMainStroke\n },\n // 边应用状态后的样式,默认仅提供 active、selected、highlight、inactive、disable,用户可以自己扩展\n edgeStateStyles: {\n active: {\n stroke: colorSet.edgeActiveStroke,\n lineWidth: 1\n },\n selected: {\n stroke: colorSet.edgeSelectedStroke,\n lineWidth: 2,\n shadowColor: colorSet.edgeSelectedStroke,\n shadowBlur: 10,\n 'text-shape': {\n fontWeight: 500\n }\n },\n highlight: {\n stroke: colorSet.edgeHighlightStroke,\n lineWidth: 2,\n 'text-shape': {\n fontWeight: 500\n }\n },\n inactive: {\n stroke: colorSet.edgeInactiveStroke,\n lineWidth: 1\n },\n disable: {\n stroke: colorSet.edgeDisableStroke,\n lineWidth: 1\n }\n },\n comboLabel: {\n style: {\n fill: textColor,\n // textAlign: 'center',\n textBaseline: 'middle',\n fontSize: 12\n },\n refY: 10,\n refX: 10 // Combo 的默认文本不居中时的偏移量\n\n },\n defaultCombo: {\n type: 'circle',\n style: {\n fill: colorSet.comboMainFill,\n lineWidth: 1,\n stroke: colorSet.comboMainStroke,\n r: 5,\n width: 20,\n height: 10\n },\n size: [20, 5],\n color: colorSet.comboMainStroke,\n padding: [25, 20, 15, 20]\n },\n // combo 应用状态后的样式,默认仅提供 active、selected、highlight、inactive、disable,用户可以自己扩展\n comboStateStyles: {\n active: {\n stroke: colorSet.comboActiveStroke,\n lineWidth: 1,\n fill: colorSet.comboActiveFill\n },\n selected: {\n stroke: colorSet.comboSelectedStroke,\n lineWidth: 2,\n fill: colorSet.comboSelectedFill,\n shadowColor: colorSet.comboSelectedStroke,\n shadowBlur: 10,\n 'text-shape': {\n fontWeight: 500\n }\n },\n highlight: {\n stroke: colorSet.comboHighlightStroke,\n lineWidth: 2,\n fill: colorSet.comboHighlightFill,\n 'text-shape': {\n fontWeight: 500\n }\n },\n inactive: {\n stroke: colorSet.comboInactiveStroke,\n fill: colorSet.comboInactiveFill,\n lineWidth: 1\n },\n disable: {\n stroke: colorSet.comboDisableStroke,\n fill: colorSet.comboDisableFill,\n lineWidth: 1\n }\n },\n delegateStyle: {\n fill: '#F3F9FF',\n fillOpacity: 0.5,\n stroke: '#1890FF',\n strokeOpacity: 0.9,\n lineDash: [5, 5]\n },\n windowFontFamily: typeof window !== 'undefined' && window.getComputedStyle ? window.getComputedStyle(document.body, null).getPropertyValue('font-family') || 'Arial, sans-serif' : 'Arial, sans-serif'\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9nbG9iYWwuanM/MDcxNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1jb3JlQDAuNS4wQEBhbnR2L2c2LWNvcmUvZXMvZ2xvYmFsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHN1YmplY3RDb2xvciA9ICdyZ2IoOTUsIDE0OSwgMjU1KSc7XG52YXIgYmFja0NvbG9yID0gJ3JnYigyNTUsIDI1NSwgMjU1KSc7XG52YXIgdGV4dENvbG9yID0gJ3JnYigwLCAwLCAwKSc7XG52YXIgYWN0aXZlRmlsbCA9ICdyZ2IoMjQ3LCAyNTAsIDI1NSknO1xudmFyIG5vZGVNYWluRmlsbCA9ICdyZ2IoMjM5LCAyNDQsIDI1NSknO1xudmFyIGNvbWJvRmlsbCA9ICdyZ2IoMjUzLCAyNTMsIDI1MyknO1xudmFyIGRpc2FibGVkRmlsbCA9ICdyZ2IoMjUwLCAyNTAsIDI1MCknO1xudmFyIGVkZ2VNYWluU3Ryb2tlID0gJ3JnYigyMjQsIDIyNCwgMjI0KSc7XG52YXIgZWRnZUluYWN0aXZlU3Ryb2tlID0gJ3JnYigyMzQsIDIzNCwgMjM0KSc7XG52YXIgZWRnZURpc2FibGVzU3Ryb2tlID0gJ3JnYigyNDUsIDI0NSwgMjQ1KSc7XG52YXIgaW5hY3RpdmVTdHJva2UgPSAncmdiKDE5MSwgMjEzLCAyNTUpJztcbnZhciBoaWdobGlnaHRTdHJva2UgPSAnIzQ1NzJkOSc7XG52YXIgaGlnaGxpZ2h0RmlsbCA9ICdyZ2IoMjIzLCAyMzQsIDI1NSknO1xudmFyIGNvbG9yU2V0ID0ge1xuICAvLyBmb3Igbm9kZXNcbiAgbWFpblN0cm9rZTogc3ViamVjdENvbG9yLFxuICBtYWluRmlsbDogbm9kZU1haW5GaWxsLFxuICBhY3RpdmVTdHJva2U6IHN1YmplY3RDb2xvcixcbiAgYWN0aXZlRmlsbDogYWN0aXZlRmlsbCxcbiAgaW5hY3RpdmVTdHJva2U6IGluYWN0aXZlU3Ryb2tlLFxuICBpbmFjdGl2ZUZpbGw6IGFjdGl2ZUZpbGwsXG4gIHNlbGVjdGVkU3Ryb2tlOiBzdWJqZWN0Q29sb3IsXG4gIHNlbGVjdGVkRmlsbDogYmFja0NvbG9yLFxuICBoaWdobGlnaHRTdHJva2U6IGhpZ2hsaWdodFN0cm9rZSxcbiAgaGlnaGxpZ2h0RmlsbDogaGlnaGxpZ2h0RmlsbCxcbiAgZGlzYWJsZVN0cm9rZTogZWRnZU1haW5TdHJva2UsXG4gIGRpc2FibGVGaWxsOiBkaXNhYmxlZEZpbGwsXG4gIC8vIGZvciBlZGdlc1xuICBlZGdlTWFpblN0cm9rZTogZWRnZU1haW5TdHJva2UsXG4gIGVkZ2VBY3RpdmVTdHJva2U6IHN1YmplY3RDb2xvcixcbiAgZWRnZUluYWN0aXZlU3Ryb2tlOiBlZGdlSW5hY3RpdmVTdHJva2UsXG4gIGVkZ2VTZWxlY3RlZFN0cm9rZTogc3ViamVjdENvbG9yLFxuICBlZGdlSGlnaGxpZ2h0U3Ryb2tlOiBzdWJqZWN0Q29sb3IsXG4gIGVkZ2VEaXNhYmxlU3Ryb2tlOiBlZGdlRGlzYWJsZXNTdHJva2UsXG4gIC8vIGZvciBjb21ib3NcbiAgY29tYm9NYWluU3Ryb2tlOiBlZGdlTWFpblN0cm9rZSxcbiAgY29tYm9NYWluRmlsbDogY29tYm9GaWxsLFxuICBjb21ib0FjdGl2ZVN0cm9rZTogc3ViamVjdENvbG9yLFxuICBjb21ib0FjdGl2ZUZpbGw6IGFjdGl2ZUZpbGwsXG4gIGNvbWJvSW5hY3RpdmVTdHJva2U6IGVkZ2VNYWluU3Ryb2tlLFxuICBjb21ib0luYWN0aXZlRmlsbDogY29tYm9GaWxsLFxuICBjb21ib1NlbGVjdGVkU3Ryb2tlOiBzdWJqZWN0Q29sb3IsXG4gIGNvbWJvU2VsZWN0ZWRGaWxsOiBjb21ib0ZpbGwsXG4gIGNvbWJvSGlnaGxpZ2h0U3Ryb2tlOiBoaWdobGlnaHRTdHJva2UsXG4gIGNvbWJvSGlnaGxpZ2h0RmlsbDogY29tYm9GaWxsLFxuICBjb21ib0Rpc2FibGVTdHJva2U6IGVkZ2VJbmFjdGl2ZVN0cm9rZSxcbiAgY29tYm9EaXNhYmxlRmlsbDogZGlzYWJsZWRGaWxsXG59O1xuZXhwb3J0IGRlZmF1bHQge1xuICB2ZXJzaW9uOiAnMC41LjAnLFxuICByb290Q29udGFpbmVyQ2xhc3NOYW1lOiAncm9vdC1jb250YWluZXInLFxuICBub2RlQ29udGFpbmVyQ2xhc3NOYW1lOiAnbm9kZS1jb250YWluZXInLFxuICBlZGdlQ29udGFpbmVyQ2xhc3NOYW1lOiAnZWRnZS1jb250YWluZXInLFxuICBjb21ib0NvbnRhaW5lckNsYXNzTmFtZTogJ2NvbWJvLWNvbnRhaW5lcicsXG4gIGRlbGVnYXRlQ29udGFpbmVyQ2xhc3NOYW1lOiAnZGVsZWdhdGUtY29udGFpbmVyJyxcbiAgZGVmYXVsdExvb3BQb3NpdGlvbjogJ3RvcCcsXG4gIG5vZGVMYWJlbDoge1xuICAgIHN0eWxlOiB7XG4gICAgICBmaWxsOiAnIzAwMCcsXG4gICAgICBmb250U2l6ZTogMTIsXG4gICAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgICAgdGV4dEJhc2VsaW5lOiAnbWlkZGxlJ1xuICAgIH0sXG4gICAgb2Zmc2V0OiA0IC8vIOiKgueCueeahOm7mOiupOaWh+acrOS4jeWxheS4reaXtueahOWBj+enu+mHj1xuXG4gIH0sXG4gIGRlZmF1bHROb2RlOiB7XG4gICAgdHlwZTogJ2NpcmNsZScsXG4gICAgc3R5bGU6IHtcbiAgICAgIGxpbmVXaWR0aDogMSxcbiAgICAgIHN0cm9rZTogY29sb3JTZXQubWFpblN0cm9rZSxcbiAgICAgIGZpbGw6IG5vZGVNYWluRmlsbFxuICAgIH0sXG4gICAgc2l6ZTogMjAsXG4gICAgY29sb3I6IGNvbG9yU2V0Lm1haW5TdHJva2UsXG4gICAgbGlua1BvaW50czoge1xuICAgICAgc2l6ZTogOCxcbiAgICAgIGxpbmVXaWR0aDogMSxcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmFjdGl2ZUZpbGwsXG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmFjdGl2ZVN0cm9rZVxuICAgIH1cbiAgfSxcbiAgLy8g6IqC54K55bqU55So54q25oCB5ZCO55qE5qC35byP77yM6buY6K6k5LuF5o+Q5L6bIGFjdGl2ZeOAgXNlbGVjdGVk44CBaGlnaGxpZ2h044CBaW5hY3RpdmXjgIFkaXNhYmxl77yM55So5oi35Y+v5Lul6Ieq5bex5omp5bGVXG4gIG5vZGVTdGF0ZVN0eWxlczoge1xuICAgIGFjdGl2ZToge1xuICAgICAgZmlsbDogY29sb3JTZXQuYWN0aXZlRmlsbCxcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuYWN0aXZlU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAyLFxuICAgICAgc2hhZG93Q29sb3I6IGNvbG9yU2V0Lm1haW5TdHJva2UsXG4gICAgICBzaGFkb3dCbHVyOiAxMFxuICAgIH0sXG4gICAgc2VsZWN0ZWQ6IHtcbiAgICAgIGZpbGw6IGNvbG9yU2V0LnNlbGVjdGVkRmlsbCxcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuc2VsZWN0ZWRTdHJva2UsXG4gICAgICBsaW5lV2lkdGg6IDQsXG4gICAgICBzaGFkb3dDb2xvcjogY29sb3JTZXQuc2VsZWN0ZWRTdHJva2UsXG4gICAgICBzaGFkb3dCbHVyOiAxMCxcbiAgICAgICd0ZXh0LXNoYXBlJzoge1xuICAgICAgICBmb250V2VpZ2h0OiA1MDBcbiAgICAgIH1cbiAgICB9LFxuICAgIGhpZ2hsaWdodDoge1xuICAgICAgZmlsbDogY29sb3JTZXQuaGlnaGxpZ2h0RmlsbCxcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuaGlnaGxpZ2h0U3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAyLFxuICAgICAgJ3RleHQtc2hhcGUnOiB7XG4gICAgICAgIGZvbnRXZWlnaHQ6IDUwMFxuICAgICAgfVxuICAgIH0sXG4gICAgaW5hY3RpdmU6IHtcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmluYWN0aXZlRmlsbCxcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuaW5hY3RpdmVTdHJva2UsXG4gICAgICBsaW5lV2lkdGg6IDFcbiAgICB9LFxuICAgIGRpc2FibGU6IHtcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmRpc2FibGVGaWxsLFxuICAgICAgc3Ryb2tlOiBjb2xvclNldC5kaXNhYmxlU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAxXG4gICAgfVxuICB9LFxuICBlZGdlTGFiZWw6IHtcbiAgICBzdHlsZToge1xuICAgICAgZmlsbDogdGV4dENvbG9yLFxuICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgIHRleHRCYXNlbGluZTogJ21pZGRsZScsXG4gICAgICBmb250U2l6ZTogMTJcbiAgICB9XG4gIH0sXG4gIGRlZmF1bHRFZGdlOiB7XG4gICAgdHlwZTogJ2xpbmUnLFxuICAgIHNpemU6IDEsXG4gICAgc3R5bGU6IHtcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuZWRnZU1haW5TdHJva2UsXG4gICAgICBsaW5lQXBwZW5kV2lkdGg6IDJcbiAgICB9LFxuICAgIGNvbG9yOiBjb2xvclNldC5lZGdlTWFpblN0cm9rZVxuICB9LFxuICAvLyDovrnlupTnlKjnirbmgIHlkI7nmoTmoLflvI/vvIzpu5jorqTku4Xmj5DkvpsgYWN0aXZl44CBc2VsZWN0ZWTjgIFoaWdobGlnaHTjgIFpbmFjdGl2ZeOAgWRpc2FibGXvvIznlKjmiLflj6/ku6Xoh6rlt7HmianlsZVcbiAgZWRnZVN0YXRlU3R5bGVzOiB7XG4gICAgYWN0aXZlOiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmVkZ2VBY3RpdmVTdHJva2UsXG4gICAgICBsaW5lV2lkdGg6IDFcbiAgICB9LFxuICAgIHNlbGVjdGVkOiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmVkZ2VTZWxlY3RlZFN0cm9rZSxcbiAgICAgIGxpbmVXaWR0aDogMixcbiAgICAgIHNoYWRvd0NvbG9yOiBjb2xvclNldC5lZGdlU2VsZWN0ZWRTdHJva2UsXG4gICAgICBzaGFkb3dCbHVyOiAxMCxcbiAgICAgICd0ZXh0LXNoYXBlJzoge1xuICAgICAgICBmb250V2VpZ2h0OiA1MDBcbiAgICAgIH1cbiAgICB9LFxuICAgIGhpZ2hsaWdodDoge1xuICAgICAgc3Ryb2tlOiBjb2xvclNldC5lZGdlSGlnaGxpZ2h0U3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAyLFxuICAgICAgJ3RleHQtc2hhcGUnOiB7XG4gICAgICAgIGZvbnRXZWlnaHQ6IDUwMFxuICAgICAgfVxuICAgIH0sXG4gICAgaW5hY3RpdmU6IHtcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuZWRnZUluYWN0aXZlU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAxXG4gICAgfSxcbiAgICBkaXNhYmxlOiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmVkZ2VEaXNhYmxlU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAxXG4gICAgfVxuICB9LFxuICBjb21ib0xhYmVsOiB7XG4gICAgc3R5bGU6IHtcbiAgICAgIGZpbGw6IHRleHRDb2xvcixcbiAgICAgIC8vIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICB0ZXh0QmFzZWxpbmU6ICdtaWRkbGUnLFxuICAgICAgZm9udFNpemU6IDEyXG4gICAgfSxcbiAgICByZWZZOiAxMCxcbiAgICByZWZYOiAxMCAvLyBDb21ibyDnmoTpu5jorqTmlofmnKzkuI3lsYXkuK3ml7bnmoTlgY/np7vph49cblxuICB9LFxuICBkZWZhdWx0Q29tYm86IHtcbiAgICB0eXBlOiAnY2lyY2xlJyxcbiAgICBzdHlsZToge1xuICAgICAgZmlsbDogY29sb3JTZXQuY29tYm9NYWluRmlsbCxcbiAgICAgIGxpbmVXaWR0aDogMSxcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuY29tYm9NYWluU3Ryb2tlLFxuICAgICAgcjogNSxcbiAgICAgIHdpZHRoOiAyMCxcbiAgICAgIGhlaWdodDogMTBcbiAgICB9LFxuICAgIHNpemU6IFsyMCwgNV0sXG4gICAgY29sb3I6IGNvbG9yU2V0LmNvbWJvTWFpblN0cm9rZSxcbiAgICBwYWRkaW5nOiBbMjUsIDIwLCAxNSwgMjBdXG4gIH0sXG4gIC8vIGNvbWJvIOW6lOeUqOeKtuaAgeWQjueahOagt+W8j++8jOm7mOiupOS7heaPkOS+myBhY3RpdmXjgIFzZWxlY3RlZOOAgWhpZ2hsaWdodOOAgWluYWN0aXZl44CBZGlzYWJsZe+8jOeUqOaIt+WPr+S7peiHquW3seaJqeWxlVxuICBjb21ib1N0YXRlU3R5bGVzOiB7XG4gICAgYWN0aXZlOiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmNvbWJvQWN0aXZlU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAxLFxuICAgICAgZmlsbDogY29sb3JTZXQuY29tYm9BY3RpdmVGaWxsXG4gICAgfSxcbiAgICBzZWxlY3RlZDoge1xuICAgICAgc3Ryb2tlOiBjb2xvclNldC5jb21ib1NlbGVjdGVkU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAyLFxuICAgICAgZmlsbDogY29sb3JTZXQuY29tYm9TZWxlY3RlZEZpbGwsXG4gICAgICBzaGFkb3dDb2xvcjogY29sb3JTZXQuY29tYm9TZWxlY3RlZFN0cm9rZSxcbiAgICAgIHNoYWRvd0JsdXI6IDEwLFxuICAgICAgJ3RleHQtc2hhcGUnOiB7XG4gICAgICAgIGZvbnRXZWlnaHQ6IDUwMFxuICAgICAgfVxuICAgIH0sXG4gICAgaGlnaGxpZ2h0OiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmNvbWJvSGlnaGxpZ2h0U3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAyLFxuICAgICAgZmlsbDogY29sb3JTZXQuY29tYm9IaWdobGlnaHRGaWxsLFxuICAgICAgJ3RleHQtc2hhcGUnOiB7XG4gICAgICAgIGZvbnRXZWlnaHQ6IDUwMFxuICAgICAgfVxuICAgIH0sXG4gICAgaW5hY3RpdmU6IHtcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuY29tYm9JbmFjdGl2ZVN0cm9rZSxcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmNvbWJvSW5hY3RpdmVGaWxsLFxuICAgICAgbGluZVdpZHRoOiAxXG4gICAgfSxcbiAgICBkaXNhYmxlOiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmNvbWJvRGlzYWJsZVN0cm9rZSxcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmNvbWJvRGlzYWJsZUZpbGwsXG4gICAgICBsaW5lV2lkdGg6IDFcbiAgICB9XG4gIH0sXG4gIGRlbGVnYXRlU3R5bGU6IHtcbiAgICBmaWxsOiAnI0YzRjlGRicsXG4gICAgZmlsbE9wYWNpdHk6IDAuNSxcbiAgICBzdHJva2U6ICcjMTg5MEZGJyxcbiAgICBzdHJva2VPcGFjaXR5OiAwLjksXG4gICAgbGluZURhc2g6IFs1LCA1XVxuICB9LFxuICB3aW5kb3dGb250RmFtaWx5OiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSA/IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHksIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2ZvbnQtZmFtaWx5JykgfHwgJ0FyaWFsLCBzYW5zLXNlcmlmJyA6ICdBcmlhbCwgc2Fucy1zZXJpZidcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/global.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/event.js":
/*!**************************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/event.js ***!
\**************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar EventController =\n/** @class */\nfunction () {\n function EventController(graph) {\n this.graph = graph;\n this.destroyed = false;\n this.initEvents();\n }\n\n return EventController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (EventController);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL2V2ZW50LmpzPzFkYTciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFYyw4RUFBZSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtY29yZUAwLjUuMEBAYW50di9nNi1jb3JlL2VzL2dyYXBoL2NvbnRyb2xsZXIvZXZlbnQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgRXZlbnRDb250cm9sbGVyID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gRXZlbnRDb250cm9sbGVyKGdyYXBoKSB7XG4gICAgdGhpcy5ncmFwaCA9IGdyYXBoO1xuICAgIHRoaXMuZGVzdHJveWVkID0gZmFsc2U7XG4gICAgdGhpcy5pbml0RXZlbnRzKCk7XG4gIH1cblxuICByZXR1cm4gRXZlbnRDb250cm9sbGVyO1xufSgpO1xuXG5leHBvcnQgZGVmYXVsdCBFdmVudENvbnRyb2xsZXI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/event.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/index.js":
/*!**************************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/index.js ***!
\**************************************************************************************/
/*! exports provided: ModeController, ViewController, ItemController, StateController */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mode__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mode */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/mode.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ModeController\", function() { return _mode__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./view */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/view.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ViewController\", function() { return _view__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _item__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./item */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/item.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ItemController\", function() { return _item__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./state */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/state.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"StateController\", function() { return _state__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL2luZGV4LmpzPzc2OGYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBbUQ7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1jb3JlQDAuNS4wQEBhbnR2L2c2LWNvcmUvZXMvZ3JhcGgvY29udHJvbGxlci9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQgYXMgTW9kZUNvbnRyb2xsZXIgfSBmcm9tICcuL21vZGUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBWaWV3Q29udHJvbGxlciB9IGZyb20gJy4vdmlldyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEl0ZW1Db250cm9sbGVyIH0gZnJvbSAnLi9pdGVtJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgU3RhdGVDb250cm9sbGVyIH0gZnJvbSAnLi9zdGF0ZSc7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/item.js":
/*!*************************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/item.js ***!
\*************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _item_edge__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../item/edge */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/edge.js\");\n/* harmony import */ var _item_node__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../item/node */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/node.js\");\n/* harmony import */ var _item_combo__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../item/combo */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/combo.js\");\n/* harmony import */ var _util_graphic__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/graphic */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/graphic.js\");\n\n\n\n\n\n\nvar NODE = 'node';\nvar EDGE = 'edge';\nvar VEDGE = 'vedge';\nvar COMBO = 'combo';\nvar CFG_PREFIX = 'default';\nvar MAPPER_SUFFIX = 'Mapper';\nvar STATE_SUFFIX = 'stateStyles';\n\nvar ItemController =\n/** @class */\nfunction () {\n function ItemController(graph) {\n var _this = this;\n\n this.edgeToBeUpdateMap = {};\n /**\n * 更新边限流,同时可以防止相同的边频繁重复更新\n * */\n\n this.throttleRefresh = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"throttle\"])(function (_) {\n var _a;\n\n var graph = _this.graph;\n if (!graph || graph.get('destroyed')) return;\n var edgeToBeUpdateMap = _this.edgeToBeUpdateMap;\n if (!edgeToBeUpdateMap || !((_a = Object.keys(edgeToBeUpdateMap)) === null || _a === void 0 ? void 0 : _a.length)) return;\n Object.keys(edgeToBeUpdateMap).forEach(function (eid) {\n var edge = edgeToBeUpdateMap[eid].edge;\n if (!edge || edge.destroyed) return;\n edge.refresh(edgeToBeUpdateMap[eid].updateType);\n });\n _this.edgeToBeUpdateMap = {};\n }, 16, {\n trailing: true,\n leading: true\n });\n this.graph = graph;\n this.destroyed = false;\n }\n /**\n * 增加 Item 实例\n *\n * @param {ITEM_TYPE} type 实例类型,node 或 edge\n * @param {(NodeConfig & EdgeConfig)} model 数据模型\n * @returns {(Item)}\n * @memberof ItemController\n */\n\n\n ItemController.prototype.addItem = function (type, model) {\n var graph = this.graph;\n var vType = type === VEDGE ? EDGE : type;\n var parent = graph.get(vType + \"Group\") || graph.get('group');\n var upperType = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"upperFirst\"])(vType);\n var item = null; // 获取 this.get('styles') 中的值\n\n var styles = graph.get(vType + Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"upperFirst\"])(STATE_SUFFIX)) || {};\n var defaultModel = graph.get(CFG_PREFIX + upperType);\n\n if (model[STATE_SUFFIX]) {\n // 设置 this.get('styles') 中的值\n styles = model[STATE_SUFFIX];\n }\n\n if (defaultModel) {\n // 很多布局会直接修改原数据模型,所以不能用 merge 的形式,逐个写入原 model 中\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(defaultModel, function (val, cfg) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(val) && !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(val)) {\n model[cfg] = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, val, model[cfg]);\n } else if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(val)) {\n model[cfg] = model[cfg] || Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(defaultModel[cfg]);\n } else {\n model[cfg] = model[cfg] || defaultModel[cfg];\n }\n });\n }\n\n var mapper = graph.get(vType + MAPPER_SUFFIX);\n\n if (mapper) {\n var mappedModel_1 = mapper(model);\n\n if (mappedModel_1[STATE_SUFFIX]) {\n // 设置 this.get('styles') 中的值\n styles = mappedModel_1[STATE_SUFFIX];\n delete mappedModel_1[STATE_SUFFIX];\n } // 如果配置了 defaultEdge 或 defaultNode,则将默认配置的数据也合并进去\n\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(mappedModel_1, function (val, cfg) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(val) && !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(val)) {\n model[cfg] = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, model[cfg], val);\n } else {\n model[cfg] = mappedModel_1[cfg] || model[cfg];\n }\n });\n }\n\n graph.emit('beforeadditem', {\n type: type,\n model: model\n });\n\n if (type === EDGE || type === VEDGE) {\n var source = void 0;\n var target = void 0;\n source = model.source; // eslint-disable-line prefer-destructuring\n\n target = model.target; // eslint-disable-line prefer-destructuring\n\n if (source && Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(source)) {\n source = graph.findById(source);\n }\n\n if (target && Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(target)) {\n target = graph.findById(target);\n }\n\n if (!source || !target) {\n console.warn(\"The source or target node of edge \" + model.id + \" does not exist!\");\n return;\n }\n\n if (source.getType && source.getType() === 'combo') {\n model.isComboEdge = true; // graph.updateCombo(source as ICombo);\n }\n\n if (target.getType && target.getType() === 'combo') {\n model.isComboEdge = true; // graph.updateCombo(target as ICombo);\n }\n\n item = new _item_edge__WEBPACK_IMPORTED_MODULE_2__[\"default\"]({\n model: model,\n source: source,\n target: target,\n styles: styles,\n linkCenter: graph.get('linkCenter'),\n group: parent.addGroup()\n });\n } else if (type === NODE) {\n item = new _item_node__WEBPACK_IMPORTED_MODULE_3__[\"default\"]({\n model: model,\n styles: styles,\n group: parent.addGroup()\n });\n } else if (type === COMBO) {\n var children = model.children;\n var comboBBox = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_5__[\"getComboBBox\"])(children, graph);\n if (!isNaN(comboBBox.x)) model.x = comboBBox.x;else if (isNaN(model.x)) model.x = Math.random() * 100;\n if (!isNaN(comboBBox.y)) model.y = comboBBox.y;else if (isNaN(model.y)) model.y = Math.random() * 100;\n var comboGroup = parent.addGroup();\n comboGroup.setZIndex(model.depth);\n item = new _item_combo__WEBPACK_IMPORTED_MODULE_4__[\"default\"]({\n model: model,\n styles: styles,\n bbox: model.collapsed ? Object(_util_graphic__WEBPACK_IMPORTED_MODULE_5__[\"getComboBBox\"])([], graph) : comboBBox,\n group: comboGroup\n });\n var comboModel_1 = item.getModel();\n (children || []).forEach(function (child) {\n var childItem = graph.findById(child.id);\n item.addChild(childItem);\n child.depth = comboModel_1.depth + 2;\n }); // collapse the combo if the collapsed is true in the model\n\n if (model.collapsed) {\n setTimeout(function () {\n if (!item.destroyed) {\n graph.collapseCombo(item);\n }\n }, 0);\n }\n }\n\n if (item) {\n graph.get(type + \"s\").push(item);\n graph.get('itemMap')[item.get('id')] = item;\n graph.emit('afteradditem', {\n item: item,\n model: model\n }); // eslint-disable-next-line consistent-return\n\n return item;\n }\n };\n /**\n * 更新节点或边\n *\n * @param {Item} item ID 或 实例\n * @param {(EdgeConfig | Partial)} cfg 数据模型\n * @returns\n * @memberof ItemController\n */\n\n\n ItemController.prototype.updateItem = function (item, cfg) {\n var _this = this;\n\n var _a, _b;\n\n var graph = this.graph;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) {\n item = graph.findById(item);\n }\n\n if (!item || item.destroyed) {\n return;\n } // 更新的 item 的类型\n\n\n var type = '';\n if (item.getType) type = item.getType();\n var mapper = graph.get(type + MAPPER_SUFFIX);\n var model = item.getModel();\n var updateType = item.getUpdateType(cfg);\n\n if (mapper) {\n var result = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, model, cfg);\n var mappedModel = mapper(result); // 将 update 时候用户传入的参数与mapperModel做deepMix,以便复用之前设置的参数值\n\n var newModel = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, model, mappedModel, cfg);\n\n if (mappedModel[STATE_SUFFIX]) {\n item.set('styles', newModel[STATE_SUFFIX]);\n delete newModel[STATE_SUFFIX];\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(newModel, function (val, key) {\n cfg[key] = val;\n });\n } else {\n // merge update传进来的对象参数,model中没有的数据不做处理,对象和字符串值也不做处理,直接替换原来的\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(cfg, function (val, key) {\n if (model[key]) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(val) && !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(val)) {\n cfg[key] = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, model[key]), cfg[key]);\n }\n }\n });\n } // emit beforeupdateitem 事件\n\n\n graph.emit('beforeupdateitem', {\n item: item,\n cfg: cfg\n });\n\n if (type === EDGE) {\n // 若是边要更新source || target, 为了不影响示例内部model,并且重新计算startPoint和endPoint,手动设置\n if (cfg.source) {\n var source = cfg.source;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(source)) {\n source = graph.findById(source);\n }\n\n item.setSource(source);\n }\n\n if (cfg.target) {\n var target = cfg.target;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(target)) {\n target = graph.findById(target);\n }\n\n item.setTarget(target);\n }\n\n item.update(cfg);\n } // item.update(cfg);\n\n\n if (type === NODE || type === COMBO) {\n item.update(cfg, updateType);\n var edges_1 = item.getEdges();\n var refreshEdge = (updateType === null || updateType === void 0 ? void 0 : updateType.includes('bbox')) || updateType === 'move';\n\n if (type === NODE) {\n if (updateType === 'move') {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(edges_1, function (edge) {\n _this.edgeToBeUpdateMap[edge.getID()] = {\n edge: edge,\n updateType: updateType\n };\n\n _this.throttleRefresh();\n });\n } else if (refreshEdge) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(edges_1, function (edge) {\n edge.refresh(updateType);\n });\n }\n } else if (refreshEdge && type === COMBO) {\n var shapeFactory = item.get('shapeFactory');\n var shapeType = model.type || 'circle';\n var comboAnimate = model.animate === undefined || cfg.animate === undefined ? (_b = (_a = shapeFactory[shapeType]) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.animate : model.animate || cfg.animate;\n\n if (comboAnimate) {\n setTimeout(function () {\n if (!item || item.destroyed) return;\n var keyShape = item.getKeyShape();\n if (!keyShape || keyShape.destroyed) return;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(edges_1, function (edge) {\n if (edge && !edge.destroyed) edge.refresh();\n });\n }, 201);\n } else {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(edges_1, function (edge) {\n edge.refresh();\n });\n }\n }\n }\n\n graph.emit('afterupdateitem', {\n item: item,\n cfg: cfg\n });\n };\n /**\n * 根据 combo 的子元素更新 combo 的位置及大小\n *\n * @param {ICombo} combo ID 或 实例\n * @returns\n * @memberof ItemController\n */\n\n\n ItemController.prototype.updateCombo = function (combo, children) {\n var _this = this;\n\n var _a, _b;\n\n var graph = this.graph;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(combo)) {\n combo = graph.findById(combo);\n }\n\n if (!combo || combo.destroyed) {\n return;\n }\n\n var model = combo.getModel();\n var comboBBox = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_5__[\"getComboBBox\"])(model.collapsed ? [] : children, graph);\n\n var _c = model.collapsed ? Object(_util_graphic__WEBPACK_IMPORTED_MODULE_5__[\"getComboBBox\"])(children, graph) : comboBBox,\n comboX = _c.x,\n comboY = _c.y;\n\n combo.set('bbox', comboBBox);\n combo.update({\n x: comboX,\n y: comboY\n });\n var shapeFactory = combo.get('shapeFactory');\n var shapeType = model.type || 'circle';\n var comboAnimate = model.animate === undefined ? (_b = (_a = shapeFactory[shapeType]) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.animate : model.animate;\n\n if (comboAnimate) {\n setTimeout(function () {\n if (!combo || combo.destroyed) return;\n var keyShape = combo.getKeyShape();\n if (!keyShape || keyShape.destroyed) return;\n combo.getShapeCfg(model); // 更新 combo 缓存的 size\n\n _this.updateComboEdges(combo);\n }, 201);\n } else {\n this.updateComboEdges(combo);\n }\n };\n\n ItemController.prototype.updateComboEdges = function (combo) {\n var combEdges = combo.getEdges() || [];\n\n for (var i = 0; i < combEdges.length; i++) {\n var edge = combEdges[i];\n\n if (edge && !edge.destroyed) {\n var edgeSF = edge.get('shapeFactory');\n var edgeCfg = edge.getShapeCfg(edge.getModel());\n var edgeGroup = edge.getContainer();\n edgeGroup.clear();\n var keyShape = edgeSF.draw(edgeCfg.type, edgeCfg, edgeGroup);\n edge.set('keyShape', keyShape);\n keyShape.set('isKeyShape', true);\n keyShape.set('draggable', true);\n edge.setOriginStyle();\n }\n }\n };\n /**\n * 收起 combo,隐藏相关元素\n */\n\n\n ItemController.prototype.collapseCombo = function (combo) {\n var graph = this.graph;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(combo)) {\n combo = graph.findById(combo);\n }\n\n var children = combo.getChildren();\n children.nodes.forEach(function (node) {\n graph.hideItem(node);\n });\n children.combos.forEach(function (c) {\n graph.hideItem(c);\n });\n };\n /**\n * 展开 combo,相关元素出现\n * 若子 combo 原先是收起状态,则保持它的收起状态\n */\n\n\n ItemController.prototype.expandCombo = function (combo) {\n var graph = this.graph;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(combo)) {\n combo = graph.findById(combo);\n }\n\n var children = combo.getChildren();\n children.nodes.forEach(function (node) {\n graph.showItem(node);\n });\n children.combos.forEach(function (c) {\n if (c.getModel().collapsed) {\n c.show();\n } else {\n graph.showItem(c);\n }\n });\n };\n /**\n * 删除指定的节点或边\n *\n * @param {Item} item item ID 或实例\n * @returns {void}\n * @memberof ItemController\n */\n\n\n ItemController.prototype.removeItem = function (item) {\n var _this = this;\n\n var graph = this.graph;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) {\n item = graph.findById(item);\n }\n\n if (!item || item.destroyed) {\n return;\n }\n\n var itemModel = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(item.getModel());\n graph.emit('beforeremoveitem', {\n item: itemModel\n });\n var type = '';\n if (item.getType) type = item.getType();\n var items = graph.get(type + \"s\");\n var index = items.indexOf(item);\n if (index > -1) items.splice(index, 1);\n\n if (type === EDGE) {\n var vitems = graph.get(\"v\" + type + \"s\");\n var vindex = vitems.indexOf(item);\n if (vindex > -1) vitems.splice(vindex, 1);\n }\n\n var itemId = item.get('id');\n var itemMap = graph.get('itemMap');\n delete itemMap[itemId];\n var comboTrees = graph.get('comboTrees');\n var id = item.get('id');\n\n if (type === NODE) {\n var comboId = item.getModel().comboId;\n\n if (comboTrees && comboId) {\n var brothers_1 = comboTrees;\n var found_1 = false; // the flag to terminate the forEach circulation\n // remove the node from the children array of its parent fromt he tree\n\n comboTrees.forEach(function (ctree) {\n if (found_1) return;\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_5__[\"traverseTree\"])(ctree, function (combo) {\n if (combo.id === id && brothers_1) {\n var bidx = brothers_1.indexOf(combo);\n brothers_1.splice(bidx, 1);\n found_1 = true;\n return false; // terminate the traverse\n }\n\n brothers_1 = combo.children;\n return true;\n });\n });\n } // 若移除的是节点,需要将与之相连的边一同删除\n\n\n var edges = item.getEdges();\n\n for (var i = edges.length - 1; i >= 0; i--) {\n graph.removeItem(edges[i], false);\n }\n\n if (comboId) graph.updateCombo(comboId);\n } else if (type === COMBO) {\n var parentId = item.getModel().parentId;\n var comboInTree_1; // find the subtree rooted at the item to be removed\n\n var found_2 = false; // the flag to terminate the forEach circulation\n\n (comboTrees || []).forEach(function (ctree) {\n if (found_2) return;\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_5__[\"traverseTree\"])(ctree, function (combo) {\n if (combo.id === id) {\n comboInTree_1 = combo;\n found_2 = true;\n return false; // terminate the traverse\n }\n\n return true;\n });\n });\n comboInTree_1.removed = true;\n\n if (comboInTree_1 && comboInTree_1.children) {\n comboInTree_1.children.forEach(function (child) {\n _this.removeItem(child.id);\n });\n } // 若移除的是 combo,需要将与之相连的边一同删除\n\n\n var edges = item.getEdges();\n\n for (var i = edges.length; i >= 0; i--) {\n graph.removeItem(edges[i], false);\n }\n\n if (parentId) graph.updateCombo(parentId);\n }\n\n item.destroy();\n graph.emit('afterremoveitem', {\n item: itemModel,\n type: type\n });\n };\n /**\n * 更新 item 状态\n *\n * @param {Item} item Item 实例\n * @param {string} state 状态名称\n * @param {boolean} value 是否启用状态或状态值\n * @returns {void}\n * @memberof ItemController\n */\n\n\n ItemController.prototype.setItemState = function (item, state, value) {\n var graph = this.graph;\n var stateName = state;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(value)) {\n stateName = state + \":\" + value;\n } // 已经存在要设置的 state,或不存在 state 的样式为 undefined\n\n\n if (item.hasState(stateName) === value && value || // 当该状态已经存在且现在需要设置为 true 时,不需要继续。当该状态不存在,且设置为 false 时,需要继续\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(value) && item.hasState(stateName)) {\n // 当该状态 value 是字符串,且已经存在该状态,不需要继续\n return;\n }\n\n graph.emit('beforeitemstatechange', {\n item: item,\n state: stateName,\n enabled: value\n });\n item.setState(state, value);\n graph.autoPaint();\n graph.emit('afteritemstatechange', {\n item: item,\n state: stateName,\n enabled: value\n });\n };\n /**\n * 将指定状态的优先级提升为最高优先级\n * @param {Item} item 元素id或元素实例\n * @param state 状态名称\n */\n\n\n ItemController.prototype.priorityState = function (item, state) {\n var graph = this.graph;\n var currentItem = item;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) {\n currentItem = graph.findById(item);\n } // 先取消已有的 state\n\n\n this.setItemState(currentItem, state, false); // 再设置state,则此时该优先级为最高\n\n this.setItemState(currentItem, state, true);\n };\n /**\n * 清除所有指定的状态\n *\n * @param {Item} item Item 实例\n * @param {string[]} states 状态名称集合\n * @memberof ItemController\n */\n\n\n ItemController.prototype.clearItemStates = function (item, states) {\n var graph = this.graph;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) {\n item = graph.findById(item);\n }\n\n graph.emit('beforeitemstatesclear', {\n item: item,\n states: states\n });\n item.clearStates(states);\n graph.emit('afteritemstatesclear', {\n item: item,\n states: states\n });\n };\n /**\n * 刷新指定的 Item\n *\n * @param {Item} item Item ID 或 实例\n * @memberof ItemController\n */\n\n\n ItemController.prototype.refreshItem = function (item) {\n var graph = this.graph;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) {\n item = graph.findById(item);\n }\n\n graph.emit('beforeitemrefresh', {\n item: item\n }); // 调用 Item 的 refresh 方法,实现刷新功能\n\n item.refresh();\n graph.emit('afteritemrefresh', {\n item: item\n });\n };\n /**\n * 根据 graph 上用 combos 数据生成的 comboTree 来增加所有 combos\n *\n * @param {ComboTree[]} comboTrees graph 上用 combos 数据生成的 comboTree\n * @param {ComboConfig[]} comboModels combos 数据\n * @memberof ItemController\n */\n\n\n ItemController.prototype.addCombos = function (comboTrees, comboModels) {\n var _this = this;\n\n var graph = this.graph;\n (comboTrees || []).forEach(function (ctree) {\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_5__[\"traverseTreeUp\"])(ctree, function (child) {\n var comboModel;\n comboModels.forEach(function (model) {\n if (model.id === child.id) {\n model.children = child.children;\n model.depth = child.depth;\n comboModel = model;\n }\n });\n\n if (comboModel) {\n _this.addItem('combo', comboModel);\n }\n\n return true;\n });\n });\n var comboGroup = graph.get('comboGroup');\n if (comboGroup) comboGroup.sort();\n };\n /**\n * 改变Item的显示状态\n *\n * @param {Item} item Item ID 或 实例\n * @param {boolean} visible 是否显示\n * @memberof ItemController\n */\n\n\n ItemController.prototype.changeItemVisibility = function (item, visible) {\n var _this = this;\n\n var graph = this.graph;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) {\n item = graph.findById(item);\n }\n\n if (!item) {\n console.warn('The item to be shown or hidden does not exist!');\n return;\n }\n\n graph.emit('beforeitemvisibilitychange', {\n item: item,\n visible: visible\n });\n item.changeVisibility(visible);\n\n if (item.getType && item.getType() === NODE) {\n var edges = item.getEdges();\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(edges, function (edge) {\n // 若隐藏节点,则将与之关联的边也隐藏\n // 若显示节点,则将与之关联的边也显示,但是需要判断边两端的节点都是可见的\n if (visible && !(edge.get('source').isVisible() && edge.get('target').isVisible())) {\n return;\n }\n\n _this.changeItemVisibility(edge, visible);\n });\n } else if (item.getType && item.getType() === COMBO) {\n var comboTrees = graph.get('comboTrees');\n var id_1 = item.get('id');\n var children_1 = [];\n var found_3 = false; // flag the terminate the forEach\n\n (comboTrees || []).forEach(function (ctree) {\n if (found_3) return;\n if (!ctree.children || ctree.children.length === 0) return;\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_5__[\"traverseTree\"])(ctree, function (combo) {\n if (combo.id === id_1) {\n children_1 = combo.children;\n found_3 = true;\n return false; // terminate the traverse\n }\n\n return true;\n });\n });\n\n if (children_1 && (!visible || visible && !item.getModel().collapsed)) {\n children_1.forEach(function (child) {\n var childItem = graph.findById(child.id);\n\n _this.changeItemVisibility(childItem, visible);\n });\n }\n\n var edges = item.getEdges();\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(edges, function (edge) {\n // 若隐藏 combo,则将与 combo 本身关联的边也隐藏\n // 若显示 combo,则将与 combo 本身关联的边也显示,但是需要判断边两端的节点都是可见的\n if (visible && !(edge.get('source').isVisible() && edge.get('target').isVisible())) {\n return;\n }\n\n _this.changeItemVisibility(edge, visible);\n });\n }\n\n graph.emit('afteritemvisibilitychange', {\n item: item,\n visible: visible\n });\n return item;\n };\n\n ItemController.prototype.destroy = function () {\n this.graph = null;\n this.destroyed = true;\n };\n\n return ItemController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ItemController);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL2l0ZW0uanM/ZWM2OCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNvRTtBQUNsRTtBQUNBO0FBQ0U7QUFDMkM7QUFDaEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwyQkFBMkIsMkRBQVE7QUFDbkM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsVUFBVTtBQUN2QixhQUFhLDBCQUEwQjtBQUN2QyxlQUFlO0FBQ2Y7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsNkRBQVU7QUFDOUIsb0JBQW9COztBQUVwQixtQ0FBbUMsNkRBQVU7QUFDN0M7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU0sdURBQUk7QUFDVixZQUFZLDJEQUFRLFVBQVUsMERBQU87QUFDckMsdUJBQXVCLDBEQUFPLEdBQUc7QUFDakMsU0FBUyxVQUFVLDBEQUFPO0FBQzFCLHFDQUFxQyx3REFBSztBQUMxQyxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7O0FBR1AsTUFBTSx1REFBSTtBQUNWLFlBQVksMkRBQVEsVUFBVSwwREFBTztBQUNyQyx1QkFBdUIsMERBQU8sR0FBRztBQUNqQyxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLDRCQUE0Qjs7QUFFNUIsNEJBQTRCOztBQUU1QixvQkFBb0IsMkRBQVE7QUFDNUI7QUFDQTs7QUFFQSxvQkFBb0IsMkRBQVE7QUFDNUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlDQUFpQztBQUNqQzs7QUFFQTtBQUNBLGlDQUFpQztBQUNqQzs7QUFFQSxpQkFBaUIsa0RBQUk7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxpQkFBaUIsa0RBQUk7QUFDckI7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLHNCQUFzQixrRUFBWTtBQUNsQyxxREFBcUQ7QUFDckQscURBQXFEO0FBQ3JEO0FBQ0E7QUFDQSxpQkFBaUIsbURBQUs7QUFDdEI7QUFDQTtBQUNBLGdDQUFnQyxrRUFBWTtBQUM1QztBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxFQUFFOztBQUVUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEVBQUU7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFLO0FBQ2xCLGFBQWEsbUNBQW1DO0FBQ2hEO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsMERBQU8sR0FBRztBQUM3Qix1Q0FBdUM7O0FBRXZDLHFCQUFxQiwwREFBTyxHQUFHOztBQUUvQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxNQUFNLHVEQUFJO0FBQ1Y7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsTUFBTSx1REFBSTtBQUNWO0FBQ0EsY0FBYywyREFBUSxVQUFVLDBEQUFPO0FBQ3ZDLHVCQUF1QixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDM0M7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFlBQVksMkRBQVE7QUFDcEI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsWUFBWSwyREFBUTtBQUNwQjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVSx1REFBSTtBQUNkO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsV0FBVztBQUNYLFNBQVM7QUFDVCxVQUFVLHVEQUFJO0FBQ2Q7QUFDQSxXQUFXO0FBQ1g7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHVEQUFJO0FBQ2hCO0FBQ0EsYUFBYTtBQUNiLFdBQVc7QUFDWCxTQUFTO0FBQ1QsVUFBVSx1REFBSTtBQUNkO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBOztBQUVBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvQkFBb0Isa0VBQVk7O0FBRWhDLCtCQUErQixrRUFBWTtBQUMzQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDOztBQUVqQztBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsbUJBQW1CLHNCQUFzQjtBQUN6Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFLO0FBQ2xCLGVBQWU7QUFDZjtBQUNBOzs7QUFHQTtBQUNBOztBQUVBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLHdEQUFLO0FBQ3pCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCOztBQUVBO0FBQ0E7QUFDQSxVQUFVLGtFQUFZO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCOztBQUVBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNULE9BQU87OztBQUdQOztBQUVBLG9DQUFvQyxRQUFRO0FBQzVDO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQSx3QkFBd0I7O0FBRXhCLDBCQUEwQjs7QUFFMUI7QUFDQTtBQUNBLFFBQVEsa0VBQVk7QUFDcEI7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCOztBQUVBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7O0FBR1A7O0FBRUEsZ0NBQWdDLFFBQVE7QUFDeEM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFLO0FBQ2xCLGFBQWEsT0FBTztBQUNwQixhQUFhLFFBQVE7QUFDckIsZUFBZTtBQUNmO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQSxJQUFJLDJEQUFRO0FBQ1o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEI7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQSxLQUFLOzs7QUFHTCxpREFBaUQ7O0FBRWpEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBSztBQUNsQjtBQUNBOzs7QUFHQTtBQUNBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsWUFBWTtBQUN6QixhQUFhLGNBQWM7QUFDM0I7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTSxvRUFBYztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0EsTUFBTSx1REFBSTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjs7QUFFMUI7QUFDQTtBQUNBO0FBQ0EsUUFBUSxrRUFBWTtBQUNwQjtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7O0FBRUE7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQSxNQUFNLHVEQUFJO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRWMsNkVBQWMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL2l0ZW0uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgY2xvbmUsIGRlZXBNaXgsIGVhY2gsIGlzQXJyYXksIGlzT2JqZWN0LCBpc1N0cmluZywgdXBwZXJGaXJzdCwgdGhyb3R0bGUgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBFZGdlIGZyb20gJy4uLy4uL2l0ZW0vZWRnZSc7XG5pbXBvcnQgTm9kZSBmcm9tICcuLi8uLi9pdGVtL25vZGUnO1xuaW1wb3J0IENvbWJvIGZyb20gJy4uLy4uL2l0ZW0vY29tYm8nO1xuaW1wb3J0IHsgdHJhdmVyc2VUcmVlVXAsIHRyYXZlcnNlVHJlZSwgZ2V0Q29tYm9CQm94IH0gZnJvbSAnLi4vLi4vdXRpbC9ncmFwaGljJztcbnZhciBOT0RFID0gJ25vZGUnO1xudmFyIEVER0UgPSAnZWRnZSc7XG52YXIgVkVER0UgPSAndmVkZ2UnO1xudmFyIENPTUJPID0gJ2NvbWJvJztcbnZhciBDRkdfUFJFRklYID0gJ2RlZmF1bHQnO1xudmFyIE1BUFBFUl9TVUZGSVggPSAnTWFwcGVyJztcbnZhciBTVEFURV9TVUZGSVggPSAnc3RhdGVTdHlsZXMnO1xuXG52YXIgSXRlbUNvbnRyb2xsZXIgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBJdGVtQ29udHJvbGxlcihncmFwaCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLmVkZ2VUb0JlVXBkYXRlTWFwID0ge307XG4gICAgLyoqXG4gICAgICog5pu05paw6L656ZmQ5rWB77yM5ZCM5pe25Y+v5Lul6Ziy5q2i55u45ZCM55qE6L656aKR57mB6YeN5aSN5pu05pawXG4gICAgICogKi9cblxuICAgIHRoaXMudGhyb3R0bGVSZWZyZXNoID0gdGhyb3R0bGUoZnVuY3Rpb24gKF8pIHtcbiAgICAgIHZhciBfYTtcblxuICAgICAgdmFyIGdyYXBoID0gX3RoaXMuZ3JhcGg7XG4gICAgICBpZiAoIWdyYXBoIHx8IGdyYXBoLmdldCgnZGVzdHJveWVkJykpIHJldHVybjtcbiAgICAgIHZhciBlZGdlVG9CZVVwZGF0ZU1hcCA9IF90aGlzLmVkZ2VUb0JlVXBkYXRlTWFwO1xuICAgICAgaWYgKCFlZGdlVG9CZVVwZGF0ZU1hcCB8fCAhKChfYSA9IE9iamVjdC5rZXlzKGVkZ2VUb0JlVXBkYXRlTWFwKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aCkpIHJldHVybjtcbiAgICAgIE9iamVjdC5rZXlzKGVkZ2VUb0JlVXBkYXRlTWFwKS5mb3JFYWNoKGZ1bmN0aW9uIChlaWQpIHtcbiAgICAgICAgdmFyIGVkZ2UgPSBlZGdlVG9CZVVwZGF0ZU1hcFtlaWRdLmVkZ2U7XG4gICAgICAgIGlmICghZWRnZSB8fCBlZGdlLmRlc3Ryb3llZCkgcmV0dXJuO1xuICAgICAgICBlZGdlLnJlZnJlc2goZWRnZVRvQmVVcGRhdGVNYXBbZWlkXS51cGRhdGVUeXBlKTtcbiAgICAgIH0pO1xuICAgICAgX3RoaXMuZWRnZVRvQmVVcGRhdGVNYXAgPSB7fTtcbiAgICB9LCAxNiwge1xuICAgICAgdHJhaWxpbmc6IHRydWUsXG4gICAgICBsZWFkaW5nOiB0cnVlXG4gICAgfSk7XG4gICAgdGhpcy5ncmFwaCA9IGdyYXBoO1xuICAgIHRoaXMuZGVzdHJveWVkID0gZmFsc2U7XG4gIH1cbiAgLyoqXG4gICAqIOWinuWKoCBJdGVtIOWunuS+i1xuICAgKlxuICAgKiBAcGFyYW0ge0lURU1fVFlQRX0gdHlwZSDlrp7kvovnsbvlnovvvIxub2RlIOaIliBlZGdlXG4gICAqIEBwYXJhbSB7KE5vZGVDb25maWcgJiBFZGdlQ29uZmlnKX0gbW9kZWwg5pWw5o2u5qih5Z6LXG4gICAqIEByZXR1cm5zIHsoSXRlbSl9XG4gICAqIEBtZW1iZXJvZiBJdGVtQ29udHJvbGxlclxuICAgKi9cblxuXG4gIEl0ZW1Db250cm9sbGVyLnByb3RvdHlwZS5hZGRJdGVtID0gZnVuY3Rpb24gKHR5cGUsIG1vZGVsKSB7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcbiAgICB2YXIgdlR5cGUgPSB0eXBlID09PSBWRURHRSA/IEVER0UgOiB0eXBlO1xuICAgIHZhciBwYXJlbnQgPSBncmFwaC5nZXQodlR5cGUgKyBcIkdyb3VwXCIpIHx8IGdyYXBoLmdldCgnZ3JvdXAnKTtcbiAgICB2YXIgdXBwZXJUeXBlID0gdXBwZXJGaXJzdCh2VHlwZSk7XG4gICAgdmFyIGl0ZW0gPSBudWxsOyAvLyDojrflj5YgdGhpcy5nZXQoJ3N0eWxlcycpIOS4reeahOWAvFxuXG4gICAgdmFyIHN0eWxlcyA9IGdyYXBoLmdldCh2VHlwZSArIHVwcGVyRmlyc3QoU1RBVEVfU1VGRklYKSkgfHwge307XG4gICAgdmFyIGRlZmF1bHRNb2RlbCA9IGdyYXBoLmdldChDRkdfUFJFRklYICsgdXBwZXJUeXBlKTtcblxuICAgIGlmIChtb2RlbFtTVEFURV9TVUZGSVhdKSB7XG4gICAgICAvLyDorr7nva4gdGhpcy5nZXQoJ3N0eWxlcycpIOS4reeahOWAvFxuICAgICAgc3R5bGVzID0gbW9kZWxbU1RBVEVfU1VGRklYXTtcbiAgICB9XG5cbiAgICBpZiAoZGVmYXVsdE1vZGVsKSB7XG4gICAgICAvLyDlvojlpJrluIPlsYDkvJrnm7TmjqXkv67mlLnljp/mlbDmja7mqKHlnovvvIzmiYDku6XkuI3og73nlKggbWVyZ2Ug55qE5b2i5byP77yM6YCQ5Liq5YaZ5YWl5Y6fIG1vZGVsIOS4rVxuICAgICAgZWFjaChkZWZhdWx0TW9kZWwsIGZ1bmN0aW9uICh2YWwsIGNmZykge1xuICAgICAgICBpZiAoaXNPYmplY3QodmFsKSAmJiAhaXNBcnJheSh2YWwpKSB7XG4gICAgICAgICAgbW9kZWxbY2ZnXSA9IGRlZXBNaXgoe30sIHZhbCwgbW9kZWxbY2ZnXSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNBcnJheSh2YWwpKSB7XG4gICAgICAgICAgbW9kZWxbY2ZnXSA9IG1vZGVsW2NmZ10gfHwgY2xvbmUoZGVmYXVsdE1vZGVsW2NmZ10pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1vZGVsW2NmZ10gPSBtb2RlbFtjZmddIHx8IGRlZmF1bHRNb2RlbFtjZmddO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB2YXIgbWFwcGVyID0gZ3JhcGguZ2V0KHZUeXBlICsgTUFQUEVSX1NVRkZJWCk7XG5cbiAgICBpZiAobWFwcGVyKSB7XG4gICAgICB2YXIgbWFwcGVkTW9kZWxfMSA9IG1hcHBlcihtb2RlbCk7XG5cbiAgICAgIGlmIChtYXBwZWRNb2RlbF8xW1NUQVRFX1NVRkZJWF0pIHtcbiAgICAgICAgLy8g6K6+572uIHRoaXMuZ2V0KCdzdHlsZXMnKSDkuK3nmoTlgLxcbiAgICAgICAgc3R5bGVzID0gbWFwcGVkTW9kZWxfMVtTVEFURV9TVUZGSVhdO1xuICAgICAgICBkZWxldGUgbWFwcGVkTW9kZWxfMVtTVEFURV9TVUZGSVhdO1xuICAgICAgfSAvLyDlpoLmnpzphY3nva7kuoYgZGVmYXVsdEVkZ2Ug5oiWIGRlZmF1bHROb2Rl77yM5YiZ5bCG6buY6K6k6YWN572u55qE5pWw5o2u5Lmf5ZCI5bm26L+b5Y67XG5cblxuICAgICAgZWFjaChtYXBwZWRNb2RlbF8xLCBmdW5jdGlvbiAodmFsLCBjZmcpIHtcbiAgICAgICAgaWYgKGlzT2JqZWN0KHZhbCkgJiYgIWlzQXJyYXkodmFsKSkge1xuICAgICAgICAgIG1vZGVsW2NmZ10gPSBkZWVwTWl4KHt9LCBtb2RlbFtjZmddLCB2YWwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1vZGVsW2NmZ10gPSBtYXBwZWRNb2RlbF8xW2NmZ10gfHwgbW9kZWxbY2ZnXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ3JhcGguZW1pdCgnYmVmb3JlYWRkaXRlbScsIHtcbiAgICAgIHR5cGU6IHR5cGUsXG4gICAgICBtb2RlbDogbW9kZWxcbiAgICB9KTtcblxuICAgIGlmICh0eXBlID09PSBFREdFIHx8IHR5cGUgPT09IFZFREdFKSB7XG4gICAgICB2YXIgc291cmNlID0gdm9pZCAwO1xuICAgICAgdmFyIHRhcmdldCA9IHZvaWQgMDtcbiAgICAgIHNvdXJjZSA9IG1vZGVsLnNvdXJjZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBwcmVmZXItZGVzdHJ1Y3R1cmluZ1xuXG4gICAgICB0YXJnZXQgPSBtb2RlbC50YXJnZXQ7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcHJlZmVyLWRlc3RydWN0dXJpbmdcblxuICAgICAgaWYgKHNvdXJjZSAmJiBpc1N0cmluZyhzb3VyY2UpKSB7XG4gICAgICAgIHNvdXJjZSA9IGdyYXBoLmZpbmRCeUlkKHNvdXJjZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0YXJnZXQgJiYgaXNTdHJpbmcodGFyZ2V0KSkge1xuICAgICAgICB0YXJnZXQgPSBncmFwaC5maW5kQnlJZCh0YXJnZXQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXNvdXJjZSB8fCAhdGFyZ2V0KSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcIlRoZSBzb3VyY2Ugb3IgdGFyZ2V0IG5vZGUgb2YgZWRnZSBcIiArIG1vZGVsLmlkICsgXCIgZG9lcyBub3QgZXhpc3QhXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChzb3VyY2UuZ2V0VHlwZSAmJiBzb3VyY2UuZ2V0VHlwZSgpID09PSAnY29tYm8nKSB7XG4gICAgICAgIG1vZGVsLmlzQ29tYm9FZGdlID0gdHJ1ZTsgLy8gZ3JhcGgudXBkYXRlQ29tYm8oc291cmNlIGFzIElDb21ibyk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0YXJnZXQuZ2V0VHlwZSAmJiB0YXJnZXQuZ2V0VHlwZSgpID09PSAnY29tYm8nKSB7XG4gICAgICAgIG1vZGVsLmlzQ29tYm9FZGdlID0gdHJ1ZTsgLy8gZ3JhcGgudXBkYXRlQ29tYm8odGFyZ2V0IGFzIElDb21ibyk7XG4gICAgICB9XG5cbiAgICAgIGl0ZW0gPSBuZXcgRWRnZSh7XG4gICAgICAgIG1vZGVsOiBtb2RlbCxcbiAgICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICAgIHRhcmdldDogdGFyZ2V0LFxuICAgICAgICBzdHlsZXM6IHN0eWxlcyxcbiAgICAgICAgbGlua0NlbnRlcjogZ3JhcGguZ2V0KCdsaW5rQ2VudGVyJyksXG4gICAgICAgIGdyb3VwOiBwYXJlbnQuYWRkR3JvdXAoKVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSBOT0RFKSB7XG4gICAgICBpdGVtID0gbmV3IE5vZGUoe1xuICAgICAgICBtb2RlbDogbW9kZWwsXG4gICAgICAgIHN0eWxlczogc3R5bGVzLFxuICAgICAgICBncm91cDogcGFyZW50LmFkZEdyb3VwKClcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gQ09NQk8pIHtcbiAgICAgIHZhciBjaGlsZHJlbiA9IG1vZGVsLmNoaWxkcmVuO1xuICAgICAgdmFyIGNvbWJvQkJveCA9IGdldENvbWJvQkJveChjaGlsZHJlbiwgZ3JhcGgpO1xuICAgICAgaWYgKCFpc05hTihjb21ib0JCb3gueCkpIG1vZGVsLnggPSBjb21ib0JCb3gueDtlbHNlIGlmIChpc05hTihtb2RlbC54KSkgbW9kZWwueCA9IE1hdGgucmFuZG9tKCkgKiAxMDA7XG4gICAgICBpZiAoIWlzTmFOKGNvbWJvQkJveC55KSkgbW9kZWwueSA9IGNvbWJvQkJveC55O2Vsc2UgaWYgKGlzTmFOKG1vZGVsLnkpKSBtb2RlbC55ID0gTWF0aC5yYW5kb20oKSAqIDEwMDtcbiAgICAgIHZhciBjb21ib0dyb3VwID0gcGFyZW50LmFkZEdyb3VwKCk7XG4gICAgICBjb21ib0dyb3VwLnNldFpJbmRleChtb2RlbC5kZXB0aCk7XG4gICAgICBpdGVtID0gbmV3IENvbWJvKHtcbiAgICAgICAgbW9kZWw6IG1vZGVsLFxuICAgICAgICBzdHlsZXM6IHN0eWxlcyxcbiAgICAgICAgYmJveDogbW9kZWwuY29sbGFwc2VkID8gZ2V0Q29tYm9CQm94KFtdLCBncmFwaCkgOiBjb21ib0JCb3gsXG4gICAgICAgIGdyb3VwOiBjb21ib0dyb3VwXG4gICAgICB9KTtcbiAgICAgIHZhciBjb21ib01vZGVsXzEgPSBpdGVtLmdldE1vZGVsKCk7XG4gICAgICAoY2hpbGRyZW4gfHwgW10pLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgIHZhciBjaGlsZEl0ZW0gPSBncmFwaC5maW5kQnlJZChjaGlsZC5pZCk7XG4gICAgICAgIGl0ZW0uYWRkQ2hpbGQoY2hpbGRJdGVtKTtcbiAgICAgICAgY2hpbGQuZGVwdGggPSBjb21ib01vZGVsXzEuZGVwdGggKyAyO1xuICAgICAgfSk7IC8vIGNvbGxhcHNlIHRoZSBjb21ibyBpZiB0aGUgY29sbGFwc2VkIGlzIHRydWUgaW4gdGhlIG1vZGVsXG5cbiAgICAgIGlmIChtb2RlbC5jb2xsYXBzZWQpIHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKCFpdGVtLmRlc3Ryb3llZCkge1xuICAgICAgICAgICAgZ3JhcGguY29sbGFwc2VDb21ibyhpdGVtKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIDApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpdGVtKSB7XG4gICAgICBncmFwaC5nZXQodHlwZSArIFwic1wiKS5wdXNoKGl0ZW0pO1xuICAgICAgZ3JhcGguZ2V0KCdpdGVtTWFwJylbaXRlbS5nZXQoJ2lkJyldID0gaXRlbTtcbiAgICAgIGdyYXBoLmVtaXQoJ2FmdGVyYWRkaXRlbScsIHtcbiAgICAgICAgaXRlbTogaXRlbSxcbiAgICAgICAgbW9kZWw6IG1vZGVsXG4gICAgICB9KTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG5cbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOabtOaWsOiKgueCueaIlui+uVxuICAgKlxuICAgKiBAcGFyYW0ge0l0ZW19IGl0ZW0gSUQg5oiWIOWunuS+i1xuICAgKiBAcGFyYW0geyhFZGdlQ29uZmlnIHwgUGFydGlhbDxOb2RlQ29uZmlnPil9IGNmZyDmlbDmja7mqKHlnotcbiAgICogQHJldHVybnNcbiAgICogQG1lbWJlcm9mIEl0ZW1Db250cm9sbGVyXG4gICAqL1xuXG5cbiAgSXRlbUNvbnRyb2xsZXIucHJvdG90eXBlLnVwZGF0ZUl0ZW0gPSBmdW5jdGlvbiAoaXRlbSwgY2ZnKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBfYSwgX2I7XG5cbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuXG4gICAgaWYgKGlzU3RyaW5nKGl0ZW0pKSB7XG4gICAgICBpdGVtID0gZ3JhcGguZmluZEJ5SWQoaXRlbSk7XG4gICAgfVxuXG4gICAgaWYgKCFpdGVtIHx8IGl0ZW0uZGVzdHJveWVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyDmm7TmlrDnmoQgaXRlbSDnmoTnsbvlnotcblxuXG4gICAgdmFyIHR5cGUgPSAnJztcbiAgICBpZiAoaXRlbS5nZXRUeXBlKSB0eXBlID0gaXRlbS5nZXRUeXBlKCk7XG4gICAgdmFyIG1hcHBlciA9IGdyYXBoLmdldCh0eXBlICsgTUFQUEVSX1NVRkZJWCk7XG4gICAgdmFyIG1vZGVsID0gaXRlbS5nZXRNb2RlbCgpO1xuICAgIHZhciB1cGRhdGVUeXBlID0gaXRlbS5nZXRVcGRhdGVUeXBlKGNmZyk7XG5cbiAgICBpZiAobWFwcGVyKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gZGVlcE1peCh7fSwgbW9kZWwsIGNmZyk7XG4gICAgICB2YXIgbWFwcGVkTW9kZWwgPSBtYXBwZXIocmVzdWx0KTsgLy8g5bCGIHVwZGF0ZSDml7blgJnnlKjmiLfkvKDlhaXnmoTlj4LmlbDkuI5tYXBwZXJNb2RlbOWBmmRlZXBNaXjvvIzku6Xkvr/lpI3nlKjkuYvliY3orr7nva7nmoTlj4LmlbDlgLxcblxuICAgICAgdmFyIG5ld01vZGVsID0gZGVlcE1peCh7fSwgbW9kZWwsIG1hcHBlZE1vZGVsLCBjZmcpO1xuXG4gICAgICBpZiAobWFwcGVkTW9kZWxbU1RBVEVfU1VGRklYXSkge1xuICAgICAgICBpdGVtLnNldCgnc3R5bGVzJywgbmV3TW9kZWxbU1RBVEVfU1VGRklYXSk7XG4gICAgICAgIGRlbGV0ZSBuZXdNb2RlbFtTVEFURV9TVUZGSVhdO1xuICAgICAgfVxuXG4gICAgICBlYWNoKG5ld01vZGVsLCBmdW5jdGlvbiAodmFsLCBrZXkpIHtcbiAgICAgICAgY2ZnW2tleV0gPSB2YWw7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gbWVyZ2UgdXBkYXRl5Lyg6L+b5p2l55qE5a+56LGh5Y+C5pWw77yMbW9kZWzkuK3msqHmnInnmoTmlbDmja7kuI3lgZrlpITnkIbvvIzlr7nosaHlkozlrZfnrKbkuLLlgLzkuZ/kuI3lgZrlpITnkIbvvIznm7TmjqXmm7/mjaLljp/mnaXnmoRcbiAgICAgIGVhY2goY2ZnLCBmdW5jdGlvbiAodmFsLCBrZXkpIHtcbiAgICAgICAgaWYgKG1vZGVsW2tleV0pIHtcbiAgICAgICAgICBpZiAoaXNPYmplY3QodmFsKSAmJiAhaXNBcnJheSh2YWwpKSB7XG4gICAgICAgICAgICBjZmdba2V5XSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtb2RlbFtrZXldKSwgY2ZnW2tleV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSAvLyBlbWl0IGJlZm9yZXVwZGF0ZWl0ZW0g5LqL5Lu2XG5cblxuICAgIGdyYXBoLmVtaXQoJ2JlZm9yZXVwZGF0ZWl0ZW0nLCB7XG4gICAgICBpdGVtOiBpdGVtLFxuICAgICAgY2ZnOiBjZmdcbiAgICB9KTtcblxuICAgIGlmICh0eXBlID09PSBFREdFKSB7XG4gICAgICAvLyDoi6XmmK/ovrnopoHmm7TmlrBzb3VyY2UgfHwgdGFyZ2V0LCDkuLrkuobkuI3lvbHlk43npLrkvovlhoXpg6htb2RlbO+8jOW5tuS4lOmHjeaWsOiuoeeul3N0YXJ0UG9pbnTlkoxlbmRQb2ludO+8jOaJi+WKqOiuvue9rlxuICAgICAgaWYgKGNmZy5zb3VyY2UpIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IGNmZy5zb3VyY2U7XG5cbiAgICAgICAgaWYgKGlzU3RyaW5nKHNvdXJjZSkpIHtcbiAgICAgICAgICBzb3VyY2UgPSBncmFwaC5maW5kQnlJZChzb3VyY2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgaXRlbS5zZXRTb3VyY2Uoc291cmNlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNmZy50YXJnZXQpIHtcbiAgICAgICAgdmFyIHRhcmdldCA9IGNmZy50YXJnZXQ7XG5cbiAgICAgICAgaWYgKGlzU3RyaW5nKHRhcmdldCkpIHtcbiAgICAgICAgICB0YXJnZXQgPSBncmFwaC5maW5kQnlJZCh0YXJnZXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaXRlbS5zZXRUYXJnZXQodGFyZ2V0KTtcbiAgICAgIH1cblxuICAgICAgaXRlbS51cGRhdGUoY2ZnKTtcbiAgICB9IC8vIGl0ZW0udXBkYXRlKGNmZyk7XG5cblxuICAgIGlmICh0eXBlID09PSBOT0RFIHx8IHR5cGUgPT09IENPTUJPKSB7XG4gICAgICBpdGVtLnVwZGF0ZShjZmcsIHVwZGF0ZVR5cGUpO1xuICAgICAgdmFyIGVkZ2VzXzEgPSBpdGVtLmdldEVkZ2VzKCk7XG4gICAgICB2YXIgcmVmcmVzaEVkZ2UgPSAodXBkYXRlVHlwZSA9PT0gbnVsbCB8fCB1cGRhdGVUeXBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiB1cGRhdGVUeXBlLmluY2x1ZGVzKCdiYm94JykpIHx8IHVwZGF0ZVR5cGUgPT09ICdtb3ZlJztcblxuICAgICAgaWYgKHR5cGUgPT09IE5PREUpIHtcbiAgICAgICAgaWYgKHVwZGF0ZVR5cGUgPT09ICdtb3ZlJykge1xuICAgICAgICAgIGVhY2goZWRnZXNfMSwgZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICAgIF90aGlzLmVkZ2VUb0JlVXBkYXRlTWFwW2VkZ2UuZ2V0SUQoKV0gPSB7XG4gICAgICAgICAgICAgIGVkZ2U6IGVkZ2UsXG4gICAgICAgICAgICAgIHVwZGF0ZVR5cGU6IHVwZGF0ZVR5cGVcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIF90aGlzLnRocm90dGxlUmVmcmVzaCgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHJlZnJlc2hFZGdlKSB7XG4gICAgICAgICAgZWFjaChlZGdlc18xLCBmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgICAgZWRnZS5yZWZyZXNoKHVwZGF0ZVR5cGUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHJlZnJlc2hFZGdlICYmIHR5cGUgPT09IENPTUJPKSB7XG4gICAgICAgIHZhciBzaGFwZUZhY3RvcnkgPSBpdGVtLmdldCgnc2hhcGVGYWN0b3J5Jyk7XG4gICAgICAgIHZhciBzaGFwZVR5cGUgPSBtb2RlbC50eXBlIHx8ICdjaXJjbGUnO1xuICAgICAgICB2YXIgY29tYm9BbmltYXRlID0gbW9kZWwuYW5pbWF0ZSA9PT0gdW5kZWZpbmVkIHx8IGNmZy5hbmltYXRlID09PSB1bmRlZmluZWQgPyAoX2IgPSAoX2EgPSBzaGFwZUZhY3Rvcnlbc2hhcGVUeXBlXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm9wdGlvbnMpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5hbmltYXRlIDogbW9kZWwuYW5pbWF0ZSB8fCBjZmcuYW5pbWF0ZTtcblxuICAgICAgICBpZiAoY29tYm9BbmltYXRlKSB7XG4gICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoIWl0ZW0gfHwgaXRlbS5kZXN0cm95ZWQpIHJldHVybjtcbiAgICAgICAgICAgIHZhciBrZXlTaGFwZSA9IGl0ZW0uZ2V0S2V5U2hhcGUoKTtcbiAgICAgICAgICAgIGlmICgha2V5U2hhcGUgfHwga2V5U2hhcGUuZGVzdHJveWVkKSByZXR1cm47XG4gICAgICAgICAgICBlYWNoKGVkZ2VzXzEsIGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgICAgICAgIGlmIChlZGdlICYmICFlZGdlLmRlc3Ryb3llZCkgZWRnZS5yZWZyZXNoKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9LCAyMDEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVhY2goZWRnZXNfMSwgZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICAgIGVkZ2UucmVmcmVzaCgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZ3JhcGguZW1pdCgnYWZ0ZXJ1cGRhdGVpdGVtJywge1xuICAgICAgaXRlbTogaXRlbSxcbiAgICAgIGNmZzogY2ZnXG4gICAgfSk7XG4gIH07XG4gIC8qKlxuICAgKiDmoLnmja4gY29tYm8g55qE5a2Q5YWD57Sg5pu05pawIGNvbWJvIOeahOS9jee9ruWPiuWkp+Wwj1xuICAgKlxuICAgKiBAcGFyYW0ge0lDb21ib30gY29tYm8gSUQg5oiWIOWunuS+i1xuICAgKiBAcmV0dXJuc1xuICAgKiBAbWVtYmVyb2YgSXRlbUNvbnRyb2xsZXJcbiAgICovXG5cblxuICBJdGVtQ29udHJvbGxlci5wcm90b3R5cGUudXBkYXRlQ29tYm8gPSBmdW5jdGlvbiAoY29tYm8sIGNoaWxkcmVuKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBfYSwgX2I7XG5cbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuXG4gICAgaWYgKGlzU3RyaW5nKGNvbWJvKSkge1xuICAgICAgY29tYm8gPSBncmFwaC5maW5kQnlJZChjb21ibyk7XG4gICAgfVxuXG4gICAgaWYgKCFjb21ibyB8fCBjb21iby5kZXN0cm95ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgbW9kZWwgPSBjb21iby5nZXRNb2RlbCgpO1xuICAgIHZhciBjb21ib0JCb3ggPSBnZXRDb21ib0JCb3gobW9kZWwuY29sbGFwc2VkID8gW10gOiBjaGlsZHJlbiwgZ3JhcGgpO1xuXG4gICAgdmFyIF9jID0gbW9kZWwuY29sbGFwc2VkID8gZ2V0Q29tYm9CQm94KGNoaWxkcmVuLCBncmFwaCkgOiBjb21ib0JCb3gsXG4gICAgICAgIGNvbWJvWCA9IF9jLngsXG4gICAgICAgIGNvbWJvWSA9IF9jLnk7XG5cbiAgICBjb21iby5zZXQoJ2Jib3gnLCBjb21ib0JCb3gpO1xuICAgIGNvbWJvLnVwZGF0ZSh7XG4gICAgICB4OiBjb21ib1gsXG4gICAgICB5OiBjb21ib1lcbiAgICB9KTtcbiAgICB2YXIgc2hhcGVGYWN0b3J5ID0gY29tYm8uZ2V0KCdzaGFwZUZhY3RvcnknKTtcbiAgICB2YXIgc2hhcGVUeXBlID0gbW9kZWwudHlwZSB8fCAnY2lyY2xlJztcbiAgICB2YXIgY29tYm9BbmltYXRlID0gbW9kZWwuYW5pbWF0ZSA9PT0gdW5kZWZpbmVkID8gKF9iID0gKF9hID0gc2hhcGVGYWN0b3J5W3NoYXBlVHlwZV0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5vcHRpb25zKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuYW5pbWF0ZSA6IG1vZGVsLmFuaW1hdGU7XG5cbiAgICBpZiAoY29tYm9BbmltYXRlKSB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCFjb21ibyB8fCBjb21iby5kZXN0cm95ZWQpIHJldHVybjtcbiAgICAgICAgdmFyIGtleVNoYXBlID0gY29tYm8uZ2V0S2V5U2hhcGUoKTtcbiAgICAgICAgaWYgKCFrZXlTaGFwZSB8fCBrZXlTaGFwZS5kZXN0cm95ZWQpIHJldHVybjtcbiAgICAgICAgY29tYm8uZ2V0U2hhcGVDZmcobW9kZWwpOyAvLyDmm7TmlrAgY29tYm8g57yT5a2Y55qEIHNpemVcblxuICAgICAgICBfdGhpcy51cGRhdGVDb21ib0VkZ2VzKGNvbWJvKTtcbiAgICAgIH0sIDIwMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlQ29tYm9FZGdlcyhjb21ibyk7XG4gICAgfVxuICB9O1xuXG4gIEl0ZW1Db250cm9sbGVyLnByb3RvdHlwZS51cGRhdGVDb21ib0VkZ2VzID0gZnVuY3Rpb24gKGNvbWJvKSB7XG4gICAgdmFyIGNvbWJFZGdlcyA9IGNvbWJvLmdldEVkZ2VzKCkgfHwgW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbWJFZGdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVkZ2UgPSBjb21iRWRnZXNbaV07XG5cbiAgICAgIGlmIChlZGdlICYmICFlZGdlLmRlc3Ryb3llZCkge1xuICAgICAgICB2YXIgZWRnZVNGID0gZWRnZS5nZXQoJ3NoYXBlRmFjdG9yeScpO1xuICAgICAgICB2YXIgZWRnZUNmZyA9IGVkZ2UuZ2V0U2hhcGVDZmcoZWRnZS5nZXRNb2RlbCgpKTtcbiAgICAgICAgdmFyIGVkZ2VHcm91cCA9IGVkZ2UuZ2V0Q29udGFpbmVyKCk7XG4gICAgICAgIGVkZ2VHcm91cC5jbGVhcigpO1xuICAgICAgICB2YXIga2V5U2hhcGUgPSBlZGdlU0YuZHJhdyhlZGdlQ2ZnLnR5cGUsIGVkZ2VDZmcsIGVkZ2VHcm91cCk7XG4gICAgICAgIGVkZ2Uuc2V0KCdrZXlTaGFwZScsIGtleVNoYXBlKTtcbiAgICAgICAga2V5U2hhcGUuc2V0KCdpc0tleVNoYXBlJywgdHJ1ZSk7XG4gICAgICAgIGtleVNoYXBlLnNldCgnZHJhZ2dhYmxlJywgdHJ1ZSk7XG4gICAgICAgIGVkZ2Uuc2V0T3JpZ2luU3R5bGUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDmlLbotbcgY29tYm/vvIzpmpDol4/nm7jlhbPlhYPntKBcbiAgICovXG5cblxuICBJdGVtQ29udHJvbGxlci5wcm90b3R5cGUuY29sbGFwc2VDb21ibyA9IGZ1bmN0aW9uIChjb21ibykge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAoaXNTdHJpbmcoY29tYm8pKSB7XG4gICAgICBjb21ibyA9IGdyYXBoLmZpbmRCeUlkKGNvbWJvKTtcbiAgICB9XG5cbiAgICB2YXIgY2hpbGRyZW4gPSBjb21iby5nZXRDaGlsZHJlbigpO1xuICAgIGNoaWxkcmVuLm5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIGdyYXBoLmhpZGVJdGVtKG5vZGUpO1xuICAgIH0pO1xuICAgIGNoaWxkcmVuLmNvbWJvcy5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7XG4gICAgICBncmFwaC5oaWRlSXRlbShjKTtcbiAgICB9KTtcbiAgfTtcbiAgLyoqXG4gICAqIOWxleW8gCBjb21ib++8jOebuOWFs+WFg+e0oOWHuueOsFxuICAgKiDoi6XlrZAgY29tYm8g5Y6f5YWI5piv5pS26LW354q25oCB77yM5YiZ5L+d5oyB5a6D55qE5pS26LW354q25oCBXG4gICAqL1xuXG5cbiAgSXRlbUNvbnRyb2xsZXIucHJvdG90eXBlLmV4cGFuZENvbWJvID0gZnVuY3Rpb24gKGNvbWJvKSB7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcblxuICAgIGlmIChpc1N0cmluZyhjb21ibykpIHtcbiAgICAgIGNvbWJvID0gZ3JhcGguZmluZEJ5SWQoY29tYm8pO1xuICAgIH1cblxuICAgIHZhciBjaGlsZHJlbiA9IGNvbWJvLmdldENoaWxkcmVuKCk7XG4gICAgY2hpbGRyZW4ubm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgZ3JhcGguc2hvd0l0ZW0obm9kZSk7XG4gICAgfSk7XG4gICAgY2hpbGRyZW4uY29tYm9zLmZvckVhY2goZnVuY3Rpb24gKGMpIHtcbiAgICAgIGlmIChjLmdldE1vZGVsKCkuY29sbGFwc2VkKSB7XG4gICAgICAgIGMuc2hvdygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ3JhcGguc2hvd0l0ZW0oYyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG4gIC8qKlxuICAgKiDliKDpmaTmjIflrprnmoToioLngrnmiJbovrlcbiAgICpcbiAgICogQHBhcmFtIHtJdGVtfSBpdGVtIGl0ZW0gSUQg5oiW5a6e5L6LXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKiBAbWVtYmVyb2YgSXRlbUNvbnRyb2xsZXJcbiAgICovXG5cblxuICBJdGVtQ29udHJvbGxlci5wcm90b3R5cGUucmVtb3ZlSXRlbSA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAoaXNTdHJpbmcoaXRlbSkpIHtcbiAgICAgIGl0ZW0gPSBncmFwaC5maW5kQnlJZChpdGVtKTtcbiAgICB9XG5cbiAgICBpZiAoIWl0ZW0gfHwgaXRlbS5kZXN0cm95ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgaXRlbU1vZGVsID0gY2xvbmUoaXRlbS5nZXRNb2RlbCgpKTtcbiAgICBncmFwaC5lbWl0KCdiZWZvcmVyZW1vdmVpdGVtJywge1xuICAgICAgaXRlbTogaXRlbU1vZGVsXG4gICAgfSk7XG4gICAgdmFyIHR5cGUgPSAnJztcbiAgICBpZiAoaXRlbS5nZXRUeXBlKSB0eXBlID0gaXRlbS5nZXRUeXBlKCk7XG4gICAgdmFyIGl0ZW1zID0gZ3JhcGguZ2V0KHR5cGUgKyBcInNcIik7XG4gICAgdmFyIGluZGV4ID0gaXRlbXMuaW5kZXhPZihpdGVtKTtcbiAgICBpZiAoaW5kZXggPiAtMSkgaXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgIGlmICh0eXBlID09PSBFREdFKSB7XG4gICAgICB2YXIgdml0ZW1zID0gZ3JhcGguZ2V0KFwidlwiICsgdHlwZSArIFwic1wiKTtcbiAgICAgIHZhciB2aW5kZXggPSB2aXRlbXMuaW5kZXhPZihpdGVtKTtcbiAgICAgIGlmICh2aW5kZXggPiAtMSkgdml0ZW1zLnNwbGljZSh2aW5kZXgsIDEpO1xuICAgIH1cblxuICAgIHZhciBpdGVtSWQgPSBpdGVtLmdldCgnaWQnKTtcbiAgICB2YXIgaXRlbU1hcCA9IGdyYXBoLmdldCgnaXRlbU1hcCcpO1xuICAgIGRlbGV0ZSBpdGVtTWFwW2l0ZW1JZF07XG4gICAgdmFyIGNvbWJvVHJlZXMgPSBncmFwaC5nZXQoJ2NvbWJvVHJlZXMnKTtcbiAgICB2YXIgaWQgPSBpdGVtLmdldCgnaWQnKTtcblxuICAgIGlmICh0eXBlID09PSBOT0RFKSB7XG4gICAgICB2YXIgY29tYm9JZCA9IGl0ZW0uZ2V0TW9kZWwoKS5jb21ib0lkO1xuXG4gICAgICBpZiAoY29tYm9UcmVlcyAmJiBjb21ib0lkKSB7XG4gICAgICAgIHZhciBicm90aGVyc18xID0gY29tYm9UcmVlcztcbiAgICAgICAgdmFyIGZvdW5kXzEgPSBmYWxzZTsgLy8gdGhlIGZsYWcgdG8gdGVybWluYXRlIHRoZSBmb3JFYWNoIGNpcmN1bGF0aW9uXG4gICAgICAgIC8vIHJlbW92ZSB0aGUgbm9kZSBmcm9tIHRoZSBjaGlsZHJlbiBhcnJheSBvZiBpdHMgcGFyZW50IGZyb210IGhlIHRyZWVcblxuICAgICAgICBjb21ib1RyZWVzLmZvckVhY2goZnVuY3Rpb24gKGN0cmVlKSB7XG4gICAgICAgICAgaWYgKGZvdW5kXzEpIHJldHVybjtcbiAgICAgICAgICB0cmF2ZXJzZVRyZWUoY3RyZWUsIGZ1bmN0aW9uIChjb21ibykge1xuICAgICAgICAgICAgaWYgKGNvbWJvLmlkID09PSBpZCAmJiBicm90aGVyc18xKSB7XG4gICAgICAgICAgICAgIHZhciBiaWR4ID0gYnJvdGhlcnNfMS5pbmRleE9mKGNvbWJvKTtcbiAgICAgICAgICAgICAgYnJvdGhlcnNfMS5zcGxpY2UoYmlkeCwgMSk7XG4gICAgICAgICAgICAgIGZvdW5kXzEgPSB0cnVlO1xuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIHRlcm1pbmF0ZSB0aGUgdHJhdmVyc2VcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJvdGhlcnNfMSA9IGNvbWJvLmNoaWxkcmVuO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSAvLyDoi6Xnp7vpmaTnmoTmmK/oioLngrnvvIzpnIDopoHlsIbkuI7kuYvnm7jov57nmoTovrnkuIDlkIzliKDpmaRcblxuXG4gICAgICB2YXIgZWRnZXMgPSBpdGVtLmdldEVkZ2VzKCk7XG5cbiAgICAgIGZvciAodmFyIGkgPSBlZGdlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBncmFwaC5yZW1vdmVJdGVtKGVkZ2VzW2ldLCBmYWxzZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb21ib0lkKSBncmFwaC51cGRhdGVDb21ibyhjb21ib0lkKTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09IENPTUJPKSB7XG4gICAgICB2YXIgcGFyZW50SWQgPSBpdGVtLmdldE1vZGVsKCkucGFyZW50SWQ7XG4gICAgICB2YXIgY29tYm9JblRyZWVfMTsgLy8gZmluZCB0aGUgc3VidHJlZSByb290ZWQgYXQgdGhlIGl0ZW0gdG8gYmUgcmVtb3ZlZFxuXG4gICAgICB2YXIgZm91bmRfMiA9IGZhbHNlOyAvLyB0aGUgZmxhZyB0byB0ZXJtaW5hdGUgdGhlIGZvckVhY2ggY2lyY3VsYXRpb25cblxuICAgICAgKGNvbWJvVHJlZXMgfHwgW10pLmZvckVhY2goZnVuY3Rpb24gKGN0cmVlKSB7XG4gICAgICAgIGlmIChmb3VuZF8yKSByZXR1cm47XG4gICAgICAgIHRyYXZlcnNlVHJlZShjdHJlZSwgZnVuY3Rpb24gKGNvbWJvKSB7XG4gICAgICAgICAgaWYgKGNvbWJvLmlkID09PSBpZCkge1xuICAgICAgICAgICAgY29tYm9JblRyZWVfMSA9IGNvbWJvO1xuICAgICAgICAgICAgZm91bmRfMiA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIHRlcm1pbmF0ZSB0aGUgdHJhdmVyc2VcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIGNvbWJvSW5UcmVlXzEucmVtb3ZlZCA9IHRydWU7XG5cbiAgICAgIGlmIChjb21ib0luVHJlZV8xICYmIGNvbWJvSW5UcmVlXzEuY2hpbGRyZW4pIHtcbiAgICAgICAgY29tYm9JblRyZWVfMS5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICAgIF90aGlzLnJlbW92ZUl0ZW0oY2hpbGQuaWQpO1xuICAgICAgICB9KTtcbiAgICAgIH0gLy8g6Iul56e76Zmk55qE5pivIGNvbWJv77yM6ZyA6KaB5bCG5LiO5LmL55u46L+e55qE6L655LiA5ZCM5Yig6ZmkXG5cblxuICAgICAgdmFyIGVkZ2VzID0gaXRlbS5nZXRFZGdlcygpO1xuXG4gICAgICBmb3IgKHZhciBpID0gZWRnZXMubGVuZ3RoOyBpID49IDA7IGktLSkge1xuICAgICAgICBncmFwaC5yZW1vdmVJdGVtKGVkZ2VzW2ldLCBmYWxzZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwYXJlbnRJZCkgZ3JhcGgudXBkYXRlQ29tYm8ocGFyZW50SWQpO1xuICAgIH1cblxuICAgIGl0ZW0uZGVzdHJveSgpO1xuICAgIGdyYXBoLmVtaXQoJ2FmdGVycmVtb3ZlaXRlbScsIHtcbiAgICAgIGl0ZW06IGl0ZW1Nb2RlbCxcbiAgICAgIHR5cGU6IHR5cGVcbiAgICB9KTtcbiAgfTtcbiAgLyoqXG4gICAqIOabtOaWsCBpdGVtIOeKtuaAgVxuICAgKlxuICAgKiBAcGFyYW0ge0l0ZW19IGl0ZW0gSXRlbSDlrp7kvotcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0YXRlIOeKtuaAgeWQjeensFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHZhbHVlIOaYr+WQpuWQr+eUqOeKtuaAgeaIlueKtuaAgeWAvFxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICogQG1lbWJlcm9mIEl0ZW1Db250cm9sbGVyXG4gICAqL1xuXG5cbiAgSXRlbUNvbnRyb2xsZXIucHJvdG90eXBlLnNldEl0ZW1TdGF0ZSA9IGZ1bmN0aW9uIChpdGVtLCBzdGF0ZSwgdmFsdWUpIHtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIHZhciBzdGF0ZU5hbWUgPSBzdGF0ZTtcblxuICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgIHN0YXRlTmFtZSA9IHN0YXRlICsgXCI6XCIgKyB2YWx1ZTtcbiAgICB9IC8vIOW3sue7j+WtmOWcqOimgeiuvue9rueahCBzdGF0Ze+8jOaIluS4jeWtmOWcqCBzdGF0ZSDnmoTmoLflvI/kuLogdW5kZWZpbmVkXG5cblxuICAgIGlmIChpdGVtLmhhc1N0YXRlKHN0YXRlTmFtZSkgPT09IHZhbHVlICYmIHZhbHVlIHx8IC8vIOW9k+ivpeeKtuaAgeW3sue7j+WtmOWcqOS4lOeOsOWcqOmcgOimgeiuvue9ruS4uiB0cnVlIOaXtu+8jOS4jemcgOimgee7p+e7reOAguW9k+ivpeeKtuaAgeS4jeWtmOWcqO+8jOS4lOiuvue9ruS4uiBmYWxzZSDml7bvvIzpnIDopoHnu6fnu61cbiAgICBpc1N0cmluZyh2YWx1ZSkgJiYgaXRlbS5oYXNTdGF0ZShzdGF0ZU5hbWUpKSB7XG4gICAgICAvLyDlvZPor6XnirbmgIEgdmFsdWUg5piv5a2X56ym5Liy77yM5LiU5bey57uP5a2Y5Zyo6K+l54q25oCB77yM5LiN6ZyA6KaB57un57utXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZ3JhcGguZW1pdCgnYmVmb3JlaXRlbXN0YXRlY2hhbmdlJywge1xuICAgICAgaXRlbTogaXRlbSxcbiAgICAgIHN0YXRlOiBzdGF0ZU5hbWUsXG4gICAgICBlbmFibGVkOiB2YWx1ZVxuICAgIH0pO1xuICAgIGl0ZW0uc2V0U3RhdGUoc3RhdGUsIHZhbHVlKTtcbiAgICBncmFwaC5hdXRvUGFpbnQoKTtcbiAgICBncmFwaC5lbWl0KCdhZnRlcml0ZW1zdGF0ZWNoYW5nZScsIHtcbiAgICAgIGl0ZW06IGl0ZW0sXG4gICAgICBzdGF0ZTogc3RhdGVOYW1lLFxuICAgICAgZW5hYmxlZDogdmFsdWVcbiAgICB9KTtcbiAgfTtcbiAgLyoqXG4gICAqIOWwhuaMh+WumueKtuaAgeeahOS8mOWFiOe6p+aPkOWNh+S4uuacgOmrmOS8mOWFiOe6p1xuICAgKiBAcGFyYW0ge0l0ZW19IGl0ZW0g5YWD57SgaWTmiJblhYPntKDlrp7kvotcbiAgICogQHBhcmFtIHN0YXRlIOeKtuaAgeWQjeensFxuICAgKi9cblxuXG4gIEl0ZW1Db250cm9sbGVyLnByb3RvdHlwZS5wcmlvcml0eVN0YXRlID0gZnVuY3Rpb24gKGl0ZW0sIHN0YXRlKSB7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcbiAgICB2YXIgY3VycmVudEl0ZW0gPSBpdGVtO1xuXG4gICAgaWYgKGlzU3RyaW5nKGl0ZW0pKSB7XG4gICAgICBjdXJyZW50SXRlbSA9IGdyYXBoLmZpbmRCeUlkKGl0ZW0pO1xuICAgIH0gLy8g5YWI5Y+W5raI5bey5pyJ55qEIHN0YXRlXG5cblxuICAgIHRoaXMuc2V0SXRlbVN0YXRlKGN1cnJlbnRJdGVtLCBzdGF0ZSwgZmFsc2UpOyAvLyDlho3orr7nva5zdGF0Ze+8jOWImeatpOaXtuivpeS8mOWFiOe6p+S4uuacgOmrmFxuXG4gICAgdGhpcy5zZXRJdGVtU3RhdGUoY3VycmVudEl0ZW0sIHN0YXRlLCB0cnVlKTtcbiAgfTtcbiAgLyoqXG4gICAqIOa4hemZpOaJgOacieaMh+WumueahOeKtuaAgVxuICAgKlxuICAgKiBAcGFyYW0ge0l0ZW19IGl0ZW0gSXRlbSDlrp7kvotcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gc3RhdGVzIOeKtuaAgeWQjeensOmbhuWQiFxuICAgKiBAbWVtYmVyb2YgSXRlbUNvbnRyb2xsZXJcbiAgICovXG5cblxuICBJdGVtQ29udHJvbGxlci5wcm90b3R5cGUuY2xlYXJJdGVtU3RhdGVzID0gZnVuY3Rpb24gKGl0ZW0sIHN0YXRlcykge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAoaXNTdHJpbmcoaXRlbSkpIHtcbiAgICAgIGl0ZW0gPSBncmFwaC5maW5kQnlJZChpdGVtKTtcbiAgICB9XG5cbiAgICBncmFwaC5lbWl0KCdiZWZvcmVpdGVtc3RhdGVzY2xlYXInLCB7XG4gICAgICBpdGVtOiBpdGVtLFxuICAgICAgc3RhdGVzOiBzdGF0ZXNcbiAgICB9KTtcbiAgICBpdGVtLmNsZWFyU3RhdGVzKHN0YXRlcyk7XG4gICAgZ3JhcGguZW1pdCgnYWZ0ZXJpdGVtc3RhdGVzY2xlYXInLCB7XG4gICAgICBpdGVtOiBpdGVtLFxuICAgICAgc3RhdGVzOiBzdGF0ZXNcbiAgICB9KTtcbiAgfTtcbiAgLyoqXG4gICAqIOWIt+aWsOaMh+WumueahCBJdGVtXG4gICAqXG4gICAqIEBwYXJhbSB7SXRlbX0gaXRlbSBJdGVtIElEIOaIliDlrp7kvotcbiAgICogQG1lbWJlcm9mIEl0ZW1Db250cm9sbGVyXG4gICAqL1xuXG5cbiAgSXRlbUNvbnRyb2xsZXIucHJvdG90eXBlLnJlZnJlc2hJdGVtID0gZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuXG4gICAgaWYgKGlzU3RyaW5nKGl0ZW0pKSB7XG4gICAgICBpdGVtID0gZ3JhcGguZmluZEJ5SWQoaXRlbSk7XG4gICAgfVxuXG4gICAgZ3JhcGguZW1pdCgnYmVmb3JlaXRlbXJlZnJlc2gnLCB7XG4gICAgICBpdGVtOiBpdGVtXG4gICAgfSk7IC8vIOiwg+eUqCBJdGVtIOeahCByZWZyZXNoIOaWueazle+8jOWunueOsOWIt+aWsOWKn+iDvVxuXG4gICAgaXRlbS5yZWZyZXNoKCk7XG4gICAgZ3JhcGguZW1pdCgnYWZ0ZXJpdGVtcmVmcmVzaCcsIHtcbiAgICAgIGl0ZW06IGl0ZW1cbiAgICB9KTtcbiAgfTtcbiAgLyoqXG4gICAqIOagueaNriBncmFwaCDkuIrnlKggY29tYm9zIOaVsOaNrueUn+aIkOeahCBjb21ib1RyZWUg5p2l5aKe5Yqg5omA5pyJIGNvbWJvc1xuICAgKlxuICAgKiBAcGFyYW0ge0NvbWJvVHJlZVtdfSBjb21ib1RyZWVzIGdyYXBoIOS4iueUqCBjb21ib3Mg5pWw5o2u55Sf5oiQ55qEIGNvbWJvVHJlZVxuICAgKiBAcGFyYW0ge0NvbWJvQ29uZmlnW119IGNvbWJvTW9kZWxzIGNvbWJvcyDmlbDmja5cbiAgICogQG1lbWJlcm9mIEl0ZW1Db250cm9sbGVyXG4gICAqL1xuXG5cbiAgSXRlbUNvbnRyb2xsZXIucHJvdG90eXBlLmFkZENvbWJvcyA9IGZ1bmN0aW9uIChjb21ib1RyZWVzLCBjb21ib01vZGVscykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIChjb21ib1RyZWVzIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uIChjdHJlZSkge1xuICAgICAgdHJhdmVyc2VUcmVlVXAoY3RyZWUsIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICB2YXIgY29tYm9Nb2RlbDtcbiAgICAgICAgY29tYm9Nb2RlbHMuZm9yRWFjaChmdW5jdGlvbiAobW9kZWwpIHtcbiAgICAgICAgICBpZiAobW9kZWwuaWQgPT09IGNoaWxkLmlkKSB7XG4gICAgICAgICAgICBtb2RlbC5jaGlsZHJlbiA9IGNoaWxkLmNoaWxkcmVuO1xuICAgICAgICAgICAgbW9kZWwuZGVwdGggPSBjaGlsZC5kZXB0aDtcbiAgICAgICAgICAgIGNvbWJvTW9kZWwgPSBtb2RlbDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChjb21ib01vZGVsKSB7XG4gICAgICAgICAgX3RoaXMuYWRkSXRlbSgnY29tYm8nLCBjb21ib01vZGVsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgdmFyIGNvbWJvR3JvdXAgPSBncmFwaC5nZXQoJ2NvbWJvR3JvdXAnKTtcbiAgICBpZiAoY29tYm9Hcm91cCkgY29tYm9Hcm91cC5zb3J0KCk7XG4gIH07XG4gIC8qKlxuICAgKiDmlLnlj5hJdGVt55qE5pi+56S654q25oCBXG4gICAqXG4gICAqIEBwYXJhbSB7SXRlbX0gaXRlbSBJdGVtIElEIOaIliDlrp7kvotcbiAgICogQHBhcmFtIHtib29sZWFufSB2aXNpYmxlIOaYr+WQpuaYvuekulxuICAgKiBAbWVtYmVyb2YgSXRlbUNvbnRyb2xsZXJcbiAgICovXG5cblxuICBJdGVtQ29udHJvbGxlci5wcm90b3R5cGUuY2hhbmdlSXRlbVZpc2liaWxpdHkgPSBmdW5jdGlvbiAoaXRlbSwgdmlzaWJsZSkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuXG4gICAgaWYgKGlzU3RyaW5nKGl0ZW0pKSB7XG4gICAgICBpdGVtID0gZ3JhcGguZmluZEJ5SWQoaXRlbSk7XG4gICAgfVxuXG4gICAgaWYgKCFpdGVtKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1RoZSBpdGVtIHRvIGJlIHNob3duIG9yIGhpZGRlbiBkb2VzIG5vdCBleGlzdCEnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBncmFwaC5lbWl0KCdiZWZvcmVpdGVtdmlzaWJpbGl0eWNoYW5nZScsIHtcbiAgICAgIGl0ZW06IGl0ZW0sXG4gICAgICB2aXNpYmxlOiB2aXNpYmxlXG4gICAgfSk7XG4gICAgaXRlbS5jaGFuZ2VWaXNpYmlsaXR5KHZpc2libGUpO1xuXG4gICAgaWYgKGl0ZW0uZ2V0VHlwZSAmJiBpdGVtLmdldFR5cGUoKSA9PT0gTk9ERSkge1xuICAgICAgdmFyIGVkZ2VzID0gaXRlbS5nZXRFZGdlcygpO1xuICAgICAgZWFjaChlZGdlcywgZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgLy8g6Iul6ZqQ6JeP6IqC54K577yM5YiZ5bCG5LiO5LmL5YWz6IGU55qE6L655Lmf6ZqQ6JePXG4gICAgICAgIC8vIOiLpeaYvuekuuiKgueCue+8jOWImeWwhuS4juS5i+WFs+iBlOeahOi+ueS5n+aYvuekuu+8jOS9huaYr+mcgOimgeWIpOaWrei+ueS4pOerr+eahOiKgueCuemDveaYr+WPr+ingeeahFxuICAgICAgICBpZiAodmlzaWJsZSAmJiAhKGVkZ2UuZ2V0KCdzb3VyY2UnKS5pc1Zpc2libGUoKSAmJiBlZGdlLmdldCgndGFyZ2V0JykuaXNWaXNpYmxlKCkpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgX3RoaXMuY2hhbmdlSXRlbVZpc2liaWxpdHkoZWRnZSwgdmlzaWJsZSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKGl0ZW0uZ2V0VHlwZSAmJiBpdGVtLmdldFR5cGUoKSA9PT0gQ09NQk8pIHtcbiAgICAgIHZhciBjb21ib1RyZWVzID0gZ3JhcGguZ2V0KCdjb21ib1RyZWVzJyk7XG4gICAgICB2YXIgaWRfMSA9IGl0ZW0uZ2V0KCdpZCcpO1xuICAgICAgdmFyIGNoaWxkcmVuXzEgPSBbXTtcbiAgICAgIHZhciBmb3VuZF8zID0gZmFsc2U7IC8vIGZsYWcgdGhlIHRlcm1pbmF0ZSB0aGUgZm9yRWFjaFxuXG4gICAgICAoY29tYm9UcmVlcyB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbiAoY3RyZWUpIHtcbiAgICAgICAgaWYgKGZvdW5kXzMpIHJldHVybjtcbiAgICAgICAgaWYgKCFjdHJlZS5jaGlsZHJlbiB8fCBjdHJlZS5jaGlsZHJlbi5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICAgICAgdHJhdmVyc2VUcmVlKGN0cmVlLCBmdW5jdGlvbiAoY29tYm8pIHtcbiAgICAgICAgICBpZiAoY29tYm8uaWQgPT09IGlkXzEpIHtcbiAgICAgICAgICAgIGNoaWxkcmVuXzEgPSBjb21iby5jaGlsZHJlbjtcbiAgICAgICAgICAgIGZvdW5kXzMgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyB0ZXJtaW5hdGUgdGhlIHRyYXZlcnNlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChjaGlsZHJlbl8xICYmICghdmlzaWJsZSB8fCB2aXNpYmxlICYmICFpdGVtLmdldE1vZGVsKCkuY29sbGFwc2VkKSkge1xuICAgICAgICBjaGlsZHJlbl8xLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgICAgdmFyIGNoaWxkSXRlbSA9IGdyYXBoLmZpbmRCeUlkKGNoaWxkLmlkKTtcblxuICAgICAgICAgIF90aGlzLmNoYW5nZUl0ZW1WaXNpYmlsaXR5KGNoaWxkSXRlbSwgdmlzaWJsZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB2YXIgZWRnZXMgPSBpdGVtLmdldEVkZ2VzKCk7XG4gICAgICBlYWNoKGVkZ2VzLCBmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAvLyDoi6XpmpDol48gY29tYm/vvIzliJnlsIbkuI4gY29tYm8g5pys6Lqr5YWz6IGU55qE6L655Lmf6ZqQ6JePXG4gICAgICAgIC8vIOiLpeaYvuekuiBjb21ib++8jOWImeWwhuS4jiBjb21ibyDmnKzouqvlhbPogZTnmoTovrnkuZ/mmL7npLrvvIzkvYbmmK/pnIDopoHliKTmlq3ovrnkuKTnq6/nmoToioLngrnpg73mmK/lj6/op4HnmoRcbiAgICAgICAgaWYgKHZpc2libGUgJiYgIShlZGdlLmdldCgnc291cmNlJykuaXNWaXNpYmxlKCkgJiYgZWRnZS5nZXQoJ3RhcmdldCcpLmlzVmlzaWJsZSgpKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIF90aGlzLmNoYW5nZUl0ZW1WaXNpYmlsaXR5KGVkZ2UsIHZpc2libGUpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ3JhcGguZW1pdCgnYWZ0ZXJpdGVtdmlzaWJpbGl0eWNoYW5nZScsIHtcbiAgICAgIGl0ZW06IGl0ZW0sXG4gICAgICB2aXNpYmxlOiB2aXNpYmxlXG4gICAgfSk7XG4gICAgcmV0dXJuIGl0ZW07XG4gIH07XG5cbiAgSXRlbUNvbnRyb2xsZXIucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5ncmFwaCA9IG51bGw7XG4gICAgdGhpcy5kZXN0cm95ZWQgPSB0cnVlO1xuICB9O1xuXG4gIHJldHVybiBJdGVtQ29udHJvbGxlcjtcbn0oKTtcblxuZXhwb3J0IGRlZmF1bHQgSXRlbUNvbnRyb2xsZXI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/item.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/layout.js":
/*!***************************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/layout.js ***!
\***************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util_base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/base */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/base.js\");\n\n\n\n\nvar LayoutController =\n/** @class */\nfunction () {\n function LayoutController(graph) {\n this.graph = graph;\n this.layoutCfg = graph.get('layout') || {};\n this.layoutType = this.getLayoutType();\n this.layoutMethods = [];\n this.initLayout();\n } // eslint-disable-next-line class-methods-use-this\n\n\n LayoutController.prototype.initLayout = function () {// no data before rendering\n };\n\n LayoutController.prototype.getLayoutType = function () {\n return this.getLayoutCfgType(this.layoutCfg);\n };\n\n LayoutController.prototype.getLayoutCfgType = function (layoutCfg) {\n var type = layoutCfg.type; // type should be top priority\n\n if (type) {\n return type;\n }\n\n var pipes = layoutCfg.pipes;\n\n if (Array.isArray(pipes)) {\n return pipes.map(function (pipe) {\n return (pipe === null || pipe === void 0 ? void 0 : pipe.type) || '';\n });\n }\n\n return null;\n };\n\n LayoutController.prototype.isLayoutTypeSame = function (cfg) {\n var current = this.getLayoutCfgType(cfg); // already has pipes\n\n if (Array.isArray(this.layoutType)) {\n return this.layoutType.every(function (type, index) {\n return type === current[index];\n });\n }\n\n return (cfg === null || cfg === void 0 ? void 0 : cfg.type) === this.layoutType;\n }; // 绘制\n\n\n LayoutController.prototype.refreshLayout = function () {\n var graph = this.graph;\n if (!graph) return;\n\n if (graph.get('animate')) {\n graph.positionsAnimate();\n } else {\n graph.refreshPositions();\n }\n }; // 更换布局\n\n\n LayoutController.prototype.changeLayout = function (cfg) {\n this.layoutCfg = cfg;\n this.destoryLayoutMethods();\n this.layout();\n }; // 更换数据\n\n\n LayoutController.prototype.changeData = function () {\n this.destoryLayoutMethods();\n this.layout();\n };\n\n LayoutController.prototype.destoryLayoutMethods = function () {\n var layoutMethods = this.layoutMethods;\n layoutMethods === null || layoutMethods === void 0 ? void 0 : layoutMethods.forEach(function (layoutMethod) {\n layoutMethod.destroy();\n });\n this.layoutMethods = [];\n }; // 销毁布局,不能使用 this.destroy,因为 controller 还需要被使用,只是把布局算法销毁\n\n\n LayoutController.prototype.destroyLayout = function () {\n var graph = this.graph;\n this.destoryLayoutMethods();\n graph.set('layout', undefined);\n this.layoutCfg = undefined;\n this.layoutType = undefined;\n this.layoutMethods = undefined;\n }; // 从 this.graph 获取数据\n\n\n LayoutController.prototype.setDataFromGraph = function () {\n var nodes = [];\n var hiddenNodes = [];\n var edges = [];\n var hiddenEdges = [];\n var comboEdges = [];\n var combos = [];\n var hiddenCombos = [];\n var nodeItems = this.graph.getNodes();\n var edgeItems = this.graph.getEdges();\n var comboItems = this.graph.getCombos();\n var nodeLength = nodeItems.length;\n\n for (var i = 0; i < nodeLength; i++) {\n var nodeItem = nodeItems[i];\n if (!nodeItem || nodeItem.destroyed) continue;\n var model = nodeItem.getModel();\n\n if (!nodeItem.isVisible()) {\n hiddenNodes.push(model);\n continue;\n }\n\n nodes.push(model);\n }\n\n var edgeLength = edgeItems.length;\n\n for (var i = 0; i < edgeLength; i++) {\n var edgeItem = edgeItems[i];\n if (!edgeItem || edgeItem.destroyed) continue;\n var model = edgeItem.getModel();\n\n if (!edgeItem.isVisible()) {\n hiddenEdges.push(model);\n continue;\n }\n\n if (!model.isComboEdge) edges.push(model);else comboEdges.push(model);\n }\n\n var comboLength = comboItems.length;\n\n for (var i = 0; i < comboLength; i++) {\n var comboItem = comboItems[i];\n if (comboItem.destroyed) continue;\n var model = comboItem.getModel();\n\n if (!comboItem.isVisible()) {\n hiddenEdges.push(model);\n continue;\n }\n\n combos.push(model);\n }\n\n return {\n nodes: nodes,\n hiddenNodes: hiddenNodes,\n edges: edges,\n hiddenEdges: hiddenEdges,\n combos: combos,\n hiddenCombos: hiddenCombos,\n comboEdges: comboEdges\n };\n };\n\n LayoutController.prototype.reLayoutMethod = function (layoutMethod, layoutCfg) {\n var _this = this;\n\n return new Promise(function (reslove, reject) {\n var graph = _this.graph;\n var layoutType = layoutCfg === null || layoutCfg === void 0 ? void 0 : layoutCfg.type; // 每个布局方法都需要注册\n\n layoutCfg.onLayoutEnd = function () {\n graph.emit('aftersublayout', {\n type: layoutType\n });\n reslove();\n };\n\n layoutMethod.init(_this.data);\n\n if (layoutType === 'force') {\n layoutMethod.ticking = false;\n layoutMethod.forceSimulation.stop();\n }\n\n graph.emit('beforesublayout', {\n type: layoutType\n });\n layoutMethod.execute();\n if (layoutMethod.isCustomLayout && layoutCfg.onLayoutEnd) layoutCfg.onLayoutEnd();\n });\n }; // 重新布局\n\n\n LayoutController.prototype.relayout = function (reloadData) {\n var _this = this;\n\n var _a = this,\n graph = _a.graph,\n layoutMethods = _a.layoutMethods,\n layoutCfg = _a.layoutCfg;\n\n if (reloadData) {\n this.data = this.setDataFromGraph();\n var nodes = this.data.nodes;\n\n if (!nodes) {\n return false;\n }\n\n this.initPositions(layoutCfg.center, nodes);\n }\n\n graph.emit('beforelayout');\n var start = Promise.resolve();\n layoutMethods === null || layoutMethods === void 0 ? void 0 : layoutMethods.forEach(function (layoutMethod, index) {\n var currentCfg = layoutCfg[index];\n start = start.then(function () {\n return _this.reLayoutMethod(layoutMethod, currentCfg);\n });\n });\n start.then(function () {\n if (layoutCfg.onAllLayoutEnd) layoutCfg.onAllLayoutEnd();\n }).catch(function (error) {\n console.warn('relayout failed', error);\n });\n }; // 筛选参与布局的nodes和edges\n\n\n LayoutController.prototype.filterLayoutData = function (data, cfg) {\n var nodes = data.nodes,\n edges = data.edges,\n rest = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(data, [\"nodes\", \"edges\"]);\n\n if (!nodes) {\n return data;\n }\n\n var nodesFilter;\n var edegsFilter;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(cfg === null || cfg === void 0 ? void 0 : cfg.nodesFilter)) {\n nodesFilter = cfg.nodesFilter;\n } else {\n nodesFilter = function nodesFilter() {\n return true;\n };\n }\n\n var fNodes = nodes.filter(nodesFilter);\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(cfg === null || cfg === void 0 ? void 0 : cfg.edgesFilter)) {\n edegsFilter = cfg.edgesFilter;\n } else {\n var nodesMap_1 = fNodes.reduce(function (acc, cur) {\n acc[cur.id] = true;\n return acc;\n }, {});\n\n edegsFilter = function edegsFilter(edge) {\n return nodesMap_1[edge.source] && nodesMap_1[edge.target];\n };\n }\n\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n nodes: fNodes,\n edges: edges.filter(edegsFilter)\n }, rest);\n };\n\n LayoutController.prototype.getLayoutBBox = function (nodes) {\n var graph = this.graph;\n var graphGroupNodes = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"groupBy\"])(graph.getNodes(), function (n) {\n return n.getModel().layoutOrder;\n });\n var layoutNodes = Object.values(graphGroupNodes).map(function (value) {\n var bbox = Object(_util_base__WEBPACK_IMPORTED_MODULE_2__[\"calculationItemsBBox\"])(value);\n bbox.size = [bbox.width, bbox.height];\n return bbox;\n });\n var groupNodes = Object.values(Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"groupBy\"])(nodes, 'layoutOrder'));\n return {\n groupNodes: groupNodes,\n layoutNodes: layoutNodes\n };\n }; // 控制布局动画\n // eslint-disable-next-line class-methods-use-this\n\n\n LayoutController.prototype.layoutAnimate = function () {}; // 将当前节点的平均中心移动到原点\n\n\n LayoutController.prototype.moveToZero = function () {\n var graph = this.graph;\n var data = graph.get('data');\n var nodes = data.nodes;\n\n if (nodes[0].x === undefined || nodes[0].x === null || Object(_util_base__WEBPACK_IMPORTED_MODULE_2__[\"isNaN\"])(nodes[0].x)) {\n return;\n }\n\n var meanCenter = [0, 0];\n var nodeLength = nodes.length;\n\n for (var i = 0; i < nodeLength; i++) {\n var node = nodes[i];\n meanCenter[0] += node.x;\n meanCenter[1] += node.y;\n }\n\n meanCenter[0] /= nodes.length;\n meanCenter[1] /= nodes.length;\n\n for (var i = 0; i < nodeLength; i++) {\n var node = nodes[i];\n node.x -= meanCenter[0];\n node.y -= meanCenter[1];\n }\n }; // 初始化节点到 center 附近\n\n\n LayoutController.prototype.initPositions = function (center, nodes) {\n var graph = this.graph;\n\n if (!nodes) {\n return false;\n }\n\n var nodeLength = nodes ? nodes.length : 0;\n if (!nodeLength) return;\n var width = graph.get('width') * 0.85;\n var height = graph.get('height') * 0.85;\n var horiNum = Math.ceil(Math.sqrt(nodeLength) * (width / height));\n var vertiNum = Math.ceil(nodeLength / horiNum);\n var horiGap = width / (horiNum - 1);\n var vertiGap = height / (vertiNum - 1);\n if (!isFinite(horiGap) || !horiGap) horiGap = 0;\n if (!isFinite(vertiGap) || !horiGap) vertiGap = 0;\n var beginX = center[0] - width / 2;\n var beginY = center[1] - height / 2;\n var allHavePos = true;\n\n for (var i = 0; i < nodeLength; i++) {\n var node = nodes[i];\n\n if (Object(_util_base__WEBPACK_IMPORTED_MODULE_2__[\"isNaN\"])(+node.x)) {\n allHavePos = false;\n node.x = i % horiNum * horiGap + beginX;\n }\n\n if (Object(_util_base__WEBPACK_IMPORTED_MODULE_2__[\"isNaN\"])(+node.y)) {\n allHavePos = false;\n node.y = Math.floor(i / horiNum) * vertiGap + beginY;\n }\n }\n\n return allHavePos;\n };\n\n LayoutController.prototype.destroy = function () {\n this.graph = null;\n this.destoryLayoutMethods();\n this.destroyed = true;\n };\n\n return LayoutController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (LayoutController);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL2xheW91dC5qcz8yNjhiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXlDO0FBQ1E7QUFDYTs7QUFFOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0gsdURBQXVEO0FBQ3ZEOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhCQUE4Qjs7QUFFOUI7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsNkNBQTZDOztBQUU3QztBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsZ0RBQWdEO0FBQ2hEOztBQUVBOztBQUVBLG1CQUFtQixpQkFBaUI7QUFDcEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNEZBQTRGOztBQUU1RjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsSUFBSTs7O0FBR0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMLElBQUk7OztBQUdKO0FBQ0E7QUFDQTtBQUNBLGVBQWUsb0RBQU07O0FBRXJCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLFFBQVEsNkRBQVU7QUFDbEI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsUUFBUSw2REFBVTtBQUNsQjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxPQUFPLElBQUk7O0FBRVg7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsV0FBVyxzREFBUTtBQUNuQjtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQSwwQkFBMEIsMERBQU87QUFDakM7QUFDQSxLQUFLO0FBQ0w7QUFDQSxpQkFBaUIsdUVBQW9CO0FBQ3JDO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsbUNBQW1DLDBEQUFPO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOzs7QUFHQSw0REFBNEQ7OztBQUc1RDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwyREFBMkQsd0RBQUs7QUFDaEU7QUFDQTs7QUFFQTtBQUNBOztBQUVBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxtQkFBbUIsZ0JBQWdCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQzs7QUFFQSxVQUFVLHdEQUFLO0FBQ2Y7QUFDQTtBQUNBOztBQUVBLFVBQVUsd0RBQUs7QUFDZjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVjLCtFQUFnQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtY29yZUAwLjUuMEBAYW50di9nNi1jb3JlL2VzL2dyYXBoL2NvbnRyb2xsZXIvbGF5b3V0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24sIF9fcmVzdCB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgaXNGdW5jdGlvbiwgZ3JvdXBCeSB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgaXNOYU4sIGNhbGN1bGF0aW9uSXRlbXNCQm94IH0gZnJvbSAnLi4vLi4vdXRpbC9iYXNlJztcblxudmFyIExheW91dENvbnRyb2xsZXIgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBMYXlvdXRDb250cm9sbGVyKGdyYXBoKSB7XG4gICAgdGhpcy5ncmFwaCA9IGdyYXBoO1xuICAgIHRoaXMubGF5b3V0Q2ZnID0gZ3JhcGguZ2V0KCdsYXlvdXQnKSB8fCB7fTtcbiAgICB0aGlzLmxheW91dFR5cGUgPSB0aGlzLmdldExheW91dFR5cGUoKTtcbiAgICB0aGlzLmxheW91dE1ldGhvZHMgPSBbXTtcbiAgICB0aGlzLmluaXRMYXlvdXQoKTtcbiAgfSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2xhc3MtbWV0aG9kcy11c2UtdGhpc1xuXG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUuaW5pdExheW91dCA9IGZ1bmN0aW9uICgpIHsvLyBubyBkYXRhIGJlZm9yZSByZW5kZXJpbmdcbiAgfTtcblxuICBMYXlvdXRDb250cm9sbGVyLnByb3RvdHlwZS5nZXRMYXlvdXRUeXBlID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldExheW91dENmZ1R5cGUodGhpcy5sYXlvdXRDZmcpO1xuICB9O1xuXG4gIExheW91dENvbnRyb2xsZXIucHJvdG90eXBlLmdldExheW91dENmZ1R5cGUgPSBmdW5jdGlvbiAobGF5b3V0Q2ZnKSB7XG4gICAgdmFyIHR5cGUgPSBsYXlvdXRDZmcudHlwZTsgLy8gdHlwZSBzaG91bGQgYmUgdG9wIHByaW9yaXR5XG5cbiAgICBpZiAodHlwZSkge1xuICAgICAgcmV0dXJuIHR5cGU7XG4gICAgfVxuXG4gICAgdmFyIHBpcGVzID0gbGF5b3V0Q2ZnLnBpcGVzO1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkocGlwZXMpKSB7XG4gICAgICByZXR1cm4gcGlwZXMubWFwKGZ1bmN0aW9uIChwaXBlKSB7XG4gICAgICAgIHJldHVybiAocGlwZSA9PT0gbnVsbCB8fCBwaXBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwaXBlLnR5cGUpIHx8ICcnO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUuaXNMYXlvdXRUeXBlU2FtZSA9IGZ1bmN0aW9uIChjZmcpIHtcbiAgICB2YXIgY3VycmVudCA9IHRoaXMuZ2V0TGF5b3V0Q2ZnVHlwZShjZmcpOyAvLyBhbHJlYWR5IGhhcyBwaXBlc1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5sYXlvdXRUeXBlKSkge1xuICAgICAgcmV0dXJuIHRoaXMubGF5b3V0VHlwZS5ldmVyeShmdW5jdGlvbiAodHlwZSwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIHR5cGUgPT09IGN1cnJlbnRbaW5kZXhdO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIChjZmcgPT09IG51bGwgfHwgY2ZnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjZmcudHlwZSkgPT09IHRoaXMubGF5b3V0VHlwZTtcbiAgfTsgLy8g57uY5Yi2XG5cblxuICBMYXlvdXRDb250cm9sbGVyLnByb3RvdHlwZS5yZWZyZXNoTGF5b3V0ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgaWYgKCFncmFwaCkgcmV0dXJuO1xuXG4gICAgaWYgKGdyYXBoLmdldCgnYW5pbWF0ZScpKSB7XG4gICAgICBncmFwaC5wb3NpdGlvbnNBbmltYXRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGdyYXBoLnJlZnJlc2hQb3NpdGlvbnMoKTtcbiAgICB9XG4gIH07IC8vIOabtOaNouW4g+WxgFxuXG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUuY2hhbmdlTGF5b3V0ID0gZnVuY3Rpb24gKGNmZykge1xuICAgIHRoaXMubGF5b3V0Q2ZnID0gY2ZnO1xuICAgIHRoaXMuZGVzdG9yeUxheW91dE1ldGhvZHMoKTtcbiAgICB0aGlzLmxheW91dCgpO1xuICB9OyAvLyDmm7TmjaLmlbDmja5cblxuXG4gIExheW91dENvbnRyb2xsZXIucHJvdG90eXBlLmNoYW5nZURhdGEgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5kZXN0b3J5TGF5b3V0TWV0aG9kcygpO1xuICAgIHRoaXMubGF5b3V0KCk7XG4gIH07XG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUuZGVzdG9yeUxheW91dE1ldGhvZHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxheW91dE1ldGhvZHMgPSB0aGlzLmxheW91dE1ldGhvZHM7XG4gICAgbGF5b3V0TWV0aG9kcyA9PT0gbnVsbCB8fCBsYXlvdXRNZXRob2RzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBsYXlvdXRNZXRob2RzLmZvckVhY2goZnVuY3Rpb24gKGxheW91dE1ldGhvZCkge1xuICAgICAgbGF5b3V0TWV0aG9kLmRlc3Ryb3koKTtcbiAgICB9KTtcbiAgICB0aGlzLmxheW91dE1ldGhvZHMgPSBbXTtcbiAgfTsgLy8g6ZSA5q+B5biD5bGA77yM5LiN6IO95L2/55SoIHRoaXMuZGVzdHJvee+8jOWboOS4uiBjb250cm9sbGVyIOi/mOmcgOimgeiiq+S9v+eUqO+8jOWPquaYr+aKiuW4g+WxgOeul+azlemUgOavgVxuXG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUuZGVzdHJveUxheW91dCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIHRoaXMuZGVzdG9yeUxheW91dE1ldGhvZHMoKTtcbiAgICBncmFwaC5zZXQoJ2xheW91dCcsIHVuZGVmaW5lZCk7XG4gICAgdGhpcy5sYXlvdXRDZmcgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5sYXlvdXRUeXBlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMubGF5b3V0TWV0aG9kcyA9IHVuZGVmaW5lZDtcbiAgfTsgLy8g5LuOIHRoaXMuZ3JhcGgg6I635Y+W5pWw5o2uXG5cblxuICBMYXlvdXRDb250cm9sbGVyLnByb3RvdHlwZS5zZXREYXRhRnJvbUdyYXBoID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBub2RlcyA9IFtdO1xuICAgIHZhciBoaWRkZW5Ob2RlcyA9IFtdO1xuICAgIHZhciBlZGdlcyA9IFtdO1xuICAgIHZhciBoaWRkZW5FZGdlcyA9IFtdO1xuICAgIHZhciBjb21ib0VkZ2VzID0gW107XG4gICAgdmFyIGNvbWJvcyA9IFtdO1xuICAgIHZhciBoaWRkZW5Db21ib3MgPSBbXTtcbiAgICB2YXIgbm9kZUl0ZW1zID0gdGhpcy5ncmFwaC5nZXROb2RlcygpO1xuICAgIHZhciBlZGdlSXRlbXMgPSB0aGlzLmdyYXBoLmdldEVkZ2VzKCk7XG4gICAgdmFyIGNvbWJvSXRlbXMgPSB0aGlzLmdyYXBoLmdldENvbWJvcygpO1xuICAgIHZhciBub2RlTGVuZ3RoID0gbm9kZUl0ZW1zLmxlbmd0aDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZUxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbm9kZUl0ZW0gPSBub2RlSXRlbXNbaV07XG4gICAgICBpZiAoIW5vZGVJdGVtIHx8IG5vZGVJdGVtLmRlc3Ryb3llZCkgY29udGludWU7XG4gICAgICB2YXIgbW9kZWwgPSBub2RlSXRlbS5nZXRNb2RlbCgpO1xuXG4gICAgICBpZiAoIW5vZGVJdGVtLmlzVmlzaWJsZSgpKSB7XG4gICAgICAgIGhpZGRlbk5vZGVzLnB1c2gobW9kZWwpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgbm9kZXMucHVzaChtb2RlbCk7XG4gICAgfVxuXG4gICAgdmFyIGVkZ2VMZW5ndGggPSBlZGdlSXRlbXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlZGdlTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlZGdlSXRlbSA9IGVkZ2VJdGVtc1tpXTtcbiAgICAgIGlmICghZWRnZUl0ZW0gfHwgZWRnZUl0ZW0uZGVzdHJveWVkKSBjb250aW51ZTtcbiAgICAgIHZhciBtb2RlbCA9IGVkZ2VJdGVtLmdldE1vZGVsKCk7XG5cbiAgICAgIGlmICghZWRnZUl0ZW0uaXNWaXNpYmxlKCkpIHtcbiAgICAgICAgaGlkZGVuRWRnZXMucHVzaChtb2RlbCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIW1vZGVsLmlzQ29tYm9FZGdlKSBlZGdlcy5wdXNoKG1vZGVsKTtlbHNlIGNvbWJvRWRnZXMucHVzaChtb2RlbCk7XG4gICAgfVxuXG4gICAgdmFyIGNvbWJvTGVuZ3RoID0gY29tYm9JdGVtcy5sZW5ndGg7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbWJvTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjb21ib0l0ZW0gPSBjb21ib0l0ZW1zW2ldO1xuICAgICAgaWYgKGNvbWJvSXRlbS5kZXN0cm95ZWQpIGNvbnRpbnVlO1xuICAgICAgdmFyIG1vZGVsID0gY29tYm9JdGVtLmdldE1vZGVsKCk7XG5cbiAgICAgIGlmICghY29tYm9JdGVtLmlzVmlzaWJsZSgpKSB7XG4gICAgICAgIGhpZGRlbkVkZ2VzLnB1c2gobW9kZWwpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29tYm9zLnB1c2gobW9kZWwpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBub2Rlczogbm9kZXMsXG4gICAgICBoaWRkZW5Ob2RlczogaGlkZGVuTm9kZXMsXG4gICAgICBlZGdlczogZWRnZXMsXG4gICAgICBoaWRkZW5FZGdlczogaGlkZGVuRWRnZXMsXG4gICAgICBjb21ib3M6IGNvbWJvcyxcbiAgICAgIGhpZGRlbkNvbWJvczogaGlkZGVuQ29tYm9zLFxuICAgICAgY29tYm9FZGdlczogY29tYm9FZGdlc1xuICAgIH07XG4gIH07XG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUucmVMYXlvdXRNZXRob2QgPSBmdW5jdGlvbiAobGF5b3V0TWV0aG9kLCBsYXlvdXRDZmcpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNsb3ZlLCByZWplY3QpIHtcbiAgICAgIHZhciBncmFwaCA9IF90aGlzLmdyYXBoO1xuICAgICAgdmFyIGxheW91dFR5cGUgPSBsYXlvdXRDZmcgPT09IG51bGwgfHwgbGF5b3V0Q2ZnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBsYXlvdXRDZmcudHlwZTsgLy8g5q+P5Liq5biD5bGA5pa55rOV6YO96ZyA6KaB5rOo5YaMXG5cbiAgICAgIGxheW91dENmZy5vbkxheW91dEVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZ3JhcGguZW1pdCgnYWZ0ZXJzdWJsYXlvdXQnLCB7XG4gICAgICAgICAgdHlwZTogbGF5b3V0VHlwZVxuICAgICAgICB9KTtcbiAgICAgICAgcmVzbG92ZSgpO1xuICAgICAgfTtcblxuICAgICAgbGF5b3V0TWV0aG9kLmluaXQoX3RoaXMuZGF0YSk7XG5cbiAgICAgIGlmIChsYXlvdXRUeXBlID09PSAnZm9yY2UnKSB7XG4gICAgICAgIGxheW91dE1ldGhvZC50aWNraW5nID0gZmFsc2U7XG4gICAgICAgIGxheW91dE1ldGhvZC5mb3JjZVNpbXVsYXRpb24uc3RvcCgpO1xuICAgICAgfVxuXG4gICAgICBncmFwaC5lbWl0KCdiZWZvcmVzdWJsYXlvdXQnLCB7XG4gICAgICAgIHR5cGU6IGxheW91dFR5cGVcbiAgICAgIH0pO1xuICAgICAgbGF5b3V0TWV0aG9kLmV4ZWN1dGUoKTtcbiAgICAgIGlmIChsYXlvdXRNZXRob2QuaXNDdXN0b21MYXlvdXQgJiYgbGF5b3V0Q2ZnLm9uTGF5b3V0RW5kKSBsYXlvdXRDZmcub25MYXlvdXRFbmQoKTtcbiAgICB9KTtcbiAgfTsgLy8g6YeN5paw5biD5bGAXG5cblxuICBMYXlvdXRDb250cm9sbGVyLnByb3RvdHlwZS5yZWxheW91dCA9IGZ1bmN0aW9uIChyZWxvYWREYXRhKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBfYSA9IHRoaXMsXG4gICAgICAgIGdyYXBoID0gX2EuZ3JhcGgsXG4gICAgICAgIGxheW91dE1ldGhvZHMgPSBfYS5sYXlvdXRNZXRob2RzLFxuICAgICAgICBsYXlvdXRDZmcgPSBfYS5sYXlvdXRDZmc7XG5cbiAgICBpZiAocmVsb2FkRGF0YSkge1xuICAgICAgdGhpcy5kYXRhID0gdGhpcy5zZXREYXRhRnJvbUdyYXBoKCk7XG4gICAgICB2YXIgbm9kZXMgPSB0aGlzLmRhdGEubm9kZXM7XG5cbiAgICAgIGlmICghbm9kZXMpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmluaXRQb3NpdGlvbnMobGF5b3V0Q2ZnLmNlbnRlciwgbm9kZXMpO1xuICAgIH1cblxuICAgIGdyYXBoLmVtaXQoJ2JlZm9yZWxheW91dCcpO1xuICAgIHZhciBzdGFydCA9IFByb21pc2UucmVzb2x2ZSgpO1xuICAgIGxheW91dE1ldGhvZHMgPT09IG51bGwgfHwgbGF5b3V0TWV0aG9kcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogbGF5b3V0TWV0aG9kcy5mb3JFYWNoKGZ1bmN0aW9uIChsYXlvdXRNZXRob2QsIGluZGV4KSB7XG4gICAgICB2YXIgY3VycmVudENmZyA9IGxheW91dENmZ1tpbmRleF07XG4gICAgICBzdGFydCA9IHN0YXJ0LnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gX3RoaXMucmVMYXlvdXRNZXRob2QobGF5b3V0TWV0aG9kLCBjdXJyZW50Q2ZnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHN0YXJ0LnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKGxheW91dENmZy5vbkFsbExheW91dEVuZCkgbGF5b3V0Q2ZnLm9uQWxsTGF5b3V0RW5kKCk7XG4gICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ3JlbGF5b3V0IGZhaWxlZCcsIGVycm9yKTtcbiAgICB9KTtcbiAgfTsgLy8g562b6YCJ5Y+C5LiO5biD5bGA55qEbm9kZXPlkoxlZGdlc1xuXG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUuZmlsdGVyTGF5b3V0RGF0YSA9IGZ1bmN0aW9uIChkYXRhLCBjZmcpIHtcbiAgICB2YXIgbm9kZXMgPSBkYXRhLm5vZGVzLFxuICAgICAgICBlZGdlcyA9IGRhdGEuZWRnZXMsXG4gICAgICAgIHJlc3QgPSBfX3Jlc3QoZGF0YSwgW1wibm9kZXNcIiwgXCJlZGdlc1wiXSk7XG5cbiAgICBpZiAoIW5vZGVzKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICB2YXIgbm9kZXNGaWx0ZXI7XG4gICAgdmFyIGVkZWdzRmlsdGVyO1xuXG4gICAgaWYgKGlzRnVuY3Rpb24oY2ZnID09PSBudWxsIHx8IGNmZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2ZnLm5vZGVzRmlsdGVyKSkge1xuICAgICAgbm9kZXNGaWx0ZXIgPSBjZmcubm9kZXNGaWx0ZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGVzRmlsdGVyID0gZnVuY3Rpb24gbm9kZXNGaWx0ZXIoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgZk5vZGVzID0gbm9kZXMuZmlsdGVyKG5vZGVzRmlsdGVyKTtcblxuICAgIGlmIChpc0Z1bmN0aW9uKGNmZyA9PT0gbnVsbCB8fCBjZmcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNmZy5lZGdlc0ZpbHRlcikpIHtcbiAgICAgIGVkZWdzRmlsdGVyID0gY2ZnLmVkZ2VzRmlsdGVyO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbm9kZXNNYXBfMSA9IGZOb2Rlcy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgY3VyKSB7XG4gICAgICAgIGFjY1tjdXIuaWRdID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIHt9KTtcblxuICAgICAgZWRlZ3NGaWx0ZXIgPSBmdW5jdGlvbiBlZGVnc0ZpbHRlcihlZGdlKSB7XG4gICAgICAgIHJldHVybiBub2Rlc01hcF8xW2VkZ2Uuc291cmNlXSAmJiBub2Rlc01hcF8xW2VkZ2UudGFyZ2V0XTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIF9fYXNzaWduKHtcbiAgICAgIG5vZGVzOiBmTm9kZXMsXG4gICAgICBlZGdlczogZWRnZXMuZmlsdGVyKGVkZWdzRmlsdGVyKVxuICAgIH0sIHJlc3QpO1xuICB9O1xuXG4gIExheW91dENvbnRyb2xsZXIucHJvdG90eXBlLmdldExheW91dEJCb3ggPSBmdW5jdGlvbiAobm9kZXMpIHtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIHZhciBncmFwaEdyb3VwTm9kZXMgPSBncm91cEJ5KGdyYXBoLmdldE5vZGVzKCksIGZ1bmN0aW9uIChuKSB7XG4gICAgICByZXR1cm4gbi5nZXRNb2RlbCgpLmxheW91dE9yZGVyO1xuICAgIH0pO1xuICAgIHZhciBsYXlvdXROb2RlcyA9IE9iamVjdC52YWx1ZXMoZ3JhcGhHcm91cE5vZGVzKS5tYXAoZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICB2YXIgYmJveCA9IGNhbGN1bGF0aW9uSXRlbXNCQm94KHZhbHVlKTtcbiAgICAgIGJib3guc2l6ZSA9IFtiYm94LndpZHRoLCBiYm94LmhlaWdodF07XG4gICAgICByZXR1cm4gYmJveDtcbiAgICB9KTtcbiAgICB2YXIgZ3JvdXBOb2RlcyA9IE9iamVjdC52YWx1ZXMoZ3JvdXBCeShub2RlcywgJ2xheW91dE9yZGVyJykpO1xuICAgIHJldHVybiB7XG4gICAgICBncm91cE5vZGVzOiBncm91cE5vZGVzLFxuICAgICAgbGF5b3V0Tm9kZXM6IGxheW91dE5vZGVzXG4gICAgfTtcbiAgfTsgLy8g5o6n5Yi25biD5bGA5Yqo55S7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzXG5cblxuICBMYXlvdXRDb250cm9sbGVyLnByb3RvdHlwZS5sYXlvdXRBbmltYXRlID0gZnVuY3Rpb24gKCkge307IC8vIOWwhuW9k+WJjeiKgueCueeahOW5s+Wdh+S4reW/g+enu+WKqOWIsOWOn+eCuVxuXG5cbiAgTGF5b3V0Q29udHJvbGxlci5wcm90b3R5cGUubW92ZVRvWmVybyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIHZhciBkYXRhID0gZ3JhcGguZ2V0KCdkYXRhJyk7XG4gICAgdmFyIG5vZGVzID0gZGF0YS5ub2RlcztcblxuICAgIGlmIChub2Rlc1swXS54ID09PSB1bmRlZmluZWQgfHwgbm9kZXNbMF0ueCA9PT0gbnVsbCB8fCBpc05hTihub2Rlc1swXS54KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBtZWFuQ2VudGVyID0gWzAsIDBdO1xuICAgIHZhciBub2RlTGVuZ3RoID0gbm9kZXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBub2RlID0gbm9kZXNbaV07XG4gICAgICBtZWFuQ2VudGVyWzBdICs9IG5vZGUueDtcbiAgICAgIG1lYW5DZW50ZXJbMV0gKz0gbm9kZS55O1xuICAgIH1cblxuICAgIG1lYW5DZW50ZXJbMF0gLz0gbm9kZXMubGVuZ3RoO1xuICAgIG1lYW5DZW50ZXJbMV0gLz0gbm9kZXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBub2RlID0gbm9kZXNbaV07XG4gICAgICBub2RlLnggLT0gbWVhbkNlbnRlclswXTtcbiAgICAgIG5vZGUueSAtPSBtZWFuQ2VudGVyWzFdO1xuICAgIH1cbiAgfTsgLy8g5Yid5aeL5YyW6IqC54K55YiwIGNlbnRlciDpmYTov5FcblxuXG4gIExheW91dENvbnRyb2xsZXIucHJvdG90eXBlLmluaXRQb3NpdGlvbnMgPSBmdW5jdGlvbiAoY2VudGVyLCBub2Rlcykge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAoIW5vZGVzKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdmFyIG5vZGVMZW5ndGggPSBub2RlcyA/IG5vZGVzLmxlbmd0aCA6IDA7XG4gICAgaWYgKCFub2RlTGVuZ3RoKSByZXR1cm47XG4gICAgdmFyIHdpZHRoID0gZ3JhcGguZ2V0KCd3aWR0aCcpICogMC44NTtcbiAgICB2YXIgaGVpZ2h0ID0gZ3JhcGguZ2V0KCdoZWlnaHQnKSAqIDAuODU7XG4gICAgdmFyIGhvcmlOdW0gPSBNYXRoLmNlaWwoTWF0aC5zcXJ0KG5vZGVMZW5ndGgpICogKHdpZHRoIC8gaGVpZ2h0KSk7XG4gICAgdmFyIHZlcnRpTnVtID0gTWF0aC5jZWlsKG5vZGVMZW5ndGggLyBob3JpTnVtKTtcbiAgICB2YXIgaG9yaUdhcCA9IHdpZHRoIC8gKGhvcmlOdW0gLSAxKTtcbiAgICB2YXIgdmVydGlHYXAgPSBoZWlnaHQgLyAodmVydGlOdW0gLSAxKTtcbiAgICBpZiAoIWlzRmluaXRlKGhvcmlHYXApIHx8ICFob3JpR2FwKSBob3JpR2FwID0gMDtcbiAgICBpZiAoIWlzRmluaXRlKHZlcnRpR2FwKSB8fCAhaG9yaUdhcCkgdmVydGlHYXAgPSAwO1xuICAgIHZhciBiZWdpblggPSBjZW50ZXJbMF0gLSB3aWR0aCAvIDI7XG4gICAgdmFyIGJlZ2luWSA9IGNlbnRlclsxXSAtIGhlaWdodCAvIDI7XG4gICAgdmFyIGFsbEhhdmVQb3MgPSB0cnVlO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBub2RlID0gbm9kZXNbaV07XG5cbiAgICAgIGlmIChpc05hTigrbm9kZS54KSkge1xuICAgICAgICBhbGxIYXZlUG9zID0gZmFsc2U7XG4gICAgICAgIG5vZGUueCA9IGkgJSBob3JpTnVtICogaG9yaUdhcCArIGJlZ2luWDtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzTmFOKCtub2RlLnkpKSB7XG4gICAgICAgIGFsbEhhdmVQb3MgPSBmYWxzZTtcbiAgICAgICAgbm9kZS55ID0gTWF0aC5mbG9vcihpIC8gaG9yaU51bSkgKiB2ZXJ0aUdhcCArIGJlZ2luWTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYWxsSGF2ZVBvcztcbiAgfTtcblxuICBMYXlvdXRDb250cm9sbGVyLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZ3JhcGggPSBudWxsO1xuICAgIHRoaXMuZGVzdG9yeUxheW91dE1ldGhvZHMoKTtcbiAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XG4gIH07XG5cbiAgcmV0dXJuIExheW91dENvbnRyb2xsZXI7XG59KCk7XG5cbmV4cG9ydCBkZWZhdWx0IExheW91dENvbnRyb2xsZXI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/layout.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/mode.js":
/*!*************************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/mode.js ***!
\*************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _behavior_behavior__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../behavior/behavior */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/behavior/behavior.js\");\n\n\n\nvar ModeController =\n/** @class */\nfunction () {\n function ModeController(graph) {\n this.graph = graph;\n this.destroyed = false;\n this.modes = graph.get('modes') || {\n default: []\n };\n this.formatModes();\n this.mode = graph.get('defaultMode') || 'default';\n this.currentBehaves = [];\n this.setMode(this.mode);\n }\n\n ModeController.prototype.formatModes = function () {\n var modes = this.modes;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(modes, function (mode) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(mode, function (behavior, i) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(behavior)) {\n mode[i] = {\n type: behavior\n };\n }\n });\n });\n };\n\n ModeController.prototype.setBehaviors = function (mode) {\n var graph = this.graph;\n var behaviors = this.modes[mode];\n var behaves = [];\n var behave;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(behaviors || [], function (behavior) {\n var BehaviorInstance = _behavior_behavior__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getBehavior(behavior.type || behavior);\n\n if (!BehaviorInstance) {\n return;\n }\n\n behave = new BehaviorInstance(behavior);\n\n if (behave) {\n behave.bind(graph);\n behaves.push(behave);\n }\n });\n this.currentBehaves = behaves;\n };\n\n ModeController.mergeBehaviors = function (modeBehaviors, behaviors) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(behaviors, function (behavior) {\n if (modeBehaviors.indexOf(behavior) < 0) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(behavior)) {\n behavior = {\n type: behavior\n };\n }\n\n modeBehaviors.push(behavior);\n }\n });\n return modeBehaviors;\n };\n\n ModeController.filterBehaviors = function (modeBehaviors, behaviors) {\n var result = [];\n modeBehaviors.forEach(function (behavior) {\n var type = '';\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(behavior)) {\n type = behavior;\n } else {\n // eslint-disable-next-line prefer-destructuring\n type = behavior.type;\n }\n\n if (behaviors.indexOf(type) < 0) {\n result.push(behavior);\n }\n });\n return result;\n };\n\n ModeController.prototype.setMode = function (mode) {\n var _a = this,\n modes = _a.modes,\n graph = _a.graph;\n\n var current = mode;\n var behaviors = modes[current];\n\n if (!behaviors) {\n return;\n }\n\n graph.emit('beforemodechange', {\n mode: mode\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(this.currentBehaves, function (behave) {\n if (behave.delegate) behave.delegate.remove();\n behave.unbind(graph);\n });\n this.setBehaviors(current);\n graph.emit('aftermodechange', {\n mode: mode\n });\n this.mode = mode;\n };\n\n ModeController.prototype.getMode = function () {\n return this.mode;\n };\n /**\n * 动态增加或删除 Behavior\n *\n * @param {ModeType[]} behaviors\n * @param {(ModeType[] | ModeType)} modes\n * @param {boolean} isAdd\n * @returns {Mode}\n * @memberof Mode\n */\n\n\n ModeController.prototype.manipulateBehaviors = function (behaviors, modes, isAdd) {\n var _this = this;\n\n var behaves;\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(behaviors)) {\n behaves = [behaviors];\n } else {\n behaves = behaviors;\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(modes)) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(modes, function (mode) {\n if (!_this.modes[mode]) {\n if (isAdd) {\n _this.modes[mode] = behaves;\n }\n } else if (isAdd) {\n _this.modes[mode] = ModeController.mergeBehaviors(_this.modes[mode] || [], behaves);\n } else {\n _this.modes[mode] = ModeController.filterBehaviors(_this.modes[mode] || [], behaves);\n }\n });\n return this;\n }\n\n var currentMode = modes;\n\n if (!modes) {\n currentMode = this.mode; // isString(this.mode) ? this.mode : this.mode.type\n }\n\n if (!this.modes[currentMode]) {\n if (isAdd) {\n this.modes[currentMode] = behaves;\n }\n }\n\n if (isAdd) {\n this.modes[currentMode] = ModeController.mergeBehaviors(this.modes[currentMode] || [], behaves);\n } else {\n this.modes[currentMode] = ModeController.filterBehaviors(this.modes[currentMode] || [], behaves);\n }\n\n this.formatModes();\n this.setMode(this.mode);\n return this;\n };\n /**\n * 更新行为参数\n * @param {string | ModeOption | ModeType} behavior 需要更新的行为\n * @param {string | string[]} modes 指定的模式中的行为,不指定则为 default\n * @return {Graph} Graph\n */\n\n\n ModeController.prototype.updateBehavior = function (behavior, newCfg, mode) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(behavior)) {\n behavior = {\n type: behavior\n };\n }\n\n var behaviorSet = [];\n\n if (!mode || mode === this.mode || mode === 'default') {\n behaviorSet = this.currentBehaves;\n\n if (!behaviorSet || !behaviorSet.length) {\n console.warn('Update behavior failed! There is no behaviors in this mode on the graph.');\n return this;\n }\n\n var length_1 = behaviorSet.length;\n\n for (var i = 0; i < length_1; i++) {\n var behave = behaviorSet[i];\n\n if (behave.type === behavior.type) {\n behave.updateCfg(newCfg);\n return this;\n }\n\n if (i === length_1 - 1) console.warn('Update behavior failed! There is no such behavior in the mode');\n }\n } else {\n behaviorSet = this.modes[mode];\n\n if (!behaviorSet || !behaviorSet.length) {\n console.warn('Update behavior failed! There is no behaviors in this mode on the graph.');\n return this;\n }\n\n var length_2 = behaviorSet.length;\n\n for (var i = 0; i < length_2; i++) {\n var behave = behaviorSet[i];\n\n if (behave.type === behavior.type || behave === behavior.type) {\n if (behave === behavior.type) behave = {\n type: behave\n };\n Object.assign(behave, newCfg);\n behaviorSet[i] = behave;\n return this;\n }\n\n if (i === length_2 - 1) console.warn('Update behavior failed! There is no such behavior in the mode');\n }\n }\n\n return this;\n };\n\n ModeController.prototype.destroy = function () {\n this.graph = null;\n this.modes = null;\n this.currentBehaves = null;\n this.destroyed = true;\n };\n\n return ModeController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ModeController);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL21vZGUuanM/MGJiNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBcUQ7QUFDTjs7QUFFL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSSx1REFBSTtBQUNSLE1BQU0sdURBQUk7QUFDVixZQUFZLDJEQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx1REFBSTtBQUNSLDZCQUE2QiwwREFBUTs7QUFFckM7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQSxZQUFZLDJEQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxVQUFVLDJEQUFRO0FBQ2xCO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMLElBQUksdURBQUk7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsV0FBVztBQUN4QixhQUFhLHdCQUF3QjtBQUNyQyxhQUFhLFFBQVE7QUFDckIsZUFBZTtBQUNmO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7O0FBRUEsU0FBUywwREFBTztBQUNoQjtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBLFFBQVEsMERBQU87QUFDZixNQUFNLHVEQUFJO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBOztBQUVBO0FBQ0EsOEJBQThCO0FBQzlCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsK0JBQStCO0FBQzVDLGFBQWEsa0JBQWtCO0FBQy9CLGNBQWMsTUFBTTtBQUNwQjs7O0FBR0E7QUFDQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEscUJBQXFCLGNBQWM7QUFDbkM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxxQkFBcUIsY0FBYztBQUNuQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRWMsNkVBQWMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL21vZGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlYWNoLCBpc0FycmF5LCBpc1N0cmluZyB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IEJlaGF2aW9yIGZyb20gJy4uLy4uL2JlaGF2aW9yL2JlaGF2aW9yJztcblxudmFyIE1vZGVDb250cm9sbGVyID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gTW9kZUNvbnRyb2xsZXIoZ3JhcGgpIHtcbiAgICB0aGlzLmdyYXBoID0gZ3JhcGg7XG4gICAgdGhpcy5kZXN0cm95ZWQgPSBmYWxzZTtcbiAgICB0aGlzLm1vZGVzID0gZ3JhcGguZ2V0KCdtb2RlcycpIHx8IHtcbiAgICAgIGRlZmF1bHQ6IFtdXG4gICAgfTtcbiAgICB0aGlzLmZvcm1hdE1vZGVzKCk7XG4gICAgdGhpcy5tb2RlID0gZ3JhcGguZ2V0KCdkZWZhdWx0TW9kZScpIHx8ICdkZWZhdWx0JztcbiAgICB0aGlzLmN1cnJlbnRCZWhhdmVzID0gW107XG4gICAgdGhpcy5zZXRNb2RlKHRoaXMubW9kZSk7XG4gIH1cblxuICBNb2RlQ29udHJvbGxlci5wcm90b3R5cGUuZm9ybWF0TW9kZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG1vZGVzID0gdGhpcy5tb2RlcztcbiAgICBlYWNoKG1vZGVzLCBmdW5jdGlvbiAobW9kZSkge1xuICAgICAgZWFjaChtb2RlLCBmdW5jdGlvbiAoYmVoYXZpb3IsIGkpIHtcbiAgICAgICAgaWYgKGlzU3RyaW5nKGJlaGF2aW9yKSkge1xuICAgICAgICAgIG1vZGVbaV0gPSB7XG4gICAgICAgICAgICB0eXBlOiBiZWhhdmlvclxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xuXG4gIE1vZGVDb250cm9sbGVyLnByb3RvdHlwZS5zZXRCZWhhdmlvcnMgPSBmdW5jdGlvbiAobW9kZSkge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgdmFyIGJlaGF2aW9ycyA9IHRoaXMubW9kZXNbbW9kZV07XG4gICAgdmFyIGJlaGF2ZXMgPSBbXTtcbiAgICB2YXIgYmVoYXZlO1xuICAgIGVhY2goYmVoYXZpb3JzIHx8IFtdLCBmdW5jdGlvbiAoYmVoYXZpb3IpIHtcbiAgICAgIHZhciBCZWhhdmlvckluc3RhbmNlID0gQmVoYXZpb3IuZ2V0QmVoYXZpb3IoYmVoYXZpb3IudHlwZSB8fCBiZWhhdmlvcik7XG5cbiAgICAgIGlmICghQmVoYXZpb3JJbnN0YW5jZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGJlaGF2ZSA9IG5ldyBCZWhhdmlvckluc3RhbmNlKGJlaGF2aW9yKTtcblxuICAgICAgaWYgKGJlaGF2ZSkge1xuICAgICAgICBiZWhhdmUuYmluZChncmFwaCk7XG4gICAgICAgIGJlaGF2ZXMucHVzaChiZWhhdmUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuY3VycmVudEJlaGF2ZXMgPSBiZWhhdmVzO1xuICB9O1xuXG4gIE1vZGVDb250cm9sbGVyLm1lcmdlQmVoYXZpb3JzID0gZnVuY3Rpb24gKG1vZGVCZWhhdmlvcnMsIGJlaGF2aW9ycykge1xuICAgIGVhY2goYmVoYXZpb3JzLCBmdW5jdGlvbiAoYmVoYXZpb3IpIHtcbiAgICAgIGlmIChtb2RlQmVoYXZpb3JzLmluZGV4T2YoYmVoYXZpb3IpIDwgMCkge1xuICAgICAgICBpZiAoaXNTdHJpbmcoYmVoYXZpb3IpKSB7XG4gICAgICAgICAgYmVoYXZpb3IgPSB7XG4gICAgICAgICAgICB0eXBlOiBiZWhhdmlvclxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBtb2RlQmVoYXZpb3JzLnB1c2goYmVoYXZpb3IpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBtb2RlQmVoYXZpb3JzO1xuICB9O1xuXG4gIE1vZGVDb250cm9sbGVyLmZpbHRlckJlaGF2aW9ycyA9IGZ1bmN0aW9uIChtb2RlQmVoYXZpb3JzLCBiZWhhdmlvcnMpIHtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgbW9kZUJlaGF2aW9ycy5mb3JFYWNoKGZ1bmN0aW9uIChiZWhhdmlvcikge1xuICAgICAgdmFyIHR5cGUgPSAnJztcblxuICAgICAgaWYgKGlzU3RyaW5nKGJlaGF2aW9yKSkge1xuICAgICAgICB0eXBlID0gYmVoYXZpb3I7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWRlc3RydWN0dXJpbmdcbiAgICAgICAgdHlwZSA9IGJlaGF2aW9yLnR5cGU7XG4gICAgICB9XG5cbiAgICAgIGlmIChiZWhhdmlvcnMuaW5kZXhPZih0eXBlKSA8IDApIHtcbiAgICAgICAgcmVzdWx0LnB1c2goYmVoYXZpb3IpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgTW9kZUNvbnRyb2xsZXIucHJvdG90eXBlLnNldE1vZGUgPSBmdW5jdGlvbiAobW9kZSkge1xuICAgIHZhciBfYSA9IHRoaXMsXG4gICAgICAgIG1vZGVzID0gX2EubW9kZXMsXG4gICAgICAgIGdyYXBoID0gX2EuZ3JhcGg7XG5cbiAgICB2YXIgY3VycmVudCA9IG1vZGU7XG4gICAgdmFyIGJlaGF2aW9ycyA9IG1vZGVzW2N1cnJlbnRdO1xuXG4gICAgaWYgKCFiZWhhdmlvcnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBncmFwaC5lbWl0KCdiZWZvcmVtb2RlY2hhbmdlJywge1xuICAgICAgbW9kZTogbW9kZVxuICAgIH0pO1xuICAgIGVhY2godGhpcy5jdXJyZW50QmVoYXZlcywgZnVuY3Rpb24gKGJlaGF2ZSkge1xuICAgICAgaWYgKGJlaGF2ZS5kZWxlZ2F0ZSkgYmVoYXZlLmRlbGVnYXRlLnJlbW92ZSgpO1xuICAgICAgYmVoYXZlLnVuYmluZChncmFwaCk7XG4gICAgfSk7XG4gICAgdGhpcy5zZXRCZWhhdmlvcnMoY3VycmVudCk7XG4gICAgZ3JhcGguZW1pdCgnYWZ0ZXJtb2RlY2hhbmdlJywge1xuICAgICAgbW9kZTogbW9kZVxuICAgIH0pO1xuICAgIHRoaXMubW9kZSA9IG1vZGU7XG4gIH07XG5cbiAgTW9kZUNvbnRyb2xsZXIucHJvdG90eXBlLmdldE1vZGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMubW9kZTtcbiAgfTtcbiAgLyoqXG4gICAqIOWKqOaAgeWinuWKoOaIluWIoOmZpCBCZWhhdmlvclxuICAgKlxuICAgKiBAcGFyYW0ge01vZGVUeXBlW119IGJlaGF2aW9yc1xuICAgKiBAcGFyYW0geyhNb2RlVHlwZVtdIHwgTW9kZVR5cGUpfSBtb2Rlc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzQWRkXG4gICAqIEByZXR1cm5zIHtNb2RlfVxuICAgKiBAbWVtYmVyb2YgTW9kZVxuICAgKi9cblxuXG4gIE1vZGVDb250cm9sbGVyLnByb3RvdHlwZS5tYW5pcHVsYXRlQmVoYXZpb3JzID0gZnVuY3Rpb24gKGJlaGF2aW9ycywgbW9kZXMsIGlzQWRkKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBiZWhhdmVzO1xuXG4gICAgaWYgKCFpc0FycmF5KGJlaGF2aW9ycykpIHtcbiAgICAgIGJlaGF2ZXMgPSBbYmVoYXZpb3JzXTtcbiAgICB9IGVsc2Uge1xuICAgICAgYmVoYXZlcyA9IGJlaGF2aW9ycztcbiAgICB9XG5cbiAgICBpZiAoaXNBcnJheShtb2RlcykpIHtcbiAgICAgIGVhY2gobW9kZXMsIGZ1bmN0aW9uIChtb2RlKSB7XG4gICAgICAgIGlmICghX3RoaXMubW9kZXNbbW9kZV0pIHtcbiAgICAgICAgICBpZiAoaXNBZGQpIHtcbiAgICAgICAgICAgIF90aGlzLm1vZGVzW21vZGVdID0gYmVoYXZlcztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoaXNBZGQpIHtcbiAgICAgICAgICBfdGhpcy5tb2Rlc1ttb2RlXSA9IE1vZGVDb250cm9sbGVyLm1lcmdlQmVoYXZpb3JzKF90aGlzLm1vZGVzW21vZGVdIHx8IFtdLCBiZWhhdmVzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfdGhpcy5tb2Rlc1ttb2RlXSA9IE1vZGVDb250cm9sbGVyLmZpbHRlckJlaGF2aW9ycyhfdGhpcy5tb2Rlc1ttb2RlXSB8fCBbXSwgYmVoYXZlcyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdmFyIGN1cnJlbnRNb2RlID0gbW9kZXM7XG5cbiAgICBpZiAoIW1vZGVzKSB7XG4gICAgICBjdXJyZW50TW9kZSA9IHRoaXMubW9kZTsgLy8gaXNTdHJpbmcodGhpcy5tb2RlKSA/IHRoaXMubW9kZSA6IHRoaXMubW9kZS50eXBlXG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLm1vZGVzW2N1cnJlbnRNb2RlXSkge1xuICAgICAgaWYgKGlzQWRkKSB7XG4gICAgICAgIHRoaXMubW9kZXNbY3VycmVudE1vZGVdID0gYmVoYXZlcztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaXNBZGQpIHtcbiAgICAgIHRoaXMubW9kZXNbY3VycmVudE1vZGVdID0gTW9kZUNvbnRyb2xsZXIubWVyZ2VCZWhhdmlvcnModGhpcy5tb2Rlc1tjdXJyZW50TW9kZV0gfHwgW10sIGJlaGF2ZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1vZGVzW2N1cnJlbnRNb2RlXSA9IE1vZGVDb250cm9sbGVyLmZpbHRlckJlaGF2aW9ycyh0aGlzLm1vZGVzW2N1cnJlbnRNb2RlXSB8fCBbXSwgYmVoYXZlcyk7XG4gICAgfVxuXG4gICAgdGhpcy5mb3JtYXRNb2RlcygpO1xuICAgIHRoaXMuc2V0TW9kZSh0aGlzLm1vZGUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuICAvKipcbiAgICog5pu05paw6KGM5Li65Y+C5pWwXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgTW9kZU9wdGlvbiB8IE1vZGVUeXBlfSBiZWhhdmlvciDpnIDopoHmm7TmlrDnmoTooYzkuLpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBzdHJpbmdbXX0gbW9kZXMg5oyH5a6a55qE5qih5byP5Lit55qE6KGM5Li677yM5LiN5oyH5a6a5YiZ5Li6IGRlZmF1bHRcbiAgICogQHJldHVybiB7R3JhcGh9IEdyYXBoXG4gICAqL1xuXG5cbiAgTW9kZUNvbnRyb2xsZXIucHJvdG90eXBlLnVwZGF0ZUJlaGF2aW9yID0gZnVuY3Rpb24gKGJlaGF2aW9yLCBuZXdDZmcsIG1vZGUpIHtcbiAgICBpZiAoaXNTdHJpbmcoYmVoYXZpb3IpKSB7XG4gICAgICBiZWhhdmlvciA9IHtcbiAgICAgICAgdHlwZTogYmVoYXZpb3JcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIGJlaGF2aW9yU2V0ID0gW107XG5cbiAgICBpZiAoIW1vZGUgfHwgbW9kZSA9PT0gdGhpcy5tb2RlIHx8IG1vZGUgPT09ICdkZWZhdWx0Jykge1xuICAgICAgYmVoYXZpb3JTZXQgPSB0aGlzLmN1cnJlbnRCZWhhdmVzO1xuXG4gICAgICBpZiAoIWJlaGF2aW9yU2V0IHx8ICFiZWhhdmlvclNldC5sZW5ndGgpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdVcGRhdGUgYmVoYXZpb3IgZmFpbGVkISBUaGVyZSBpcyBubyBiZWhhdmlvcnMgaW4gdGhpcyBtb2RlIG9uIHRoZSBncmFwaC4nKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIHZhciBsZW5ndGhfMSA9IGJlaGF2aW9yU2V0Lmxlbmd0aDtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGhfMTsgaSsrKSB7XG4gICAgICAgIHZhciBiZWhhdmUgPSBiZWhhdmlvclNldFtpXTtcblxuICAgICAgICBpZiAoYmVoYXZlLnR5cGUgPT09IGJlaGF2aW9yLnR5cGUpIHtcbiAgICAgICAgICBiZWhhdmUudXBkYXRlQ2ZnKG5ld0NmZyk7XG4gICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaSA9PT0gbGVuZ3RoXzEgLSAxKSBjb25zb2xlLndhcm4oJ1VwZGF0ZSBiZWhhdmlvciBmYWlsZWQhIFRoZXJlIGlzIG5vIHN1Y2ggYmVoYXZpb3IgaW4gdGhlIG1vZGUnKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgYmVoYXZpb3JTZXQgPSB0aGlzLm1vZGVzW21vZGVdO1xuXG4gICAgICBpZiAoIWJlaGF2aW9yU2V0IHx8ICFiZWhhdmlvclNldC5sZW5ndGgpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdVcGRhdGUgYmVoYXZpb3IgZmFpbGVkISBUaGVyZSBpcyBubyBiZWhhdmlvcnMgaW4gdGhpcyBtb2RlIG9uIHRoZSBncmFwaC4nKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIHZhciBsZW5ndGhfMiA9IGJlaGF2aW9yU2V0Lmxlbmd0aDtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGhfMjsgaSsrKSB7XG4gICAgICAgIHZhciBiZWhhdmUgPSBiZWhhdmlvclNldFtpXTtcblxuICAgICAgICBpZiAoYmVoYXZlLnR5cGUgPT09IGJlaGF2aW9yLnR5cGUgfHwgYmVoYXZlID09PSBiZWhhdmlvci50eXBlKSB7XG4gICAgICAgICAgaWYgKGJlaGF2ZSA9PT0gYmVoYXZpb3IudHlwZSkgYmVoYXZlID0ge1xuICAgICAgICAgICAgdHlwZTogYmVoYXZlXG4gICAgICAgICAgfTtcbiAgICAgICAgICBPYmplY3QuYXNzaWduKGJlaGF2ZSwgbmV3Q2ZnKTtcbiAgICAgICAgICBiZWhhdmlvclNldFtpXSA9IGJlaGF2ZTtcbiAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpID09PSBsZW5ndGhfMiAtIDEpIGNvbnNvbGUud2FybignVXBkYXRlIGJlaGF2aW9yIGZhaWxlZCEgVGhlcmUgaXMgbm8gc3VjaCBiZWhhdmlvciBpbiB0aGUgbW9kZScpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIE1vZGVDb250cm9sbGVyLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZ3JhcGggPSBudWxsO1xuICAgIHRoaXMubW9kZXMgPSBudWxsO1xuICAgIHRoaXMuY3VycmVudEJlaGF2ZXMgPSBudWxsO1xuICAgIHRoaXMuZGVzdHJveWVkID0gdHJ1ZTtcbiAgfTtcblxuICByZXR1cm4gTW9kZUNvbnRyb2xsZXI7XG59KCk7XG5cbmV4cG9ydCBkZWZhdWx0IE1vZGVDb250cm9sbGVyOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/mode.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/state.js":
/*!**************************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/state.js ***!
\**************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\nvar timer = null;\n\nvar StateController =\n/** @class */\nfunction () {\n function StateController(graph) {\n this.graph = graph;\n /**\n * this.cachedStates = {\n * enabled: {\n * hover: [Node]\n * },\n * disabled: {}\n * }\n */\n\n this.cachedStates = {\n enabled: {},\n disabled: {}\n };\n this.destroyed = false;\n }\n /**\n * 检查 cache 的可用性\n *\n * @private\n * @param {Item} item\n * @param {string} state\n * @param {object} cache\n * @returns\n * @memberof State\n */\n\n\n StateController.checkCache = function (item, state, cache) {\n if (!cache[state]) {\n return;\n }\n\n var index = cache[state].indexOf(item);\n\n if (index >= 0) {\n cache[state].splice(index, 1);\n }\n };\n /**\n * 缓存 state\n *\n * @private\n * @param {Item} item Item 实例\n * @param {string} state 状态名称\n * @param {object} states\n * @memberof State\n */\n\n\n StateController.cacheState = function (item, state, states) {\n if (!states[state]) {\n states[state] = [];\n }\n\n states[state].push(item);\n };\n /**\n * 更新 Item 的状态\n *\n * @param {Item} item Item实例\n * @param {string} state 状态名称\n * @param {boolean} enabled 状态是否可用\n * @memberof State\n */\n\n\n StateController.prototype.updateState = function (item, state, enabled) {\n var _this = this;\n\n var checkCache = StateController.checkCache,\n cacheState = StateController.cacheState;\n\n if (item.destroyed) {\n return;\n }\n\n var cachedStates = this.cachedStates;\n var enabledStates = cachedStates.enabled;\n var disabledStates = cachedStates.disabled;\n\n if (enabled) {\n checkCache(item, state, disabledStates);\n cacheState(item, state, enabledStates);\n } else {\n checkCache(item, state, enabledStates);\n cacheState(item, state, disabledStates);\n }\n\n if (timer) {\n clearTimeout(timer);\n }\n\n timer = setTimeout(function () {\n timer = null;\n\n _this.updateGraphStates();\n }, 16);\n };\n /**\n * 批量更新 states,兼容 updateState,支持更新一个 state\n *\n * @param {Item} item\n * @param {(string | string[])} states\n * @param {boolean} enabled\n * @memberof State\n */\n\n\n StateController.prototype.updateStates = function (item, states, enabled) {\n var _this = this;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(states)) {\n this.updateState(item, states, enabled);\n } else {\n states.forEach(function (state) {\n _this.updateState(item, state, enabled);\n });\n }\n };\n /**\n * 更新 states\n *\n * @memberof State\n */\n\n\n StateController.prototype.updateGraphStates = function () {\n var states = this.graph.get('states');\n var cachedStates = this.cachedStates;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(cachedStates.disabled, function (val, key) {\n if (states[key]) {\n states[key] = states[key].filter(function (item) {\n return val.indexOf(item) < 0 && !val.destroyed;\n });\n }\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(cachedStates.enabled, function (val, key) {\n if (!states[key]) {\n states[key] = val;\n } else {\n var map_1 = {};\n states[key].forEach(function (item) {\n if (!item.destroyed) {\n map_1[item.get('id')] = true;\n }\n });\n val.forEach(function (item) {\n if (!item.destroyed) {\n var id = item.get('id');\n\n if (!map_1[id]) {\n map_1[id] = true;\n states[key].push(item);\n }\n }\n });\n }\n });\n this.graph.emit('graphstatechange', {\n states: states\n });\n this.cachedStates = {\n enabled: {},\n disabled: {}\n };\n };\n\n StateController.prototype.destroy = function () {\n this.graph = null;\n this.cachedStates = null;\n\n if (timer) {\n clearTimeout(timer);\n }\n\n timer = null;\n this.destroyed = true;\n };\n\n return StateController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (StateController);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL3N0YXRlLmpzPzZkYTkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUE0QztBQUM1Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEIsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEIsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsT0FBTztBQUNwQjtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFLO0FBQ2xCLGFBQWEsT0FBTztBQUNwQixhQUFhLFFBQVE7QUFDckI7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBSztBQUNsQixhQUFhLG9CQUFvQjtBQUNqQyxhQUFhLFFBQVE7QUFDckI7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQUk7QUFDUjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0wsSUFBSSx1REFBSTtBQUNSO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRWMsOEVBQWUiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL3N0YXRlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZWFjaCwgaXNTdHJpbmcgfSBmcm9tICdAYW50di91dGlsJztcbnZhciB0aW1lciA9IG51bGw7XG5cbnZhciBTdGF0ZUNvbnRyb2xsZXIgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBTdGF0ZUNvbnRyb2xsZXIoZ3JhcGgpIHtcbiAgICB0aGlzLmdyYXBoID0gZ3JhcGg7XG4gICAgLyoqXG4gICAgICogdGhpcy5jYWNoZWRTdGF0ZXMgPSB7XG4gICAgICogICAgZW5hYmxlZDoge1xuICAgICAqICAgICAgICBob3ZlcjogW05vZGVdXG4gICAgICogICAgfSxcbiAgICAgKiAgICAgZGlzYWJsZWQ6IHt9XG4gICAgICogIH1cbiAgICAgKi9cblxuICAgIHRoaXMuY2FjaGVkU3RhdGVzID0ge1xuICAgICAgZW5hYmxlZDoge30sXG4gICAgICBkaXNhYmxlZDoge31cbiAgICB9O1xuICAgIHRoaXMuZGVzdHJveWVkID0gZmFsc2U7XG4gIH1cbiAgLyoqXG4gICAqIOajgOafpSBjYWNoZSDnmoTlj6/nlKjmgKdcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtJdGVtfSBpdGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdGF0ZVxuICAgKiBAcGFyYW0ge29iamVjdH0gY2FjaGVcbiAgICogQHJldHVybnNcbiAgICogQG1lbWJlcm9mIFN0YXRlXG4gICAqL1xuXG5cbiAgU3RhdGVDb250cm9sbGVyLmNoZWNrQ2FjaGUgPSBmdW5jdGlvbiAoaXRlbSwgc3RhdGUsIGNhY2hlKSB7XG4gICAgaWYgKCFjYWNoZVtzdGF0ZV0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgaW5kZXggPSBjYWNoZVtzdGF0ZV0uaW5kZXhPZihpdGVtKTtcblxuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICBjYWNoZVtzdGF0ZV0uc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDnvJPlrZggc3RhdGVcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtJdGVtfSBpdGVtIEl0ZW0g5a6e5L6LXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdGF0ZSDnirbmgIHlkI3np7BcbiAgICogQHBhcmFtIHtvYmplY3R9IHN0YXRlc1xuICAgKiBAbWVtYmVyb2YgU3RhdGVcbiAgICovXG5cblxuICBTdGF0ZUNvbnRyb2xsZXIuY2FjaGVTdGF0ZSA9IGZ1bmN0aW9uIChpdGVtLCBzdGF0ZSwgc3RhdGVzKSB7XG4gICAgaWYgKCFzdGF0ZXNbc3RhdGVdKSB7XG4gICAgICBzdGF0ZXNbc3RhdGVdID0gW107XG4gICAgfVxuXG4gICAgc3RhdGVzW3N0YXRlXS5wdXNoKGl0ZW0pO1xuICB9O1xuICAvKipcbiAgICog5pu05pawIEl0ZW0g55qE54q25oCBXG4gICAqXG4gICAqIEBwYXJhbSB7SXRlbX0gaXRlbSBJdGVt5a6e5L6LXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdGF0ZSDnirbmgIHlkI3np7BcbiAgICogQHBhcmFtIHtib29sZWFufSBlbmFibGVkIOeKtuaAgeaYr+WQpuWPr+eUqFxuICAgKiBAbWVtYmVyb2YgU3RhdGVcbiAgICovXG5cblxuICBTdGF0ZUNvbnRyb2xsZXIucHJvdG90eXBlLnVwZGF0ZVN0YXRlID0gZnVuY3Rpb24gKGl0ZW0sIHN0YXRlLCBlbmFibGVkKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBjaGVja0NhY2hlID0gU3RhdGVDb250cm9sbGVyLmNoZWNrQ2FjaGUsXG4gICAgICAgIGNhY2hlU3RhdGUgPSBTdGF0ZUNvbnRyb2xsZXIuY2FjaGVTdGF0ZTtcblxuICAgIGlmIChpdGVtLmRlc3Ryb3llZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBjYWNoZWRTdGF0ZXMgPSB0aGlzLmNhY2hlZFN0YXRlcztcbiAgICB2YXIgZW5hYmxlZFN0YXRlcyA9IGNhY2hlZFN0YXRlcy5lbmFibGVkO1xuICAgIHZhciBkaXNhYmxlZFN0YXRlcyA9IGNhY2hlZFN0YXRlcy5kaXNhYmxlZDtcblxuICAgIGlmIChlbmFibGVkKSB7XG4gICAgICBjaGVja0NhY2hlKGl0ZW0sIHN0YXRlLCBkaXNhYmxlZFN0YXRlcyk7XG4gICAgICBjYWNoZVN0YXRlKGl0ZW0sIHN0YXRlLCBlbmFibGVkU3RhdGVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2hlY2tDYWNoZShpdGVtLCBzdGF0ZSwgZW5hYmxlZFN0YXRlcyk7XG4gICAgICBjYWNoZVN0YXRlKGl0ZW0sIHN0YXRlLCBkaXNhYmxlZFN0YXRlcyk7XG4gICAgfVxuXG4gICAgaWYgKHRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgIH1cblxuICAgIHRpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICB0aW1lciA9IG51bGw7XG5cbiAgICAgIF90aGlzLnVwZGF0ZUdyYXBoU3RhdGVzKCk7XG4gICAgfSwgMTYpO1xuICB9O1xuICAvKipcbiAgICog5om56YeP5pu05pawIHN0YXRlc++8jOWFvOWuuSB1cGRhdGVTdGF0Ze+8jOaUr+aMgeabtOaWsOS4gOS4qiBzdGF0ZVxuICAgKlxuICAgKiBAcGFyYW0ge0l0ZW19IGl0ZW1cbiAgICogQHBhcmFtIHsoc3RyaW5nIHwgc3RyaW5nW10pfSBzdGF0ZXNcbiAgICogQHBhcmFtIHtib29sZWFufSBlbmFibGVkXG4gICAqIEBtZW1iZXJvZiBTdGF0ZVxuICAgKi9cblxuXG4gIFN0YXRlQ29udHJvbGxlci5wcm90b3R5cGUudXBkYXRlU3RhdGVzID0gZnVuY3Rpb24gKGl0ZW0sIHN0YXRlcywgZW5hYmxlZCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBpZiAoaXNTdHJpbmcoc3RhdGVzKSkge1xuICAgICAgdGhpcy51cGRhdGVTdGF0ZShpdGVtLCBzdGF0ZXMsIGVuYWJsZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZXMuZm9yRWFjaChmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgICAgX3RoaXMudXBkYXRlU3RhdGUoaXRlbSwgc3RhdGUsIGVuYWJsZWQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog5pu05pawIHN0YXRlc1xuICAgKlxuICAgKiBAbWVtYmVyb2YgU3RhdGVcbiAgICovXG5cblxuICBTdGF0ZUNvbnRyb2xsZXIucHJvdG90eXBlLnVwZGF0ZUdyYXBoU3RhdGVzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzdGF0ZXMgPSB0aGlzLmdyYXBoLmdldCgnc3RhdGVzJyk7XG4gICAgdmFyIGNhY2hlZFN0YXRlcyA9IHRoaXMuY2FjaGVkU3RhdGVzO1xuICAgIGVhY2goY2FjaGVkU3RhdGVzLmRpc2FibGVkLCBmdW5jdGlvbiAodmFsLCBrZXkpIHtcbiAgICAgIGlmIChzdGF0ZXNba2V5XSkge1xuICAgICAgICBzdGF0ZXNba2V5XSA9IHN0YXRlc1trZXldLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgIHJldHVybiB2YWwuaW5kZXhPZihpdGVtKSA8IDAgJiYgIXZhbC5kZXN0cm95ZWQ7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGVhY2goY2FjaGVkU3RhdGVzLmVuYWJsZWQsIGZ1bmN0aW9uICh2YWwsIGtleSkge1xuICAgICAgaWYgKCFzdGF0ZXNba2V5XSkge1xuICAgICAgICBzdGF0ZXNba2V5XSA9IHZhbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBtYXBfMSA9IHt9O1xuICAgICAgICBzdGF0ZXNba2V5XS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgaWYgKCFpdGVtLmRlc3Ryb3llZCkge1xuICAgICAgICAgICAgbWFwXzFbaXRlbS5nZXQoJ2lkJyldID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2YWwuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgIGlmICghaXRlbS5kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgIHZhciBpZCA9IGl0ZW0uZ2V0KCdpZCcpO1xuXG4gICAgICAgICAgICBpZiAoIW1hcF8xW2lkXSkge1xuICAgICAgICAgICAgICBtYXBfMVtpZF0gPSB0cnVlO1xuICAgICAgICAgICAgICBzdGF0ZXNba2V5XS5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5ncmFwaC5lbWl0KCdncmFwaHN0YXRlY2hhbmdlJywge1xuICAgICAgc3RhdGVzOiBzdGF0ZXNcbiAgICB9KTtcbiAgICB0aGlzLmNhY2hlZFN0YXRlcyA9IHtcbiAgICAgIGVuYWJsZWQ6IHt9LFxuICAgICAgZGlzYWJsZWQ6IHt9XG4gICAgfTtcbiAgfTtcblxuICBTdGF0ZUNvbnRyb2xsZXIucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5ncmFwaCA9IG51bGw7XG4gICAgdGhpcy5jYWNoZWRTdGF0ZXMgPSBudWxsO1xuXG4gICAgaWYgKHRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgIH1cblxuICAgIHRpbWVyID0gbnVsbDtcbiAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XG4gIH07XG5cbiAgcmV0dXJuIFN0YXRlQ29udHJvbGxlcjtcbn0oKTtcblxuZXhwb3J0IGRlZmF1bHQgU3RhdGVDb250cm9sbGVyOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/state.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/view.js":
/*!*************************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/view.js ***!
\*************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util_base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/base */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/base.js\");\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/math */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/math.js\");\n\n\n\n\n\nvar ViewController =\n/** @class */\nfunction () {\n function ViewController(graph) {\n this.destroyed = false;\n this.graph = graph;\n this.destroyed = false;\n } // get view center coordinate\n\n\n ViewController.prototype.getViewCenter = function () {\n var padding = this.getFormatPadding();\n var graph = this.graph;\n var width = this.graph.get('width');\n var height = graph.get('height');\n return {\n x: (width - padding[1] - padding[3]) / 2 + padding[3],\n y: (height - padding[0] - padding[2]) / 2 + padding[0]\n };\n };\n\n ViewController.prototype.fitCenter = function () {\n var graph = this.graph;\n var group = graph.get('group');\n group.resetMatrix();\n var bbox = group.getCanvasBBox();\n if (bbox.width === 0 || bbox.height === 0) return;\n var viewCenter = this.getViewCenter();\n var groupCenter = {\n x: bbox.x + bbox.width / 2,\n y: bbox.y + bbox.height / 2\n };\n graph.translate(viewCenter.x - groupCenter.x, viewCenter.y - groupCenter.y);\n }; // fit view graph\n\n\n ViewController.prototype.fitView = function () {\n var graph = this.graph;\n var padding = this.getFormatPadding();\n var width = graph.get('width');\n var height = graph.get('height');\n var group = graph.get('group');\n group.resetMatrix();\n var bbox = group.getCanvasBBox();\n if (bbox.width === 0 || bbox.height === 0) return;\n var viewCenter = this.getViewCenter();\n var groupCenter = {\n x: bbox.x + bbox.width / 2,\n y: bbox.y + bbox.height / 2\n };\n graph.translate(viewCenter.x - groupCenter.x, viewCenter.y - groupCenter.y);\n var w = (width - padding[1] - padding[3]) / bbox.width;\n var h = (height - padding[0] - padding[2]) / bbox.height;\n var ratio = w;\n\n if (w > h) {\n ratio = h;\n }\n\n if (!graph.zoom(ratio, viewCenter)) {\n console.warn('zoom failed, ratio out of range, ratio: %f', ratio);\n }\n }; // fit view graph by rule\n\n\n ViewController.prototype.fitViewByRules = function (rules) {\n var _a = rules.onlyOutOfViewPort,\n onlyOutOfViewPort = _a === void 0 ? false : _a,\n _b = rules.direction,\n direction = _b === void 0 ? 'both' : _b,\n _c = rules.ratioRule,\n ratioRule = _c === void 0 ? 'min' : _c;\n var graph = this.graph;\n var padding = this.getFormatPadding();\n var width = graph.get('width');\n var height = graph.get('height');\n var group = graph.get('group');\n group.resetMatrix();\n var bbox = group.getCanvasBBox();\n if (bbox.width === 0 || bbox.height === 0) return;\n var viewCenter = this.getViewCenter();\n var groupCenter = {\n x: bbox.x + bbox.width / 2,\n y: bbox.y + bbox.height / 2\n };\n graph.translate(viewCenter.x - groupCenter.x, viewCenter.y - groupCenter.y);\n var wRatio = (width - padding[1] - padding[3]) / bbox.width;\n var hRatio = (height - padding[0] - padding[2]) / bbox.height;\n var ratio;\n\n if (direction === 'x') {\n ratio = wRatio;\n } else if (direction === 'y') {\n ratio = hRatio;\n } else {\n // ratioRule\n ratio = ratioRule === 'max' ? Math.max(wRatio, hRatio) : Math.min(wRatio, hRatio);\n } // 如果设置了仅对超出视口宽高的场景进行fitview,则没超出的场景zoom取1\n\n\n if (onlyOutOfViewPort) {\n ratio = ratio < 1 ? ratio : 1;\n }\n\n var initZoomRatio = graph.getZoom();\n var endZoom = initZoomRatio * ratio;\n var minZoom = graph.get('minZoom'); // 如果zoom小于最小zoom, 则以最小zoom为准\n\n if (endZoom < minZoom) {\n endZoom = minZoom;\n console.warn('fitview failed, ratio out of range, ratio: %f', ratio, 'graph minzoom has been used instead');\n }\n\n graph.zoomTo(endZoom, viewCenter);\n };\n\n ViewController.prototype.getFormatPadding = function () {\n var padding = this.graph.get('fitViewPadding');\n return Object(_util_base__WEBPACK_IMPORTED_MODULE_2__[\"formatPadding\"])(padding);\n };\n\n ViewController.prototype.focusPoint = function (point, animate, animateCfg) {\n var _this = this;\n\n var viewCenter = this.getViewCenter();\n var modelCenter = this.getPointByCanvas(viewCenter.x, viewCenter.y);\n var viewportMatrix = this.graph.get('group').getMatrix();\n if (!viewportMatrix) viewportMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n\n if (animate) {\n var dx_1 = (modelCenter.x - point.x) * viewportMatrix[0];\n var dy_1 = (modelCenter.y - point.y) * viewportMatrix[4];\n var lastX_1 = 0;\n var lastY_1 = 0;\n var newX_1 = 0;\n var newY_1 = 0; // 动画每次平移一点,直到目标位置\n\n this.graph.get('canvas').animate(function (ratio) {\n newX_1 = dx_1 * ratio;\n newY_1 = dy_1 * ratio;\n\n _this.graph.translate(newX_1 - lastX_1, newY_1 - lastY_1);\n\n lastX_1 = newX_1;\n lastY_1 = newY_1;\n }, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, animateCfg));\n } else {\n this.graph.translate((modelCenter.x - point.x) * viewportMatrix[0], (modelCenter.y - point.y) * viewportMatrix[4]);\n }\n };\n /**\n * 将 Canvas 坐标转成视口坐标\n * @param canvasX canvas x 坐标\n * @param canvasY canvas y 坐标\n */\n\n\n ViewController.prototype.getPointByCanvas = function (canvasX, canvasY) {\n var viewportMatrix = this.graph.get('group').getMatrix();\n\n if (!viewportMatrix) {\n viewportMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n var point = Object(_util_math__WEBPACK_IMPORTED_MODULE_3__[\"invertMatrix\"])({\n x: canvasX,\n y: canvasY\n }, viewportMatrix);\n return point;\n };\n /**\n * 将页面坐标转成视口坐标\n * @param clientX 页面 x 坐标\n * @param clientY 页面 y 坐标\n */\n\n\n ViewController.prototype.getPointByClient = function (clientX, clientY) {\n var canvas = this.graph.get('canvas');\n var canvasPoint = canvas.getPointByClient(clientX, clientY);\n return this.getPointByCanvas(canvasPoint.x, canvasPoint.y);\n };\n /**\n * 将视口坐标转成页面坐标\n * @param x 视口 x 坐标\n * @param y 视口 y 坐标\n */\n\n\n ViewController.prototype.getClientByPoint = function (x, y) {\n var canvas = this.graph.get('canvas');\n var canvasPoint = this.getCanvasByPoint(x, y);\n var point = canvas.getClientByPoint(canvasPoint.x, canvasPoint.y);\n return {\n x: point.x,\n y: point.y\n };\n };\n /**\n * 将视口坐标转成 Canvas 坐标\n * @param x 视口 x 坐标\n * @param y 视口 y 坐标\n */\n\n\n ViewController.prototype.getCanvasByPoint = function (x, y) {\n var viewportMatrix = this.graph.get('group').getMatrix();\n\n if (!viewportMatrix) {\n viewportMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n return Object(_util_math__WEBPACK_IMPORTED_MODULE_3__[\"applyMatrix\"])({\n x: x,\n y: y\n }, viewportMatrix);\n };\n /**\n * 将元素移动到画布中心\n * @param item Item 实例或 id\n * @param {boolean} animate 是否带有动画地移动\n * @param {GraphAnimateConfig} animateCfg 若带有动画,动画的配置项\n */\n\n\n ViewController.prototype.focus = function (item, animate, animateCfg) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) {\n item = this.graph.findById(item);\n }\n\n if (item) {\n var x = 0,\n y = 0;\n\n if (item.getType && item.getType() === 'edge') {\n var sourceMatrix = item.getSource().get('group').getMatrix();\n var targetMatrix = item.getTarget().get('group').getMatrix();\n\n if (sourceMatrix && targetMatrix) {\n x = (sourceMatrix[6] + targetMatrix[6]) / 2;\n y = (sourceMatrix[7] + targetMatrix[7]) / 2;\n } else if (sourceMatrix || targetMatrix) {\n x = sourceMatrix ? sourceMatrix[6] : targetMatrix[6];\n y = sourceMatrix ? sourceMatrix[7] : targetMatrix[7];\n }\n } else {\n var group = item.get('group');\n var matrix = group.getMatrix();\n if (!matrix) matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n x = matrix[6];\n y = matrix[7];\n } // 用实际位置而不是model中的x,y,防止由于拖拽等的交互导致model的x,y并不是当前的x,y\n\n\n this.focusPoint({\n x: x,\n y: y\n }, animate, animateCfg);\n }\n };\n /**\n * 改变 canvas 画布的宽度和高度\n * @param width canvas 宽度\n * @param height canvas 高度\n */\n\n\n ViewController.prototype.changeSize = function (width, height) {\n var graph = this.graph;\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(width) || !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(height)) {\n throw Error('invalid canvas width & height, please make sure width & height type is number');\n }\n\n graph.set({\n width: width,\n height: height\n });\n var canvas = graph.get('canvas');\n canvas.changeSize(width, height); // change the size of grid plugin if it exists on graph\n\n var plugins = graph.get('plugins');\n plugins.forEach(function (plugin) {\n if (plugin.get('gridContainer')) {\n // 网格定位信息初始化\n plugin.positionInit();\n }\n });\n };\n\n ViewController.prototype.destroy = function () {\n this.graph = null;\n this.destroyed = false;\n };\n\n return ViewController;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ViewController);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9ncmFwaC9jb250cm9sbGVyL3ZpZXcuanM/MGE1ZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ2U7QUFDQTtBQUNZOztBQUU1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7OztBQUdIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsdUNBQXVDOztBQUV2QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXLGdFQUFhO0FBQ3hCOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCOztBQUVyQjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE9BQU8sRUFBRSxzREFBUSxHQUFHO0FBQ3BCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxnQkFBZ0IsK0RBQVk7QUFDNUI7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLFdBQVcsOERBQVc7QUFDdEI7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQixhQUFhLG1CQUFtQjtBQUNoQzs7O0FBR0E7QUFDQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUEsU0FBUywyREFBUSxZQUFZLDJEQUFRO0FBQ3JDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EscUNBQXFDOztBQUVyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVjLDZFQUFjIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1jb3JlQDAuNS4wQEBhbnR2L2c2LWNvcmUvZXMvZ3JhcGgvY29udHJvbGxlci92aWV3LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGlzTnVtYmVyLCBpc1N0cmluZyB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgZm9ybWF0UGFkZGluZyB9IGZyb20gJy4uLy4uL3V0aWwvYmFzZSc7XG5pbXBvcnQgeyBhcHBseU1hdHJpeCwgaW52ZXJ0TWF0cml4IH0gZnJvbSAnLi4vLi4vdXRpbC9tYXRoJztcblxudmFyIFZpZXdDb250cm9sbGVyID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gVmlld0NvbnRyb2xsZXIoZ3JhcGgpIHtcbiAgICB0aGlzLmRlc3Ryb3llZCA9IGZhbHNlO1xuICAgIHRoaXMuZ3JhcGggPSBncmFwaDtcbiAgICB0aGlzLmRlc3Ryb3llZCA9IGZhbHNlO1xuICB9IC8vIGdldCB2aWV3IGNlbnRlciBjb29yZGluYXRlXG5cblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZ2V0Vmlld0NlbnRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcGFkZGluZyA9IHRoaXMuZ2V0Rm9ybWF0UGFkZGluZygpO1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgdmFyIHdpZHRoID0gdGhpcy5ncmFwaC5nZXQoJ3dpZHRoJyk7XG4gICAgdmFyIGhlaWdodCA9IGdyYXBoLmdldCgnaGVpZ2h0Jyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6ICh3aWR0aCAtIHBhZGRpbmdbMV0gLSBwYWRkaW5nWzNdKSAvIDIgKyBwYWRkaW5nWzNdLFxuICAgICAgeTogKGhlaWdodCAtIHBhZGRpbmdbMF0gLSBwYWRkaW5nWzJdKSAvIDIgKyBwYWRkaW5nWzBdXG4gICAgfTtcbiAgfTtcblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZml0Q2VudGVyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgdmFyIGdyb3VwID0gZ3JhcGguZ2V0KCdncm91cCcpO1xuICAgIGdyb3VwLnJlc2V0TWF0cml4KCk7XG4gICAgdmFyIGJib3ggPSBncm91cC5nZXRDYW52YXNCQm94KCk7XG4gICAgaWYgKGJib3gud2lkdGggPT09IDAgfHwgYmJveC5oZWlnaHQgPT09IDApIHJldHVybjtcbiAgICB2YXIgdmlld0NlbnRlciA9IHRoaXMuZ2V0Vmlld0NlbnRlcigpO1xuICAgIHZhciBncm91cENlbnRlciA9IHtcbiAgICAgIHg6IGJib3gueCArIGJib3gud2lkdGggLyAyLFxuICAgICAgeTogYmJveC55ICsgYmJveC5oZWlnaHQgLyAyXG4gICAgfTtcbiAgICBncmFwaC50cmFuc2xhdGUodmlld0NlbnRlci54IC0gZ3JvdXBDZW50ZXIueCwgdmlld0NlbnRlci55IC0gZ3JvdXBDZW50ZXIueSk7XG4gIH07IC8vIGZpdCB2aWV3IGdyYXBoXG5cblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZml0VmlldyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIHZhciBwYWRkaW5nID0gdGhpcy5nZXRGb3JtYXRQYWRkaW5nKCk7XG4gICAgdmFyIHdpZHRoID0gZ3JhcGguZ2V0KCd3aWR0aCcpO1xuICAgIHZhciBoZWlnaHQgPSBncmFwaC5nZXQoJ2hlaWdodCcpO1xuICAgIHZhciBncm91cCA9IGdyYXBoLmdldCgnZ3JvdXAnKTtcbiAgICBncm91cC5yZXNldE1hdHJpeCgpO1xuICAgIHZhciBiYm94ID0gZ3JvdXAuZ2V0Q2FudmFzQkJveCgpO1xuICAgIGlmIChiYm94LndpZHRoID09PSAwIHx8IGJib3guaGVpZ2h0ID09PSAwKSByZXR1cm47XG4gICAgdmFyIHZpZXdDZW50ZXIgPSB0aGlzLmdldFZpZXdDZW50ZXIoKTtcbiAgICB2YXIgZ3JvdXBDZW50ZXIgPSB7XG4gICAgICB4OiBiYm94LnggKyBiYm94LndpZHRoIC8gMixcbiAgICAgIHk6IGJib3gueSArIGJib3guaGVpZ2h0IC8gMlxuICAgIH07XG4gICAgZ3JhcGgudHJhbnNsYXRlKHZpZXdDZW50ZXIueCAtIGdyb3VwQ2VudGVyLngsIHZpZXdDZW50ZXIueSAtIGdyb3VwQ2VudGVyLnkpO1xuICAgIHZhciB3ID0gKHdpZHRoIC0gcGFkZGluZ1sxXSAtIHBhZGRpbmdbM10pIC8gYmJveC53aWR0aDtcbiAgICB2YXIgaCA9IChoZWlnaHQgLSBwYWRkaW5nWzBdIC0gcGFkZGluZ1syXSkgLyBiYm94LmhlaWdodDtcbiAgICB2YXIgcmF0aW8gPSB3O1xuXG4gICAgaWYgKHcgPiBoKSB7XG4gICAgICByYXRpbyA9IGg7XG4gICAgfVxuXG4gICAgaWYgKCFncmFwaC56b29tKHJhdGlvLCB2aWV3Q2VudGVyKSkge1xuICAgICAgY29uc29sZS53YXJuKCd6b29tIGZhaWxlZCwgcmF0aW8gb3V0IG9mIHJhbmdlLCByYXRpbzogJWYnLCByYXRpbyk7XG4gICAgfVxuICB9OyAvLyBmaXQgdmlldyBncmFwaCBieSBydWxlXG5cblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZml0Vmlld0J5UnVsZXMgPSBmdW5jdGlvbiAocnVsZXMpIHtcbiAgICB2YXIgX2EgPSBydWxlcy5vbmx5T3V0T2ZWaWV3UG9ydCxcbiAgICAgICAgb25seU91dE9mVmlld1BvcnQgPSBfYSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfYSxcbiAgICAgICAgX2IgPSBydWxlcy5kaXJlY3Rpb24sXG4gICAgICAgIGRpcmVjdGlvbiA9IF9iID09PSB2b2lkIDAgPyAnYm90aCcgOiBfYixcbiAgICAgICAgX2MgPSBydWxlcy5yYXRpb1J1bGUsXG4gICAgICAgIHJhdGlvUnVsZSA9IF9jID09PSB2b2lkIDAgPyAnbWluJyA6IF9jO1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgdmFyIHBhZGRpbmcgPSB0aGlzLmdldEZvcm1hdFBhZGRpbmcoKTtcbiAgICB2YXIgd2lkdGggPSBncmFwaC5nZXQoJ3dpZHRoJyk7XG4gICAgdmFyIGhlaWdodCA9IGdyYXBoLmdldCgnaGVpZ2h0Jyk7XG4gICAgdmFyIGdyb3VwID0gZ3JhcGguZ2V0KCdncm91cCcpO1xuICAgIGdyb3VwLnJlc2V0TWF0cml4KCk7XG4gICAgdmFyIGJib3ggPSBncm91cC5nZXRDYW52YXNCQm94KCk7XG4gICAgaWYgKGJib3gud2lkdGggPT09IDAgfHwgYmJveC5oZWlnaHQgPT09IDApIHJldHVybjtcbiAgICB2YXIgdmlld0NlbnRlciA9IHRoaXMuZ2V0Vmlld0NlbnRlcigpO1xuICAgIHZhciBncm91cENlbnRlciA9IHtcbiAgICAgIHg6IGJib3gueCArIGJib3gud2lkdGggLyAyLFxuICAgICAgeTogYmJveC55ICsgYmJveC5oZWlnaHQgLyAyXG4gICAgfTtcbiAgICBncmFwaC50cmFuc2xhdGUodmlld0NlbnRlci54IC0gZ3JvdXBDZW50ZXIueCwgdmlld0NlbnRlci55IC0gZ3JvdXBDZW50ZXIueSk7XG4gICAgdmFyIHdSYXRpbyA9ICh3aWR0aCAtIHBhZGRpbmdbMV0gLSBwYWRkaW5nWzNdKSAvIGJib3gud2lkdGg7XG4gICAgdmFyIGhSYXRpbyA9IChoZWlnaHQgLSBwYWRkaW5nWzBdIC0gcGFkZGluZ1syXSkgLyBiYm94LmhlaWdodDtcbiAgICB2YXIgcmF0aW87XG5cbiAgICBpZiAoZGlyZWN0aW9uID09PSAneCcpIHtcbiAgICAgIHJhdGlvID0gd1JhdGlvO1xuICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAneScpIHtcbiAgICAgIHJhdGlvID0gaFJhdGlvO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyByYXRpb1J1bGVcbiAgICAgIHJhdGlvID0gcmF0aW9SdWxlID09PSAnbWF4JyA/IE1hdGgubWF4KHdSYXRpbywgaFJhdGlvKSA6IE1hdGgubWluKHdSYXRpbywgaFJhdGlvKTtcbiAgICB9IC8vIOWmguaenOiuvue9ruS6huS7heWvuei2heWHuuinhuWPo+WuvemrmOeahOWcuuaZr+i/m+ihjGZpdHZpZXfvvIzliJnmsqHotoXlh7rnmoTlnLrmma96b29t5Y+WMVxuXG5cbiAgICBpZiAob25seU91dE9mVmlld1BvcnQpIHtcbiAgICAgIHJhdGlvID0gcmF0aW8gPCAxID8gcmF0aW8gOiAxO1xuICAgIH1cblxuICAgIHZhciBpbml0Wm9vbVJhdGlvID0gZ3JhcGguZ2V0Wm9vbSgpO1xuICAgIHZhciBlbmRab29tID0gaW5pdFpvb21SYXRpbyAqIHJhdGlvO1xuICAgIHZhciBtaW5ab29tID0gZ3JhcGguZ2V0KCdtaW5ab29tJyk7IC8vIOWmguaenHpvb23lsI/kuo7mnIDlsI96b29tLCDliJnku6XmnIDlsI96b29t5Li65YeGXG5cbiAgICBpZiAoZW5kWm9vbSA8IG1pblpvb20pIHtcbiAgICAgIGVuZFpvb20gPSBtaW5ab29tO1xuICAgICAgY29uc29sZS53YXJuKCdmaXR2aWV3IGZhaWxlZCwgcmF0aW8gb3V0IG9mIHJhbmdlLCByYXRpbzogJWYnLCByYXRpbywgJ2dyYXBoIG1pbnpvb20gaGFzIGJlZW4gdXNlZCBpbnN0ZWFkJyk7XG4gICAgfVxuXG4gICAgZ3JhcGguem9vbVRvKGVuZFpvb20sIHZpZXdDZW50ZXIpO1xuICB9O1xuXG4gIFZpZXdDb250cm9sbGVyLnByb3RvdHlwZS5nZXRGb3JtYXRQYWRkaW5nID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBwYWRkaW5nID0gdGhpcy5ncmFwaC5nZXQoJ2ZpdFZpZXdQYWRkaW5nJyk7XG4gICAgcmV0dXJuIGZvcm1hdFBhZGRpbmcocGFkZGluZyk7XG4gIH07XG5cbiAgVmlld0NvbnRyb2xsZXIucHJvdG90eXBlLmZvY3VzUG9pbnQgPSBmdW5jdGlvbiAocG9pbnQsIGFuaW1hdGUsIGFuaW1hdGVDZmcpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIHZpZXdDZW50ZXIgPSB0aGlzLmdldFZpZXdDZW50ZXIoKTtcbiAgICB2YXIgbW9kZWxDZW50ZXIgPSB0aGlzLmdldFBvaW50QnlDYW52YXModmlld0NlbnRlci54LCB2aWV3Q2VudGVyLnkpO1xuICAgIHZhciB2aWV3cG9ydE1hdHJpeCA9IHRoaXMuZ3JhcGguZ2V0KCdncm91cCcpLmdldE1hdHJpeCgpO1xuICAgIGlmICghdmlld3BvcnRNYXRyaXgpIHZpZXdwb3J0TWF0cml4ID0gWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuXG4gICAgaWYgKGFuaW1hdGUpIHtcbiAgICAgIHZhciBkeF8xID0gKG1vZGVsQ2VudGVyLnggLSBwb2ludC54KSAqIHZpZXdwb3J0TWF0cml4WzBdO1xuICAgICAgdmFyIGR5XzEgPSAobW9kZWxDZW50ZXIueSAtIHBvaW50LnkpICogdmlld3BvcnRNYXRyaXhbNF07XG4gICAgICB2YXIgbGFzdFhfMSA9IDA7XG4gICAgICB2YXIgbGFzdFlfMSA9IDA7XG4gICAgICB2YXIgbmV3WF8xID0gMDtcbiAgICAgIHZhciBuZXdZXzEgPSAwOyAvLyDliqjnlLvmr4/mrKHlubPnp7vkuIDngrnvvIznm7TliLDnm67moIfkvY3nva5cblxuICAgICAgdGhpcy5ncmFwaC5nZXQoJ2NhbnZhcycpLmFuaW1hdGUoZnVuY3Rpb24gKHJhdGlvKSB7XG4gICAgICAgIG5ld1hfMSA9IGR4XzEgKiByYXRpbztcbiAgICAgICAgbmV3WV8xID0gZHlfMSAqIHJhdGlvO1xuXG4gICAgICAgIF90aGlzLmdyYXBoLnRyYW5zbGF0ZShuZXdYXzEgLSBsYXN0WF8xLCBuZXdZXzEgLSBsYXN0WV8xKTtcblxuICAgICAgICBsYXN0WF8xID0gbmV3WF8xO1xuICAgICAgICBsYXN0WV8xID0gbmV3WV8xO1xuICAgICAgfSwgX19hc3NpZ24oe30sIGFuaW1hdGVDZmcpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ncmFwaC50cmFuc2xhdGUoKG1vZGVsQ2VudGVyLnggLSBwb2ludC54KSAqIHZpZXdwb3J0TWF0cml4WzBdLCAobW9kZWxDZW50ZXIueSAtIHBvaW50LnkpICogdmlld3BvcnRNYXRyaXhbNF0pO1xuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOWwhiBDYW52YXMg5Z2Q5qCH6L2s5oiQ6KeG5Y+j5Z2Q5qCHXG4gICAqIEBwYXJhbSBjYW52YXNYIGNhbnZhcyB4IOWdkOagh1xuICAgKiBAcGFyYW0gY2FudmFzWSBjYW52YXMgeSDlnZDmoIdcbiAgICovXG5cblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZ2V0UG9pbnRCeUNhbnZhcyA9IGZ1bmN0aW9uIChjYW52YXNYLCBjYW52YXNZKSB7XG4gICAgdmFyIHZpZXdwb3J0TWF0cml4ID0gdGhpcy5ncmFwaC5nZXQoJ2dyb3VwJykuZ2V0TWF0cml4KCk7XG5cbiAgICBpZiAoIXZpZXdwb3J0TWF0cml4KSB7XG4gICAgICB2aWV3cG9ydE1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICB9XG5cbiAgICB2YXIgcG9pbnQgPSBpbnZlcnRNYXRyaXgoe1xuICAgICAgeDogY2FudmFzWCxcbiAgICAgIHk6IGNhbnZhc1lcbiAgICB9LCB2aWV3cG9ydE1hdHJpeCk7XG4gICAgcmV0dXJuIHBvaW50O1xuICB9O1xuICAvKipcbiAgICog5bCG6aG16Z2i5Z2Q5qCH6L2s5oiQ6KeG5Y+j5Z2Q5qCHXG4gICAqIEBwYXJhbSBjbGllbnRYIOmhtemdoiB4IOWdkOagh1xuICAgKiBAcGFyYW0gY2xpZW50WSDpobXpnaIgeSDlnZDmoIdcbiAgICovXG5cblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZ2V0UG9pbnRCeUNsaWVudCA9IGZ1bmN0aW9uIChjbGllbnRYLCBjbGllbnRZKSB7XG4gICAgdmFyIGNhbnZhcyA9IHRoaXMuZ3JhcGguZ2V0KCdjYW52YXMnKTtcbiAgICB2YXIgY2FudmFzUG9pbnQgPSBjYW52YXMuZ2V0UG9pbnRCeUNsaWVudChjbGllbnRYLCBjbGllbnRZKTtcbiAgICByZXR1cm4gdGhpcy5nZXRQb2ludEJ5Q2FudmFzKGNhbnZhc1BvaW50LngsIGNhbnZhc1BvaW50LnkpO1xuICB9O1xuICAvKipcbiAgICog5bCG6KeG5Y+j5Z2Q5qCH6L2s5oiQ6aG16Z2i5Z2Q5qCHXG4gICAqIEBwYXJhbSB4IOinhuWPoyB4IOWdkOagh1xuICAgKiBAcGFyYW0geSDop4blj6MgeSDlnZDmoIdcbiAgICovXG5cblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZ2V0Q2xpZW50QnlQb2ludCA9IGZ1bmN0aW9uICh4LCB5KSB7XG4gICAgdmFyIGNhbnZhcyA9IHRoaXMuZ3JhcGguZ2V0KCdjYW52YXMnKTtcbiAgICB2YXIgY2FudmFzUG9pbnQgPSB0aGlzLmdldENhbnZhc0J5UG9pbnQoeCwgeSk7XG4gICAgdmFyIHBvaW50ID0gY2FudmFzLmdldENsaWVudEJ5UG9pbnQoY2FudmFzUG9pbnQueCwgY2FudmFzUG9pbnQueSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IHBvaW50LngsXG4gICAgICB5OiBwb2ludC55XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIOWwhuinhuWPo+WdkOagh+i9rOaIkCBDYW52YXMg5Z2Q5qCHXG4gICAqIEBwYXJhbSB4IOinhuWPoyB4IOWdkOagh1xuICAgKiBAcGFyYW0geSDop4blj6MgeSDlnZDmoIdcbiAgICovXG5cblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZ2V0Q2FudmFzQnlQb2ludCA9IGZ1bmN0aW9uICh4LCB5KSB7XG4gICAgdmFyIHZpZXdwb3J0TWF0cml4ID0gdGhpcy5ncmFwaC5nZXQoJ2dyb3VwJykuZ2V0TWF0cml4KCk7XG5cbiAgICBpZiAoIXZpZXdwb3J0TWF0cml4KSB7XG4gICAgICB2aWV3cG9ydE1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXBwbHlNYXRyaXgoe1xuICAgICAgeDogeCxcbiAgICAgIHk6IHlcbiAgICB9LCB2aWV3cG9ydE1hdHJpeCk7XG4gIH07XG4gIC8qKlxuICAgKiDlsIblhYPntKDnp7vliqjliLDnlLvluIPkuK3lv4NcbiAgICogQHBhcmFtIGl0ZW0gSXRlbSDlrp7kvovmiJYgaWRcbiAgICogQHBhcmFtIHtib29sZWFufSBhbmltYXRlIOaYr+WQpuW4puacieWKqOeUu+WcsOenu+WKqFxuICAgKiBAcGFyYW0ge0dyYXBoQW5pbWF0ZUNvbmZpZ30gYW5pbWF0ZUNmZyDoi6XluKbmnInliqjnlLvvvIzliqjnlLvnmoTphY3nva7poblcbiAgICovXG5cblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoaXRlbSwgYW5pbWF0ZSwgYW5pbWF0ZUNmZykge1xuICAgIGlmIChpc1N0cmluZyhpdGVtKSkge1xuICAgICAgaXRlbSA9IHRoaXMuZ3JhcGguZmluZEJ5SWQoaXRlbSk7XG4gICAgfVxuXG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIHZhciB4ID0gMCxcbiAgICAgICAgICB5ID0gMDtcblxuICAgICAgaWYgKGl0ZW0uZ2V0VHlwZSAmJiBpdGVtLmdldFR5cGUoKSA9PT0gJ2VkZ2UnKSB7XG4gICAgICAgIHZhciBzb3VyY2VNYXRyaXggPSBpdGVtLmdldFNvdXJjZSgpLmdldCgnZ3JvdXAnKS5nZXRNYXRyaXgoKTtcbiAgICAgICAgdmFyIHRhcmdldE1hdHJpeCA9IGl0ZW0uZ2V0VGFyZ2V0KCkuZ2V0KCdncm91cCcpLmdldE1hdHJpeCgpO1xuXG4gICAgICAgIGlmIChzb3VyY2VNYXRyaXggJiYgdGFyZ2V0TWF0cml4KSB7XG4gICAgICAgICAgeCA9IChzb3VyY2VNYXRyaXhbNl0gKyB0YXJnZXRNYXRyaXhbNl0pIC8gMjtcbiAgICAgICAgICB5ID0gKHNvdXJjZU1hdHJpeFs3XSArIHRhcmdldE1hdHJpeFs3XSkgLyAyO1xuICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZU1hdHJpeCB8fCB0YXJnZXRNYXRyaXgpIHtcbiAgICAgICAgICB4ID0gc291cmNlTWF0cml4ID8gc291cmNlTWF0cml4WzZdIDogdGFyZ2V0TWF0cml4WzZdO1xuICAgICAgICAgIHkgPSBzb3VyY2VNYXRyaXggPyBzb3VyY2VNYXRyaXhbN10gOiB0YXJnZXRNYXRyaXhbN107XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBncm91cCA9IGl0ZW0uZ2V0KCdncm91cCcpO1xuICAgICAgICB2YXIgbWF0cml4ID0gZ3JvdXAuZ2V0TWF0cml4KCk7XG4gICAgICAgIGlmICghbWF0cml4KSBtYXRyaXggPSBbMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMV07XG4gICAgICAgIHggPSBtYXRyaXhbNl07XG4gICAgICAgIHkgPSBtYXRyaXhbN107XG4gICAgICB9IC8vIOeUqOWunumZheS9jee9ruiAjOS4jeaYr21vZGVs5Lit55qEeCx5LOmYsuatoueUseS6juaLluaLveetieeahOS6pOS6kuWvvOiHtG1vZGVs55qEeCx55bm25LiN5piv5b2T5YmN55qEeCx5XG5cblxuICAgICAgdGhpcy5mb2N1c1BvaW50KHtcbiAgICAgICAgeDogeCxcbiAgICAgICAgeTogeVxuICAgICAgfSwgYW5pbWF0ZSwgYW5pbWF0ZUNmZyk7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog5pS55Y+YIGNhbnZhcyDnlLvluIPnmoTlrr3luqblkozpq5jluqZcbiAgICogQHBhcmFtIHdpZHRoIGNhbnZhcyDlrr3luqZcbiAgICogQHBhcmFtIGhlaWdodCBjYW52YXMg6auY5bqmXG4gICAqL1xuXG5cbiAgVmlld0NvbnRyb2xsZXIucHJvdG90eXBlLmNoYW5nZVNpemUgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCkge1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAoIWlzTnVtYmVyKHdpZHRoKSB8fCAhaXNOdW1iZXIoaGVpZ2h0KSkge1xuICAgICAgdGhyb3cgRXJyb3IoJ2ludmFsaWQgY2FudmFzIHdpZHRoICYgaGVpZ2h0LCBwbGVhc2UgbWFrZSBzdXJlIHdpZHRoICYgaGVpZ2h0IHR5cGUgaXMgbnVtYmVyJyk7XG4gICAgfVxuXG4gICAgZ3JhcGguc2V0KHtcbiAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgfSk7XG4gICAgdmFyIGNhbnZhcyA9IGdyYXBoLmdldCgnY2FudmFzJyk7XG4gICAgY2FudmFzLmNoYW5nZVNpemUod2lkdGgsIGhlaWdodCk7IC8vIGNoYW5nZSB0aGUgc2l6ZSBvZiBncmlkIHBsdWdpbiBpZiBpdCBleGlzdHMgb24gZ3JhcGhcblxuICAgIHZhciBwbHVnaW5zID0gZ3JhcGguZ2V0KCdwbHVnaW5zJyk7XG4gICAgcGx1Z2lucy5mb3JFYWNoKGZ1bmN0aW9uIChwbHVnaW4pIHtcbiAgICAgIGlmIChwbHVnaW4uZ2V0KCdncmlkQ29udGFpbmVyJykpIHtcbiAgICAgICAgLy8g572R5qC85a6a5L2N5L+h5oGv5Yid5aeL5YyWXG4gICAgICAgIHBsdWdpbi5wb3NpdGlvbkluaXQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmdyYXBoID0gbnVsbDtcbiAgICB0aGlzLmRlc3Ryb3llZCA9IGZhbHNlO1xuICB9O1xuXG4gIHJldHVybiBWaWV3Q29udHJvbGxlcjtcbn0oKTtcblxuZXhwb3J0IGRlZmF1bHQgVmlld0NvbnRyb2xsZXI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/view.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/graph.js":
/*!***************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/graph.js ***!
\***************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_event_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/event-emitter */ \"./node_modules/_@antv_event-emitter@0.1.2@@antv/event-emitter/esm/index.js\");\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/_@antv_matrix-util@3.1.0-beta.3@@antv/matrix-util/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _antv_algorithm__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/algorithm */ \"./node_modules/_@antv_algorithm@0.1.14@@antv/algorithm/es/index.js\");\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/math */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/math.js\");\n/* harmony import */ var _util_validation__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/validation */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/validation.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../global */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/global.js\");\n/* harmony import */ var _controller__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./controller */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/index.js\");\n/* harmony import */ var _util_graphic__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../util/graphic */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/graphic.js\");\n/* harmony import */ var _item_hull__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../item/hull */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/hull.js\");\n\n\n\n\n\n\n\n\n\n\n\nvar transform = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_2__[\"ext\"].transform;\nvar NODE = 'node';\n\nvar AbstractGraph =\n/** @class */\nfunction (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(AbstractGraph, _super);\n\n function AbstractGraph(cfg) {\n var _this = _super.call(this) || this;\n\n _this.cfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"deepMix\"])(_this.getDefaultCfg(), cfg);\n\n _this.init();\n\n _this.animating = false;\n _this.destroyed = false; // 启用 stack 后,实例化 undoStack 和 redoStack\n\n if (_this.cfg.enabledStack) {\n // 实例化 undo 和 redo 栈\n _this.undoStack = new _antv_algorithm__WEBPACK_IMPORTED_MODULE_4__[\"Stack\"](_this.cfg.maxStep);\n _this.redoStack = new _antv_algorithm__WEBPACK_IMPORTED_MODULE_4__[\"Stack\"](_this.cfg.maxStep);\n }\n\n return _this;\n }\n\n AbstractGraph.prototype.init = function () {\n this.initCanvas(); // instance controller\n\n var viewController = new _controller__WEBPACK_IMPORTED_MODULE_8__[\"ViewController\"](this);\n var modeController = new _controller__WEBPACK_IMPORTED_MODULE_8__[\"ModeController\"](this);\n var itemController = new _controller__WEBPACK_IMPORTED_MODULE_8__[\"ItemController\"](this);\n var stateController = new _controller__WEBPACK_IMPORTED_MODULE_8__[\"StateController\"](this);\n this.set({\n viewController: viewController,\n modeController: modeController,\n itemController: itemController,\n stateController: stateController\n }); // 初始化布局机制\n\n this.initLayoutController(); // 初始化事件机制\n\n this.initEventController();\n this.initGroups();\n /** 初始化插件 */\n\n this.initPlugins();\n }; // 初始化所有 Group\n\n\n AbstractGraph.prototype.initGroups = function () {\n var canvas = this.get('canvas');\n if (!canvas) return;\n var el = canvas.get('el');\n var _a = (el || {}).id,\n id = _a === void 0 ? 'g6' : _a;\n var group = canvas.addGroup({\n id: id + \"-root\",\n className: _global__WEBPACK_IMPORTED_MODULE_7__[\"default\"].rootContainerClassName\n });\n\n if (this.get('groupByTypes')) {\n var edgeGroup = group.addGroup({\n id: id + \"-edge\",\n className: _global__WEBPACK_IMPORTED_MODULE_7__[\"default\"].edgeContainerClassName\n });\n var nodeGroup = group.addGroup({\n id: id + \"-node\",\n className: _global__WEBPACK_IMPORTED_MODULE_7__[\"default\"].nodeContainerClassName\n });\n var comboGroup = group.addGroup({\n id: id + \"-combo\",\n className: _global__WEBPACK_IMPORTED_MODULE_7__[\"default\"].comboContainerClassName\n }); // 用于存储自定义的群组\n\n comboGroup.toBack();\n this.set({\n nodeGroup: nodeGroup,\n edgeGroup: edgeGroup,\n comboGroup: comboGroup\n });\n }\n\n var delegateGroup = group.addGroup({\n id: id + \"-delegate\",\n className: _global__WEBPACK_IMPORTED_MODULE_7__[\"default\"].delegateContainerClassName\n });\n this.set({\n delegateGroup: delegateGroup\n });\n this.set('group', group);\n }; // eslint-disable-next-line class-methods-use-this\n\n\n AbstractGraph.prototype.getDefaultCfg = function () {\n return {\n /**\n * Container could be dom object or dom id\n */\n container: undefined,\n\n /**\n * Canvas width\n * unit pixel if undefined force fit width\n */\n width: undefined,\n\n /**\n * Canvas height\n * unit pixel if undefined force fit height\n */\n height: undefined,\n\n /**\n * renderer canvas or svg\n * @type {string}\n */\n renderer: 'canvas',\n\n /**\n * control graph behaviors\n */\n modes: {},\n\n /**\n * 注册插件\n */\n plugins: [],\n\n /**\n * source data\n */\n data: {},\n\n /**\n * Fit view padding (client scale)\n */\n fitViewPadding: 10,\n\n /**\n * Minimum scale size\n */\n minZoom: 0.2,\n\n /**\n * Maxmum scale size\n */\n maxZoom: 10,\n\n /**\n * capture events\n */\n event: true,\n\n /**\n * group node & edges into different graphic groups\n */\n groupByTypes: true,\n\n /**\n * determine if it's a directed graph\n */\n directed: false,\n\n /**\n * when data or shape changed, should canvas draw automatically\n */\n autoPaint: true,\n\n /**\n * store all the node instances\n */\n nodes: [],\n\n /**\n * store all the edge instances\n */\n edges: [],\n\n /**\n * store all the combo instances\n */\n combos: [],\n\n /**\n * store all the edge instances which are virtual edges related to collapsed combo\n */\n vedges: [],\n\n /**\n * all the instances indexed by id\n */\n itemMap: {},\n\n /**\n * 边直接连接到节点的中心,不再考虑锚点\n */\n linkCenter: false,\n\n /**\n * 默认的节点配置,data 上定义的配置会覆盖这些配置。例如:\n * defaultNode: {\n * type: 'rect',\n * size: [60, 40],\n * style: {\n * //... 样式配置项\n * }\n * }\n * 若数据项为 { id: 'node', x: 100, y: 100 }\n * 实际创建的节点模型是 { id: 'node', x: 100, y: 100, type: 'rect', size: [60, 40] }\n * 若数据项为 { id: 'node', x: 100, y: 100, type: 'circle' }\n * 实际创建的节点模型是 { id: 'node', x: 100, y: 100, type: 'circle', size: [60, 40] }\n */\n defaultNode: {},\n\n /**\n * 默认边配置,data 上定义的配置会覆盖这些配置。用法同 defaultNode\n */\n defaultEdge: {},\n\n /**\n * 节点默认样式,也可以添加状态样式\n * 例如:\n * const graph = new G6.Graph({\n * nodeStateStyles: {\n * selected: { fill: '#ccc', stroke: '#666' },\n * active: { lineWidth: 2 }\n * },\n * ...\n * });\n *\n */\n nodeStateStyles: {},\n\n /**\n * 边默认样式,用法同nodeStateStyle\n */\n edgeStateStyles: {},\n\n /**\n * graph 状态\n */\n states: {},\n\n /**\n * 是否启用全局动画\n */\n animate: false,\n\n /**\n * 动画设置,仅在 animate 为 true 时有效\n */\n animateCfg: {\n /**\n * 帧回调函数,用于自定义节点运动路径,为空时线性运动\n */\n onFrame: undefined,\n\n /**\n * 动画时长(ms)\n */\n duration: 500,\n\n /**\n * 指定动画动效\n */\n easing: 'easeLinear'\n },\n callback: undefined,\n // 默认不启用 undo & redo 功能\n enabledStack: false,\n // 只有当 enabledStack 为 true 时才起作用\n maxStep: 10,\n // 存储图上的 tooltip dom,方便销毁\n tooltips: []\n };\n };\n /**\n * 将值设置到 this.cfg 变量上面\n * @param key 键 或 对象值\n * @param val 值\n */\n\n\n AbstractGraph.prototype.set = function (key, val) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isPlainObject\"])(key)) {\n this.cfg = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, this.cfg), key);\n } else {\n this.cfg[key] = val;\n }\n\n return this;\n };\n /**\n * 获取 this.cfg 中的值\n * @param key 键\n */\n\n\n AbstractGraph.prototype.get = function (key) {\n var _a;\n\n return (_a = this.cfg) === null || _a === void 0 ? void 0 : _a[key];\n };\n /**\n * 获取 graph 的根图形分组\n * @return 根 group\n */\n\n\n AbstractGraph.prototype.getGroup = function () {\n return this.get('group');\n };\n /**\n * 获取 graph 的 DOM 容器\n * @return DOM 容器\n */\n\n\n AbstractGraph.prototype.getContainer = function () {\n return this.get('container');\n };\n /**\n * 获取 graph 的最小缩放比例\n * @return minZoom\n */\n\n\n AbstractGraph.prototype.getMinZoom = function () {\n return this.get('minZoom');\n };\n /**\n * 设置 graph 的最小缩放比例\n * @return minZoom\n */\n\n\n AbstractGraph.prototype.setMinZoom = function (ratio) {\n return this.set('minZoom', ratio);\n };\n /**\n * 获取 graph 的最大缩放比例\n * @param maxZoom\n */\n\n\n AbstractGraph.prototype.getMaxZoom = function () {\n return this.get('maxZoom');\n };\n /**\n * 设置 graph 的最大缩放比例\n * @param maxZoom\n */\n\n\n AbstractGraph.prototype.setMaxZoom = function (ratio) {\n return this.set('maxZoom', ratio);\n };\n /**\n * 获取 graph 的宽度\n * @return width\n */\n\n\n AbstractGraph.prototype.getWidth = function () {\n return this.get('width');\n };\n /**\n * 获取 graph 的高度\n * @return width\n */\n\n\n AbstractGraph.prototype.getHeight = function () {\n return this.get('height');\n };\n /**\n * 清理元素多个状态\n * @param {string|Item} item 元素id或元素实例\n * @param {string[]} states 状态\n */\n\n\n AbstractGraph.prototype.clearItemStates = function (item, states) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(item)) {\n item = this.findById(item);\n }\n\n var itemController = this.get('itemController');\n\n if (!states) {\n states = item.get('states');\n }\n\n itemController.clearItemStates(item, states);\n var stateController = this.get('stateController');\n stateController.updateStates(item, states, false);\n };\n /**\n * 设置各个节点样式,以及在各种状态下节点 keyShape 的样式。\n * 若是自定义节点切在各种状态下\n * graph.node(node => {\n * return {\n * type: 'rect',\n * label: node.id,\n * style: { fill: '#666' },\n * stateStyles: {\n * selected: { fill: 'blue' },\n * custom: { fill: 'green' }\n * }\n * }\n * });\n * @param {function} nodeFn 指定每个节点样式\n */\n\n\n AbstractGraph.prototype.node = function (nodeFn) {\n if (typeof nodeFn === 'function') {\n this.set('nodeMapper', nodeFn);\n }\n };\n /**\n * 设置各个边样式\n * @param {function} edgeFn 指定每个边的样式,用法同 node\n */\n\n\n AbstractGraph.prototype.edge = function (edgeFn) {\n if (typeof edgeFn === 'function') {\n this.set('edgeMapper', edgeFn);\n }\n };\n /**\n * 设置各个 combo 的配置\n * @param comboFn\n */\n\n\n AbstractGraph.prototype.combo = function (comboFn) {\n if (typeof comboFn === 'function') {\n this.set('comboMapper', comboFn);\n }\n };\n /**\n * 根据 ID 查询图元素实例\n * @param id 图元素 ID\n */\n\n\n AbstractGraph.prototype.findById = function (id) {\n return this.get('itemMap')[id];\n };\n /**\n * 根据对应规则查找单个元素\n * @param {ITEM_TYPE} type 元素类型(node | edge | group)\n * @param {(item: T, index: number) => T} fn 指定规则\n * @return {T} 元素实例\n */\n\n\n AbstractGraph.prototype.find = function (type, fn) {\n var result;\n var items = this.get(type + \"s\"); // eslint-disable-next-line consistent-return\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(items, function (item, i) {\n if (fn(item, i)) {\n result = item;\n return result;\n }\n });\n return result;\n };\n /**\n * 查找所有满足规则的元素\n * @param {string} type 元素类型(node|edge)\n * @param {string} fn 指定规则\n * @return {array} 元素实例\n */\n\n\n AbstractGraph.prototype.findAll = function (type, fn) {\n var result = [];\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(this.get(type + \"s\"), function (item, i) {\n if (fn(item, i)) {\n result.push(item);\n }\n });\n return result;\n };\n /**\n * 查找所有处于指定状态的元素\n * @param {string} type 元素类型(node|edge)\n * @param {string} state 状态\n * @return {object} 元素实例\n */\n\n\n AbstractGraph.prototype.findAllByState = function (type, state) {\n return this.findAll(type, function (item) {\n return item.hasState(state);\n });\n };\n /**\n * 平移画布\n * @param dx 水平方向位移\n * @param dy 垂直方向位移\n */\n\n\n AbstractGraph.prototype.translate = function (dx, dy) {\n var group = this.get('group');\n var matrix = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(group.getMatrix());\n\n if (!matrix) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n matrix = transform(matrix, [['t', dx, dy]]);\n group.setMatrix(matrix);\n this.emit('viewportchange', {\n action: 'translate',\n matrix: group.getMatrix()\n });\n this.autoPaint();\n };\n /**\n * 平移画布到某点\n * @param {number} x 水平坐标\n * @param {number} y 垂直坐标\n */\n\n\n AbstractGraph.prototype.moveTo = function (x, y, animate, animateCfg) {\n var group = this.get('group');\n Object(_util_math__WEBPACK_IMPORTED_MODULE_5__[\"move\"])(group, {\n x: x,\n y: y\n }, animate, animateCfg || {\n duration: 500,\n easing: 'easeCubic'\n });\n this.emit('viewportchange', {\n action: 'move',\n matrix: group.getMatrix()\n });\n };\n /**\n * 调整视口适应视图\n * @param {object} padding 四周围边距\n * @param {FitViewRules} rules fitView的规则\n */\n\n\n AbstractGraph.prototype.fitView = function (padding, rules) {\n if (padding) {\n this.set('fitViewPadding', padding);\n }\n\n var viewController = this.get('viewController');\n\n if (rules) {\n viewController.fitViewByRules(rules);\n } else {\n viewController.fitView();\n }\n\n this.autoPaint();\n };\n /**\n * 调整视口适应视图,不缩放,仅将图 bbox 中心对齐到画布中心\n */\n\n\n AbstractGraph.prototype.fitCenter = function () {\n var viewController = this.get('viewController');\n viewController.fitCenter();\n this.autoPaint();\n };\n /**\n * 新增行为\n * @param {string | ModeOption | ModeType[]} behaviors 添加的行为\n * @param {string | string[]} modes 添加到对应的模式\n * @return {Graph} Graph\n */\n\n\n AbstractGraph.prototype.addBehaviors = function (behaviors, modes) {\n var modeController = this.get('modeController');\n modeController.manipulateBehaviors(behaviors, modes, true);\n return this;\n };\n /**\n * 移除行为\n * @param {string | ModeOption | ModeType[]} behaviors 移除的行为\n * @param {string | string[]} modes 从指定的模式中移除\n * @return {Graph} Graph\n */\n\n\n AbstractGraph.prototype.removeBehaviors = function (behaviors, modes) {\n var modeController = this.get('modeController');\n modeController.manipulateBehaviors(behaviors, modes, false);\n return this;\n };\n /**\n * 更新行为参数\n * @param {string | ModeOption | ModeType} behavior 需要更新的行为\n * @param {string | string[]} modes 指定的模式中的行为,不指定则为 default\n * @return {Graph} Graph\n */\n\n\n AbstractGraph.prototype.updateBehavior = function (behavior, newCfg, mode) {\n var modeController = this.get('modeController');\n modeController.updateBehavior(behavior, newCfg, mode);\n return this;\n };\n /**\n * 伸缩窗口\n * @param ratio 伸缩比例\n * @param center 以center的x, y坐标为中心缩放\n * @param {boolean} animate 是否带有动画地移动\n * @param {GraphAnimateConfig} animateCfg 若带有动画,动画的配置项\n * @return {boolean} 缩放是否成功\n */\n\n\n AbstractGraph.prototype.zoom = function (ratio, center, animate, animateCfg) {\n var _this = this;\n\n var group = this.get('group');\n var matrix = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(group.getMatrix());\n var minZoom = this.get('minZoom');\n var maxZoom = this.get('maxZoom');\n\n if (!matrix) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n if (center) {\n matrix = transform(matrix, [['t', -center.x, -center.y], ['s', ratio, ratio], ['t', center.x, center.y]]);\n } else {\n matrix = transform(matrix, [['s', ratio, ratio]]);\n }\n\n if (minZoom && matrix[0] < minZoom || maxZoom && matrix[0] > maxZoom) {\n return false;\n } // matrix = [2, 0, 0, 0, 2, 0, -125, -125, 1];\n\n\n if (animate) {\n // Clone the original matrix to perform the animation\n var aniMatrix_1 = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(group.getMatrix());\n\n if (!aniMatrix_1) {\n aniMatrix_1 = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n var initialRatio_1 = aniMatrix_1[0];\n var targetRatio_1 = initialRatio_1 * ratio;\n var animateConfig = void 0;\n\n if (!animateCfg) {\n animateConfig = {\n duration: 500,\n callback: function callback() {\n _this.emit('viewportchange', {\n action: 'zoom',\n matrix: aniMatrix_1\n });\n }\n };\n } else if (animateCfg.callback) {\n // This is to prevent modifying the original animateCfg.callback\n var callback_1 = animateCfg.callback;\n animateConfig = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(animateCfg);\n\n animateConfig.callback = function () {\n _this.emit('viewportchange', {\n action: 'zoom',\n matrix: aniMatrix_1\n });\n\n callback_1();\n };\n } else {\n animateConfig = animateCfg;\n }\n\n group.animate(function (ratio) {\n if (ratio === 1) {\n // Reuse the first transformation\n aniMatrix_1 = matrix;\n } else {\n var scale = Object(_util_math__WEBPACK_IMPORTED_MODULE_5__[\"lerp\"])(initialRatio_1, targetRatio_1, ratio) / aniMatrix_1[0];\n\n if (center) {\n aniMatrix_1 = transform(aniMatrix_1, [['t', -center.x, -center.y], ['s', scale, scale], ['t', center.x, center.y]]);\n } else {\n aniMatrix_1 = transform(aniMatrix_1, [['s', scale, scale]]);\n }\n }\n\n return {\n matrix: aniMatrix_1\n };\n }, animateConfig);\n } else {\n group.setMatrix(matrix);\n this.emit('viewportchange', {\n action: 'zoom',\n matrix: matrix\n });\n this.autoPaint();\n }\n\n return true;\n };\n /**\n * 伸缩视口到一固定比例\n * @param {number} toRatio 伸缩比例\n * @param {Point} center 以center的x, y坐标为中心缩放\n * @return {boolean} 缩放是否成功\n */\n\n\n AbstractGraph.prototype.zoomTo = function (toRatio, center) {\n var ratio = toRatio / this.getZoom();\n return this.zoom(ratio, center);\n };\n /**\n * 将元素移动到视口中心\n * @param {Item} item 指定元素\n * @param {boolean} animate 是否带有动画地移动\n * @param {GraphAnimateConfig} animateCfg 若带有动画,动画的配置项\n */\n\n\n AbstractGraph.prototype.focusItem = function (item, animate, animateCfg) {\n var viewController = this.get('viewController');\n var isAnimate = false;\n if (animate) isAnimate = true;else if (animate === undefined) isAnimate = this.get('animate');\n var curAniamteCfg = {};\n if (animateCfg) curAniamteCfg = animateCfg;else if (animateCfg === undefined) curAniamteCfg = this.get('animateCfg');\n viewController.focus(item, isAnimate, curAniamteCfg);\n this.autoPaint();\n };\n /**\n * 自动重绘\n * @internal 仅供内部更新机制调用,外部根据需求调用 render 或 paint 接口\n */\n\n\n AbstractGraph.prototype.autoPaint = function () {\n if (this.get('autoPaint')) {\n this.paint();\n }\n };\n /**\n * 仅画布重新绘制\n */\n\n\n AbstractGraph.prototype.paint = function () {\n this.emit('beforepaint');\n this.get('canvas').draw();\n this.emit('afterpaint');\n };\n /**\n * 将屏幕坐标转换为视口坐标\n * @param {number} clientX 屏幕x坐标\n * @param {number} clientY 屏幕y坐标\n * @return {Point} 视口坐标\n */\n\n\n AbstractGraph.prototype.getPointByClient = function (clientX, clientY) {\n var viewController = this.get('viewController');\n return viewController.getPointByClient(clientX, clientY);\n };\n /**\n * 将绘制坐标转换为屏幕坐标\n * @param {number} x 绘制坐标 x\n * @param {number} y 绘制坐标 y\n * @return {Point} 绘制坐标\n */\n\n\n AbstractGraph.prototype.getClientByPoint = function (x, y) {\n var viewController = this.get('viewController');\n return viewController.getClientByPoint(x, y);\n };\n /**\n * 将画布坐标转换为绘制坐标\n * @param {number} canvasX 画布 x 坐标\n * @param {number} canvasY 画布 y 坐标\n * @return {object} 绘制坐标\n */\n\n\n AbstractGraph.prototype.getPointByCanvas = function (canvasX, canvasY) {\n var viewController = this.get('viewController');\n return viewController.getPointByCanvas(canvasX, canvasY);\n };\n /**\n * 将绘制坐标转换为画布坐标\n * @param {number} x 绘制坐标 x\n * @param {number} y 绘制坐标 y\n * @return {object} 画布坐标\n */\n\n\n AbstractGraph.prototype.getCanvasByPoint = function (x, y) {\n var viewController = this.get('viewController');\n return viewController.getCanvasByPoint(x, y);\n };\n /**\n * 获取图内容的中心绘制坐标\n * @return {object} 中心绘制坐标\n */\n\n\n AbstractGraph.prototype.getGraphCenterPoint = function () {\n var bbox = this.get('group').getCanvasBBox();\n return {\n x: (bbox.minX + bbox.maxX) / 2,\n y: (bbox.minY + bbox.maxY) / 2\n };\n };\n /**\n * 获取视口中心绘制坐标\n * @return {object} 视口中心绘制坐标\n */\n\n\n AbstractGraph.prototype.getViewPortCenterPoint = function () {\n return this.getPointByCanvas(this.get('width') / 2, this.get('height') / 2);\n };\n /**\n * 显示元素\n * @param {Item} item 指定元素\n * @param {boolean} stack 本次操作是否入栈,默认为 true\n */\n\n\n AbstractGraph.prototype.showItem = function (item, stack) {\n if (stack === void 0) {\n stack = true;\n }\n\n var itemController = this.get('itemController');\n var object = itemController.changeItemVisibility(item, true);\n\n if (stack && this.get('enabledStack')) {\n var id = object.getID();\n var type = object.getType();\n var before = {};\n var after = {};\n\n switch (type) {\n case 'node':\n before.nodes = [{\n id: id,\n visible: false\n }];\n after.nodes = [{\n id: id,\n visible: true\n }];\n break;\n\n case 'edge':\n before.nodes = [{\n id: id,\n visible: false\n }];\n after.edges = [{\n id: id,\n visible: true\n }];\n break;\n\n case 'combo':\n before.nodes = [{\n id: id,\n visible: false\n }];\n after.combos = [{\n id: id,\n visible: true\n }];\n break;\n\n default:\n break;\n }\n\n this.pushStack('visible', {\n before: before,\n after: after\n });\n }\n };\n /**\n * 隐藏元素\n * @param {Item} item 指定元素\n * @param {boolean} stack 本次操作是否入栈,默认为 true\n */\n\n\n AbstractGraph.prototype.hideItem = function (item, stack) {\n if (stack === void 0) {\n stack = true;\n }\n\n var itemController = this.get('itemController');\n var object = itemController.changeItemVisibility(item, false);\n\n if (stack && this.get('enabledStack')) {\n var id = object.getID();\n var type = object.getType();\n var before = {};\n var after = {};\n\n switch (type) {\n case 'node':\n before.nodes = [{\n id: id,\n visible: true\n }];\n after.nodes = [{\n id: id,\n visible: false\n }];\n break;\n\n case 'edge':\n before.nodes = [{\n id: id,\n visible: true\n }];\n after.edges = [{\n id: id,\n visible: false\n }];\n break;\n\n case 'combo':\n before.nodes = [{\n id: id,\n visible: true\n }];\n after.combos = [{\n id: id,\n visible: false\n }];\n break;\n\n default:\n break;\n }\n\n this.pushStack('visible', {\n before: before,\n after: after\n });\n }\n };\n /**\n * 刷新元素\n * @param {string|object} item 元素id或元素实例\n */\n\n\n AbstractGraph.prototype.refreshItem = function (item) {\n var itemController = this.get('itemController');\n itemController.refreshItem(item);\n };\n /**\n * 设置是否在更新/刷新后自动重绘\n * @param {boolean} auto 自动重绘\n */\n\n\n AbstractGraph.prototype.setAutoPaint = function (auto) {\n var self = this;\n self.set('autoPaint', auto);\n var canvas = self.get('canvas');\n canvas.set('autoDraw', auto);\n };\n /**\n * 删除元素\n * @param {Item} item 元素id或元素实例\n * @param {boolean} stack 本次操作是否入栈,默认为 true\n */\n\n\n AbstractGraph.prototype.remove = function (item, stack) {\n if (stack === void 0) {\n stack = true;\n }\n\n this.removeItem(item, stack);\n };\n /**\n * 删除元素\n * @param {Item} item 元素id或元素实例\n * @param {boolean} stack 本次操作是否入栈,默认为 true\n */\n\n\n AbstractGraph.prototype.removeItem = function (item, stack) {\n if (stack === void 0) {\n stack = true;\n }\n\n var nodeItem = item;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(item)) nodeItem = this.findById(item);\n\n if (!nodeItem && Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(item)) {\n console.warn('The item to be removed does not exist!');\n } else if (nodeItem) {\n var type = '';\n if (nodeItem.getType) type = nodeItem.getType(); // 将删除的元素入栈\n\n if (stack && this.get('enabledStack')) {\n var deletedModel = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, nodeItem.getModel()), {\n itemType: type\n });\n\n var before = {};\n\n switch (type) {\n case 'node':\n {\n before.nodes = [deletedModel];\n before.edges = [];\n var edges = nodeItem.getEdges();\n\n for (var i = edges.length - 1; i >= 0; i--) {\n before.edges.push(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, edges[i].getModel()), {\n itemType: 'edge'\n }));\n }\n\n break;\n }\n\n case 'edge':\n before.edges = [deletedModel];\n break;\n\n case 'combo':\n before.combos = [deletedModel];\n break;\n\n default:\n break;\n }\n\n this.pushStack('delete', {\n before: before,\n after: {}\n });\n }\n\n if (type === 'node') {\n var model = nodeItem.getModel(); // 如果删除的是节点,且该节点存在于某个 Combo 中,则需要先将 node 从 combo 中移除,否则删除节点后,操作 combo 会出错\n\n if (model.comboId) {\n this.updateComboTree(nodeItem, undefined, false);\n }\n }\n\n var itemController = this.get('itemController');\n itemController.removeItem(nodeItem);\n\n if (type === 'combo') {\n var newComboTrees = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"reconstructTree\"])(this.get('comboTrees'));\n this.set('comboTrees', newComboTrees);\n }\n }\n };\n /**\n * 新增元素\n * @param {ITEM_TYPE} type 元素类型(node | edge)\n * @param {ModelConfig} model 元素数据模型\n * @param {boolean} stack 本次操作是否入栈,默认为 true\n * @param {boolean} sortCombo 本次操作是否需要更新 combo 层级顺序,内部参数,用户在外部使用 addItem 时始终时需要更新\n * @return {Item} 元素实例\n */\n\n\n AbstractGraph.prototype.addItem = function (type, model, stack, sortCombo) {\n if (stack === void 0) {\n stack = true;\n }\n\n if (sortCombo === void 0) {\n sortCombo = true;\n }\n\n var currentComboSorted = this.get('comboSorted');\n this.set('comboSorted', currentComboSorted && !sortCombo);\n var itemController = this.get('itemController'); // 添加节点、边或combo之前,先验证数据是否符合规范\n\n if (!Object(_util_validation__WEBPACK_IMPORTED_MODULE_6__[\"singleDataValidation\"])(type, model)) {\n return false;\n }\n\n if (model.id && this.findById(model.id)) {\n console.warn(\"This item exists already. Be sure the id %c\" + model.id + \"%c is unique.\", 'font-size: 20px; color: red;', '');\n return;\n }\n\n var item;\n var comboTrees = this.get('comboTrees');\n if (!comboTrees) comboTrees = [];\n\n if (type === 'combo') {\n var itemMap_1 = this.get('itemMap');\n var foundParent_1 = false;\n comboTrees.forEach(function (ctree) {\n if (foundParent_1) return; // terminate the forEach after the tree containing the item is done\n\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTreeUp\"])(ctree, function (child) {\n // find the parent\n if (model.parentId === child.id) {\n foundParent_1 = true;\n\n var newCombo = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n id: model.id,\n depth: child.depth + 2\n }, model);\n\n if (child.children) child.children.push(newCombo);else child.children = [newCombo];\n model.depth = newCombo.depth;\n item = itemController.addItem(type, model);\n }\n\n var childItem = itemMap_1[child.id]; // after the parent is found, update all the ancestors\n\n if (foundParent_1 && childItem && childItem.getType && childItem.getType() === 'combo') {\n itemController.updateCombo(childItem, child.children);\n }\n\n return true;\n });\n }); // if the parent is not found, add it to the root\n\n if (!foundParent_1) {\n var newCombo = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n id: model.id,\n depth: 0\n }, model);\n\n model.depth = newCombo.depth;\n comboTrees.push(newCombo);\n item = itemController.addItem(type, model);\n }\n\n this.set('comboTrees', comboTrees);\n } else if (type === 'node' && Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(model.comboId) && comboTrees) {\n var parentCombo = this.findById(model.comboId);\n\n if (parentCombo && parentCombo.getType && parentCombo.getType() !== 'combo') {\n console.warn(\"'\" + model.comboId + \"' is not a id of a combo in the graph, the node will be added without combo.\");\n }\n\n item = itemController.addItem(type, model);\n var itemMap_2 = this.get('itemMap');\n var foundParent_2 = false,\n foundNode_1 = false;\n (comboTrees || []).forEach(function (ctree) {\n if (foundNode_1 || foundParent_2) return; // terminate the forEach\n\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTreeUp\"])(ctree, function (child) {\n if (child.id === model.id) {\n // if the item exists in the tree already, terminate\n foundNode_1 = true;\n return false;\n }\n\n if (model.comboId === child.id && !foundNode_1) {\n // found the parent, add the item to the children of its parent in the tree\n foundParent_2 = true;\n var cloneNode = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(model);\n cloneNode.itemType = 'node';\n if (child.children) child.children.push(cloneNode);else child.children = [cloneNode];\n cloneNode.depth = child.depth + 1;\n } // update the size of all the ancestors\n\n\n if (foundParent_2 && itemMap_2[child.id].getType && itemMap_2[child.id].getType() === 'combo') {\n itemController.updateCombo(itemMap_2[child.id], child.children);\n }\n\n return true;\n });\n });\n } else {\n item = itemController.addItem(type, model);\n }\n\n if (type === 'node' && model.comboId || type === 'combo' && model.parentId) {\n // add the combo to the parent's children array\n var parentCombo = this.findById(model.comboId || model.parentId);\n if (parentCombo && parentCombo.getType && parentCombo.getType() === 'combo') parentCombo.addChild(item);\n }\n\n var combos = this.get('combos');\n\n if (combos && combos.length > 0) {\n this.sortCombos();\n }\n\n this.autoPaint();\n\n if (stack && this.get('enabledStack')) {\n var addedModel = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, item.getModel()), {\n itemType: type\n });\n\n var after = {};\n\n switch (type) {\n case 'node':\n after.nodes = [addedModel];\n break;\n\n case 'edge':\n after.edges = [addedModel];\n break;\n\n case 'combo':\n after.combos = [addedModel];\n break;\n\n default:\n break;\n }\n\n this.pushStack('add', {\n before: {},\n after: after\n });\n }\n\n return item;\n };\n /**\n * 新增元素\n * @param {ITEM_TYPE} type 元素类型(node | edge)\n * @param {ModelConfig} model 元素数据模型\n * @param {boolean} stack 本次操作是否入栈,默认为 true\n * @return {Item} 元素实例\n */\n\n\n AbstractGraph.prototype.add = function (type, model, stack, sortCombo) {\n if (stack === void 0) {\n stack = true;\n }\n\n if (sortCombo === void 0) {\n sortCombo = true;\n }\n\n return this.addItem(type, model, stack, sortCombo);\n };\n /**\n * 更新元素\n * @param {Item} item 元素id或元素实例\n * @param {Partial | EdgeConfig} cfg 需要更新的数据\n */\n\n\n AbstractGraph.prototype.updateItem = function (item, cfg, stack) {\n var _this = this;\n\n if (stack === void 0) {\n stack = true;\n }\n\n var itemController = this.get('itemController');\n var currentItem;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(item)) {\n currentItem = this.findById(item);\n } else {\n currentItem = item;\n }\n\n var UnupdateModel = Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(currentItem.getModel());\n var type = '';\n if (currentItem.getType) type = currentItem.getType();\n\n var states = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], currentItem.getStates(), true);\n\n if (type === 'combo') {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(states, function (state) {\n return _this.setItemState(currentItem, state, false);\n });\n }\n\n itemController.updateItem(currentItem, cfg);\n\n if (type === 'combo') {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(states, function (state) {\n return _this.setItemState(currentItem, state, true);\n });\n }\n\n if (stack && this.get('enabledStack')) {\n var before = {\n nodes: [],\n edges: [],\n combos: []\n };\n var after = {\n nodes: [],\n edges: [],\n combos: []\n };\n\n var afterModel = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n id: UnupdateModel.id\n }, cfg);\n\n switch (type) {\n case 'node':\n before.nodes.push(UnupdateModel);\n after.nodes.push(afterModel);\n break;\n\n case 'edge':\n before.edges.push(UnupdateModel);\n after.edges.push(afterModel);\n break;\n\n case 'combo':\n before.combos.push(UnupdateModel);\n after.combos.push(afterModel);\n break;\n\n default:\n break;\n }\n\n if (type === 'node') {\n before.nodes.push(UnupdateModel);\n }\n\n this.pushStack('update', {\n before: before,\n after: after\n });\n }\n };\n /**\n * 更新元素\n * @param {Item} item 元素id或元素实例\n * @param {Partial | EdgeConfig} cfg 需要更新的数据\n * @param {boolean} stack 本次操作是否入栈,默认为 true\n */\n\n\n AbstractGraph.prototype.update = function (item, cfg, stack) {\n if (stack === void 0) {\n stack = true;\n }\n\n this.updateItem(item, cfg, stack);\n };\n /**\n * 设置元素状态\n * @param {Item} item 元素id或元素实例\n * @param {string} state 状态名称\n * @param {string | boolean} value 是否启用状态 或 状态值\n */\n\n\n AbstractGraph.prototype.setItemState = function (item, state, value) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(item)) {\n item = this.findById(item);\n }\n\n var itemController = this.get('itemController');\n itemController.setItemState(item, state, value);\n var stateController = this.get('stateController');\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(value)) {\n stateController.updateState(item, state + \":\" + value, true);\n } else {\n stateController.updateState(item, state, value);\n }\n };\n /**\n * 将指定状态的优先级提升为最高优先级\n * @param {Item} item 元素id或元素实例\n * @param state 状态名称\n */\n\n\n AbstractGraph.prototype.priorityState = function (item, state) {\n var itemController = this.get('itemController');\n itemController.priorityState(item, state);\n };\n /**\n * 设置视图初始化数据\n * @param {GraphData} data 初始化数据\n */\n\n\n AbstractGraph.prototype.data = function (data) {\n Object(_util_validation__WEBPACK_IMPORTED_MODULE_6__[\"dataValidation\"])(data);\n this.set('data', data);\n };\n /**\n * 根据data接口的数据渲染视图\n */\n\n\n AbstractGraph.prototype.render = function () {\n var self = this;\n this.set('comboSorted', false);\n var data = this.get('data');\n\n if (this.get('enabledStack')) {\n // render 之前清空 redo 和 undo 栈\n this.clearStack();\n }\n\n if (!data) {\n throw new Error('data must be defined first');\n }\n\n var _a = data.nodes,\n nodes = _a === void 0 ? [] : _a,\n _b = data.edges,\n edges = _b === void 0 ? [] : _b,\n _c = data.combos,\n combos = _c === void 0 ? [] : _c;\n this.clear(true);\n this.emit('beforerender');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(nodes, function (node) {\n self.add('node', node, false, false);\n }); // process the data to tree structure\n\n if (combos && combos.length !== 0) {\n var comboTrees = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"plainCombosToTrees\"])(combos, nodes);\n this.set('comboTrees', comboTrees); // add combos\n\n self.addCombos(combos);\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(edges, function (edge) {\n self.add('edge', edge, false, false);\n });\n var animate = self.get('animate');\n\n if (self.get('fitView') || self.get('fitCenter')) {\n self.set('animate', false);\n } // layout\n\n\n var layoutController = self.get('layoutController');\n\n if (layoutController) {\n layoutController.layout(success);\n if (this.destroyed) return;\n } else {\n if (self.get('fitView')) {\n self.fitView();\n }\n\n if (self.get('fitCenter')) {\n self.fitCenter();\n }\n\n self.emit('afterrender');\n self.set('animate', animate);\n } // 将在 onLayoutEnd 中被调用\n\n\n function success() {\n // fitView 与 fitCenter 共存时,fitView 优先,fitCenter 不再执行\n if (self.get('fitView')) {\n self.fitView();\n } else if (self.get('fitCenter')) {\n self.fitCenter();\n }\n\n self.autoPaint();\n self.emit('afterrender');\n\n if (self.get('fitView') || self.get('fitCenter')) {\n self.set('animate', animate);\n }\n }\n\n if (!this.get('groupByTypes')) {\n if (combos && combos.length !== 0) {\n this.sortCombos();\n } else {\n // 为提升性能,选择数量少的进行操作\n if (data.nodes && data.edges && data.nodes.length < data.edges.length) {\n var nodesArr = this.getNodes(); // 遍历节点实例,将所有节点提前。\n\n nodesArr.forEach(function (node) {\n node.toFront();\n });\n } else {\n var edgesArr = this.getEdges(); // 遍历节点实例,将所有节点提前。\n\n edgesArr.forEach(function (edge) {\n edge.toBack();\n });\n }\n }\n }\n\n if (this.get('enabledStack')) {\n this.pushStack('render');\n }\n };\n /**\n * 接收数据进行渲染\n * @Param {Object} data 初始化数据\n */\n\n\n AbstractGraph.prototype.read = function (data) {\n this.data(data);\n this.render();\n }; // 比较item\n\n\n AbstractGraph.prototype.diffItems = function (type, items, models) {\n var self = this;\n var item;\n var itemMap = this.get('itemMap');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(models, function (model) {\n item = itemMap[model.id];\n\n if (item) {\n if (self.get('animate') && type === NODE) {\n var containerMatrix = item.getContainer().getMatrix();\n if (!containerMatrix) containerMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n item.set('originAttrs', {\n x: containerMatrix[6],\n y: containerMatrix[7]\n });\n }\n\n self.updateItem(item, model, false);\n } else {\n item = self.addItem(type, model, false);\n }\n\n if (item) items[type + \"s\"].push(item);\n });\n };\n /**\n * 更改源数据,根据新数据重新渲染视图\n * @param {GraphData | TreeGraphData} data 源数据\n * @param {boolean} 是否入栈,默认为true\n * @return {object} this\n */\n\n\n AbstractGraph.prototype.changeData = function (data, stack) {\n if (stack === void 0) {\n stack = true;\n }\n\n var self = this;\n\n if (!Object(_util_validation__WEBPACK_IMPORTED_MODULE_6__[\"dataValidation\"])(data)) {\n return this;\n }\n\n if (stack && this.get('enabledStack')) {\n this.pushStack('changedata', {\n before: self.save(),\n after: data\n });\n }\n\n this.set('comboSorted', false); // 删除 hulls\n\n this.removeHulls(); // 更改数据源后,取消所有状态\n\n this.getNodes().map(function (node) {\n return self.clearItemStates(node);\n });\n this.getEdges().map(function (edge) {\n return self.clearItemStates(edge);\n });\n var canvas = this.get('canvas');\n var localRefresh = canvas.get('localRefresh');\n canvas.set('localRefresh', false);\n\n if (!self.get('data')) {\n self.data(data);\n self.render();\n }\n\n var itemMap = this.get('itemMap');\n var items = {\n nodes: [],\n edges: []\n };\n var combosData = data.combos;\n\n if (combosData) {\n var comboTrees = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"plainCombosToTrees\"])(combosData, data.nodes);\n this.set('comboTrees', comboTrees);\n } else {\n this.set('comboTrees', []);\n }\n\n this.diffItems('node', items, data.nodes);\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(itemMap, function (item, id) {\n itemMap[id].getModel().depth = 0;\n if (item.getType && item.getType() === 'edge') return;\n\n if (item.getType && item.getType() === 'combo') {\n delete itemMap[id];\n item.destroy();\n } else if (items.nodes.indexOf(item) < 0) {\n delete itemMap[id];\n self.remove(item, false);\n }\n }); // clear the destroyed combos here to avoid removing sub nodes before removing the parent combo\n\n var comboItems = this.getCombos();\n var combosLength = comboItems.length;\n\n for (var i = combosLength - 1; i >= 0; i--) {\n if (comboItems[i].destroyed) {\n comboItems.splice(i, 1);\n }\n } // process the data to tree structure\n\n\n if (combosData) {\n // add combos\n self.addCombos(combosData);\n\n if (!this.get('groupByTypes')) {\n this.sortCombos();\n }\n }\n\n this.diffItems('edge', items, data.edges);\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(itemMap, function (item, id) {\n if (item.getType && (item.getType() === 'node' || item.getType() === 'combo')) return;\n\n if (items.edges.indexOf(item) < 0) {\n delete itemMap[id];\n self.remove(item, false);\n }\n });\n this.set({\n nodes: items.nodes,\n edges: items.edges\n });\n var layoutController = this.get('layoutController');\n\n if (layoutController) {\n layoutController.changeData();\n\n if (self.get('animate') && !layoutController.getLayoutType()) {\n // 如果没有指定布局\n self.positionsAnimate();\n } else {\n self.autoPaint();\n }\n }\n\n setTimeout(function () {\n canvas.set('localRefresh', localRefresh);\n }, 16);\n return this;\n };\n /**\n * 私有方法,在 render 和 changeData 的时候批量添加数据中所有平铺的 combos\n * @param {ComboConfig[]} combos 平铺的 combos 数据\n */\n\n\n AbstractGraph.prototype.addCombos = function (combos) {\n var self = this;\n var comboTrees = self.get('comboTrees');\n var itemController = this.get('itemController');\n itemController.addCombos(comboTrees, combos);\n };\n /**\n * 根据已经存在的节点或 combo 创建新的 combo\n * @param combo combo ID 或 Combo 配置\n * @param children 添加到 Combo 中的元素,包括节点和 combo\n */\n\n\n AbstractGraph.prototype.createCombo = function (combo, children) {\n var _this = this;\n\n this.set('comboSorted', false); // step 1: 创建新的 Combo\n\n var comboId = '';\n var comboConfig;\n if (!combo) return;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(combo)) {\n comboId = combo;\n comboConfig = {\n id: combo\n };\n } else {\n comboId = combo.id;\n\n if (!comboId) {\n console.warn('Create combo failed. Please assign a unique string id for the adding combo.');\n return;\n }\n\n comboConfig = combo;\n } // step2: 更新 children,根据类型添加 comboId 或 parentId\n\n\n var trees = children.map(function (elementId) {\n var item = _this.findById(elementId);\n\n var model = item.getModel();\n var type = '';\n if (item.getType) type = item.getType();\n var cItem = {\n id: item.getID(),\n itemType: type\n };\n\n if (type === 'combo') {\n cItem.parentId = comboId;\n model.parentId = comboId;\n } else if (type === 'node') {\n cItem.comboId = comboId;\n model.comboId = comboId;\n }\n\n return cItem;\n });\n comboConfig.children = trees; // step 3: 添加 Combo,addItem 时会将子将元素添加到 Combo 中\n\n this.addItem('combo', comboConfig, false);\n this.set('comboSorted', false); // step4: 更新 comboTrees 结构\n\n var comboTrees = this.get('comboTrees');\n (comboTrees || []).forEach(function (ctree) {\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTreeUp\"])(ctree, function (child) {\n if (child.id === comboId) {\n child.itemType = 'combo';\n child.children = trees;\n return false;\n }\n\n return true;\n });\n });\n\n if (comboTrees) {\n this.sortCombos();\n }\n };\n /**\n * 解散 combo\n * @param {String | INode | ICombo} combo 需要被解散的 Combo item 或 id\n */\n\n\n AbstractGraph.prototype.uncombo = function (combo) {\n var _this = this;\n\n var _a;\n\n var self = this;\n var comboItem = combo;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(combo)) {\n comboItem = this.findById(combo);\n }\n\n if (!comboItem || comboItem.getType && comboItem.getType() !== 'combo') {\n console.warn('The item is not a combo!');\n return;\n }\n\n var parentId = comboItem.getModel().parentId;\n var comboTrees = self.get('comboTrees');\n if (!comboTrees) comboTrees = [];\n var itemMap = this.get('itemMap');\n var comboId = comboItem.get('id');\n var treeToBeUncombo;\n var brothers = [];\n var comboItems = this.get('combos');\n var parentItem = this.findById(parentId);\n comboTrees.forEach(function (ctree) {\n if (treeToBeUncombo) return; // terminate the forEach\n\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTreeUp\"])(ctree, function (subtree) {\n var _a; // find the combo to be uncomboed, delete the combo from map and cache\n\n\n if (subtree.id === comboId) {\n treeToBeUncombo = subtree; // delete the related edges\n\n var edges = comboItem.getEdges();\n edges.forEach(function (edge) {\n _this.removeItem(edge, false);\n });\n var index = comboItems.indexOf(comboItem);\n comboItems.splice(index, 1);\n delete itemMap[comboId];\n comboItem.destroy();\n\n _this.emit('afterremoveitem', {\n item: comboItem,\n type: 'combo'\n });\n } // find the parent to remove the combo from the combo's brothers array and add the combo's children to the combo's brothers array in the tree\n\n\n if (parentId && treeToBeUncombo && subtree.id === parentId) {\n parentItem.removeCombo(comboItem);\n brothers = subtree.children; // the combo's brothers\n // remove the combo from its brothers array\n\n var index = brothers.indexOf(treeToBeUncombo);\n\n if (index !== -1) {\n brothers.splice(index, 1);\n } // append the combo's children to the combo's brothers array\n\n\n (_a = treeToBeUncombo.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n var item = _this.findById(child.id);\n\n var childModel = item.getModel();\n\n if (item.getType && item.getType() === 'combo') {\n child.parentId = parentId;\n delete child.comboId;\n childModel.parentId = parentId; // update the parentId of the model\n\n delete childModel.comboId;\n } else if (item.getType && item.getType() === 'node') {\n child.comboId = parentId;\n childModel.comboId = parentId; // update the parentId of the model\n }\n\n parentItem.addChild(item);\n brothers.push(child);\n });\n return false;\n }\n\n return true;\n });\n }); // if the parentId is not found, remove the combo from the roots\n\n if (!parentId && treeToBeUncombo) {\n var index = comboTrees.indexOf(treeToBeUncombo);\n comboTrees.splice(index, 1); // modify the parentId of the children\n\n (_a = treeToBeUncombo.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n child.parentId = undefined;\n\n var childModel = _this.findById(child.id).getModel();\n\n delete childModel.parentId; // update the parentId of the model\n\n delete childModel.comboId; // update the comboId of the model\n\n if (child.itemType !== 'node') comboTrees.push(child);\n });\n }\n };\n /**\n * 根据节点的 bbox 更新所有 combos 的绘制,包括 combos 的位置和范围\n */\n\n\n AbstractGraph.prototype.updateCombos = function () {\n var _this = this;\n\n var self = this;\n var comboTrees = this.get('comboTrees');\n var itemController = self.get('itemController');\n var itemMap = self.get('itemMap');\n (comboTrees || []).forEach(function (ctree) {\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTreeUp\"])(ctree, function (child) {\n if (!child) {\n return true;\n }\n\n var childItem = itemMap[child.id];\n\n if (childItem && childItem.getType && childItem.getType() === 'combo') {\n // 更新具体的 Combo 之前先清除所有的已有状态,以免将 state 中的样式更新为 Combo 的样式\n var states = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], childItem.getStates(), true);\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(states, function (state) {\n return _this.setItemState(childItem, state, false);\n }); // 更新具体的 Combo\n\n itemController.updateCombo(childItem, child.children); // 更新 Combo 后,还原已有的状态\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(states, function (state) {\n return _this.setItemState(childItem, state, true);\n });\n }\n\n return true;\n });\n });\n self.sortCombos();\n };\n /**\n * 根据节点的 bbox 更新 combo 及其祖先 combos 的绘制,包括 combos 的位置和范围\n * @param {String | ICombo} combo 需要被更新的 Combo 或 id,若指定,则该 Combo 及所有祖先 Combod 都会被更新\n */\n\n\n AbstractGraph.prototype.updateCombo = function (combo) {\n var _this = this;\n\n var self = this;\n var comboItem = combo;\n var comboId;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(combo)) {\n comboItem = this.findById(combo);\n }\n\n if (!comboItem || comboItem.getType && comboItem.getType() !== 'combo') {\n console.warn('The item to be updated is not a combo!');\n return;\n }\n\n comboId = comboItem.get('id');\n var comboTrees = this.get('comboTrees');\n var itemController = self.get('itemController');\n var itemMap = self.get('itemMap');\n (comboTrees || []).forEach(function (ctree) {\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTreeUp\"])(ctree, function (child) {\n if (!child) {\n return true;\n }\n\n var childItem = itemMap[child.id];\n\n if (comboId === child.id && childItem && childItem.getType && childItem.getType() === 'combo') {\n // 更新具体的 Combo 之前先清除所有的已有状态,以免将 state 中的样式更新为 Combo 的样式\n var states = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], childItem.getStates(), true); // || !item.getStateStyle(stateName)\n\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(states, function (state) {\n if (childItem.getStateStyle(state)) {\n _this.setItemState(childItem, state, false);\n }\n }); // 更新具体的 Combo\n\n itemController.updateCombo(childItem, child.children); // 更新 Combo 后,还原已有的状态\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(states, function (state) {\n if (childItem.getStateStyle(state)) {\n _this.setItemState(childItem, state, true);\n }\n });\n if (comboId) comboId = child.parentId;\n }\n\n return true;\n });\n });\n };\n /**\n * 更新树结构,例如移动子树等\n * @param {String | INode | ICombo} item 需要被更新的 Combo 或 节点 id\n * @param {string | undefined} parentId 新的父 combo id,undefined 代表没有父 combo\n */\n\n\n AbstractGraph.prototype.updateComboTree = function (item, parentId, stack) {\n if (stack === void 0) {\n stack = true;\n }\n\n var self = this;\n this.set('comboSorted', false);\n var uItem;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(item)) {\n uItem = self.findById(item);\n } else {\n uItem = item;\n }\n\n var model = uItem.getModel();\n var oldParentId = model.comboId || model.parentId;\n var type = '';\n if (uItem.getType) type = uItem.getType(); // 若 item 是 Combo,且 parentId 是其子孙 combo 的 id,则警告并终止\n\n if (parentId && type === 'combo') {\n var comboTrees = this.get('comboTrees');\n var valid_1 = true;\n var itemSubTree_1;\n (comboTrees || []).forEach(function (ctree) {\n if (itemSubTree_1) return;\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTree\"])(ctree, function (subTree) {\n if (itemSubTree_1) return; // 找到从 item 开始的子树\n\n if (subTree.id === uItem.getID()) {\n itemSubTree_1 = subTree;\n }\n\n return true;\n });\n }); // 在以 item 为根的子树中寻找与 parentId 相同的后继元素\n\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTree\"])(itemSubTree_1, function (subTree) {\n if (subTree.id === parentId) {\n valid_1 = false;\n return false;\n }\n\n return true;\n }); // parentId 是 item 的一个后继元素,不能进行更新\n\n if (!valid_1) {\n console.warn('Failed to update the combo tree! The parentId points to a descendant of the combo!');\n return;\n }\n }\n\n if (stack && this.get('enabledStack')) {\n var beforeData = {},\n afterData = {};\n\n if (type === 'combo') {\n beforeData.combos = [{\n id: model.id,\n parentId: model.parentId\n }];\n afterData.combos = [{\n id: model.id,\n parentId: parentId\n }];\n } else if (type === 'node') {\n beforeData.nodes = [{\n id: model.id,\n parentId: model.comboId\n }];\n afterData.nodes = [{\n id: model.id,\n parentId: parentId\n }];\n }\n\n this.pushStack('updateComboTree', {\n before: beforeData,\n after: afterData\n });\n } // 当 combo 存在 parentId 或 comboId 时,才将其移除\n\n\n if (model.parentId || model.comboId) {\n var combo = this.findById(model.parentId || model.comboId);\n\n if (combo) {\n combo.removeChild(uItem);\n }\n }\n\n if (type === 'combo') {\n model.parentId = parentId;\n } else if (type === 'node') {\n model.comboId = parentId;\n } // 只有当移入到指定 combo 时才添加\n\n\n if (parentId) {\n var parentCombo = this.findById(parentId);\n\n if (parentCombo) {\n // 将元素添加到 parentCombo 中\n parentCombo.addChild(uItem);\n }\n } // 如果原先有父亲 combo,则从原父 combo 的子元素数组中删除\n\n\n if (oldParentId) {\n var parentCombo = this.findById(oldParentId);\n\n if (parentCombo) {\n // 将元素从 parentCombo 中移除\n parentCombo.removeChild(uItem);\n }\n }\n\n var newComboTrees = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"reconstructTree\"])(this.get('comboTrees'), model.id, parentId);\n this.set('comboTrees', newComboTrees);\n this.updateCombos();\n };\n /**\n * 导出图数据\n * @return {object} data\n */\n\n\n AbstractGraph.prototype.save = function () {\n var nodes = [];\n var edges = [];\n var combos = [];\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(this.get('nodes'), function (node) {\n nodes.push(node.getModel());\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(this.get('edges'), function (edge) {\n edges.push(edge.getModel());\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(this.get('combos'), function (combo) {\n combos.push(combo.getModel());\n });\n return {\n nodes: nodes,\n edges: edges,\n combos: combos\n };\n };\n /**\n * 改变画布大小\n * @param {number} width 画布宽度\n * @param {number} height 画布高度\n * @return {object} this\n */\n\n\n AbstractGraph.prototype.changeSize = function (width, height) {\n var viewController = this.get('viewController');\n viewController.changeSize(width, height);\n return this;\n };\n /**\n * 当源数据在外部发生变更时,根据新数据刷新视图。但是不刷新节点位置\n */\n\n\n AbstractGraph.prototype.refresh = function () {\n var self = this;\n self.emit('beforegraphrefresh');\n\n if (self.get('animate')) {\n self.positionsAnimate();\n } else {\n var nodes = self.get('nodes');\n var edges = self.get('edges');\n var vedges = self.get('edges');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(nodes, function (node) {\n node.refresh();\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(edges, function (edge) {\n edge.refresh();\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(vedges, function (vedge) {\n vedge.refresh();\n });\n }\n\n self.emit('aftergraphrefresh');\n self.autoPaint();\n };\n /**\n * 获取当前图中所有节点的item实例\n * @return {INode} item数组\n */\n\n\n AbstractGraph.prototype.getNodes = function () {\n return this.get('nodes');\n };\n /**\n * 获取当前图中所有边的item实例\n * @return {IEdge} item数组\n */\n\n\n AbstractGraph.prototype.getEdges = function () {\n return this.get('edges');\n };\n /**\n * 获取图中所有的 combo 实例\n */\n\n\n AbstractGraph.prototype.getCombos = function () {\n return this.get('combos');\n };\n /**\n * 获取指定 Combo 中所有的节点\n * @param comboId combo ID\n */\n\n\n AbstractGraph.prototype.getComboChildren = function (combo) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(combo)) {\n combo = this.findById(combo);\n }\n\n if (!combo || combo.getType && combo.getType() !== 'combo') {\n console.warn('The combo does not exist!');\n return;\n }\n\n return combo.getChildren();\n };\n /**\n * 根据 graph 上的 animateCfg 进行视图中节点位置动画接口\n */\n\n\n AbstractGraph.prototype.positionsAnimate = function () {\n var self = this;\n self.emit('beforeanimate');\n var animateCfg = self.get('animateCfg');\n var onFrame = animateCfg.onFrame;\n var nodes = self.getNodes();\n var toNodes = nodes.map(function (node) {\n var model = node.getModel();\n return {\n id: model.id,\n x: model.x,\n y: model.y\n };\n });\n\n if (self.isAnimating()) {\n self.stopAnimate();\n }\n\n var canvas = self.get('canvas');\n canvas.animate(function (ratio) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(toNodes, function (data) {\n var node = self.findById(data.id);\n\n if (!node || node.destroyed) {\n return;\n }\n\n var originAttrs = node.get('originAttrs');\n var model = node.get('model');\n\n if (!originAttrs) {\n var containerMatrix = node.getContainer().getMatrix();\n if (!containerMatrix) containerMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n originAttrs = {\n x: containerMatrix[6],\n y: containerMatrix[7]\n };\n node.set('originAttrs', originAttrs);\n }\n\n if (onFrame) {\n var attrs = onFrame(node, ratio, data, originAttrs);\n node.set('model', Object.assign(model, attrs));\n } else {\n model.x = originAttrs.x + (data.x - originAttrs.x) * ratio;\n model.y = originAttrs.y + (data.y - originAttrs.y) * ratio;\n }\n });\n self.refreshPositions();\n }, {\n duration: animateCfg.duration,\n easing: animateCfg.easing,\n callback: function callback() {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(nodes, function (node) {\n node.set('originAttrs', null);\n });\n\n if (animateCfg.callback) {\n animateCfg.callback();\n }\n\n self.emit('afteranimate');\n self.animating = false;\n }\n });\n };\n /**\n * 当节点位置在外部发生改变时,刷新所有节点位置,重计算边\n */\n\n\n AbstractGraph.prototype.refreshPositions = function () {\n var self = this;\n self.emit('beforegraphrefreshposition');\n var nodes = self.get('nodes');\n var edges = self.get('edges');\n var vedges = self.get('vedges');\n var combos = self.get('combos');\n var model;\n var updatedNodes = {};\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(nodes, function (node) {\n model = node.getModel();\n var originAttrs = node.get('originAttrs');\n\n if (originAttrs && model.x === originAttrs.x && model.y === originAttrs.y) {\n return;\n }\n\n var changed = node.updatePosition({\n x: model.x,\n y: model.y\n });\n updatedNodes[model.id] = changed;\n if (model.comboId) updatedNodes[model.comboId] = updatedNodes[model.comboId] || changed;\n });\n\n if (combos && combos.length !== 0) {\n self.updateCombos();\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(edges, function (edge) {\n var sourceModel = edge.getSource().getModel();\n var target = edge.getTarget(); // 避免 target 是纯对象的情况下调用 getModel 方法\n // 拖动生成边的时候 target 会是纯对象\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isPlainObject\"])(target)) {\n var targetModel = target.getModel();\n\n if (updatedNodes[sourceModel.id] || updatedNodes[targetModel.id] || edge.getModel().isComboEdge) {\n edge.refresh();\n }\n }\n });\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"each\"])(vedges, function (vedge) {\n vedge.refresh();\n });\n self.emit('aftergraphrefreshposition');\n self.autoPaint();\n };\n\n AbstractGraph.prototype.stopAnimate = function () {\n this.get('canvas').stopAnimate();\n };\n\n AbstractGraph.prototype.isAnimating = function () {\n return this.animating;\n };\n /**\n * 获取当前视口伸缩比例\n * @return {number} 比例\n */\n\n\n AbstractGraph.prototype.getZoom = function () {\n var matrix = this.get('group').getMatrix();\n return matrix ? matrix[0] : 1;\n };\n /**\n * 获取当前的行为模式\n * @return {string} 当前行为模式\n */\n\n\n AbstractGraph.prototype.getCurrentMode = function () {\n var modeController = this.get('modeController');\n return modeController.getMode();\n };\n /**\n * 切换行为模式\n * @param {string} mode 指定模式\n * @return {object} this\n */\n\n\n AbstractGraph.prototype.setMode = function (mode) {\n var modeController = this.get('modeController');\n modeController.setMode(mode);\n return this;\n };\n /**\n * 清除画布元素\n * @return {object} this\n */\n\n\n AbstractGraph.prototype.clear = function (avoidEmit) {\n var _a;\n\n if (avoidEmit === void 0) {\n avoidEmit = false;\n }\n\n (_a = this.get('canvas')) === null || _a === void 0 ? void 0 : _a.clear();\n this.initGroups(); // 清空画布时同时清除数据\n\n this.set({\n itemMap: {},\n nodes: [],\n edges: [],\n groups: [],\n combos: [],\n comboTrees: []\n });\n if (!avoidEmit) this.emit('afterrender');\n return this;\n };\n /**\n * 更换布局配置项\n * @param {object} cfg 新布局配置项\n * @param {'center' | 'begin'} align 对齐方式,可选中心(center)对齐到对齐点,或左上角(begin)对齐到对齐点\n * @param {IPoint} alignPoint 画布上的对齐点,为 Canvas 坐标系(Canvas DOM)\n * 若 cfg 含有 type 字段或为 String 类型,且与现有布局方法不同,则更换布局\n * 若 cfg 不包括 type ,则保持原有布局方法,仅更新布局配置项\n */\n\n\n AbstractGraph.prototype.updateLayout = function (cfg, align, alignPoint) {\n var _this = this;\n\n var layoutController = this.get('layoutController');\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(cfg)) {\n cfg = {\n type: cfg\n };\n } // align the graph after layout\n\n\n if (align) {\n var toPoint_1 = alignPoint;\n\n if (!toPoint_1) {\n if (align === 'begin') toPoint_1 = {\n x: 0,\n y: 0\n };else toPoint_1 = {\n x: this.getWidth() / 2,\n y: this.getHeight() / 2\n };\n } // translate to point coordinate system\n\n\n toPoint_1 = this.getPointByCanvas(toPoint_1.x, toPoint_1.y);\n var forceTypes = ['force', 'gForce', 'fruchterman']; // if it is force layout, only center takes effect, and assign center force\n\n if (forceTypes.includes(cfg.type) || !cfg.type && forceTypes.includes(layoutController === null || layoutController === void 0 ? void 0 : layoutController.layoutType)) {\n cfg.center = [toPoint_1.x, toPoint_1.y];\n } else {\n this.once('afterlayout', function (e) {\n var matrix = _this.getGroup().getMatrix() || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n toPoint_1.x = toPoint_1.x * matrix[0] + matrix[6];\n toPoint_1.y = toPoint_1.y * matrix[0] + matrix[7];\n\n var _a = _this.getGroup().getCanvasBBox(),\n minX = _a.minX,\n maxX = _a.maxX,\n minY = _a.minY,\n maxY = _a.maxY;\n\n var bboxPoint = {\n x: (minX + maxX) / 2,\n y: (minY + maxY) / 2\n };\n\n if (align === 'begin') {\n bboxPoint.x = minX;\n bboxPoint.y = minY;\n }\n\n _this.translate(toPoint_1.x - bboxPoint.x, toPoint_1.y - bboxPoint.y);\n });\n }\n }\n\n var oriLayoutCfg = this.get('layout');\n var layoutCfg = {};\n Object.assign(layoutCfg, oriLayoutCfg, cfg);\n this.set('layout', layoutCfg);\n\n if (layoutController.isLayoutTypeSame(layoutCfg) && layoutCfg.gpuEnabled === oriLayoutCfg.gpuEnabled) {\n // no type or same type, or switch the gpu and cpu, update layout\n layoutController.updateLayoutCfg(layoutCfg);\n } else {\n // has different type, change layout\n layoutController.changeLayout(layoutCfg);\n }\n };\n /**\n * 销毁布局,changeData 时不会再使用原来的布局方法对新数据进行布局\n */\n\n\n AbstractGraph.prototype.destroyLayout = function () {\n var layoutController = this.get('layoutController');\n layoutController.destroyLayout();\n };\n /**\n * 重新以当前示例中配置的属性进行一次布局\n */\n\n\n AbstractGraph.prototype.layout = function () {\n var layoutController = this.get('layoutController');\n var layoutCfg = this.get('layout');\n if (!layoutCfg || !layoutController) return;\n\n if (layoutCfg.workerEnabled) {\n // 如果使用web worker布局\n layoutController.layout();\n return;\n }\n\n if (layoutController.layoutMethod) {\n layoutController.relayout(true);\n } else {\n layoutController.layout();\n }\n };\n /**\n * 收起指定的 combo\n * @param {string | ICombo} combo combo ID 或 combo item\n */\n\n\n AbstractGraph.prototype.collapseCombo = function (combo) {\n var _this = this;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(combo)) {\n combo = this.findById(combo);\n }\n\n if (!combo) {\n console.warn('The combo to be collapsed does not exist!');\n return;\n }\n\n this.emit('beforecollapseexpandcombo', {\n action: 'expand',\n item: combo\n });\n var comboModel = combo.getModel();\n var itemController = this.get('itemController');\n itemController.collapseCombo(combo);\n comboModel.collapsed = true; // add virtual edges\n\n var edges = this.getEdges().concat(this.get('vedges')); // find all the descendant nodes and combos\n\n var cnodes = [];\n var ccombos = [];\n var comboTrees = this.get('comboTrees');\n var found = false;\n (comboTrees || []).forEach(function (ctree) {\n if (found) return; // if the combo is found, terminate the forEach\n\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTree\"])(ctree, function (subTree) {\n // if the combo is found and it is traversing the other branches, terminate\n if (found && subTree.depth <= comboModel.depth) return false; // if the combo is found\n\n if (comboModel.id === subTree.id) found = true;\n\n if (found) {\n // if the combo is found, concat the descendant nodes and combos\n var item = _this.findById(subTree.id);\n\n if (item && item.getType && item.getType() === 'combo') {\n cnodes = cnodes.concat(item.getNodes());\n ccombos = ccombos.concat(item.getCombos());\n }\n }\n\n return true;\n });\n });\n var edgeWeightMap = {};\n var addedVEdges = [];\n edges.forEach(function (edge) {\n if (edge.isVisible() && !edge.getModel().isVEdge) return;\n var source = edge.getSource();\n var target = edge.getTarget();\n\n if ((cnodes.includes(source) || ccombos.includes(source)) && !cnodes.includes(target) && !ccombos.includes(target) || source.getModel().id === comboModel.id) {\n var edgeModel = edge.getModel();\n\n if (edgeModel.isVEdge) {\n _this.removeItem(edge, false);\n\n return;\n }\n\n var targetModel = target.getModel();\n\n while (!target.isVisible()) {\n target = _this.findById(targetModel.parentId || targetModel.comboId);\n if (!target || !targetModel.parentId && !targetModel.comboId) return; // all the ancestors are hidden, then ignore the edge\n\n targetModel = target.getModel();\n }\n\n var targetId = targetModel.id;\n\n if (edgeWeightMap[comboModel.id + \"-\" + targetId]) {\n edgeWeightMap[comboModel.id + \"-\" + targetId] += edgeModel.size || 1;\n return;\n } // the source is in the combo, the target is not\n\n\n var vedge = _this.addItem('vedge', {\n source: comboModel.id,\n target: targetId,\n isVEdge: true\n }, false);\n\n edgeWeightMap[comboModel.id + \"-\" + targetId] = edgeModel.size || 1;\n addedVEdges.push(vedge);\n } else if (!cnodes.includes(source) && !ccombos.includes(source) && (cnodes.includes(target) || ccombos.includes(target)) || target.getModel().id === comboModel.id) {\n var edgeModel = edge.getModel();\n\n if (edgeModel.isVEdge) {\n _this.removeItem(edge, false);\n\n return;\n }\n\n var sourceModel = source.getModel();\n\n while (!source.isVisible()) {\n source = _this.findById(sourceModel.parentId || sourceModel.comboId);\n if (!source || !sourceModel.parentId && !sourceModel.comboId) return; // all the ancestors are hidden, then ignore the edge\n\n sourceModel = source.getModel();\n }\n\n var sourceId = sourceModel.id;\n\n if (edgeWeightMap[sourceId + \"-\" + comboModel.id]) {\n edgeWeightMap[sourceId + \"-\" + comboModel.id] += edgeModel.size || 1;\n return;\n } // the target is in the combo, the source is not\n\n\n var vedge = _this.addItem('vedge', {\n target: comboModel.id,\n source: sourceId,\n isVEdge: true\n }, false);\n\n edgeWeightMap[sourceId + \"-\" + comboModel.id] = edgeModel.size || 1;\n addedVEdges.push(vedge);\n }\n }); // update the width of the virtual edges, which is the sum of merged actual edges\n // be attention that the actual edges with same endpoints but different directions will be represented by two different virtual edges\n\n addedVEdges.forEach(function (vedge) {\n var vedgeModel = vedge.getModel();\n\n _this.updateItem(vedge, {\n size: edgeWeightMap[vedgeModel.source + \"-\" + vedgeModel.target]\n }, false);\n });\n this.emit('aftercollapseexpandcombo', {\n action: 'collapse',\n item: combo\n });\n };\n /**\n * 展开指定的 combo\n * @param {string | ICombo} combo combo ID 或 combo item\n */\n\n\n AbstractGraph.prototype.expandCombo = function (combo) {\n var _this = this;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(combo)) {\n combo = this.findById(combo);\n }\n\n if (!combo || combo.getType && combo.getType() !== 'combo') {\n console.warn('The combo to be collapsed does not exist!');\n return;\n }\n\n this.emit('beforecollapseexpandcombo', {\n action: 'expand',\n item: combo\n });\n var comboModel = combo.getModel();\n var itemController = this.get('itemController');\n itemController.expandCombo(combo);\n comboModel.collapsed = false; // add virtual edges\n\n var edges = this.getEdges().concat(this.get('vedges')); // find all the descendant nodes and combos\n\n var cnodes = [];\n var ccombos = [];\n var comboTrees = this.get('comboTrees');\n var found = false;\n (comboTrees || []).forEach(function (ctree) {\n if (found) return; // if the combo is found, terminate\n\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTree\"])(ctree, function (subTree) {\n // if the combo is found and it is traversing the other branches, terminate\n if (found && subTree.depth <= comboModel.depth) return false;\n if (comboModel.id === subTree.id) found = true;\n\n if (found) {\n var item = _this.findById(subTree.id);\n\n if (item && item.getType && item.getType() === 'combo') {\n cnodes = cnodes.concat(item.getNodes());\n ccombos = ccombos.concat(item.getCombos());\n }\n }\n\n return true;\n });\n });\n var edgeWeightMap = {};\n var addedVEdges = {};\n edges.forEach(function (edge) {\n if (edge.isVisible() && !edge.getModel().isVEdge) return;\n var source = edge.getSource();\n var target = edge.getTarget();\n var sourceId = source.get('id');\n var targetId = target.get('id');\n\n if ((cnodes.includes(source) || ccombos.includes(source)) && !cnodes.includes(target) && !ccombos.includes(target) || sourceId === comboModel.id) {\n // the source is in the combo, the target is not\n // ignore the virtual edges\n if (edge.getModel().isVEdge) {\n _this.removeItem(edge, false);\n\n return;\n }\n\n var targetModel = target.getModel(); // find the nearest visible ancestor\n\n while (!target.isVisible()) {\n target = _this.findById(targetModel.comboId || targetModel.parentId);\n\n if (!target || !targetModel.parentId && !targetModel.comboId) {\n return; // if all the ancestors of the oppsite are all hidden, ignore the edge\n }\n\n targetModel = target.getModel();\n }\n\n targetId = targetModel.id;\n var sourceModel = source.getModel(); // find the nearest visible ancestor\n\n while (!source.isVisible()) {\n source = _this.findById(sourceModel.comboId || sourceModel.parentId);\n\n if (!source || !sourceModel.parentId && !sourceModel.comboId) {\n return; // if all the ancestors of the oppsite are all hidden, ignore the edge\n }\n\n if (sourceModel.comboId === comboModel.id || sourceModel.parentId === comboModel.id) {\n break; // if the next ancestor is the combo, break the while\n }\n\n sourceModel = source.getModel();\n }\n\n sourceId = sourceModel.id;\n\n if (targetId) {\n var vedgeId = sourceId + \"-\" + targetId; // update the width of the virtual edges, which is the sum of merged actual edges\n // be attention that the actual edges with same endpoints but different directions will be represented by two different virtual edges\n\n if (edgeWeightMap[vedgeId]) {\n edgeWeightMap[vedgeId] += edge.getModel().size || 1;\n\n _this.updateItem(addedVEdges[vedgeId], {\n size: edgeWeightMap[vedgeId]\n }, false);\n\n return;\n }\n\n var vedge = _this.addItem('vedge', {\n source: sourceId,\n target: targetId,\n isVEdge: true\n }, false);\n\n edgeWeightMap[vedgeId] = edge.getModel().size || 1;\n addedVEdges[vedgeId] = vedge;\n }\n } else if (!cnodes.includes(source) && !ccombos.includes(source) && (cnodes.includes(target) || ccombos.includes(target)) || targetId === comboModel.id) {\n // the target is in the combo, the source is not\n // ignore the virtual edges\n if (edge.getModel().isVEdge) {\n _this.removeItem(edge, false);\n\n return;\n }\n\n var sourceModel = source.getModel(); // find the nearest visible ancestor\n\n while (!source.isVisible()) {\n source = _this.findById(sourceModel.comboId || sourceModel.parentId);\n\n if (!source || !sourceModel.parentId && !sourceModel.comboId) {\n return; // if all the ancestors of the oppsite are all hidden, ignore the edge\n }\n\n sourceModel = source.getModel();\n }\n\n sourceId = sourceModel.id;\n var targetModel = target.getModel(); // find the nearest visible ancestor\n\n while (!target.isVisible()) {\n target = _this.findById(targetModel.comboId || targetModel.parentId);\n\n if (!target || !targetModel.parentId && !targetModel.comboId) {\n return; // if all the ancestors of the oppsite are all hidden, ignore the edge\n }\n\n if (targetModel.comboId === comboModel.id || targetModel.parentId === comboModel.id) {\n break; // if the next ancestor is the combo, break the while\n }\n\n targetModel = target.getModel();\n }\n\n targetId = targetModel.id;\n\n if (sourceId) {\n var vedgeId = sourceId + \"-\" + targetId; // update the width of the virtual edges, which is the sum of merged actual edges\n // be attention that the actual edges with same endpoints but different directions will be represented by two different virtual edges\n\n if (edgeWeightMap[vedgeId]) {\n edgeWeightMap[vedgeId] += edge.getModel().size || 1;\n\n _this.updateItem(addedVEdges[vedgeId], {\n size: edgeWeightMap[vedgeId]\n }, false);\n\n return;\n }\n\n var vedge = _this.addItem('vedge', {\n target: targetId,\n source: sourceId,\n isVEdge: true\n }, false);\n\n edgeWeightMap[vedgeId] = edge.getModel().size || 1;\n addedVEdges[vedgeId] = vedge;\n }\n } else if ((cnodes.includes(source) || ccombos.includes(source)) && (cnodes.includes(target) || ccombos.includes(target))) {\n // both source and target are in the combo, if the target and source are both visible, show the edge\n if (source.isVisible() && target.isVisible()) {\n edge.show();\n }\n }\n });\n this.emit('aftercollapseexpandcombo', {\n action: 'expand',\n item: combo\n });\n };\n\n AbstractGraph.prototype.collapseExpandCombo = function (combo) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(combo)) {\n combo = this.findById(combo);\n }\n\n if (!combo || combo.getType && combo.getType() !== 'combo') return;\n var comboModel = combo.getModel(); // if one ancestor combo of the combo is collapsed, it should not be collapsed or expanded\n\n var parentItem = this.findById(comboModel.parentId);\n\n while (parentItem) {\n var parentModel = parentItem.getModel();\n\n if (parentModel.collapsed) {\n console.warn(\"Fail to expand the combo since it's ancestor combo is collapsed.\");\n parentItem = undefined;\n return;\n }\n\n parentItem = this.findById(parentModel.parentId);\n }\n\n var collapsed = comboModel.collapsed; // 该群组已经处于收起状态,需要展开\n\n if (collapsed) {\n this.expandCombo(combo);\n } else {\n this.collapseCombo(combo);\n }\n\n this.updateCombo(combo);\n };\n /**\n * 根据 comboTree 结构整理 Combo 相关的图形绘制层级,包括 Combo 本身、节点、边\n * @param {GraphData} data 数据\n */\n\n\n AbstractGraph.prototype.sortCombos = function () {\n var _this = this;\n\n var comboSorted = this.get('comboSorted');\n if (comboSorted) return;\n this.set('comboSorted', true);\n var depthMap = [];\n var dataDepthMap = {};\n var comboTrees = this.get('comboTrees');\n (comboTrees || []).forEach(function (cTree) {\n Object(_util_graphic__WEBPACK_IMPORTED_MODULE_9__[\"traverseTree\"])(cTree, function (child) {\n if (depthMap[child.depth]) depthMap[child.depth].push(child.id);else depthMap[child.depth] = [child.id];\n dataDepthMap[child.id] = child.depth;\n return true;\n });\n });\n var edges = this.getEdges().concat(this.get('vedges'));\n (edges || []).forEach(function (edgeItem) {\n var edge = edgeItem.getModel();\n var sourceDepth = dataDepthMap[edge.source] || 0;\n var targetDepth = dataDepthMap[edge.target] || 0;\n var depth = Math.max(sourceDepth, targetDepth);\n if (depthMap[depth]) depthMap[depth].push(edge.id);else depthMap[depth] = [edge.id];\n });\n depthMap.forEach(function (array) {\n if (!array || !array.length) return;\n\n for (var i = array.length - 1; i >= 0; i--) {\n var item = _this.findById(array[i]);\n\n if (item) item.toFront();\n }\n });\n };\n /**\n * 获取节点所有的邻居节点\n *\n * @param {(string | INode)} node 节点 ID 或实例\n * @returns {INode[]}\n * @memberof IAbstractGraph\n */\n\n\n AbstractGraph.prototype.getNeighbors = function (node, type) {\n var item = node;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(node)) {\n item = this.findById(node);\n }\n\n return item.getNeighbors(type);\n };\n /**\n * 获取 node 的度数\n *\n * @param {(string | INode)} node 节点 ID 或实例\n * @param {('in' | 'out' | 'total' | 'all' | undefined)} 度数类型,in 入度,out 出度,total 总度数,all 返回三种类型度数的对象\n * @returns {Number | Object} 该节点的度数\n * @memberof IAbstractGraph\n */\n\n\n AbstractGraph.prototype.getNodeDegree = function (node, type, refresh) {\n if (type === void 0) {\n type = undefined;\n }\n\n if (refresh === void 0) {\n refresh = false;\n }\n\n var item = node;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(node)) {\n item = this.findById(node);\n }\n\n var degrees = this.get('degrees');\n\n if (!degrees || refresh) {\n degrees = Object(_antv_algorithm__WEBPACK_IMPORTED_MODULE_4__[\"getDegree\"])(this.save());\n this.set('degrees', degrees);\n }\n\n var nodeDegrees = degrees[item.getID()];\n var res = 0; // 如果是通过 addItem 后面新增加的节点,此时它的所有度数都为 0\n\n if (!nodeDegrees) {\n return 0;\n }\n\n switch (type) {\n case 'in':\n res = nodeDegrees.inDegree;\n break;\n\n case 'out':\n res = nodeDegrees.outDegree;\n break;\n\n case 'all':\n res = nodeDegrees;\n break;\n\n default:\n res = nodeDegrees.degree;\n break;\n }\n\n return res;\n };\n\n AbstractGraph.prototype.getUndoStack = function () {\n return this.undoStack;\n };\n\n AbstractGraph.prototype.getRedoStack = function () {\n return this.redoStack;\n };\n /**\n * 获取 undo 和 redo 栈的数据\n */\n\n\n AbstractGraph.prototype.getStackData = function () {\n if (!this.get('enabledStack')) {\n return null;\n }\n\n return {\n undoStack: this.undoStack.toArray(),\n redoStack: this.redoStack.toArray()\n };\n };\n /**\n * 清空 undo stack & redo stack\n */\n\n\n AbstractGraph.prototype.clearStack = function () {\n if (this.get('enabledStack')) {\n this.undoStack.clear();\n this.redoStack.clear();\n }\n };\n /**\n * 将操作类型和操作数据入栈\n * @param action 操作类型\n * @param data 入栈的数据\n * @param stackType 栈的类型\n */\n\n\n AbstractGraph.prototype.pushStack = function (action, data, stackType) {\n if (action === void 0) {\n action = 'update';\n }\n\n if (stackType === void 0) {\n stackType = 'undo';\n }\n\n if (!this.get('enabledStack')) {\n console.warn('请先启用 undo & redo 功能,在实例化 Graph 时候配置 enabledStack: true !');\n return;\n }\n\n var stackData = data ? Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(data) : {\n before: {},\n after: Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"clone\"])(this.save())\n };\n\n if (stackType === 'redo') {\n this.redoStack.push({\n action: action,\n data: stackData\n });\n } else {\n this.undoStack.push({\n action: action,\n data: stackData\n });\n }\n\n this.emit('stackchange', {\n undoStack: this.undoStack,\n redoStack: this.redoStack\n });\n };\n /**\n * 获取邻接矩阵\n *\n * @param {boolean} cache 是否使用缓存的\n * @param {boolean} directed 是否是有向图,默认取 graph.directed\n * @returns {Matrix} 邻接矩阵\n * @memberof IAbstractGraph\n */\n\n\n AbstractGraph.prototype.getAdjMatrix = function (cache, directed) {\n if (cache === void 0) {\n cache = true;\n }\n\n if (directed === undefined) directed = this.get('directed');\n var currentAdjMatrix = this.get('adjMatrix');\n\n if (!currentAdjMatrix || !cache) {\n currentAdjMatrix = Object(_antv_algorithm__WEBPACK_IMPORTED_MODULE_4__[\"getAdjMatrix\"])(this.save(), directed);\n this.set('adjMatrix', currentAdjMatrix);\n }\n\n return currentAdjMatrix;\n };\n /**\n * 获取最短路径矩阵\n *\n * @param {boolean} cache 是否使用缓存的\n * @param {boolean} directed 是否是有向图,默认取 graph.directed\n * @returns {Matrix} 最短路径矩阵\n * @memberof IAbstractGraph\n */\n\n\n AbstractGraph.prototype.getShortestPathMatrix = function (cache, directed) {\n if (cache === void 0) {\n cache = true;\n }\n\n if (directed === undefined) directed = this.get('directed');\n var currentAdjMatrix = this.get('adjMatrix');\n var currentShourtestPathMatrix = this.get('shortestPathMatrix');\n\n if (!currentAdjMatrix || !cache) {\n currentAdjMatrix = Object(_antv_algorithm__WEBPACK_IMPORTED_MODULE_4__[\"getAdjMatrix\"])(this.save(), directed);\n this.set('adjMatrix', currentAdjMatrix);\n }\n\n if (!currentShourtestPathMatrix || !cache) {\n currentShourtestPathMatrix = Object(_antv_algorithm__WEBPACK_IMPORTED_MODULE_4__[\"floydWarshall\"])(this.save(), directed);\n this.set('shortestPathMatrix', currentShourtestPathMatrix);\n }\n\n return currentShourtestPathMatrix;\n };\n /**\n * 重新定义监听函数,复写参数类型\n */\n\n\n AbstractGraph.prototype.on = function (eventName, callback, once) {\n return _super.prototype.on.call(this, eventName, callback, once);\n };\n /**\n * 销毁画布\n */\n\n\n AbstractGraph.prototype.destroy = function () {\n this.clear(); // 清空栈数据\n\n this.clearStack();\n this.get('itemController').destroy();\n this.get('modeController').destroy();\n this.get('viewController').destroy();\n this.get('stateController').destroy();\n this.get('canvas').destroy();\n this.cfg = null;\n this.destroyed = true;\n this.redoStack = null;\n this.undoStack = null;\n };\n /**\n * 创建凸包或凹包轮廓\n * @param cfg HullCfg 轮廓配置项\n */\n\n\n AbstractGraph.prototype.createHull = function (cfg) {\n if (!cfg.members || cfg.members.length < 1) {\n console.warn('Create hull failed! The members is empty.');\n return;\n }\n\n var parent = this.get('hullGroup');\n var hullMap = this.get('hullMap');\n\n if (!hullMap) {\n hullMap = {};\n this.set('hullMap', hullMap);\n }\n\n if (!parent || parent.get('destroyed')) {\n parent = this.get('group').addGroup({\n id: 'hullGroup'\n });\n parent.toBack();\n this.set('hullGroup', parent);\n }\n\n if (hullMap[cfg.id]) {\n console.warn('Existed hull id.');\n return hullMap[cfg.id];\n }\n\n var group = parent.addGroup({\n id: cfg.id + \"-container\"\n });\n var hull = new _item_hull__WEBPACK_IMPORTED_MODULE_10__[\"default\"](this, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, cfg), {\n group: group\n }));\n var hullId = hull.id;\n hullMap[hullId] = hull;\n return hull;\n };\n /**\n * 获取当前 graph 中存在的包裹轮廓\n * @return {[key: string]: Hull} Hull 的 map,hullId 对应的 hull 实例\n */\n\n\n AbstractGraph.prototype.getHulls = function () {\n return this.get('hullMap');\n };\n /**\n * 根据 hullId 获取对应的 hull\n * @return Hull\n */\n\n\n AbstractGraph.prototype.getHullById = function (hullId) {\n return this.get('hullMap')[hullId];\n };\n\n AbstractGraph.prototype.removeHull = function (hull) {\n var _a;\n\n var hullInstance;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_3__[\"isString\"])(hull)) {\n hullInstance = this.getHullById(hull);\n } else {\n hullInstance = hull;\n }\n\n (_a = this.get('hullMap')) === null || _a === void 0 ? true : delete _a[hullInstance.id];\n hullInstance.destroy();\n };\n\n AbstractGraph.prototype.removeHulls = function () {\n var hulls = this.getHulls();\n if (!hulls || !Object.keys(hulls).length) return;\n Object.keys(hulls).forEach(function (key) {\n var hull = hulls[key];\n hull.destroy();\n });\n this.set('hullMap', {});\n };\n\n return AbstractGraph;\n}(_antv_event_emitter__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (AbstractGraph);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9ncmFwaC9ncmFwaC5qcz8yZDAwIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEyRDtBQUNaO0FBQ1A7QUFDbUM7QUFDMEI7QUFDM0Q7QUFDZ0M7QUFDM0M7QUFDZ0U7QUFDSztBQUNwRTtBQUNoQyxnQkFBZ0IscURBQUc7QUFDbkI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRSx1REFBUzs7QUFFWDtBQUNBOztBQUVBLGdCQUFnQiwwREFBTzs7QUFFdkI7O0FBRUE7QUFDQSw0QkFBNEI7O0FBRTVCO0FBQ0E7QUFDQSw0QkFBNEIscURBQUs7QUFDakMsNEJBQTRCLHFEQUFLO0FBQ2pDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxzQkFBc0I7O0FBRXRCLDZCQUE2QiwwREFBYztBQUMzQyw2QkFBNkIsMERBQWM7QUFDM0MsNkJBQTZCLDBEQUFjO0FBQzNDLDhCQUE4QiwyREFBZTtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQLGdDQUFnQzs7QUFFaEM7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLCtDQUFNO0FBQ3ZCLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLCtDQUFNO0FBQ3pCLE9BQU87QUFDUDtBQUNBO0FBQ0EsbUJBQW1CLCtDQUFNO0FBQ3pCLE9BQU87QUFDUDtBQUNBO0FBQ0EsbUJBQW1CLCtDQUFNO0FBQ3pCLE9BQU8sRUFBRTs7QUFFVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQSxpQkFBaUIsK0NBQU07QUFDdkIsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlOztBQUVmO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7O0FBRWQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEIscUJBQXFCO0FBQ3JCLGdCQUFnQjtBQUNoQixxQkFBcUI7QUFDckI7QUFDQSxxQkFBcUI7O0FBRXJCO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjs7QUFFckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QiwrQkFBK0I7QUFDdEQscUJBQXFCO0FBQ3JCLFdBQVc7QUFDWDtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EseUJBQXlCOztBQUV6QjtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7O0FBRXpCO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjs7QUFFaEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBLFFBQVEsZ0VBQWE7QUFDckIsaUJBQWlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNyQyxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsWUFBWTtBQUN6QixhQUFhLFNBQVM7QUFDdEI7OztBQUdBO0FBQ0EsUUFBUSwyREFBUTtBQUNoQjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGVBQWU7QUFDL0I7QUFDQSxzQkFBc0IsZUFBZTtBQUNyQyxvQkFBb0I7QUFDcEI7QUFDQTtBQUNBLE1BQU07QUFDTixhQUFhLFNBQVM7QUFDdEI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxTQUFTO0FBQ3RCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsVUFBVTtBQUN2QixhQUFhLDhCQUE4QjtBQUMzQyxjQUFjLEVBQUU7QUFDaEI7OztBQUdBO0FBQ0E7QUFDQSxxQ0FBcUM7O0FBRXJDLElBQUksdURBQUk7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLE9BQU87QUFDcEIsY0FBYyxNQUFNO0FBQ3BCOzs7QUFHQTtBQUNBO0FBQ0EsSUFBSSx1REFBSTtBQUNSO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLE9BQU87QUFDcEIsY0FBYyxPQUFPO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0EsaUJBQWlCLHdEQUFLOztBQUV0QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLE9BQU87QUFDcEI7OztBQUdBO0FBQ0E7QUFDQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsYUFBYSxhQUFhO0FBQzFCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlDQUFpQztBQUM5QyxhQUFhLGtCQUFrQjtBQUMvQixjQUFjLE1BQU07QUFDcEI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxpQ0FBaUM7QUFDOUMsYUFBYSxrQkFBa0I7QUFDL0IsY0FBYyxNQUFNO0FBQ3BCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsK0JBQStCO0FBQzVDLGFBQWEsa0JBQWtCO0FBQy9CLGNBQWMsTUFBTTtBQUNwQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCLGFBQWEsbUJBQW1CO0FBQ2hDLGNBQWMsUUFBUTtBQUN0Qjs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQix3REFBSztBQUN0QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQSx3QkFBd0Isd0RBQUs7O0FBRTdCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0Esd0JBQXdCLHdEQUFLOztBQUU3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7O0FBRVg7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULHNCQUFzQix1REFBSTs7QUFFMUI7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQixjQUFjLFFBQVE7QUFDdEI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBSztBQUNsQixhQUFhLFFBQVE7QUFDckIsYUFBYSxtQkFBbUI7QUFDaEM7OztBQUdBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBLCtDQUErQztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsYUFBYSxPQUFPO0FBQ3BCLGNBQWMsTUFBTTtBQUNwQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsT0FBTztBQUNwQixjQUFjLE1BQU07QUFDcEI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLE9BQU87QUFDcEIsY0FBYyxPQUFPO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsYUFBYSxPQUFPO0FBQ3BCLGNBQWMsT0FBTztBQUNyQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEIsYUFBYSxRQUFRO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFLO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsY0FBYztBQUMzQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFLO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEIsYUFBYSxRQUFRO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFFBQVEsMkRBQVE7O0FBRWhCLHFCQUFxQiwyREFBUTtBQUM3QjtBQUNBLEtBQUs7QUFDTDtBQUNBLHNEQUFzRDs7QUFFdEQ7QUFDQSwyQkFBMkIsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQy9DO0FBQ0EsU0FBUzs7QUFFVDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNENBQTRDLFFBQVE7QUFDcEQsa0NBQWtDLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUN0RDtBQUNBLGlCQUFpQjtBQUNqQjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBLHdDQUF3Qzs7QUFFeEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLDRCQUE0QixxRUFBZTtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFVBQVU7QUFDdkIsYUFBYSxZQUFZO0FBQ3pCLGFBQWEsUUFBUTtBQUNyQixhQUFhLFFBQVE7QUFDckIsY0FBYyxLQUFLO0FBQ25COzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG9EQUFvRDs7QUFFcEQsU0FBUyw2RUFBb0I7QUFDN0I7QUFDQTs7QUFFQTtBQUNBLGdIQUFnSCxZQUFZO0FBQzVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDOztBQUVsQyxRQUFRLG9FQUFjO0FBQ3RCO0FBQ0E7QUFDQTs7QUFFQSwyQkFBMkIsc0RBQVE7QUFDbkM7QUFDQTtBQUNBLGFBQWE7O0FBRWIsOERBQThEO0FBQzlEO0FBQ0E7QUFDQTs7QUFFQSw4Q0FBOEM7O0FBRTlDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBQVM7QUFDVCxPQUFPLEVBQUU7O0FBRVQ7QUFDQSx1QkFBdUIsc0RBQVE7QUFDL0I7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLLDZCQUE2QiwyREFBUTtBQUMxQzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUFpRDs7QUFFakQsUUFBUSxvRUFBYztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0Qix3REFBSztBQUNqQztBQUNBLCtEQUErRDtBQUMvRDtBQUNBLFdBQVc7OztBQUdYO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSx1QkFBdUIsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQzNDO0FBQ0EsT0FBTzs7QUFFUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsVUFBVTtBQUN2QixhQUFhLFlBQVk7QUFDekIsYUFBYSxRQUFRO0FBQ3JCLGNBQWMsS0FBSztBQUNuQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFLO0FBQ2xCLGFBQWEsaUNBQWlDO0FBQzlDOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQSx3QkFBd0Isd0RBQUs7QUFDN0I7QUFDQTs7QUFFQSxpQkFBaUIsMkRBQWE7O0FBRTlCO0FBQ0EsTUFBTSx1REFBSTtBQUNWO0FBQ0EsT0FBTztBQUNQOztBQUVBOztBQUVBO0FBQ0EsTUFBTSx1REFBSTtBQUNWO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsdUJBQXVCLHNEQUFRO0FBQy9CO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFLO0FBQ2xCLGFBQWEsaUNBQWlDO0FBQzlDLGFBQWEsUUFBUTtBQUNyQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEIsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsaUJBQWlCO0FBQzlCOzs7QUFHQTtBQUNBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFLO0FBQ2xCO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsVUFBVTtBQUN2Qjs7O0FBR0E7QUFDQSxJQUFJLHVFQUFjO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx1REFBSTtBQUNSO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0EsdUJBQXVCLHdFQUFrQjtBQUN6Qyx5Q0FBeUM7O0FBRXpDO0FBQ0E7O0FBRUEsSUFBSSx1REFBSTtBQUNSO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EseUNBQXlDOztBQUV6QztBQUNBO0FBQ0EsV0FBVztBQUNYLFNBQVM7QUFDVCx5Q0FBeUM7O0FBRXpDO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHVEQUFJO0FBQ1I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7O0FBRUE7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxhQUFhLDBCQUEwQjtBQUN2QyxhQUFhLFFBQVE7QUFDckIsY0FBYyxPQUFPO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxTQUFTLHVFQUFjO0FBQ3ZCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUEsbUNBQW1DOztBQUVuQyx1QkFBdUI7O0FBRXZCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUJBQXVCLHdFQUFrQjtBQUN6QztBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EsSUFBSSx1REFBSTtBQUNSO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUssRUFBRTs7QUFFUDtBQUNBOztBQUVBLGtDQUFrQyxRQUFRO0FBQzFDO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksdURBQUk7QUFDUjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGNBQWM7QUFDM0I7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUEsbUNBQW1DOztBQUVuQztBQUNBO0FBQ0E7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxpQ0FBaUM7O0FBRWpDO0FBQ0EsbUNBQW1DOztBQUVuQztBQUNBO0FBQ0EsTUFBTSxvRUFBYztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSx3QkFBd0I7QUFDckM7OztBQUdBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7O0FBRWxDLE1BQU0sb0VBQWM7QUFDcEIsZUFBZTs7O0FBR2Y7QUFDQSxvQ0FBb0M7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsU0FBUzs7O0FBR1Q7QUFDQTtBQUNBLHNDQUFzQztBQUN0Qzs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVzs7O0FBR1g7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7O0FBRTdDO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsNENBQTRDO0FBQzVDOztBQUVBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUCxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEM7QUFDQTs7QUFFQTs7QUFFQSxtQ0FBbUM7O0FBRW5DLGtDQUFrQzs7QUFFbEM7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxvRUFBYztBQUNwQjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLHVCQUF1QiwyREFBYTs7QUFFcEMsVUFBVSx1REFBSTtBQUNkO0FBQ0EsV0FBVyxFQUFFOztBQUViLGdFQUFnRTs7QUFFaEUsVUFBVSx1REFBSTtBQUNkO0FBQ0EsV0FBVztBQUNYOztBQUVBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsZ0JBQWdCO0FBQzdCOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sb0VBQWM7QUFDcEI7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSx1QkFBdUIsMkRBQWEsa0NBQWtDOzs7QUFHdEUsVUFBVSx1REFBSTtBQUNkO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTs7QUFFYixnRUFBZ0U7O0FBRWhFLFVBQVUsdURBQUk7QUFDZDtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsYUFBYSx3QkFBd0I7QUFDckMsYUFBYSxtQkFBbUI7QUFDaEM7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsOENBQThDOztBQUU5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLGtFQUFZO0FBQ3BCLG9DQUFvQzs7QUFFcEM7QUFDQTtBQUNBOztBQUVBO0FBQ0EsU0FBUztBQUNULE9BQU8sRUFBRTs7QUFFVCxNQUFNLGtFQUFZO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTyxFQUFFOztBQUVUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx5QkFBeUI7QUFDekI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOzs7QUFHTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLOzs7QUFHTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHdCQUF3QixxRUFBZTtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQUk7QUFDUjtBQUNBLEtBQUs7QUFDTCxJQUFJLHVEQUFJO0FBQ1I7QUFDQSxLQUFLO0FBQ0wsSUFBSSx1REFBSTtBQUNSO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckIsY0FBYyxPQUFPO0FBQ3JCLGNBQWMsT0FBTztBQUNyQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsTUFBTSx1REFBSTtBQUNWO0FBQ0EsT0FBTztBQUNQLE1BQU0sdURBQUk7QUFDVjtBQUNBLE9BQU87QUFDUCxNQUFNLHVEQUFJO0FBQ1Y7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsTUFBTTtBQUNwQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsTUFBTTtBQUNwQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTSx1REFBSTtBQUNWOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdURBQUk7QUFDWjtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx1REFBSTtBQUNSO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUEsSUFBSSx1REFBSTtBQUNSO0FBQ0Esb0NBQW9DO0FBQ3BDOztBQUVBLFdBQVcsZ0VBQWE7QUFDeEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsSUFBSSx1REFBSTtBQUNSO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsY0FBYyxPQUFPO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQjs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxzQkFBc0I7O0FBRXRCO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLG1CQUFtQjtBQUNoQyxhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDtBQUNBLDBEQUEwRDs7QUFFMUQ7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGdCQUFnQjtBQUM3Qjs7O0FBR0E7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQzs7QUFFaEMsMkRBQTJEOztBQUUzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCOztBQUV4QixNQUFNLGtFQUFZO0FBQ2xCO0FBQ0EscUVBQXFFOztBQUVyRTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSwrRUFBK0U7O0FBRS9FO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7O0FBR1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSwrRUFBK0U7O0FBRS9FO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7O0FBR1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQTtBQUNBLEtBQUssRUFBRTtBQUNQOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGFBQWEsZ0JBQWdCO0FBQzdCOzs7QUFHQTtBQUNBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDOztBQUVqQywyREFBMkQ7O0FBRTNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7O0FBRXhCLE1BQU0sa0VBQVk7QUFDbEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsNENBQTRDOztBQUU1QztBQUNBOztBQUVBO0FBQ0EsbUJBQW1CO0FBQ25COztBQUVBO0FBQ0E7O0FBRUE7QUFDQSw0Q0FBNEM7O0FBRTVDO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUI7QUFDbkI7O0FBRUE7QUFDQSxrQkFBa0I7QUFDbEI7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLGtEQUFrRDtBQUNsRDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxhQUFhOztBQUViO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXOztBQUVYO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLDRDQUE0Qzs7QUFFNUM7QUFDQTs7QUFFQTtBQUNBLG1CQUFtQjtBQUNuQjs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsNENBQTRDOztBQUU1QztBQUNBOztBQUVBO0FBQ0EsbUJBQW1CO0FBQ25COztBQUVBO0FBQ0Esa0JBQWtCO0FBQ2xCOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxrREFBa0Q7QUFDbEQ7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsYUFBYTs7QUFFYjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVzs7QUFFWDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQSxzQ0FBc0M7O0FBRXRDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHlDQUF5Qzs7QUFFekM7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxVQUFVO0FBQ3ZCOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxrRUFBWTtBQUNsQix3RUFBd0U7QUFDeEU7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseURBQXlEO0FBQ3pELEtBQUs7QUFDTDtBQUNBOztBQUVBLG9DQUFvQyxRQUFRO0FBQzVDOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlCQUFpQjtBQUM5QixlQUFlO0FBQ2Y7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsaUJBQWlCO0FBQzlCLGFBQWEsNkNBQTZDO0FBQzFELGVBQWUsZ0JBQWdCO0FBQy9CO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxRQUFRLDJEQUFRO0FBQ2hCO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxnQkFBZ0IsaUVBQVM7QUFDekI7QUFDQTs7QUFFQTtBQUNBLGdCQUFnQjs7QUFFaEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwyQkFBMkIsd0RBQUs7QUFDaEMsZ0JBQWdCO0FBQ2hCLGFBQWEsd0RBQUs7QUFDbEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFFBQVE7QUFDckIsYUFBYSxRQUFRO0FBQ3JCLGVBQWUsT0FBTztBQUN0QjtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EseUJBQXlCLG9FQUFpQjtBQUMxQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFFBQVE7QUFDckIsYUFBYSxRQUFRO0FBQ3JCLGVBQWUsT0FBTztBQUN0QjtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx5QkFBeUIsb0VBQWlCO0FBQzFDO0FBQ0E7O0FBRUE7QUFDQSxtQ0FBbUMscUVBQWE7QUFDaEQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0EsaUJBQWlCOztBQUVqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsbUJBQW1CLG1EQUFJLE9BQU8sc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ2xEO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsb0JBQW9CO0FBQ2xDOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsMEJBQTBCO0FBQzFCOztBQUVBO0FBQ0EsQ0FBQyxDQUFDLDJEQUFZOztBQUVDLDRFQUFhIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1jb3JlQDAuNS4wQEBhbnR2L2c2LWNvcmUvZXMvZ3JhcGgvZ3JhcGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzLCBfX3NwcmVhZEFycmF5IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgRXZlbnRFbWl0dGVyIGZyb20gJ0BhbnR2L2V2ZW50LWVtaXR0ZXInO1xuaW1wb3J0IHsgZXh0IH0gZnJvbSAnQGFudHYvbWF0cml4LXV0aWwnO1xuaW1wb3J0IHsgY2xvbmUsIGRlZXBNaXgsIGVhY2gsIGlzUGxhaW5PYmplY3QsIGlzU3RyaW5nIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBnZXREZWdyZWUsIGdldEFkak1hdHJpeCBhcyBnZXRBZGphY2VudE1hdHJpeCwgU3RhY2ssIGZsb3lkV2Fyc2hhbGwgfSBmcm9tICdAYW50di9hbGdvcml0aG0nO1xuaW1wb3J0IHsgbGVycCwgbW92ZSB9IGZyb20gJy4uL3V0aWwvbWF0aCc7XG5pbXBvcnQgeyBkYXRhVmFsaWRhdGlvbiwgc2luZ2xlRGF0YVZhbGlkYXRpb24gfSBmcm9tICcuLi91dGlsL3ZhbGlkYXRpb24nO1xuaW1wb3J0IEdsb2JhbCBmcm9tICcuLi9nbG9iYWwnO1xuaW1wb3J0IHsgSXRlbUNvbnRyb2xsZXIsIE1vZGVDb250cm9sbGVyLCBTdGF0ZUNvbnRyb2xsZXIsIFZpZXdDb250cm9sbGVyIH0gZnJvbSAnLi9jb250cm9sbGVyJztcbmltcG9ydCB7IHBsYWluQ29tYm9zVG9UcmVlcywgdHJhdmVyc2VUcmVlLCByZWNvbnN0cnVjdFRyZWUsIHRyYXZlcnNlVHJlZVVwIH0gZnJvbSAnLi4vdXRpbC9ncmFwaGljJztcbmltcG9ydCBIdWxsIGZyb20gJy4uL2l0ZW0vaHVsbCc7XG52YXIgdHJhbnNmb3JtID0gZXh0LnRyYW5zZm9ybTtcbnZhciBOT0RFID0gJ25vZGUnO1xuXG52YXIgQWJzdHJhY3RHcmFwaCA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoX3N1cGVyKSB7XG4gIF9fZXh0ZW5kcyhBYnN0cmFjdEdyYXBoLCBfc3VwZXIpO1xuXG4gIGZ1bmN0aW9uIEFic3RyYWN0R3JhcGgoY2ZnKSB7XG4gICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpcztcblxuICAgIF90aGlzLmNmZyA9IGRlZXBNaXgoX3RoaXMuZ2V0RGVmYXVsdENmZygpLCBjZmcpO1xuXG4gICAgX3RoaXMuaW5pdCgpO1xuXG4gICAgX3RoaXMuYW5pbWF0aW5nID0gZmFsc2U7XG4gICAgX3RoaXMuZGVzdHJveWVkID0gZmFsc2U7IC8vIOWQr+eUqCBzdGFjayDlkI7vvIzlrp7kvovljJYgdW5kb1N0YWNrIOWSjCByZWRvU3RhY2tcblxuICAgIGlmIChfdGhpcy5jZmcuZW5hYmxlZFN0YWNrKSB7XG4gICAgICAvLyDlrp7kvovljJYgdW5kbyDlkowgcmVkbyDmoIhcbiAgICAgIF90aGlzLnVuZG9TdGFjayA9IG5ldyBTdGFjayhfdGhpcy5jZmcubWF4U3RlcCk7XG4gICAgICBfdGhpcy5yZWRvU3RhY2sgPSBuZXcgU3RhY2soX3RoaXMuY2ZnLm1heFN0ZXApO1xuICAgIH1cblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5pbml0Q2FudmFzKCk7IC8vIGluc3RhbmNlIGNvbnRyb2xsZXJcblxuICAgIHZhciB2aWV3Q29udHJvbGxlciA9IG5ldyBWaWV3Q29udHJvbGxlcih0aGlzKTtcbiAgICB2YXIgbW9kZUNvbnRyb2xsZXIgPSBuZXcgTW9kZUNvbnRyb2xsZXIodGhpcyk7XG4gICAgdmFyIGl0ZW1Db250cm9sbGVyID0gbmV3IEl0ZW1Db250cm9sbGVyKHRoaXMpO1xuICAgIHZhciBzdGF0ZUNvbnRyb2xsZXIgPSBuZXcgU3RhdGVDb250cm9sbGVyKHRoaXMpO1xuICAgIHRoaXMuc2V0KHtcbiAgICAgIHZpZXdDb250cm9sbGVyOiB2aWV3Q29udHJvbGxlcixcbiAgICAgIG1vZGVDb250cm9sbGVyOiBtb2RlQ29udHJvbGxlcixcbiAgICAgIGl0ZW1Db250cm9sbGVyOiBpdGVtQ29udHJvbGxlcixcbiAgICAgIHN0YXRlQ29udHJvbGxlcjogc3RhdGVDb250cm9sbGVyXG4gICAgfSk7IC8vIOWIneWni+WMluW4g+WxgOacuuWItlxuXG4gICAgdGhpcy5pbml0TGF5b3V0Q29udHJvbGxlcigpOyAvLyDliJ3lp4vljJbkuovku7bmnLrliLZcblxuICAgIHRoaXMuaW5pdEV2ZW50Q29udHJvbGxlcigpO1xuICAgIHRoaXMuaW5pdEdyb3VwcygpO1xuICAgIC8qKiDliJ3lp4vljJbmj5Lku7YgKi9cblxuICAgIHRoaXMuaW5pdFBsdWdpbnMoKTtcbiAgfTsgLy8g5Yid5aeL5YyW5omA5pyJIEdyb3VwXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5pbml0R3JvdXBzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBjYW52YXMgPSB0aGlzLmdldCgnY2FudmFzJyk7XG4gICAgaWYgKCFjYW52YXMpIHJldHVybjtcbiAgICB2YXIgZWwgPSBjYW52YXMuZ2V0KCdlbCcpO1xuICAgIHZhciBfYSA9IChlbCB8fCB7fSkuaWQsXG4gICAgICAgIGlkID0gX2EgPT09IHZvaWQgMCA/ICdnNicgOiBfYTtcbiAgICB2YXIgZ3JvdXAgPSBjYW52YXMuYWRkR3JvdXAoe1xuICAgICAgaWQ6IGlkICsgXCItcm9vdFwiLFxuICAgICAgY2xhc3NOYW1lOiBHbG9iYWwucm9vdENvbnRhaW5lckNsYXNzTmFtZVxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuZ2V0KCdncm91cEJ5VHlwZXMnKSkge1xuICAgICAgdmFyIGVkZ2VHcm91cCA9IGdyb3VwLmFkZEdyb3VwKHtcbiAgICAgICAgaWQ6IGlkICsgXCItZWRnZVwiLFxuICAgICAgICBjbGFzc05hbWU6IEdsb2JhbC5lZGdlQ29udGFpbmVyQ2xhc3NOYW1lXG4gICAgICB9KTtcbiAgICAgIHZhciBub2RlR3JvdXAgPSBncm91cC5hZGRHcm91cCh7XG4gICAgICAgIGlkOiBpZCArIFwiLW5vZGVcIixcbiAgICAgICAgY2xhc3NOYW1lOiBHbG9iYWwubm9kZUNvbnRhaW5lckNsYXNzTmFtZVxuICAgICAgfSk7XG4gICAgICB2YXIgY29tYm9Hcm91cCA9IGdyb3VwLmFkZEdyb3VwKHtcbiAgICAgICAgaWQ6IGlkICsgXCItY29tYm9cIixcbiAgICAgICAgY2xhc3NOYW1lOiBHbG9iYWwuY29tYm9Db250YWluZXJDbGFzc05hbWVcbiAgICAgIH0pOyAvLyDnlKjkuo7lrZjlgqjoh6rlrprkuYnnmoTnvqTnu4RcblxuICAgICAgY29tYm9Hcm91cC50b0JhY2soKTtcbiAgICAgIHRoaXMuc2V0KHtcbiAgICAgICAgbm9kZUdyb3VwOiBub2RlR3JvdXAsXG4gICAgICAgIGVkZ2VHcm91cDogZWRnZUdyb3VwLFxuICAgICAgICBjb21ib0dyb3VwOiBjb21ib0dyb3VwXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB2YXIgZGVsZWdhdGVHcm91cCA9IGdyb3VwLmFkZEdyb3VwKHtcbiAgICAgIGlkOiBpZCArIFwiLWRlbGVnYXRlXCIsXG4gICAgICBjbGFzc05hbWU6IEdsb2JhbC5kZWxlZ2F0ZUNvbnRhaW5lckNsYXNzTmFtZVxuICAgIH0pO1xuICAgIHRoaXMuc2V0KHtcbiAgICAgIGRlbGVnYXRlR3JvdXA6IGRlbGVnYXRlR3JvdXBcbiAgICB9KTtcbiAgICB0aGlzLnNldCgnZ3JvdXAnLCBncm91cCk7XG4gIH07IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXREZWZhdWx0Q2ZnID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICAvKipcbiAgICAgICAqIENvbnRhaW5lciBjb3VsZCBiZSBkb20gb2JqZWN0IG9yIGRvbSBpZFxuICAgICAgICovXG4gICAgICBjb250YWluZXI6IHVuZGVmaW5lZCxcblxuICAgICAgLyoqXG4gICAgICAgKiBDYW52YXMgd2lkdGhcbiAgICAgICAqIHVuaXQgcGl4ZWwgaWYgdW5kZWZpbmVkIGZvcmNlIGZpdCB3aWR0aFxuICAgICAgICovXG4gICAgICB3aWR0aDogdW5kZWZpbmVkLFxuXG4gICAgICAvKipcbiAgICAgICAqIENhbnZhcyBoZWlnaHRcbiAgICAgICAqIHVuaXQgcGl4ZWwgaWYgdW5kZWZpbmVkIGZvcmNlIGZpdCBoZWlnaHRcbiAgICAgICAqL1xuICAgICAgaGVpZ2h0OiB1bmRlZmluZWQsXG5cbiAgICAgIC8qKlxuICAgICAgICogcmVuZGVyZXIgY2FudmFzIG9yIHN2Z1xuICAgICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgICAqL1xuICAgICAgcmVuZGVyZXI6ICdjYW52YXMnLFxuXG4gICAgICAvKipcbiAgICAgICAqIGNvbnRyb2wgZ3JhcGggYmVoYXZpb3JzXG4gICAgICAgKi9cbiAgICAgIG1vZGVzOiB7fSxcblxuICAgICAgLyoqXG4gICAgICAgKiDms6jlhozmj5Lku7ZcbiAgICAgICAqL1xuICAgICAgcGx1Z2luczogW10sXG5cbiAgICAgIC8qKlxuICAgICAgICogc291cmNlIGRhdGFcbiAgICAgICAqL1xuICAgICAgZGF0YToge30sXG5cbiAgICAgIC8qKlxuICAgICAgICogRml0IHZpZXcgcGFkZGluZyAoY2xpZW50IHNjYWxlKVxuICAgICAgICovXG4gICAgICBmaXRWaWV3UGFkZGluZzogMTAsXG5cbiAgICAgIC8qKlxuICAgICAgICogTWluaW11bSBzY2FsZSBzaXplXG4gICAgICAgKi9cbiAgICAgIG1pblpvb206IDAuMixcblxuICAgICAgLyoqXG4gICAgICAgKiBNYXhtdW0gc2NhbGUgc2l6ZVxuICAgICAgICovXG4gICAgICBtYXhab29tOiAxMCxcblxuICAgICAgLyoqXG4gICAgICAgKiAgY2FwdHVyZSBldmVudHNcbiAgICAgICAqL1xuICAgICAgZXZlbnQ6IHRydWUsXG5cbiAgICAgIC8qKlxuICAgICAgICogZ3JvdXAgbm9kZSAmIGVkZ2VzIGludG8gZGlmZmVyZW50IGdyYXBoaWMgZ3JvdXBzXG4gICAgICAgKi9cbiAgICAgIGdyb3VwQnlUeXBlczogdHJ1ZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBkZXRlcm1pbmUgaWYgaXQncyBhIGRpcmVjdGVkIGdyYXBoXG4gICAgICAgKi9cbiAgICAgIGRpcmVjdGVkOiBmYWxzZSxcblxuICAgICAgLyoqXG4gICAgICAgKiB3aGVuIGRhdGEgb3Igc2hhcGUgY2hhbmdlZCwgc2hvdWxkIGNhbnZhcyBkcmF3IGF1dG9tYXRpY2FsbHlcbiAgICAgICAqL1xuICAgICAgYXV0b1BhaW50OiB0cnVlLFxuXG4gICAgICAvKipcbiAgICAgICAqIHN0b3JlIGFsbCB0aGUgbm9kZSBpbnN0YW5jZXNcbiAgICAgICAqL1xuICAgICAgbm9kZXM6IFtdLFxuXG4gICAgICAvKipcbiAgICAgICAqIHN0b3JlIGFsbCB0aGUgZWRnZSBpbnN0YW5jZXNcbiAgICAgICAqL1xuICAgICAgZWRnZXM6IFtdLFxuXG4gICAgICAvKipcbiAgICAgICAqIHN0b3JlIGFsbCB0aGUgY29tYm8gaW5zdGFuY2VzXG4gICAgICAgKi9cbiAgICAgIGNvbWJvczogW10sXG5cbiAgICAgIC8qKlxuICAgICAgICogc3RvcmUgYWxsIHRoZSBlZGdlIGluc3RhbmNlcyB3aGljaCBhcmUgdmlydHVhbCBlZGdlcyByZWxhdGVkIHRvIGNvbGxhcHNlZCBjb21ib1xuICAgICAgICovXG4gICAgICB2ZWRnZXM6IFtdLFxuXG4gICAgICAvKipcbiAgICAgICAqIGFsbCB0aGUgaW5zdGFuY2VzIGluZGV4ZWQgYnkgaWRcbiAgICAgICAqL1xuICAgICAgaXRlbU1hcDoge30sXG5cbiAgICAgIC8qKlxuICAgICAgICog6L6555u05o6l6L+e5o6l5Yiw6IqC54K555qE5Lit5b+D77yM5LiN5YaN6ICD6JmR6ZSa54K5XG4gICAgICAgKi9cbiAgICAgIGxpbmtDZW50ZXI6IGZhbHNlLFxuXG4gICAgICAvKipcbiAgICAgICAqIOm7mOiupOeahOiKgueCuemFjee9ru+8jGRhdGEg5LiK5a6a5LmJ55qE6YWN572u5Lya6KaG55uW6L+Z5Lqb6YWN572u44CC5L6L5aaC77yaXG4gICAgICAgKiBkZWZhdWx0Tm9kZToge1xuICAgICAgICogIHR5cGU6ICdyZWN0JyxcbiAgICAgICAqICBzaXplOiBbNjAsIDQwXSxcbiAgICAgICAqICBzdHlsZToge1xuICAgICAgICogICAgLy8uLi4g5qC35byP6YWN572u6aG5XG4gICAgICAgKiAgfVxuICAgICAgICogfVxuICAgICAgICog6Iul5pWw5o2u6aG55Li6IHsgaWQ6ICdub2RlJywgeDogMTAwLCB5OiAxMDAgfVxuICAgICAgICog5a6e6ZmF5Yib5bu655qE6IqC54K55qih5Z6L5pivIHsgaWQ6ICdub2RlJywgeDogMTAwLCB5OiAxMDDvvIwgdHlwZTogJ3JlY3QnLCBzaXplOiBbNjAsIDQwXSB9XG4gICAgICAgKiDoi6XmlbDmja7pobnkuLogeyBpZDogJ25vZGUnLCB4OiAxMDAsIHk6IDEwMCwgdHlwZTogJ2NpcmNsZScgfVxuICAgICAgICog5a6e6ZmF5Yib5bu655qE6IqC54K55qih5Z6L5pivIHsgaWQ6ICdub2RlJywgeDogMTAwLCB5OiAxMDDvvIwgdHlwZTogJ2NpcmNsZScsIHNpemU6IFs2MCwgNDBdIH1cbiAgICAgICAqL1xuICAgICAgZGVmYXVsdE5vZGU6IHt9LFxuXG4gICAgICAvKipcbiAgICAgICAqIOm7mOiupOi+uemFjee9ru+8jGRhdGEg5LiK5a6a5LmJ55qE6YWN572u5Lya6KaG55uW6L+Z5Lqb6YWN572u44CC55So5rOV5ZCMIGRlZmF1bHROb2RlXG4gICAgICAgKi9cbiAgICAgIGRlZmF1bHRFZGdlOiB7fSxcblxuICAgICAgLyoqXG4gICAgICAgKiDoioLngrnpu5jorqTmoLflvI/vvIzkuZ/lj6/ku6Xmt7vliqDnirbmgIHmoLflvI9cbiAgICAgICAqIOS+i+Wmgu+8mlxuICAgICAgICogY29uc3QgZ3JhcGggPSBuZXcgRzYuR3JhcGgoe1xuICAgICAgICogIG5vZGVTdGF0ZVN0eWxlczoge1xuICAgICAgICogICAgc2VsZWN0ZWQ6IHsgZmlsbDogJyNjY2MnLCBzdHJva2U6ICcjNjY2JyB9LFxuICAgICAgICogICAgYWN0aXZlOiB7IGxpbmVXaWR0aDogMiB9XG4gICAgICAgKiAgfSxcbiAgICAgICAqICAuLi5cbiAgICAgICAqIH0pO1xuICAgICAgICpcbiAgICAgICAqL1xuICAgICAgbm9kZVN0YXRlU3R5bGVzOiB7fSxcblxuICAgICAgLyoqXG4gICAgICAgKiDovrnpu5jorqTmoLflvI/vvIznlKjms5XlkIxub2RlU3RhdGVTdHlsZVxuICAgICAgICovXG4gICAgICBlZGdlU3RhdGVTdHlsZXM6IHt9LFxuXG4gICAgICAvKipcbiAgICAgICAqIGdyYXBoIOeKtuaAgVxuICAgICAgICovXG4gICAgICBzdGF0ZXM6IHt9LFxuXG4gICAgICAvKipcbiAgICAgICAqIOaYr+WQpuWQr+eUqOWFqOWxgOWKqOeUu1xuICAgICAgICovXG4gICAgICBhbmltYXRlOiBmYWxzZSxcblxuICAgICAgLyoqXG4gICAgICAgKiDliqjnlLvorr7nva4s5LuF5ZyoIGFuaW1hdGUg5Li6IHRydWUg5pe25pyJ5pWIXG4gICAgICAgKi9cbiAgICAgIGFuaW1hdGVDZmc6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIOW4p+Wbnuiwg+WHveaVsO+8jOeUqOS6juiHquWumuS5ieiKgueCuei/kOWKqOi3r+W+hO+8jOS4uuepuuaXtue6v+aAp+i/kOWKqFxuICAgICAgICAgKi9cbiAgICAgICAgb25GcmFtZTogdW5kZWZpbmVkLFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiDliqjnlLvml7bplb8obXMpXG4gICAgICAgICAqL1xuICAgICAgICBkdXJhdGlvbjogNTAwLFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiDmjIflrprliqjnlLvliqjmlYhcbiAgICAgICAgICovXG4gICAgICAgIGVhc2luZzogJ2Vhc2VMaW5lYXInXG4gICAgICB9LFxuICAgICAgY2FsbGJhY2s6IHVuZGVmaW5lZCxcbiAgICAgIC8vIOm7mOiupOS4jeWQr+eUqCB1bmRvICYgcmVkbyDlip/og71cbiAgICAgIGVuYWJsZWRTdGFjazogZmFsc2UsXG4gICAgICAvLyDlj6rmnInlvZMgZW5hYmxlZFN0YWNrIOS4uiB0cnVlIOaXtuaJjei1t+S9nOeUqFxuICAgICAgbWF4U3RlcDogMTAsXG4gICAgICAvLyDlrZjlgqjlm77kuIrnmoQgdG9vbHRpcCBkb23vvIzmlrnkvr/plIDmr4FcbiAgICAgIHRvb2x0aXBzOiBbXVxuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiDlsIblgLzorr7nva7liLAgdGhpcy5jZmcg5Y+Y6YeP5LiK6Z2iXG4gICAqIEBwYXJhbSBrZXkg6ZSuIOaIliDlr7nosaHlgLxcbiAgICogQHBhcmFtIHZhbCDlgLxcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAoa2V5LCB2YWwpIHtcbiAgICBpZiAoaXNQbGFpbk9iamVjdChrZXkpKSB7XG4gICAgICB0aGlzLmNmZyA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCB0aGlzLmNmZyksIGtleSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2ZnW2tleV0gPSB2YWw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5YgdGhpcy5jZmcg5Lit55qE5YC8XG4gICAqIEBwYXJhbSBrZXkg6ZSuXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciBfYTtcblxuICAgIHJldHVybiAoX2EgPSB0aGlzLmNmZykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hW2tleV07XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5YgZ3JhcGgg55qE5qC55Zu+5b2i5YiG57uEXG4gICAqIEByZXR1cm4g5qC5IGdyb3VwXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0R3JvdXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdncm91cCcpO1xuICB9O1xuICAvKipcbiAgICog6I635Y+WIGdyYXBoIOeahCBET00g5a655ZmoXG4gICAqIEByZXR1cm4gRE9NIOWuueWZqFxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldENvbnRhaW5lciA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ2NvbnRhaW5lcicpO1xuICB9O1xuICAvKipcbiAgICog6I635Y+WIGdyYXBoIOeahOacgOWwj+e8qeaUvuavlOS+i1xuICAgKiBAcmV0dXJuIG1pblpvb21cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXRNaW5ab29tID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnbWluWm9vbScpO1xuICB9O1xuICAvKipcbiAgICog6K6+572uIGdyYXBoIOeahOacgOWwj+e8qeaUvuavlOS+i1xuICAgKiBAcmV0dXJuIG1pblpvb21cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5zZXRNaW5ab29tID0gZnVuY3Rpb24gKHJhdGlvKSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0KCdtaW5ab29tJywgcmF0aW8pO1xuICB9O1xuICAvKipcbiAgICog6I635Y+WIGdyYXBoIOeahOacgOWkp+e8qeaUvuavlOS+i1xuICAgKiBAcGFyYW0gbWF4Wm9vbVxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldE1heFpvb20gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdtYXhab29tJyk7XG4gIH07XG4gIC8qKlxuICAgKiDorr7nva4gZ3JhcGgg55qE5pyA5aSn57yp5pS+5q+U5L6LXG4gICAqIEBwYXJhbSBtYXhab29tXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuc2V0TWF4Wm9vbSA9IGZ1bmN0aW9uIChyYXRpbykge1xuICAgIHJldHVybiB0aGlzLnNldCgnbWF4Wm9vbScsIHJhdGlvKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPliBncmFwaCDnmoTlrr3luqZcbiAgICogQHJldHVybiB3aWR0aFxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldFdpZHRoID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnd2lkdGgnKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPliBncmFwaCDnmoTpq5jluqZcbiAgICogQHJldHVybiB3aWR0aFxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldEhlaWdodCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ2hlaWdodCcpO1xuICB9O1xuICAvKipcbiAgICog5riF55CG5YWD57Sg5aSa5Liq54q25oCBXG4gICAqIEBwYXJhbSB7c3RyaW5nfEl0ZW19IGl0ZW0g5YWD57SgaWTmiJblhYPntKDlrp7kvotcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gc3RhdGVzIOeKtuaAgVxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmNsZWFySXRlbVN0YXRlcyA9IGZ1bmN0aW9uIChpdGVtLCBzdGF0ZXMpIHtcbiAgICBpZiAoaXNTdHJpbmcoaXRlbSkpIHtcbiAgICAgIGl0ZW0gPSB0aGlzLmZpbmRCeUlkKGl0ZW0pO1xuICAgIH1cblxuICAgIHZhciBpdGVtQ29udHJvbGxlciA9IHRoaXMuZ2V0KCdpdGVtQ29udHJvbGxlcicpO1xuXG4gICAgaWYgKCFzdGF0ZXMpIHtcbiAgICAgIHN0YXRlcyA9IGl0ZW0uZ2V0KCdzdGF0ZXMnKTtcbiAgICB9XG5cbiAgICBpdGVtQ29udHJvbGxlci5jbGVhckl0ZW1TdGF0ZXMoaXRlbSwgc3RhdGVzKTtcbiAgICB2YXIgc3RhdGVDb250cm9sbGVyID0gdGhpcy5nZXQoJ3N0YXRlQ29udHJvbGxlcicpO1xuICAgIHN0YXRlQ29udHJvbGxlci51cGRhdGVTdGF0ZXMoaXRlbSwgc3RhdGVzLCBmYWxzZSk7XG4gIH07XG4gIC8qKlxuICAgKiDorr7nva7lkITkuKroioLngrnmoLflvI/vvIzku6Xlj4rlnKjlkITnp43nirbmgIHkuIvoioLngrkga2V5U2hhcGUg55qE5qC35byP44CCXG4gICAqIOiLpeaYr+iHquWumuS5ieiKgueCueWIh+WcqOWQhOenjeeKtuaAgeS4i1xuICAgKiBncmFwaC5ub2RlKG5vZGUgPT4ge1xuICAgKiAgcmV0dXJuIHtcbiAgICogICAgdHlwZTogJ3JlY3QnLFxuICAgKiAgICBsYWJlbDogbm9kZS5pZCxcbiAgICogICAgc3R5bGU6IHsgZmlsbDogJyM2NjYnIH0sXG4gICAqICAgIHN0YXRlU3R5bGVzOiB7XG4gICAqICAgICAgIHNlbGVjdGVkOiB7IGZpbGw6ICdibHVlJyB9LFxuICAgKiAgICAgICBjdXN0b206IHsgZmlsbDogJ2dyZWVuJyB9XG4gICAqICAgICB9XG4gICAqICAgfVxuICAgKiB9KTtcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gbm9kZUZuIOaMh+Wumuavj+S4quiKgueCueagt+W8j1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLm5vZGUgPSBmdW5jdGlvbiAobm9kZUZuKSB7XG4gICAgaWYgKHR5cGVvZiBub2RlRm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMuc2V0KCdub2RlTWFwcGVyJywgbm9kZUZuKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDorr7nva7lkITkuKrovrnmoLflvI9cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gZWRnZUZuIOaMh+Wumuavj+S4qui+ueeahOagt+W8jyznlKjms5XlkIwgbm9kZVxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmVkZ2UgPSBmdW5jdGlvbiAoZWRnZUZuKSB7XG4gICAgaWYgKHR5cGVvZiBlZGdlRm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMuc2V0KCdlZGdlTWFwcGVyJywgZWRnZUZuKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDorr7nva7lkITkuKogY29tYm8g55qE6YWN572uXG4gICAqIEBwYXJhbSBjb21ib0ZuXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuY29tYm8gPSBmdW5jdGlvbiAoY29tYm9Gbikge1xuICAgIGlmICh0eXBlb2YgY29tYm9GbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy5zZXQoJ2NvbWJvTWFwcGVyJywgY29tYm9Gbik7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog5qC55o2uIElEIOafpeivouWbvuWFg+e0oOWunuS+i1xuICAgKiBAcGFyYW0gaWQg5Zu+5YWD57SgIElEXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZmluZEJ5SWQgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ2l0ZW1NYXAnKVtpZF07XG4gIH07XG4gIC8qKlxuICAgKiDmoLnmja7lr7nlupTop4TliJnmn6Xmib7ljZXkuKrlhYPntKBcbiAgICogQHBhcmFtIHtJVEVNX1RZUEV9IHR5cGUg5YWD57Sg57G75Z6LKG5vZGUgfCBlZGdlIHwgZ3JvdXApXG4gICAqIEBwYXJhbSB7KGl0ZW06IFQsIGluZGV4OiBudW1iZXIpID0+IFR9IGZuIOaMh+WumuinhOWImVxuICAgKiBAcmV0dXJuIHtUfSDlhYPntKDlrp7kvotcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24gKHR5cGUsIGZuKSB7XG4gICAgdmFyIHJlc3VsdDtcbiAgICB2YXIgaXRlbXMgPSB0aGlzLmdldCh0eXBlICsgXCJzXCIpOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29uc2lzdGVudC1yZXR1cm5cblxuICAgIGVhY2goaXRlbXMsIGZ1bmN0aW9uIChpdGVtLCBpKSB7XG4gICAgICBpZiAoZm4oaXRlbSwgaSkpIHtcbiAgICAgICAgcmVzdWx0ID0gaXRlbTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuICAvKipcbiAgICog5p+l5om+5omA5pyJ5ruh6Laz6KeE5YiZ55qE5YWD57SgXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlIOWFg+e0oOexu+Weiyhub2RlfGVkZ2UpXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmbiDmjIflrprop4TliJlcbiAgICogQHJldHVybiB7YXJyYXl9IOWFg+e0oOWunuS+i1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmZpbmRBbGwgPSBmdW5jdGlvbiAodHlwZSwgZm4pIHtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgZWFjaCh0aGlzLmdldCh0eXBlICsgXCJzXCIpLCBmdW5jdGlvbiAoaXRlbSwgaSkge1xuICAgICAgaWYgKGZuKGl0ZW0sIGkpKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGl0ZW0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG4gIC8qKlxuICAgKiDmn6Xmib7miYDmnInlpITkuo7mjIflrprnirbmgIHnmoTlhYPntKBcbiAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGUg5YWD57Sg57G75Z6LKG5vZGV8ZWRnZSlcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0YXRlIOeKtuaAgVxuICAgKiBAcmV0dXJuIHtvYmplY3R9IOWFg+e0oOWunuS+i1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmZpbmRBbGxCeVN0YXRlID0gZnVuY3Rpb24gKHR5cGUsIHN0YXRlKSB7XG4gICAgcmV0dXJuIHRoaXMuZmluZEFsbCh0eXBlLCBmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgcmV0dXJuIGl0ZW0uaGFzU3RhdGUoc3RhdGUpO1xuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICog5bmz56e755S75biDXG4gICAqIEBwYXJhbSBkeCDmsLTlubPmlrnlkJHkvY3np7tcbiAgICogQHBhcmFtIGR5IOWeguebtOaWueWQkeS9jeenu1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnRyYW5zbGF0ZSA9IGZ1bmN0aW9uIChkeCwgZHkpIHtcbiAgICB2YXIgZ3JvdXAgPSB0aGlzLmdldCgnZ3JvdXAnKTtcbiAgICB2YXIgbWF0cml4ID0gY2xvbmUoZ3JvdXAuZ2V0TWF0cml4KCkpO1xuXG4gICAgaWYgKCFtYXRyaXgpIHtcbiAgICAgIG1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICB9XG5cbiAgICBtYXRyaXggPSB0cmFuc2Zvcm0obWF0cml4LCBbWyd0JywgZHgsIGR5XV0pO1xuICAgIGdyb3VwLnNldE1hdHJpeChtYXRyaXgpO1xuICAgIHRoaXMuZW1pdCgndmlld3BvcnRjaGFuZ2UnLCB7XG4gICAgICBhY3Rpb246ICd0cmFuc2xhdGUnLFxuICAgICAgbWF0cml4OiBncm91cC5nZXRNYXRyaXgoKVxuICAgIH0pO1xuICAgIHRoaXMuYXV0b1BhaW50KCk7XG4gIH07XG4gIC8qKlxuICAgKiDlubPnp7vnlLvluIPliLDmn5DngrlcbiAgICogQHBhcmFtIHtudW1iZXJ9IHgg5rC05bmz5Z2Q5qCHXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB5IOWeguebtOWdkOagh1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLm1vdmVUbyA9IGZ1bmN0aW9uICh4LCB5LCBhbmltYXRlLCBhbmltYXRlQ2ZnKSB7XG4gICAgdmFyIGdyb3VwID0gdGhpcy5nZXQoJ2dyb3VwJyk7XG4gICAgbW92ZShncm91cCwge1xuICAgICAgeDogeCxcbiAgICAgIHk6IHlcbiAgICB9LCBhbmltYXRlLCBhbmltYXRlQ2ZnIHx8IHtcbiAgICAgIGR1cmF0aW9uOiA1MDAsXG4gICAgICBlYXNpbmc6ICdlYXNlQ3ViaWMnXG4gICAgfSk7XG4gICAgdGhpcy5lbWl0KCd2aWV3cG9ydGNoYW5nZScsIHtcbiAgICAgIGFjdGlvbjogJ21vdmUnLFxuICAgICAgbWF0cml4OiBncm91cC5nZXRNYXRyaXgoKVxuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICog6LCD5pW06KeG5Y+j6YCC5bqU6KeG5Zu+XG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwYWRkaW5nIOWbm+WRqOWbtOi+uei3nVxuICAgKiBAcGFyYW0ge0ZpdFZpZXdSdWxlc30gcnVsZXMgZml0Vmlld+eahOinhOWImVxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmZpdFZpZXcgPSBmdW5jdGlvbiAocGFkZGluZywgcnVsZXMpIHtcbiAgICBpZiAocGFkZGluZykge1xuICAgICAgdGhpcy5zZXQoJ2ZpdFZpZXdQYWRkaW5nJywgcGFkZGluZyk7XG4gICAgfVxuXG4gICAgdmFyIHZpZXdDb250cm9sbGVyID0gdGhpcy5nZXQoJ3ZpZXdDb250cm9sbGVyJyk7XG5cbiAgICBpZiAocnVsZXMpIHtcbiAgICAgIHZpZXdDb250cm9sbGVyLmZpdFZpZXdCeVJ1bGVzKHJ1bGVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmlld0NvbnRyb2xsZXIuZml0VmlldygpO1xuICAgIH1cblxuICAgIHRoaXMuYXV0b1BhaW50KCk7XG4gIH07XG4gIC8qKlxuICAgKiDosIPmlbTop4blj6PpgILlupTop4blm77vvIzkuI3nvKnmlL7vvIzku4XlsIblm74gYmJveCDkuK3lv4Plr7npvZDliLDnlLvluIPkuK3lv4NcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5maXRDZW50ZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZpZXdDb250cm9sbGVyID0gdGhpcy5nZXQoJ3ZpZXdDb250cm9sbGVyJyk7XG4gICAgdmlld0NvbnRyb2xsZXIuZml0Q2VudGVyKCk7XG4gICAgdGhpcy5hdXRvUGFpbnQoKTtcbiAgfTtcbiAgLyoqXG4gICAqIOaWsOWinuihjOS4ulxuICAgKiBAcGFyYW0ge3N0cmluZyB8IE1vZGVPcHRpb24gfCBNb2RlVHlwZVtdfSBiZWhhdmlvcnMg5re75Yqg55qE6KGM5Li6XG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgc3RyaW5nW119IG1vZGVzIOa3u+WKoOWIsOWvueW6lOeahOaooeW8j1xuICAgKiBAcmV0dXJuIHtHcmFwaH0gR3JhcGhcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5hZGRCZWhhdmlvcnMgPSBmdW5jdGlvbiAoYmVoYXZpb3JzLCBtb2Rlcykge1xuICAgIHZhciBtb2RlQ29udHJvbGxlciA9IHRoaXMuZ2V0KCdtb2RlQ29udHJvbGxlcicpO1xuICAgIG1vZGVDb250cm9sbGVyLm1hbmlwdWxhdGVCZWhhdmlvcnMoYmVoYXZpb3JzLCBtb2RlcywgdHJ1ZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG4gIC8qKlxuICAgKiDnp7vpmaTooYzkuLpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBNb2RlT3B0aW9uIHwgTW9kZVR5cGVbXX0gYmVoYXZpb3JzIOenu+mZpOeahOihjOS4ulxuICAgKiBAcGFyYW0ge3N0cmluZyB8IHN0cmluZ1tdfSBtb2RlcyDku47mjIflrprnmoTmqKHlvI/kuK3np7vpmaRcbiAgICogQHJldHVybiB7R3JhcGh9IEdyYXBoXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUucmVtb3ZlQmVoYXZpb3JzID0gZnVuY3Rpb24gKGJlaGF2aW9ycywgbW9kZXMpIHtcbiAgICB2YXIgbW9kZUNvbnRyb2xsZXIgPSB0aGlzLmdldCgnbW9kZUNvbnRyb2xsZXInKTtcbiAgICBtb2RlQ29udHJvbGxlci5tYW5pcHVsYXRlQmVoYXZpb3JzKGJlaGF2aW9ycywgbW9kZXMsIGZhbHNlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgLyoqXG4gICAqIOabtOaWsOihjOS4uuWPguaVsFxuICAgKiBAcGFyYW0ge3N0cmluZyB8IE1vZGVPcHRpb24gfCBNb2RlVHlwZX0gYmVoYXZpb3Ig6ZyA6KaB5pu05paw55qE6KGM5Li6XG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgc3RyaW5nW119IG1vZGVzIOaMh+WumueahOaooeW8j+S4reeahOihjOS4uu+8jOS4jeaMh+WumuWImeS4uiBkZWZhdWx0XG4gICAqIEByZXR1cm4ge0dyYXBofSBHcmFwaFxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnVwZGF0ZUJlaGF2aW9yID0gZnVuY3Rpb24gKGJlaGF2aW9yLCBuZXdDZmcsIG1vZGUpIHtcbiAgICB2YXIgbW9kZUNvbnRyb2xsZXIgPSB0aGlzLmdldCgnbW9kZUNvbnRyb2xsZXInKTtcbiAgICBtb2RlQ29udHJvbGxlci51cGRhdGVCZWhhdmlvcihiZWhhdmlvciwgbmV3Q2ZnLCBtb2RlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgLyoqXG4gICAqIOS8uOe8qeeql+WPo1xuICAgKiBAcGFyYW0gcmF0aW8g5Ly457yp5q+U5L6LXG4gICAqIEBwYXJhbSBjZW50ZXIg5LulY2VudGVy55qEeCwgeeWdkOagh+S4uuS4reW/g+e8qeaUvlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGFuaW1hdGUg5piv5ZCm5bim5pyJ5Yqo55S75Zyw56e75YqoXG4gICAqIEBwYXJhbSB7R3JhcGhBbmltYXRlQ29uZmlnfSBhbmltYXRlQ2ZnIOiLpeW4puacieWKqOeUu++8jOWKqOeUu+eahOmFjee9rumhuVxuICAgKiBAcmV0dXJuIHtib29sZWFufSDnvKnmlL7mmK/lkKbmiJDlip9cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS56b29tID0gZnVuY3Rpb24gKHJhdGlvLCBjZW50ZXIsIGFuaW1hdGUsIGFuaW1hdGVDZmcpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIGdyb3VwID0gdGhpcy5nZXQoJ2dyb3VwJyk7XG4gICAgdmFyIG1hdHJpeCA9IGNsb25lKGdyb3VwLmdldE1hdHJpeCgpKTtcbiAgICB2YXIgbWluWm9vbSA9IHRoaXMuZ2V0KCdtaW5ab29tJyk7XG4gICAgdmFyIG1heFpvb20gPSB0aGlzLmdldCgnbWF4Wm9vbScpO1xuXG4gICAgaWYgKCFtYXRyaXgpIHtcbiAgICAgIG1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICB9XG5cbiAgICBpZiAoY2VudGVyKSB7XG4gICAgICBtYXRyaXggPSB0cmFuc2Zvcm0obWF0cml4LCBbWyd0JywgLWNlbnRlci54LCAtY2VudGVyLnldLCBbJ3MnLCByYXRpbywgcmF0aW9dLCBbJ3QnLCBjZW50ZXIueCwgY2VudGVyLnldXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1hdHJpeCA9IHRyYW5zZm9ybShtYXRyaXgsIFtbJ3MnLCByYXRpbywgcmF0aW9dXSk7XG4gICAgfVxuXG4gICAgaWYgKG1pblpvb20gJiYgbWF0cml4WzBdIDwgbWluWm9vbSB8fCBtYXhab29tICYmIG1hdHJpeFswXSA+IG1heFpvb20pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IC8vIG1hdHJpeCA9IFsyLCAwLCAwLCAwLCAyLCAwLCAtMTI1LCAtMTI1LCAxXTtcblxuXG4gICAgaWYgKGFuaW1hdGUpIHtcbiAgICAgIC8vIENsb25lIHRoZSBvcmlnaW5hbCBtYXRyaXggdG8gcGVyZm9ybSB0aGUgYW5pbWF0aW9uXG4gICAgICB2YXIgYW5pTWF0cml4XzEgPSBjbG9uZShncm91cC5nZXRNYXRyaXgoKSk7XG5cbiAgICAgIGlmICghYW5pTWF0cml4XzEpIHtcbiAgICAgICAgYW5pTWF0cml4XzEgPSBbMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMV07XG4gICAgICB9XG5cbiAgICAgIHZhciBpbml0aWFsUmF0aW9fMSA9IGFuaU1hdHJpeF8xWzBdO1xuICAgICAgdmFyIHRhcmdldFJhdGlvXzEgPSBpbml0aWFsUmF0aW9fMSAqIHJhdGlvO1xuICAgICAgdmFyIGFuaW1hdGVDb25maWcgPSB2b2lkIDA7XG5cbiAgICAgIGlmICghYW5pbWF0ZUNmZykge1xuICAgICAgICBhbmltYXRlQ29uZmlnID0ge1xuICAgICAgICAgIGR1cmF0aW9uOiA1MDAsXG4gICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uIGNhbGxiYWNrKCkge1xuICAgICAgICAgICAgX3RoaXMuZW1pdCgndmlld3BvcnRjaGFuZ2UnLCB7XG4gICAgICAgICAgICAgIGFjdGlvbjogJ3pvb20nLFxuICAgICAgICAgICAgICBtYXRyaXg6IGFuaU1hdHJpeF8xXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKGFuaW1hdGVDZmcuY2FsbGJhY2spIHtcbiAgICAgICAgLy8gVGhpcyBpcyB0byBwcmV2ZW50IG1vZGlmeWluZyB0aGUgb3JpZ2luYWwgYW5pbWF0ZUNmZy5jYWxsYmFja1xuICAgICAgICB2YXIgY2FsbGJhY2tfMSA9IGFuaW1hdGVDZmcuY2FsbGJhY2s7XG4gICAgICAgIGFuaW1hdGVDb25maWcgPSBjbG9uZShhbmltYXRlQ2ZnKTtcblxuICAgICAgICBhbmltYXRlQ29uZmlnLmNhbGxiYWNrID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIF90aGlzLmVtaXQoJ3ZpZXdwb3J0Y2hhbmdlJywge1xuICAgICAgICAgICAgYWN0aW9uOiAnem9vbScsXG4gICAgICAgICAgICBtYXRyaXg6IGFuaU1hdHJpeF8xXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjYWxsYmFja18xKCk7XG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhbmltYXRlQ29uZmlnID0gYW5pbWF0ZUNmZztcbiAgICAgIH1cblxuICAgICAgZ3JvdXAuYW5pbWF0ZShmdW5jdGlvbiAocmF0aW8pIHtcbiAgICAgICAgaWYgKHJhdGlvID09PSAxKSB7XG4gICAgICAgICAgLy8gUmV1c2UgdGhlIGZpcnN0IHRyYW5zZm9ybWF0aW9uXG4gICAgICAgICAgYW5pTWF0cml4XzEgPSBtYXRyaXg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIHNjYWxlID0gbGVycChpbml0aWFsUmF0aW9fMSwgdGFyZ2V0UmF0aW9fMSwgcmF0aW8pIC8gYW5pTWF0cml4XzFbMF07XG5cbiAgICAgICAgICBpZiAoY2VudGVyKSB7XG4gICAgICAgICAgICBhbmlNYXRyaXhfMSA9IHRyYW5zZm9ybShhbmlNYXRyaXhfMSwgW1sndCcsIC1jZW50ZXIueCwgLWNlbnRlci55XSwgWydzJywgc2NhbGUsIHNjYWxlXSwgWyd0JywgY2VudGVyLngsIGNlbnRlci55XV0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhbmlNYXRyaXhfMSA9IHRyYW5zZm9ybShhbmlNYXRyaXhfMSwgW1sncycsIHNjYWxlLCBzY2FsZV1dKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1hdHJpeDogYW5pTWF0cml4XzFcbiAgICAgICAgfTtcbiAgICAgIH0sIGFuaW1hdGVDb25maWcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBncm91cC5zZXRNYXRyaXgobWF0cml4KTtcbiAgICAgIHRoaXMuZW1pdCgndmlld3BvcnRjaGFuZ2UnLCB7XG4gICAgICAgIGFjdGlvbjogJ3pvb20nLFxuICAgICAgICBtYXRyaXg6IG1hdHJpeFxuICAgICAgfSk7XG4gICAgICB0aGlzLmF1dG9QYWludCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuICAvKipcbiAgICog5Ly457yp6KeG5Y+j5Yiw5LiA5Zu65a6a5q+U5L6LXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0b1JhdGlvIOS8uOe8qeavlOS+i1xuICAgKiBAcGFyYW0ge1BvaW50fSBjZW50ZXIg5LulY2VudGVy55qEeCwgeeWdkOagh+S4uuS4reW/g+e8qeaUvlxuICAgKiBAcmV0dXJuIHtib29sZWFufSDnvKnmlL7mmK/lkKbmiJDlip9cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS56b29tVG8gPSBmdW5jdGlvbiAodG9SYXRpbywgY2VudGVyKSB7XG4gICAgdmFyIHJhdGlvID0gdG9SYXRpbyAvIHRoaXMuZ2V0Wm9vbSgpO1xuICAgIHJldHVybiB0aGlzLnpvb20ocmF0aW8sIGNlbnRlcik7XG4gIH07XG4gIC8qKlxuICAgKiDlsIblhYPntKDnp7vliqjliLDop4blj6PkuK3lv4NcbiAgICogQHBhcmFtIHtJdGVtfSBpdGVtIOaMh+WumuWFg+e0oFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGFuaW1hdGUg5piv5ZCm5bim5pyJ5Yqo55S75Zyw56e75YqoXG4gICAqIEBwYXJhbSB7R3JhcGhBbmltYXRlQ29uZmlnfSBhbmltYXRlQ2ZnIOiLpeW4puacieWKqOeUu++8jOWKqOeUu+eahOmFjee9rumhuVxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmZvY3VzSXRlbSA9IGZ1bmN0aW9uIChpdGVtLCBhbmltYXRlLCBhbmltYXRlQ2ZnKSB7XG4gICAgdmFyIHZpZXdDb250cm9sbGVyID0gdGhpcy5nZXQoJ3ZpZXdDb250cm9sbGVyJyk7XG4gICAgdmFyIGlzQW5pbWF0ZSA9IGZhbHNlO1xuICAgIGlmIChhbmltYXRlKSBpc0FuaW1hdGUgPSB0cnVlO2Vsc2UgaWYgKGFuaW1hdGUgPT09IHVuZGVmaW5lZCkgaXNBbmltYXRlID0gdGhpcy5nZXQoJ2FuaW1hdGUnKTtcbiAgICB2YXIgY3VyQW5pYW10ZUNmZyA9IHt9O1xuICAgIGlmIChhbmltYXRlQ2ZnKSBjdXJBbmlhbXRlQ2ZnID0gYW5pbWF0ZUNmZztlbHNlIGlmIChhbmltYXRlQ2ZnID09PSB1bmRlZmluZWQpIGN1ckFuaWFtdGVDZmcgPSB0aGlzLmdldCgnYW5pbWF0ZUNmZycpO1xuICAgIHZpZXdDb250cm9sbGVyLmZvY3VzKGl0ZW0sIGlzQW5pbWF0ZSwgY3VyQW5pYW10ZUNmZyk7XG4gICAgdGhpcy5hdXRvUGFpbnQoKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiHquWKqOmHjee7mFxuICAgKiBAaW50ZXJuYWwg5LuF5L6b5YaF6YOo5pu05paw5py65Yi26LCD55So77yM5aSW6YOo5qC55o2u6ZyA5rGC6LCD55SoIHJlbmRlciDmiJYgcGFpbnQg5o6l5Y+jXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuYXV0b1BhaW50ID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLmdldCgnYXV0b1BhaW50JykpIHtcbiAgICAgIHRoaXMucGFpbnQoKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDku4XnlLvluIPph43mlrDnu5jliLZcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5wYWludCA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmVtaXQoJ2JlZm9yZXBhaW50Jyk7XG4gICAgdGhpcy5nZXQoJ2NhbnZhcycpLmRyYXcoKTtcbiAgICB0aGlzLmVtaXQoJ2FmdGVycGFpbnQnKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWwhuWxj+W5leWdkOagh+i9rOaNouS4uuinhuWPo+WdkOagh1xuICAgKiBAcGFyYW0ge251bWJlcn0gY2xpZW50WCDlsY/luZV45Z2Q5qCHXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjbGllbnRZIOWxj+W5lXnlnZDmoIdcbiAgICogQHJldHVybiB7UG9pbnR9IOinhuWPo+WdkOagh1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldFBvaW50QnlDbGllbnQgPSBmdW5jdGlvbiAoY2xpZW50WCwgY2xpZW50WSkge1xuICAgIHZhciB2aWV3Q29udHJvbGxlciA9IHRoaXMuZ2V0KCd2aWV3Q29udHJvbGxlcicpO1xuICAgIHJldHVybiB2aWV3Q29udHJvbGxlci5nZXRQb2ludEJ5Q2xpZW50KGNsaWVudFgsIGNsaWVudFkpO1xuICB9O1xuICAvKipcbiAgICog5bCG57uY5Yi25Z2Q5qCH6L2s5o2i5Li65bGP5bmV5Z2Q5qCHXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB4IOe7mOWItuWdkOaghyB4XG4gICAqIEBwYXJhbSB7bnVtYmVyfSB5IOe7mOWItuWdkOaghyB5XG4gICAqIEByZXR1cm4ge1BvaW50fSDnu5jliLblnZDmoIdcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXRDbGllbnRCeVBvaW50ID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICB2YXIgdmlld0NvbnRyb2xsZXIgPSB0aGlzLmdldCgndmlld0NvbnRyb2xsZXInKTtcbiAgICByZXR1cm4gdmlld0NvbnRyb2xsZXIuZ2V0Q2xpZW50QnlQb2ludCh4LCB5KTtcbiAgfTtcbiAgLyoqXG4gICAqIOWwhueUu+W4g+WdkOagh+i9rOaNouS4uue7mOWItuWdkOagh1xuICAgKiBAcGFyYW0ge251bWJlcn0gY2FudmFzWCDnlLvluIMgeCDlnZDmoIdcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNhbnZhc1kg55S75biDIHkg5Z2Q5qCHXG4gICAqIEByZXR1cm4ge29iamVjdH0g57uY5Yi25Z2Q5qCHXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0UG9pbnRCeUNhbnZhcyA9IGZ1bmN0aW9uIChjYW52YXNYLCBjYW52YXNZKSB7XG4gICAgdmFyIHZpZXdDb250cm9sbGVyID0gdGhpcy5nZXQoJ3ZpZXdDb250cm9sbGVyJyk7XG4gICAgcmV0dXJuIHZpZXdDb250cm9sbGVyLmdldFBvaW50QnlDYW52YXMoY2FudmFzWCwgY2FudmFzWSk7XG4gIH07XG4gIC8qKlxuICAgKiDlsIbnu5jliLblnZDmoIfovazmjaLkuLrnlLvluIPlnZDmoIdcbiAgICogQHBhcmFtIHtudW1iZXJ9IHgg57uY5Yi25Z2Q5qCHIHhcbiAgICogQHBhcmFtIHtudW1iZXJ9IHkg57uY5Yi25Z2Q5qCHIHlcbiAgICogQHJldHVybiB7b2JqZWN0fSDnlLvluIPlnZDmoIdcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXRDYW52YXNCeVBvaW50ID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICB2YXIgdmlld0NvbnRyb2xsZXIgPSB0aGlzLmdldCgndmlld0NvbnRyb2xsZXInKTtcbiAgICByZXR1cm4gdmlld0NvbnRyb2xsZXIuZ2V0Q2FudmFzQnlQb2ludCh4LCB5KTtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPluWbvuWGheWuueeahOS4reW/g+e7mOWItuWdkOagh1xuICAgKiBAcmV0dXJuIHtvYmplY3R9IOS4reW/g+e7mOWItuWdkOagh1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldEdyYXBoQ2VudGVyUG9pbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGJib3ggPSB0aGlzLmdldCgnZ3JvdXAnKS5nZXRDYW52YXNCQm94KCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IChiYm94Lm1pblggKyBiYm94Lm1heFgpIC8gMixcbiAgICAgIHk6IChiYm94Lm1pblkgKyBiYm94Lm1heFkpIC8gMlxuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5bop4blj6PkuK3lv4Pnu5jliLblnZDmoIdcbiAgICogQHJldHVybiB7b2JqZWN0fSDop4blj6PkuK3lv4Pnu5jliLblnZDmoIdcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXRWaWV3UG9ydENlbnRlclBvaW50ID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldFBvaW50QnlDYW52YXModGhpcy5nZXQoJ3dpZHRoJykgLyAyLCB0aGlzLmdldCgnaGVpZ2h0JykgLyAyKTtcbiAgfTtcbiAgLyoqXG4gICAqIOaYvuekuuWFg+e0oFxuICAgKiBAcGFyYW0ge0l0ZW19IGl0ZW0g5oyH5a6a5YWD57SgXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc3RhY2sg5pys5qyh5pON5L2c5piv5ZCm5YWl5qCI77yM6buY6K6k5Li6IHRydWVcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5zaG93SXRlbSA9IGZ1bmN0aW9uIChpdGVtLCBzdGFjaykge1xuICAgIGlmIChzdGFjayA9PT0gdm9pZCAwKSB7XG4gICAgICBzdGFjayA9IHRydWU7XG4gICAgfVxuXG4gICAgdmFyIGl0ZW1Db250cm9sbGVyID0gdGhpcy5nZXQoJ2l0ZW1Db250cm9sbGVyJyk7XG4gICAgdmFyIG9iamVjdCA9IGl0ZW1Db250cm9sbGVyLmNoYW5nZUl0ZW1WaXNpYmlsaXR5KGl0ZW0sIHRydWUpO1xuXG4gICAgaWYgKHN0YWNrICYmIHRoaXMuZ2V0KCdlbmFibGVkU3RhY2snKSkge1xuICAgICAgdmFyIGlkID0gb2JqZWN0LmdldElEKCk7XG4gICAgICB2YXIgdHlwZSA9IG9iamVjdC5nZXRUeXBlKCk7XG4gICAgICB2YXIgYmVmb3JlID0ge307XG4gICAgICB2YXIgYWZ0ZXIgPSB7fTtcblxuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgJ25vZGUnOlxuICAgICAgICAgIGJlZm9yZS5ub2RlcyA9IFt7XG4gICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICB2aXNpYmxlOiBmYWxzZVxuICAgICAgICAgIH1dO1xuICAgICAgICAgIGFmdGVyLm5vZGVzID0gW3tcbiAgICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICAgIHZpc2libGU6IHRydWVcbiAgICAgICAgICB9XTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdlZGdlJzpcbiAgICAgICAgICBiZWZvcmUubm9kZXMgPSBbe1xuICAgICAgICAgICAgaWQ6IGlkLFxuICAgICAgICAgICAgdmlzaWJsZTogZmFsc2VcbiAgICAgICAgICB9XTtcbiAgICAgICAgICBhZnRlci5lZGdlcyA9IFt7XG4gICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICB2aXNpYmxlOiB0cnVlXG4gICAgICAgICAgfV07XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnY29tYm8nOlxuICAgICAgICAgIGJlZm9yZS5ub2RlcyA9IFt7XG4gICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICB2aXNpYmxlOiBmYWxzZVxuICAgICAgICAgIH1dO1xuICAgICAgICAgIGFmdGVyLmNvbWJvcyA9IFt7XG4gICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICB2aXNpYmxlOiB0cnVlXG4gICAgICAgICAgfV07XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgdGhpcy5wdXNoU3RhY2soJ3Zpc2libGUnLCB7XG4gICAgICAgIGJlZm9yZTogYmVmb3JlLFxuICAgICAgICBhZnRlcjogYWZ0ZXJcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOmakOiXj+WFg+e0oFxuICAgKiBAcGFyYW0ge0l0ZW19IGl0ZW0g5oyH5a6a5YWD57SgXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc3RhY2sg5pys5qyh5pON5L2c5piv5ZCm5YWl5qCI77yM6buY6K6k5Li6IHRydWVcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5oaWRlSXRlbSA9IGZ1bmN0aW9uIChpdGVtLCBzdGFjaykge1xuICAgIGlmIChzdGFjayA9PT0gdm9pZCAwKSB7XG4gICAgICBzdGFjayA9IHRydWU7XG4gICAgfVxuXG4gICAgdmFyIGl0ZW1Db250cm9sbGVyID0gdGhpcy5nZXQoJ2l0ZW1Db250cm9sbGVyJyk7XG4gICAgdmFyIG9iamVjdCA9IGl0ZW1Db250cm9sbGVyLmNoYW5nZUl0ZW1WaXNpYmlsaXR5KGl0ZW0sIGZhbHNlKTtcblxuICAgIGlmIChzdGFjayAmJiB0aGlzLmdldCgnZW5hYmxlZFN0YWNrJykpIHtcbiAgICAgIHZhciBpZCA9IG9iamVjdC5nZXRJRCgpO1xuICAgICAgdmFyIHR5cGUgPSBvYmplY3QuZ2V0VHlwZSgpO1xuICAgICAgdmFyIGJlZm9yZSA9IHt9O1xuICAgICAgdmFyIGFmdGVyID0ge307XG5cbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlICdub2RlJzpcbiAgICAgICAgICBiZWZvcmUubm9kZXMgPSBbe1xuICAgICAgICAgICAgaWQ6IGlkLFxuICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZVxuICAgICAgICAgIH1dO1xuICAgICAgICAgIGFmdGVyLm5vZGVzID0gW3tcbiAgICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICAgIHZpc2libGU6IGZhbHNlXG4gICAgICAgICAgfV07XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZWRnZSc6XG4gICAgICAgICAgYmVmb3JlLm5vZGVzID0gW3tcbiAgICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICAgIHZpc2libGU6IHRydWVcbiAgICAgICAgICB9XTtcbiAgICAgICAgICBhZnRlci5lZGdlcyA9IFt7XG4gICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICB2aXNpYmxlOiBmYWxzZVxuICAgICAgICAgIH1dO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2NvbWJvJzpcbiAgICAgICAgICBiZWZvcmUubm9kZXMgPSBbe1xuICAgICAgICAgICAgaWQ6IGlkLFxuICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZVxuICAgICAgICAgIH1dO1xuICAgICAgICAgIGFmdGVyLmNvbWJvcyA9IFt7XG4gICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICB2aXNpYmxlOiBmYWxzZVxuICAgICAgICAgIH1dO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucHVzaFN0YWNrKCd2aXNpYmxlJywge1xuICAgICAgICBiZWZvcmU6IGJlZm9yZSxcbiAgICAgICAgYWZ0ZXI6IGFmdGVyXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDliLfmlrDlhYPntKBcbiAgICogQHBhcmFtIHtzdHJpbmd8b2JqZWN0fSBpdGVtIOWFg+e0oGlk5oiW5YWD57Sg5a6e5L6LXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUucmVmcmVzaEl0ZW0gPSBmdW5jdGlvbiAoaXRlbSkge1xuICAgIHZhciBpdGVtQ29udHJvbGxlciA9IHRoaXMuZ2V0KCdpdGVtQ29udHJvbGxlcicpO1xuICAgIGl0ZW1Db250cm9sbGVyLnJlZnJlc2hJdGVtKGl0ZW0pO1xuICB9O1xuICAvKipcbiAgICog6K6+572u5piv5ZCm5Zyo5pu05pawL+WIt+aWsOWQjuiHquWKqOmHjee7mFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGF1dG8g6Ieq5Yqo6YeN57uYXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuc2V0QXV0b1BhaW50ID0gZnVuY3Rpb24gKGF1dG8pIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgc2VsZi5zZXQoJ2F1dG9QYWludCcsIGF1dG8pO1xuICAgIHZhciBjYW52YXMgPSBzZWxmLmdldCgnY2FudmFzJyk7XG4gICAgY2FudmFzLnNldCgnYXV0b0RyYXcnLCBhdXRvKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWIoOmZpOWFg+e0oFxuICAgKiBAcGFyYW0ge0l0ZW19IGl0ZW0g5YWD57SgaWTmiJblhYPntKDlrp7kvotcbiAgICogQHBhcmFtIHtib29sZWFufSBzdGFjayDmnKzmrKHmk43kvZzmmK/lkKblhaXmoIjvvIzpu5jorqTkuLogdHJ1ZVxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIChpdGVtLCBzdGFjaykge1xuICAgIGlmIChzdGFjayA9PT0gdm9pZCAwKSB7XG4gICAgICBzdGFjayA9IHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5yZW1vdmVJdGVtKGl0ZW0sIHN0YWNrKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWIoOmZpOWFg+e0oFxuICAgKiBAcGFyYW0ge0l0ZW19IGl0ZW0g5YWD57SgaWTmiJblhYPntKDlrp7kvotcbiAgICogQHBhcmFtIHtib29sZWFufSBzdGFjayDmnKzmrKHmk43kvZzmmK/lkKblhaXmoIjvvIzpu5jorqTkuLogdHJ1ZVxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnJlbW92ZUl0ZW0gPSBmdW5jdGlvbiAoaXRlbSwgc3RhY2spIHtcbiAgICBpZiAoc3RhY2sgPT09IHZvaWQgMCkge1xuICAgICAgc3RhY2sgPSB0cnVlO1xuICAgIH1cblxuICAgIHZhciBub2RlSXRlbSA9IGl0ZW07XG4gICAgaWYgKGlzU3RyaW5nKGl0ZW0pKSBub2RlSXRlbSA9IHRoaXMuZmluZEJ5SWQoaXRlbSk7XG5cbiAgICBpZiAoIW5vZGVJdGVtICYmIGlzU3RyaW5nKGl0ZW0pKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1RoZSBpdGVtIHRvIGJlIHJlbW92ZWQgZG9lcyBub3QgZXhpc3QhJyk7XG4gICAgfSBlbHNlIGlmIChub2RlSXRlbSkge1xuICAgICAgdmFyIHR5cGUgPSAnJztcbiAgICAgIGlmIChub2RlSXRlbS5nZXRUeXBlKSB0eXBlID0gbm9kZUl0ZW0uZ2V0VHlwZSgpOyAvLyDlsIbliKDpmaTnmoTlhYPntKDlhaXmoIhcblxuICAgICAgaWYgKHN0YWNrICYmIHRoaXMuZ2V0KCdlbmFibGVkU3RhY2snKSkge1xuICAgICAgICB2YXIgZGVsZXRlZE1vZGVsID0gX19hc3NpZ24oX19hc3NpZ24oe30sIG5vZGVJdGVtLmdldE1vZGVsKCkpLCB7XG4gICAgICAgICAgaXRlbVR5cGU6IHR5cGVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdmFyIGJlZm9yZSA9IHt9O1xuXG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgIGNhc2UgJ25vZGUnOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBiZWZvcmUubm9kZXMgPSBbZGVsZXRlZE1vZGVsXTtcbiAgICAgICAgICAgICAgYmVmb3JlLmVkZ2VzID0gW107XG4gICAgICAgICAgICAgIHZhciBlZGdlcyA9IG5vZGVJdGVtLmdldEVkZ2VzKCk7XG5cbiAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IGVkZ2VzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgYmVmb3JlLmVkZ2VzLnB1c2goX19hc3NpZ24oX19hc3NpZ24oe30sIGVkZ2VzW2ldLmdldE1vZGVsKCkpLCB7XG4gICAgICAgICAgICAgICAgICBpdGVtVHlwZTogJ2VkZ2UnXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdlZGdlJzpcbiAgICAgICAgICAgIGJlZm9yZS5lZGdlcyA9IFtkZWxldGVkTW9kZWxdO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdjb21ibyc6XG4gICAgICAgICAgICBiZWZvcmUuY29tYm9zID0gW2RlbGV0ZWRNb2RlbF07XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHVzaFN0YWNrKCdkZWxldGUnLCB7XG4gICAgICAgICAgYmVmb3JlOiBiZWZvcmUsXG4gICAgICAgICAgYWZ0ZXI6IHt9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZSA9PT0gJ25vZGUnKSB7XG4gICAgICAgIHZhciBtb2RlbCA9IG5vZGVJdGVtLmdldE1vZGVsKCk7IC8vIOWmguaenOWIoOmZpOeahOaYr+iKgueCue+8jOS4lOivpeiKgueCueWtmOWcqOS6juafkOS4qiBDb21ibyDkuK3vvIzliJnpnIDopoHlhYjlsIYgbm9kZSDku44gY29tYm8g5Lit56e76Zmk77yM5ZCm5YiZ5Yig6Zmk6IqC54K55ZCO77yM5pON5L2cIGNvbWJvIOS8muWHuumUmVxuXG4gICAgICAgIGlmIChtb2RlbC5jb21ib0lkKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVDb21ib1RyZWUobm9kZUl0ZW0sIHVuZGVmaW5lZCwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciBpdGVtQ29udHJvbGxlciA9IHRoaXMuZ2V0KCdpdGVtQ29udHJvbGxlcicpO1xuICAgICAgaXRlbUNvbnRyb2xsZXIucmVtb3ZlSXRlbShub2RlSXRlbSk7XG5cbiAgICAgIGlmICh0eXBlID09PSAnY29tYm8nKSB7XG4gICAgICAgIHZhciBuZXdDb21ib1RyZWVzID0gcmVjb25zdHJ1Y3RUcmVlKHRoaXMuZ2V0KCdjb21ib1RyZWVzJykpO1xuICAgICAgICB0aGlzLnNldCgnY29tYm9UcmVlcycsIG5ld0NvbWJvVHJlZXMpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOaWsOWinuWFg+e0oFxuICAgKiBAcGFyYW0ge0lURU1fVFlQRX0gdHlwZSDlhYPntKDnsbvlnosobm9kZSB8IGVkZ2UpXG4gICAqIEBwYXJhbSB7TW9kZWxDb25maWd9IG1vZGVsIOWFg+e0oOaVsOaNruaooeWei1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHN0YWNrIOacrOasoeaTjeS9nOaYr+WQpuWFpeagiO+8jOm7mOiupOS4uiB0cnVlXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc29ydENvbWJvIOacrOasoeaTjeS9nOaYr+WQpumcgOimgeabtOaWsCBjb21ibyDlsYLnuqfpobrluo/vvIzlhoXpg6jlj4LmlbDvvIznlKjmiLflnKjlpJbpg6jkvb/nlKggYWRkSXRlbSDml7blp4vnu4jml7bpnIDopoHmm7TmlrBcbiAgICogQHJldHVybiB7SXRlbX0g5YWD57Sg5a6e5L6LXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuYWRkSXRlbSA9IGZ1bmN0aW9uICh0eXBlLCBtb2RlbCwgc3RhY2ssIHNvcnRDb21ibykge1xuICAgIGlmIChzdGFjayA9PT0gdm9pZCAwKSB7XG4gICAgICBzdGFjayA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHNvcnRDb21ibyA9PT0gdm9pZCAwKSB7XG4gICAgICBzb3J0Q29tYm8gPSB0cnVlO1xuICAgIH1cblxuICAgIHZhciBjdXJyZW50Q29tYm9Tb3J0ZWQgPSB0aGlzLmdldCgnY29tYm9Tb3J0ZWQnKTtcbiAgICB0aGlzLnNldCgnY29tYm9Tb3J0ZWQnLCBjdXJyZW50Q29tYm9Tb3J0ZWQgJiYgIXNvcnRDb21ibyk7XG4gICAgdmFyIGl0ZW1Db250cm9sbGVyID0gdGhpcy5nZXQoJ2l0ZW1Db250cm9sbGVyJyk7IC8vIOa3u+WKoOiKgueCueOAgei+ueaIlmNvbWJv5LmL5YmN77yM5YWI6aqM6K+B5pWw5o2u5piv5ZCm56ym5ZCI6KeE6IyDXG5cbiAgICBpZiAoIXNpbmdsZURhdGFWYWxpZGF0aW9uKHR5cGUsIG1vZGVsKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChtb2RlbC5pZCAmJiB0aGlzLmZpbmRCeUlkKG1vZGVsLmlkKSkge1xuICAgICAgY29uc29sZS53YXJuKFwiVGhpcyBpdGVtIGV4aXN0cyBhbHJlYWR5LiBCZSBzdXJlIHRoZSBpZCAlY1wiICsgbW9kZWwuaWQgKyBcIiVjIGlzIHVuaXF1ZS5cIiwgJ2ZvbnQtc2l6ZTogMjBweDsgY29sb3I6IHJlZDsnLCAnJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGl0ZW07XG4gICAgdmFyIGNvbWJvVHJlZXMgPSB0aGlzLmdldCgnY29tYm9UcmVlcycpO1xuICAgIGlmICghY29tYm9UcmVlcykgY29tYm9UcmVlcyA9IFtdO1xuXG4gICAgaWYgKHR5cGUgPT09ICdjb21ibycpIHtcbiAgICAgIHZhciBpdGVtTWFwXzEgPSB0aGlzLmdldCgnaXRlbU1hcCcpO1xuICAgICAgdmFyIGZvdW5kUGFyZW50XzEgPSBmYWxzZTtcbiAgICAgIGNvbWJvVHJlZXMuZm9yRWFjaChmdW5jdGlvbiAoY3RyZWUpIHtcbiAgICAgICAgaWYgKGZvdW5kUGFyZW50XzEpIHJldHVybjsgLy8gdGVybWluYXRlIHRoZSBmb3JFYWNoIGFmdGVyIHRoZSB0cmVlIGNvbnRhaW5pbmcgdGhlIGl0ZW0gaXMgZG9uZVxuXG4gICAgICAgIHRyYXZlcnNlVHJlZVVwKGN0cmVlLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgICAvLyBmaW5kIHRoZSBwYXJlbnRcbiAgICAgICAgICBpZiAobW9kZWwucGFyZW50SWQgPT09IGNoaWxkLmlkKSB7XG4gICAgICAgICAgICBmb3VuZFBhcmVudF8xID0gdHJ1ZTtcblxuICAgICAgICAgICAgdmFyIG5ld0NvbWJvID0gX19hc3NpZ24oe1xuICAgICAgICAgICAgICBpZDogbW9kZWwuaWQsXG4gICAgICAgICAgICAgIGRlcHRoOiBjaGlsZC5kZXB0aCArIDJcbiAgICAgICAgICAgIH0sIG1vZGVsKTtcblxuICAgICAgICAgICAgaWYgKGNoaWxkLmNoaWxkcmVuKSBjaGlsZC5jaGlsZHJlbi5wdXNoKG5ld0NvbWJvKTtlbHNlIGNoaWxkLmNoaWxkcmVuID0gW25ld0NvbWJvXTtcbiAgICAgICAgICAgIG1vZGVsLmRlcHRoID0gbmV3Q29tYm8uZGVwdGg7XG4gICAgICAgICAgICBpdGVtID0gaXRlbUNvbnRyb2xsZXIuYWRkSXRlbSh0eXBlLCBtb2RlbCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIGNoaWxkSXRlbSA9IGl0ZW1NYXBfMVtjaGlsZC5pZF07IC8vIGFmdGVyIHRoZSBwYXJlbnQgaXMgZm91bmQsIHVwZGF0ZSBhbGwgdGhlIGFuY2VzdG9yc1xuXG4gICAgICAgICAgaWYgKGZvdW5kUGFyZW50XzEgJiYgY2hpbGRJdGVtICYmIGNoaWxkSXRlbS5nZXRUeXBlICYmIGNoaWxkSXRlbS5nZXRUeXBlKCkgPT09ICdjb21ibycpIHtcbiAgICAgICAgICAgIGl0ZW1Db250cm9sbGVyLnVwZGF0ZUNvbWJvKGNoaWxkSXRlbSwgY2hpbGQuY2hpbGRyZW4pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgIH0pOyAvLyBpZiB0aGUgcGFyZW50IGlzIG5vdCBmb3VuZCwgYWRkIGl0IHRvIHRoZSByb290XG5cbiAgICAgIGlmICghZm91bmRQYXJlbnRfMSkge1xuICAgICAgICB2YXIgbmV3Q29tYm8gPSBfX2Fzc2lnbih7XG4gICAgICAgICAgaWQ6IG1vZGVsLmlkLFxuICAgICAgICAgIGRlcHRoOiAwXG4gICAgICAgIH0sIG1vZGVsKTtcblxuICAgICAgICBtb2RlbC5kZXB0aCA9IG5ld0NvbWJvLmRlcHRoO1xuICAgICAgICBjb21ib1RyZWVzLnB1c2gobmV3Q29tYm8pO1xuICAgICAgICBpdGVtID0gaXRlbUNvbnRyb2xsZXIuYWRkSXRlbSh0eXBlLCBtb2RlbCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2V0KCdjb21ib1RyZWVzJywgY29tYm9UcmVlcyk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnbm9kZScgJiYgaXNTdHJpbmcobW9kZWwuY29tYm9JZCkgJiYgY29tYm9UcmVlcykge1xuICAgICAgdmFyIHBhcmVudENvbWJvID0gdGhpcy5maW5kQnlJZChtb2RlbC5jb21ib0lkKTtcblxuICAgICAgaWYgKHBhcmVudENvbWJvICYmIHBhcmVudENvbWJvLmdldFR5cGUgJiYgcGFyZW50Q29tYm8uZ2V0VHlwZSgpICE9PSAnY29tYm8nKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcIidcIiArIG1vZGVsLmNvbWJvSWQgKyBcIicgaXMgbm90IGEgaWQgb2YgYSBjb21ibyBpbiB0aGUgZ3JhcGgsIHRoZSBub2RlIHdpbGwgYmUgYWRkZWQgd2l0aG91dCBjb21iby5cIik7XG4gICAgICB9XG5cbiAgICAgIGl0ZW0gPSBpdGVtQ29udHJvbGxlci5hZGRJdGVtKHR5cGUsIG1vZGVsKTtcbiAgICAgIHZhciBpdGVtTWFwXzIgPSB0aGlzLmdldCgnaXRlbU1hcCcpO1xuICAgICAgdmFyIGZvdW5kUGFyZW50XzIgPSBmYWxzZSxcbiAgICAgICAgICBmb3VuZE5vZGVfMSA9IGZhbHNlO1xuICAgICAgKGNvbWJvVHJlZXMgfHwgW10pLmZvckVhY2goZnVuY3Rpb24gKGN0cmVlKSB7XG4gICAgICAgIGlmIChmb3VuZE5vZGVfMSB8fCBmb3VuZFBhcmVudF8yKSByZXR1cm47IC8vIHRlcm1pbmF0ZSB0aGUgZm9yRWFjaFxuXG4gICAgICAgIHRyYXZlcnNlVHJlZVVwKGN0cmVlLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgICBpZiAoY2hpbGQuaWQgPT09IG1vZGVsLmlkKSB7XG4gICAgICAgICAgICAvLyBpZiB0aGUgaXRlbSBleGlzdHMgaW4gdGhlIHRyZWUgYWxyZWFkeSwgdGVybWluYXRlXG4gICAgICAgICAgICBmb3VuZE5vZGVfMSA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKG1vZGVsLmNvbWJvSWQgPT09IGNoaWxkLmlkICYmICFmb3VuZE5vZGVfMSkge1xuICAgICAgICAgICAgLy8gZm91bmQgdGhlIHBhcmVudCwgYWRkIHRoZSBpdGVtIHRvIHRoZSBjaGlsZHJlbiBvZiBpdHMgcGFyZW50IGluIHRoZSB0cmVlXG4gICAgICAgICAgICBmb3VuZFBhcmVudF8yID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhciBjbG9uZU5vZGUgPSBjbG9uZShtb2RlbCk7XG4gICAgICAgICAgICBjbG9uZU5vZGUuaXRlbVR5cGUgPSAnbm9kZSc7XG4gICAgICAgICAgICBpZiAoY2hpbGQuY2hpbGRyZW4pIGNoaWxkLmNoaWxkcmVuLnB1c2goY2xvbmVOb2RlKTtlbHNlIGNoaWxkLmNoaWxkcmVuID0gW2Nsb25lTm9kZV07XG4gICAgICAgICAgICBjbG9uZU5vZGUuZGVwdGggPSBjaGlsZC5kZXB0aCArIDE7XG4gICAgICAgICAgfSAvLyB1cGRhdGUgdGhlIHNpemUgb2YgYWxsIHRoZSBhbmNlc3RvcnNcblxuXG4gICAgICAgICAgaWYgKGZvdW5kUGFyZW50XzIgJiYgaXRlbU1hcF8yW2NoaWxkLmlkXS5nZXRUeXBlICYmIGl0ZW1NYXBfMltjaGlsZC5pZF0uZ2V0VHlwZSgpID09PSAnY29tYm8nKSB7XG4gICAgICAgICAgICBpdGVtQ29udHJvbGxlci51cGRhdGVDb21ibyhpdGVtTWFwXzJbY2hpbGQuaWRdLCBjaGlsZC5jaGlsZHJlbik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZW0gPSBpdGVtQ29udHJvbGxlci5hZGRJdGVtKHR5cGUsIG1vZGVsKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gJ25vZGUnICYmIG1vZGVsLmNvbWJvSWQgfHwgdHlwZSA9PT0gJ2NvbWJvJyAmJiBtb2RlbC5wYXJlbnRJZCkge1xuICAgICAgLy8gYWRkIHRoZSBjb21ibyB0byB0aGUgcGFyZW50J3MgY2hpbGRyZW4gYXJyYXlcbiAgICAgIHZhciBwYXJlbnRDb21ibyA9IHRoaXMuZmluZEJ5SWQobW9kZWwuY29tYm9JZCB8fCBtb2RlbC5wYXJlbnRJZCk7XG4gICAgICBpZiAocGFyZW50Q29tYm8gJiYgcGFyZW50Q29tYm8uZ2V0VHlwZSAmJiBwYXJlbnRDb21iby5nZXRUeXBlKCkgPT09ICdjb21ibycpIHBhcmVudENvbWJvLmFkZENoaWxkKGl0ZW0pO1xuICAgIH1cblxuICAgIHZhciBjb21ib3MgPSB0aGlzLmdldCgnY29tYm9zJyk7XG5cbiAgICBpZiAoY29tYm9zICYmIGNvbWJvcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNvcnRDb21ib3MoKTtcbiAgICB9XG5cbiAgICB0aGlzLmF1dG9QYWludCgpO1xuXG4gICAgaWYgKHN0YWNrICYmIHRoaXMuZ2V0KCdlbmFibGVkU3RhY2snKSkge1xuICAgICAgdmFyIGFkZGVkTW9kZWwgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgaXRlbS5nZXRNb2RlbCgpKSwge1xuICAgICAgICBpdGVtVHlwZTogdHlwZVxuICAgICAgfSk7XG5cbiAgICAgIHZhciBhZnRlciA9IHt9O1xuXG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSAnbm9kZSc6XG4gICAgICAgICAgYWZ0ZXIubm9kZXMgPSBbYWRkZWRNb2RlbF07XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZWRnZSc6XG4gICAgICAgICAgYWZ0ZXIuZWRnZXMgPSBbYWRkZWRNb2RlbF07XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnY29tYm8nOlxuICAgICAgICAgIGFmdGVyLmNvbWJvcyA9IFthZGRlZE1vZGVsXTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnB1c2hTdGFjaygnYWRkJywge1xuICAgICAgICBiZWZvcmU6IHt9LFxuICAgICAgICBhZnRlcjogYWZ0ZXJcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBpdGVtO1xuICB9O1xuICAvKipcbiAgICog5paw5aKe5YWD57SgXG4gICAqIEBwYXJhbSB7SVRFTV9UWVBFfSB0eXBlIOWFg+e0oOexu+Weiyhub2RlIHwgZWRnZSlcbiAgICogQHBhcmFtIHtNb2RlbENvbmZpZ30gbW9kZWwg5YWD57Sg5pWw5o2u5qih5Z6LXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc3RhY2sg5pys5qyh5pON5L2c5piv5ZCm5YWl5qCI77yM6buY6K6k5Li6IHRydWVcbiAgICogQHJldHVybiB7SXRlbX0g5YWD57Sg5a6e5L6LXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKHR5cGUsIG1vZGVsLCBzdGFjaywgc29ydENvbWJvKSB7XG4gICAgaWYgKHN0YWNrID09PSB2b2lkIDApIHtcbiAgICAgIHN0YWNrID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoc29ydENvbWJvID09PSB2b2lkIDApIHtcbiAgICAgIHNvcnRDb21ibyA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYWRkSXRlbSh0eXBlLCBtb2RlbCwgc3RhY2ssIHNvcnRDb21ibyk7XG4gIH07XG4gIC8qKlxuICAgKiDmm7TmlrDlhYPntKBcbiAgICogQHBhcmFtIHtJdGVtfSBpdGVtIOWFg+e0oGlk5oiW5YWD57Sg5a6e5L6LXG4gICAqIEBwYXJhbSB7UGFydGlhbDxOb2RlQ29uZmlnPiB8IEVkZ2VDb25maWd9IGNmZyDpnIDopoHmm7TmlrDnmoTmlbDmja5cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS51cGRhdGVJdGVtID0gZnVuY3Rpb24gKGl0ZW0sIGNmZywgc3RhY2spIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgaWYgKHN0YWNrID09PSB2b2lkIDApIHtcbiAgICAgIHN0YWNrID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB2YXIgaXRlbUNvbnRyb2xsZXIgPSB0aGlzLmdldCgnaXRlbUNvbnRyb2xsZXInKTtcbiAgICB2YXIgY3VycmVudEl0ZW07XG5cbiAgICBpZiAoaXNTdHJpbmcoaXRlbSkpIHtcbiAgICAgIGN1cnJlbnRJdGVtID0gdGhpcy5maW5kQnlJZChpdGVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VycmVudEl0ZW0gPSBpdGVtO1xuICAgIH1cblxuICAgIHZhciBVbnVwZGF0ZU1vZGVsID0gY2xvbmUoY3VycmVudEl0ZW0uZ2V0TW9kZWwoKSk7XG4gICAgdmFyIHR5cGUgPSAnJztcbiAgICBpZiAoY3VycmVudEl0ZW0uZ2V0VHlwZSkgdHlwZSA9IGN1cnJlbnRJdGVtLmdldFR5cGUoKTtcblxuICAgIHZhciBzdGF0ZXMgPSBfX3NwcmVhZEFycmF5KFtdLCBjdXJyZW50SXRlbS5nZXRTdGF0ZXMoKSwgdHJ1ZSk7XG5cbiAgICBpZiAodHlwZSA9PT0gJ2NvbWJvJykge1xuICAgICAgZWFjaChzdGF0ZXMsIGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgICByZXR1cm4gX3RoaXMuc2V0SXRlbVN0YXRlKGN1cnJlbnRJdGVtLCBzdGF0ZSwgZmFsc2UpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaXRlbUNvbnRyb2xsZXIudXBkYXRlSXRlbShjdXJyZW50SXRlbSwgY2ZnKTtcblxuICAgIGlmICh0eXBlID09PSAnY29tYm8nKSB7XG4gICAgICBlYWNoKHN0YXRlcywgZnVuY3Rpb24gKHN0YXRlKSB7XG4gICAgICAgIHJldHVybiBfdGhpcy5zZXRJdGVtU3RhdGUoY3VycmVudEl0ZW0sIHN0YXRlLCB0cnVlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChzdGFjayAmJiB0aGlzLmdldCgnZW5hYmxlZFN0YWNrJykpIHtcbiAgICAgIHZhciBiZWZvcmUgPSB7XG4gICAgICAgIG5vZGVzOiBbXSxcbiAgICAgICAgZWRnZXM6IFtdLFxuICAgICAgICBjb21ib3M6IFtdXG4gICAgICB9O1xuICAgICAgdmFyIGFmdGVyID0ge1xuICAgICAgICBub2RlczogW10sXG4gICAgICAgIGVkZ2VzOiBbXSxcbiAgICAgICAgY29tYm9zOiBbXVxuICAgICAgfTtcblxuICAgICAgdmFyIGFmdGVyTW9kZWwgPSBfX2Fzc2lnbih7XG4gICAgICAgIGlkOiBVbnVwZGF0ZU1vZGVsLmlkXG4gICAgICB9LCBjZmcpO1xuXG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSAnbm9kZSc6XG4gICAgICAgICAgYmVmb3JlLm5vZGVzLnB1c2goVW51cGRhdGVNb2RlbCk7XG4gICAgICAgICAgYWZ0ZXIubm9kZXMucHVzaChhZnRlck1vZGVsKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdlZGdlJzpcbiAgICAgICAgICBiZWZvcmUuZWRnZXMucHVzaChVbnVwZGF0ZU1vZGVsKTtcbiAgICAgICAgICBhZnRlci5lZGdlcy5wdXNoKGFmdGVyTW9kZWwpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2NvbWJvJzpcbiAgICAgICAgICBiZWZvcmUuY29tYm9zLnB1c2goVW51cGRhdGVNb2RlbCk7XG4gICAgICAgICAgYWZ0ZXIuY29tYm9zLnB1c2goYWZ0ZXJNb2RlbCk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGUgPT09ICdub2RlJykge1xuICAgICAgICBiZWZvcmUubm9kZXMucHVzaChVbnVwZGF0ZU1vZGVsKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5wdXNoU3RhY2soJ3VwZGF0ZScsIHtcbiAgICAgICAgYmVmb3JlOiBiZWZvcmUsXG4gICAgICAgIGFmdGVyOiBhZnRlclxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog5pu05paw5YWD57SgXG4gICAqIEBwYXJhbSB7SXRlbX0gaXRlbSDlhYPntKBpZOaIluWFg+e0oOWunuS+i1xuICAgKiBAcGFyYW0ge1BhcnRpYWw8Tm9kZUNvbmZpZz4gfCBFZGdlQ29uZmlnfSBjZmcg6ZyA6KaB5pu05paw55qE5pWw5o2uXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc3RhY2sg5pys5qyh5pON5L2c5piv5ZCm5YWl5qCI77yM6buY6K6k5Li6IHRydWVcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoaXRlbSwgY2ZnLCBzdGFjaykge1xuICAgIGlmIChzdGFjayA9PT0gdm9pZCAwKSB7XG4gICAgICBzdGFjayA9IHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVJdGVtKGl0ZW0sIGNmZywgc3RhY2spO1xuICB9O1xuICAvKipcbiAgICog6K6+572u5YWD57Sg54q25oCBXG4gICAqIEBwYXJhbSB7SXRlbX0gaXRlbSDlhYPntKBpZOaIluWFg+e0oOWunuS+i1xuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RhdGUg54q25oCB5ZCN56ewXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgYm9vbGVhbn0gdmFsdWUg5piv5ZCm5ZCv55So54q25oCBIOaIliDnirbmgIHlgLxcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5zZXRJdGVtU3RhdGUgPSBmdW5jdGlvbiAoaXRlbSwgc3RhdGUsIHZhbHVlKSB7XG4gICAgaWYgKGlzU3RyaW5nKGl0ZW0pKSB7XG4gICAgICBpdGVtID0gdGhpcy5maW5kQnlJZChpdGVtKTtcbiAgICB9XG5cbiAgICB2YXIgaXRlbUNvbnRyb2xsZXIgPSB0aGlzLmdldCgnaXRlbUNvbnRyb2xsZXInKTtcbiAgICBpdGVtQ29udHJvbGxlci5zZXRJdGVtU3RhdGUoaXRlbSwgc3RhdGUsIHZhbHVlKTtcbiAgICB2YXIgc3RhdGVDb250cm9sbGVyID0gdGhpcy5nZXQoJ3N0YXRlQ29udHJvbGxlcicpO1xuXG4gICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgc3RhdGVDb250cm9sbGVyLnVwZGF0ZVN0YXRlKGl0ZW0sIHN0YXRlICsgXCI6XCIgKyB2YWx1ZSwgdHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlQ29udHJvbGxlci51cGRhdGVTdGF0ZShpdGVtLCBzdGF0ZSwgdmFsdWUpO1xuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIOWwhuaMh+WumueKtuaAgeeahOS8mOWFiOe6p+aPkOWNh+S4uuacgOmrmOS8mOWFiOe6p1xuICAgKiBAcGFyYW0ge0l0ZW19IGl0ZW0g5YWD57SgaWTmiJblhYPntKDlrp7kvotcbiAgICogQHBhcmFtIHN0YXRlIOeKtuaAgeWQjeensFxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnByaW9yaXR5U3RhdGUgPSBmdW5jdGlvbiAoaXRlbSwgc3RhdGUpIHtcbiAgICB2YXIgaXRlbUNvbnRyb2xsZXIgPSB0aGlzLmdldCgnaXRlbUNvbnRyb2xsZXInKTtcbiAgICBpdGVtQ29udHJvbGxlci5wcmlvcml0eVN0YXRlKGl0ZW0sIHN0YXRlKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiuvue9ruinhuWbvuWIneWni+WMluaVsOaNrlxuICAgKiBAcGFyYW0ge0dyYXBoRGF0YX0gZGF0YSDliJ3lp4vljJbmlbDmja5cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5kYXRhID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICBkYXRhVmFsaWRhdGlvbihkYXRhKTtcbiAgICB0aGlzLnNldCgnZGF0YScsIGRhdGEpO1xuICB9O1xuICAvKipcbiAgICog5qC55o2uZGF0YeaOpeWPo+eahOaVsOaNrua4suafk+inhuWbvlxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdGhpcy5zZXQoJ2NvbWJvU29ydGVkJywgZmFsc2UpO1xuICAgIHZhciBkYXRhID0gdGhpcy5nZXQoJ2RhdGEnKTtcblxuICAgIGlmICh0aGlzLmdldCgnZW5hYmxlZFN0YWNrJykpIHtcbiAgICAgIC8vIHJlbmRlciDkuYvliY3muIXnqbogcmVkbyDlkowgdW5kbyDmoIhcbiAgICAgIHRoaXMuY2xlYXJTdGFjaygpO1xuICAgIH1cblxuICAgIGlmICghZGF0YSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdkYXRhIG11c3QgYmUgZGVmaW5lZCBmaXJzdCcpO1xuICAgIH1cblxuICAgIHZhciBfYSA9IGRhdGEubm9kZXMsXG4gICAgICAgIG5vZGVzID0gX2EgPT09IHZvaWQgMCA/IFtdIDogX2EsXG4gICAgICAgIF9iID0gZGF0YS5lZGdlcyxcbiAgICAgICAgZWRnZXMgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYixcbiAgICAgICAgX2MgPSBkYXRhLmNvbWJvcyxcbiAgICAgICAgY29tYm9zID0gX2MgPT09IHZvaWQgMCA/IFtdIDogX2M7XG4gICAgdGhpcy5jbGVhcih0cnVlKTtcbiAgICB0aGlzLmVtaXQoJ2JlZm9yZXJlbmRlcicpO1xuICAgIGVhY2gobm9kZXMsIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICBzZWxmLmFkZCgnbm9kZScsIG5vZGUsIGZhbHNlLCBmYWxzZSk7XG4gICAgfSk7IC8vIHByb2Nlc3MgdGhlIGRhdGEgdG8gdHJlZSBzdHJ1Y3R1cmVcblxuICAgIGlmIChjb21ib3MgJiYgY29tYm9zLmxlbmd0aCAhPT0gMCkge1xuICAgICAgdmFyIGNvbWJvVHJlZXMgPSBwbGFpbkNvbWJvc1RvVHJlZXMoY29tYm9zLCBub2Rlcyk7XG4gICAgICB0aGlzLnNldCgnY29tYm9UcmVlcycsIGNvbWJvVHJlZXMpOyAvLyBhZGQgY29tYm9zXG5cbiAgICAgIHNlbGYuYWRkQ29tYm9zKGNvbWJvcyk7XG4gICAgfVxuXG4gICAgZWFjaChlZGdlcywgZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIHNlbGYuYWRkKCdlZGdlJywgZWRnZSwgZmFsc2UsIGZhbHNlKTtcbiAgICB9KTtcbiAgICB2YXIgYW5pbWF0ZSA9IHNlbGYuZ2V0KCdhbmltYXRlJyk7XG5cbiAgICBpZiAoc2VsZi5nZXQoJ2ZpdFZpZXcnKSB8fCBzZWxmLmdldCgnZml0Q2VudGVyJykpIHtcbiAgICAgIHNlbGYuc2V0KCdhbmltYXRlJywgZmFsc2UpO1xuICAgIH0gLy8gbGF5b3V0XG5cblxuICAgIHZhciBsYXlvdXRDb250cm9sbGVyID0gc2VsZi5nZXQoJ2xheW91dENvbnRyb2xsZXInKTtcblxuICAgIGlmIChsYXlvdXRDb250cm9sbGVyKSB7XG4gICAgICBsYXlvdXRDb250cm9sbGVyLmxheW91dChzdWNjZXNzKTtcbiAgICAgIGlmICh0aGlzLmRlc3Ryb3llZCkgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoc2VsZi5nZXQoJ2ZpdFZpZXcnKSkge1xuICAgICAgICBzZWxmLmZpdFZpZXcoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNlbGYuZ2V0KCdmaXRDZW50ZXInKSkge1xuICAgICAgICBzZWxmLmZpdENlbnRlcigpO1xuICAgICAgfVxuXG4gICAgICBzZWxmLmVtaXQoJ2FmdGVycmVuZGVyJyk7XG4gICAgICBzZWxmLnNldCgnYW5pbWF0ZScsIGFuaW1hdGUpO1xuICAgIH0gLy8g5bCG5ZyoIG9uTGF5b3V0RW5kIOS4reiiq+iwg+eUqFxuXG5cbiAgICBmdW5jdGlvbiBzdWNjZXNzKCkge1xuICAgICAgLy8gZml0VmlldyDkuI4gZml0Q2VudGVyIOWFseWtmOaXtu+8jGZpdFZpZXcg5LyY5YWI77yMZml0Q2VudGVyIOS4jeWGjeaJp+ihjFxuICAgICAgaWYgKHNlbGYuZ2V0KCdmaXRWaWV3JykpIHtcbiAgICAgICAgc2VsZi5maXRWaWV3KCk7XG4gICAgICB9IGVsc2UgaWYgKHNlbGYuZ2V0KCdmaXRDZW50ZXInKSkge1xuICAgICAgICBzZWxmLmZpdENlbnRlcigpO1xuICAgICAgfVxuXG4gICAgICBzZWxmLmF1dG9QYWludCgpO1xuICAgICAgc2VsZi5lbWl0KCdhZnRlcnJlbmRlcicpO1xuXG4gICAgICBpZiAoc2VsZi5nZXQoJ2ZpdFZpZXcnKSB8fCBzZWxmLmdldCgnZml0Q2VudGVyJykpIHtcbiAgICAgICAgc2VsZi5zZXQoJ2FuaW1hdGUnLCBhbmltYXRlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZ2V0KCdncm91cEJ5VHlwZXMnKSkge1xuICAgICAgaWYgKGNvbWJvcyAmJiBjb21ib3MubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIHRoaXMuc29ydENvbWJvcygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8g5Li65o+Q5Y2H5oCn6IO977yM6YCJ5oup5pWw6YeP5bCR55qE6L+b6KGM5pON5L2cXG4gICAgICAgIGlmIChkYXRhLm5vZGVzICYmIGRhdGEuZWRnZXMgJiYgZGF0YS5ub2Rlcy5sZW5ndGggPCBkYXRhLmVkZ2VzLmxlbmd0aCkge1xuICAgICAgICAgIHZhciBub2Rlc0FyciA9IHRoaXMuZ2V0Tm9kZXMoKTsgLy8g6YGN5Y6G6IqC54K55a6e5L6L77yM5bCG5omA5pyJ6IqC54K55o+Q5YmN44CCXG5cbiAgICAgICAgICBub2Rlc0Fyci5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgICBub2RlLnRvRnJvbnQoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgZWRnZXNBcnIgPSB0aGlzLmdldEVkZ2VzKCk7IC8vIOmBjeWOhuiKgueCueWunuS+i++8jOWwhuaJgOacieiKgueCueaPkOWJjeOAglxuXG4gICAgICAgICAgZWRnZXNBcnIuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgICAgZWRnZS50b0JhY2soKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmdldCgnZW5hYmxlZFN0YWNrJykpIHtcbiAgICAgIHRoaXMucHVzaFN0YWNrKCdyZW5kZXInKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDmjqXmlLbmlbDmja7ov5vooYzmuLLmn5NcbiAgICogQFBhcmFtIHtPYmplY3R9IGRhdGEg5Yid5aeL5YyW5pWw5o2uXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdGhpcy5kYXRhKGRhdGEpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH07IC8vIOavlOi+g2l0ZW1cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmRpZmZJdGVtcyA9IGZ1bmN0aW9uICh0eXBlLCBpdGVtcywgbW9kZWxzKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBpdGVtO1xuICAgIHZhciBpdGVtTWFwID0gdGhpcy5nZXQoJ2l0ZW1NYXAnKTtcbiAgICBlYWNoKG1vZGVscywgZnVuY3Rpb24gKG1vZGVsKSB7XG4gICAgICBpdGVtID0gaXRlbU1hcFttb2RlbC5pZF07XG5cbiAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgIGlmIChzZWxmLmdldCgnYW5pbWF0ZScpICYmIHR5cGUgPT09IE5PREUpIHtcbiAgICAgICAgICB2YXIgY29udGFpbmVyTWF0cml4ID0gaXRlbS5nZXRDb250YWluZXIoKS5nZXRNYXRyaXgoKTtcbiAgICAgICAgICBpZiAoIWNvbnRhaW5lck1hdHJpeCkgY29udGFpbmVyTWF0cml4ID0gWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuICAgICAgICAgIGl0ZW0uc2V0KCdvcmlnaW5BdHRycycsIHtcbiAgICAgICAgICAgIHg6IGNvbnRhaW5lck1hdHJpeFs2XSxcbiAgICAgICAgICAgIHk6IGNvbnRhaW5lck1hdHJpeFs3XVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgc2VsZi51cGRhdGVJdGVtKGl0ZW0sIG1vZGVsLCBmYWxzZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpdGVtID0gc2VsZi5hZGRJdGVtKHR5cGUsIG1vZGVsLCBmYWxzZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtKSBpdGVtc1t0eXBlICsgXCJzXCJdLnB1c2goaXRlbSk7XG4gICAgfSk7XG4gIH07XG4gIC8qKlxuICAgKiDmm7TmlLnmupDmlbDmja7vvIzmoLnmja7mlrDmlbDmja7ph43mlrDmuLLmn5Pop4blm75cbiAgICogQHBhcmFtIHtHcmFwaERhdGEgfCBUcmVlR3JhcGhEYXRhfSBkYXRhIOa6kOaVsOaNrlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IOaYr+WQpuWFpeagiO+8jOm7mOiupOS4unRydWVcbiAgICogQHJldHVybiB7b2JqZWN0fSB0aGlzXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuY2hhbmdlRGF0YSA9IGZ1bmN0aW9uIChkYXRhLCBzdGFjaykge1xuICAgIGlmIChzdGFjayA9PT0gdm9pZCAwKSB7XG4gICAgICBzdGFjayA9IHRydWU7XG4gICAgfVxuXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgaWYgKCFkYXRhVmFsaWRhdGlvbihkYXRhKSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaWYgKHN0YWNrICYmIHRoaXMuZ2V0KCdlbmFibGVkU3RhY2snKSkge1xuICAgICAgdGhpcy5wdXNoU3RhY2soJ2NoYW5nZWRhdGEnLCB7XG4gICAgICAgIGJlZm9yZTogc2VsZi5zYXZlKCksXG4gICAgICAgIGFmdGVyOiBkYXRhXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnNldCgnY29tYm9Tb3J0ZWQnLCBmYWxzZSk7IC8vIOWIoOmZpCBodWxsc1xuXG4gICAgdGhpcy5yZW1vdmVIdWxscygpOyAvLyDmm7TmlLnmlbDmja7mupDlkI7vvIzlj5bmtojmiYDmnInnirbmgIFcblxuICAgIHRoaXMuZ2V0Tm9kZXMoKS5tYXAoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHJldHVybiBzZWxmLmNsZWFySXRlbVN0YXRlcyhub2RlKTtcbiAgICB9KTtcbiAgICB0aGlzLmdldEVkZ2VzKCkubWFwKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICByZXR1cm4gc2VsZi5jbGVhckl0ZW1TdGF0ZXMoZWRnZSk7XG4gICAgfSk7XG4gICAgdmFyIGNhbnZhcyA9IHRoaXMuZ2V0KCdjYW52YXMnKTtcbiAgICB2YXIgbG9jYWxSZWZyZXNoID0gY2FudmFzLmdldCgnbG9jYWxSZWZyZXNoJyk7XG4gICAgY2FudmFzLnNldCgnbG9jYWxSZWZyZXNoJywgZmFsc2UpO1xuXG4gICAgaWYgKCFzZWxmLmdldCgnZGF0YScpKSB7XG4gICAgICBzZWxmLmRhdGEoZGF0YSk7XG4gICAgICBzZWxmLnJlbmRlcigpO1xuICAgIH1cblxuICAgIHZhciBpdGVtTWFwID0gdGhpcy5nZXQoJ2l0ZW1NYXAnKTtcbiAgICB2YXIgaXRlbXMgPSB7XG4gICAgICBub2RlczogW10sXG4gICAgICBlZGdlczogW11cbiAgICB9O1xuICAgIHZhciBjb21ib3NEYXRhID0gZGF0YS5jb21ib3M7XG5cbiAgICBpZiAoY29tYm9zRGF0YSkge1xuICAgICAgdmFyIGNvbWJvVHJlZXMgPSBwbGFpbkNvbWJvc1RvVHJlZXMoY29tYm9zRGF0YSwgZGF0YS5ub2Rlcyk7XG4gICAgICB0aGlzLnNldCgnY29tYm9UcmVlcycsIGNvbWJvVHJlZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldCgnY29tYm9UcmVlcycsIFtdKTtcbiAgICB9XG5cbiAgICB0aGlzLmRpZmZJdGVtcygnbm9kZScsIGl0ZW1zLCBkYXRhLm5vZGVzKTtcbiAgICBlYWNoKGl0ZW1NYXAsIGZ1bmN0aW9uIChpdGVtLCBpZCkge1xuICAgICAgaXRlbU1hcFtpZF0uZ2V0TW9kZWwoKS5kZXB0aCA9IDA7XG4gICAgICBpZiAoaXRlbS5nZXRUeXBlICYmIGl0ZW0uZ2V0VHlwZSgpID09PSAnZWRnZScpIHJldHVybjtcblxuICAgICAgaWYgKGl0ZW0uZ2V0VHlwZSAmJiBpdGVtLmdldFR5cGUoKSA9PT0gJ2NvbWJvJykge1xuICAgICAgICBkZWxldGUgaXRlbU1hcFtpZF07XG4gICAgICAgIGl0ZW0uZGVzdHJveSgpO1xuICAgICAgfSBlbHNlIGlmIChpdGVtcy5ub2Rlcy5pbmRleE9mKGl0ZW0pIDwgMCkge1xuICAgICAgICBkZWxldGUgaXRlbU1hcFtpZF07XG4gICAgICAgIHNlbGYucmVtb3ZlKGl0ZW0sIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9KTsgLy8gY2xlYXIgdGhlIGRlc3Ryb3llZCBjb21ib3MgaGVyZSB0byBhdm9pZCByZW1vdmluZyBzdWIgbm9kZXMgYmVmb3JlIHJlbW92aW5nIHRoZSBwYXJlbnQgY29tYm9cblxuICAgIHZhciBjb21ib0l0ZW1zID0gdGhpcy5nZXRDb21ib3MoKTtcbiAgICB2YXIgY29tYm9zTGVuZ3RoID0gY29tYm9JdGVtcy5sZW5ndGg7XG5cbiAgICBmb3IgKHZhciBpID0gY29tYm9zTGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGlmIChjb21ib0l0ZW1zW2ldLmRlc3Ryb3llZCkge1xuICAgICAgICBjb21ib0l0ZW1zLnNwbGljZShpLCAxKTtcbiAgICAgIH1cbiAgICB9IC8vIHByb2Nlc3MgdGhlIGRhdGEgdG8gdHJlZSBzdHJ1Y3R1cmVcblxuXG4gICAgaWYgKGNvbWJvc0RhdGEpIHtcbiAgICAgIC8vIGFkZCBjb21ib3NcbiAgICAgIHNlbGYuYWRkQ29tYm9zKGNvbWJvc0RhdGEpO1xuXG4gICAgICBpZiAoIXRoaXMuZ2V0KCdncm91cEJ5VHlwZXMnKSkge1xuICAgICAgICB0aGlzLnNvcnRDb21ib3MoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmRpZmZJdGVtcygnZWRnZScsIGl0ZW1zLCBkYXRhLmVkZ2VzKTtcbiAgICBlYWNoKGl0ZW1NYXAsIGZ1bmN0aW9uIChpdGVtLCBpZCkge1xuICAgICAgaWYgKGl0ZW0uZ2V0VHlwZSAmJiAoaXRlbS5nZXRUeXBlKCkgPT09ICdub2RlJyB8fCBpdGVtLmdldFR5cGUoKSA9PT0gJ2NvbWJvJykpIHJldHVybjtcblxuICAgICAgaWYgKGl0ZW1zLmVkZ2VzLmluZGV4T2YoaXRlbSkgPCAwKSB7XG4gICAgICAgIGRlbGV0ZSBpdGVtTWFwW2lkXTtcbiAgICAgICAgc2VsZi5yZW1vdmUoaXRlbSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuc2V0KHtcbiAgICAgIG5vZGVzOiBpdGVtcy5ub2RlcyxcbiAgICAgIGVkZ2VzOiBpdGVtcy5lZGdlc1xuICAgIH0pO1xuICAgIHZhciBsYXlvdXRDb250cm9sbGVyID0gdGhpcy5nZXQoJ2xheW91dENvbnRyb2xsZXInKTtcblxuICAgIGlmIChsYXlvdXRDb250cm9sbGVyKSB7XG4gICAgICBsYXlvdXRDb250cm9sbGVyLmNoYW5nZURhdGEoKTtcblxuICAgICAgaWYgKHNlbGYuZ2V0KCdhbmltYXRlJykgJiYgIWxheW91dENvbnRyb2xsZXIuZ2V0TGF5b3V0VHlwZSgpKSB7XG4gICAgICAgIC8vIOWmguaenOayoeacieaMh+WumuW4g+WxgFxuICAgICAgICBzZWxmLnBvc2l0aW9uc0FuaW1hdGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlbGYuYXV0b1BhaW50KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICBjYW52YXMuc2V0KCdsb2NhbFJlZnJlc2gnLCBsb2NhbFJlZnJlc2gpO1xuICAgIH0sIDE2KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgLyoqXG4gICAqIOengeacieaWueazle+8jOWcqCByZW5kZXIg5ZKMIGNoYW5nZURhdGEg55qE5pe25YCZ5om56YeP5re75Yqg5pWw5o2u5Lit5omA5pyJ5bmz6ZO655qEIGNvbWJvc1xuICAgKiBAcGFyYW0ge0NvbWJvQ29uZmlnW119IGNvbWJvcyDlubPpk7rnmoQgY29tYm9zIOaVsOaNrlxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmFkZENvbWJvcyA9IGZ1bmN0aW9uIChjb21ib3MpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGNvbWJvVHJlZXMgPSBzZWxmLmdldCgnY29tYm9UcmVlcycpO1xuICAgIHZhciBpdGVtQ29udHJvbGxlciA9IHRoaXMuZ2V0KCdpdGVtQ29udHJvbGxlcicpO1xuICAgIGl0ZW1Db250cm9sbGVyLmFkZENvbWJvcyhjb21ib1RyZWVzLCBjb21ib3MpO1xuICB9O1xuICAvKipcbiAgICog5qC55o2u5bey57uP5a2Y5Zyo55qE6IqC54K55oiWIGNvbWJvIOWIm+W7uuaWsOeahCBjb21ib1xuICAgKiBAcGFyYW0gY29tYm8gY29tYm8gSUQg5oiWIENvbWJvIOmFjee9rlxuICAgKiBAcGFyYW0gY2hpbGRyZW4g5re75Yqg5YiwIENvbWJvIOS4reeahOWFg+e0oO+8jOWMheaLrOiKgueCueWSjCBjb21ib1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmNyZWF0ZUNvbWJvID0gZnVuY3Rpb24gKGNvbWJvLCBjaGlsZHJlbikge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLnNldCgnY29tYm9Tb3J0ZWQnLCBmYWxzZSk7IC8vIHN0ZXAgMTog5Yib5bu65paw55qEIENvbWJvXG5cbiAgICB2YXIgY29tYm9JZCA9ICcnO1xuICAgIHZhciBjb21ib0NvbmZpZztcbiAgICBpZiAoIWNvbWJvKSByZXR1cm47XG5cbiAgICBpZiAoaXNTdHJpbmcoY29tYm8pKSB7XG4gICAgICBjb21ib0lkID0gY29tYm87XG4gICAgICBjb21ib0NvbmZpZyA9IHtcbiAgICAgICAgaWQ6IGNvbWJvXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBjb21ib0lkID0gY29tYm8uaWQ7XG5cbiAgICAgIGlmICghY29tYm9JZCkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ0NyZWF0ZSBjb21ibyBmYWlsZWQuIFBsZWFzZSBhc3NpZ24gYSB1bmlxdWUgc3RyaW5nIGlkIGZvciB0aGUgYWRkaW5nIGNvbWJvLicpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbWJvQ29uZmlnID0gY29tYm87XG4gICAgfSAvLyBzdGVwMjog5pu05pawIGNoaWxkcmVu77yM5qC55o2u57G75Z6L5re75YqgIGNvbWJvSWQg5oiWIHBhcmVudElkXG5cblxuICAgIHZhciB0cmVlcyA9IGNoaWxkcmVuLm1hcChmdW5jdGlvbiAoZWxlbWVudElkKSB7XG4gICAgICB2YXIgaXRlbSA9IF90aGlzLmZpbmRCeUlkKGVsZW1lbnRJZCk7XG5cbiAgICAgIHZhciBtb2RlbCA9IGl0ZW0uZ2V0TW9kZWwoKTtcbiAgICAgIHZhciB0eXBlID0gJyc7XG4gICAgICBpZiAoaXRlbS5nZXRUeXBlKSB0eXBlID0gaXRlbS5nZXRUeXBlKCk7XG4gICAgICB2YXIgY0l0ZW0gPSB7XG4gICAgICAgIGlkOiBpdGVtLmdldElEKCksXG4gICAgICAgIGl0ZW1UeXBlOiB0eXBlXG4gICAgICB9O1xuXG4gICAgICBpZiAodHlwZSA9PT0gJ2NvbWJvJykge1xuICAgICAgICBjSXRlbS5wYXJlbnRJZCA9IGNvbWJvSWQ7XG4gICAgICAgIG1vZGVsLnBhcmVudElkID0gY29tYm9JZDtcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ25vZGUnKSB7XG4gICAgICAgIGNJdGVtLmNvbWJvSWQgPSBjb21ib0lkO1xuICAgICAgICBtb2RlbC5jb21ib0lkID0gY29tYm9JZDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNJdGVtO1xuICAgIH0pO1xuICAgIGNvbWJvQ29uZmlnLmNoaWxkcmVuID0gdHJlZXM7IC8vIHN0ZXAgMzog5re75YqgIENvbWJv77yMYWRkSXRlbSDml7bkvJrlsIblrZDlsIblhYPntKDmt7vliqDliLAgQ29tYm8g5LitXG5cbiAgICB0aGlzLmFkZEl0ZW0oJ2NvbWJvJywgY29tYm9Db25maWcsIGZhbHNlKTtcbiAgICB0aGlzLnNldCgnY29tYm9Tb3J0ZWQnLCBmYWxzZSk7IC8vIHN0ZXA0OiDmm7TmlrAgY29tYm9UcmVlcyDnu5PmnoRcblxuICAgIHZhciBjb21ib1RyZWVzID0gdGhpcy5nZXQoJ2NvbWJvVHJlZXMnKTtcbiAgICAoY29tYm9UcmVlcyB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbiAoY3RyZWUpIHtcbiAgICAgIHRyYXZlcnNlVHJlZVVwKGN0cmVlLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgaWYgKGNoaWxkLmlkID09PSBjb21ib0lkKSB7XG4gICAgICAgICAgY2hpbGQuaXRlbVR5cGUgPSAnY29tYm8nO1xuICAgICAgICAgIGNoaWxkLmNoaWxkcmVuID0gdHJlZXM7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGlmIChjb21ib1RyZWVzKSB7XG4gICAgICB0aGlzLnNvcnRDb21ib3MoKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDop6PmlaMgY29tYm9cbiAgICogQHBhcmFtIHtTdHJpbmcgfCBJTm9kZSB8IElDb21ib30gY29tYm8g6ZyA6KaB6KKr6Kej5pWj55qEIENvbWJvIGl0ZW0g5oiWIGlkXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUudW5jb21ibyA9IGZ1bmN0aW9uIChjb21ibykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgX2E7XG5cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGNvbWJvSXRlbSA9IGNvbWJvO1xuXG4gICAgaWYgKGlzU3RyaW5nKGNvbWJvKSkge1xuICAgICAgY29tYm9JdGVtID0gdGhpcy5maW5kQnlJZChjb21ibyk7XG4gICAgfVxuXG4gICAgaWYgKCFjb21ib0l0ZW0gfHwgY29tYm9JdGVtLmdldFR5cGUgJiYgY29tYm9JdGVtLmdldFR5cGUoKSAhPT0gJ2NvbWJvJykge1xuICAgICAgY29uc29sZS53YXJuKCdUaGUgaXRlbSBpcyBub3QgYSBjb21ibyEnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgcGFyZW50SWQgPSBjb21ib0l0ZW0uZ2V0TW9kZWwoKS5wYXJlbnRJZDtcbiAgICB2YXIgY29tYm9UcmVlcyA9IHNlbGYuZ2V0KCdjb21ib1RyZWVzJyk7XG4gICAgaWYgKCFjb21ib1RyZWVzKSBjb21ib1RyZWVzID0gW107XG4gICAgdmFyIGl0ZW1NYXAgPSB0aGlzLmdldCgnaXRlbU1hcCcpO1xuICAgIHZhciBjb21ib0lkID0gY29tYm9JdGVtLmdldCgnaWQnKTtcbiAgICB2YXIgdHJlZVRvQmVVbmNvbWJvO1xuICAgIHZhciBicm90aGVycyA9IFtdO1xuICAgIHZhciBjb21ib0l0ZW1zID0gdGhpcy5nZXQoJ2NvbWJvcycpO1xuICAgIHZhciBwYXJlbnRJdGVtID0gdGhpcy5maW5kQnlJZChwYXJlbnRJZCk7XG4gICAgY29tYm9UcmVlcy5mb3JFYWNoKGZ1bmN0aW9uIChjdHJlZSkge1xuICAgICAgaWYgKHRyZWVUb0JlVW5jb21ibykgcmV0dXJuOyAvLyB0ZXJtaW5hdGUgdGhlIGZvckVhY2hcblxuICAgICAgdHJhdmVyc2VUcmVlVXAoY3RyZWUsIGZ1bmN0aW9uIChzdWJ0cmVlKSB7XG4gICAgICAgIHZhciBfYTsgLy8gZmluZCB0aGUgY29tYm8gdG8gYmUgdW5jb21ib2VkLCBkZWxldGUgdGhlIGNvbWJvIGZyb20gbWFwIGFuZCBjYWNoZVxuXG5cbiAgICAgICAgaWYgKHN1YnRyZWUuaWQgPT09IGNvbWJvSWQpIHtcbiAgICAgICAgICB0cmVlVG9CZVVuY29tYm8gPSBzdWJ0cmVlOyAvLyBkZWxldGUgdGhlIHJlbGF0ZWQgZWRnZXNcblxuICAgICAgICAgIHZhciBlZGdlcyA9IGNvbWJvSXRlbS5nZXRFZGdlcygpO1xuICAgICAgICAgIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICAgIF90aGlzLnJlbW92ZUl0ZW0oZWRnZSwgZmFsc2UpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHZhciBpbmRleCA9IGNvbWJvSXRlbXMuaW5kZXhPZihjb21ib0l0ZW0pO1xuICAgICAgICAgIGNvbWJvSXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICBkZWxldGUgaXRlbU1hcFtjb21ib0lkXTtcbiAgICAgICAgICBjb21ib0l0ZW0uZGVzdHJveSgpO1xuXG4gICAgICAgICAgX3RoaXMuZW1pdCgnYWZ0ZXJyZW1vdmVpdGVtJywge1xuICAgICAgICAgICAgaXRlbTogY29tYm9JdGVtLFxuICAgICAgICAgICAgdHlwZTogJ2NvbWJvJ1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IC8vIGZpbmQgdGhlIHBhcmVudCB0byByZW1vdmUgdGhlIGNvbWJvIGZyb20gdGhlIGNvbWJvJ3MgYnJvdGhlcnMgYXJyYXkgYW5kIGFkZCB0aGUgY29tYm8ncyBjaGlsZHJlbiB0byB0aGUgY29tYm8ncyBicm90aGVycyBhcnJheSBpbiB0aGUgdHJlZVxuXG5cbiAgICAgICAgaWYgKHBhcmVudElkICYmIHRyZWVUb0JlVW5jb21ibyAmJiBzdWJ0cmVlLmlkID09PSBwYXJlbnRJZCkge1xuICAgICAgICAgIHBhcmVudEl0ZW0ucmVtb3ZlQ29tYm8oY29tYm9JdGVtKTtcbiAgICAgICAgICBicm90aGVycyA9IHN1YnRyZWUuY2hpbGRyZW47IC8vIHRoZSBjb21ibydzIGJyb3RoZXJzXG4gICAgICAgICAgLy8gcmVtb3ZlIHRoZSBjb21ibyBmcm9tIGl0cyBicm90aGVycyBhcnJheVxuXG4gICAgICAgICAgdmFyIGluZGV4ID0gYnJvdGhlcnMuaW5kZXhPZih0cmVlVG9CZVVuY29tYm8pO1xuXG4gICAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgYnJvdGhlcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICB9IC8vIGFwcGVuZCB0aGUgY29tYm8ncyBjaGlsZHJlbiB0byB0aGUgY29tYm8ncyBicm90aGVycyBhcnJheVxuXG5cbiAgICAgICAgICAoX2EgPSB0cmVlVG9CZVVuY29tYm8uY2hpbGRyZW4pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICAgICAgdmFyIGl0ZW0gPSBfdGhpcy5maW5kQnlJZChjaGlsZC5pZCk7XG5cbiAgICAgICAgICAgIHZhciBjaGlsZE1vZGVsID0gaXRlbS5nZXRNb2RlbCgpO1xuXG4gICAgICAgICAgICBpZiAoaXRlbS5nZXRUeXBlICYmIGl0ZW0uZ2V0VHlwZSgpID09PSAnY29tYm8nKSB7XG4gICAgICAgICAgICAgIGNoaWxkLnBhcmVudElkID0gcGFyZW50SWQ7XG4gICAgICAgICAgICAgIGRlbGV0ZSBjaGlsZC5jb21ib0lkO1xuICAgICAgICAgICAgICBjaGlsZE1vZGVsLnBhcmVudElkID0gcGFyZW50SWQ7IC8vIHVwZGF0ZSB0aGUgcGFyZW50SWQgb2YgdGhlIG1vZGVsXG5cbiAgICAgICAgICAgICAgZGVsZXRlIGNoaWxkTW9kZWwuY29tYm9JZDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS5nZXRUeXBlICYmIGl0ZW0uZ2V0VHlwZSgpID09PSAnbm9kZScpIHtcbiAgICAgICAgICAgICAgY2hpbGQuY29tYm9JZCA9IHBhcmVudElkO1xuICAgICAgICAgICAgICBjaGlsZE1vZGVsLmNvbWJvSWQgPSBwYXJlbnRJZDsgLy8gdXBkYXRlIHRoZSBwYXJlbnRJZCBvZiB0aGUgbW9kZWxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGFyZW50SXRlbS5hZGRDaGlsZChpdGVtKTtcbiAgICAgICAgICAgIGJyb3RoZXJzLnB1c2goY2hpbGQpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSk7XG4gICAgfSk7IC8vIGlmIHRoZSBwYXJlbnRJZCBpcyBub3QgZm91bmQsIHJlbW92ZSB0aGUgY29tYm8gZnJvbSB0aGUgcm9vdHNcblxuICAgIGlmICghcGFyZW50SWQgJiYgdHJlZVRvQmVVbmNvbWJvKSB7XG4gICAgICB2YXIgaW5kZXggPSBjb21ib1RyZWVzLmluZGV4T2YodHJlZVRvQmVVbmNvbWJvKTtcbiAgICAgIGNvbWJvVHJlZXMuc3BsaWNlKGluZGV4LCAxKTsgLy8gbW9kaWZ5IHRoZSBwYXJlbnRJZCBvZiB0aGUgY2hpbGRyZW5cblxuICAgICAgKF9hID0gdHJlZVRvQmVVbmNvbWJvLmNoaWxkcmVuKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgY2hpbGQucGFyZW50SWQgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgdmFyIGNoaWxkTW9kZWwgPSBfdGhpcy5maW5kQnlJZChjaGlsZC5pZCkuZ2V0TW9kZWwoKTtcblxuICAgICAgICBkZWxldGUgY2hpbGRNb2RlbC5wYXJlbnRJZDsgLy8gdXBkYXRlIHRoZSBwYXJlbnRJZCBvZiB0aGUgbW9kZWxcblxuICAgICAgICBkZWxldGUgY2hpbGRNb2RlbC5jb21ib0lkOyAvLyB1cGRhdGUgdGhlIGNvbWJvSWQgb2YgdGhlIG1vZGVsXG5cbiAgICAgICAgaWYgKGNoaWxkLml0ZW1UeXBlICE9PSAnbm9kZScpIGNvbWJvVHJlZXMucHVzaChjaGlsZCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDmoLnmja7oioLngrnnmoQgYmJveCDmm7TmlrDmiYDmnIkgY29tYm9zIOeahOe7mOWItu+8jOWMheaLrCBjb21ib3Mg55qE5L2N572u5ZKM6IyD5Zu0XG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUudXBkYXRlQ29tYm9zID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGNvbWJvVHJlZXMgPSB0aGlzLmdldCgnY29tYm9UcmVlcycpO1xuICAgIHZhciBpdGVtQ29udHJvbGxlciA9IHNlbGYuZ2V0KCdpdGVtQ29udHJvbGxlcicpO1xuICAgIHZhciBpdGVtTWFwID0gc2VsZi5nZXQoJ2l0ZW1NYXAnKTtcbiAgICAoY29tYm9UcmVlcyB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbiAoY3RyZWUpIHtcbiAgICAgIHRyYXZlcnNlVHJlZVVwKGN0cmVlLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgaWYgKCFjaGlsZCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGNoaWxkSXRlbSA9IGl0ZW1NYXBbY2hpbGQuaWRdO1xuXG4gICAgICAgIGlmIChjaGlsZEl0ZW0gJiYgY2hpbGRJdGVtLmdldFR5cGUgJiYgY2hpbGRJdGVtLmdldFR5cGUoKSA9PT0gJ2NvbWJvJykge1xuICAgICAgICAgIC8vIOabtOaWsOWFt+S9k+eahCBDb21ibyDkuYvliY3lhYjmuIXpmaTmiYDmnInnmoTlt7LmnInnirbmgIHvvIzku6XlhY3lsIYgc3RhdGUg5Lit55qE5qC35byP5pu05paw5Li6IENvbWJvIOeahOagt+W8j1xuICAgICAgICAgIHZhciBzdGF0ZXMgPSBfX3NwcmVhZEFycmF5KFtdLCBjaGlsZEl0ZW0uZ2V0U3RhdGVzKCksIHRydWUpO1xuXG4gICAgICAgICAgZWFjaChzdGF0ZXMsIGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIF90aGlzLnNldEl0ZW1TdGF0ZShjaGlsZEl0ZW0sIHN0YXRlLCBmYWxzZSk7XG4gICAgICAgICAgfSk7IC8vIOabtOaWsOWFt+S9k+eahCBDb21ib1xuXG4gICAgICAgICAgaXRlbUNvbnRyb2xsZXIudXBkYXRlQ29tYm8oY2hpbGRJdGVtLCBjaGlsZC5jaGlsZHJlbik7IC8vIOabtOaWsCBDb21ibyDlkI7vvIzov5jljp/lt7LmnInnmoTnirbmgIFcblxuICAgICAgICAgIGVhY2goc3RhdGVzLCBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBfdGhpcy5zZXRJdGVtU3RhdGUoY2hpbGRJdGVtLCBzdGF0ZSwgdHJ1ZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHNlbGYuc29ydENvbWJvcygpO1xuICB9O1xuICAvKipcbiAgICog5qC55o2u6IqC54K555qEIGJib3gg5pu05pawIGNvbWJvIOWPiuWFtuelluWFiCBjb21ib3Mg55qE57uY5Yi277yM5YyF5ousIGNvbWJvcyDnmoTkvY3nva7lkozojIPlm7RcbiAgICogQHBhcmFtIHtTdHJpbmcgfCBJQ29tYm99IGNvbWJvIOmcgOimgeiiq+abtOaWsOeahCBDb21ibyDmiJYgaWTvvIzoi6XmjIflrprvvIzliJnor6UgQ29tYm8g5Y+K5omA5pyJ56WW5YWIIENvbWJvZCDpg73kvJrooqvmm7TmlrBcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS51cGRhdGVDb21ibyA9IGZ1bmN0aW9uIChjb21ibykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGNvbWJvSXRlbSA9IGNvbWJvO1xuICAgIHZhciBjb21ib0lkO1xuXG4gICAgaWYgKGlzU3RyaW5nKGNvbWJvKSkge1xuICAgICAgY29tYm9JdGVtID0gdGhpcy5maW5kQnlJZChjb21ibyk7XG4gICAgfVxuXG4gICAgaWYgKCFjb21ib0l0ZW0gfHwgY29tYm9JdGVtLmdldFR5cGUgJiYgY29tYm9JdGVtLmdldFR5cGUoKSAhPT0gJ2NvbWJvJykge1xuICAgICAgY29uc29sZS53YXJuKCdUaGUgaXRlbSB0byBiZSB1cGRhdGVkIGlzIG5vdCBhIGNvbWJvIScpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbWJvSWQgPSBjb21ib0l0ZW0uZ2V0KCdpZCcpO1xuICAgIHZhciBjb21ib1RyZWVzID0gdGhpcy5nZXQoJ2NvbWJvVHJlZXMnKTtcbiAgICB2YXIgaXRlbUNvbnRyb2xsZXIgPSBzZWxmLmdldCgnaXRlbUNvbnRyb2xsZXInKTtcbiAgICB2YXIgaXRlbU1hcCA9IHNlbGYuZ2V0KCdpdGVtTWFwJyk7XG4gICAgKGNvbWJvVHJlZXMgfHwgW10pLmZvckVhY2goZnVuY3Rpb24gKGN0cmVlKSB7XG4gICAgICB0cmF2ZXJzZVRyZWVVcChjdHJlZSwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgIGlmICghY2hpbGQpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjaGlsZEl0ZW0gPSBpdGVtTWFwW2NoaWxkLmlkXTtcblxuICAgICAgICBpZiAoY29tYm9JZCA9PT0gY2hpbGQuaWQgJiYgY2hpbGRJdGVtICYmIGNoaWxkSXRlbS5nZXRUeXBlICYmIGNoaWxkSXRlbS5nZXRUeXBlKCkgPT09ICdjb21ibycpIHtcbiAgICAgICAgICAvLyDmm7TmlrDlhbfkvZPnmoQgQ29tYm8g5LmL5YmN5YWI5riF6Zmk5omA5pyJ55qE5bey5pyJ54q25oCB77yM5Lul5YWN5bCGIHN0YXRlIOS4reeahOagt+W8j+abtOaWsOS4uiBDb21ibyDnmoTmoLflvI9cbiAgICAgICAgICB2YXIgc3RhdGVzID0gX19zcHJlYWRBcnJheShbXSwgY2hpbGRJdGVtLmdldFN0YXRlcygpLCB0cnVlKTsgLy8gfHwgIWl0ZW0uZ2V0U3RhdGVTdHlsZShzdGF0ZU5hbWUpXG5cblxuICAgICAgICAgIGVhY2goc3RhdGVzLCBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgICAgICAgIGlmIChjaGlsZEl0ZW0uZ2V0U3RhdGVTdHlsZShzdGF0ZSkpIHtcbiAgICAgICAgICAgICAgX3RoaXMuc2V0SXRlbVN0YXRlKGNoaWxkSXRlbSwgc3RhdGUsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTsgLy8g5pu05paw5YW35L2T55qEIENvbWJvXG5cbiAgICAgICAgICBpdGVtQ29udHJvbGxlci51cGRhdGVDb21ibyhjaGlsZEl0ZW0sIGNoaWxkLmNoaWxkcmVuKTsgLy8g5pu05pawIENvbWJvIOWQju+8jOi/mOWOn+W3suacieeahOeKtuaAgVxuXG4gICAgICAgICAgZWFjaChzdGF0ZXMsIGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgICAgICAgaWYgKGNoaWxkSXRlbS5nZXRTdGF0ZVN0eWxlKHN0YXRlKSkge1xuICAgICAgICAgICAgICBfdGhpcy5zZXRJdGVtU3RhdGUoY2hpbGRJdGVtLCBzdGF0ZSwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKGNvbWJvSWQpIGNvbWJvSWQgPSBjaGlsZC5wYXJlbnRJZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG4gIC8qKlxuICAgKiDmm7TmlrDmoJHnu5PmnoTvvIzkvovlpoLnp7vliqjlrZDmoJHnrYlcbiAgICogQHBhcmFtIHtTdHJpbmcgfCBJTm9kZSB8IElDb21ib30gaXRlbSDpnIDopoHooqvmm7TmlrDnmoQgQ29tYm8g5oiWIOiKgueCuSBpZFxuICAgKiBAcGFyYW0ge3N0cmluZyB8IHVuZGVmaW5lZH0gcGFyZW50SWQg5paw55qE54i2IGNvbWJvIGlk77yMdW5kZWZpbmVkIOS7o+ihqOayoeacieeItiBjb21ib1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnVwZGF0ZUNvbWJvVHJlZSA9IGZ1bmN0aW9uIChpdGVtLCBwYXJlbnRJZCwgc3RhY2spIHtcbiAgICBpZiAoc3RhY2sgPT09IHZvaWQgMCkge1xuICAgICAgc3RhY2sgPSB0cnVlO1xuICAgIH1cblxuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB0aGlzLnNldCgnY29tYm9Tb3J0ZWQnLCBmYWxzZSk7XG4gICAgdmFyIHVJdGVtO1xuXG4gICAgaWYgKGlzU3RyaW5nKGl0ZW0pKSB7XG4gICAgICB1SXRlbSA9IHNlbGYuZmluZEJ5SWQoaXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVJdGVtID0gaXRlbTtcbiAgICB9XG5cbiAgICB2YXIgbW9kZWwgPSB1SXRlbS5nZXRNb2RlbCgpO1xuICAgIHZhciBvbGRQYXJlbnRJZCA9IG1vZGVsLmNvbWJvSWQgfHwgbW9kZWwucGFyZW50SWQ7XG4gICAgdmFyIHR5cGUgPSAnJztcbiAgICBpZiAodUl0ZW0uZ2V0VHlwZSkgdHlwZSA9IHVJdGVtLmdldFR5cGUoKTsgLy8g6IulIGl0ZW0g5pivIENvbWJv77yM5LiUIHBhcmVudElkIOaYr+WFtuWtkOWtmSBjb21ibyDnmoQgaWTvvIzliJnorablkYrlubbnu4jmraJcblxuICAgIGlmIChwYXJlbnRJZCAmJiB0eXBlID09PSAnY29tYm8nKSB7XG4gICAgICB2YXIgY29tYm9UcmVlcyA9IHRoaXMuZ2V0KCdjb21ib1RyZWVzJyk7XG4gICAgICB2YXIgdmFsaWRfMSA9IHRydWU7XG4gICAgICB2YXIgaXRlbVN1YlRyZWVfMTtcbiAgICAgIChjb21ib1RyZWVzIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uIChjdHJlZSkge1xuICAgICAgICBpZiAoaXRlbVN1YlRyZWVfMSkgcmV0dXJuO1xuICAgICAgICB0cmF2ZXJzZVRyZWUoY3RyZWUsIGZ1bmN0aW9uIChzdWJUcmVlKSB7XG4gICAgICAgICAgaWYgKGl0ZW1TdWJUcmVlXzEpIHJldHVybjsgLy8g5om+5Yiw5LuOIGl0ZW0g5byA5aeL55qE5a2Q5qCRXG5cbiAgICAgICAgICBpZiAoc3ViVHJlZS5pZCA9PT0gdUl0ZW0uZ2V0SUQoKSkge1xuICAgICAgICAgICAgaXRlbVN1YlRyZWVfMSA9IHN1YlRyZWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgfSk7IC8vIOWcqOS7pSBpdGVtIOS4uuagueeahOWtkOagkeS4reWvu+aJvuS4jiBwYXJlbnRJZCDnm7jlkIznmoTlkI7nu6flhYPntKBcblxuICAgICAgdHJhdmVyc2VUcmVlKGl0ZW1TdWJUcmVlXzEsIGZ1bmN0aW9uIChzdWJUcmVlKSB7XG4gICAgICAgIGlmIChzdWJUcmVlLmlkID09PSBwYXJlbnRJZCkge1xuICAgICAgICAgIHZhbGlkXzEgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pOyAvLyBwYXJlbnRJZCDmmK8gaXRlbSDnmoTkuIDkuKrlkI7nu6flhYPntKDvvIzkuI3og73ov5vooYzmm7TmlrBcblxuICAgICAgaWYgKCF2YWxpZF8xKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignRmFpbGVkIHRvIHVwZGF0ZSB0aGUgY29tYm8gdHJlZSEgVGhlIHBhcmVudElkIHBvaW50cyB0byBhIGRlc2NlbmRhbnQgb2YgdGhlIGNvbWJvIScpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHN0YWNrICYmIHRoaXMuZ2V0KCdlbmFibGVkU3RhY2snKSkge1xuICAgICAgdmFyIGJlZm9yZURhdGEgPSB7fSxcbiAgICAgICAgICBhZnRlckRhdGEgPSB7fTtcblxuICAgICAgaWYgKHR5cGUgPT09ICdjb21ibycpIHtcbiAgICAgICAgYmVmb3JlRGF0YS5jb21ib3MgPSBbe1xuICAgICAgICAgIGlkOiBtb2RlbC5pZCxcbiAgICAgICAgICBwYXJlbnRJZDogbW9kZWwucGFyZW50SWRcbiAgICAgICAgfV07XG4gICAgICAgIGFmdGVyRGF0YS5jb21ib3MgPSBbe1xuICAgICAgICAgIGlkOiBtb2RlbC5pZCxcbiAgICAgICAgICBwYXJlbnRJZDogcGFyZW50SWRcbiAgICAgICAgfV07XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdub2RlJykge1xuICAgICAgICBiZWZvcmVEYXRhLm5vZGVzID0gW3tcbiAgICAgICAgICBpZDogbW9kZWwuaWQsXG4gICAgICAgICAgcGFyZW50SWQ6IG1vZGVsLmNvbWJvSWRcbiAgICAgICAgfV07XG4gICAgICAgIGFmdGVyRGF0YS5ub2RlcyA9IFt7XG4gICAgICAgICAgaWQ6IG1vZGVsLmlkLFxuICAgICAgICAgIHBhcmVudElkOiBwYXJlbnRJZFxuICAgICAgICB9XTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5wdXNoU3RhY2soJ3VwZGF0ZUNvbWJvVHJlZScsIHtcbiAgICAgICAgYmVmb3JlOiBiZWZvcmVEYXRhLFxuICAgICAgICBhZnRlcjogYWZ0ZXJEYXRhXG4gICAgICB9KTtcbiAgICB9IC8vIOW9kyBjb21ibyDlrZjlnKggcGFyZW50SWQg5oiWIGNvbWJvSWQg5pe277yM5omN5bCG5YW256e76ZmkXG5cblxuICAgIGlmIChtb2RlbC5wYXJlbnRJZCB8fCBtb2RlbC5jb21ib0lkKSB7XG4gICAgICB2YXIgY29tYm8gPSB0aGlzLmZpbmRCeUlkKG1vZGVsLnBhcmVudElkIHx8IG1vZGVsLmNvbWJvSWQpO1xuXG4gICAgICBpZiAoY29tYm8pIHtcbiAgICAgICAgY29tYm8ucmVtb3ZlQ2hpbGQodUl0ZW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlID09PSAnY29tYm8nKSB7XG4gICAgICBtb2RlbC5wYXJlbnRJZCA9IHBhcmVudElkO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ25vZGUnKSB7XG4gICAgICBtb2RlbC5jb21ib0lkID0gcGFyZW50SWQ7XG4gICAgfSAvLyDlj6rmnInlvZPnp7vlhaXliLDmjIflrpogY29tYm8g5pe25omN5re75YqgXG5cblxuICAgIGlmIChwYXJlbnRJZCkge1xuICAgICAgdmFyIHBhcmVudENvbWJvID0gdGhpcy5maW5kQnlJZChwYXJlbnRJZCk7XG5cbiAgICAgIGlmIChwYXJlbnRDb21ibykge1xuICAgICAgICAvLyDlsIblhYPntKDmt7vliqDliLAgcGFyZW50Q29tYm8g5LitXG4gICAgICAgIHBhcmVudENvbWJvLmFkZENoaWxkKHVJdGVtKTtcbiAgICAgIH1cbiAgICB9IC8vIOWmguaenOWOn+WFiOacieeItuS6siBjb21ib++8jOWImeS7juWOn+eItiBjb21ibyDnmoTlrZDlhYPntKDmlbDnu4TkuK3liKDpmaRcblxuXG4gICAgaWYgKG9sZFBhcmVudElkKSB7XG4gICAgICB2YXIgcGFyZW50Q29tYm8gPSB0aGlzLmZpbmRCeUlkKG9sZFBhcmVudElkKTtcblxuICAgICAgaWYgKHBhcmVudENvbWJvKSB7XG4gICAgICAgIC8vIOWwhuWFg+e0oOS7jiBwYXJlbnRDb21ibyDkuK3np7vpmaRcbiAgICAgICAgcGFyZW50Q29tYm8ucmVtb3ZlQ2hpbGQodUl0ZW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBuZXdDb21ib1RyZWVzID0gcmVjb25zdHJ1Y3RUcmVlKHRoaXMuZ2V0KCdjb21ib1RyZWVzJyksIG1vZGVsLmlkLCBwYXJlbnRJZCk7XG4gICAgdGhpcy5zZXQoJ2NvbWJvVHJlZXMnLCBuZXdDb21ib1RyZWVzKTtcbiAgICB0aGlzLnVwZGF0ZUNvbWJvcygpO1xuICB9O1xuICAvKipcbiAgICog5a+85Ye65Zu+5pWw5o2uXG4gICAqIEByZXR1cm4ge29iamVjdH0gZGF0YVxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnNhdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG5vZGVzID0gW107XG4gICAgdmFyIGVkZ2VzID0gW107XG4gICAgdmFyIGNvbWJvcyA9IFtdO1xuICAgIGVhY2godGhpcy5nZXQoJ25vZGVzJyksIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICBub2Rlcy5wdXNoKG5vZGUuZ2V0TW9kZWwoKSk7XG4gICAgfSk7XG4gICAgZWFjaCh0aGlzLmdldCgnZWRnZXMnKSwgZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIGVkZ2VzLnB1c2goZWRnZS5nZXRNb2RlbCgpKTtcbiAgICB9KTtcbiAgICBlYWNoKHRoaXMuZ2V0KCdjb21ib3MnKSwgZnVuY3Rpb24gKGNvbWJvKSB7XG4gICAgICBjb21ib3MucHVzaChjb21iby5nZXRNb2RlbCgpKTtcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgbm9kZXM6IG5vZGVzLFxuICAgICAgZWRnZXM6IGVkZ2VzLFxuICAgICAgY29tYm9zOiBjb21ib3NcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICog5pS55Y+Y55S75biD5aSn5bCPXG4gICAqIEBwYXJhbSAge251bWJlcn0gd2lkdGggIOeUu+W4g+WuveW6plxuICAgKiBAcGFyYW0gIHtudW1iZXJ9IGhlaWdodCDnlLvluIPpq5jluqZcbiAgICogQHJldHVybiB7b2JqZWN0fSB0aGlzXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuY2hhbmdlU2l6ZSA9IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0KSB7XG4gICAgdmFyIHZpZXdDb250cm9sbGVyID0gdGhpcy5nZXQoJ3ZpZXdDb250cm9sbGVyJyk7XG4gICAgdmlld0NvbnRyb2xsZXIuY2hhbmdlU2l6ZSh3aWR0aCwgaGVpZ2h0KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgLyoqXG4gICAqIOW9k+a6kOaVsOaNruWcqOWklumDqOWPkeeUn+WPmOabtOaXtu+8jOagueaNruaWsOaVsOaNruWIt+aWsOinhuWbvuOAguS9huaYr+S4jeWIt+aWsOiKgueCueS9jee9rlxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnJlZnJlc2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHNlbGYuZW1pdCgnYmVmb3JlZ3JhcGhyZWZyZXNoJyk7XG5cbiAgICBpZiAoc2VsZi5nZXQoJ2FuaW1hdGUnKSkge1xuICAgICAgc2VsZi5wb3NpdGlvbnNBbmltYXRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBub2RlcyA9IHNlbGYuZ2V0KCdub2RlcycpO1xuICAgICAgdmFyIGVkZ2VzID0gc2VsZi5nZXQoJ2VkZ2VzJyk7XG4gICAgICB2YXIgdmVkZ2VzID0gc2VsZi5nZXQoJ2VkZ2VzJyk7XG4gICAgICBlYWNoKG5vZGVzLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICBub2RlLnJlZnJlc2goKTtcbiAgICAgIH0pO1xuICAgICAgZWFjaChlZGdlcywgZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgZWRnZS5yZWZyZXNoKCk7XG4gICAgICB9KTtcbiAgICAgIGVhY2godmVkZ2VzLCBmdW5jdGlvbiAodmVkZ2UpIHtcbiAgICAgICAgdmVkZ2UucmVmcmVzaCgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2VsZi5lbWl0KCdhZnRlcmdyYXBocmVmcmVzaCcpO1xuICAgIHNlbGYuYXV0b1BhaW50KCk7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5blvZPliY3lm77kuK3miYDmnInoioLngrnnmoRpdGVt5a6e5L6LXG4gICAqIEByZXR1cm4ge0lOb2RlfSBpdGVt5pWw57uEXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0Tm9kZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdub2RlcycpO1xuICB9O1xuICAvKipcbiAgICog6I635Y+W5b2T5YmN5Zu+5Lit5omA5pyJ6L6555qEaXRlbeWunuS+i1xuICAgKiBAcmV0dXJuIHtJRWRnZX0gaXRlbeaVsOe7hFxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldEVkZ2VzID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnZWRnZXMnKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPluWbvuS4reaJgOacieeahCBjb21ibyDlrp7kvotcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXRDb21ib3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdjb21ib3MnKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPluaMh+WumiBDb21ibyDkuK3miYDmnInnmoToioLngrlcbiAgICogQHBhcmFtIGNvbWJvSWQgY29tYm8gSURcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXRDb21ib0NoaWxkcmVuID0gZnVuY3Rpb24gKGNvbWJvKSB7XG4gICAgaWYgKGlzU3RyaW5nKGNvbWJvKSkge1xuICAgICAgY29tYm8gPSB0aGlzLmZpbmRCeUlkKGNvbWJvKTtcbiAgICB9XG5cbiAgICBpZiAoIWNvbWJvIHx8IGNvbWJvLmdldFR5cGUgJiYgY29tYm8uZ2V0VHlwZSgpICE9PSAnY29tYm8nKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1RoZSBjb21ibyBkb2VzIG5vdCBleGlzdCEnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gY29tYm8uZ2V0Q2hpbGRyZW4oKTtcbiAgfTtcbiAgLyoqXG4gICAqIOagueaNriBncmFwaCDkuIrnmoQgYW5pbWF0ZUNmZyDov5vooYzop4blm77kuK3oioLngrnkvY3nva7liqjnlLvmjqXlj6NcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5wb3NpdGlvbnNBbmltYXRlID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICBzZWxmLmVtaXQoJ2JlZm9yZWFuaW1hdGUnKTtcbiAgICB2YXIgYW5pbWF0ZUNmZyA9IHNlbGYuZ2V0KCdhbmltYXRlQ2ZnJyk7XG4gICAgdmFyIG9uRnJhbWUgPSBhbmltYXRlQ2ZnLm9uRnJhbWU7XG4gICAgdmFyIG5vZGVzID0gc2VsZi5nZXROb2RlcygpO1xuICAgIHZhciB0b05vZGVzID0gbm9kZXMubWFwKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICB2YXIgbW9kZWwgPSBub2RlLmdldE1vZGVsKCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogbW9kZWwuaWQsXG4gICAgICAgIHg6IG1vZGVsLngsXG4gICAgICAgIHk6IG1vZGVsLnlcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICBpZiAoc2VsZi5pc0FuaW1hdGluZygpKSB7XG4gICAgICBzZWxmLnN0b3BBbmltYXRlKCk7XG4gICAgfVxuXG4gICAgdmFyIGNhbnZhcyA9IHNlbGYuZ2V0KCdjYW52YXMnKTtcbiAgICBjYW52YXMuYW5pbWF0ZShmdW5jdGlvbiAocmF0aW8pIHtcbiAgICAgIGVhY2godG9Ob2RlcywgZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgdmFyIG5vZGUgPSBzZWxmLmZpbmRCeUlkKGRhdGEuaWQpO1xuXG4gICAgICAgIGlmICghbm9kZSB8fCBub2RlLmRlc3Ryb3llZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBvcmlnaW5BdHRycyA9IG5vZGUuZ2V0KCdvcmlnaW5BdHRycycpO1xuICAgICAgICB2YXIgbW9kZWwgPSBub2RlLmdldCgnbW9kZWwnKTtcblxuICAgICAgICBpZiAoIW9yaWdpbkF0dHJzKSB7XG4gICAgICAgICAgdmFyIGNvbnRhaW5lck1hdHJpeCA9IG5vZGUuZ2V0Q29udGFpbmVyKCkuZ2V0TWF0cml4KCk7XG4gICAgICAgICAgaWYgKCFjb250YWluZXJNYXRyaXgpIGNvbnRhaW5lck1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICAgICAgICBvcmlnaW5BdHRycyA9IHtcbiAgICAgICAgICAgIHg6IGNvbnRhaW5lck1hdHJpeFs2XSxcbiAgICAgICAgICAgIHk6IGNvbnRhaW5lck1hdHJpeFs3XVxuICAgICAgICAgIH07XG4gICAgICAgICAgbm9kZS5zZXQoJ29yaWdpbkF0dHJzJywgb3JpZ2luQXR0cnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9uRnJhbWUpIHtcbiAgICAgICAgICB2YXIgYXR0cnMgPSBvbkZyYW1lKG5vZGUsIHJhdGlvLCBkYXRhLCBvcmlnaW5BdHRycyk7XG4gICAgICAgICAgbm9kZS5zZXQoJ21vZGVsJywgT2JqZWN0LmFzc2lnbihtb2RlbCwgYXR0cnMpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtb2RlbC54ID0gb3JpZ2luQXR0cnMueCArIChkYXRhLnggLSBvcmlnaW5BdHRycy54KSAqIHJhdGlvO1xuICAgICAgICAgIG1vZGVsLnkgPSBvcmlnaW5BdHRycy55ICsgKGRhdGEueSAtIG9yaWdpbkF0dHJzLnkpICogcmF0aW87XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgc2VsZi5yZWZyZXNoUG9zaXRpb25zKCk7XG4gICAgfSwge1xuICAgICAgZHVyYXRpb246IGFuaW1hdGVDZmcuZHVyYXRpb24sXG4gICAgICBlYXNpbmc6IGFuaW1hdGVDZmcuZWFzaW5nLFxuICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uIGNhbGxiYWNrKCkge1xuICAgICAgICBlYWNoKG5vZGVzLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgIG5vZGUuc2V0KCdvcmlnaW5BdHRycycsIG51bGwpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoYW5pbWF0ZUNmZy5jYWxsYmFjaykge1xuICAgICAgICAgIGFuaW1hdGVDZmcuY2FsbGJhY2soKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNlbGYuZW1pdCgnYWZ0ZXJhbmltYXRlJyk7XG4gICAgICAgIHNlbGYuYW5pbWF0aW5nID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG4gIC8qKlxuICAgKiDlvZPoioLngrnkvY3nva7lnKjlpJbpg6jlj5HnlJ/mlLnlj5jml7bvvIzliLfmlrDmiYDmnInoioLngrnkvY3nva7vvIzph43orqHnrpfovrlcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5yZWZyZXNoUG9zaXRpb25zID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICBzZWxmLmVtaXQoJ2JlZm9yZWdyYXBocmVmcmVzaHBvc2l0aW9uJyk7XG4gICAgdmFyIG5vZGVzID0gc2VsZi5nZXQoJ25vZGVzJyk7XG4gICAgdmFyIGVkZ2VzID0gc2VsZi5nZXQoJ2VkZ2VzJyk7XG4gICAgdmFyIHZlZGdlcyA9IHNlbGYuZ2V0KCd2ZWRnZXMnKTtcbiAgICB2YXIgY29tYm9zID0gc2VsZi5nZXQoJ2NvbWJvcycpO1xuICAgIHZhciBtb2RlbDtcbiAgICB2YXIgdXBkYXRlZE5vZGVzID0ge307XG4gICAgZWFjaChub2RlcywgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIG1vZGVsID0gbm9kZS5nZXRNb2RlbCgpO1xuICAgICAgdmFyIG9yaWdpbkF0dHJzID0gbm9kZS5nZXQoJ29yaWdpbkF0dHJzJyk7XG5cbiAgICAgIGlmIChvcmlnaW5BdHRycyAmJiBtb2RlbC54ID09PSBvcmlnaW5BdHRycy54ICYmIG1vZGVsLnkgPT09IG9yaWdpbkF0dHJzLnkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgY2hhbmdlZCA9IG5vZGUudXBkYXRlUG9zaXRpb24oe1xuICAgICAgICB4OiBtb2RlbC54LFxuICAgICAgICB5OiBtb2RlbC55XG4gICAgICB9KTtcbiAgICAgIHVwZGF0ZWROb2Rlc1ttb2RlbC5pZF0gPSBjaGFuZ2VkO1xuICAgICAgaWYgKG1vZGVsLmNvbWJvSWQpIHVwZGF0ZWROb2Rlc1ttb2RlbC5jb21ib0lkXSA9IHVwZGF0ZWROb2Rlc1ttb2RlbC5jb21ib0lkXSB8fCBjaGFuZ2VkO1xuICAgIH0pO1xuXG4gICAgaWYgKGNvbWJvcyAmJiBjb21ib3MubGVuZ3RoICE9PSAwKSB7XG4gICAgICBzZWxmLnVwZGF0ZUNvbWJvcygpO1xuICAgIH1cblxuICAgIGVhY2goZWRnZXMsIGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICB2YXIgc291cmNlTW9kZWwgPSBlZGdlLmdldFNvdXJjZSgpLmdldE1vZGVsKCk7XG4gICAgICB2YXIgdGFyZ2V0ID0gZWRnZS5nZXRUYXJnZXQoKTsgLy8g6YG/5YWNIHRhcmdldCDmmK/nuq/lr7nosaHnmoTmg4XlhrXkuIvosIPnlKggZ2V0TW9kZWwg5pa55rOVXG4gICAgICAvLyDmi5bliqjnlJ/miJDovrnnmoTml7blgJkgdGFyZ2V0IOS8muaYr+e6r+WvueixoVxuXG4gICAgICBpZiAoIWlzUGxhaW5PYmplY3QodGFyZ2V0KSkge1xuICAgICAgICB2YXIgdGFyZ2V0TW9kZWwgPSB0YXJnZXQuZ2V0TW9kZWwoKTtcblxuICAgICAgICBpZiAodXBkYXRlZE5vZGVzW3NvdXJjZU1vZGVsLmlkXSB8fCB1cGRhdGVkTm9kZXNbdGFyZ2V0TW9kZWwuaWRdIHx8IGVkZ2UuZ2V0TW9kZWwoKS5pc0NvbWJvRWRnZSkge1xuICAgICAgICAgIGVkZ2UucmVmcmVzaCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgZWFjaCh2ZWRnZXMsIGZ1bmN0aW9uICh2ZWRnZSkge1xuICAgICAgdmVkZ2UucmVmcmVzaCgpO1xuICAgIH0pO1xuICAgIHNlbGYuZW1pdCgnYWZ0ZXJncmFwaHJlZnJlc2hwb3NpdGlvbicpO1xuICAgIHNlbGYuYXV0b1BhaW50KCk7XG4gIH07XG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuc3RvcEFuaW1hdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5nZXQoJ2NhbnZhcycpLnN0b3BBbmltYXRlKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuaXNBbmltYXRpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuYW5pbWF0aW5nO1xuICB9O1xuICAvKipcbiAgICog6I635Y+W5b2T5YmN6KeG5Y+j5Ly457yp5q+U5L6LXG4gICAqIEByZXR1cm4ge251bWJlcn0g5q+U5L6LXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0Wm9vbSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbWF0cml4ID0gdGhpcy5nZXQoJ2dyb3VwJykuZ2V0TWF0cml4KCk7XG4gICAgcmV0dXJuIG1hdHJpeCA/IG1hdHJpeFswXSA6IDE7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5blvZPliY3nmoTooYzkuLrmqKHlvI9cbiAgICogQHJldHVybiB7c3RyaW5nfSDlvZPliY3ooYzkuLrmqKHlvI9cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXRDdXJyZW50TW9kZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbW9kZUNvbnRyb2xsZXIgPSB0aGlzLmdldCgnbW9kZUNvbnRyb2xsZXInKTtcbiAgICByZXR1cm4gbW9kZUNvbnRyb2xsZXIuZ2V0TW9kZSgpO1xuICB9O1xuICAvKipcbiAgICog5YiH5o2i6KGM5Li65qih5byPXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtb2RlIOaMh+WumuaooeW8j1xuICAgKiBAcmV0dXJuIHtvYmplY3R9IHRoaXNcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5zZXRNb2RlID0gZnVuY3Rpb24gKG1vZGUpIHtcbiAgICB2YXIgbW9kZUNvbnRyb2xsZXIgPSB0aGlzLmdldCgnbW9kZUNvbnRyb2xsZXInKTtcbiAgICBtb2RlQ29udHJvbGxlci5zZXRNb2RlKG1vZGUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuICAvKipcbiAgICog5riF6Zmk55S75biD5YWD57SgXG4gICAqIEByZXR1cm4ge29iamVjdH0gdGhpc1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKGF2b2lkRW1pdCkge1xuICAgIHZhciBfYTtcblxuICAgIGlmIChhdm9pZEVtaXQgPT09IHZvaWQgMCkge1xuICAgICAgYXZvaWRFbWl0ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgKF9hID0gdGhpcy5nZXQoJ2NhbnZhcycpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2xlYXIoKTtcbiAgICB0aGlzLmluaXRHcm91cHMoKTsgLy8g5riF56m655S75biD5pe25ZCM5pe25riF6Zmk5pWw5o2uXG5cbiAgICB0aGlzLnNldCh7XG4gICAgICBpdGVtTWFwOiB7fSxcbiAgICAgIG5vZGVzOiBbXSxcbiAgICAgIGVkZ2VzOiBbXSxcbiAgICAgIGdyb3VwczogW10sXG4gICAgICBjb21ib3M6IFtdLFxuICAgICAgY29tYm9UcmVlczogW11cbiAgICB9KTtcbiAgICBpZiAoIWF2b2lkRW1pdCkgdGhpcy5lbWl0KCdhZnRlcnJlbmRlcicpO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuICAvKipcbiAgICog5pu05o2i5biD5bGA6YWN572u6aG5XG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjZmcg5paw5biD5bGA6YWN572u6aG5XG4gICAqIEBwYXJhbSB7J2NlbnRlcicgfCAnYmVnaW4nfSBhbGlnbiDlr7npvZDmlrnlvI/vvIzlj6/pgInkuK3lv4PvvIhjZW50ZXLvvInlr7npvZDliLDlr7npvZDngrnvvIzmiJblt6bkuIrop5LvvIhiZWdpbu+8ieWvuem9kOWIsOWvuem9kOeCuVxuICAgKiBAcGFyYW0ge0lQb2ludH0gYWxpZ25Qb2ludCDnlLvluIPkuIrnmoTlr7npvZDngrnvvIzkuLogQ2FudmFzIOWdkOagh+ezu++8iENhbnZhcyBET03vvIlcbiAgICog6IulIGNmZyDlkKvmnIkgdHlwZSDlrZfmrrXmiJbkuLogU3RyaW5nIOexu+Wei++8jOS4lOS4jueOsOacieW4g+WxgOaWueazleS4jeWQjO+8jOWImeabtOaNouW4g+WxgFxuICAgKiDoi6UgY2ZnIOS4jeWMheaLrCB0eXBlIO+8jOWImeS/neaMgeWOn+acieW4g+WxgOaWueazle+8jOS7heabtOaWsOW4g+WxgOmFjee9rumhuVxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnVwZGF0ZUxheW91dCA9IGZ1bmN0aW9uIChjZmcsIGFsaWduLCBhbGlnblBvaW50KSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBsYXlvdXRDb250cm9sbGVyID0gdGhpcy5nZXQoJ2xheW91dENvbnRyb2xsZXInKTtcblxuICAgIGlmIChpc1N0cmluZyhjZmcpKSB7XG4gICAgICBjZmcgPSB7XG4gICAgICAgIHR5cGU6IGNmZ1xuICAgICAgfTtcbiAgICB9IC8vIGFsaWduIHRoZSBncmFwaCBhZnRlciBsYXlvdXRcblxuXG4gICAgaWYgKGFsaWduKSB7XG4gICAgICB2YXIgdG9Qb2ludF8xID0gYWxpZ25Qb2ludDtcblxuICAgICAgaWYgKCF0b1BvaW50XzEpIHtcbiAgICAgICAgaWYgKGFsaWduID09PSAnYmVnaW4nKSB0b1BvaW50XzEgPSB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwXG4gICAgICAgIH07ZWxzZSB0b1BvaW50XzEgPSB7XG4gICAgICAgICAgeDogdGhpcy5nZXRXaWR0aCgpIC8gMixcbiAgICAgICAgICB5OiB0aGlzLmdldEhlaWdodCgpIC8gMlxuICAgICAgICB9O1xuICAgICAgfSAvLyB0cmFuc2xhdGUgdG8gcG9pbnQgY29vcmRpbmF0ZSBzeXN0ZW1cblxuXG4gICAgICB0b1BvaW50XzEgPSB0aGlzLmdldFBvaW50QnlDYW52YXModG9Qb2ludF8xLngsIHRvUG9pbnRfMS55KTtcbiAgICAgIHZhciBmb3JjZVR5cGVzID0gWydmb3JjZScsICdnRm9yY2UnLCAnZnJ1Y2h0ZXJtYW4nXTsgLy8gaWYgaXQgaXMgZm9yY2UgbGF5b3V0LCBvbmx5IGNlbnRlciB0YWtlcyBlZmZlY3QsIGFuZCBhc3NpZ24gY2VudGVyIGZvcmNlXG5cbiAgICAgIGlmIChmb3JjZVR5cGVzLmluY2x1ZGVzKGNmZy50eXBlKSB8fCAhY2ZnLnR5cGUgJiYgZm9yY2VUeXBlcy5pbmNsdWRlcyhsYXlvdXRDb250cm9sbGVyID09PSBudWxsIHx8IGxheW91dENvbnRyb2xsZXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGxheW91dENvbnRyb2xsZXIubGF5b3V0VHlwZSkpIHtcbiAgICAgICAgY2ZnLmNlbnRlciA9IFt0b1BvaW50XzEueCwgdG9Qb2ludF8xLnldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vbmNlKCdhZnRlcmxheW91dCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgdmFyIG1hdHJpeCA9IF90aGlzLmdldEdyb3VwKCkuZ2V0TWF0cml4KCkgfHwgWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuICAgICAgICAgIHRvUG9pbnRfMS54ID0gdG9Qb2ludF8xLnggKiBtYXRyaXhbMF0gKyBtYXRyaXhbNl07XG4gICAgICAgICAgdG9Qb2ludF8xLnkgPSB0b1BvaW50XzEueSAqIG1hdHJpeFswXSArIG1hdHJpeFs3XTtcblxuICAgICAgICAgIHZhciBfYSA9IF90aGlzLmdldEdyb3VwKCkuZ2V0Q2FudmFzQkJveCgpLFxuICAgICAgICAgICAgICBtaW5YID0gX2EubWluWCxcbiAgICAgICAgICAgICAgbWF4WCA9IF9hLm1heFgsXG4gICAgICAgICAgICAgIG1pblkgPSBfYS5taW5ZLFxuICAgICAgICAgICAgICBtYXhZID0gX2EubWF4WTtcblxuICAgICAgICAgIHZhciBiYm94UG9pbnQgPSB7XG4gICAgICAgICAgICB4OiAobWluWCArIG1heFgpIC8gMixcbiAgICAgICAgICAgIHk6IChtaW5ZICsgbWF4WSkgLyAyXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGlmIChhbGlnbiA9PT0gJ2JlZ2luJykge1xuICAgICAgICAgICAgYmJveFBvaW50LnggPSBtaW5YO1xuICAgICAgICAgICAgYmJveFBvaW50LnkgPSBtaW5ZO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIF90aGlzLnRyYW5zbGF0ZSh0b1BvaW50XzEueCAtIGJib3hQb2ludC54LCB0b1BvaW50XzEueSAtIGJib3hQb2ludC55KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIG9yaUxheW91dENmZyA9IHRoaXMuZ2V0KCdsYXlvdXQnKTtcbiAgICB2YXIgbGF5b3V0Q2ZnID0ge307XG4gICAgT2JqZWN0LmFzc2lnbihsYXlvdXRDZmcsIG9yaUxheW91dENmZywgY2ZnKTtcbiAgICB0aGlzLnNldCgnbGF5b3V0JywgbGF5b3V0Q2ZnKTtcblxuICAgIGlmIChsYXlvdXRDb250cm9sbGVyLmlzTGF5b3V0VHlwZVNhbWUobGF5b3V0Q2ZnKSAmJiBsYXlvdXRDZmcuZ3B1RW5hYmxlZCA9PT0gb3JpTGF5b3V0Q2ZnLmdwdUVuYWJsZWQpIHtcbiAgICAgIC8vIG5vIHR5cGUgb3Igc2FtZSB0eXBlLCBvciBzd2l0Y2ggdGhlIGdwdSBhbmQgY3B1LCB1cGRhdGUgbGF5b3V0XG4gICAgICBsYXlvdXRDb250cm9sbGVyLnVwZGF0ZUxheW91dENmZyhsYXlvdXRDZmcpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBoYXMgZGlmZmVyZW50IHR5cGUsIGNoYW5nZSBsYXlvdXRcbiAgICAgIGxheW91dENvbnRyb2xsZXIuY2hhbmdlTGF5b3V0KGxheW91dENmZyk7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog6ZSA5q+B5biD5bGA77yMY2hhbmdlRGF0YSDml7bkuI3kvJrlho3kvb/nlKjljp/mnaXnmoTluIPlsYDmlrnms5Xlr7nmlrDmlbDmja7ov5vooYzluIPlsYBcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5kZXN0cm95TGF5b3V0ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsYXlvdXRDb250cm9sbGVyID0gdGhpcy5nZXQoJ2xheW91dENvbnRyb2xsZXInKTtcbiAgICBsYXlvdXRDb250cm9sbGVyLmRlc3Ryb3lMYXlvdXQoKTtcbiAgfTtcbiAgLyoqXG4gICAqIOmHjeaWsOS7peW9k+WJjeekuuS+i+S4remFjee9rueahOWxnuaAp+i/m+ihjOS4gOasoeW4g+WxgFxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmxheW91dCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGF5b3V0Q29udHJvbGxlciA9IHRoaXMuZ2V0KCdsYXlvdXRDb250cm9sbGVyJyk7XG4gICAgdmFyIGxheW91dENmZyA9IHRoaXMuZ2V0KCdsYXlvdXQnKTtcbiAgICBpZiAoIWxheW91dENmZyB8fCAhbGF5b3V0Q29udHJvbGxlcikgcmV0dXJuO1xuXG4gICAgaWYgKGxheW91dENmZy53b3JrZXJFbmFibGVkKSB7XG4gICAgICAvLyDlpoLmnpzkvb/nlKh3ZWIgd29ya2Vy5biD5bGAXG4gICAgICBsYXlvdXRDb250cm9sbGVyLmxheW91dCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChsYXlvdXRDb250cm9sbGVyLmxheW91dE1ldGhvZCkge1xuICAgICAgbGF5b3V0Q29udHJvbGxlci5yZWxheW91dCh0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGF5b3V0Q29udHJvbGxlci5sYXlvdXQoKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDmlLbotbfmjIflrprnmoQgY29tYm9cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBJQ29tYm99IGNvbWJvIGNvbWJvIElEIOaIliBjb21ibyBpdGVtXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuY29sbGFwc2VDb21ibyA9IGZ1bmN0aW9uIChjb21ibykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBpZiAoaXNTdHJpbmcoY29tYm8pKSB7XG4gICAgICBjb21ibyA9IHRoaXMuZmluZEJ5SWQoY29tYm8pO1xuICAgIH1cblxuICAgIGlmICghY29tYm8pIHtcbiAgICAgIGNvbnNvbGUud2FybignVGhlIGNvbWJvIHRvIGJlIGNvbGxhcHNlZCBkb2VzIG5vdCBleGlzdCEnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXQoJ2JlZm9yZWNvbGxhcHNlZXhwYW5kY29tYm8nLCB7XG4gICAgICBhY3Rpb246ICdleHBhbmQnLFxuICAgICAgaXRlbTogY29tYm9cbiAgICB9KTtcbiAgICB2YXIgY29tYm9Nb2RlbCA9IGNvbWJvLmdldE1vZGVsKCk7XG4gICAgdmFyIGl0ZW1Db250cm9sbGVyID0gdGhpcy5nZXQoJ2l0ZW1Db250cm9sbGVyJyk7XG4gICAgaXRlbUNvbnRyb2xsZXIuY29sbGFwc2VDb21ibyhjb21ibyk7XG4gICAgY29tYm9Nb2RlbC5jb2xsYXBzZWQgPSB0cnVlOyAvLyBhZGQgdmlydHVhbCBlZGdlc1xuXG4gICAgdmFyIGVkZ2VzID0gdGhpcy5nZXRFZGdlcygpLmNvbmNhdCh0aGlzLmdldCgndmVkZ2VzJykpOyAvLyBmaW5kIGFsbCB0aGUgZGVzY2VuZGFudCBub2RlcyBhbmQgY29tYm9zXG5cbiAgICB2YXIgY25vZGVzID0gW107XG4gICAgdmFyIGNjb21ib3MgPSBbXTtcbiAgICB2YXIgY29tYm9UcmVlcyA9IHRoaXMuZ2V0KCdjb21ib1RyZWVzJyk7XG4gICAgdmFyIGZvdW5kID0gZmFsc2U7XG4gICAgKGNvbWJvVHJlZXMgfHwgW10pLmZvckVhY2goZnVuY3Rpb24gKGN0cmVlKSB7XG4gICAgICBpZiAoZm91bmQpIHJldHVybjsgLy8gaWYgdGhlIGNvbWJvIGlzIGZvdW5kLCB0ZXJtaW5hdGUgdGhlIGZvckVhY2hcblxuICAgICAgdHJhdmVyc2VUcmVlKGN0cmVlLCBmdW5jdGlvbiAoc3ViVHJlZSkge1xuICAgICAgICAvLyBpZiB0aGUgY29tYm8gaXMgZm91bmQgYW5kIGl0IGlzIHRyYXZlcnNpbmcgdGhlIG90aGVyIGJyYW5jaGVzLCB0ZXJtaW5hdGVcbiAgICAgICAgaWYgKGZvdW5kICYmIHN1YlRyZWUuZGVwdGggPD0gY29tYm9Nb2RlbC5kZXB0aCkgcmV0dXJuIGZhbHNlOyAvLyBpZiB0aGUgY29tYm8gaXMgZm91bmRcblxuICAgICAgICBpZiAoY29tYm9Nb2RlbC5pZCA9PT0gc3ViVHJlZS5pZCkgZm91bmQgPSB0cnVlO1xuXG4gICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgIC8vIGlmIHRoZSBjb21ibyBpcyBmb3VuZCwgY29uY2F0IHRoZSBkZXNjZW5kYW50IG5vZGVzIGFuZCBjb21ib3NcbiAgICAgICAgICB2YXIgaXRlbSA9IF90aGlzLmZpbmRCeUlkKHN1YlRyZWUuaWQpO1xuXG4gICAgICAgICAgaWYgKGl0ZW0gJiYgaXRlbS5nZXRUeXBlICYmIGl0ZW0uZ2V0VHlwZSgpID09PSAnY29tYm8nKSB7XG4gICAgICAgICAgICBjbm9kZXMgPSBjbm9kZXMuY29uY2F0KGl0ZW0uZ2V0Tm9kZXMoKSk7XG4gICAgICAgICAgICBjY29tYm9zID0gY2NvbWJvcy5jb25jYXQoaXRlbS5nZXRDb21ib3MoKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB2YXIgZWRnZVdlaWdodE1hcCA9IHt9O1xuICAgIHZhciBhZGRlZFZFZGdlcyA9IFtdO1xuICAgIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIGlmIChlZGdlLmlzVmlzaWJsZSgpICYmICFlZGdlLmdldE1vZGVsKCkuaXNWRWRnZSkgcmV0dXJuO1xuICAgICAgdmFyIHNvdXJjZSA9IGVkZ2UuZ2V0U291cmNlKCk7XG4gICAgICB2YXIgdGFyZ2V0ID0gZWRnZS5nZXRUYXJnZXQoKTtcblxuICAgICAgaWYgKChjbm9kZXMuaW5jbHVkZXMoc291cmNlKSB8fCBjY29tYm9zLmluY2x1ZGVzKHNvdXJjZSkpICYmICFjbm9kZXMuaW5jbHVkZXModGFyZ2V0KSAmJiAhY2NvbWJvcy5pbmNsdWRlcyh0YXJnZXQpIHx8IHNvdXJjZS5nZXRNb2RlbCgpLmlkID09PSBjb21ib01vZGVsLmlkKSB7XG4gICAgICAgIHZhciBlZGdlTW9kZWwgPSBlZGdlLmdldE1vZGVsKCk7XG5cbiAgICAgICAgaWYgKGVkZ2VNb2RlbC5pc1ZFZGdlKSB7XG4gICAgICAgICAgX3RoaXMucmVtb3ZlSXRlbShlZGdlLCBmYWxzZSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgdGFyZ2V0TW9kZWwgPSB0YXJnZXQuZ2V0TW9kZWwoKTtcblxuICAgICAgICB3aGlsZSAoIXRhcmdldC5pc1Zpc2libGUoKSkge1xuICAgICAgICAgIHRhcmdldCA9IF90aGlzLmZpbmRCeUlkKHRhcmdldE1vZGVsLnBhcmVudElkIHx8IHRhcmdldE1vZGVsLmNvbWJvSWQpO1xuICAgICAgICAgIGlmICghdGFyZ2V0IHx8ICF0YXJnZXRNb2RlbC5wYXJlbnRJZCAmJiAhdGFyZ2V0TW9kZWwuY29tYm9JZCkgcmV0dXJuOyAvLyBhbGwgdGhlIGFuY2VzdG9ycyBhcmUgaGlkZGVuLCB0aGVuIGlnbm9yZSB0aGUgZWRnZVxuXG4gICAgICAgICAgdGFyZ2V0TW9kZWwgPSB0YXJnZXQuZ2V0TW9kZWwoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB0YXJnZXRJZCA9IHRhcmdldE1vZGVsLmlkO1xuXG4gICAgICAgIGlmIChlZGdlV2VpZ2h0TWFwW2NvbWJvTW9kZWwuaWQgKyBcIi1cIiArIHRhcmdldElkXSkge1xuICAgICAgICAgIGVkZ2VXZWlnaHRNYXBbY29tYm9Nb2RlbC5pZCArIFwiLVwiICsgdGFyZ2V0SWRdICs9IGVkZ2VNb2RlbC5zaXplIHx8IDE7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IC8vIHRoZSBzb3VyY2UgaXMgaW4gdGhlIGNvbWJvLCB0aGUgdGFyZ2V0IGlzIG5vdFxuXG5cbiAgICAgICAgdmFyIHZlZGdlID0gX3RoaXMuYWRkSXRlbSgndmVkZ2UnLCB7XG4gICAgICAgICAgc291cmNlOiBjb21ib01vZGVsLmlkLFxuICAgICAgICAgIHRhcmdldDogdGFyZ2V0SWQsXG4gICAgICAgICAgaXNWRWRnZTogdHJ1ZVxuICAgICAgICB9LCBmYWxzZSk7XG5cbiAgICAgICAgZWRnZVdlaWdodE1hcFtjb21ib01vZGVsLmlkICsgXCItXCIgKyB0YXJnZXRJZF0gPSBlZGdlTW9kZWwuc2l6ZSB8fCAxO1xuICAgICAgICBhZGRlZFZFZGdlcy5wdXNoKHZlZGdlKTtcbiAgICAgIH0gZWxzZSBpZiAoIWNub2Rlcy5pbmNsdWRlcyhzb3VyY2UpICYmICFjY29tYm9zLmluY2x1ZGVzKHNvdXJjZSkgJiYgKGNub2Rlcy5pbmNsdWRlcyh0YXJnZXQpIHx8IGNjb21ib3MuaW5jbHVkZXModGFyZ2V0KSkgfHwgdGFyZ2V0LmdldE1vZGVsKCkuaWQgPT09IGNvbWJvTW9kZWwuaWQpIHtcbiAgICAgICAgdmFyIGVkZ2VNb2RlbCA9IGVkZ2UuZ2V0TW9kZWwoKTtcblxuICAgICAgICBpZiAoZWRnZU1vZGVsLmlzVkVkZ2UpIHtcbiAgICAgICAgICBfdGhpcy5yZW1vdmVJdGVtKGVkZ2UsIGZhbHNlKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzb3VyY2VNb2RlbCA9IHNvdXJjZS5nZXRNb2RlbCgpO1xuXG4gICAgICAgIHdoaWxlICghc291cmNlLmlzVmlzaWJsZSgpKSB7XG4gICAgICAgICAgc291cmNlID0gX3RoaXMuZmluZEJ5SWQoc291cmNlTW9kZWwucGFyZW50SWQgfHwgc291cmNlTW9kZWwuY29tYm9JZCk7XG4gICAgICAgICAgaWYgKCFzb3VyY2UgfHwgIXNvdXJjZU1vZGVsLnBhcmVudElkICYmICFzb3VyY2VNb2RlbC5jb21ib0lkKSByZXR1cm47IC8vIGFsbCB0aGUgYW5jZXN0b3JzIGFyZSBoaWRkZW4sIHRoZW4gaWdub3JlIHRoZSBlZGdlXG5cbiAgICAgICAgICBzb3VyY2VNb2RlbCA9IHNvdXJjZS5nZXRNb2RlbCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHNvdXJjZUlkID0gc291cmNlTW9kZWwuaWQ7XG5cbiAgICAgICAgaWYgKGVkZ2VXZWlnaHRNYXBbc291cmNlSWQgKyBcIi1cIiArIGNvbWJvTW9kZWwuaWRdKSB7XG4gICAgICAgICAgZWRnZVdlaWdodE1hcFtzb3VyY2VJZCArIFwiLVwiICsgY29tYm9Nb2RlbC5pZF0gKz0gZWRnZU1vZGVsLnNpemUgfHwgMTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gLy8gdGhlIHRhcmdldCBpcyBpbiB0aGUgY29tYm8sIHRoZSBzb3VyY2UgaXMgbm90XG5cblxuICAgICAgICB2YXIgdmVkZ2UgPSBfdGhpcy5hZGRJdGVtKCd2ZWRnZScsIHtcbiAgICAgICAgICB0YXJnZXQ6IGNvbWJvTW9kZWwuaWQsXG4gICAgICAgICAgc291cmNlOiBzb3VyY2VJZCxcbiAgICAgICAgICBpc1ZFZGdlOiB0cnVlXG4gICAgICAgIH0sIGZhbHNlKTtcblxuICAgICAgICBlZGdlV2VpZ2h0TWFwW3NvdXJjZUlkICsgXCItXCIgKyBjb21ib01vZGVsLmlkXSA9IGVkZ2VNb2RlbC5zaXplIHx8IDE7XG4gICAgICAgIGFkZGVkVkVkZ2VzLnB1c2godmVkZ2UpO1xuICAgICAgfVxuICAgIH0pOyAvLyB1cGRhdGUgdGhlIHdpZHRoIG9mIHRoZSB2aXJ0dWFsIGVkZ2VzLCB3aGljaCBpcyB0aGUgc3VtIG9mIG1lcmdlZCBhY3R1YWwgZWRnZXNcbiAgICAvLyBiZSBhdHRlbnRpb24gdGhhdCB0aGUgYWN0dWFsIGVkZ2VzIHdpdGggc2FtZSBlbmRwb2ludHMgYnV0IGRpZmZlcmVudCBkaXJlY3Rpb25zIHdpbGwgYmUgcmVwcmVzZW50ZWQgYnkgdHdvIGRpZmZlcmVudCB2aXJ0dWFsIGVkZ2VzXG5cbiAgICBhZGRlZFZFZGdlcy5mb3JFYWNoKGZ1bmN0aW9uICh2ZWRnZSkge1xuICAgICAgdmFyIHZlZGdlTW9kZWwgPSB2ZWRnZS5nZXRNb2RlbCgpO1xuXG4gICAgICBfdGhpcy51cGRhdGVJdGVtKHZlZGdlLCB7XG4gICAgICAgIHNpemU6IGVkZ2VXZWlnaHRNYXBbdmVkZ2VNb2RlbC5zb3VyY2UgKyBcIi1cIiArIHZlZGdlTW9kZWwudGFyZ2V0XVxuICAgICAgfSwgZmFsc2UpO1xuICAgIH0pO1xuICAgIHRoaXMuZW1pdCgnYWZ0ZXJjb2xsYXBzZWV4cGFuZGNvbWJvJywge1xuICAgICAgYWN0aW9uOiAnY29sbGFwc2UnLFxuICAgICAgaXRlbTogY29tYm9cbiAgICB9KTtcbiAgfTtcbiAgLyoqXG4gICAqIOWxleW8gOaMh+WumueahCBjb21ib1xuICAgKiBAcGFyYW0ge3N0cmluZyB8IElDb21ib30gY29tYm8gY29tYm8gSUQg5oiWIGNvbWJvIGl0ZW1cbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5leHBhbmRDb21ibyA9IGZ1bmN0aW9uIChjb21ibykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBpZiAoaXNTdHJpbmcoY29tYm8pKSB7XG4gICAgICBjb21ibyA9IHRoaXMuZmluZEJ5SWQoY29tYm8pO1xuICAgIH1cblxuICAgIGlmICghY29tYm8gfHwgY29tYm8uZ2V0VHlwZSAmJiBjb21iby5nZXRUeXBlKCkgIT09ICdjb21ibycpIHtcbiAgICAgIGNvbnNvbGUud2FybignVGhlIGNvbWJvIHRvIGJlIGNvbGxhcHNlZCBkb2VzIG5vdCBleGlzdCEnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXQoJ2JlZm9yZWNvbGxhcHNlZXhwYW5kY29tYm8nLCB7XG4gICAgICBhY3Rpb246ICdleHBhbmQnLFxuICAgICAgaXRlbTogY29tYm9cbiAgICB9KTtcbiAgICB2YXIgY29tYm9Nb2RlbCA9IGNvbWJvLmdldE1vZGVsKCk7XG4gICAgdmFyIGl0ZW1Db250cm9sbGVyID0gdGhpcy5nZXQoJ2l0ZW1Db250cm9sbGVyJyk7XG4gICAgaXRlbUNvbnRyb2xsZXIuZXhwYW5kQ29tYm8oY29tYm8pO1xuICAgIGNvbWJvTW9kZWwuY29sbGFwc2VkID0gZmFsc2U7IC8vIGFkZCB2aXJ0dWFsIGVkZ2VzXG5cbiAgICB2YXIgZWRnZXMgPSB0aGlzLmdldEVkZ2VzKCkuY29uY2F0KHRoaXMuZ2V0KCd2ZWRnZXMnKSk7IC8vIGZpbmQgYWxsIHRoZSBkZXNjZW5kYW50IG5vZGVzIGFuZCBjb21ib3NcblxuICAgIHZhciBjbm9kZXMgPSBbXTtcbiAgICB2YXIgY2NvbWJvcyA9IFtdO1xuICAgIHZhciBjb21ib1RyZWVzID0gdGhpcy5nZXQoJ2NvbWJvVHJlZXMnKTtcbiAgICB2YXIgZm91bmQgPSBmYWxzZTtcbiAgICAoY29tYm9UcmVlcyB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbiAoY3RyZWUpIHtcbiAgICAgIGlmIChmb3VuZCkgcmV0dXJuOyAvLyBpZiB0aGUgY29tYm8gaXMgZm91bmQsIHRlcm1pbmF0ZVxuXG4gICAgICB0cmF2ZXJzZVRyZWUoY3RyZWUsIGZ1bmN0aW9uIChzdWJUcmVlKSB7XG4gICAgICAgIC8vIGlmIHRoZSBjb21ibyBpcyBmb3VuZCBhbmQgaXQgaXMgdHJhdmVyc2luZyB0aGUgb3RoZXIgYnJhbmNoZXMsIHRlcm1pbmF0ZVxuICAgICAgICBpZiAoZm91bmQgJiYgc3ViVHJlZS5kZXB0aCA8PSBjb21ib01vZGVsLmRlcHRoKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmIChjb21ib01vZGVsLmlkID09PSBzdWJUcmVlLmlkKSBmb3VuZCA9IHRydWU7XG5cbiAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgdmFyIGl0ZW0gPSBfdGhpcy5maW5kQnlJZChzdWJUcmVlLmlkKTtcblxuICAgICAgICAgIGlmIChpdGVtICYmIGl0ZW0uZ2V0VHlwZSAmJiBpdGVtLmdldFR5cGUoKSA9PT0gJ2NvbWJvJykge1xuICAgICAgICAgICAgY25vZGVzID0gY25vZGVzLmNvbmNhdChpdGVtLmdldE5vZGVzKCkpO1xuICAgICAgICAgICAgY2NvbWJvcyA9IGNjb21ib3MuY29uY2F0KGl0ZW0uZ2V0Q29tYm9zKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgdmFyIGVkZ2VXZWlnaHRNYXAgPSB7fTtcbiAgICB2YXIgYWRkZWRWRWRnZXMgPSB7fTtcbiAgICBlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICBpZiAoZWRnZS5pc1Zpc2libGUoKSAmJiAhZWRnZS5nZXRNb2RlbCgpLmlzVkVkZ2UpIHJldHVybjtcbiAgICAgIHZhciBzb3VyY2UgPSBlZGdlLmdldFNvdXJjZSgpO1xuICAgICAgdmFyIHRhcmdldCA9IGVkZ2UuZ2V0VGFyZ2V0KCk7XG4gICAgICB2YXIgc291cmNlSWQgPSBzb3VyY2UuZ2V0KCdpZCcpO1xuICAgICAgdmFyIHRhcmdldElkID0gdGFyZ2V0LmdldCgnaWQnKTtcblxuICAgICAgaWYgKChjbm9kZXMuaW5jbHVkZXMoc291cmNlKSB8fCBjY29tYm9zLmluY2x1ZGVzKHNvdXJjZSkpICYmICFjbm9kZXMuaW5jbHVkZXModGFyZ2V0KSAmJiAhY2NvbWJvcy5pbmNsdWRlcyh0YXJnZXQpIHx8IHNvdXJjZUlkID09PSBjb21ib01vZGVsLmlkKSB7XG4gICAgICAgIC8vIHRoZSBzb3VyY2UgaXMgaW4gdGhlIGNvbWJvLCB0aGUgdGFyZ2V0IGlzIG5vdFxuICAgICAgICAvLyBpZ25vcmUgdGhlIHZpcnR1YWwgZWRnZXNcbiAgICAgICAgaWYgKGVkZ2UuZ2V0TW9kZWwoKS5pc1ZFZGdlKSB7XG4gICAgICAgICAgX3RoaXMucmVtb3ZlSXRlbShlZGdlLCBmYWxzZSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgdGFyZ2V0TW9kZWwgPSB0YXJnZXQuZ2V0TW9kZWwoKTsgLy8gZmluZCB0aGUgbmVhcmVzdCB2aXNpYmxlIGFuY2VzdG9yXG5cbiAgICAgICAgd2hpbGUgKCF0YXJnZXQuaXNWaXNpYmxlKCkpIHtcbiAgICAgICAgICB0YXJnZXQgPSBfdGhpcy5maW5kQnlJZCh0YXJnZXRNb2RlbC5jb21ib0lkIHx8IHRhcmdldE1vZGVsLnBhcmVudElkKTtcblxuICAgICAgICAgIGlmICghdGFyZ2V0IHx8ICF0YXJnZXRNb2RlbC5wYXJlbnRJZCAmJiAhdGFyZ2V0TW9kZWwuY29tYm9JZCkge1xuICAgICAgICAgICAgcmV0dXJuOyAvLyBpZiBhbGwgdGhlIGFuY2VzdG9ycyBvZiB0aGUgb3Bwc2l0ZSBhcmUgYWxsIGhpZGRlbiwgaWdub3JlIHRoZSBlZGdlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGFyZ2V0TW9kZWwgPSB0YXJnZXQuZ2V0TW9kZWwoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRhcmdldElkID0gdGFyZ2V0TW9kZWwuaWQ7XG4gICAgICAgIHZhciBzb3VyY2VNb2RlbCA9IHNvdXJjZS5nZXRNb2RlbCgpOyAvLyBmaW5kIHRoZSBuZWFyZXN0IHZpc2libGUgYW5jZXN0b3JcblxuICAgICAgICB3aGlsZSAoIXNvdXJjZS5pc1Zpc2libGUoKSkge1xuICAgICAgICAgIHNvdXJjZSA9IF90aGlzLmZpbmRCeUlkKHNvdXJjZU1vZGVsLmNvbWJvSWQgfHwgc291cmNlTW9kZWwucGFyZW50SWQpO1xuXG4gICAgICAgICAgaWYgKCFzb3VyY2UgfHwgIXNvdXJjZU1vZGVsLnBhcmVudElkICYmICFzb3VyY2VNb2RlbC5jb21ib0lkKSB7XG4gICAgICAgICAgICByZXR1cm47IC8vIGlmIGFsbCB0aGUgYW5jZXN0b3JzIG9mIHRoZSBvcHBzaXRlIGFyZSBhbGwgaGlkZGVuLCBpZ25vcmUgdGhlIGVkZ2VcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc291cmNlTW9kZWwuY29tYm9JZCA9PT0gY29tYm9Nb2RlbC5pZCB8fCBzb3VyY2VNb2RlbC5wYXJlbnRJZCA9PT0gY29tYm9Nb2RlbC5pZCkge1xuICAgICAgICAgICAgYnJlYWs7IC8vIGlmIHRoZSBuZXh0IGFuY2VzdG9yIGlzIHRoZSBjb21ibywgYnJlYWsgdGhlIHdoaWxlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc291cmNlTW9kZWwgPSBzb3VyY2UuZ2V0TW9kZWwoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNvdXJjZUlkID0gc291cmNlTW9kZWwuaWQ7XG5cbiAgICAgICAgaWYgKHRhcmdldElkKSB7XG4gICAgICAgICAgdmFyIHZlZGdlSWQgPSBzb3VyY2VJZCArIFwiLVwiICsgdGFyZ2V0SWQ7IC8vIHVwZGF0ZSB0aGUgd2lkdGggb2YgdGhlIHZpcnR1YWwgZWRnZXMsIHdoaWNoIGlzIHRoZSBzdW0gb2YgbWVyZ2VkIGFjdHVhbCBlZGdlc1xuICAgICAgICAgIC8vIGJlIGF0dGVudGlvbiB0aGF0IHRoZSBhY3R1YWwgZWRnZXMgd2l0aCBzYW1lIGVuZHBvaW50cyBidXQgZGlmZmVyZW50IGRpcmVjdGlvbnMgd2lsbCBiZSByZXByZXNlbnRlZCBieSB0d28gZGlmZmVyZW50IHZpcnR1YWwgZWRnZXNcblxuICAgICAgICAgIGlmIChlZGdlV2VpZ2h0TWFwW3ZlZGdlSWRdKSB7XG4gICAgICAgICAgICBlZGdlV2VpZ2h0TWFwW3ZlZGdlSWRdICs9IGVkZ2UuZ2V0TW9kZWwoKS5zaXplIHx8IDE7XG5cbiAgICAgICAgICAgIF90aGlzLnVwZGF0ZUl0ZW0oYWRkZWRWRWRnZXNbdmVkZ2VJZF0sIHtcbiAgICAgICAgICAgICAgc2l6ZTogZWRnZVdlaWdodE1hcFt2ZWRnZUlkXVxuICAgICAgICAgICAgfSwgZmFsc2UpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIHZlZGdlID0gX3RoaXMuYWRkSXRlbSgndmVkZ2UnLCB7XG4gICAgICAgICAgICBzb3VyY2U6IHNvdXJjZUlkLFxuICAgICAgICAgICAgdGFyZ2V0OiB0YXJnZXRJZCxcbiAgICAgICAgICAgIGlzVkVkZ2U6IHRydWVcbiAgICAgICAgICB9LCBmYWxzZSk7XG5cbiAgICAgICAgICBlZGdlV2VpZ2h0TWFwW3ZlZGdlSWRdID0gZWRnZS5nZXRNb2RlbCgpLnNpemUgfHwgMTtcbiAgICAgICAgICBhZGRlZFZFZGdlc1t2ZWRnZUlkXSA9IHZlZGdlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKCFjbm9kZXMuaW5jbHVkZXMoc291cmNlKSAmJiAhY2NvbWJvcy5pbmNsdWRlcyhzb3VyY2UpICYmIChjbm9kZXMuaW5jbHVkZXModGFyZ2V0KSB8fCBjY29tYm9zLmluY2x1ZGVzKHRhcmdldCkpIHx8IHRhcmdldElkID09PSBjb21ib01vZGVsLmlkKSB7XG4gICAgICAgIC8vIHRoZSB0YXJnZXQgaXMgaW4gdGhlIGNvbWJvLCB0aGUgc291cmNlIGlzIG5vdFxuICAgICAgICAvLyBpZ25vcmUgdGhlIHZpcnR1YWwgZWRnZXNcbiAgICAgICAgaWYgKGVkZ2UuZ2V0TW9kZWwoKS5pc1ZFZGdlKSB7XG4gICAgICAgICAgX3RoaXMucmVtb3ZlSXRlbShlZGdlLCBmYWxzZSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgc291cmNlTW9kZWwgPSBzb3VyY2UuZ2V0TW9kZWwoKTsgLy8gZmluZCB0aGUgbmVhcmVzdCB2aXNpYmxlIGFuY2VzdG9yXG5cbiAgICAgICAgd2hpbGUgKCFzb3VyY2UuaXNWaXNpYmxlKCkpIHtcbiAgICAgICAgICBzb3VyY2UgPSBfdGhpcy5maW5kQnlJZChzb3VyY2VNb2RlbC5jb21ib0lkIHx8IHNvdXJjZU1vZGVsLnBhcmVudElkKTtcblxuICAgICAgICAgIGlmICghc291cmNlIHx8ICFzb3VyY2VNb2RlbC5wYXJlbnRJZCAmJiAhc291cmNlTW9kZWwuY29tYm9JZCkge1xuICAgICAgICAgICAgcmV0dXJuOyAvLyBpZiBhbGwgdGhlIGFuY2VzdG9ycyBvZiB0aGUgb3Bwc2l0ZSBhcmUgYWxsIGhpZGRlbiwgaWdub3JlIHRoZSBlZGdlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc291cmNlTW9kZWwgPSBzb3VyY2UuZ2V0TW9kZWwoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNvdXJjZUlkID0gc291cmNlTW9kZWwuaWQ7XG4gICAgICAgIHZhciB0YXJnZXRNb2RlbCA9IHRhcmdldC5nZXRNb2RlbCgpOyAvLyBmaW5kIHRoZSBuZWFyZXN0IHZpc2libGUgYW5jZXN0b3JcblxuICAgICAgICB3aGlsZSAoIXRhcmdldC5pc1Zpc2libGUoKSkge1xuICAgICAgICAgIHRhcmdldCA9IF90aGlzLmZpbmRCeUlkKHRhcmdldE1vZGVsLmNvbWJvSWQgfHwgdGFyZ2V0TW9kZWwucGFyZW50SWQpO1xuXG4gICAgICAgICAgaWYgKCF0YXJnZXQgfHwgIXRhcmdldE1vZGVsLnBhcmVudElkICYmICF0YXJnZXRNb2RlbC5jb21ib0lkKSB7XG4gICAgICAgICAgICByZXR1cm47IC8vIGlmIGFsbCB0aGUgYW5jZXN0b3JzIG9mIHRoZSBvcHBzaXRlIGFyZSBhbGwgaGlkZGVuLCBpZ25vcmUgdGhlIGVkZ2VcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodGFyZ2V0TW9kZWwuY29tYm9JZCA9PT0gY29tYm9Nb2RlbC5pZCB8fCB0YXJnZXRNb2RlbC5wYXJlbnRJZCA9PT0gY29tYm9Nb2RlbC5pZCkge1xuICAgICAgICAgICAgYnJlYWs7IC8vIGlmIHRoZSBuZXh0IGFuY2VzdG9yIGlzIHRoZSBjb21ibywgYnJlYWsgdGhlIHdoaWxlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGFyZ2V0TW9kZWwgPSB0YXJnZXQuZ2V0TW9kZWwoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRhcmdldElkID0gdGFyZ2V0TW9kZWwuaWQ7XG5cbiAgICAgICAgaWYgKHNvdXJjZUlkKSB7XG4gICAgICAgICAgdmFyIHZlZGdlSWQgPSBzb3VyY2VJZCArIFwiLVwiICsgdGFyZ2V0SWQ7IC8vIHVwZGF0ZSB0aGUgd2lkdGggb2YgdGhlIHZpcnR1YWwgZWRnZXMsIHdoaWNoIGlzIHRoZSBzdW0gb2YgbWVyZ2VkIGFjdHVhbCBlZGdlc1xuICAgICAgICAgIC8vIGJlIGF0dGVudGlvbiB0aGF0IHRoZSBhY3R1YWwgZWRnZXMgd2l0aCBzYW1lIGVuZHBvaW50cyBidXQgZGlmZmVyZW50IGRpcmVjdGlvbnMgd2lsbCBiZSByZXByZXNlbnRlZCBieSB0d28gZGlmZmVyZW50IHZpcnR1YWwgZWRnZXNcblxuICAgICAgICAgIGlmIChlZGdlV2VpZ2h0TWFwW3ZlZGdlSWRdKSB7XG4gICAgICAgICAgICBlZGdlV2VpZ2h0TWFwW3ZlZGdlSWRdICs9IGVkZ2UuZ2V0TW9kZWwoKS5zaXplIHx8IDE7XG5cbiAgICAgICAgICAgIF90aGlzLnVwZGF0ZUl0ZW0oYWRkZWRWRWRnZXNbdmVkZ2VJZF0sIHtcbiAgICAgICAgICAgICAgc2l6ZTogZWRnZVdlaWdodE1hcFt2ZWRnZUlkXVxuICAgICAgICAgICAgfSwgZmFsc2UpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIHZlZGdlID0gX3RoaXMuYWRkSXRlbSgndmVkZ2UnLCB7XG4gICAgICAgICAgICB0YXJnZXQ6IHRhcmdldElkLFxuICAgICAgICAgICAgc291cmNlOiBzb3VyY2VJZCxcbiAgICAgICAgICAgIGlzVkVkZ2U6IHRydWVcbiAgICAgICAgICB9LCBmYWxzZSk7XG5cbiAgICAgICAgICBlZGdlV2VpZ2h0TWFwW3ZlZGdlSWRdID0gZWRnZS5nZXRNb2RlbCgpLnNpemUgfHwgMTtcbiAgICAgICAgICBhZGRlZFZFZGdlc1t2ZWRnZUlkXSA9IHZlZGdlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKChjbm9kZXMuaW5jbHVkZXMoc291cmNlKSB8fCBjY29tYm9zLmluY2x1ZGVzKHNvdXJjZSkpICYmIChjbm9kZXMuaW5jbHVkZXModGFyZ2V0KSB8fCBjY29tYm9zLmluY2x1ZGVzKHRhcmdldCkpKSB7XG4gICAgICAgIC8vIGJvdGggc291cmNlIGFuZCB0YXJnZXQgYXJlIGluIHRoZSBjb21ibywgaWYgdGhlIHRhcmdldCBhbmQgc291cmNlIGFyZSBib3RoIHZpc2libGUsIHNob3cgdGhlIGVkZ2VcbiAgICAgICAgaWYgKHNvdXJjZS5pc1Zpc2libGUoKSAmJiB0YXJnZXQuaXNWaXNpYmxlKCkpIHtcbiAgICAgICAgICBlZGdlLnNob3coKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuZW1pdCgnYWZ0ZXJjb2xsYXBzZWV4cGFuZGNvbWJvJywge1xuICAgICAgYWN0aW9uOiAnZXhwYW5kJyxcbiAgICAgIGl0ZW06IGNvbWJvXG4gICAgfSk7XG4gIH07XG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuY29sbGFwc2VFeHBhbmRDb21ibyA9IGZ1bmN0aW9uIChjb21ibykge1xuICAgIGlmIChpc1N0cmluZyhjb21ibykpIHtcbiAgICAgIGNvbWJvID0gdGhpcy5maW5kQnlJZChjb21ibyk7XG4gICAgfVxuXG4gICAgaWYgKCFjb21ibyB8fCBjb21iby5nZXRUeXBlICYmIGNvbWJvLmdldFR5cGUoKSAhPT0gJ2NvbWJvJykgcmV0dXJuO1xuICAgIHZhciBjb21ib01vZGVsID0gY29tYm8uZ2V0TW9kZWwoKTsgLy8gaWYgb25lIGFuY2VzdG9yIGNvbWJvIG9mIHRoZSBjb21ibyBpcyBjb2xsYXBzZWQsIGl0IHNob3VsZCBub3QgYmUgY29sbGFwc2VkIG9yIGV4cGFuZGVkXG5cbiAgICB2YXIgcGFyZW50SXRlbSA9IHRoaXMuZmluZEJ5SWQoY29tYm9Nb2RlbC5wYXJlbnRJZCk7XG5cbiAgICB3aGlsZSAocGFyZW50SXRlbSkge1xuICAgICAgdmFyIHBhcmVudE1vZGVsID0gcGFyZW50SXRlbS5nZXRNb2RlbCgpO1xuXG4gICAgICBpZiAocGFyZW50TW9kZWwuY29sbGFwc2VkKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcIkZhaWwgdG8gZXhwYW5kIHRoZSBjb21ibyBzaW5jZSBpdCdzIGFuY2VzdG9yIGNvbWJvIGlzIGNvbGxhcHNlZC5cIik7XG4gICAgICAgIHBhcmVudEl0ZW0gPSB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcGFyZW50SXRlbSA9IHRoaXMuZmluZEJ5SWQocGFyZW50TW9kZWwucGFyZW50SWQpO1xuICAgIH1cblxuICAgIHZhciBjb2xsYXBzZWQgPSBjb21ib01vZGVsLmNvbGxhcHNlZDsgLy8g6K+l576k57uE5bey57uP5aSE5LqO5pS26LW354q25oCB77yM6ZyA6KaB5bGV5byAXG5cbiAgICBpZiAoY29sbGFwc2VkKSB7XG4gICAgICB0aGlzLmV4cGFuZENvbWJvKGNvbWJvKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb2xsYXBzZUNvbWJvKGNvbWJvKTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZUNvbWJvKGNvbWJvKTtcbiAgfTtcbiAgLyoqXG4gICAqIOagueaNriBjb21ib1RyZWUg57uT5p6E5pW055CGIENvbWJvIOebuOWFs+eahOWbvuW9oue7mOWItuWxgue6p++8jOWMheaLrCBDb21ibyDmnKzouqvjgIHoioLngrnjgIHovrlcbiAgICogQHBhcmFtIHtHcmFwaERhdGF9IGRhdGEg5pWw5o2uXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuc29ydENvbWJvcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIGNvbWJvU29ydGVkID0gdGhpcy5nZXQoJ2NvbWJvU29ydGVkJyk7XG4gICAgaWYgKGNvbWJvU29ydGVkKSByZXR1cm47XG4gICAgdGhpcy5zZXQoJ2NvbWJvU29ydGVkJywgdHJ1ZSk7XG4gICAgdmFyIGRlcHRoTWFwID0gW107XG4gICAgdmFyIGRhdGFEZXB0aE1hcCA9IHt9O1xuICAgIHZhciBjb21ib1RyZWVzID0gdGhpcy5nZXQoJ2NvbWJvVHJlZXMnKTtcbiAgICAoY29tYm9UcmVlcyB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbiAoY1RyZWUpIHtcbiAgICAgIHRyYXZlcnNlVHJlZShjVHJlZSwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgIGlmIChkZXB0aE1hcFtjaGlsZC5kZXB0aF0pIGRlcHRoTWFwW2NoaWxkLmRlcHRoXS5wdXNoKGNoaWxkLmlkKTtlbHNlIGRlcHRoTWFwW2NoaWxkLmRlcHRoXSA9IFtjaGlsZC5pZF07XG4gICAgICAgIGRhdGFEZXB0aE1hcFtjaGlsZC5pZF0gPSBjaGlsZC5kZXB0aDtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB2YXIgZWRnZXMgPSB0aGlzLmdldEVkZ2VzKCkuY29uY2F0KHRoaXMuZ2V0KCd2ZWRnZXMnKSk7XG4gICAgKGVkZ2VzIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlSXRlbSkge1xuICAgICAgdmFyIGVkZ2UgPSBlZGdlSXRlbS5nZXRNb2RlbCgpO1xuICAgICAgdmFyIHNvdXJjZURlcHRoID0gZGF0YURlcHRoTWFwW2VkZ2Uuc291cmNlXSB8fCAwO1xuICAgICAgdmFyIHRhcmdldERlcHRoID0gZGF0YURlcHRoTWFwW2VkZ2UudGFyZ2V0XSB8fCAwO1xuICAgICAgdmFyIGRlcHRoID0gTWF0aC5tYXgoc291cmNlRGVwdGgsIHRhcmdldERlcHRoKTtcbiAgICAgIGlmIChkZXB0aE1hcFtkZXB0aF0pIGRlcHRoTWFwW2RlcHRoXS5wdXNoKGVkZ2UuaWQpO2Vsc2UgZGVwdGhNYXBbZGVwdGhdID0gW2VkZ2UuaWRdO1xuICAgIH0pO1xuICAgIGRlcHRoTWFwLmZvckVhY2goZnVuY3Rpb24gKGFycmF5KSB7XG4gICAgICBpZiAoIWFycmF5IHx8ICFhcnJheS5sZW5ndGgpIHJldHVybjtcblxuICAgICAgZm9yICh2YXIgaSA9IGFycmF5Lmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHZhciBpdGVtID0gX3RoaXMuZmluZEJ5SWQoYXJyYXlbaV0pO1xuXG4gICAgICAgIGlmIChpdGVtKSBpdGVtLnRvRnJvbnQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPluiKgueCueaJgOacieeahOmCu+WxheiKgueCuVxuICAgKlxuICAgKiBAcGFyYW0geyhzdHJpbmcgfCBJTm9kZSl9IG5vZGUg6IqC54K5IElEIOaIluWunuS+i1xuICAgKiBAcmV0dXJucyB7SU5vZGVbXX1cbiAgICogQG1lbWJlcm9mIElBYnN0cmFjdEdyYXBoXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0TmVpZ2hib3JzID0gZnVuY3Rpb24gKG5vZGUsIHR5cGUpIHtcbiAgICB2YXIgaXRlbSA9IG5vZGU7XG5cbiAgICBpZiAoaXNTdHJpbmcobm9kZSkpIHtcbiAgICAgIGl0ZW0gPSB0aGlzLmZpbmRCeUlkKG5vZGUpO1xuICAgIH1cblxuICAgIHJldHVybiBpdGVtLmdldE5laWdoYm9ycyh0eXBlKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPliBub2RlIOeahOW6puaVsFxuICAgKlxuICAgKiBAcGFyYW0geyhzdHJpbmcgfCBJTm9kZSl9IG5vZGUg6IqC54K5IElEIOaIluWunuS+i1xuICAgKiBAcGFyYW0geygnaW4nIHwgJ291dCcgfCAndG90YWwnIHwgJ2FsbCcgfCB1bmRlZmluZWQpfSDluqbmlbDnsbvlnovvvIxpbiDlhaXluqbvvIxvdXQg5Ye65bqm77yMdG90YWwg5oC75bqm5pWw77yMYWxsIOi/lOWbnuS4ieenjeexu+Wei+W6puaVsOeahOWvueixoVxuICAgKiBAcmV0dXJucyB7TnVtYmVyIHwgT2JqZWN0fSDor6XoioLngrnnmoTluqbmlbBcbiAgICogQG1lbWJlcm9mIElBYnN0cmFjdEdyYXBoXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0Tm9kZURlZ3JlZSA9IGZ1bmN0aW9uIChub2RlLCB0eXBlLCByZWZyZXNoKSB7XG4gICAgaWYgKHR5cGUgPT09IHZvaWQgMCkge1xuICAgICAgdHlwZSA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAocmVmcmVzaCA9PT0gdm9pZCAwKSB7XG4gICAgICByZWZyZXNoID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdmFyIGl0ZW0gPSBub2RlO1xuXG4gICAgaWYgKGlzU3RyaW5nKG5vZGUpKSB7XG4gICAgICBpdGVtID0gdGhpcy5maW5kQnlJZChub2RlKTtcbiAgICB9XG5cbiAgICB2YXIgZGVncmVlcyA9IHRoaXMuZ2V0KCdkZWdyZWVzJyk7XG5cbiAgICBpZiAoIWRlZ3JlZXMgfHwgcmVmcmVzaCkge1xuICAgICAgZGVncmVlcyA9IGdldERlZ3JlZSh0aGlzLnNhdmUoKSk7XG4gICAgICB0aGlzLnNldCgnZGVncmVlcycsIGRlZ3JlZXMpO1xuICAgIH1cblxuICAgIHZhciBub2RlRGVncmVlcyA9IGRlZ3JlZXNbaXRlbS5nZXRJRCgpXTtcbiAgICB2YXIgcmVzID0gMDsgLy8g5aaC5p6c5piv6YCa6L+HIGFkZEl0ZW0g5ZCO6Z2i5paw5aKe5Yqg55qE6IqC54K577yM5q2k5pe25a6D55qE5omA5pyJ5bqm5pWw6YO95Li6IDBcblxuICAgIGlmICghbm9kZURlZ3JlZXMpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnaW4nOlxuICAgICAgICByZXMgPSBub2RlRGVncmVlcy5pbkRlZ3JlZTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ291dCc6XG4gICAgICAgIHJlcyA9IG5vZGVEZWdyZWVzLm91dERlZ3JlZTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2FsbCc6XG4gICAgICAgIHJlcyA9IG5vZGVEZWdyZWVzO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmVzID0gbm9kZURlZ3JlZXMuZGVncmVlO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldFVuZG9TdGFjayA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy51bmRvU3RhY2s7XG4gIH07XG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZ2V0UmVkb1N0YWNrID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLnJlZG9TdGFjaztcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPliB1bmRvIOWSjCByZWRvIOagiOeahOaVsOaNrlxuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldFN0YWNrRGF0YSA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXRoaXMuZ2V0KCdlbmFibGVkU3RhY2snKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHVuZG9TdGFjazogdGhpcy51bmRvU3RhY2sudG9BcnJheSgpLFxuICAgICAgcmVkb1N0YWNrOiB0aGlzLnJlZG9TdGFjay50b0FycmF5KClcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICog5riF56m6IHVuZG8gc3RhY2sgJiByZWRvIHN0YWNrXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuY2xlYXJTdGFjayA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5nZXQoJ2VuYWJsZWRTdGFjaycpKSB7XG4gICAgICB0aGlzLnVuZG9TdGFjay5jbGVhcigpO1xuICAgICAgdGhpcy5yZWRvU3RhY2suY2xlYXIoKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDlsIbmk43kvZznsbvlnovlkozmk43kvZzmlbDmja7lhaXmoIhcbiAgICogQHBhcmFtIGFjdGlvbiDmk43kvZznsbvlnotcbiAgICogQHBhcmFtIGRhdGEg5YWl5qCI55qE5pWw5o2uXG4gICAqIEBwYXJhbSBzdGFja1R5cGUg5qCI55qE57G75Z6LXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUucHVzaFN0YWNrID0gZnVuY3Rpb24gKGFjdGlvbiwgZGF0YSwgc3RhY2tUeXBlKSB7XG4gICAgaWYgKGFjdGlvbiA9PT0gdm9pZCAwKSB7XG4gICAgICBhY3Rpb24gPSAndXBkYXRlJztcbiAgICB9XG5cbiAgICBpZiAoc3RhY2tUeXBlID09PSB2b2lkIDApIHtcbiAgICAgIHN0YWNrVHlwZSA9ICd1bmRvJztcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZ2V0KCdlbmFibGVkU3RhY2snKSkge1xuICAgICAgY29uc29sZS53YXJuKCfor7flhYjlkK/nlKggdW5kbyAmIHJlZG8g5Yqf6IO977yM5Zyo5a6e5L6L5YyWIEdyYXBoIOaXtuWAmemFjee9riBlbmFibGVkU3RhY2s6IHRydWUgIScpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBzdGFja0RhdGEgPSBkYXRhID8gY2xvbmUoZGF0YSkgOiB7XG4gICAgICBiZWZvcmU6IHt9LFxuICAgICAgYWZ0ZXI6IGNsb25lKHRoaXMuc2F2ZSgpKVxuICAgIH07XG5cbiAgICBpZiAoc3RhY2tUeXBlID09PSAncmVkbycpIHtcbiAgICAgIHRoaXMucmVkb1N0YWNrLnB1c2goe1xuICAgICAgICBhY3Rpb246IGFjdGlvbixcbiAgICAgICAgZGF0YTogc3RhY2tEYXRhXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51bmRvU3RhY2sucHVzaCh7XG4gICAgICAgIGFjdGlvbjogYWN0aW9uLFxuICAgICAgICBkYXRhOiBzdGFja0RhdGFcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuZW1pdCgnc3RhY2tjaGFuZ2UnLCB7XG4gICAgICB1bmRvU3RhY2s6IHRoaXMudW5kb1N0YWNrLFxuICAgICAgcmVkb1N0YWNrOiB0aGlzLnJlZG9TdGFja1xuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICog6I635Y+W6YK75o6l55+p6Zi1XG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gY2FjaGUg5piv5ZCm5L2/55So57yT5a2Y55qEXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZGlyZWN0ZWQg5piv5ZCm5piv5pyJ5ZCR5Zu+77yM6buY6K6k5Y+WIGdyYXBoLmRpcmVjdGVkXG4gICAqIEByZXR1cm5zIHtNYXRyaXh9IOmCu+aOpeefqemYtVxuICAgKiBAbWVtYmVyb2YgSUFic3RyYWN0R3JhcGhcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXRBZGpNYXRyaXggPSBmdW5jdGlvbiAoY2FjaGUsIGRpcmVjdGVkKSB7XG4gICAgaWYgKGNhY2hlID09PSB2b2lkIDApIHtcbiAgICAgIGNhY2hlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoZGlyZWN0ZWQgPT09IHVuZGVmaW5lZCkgZGlyZWN0ZWQgPSB0aGlzLmdldCgnZGlyZWN0ZWQnKTtcbiAgICB2YXIgY3VycmVudEFkak1hdHJpeCA9IHRoaXMuZ2V0KCdhZGpNYXRyaXgnKTtcblxuICAgIGlmICghY3VycmVudEFkak1hdHJpeCB8fCAhY2FjaGUpIHtcbiAgICAgIGN1cnJlbnRBZGpNYXRyaXggPSBnZXRBZGphY2VudE1hdHJpeCh0aGlzLnNhdmUoKSwgZGlyZWN0ZWQpO1xuICAgICAgdGhpcy5zZXQoJ2Fkak1hdHJpeCcsIGN1cnJlbnRBZGpNYXRyaXgpO1xuICAgIH1cblxuICAgIHJldHVybiBjdXJyZW50QWRqTWF0cml4O1xuICB9O1xuICAvKipcbiAgICog6I635Y+W5pyA55+t6Lev5b6E55+p6Zi1XG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gY2FjaGUg5piv5ZCm5L2/55So57yT5a2Y55qEXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZGlyZWN0ZWQg5piv5ZCm5piv5pyJ5ZCR5Zu+77yM6buY6K6k5Y+WIGdyYXBoLmRpcmVjdGVkXG4gICAqIEByZXR1cm5zIHtNYXRyaXh9IOacgOefrei3r+W+hOefqemYtVxuICAgKiBAbWVtYmVyb2YgSUFic3RyYWN0R3JhcGhcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXRTaG9ydGVzdFBhdGhNYXRyaXggPSBmdW5jdGlvbiAoY2FjaGUsIGRpcmVjdGVkKSB7XG4gICAgaWYgKGNhY2hlID09PSB2b2lkIDApIHtcbiAgICAgIGNhY2hlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoZGlyZWN0ZWQgPT09IHVuZGVmaW5lZCkgZGlyZWN0ZWQgPSB0aGlzLmdldCgnZGlyZWN0ZWQnKTtcbiAgICB2YXIgY3VycmVudEFkak1hdHJpeCA9IHRoaXMuZ2V0KCdhZGpNYXRyaXgnKTtcbiAgICB2YXIgY3VycmVudFNob3VydGVzdFBhdGhNYXRyaXggPSB0aGlzLmdldCgnc2hvcnRlc3RQYXRoTWF0cml4Jyk7XG5cbiAgICBpZiAoIWN1cnJlbnRBZGpNYXRyaXggfHwgIWNhY2hlKSB7XG4gICAgICBjdXJyZW50QWRqTWF0cml4ID0gZ2V0QWRqYWNlbnRNYXRyaXgodGhpcy5zYXZlKCksIGRpcmVjdGVkKTtcbiAgICAgIHRoaXMuc2V0KCdhZGpNYXRyaXgnLCBjdXJyZW50QWRqTWF0cml4KTtcbiAgICB9XG5cbiAgICBpZiAoIWN1cnJlbnRTaG91cnRlc3RQYXRoTWF0cml4IHx8ICFjYWNoZSkge1xuICAgICAgY3VycmVudFNob3VydGVzdFBhdGhNYXRyaXggPSBmbG95ZFdhcnNoYWxsKHRoaXMuc2F2ZSgpLCBkaXJlY3RlZCk7XG4gICAgICB0aGlzLnNldCgnc2hvcnRlc3RQYXRoTWF0cml4JywgY3VycmVudFNob3VydGVzdFBhdGhNYXRyaXgpO1xuICAgIH1cblxuICAgIHJldHVybiBjdXJyZW50U2hvdXJ0ZXN0UGF0aE1hdHJpeDtcbiAgfTtcbiAgLyoqXG4gICAqIOmHjeaWsOWumuS5ieebkeWQrOWHveaVsO+8jOWkjeWGmeWPguaVsOexu+Wei1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLm9uID0gZnVuY3Rpb24gKGV2ZW50TmFtZSwgY2FsbGJhY2ssIG9uY2UpIHtcbiAgICByZXR1cm4gX3N1cGVyLnByb3RvdHlwZS5vbi5jYWxsKHRoaXMsIGV2ZW50TmFtZSwgY2FsbGJhY2ssIG9uY2UpO1xuICB9O1xuICAvKipcbiAgICog6ZSA5q+B55S75biDXG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmNsZWFyKCk7IC8vIOa4heepuuagiOaVsOaNrlxuXG4gICAgdGhpcy5jbGVhclN0YWNrKCk7XG4gICAgdGhpcy5nZXQoJ2l0ZW1Db250cm9sbGVyJykuZGVzdHJveSgpO1xuICAgIHRoaXMuZ2V0KCdtb2RlQ29udHJvbGxlcicpLmRlc3Ryb3koKTtcbiAgICB0aGlzLmdldCgndmlld0NvbnRyb2xsZXInKS5kZXN0cm95KCk7XG4gICAgdGhpcy5nZXQoJ3N0YXRlQ29udHJvbGxlcicpLmRlc3Ryb3koKTtcbiAgICB0aGlzLmdldCgnY2FudmFzJykuZGVzdHJveSgpO1xuICAgIHRoaXMuY2ZnID0gbnVsbDtcbiAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XG4gICAgdGhpcy5yZWRvU3RhY2sgPSBudWxsO1xuICAgIHRoaXMudW5kb1N0YWNrID0gbnVsbDtcbiAgfTtcbiAgLyoqXG4gICAqIOWIm+W7uuWHuOWMheaIluWHueWMhei9ruW7k1xuICAgKiBAcGFyYW0gY2ZnIEh1bGxDZmcg6L2u5buT6YWN572u6aG5XG4gICAqL1xuXG5cbiAgQWJzdHJhY3RHcmFwaC5wcm90b3R5cGUuY3JlYXRlSHVsbCA9IGZ1bmN0aW9uIChjZmcpIHtcbiAgICBpZiAoIWNmZy5tZW1iZXJzIHx8IGNmZy5tZW1iZXJzLmxlbmd0aCA8IDEpIHtcbiAgICAgIGNvbnNvbGUud2FybignQ3JlYXRlIGh1bGwgZmFpbGVkISBUaGUgbWVtYmVycyBpcyBlbXB0eS4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgcGFyZW50ID0gdGhpcy5nZXQoJ2h1bGxHcm91cCcpO1xuICAgIHZhciBodWxsTWFwID0gdGhpcy5nZXQoJ2h1bGxNYXAnKTtcblxuICAgIGlmICghaHVsbE1hcCkge1xuICAgICAgaHVsbE1hcCA9IHt9O1xuICAgICAgdGhpcy5zZXQoJ2h1bGxNYXAnLCBodWxsTWFwKTtcbiAgICB9XG5cbiAgICBpZiAoIXBhcmVudCB8fCBwYXJlbnQuZ2V0KCdkZXN0cm95ZWQnKSkge1xuICAgICAgcGFyZW50ID0gdGhpcy5nZXQoJ2dyb3VwJykuYWRkR3JvdXAoe1xuICAgICAgICBpZDogJ2h1bGxHcm91cCdcbiAgICAgIH0pO1xuICAgICAgcGFyZW50LnRvQmFjaygpO1xuICAgICAgdGhpcy5zZXQoJ2h1bGxHcm91cCcsIHBhcmVudCk7XG4gICAgfVxuXG4gICAgaWYgKGh1bGxNYXBbY2ZnLmlkXSkge1xuICAgICAgY29uc29sZS53YXJuKCdFeGlzdGVkIGh1bGwgaWQuJyk7XG4gICAgICByZXR1cm4gaHVsbE1hcFtjZmcuaWRdO1xuICAgIH1cblxuICAgIHZhciBncm91cCA9IHBhcmVudC5hZGRHcm91cCh7XG4gICAgICBpZDogY2ZnLmlkICsgXCItY29udGFpbmVyXCJcbiAgICB9KTtcbiAgICB2YXIgaHVsbCA9IG5ldyBIdWxsKHRoaXMsIF9fYXNzaWduKF9fYXNzaWduKHt9LCBjZmcpLCB7XG4gICAgICBncm91cDogZ3JvdXBcbiAgICB9KSk7XG4gICAgdmFyIGh1bGxJZCA9IGh1bGwuaWQ7XG4gICAgaHVsbE1hcFtodWxsSWRdID0gaHVsbDtcbiAgICByZXR1cm4gaHVsbDtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPluW9k+WJjSBncmFwaCDkuK3lrZjlnKjnmoTljIXoo7nova7lu5NcbiAgICogQHJldHVybiB7W2tleTogc3RyaW5nXTogSHVsbH0gSHVsbCDnmoQgbWFw77yMaHVsbElkIOWvueW6lOeahCBodWxsIOWunuS+i1xuICAgKi9cblxuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLmdldEh1bGxzID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnaHVsbE1hcCcpO1xuICB9O1xuICAvKipcbiAgICog5qC55o2uIGh1bGxJZCDojrflj5blr7nlupTnmoQgaHVsbFxuICAgKiBAcmV0dXJuIEh1bGxcbiAgICovXG5cblxuICBBYnN0cmFjdEdyYXBoLnByb3RvdHlwZS5nZXRIdWxsQnlJZCA9IGZ1bmN0aW9uIChodWxsSWQpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ2h1bGxNYXAnKVtodWxsSWRdO1xuICB9O1xuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnJlbW92ZUh1bGwgPSBmdW5jdGlvbiAoaHVsbCkge1xuICAgIHZhciBfYTtcblxuICAgIHZhciBodWxsSW5zdGFuY2U7XG5cbiAgICBpZiAoaXNTdHJpbmcoaHVsbCkpIHtcbiAgICAgIGh1bGxJbnN0YW5jZSA9IHRoaXMuZ2V0SHVsbEJ5SWQoaHVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGh1bGxJbnN0YW5jZSA9IGh1bGw7XG4gICAgfVxuXG4gICAgKF9hID0gdGhpcy5nZXQoJ2h1bGxNYXAnKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHRydWUgOiBkZWxldGUgX2FbaHVsbEluc3RhbmNlLmlkXTtcbiAgICBodWxsSW5zdGFuY2UuZGVzdHJveSgpO1xuICB9O1xuXG4gIEFic3RyYWN0R3JhcGgucHJvdG90eXBlLnJlbW92ZUh1bGxzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBodWxscyA9IHRoaXMuZ2V0SHVsbHMoKTtcbiAgICBpZiAoIWh1bGxzIHx8ICFPYmplY3Qua2V5cyhodWxscykubGVuZ3RoKSByZXR1cm47XG4gICAgT2JqZWN0LmtleXMoaHVsbHMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgdmFyIGh1bGwgPSBodWxsc1trZXldO1xuICAgICAgaHVsbC5kZXN0cm95KCk7XG4gICAgfSk7XG4gICAgdGhpcy5zZXQoJ2h1bGxNYXAnLCB7fSk7XG4gIH07XG5cbiAgcmV0dXJuIEFic3RyYWN0R3JhcGg7XG59KEV2ZW50RW1pdHRlcik7XG5cbmV4cG9ydCBkZWZhdWx0IEFic3RyYWN0R3JhcGg7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/graph.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js":
/*!*********************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js ***!
\*********************************************************************/
/*! exports provided: G6GraphEvent, G6Event, Arrow, Shape, Node, Edge, Combo, Hull, Marker, registerNode, registerCombo, AbstractGraph, Util, registerEdge, registerBehavior, AbstractLayout, AbstractEvent, BaseGlobal, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerNode\", function() { return registerNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerCombo\", function() { return registerCombo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerEdge\", function() { return registerEdge; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerBehavior\", function() { return registerBehavior; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BaseGlobal\", function() { return BaseGlobal; });\n/* harmony import */ var _behavior__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./behavior */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/behavior/index.js\");\n/* harmony import */ var _graph_graph__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./graph/graph */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/graph.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractGraph\", function() { return _graph_graph__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./element */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Arrow\", function() { return _element__WEBPACK_IMPORTED_MODULE_2__[\"Arrow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Shape\", function() { return _element__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Marker\", function() { return _element__WEBPACK_IMPORTED_MODULE_2__[\"Marker\"]; });\n\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./global */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/global.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Util\", function() { return _util__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _graph_controller_layout__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./graph/controller/layout */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/layout.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractLayout\", function() { return _graph_controller_layout__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _graph_controller_event__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./graph/controller/event */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/graph/controller/event.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AbstractEvent\", function() { return _graph_controller_event__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _item_node__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./item/node */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/node.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Node\", function() { return _item_node__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _item_edge__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./item/edge */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/edge.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Edge\", function() { return _item_edge__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _item_hull__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./item/hull */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/hull.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Hull\", function() { return _item_hull__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _item_combo__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./item/combo */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/combo.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Combo\", function() { return _item_combo__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./types */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/types/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"G6GraphEvent\", function() { return _types__WEBPACK_IMPORTED_MODULE_11__[\"G6GraphEvent\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"G6Event\", function() { return _types__WEBPACK_IMPORTED_MODULE_11__[\"G6Event\"]; });\n\n\n\n\n\n // 用于 PC 和 Mobile 端分别实现 layout 和 updateLayoutCfg 方法\n\n\n\n\n\n\n\nvar registerNode = _element__WEBPACK_IMPORTED_MODULE_2__[\"default\"].registerNode;\nvar registerEdge = _element__WEBPACK_IMPORTED_MODULE_2__[\"default\"].registerEdge;\nvar registerCombo = _element__WEBPACK_IMPORTED_MODULE_2__[\"default\"].registerCombo;\nvar registerBehavior = _behavior__WEBPACK_IMPORTED_MODULE_0__[\"default\"].registerBehavior;\nvar BaseGlobal = _global__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n version: _global__WEBPACK_IMPORTED_MODULE_3__[\"default\"].version,\n AbstractGraph: _graph_graph__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n BaseGlobal: BaseGlobal,\n Util: _util__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n Shape: _element__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n Node: _item_node__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n Edge: _item_edge__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n Combo: _item_combo__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n Hull: _item_hull__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n registerNode: _element__WEBPACK_IMPORTED_MODULE_2__[\"default\"].registerNode,\n registerEdge: _element__WEBPACK_IMPORTED_MODULE_2__[\"default\"].registerEdge,\n registerCombo: _element__WEBPACK_IMPORTED_MODULE_2__[\"default\"].registerCombo,\n registerBehavior: _behavior__WEBPACK_IMPORTED_MODULE_0__[\"default\"].registerBehavior,\n Arrow: _element__WEBPACK_IMPORTED_MODULE_2__[\"Arrow\"],\n Marker: _element__WEBPACK_IMPORTED_MODULE_2__[\"Marker\"],\n AbstractLayout: _graph_controller_layout__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n AbstractEvent: _graph_controller_event__WEBPACK_IMPORTED_MODULE_6__[\"default\"]\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9pbmRleC5qcz9kNjNhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0M7QUFDUTtBQUNPO0FBQ25CO0FBQ0o7O0FBRTZCO0FBQ0Y7QUFDdEI7QUFDQTtBQUNBO0FBQ0U7QUFDakMsbUJBQW1CLGdEQUFLO0FBQ3hCLG1CQUFtQixnREFBSztBQUN4QixvQkFBb0IsZ0RBQUs7QUFDekIsdUJBQXVCLGlEQUFRO0FBQy9CLGlCQUFpQiwrQ0FBTTtBQUNDO0FBQzhKO0FBQ3ZLO0FBQ2YsV0FBVywrQ0FBTTtBQUNqQixpQkFBaUIsb0RBQWE7QUFDOUI7QUFDQSxRQUFRLDZDQUFJO0FBQ1osU0FBUyxnREFBSztBQUNkLFFBQVEsa0RBQUk7QUFDWixRQUFRLGtEQUFJO0FBQ1osU0FBUyxvREFBSztBQUNkLFFBQVEsa0RBQUk7QUFDWixnQkFBZ0IsZ0RBQUs7QUFDckIsZ0JBQWdCLGdEQUFLO0FBQ3JCLGlCQUFpQixnREFBSztBQUN0QixvQkFBb0IsaURBQVE7QUFDNUIsU0FBUyw4Q0FBSztBQUNkLFVBQVUsK0NBQU07QUFDaEIsa0JBQWtCLGdFQUFjO0FBQ2hDLGlCQUFpQiwrREFBYTtBQUM5QixDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1jb3JlQDAuNS4wQEBhbnR2L2c2LWNvcmUvZXMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmVoYXZpb3IgZnJvbSAnLi9iZWhhdmlvcic7XG5pbXBvcnQgQWJzdHJhY3RHcmFwaCBmcm9tICcuL2dyYXBoL2dyYXBoJztcbmltcG9ydCBTaGFwZSwgeyBBcnJvdywgTWFya2VyIH0gZnJvbSAnLi9lbGVtZW50JztcbmltcG9ydCBHbG9iYWwgZnJvbSAnLi9nbG9iYWwnO1xuaW1wb3J0IFV0aWwgZnJvbSAnLi91dGlsJzsgLy8g55So5LqOIFBDIOWSjCBNb2JpbGUg56uv5YiG5Yir5a6e546wIGxheW91dCDlkowgdXBkYXRlTGF5b3V0Q2ZnIOaWueazlVxuXG5pbXBvcnQgQWJzdHJhY3RMYXlvdXQgZnJvbSAnLi9ncmFwaC9jb250cm9sbGVyL2xheW91dCc7XG5pbXBvcnQgQWJzdHJhY3RFdmVudCBmcm9tICcuL2dyYXBoL2NvbnRyb2xsZXIvZXZlbnQnO1xuaW1wb3J0IE5vZGUgZnJvbSAnLi9pdGVtL25vZGUnO1xuaW1wb3J0IEVkZ2UgZnJvbSAnLi9pdGVtL2VkZ2UnO1xuaW1wb3J0IEh1bGwgZnJvbSAnLi9pdGVtL2h1bGwnO1xuaW1wb3J0IENvbWJvIGZyb20gJy4vaXRlbS9jb21ibyc7XG52YXIgcmVnaXN0ZXJOb2RlID0gU2hhcGUucmVnaXN0ZXJOb2RlO1xudmFyIHJlZ2lzdGVyRWRnZSA9IFNoYXBlLnJlZ2lzdGVyRWRnZTtcbnZhciByZWdpc3RlckNvbWJvID0gU2hhcGUucmVnaXN0ZXJDb21ibztcbnZhciByZWdpc3RlckJlaGF2aW9yID0gQmVoYXZpb3IucmVnaXN0ZXJCZWhhdmlvcjtcbnZhciBCYXNlR2xvYmFsID0gR2xvYmFsO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG5leHBvcnQgeyBBcnJvdywgU2hhcGUsIE5vZGUsIEVkZ2UsIENvbWJvLCBIdWxsLCBNYXJrZXIsIHJlZ2lzdGVyTm9kZSwgcmVnaXN0ZXJDb21ibywgQWJzdHJhY3RHcmFwaCwgVXRpbCwgcmVnaXN0ZXJFZGdlLCByZWdpc3RlckJlaGF2aW9yLCBBYnN0cmFjdExheW91dCwgQWJzdHJhY3RFdmVudCwgQmFzZUdsb2JhbCB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICB2ZXJzaW9uOiBHbG9iYWwudmVyc2lvbixcbiAgQWJzdHJhY3RHcmFwaDogQWJzdHJhY3RHcmFwaCxcbiAgQmFzZUdsb2JhbDogQmFzZUdsb2JhbCxcbiAgVXRpbDogVXRpbCxcbiAgU2hhcGU6IFNoYXBlLFxuICBOb2RlOiBOb2RlLFxuICBFZGdlOiBFZGdlLFxuICBDb21ibzogQ29tYm8sXG4gIEh1bGw6IEh1bGwsXG4gIHJlZ2lzdGVyTm9kZTogU2hhcGUucmVnaXN0ZXJOb2RlLFxuICByZWdpc3RlckVkZ2U6IFNoYXBlLnJlZ2lzdGVyRWRnZSxcbiAgcmVnaXN0ZXJDb21ibzogU2hhcGUucmVnaXN0ZXJDb21ibyxcbiAgcmVnaXN0ZXJCZWhhdmlvcjogQmVoYXZpb3IucmVnaXN0ZXJCZWhhdmlvcixcbiAgQXJyb3c6IEFycm93LFxuICBNYXJrZXI6IE1hcmtlcixcbiAgQWJzdHJhY3RMYXlvdXQ6IEFic3RyYWN0TGF5b3V0LFxuICBBYnN0cmFjdEV2ZW50OiBBYnN0cmFjdEV2ZW50XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/behavior.js":
/*!**********************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/behavior.js ***!
\**********************************************************************************/
/*! exports provided: G6GraphEvent */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"G6GraphEvent\", function() { return G6GraphEvent; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g-base */ \"./node_modules/_@antv_g-base@0.5.9@@antv/g-base/esm/index.js\");\n\n\n\nvar G6GraphEvent =\n/** @class */\nfunction (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(G6GraphEvent, _super);\n\n function G6GraphEvent(type, event) {\n var _this = _super.call(this, type, event) || this;\n\n _this.item = event.item;\n _this.canvasX = event.canvasX;\n _this.canvasY = event.canvasY;\n _this.wheelDelta = event.wheelDelta;\n _this.detail = event.detail;\n return _this;\n }\n\n return G6GraphEvent;\n}(_antv_g_base__WEBPACK_IMPORTED_MODULE_1__[\"Event\"]);\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9pbnRlcmZhY2UvYmVoYXZpb3IuanM/ZTdkMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUNpQjs7QUFFbkQ7QUFDQTtBQUNBO0FBQ0EsRUFBRSx1REFBUzs7QUFFWDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyxDQUFDLGtEQUFVIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1jb3JlQDAuNS4wQEBhbnR2L2c2LWNvcmUvZXMvaW50ZXJmYWNlL2JlaGF2aW9yLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBFdmVudCBhcyBHcmFwaEV2ZW50IH0gZnJvbSAnQGFudHYvZy1iYXNlJztcblxudmFyIEc2R3JhcGhFdmVudCA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoX3N1cGVyKSB7XG4gIF9fZXh0ZW5kcyhHNkdyYXBoRXZlbnQsIF9zdXBlcik7XG5cbiAgZnVuY3Rpb24gRzZHcmFwaEV2ZW50KHR5cGUsIGV2ZW50KSB7XG4gICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgdHlwZSwgZXZlbnQpIHx8IHRoaXM7XG5cbiAgICBfdGhpcy5pdGVtID0gZXZlbnQuaXRlbTtcbiAgICBfdGhpcy5jYW52YXNYID0gZXZlbnQuY2FudmFzWDtcbiAgICBfdGhpcy5jYW52YXNZID0gZXZlbnQuY2FudmFzWTtcbiAgICBfdGhpcy53aGVlbERlbHRhID0gZXZlbnQud2hlZWxEZWx0YTtcbiAgICBfdGhpcy5kZXRhaWwgPSBldmVudC5kZXRhaWw7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgcmV0dXJuIEc2R3JhcGhFdmVudDtcbn0oR3JhcGhFdmVudCk7XG5cbmV4cG9ydCB7IEc2R3JhcGhFdmVudCB9OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/behavior.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/graph.js":
/*!*******************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/graph.js ***!
\*******************************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9pbnRlcmZhY2UvZ3JhcGguanM/NjM4MSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtY29yZUAwLjUuMEBAYW50di9nNi1jb3JlL2VzL2ludGVyZmFjZS9ncmFwaC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7fTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/graph.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/index.js":
/*!*******************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/index.js ***!
\*******************************************************************************/
/*! exports provided: G6GraphEvent */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _graph__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./graph */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/graph.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _behavior__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./behavior */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/behavior.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"G6GraphEvent\", function() { return _behavior__WEBPACK_IMPORTED_MODULE_1__[\"G6GraphEvent\"]; });\n\n/* harmony import */ var _item__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./item */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/item.js\");\n/* empty/unused harmony star reexport *//* harmony import */ var _shape__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shape */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/shape.js\");\n/* empty/unused harmony star reexport */\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9pbnRlcmZhY2UvaW5kZXguanM/YjBmZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHdDQUF3QjtBQUNHO0FBQ0oiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9pbnRlcmZhY2UvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2dyYXBoJztcbmV4cG9ydCAqIGZyb20gJy4vYmVoYXZpb3InO1xuZXhwb3J0ICogZnJvbSAnLi9pdGVtJztcbmV4cG9ydCAqIGZyb20gJy4vc2hhcGUnOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/item.js":
/*!******************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/item.js ***!
\******************************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9pbnRlcmZhY2UvaXRlbS5qcz9kNWE5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1jb3JlQDAuNS4wQEBhbnR2L2c2LWNvcmUvZXMvaW50ZXJmYWNlL2l0ZW0uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge307Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/item.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/shape.js":
/*!*******************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/shape.js ***!
\*******************************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9pbnRlcmZhY2Uvc2hhcGUuanM/NzZmYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtY29yZUAwLjUuMEBAYW50di9nNi1jb3JlL2VzL2ludGVyZmFjZS9zaGFwZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7fTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/shape.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/combo.js":
/*!**************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/combo.js ***!
\**************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _node__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/node.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../global */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/global.js\");\n/* harmony import */ var _util_graphic__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/graphic */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/graphic.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\n\n\n\n\nvar CACHE_BBOX = 'bboxCache';\nvar CACHE_CANVAS_BBOX = 'bboxCanvasCache';\nvar CACHE_SIZE = 'sizeCache';\nvar CACHE_ANCHOR_POINTS = 'anchorPointsCache';\n\nvar Combo =\n/** @class */\nfunction (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Combo, _super);\n\n function Combo() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Combo.prototype.getDefaultCfg = function () {\n return {\n type: 'combo',\n nodes: [],\n edges: [],\n combos: []\n };\n };\n\n Combo.prototype.getShapeCfg = function (model) {\n var styles = this.get('styles');\n var bbox = this.get('bbox');\n\n if (styles && bbox) {\n // merge graph的item样式与数据模型中的样式\n var newModel = model;\n var size = {\n r: Math.hypot(bbox.height, bbox.width) / 2 || _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.size[0] / 2,\n width: bbox.width || _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.size[0],\n height: bbox.height || _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.size[1]\n };\n newModel.style = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), model.style), size);\n var padding = model.padding || _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultCombo.padding;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_4__[\"isNumber\"])(padding)) {\n size.r += padding;\n size.width += padding * 2;\n size.height += padding * 2;\n } else {\n size.r += padding[0];\n size.width += padding[1] + padding[3] || padding[1] * 2;\n size.height += padding[0] + padding[2] || padding[0] * 2;\n }\n\n this.set(CACHE_SIZE, size);\n return newModel;\n }\n\n return model;\n };\n /**\n * 根据 keyshape 计算包围盒\n */\n\n\n Combo.prototype.calculateCanvasBBox = function () {\n if (this.destroyed) return;\n var keyShape = this.get('keyShape');\n var group = this.get('group'); // 因为 group 可能会移动,所以必须通过父元素计算才能计算出正确的包围盒\n\n var bbox = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_3__[\"getBBox\"])(keyShape, group);\n bbox.centerX = (bbox.minX + bbox.maxX) / 2;\n bbox.centerY = (bbox.minY + bbox.maxY) / 2;\n var cacheSize = this.get(CACHE_SIZE);\n var cacheBBox = this.get(CACHE_BBOX) || {};\n var oriX = cacheBBox.x;\n var oriY = cacheBBox.x;\n\n if (cacheSize) {\n cacheSize.width = Math.max(cacheSize.width, bbox.width);\n cacheSize.height = Math.max(cacheSize.height, bbox.height);\n var type = keyShape.get('type');\n\n if (type === 'circle') {\n bbox.width = cacheSize.r * 2;\n bbox.height = cacheSize.r * 2;\n } else {\n bbox.width = cacheSize.width;\n bbox.height = cacheSize.height;\n }\n\n bbox.minX = bbox.centerX - bbox.width / 2;\n bbox.minY = bbox.centerY - bbox.height / 2;\n bbox.maxX = bbox.centerX + bbox.width / 2;\n bbox.maxY = bbox.centerY + bbox.height / 2;\n } else {\n bbox.width = bbox.maxX - bbox.minX;\n bbox.height = bbox.maxY - bbox.minY;\n bbox.centerX = (bbox.minX + bbox.maxX) / 2;\n bbox.centerY = (bbox.minY + bbox.maxY) / 2;\n }\n\n bbox.x = bbox.minX;\n bbox.y = bbox.minY;\n if (bbox.x !== oriX || bbox.y !== oriY) this.set(CACHE_ANCHOR_POINTS, null);\n return bbox;\n };\n /**\n * 获取 Combo 中所有的子元素,包括 Combo、Node 及 Edge\n */\n\n\n Combo.prototype.getChildren = function () {\n var self = this;\n return {\n nodes: self.getNodes(),\n combos: self.getCombos()\n };\n };\n /**\n * 获取 Combo 中所有子节点\n */\n\n\n Combo.prototype.getNodes = function () {\n var self = this;\n return self.get('nodes');\n };\n /**\n * 获取 Combo 中所有子 combo\n */\n\n\n Combo.prototype.getCombos = function () {\n var self = this;\n return self.get('combos');\n };\n /**\n * 向 Combo 中增加子 combo 或 node\n * @param item Combo 或节点实例\n * @return boolean 添加成功返回 true,否则返回 false\n */\n\n\n Combo.prototype.addChild = function (item) {\n var self = this;\n var itemType = item.getType();\n\n switch (itemType) {\n case 'node':\n self.addNode(item);\n break;\n\n case 'combo':\n self.addCombo(item);\n break;\n\n default:\n console.warn('Only node or combo items are allowed to be added into a combo');\n return false;\n }\n\n return true;\n };\n /**\n * 向 Combo 中增加 combo\n * @param combo Combo 实例\n * @return boolean 添加成功返回 true,否则返回 false\n */\n\n\n Combo.prototype.addCombo = function (combo) {\n var self = this;\n self.get('combos').push(combo);\n return true;\n };\n /**\n * 向 Combo 中添加节点\n * @param node 节点实例\n * @return boolean 添加成功返回 true,否则返回 false\n */\n\n\n Combo.prototype.addNode = function (node) {\n var self = this;\n self.get('nodes').push(node);\n return true;\n };\n /**\n * 向 Combo 中增加子 combo 或 node\n * @param item Combo 或节点实例\n * @return boolean 添加成功返回 true,否则返回 false\n */\n\n\n Combo.prototype.removeChild = function (item) {\n var self = this;\n var itemType = item.getType();\n\n switch (itemType) {\n case 'node':\n self.removeNode(item);\n break;\n\n case 'combo':\n self.removeCombo(item);\n break;\n\n default:\n console.warn('Only node or combo items are allowed to be added into a combo');\n return false;\n }\n\n return true;\n };\n /**\n * 从 Combo 中移除指定的 combo\n * @param combo Combo 实例\n * @return boolean 移除成功返回 true,否则返回 false\n */\n\n\n Combo.prototype.removeCombo = function (combo) {\n if (!combo) return;\n var combos = this.getCombos();\n var index = combos.indexOf(combo);\n\n if (index > -1) {\n combos.splice(index, 1);\n return true;\n }\n\n return false;\n };\n /**\n * 向 Combo 中移除指定的节点\n * @param node 节点实例\n * @return boolean 移除成功返回 true,否则返回 false\n */\n\n\n Combo.prototype.removeNode = function (node) {\n if (!node) return;\n var nodes = this.getNodes();\n var index = nodes.indexOf(node);\n\n if (index > -1) {\n nodes.splice(index, 1);\n return true;\n }\n\n return false;\n };\n\n Combo.prototype.getUpdateType = function (cfg) {\n return undefined;\n };\n /**\n * 获取 item 的包围盒,这个包围盒是相对于 item 自己,不会将 matrix 计算在内\n * @return {Object} 包含 x,y,width,height, centerX, centerY\n */\n\n\n Combo.prototype.getBBox = function () {\n this.set(CACHE_CANVAS_BBOX, null);\n var bbox = this.calculateCanvasBBox();\n return bbox;\n };\n\n Combo.prototype.clearCache = function () {\n this.set(CACHE_BBOX, null); // 清理缓存的 bbox\n\n this.set(CACHE_CANVAS_BBOX, null);\n this.set(CACHE_ANCHOR_POINTS, null);\n };\n\n Combo.prototype.destroy = function () {\n if (!this.destroyed) {\n var animate = this.get('animate');\n var group = this.get('group');\n\n if (animate) {\n group.stopAnimate();\n }\n\n group['shapeMap'] = {};\n this.clearCache();\n this.set(CACHE_SIZE, null);\n this.set('bbox', null);\n group.remove();\n this._cfg = null;\n this.destroyed = true;\n }\n };\n\n return Combo;\n}(_node__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Combo);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9pdGVtL2NvbWJvLmpzPzcyMTkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTRDO0FBQ2xCO0FBQ0s7QUFDVztBQUNKO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsdURBQVM7O0FBRVg7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0RBQXNELCtDQUFNO0FBQzVELDZCQUE2QiwrQ0FBTTtBQUNuQywrQkFBK0IsK0NBQU07QUFDckM7QUFDQSx1QkFBdUIsc0RBQVEsQ0FBQyxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDcEQscUNBQXFDLCtDQUFNOztBQUUzQyxVQUFVLDJEQUFRO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDOztBQUVsQyxlQUFlLDZEQUFPO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLCtCQUErQjs7QUFFL0I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDLENBQUMsNkNBQUk7O0FBRVMsb0VBQUsiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9pdGVtL2NvbWJvLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24sIF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IE5vZGUgZnJvbSAnLi9ub2RlJztcbmltcG9ydCBHbG9iYWwgZnJvbSAnLi4vZ2xvYmFsJztcbmltcG9ydCB7IGdldEJCb3ggfSBmcm9tICcuLi91dGlsL2dyYXBoaWMnO1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICdAYW50di91dGlsJztcbnZhciBDQUNIRV9CQk9YID0gJ2Jib3hDYWNoZSc7XG52YXIgQ0FDSEVfQ0FOVkFTX0JCT1ggPSAnYmJveENhbnZhc0NhY2hlJztcbnZhciBDQUNIRV9TSVpFID0gJ3NpemVDYWNoZSc7XG52YXIgQ0FDSEVfQU5DSE9SX1BPSU5UUyA9ICdhbmNob3JQb2ludHNDYWNoZSc7XG5cbnZhciBDb21ibyA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoX3N1cGVyKSB7XG4gIF9fZXh0ZW5kcyhDb21ibywgX3N1cGVyKTtcblxuICBmdW5jdGlvbiBDb21ibygpIHtcbiAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gIH1cblxuICBDb21iby5wcm90b3R5cGUuZ2V0RGVmYXVsdENmZyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ2NvbWJvJyxcbiAgICAgIG5vZGVzOiBbXSxcbiAgICAgIGVkZ2VzOiBbXSxcbiAgICAgIGNvbWJvczogW11cbiAgICB9O1xuICB9O1xuXG4gIENvbWJvLnByb3RvdHlwZS5nZXRTaGFwZUNmZyA9IGZ1bmN0aW9uIChtb2RlbCkge1xuICAgIHZhciBzdHlsZXMgPSB0aGlzLmdldCgnc3R5bGVzJyk7XG4gICAgdmFyIGJib3ggPSB0aGlzLmdldCgnYmJveCcpO1xuXG4gICAgaWYgKHN0eWxlcyAmJiBiYm94KSB7XG4gICAgICAvLyBtZXJnZSBncmFwaOeahGl0ZW3moLflvI/kuI7mlbDmja7mqKHlnovkuK3nmoTmoLflvI9cbiAgICAgIHZhciBuZXdNb2RlbCA9IG1vZGVsO1xuICAgICAgdmFyIHNpemUgPSB7XG4gICAgICAgIHI6IE1hdGguaHlwb3QoYmJveC5oZWlnaHQsIGJib3gud2lkdGgpIC8gMiB8fCBHbG9iYWwuZGVmYXVsdENvbWJvLnNpemVbMF0gLyAyLFxuICAgICAgICB3aWR0aDogYmJveC53aWR0aCB8fCBHbG9iYWwuZGVmYXVsdENvbWJvLnNpemVbMF0sXG4gICAgICAgIGhlaWdodDogYmJveC5oZWlnaHQgfHwgR2xvYmFsLmRlZmF1bHRDb21iby5zaXplWzFdXG4gICAgICB9O1xuICAgICAgbmV3TW9kZWwuc3R5bGUgPSBfX2Fzc2lnbihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3R5bGVzKSwgbW9kZWwuc3R5bGUpLCBzaXplKTtcbiAgICAgIHZhciBwYWRkaW5nID0gbW9kZWwucGFkZGluZyB8fCBHbG9iYWwuZGVmYXVsdENvbWJvLnBhZGRpbmc7XG5cbiAgICAgIGlmIChpc051bWJlcihwYWRkaW5nKSkge1xuICAgICAgICBzaXplLnIgKz0gcGFkZGluZztcbiAgICAgICAgc2l6ZS53aWR0aCArPSBwYWRkaW5nICogMjtcbiAgICAgICAgc2l6ZS5oZWlnaHQgKz0gcGFkZGluZyAqIDI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzaXplLnIgKz0gcGFkZGluZ1swXTtcbiAgICAgICAgc2l6ZS53aWR0aCArPSBwYWRkaW5nWzFdICsgcGFkZGluZ1szXSB8fCBwYWRkaW5nWzFdICogMjtcbiAgICAgICAgc2l6ZS5oZWlnaHQgKz0gcGFkZGluZ1swXSArIHBhZGRpbmdbMl0gfHwgcGFkZGluZ1swXSAqIDI7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2V0KENBQ0hFX1NJWkUsIHNpemUpO1xuICAgICAgcmV0dXJuIG5ld01vZGVsO1xuICAgIH1cblxuICAgIHJldHVybiBtb2RlbDtcbiAgfTtcbiAgLyoqXG4gICAqIOagueaNriBrZXlzaGFwZSDorqHnrpfljIXlm7Tnm5JcbiAgICovXG5cblxuICBDb21iby5wcm90b3R5cGUuY2FsY3VsYXRlQ2FudmFzQkJveCA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5kZXN0cm95ZWQpIHJldHVybjtcbiAgICB2YXIga2V5U2hhcGUgPSB0aGlzLmdldCgna2V5U2hhcGUnKTtcbiAgICB2YXIgZ3JvdXAgPSB0aGlzLmdldCgnZ3JvdXAnKTsgLy8g5Zug5Li6IGdyb3VwIOWPr+iDveS8muenu+WKqO+8jOaJgOS7peW/hemhu+mAmui/h+eItuWFg+e0oOiuoeeul+aJjeiDveiuoeeul+WHuuato+ehrueahOWMheWbtOebklxuXG4gICAgdmFyIGJib3ggPSBnZXRCQm94KGtleVNoYXBlLCBncm91cCk7XG4gICAgYmJveC5jZW50ZXJYID0gKGJib3gubWluWCArIGJib3gubWF4WCkgLyAyO1xuICAgIGJib3guY2VudGVyWSA9IChiYm94Lm1pblkgKyBiYm94Lm1heFkpIC8gMjtcbiAgICB2YXIgY2FjaGVTaXplID0gdGhpcy5nZXQoQ0FDSEVfU0laRSk7XG4gICAgdmFyIGNhY2hlQkJveCA9IHRoaXMuZ2V0KENBQ0hFX0JCT1gpIHx8IHt9O1xuICAgIHZhciBvcmlYID0gY2FjaGVCQm94Lng7XG4gICAgdmFyIG9yaVkgPSBjYWNoZUJCb3gueDtcblxuICAgIGlmIChjYWNoZVNpemUpIHtcbiAgICAgIGNhY2hlU2l6ZS53aWR0aCA9IE1hdGgubWF4KGNhY2hlU2l6ZS53aWR0aCwgYmJveC53aWR0aCk7XG4gICAgICBjYWNoZVNpemUuaGVpZ2h0ID0gTWF0aC5tYXgoY2FjaGVTaXplLmhlaWdodCwgYmJveC5oZWlnaHQpO1xuICAgICAgdmFyIHR5cGUgPSBrZXlTaGFwZS5nZXQoJ3R5cGUnKTtcblxuICAgICAgaWYgKHR5cGUgPT09ICdjaXJjbGUnKSB7XG4gICAgICAgIGJib3gud2lkdGggPSBjYWNoZVNpemUuciAqIDI7XG4gICAgICAgIGJib3guaGVpZ2h0ID0gY2FjaGVTaXplLnIgKiAyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYmJveC53aWR0aCA9IGNhY2hlU2l6ZS53aWR0aDtcbiAgICAgICAgYmJveC5oZWlnaHQgPSBjYWNoZVNpemUuaGVpZ2h0O1xuICAgICAgfVxuXG4gICAgICBiYm94Lm1pblggPSBiYm94LmNlbnRlclggLSBiYm94LndpZHRoIC8gMjtcbiAgICAgIGJib3gubWluWSA9IGJib3guY2VudGVyWSAtIGJib3guaGVpZ2h0IC8gMjtcbiAgICAgIGJib3gubWF4WCA9IGJib3guY2VudGVyWCArIGJib3gud2lkdGggLyAyO1xuICAgICAgYmJveC5tYXhZID0gYmJveC5jZW50ZXJZICsgYmJveC5oZWlnaHQgLyAyO1xuICAgIH0gZWxzZSB7XG4gICAgICBiYm94LndpZHRoID0gYmJveC5tYXhYIC0gYmJveC5taW5YO1xuICAgICAgYmJveC5oZWlnaHQgPSBiYm94Lm1heFkgLSBiYm94Lm1pblk7XG4gICAgICBiYm94LmNlbnRlclggPSAoYmJveC5taW5YICsgYmJveC5tYXhYKSAvIDI7XG4gICAgICBiYm94LmNlbnRlclkgPSAoYmJveC5taW5ZICsgYmJveC5tYXhZKSAvIDI7XG4gICAgfVxuXG4gICAgYmJveC54ID0gYmJveC5taW5YO1xuICAgIGJib3gueSA9IGJib3gubWluWTtcbiAgICBpZiAoYmJveC54ICE9PSBvcmlYIHx8IGJib3gueSAhPT0gb3JpWSkgdGhpcy5zZXQoQ0FDSEVfQU5DSE9SX1BPSU5UUywgbnVsbCk7XG4gICAgcmV0dXJuIGJib3g7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5YgQ29tYm8g5Lit5omA5pyJ55qE5a2Q5YWD57Sg77yM5YyF5ousIENvbWJv44CBTm9kZSDlj4ogRWRnZVxuICAgKi9cblxuXG4gIENvbWJvLnByb3RvdHlwZS5nZXRDaGlsZHJlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5vZGVzOiBzZWxmLmdldE5vZGVzKCksXG4gICAgICBjb21ib3M6IHNlbGYuZ2V0Q29tYm9zKClcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICog6I635Y+WIENvbWJvIOS4reaJgOacieWtkOiKgueCuVxuICAgKi9cblxuXG4gIENvbWJvLnByb3RvdHlwZS5nZXROb2RlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgcmV0dXJuIHNlbGYuZ2V0KCdub2RlcycpO1xuICB9O1xuICAvKipcbiAgICog6I635Y+WIENvbWJvIOS4reaJgOacieWtkCBjb21ib1xuICAgKi9cblxuXG4gIENvbWJvLnByb3RvdHlwZS5nZXRDb21ib3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHJldHVybiBzZWxmLmdldCgnY29tYm9zJyk7XG4gIH07XG4gIC8qKlxuICAgKiDlkJEgQ29tYm8g5Lit5aKe5Yqg5a2QIGNvbWJvIOaIliBub2RlXG4gICAqIEBwYXJhbSBpdGVtIENvbWJvIOaIluiKgueCueWunuS+i1xuICAgKiBAcmV0dXJuIGJvb2xlYW4g5re75Yqg5oiQ5Yqf6L+U5ZueIHRydWXvvIzlkKbliJnov5Tlm54gZmFsc2VcbiAgICovXG5cblxuICBDb21iby5wcm90b3R5cGUuYWRkQ2hpbGQgPSBmdW5jdGlvbiAoaXRlbSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgaXRlbVR5cGUgPSBpdGVtLmdldFR5cGUoKTtcblxuICAgIHN3aXRjaCAoaXRlbVR5cGUpIHtcbiAgICAgIGNhc2UgJ25vZGUnOlxuICAgICAgICBzZWxmLmFkZE5vZGUoaXRlbSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdjb21ibyc6XG4gICAgICAgIHNlbGYuYWRkQ29tYm8oaXRlbSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zb2xlLndhcm4oJ09ubHkgbm9kZSBvciBjb21ibyBpdGVtcyBhcmUgYWxsb3dlZCB0byBiZSBhZGRlZCBpbnRvIGEgY29tYm8nKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuICAvKipcbiAgICog5ZCRIENvbWJvIOS4reWinuWKoCBjb21ib1xuICAgKiBAcGFyYW0gY29tYm8gQ29tYm8g5a6e5L6LXG4gICAqIEByZXR1cm4gYm9vbGVhbiDmt7vliqDmiJDlip/ov5Tlm54gdHJ1Ze+8jOWQpuWImei/lOWbniBmYWxzZVxuICAgKi9cblxuXG4gIENvbWJvLnByb3RvdHlwZS5hZGRDb21ibyA9IGZ1bmN0aW9uIChjb21ibykge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICBzZWxmLmdldCgnY29tYm9zJykucHVzaChjb21ibyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG4gIC8qKlxuICAgKiDlkJEgQ29tYm8g5Lit5re75Yqg6IqC54K5XG4gICAqIEBwYXJhbSBub2RlIOiKgueCueWunuS+i1xuICAgKiBAcmV0dXJuIGJvb2xlYW4g5re75Yqg5oiQ5Yqf6L+U5ZueIHRydWXvvIzlkKbliJnov5Tlm54gZmFsc2VcbiAgICovXG5cblxuICBDb21iby5wcm90b3R5cGUuYWRkTm9kZSA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHNlbGYuZ2V0KCdub2RlcycpLnB1c2gobm9kZSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG4gIC8qKlxuICAgKiDlkJEgQ29tYm8g5Lit5aKe5Yqg5a2QIGNvbWJvIOaIliBub2RlXG4gICAqIEBwYXJhbSBpdGVtIENvbWJvIOaIluiKgueCueWunuS+i1xuICAgKiBAcmV0dXJuIGJvb2xlYW4g5re75Yqg5oiQ5Yqf6L+U5ZueIHRydWXvvIzlkKbliJnov5Tlm54gZmFsc2VcbiAgICovXG5cblxuICBDb21iby5wcm90b3R5cGUucmVtb3ZlQ2hpbGQgPSBmdW5jdGlvbiAoaXRlbSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgaXRlbVR5cGUgPSBpdGVtLmdldFR5cGUoKTtcblxuICAgIHN3aXRjaCAoaXRlbVR5cGUpIHtcbiAgICAgIGNhc2UgJ25vZGUnOlxuICAgICAgICBzZWxmLnJlbW92ZU5vZGUoaXRlbSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdjb21ibyc6XG4gICAgICAgIHNlbGYucmVtb3ZlQ29tYm8oaXRlbSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zb2xlLndhcm4oJ09ubHkgbm9kZSBvciBjb21ibyBpdGVtcyBhcmUgYWxsb3dlZCB0byBiZSBhZGRlZCBpbnRvIGEgY29tYm8nKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuICAvKipcbiAgICog5LuOIENvbWJvIOS4reenu+mZpOaMh+WumueahCBjb21ib1xuICAgKiBAcGFyYW0gY29tYm8gQ29tYm8g5a6e5L6LXG4gICAqIEByZXR1cm4gYm9vbGVhbiDnp7vpmaTmiJDlip/ov5Tlm54gdHJ1Ze+8jOWQpuWImei/lOWbniBmYWxzZVxuICAgKi9cblxuXG4gIENvbWJvLnByb3RvdHlwZS5yZW1vdmVDb21ibyA9IGZ1bmN0aW9uIChjb21ibykge1xuICAgIGlmICghY29tYm8pIHJldHVybjtcbiAgICB2YXIgY29tYm9zID0gdGhpcy5nZXRDb21ib3MoKTtcbiAgICB2YXIgaW5kZXggPSBjb21ib3MuaW5kZXhPZihjb21ibyk7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgY29tYm9zLnNwbGljZShpbmRleCwgMSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG4gIC8qKlxuICAgKiDlkJEgQ29tYm8g5Lit56e76Zmk5oyH5a6a55qE6IqC54K5XG4gICAqIEBwYXJhbSBub2RlIOiKgueCueWunuS+i1xuICAgKiBAcmV0dXJuIGJvb2xlYW4g56e76Zmk5oiQ5Yqf6L+U5ZueIHRydWXvvIzlkKbliJnov5Tlm54gZmFsc2VcbiAgICovXG5cblxuICBDb21iby5wcm90b3R5cGUucmVtb3ZlTm9kZSA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgaWYgKCFub2RlKSByZXR1cm47XG4gICAgdmFyIG5vZGVzID0gdGhpcy5nZXROb2RlcygpO1xuICAgIHZhciBpbmRleCA9IG5vZGVzLmluZGV4T2Yobm9kZSk7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgbm9kZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICBDb21iby5wcm90b3R5cGUuZ2V0VXBkYXRlVHlwZSA9IGZ1bmN0aW9uIChjZmcpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9O1xuICAvKipcbiAgICog6I635Y+WIGl0ZW0g55qE5YyF5Zu055uS77yM6L+Z5Liq5YyF5Zu055uS5piv55u45a+55LqOIGl0ZW0g6Ieq5bex77yM5LiN5Lya5bCGIG1hdHJpeCDorqHnrpflnKjlhoVcbiAgICogQHJldHVybiB7T2JqZWN0fSDljIXlkKsgeCx5LHdpZHRoLGhlaWdodCwgY2VudGVyWCwgY2VudGVyWVxuICAgKi9cblxuXG4gIENvbWJvLnByb3RvdHlwZS5nZXRCQm94ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuc2V0KENBQ0hFX0NBTlZBU19CQk9YLCBudWxsKTtcbiAgICB2YXIgYmJveCA9IHRoaXMuY2FsY3VsYXRlQ2FudmFzQkJveCgpO1xuICAgIHJldHVybiBiYm94O1xuICB9O1xuXG4gIENvbWJvLnByb3RvdHlwZS5jbGVhckNhY2hlID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuc2V0KENBQ0hFX0JCT1gsIG51bGwpOyAvLyDmuIXnkIbnvJPlrZjnmoQgYmJveFxuXG4gICAgdGhpcy5zZXQoQ0FDSEVfQ0FOVkFTX0JCT1gsIG51bGwpO1xuICAgIHRoaXMuc2V0KENBQ0hFX0FOQ0hPUl9QT0lOVFMsIG51bGwpO1xuICB9O1xuXG4gIENvbWJvLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghdGhpcy5kZXN0cm95ZWQpIHtcbiAgICAgIHZhciBhbmltYXRlID0gdGhpcy5nZXQoJ2FuaW1hdGUnKTtcbiAgICAgIHZhciBncm91cCA9IHRoaXMuZ2V0KCdncm91cCcpO1xuXG4gICAgICBpZiAoYW5pbWF0ZSkge1xuICAgICAgICBncm91cC5zdG9wQW5pbWF0ZSgpO1xuICAgICAgfVxuXG4gICAgICBncm91cFsnc2hhcGVNYXAnXSA9IHt9O1xuICAgICAgdGhpcy5jbGVhckNhY2hlKCk7XG4gICAgICB0aGlzLnNldChDQUNIRV9TSVpFLCBudWxsKTtcbiAgICAgIHRoaXMuc2V0KCdiYm94JywgbnVsbCk7XG4gICAgICBncm91cC5yZW1vdmUoKTtcbiAgICAgIHRoaXMuX2NmZyA9IG51bGw7XG4gICAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBDb21ibztcbn0oTm9kZSk7XG5cbmV4cG9ydCBkZWZhdWx0IENvbWJvOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/combo.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/edge.js":
/*!*************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/edge.js ***!
\*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _item__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./item */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/item.js\");\n\n\n\nvar END_MAP = {\n source: 'start',\n target: 'end'\n};\nvar ITEM_NAME_SUFFIX = 'Node'; // 端点的后缀,如 sourceNode, targetNode\n\nvar POINT_NAME_SUFFIX = 'Point'; // 起点或者结束点的后缀,如 startPoint, endPoint\n\nvar ANCHOR_NAME_SUFFIX = 'Anchor';\n\nvar Edge =\n/** @class */\nfunction (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Edge, _super);\n\n function Edge() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Edge.prototype.getDefaultCfg = function () {\n return {\n type: 'edge',\n sourceNode: null,\n targetNode: null,\n startPoint: null,\n endPoint: null,\n linkCenter: false\n };\n };\n\n Edge.prototype.setEnd = function (name, value) {\n var pointName = END_MAP[name] + POINT_NAME_SUFFIX;\n var itemName = name + ITEM_NAME_SUFFIX;\n var preItem = this.get(itemName);\n\n if (preItem && !preItem.destroyed) {\n // 如果之前存在节点,则移除掉边\n preItem.removeEdge(this);\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isPlainObject\"])(value)) {\n // 如果设置成具体的点,则清理节点\n this.set(pointName, value);\n this.set(itemName, null);\n } else if (value) {\n value.addEdge(this);\n this.set(itemName, value);\n this.set(pointName, null);\n }\n };\n /**\n * 获取连接点的坐标\n * @param name source | target\n * @param model 边的数据模型\n * @param controlPoints 控制点\n */\n\n\n Edge.prototype.getLinkPoint = function (name, model, controlPoints) {\n var pointName = END_MAP[name] + POINT_NAME_SUFFIX;\n var itemName = name + ITEM_NAME_SUFFIX;\n var point = this.get(pointName);\n\n if (!point) {\n var item = this.get(itemName);\n var anchorName = name + ANCHOR_NAME_SUFFIX;\n var prePoint = this.getPrePoint(name, controlPoints);\n var anchorIndex = model[anchorName];\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(anchorIndex)) {\n // 如果有锚点,则使用锚点索引获取连接点\n point = item.getLinkPointByAnchor(anchorIndex);\n } // 如果锚点没有对应的点或者没有锚点,则直接计算连接点\n\n\n point = point || item.getLinkPoint(prePoint);\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(point.index)) {\n this.set(name + \"AnchorIndex\", point.index);\n }\n }\n\n return point;\n };\n /**\n * 获取同端点进行连接的点,计算交汇点\n * @param name\n * @param controlPoints\n */\n\n\n Edge.prototype.getPrePoint = function (name, controlPoints) {\n if (controlPoints && controlPoints.length) {\n var index = name === 'source' ? 0 : controlPoints.length - 1;\n return controlPoints[index];\n }\n\n var oppositeName = name === 'source' ? 'target' : 'source'; // 取另一个节点的位置\n\n return this.getEndPoint(oppositeName);\n };\n /**\n * 获取端点的位置\n * @param name\n */\n\n\n Edge.prototype.getEndPoint = function (name) {\n var itemName = name + ITEM_NAME_SUFFIX;\n var pointName = END_MAP[name] + POINT_NAME_SUFFIX;\n var item = this.get(itemName); // 如果有端点,直接使用 model\n\n if (item) {\n return item.get('model');\n } // 否则直接使用点\n\n\n return this.get(pointName);\n };\n /**\n * 通过端点的中心获取控制点\n * @param model\n */\n\n\n Edge.prototype.getControlPointsByCenter = function (model) {\n var sourcePoint = this.getEndPoint('source');\n var targetPoint = this.getEndPoint('target');\n var shapeFactory = this.get('shapeFactory');\n var type = model.type;\n return shapeFactory.getControlPoints(type, {\n startPoint: sourcePoint,\n endPoint: targetPoint\n });\n };\n\n Edge.prototype.getEndCenter = function (name) {\n var itemName = name + ITEM_NAME_SUFFIX;\n var pointName = END_MAP[name] + POINT_NAME_SUFFIX;\n var item = this.get(itemName); // 如果有端点,直接使用 model\n\n if (item) {\n var bbox = item.getBBox();\n return {\n x: bbox.centerX,\n y: bbox.centerY\n };\n } // 否则直接使用点\n\n\n return this.get(pointName);\n };\n\n Edge.prototype.init = function () {\n _super.prototype.init.call(this); // 初始化两个端点\n\n\n this.setSource(this.get('source'));\n this.setTarget(this.get('target'));\n };\n\n Edge.prototype.getShapeCfg = function (model, updateType) {\n var self = this;\n var linkCenter = self.get('linkCenter'); // 如果连接到中心,忽视锚点、忽视控制点\n\n var cfg = (updateType === null || updateType === void 0 ? void 0 : updateType.includes('move')) ? model : _super.prototype.getShapeCfg.call(this, model);\n\n if (linkCenter) {\n cfg.startPoint = self.getEndCenter('source');\n cfg.endPoint = self.getEndCenter('target');\n } else {\n var controlPoints = cfg.controlPoints || self.getControlPointsByCenter(cfg);\n cfg.startPoint = self.getLinkPoint('source', model, controlPoints);\n cfg.endPoint = self.getLinkPoint('target', model, controlPoints);\n }\n\n cfg.sourceNode = self.get('sourceNode');\n cfg.targetNode = self.get('targetNode');\n return cfg;\n };\n /**\n * 获取边的数据模型\n */\n\n\n Edge.prototype.getModel = function () {\n var out = this.get('model');\n var sourceItem = this.get(\"source\" + ITEM_NAME_SUFFIX);\n var targetItem = this.get(\"target\" + ITEM_NAME_SUFFIX);\n\n if (sourceItem) {\n delete out[\"source\" + ITEM_NAME_SUFFIX];\n } else {\n out.source = this.get(\"start\" + POINT_NAME_SUFFIX);\n }\n\n if (targetItem) {\n delete out[\"target\" + ITEM_NAME_SUFFIX];\n } else {\n out.target = this.get(\"end\" + POINT_NAME_SUFFIX);\n }\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(out.source) && !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isPlainObject\"])(out.source)) {\n out.source = out.source.getID();\n }\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(out.target) && !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isPlainObject\"])(out.target)) {\n out.target = out.target.getID();\n }\n\n return out;\n };\n\n Edge.prototype.setSource = function (source) {\n this.setEnd('source', source);\n this.set('source', source);\n };\n\n Edge.prototype.setTarget = function (target) {\n this.setEnd('target', target);\n this.set('target', target);\n };\n\n Edge.prototype.getSource = function () {\n return this.get('source');\n };\n\n Edge.prototype.getTarget = function () {\n return this.get('target');\n };\n\n Edge.prototype.updatePosition = function () {\n return false;\n };\n /**\n * 边不需要重计算容器位置,直接重新计算 path 位置\n * @param {object} cfg 待更新数据\n */\n\n\n Edge.prototype.update = function (cfg, updateType) {\n if (updateType === void 0) {\n updateType = undefined;\n }\n\n var model = this.get('model');\n var oriVisible = model.visible;\n var cfgVisible = cfg.visible;\n if (oriVisible !== cfgVisible && cfgVisible !== undefined) this.changeVisibility(cfgVisible);\n var styles = this.get('styles');\n\n if (cfg.stateStyles) {\n // 更新 item 时更新 this.get('styles') 中的值\n var stateStyles = cfg.stateStyles;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])(styles, stateStyles);\n delete cfg.stateStyles;\n }\n\n Object.assign(model, cfg);\n this.updateShape(updateType);\n this.afterUpdate();\n this.clearCache();\n };\n\n Edge.prototype.destroy = function () {\n var sourceItem = this.get(\"source\" + ITEM_NAME_SUFFIX);\n var targetItem = this.get(\"target\" + ITEM_NAME_SUFFIX);\n\n if (sourceItem && !sourceItem.destroyed) {\n sourceItem.removeEdge(this);\n }\n\n if (targetItem && !targetItem.destroyed) {\n targetItem.removeEdge(this);\n }\n\n _super.prototype.destroy.call(this);\n };\n\n return Edge;\n}(_item__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Edge);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9pdGVtL2VkZ2UuanM/MTlhZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQztBQUMrQjtBQUN2QztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4Qjs7QUFFOUIsZ0NBQWdDOztBQUVoQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLHVEQUFTOztBQUVYO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLGdFQUFhO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFdBQVcsd0RBQUs7QUFDaEI7QUFDQTtBQUNBLE9BQU87OztBQUdQOztBQUVBLFdBQVcsd0RBQUs7QUFDaEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLCtEQUErRDs7QUFFL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7O0FBRWxDO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDOztBQUVsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBOztBQUVBO0FBQ0EscUNBQXFDOzs7QUFHckM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSw0Q0FBNEM7O0FBRTVDOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQSxTQUFTLDJEQUFRLGlCQUFpQixnRUFBYTtBQUMvQztBQUNBOztBQUVBLFNBQVMsMkRBQVEsaUJBQWlCLGdFQUFhO0FBQy9DO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTSxzREFBRztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyxDQUFDLDZDQUFJOztBQUVTLG1FQUFJIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1jb3JlQDAuNS4wQEBhbnR2L2c2LWNvcmUvZXMvaXRlbS9lZGdlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBpc1N0cmluZywgaXNQbGFpbk9iamVjdCwgaXNOaWwsIG1peCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IEl0ZW0gZnJvbSAnLi9pdGVtJztcbnZhciBFTkRfTUFQID0ge1xuICBzb3VyY2U6ICdzdGFydCcsXG4gIHRhcmdldDogJ2VuZCdcbn07XG52YXIgSVRFTV9OQU1FX1NVRkZJWCA9ICdOb2RlJzsgLy8g56uv54K555qE5ZCO57yA77yM5aaCIHNvdXJjZU5vZGUsIHRhcmdldE5vZGVcblxudmFyIFBPSU5UX05BTUVfU1VGRklYID0gJ1BvaW50JzsgLy8g6LW354K55oiW6ICF57uT5p2f54K555qE5ZCO57yA77yM5aaCIHN0YXJ0UG9pbnQsIGVuZFBvaW50XG5cbnZhciBBTkNIT1JfTkFNRV9TVUZGSVggPSAnQW5jaG9yJztcblxudmFyIEVkZ2UgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKF9zdXBlcikge1xuICBfX2V4dGVuZHMoRWRnZSwgX3N1cGVyKTtcblxuICBmdW5jdGlvbiBFZGdlKCkge1xuICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgfVxuXG4gIEVkZ2UucHJvdG90eXBlLmdldERlZmF1bHRDZmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdlZGdlJyxcbiAgICAgIHNvdXJjZU5vZGU6IG51bGwsXG4gICAgICB0YXJnZXROb2RlOiBudWxsLFxuICAgICAgc3RhcnRQb2ludDogbnVsbCxcbiAgICAgIGVuZFBvaW50OiBudWxsLFxuICAgICAgbGlua0NlbnRlcjogZmFsc2VcbiAgICB9O1xuICB9O1xuXG4gIEVkZ2UucHJvdG90eXBlLnNldEVuZCA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xuICAgIHZhciBwb2ludE5hbWUgPSBFTkRfTUFQW25hbWVdICsgUE9JTlRfTkFNRV9TVUZGSVg7XG4gICAgdmFyIGl0ZW1OYW1lID0gbmFtZSArIElURU1fTkFNRV9TVUZGSVg7XG4gICAgdmFyIHByZUl0ZW0gPSB0aGlzLmdldChpdGVtTmFtZSk7XG5cbiAgICBpZiAocHJlSXRlbSAmJiAhcHJlSXRlbS5kZXN0cm95ZWQpIHtcbiAgICAgIC8vIOWmguaenOS5i+WJjeWtmOWcqOiKgueCue+8jOWImeenu+mZpOaOiei+uVxuICAgICAgcHJlSXRlbS5yZW1vdmVFZGdlKHRoaXMpO1xuICAgIH1cblxuICAgIGlmIChpc1BsYWluT2JqZWN0KHZhbHVlKSkge1xuICAgICAgLy8g5aaC5p6c6K6+572u5oiQ5YW35L2T55qE54K577yM5YiZ5riF55CG6IqC54K5XG4gICAgICB0aGlzLnNldChwb2ludE5hbWUsIHZhbHVlKTtcbiAgICAgIHRoaXMuc2V0KGl0ZW1OYW1lLCBudWxsKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICB2YWx1ZS5hZGRFZGdlKHRoaXMpO1xuICAgICAgdGhpcy5zZXQoaXRlbU5hbWUsIHZhbHVlKTtcbiAgICAgIHRoaXMuc2V0KHBvaW50TmFtZSwgbnVsbCk7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog6I635Y+W6L+e5o6l54K555qE5Z2Q5qCHXG4gICAqIEBwYXJhbSBuYW1lIHNvdXJjZSB8IHRhcmdldFxuICAgKiBAcGFyYW0gbW9kZWwg6L6555qE5pWw5o2u5qih5Z6LXG4gICAqIEBwYXJhbSBjb250cm9sUG9pbnRzIOaOp+WItueCuVxuICAgKi9cblxuXG4gIEVkZ2UucHJvdG90eXBlLmdldExpbmtQb2ludCA9IGZ1bmN0aW9uIChuYW1lLCBtb2RlbCwgY29udHJvbFBvaW50cykge1xuICAgIHZhciBwb2ludE5hbWUgPSBFTkRfTUFQW25hbWVdICsgUE9JTlRfTkFNRV9TVUZGSVg7XG4gICAgdmFyIGl0ZW1OYW1lID0gbmFtZSArIElURU1fTkFNRV9TVUZGSVg7XG4gICAgdmFyIHBvaW50ID0gdGhpcy5nZXQocG9pbnROYW1lKTtcblxuICAgIGlmICghcG9pbnQpIHtcbiAgICAgIHZhciBpdGVtID0gdGhpcy5nZXQoaXRlbU5hbWUpO1xuICAgICAgdmFyIGFuY2hvck5hbWUgPSBuYW1lICsgQU5DSE9SX05BTUVfU1VGRklYO1xuICAgICAgdmFyIHByZVBvaW50ID0gdGhpcy5nZXRQcmVQb2ludChuYW1lLCBjb250cm9sUG9pbnRzKTtcbiAgICAgIHZhciBhbmNob3JJbmRleCA9IG1vZGVsW2FuY2hvck5hbWVdO1xuXG4gICAgICBpZiAoIWlzTmlsKGFuY2hvckluZGV4KSkge1xuICAgICAgICAvLyDlpoLmnpzmnInplJrngrnvvIzliJnkvb/nlKjplJrngrnntKLlvJXojrflj5bov57mjqXngrlcbiAgICAgICAgcG9pbnQgPSBpdGVtLmdldExpbmtQb2ludEJ5QW5jaG9yKGFuY2hvckluZGV4KTtcbiAgICAgIH0gLy8g5aaC5p6c6ZSa54K55rKh5pyJ5a+55bqU55qE54K55oiW6ICF5rKh5pyJ6ZSa54K577yM5YiZ55u05o6l6K6h566X6L+e5o6l54K5XG5cblxuICAgICAgcG9pbnQgPSBwb2ludCB8fCBpdGVtLmdldExpbmtQb2ludChwcmVQb2ludCk7XG5cbiAgICAgIGlmICghaXNOaWwocG9pbnQuaW5kZXgpKSB7XG4gICAgICAgIHRoaXMuc2V0KG5hbWUgKyBcIkFuY2hvckluZGV4XCIsIHBvaW50LmluZGV4KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcG9pbnQ7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5blkIznq6/ngrnov5vooYzov57mjqXnmoTngrnvvIzorqHnrpfkuqTmsYfngrlcbiAgICogQHBhcmFtIG5hbWVcbiAgICogQHBhcmFtIGNvbnRyb2xQb2ludHNcbiAgICovXG5cblxuICBFZGdlLnByb3RvdHlwZS5nZXRQcmVQb2ludCA9IGZ1bmN0aW9uIChuYW1lLCBjb250cm9sUG9pbnRzKSB7XG4gICAgaWYgKGNvbnRyb2xQb2ludHMgJiYgY29udHJvbFBvaW50cy5sZW5ndGgpIHtcbiAgICAgIHZhciBpbmRleCA9IG5hbWUgPT09ICdzb3VyY2UnID8gMCA6IGNvbnRyb2xQb2ludHMubGVuZ3RoIC0gMTtcbiAgICAgIHJldHVybiBjb250cm9sUG9pbnRzW2luZGV4XTtcbiAgICB9XG5cbiAgICB2YXIgb3Bwb3NpdGVOYW1lID0gbmFtZSA9PT0gJ3NvdXJjZScgPyAndGFyZ2V0JyA6ICdzb3VyY2UnOyAvLyDlj5blj6bkuIDkuKroioLngrnnmoTkvY3nva5cblxuICAgIHJldHVybiB0aGlzLmdldEVuZFBvaW50KG9wcG9zaXRlTmFtZSk7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5bnq6/ngrnnmoTkvY3nva5cbiAgICogQHBhcmFtIG5hbWVcbiAgICovXG5cblxuICBFZGdlLnByb3RvdHlwZS5nZXRFbmRQb2ludCA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdmFyIGl0ZW1OYW1lID0gbmFtZSArIElURU1fTkFNRV9TVUZGSVg7XG4gICAgdmFyIHBvaW50TmFtZSA9IEVORF9NQVBbbmFtZV0gKyBQT0lOVF9OQU1FX1NVRkZJWDtcbiAgICB2YXIgaXRlbSA9IHRoaXMuZ2V0KGl0ZW1OYW1lKTsgLy8g5aaC5p6c5pyJ56uv54K577yM55u05o6l5L2/55SoIG1vZGVsXG5cbiAgICBpZiAoaXRlbSkge1xuICAgICAgcmV0dXJuIGl0ZW0uZ2V0KCdtb2RlbCcpO1xuICAgIH0gLy8g5ZCm5YiZ55u05o6l5L2/55So54K5XG5cblxuICAgIHJldHVybiB0aGlzLmdldChwb2ludE5hbWUpO1xuICB9O1xuICAvKipcbiAgICog6YCa6L+H56uv54K555qE5Lit5b+D6I635Y+W5o6n5Yi254K5XG4gICAqIEBwYXJhbSBtb2RlbFxuICAgKi9cblxuXG4gIEVkZ2UucHJvdG90eXBlLmdldENvbnRyb2xQb2ludHNCeUNlbnRlciA9IGZ1bmN0aW9uIChtb2RlbCkge1xuICAgIHZhciBzb3VyY2VQb2ludCA9IHRoaXMuZ2V0RW5kUG9pbnQoJ3NvdXJjZScpO1xuICAgIHZhciB0YXJnZXRQb2ludCA9IHRoaXMuZ2V0RW5kUG9pbnQoJ3RhcmdldCcpO1xuICAgIHZhciBzaGFwZUZhY3RvcnkgPSB0aGlzLmdldCgnc2hhcGVGYWN0b3J5Jyk7XG4gICAgdmFyIHR5cGUgPSBtb2RlbC50eXBlO1xuICAgIHJldHVybiBzaGFwZUZhY3RvcnkuZ2V0Q29udHJvbFBvaW50cyh0eXBlLCB7XG4gICAgICBzdGFydFBvaW50OiBzb3VyY2VQb2ludCxcbiAgICAgIGVuZFBvaW50OiB0YXJnZXRQb2ludFxuICAgIH0pO1xuICB9O1xuXG4gIEVkZ2UucHJvdG90eXBlLmdldEVuZENlbnRlciA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdmFyIGl0ZW1OYW1lID0gbmFtZSArIElURU1fTkFNRV9TVUZGSVg7XG4gICAgdmFyIHBvaW50TmFtZSA9IEVORF9NQVBbbmFtZV0gKyBQT0lOVF9OQU1FX1NVRkZJWDtcbiAgICB2YXIgaXRlbSA9IHRoaXMuZ2V0KGl0ZW1OYW1lKTsgLy8g5aaC5p6c5pyJ56uv54K577yM55u05o6l5L2/55SoIG1vZGVsXG5cbiAgICBpZiAoaXRlbSkge1xuICAgICAgdmFyIGJib3ggPSBpdGVtLmdldEJCb3goKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IGJib3guY2VudGVyWCxcbiAgICAgICAgeTogYmJveC5jZW50ZXJZXG4gICAgICB9O1xuICAgIH0gLy8g5ZCm5YiZ55u05o6l5L2/55So54K5XG5cblxuICAgIHJldHVybiB0aGlzLmdldChwb2ludE5hbWUpO1xuICB9O1xuXG4gIEVkZ2UucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgX3N1cGVyLnByb3RvdHlwZS5pbml0LmNhbGwodGhpcyk7IC8vIOWIneWni+WMluS4pOS4querr+eCuVxuXG5cbiAgICB0aGlzLnNldFNvdXJjZSh0aGlzLmdldCgnc291cmNlJykpO1xuICAgIHRoaXMuc2V0VGFyZ2V0KHRoaXMuZ2V0KCd0YXJnZXQnKSk7XG4gIH07XG5cbiAgRWRnZS5wcm90b3R5cGUuZ2V0U2hhcGVDZmcgPSBmdW5jdGlvbiAobW9kZWwsIHVwZGF0ZVR5cGUpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGxpbmtDZW50ZXIgPSBzZWxmLmdldCgnbGlua0NlbnRlcicpOyAvLyDlpoLmnpzov57mjqXliLDkuK3lv4PvvIzlv73op4bplJrngrnjgIHlv73op4bmjqfliLbngrlcblxuICAgIHZhciBjZmcgPSAodXBkYXRlVHlwZSA9PT0gbnVsbCB8fCB1cGRhdGVUeXBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiB1cGRhdGVUeXBlLmluY2x1ZGVzKCdtb3ZlJykpID8gbW9kZWwgOiBfc3VwZXIucHJvdG90eXBlLmdldFNoYXBlQ2ZnLmNhbGwodGhpcywgbW9kZWwpO1xuXG4gICAgaWYgKGxpbmtDZW50ZXIpIHtcbiAgICAgIGNmZy5zdGFydFBvaW50ID0gc2VsZi5nZXRFbmRDZW50ZXIoJ3NvdXJjZScpO1xuICAgICAgY2ZnLmVuZFBvaW50ID0gc2VsZi5nZXRFbmRDZW50ZXIoJ3RhcmdldCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgY29udHJvbFBvaW50cyA9IGNmZy5jb250cm9sUG9pbnRzIHx8IHNlbGYuZ2V0Q29udHJvbFBvaW50c0J5Q2VudGVyKGNmZyk7XG4gICAgICBjZmcuc3RhcnRQb2ludCA9IHNlbGYuZ2V0TGlua1BvaW50KCdzb3VyY2UnLCBtb2RlbCwgY29udHJvbFBvaW50cyk7XG4gICAgICBjZmcuZW5kUG9pbnQgPSBzZWxmLmdldExpbmtQb2ludCgndGFyZ2V0JywgbW9kZWwsIGNvbnRyb2xQb2ludHMpO1xuICAgIH1cblxuICAgIGNmZy5zb3VyY2VOb2RlID0gc2VsZi5nZXQoJ3NvdXJjZU5vZGUnKTtcbiAgICBjZmcudGFyZ2V0Tm9kZSA9IHNlbGYuZ2V0KCd0YXJnZXROb2RlJyk7XG4gICAgcmV0dXJuIGNmZztcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPlui+ueeahOaVsOaNruaooeWei1xuICAgKi9cblxuXG4gIEVkZ2UucHJvdG90eXBlLmdldE1vZGVsID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBvdXQgPSB0aGlzLmdldCgnbW9kZWwnKTtcbiAgICB2YXIgc291cmNlSXRlbSA9IHRoaXMuZ2V0KFwic291cmNlXCIgKyBJVEVNX05BTUVfU1VGRklYKTtcbiAgICB2YXIgdGFyZ2V0SXRlbSA9IHRoaXMuZ2V0KFwidGFyZ2V0XCIgKyBJVEVNX05BTUVfU1VGRklYKTtcblxuICAgIGlmIChzb3VyY2VJdGVtKSB7XG4gICAgICBkZWxldGUgb3V0W1wic291cmNlXCIgKyBJVEVNX05BTUVfU1VGRklYXTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0LnNvdXJjZSA9IHRoaXMuZ2V0KFwic3RhcnRcIiArIFBPSU5UX05BTUVfU1VGRklYKTtcbiAgICB9XG5cbiAgICBpZiAodGFyZ2V0SXRlbSkge1xuICAgICAgZGVsZXRlIG91dFtcInRhcmdldFwiICsgSVRFTV9OQU1FX1NVRkZJWF07XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dC50YXJnZXQgPSB0aGlzLmdldChcImVuZFwiICsgUE9JTlRfTkFNRV9TVUZGSVgpO1xuICAgIH1cblxuICAgIGlmICghaXNTdHJpbmcob3V0LnNvdXJjZSkgJiYgIWlzUGxhaW5PYmplY3Qob3V0LnNvdXJjZSkpIHtcbiAgICAgIG91dC5zb3VyY2UgPSBvdXQuc291cmNlLmdldElEKCk7XG4gICAgfVxuXG4gICAgaWYgKCFpc1N0cmluZyhvdXQudGFyZ2V0KSAmJiAhaXNQbGFpbk9iamVjdChvdXQudGFyZ2V0KSkge1xuICAgICAgb3V0LnRhcmdldCA9IG91dC50YXJnZXQuZ2V0SUQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0O1xuICB9O1xuXG4gIEVkZ2UucHJvdG90eXBlLnNldFNvdXJjZSA9IGZ1bmN0aW9uIChzb3VyY2UpIHtcbiAgICB0aGlzLnNldEVuZCgnc291cmNlJywgc291cmNlKTtcbiAgICB0aGlzLnNldCgnc291cmNlJywgc291cmNlKTtcbiAgfTtcblxuICBFZGdlLnByb3RvdHlwZS5zZXRUYXJnZXQgPSBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgdGhpcy5zZXRFbmQoJ3RhcmdldCcsIHRhcmdldCk7XG4gICAgdGhpcy5zZXQoJ3RhcmdldCcsIHRhcmdldCk7XG4gIH07XG5cbiAgRWRnZS5wcm90b3R5cGUuZ2V0U291cmNlID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnc291cmNlJyk7XG4gIH07XG5cbiAgRWRnZS5wcm90b3R5cGUuZ2V0VGFyZ2V0ID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgndGFyZ2V0Jyk7XG4gIH07XG5cbiAgRWRnZS5wcm90b3R5cGUudXBkYXRlUG9zaXRpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuICAvKipcbiAgICog6L655LiN6ZyA6KaB6YeN6K6h566X5a655Zmo5L2N572u77yM55u05o6l6YeN5paw6K6h566XIHBhdGgg5L2N572uXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjZmcg5b6F5pu05paw5pWw5o2uXG4gICAqL1xuXG5cbiAgRWRnZS5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGNmZywgdXBkYXRlVHlwZSkge1xuICAgIGlmICh1cGRhdGVUeXBlID09PSB2b2lkIDApIHtcbiAgICAgIHVwZGF0ZVR5cGUgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgdmFyIG1vZGVsID0gdGhpcy5nZXQoJ21vZGVsJyk7XG4gICAgdmFyIG9yaVZpc2libGUgPSBtb2RlbC52aXNpYmxlO1xuICAgIHZhciBjZmdWaXNpYmxlID0gY2ZnLnZpc2libGU7XG4gICAgaWYgKG9yaVZpc2libGUgIT09IGNmZ1Zpc2libGUgJiYgY2ZnVmlzaWJsZSAhPT0gdW5kZWZpbmVkKSB0aGlzLmNoYW5nZVZpc2liaWxpdHkoY2ZnVmlzaWJsZSk7XG4gICAgdmFyIHN0eWxlcyA9IHRoaXMuZ2V0KCdzdHlsZXMnKTtcblxuICAgIGlmIChjZmcuc3RhdGVTdHlsZXMpIHtcbiAgICAgIC8vIOabtOaWsCBpdGVtIOaXtuabtOaWsCB0aGlzLmdldCgnc3R5bGVzJykg5Lit55qE5YC8XG4gICAgICB2YXIgc3RhdGVTdHlsZXMgPSBjZmcuc3RhdGVTdHlsZXM7XG4gICAgICBtaXgoc3R5bGVzLCBzdGF0ZVN0eWxlcyk7XG4gICAgICBkZWxldGUgY2ZnLnN0YXRlU3R5bGVzO1xuICAgIH1cblxuICAgIE9iamVjdC5hc3NpZ24obW9kZWwsIGNmZyk7XG4gICAgdGhpcy51cGRhdGVTaGFwZSh1cGRhdGVUeXBlKTtcbiAgICB0aGlzLmFmdGVyVXBkYXRlKCk7XG4gICAgdGhpcy5jbGVhckNhY2hlKCk7XG4gIH07XG5cbiAgRWRnZS5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc291cmNlSXRlbSA9IHRoaXMuZ2V0KFwic291cmNlXCIgKyBJVEVNX05BTUVfU1VGRklYKTtcbiAgICB2YXIgdGFyZ2V0SXRlbSA9IHRoaXMuZ2V0KFwidGFyZ2V0XCIgKyBJVEVNX05BTUVfU1VGRklYKTtcblxuICAgIGlmIChzb3VyY2VJdGVtICYmICFzb3VyY2VJdGVtLmRlc3Ryb3llZCkge1xuICAgICAgc291cmNlSXRlbS5yZW1vdmVFZGdlKHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh0YXJnZXRJdGVtICYmICF0YXJnZXRJdGVtLmRlc3Ryb3llZCkge1xuICAgICAgdGFyZ2V0SXRlbS5yZW1vdmVFZGdlKHRoaXMpO1xuICAgIH1cblxuICAgIF9zdXBlci5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpO1xuICB9O1xuXG4gIHJldHVybiBFZGdlO1xufShJdGVtKTtcblxuZXhwb3J0IGRlZmF1bHQgRWRnZTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/edge.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/hull.js":
/*!*************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/hull.js ***!
\*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _antv_path_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/path-util */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/index.js\");\n/* harmony import */ var _util_path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/path */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/path.js\");\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/math */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/math.js\");\n/* harmony import */ var _element_hull_convexHull__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../element/hull/convexHull */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/hull/convexHull.js\");\n/* harmony import */ var _element_hull_bubbleset__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../element/hull/bubbleset */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/hull/bubbleset.js\");\n\n\n\n\n\n\n\n/**\n * 用于包裹内部的成员的轮廓。\n * convex hull(凸包):http://geomalgorithms.com/a10-_hull-1.html#Monotone%20Chain\n * bubble: 使用 bubbleset算法,refer: http://vialab.science.uoit.ca/wp-content/papercite-data/pdf/col2009c.pdf\n * 通过配置 padding 可以调节包裹轮廓对节点的松紧程度\n */\n\nvar Hull =\n/** @class */\nfunction () {\n function Hull(graph, cfg) {\n this.cfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])(this.getDefaultCfg(), cfg);\n this.graph = graph;\n this.id = this.cfg.id;\n this.group = this.cfg.group;\n this.members = this.cfg.members.map(function (item) {\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item) ? graph.findById(item) : item;\n });\n this.nonMembers = this.cfg.nonMembers.map(function (item) {\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item) ? graph.findById(item) : item;\n });\n this.setPadding();\n this.setType();\n this.path = this.calcPath(this.members, this.nonMembers);\n this.render();\n }\n\n Hull.prototype.getDefaultCfg = function () {\n return {\n id: 'g6-hull',\n type: 'round-convex',\n members: [],\n nonMembers: [],\n style: {\n fill: 'lightblue',\n stroke: 'blue',\n opacity: 0.2\n },\n padding: 10\n };\n };\n\n Hull.prototype.setPadding = function () {\n var nodeSize = this.members.length && this.members[0].getKeyShape().getCanvasBBox().width / 2;\n this.padding = this.cfg.padding > 0 ? this.cfg.padding + nodeSize : 10 + nodeSize;\n this.cfg.bubbleCfg = {\n nodeR0: this.padding - nodeSize,\n nodeR1: this.padding - nodeSize,\n morphBuffer: this.padding - nodeSize\n };\n };\n\n Hull.prototype.setType = function () {\n this.type = this.cfg.type;\n\n if (this.members.length < 3) {\n this.type = 'round-convex';\n }\n\n if (this.type !== 'round-convex' && this.type !== 'smooth-convex' && this.type !== 'bubble') {\n console.warn('The hull type should be either round-convex, smooth-convex or bubble, round-convex is used by default.');\n this.type = 'round-convex';\n }\n };\n\n Hull.prototype.calcPath = function (members, nonMembers) {\n var contour, path, hull;\n\n switch (this.type) {\n case 'round-convex':\n contour = Object(_element_hull_convexHull__WEBPACK_IMPORTED_MODULE_5__[\"genConvexHull\"])(members);\n hull = Object(_util_path__WEBPACK_IMPORTED_MODULE_3__[\"roundedHull\"])(contour.map(function (p) {\n return [p.x, p.y];\n }), this.padding);\n path = Object(_antv_path_util__WEBPACK_IMPORTED_MODULE_2__[\"parsePathString\"])(hull);\n break;\n\n case 'smooth-convex':\n contour = Object(_element_hull_convexHull__WEBPACK_IMPORTED_MODULE_5__[\"genConvexHull\"])(members);\n\n if (contour.length === 2) {\n hull = Object(_util_path__WEBPACK_IMPORTED_MODULE_3__[\"roundedHull\"])(contour.map(function (p) {\n return [p.x, p.y];\n }), this.padding);\n path = Object(_antv_path_util__WEBPACK_IMPORTED_MODULE_2__[\"parsePathString\"])(hull);\n } else if (contour.length > 2) {\n hull = Object(_util_path__WEBPACK_IMPORTED_MODULE_3__[\"paddedHull\"])(contour.map(function (p) {\n return [p.x, p.y];\n }), this.padding);\n path = Object(_util_path__WEBPACK_IMPORTED_MODULE_3__[\"getClosedSpline\"])(hull);\n }\n\n break;\n\n case 'bubble':\n contour = Object(_element_hull_bubbleset__WEBPACK_IMPORTED_MODULE_6__[\"genBubbleSet\"])(members, nonMembers, this.cfg.bubbleCfg);\n path = contour.length >= 2 && Object(_util_path__WEBPACK_IMPORTED_MODULE_3__[\"getClosedSpline\"])(contour);\n break;\n\n default:\n }\n\n return path;\n };\n\n Hull.prototype.render = function () {\n this.group.addShape('path', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n path: this.path\n }, this.cfg.style),\n id: this.id,\n name: this.cfg.id,\n capture: false\n });\n this.group.toBack();\n };\n /**\n * 增加hull的成员,同时如果该成员原先在nonMembers中,则从nonMembers中去掉\n * @param item 节点实例\n * @return boolean 添加成功返回 true,否则返回 false\n */\n\n\n Hull.prototype.addMember = function (item) {\n if (!item) return;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) item = this.graph.findById(item);\n this.members.push(item);\n var index = this.nonMembers.indexOf(item);\n\n if (index > -1) {\n this.nonMembers.splice(index, 1);\n }\n\n this.updateData(this.members, this.nonMembers);\n return true;\n };\n /**\n * 增加hull需要排除的节点,同时如果该成员原先在members中,则从members中去掉\n * @param item 节点实例\n * @return boolean 添加成功返回 true,否则返回 false\n */\n\n\n Hull.prototype.addNonMember = function (item) {\n if (!item) return;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) item = this.graph.findById(item);\n this.nonMembers.push(item);\n var index = this.members.indexOf(item);\n\n if (index > -1) {\n this.members.splice(index, 1);\n }\n\n this.updateData(this.members, this.nonMembers);\n return true;\n };\n /**\n * 移除hull中的成员\n * @param node 节点实例\n * @return boolean 移除成功返回 true,否则返回 false\n */\n\n\n Hull.prototype.removeMember = function (item) {\n if (!item) return;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) item = this.graph.findById(item);\n var index = this.members.indexOf(item);\n\n if (index > -1) {\n this.members.splice(index, 1);\n this.updateData(this.members, this.nonMembers);\n return true;\n }\n\n return false;\n };\n /**\n * @param node 节点实例\n * @return boolean 移除成功返回 true,否则返回 false\n */\n\n\n Hull.prototype.removeNonMember = function (item) {\n if (!item) return;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) item = this.graph.findById(item);\n var index = this.nonMembers.indexOf(item);\n\n if (index > -1) {\n this.nonMembers.splice(index, 1);\n this.updateData(this.members, this.nonMembers);\n return true;\n }\n\n return false;\n };\n\n Hull.prototype.updateData = function (members, nonMembers) {\n var _this = this;\n\n this.group.findById(this.id).remove();\n if (members) this.members = members.map(function (item) {\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item) ? _this.graph.findById(item) : item;\n });\n if (nonMembers) this.nonMembers = nonMembers.map(function (item) {\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item) ? _this.graph.findById(item) : item;\n });\n this.path = this.calcPath(this.members, this.nonMembers);\n this.render();\n };\n\n Hull.prototype.updateStyle = function (cfg) {\n var path = this.group.findById(this.id);\n path.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, cfg));\n };\n /**\n * 更新 hull\n * @param cfg hull 配置项\n */\n\n\n Hull.prototype.updateCfg = function (cfg) {\n var _this = this;\n\n this.cfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])(this.cfg, cfg);\n this.id = this.cfg.id;\n this.group = this.cfg.group;\n\n if (cfg.members) {\n this.members = this.cfg.members.map(function (item) {\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item) ? _this.graph.findById(item) : item;\n });\n }\n\n if (cfg.nonMembers) {\n this.nonMembers = this.cfg.nonMembers.map(function (item) {\n return Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item) ? _this.graph.findById(item) : item;\n });\n } // TODO padding 设置太大,会影响到 contain 结果\n\n\n this.setPadding();\n this.setType();\n this.path = this.calcPath(this.members, this.nonMembers);\n this.render();\n };\n /**\n * 判断是否在hull内部\n * @param item\n */\n\n\n Hull.prototype.contain = function (item) {\n var _this = this;\n\n var nodeItem;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(item)) {\n nodeItem = this.graph.findById(item);\n } else {\n nodeItem = item;\n }\n\n var shapePoints;\n var shape = nodeItem.getKeyShape();\n\n if (nodeItem.get('type') === 'path') {\n shapePoints = Object(_util_path__WEBPACK_IMPORTED_MODULE_3__[\"pathToPoints\"])(shape.attr('path'));\n } else {\n var shapeBBox = shape.getCanvasBBox();\n shapePoints = [[shapeBBox.minX, shapeBBox.minY], [shapeBBox.maxX, shapeBBox.minY], [shapeBBox.maxX, shapeBBox.maxY], [shapeBBox.minX, shapeBBox.maxY]];\n }\n\n shapePoints = shapePoints.map(function (canvasPoint) {\n var point = _this.graph.getPointByCanvas(canvasPoint[0], canvasPoint[1]);\n\n return [point.x, point.y];\n });\n return Object(_util_math__WEBPACK_IMPORTED_MODULE_4__[\"isPolygonsIntersect\"])(shapePoints, Object(_util_path__WEBPACK_IMPORTED_MODULE_3__[\"pathToPoints\"])(this.path));\n };\n\n Hull.prototype.destroy = function () {\n this.group.remove();\n this.cfg = null;\n };\n\n return Hull;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Hull);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9pdGVtL2h1bGwuanM/MmZhMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ2M7QUFDRztBQUNvQztBQUNuQztBQUNRO0FBQ0Y7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSwwREFBTztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsMkRBQVE7QUFDckIsS0FBSztBQUNMO0FBQ0EsYUFBYSwyREFBUTtBQUNyQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esa0JBQWtCLDhFQUFhO0FBQy9CLGVBQWUsOERBQVc7QUFDMUI7QUFDQSxTQUFTO0FBQ1QsZUFBZSx1RUFBZTtBQUM5Qjs7QUFFQTtBQUNBLGtCQUFrQiw4RUFBYTs7QUFFL0I7QUFDQSxpQkFBaUIsOERBQVc7QUFDNUI7QUFDQSxXQUFXO0FBQ1gsaUJBQWlCLHVFQUFlO0FBQ2hDLFNBQVM7QUFDVCxpQkFBaUIsNkRBQVU7QUFDM0I7QUFDQSxXQUFXO0FBQ1gsaUJBQWlCLGtFQUFlO0FBQ2hDOztBQUVBOztBQUVBO0FBQ0Esa0JBQWtCLDRFQUFZO0FBQzlCLHNDQUFzQyxrRUFBZTtBQUNyRDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGFBQWEsc0RBQVE7QUFDckI7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0EsUUFBUSwyREFBUTtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0EsUUFBUSwyREFBUTtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0EsUUFBUSwyREFBUTtBQUNoQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBLFFBQVEsMkRBQVE7QUFDaEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGFBQWEsMkRBQVE7QUFDckIsS0FBSztBQUNMO0FBQ0EsYUFBYSwyREFBUTtBQUNyQixLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxjQUFjLHNEQUFRLEdBQUc7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQSxlQUFlLDBEQUFPO0FBQ3RCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGVBQWUsMkRBQVE7QUFDdkIsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQSxlQUFlLDJEQUFRO0FBQ3ZCLE9BQU87QUFDUCxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxvQkFBb0IsK0RBQVk7QUFDaEMsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLFdBQVcsc0VBQW1CLGNBQWMsK0RBQVk7QUFDeEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVjLG1FQUFJIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1jb3JlQDAuNS4wQEBhbnR2L2c2LWNvcmUvZXMvaXRlbS9odWxsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGRlZXBNaXgsIGlzU3RyaW5nIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBwYXJzZVBhdGhTdHJpbmcgfSBmcm9tICdAYW50di9wYXRoLXV0aWwnO1xuaW1wb3J0IHsgcGF0aFRvUG9pbnRzLCBnZXRDbG9zZWRTcGxpbmUsIHJvdW5kZWRIdWxsLCBwYWRkZWRIdWxsIH0gZnJvbSAnLi4vdXRpbC9wYXRoJztcbmltcG9ydCB7IGlzUG9seWdvbnNJbnRlcnNlY3QgfSBmcm9tICcuLi91dGlsL21hdGgnO1xuaW1wb3J0IHsgZ2VuQ29udmV4SHVsbCB9IGZyb20gJy4uL2VsZW1lbnQvaHVsbC9jb252ZXhIdWxsJztcbmltcG9ydCB7IGdlbkJ1YmJsZVNldCB9IGZyb20gJy4uL2VsZW1lbnQvaHVsbC9idWJibGVzZXQnO1xuLyoqXG4gKiDnlKjkuo7ljIXoo7nlhoXpg6jnmoTmiJDlkZjnmoTova7lu5PjgIJcbiAqIGNvbnZleCBodWxsKOWHuOWMhSnvvJpodHRwOi8vZ2VvbWFsZ29yaXRobXMuY29tL2ExMC1faHVsbC0xLmh0bWwjTW9ub3RvbmUlMjBDaGFpblxuICogYnViYmxlOiDkvb/nlKggYnViYmxlc2V0566X5rOV77yMcmVmZXI6IGh0dHA6Ly92aWFsYWIuc2NpZW5jZS51b2l0LmNhL3dwLWNvbnRlbnQvcGFwZXJjaXRlLWRhdGEvcGRmL2NvbDIwMDljLnBkZlxuICog6YCa6L+H6YWN572uIHBhZGRpbmcg5Y+v5Lul6LCD6IqC5YyF6KO56L2u5buT5a+56IqC54K555qE5p2+57Sn56iL5bqmXG4gKi9cblxudmFyIEh1bGwgPVxuLyoqIEBjbGFzcyAqL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBIdWxsKGdyYXBoLCBjZmcpIHtcbiAgICB0aGlzLmNmZyA9IGRlZXBNaXgodGhpcy5nZXREZWZhdWx0Q2ZnKCksIGNmZyk7XG4gICAgdGhpcy5ncmFwaCA9IGdyYXBoO1xuICAgIHRoaXMuaWQgPSB0aGlzLmNmZy5pZDtcbiAgICB0aGlzLmdyb3VwID0gdGhpcy5jZmcuZ3JvdXA7XG4gICAgdGhpcy5tZW1iZXJzID0gdGhpcy5jZmcubWVtYmVycy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHJldHVybiBpc1N0cmluZyhpdGVtKSA/IGdyYXBoLmZpbmRCeUlkKGl0ZW0pIDogaXRlbTtcbiAgICB9KTtcbiAgICB0aGlzLm5vbk1lbWJlcnMgPSB0aGlzLmNmZy5ub25NZW1iZXJzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgcmV0dXJuIGlzU3RyaW5nKGl0ZW0pID8gZ3JhcGguZmluZEJ5SWQoaXRlbSkgOiBpdGVtO1xuICAgIH0pO1xuICAgIHRoaXMuc2V0UGFkZGluZygpO1xuICAgIHRoaXMuc2V0VHlwZSgpO1xuICAgIHRoaXMucGF0aCA9IHRoaXMuY2FsY1BhdGgodGhpcy5tZW1iZXJzLCB0aGlzLm5vbk1lbWJlcnMpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBIdWxsLnByb3RvdHlwZS5nZXREZWZhdWx0Q2ZnID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogJ2c2LWh1bGwnLFxuICAgICAgdHlwZTogJ3JvdW5kLWNvbnZleCcsXG4gICAgICBtZW1iZXJzOiBbXSxcbiAgICAgIG5vbk1lbWJlcnM6IFtdLFxuICAgICAgc3R5bGU6IHtcbiAgICAgICAgZmlsbDogJ2xpZ2h0Ymx1ZScsXG4gICAgICAgIHN0cm9rZTogJ2JsdWUnLFxuICAgICAgICBvcGFjaXR5OiAwLjJcbiAgICAgIH0sXG4gICAgICBwYWRkaW5nOiAxMFxuICAgIH07XG4gIH07XG5cbiAgSHVsbC5wcm90b3R5cGUuc2V0UGFkZGluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbm9kZVNpemUgPSB0aGlzLm1lbWJlcnMubGVuZ3RoICYmIHRoaXMubWVtYmVyc1swXS5nZXRLZXlTaGFwZSgpLmdldENhbnZhc0JCb3goKS53aWR0aCAvIDI7XG4gICAgdGhpcy5wYWRkaW5nID0gdGhpcy5jZmcucGFkZGluZyA+IDAgPyB0aGlzLmNmZy5wYWRkaW5nICsgbm9kZVNpemUgOiAxMCArIG5vZGVTaXplO1xuICAgIHRoaXMuY2ZnLmJ1YmJsZUNmZyA9IHtcbiAgICAgIG5vZGVSMDogdGhpcy5wYWRkaW5nIC0gbm9kZVNpemUsXG4gICAgICBub2RlUjE6IHRoaXMucGFkZGluZyAtIG5vZGVTaXplLFxuICAgICAgbW9ycGhCdWZmZXI6IHRoaXMucGFkZGluZyAtIG5vZGVTaXplXG4gICAgfTtcbiAgfTtcblxuICBIdWxsLnByb3RvdHlwZS5zZXRUeXBlID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMudHlwZSA9IHRoaXMuY2ZnLnR5cGU7XG5cbiAgICBpZiAodGhpcy5tZW1iZXJzLmxlbmd0aCA8IDMpIHtcbiAgICAgIHRoaXMudHlwZSA9ICdyb3VuZC1jb252ZXgnO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUgIT09ICdyb3VuZC1jb252ZXgnICYmIHRoaXMudHlwZSAhPT0gJ3Ntb290aC1jb252ZXgnICYmIHRoaXMudHlwZSAhPT0gJ2J1YmJsZScpIHtcbiAgICAgIGNvbnNvbGUud2FybignVGhlIGh1bGwgdHlwZSBzaG91bGQgYmUgZWl0aGVyIHJvdW5kLWNvbnZleCwgc21vb3RoLWNvbnZleCBvciBidWJibGUsIHJvdW5kLWNvbnZleCBpcyB1c2VkIGJ5IGRlZmF1bHQuJyk7XG4gICAgICB0aGlzLnR5cGUgPSAncm91bmQtY29udmV4JztcbiAgICB9XG4gIH07XG5cbiAgSHVsbC5wcm90b3R5cGUuY2FsY1BhdGggPSBmdW5jdGlvbiAobWVtYmVycywgbm9uTWVtYmVycykge1xuICAgIHZhciBjb250b3VyLCBwYXRoLCBodWxsO1xuXG4gICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgIGNhc2UgJ3JvdW5kLWNvbnZleCc6XG4gICAgICAgIGNvbnRvdXIgPSBnZW5Db252ZXhIdWxsKG1lbWJlcnMpO1xuICAgICAgICBodWxsID0gcm91bmRlZEh1bGwoY29udG91ci5tYXAoZnVuY3Rpb24gKHApIHtcbiAgICAgICAgICByZXR1cm4gW3AueCwgcC55XTtcbiAgICAgICAgfSksIHRoaXMucGFkZGluZyk7XG4gICAgICAgIHBhdGggPSBwYXJzZVBhdGhTdHJpbmcoaHVsbCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdzbW9vdGgtY29udmV4JzpcbiAgICAgICAgY29udG91ciA9IGdlbkNvbnZleEh1bGwobWVtYmVycyk7XG5cbiAgICAgICAgaWYgKGNvbnRvdXIubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgaHVsbCA9IHJvdW5kZWRIdWxsKGNvbnRvdXIubWFwKGZ1bmN0aW9uIChwKSB7XG4gICAgICAgICAgICByZXR1cm4gW3AueCwgcC55XTtcbiAgICAgICAgICB9KSwgdGhpcy5wYWRkaW5nKTtcbiAgICAgICAgICBwYXRoID0gcGFyc2VQYXRoU3RyaW5nKGh1bGwpO1xuICAgICAgICB9IGVsc2UgaWYgKGNvbnRvdXIubGVuZ3RoID4gMikge1xuICAgICAgICAgIGh1bGwgPSBwYWRkZWRIdWxsKGNvbnRvdXIubWFwKGZ1bmN0aW9uIChwKSB7XG4gICAgICAgICAgICByZXR1cm4gW3AueCwgcC55XTtcbiAgICAgICAgICB9KSwgdGhpcy5wYWRkaW5nKTtcbiAgICAgICAgICBwYXRoID0gZ2V0Q2xvc2VkU3BsaW5lKGh1bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2J1YmJsZSc6XG4gICAgICAgIGNvbnRvdXIgPSBnZW5CdWJibGVTZXQobWVtYmVycywgbm9uTWVtYmVycywgdGhpcy5jZmcuYnViYmxlQ2ZnKTtcbiAgICAgICAgcGF0aCA9IGNvbnRvdXIubGVuZ3RoID49IDIgJiYgZ2V0Q2xvc2VkU3BsaW5lKGNvbnRvdXIpO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICB9XG5cbiAgICByZXR1cm4gcGF0aDtcbiAgfTtcblxuICBIdWxsLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5ncm91cC5hZGRTaGFwZSgncGF0aCcsIHtcbiAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgIHBhdGg6IHRoaXMucGF0aFxuICAgICAgfSwgdGhpcy5jZmcuc3R5bGUpLFxuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICBuYW1lOiB0aGlzLmNmZy5pZCxcbiAgICAgIGNhcHR1cmU6IGZhbHNlXG4gICAgfSk7XG4gICAgdGhpcy5ncm91cC50b0JhY2soKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWinuWKoGh1bGznmoTmiJDlkZjvvIzlkIzml7blpoLmnpzor6XmiJDlkZjljp/lhYjlnKhub25NZW1iZXJz5Lit77yM5YiZ5LuObm9uTWVtYmVyc+S4reWOu+aOiVxuICAgKiBAcGFyYW0gaXRlbSDoioLngrnlrp7kvotcbiAgICogQHJldHVybiBib29sZWFuIOa3u+WKoOaIkOWKn+i/lOWbniB0cnVl77yM5ZCm5YiZ6L+U5ZueIGZhbHNlXG4gICAqL1xuXG5cbiAgSHVsbC5wcm90b3R5cGUuYWRkTWVtYmVyID0gZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICBpZiAoIWl0ZW0pIHJldHVybjtcbiAgICBpZiAoaXNTdHJpbmcoaXRlbSkpIGl0ZW0gPSB0aGlzLmdyYXBoLmZpbmRCeUlkKGl0ZW0pO1xuICAgIHRoaXMubWVtYmVycy5wdXNoKGl0ZW0pO1xuICAgIHZhciBpbmRleCA9IHRoaXMubm9uTWVtYmVycy5pbmRleE9mKGl0ZW0pO1xuXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMubm9uTWVtYmVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlRGF0YSh0aGlzLm1lbWJlcnMsIHRoaXMubm9uTWVtYmVycyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG4gIC8qKlxuICAgKiDlop7liqBodWxs6ZyA6KaB5o6S6Zmk55qE6IqC54K577yM5ZCM5pe25aaC5p6c6K+l5oiQ5ZGY5Y6f5YWI5ZyobWVtYmVyc+S4re+8jOWImeS7jm1lbWJlcnPkuK3ljrvmjolcbiAgICogQHBhcmFtIGl0ZW0g6IqC54K55a6e5L6LXG4gICAqIEByZXR1cm4gYm9vbGVhbiDmt7vliqDmiJDlip/ov5Tlm54gdHJ1Ze+8jOWQpuWImei/lOWbniBmYWxzZVxuICAgKi9cblxuXG4gIEh1bGwucHJvdG90eXBlLmFkZE5vbk1lbWJlciA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgaWYgKCFpdGVtKSByZXR1cm47XG4gICAgaWYgKGlzU3RyaW5nKGl0ZW0pKSBpdGVtID0gdGhpcy5ncmFwaC5maW5kQnlJZChpdGVtKTtcbiAgICB0aGlzLm5vbk1lbWJlcnMucHVzaChpdGVtKTtcbiAgICB2YXIgaW5kZXggPSB0aGlzLm1lbWJlcnMuaW5kZXhPZihpdGVtKTtcblxuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLm1lbWJlcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZURhdGEodGhpcy5tZW1iZXJzLCB0aGlzLm5vbk1lbWJlcnMpO1xuICAgIHJldHVybiB0cnVlO1xuICB9O1xuICAvKipcbiAgICog56e76ZmkaHVsbOS4reeahOaIkOWRmFxuICAgKiBAcGFyYW0gbm9kZSDoioLngrnlrp7kvotcbiAgICogQHJldHVybiBib29sZWFuIOenu+mZpOaIkOWKn+i/lOWbniB0cnVl77yM5ZCm5YiZ6L+U5ZueIGZhbHNlXG4gICAqL1xuXG5cbiAgSHVsbC5wcm90b3R5cGUucmVtb3ZlTWVtYmVyID0gZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICBpZiAoIWl0ZW0pIHJldHVybjtcbiAgICBpZiAoaXNTdHJpbmcoaXRlbSkpIGl0ZW0gPSB0aGlzLmdyYXBoLmZpbmRCeUlkKGl0ZW0pO1xuICAgIHZhciBpbmRleCA9IHRoaXMubWVtYmVycy5pbmRleE9mKGl0ZW0pO1xuXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMubWVtYmVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgdGhpcy51cGRhdGVEYXRhKHRoaXMubWVtYmVycywgdGhpcy5ub25NZW1iZXJzKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcbiAgLyoqXG4gICAqIEBwYXJhbSBub2RlIOiKgueCueWunuS+i1xuICAgKiBAcmV0dXJuIGJvb2xlYW4g56e76Zmk5oiQ5Yqf6L+U5ZueIHRydWXvvIzlkKbliJnov5Tlm54gZmFsc2VcbiAgICovXG5cblxuICBIdWxsLnByb3RvdHlwZS5yZW1vdmVOb25NZW1iZXIgPSBmdW5jdGlvbiAoaXRlbSkge1xuICAgIGlmICghaXRlbSkgcmV0dXJuO1xuICAgIGlmIChpc1N0cmluZyhpdGVtKSkgaXRlbSA9IHRoaXMuZ3JhcGguZmluZEJ5SWQoaXRlbSk7XG4gICAgdmFyIGluZGV4ID0gdGhpcy5ub25NZW1iZXJzLmluZGV4T2YoaXRlbSk7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgdGhpcy5ub25NZW1iZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB0aGlzLnVwZGF0ZURhdGEodGhpcy5tZW1iZXJzLCB0aGlzLm5vbk1lbWJlcnMpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG4gIEh1bGwucHJvdG90eXBlLnVwZGF0ZURhdGEgPSBmdW5jdGlvbiAobWVtYmVycywgbm9uTWVtYmVycykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLmdyb3VwLmZpbmRCeUlkKHRoaXMuaWQpLnJlbW92ZSgpO1xuICAgIGlmIChtZW1iZXJzKSB0aGlzLm1lbWJlcnMgPSBtZW1iZXJzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgcmV0dXJuIGlzU3RyaW5nKGl0ZW0pID8gX3RoaXMuZ3JhcGguZmluZEJ5SWQoaXRlbSkgOiBpdGVtO1xuICAgIH0pO1xuICAgIGlmIChub25NZW1iZXJzKSB0aGlzLm5vbk1lbWJlcnMgPSBub25NZW1iZXJzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgcmV0dXJuIGlzU3RyaW5nKGl0ZW0pID8gX3RoaXMuZ3JhcGguZmluZEJ5SWQoaXRlbSkgOiBpdGVtO1xuICAgIH0pO1xuICAgIHRoaXMucGF0aCA9IHRoaXMuY2FsY1BhdGgodGhpcy5tZW1iZXJzLCB0aGlzLm5vbk1lbWJlcnMpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH07XG5cbiAgSHVsbC5wcm90b3R5cGUudXBkYXRlU3R5bGUgPSBmdW5jdGlvbiAoY2ZnKSB7XG4gICAgdmFyIHBhdGggPSB0aGlzLmdyb3VwLmZpbmRCeUlkKHRoaXMuaWQpO1xuICAgIHBhdGguYXR0cihfX2Fzc2lnbih7fSwgY2ZnKSk7XG4gIH07XG4gIC8qKlxuICAgKiDmm7TmlrAgaHVsbFxuICAgKiBAcGFyYW0gY2ZnIGh1bGwg6YWN572u6aG5XG4gICAqL1xuXG5cbiAgSHVsbC5wcm90b3R5cGUudXBkYXRlQ2ZnID0gZnVuY3Rpb24gKGNmZykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLmNmZyA9IGRlZXBNaXgodGhpcy5jZmcsIGNmZyk7XG4gICAgdGhpcy5pZCA9IHRoaXMuY2ZnLmlkO1xuICAgIHRoaXMuZ3JvdXAgPSB0aGlzLmNmZy5ncm91cDtcblxuICAgIGlmIChjZmcubWVtYmVycykge1xuICAgICAgdGhpcy5tZW1iZXJzID0gdGhpcy5jZmcubWVtYmVycy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGlzU3RyaW5nKGl0ZW0pID8gX3RoaXMuZ3JhcGguZmluZEJ5SWQoaXRlbSkgOiBpdGVtO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGNmZy5ub25NZW1iZXJzKSB7XG4gICAgICB0aGlzLm5vbk1lbWJlcnMgPSB0aGlzLmNmZy5ub25NZW1iZXJzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICByZXR1cm4gaXNTdHJpbmcoaXRlbSkgPyBfdGhpcy5ncmFwaC5maW5kQnlJZChpdGVtKSA6IGl0ZW07XG4gICAgICB9KTtcbiAgICB9IC8vIFRPRE8gcGFkZGluZyDorr7nva7lpKrlpKfvvIzkvJrlvbHlk43liLAgY29udGFpbiDnu5PmnpxcblxuXG4gICAgdGhpcy5zZXRQYWRkaW5nKCk7XG4gICAgdGhpcy5zZXRUeXBlKCk7XG4gICAgdGhpcy5wYXRoID0gdGhpcy5jYWxjUGF0aCh0aGlzLm1lbWJlcnMsIHRoaXMubm9uTWVtYmVycyk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWIpOaWreaYr+WQpuWcqGh1bGzlhoXpg6hcbiAgICogQHBhcmFtIGl0ZW1cbiAgICovXG5cblxuICBIdWxsLnByb3RvdHlwZS5jb250YWluID0gZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIG5vZGVJdGVtO1xuXG4gICAgaWYgKGlzU3RyaW5nKGl0ZW0pKSB7XG4gICAgICBub2RlSXRlbSA9IHRoaXMuZ3JhcGguZmluZEJ5SWQoaXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGVJdGVtID0gaXRlbTtcbiAgICB9XG5cbiAgICB2YXIgc2hhcGVQb2ludHM7XG4gICAgdmFyIHNoYXBlID0gbm9kZUl0ZW0uZ2V0S2V5U2hhcGUoKTtcblxuICAgIGlmIChub2RlSXRlbS5nZXQoJ3R5cGUnKSA9PT0gJ3BhdGgnKSB7XG4gICAgICBzaGFwZVBvaW50cyA9IHBhdGhUb1BvaW50cyhzaGFwZS5hdHRyKCdwYXRoJykpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgc2hhcGVCQm94ID0gc2hhcGUuZ2V0Q2FudmFzQkJveCgpO1xuICAgICAgc2hhcGVQb2ludHMgPSBbW3NoYXBlQkJveC5taW5YLCBzaGFwZUJCb3gubWluWV0sIFtzaGFwZUJCb3gubWF4WCwgc2hhcGVCQm94Lm1pblldLCBbc2hhcGVCQm94Lm1heFgsIHNoYXBlQkJveC5tYXhZXSwgW3NoYXBlQkJveC5taW5YLCBzaGFwZUJCb3gubWF4WV1dO1xuICAgIH1cblxuICAgIHNoYXBlUG9pbnRzID0gc2hhcGVQb2ludHMubWFwKGZ1bmN0aW9uIChjYW52YXNQb2ludCkge1xuICAgICAgdmFyIHBvaW50ID0gX3RoaXMuZ3JhcGguZ2V0UG9pbnRCeUNhbnZhcyhjYW52YXNQb2ludFswXSwgY2FudmFzUG9pbnRbMV0pO1xuXG4gICAgICByZXR1cm4gW3BvaW50LngsIHBvaW50LnldO1xuICAgIH0pO1xuICAgIHJldHVybiBpc1BvbHlnb25zSW50ZXJzZWN0KHNoYXBlUG9pbnRzLCBwYXRoVG9Qb2ludHModGhpcy5wYXRoKSk7XG4gIH07XG5cbiAgSHVsbC5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmdyb3VwLnJlbW92ZSgpO1xuICAgIHRoaXMuY2ZnID0gbnVsbDtcbiAgfTtcblxuICByZXR1cm4gSHVsbDtcbn0oKTtcblxuZXhwb3J0IGRlZmF1bHQgSHVsbDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/hull.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/item.js":
/*!*************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/item.js ***!
\*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _element_shape__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../element/shape */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/element/shape.js\");\n/* harmony import */ var _util_graphic__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/graphic */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/graphic.js\");\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/math */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/math.js\");\n/* harmony import */ var _util_base__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/base */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/base.js\");\n\n\n\n\n\n\nvar CACHE_BBOX = 'bboxCache';\nvar CACHE_CANVAS_BBOX = 'bboxCanvasCache';\nvar ARROWS = ['startArrow', 'endArrow'];\n\nvar ItemBase =\n/** @class */\nfunction () {\n function ItemBase(cfg) {\n this._cfg = {};\n this.destroyed = false;\n var defaultCfg = {\n /**\n * id\n * @type {string}\n */\n id: undefined,\n\n /**\n * 类型\n * @type {string}\n */\n type: 'item',\n\n /**\n * data model\n * @type {object}\n */\n model: {},\n\n /**\n * g group\n * @type {G.Group}\n */\n group: undefined,\n\n /**\n * is open animate\n * @type {boolean}\n */\n animate: false,\n\n /**\n * visible - not group visible\n * @type {boolean}\n */\n visible: true,\n\n /**\n * locked - lock node\n * @type {boolean}\n */\n locked: false,\n\n /**\n * capture event\n * @type {boolean}\n */\n event: true,\n\n /**\n * key shape to calculate item's bbox\n * @type object\n */\n keyShape: undefined,\n\n /**\n * item's states, such as selected or active\n * @type Array\n */\n states: []\n };\n this._cfg = Object.assign(defaultCfg, this.getDefaultCfg(), cfg);\n var model = this.get('model');\n var id = model.id;\n var itemType = this.get('type');\n\n if (!id) {\n id = Object(_util_base__WEBPACK_IMPORTED_MODULE_5__[\"uniqueId\"])(itemType);\n this.get('model').id = id;\n }\n\n this.set('id', id);\n var group = cfg.group;\n\n if (group) {\n group.set('item', this);\n group.set('id', id);\n }\n\n this.init();\n this.draw();\n var shapeType = model.shape || model.type || (itemType === 'edge' ? 'line' : 'circle');\n var shapeFactory = this.get('shapeFactory');\n\n if (shapeFactory && shapeFactory[shapeType]) {\n var options = shapeFactory[shapeType].options; // merge the stateStyles from item and shape\n\n if (options && options.stateStyles) {\n var styles = this.get('styles') || model.stateStyles;\n styles = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, options.stateStyles, styles);\n this.set('styles', styles);\n }\n }\n }\n /**\n * 根据 keyshape 计算包围盒\n */\n\n\n ItemBase.prototype.calculateBBox = function () {\n var keyShape = this.get('keyShape');\n var group = this.get('group'); // 因为 group 可能会移动,所以必须通过父元素计算才能计算出正确的包围盒\n\n var bbox = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_3__[\"getBBox\"])(keyShape, group);\n bbox.x = bbox.minX;\n bbox.y = bbox.minY;\n bbox.width = bbox.maxX - bbox.minX;\n bbox.height = bbox.maxY - bbox.minY;\n bbox.centerX = (bbox.minX + bbox.maxX) / 2;\n bbox.centerY = (bbox.minY + bbox.maxY) / 2;\n return bbox;\n };\n /**\n * 根据 keyshape 计算包围盒\n */\n\n\n ItemBase.prototype.calculateCanvasBBox = function () {\n var keyShape = this.get('keyShape');\n var group = this.get('group'); // 因为 group 可能会移动,所以必须通过父元素计算才能计算出正确的包围盒\n\n var bbox = Object(_util_graphic__WEBPACK_IMPORTED_MODULE_3__[\"getBBox\"])(keyShape, group);\n bbox.x = bbox.minX;\n bbox.y = bbox.minY;\n bbox.width = bbox.maxX - bbox.minX;\n bbox.height = bbox.maxY - bbox.minY;\n bbox.centerX = (bbox.minX + bbox.maxX) / 2;\n bbox.centerY = (bbox.minY + bbox.maxY) / 2;\n return bbox;\n };\n /**\n * draw shape\n */\n\n\n ItemBase.prototype.drawInner = function () {\n var self = this;\n var shapeFactory = self.get('shapeFactory');\n var group = self.get('group');\n var model = self.get('model');\n group.clear();\n var visible = model.visible;\n if (visible !== undefined && !visible) self.changeVisibility(visible);\n\n if (!shapeFactory) {\n return;\n }\n\n self.updatePosition(model);\n var cfg = self.getShapeCfg(model); // 可能会附加额外信息\n\n var shapeType = cfg.type;\n var keyShape = shapeFactory.draw(shapeType, cfg, group);\n\n if (keyShape) {\n self.set('keyShape', keyShape);\n keyShape.set('isKeyShape', true);\n keyShape.set('draggable', true);\n }\n\n this.setOriginStyle(); // 防止由于用户外部修改 model 中的 shape 导致 shape 不更新\n\n this.set('currentShape', shapeType);\n this.restoreStates(shapeFactory, shapeType);\n };\n /**\n * 设置图元素原始样式\n * @param keyShape 图元素 keyShape\n * @param group Group 容器\n */\n\n\n ItemBase.prototype.setOriginStyle = function () {\n var group = this.get('group');\n var children = group.get('children');\n var keyShape = this.getKeyShape();\n var self = this;\n var keyShapeName = keyShape.get('name');\n\n if (!this.get('originStyle')) {\n // 第一次 set originStyle,直接拿首次渲染所有图形的 attrs\n var originStyles = {};\n\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n var shapeType = child.get('type');\n var name_1 = child.get('name');\n\n if (name_1 && name_1 !== keyShapeName) {\n originStyles[name_1] = shapeType !== 'image' ? Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(child.attr()) : self.getShapeStyleByName(name_1); // The text's position and matrix is not allowed to be affected by states\n\n if (shapeType === 'text' && originStyles[name_1]) {\n delete originStyles[name_1].x;\n delete originStyles[name_1].y;\n delete originStyles[name_1].matrix;\n }\n } else {\n var keyShapeStyle = self.getShapeStyleByName(); // 可优化,需要去除 child.attr 中其他 shape 名的对象\n\n delete keyShapeStyle.path;\n delete keyShapeStyle.matrix;\n\n if (!keyShapeName) {\n Object.assign(originStyles, keyShapeStyle);\n } else {\n // 若 keyShape 有 name 且 !name,这个图形不是 keyShape,给这个图形一个 name\n if (!name_1) {\n var shapeName = Object(_util_base__WEBPACK_IMPORTED_MODULE_5__[\"uniqueId\"])('shape');\n child.set('name', shapeName);\n group['shapeMap'][shapeName] = child;\n originStyles[shapeName] = shapeType !== 'image' ? Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(child.attr()) : self.getShapeStyleByName(name_1);\n } else {\n originStyles[keyShapeName] = keyShapeStyle;\n }\n }\n }\n }\n\n self.set('originStyle', originStyles);\n } else {\n // 第二次 set originStyles,需要找到不是 stateStyles 的样式,更新到 originStyles 中\n // 上一次设置的 originStyle,是初始的 shape attrs\n var styles_1 = this.get('originStyle'); // let styles: ShapeStyle = {};\n\n if (keyShapeName && !styles_1[keyShapeName]) styles_1[keyShapeName] = {}; // 获取当前状态样式\n\n var currentStatesStyle_1 = this.getCurrentStatesStyle();\n\n var _loop_1 = function _loop_1(i) {\n var child = children[i];\n var name_2 = child.get('name');\n var shapeAttrs = child.attr();\n\n if (name_2 && name_2 !== keyShapeName) {\n // 有 name 的非 keyShape 图形\n var shapeStateStyle_1 = currentStatesStyle_1[name_2];\n if (!styles_1[name_2]) styles_1[name_2] = {};\n\n if (shapeStateStyle_1) {\n Object.keys(shapeAttrs).forEach(function (key) {\n var value = shapeAttrs[key];\n if (value !== shapeStateStyle_1[key]) styles_1[name_2][key] = value;\n });\n } else {\n styles_1[name_2] = child.get('type') !== 'image' ? Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(shapeAttrs) : self.getShapeStyleByName(name_2);\n }\n } else {\n var shapeAttrs_1 = child.attr();\n var keyShapeStateStyles_1 = {};\n Object.keys(currentStatesStyle_1).forEach(function (styleKey) {\n var subStyle = currentStatesStyle_1[styleKey];\n\n if (styleKey === keyShapeName || !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isPlainObject\"])(subStyle)) {\n keyShapeStateStyles_1[styleKey] = subStyle;\n }\n });\n Object.keys(shapeAttrs_1).forEach(function (key) {\n var value = shapeAttrs_1[key]; // 如果是对象且不是 arrow,则是其他 shape 的样式\n // if (isPlainObject(value) && ARROWS.indexOf(name) === -1) return;\n\n if (keyShapeStateStyles_1[key] !== value) {\n if (keyShapeName) styles_1[keyShapeName][key] = value;else styles_1[key] = value;\n }\n });\n }\n }; // 遍历当前所有图形的 attrs,找到不是 stateStyles 的样式更新到 originStyles 中\n\n\n for (var i = 0; i < children.length; i++) {\n _loop_1(i);\n }\n\n delete styles_1.path;\n delete styles_1.matrix;\n delete styles_1.x;\n delete styles_1.y;\n\n if (styles_1[keyShapeName]) {\n delete styles_1[keyShapeName].x;\n delete styles_1[keyShapeName].y;\n delete styles_1[keyShapeName].matrix;\n delete styles_1[keyShapeName].path;\n }\n\n self.set('originStyle', styles_1);\n }\n };\n /**\n * restore shape states\n * @param shapeFactory\n * @param shapeType\n */\n\n\n ItemBase.prototype.restoreStates = function (shapeFactory, shapeType) {\n var self = this;\n var states = self.get('states');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(states, function (state) {\n shapeFactory.setState(shapeType, state, true, self);\n });\n };\n\n ItemBase.prototype.init = function () {\n var shapeFactory = _element_shape__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getFactory(this.get('type'));\n this.set('shapeFactory', shapeFactory);\n };\n /**\n * 获取属性\n * @internal 仅内部类使用\n * @param {String} key 属性名\n * @return {object | string | number} 属性值\n */\n\n\n ItemBase.prototype.get = function (key) {\n return this._cfg[key];\n };\n /**\n * 设置属性\n * @internal 仅内部类使用\n * @param {String|Object} key 属性名,也可以是对象\n * @param {object | string | number} val 属性值\n */\n\n\n ItemBase.prototype.set = function (key, val) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isPlainObject\"])(key)) {\n this._cfg = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, this._cfg), key);\n } else {\n this._cfg[key] = val;\n }\n };\n\n ItemBase.prototype.getDefaultCfg = function () {\n return {};\n };\n /**\n * 更新/刷新等操作后,清除 cache\n */\n\n\n ItemBase.prototype.clearCache = function () {\n this.set(CACHE_BBOX, null);\n this.set(CACHE_CANVAS_BBOX, null);\n };\n /**\n * 渲染前的逻辑,提供给子类复写\n */\n\n\n ItemBase.prototype.beforeDraw = function () {};\n /**\n * 渲染后的逻辑,提供给子类复写\n */\n\n\n ItemBase.prototype.afterDraw = function () {};\n /**\n * 更新后做一些工作\n */\n\n\n ItemBase.prototype.afterUpdate = function () {};\n /**\n * draw shape\n */\n\n\n ItemBase.prototype.draw = function () {\n this.beforeDraw();\n this.drawInner();\n this.afterDraw();\n };\n\n ItemBase.prototype.getShapeStyleByName = function (name) {\n var group = this.get('group');\n var currentShape;\n\n if (name) {\n currentShape = group['shapeMap'][name]; // group.find((element) => element.get('name') === name) as IShapeBase;\n } else {\n currentShape = this.getKeyShape();\n }\n\n if (currentShape) {\n var styles_2 = {};\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(currentShape.attr(), function (val, key) {\n // 修改 img 通过 updateItem 实现\n if (key !== 'img' || Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(val)) {\n styles_2[key] = val;\n }\n });\n return styles_2;\n }\n\n return {};\n };\n\n ItemBase.prototype.getShapeCfg = function (model, updateType) {\n var styles = this.get('styles');\n\n if (styles) {\n // merge graph的item样式与数据模型中的样式\n var newModel = model;\n newModel.style = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), model.style);\n return newModel;\n }\n\n return model;\n };\n /**\n * 获取指定状态的样式,去除了全局样式\n * @param state 状态名称\n */\n\n\n ItemBase.prototype.getStateStyle = function (state) {\n var styles = this.get('styles');\n var stateStyle = styles && styles[state];\n return stateStyle;\n };\n /**\n * get keyshape style\n */\n\n\n ItemBase.prototype.getOriginStyle = function () {\n return this.get('originStyle');\n };\n\n ItemBase.prototype.getCurrentStatesStyle = function () {\n var self = this;\n var styles = {};\n var states = self.getStates();\n\n if (!states || !states.length) {\n return this.get('originStyle');\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(self.getStates(), function (state) {\n styles = Object.assign(styles, self.getStateStyle(state));\n });\n return styles;\n };\n /**\n * 更改元素状态, visible 不属于这个范畴\n * @internal 仅提供内部类 graph 使用\n * @param {String} state 状态名\n * @param {Boolean} value 节点状态值\n */\n\n\n ItemBase.prototype.setState = function (state, value) {\n var states = this.get('states');\n var shapeFactory = this.get('shapeFactory');\n var stateName = state;\n var filterStateName = state;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(value)) {\n stateName = state + \":\" + value;\n filterStateName = state + \":\";\n }\n\n var newStates = states;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isBoolean\"])(value)) {\n var index = states.indexOf(filterStateName);\n\n if (value) {\n if (index > -1) {\n return;\n }\n\n states.push(stateName);\n } else if (index > -1) {\n states.splice(index, 1);\n }\n } else if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(value)) {\n // 过滤掉 states 中 filterStateName 相关的状态\n var filterStates = states.filter(function (name) {\n return name.includes(filterStateName);\n });\n\n if (filterStates.length > 0) {\n this.clearStates(filterStates);\n }\n\n newStates = newStates.filter(function (name) {\n return !name.includes(filterStateName);\n });\n newStates.push(stateName);\n this.set('states', newStates);\n }\n\n if (shapeFactory) {\n var model = this.get('model');\n var type = model.type; // 调用 shape/shape.ts 中的 setState\n\n shapeFactory.setState(type, state, value, this);\n }\n };\n /**\n * 清除指定的状态,如果参数为空,则不做任务处理\n * @param states 状态名称\n */\n\n\n ItemBase.prototype.clearStates = function (states) {\n var self = this;\n var originStates = self.getStates();\n var shapeFactory = self.get('shapeFactory');\n var model = self.get('model');\n var shape = model.type;\n\n if (!states) {\n states = originStates;\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(states)) {\n states = [states];\n }\n\n var newStates = originStates.filter(function (state) {\n return states.indexOf(state) === -1;\n });\n self.set('states', newStates);\n states.forEach(function (state) {\n shapeFactory.setState(shape, state, false, self);\n });\n };\n /**\n * 节点的图形容器\n * @return {G.Group} 图形容器\n */\n\n\n ItemBase.prototype.getContainer = function () {\n return this.get('group');\n };\n /**\n * 节点的关键形状,用于计算节点大小,连线截距等\n * @return {IShapeBase} 关键形状\n */\n\n\n ItemBase.prototype.getKeyShape = function () {\n return this.get('keyShape');\n };\n /**\n * 节点数据模型\n * @return {Object} 数据模型\n */\n\n\n ItemBase.prototype.getModel = function () {\n return this.get('model');\n };\n /**\n * 节点类型\n * @return {string} 节点的类型\n */\n\n\n ItemBase.prototype.getType = function () {\n return this.get('type');\n };\n /**\n * 获取 Item 的ID\n */\n\n\n ItemBase.prototype.getID = function () {\n return this.get('id');\n };\n /**\n * 是否是 Item 对象,悬空边情况下进行判定\n */\n\n\n ItemBase.prototype.isItem = function () {\n return true;\n };\n /**\n * 获取当前元素的所有状态\n * @return {Array} 元素的所有状态\n */\n\n\n ItemBase.prototype.getStates = function () {\n return this.get('states');\n };\n /**\n * 当前元素是否处于某状态\n * @param {String} state 状态名\n * @return {Boolean} 是否处于某状态\n */\n\n\n ItemBase.prototype.hasState = function (state) {\n var states = this.getStates();\n return states.indexOf(state) >= 0;\n };\n /**\n * 刷新一般用于处理几种情况\n * 1. item model 在外部被改变\n * 2. 边的节点位置发生改变,需要重新计算边\n *\n * 因为数据从外部被修改无法判断一些属性是否被修改,直接走位置和 shape 的更新\n */\n\n\n ItemBase.prototype.refresh = function (updateType) {\n var model = this.get('model'); // 更新元素位置\n\n this.updatePosition(model); // 更新元素内容,样式\n\n this.updateShape(updateType); // 做一些更新之后的操作\n\n this.afterUpdate(); // 清除缓存\n\n this.clearCache();\n };\n\n ItemBase.prototype.getUpdateType = function (cfg) {\n return undefined;\n };\n /**\n * 将更新应用到 model 上,刷新属性\n * @internal 仅提供给 Graph 使用,外部直接调用 graph.update 接口\n * @param {Object} cfg 配置项,可以是增量信息\n */\n\n\n ItemBase.prototype.update = function (cfg, updateType) {\n if (updateType === void 0) {\n updateType = undefined;\n }\n\n var model = this.get('model'); // 仅仅移动位置时,既不更新,也不重绘\n\n if (updateType === 'move') {\n this.updatePosition(cfg);\n } else {\n var oriVisible = model.visible;\n var cfgVisible = cfg.visible;\n if (oriVisible !== cfgVisible && cfgVisible !== undefined) this.changeVisibility(cfgVisible);\n var originPosition = {\n x: model.x,\n y: model.y\n };\n cfg.x = isNaN(+cfg.x) ? model.x : +cfg.x;\n cfg.y = isNaN(+cfg.y) ? model.y : +cfg.y;\n var styles = this.get('styles');\n\n if (cfg.stateStyles) {\n // 更新 item 时更新 this.get('styles') 中的值\n var stateStyles = cfg.stateStyles;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])(styles, stateStyles);\n delete cfg.stateStyles;\n } // 直接将更新合到原数据模型上,可以保证用户在外部修改源数据然后刷新时的样式符合期待。\n\n\n Object.assign(model, cfg); // 如果 x,y 有变化,先重置位置\n\n if (originPosition.x !== cfg.x || originPosition.y !== cfg.y) {\n this.updatePosition(cfg);\n }\n\n this.updateShape(updateType);\n }\n\n this.afterUpdate();\n this.clearCache();\n };\n /**\n * 更新元素内容,样式\n */\n\n\n ItemBase.prototype.updateShape = function (updateType) {\n var shapeFactory = this.get('shapeFactory');\n var model = this.get('model');\n var shape = model.type; // 判定是否允许更新\n // 1. 注册的节点允许更新\n // 2. 更新后的 shape 等于原先的 shape\n\n if (shapeFactory.shouldUpdate(shape) && shape === this.get('currentShape')) {\n var updateCfg = this.getShapeCfg(model, updateType);\n shapeFactory.baseUpdate(shape, updateCfg, this, updateType); // 更新完以后重新设置原始样式\n\n if (updateType !== 'move') this.setOriginStyle();\n } else {\n // 如果不满足上面两种状态,重新绘制\n this.draw();\n } // 更新后重置节点状态\n\n\n this.restoreStates(shapeFactory, shape);\n };\n /**\n * 更新位置,避免整体重绘\n * @param {object} cfg 待更新数据\n */\n\n\n ItemBase.prototype.updatePosition = function (cfg) {\n var model = this.get('model');\n var x = isNaN(+cfg.x) ? +model.x : +cfg.x;\n var y = isNaN(+cfg.y) ? +model.y : +cfg.y;\n var group = this.get('group');\n\n if (isNaN(x) || isNaN(y)) {\n return false;\n }\n\n model.x = x;\n model.y = y;\n var matrix = group.getMatrix();\n if (matrix && matrix[6] === x && matrix[7] === y) return false;\n group.resetMatrix(); // G 4.0 element 中移除了矩阵相关方法,详见https://www.yuque.com/antv/blog/kxzk9g#4rMMV\n\n Object(_util_math__WEBPACK_IMPORTED_MODULE_4__[\"translate\"])(group, {\n x: x,\n y: y\n });\n this.clearCache(); // 位置更新后需要清除缓存\n\n return true;\n };\n /**\n * 获取 item 的包围盒,这个包围盒是相对于 item 自己,不会将 matrix 计算在内\n * @return {Object} 包含 x,y,width,height, centerX, centerY\n */\n\n\n ItemBase.prototype.getBBox = function () {\n // 计算 bbox 开销有些大,缓存\n var bbox = this.get(CACHE_BBOX);\n\n if (!bbox) {\n bbox = this.calculateBBox();\n this.set(CACHE_BBOX, bbox);\n }\n\n return bbox;\n };\n /**\n * 获取 item 相对于画布的包围盒,会将从顶层到当前元素的 matrix 都计算在内\n * @return {Object} 包含 x,y,width,height, centerX, centerY\n */\n\n\n ItemBase.prototype.getCanvasBBox = function () {\n // 计算 bbox 开销有些大,缓存\n var bbox = this.get(CACHE_CANVAS_BBOX);\n\n if (!bbox) {\n bbox = this.calculateCanvasBBox();\n this.set(CACHE_CANVAS_BBOX, bbox);\n }\n\n return bbox;\n };\n /**\n * 将元素放到最前面\n */\n\n\n ItemBase.prototype.toFront = function () {\n var group = this.get('group');\n group.toFront();\n };\n /**\n * 将元素放到最后面\n */\n\n\n ItemBase.prototype.toBack = function () {\n var group = this.get('group');\n group.toBack();\n };\n /**\n * 显示元素\n */\n\n\n ItemBase.prototype.show = function () {\n this.changeVisibility(true);\n };\n /**\n * 隐藏元素\n */\n\n\n ItemBase.prototype.hide = function () {\n this.changeVisibility(false);\n };\n /**\n * 更改是否显示\n * @param {Boolean} visible 是否显示\n */\n\n\n ItemBase.prototype.changeVisibility = function (visible) {\n var group = this.get('group');\n\n if (visible) {\n group.show();\n } else {\n group.hide();\n }\n\n this.set('visible', visible);\n };\n /**\n * 元素是否可见\n * @return {Boolean} 返回该元素是否可见\n */\n\n\n ItemBase.prototype.isVisible = function () {\n return this.get('visible');\n };\n /**\n * 是否拾取及出发该元素的交互事件\n * @param {Boolean} enable 标识位\n */\n\n\n ItemBase.prototype.enableCapture = function (enable) {\n var group = this.get('group');\n\n if (group) {\n group.set('capture', enable);\n }\n };\n\n ItemBase.prototype.destroy = function () {\n if (!this.destroyed) {\n var animate = this.get('animate');\n var group = this.get('group');\n\n if (animate) {\n group.stopAnimate();\n }\n\n group['shapeMap'] = {};\n this.clearCache();\n group.remove();\n this._cfg = null;\n this.destroyed = true;\n }\n };\n\n return ItemBase;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ItemBase);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9pdGVtL2l0ZW0uanM/MTkyYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUMwRDtBQUN0RDtBQUNLO0FBQ0Q7QUFDRDtBQUN4QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQSxlQUFlOztBQUVmO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFdBQVcsMkRBQVE7QUFDbkI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0RBQW9EOztBQUVwRDtBQUNBO0FBQ0EsaUJBQWlCLDBEQUFPLEdBQUc7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQSxrQ0FBa0M7O0FBRWxDLGVBQWUsNkRBQU87QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEMsZUFBZSw2REFBTztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNDQUFzQzs7QUFFdEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDBCQUEwQjs7QUFFMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIscUJBQXFCO0FBQzFDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHlEQUF5RCx3REFBSyxrREFBa0Q7O0FBRWhIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QseURBQXlEOztBQUV6RDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLDhCQUE4QiwyREFBUTtBQUN0QztBQUNBO0FBQ0EsZ0VBQWdFLHdEQUFLO0FBQ3JFLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSw2Q0FBNkM7O0FBRTdDLCtFQUErRTs7QUFFL0U7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsV0FBVztBQUNYLCtEQUErRCx3REFBSztBQUNwRTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw4Q0FBOEMsZ0VBQWE7QUFDM0Q7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLDBDQUEwQztBQUMxQzs7QUFFQTtBQUNBLG9FQUFvRTtBQUNwRTtBQUNBLFdBQVc7QUFDWDtBQUNBLFFBQVE7OztBQUdSLHFCQUFxQixxQkFBcUI7QUFDMUM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx1REFBSTtBQUNSO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0EsdUJBQXVCLHNEQUFLO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckIsY0FBYyx5QkFBeUI7QUFDdkM7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsY0FBYztBQUMzQixhQUFhLHlCQUF5QjtBQUN0Qzs7O0FBR0E7QUFDQSxRQUFRLGdFQUFhO0FBQ3JCLGtCQUFrQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDdEMsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDZDQUE2QztBQUM3QyxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTSx1REFBSTtBQUNWO0FBQ0EsNkJBQTZCLDJEQUFRO0FBQ3JDO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUMzQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLFFBQVE7QUFDckI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsUUFBUSw0REFBUztBQUNqQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSyxVQUFVLDJEQUFRO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSw0QkFBNEI7O0FBRTVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxjQUFjLFFBQVE7QUFDdEI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFdBQVc7QUFDekI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxNQUFNO0FBQ3BCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGNBQWMsUUFBUTtBQUN0Qjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQSxrQ0FBa0M7O0FBRWxDLCtCQUErQjs7QUFFL0IsaUNBQWlDOztBQUVqQyx1QkFBdUI7O0FBRXZCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxPQUFPO0FBQ3JCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxrQ0FBa0M7O0FBRWxDO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUSxzREFBRztBQUNYO0FBQ0EsT0FBTzs7O0FBR1AsZ0NBQWdDOztBQUVoQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxrRUFBa0U7O0FBRWxFO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7O0FBRXhCLElBQUksNERBQVM7QUFDYjtBQUNBO0FBQ0EsS0FBSztBQUNMLHNCQUFzQjs7QUFFdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckI7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQjs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxRQUFRO0FBQ3RCOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsUUFBUTtBQUN0Qjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQjs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVjLHVFQUFRIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1jb3JlQDAuNS4wQEBhbnR2L2c2LWNvcmUvZXMvaXRlbS9pdGVtLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGVhY2gsIGlzUGxhaW5PYmplY3QsIGlzU3RyaW5nLCBpc0Jvb2xlYW4sIG1peCwgZGVlcE1peCwgY2xvbmUgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBTaGFwZSBmcm9tICcuLi9lbGVtZW50L3NoYXBlJztcbmltcG9ydCB7IGdldEJCb3ggfSBmcm9tICcuLi91dGlsL2dyYXBoaWMnO1xuaW1wb3J0IHsgdHJhbnNsYXRlIH0gZnJvbSAnLi4vdXRpbC9tYXRoJztcbmltcG9ydCB7IHVuaXF1ZUlkIH0gZnJvbSAnLi4vdXRpbC9iYXNlJztcbnZhciBDQUNIRV9CQk9YID0gJ2Jib3hDYWNoZSc7XG52YXIgQ0FDSEVfQ0FOVkFTX0JCT1ggPSAnYmJveENhbnZhc0NhY2hlJztcbnZhciBBUlJPV1MgPSBbJ3N0YXJ0QXJyb3cnLCAnZW5kQXJyb3cnXTtcblxudmFyIEl0ZW1CYXNlID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gSXRlbUJhc2UoY2ZnKSB7XG4gICAgdGhpcy5fY2ZnID0ge307XG4gICAgdGhpcy5kZXN0cm95ZWQgPSBmYWxzZTtcbiAgICB2YXIgZGVmYXVsdENmZyA9IHtcbiAgICAgIC8qKlxuICAgICAgICogaWRcbiAgICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICAgKi9cbiAgICAgIGlkOiB1bmRlZmluZWQsXG5cbiAgICAgIC8qKlxuICAgICAgICog57G75Z6LXG4gICAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAgICovXG4gICAgICB0eXBlOiAnaXRlbScsXG5cbiAgICAgIC8qKlxuICAgICAgICogZGF0YSBtb2RlbFxuICAgICAgICogQHR5cGUge29iamVjdH1cbiAgICAgICAqL1xuICAgICAgbW9kZWw6IHt9LFxuXG4gICAgICAvKipcbiAgICAgICAqIGcgZ3JvdXBcbiAgICAgICAqIEB0eXBlIHtHLkdyb3VwfVxuICAgICAgICovXG4gICAgICBncm91cDogdW5kZWZpbmVkLFxuXG4gICAgICAvKipcbiAgICAgICAqIGlzIG9wZW4gYW5pbWF0ZVxuICAgICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICAgKi9cbiAgICAgIGFuaW1hdGU6IGZhbHNlLFxuXG4gICAgICAvKipcbiAgICAgICAqIHZpc2libGUgLSBub3QgZ3JvdXAgdmlzaWJsZVxuICAgICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICAgKi9cbiAgICAgIHZpc2libGU6IHRydWUsXG5cbiAgICAgIC8qKlxuICAgICAgICogbG9ja2VkIC0gbG9jayBub2RlXG4gICAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgICAqL1xuICAgICAgbG9ja2VkOiBmYWxzZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBjYXB0dXJlIGV2ZW50XG4gICAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgICAqL1xuICAgICAgZXZlbnQ6IHRydWUsXG5cbiAgICAgIC8qKlxuICAgICAgICoga2V5IHNoYXBlIHRvIGNhbGN1bGF0ZSBpdGVtJ3MgYmJveFxuICAgICAgICogQHR5cGUgb2JqZWN0XG4gICAgICAgKi9cbiAgICAgIGtleVNoYXBlOiB1bmRlZmluZWQsXG5cbiAgICAgIC8qKlxuICAgICAgICogaXRlbSdzIHN0YXRlcywgc3VjaCBhcyBzZWxlY3RlZCBvciBhY3RpdmVcbiAgICAgICAqIEB0eXBlIEFycmF5XG4gICAgICAgKi9cbiAgICAgIHN0YXRlczogW11cbiAgICB9O1xuICAgIHRoaXMuX2NmZyA9IE9iamVjdC5hc3NpZ24oZGVmYXVsdENmZywgdGhpcy5nZXREZWZhdWx0Q2ZnKCksIGNmZyk7XG4gICAgdmFyIG1vZGVsID0gdGhpcy5nZXQoJ21vZGVsJyk7XG4gICAgdmFyIGlkID0gbW9kZWwuaWQ7XG4gICAgdmFyIGl0ZW1UeXBlID0gdGhpcy5nZXQoJ3R5cGUnKTtcblxuICAgIGlmICghaWQpIHtcbiAgICAgIGlkID0gdW5pcXVlSWQoaXRlbVR5cGUpO1xuICAgICAgdGhpcy5nZXQoJ21vZGVsJykuaWQgPSBpZDtcbiAgICB9XG5cbiAgICB0aGlzLnNldCgnaWQnLCBpZCk7XG4gICAgdmFyIGdyb3VwID0gY2ZnLmdyb3VwO1xuXG4gICAgaWYgKGdyb3VwKSB7XG4gICAgICBncm91cC5zZXQoJ2l0ZW0nLCB0aGlzKTtcbiAgICAgIGdyb3VwLnNldCgnaWQnLCBpZCk7XG4gICAgfVxuXG4gICAgdGhpcy5pbml0KCk7XG4gICAgdGhpcy5kcmF3KCk7XG4gICAgdmFyIHNoYXBlVHlwZSA9IG1vZGVsLnNoYXBlIHx8IG1vZGVsLnR5cGUgfHwgKGl0ZW1UeXBlID09PSAnZWRnZScgPyAnbGluZScgOiAnY2lyY2xlJyk7XG4gICAgdmFyIHNoYXBlRmFjdG9yeSA9IHRoaXMuZ2V0KCdzaGFwZUZhY3RvcnknKTtcblxuICAgIGlmIChzaGFwZUZhY3RvcnkgJiYgc2hhcGVGYWN0b3J5W3NoYXBlVHlwZV0pIHtcbiAgICAgIHZhciBvcHRpb25zID0gc2hhcGVGYWN0b3J5W3NoYXBlVHlwZV0ub3B0aW9uczsgLy8gbWVyZ2UgdGhlIHN0YXRlU3R5bGVzIGZyb20gaXRlbSBhbmQgc2hhcGVcblxuICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5zdGF0ZVN0eWxlcykge1xuICAgICAgICB2YXIgc3R5bGVzID0gdGhpcy5nZXQoJ3N0eWxlcycpIHx8IG1vZGVsLnN0YXRlU3R5bGVzO1xuICAgICAgICBzdHlsZXMgPSBkZWVwTWl4KHt9LCBvcHRpb25zLnN0YXRlU3R5bGVzLCBzdHlsZXMpO1xuICAgICAgICB0aGlzLnNldCgnc3R5bGVzJywgc3R5bGVzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIOagueaNriBrZXlzaGFwZSDorqHnrpfljIXlm7Tnm5JcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuY2FsY3VsYXRlQkJveCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIga2V5U2hhcGUgPSB0aGlzLmdldCgna2V5U2hhcGUnKTtcbiAgICB2YXIgZ3JvdXAgPSB0aGlzLmdldCgnZ3JvdXAnKTsgLy8g5Zug5Li6IGdyb3VwIOWPr+iDveS8muenu+WKqO+8jOaJgOS7peW/hemhu+mAmui/h+eItuWFg+e0oOiuoeeul+aJjeiDveiuoeeul+WHuuato+ehrueahOWMheWbtOebklxuXG4gICAgdmFyIGJib3ggPSBnZXRCQm94KGtleVNoYXBlLCBncm91cCk7XG4gICAgYmJveC54ID0gYmJveC5taW5YO1xuICAgIGJib3gueSA9IGJib3gubWluWTtcbiAgICBiYm94LndpZHRoID0gYmJveC5tYXhYIC0gYmJveC5taW5YO1xuICAgIGJib3guaGVpZ2h0ID0gYmJveC5tYXhZIC0gYmJveC5taW5ZO1xuICAgIGJib3guY2VudGVyWCA9IChiYm94Lm1pblggKyBiYm94Lm1heFgpIC8gMjtcbiAgICBiYm94LmNlbnRlclkgPSAoYmJveC5taW5ZICsgYmJveC5tYXhZKSAvIDI7XG4gICAgcmV0dXJuIGJib3g7XG4gIH07XG4gIC8qKlxuICAgKiDmoLnmja4ga2V5c2hhcGUg6K6h566X5YyF5Zu055uSXG4gICAqL1xuXG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmNhbGN1bGF0ZUNhbnZhc0JCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGtleVNoYXBlID0gdGhpcy5nZXQoJ2tleVNoYXBlJyk7XG4gICAgdmFyIGdyb3VwID0gdGhpcy5nZXQoJ2dyb3VwJyk7IC8vIOWboOS4uiBncm91cCDlj6/og73kvJrnp7vliqjvvIzmiYDku6Xlv4XpobvpgJrov4fniLblhYPntKDorqHnrpfmiY3og73orqHnrpflh7rmraPnoa7nmoTljIXlm7Tnm5JcblxuICAgIHZhciBiYm94ID0gZ2V0QkJveChrZXlTaGFwZSwgZ3JvdXApO1xuICAgIGJib3gueCA9IGJib3gubWluWDtcbiAgICBiYm94LnkgPSBiYm94Lm1pblk7XG4gICAgYmJveC53aWR0aCA9IGJib3gubWF4WCAtIGJib3gubWluWDtcbiAgICBiYm94LmhlaWdodCA9IGJib3gubWF4WSAtIGJib3gubWluWTtcbiAgICBiYm94LmNlbnRlclggPSAoYmJveC5taW5YICsgYmJveC5tYXhYKSAvIDI7XG4gICAgYmJveC5jZW50ZXJZID0gKGJib3gubWluWSArIGJib3gubWF4WSkgLyAyO1xuICAgIHJldHVybiBiYm94O1xuICB9O1xuICAvKipcbiAgICogZHJhdyBzaGFwZVxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5kcmF3SW5uZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBzaGFwZUZhY3RvcnkgPSBzZWxmLmdldCgnc2hhcGVGYWN0b3J5Jyk7XG4gICAgdmFyIGdyb3VwID0gc2VsZi5nZXQoJ2dyb3VwJyk7XG4gICAgdmFyIG1vZGVsID0gc2VsZi5nZXQoJ21vZGVsJyk7XG4gICAgZ3JvdXAuY2xlYXIoKTtcbiAgICB2YXIgdmlzaWJsZSA9IG1vZGVsLnZpc2libGU7XG4gICAgaWYgKHZpc2libGUgIT09IHVuZGVmaW5lZCAmJiAhdmlzaWJsZSkgc2VsZi5jaGFuZ2VWaXNpYmlsaXR5KHZpc2libGUpO1xuXG4gICAgaWYgKCFzaGFwZUZhY3RvcnkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZWxmLnVwZGF0ZVBvc2l0aW9uKG1vZGVsKTtcbiAgICB2YXIgY2ZnID0gc2VsZi5nZXRTaGFwZUNmZyhtb2RlbCk7IC8vIOWPr+iDveS8mumZhOWKoOmineWkluS/oeaBr1xuXG4gICAgdmFyIHNoYXBlVHlwZSA9IGNmZy50eXBlO1xuICAgIHZhciBrZXlTaGFwZSA9IHNoYXBlRmFjdG9yeS5kcmF3KHNoYXBlVHlwZSwgY2ZnLCBncm91cCk7XG5cbiAgICBpZiAoa2V5U2hhcGUpIHtcbiAgICAgIHNlbGYuc2V0KCdrZXlTaGFwZScsIGtleVNoYXBlKTtcbiAgICAgIGtleVNoYXBlLnNldCgnaXNLZXlTaGFwZScsIHRydWUpO1xuICAgICAga2V5U2hhcGUuc2V0KCdkcmFnZ2FibGUnLCB0cnVlKTtcbiAgICB9XG5cbiAgICB0aGlzLnNldE9yaWdpblN0eWxlKCk7IC8vIOmYsuatoueUseS6jueUqOaIt+WklumDqOS/ruaUuSBtb2RlbCDkuK3nmoQgc2hhcGUg5a+86Ie0IHNoYXBlIOS4jeabtOaWsFxuXG4gICAgdGhpcy5zZXQoJ2N1cnJlbnRTaGFwZScsIHNoYXBlVHlwZSk7XG4gICAgdGhpcy5yZXN0b3JlU3RhdGVzKHNoYXBlRmFjdG9yeSwgc2hhcGVUeXBlKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiuvue9ruWbvuWFg+e0oOWOn+Wni+agt+W8j1xuICAgKiBAcGFyYW0ga2V5U2hhcGUg5Zu+5YWD57SgIGtleVNoYXBlXG4gICAqIEBwYXJhbSBncm91cCBHcm91cCDlrrnlmahcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuc2V0T3JpZ2luU3R5bGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGdyb3VwID0gdGhpcy5nZXQoJ2dyb3VwJyk7XG4gICAgdmFyIGNoaWxkcmVuID0gZ3JvdXAuZ2V0KCdjaGlsZHJlbicpO1xuICAgIHZhciBrZXlTaGFwZSA9IHRoaXMuZ2V0S2V5U2hhcGUoKTtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGtleVNoYXBlTmFtZSA9IGtleVNoYXBlLmdldCgnbmFtZScpO1xuXG4gICAgaWYgKCF0aGlzLmdldCgnb3JpZ2luU3R5bGUnKSkge1xuICAgICAgLy8g56ys5LiA5qyhIHNldCBvcmlnaW5TdHlsZe+8jOebtOaOpeaLv+mmluasoea4suafk+aJgOacieWbvuW9oueahCBhdHRyc1xuICAgICAgdmFyIG9yaWdpblN0eWxlcyA9IHt9O1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgICAgICB2YXIgc2hhcGVUeXBlID0gY2hpbGQuZ2V0KCd0eXBlJyk7XG4gICAgICAgIHZhciBuYW1lXzEgPSBjaGlsZC5nZXQoJ25hbWUnKTtcblxuICAgICAgICBpZiAobmFtZV8xICYmIG5hbWVfMSAhPT0ga2V5U2hhcGVOYW1lKSB7XG4gICAgICAgICAgb3JpZ2luU3R5bGVzW25hbWVfMV0gPSBzaGFwZVR5cGUgIT09ICdpbWFnZScgPyBjbG9uZShjaGlsZC5hdHRyKCkpIDogc2VsZi5nZXRTaGFwZVN0eWxlQnlOYW1lKG5hbWVfMSk7IC8vIFRoZSB0ZXh0J3MgcG9zaXRpb24gYW5kIG1hdHJpeCBpcyBub3QgYWxsb3dlZCB0byBiZSBhZmZlY3RlZCBieSBzdGF0ZXNcblxuICAgICAgICAgIGlmIChzaGFwZVR5cGUgPT09ICd0ZXh0JyAmJiBvcmlnaW5TdHlsZXNbbmFtZV8xXSkge1xuICAgICAgICAgICAgZGVsZXRlIG9yaWdpblN0eWxlc1tuYW1lXzFdLng7XG4gICAgICAgICAgICBkZWxldGUgb3JpZ2luU3R5bGVzW25hbWVfMV0ueTtcbiAgICAgICAgICAgIGRlbGV0ZSBvcmlnaW5TdHlsZXNbbmFtZV8xXS5tYXRyaXg7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBrZXlTaGFwZVN0eWxlID0gc2VsZi5nZXRTaGFwZVN0eWxlQnlOYW1lKCk7IC8vIOWPr+S8mOWMlu+8jOmcgOimgeWOu+mZpCBjaGlsZC5hdHRyIOS4reWFtuS7liBzaGFwZSDlkI3nmoTlr7nosaFcblxuICAgICAgICAgIGRlbGV0ZSBrZXlTaGFwZVN0eWxlLnBhdGg7XG4gICAgICAgICAgZGVsZXRlIGtleVNoYXBlU3R5bGUubWF0cml4O1xuXG4gICAgICAgICAgaWYgKCFrZXlTaGFwZU5hbWUpIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ob3JpZ2luU3R5bGVzLCBrZXlTaGFwZVN0eWxlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8g6IulIGtleVNoYXBlIOaciSBuYW1lIOS4lCAhbmFtZe+8jOi/meS4quWbvuW9ouS4jeaYryBrZXlTaGFwZe+8jOe7mei/meS4quWbvuW9ouS4gOS4qiBuYW1lXG4gICAgICAgICAgICBpZiAoIW5hbWVfMSkge1xuICAgICAgICAgICAgICB2YXIgc2hhcGVOYW1lID0gdW5pcXVlSWQoJ3NoYXBlJyk7XG4gICAgICAgICAgICAgIGNoaWxkLnNldCgnbmFtZScsIHNoYXBlTmFtZSk7XG4gICAgICAgICAgICAgIGdyb3VwWydzaGFwZU1hcCddW3NoYXBlTmFtZV0gPSBjaGlsZDtcbiAgICAgICAgICAgICAgb3JpZ2luU3R5bGVzW3NoYXBlTmFtZV0gPSBzaGFwZVR5cGUgIT09ICdpbWFnZScgPyBjbG9uZShjaGlsZC5hdHRyKCkpIDogc2VsZi5nZXRTaGFwZVN0eWxlQnlOYW1lKG5hbWVfMSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvcmlnaW5TdHlsZXNba2V5U2hhcGVOYW1lXSA9IGtleVNoYXBlU3R5bGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHNlbGYuc2V0KCdvcmlnaW5TdHlsZScsIG9yaWdpblN0eWxlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIOesrOS6jOasoSBzZXQgb3JpZ2luU3R5bGVz77yM6ZyA6KaB5om+5Yiw5LiN5pivIHN0YXRlU3R5bGVzIOeahOagt+W8j++8jOabtOaWsOWIsCBvcmlnaW5TdHlsZXMg5LitXG4gICAgICAvLyDkuIrkuIDmrKHorr7nva7nmoQgb3JpZ2luU3R5bGXvvIzmmK/liJ3lp4vnmoQgc2hhcGUgYXR0cnNcbiAgICAgIHZhciBzdHlsZXNfMSA9IHRoaXMuZ2V0KCdvcmlnaW5TdHlsZScpOyAvLyBsZXQgc3R5bGVzOiBTaGFwZVN0eWxlID0ge307XG5cbiAgICAgIGlmIChrZXlTaGFwZU5hbWUgJiYgIXN0eWxlc18xW2tleVNoYXBlTmFtZV0pIHN0eWxlc18xW2tleVNoYXBlTmFtZV0gPSB7fTsgLy8g6I635Y+W5b2T5YmN54q25oCB5qC35byPXG5cbiAgICAgIHZhciBjdXJyZW50U3RhdGVzU3R5bGVfMSA9IHRoaXMuZ2V0Q3VycmVudFN0YXRlc1N0eWxlKCk7XG5cbiAgICAgIHZhciBfbG9vcF8xID0gZnVuY3Rpb24gX2xvb3BfMShpKSB7XG4gICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgICAgICB2YXIgbmFtZV8yID0gY2hpbGQuZ2V0KCduYW1lJyk7XG4gICAgICAgIHZhciBzaGFwZUF0dHJzID0gY2hpbGQuYXR0cigpO1xuXG4gICAgICAgIGlmIChuYW1lXzIgJiYgbmFtZV8yICE9PSBrZXlTaGFwZU5hbWUpIHtcbiAgICAgICAgICAvLyDmnIkgbmFtZSDnmoTpnZ4ga2V5U2hhcGUg5Zu+5b2iXG4gICAgICAgICAgdmFyIHNoYXBlU3RhdGVTdHlsZV8xID0gY3VycmVudFN0YXRlc1N0eWxlXzFbbmFtZV8yXTtcbiAgICAgICAgICBpZiAoIXN0eWxlc18xW25hbWVfMl0pIHN0eWxlc18xW25hbWVfMl0gPSB7fTtcblxuICAgICAgICAgIGlmIChzaGFwZVN0YXRlU3R5bGVfMSkge1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoc2hhcGVBdHRycykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHNoYXBlQXR0cnNba2V5XTtcbiAgICAgICAgICAgICAgaWYgKHZhbHVlICE9PSBzaGFwZVN0YXRlU3R5bGVfMVtrZXldKSBzdHlsZXNfMVtuYW1lXzJdW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdHlsZXNfMVtuYW1lXzJdID0gY2hpbGQuZ2V0KCd0eXBlJykgIT09ICdpbWFnZScgPyBjbG9uZShzaGFwZUF0dHJzKSA6IHNlbGYuZ2V0U2hhcGVTdHlsZUJ5TmFtZShuYW1lXzIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgc2hhcGVBdHRyc18xID0gY2hpbGQuYXR0cigpO1xuICAgICAgICAgIHZhciBrZXlTaGFwZVN0YXRlU3R5bGVzXzEgPSB7fTtcbiAgICAgICAgICBPYmplY3Qua2V5cyhjdXJyZW50U3RhdGVzU3R5bGVfMSkuZm9yRWFjaChmdW5jdGlvbiAoc3R5bGVLZXkpIHtcbiAgICAgICAgICAgIHZhciBzdWJTdHlsZSA9IGN1cnJlbnRTdGF0ZXNTdHlsZV8xW3N0eWxlS2V5XTtcblxuICAgICAgICAgICAgaWYgKHN0eWxlS2V5ID09PSBrZXlTaGFwZU5hbWUgfHwgIWlzUGxhaW5PYmplY3Qoc3ViU3R5bGUpKSB7XG4gICAgICAgICAgICAgIGtleVNoYXBlU3RhdGVTdHlsZXNfMVtzdHlsZUtleV0gPSBzdWJTdHlsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBPYmplY3Qua2V5cyhzaGFwZUF0dHJzXzEpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgdmFyIHZhbHVlID0gc2hhcGVBdHRyc18xW2tleV07IC8vIOWmguaenOaYr+WvueixoeS4lOS4jeaYryBhcnJvd++8jOWImeaYr+WFtuS7liBzaGFwZSDnmoTmoLflvI9cbiAgICAgICAgICAgIC8vIGlmIChpc1BsYWluT2JqZWN0KHZhbHVlKSAmJiBBUlJPV1MuaW5kZXhPZihuYW1lKSA9PT0gLTEpIHJldHVybjtcblxuICAgICAgICAgICAgaWYgKGtleVNoYXBlU3RhdGVTdHlsZXNfMVtrZXldICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgICBpZiAoa2V5U2hhcGVOYW1lKSBzdHlsZXNfMVtrZXlTaGFwZU5hbWVdW2tleV0gPSB2YWx1ZTtlbHNlIHN0eWxlc18xW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfTsgLy8g6YGN5Y6G5b2T5YmN5omA5pyJ5Zu+5b2i55qEIGF0dHJz77yM5om+5Yiw5LiN5pivIHN0YXRlU3R5bGVzIOeahOagt+W8j+abtOaWsOWIsCBvcmlnaW5TdHlsZXMg5LitXG5cblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICBfbG9vcF8xKGkpO1xuICAgICAgfVxuXG4gICAgICBkZWxldGUgc3R5bGVzXzEucGF0aDtcbiAgICAgIGRlbGV0ZSBzdHlsZXNfMS5tYXRyaXg7XG4gICAgICBkZWxldGUgc3R5bGVzXzEueDtcbiAgICAgIGRlbGV0ZSBzdHlsZXNfMS55O1xuXG4gICAgICBpZiAoc3R5bGVzXzFba2V5U2hhcGVOYW1lXSkge1xuICAgICAgICBkZWxldGUgc3R5bGVzXzFba2V5U2hhcGVOYW1lXS54O1xuICAgICAgICBkZWxldGUgc3R5bGVzXzFba2V5U2hhcGVOYW1lXS55O1xuICAgICAgICBkZWxldGUgc3R5bGVzXzFba2V5U2hhcGVOYW1lXS5tYXRyaXg7XG4gICAgICAgIGRlbGV0ZSBzdHlsZXNfMVtrZXlTaGFwZU5hbWVdLnBhdGg7XG4gICAgICB9XG5cbiAgICAgIHNlbGYuc2V0KCdvcmlnaW5TdHlsZScsIHN0eWxlc18xKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiByZXN0b3JlIHNoYXBlIHN0YXRlc1xuICAgKiBAcGFyYW0gc2hhcGVGYWN0b3J5XG4gICAqIEBwYXJhbSBzaGFwZVR5cGVcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUucmVzdG9yZVN0YXRlcyA9IGZ1bmN0aW9uIChzaGFwZUZhY3RvcnksIHNoYXBlVHlwZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgc3RhdGVzID0gc2VsZi5nZXQoJ3N0YXRlcycpO1xuICAgIGVhY2goc3RhdGVzLCBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgIHNoYXBlRmFjdG9yeS5zZXRTdGF0ZShzaGFwZVR5cGUsIHN0YXRlLCB0cnVlLCBzZWxmKTtcbiAgICB9KTtcbiAgfTtcblxuICBJdGVtQmFzZS5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2hhcGVGYWN0b3J5ID0gU2hhcGUuZ2V0RmFjdG9yeSh0aGlzLmdldCgndHlwZScpKTtcbiAgICB0aGlzLnNldCgnc2hhcGVGYWN0b3J5Jywgc2hhcGVGYWN0b3J5KTtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPluWxnuaAp1xuICAgKiBAaW50ZXJuYWwg5LuF5YaF6YOo57G75L2/55SoXG4gICAqIEBwYXJhbSAge1N0cmluZ30ga2V5IOWxnuaAp+WQjVxuICAgKiBAcmV0dXJuIHtvYmplY3QgfCBzdHJpbmcgfCBudW1iZXJ9IOWxnuaAp+WAvFxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIHRoaXMuX2NmZ1trZXldO1xuICB9O1xuICAvKipcbiAgICog6K6+572u5bGe5oCnXG4gICAqIEBpbnRlcm5hbCDku4XlhoXpg6jnsbvkvb/nlKhcbiAgICogQHBhcmFtIHtTdHJpbmd8T2JqZWN0fSBrZXkg5bGe5oCn5ZCN77yM5Lmf5Y+v5Lul5piv5a+56LGhXG4gICAqIEBwYXJhbSB7b2JqZWN0IHwgc3RyaW5nIHwgbnVtYmVyfSB2YWwg5bGe5oCn5YC8XG4gICAqL1xuXG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChrZXksIHZhbCkge1xuICAgIGlmIChpc1BsYWluT2JqZWN0KGtleSkpIHtcbiAgICAgIHRoaXMuX2NmZyA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCB0aGlzLl9jZmcpLCBrZXkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9jZmdba2V5XSA9IHZhbDtcbiAgICB9XG4gIH07XG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmdldERlZmF1bHRDZmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9O1xuICAvKipcbiAgICog5pu05pawL+WIt+aWsOetieaTjeS9nOWQju+8jOa4hemZpCBjYWNoZVxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5jbGVhckNhY2hlID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuc2V0KENBQ0hFX0JCT1gsIG51bGwpO1xuICAgIHRoaXMuc2V0KENBQ0hFX0NBTlZBU19CQk9YLCBudWxsKTtcbiAgfTtcbiAgLyoqXG4gICAqIOa4suafk+WJjeeahOmAu+i+ke+8jOaPkOS+m+e7meWtkOexu+WkjeWGmVxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5iZWZvcmVEcmF3ID0gZnVuY3Rpb24gKCkge307XG4gIC8qKlxuICAgKiDmuLLmn5PlkI7nmoTpgLvovpHvvIzmj5Dkvpvnu5nlrZDnsbvlpI3lhplcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuYWZ0ZXJEcmF3ID0gZnVuY3Rpb24gKCkge307XG4gIC8qKlxuICAgKiDmm7TmlrDlkI7lgZrkuIDkupvlt6XkvZxcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuYWZ0ZXJVcGRhdGUgPSBmdW5jdGlvbiAoKSB7fTtcbiAgLyoqXG4gICAqIGRyYXcgc2hhcGVcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmJlZm9yZURyYXcoKTtcbiAgICB0aGlzLmRyYXdJbm5lcigpO1xuICAgIHRoaXMuYWZ0ZXJEcmF3KCk7XG4gIH07XG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmdldFNoYXBlU3R5bGVCeU5hbWUgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHZhciBncm91cCA9IHRoaXMuZ2V0KCdncm91cCcpO1xuICAgIHZhciBjdXJyZW50U2hhcGU7XG5cbiAgICBpZiAobmFtZSkge1xuICAgICAgY3VycmVudFNoYXBlID0gZ3JvdXBbJ3NoYXBlTWFwJ11bbmFtZV07IC8vIGdyb3VwLmZpbmQoKGVsZW1lbnQpID0+IGVsZW1lbnQuZ2V0KCduYW1lJykgPT09IG5hbWUpIGFzIElTaGFwZUJhc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnRTaGFwZSA9IHRoaXMuZ2V0S2V5U2hhcGUoKTtcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudFNoYXBlKSB7XG4gICAgICB2YXIgc3R5bGVzXzIgPSB7fTtcbiAgICAgIGVhY2goY3VycmVudFNoYXBlLmF0dHIoKSwgZnVuY3Rpb24gKHZhbCwga2V5KSB7XG4gICAgICAgIC8vIOS/ruaUuSBpbWcg6YCa6L+HIHVwZGF0ZUl0ZW0g5a6e546wXG4gICAgICAgIGlmIChrZXkgIT09ICdpbWcnIHx8IGlzU3RyaW5nKHZhbCkpIHtcbiAgICAgICAgICBzdHlsZXNfMltrZXldID0gdmFsO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBzdHlsZXNfMjtcbiAgICB9XG5cbiAgICByZXR1cm4ge307XG4gIH07XG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmdldFNoYXBlQ2ZnID0gZnVuY3Rpb24gKG1vZGVsLCB1cGRhdGVUeXBlKSB7XG4gICAgdmFyIHN0eWxlcyA9IHRoaXMuZ2V0KCdzdHlsZXMnKTtcblxuICAgIGlmIChzdHlsZXMpIHtcbiAgICAgIC8vIG1lcmdlIGdyYXBo55qEaXRlbeagt+W8j+S4juaVsOaNruaooeWei+S4reeahOagt+W8j1xuICAgICAgdmFyIG5ld01vZGVsID0gbW9kZWw7XG4gICAgICBuZXdNb2RlbC5zdHlsZSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCBtb2RlbC5zdHlsZSk7XG4gICAgICByZXR1cm4gbmV3TW9kZWw7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vZGVsO1xuICB9O1xuICAvKipcbiAgICog6I635Y+W5oyH5a6a54q25oCB55qE5qC35byP77yM5Y676Zmk5LqG5YWo5bGA5qC35byPXG4gICAqIEBwYXJhbSBzdGF0ZSDnirbmgIHlkI3np7BcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuZ2V0U3RhdGVTdHlsZSA9IGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgIHZhciBzdHlsZXMgPSB0aGlzLmdldCgnc3R5bGVzJyk7XG4gICAgdmFyIHN0YXRlU3R5bGUgPSBzdHlsZXMgJiYgc3R5bGVzW3N0YXRlXTtcbiAgICByZXR1cm4gc3RhdGVTdHlsZTtcbiAgfTtcbiAgLyoqXG4gICAqIGdldCBrZXlzaGFwZSBzdHlsZVxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5nZXRPcmlnaW5TdHlsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ29yaWdpblN0eWxlJyk7XG4gIH07XG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmdldEN1cnJlbnRTdGF0ZXNTdHlsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIHN0eWxlcyA9IHt9O1xuICAgIHZhciBzdGF0ZXMgPSBzZWxmLmdldFN0YXRlcygpO1xuXG4gICAgaWYgKCFzdGF0ZXMgfHwgIXN0YXRlcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldCgnb3JpZ2luU3R5bGUnKTtcbiAgICB9XG5cbiAgICBlYWNoKHNlbGYuZ2V0U3RhdGVzKCksIGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgc3R5bGVzID0gT2JqZWN0LmFzc2lnbihzdHlsZXMsIHNlbGYuZ2V0U3RhdGVTdHlsZShzdGF0ZSkpO1xuICAgIH0pO1xuICAgIHJldHVybiBzdHlsZXM7XG4gIH07XG4gIC8qKlxuICAgKiDmm7TmlLnlhYPntKDnirbmgIHvvIwgdmlzaWJsZSDkuI3lsZ7kuo7ov5nkuKrojIPnlbRcbiAgICogQGludGVybmFsIOS7heaPkOS+m+WGhemDqOexuyBncmFwaCDkvb/nlKhcbiAgICogQHBhcmFtIHtTdHJpbmd9IHN0YXRlIOeKtuaAgeWQjVxuICAgKiBAcGFyYW0ge0Jvb2xlYW59IHZhbHVlIOiKgueCueeKtuaAgeWAvFxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5zZXRTdGF0ZSA9IGZ1bmN0aW9uIChzdGF0ZSwgdmFsdWUpIHtcbiAgICB2YXIgc3RhdGVzID0gdGhpcy5nZXQoJ3N0YXRlcycpO1xuICAgIHZhciBzaGFwZUZhY3RvcnkgPSB0aGlzLmdldCgnc2hhcGVGYWN0b3J5Jyk7XG4gICAgdmFyIHN0YXRlTmFtZSA9IHN0YXRlO1xuICAgIHZhciBmaWx0ZXJTdGF0ZU5hbWUgPSBzdGF0ZTtcblxuICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgIHN0YXRlTmFtZSA9IHN0YXRlICsgXCI6XCIgKyB2YWx1ZTtcbiAgICAgIGZpbHRlclN0YXRlTmFtZSA9IHN0YXRlICsgXCI6XCI7XG4gICAgfVxuXG4gICAgdmFyIG5ld1N0YXRlcyA9IHN0YXRlcztcblxuICAgIGlmIChpc0Jvb2xlYW4odmFsdWUpKSB7XG4gICAgICB2YXIgaW5kZXggPSBzdGF0ZXMuaW5kZXhPZihmaWx0ZXJTdGF0ZU5hbWUpO1xuXG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0ZXMucHVzaChzdGF0ZU5hbWUpO1xuICAgICAgfSBlbHNlIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgIHN0YXRlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAvLyDov4fmu6Tmjokgc3RhdGVzIOS4rSBmaWx0ZXJTdGF0ZU5hbWUg55u45YWz55qE54q25oCBXG4gICAgICB2YXIgZmlsdGVyU3RhdGVzID0gc3RhdGVzLmZpbHRlcihmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICByZXR1cm4gbmFtZS5pbmNsdWRlcyhmaWx0ZXJTdGF0ZU5hbWUpO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChmaWx0ZXJTdGF0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmNsZWFyU3RhdGVzKGZpbHRlclN0YXRlcyk7XG4gICAgICB9XG5cbiAgICAgIG5ld1N0YXRlcyA9IG5ld1N0YXRlcy5maWx0ZXIoZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuICFuYW1lLmluY2x1ZGVzKGZpbHRlclN0YXRlTmFtZSk7XG4gICAgICB9KTtcbiAgICAgIG5ld1N0YXRlcy5wdXNoKHN0YXRlTmFtZSk7XG4gICAgICB0aGlzLnNldCgnc3RhdGVzJywgbmV3U3RhdGVzKTtcbiAgICB9XG5cbiAgICBpZiAoc2hhcGVGYWN0b3J5KSB7XG4gICAgICB2YXIgbW9kZWwgPSB0aGlzLmdldCgnbW9kZWwnKTtcbiAgICAgIHZhciB0eXBlID0gbW9kZWwudHlwZTsgLy8g6LCD55SoIHNoYXBlL3NoYXBlLnRzIOS4reeahCBzZXRTdGF0ZVxuXG4gICAgICBzaGFwZUZhY3Rvcnkuc2V0U3RhdGUodHlwZSwgc3RhdGUsIHZhbHVlLCB0aGlzKTtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiDmuIXpmaTmjIflrprnmoTnirbmgIHvvIzlpoLmnpzlj4LmlbDkuLrnqbrvvIzliJnkuI3lgZrku7vliqHlpITnkIZcbiAgICogQHBhcmFtIHN0YXRlcyDnirbmgIHlkI3np7BcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuY2xlYXJTdGF0ZXMgPSBmdW5jdGlvbiAoc3RhdGVzKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBvcmlnaW5TdGF0ZXMgPSBzZWxmLmdldFN0YXRlcygpO1xuICAgIHZhciBzaGFwZUZhY3RvcnkgPSBzZWxmLmdldCgnc2hhcGVGYWN0b3J5Jyk7XG4gICAgdmFyIG1vZGVsID0gc2VsZi5nZXQoJ21vZGVsJyk7XG4gICAgdmFyIHNoYXBlID0gbW9kZWwudHlwZTtcblxuICAgIGlmICghc3RhdGVzKSB7XG4gICAgICBzdGF0ZXMgPSBvcmlnaW5TdGF0ZXM7XG4gICAgfVxuXG4gICAgaWYgKGlzU3RyaW5nKHN0YXRlcykpIHtcbiAgICAgIHN0YXRlcyA9IFtzdGF0ZXNdO1xuICAgIH1cblxuICAgIHZhciBuZXdTdGF0ZXMgPSBvcmlnaW5TdGF0ZXMuZmlsdGVyKGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgcmV0dXJuIHN0YXRlcy5pbmRleE9mKHN0YXRlKSA9PT0gLTE7XG4gICAgfSk7XG4gICAgc2VsZi5zZXQoJ3N0YXRlcycsIG5ld1N0YXRlcyk7XG4gICAgc3RhdGVzLmZvckVhY2goZnVuY3Rpb24gKHN0YXRlKSB7XG4gICAgICBzaGFwZUZhY3Rvcnkuc2V0U3RhdGUoc2hhcGUsIHN0YXRlLCBmYWxzZSwgc2VsZik7XG4gICAgfSk7XG4gIH07XG4gIC8qKlxuICAgKiDoioLngrnnmoTlm77lvaLlrrnlmahcbiAgICogQHJldHVybiB7Ry5Hcm91cH0g5Zu+5b2i5a655ZmoXG4gICAqL1xuXG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmdldENvbnRhaW5lciA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ2dyb3VwJyk7XG4gIH07XG4gIC8qKlxuICAgKiDoioLngrnnmoTlhbPplK7lvaLnirbvvIznlKjkuo7orqHnrpfoioLngrnlpKflsI/vvIzov57nur/miKrot53nrYlcbiAgICogQHJldHVybiB7SVNoYXBlQmFzZX0g5YWz6ZSu5b2i54q2XG4gICAqL1xuXG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmdldEtleVNoYXBlID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgna2V5U2hhcGUnKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiKgueCueaVsOaNruaooeWei1xuICAgKiBAcmV0dXJuIHtPYmplY3R9IOaVsOaNruaooeWei1xuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5nZXRNb2RlbCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ21vZGVsJyk7XG4gIH07XG4gIC8qKlxuICAgKiDoioLngrnnsbvlnotcbiAgICogQHJldHVybiB7c3RyaW5nfSDoioLngrnnmoTnsbvlnotcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuZ2V0VHlwZSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ3R5cGUnKTtcbiAgfTtcbiAgLyoqXG4gICAqIOiOt+WPliBJdGVtIOeahElEXG4gICAqL1xuXG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmdldElEID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnaWQnKTtcbiAgfTtcbiAgLyoqXG4gICAqIOaYr+WQpuaYryBJdGVtIOWvueixoe+8jOaCrOepuui+ueaDheWGteS4i+i/m+ihjOWIpOWumlxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5pc0l0ZW0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5blvZPliY3lhYPntKDnmoTmiYDmnInnirbmgIFcbiAgICogQHJldHVybiB7QXJyYXl9IOWFg+e0oOeahOaJgOacieeKtuaAgVxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5nZXRTdGF0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdzdGF0ZXMnKTtcbiAgfTtcbiAgLyoqXG4gICAqIOW9k+WJjeWFg+e0oOaYr+WQpuWkhOS6juafkOeKtuaAgVxuICAgKiBAcGFyYW0ge1N0cmluZ30gc3RhdGUg54q25oCB5ZCNXG4gICAqIEByZXR1cm4ge0Jvb2xlYW59IOaYr+WQpuWkhOS6juafkOeKtuaAgVxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5oYXNTdGF0ZSA9IGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgIHZhciBzdGF0ZXMgPSB0aGlzLmdldFN0YXRlcygpO1xuICAgIHJldHVybiBzdGF0ZXMuaW5kZXhPZihzdGF0ZSkgPj0gMDtcbiAgfTtcbiAgLyoqXG4gICAqIOWIt+aWsOS4gOiIrOeUqOS6juWkhOeQhuWHoOenjeaDheWGtVxuICAgKiAxLiBpdGVtIG1vZGVsIOWcqOWklumDqOiiq+aUueWPmFxuICAgKiAyLiDovrnnmoToioLngrnkvY3nva7lj5HnlJ/mlLnlj5jvvIzpnIDopoHph43mlrDorqHnrpfovrlcbiAgICpcbiAgICog5Zug5Li65pWw5o2u5LuO5aSW6YOo6KKr5L+u5pS55peg5rOV5Yik5pat5LiA5Lqb5bGe5oCn5piv5ZCm6KKr5L+u5pS577yM55u05o6l6LWw5L2N572u5ZKMIHNoYXBlIOeahOabtOaWsFxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS5yZWZyZXNoID0gZnVuY3Rpb24gKHVwZGF0ZVR5cGUpIHtcbiAgICB2YXIgbW9kZWwgPSB0aGlzLmdldCgnbW9kZWwnKTsgLy8g5pu05paw5YWD57Sg5L2N572uXG5cbiAgICB0aGlzLnVwZGF0ZVBvc2l0aW9uKG1vZGVsKTsgLy8g5pu05paw5YWD57Sg5YaF5a6577yM5qC35byPXG5cbiAgICB0aGlzLnVwZGF0ZVNoYXBlKHVwZGF0ZVR5cGUpOyAvLyDlgZrkuIDkupvmm7TmlrDkuYvlkI7nmoTmk43kvZxcblxuICAgIHRoaXMuYWZ0ZXJVcGRhdGUoKTsgLy8g5riF6Zmk57yT5a2YXG5cbiAgICB0aGlzLmNsZWFyQ2FjaGUoKTtcbiAgfTtcblxuICBJdGVtQmFzZS5wcm90b3R5cGUuZ2V0VXBkYXRlVHlwZSA9IGZ1bmN0aW9uIChjZmcpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9O1xuICAvKipcbiAgICog5bCG5pu05paw5bqU55So5YiwIG1vZGVsIOS4iu+8jOWIt+aWsOWxnuaAp1xuICAgKiBAaW50ZXJuYWwg5LuF5o+Q5L6b57uZIEdyYXBoIOS9v+eUqO+8jOWklumDqOebtOaOpeiwg+eUqCBncmFwaC51cGRhdGUg5o6l5Y+jXG4gICAqIEBwYXJhbSAge09iamVjdH0gY2ZnICAgICAgIOmFjee9rumhue+8jOWPr+S7peaYr+WinumHj+S/oeaBr1xuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoY2ZnLCB1cGRhdGVUeXBlKSB7XG4gICAgaWYgKHVwZGF0ZVR5cGUgPT09IHZvaWQgMCkge1xuICAgICAgdXBkYXRlVHlwZSA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICB2YXIgbW9kZWwgPSB0aGlzLmdldCgnbW9kZWwnKTsgLy8g5LuF5LuF56e75Yqo5L2N572u5pe277yM5pei5LiN5pu05paw77yM5Lmf5LiN6YeN57uYXG5cbiAgICBpZiAodXBkYXRlVHlwZSA9PT0gJ21vdmUnKSB7XG4gICAgICB0aGlzLnVwZGF0ZVBvc2l0aW9uKGNmZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBvcmlWaXNpYmxlID0gbW9kZWwudmlzaWJsZTtcbiAgICAgIHZhciBjZmdWaXNpYmxlID0gY2ZnLnZpc2libGU7XG4gICAgICBpZiAob3JpVmlzaWJsZSAhPT0gY2ZnVmlzaWJsZSAmJiBjZmdWaXNpYmxlICE9PSB1bmRlZmluZWQpIHRoaXMuY2hhbmdlVmlzaWJpbGl0eShjZmdWaXNpYmxlKTtcbiAgICAgIHZhciBvcmlnaW5Qb3NpdGlvbiA9IHtcbiAgICAgICAgeDogbW9kZWwueCxcbiAgICAgICAgeTogbW9kZWwueVxuICAgICAgfTtcbiAgICAgIGNmZy54ID0gaXNOYU4oK2NmZy54KSA/IG1vZGVsLnggOiArY2ZnLng7XG4gICAgICBjZmcueSA9IGlzTmFOKCtjZmcueSkgPyBtb2RlbC55IDogK2NmZy55O1xuICAgICAgdmFyIHN0eWxlcyA9IHRoaXMuZ2V0KCdzdHlsZXMnKTtcblxuICAgICAgaWYgKGNmZy5zdGF0ZVN0eWxlcykge1xuICAgICAgICAvLyDmm7TmlrAgaXRlbSDml7bmm7TmlrAgdGhpcy5nZXQoJ3N0eWxlcycpIOS4reeahOWAvFxuICAgICAgICB2YXIgc3RhdGVTdHlsZXMgPSBjZmcuc3RhdGVTdHlsZXM7XG4gICAgICAgIG1peChzdHlsZXMsIHN0YXRlU3R5bGVzKTtcbiAgICAgICAgZGVsZXRlIGNmZy5zdGF0ZVN0eWxlcztcbiAgICAgIH0gLy8g55u05o6l5bCG5pu05paw5ZCI5Yiw5Y6f5pWw5o2u5qih5Z6L5LiK77yM5Y+v5Lul5L+d6K+B55So5oi35Zyo5aSW6YOo5L+u5pS55rqQ5pWw5o2u54S25ZCO5Yi35paw5pe255qE5qC35byP56ym5ZCI5pyf5b6F44CCXG5cblxuICAgICAgT2JqZWN0LmFzc2lnbihtb2RlbCwgY2ZnKTsgLy8g5aaC5p6cIHgseSDmnInlj5jljJbvvIzlhYjph43nva7kvY3nva5cblxuICAgICAgaWYgKG9yaWdpblBvc2l0aW9uLnggIT09IGNmZy54IHx8IG9yaWdpblBvc2l0aW9uLnkgIT09IGNmZy55KSB7XG4gICAgICAgIHRoaXMudXBkYXRlUG9zaXRpb24oY2ZnKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy51cGRhdGVTaGFwZSh1cGRhdGVUeXBlKTtcbiAgICB9XG5cbiAgICB0aGlzLmFmdGVyVXBkYXRlKCk7XG4gICAgdGhpcy5jbGVhckNhY2hlKCk7XG4gIH07XG4gIC8qKlxuICAgKiDmm7TmlrDlhYPntKDlhoXlrrnvvIzmoLflvI9cbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUudXBkYXRlU2hhcGUgPSBmdW5jdGlvbiAodXBkYXRlVHlwZSkge1xuICAgIHZhciBzaGFwZUZhY3RvcnkgPSB0aGlzLmdldCgnc2hhcGVGYWN0b3J5Jyk7XG4gICAgdmFyIG1vZGVsID0gdGhpcy5nZXQoJ21vZGVsJyk7XG4gICAgdmFyIHNoYXBlID0gbW9kZWwudHlwZTsgLy8g5Yik5a6a5piv5ZCm5YWB6K645pu05pawXG4gICAgLy8gMS4g5rOo5YaM55qE6IqC54K55YWB6K645pu05pawXG4gICAgLy8gMi4g5pu05paw5ZCO55qEIHNoYXBlIOetieS6juWOn+WFiOeahCBzaGFwZVxuXG4gICAgaWYgKHNoYXBlRmFjdG9yeS5zaG91bGRVcGRhdGUoc2hhcGUpICYmIHNoYXBlID09PSB0aGlzLmdldCgnY3VycmVudFNoYXBlJykpIHtcbiAgICAgIHZhciB1cGRhdGVDZmcgPSB0aGlzLmdldFNoYXBlQ2ZnKG1vZGVsLCB1cGRhdGVUeXBlKTtcbiAgICAgIHNoYXBlRmFjdG9yeS5iYXNlVXBkYXRlKHNoYXBlLCB1cGRhdGVDZmcsIHRoaXMsIHVwZGF0ZVR5cGUpOyAvLyDmm7TmlrDlrozku6XlkI7ph43mlrDorr7nva7ljp/lp4vmoLflvI9cblxuICAgICAgaWYgKHVwZGF0ZVR5cGUgIT09ICdtb3ZlJykgdGhpcy5zZXRPcmlnaW5TdHlsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyDlpoLmnpzkuI3mu6HotrPkuIrpnaLkuKTnp43nirbmgIHvvIzph43mlrDnu5jliLZcbiAgICAgIHRoaXMuZHJhdygpO1xuICAgIH0gLy8g5pu05paw5ZCO6YeN572u6IqC54K554q25oCBXG5cblxuICAgIHRoaXMucmVzdG9yZVN0YXRlcyhzaGFwZUZhY3RvcnksIHNoYXBlKTtcbiAgfTtcbiAgLyoqXG4gICAqIOabtOaWsOS9jee9ru+8jOmBv+WFjeaVtOS9k+mHjee7mFxuICAgKiBAcGFyYW0ge29iamVjdH0gY2ZnIOW+heabtOaWsOaVsOaNrlxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS51cGRhdGVQb3NpdGlvbiA9IGZ1bmN0aW9uIChjZmcpIHtcbiAgICB2YXIgbW9kZWwgPSB0aGlzLmdldCgnbW9kZWwnKTtcbiAgICB2YXIgeCA9IGlzTmFOKCtjZmcueCkgPyArbW9kZWwueCA6ICtjZmcueDtcbiAgICB2YXIgeSA9IGlzTmFOKCtjZmcueSkgPyArbW9kZWwueSA6ICtjZmcueTtcbiAgICB2YXIgZ3JvdXAgPSB0aGlzLmdldCgnZ3JvdXAnKTtcblxuICAgIGlmIChpc05hTih4KSB8fCBpc05hTih5KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIG1vZGVsLnggPSB4O1xuICAgIG1vZGVsLnkgPSB5O1xuICAgIHZhciBtYXRyaXggPSBncm91cC5nZXRNYXRyaXgoKTtcbiAgICBpZiAobWF0cml4ICYmIG1hdHJpeFs2XSA9PT0geCAmJiBtYXRyaXhbN10gPT09IHkpIHJldHVybiBmYWxzZTtcbiAgICBncm91cC5yZXNldE1hdHJpeCgpOyAvLyBHIDQuMCBlbGVtZW50IOS4reenu+mZpOS6huefqemYteebuOWFs+aWueazle+8jOivpuingWh0dHBzOi8vd3d3Lnl1cXVlLmNvbS9hbnR2L2Jsb2cva3h6azlnIzRyTU1WXG5cbiAgICB0cmFuc2xhdGUoZ3JvdXAsIHtcbiAgICAgIHg6IHgsXG4gICAgICB5OiB5XG4gICAgfSk7XG4gICAgdGhpcy5jbGVhckNhY2hlKCk7IC8vIOS9jee9ruabtOaWsOWQjumcgOimgea4hemZpOe8k+WtmFxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5YgaXRlbSDnmoTljIXlm7Tnm5LvvIzov5nkuKrljIXlm7Tnm5LmmK/nm7jlr7nkuo4gaXRlbSDoh6rlt7HvvIzkuI3kvJrlsIYgbWF0cml4IOiuoeeul+WcqOWGhVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IOWMheWQqyB4LHksd2lkdGgsaGVpZ2h0LCBjZW50ZXJYLCBjZW50ZXJZXG4gICAqL1xuXG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmdldEJCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgLy8g6K6h566XIGJib3gg5byA6ZSA5pyJ5Lqb5aSn77yM57yT5a2YXG4gICAgdmFyIGJib3ggPSB0aGlzLmdldChDQUNIRV9CQk9YKTtcblxuICAgIGlmICghYmJveCkge1xuICAgICAgYmJveCA9IHRoaXMuY2FsY3VsYXRlQkJveCgpO1xuICAgICAgdGhpcy5zZXQoQ0FDSEVfQkJPWCwgYmJveCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJib3g7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5YgaXRlbSDnm7jlr7nkuo7nlLvluIPnmoTljIXlm7Tnm5LvvIzkvJrlsIbku47pobblsYLliLDlvZPliY3lhYPntKDnmoQgbWF0cml4IOmDveiuoeeul+WcqOWGhVxuICAgKiBAcmV0dXJuIHtPYmplY3R9IOWMheWQqyB4LHksd2lkdGgsaGVpZ2h0LCBjZW50ZXJYLCBjZW50ZXJZXG4gICAqL1xuXG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmdldENhbnZhc0JCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgLy8g6K6h566XIGJib3gg5byA6ZSA5pyJ5Lqb5aSn77yM57yT5a2YXG4gICAgdmFyIGJib3ggPSB0aGlzLmdldChDQUNIRV9DQU5WQVNfQkJPWCk7XG5cbiAgICBpZiAoIWJib3gpIHtcbiAgICAgIGJib3ggPSB0aGlzLmNhbGN1bGF0ZUNhbnZhc0JCb3goKTtcbiAgICAgIHRoaXMuc2V0KENBQ0hFX0NBTlZBU19CQk9YLCBiYm94KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYmJveDtcbiAgfTtcbiAgLyoqXG4gICAqIOWwhuWFg+e0oOaUvuWIsOacgOWJjemdolxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS50b0Zyb250ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBncm91cCA9IHRoaXMuZ2V0KCdncm91cCcpO1xuICAgIGdyb3VwLnRvRnJvbnQoKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWwhuWFg+e0oOaUvuWIsOacgOWQjumdolxuICAgKi9cblxuXG4gIEl0ZW1CYXNlLnByb3RvdHlwZS50b0JhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGdyb3VwID0gdGhpcy5nZXQoJ2dyb3VwJyk7XG4gICAgZ3JvdXAudG9CYWNrKCk7XG4gIH07XG4gIC8qKlxuICAgKiDmmL7npLrlhYPntKBcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuc2hvdyA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmNoYW5nZVZpc2liaWxpdHkodHJ1ZSk7XG4gIH07XG4gIC8qKlxuICAgKiDpmpDol4/lhYPntKBcbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuaGlkZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmNoYW5nZVZpc2liaWxpdHkoZmFsc2UpO1xuICB9O1xuICAvKipcbiAgICog5pu05pS55piv5ZCm5pi+56S6XG4gICAqIEBwYXJhbSAge0Jvb2xlYW59IHZpc2libGUg5piv5ZCm5pi+56S6XG4gICAqL1xuXG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmNoYW5nZVZpc2liaWxpdHkgPSBmdW5jdGlvbiAodmlzaWJsZSkge1xuICAgIHZhciBncm91cCA9IHRoaXMuZ2V0KCdncm91cCcpO1xuXG4gICAgaWYgKHZpc2libGUpIHtcbiAgICAgIGdyb3VwLnNob3coKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ3JvdXAuaGlkZSgpO1xuICAgIH1cblxuICAgIHRoaXMuc2V0KCd2aXNpYmxlJywgdmlzaWJsZSk7XG4gIH07XG4gIC8qKlxuICAgKiDlhYPntKDmmK/lkKblj6/op4FcbiAgICogQHJldHVybiB7Qm9vbGVhbn0g6L+U5Zue6K+l5YWD57Sg5piv5ZCm5Y+v6KeBXG4gICAqL1xuXG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmlzVmlzaWJsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ3Zpc2libGUnKTtcbiAgfTtcbiAgLyoqXG4gICAqIOaYr+WQpuaLvuWPluWPiuWHuuWPkeivpeWFg+e0oOeahOS6pOS6kuS6i+S7tlxuICAgKiBAcGFyYW0ge0Jvb2xlYW59IGVuYWJsZSDmoIfor4bkvY1cbiAgICovXG5cblxuICBJdGVtQmFzZS5wcm90b3R5cGUuZW5hYmxlQ2FwdHVyZSA9IGZ1bmN0aW9uIChlbmFibGUpIHtcbiAgICB2YXIgZ3JvdXAgPSB0aGlzLmdldCgnZ3JvdXAnKTtcblxuICAgIGlmIChncm91cCkge1xuICAgICAgZ3JvdXAuc2V0KCdjYXB0dXJlJywgZW5hYmxlKTtcbiAgICB9XG4gIH07XG5cbiAgSXRlbUJhc2UucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCF0aGlzLmRlc3Ryb3llZCkge1xuICAgICAgdmFyIGFuaW1hdGUgPSB0aGlzLmdldCgnYW5pbWF0ZScpO1xuICAgICAgdmFyIGdyb3VwID0gdGhpcy5nZXQoJ2dyb3VwJyk7XG5cbiAgICAgIGlmIChhbmltYXRlKSB7XG4gICAgICAgIGdyb3VwLnN0b3BBbmltYXRlKCk7XG4gICAgICB9XG5cbiAgICAgIGdyb3VwWydzaGFwZU1hcCddID0ge307XG4gICAgICB0aGlzLmNsZWFyQ2FjaGUoKTtcbiAgICAgIGdyb3VwLnJlbW92ZSgpO1xuICAgICAgdGhpcy5fY2ZnID0gbnVsbDtcbiAgICAgIHRoaXMuZGVzdHJveWVkID0gdHJ1ZTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIEl0ZW1CYXNlO1xufSgpO1xuXG5leHBvcnQgZGVmYXVsdCBJdGVtQmFzZTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/item.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/node.js":
/*!*************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/node.js ***!
\*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util_math__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/math */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/math.js\");\n/* harmony import */ var _item__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./item */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/item.js\");\n\n\n\n\nvar CACHE_ANCHOR_POINTS = 'anchorPointsCache';\nvar CACHE_BBOX = 'bboxCache';\n\nvar Node =\n/** @class */\nfunction (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(Node, _super);\n\n function Node() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Node.prototype.getNearestPoint = function (points, curPoint) {\n var index = 0;\n var nearestPoint = points[0];\n var minDistance = Object(_util_math__WEBPACK_IMPORTED_MODULE_2__[\"distance\"])(points[0], curPoint);\n\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n var dis = Object(_util_math__WEBPACK_IMPORTED_MODULE_2__[\"distance\"])(point, curPoint);\n\n if (dis < minDistance) {\n nearestPoint = point;\n minDistance = dis;\n index = i;\n }\n }\n\n nearestPoint.anchorIndex = index;\n return nearestPoint;\n };\n\n Node.prototype.getDefaultCfg = function () {\n return {\n type: 'node',\n edges: []\n };\n };\n /**\n * 获取从节点关联的所有边\n */\n\n\n Node.prototype.getEdges = function () {\n return this.get('edges');\n };\n /**\n * 获取所有的入边\n */\n\n\n Node.prototype.getInEdges = function () {\n var self = this;\n return this.get('edges').filter(function (edge) {\n return edge.get('target') === self;\n });\n };\n /**\n * 获取所有的出边\n */\n\n\n Node.prototype.getOutEdges = function () {\n var self = this;\n return this.get('edges').filter(function (edge) {\n return edge.get('source') === self;\n });\n };\n /**\n * 获取节点的邻居节点\n *\n * @returns {INode[]}\n * @memberof Node\n */\n\n\n Node.prototype.getNeighbors = function (type) {\n var _this = this;\n\n var edges = this.get('edges');\n\n if (type === 'target') {\n // 当前节点为 source,它所指向的目标节点\n var neighhborsConverter_1 = function neighhborsConverter_1(edge) {\n return edge.getSource() === _this;\n };\n\n return edges.filter(neighhborsConverter_1).map(function (edge) {\n return edge.getTarget();\n });\n }\n\n if (type === 'source') {\n // 当前节点为 target,它所指向的源节点\n var neighhborsConverter_2 = function neighhborsConverter_2(edge) {\n return edge.getTarget() === _this;\n };\n\n return edges.filter(neighhborsConverter_2).map(function (edge) {\n return edge.getSource();\n });\n } // 若未指定 type ,则返回所有邻居\n\n\n var neighhborsConverter = function neighhborsConverter(edge) {\n return edge.getSource() === _this ? edge.getTarget() : edge.getSource();\n };\n\n return edges.map(neighhborsConverter);\n };\n /**\n * 根据锚点的索引获取连接点\n * @param {Number} index 索引\n */\n\n\n Node.prototype.getLinkPointByAnchor = function (index) {\n var anchorPoints = this.getAnchorPoints();\n return anchorPoints[index];\n };\n /**\n * 获取连接点\n * @param point\n */\n\n\n Node.prototype.getLinkPoint = function (point) {\n var keyShape = this.get('keyShape');\n var type = keyShape.get('type');\n var itemType = this.get('type');\n var centerX;\n var centerY;\n var bbox = this.getBBox();\n\n if (itemType === 'combo') {\n centerX = bbox.centerX || (bbox.maxX + bbox.minX) / 2;\n centerY = bbox.centerY || (bbox.maxY + bbox.minY) / 2;\n } else {\n centerX = bbox.centerX;\n centerY = bbox.centerY;\n }\n\n var anchorPoints = this.getAnchorPoints();\n var intersectPoint;\n\n switch (type) {\n case 'circle':\n intersectPoint = Object(_util_math__WEBPACK_IMPORTED_MODULE_2__[\"getCircleIntersectByPoint\"])({\n x: centerX,\n y: centerY,\n r: bbox.width / 2\n }, point);\n break;\n\n case 'ellipse':\n intersectPoint = Object(_util_math__WEBPACK_IMPORTED_MODULE_2__[\"getEllipseIntersectByPoint\"])({\n x: centerX,\n y: centerY,\n rx: bbox.width / 2,\n ry: bbox.height / 2\n }, point);\n break;\n\n default:\n intersectPoint = Object(_util_math__WEBPACK_IMPORTED_MODULE_2__[\"getRectIntersectByPoint\"])(bbox, point);\n }\n\n var linkPoint = intersectPoint; // 如果存在锚点,则使用交点计算最近的锚点\n\n if (anchorPoints.length) {\n if (!linkPoint) {\n // 如果计算不出交点\n linkPoint = point;\n }\n\n linkPoint = this.getNearestPoint(anchorPoints, linkPoint);\n }\n\n if (!linkPoint) {\n // 如果最终依然没法找到锚点和连接点,直接返回中心点\n linkPoint = {\n x: centerX,\n y: centerY\n };\n }\n\n return linkPoint;\n };\n /**\n * 获取锚点的定义\n * @return {array} anchorPoints\n */\n\n\n Node.prototype.getAnchorPoints = function () {\n var anchorPoints = this.get(CACHE_ANCHOR_POINTS);\n\n if (!anchorPoints) {\n anchorPoints = [];\n var shapeFactory = this.get('shapeFactory');\n var bbox_1 = this.getBBox();\n var model = this.get('model');\n var shapeCfg = this.getShapeCfg(model);\n var type = model.type;\n var points = shapeFactory.getAnchorPoints(type, shapeCfg) || [];\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(points, function (pointArr, index) {\n var point = {\n x: bbox_1.minX + pointArr[0] * bbox_1.width,\n y: bbox_1.minY + pointArr[1] * bbox_1.height,\n anchorIndex: index\n };\n anchorPoints.push(point);\n });\n this.set(CACHE_ANCHOR_POINTS, anchorPoints);\n }\n\n return anchorPoints;\n };\n /**\n * add edge\n * @param edge Edge instance\n */\n\n\n Node.prototype.addEdge = function (edge) {\n this.get('edges').push(edge);\n };\n /**\n * 锁定节点\n */\n\n\n Node.prototype.lock = function () {\n this.set('locked', true);\n };\n /**\n * 解锁锁定的节点\n */\n\n\n Node.prototype.unlock = function () {\n this.set('locked', false);\n };\n\n Node.prototype.hasLocked = function () {\n return this.get('locked');\n };\n /**\n * 移除边\n * @param {Edge} edge 边\n */\n\n\n Node.prototype.removeEdge = function (edge) {\n var edges = this.getEdges();\n var index = edges.indexOf(edge);\n if (index > -1) edges.splice(index, 1);\n };\n\n Node.prototype.clearCache = function () {\n this.set(CACHE_BBOX, null); // 清理缓存的 bbox\n\n this.set(CACHE_ANCHOR_POINTS, null);\n };\n /**\n * 判断更新的种类,move 表示仅移动,bbox 表示大小有变化,style 表示仅与大小无关的参数变化\n * @param cfg 节点数据模型\n */\n\n\n Node.prototype.getUpdateType = function (cfg) {\n var _a, _b, _c, _d, _e;\n\n if (!cfg) return undefined;\n var existX = !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(cfg.x);\n var existY = !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNil\"])(cfg.y);\n var keys = Object.keys(cfg); // 仅有一个字段,包含 x 或者 包含 y\n // 两个字段,同时有 x,同时有 y\n\n if (keys.length === 1 && (existX || existY) || keys.length === 2 && existX && existY) return 'move';\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.x) || Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isNumber\"])(cfg.y) || cfg.type || cfg.anchorPoints || cfg.size || (cfg === null || cfg === void 0 ? void 0 : cfg.style) && (((_a = cfg === null || cfg === void 0 ? void 0 : cfg.style) === null || _a === void 0 ? void 0 : _a.r) || ((_b = cfg === null || cfg === void 0 ? void 0 : cfg.style) === null || _b === void 0 ? void 0 : _b.width) || ((_c = cfg === null || cfg === void 0 ? void 0 : cfg.style) === null || _c === void 0 ? void 0 : _c.height) || ((_d = cfg === null || cfg === void 0 ? void 0 : cfg.style) === null || _d === void 0 ? void 0 : _d.rx) || ((_e = cfg === null || cfg === void 0 ? void 0 : cfg.style) === null || _e === void 0 ? void 0 : _e.ry))) return 'bbox|label';\n var updateLabel = keys.includes('label') || keys.includes('labelCfg');\n return updateLabel ? 'style|label' : 'style';\n };\n\n return Node;\n}(_item__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Node);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy9pdGVtL25vZGUuanM/NjQ4MyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ2lCO0FBQ3FFO0FBQzlGO0FBQzFCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRSx1REFBUzs7QUFFWDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLDJEQUFROztBQUU5QixtQkFBbUIsbUJBQW1CO0FBQ3RDO0FBQ0EsZ0JBQWdCLDJEQUFROztBQUV4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx5QkFBeUIsNEVBQXlCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBLHlCQUF5Qiw2RUFBMEI7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQSx5QkFBeUIsMEVBQXVCO0FBQ2hEOztBQUVBLG1DQUFtQzs7QUFFbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxNQUFNO0FBQ3BCOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLHVEQUFJO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEtBQUs7QUFDbEI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwrQkFBK0I7O0FBRS9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQix3REFBSztBQUN2QixrQkFBa0Isd0RBQUs7QUFDdkIsZ0NBQWdDO0FBQ2hDOztBQUVBO0FBQ0EsUUFBUSwyREFBUSxXQUFXLDJEQUFRO0FBQ25DO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUMsQ0FBQyw2Q0FBSTs7QUFFUyxtRUFBSSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtY29yZUAwLjUuMEBAYW50di9nNi1jb3JlL2VzL2l0ZW0vbm9kZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgZWFjaCwgaXNOaWwsIGlzTnVtYmVyIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyBkaXN0YW5jZSwgZ2V0Q2lyY2xlSW50ZXJzZWN0QnlQb2ludCwgZ2V0RWxsaXBzZUludGVyc2VjdEJ5UG9pbnQsIGdldFJlY3RJbnRlcnNlY3RCeVBvaW50IH0gZnJvbSAnLi4vdXRpbC9tYXRoJztcbmltcG9ydCBJdGVtIGZyb20gJy4vaXRlbSc7XG52YXIgQ0FDSEVfQU5DSE9SX1BPSU5UUyA9ICdhbmNob3JQb2ludHNDYWNoZSc7XG52YXIgQ0FDSEVfQkJPWCA9ICdiYm94Q2FjaGUnO1xuXG52YXIgTm9kZSA9XG4vKiogQGNsYXNzICovXG5mdW5jdGlvbiAoX3N1cGVyKSB7XG4gIF9fZXh0ZW5kcyhOb2RlLCBfc3VwZXIpO1xuXG4gIGZ1bmN0aW9uIE5vZGUoKSB7XG4gICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICB9XG5cbiAgTm9kZS5wcm90b3R5cGUuZ2V0TmVhcmVzdFBvaW50ID0gZnVuY3Rpb24gKHBvaW50cywgY3VyUG9pbnQpIHtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBuZWFyZXN0UG9pbnQgPSBwb2ludHNbMF07XG4gICAgdmFyIG1pbkRpc3RhbmNlID0gZGlzdGFuY2UocG9pbnRzWzBdLCBjdXJQb2ludCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHBvaW50ID0gcG9pbnRzW2ldO1xuICAgICAgdmFyIGRpcyA9IGRpc3RhbmNlKHBvaW50LCBjdXJQb2ludCk7XG5cbiAgICAgIGlmIChkaXMgPCBtaW5EaXN0YW5jZSkge1xuICAgICAgICBuZWFyZXN0UG9pbnQgPSBwb2ludDtcbiAgICAgICAgbWluRGlzdGFuY2UgPSBkaXM7XG4gICAgICAgIGluZGV4ID0gaTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBuZWFyZXN0UG9pbnQuYW5jaG9ySW5kZXggPSBpbmRleDtcbiAgICByZXR1cm4gbmVhcmVzdFBvaW50O1xuICB9O1xuXG4gIE5vZGUucHJvdG90eXBlLmdldERlZmF1bHRDZmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdub2RlJyxcbiAgICAgIGVkZ2VzOiBbXVxuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5bku47oioLngrnlhbPogZTnmoTmiYDmnInovrlcbiAgICovXG5cblxuICBOb2RlLnByb3RvdHlwZS5nZXRFZGdlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ2VkZ2VzJyk7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5bmiYDmnInnmoTlhaXovrlcbiAgICovXG5cblxuICBOb2RlLnByb3RvdHlwZS5nZXRJbkVkZ2VzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICByZXR1cm4gdGhpcy5nZXQoJ2VkZ2VzJykuZmlsdGVyKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICByZXR1cm4gZWRnZS5nZXQoJ3RhcmdldCcpID09PSBzZWxmO1xuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICog6I635Y+W5omA5pyJ55qE5Ye66L65XG4gICAqL1xuXG5cbiAgTm9kZS5wcm90b3R5cGUuZ2V0T3V0RWRnZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHJldHVybiB0aGlzLmdldCgnZWRnZXMnKS5maWx0ZXIoZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIHJldHVybiBlZGdlLmdldCgnc291cmNlJykgPT09IHNlbGY7XG4gICAgfSk7XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5boioLngrnnmoTpgrvlsYXoioLngrlcbiAgICpcbiAgICogQHJldHVybnMge0lOb2RlW119XG4gICAqIEBtZW1iZXJvZiBOb2RlXG4gICAqL1xuXG5cbiAgTm9kZS5wcm90b3R5cGUuZ2V0TmVpZ2hib3JzID0gZnVuY3Rpb24gKHR5cGUpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIGVkZ2VzID0gdGhpcy5nZXQoJ2VkZ2VzJyk7XG5cbiAgICBpZiAodHlwZSA9PT0gJ3RhcmdldCcpIHtcbiAgICAgIC8vIOW9k+WJjeiKgueCueS4uiBzb3VyY2XvvIzlroPmiYDmjIflkJHnmoTnm67moIfoioLngrlcbiAgICAgIHZhciBuZWlnaGhib3JzQ29udmVydGVyXzEgPSBmdW5jdGlvbiBuZWlnaGhib3JzQ29udmVydGVyXzEoZWRnZSkge1xuICAgICAgICByZXR1cm4gZWRnZS5nZXRTb3VyY2UoKSA9PT0gX3RoaXM7XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gZWRnZXMuZmlsdGVyKG5laWdoaGJvcnNDb252ZXJ0ZXJfMSkubWFwKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgIHJldHVybiBlZGdlLmdldFRhcmdldCgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09ICdzb3VyY2UnKSB7XG4gICAgICAvLyDlvZPliY3oioLngrnkuLogdGFyZ2V077yM5a6D5omA5oyH5ZCR55qE5rqQ6IqC54K5XG4gICAgICB2YXIgbmVpZ2hoYm9yc0NvbnZlcnRlcl8yID0gZnVuY3Rpb24gbmVpZ2hoYm9yc0NvbnZlcnRlcl8yKGVkZ2UpIHtcbiAgICAgICAgcmV0dXJuIGVkZ2UuZ2V0VGFyZ2V0KCkgPT09IF90aGlzO1xuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGVkZ2VzLmZpbHRlcihuZWlnaGhib3JzQ29udmVydGVyXzIpLm1hcChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICByZXR1cm4gZWRnZS5nZXRTb3VyY2UoKTtcbiAgICAgIH0pO1xuICAgIH0gLy8g6Iul5pyq5oyH5a6aIHR5cGUg77yM5YiZ6L+U5Zue5omA5pyJ6YK75bGFXG5cblxuICAgIHZhciBuZWlnaGhib3JzQ29udmVydGVyID0gZnVuY3Rpb24gbmVpZ2hoYm9yc0NvbnZlcnRlcihlZGdlKSB7XG4gICAgICByZXR1cm4gZWRnZS5nZXRTb3VyY2UoKSA9PT0gX3RoaXMgPyBlZGdlLmdldFRhcmdldCgpIDogZWRnZS5nZXRTb3VyY2UoKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGVkZ2VzLm1hcChuZWlnaGhib3JzQ29udmVydGVyKTtcbiAgfTtcbiAgLyoqXG4gICAqIOagueaNrumUmueCueeahOe0ouW8leiOt+WPlui/nuaOpeeCuVxuICAgKiBAcGFyYW0gIHtOdW1iZXJ9IGluZGV4IOe0ouW8lVxuICAgKi9cblxuXG4gIE5vZGUucHJvdG90eXBlLmdldExpbmtQb2ludEJ5QW5jaG9yID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgdmFyIGFuY2hvclBvaW50cyA9IHRoaXMuZ2V0QW5jaG9yUG9pbnRzKCk7XG4gICAgcmV0dXJuIGFuY2hvclBvaW50c1tpbmRleF07XG4gIH07XG4gIC8qKlxuICAgKiDojrflj5bov57mjqXngrlcbiAgICogQHBhcmFtIHBvaW50XG4gICAqL1xuXG5cbiAgTm9kZS5wcm90b3R5cGUuZ2V0TGlua1BvaW50ID0gZnVuY3Rpb24gKHBvaW50KSB7XG4gICAgdmFyIGtleVNoYXBlID0gdGhpcy5nZXQoJ2tleVNoYXBlJyk7XG4gICAgdmFyIHR5cGUgPSBrZXlTaGFwZS5nZXQoJ3R5cGUnKTtcbiAgICB2YXIgaXRlbVR5cGUgPSB0aGlzLmdldCgndHlwZScpO1xuICAgIHZhciBjZW50ZXJYO1xuICAgIHZhciBjZW50ZXJZO1xuICAgIHZhciBiYm94ID0gdGhpcy5nZXRCQm94KCk7XG5cbiAgICBpZiAoaXRlbVR5cGUgPT09ICdjb21ibycpIHtcbiAgICAgIGNlbnRlclggPSBiYm94LmNlbnRlclggfHwgKGJib3gubWF4WCArIGJib3gubWluWCkgLyAyO1xuICAgICAgY2VudGVyWSA9IGJib3guY2VudGVyWSB8fCAoYmJveC5tYXhZICsgYmJveC5taW5ZKSAvIDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNlbnRlclggPSBiYm94LmNlbnRlclg7XG4gICAgICBjZW50ZXJZID0gYmJveC5jZW50ZXJZO1xuICAgIH1cblxuICAgIHZhciBhbmNob3JQb2ludHMgPSB0aGlzLmdldEFuY2hvclBvaW50cygpO1xuICAgIHZhciBpbnRlcnNlY3RQb2ludDtcblxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnY2lyY2xlJzpcbiAgICAgICAgaW50ZXJzZWN0UG9pbnQgPSBnZXRDaXJjbGVJbnRlcnNlY3RCeVBvaW50KHtcbiAgICAgICAgICB4OiBjZW50ZXJYLFxuICAgICAgICAgIHk6IGNlbnRlclksXG4gICAgICAgICAgcjogYmJveC53aWR0aCAvIDJcbiAgICAgICAgfSwgcG9pbnQpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnZWxsaXBzZSc6XG4gICAgICAgIGludGVyc2VjdFBvaW50ID0gZ2V0RWxsaXBzZUludGVyc2VjdEJ5UG9pbnQoe1xuICAgICAgICAgIHg6IGNlbnRlclgsXG4gICAgICAgICAgeTogY2VudGVyWSxcbiAgICAgICAgICByeDogYmJveC53aWR0aCAvIDIsXG4gICAgICAgICAgcnk6IGJib3guaGVpZ2h0IC8gMlxuICAgICAgICB9LCBwb2ludCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpbnRlcnNlY3RQb2ludCA9IGdldFJlY3RJbnRlcnNlY3RCeVBvaW50KGJib3gsIHBvaW50KTtcbiAgICB9XG5cbiAgICB2YXIgbGlua1BvaW50ID0gaW50ZXJzZWN0UG9pbnQ7IC8vIOWmguaenOWtmOWcqOmUmueCue+8jOWImeS9v+eUqOS6pOeCueiuoeeul+acgOi/keeahOmUmueCuVxuXG4gICAgaWYgKGFuY2hvclBvaW50cy5sZW5ndGgpIHtcbiAgICAgIGlmICghbGlua1BvaW50KSB7XG4gICAgICAgIC8vIOWmguaenOiuoeeul+S4jeWHuuS6pOeCuVxuICAgICAgICBsaW5rUG9pbnQgPSBwb2ludDtcbiAgICAgIH1cblxuICAgICAgbGlua1BvaW50ID0gdGhpcy5nZXROZWFyZXN0UG9pbnQoYW5jaG9yUG9pbnRzLCBsaW5rUG9pbnQpO1xuICAgIH1cblxuICAgIGlmICghbGlua1BvaW50KSB7XG4gICAgICAvLyDlpoLmnpzmnIDnu4jkvp3nhLbmsqHms5Xmib7liLDplJrngrnlkozov57mjqXngrnvvIznm7TmjqXov5Tlm57kuK3lv4PngrlcbiAgICAgIGxpbmtQb2ludCA9IHtcbiAgICAgICAgeDogY2VudGVyWCxcbiAgICAgICAgeTogY2VudGVyWVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbGlua1BvaW50O1xuICB9O1xuICAvKipcbiAgICog6I635Y+W6ZSa54K555qE5a6a5LmJXG4gICAqIEByZXR1cm4ge2FycmF5fSBhbmNob3JQb2ludHNcbiAgICovXG5cblxuICBOb2RlLnByb3RvdHlwZS5nZXRBbmNob3JQb2ludHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFuY2hvclBvaW50cyA9IHRoaXMuZ2V0KENBQ0hFX0FOQ0hPUl9QT0lOVFMpO1xuXG4gICAgaWYgKCFhbmNob3JQb2ludHMpIHtcbiAgICAgIGFuY2hvclBvaW50cyA9IFtdO1xuICAgICAgdmFyIHNoYXBlRmFjdG9yeSA9IHRoaXMuZ2V0KCdzaGFwZUZhY3RvcnknKTtcbiAgICAgIHZhciBiYm94XzEgPSB0aGlzLmdldEJCb3goKTtcbiAgICAgIHZhciBtb2RlbCA9IHRoaXMuZ2V0KCdtb2RlbCcpO1xuICAgICAgdmFyIHNoYXBlQ2ZnID0gdGhpcy5nZXRTaGFwZUNmZyhtb2RlbCk7XG4gICAgICB2YXIgdHlwZSA9IG1vZGVsLnR5cGU7XG4gICAgICB2YXIgcG9pbnRzID0gc2hhcGVGYWN0b3J5LmdldEFuY2hvclBvaW50cyh0eXBlLCBzaGFwZUNmZykgfHwgW107XG4gICAgICBlYWNoKHBvaW50cywgZnVuY3Rpb24gKHBvaW50QXJyLCBpbmRleCkge1xuICAgICAgICB2YXIgcG9pbnQgPSB7XG4gICAgICAgICAgeDogYmJveF8xLm1pblggKyBwb2ludEFyclswXSAqIGJib3hfMS53aWR0aCxcbiAgICAgICAgICB5OiBiYm94XzEubWluWSArIHBvaW50QXJyWzFdICogYmJveF8xLmhlaWdodCxcbiAgICAgICAgICBhbmNob3JJbmRleDogaW5kZXhcbiAgICAgICAgfTtcbiAgICAgICAgYW5jaG9yUG9pbnRzLnB1c2gocG9pbnQpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnNldChDQUNIRV9BTkNIT1JfUE9JTlRTLCBhbmNob3JQb2ludHMpO1xuICAgIH1cblxuICAgIHJldHVybiBhbmNob3JQb2ludHM7XG4gIH07XG4gIC8qKlxuICAgKiBhZGQgZWRnZVxuICAgKiBAcGFyYW0gZWRnZSBFZGdlIGluc3RhbmNlXG4gICAqL1xuXG5cbiAgTm9kZS5wcm90b3R5cGUuYWRkRWRnZSA9IGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgdGhpcy5nZXQoJ2VkZ2VzJykucHVzaChlZGdlKTtcbiAgfTtcbiAgLyoqXG4gICAqIOmUgeWumuiKgueCuVxuICAgKi9cblxuXG4gIE5vZGUucHJvdG90eXBlLmxvY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5zZXQoJ2xvY2tlZCcsIHRydWUpO1xuICB9O1xuICAvKipcbiAgICog6Kej6ZSB6ZSB5a6a55qE6IqC54K5XG4gICAqL1xuXG5cbiAgTm9kZS5wcm90b3R5cGUudW5sb2NrID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuc2V0KCdsb2NrZWQnLCBmYWxzZSk7XG4gIH07XG5cbiAgTm9kZS5wcm90b3R5cGUuaGFzTG9ja2VkID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmdldCgnbG9ja2VkJyk7XG4gIH07XG4gIC8qKlxuICAgKiDnp7vpmaTovrlcbiAgICogQHBhcmFtIHtFZGdlfSBlZGdlIOi+uVxuICAgKi9cblxuXG4gIE5vZGUucHJvdG90eXBlLnJlbW92ZUVkZ2UgPSBmdW5jdGlvbiAoZWRnZSkge1xuICAgIHZhciBlZGdlcyA9IHRoaXMuZ2V0RWRnZXMoKTtcbiAgICB2YXIgaW5kZXggPSBlZGdlcy5pbmRleE9mKGVkZ2UpO1xuICAgIGlmIChpbmRleCA+IC0xKSBlZGdlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICB9O1xuXG4gIE5vZGUucHJvdG90eXBlLmNsZWFyQ2FjaGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5zZXQoQ0FDSEVfQkJPWCwgbnVsbCk7IC8vIOa4heeQhue8k+WtmOeahCBiYm94XG5cbiAgICB0aGlzLnNldChDQUNIRV9BTkNIT1JfUE9JTlRTLCBudWxsKTtcbiAgfTtcbiAgLyoqXG4gICAqIOWIpOaWreabtOaWsOeahOenjeexu++8jG1vdmUg6KGo56S65LuF56e75Yqo77yMYmJveCDooajnpLrlpKflsI/mnInlj5jljJbvvIxzdHlsZSDooajnpLrku4XkuI7lpKflsI/ml6DlhbPnmoTlj4LmlbDlj5jljJZcbiAgICogQHBhcmFtIGNmZyDoioLngrnmlbDmja7mqKHlnotcbiAgICovXG5cblxuICBOb2RlLnByb3RvdHlwZS5nZXRVcGRhdGVUeXBlID0gZnVuY3Rpb24gKGNmZykge1xuICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2U7XG5cbiAgICBpZiAoIWNmZykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB2YXIgZXhpc3RYID0gIWlzTmlsKGNmZy54KTtcbiAgICB2YXIgZXhpc3RZID0gIWlzTmlsKGNmZy55KTtcbiAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGNmZyk7IC8vIOS7heacieS4gOS4quWtl+aute+8jOWMheWQqyB4IOaIluiAhSDljIXlkKsgeVxuICAgIC8vIOS4pOS4quWtl+aute+8jOWQjOaXtuaciSB477yM5ZCM5pe25pyJIHlcblxuICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMSAmJiAoZXhpc3RYIHx8IGV4aXN0WSkgfHwga2V5cy5sZW5ndGggPT09IDIgJiYgZXhpc3RYICYmIGV4aXN0WSkgcmV0dXJuICdtb3ZlJztcbiAgICBpZiAoaXNOdW1iZXIoY2ZnLngpIHx8IGlzTnVtYmVyKGNmZy55KSB8fCBjZmcudHlwZSB8fCBjZmcuYW5jaG9yUG9pbnRzIHx8IGNmZy5zaXplIHx8IChjZmcgPT09IG51bGwgfHwgY2ZnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjZmcuc3R5bGUpICYmICgoKF9hID0gY2ZnID09PSBudWxsIHx8IGNmZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2ZnLnN0eWxlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucikgfHwgKChfYiA9IGNmZyA9PT0gbnVsbCB8fCBjZmcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNmZy5zdHlsZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLndpZHRoKSB8fCAoKF9jID0gY2ZnID09PSBudWxsIHx8IGNmZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2ZnLnN0eWxlKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MuaGVpZ2h0KSB8fCAoKF9kID0gY2ZnID09PSBudWxsIHx8IGNmZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2ZnLnN0eWxlKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2QucngpIHx8ICgoX2UgPSBjZmcgPT09IG51bGwgfHwgY2ZnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjZmcuc3R5bGUpID09PSBudWxsIHx8IF9lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZS5yeSkpKSByZXR1cm4gJ2Jib3h8bGFiZWwnO1xuICAgIHZhciB1cGRhdGVMYWJlbCA9IGtleXMuaW5jbHVkZXMoJ2xhYmVsJykgfHwga2V5cy5pbmNsdWRlcygnbGFiZWxDZmcnKTtcbiAgICByZXR1cm4gdXBkYXRlTGFiZWwgPyAnc3R5bGV8bGFiZWwnIDogJ3N0eWxlJztcbiAgfTtcblxuICByZXR1cm4gTm9kZTtcbn0oSXRlbSk7XG5cbmV4cG9ydCBkZWZhdWx0IE5vZGU7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/item/node.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/types/index.js":
/*!***************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/types/index.js ***!
\***************************************************************************/
/*! exports provided: G6GraphEvent, G6Event */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"G6Event\", function() { return G6Event; });\n/* harmony import */ var _interface__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../interface */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"G6GraphEvent\", function() { return _interface__WEBPACK_IMPORTED_MODULE_0__[\"G6GraphEvent\"]; });\n\n // Behavior type file\n\nvar G6Event;\n\n(function (G6Event) {\n // common events\n G6Event[\"CLICK\"] = \"click\";\n G6Event[\"DBLCLICK\"] = \"dblclick\";\n G6Event[\"MOUSEDOWN\"] = \"mousedown\";\n G6Event[\"MOUDEUP\"] = \"mouseup\";\n G6Event[\"CONTEXTMENU\"] = \"contextmenu\";\n G6Event[\"MOUSEENTER\"] = \"mouseenter\";\n G6Event[\"MOUSEOUT\"] = \"mouseout\";\n G6Event[\"MOUSEOVER\"] = \"mouseover\";\n G6Event[\"MOUSEMOVE\"] = \"mousemove\";\n G6Event[\"MOUSELEAVE\"] = \"mouseleave\";\n G6Event[\"DRAGSTART\"] = \"dragstart\";\n G6Event[\"DRAGEND\"] = \"dragend\";\n G6Event[\"DRAG\"] = \"drag\";\n G6Event[\"DRAGENTER\"] = \"dragenter\";\n G6Event[\"DRAGLEAVE\"] = \"dragleave\";\n G6Event[\"DRAGOVER\"] = \"dragover\";\n G6Event[\"DRAGOUT\"] = \"dragout\";\n G6Event[\"DDROP\"] = \"drop\";\n G6Event[\"KEYUP\"] = \"keyup\";\n G6Event[\"KEYDOWN\"] = \"keydown\";\n G6Event[\"WHEEL\"] = \"wheel\";\n G6Event[\"FOCUS\"] = \"focus\";\n G6Event[\"BLUR\"] = \"blur\"; // touch events\n\n G6Event[\"TOUCHSTART\"] = \"touchstart\";\n G6Event[\"TOUCHMOVE\"] = \"touchmove\";\n G6Event[\"TOUCHEND\"] = \"touchend\";\n G6Event[\"CANVAS_TOUCHSTART\"] = \"canvas:touchstart\";\n G6Event[\"CANVAS_TOUCHMOVE\"] = \"canvas:touchmove\";\n G6Event[\"CANVAS_TOUCHEND\"] = \"canvas:touchend\";\n G6Event[\"NODE_TOUCHSTART\"] = \"node:touchstart\";\n G6Event[\"NODE_TOUCHMOVE\"] = \"node:touchmove\";\n G6Event[\"NODE_TOUCHEND\"] = \"node:touchend\";\n G6Event[\"COMBO_TOUCHSTART\"] = \"combo:touchstart\";\n G6Event[\"COMBO_TOUCHMOVE\"] = \"combo:touchmove\";\n G6Event[\"COMBO_TOUCHEND\"] = \"combo:touchend\";\n G6Event[\"EDGE_TOUCHSTART\"] = \"edge:touchstart\";\n G6Event[\"EDGE_TOUCHMOVE\"] = \"edge:touchmove\";\n G6Event[\"EDGE_TOUCHEND\"] = \"edge:touchend\"; // node events\n\n G6Event[\"NODE_CONTEXTMENU\"] = \"node:contextmenu\";\n G6Event[\"NODE_CLICK\"] = \"node:click\";\n G6Event[\"NODE_DBLCLICK\"] = \"node:dblclick\";\n G6Event[\"NODE_MOUSEDOWN\"] = \"node:mousedown\";\n G6Event[\"NODE_MOUSEUP\"] = \"node:mouseup\";\n G6Event[\"NODE_MOUSEENTER\"] = \"node:mouseenter\";\n G6Event[\"NODE_MOUSELEAVE\"] = \"node:mouseleave\";\n G6Event[\"NODE_MOUSEMOVE\"] = \"node:mousemove\";\n G6Event[\"NODE_MOUSEOUT\"] = \"node:mouseout\";\n G6Event[\"NODE_MOUSEOVER\"] = \"node:mouseover\";\n G6Event[\"NODE_DROP\"] = \"node:drop\";\n G6Event[\"NODE_DRAGOVER\"] = \"node:dragover\";\n G6Event[\"NODE_DRAGENTER\"] = \"node:dragenter\";\n G6Event[\"NODE_DRAGLEAVE\"] = \"node:dragleave\";\n G6Event[\"NODE_DRAGSTART\"] = \"node:dragstart\";\n G6Event[\"NODE_DRAG\"] = \"node:drag\";\n G6Event[\"NODE_DRAGEND\"] = \"node:dragend\";\n G6Event[\"NODE_TAP\"] = \"node:tap\";\n G6Event[\"NODE_PANSTART\"] = \"node:panstart\";\n G6Event[\"NODE_PANMOVE\"] = \"node:panmove\";\n G6Event[\"NODE_PANEND\"] = \"node:panend\"; // combo, extends from nodes\n\n G6Event[\"COMBO_CONTEXTMENU\"] = \"combo:contextmenu\";\n G6Event[\"COMBO_CLICK\"] = \"combo:click\";\n G6Event[\"COMBO_DBLCLICK\"] = \"combo:dblclick\";\n G6Event[\"COMBO_MOUSEDOWN\"] = \"combo:mousedown\";\n G6Event[\"COMBO_MOUSEUP\"] = \"combo:mouseup\";\n G6Event[\"COMBO_MOUSEENTER\"] = \"combo:mouseenter\";\n G6Event[\"COMBO_MOUSELEAVE\"] = \"combo:mouseleave\";\n G6Event[\"COMBO_MOUSEMOVE\"] = \"combo:mousemove\";\n G6Event[\"COMBO_MOUSEOUT\"] = \"combo:mouseout\";\n G6Event[\"COMBO_MOUSEOVER\"] = \"combo:mouseover\";\n G6Event[\"COMBO_DROP\"] = \"combo:drop\";\n G6Event[\"COMBO_DRAGOVER\"] = \"combo:dragover\";\n G6Event[\"COMBO_DRAGENTER\"] = \"combo:dragenter\";\n G6Event[\"COMBO_DRAGLEAVE\"] = \"combo:dragleave\";\n G6Event[\"COMBO_DRAGSTART\"] = \"combo:dragstart\";\n G6Event[\"COMBO_DRAG\"] = \"combo:drag\";\n G6Event[\"COMBO_DRAGEND\"] = \"combo:dragend\";\n G6Event[\"COMBO_TAP\"] = \"combo:tap\";\n G6Event[\"COMBO_PANSTART\"] = \"combo:panstart\";\n G6Event[\"COMBO_PANMOVE\"] = \"combo:panmove\";\n G6Event[\"COMBO_PANEND\"] = \"combo:panend\"; // edge events\n\n G6Event[\"EDGE_CONTEXTMENU\"] = \"edge:contextmenu\";\n G6Event[\"EDGE_CLICK\"] = \"edge:click\";\n G6Event[\"EDGE_DBLCLICK\"] = \"edge:dblclick\";\n G6Event[\"EDGE_MOUSEDOWN\"] = \"edge:mousedown\";\n G6Event[\"EDGE_MOUSEUP\"] = \"edge:mouseup\";\n G6Event[\"EDGE_MOUSEENTER\"] = \"edge:mouseenter\";\n G6Event[\"EDGE_MOUSELEAVE\"] = \"edge:mouseleave\";\n G6Event[\"EDGE_MOUSEMOVE\"] = \"edge:mousemove\";\n G6Event[\"EDGE_MOUSEOUT\"] = \"edge:mouseout\";\n G6Event[\"EDGE_MOUSEOVER\"] = \"edge:mouseover\";\n G6Event[\"EDGE_DROP\"] = \"edge:drop\";\n G6Event[\"EDGE_DRAGOVER\"] = \"edge:dragover\";\n G6Event[\"EDGE_DRAGENTER\"] = \"edge:dragenter\";\n G6Event[\"EDGE_DRAGLEAVE\"] = \"edge:dragleave\"; // canvas events\n\n G6Event[\"CANVAS_CONTEXTMENU\"] = \"canvas:contextmenu\";\n G6Event[\"CANVAS_CLICK\"] = \"canvas:click\";\n G6Event[\"CANVAS_DBLCLICK\"] = \"canvas:dblclick\";\n G6Event[\"CANVAS_MOUSEDOWN\"] = \"canvas:mousedown\";\n G6Event[\"CANVAS_MOUSEUP\"] = \"canvas:mouseup\";\n G6Event[\"CANVAS_MOUSEENTER\"] = \"canvas:mouseenter\";\n G6Event[\"CANVAS_MOUSELEAVE\"] = \"canvas:mouseleave\";\n G6Event[\"CANVAS_MOUSEMOVE\"] = \"canvas:mousemove\";\n G6Event[\"CANVAS_MOUSEOUT\"] = \"canvas:mouseout\";\n G6Event[\"CANVAS_MOUSEOVER\"] = \"canvas:mouseover\";\n G6Event[\"CANVAS_DROP\"] = \"canvas:drop\";\n G6Event[\"CANVAS_DRAGENTER\"] = \"canvas:dragenter\";\n G6Event[\"CANVAS_DRAGLEAVE\"] = \"canvas:dragleave\";\n G6Event[\"CANVAS_DRAGSTART\"] = \"canvas:dragstart\";\n G6Event[\"CANVAS_DRAG\"] = \"canvas:drag\";\n G6Event[\"CANVAS_DRAGEND\"] = \"canvas:dragend\";\n G6Event[\"CANVAS_TAP\"] = \"canvas:tap\";\n G6Event[\"CANVAS_PANSTART\"] = \"canvas:panstart\";\n G6Event[\"CANVAS_PANMOVE\"] = \"canvas:panmove\";\n G6Event[\"CANVAS_PANEND\"] = \"canvas:panend\"; // timing events\n\n G6Event[\"BEFORERENDER\"] = \"beforerender\";\n G6Event[\"AFTERRENDER\"] = \"afterrender\";\n G6Event[\"BEFOREADDITEM\"] = \"beforeadditem\";\n G6Event[\"AFTERADDITEM\"] = \"afteradditem\";\n G6Event[\"BEFOREREMOVEITEM\"] = \"beforeremoveitem\";\n G6Event[\"AFTERREMOVEITEM\"] = \"afterremoveitem\";\n G6Event[\"BEFOREUPDATEITEM\"] = \"beforeupdateitem\";\n G6Event[\"AFTERUPDATEITEM\"] = \"afterupdateitem\";\n G6Event[\"BEFOREITEMVISIBILITYCHANGE\"] = \"beforeitemvisibilitychange\";\n G6Event[\"AFTERITEMVISIBILITYCHANGE\"] = \"afteritemvisibilitychange\";\n G6Event[\"BEFOREITEMSTATECHANGE\"] = \"beforeitemstatechange\";\n G6Event[\"AFTERITEMSTATECHANGE\"] = \"afteritemstatechange\";\n G6Event[\"BEFOREITEMREFRESH\"] = \"beforeitemrefresh\";\n G6Event[\"AFTERITEMREFRESH\"] = \"afteritemrefresh\";\n G6Event[\"BEFOREITEMSTATESCLEAR\"] = \"beforeitemstatesclear\";\n G6Event[\"AFTERITEMSTATESCLEAR\"] = \"afteritemstatesclear\";\n G6Event[\"BEFOREMODECHANGE\"] = \"beforemodechange\";\n G6Event[\"AFTERMODECHANGE\"] = \"aftermodechange\";\n G6Event[\"BEFORELAYOUT\"] = \"beforelayout\";\n G6Event[\"AFTERLAYOUT\"] = \"afterlayout\";\n G6Event[\"BEFORECREATEEDGE\"] = \"beforecreateedge\";\n G6Event[\"AFTERCREATEEDGE\"] = \"aftercreateedge\";\n G6Event[\"BEFOREGRAPHREFRESHPOSITION\"] = \"beforegraphrefreshposition\";\n G6Event[\"AFTERGRAPHREFRESHPOSITION\"] = \"aftergraphrefreshposition\";\n G6Event[\"BEFOREGRAPHREFRESH\"] = \"beforegraphrefresh\";\n G6Event[\"AFTERGRAPHREFRESH\"] = \"aftergraphrefresh\";\n G6Event[\"BEFOREANIMATE\"] = \"beforeanimate\";\n G6Event[\"AFTERANIMATE\"] = \"afteranimate\";\n G6Event[\"BEFOREPAINT\"] = \"beforepaint\";\n G6Event[\"AFTERPAINT\"] = \"afterpaint\";\n G6Event[\"BEFORECOLLAPSEEXPANDCOMBO\"] = \"beforecollapseexpandcombo\";\n G6Event[\"AFTERCOLLAPSEEXPANDCOMBO\"] = \"aftercollapseexpandcombo\";\n G6Event[\"GRAPHSTATECHANGE\"] = \"graphstatechange\";\n G6Event[\"AFTERACTIVATERELATIONS\"] = \"afteractivaterelations\";\n G6Event[\"NODESELECTCHANGE\"] = \"nodeselectchange\";\n G6Event[\"TOOLTIPCHANGE\"] = \"tooltipchange\";\n G6Event[\"WHEELZOOM\"] = \"wheelzoom\";\n G6Event[\"VIEWPORTCHANGE\"] = \"viewportchange\";\n G6Event[\"DRAGNODEEND\"] = \"dragnodeend\";\n G6Event[\"STACKCHANGE\"] = \"stackchange\"; // Mobile event support\n\n G6Event[\"TAP\"] = \"tap\";\n G6Event[\"PINCHSTART\"] = \"pinchstart\";\n G6Event[\"PINCHMOVE\"] = \"pinchmove\";\n G6Event[\"PANSTART\"] = \"panstart\";\n G6Event[\"PANMOVE\"] = \"panmove\";\n G6Event[\"PANEND\"] = \"panend\";\n})(G6Event || (G6Event = {}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy90eXBlcy9pbmRleC5qcz9iYzFjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkI7O0FBRXRCOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjs7QUFFM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2Qzs7QUFFN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5Qzs7QUFFekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQzs7QUFFM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0M7O0FBRS9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDOztBQUU3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7O0FBRXpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsMEJBQTBCIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1jb3JlQDAuNS4wQEBhbnR2L2c2LWNvcmUvZXMvdHlwZXMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuLi9pbnRlcmZhY2UnOyAvLyBCZWhhdmlvciB0eXBlIGZpbGVcblxuZXhwb3J0IHZhciBHNkV2ZW50O1xuXG4oZnVuY3Rpb24gKEc2RXZlbnQpIHtcbiAgLy8gY29tbW9uIGV2ZW50c1xuICBHNkV2ZW50W1wiQ0xJQ0tcIl0gPSBcImNsaWNrXCI7XG4gIEc2RXZlbnRbXCJEQkxDTElDS1wiXSA9IFwiZGJsY2xpY2tcIjtcbiAgRzZFdmVudFtcIk1PVVNFRE9XTlwiXSA9IFwibW91c2Vkb3duXCI7XG4gIEc2RXZlbnRbXCJNT1VERVVQXCJdID0gXCJtb3VzZXVwXCI7XG4gIEc2RXZlbnRbXCJDT05URVhUTUVOVVwiXSA9IFwiY29udGV4dG1lbnVcIjtcbiAgRzZFdmVudFtcIk1PVVNFRU5URVJcIl0gPSBcIm1vdXNlZW50ZXJcIjtcbiAgRzZFdmVudFtcIk1PVVNFT1VUXCJdID0gXCJtb3VzZW91dFwiO1xuICBHNkV2ZW50W1wiTU9VU0VPVkVSXCJdID0gXCJtb3VzZW92ZXJcIjtcbiAgRzZFdmVudFtcIk1PVVNFTU9WRVwiXSA9IFwibW91c2Vtb3ZlXCI7XG4gIEc2RXZlbnRbXCJNT1VTRUxFQVZFXCJdID0gXCJtb3VzZWxlYXZlXCI7XG4gIEc2RXZlbnRbXCJEUkFHU1RBUlRcIl0gPSBcImRyYWdzdGFydFwiO1xuICBHNkV2ZW50W1wiRFJBR0VORFwiXSA9IFwiZHJhZ2VuZFwiO1xuICBHNkV2ZW50W1wiRFJBR1wiXSA9IFwiZHJhZ1wiO1xuICBHNkV2ZW50W1wiRFJBR0VOVEVSXCJdID0gXCJkcmFnZW50ZXJcIjtcbiAgRzZFdmVudFtcIkRSQUdMRUFWRVwiXSA9IFwiZHJhZ2xlYXZlXCI7XG4gIEc2RXZlbnRbXCJEUkFHT1ZFUlwiXSA9IFwiZHJhZ292ZXJcIjtcbiAgRzZFdmVudFtcIkRSQUdPVVRcIl0gPSBcImRyYWdvdXRcIjtcbiAgRzZFdmVudFtcIkREUk9QXCJdID0gXCJkcm9wXCI7XG4gIEc2RXZlbnRbXCJLRVlVUFwiXSA9IFwia2V5dXBcIjtcbiAgRzZFdmVudFtcIktFWURPV05cIl0gPSBcImtleWRvd25cIjtcbiAgRzZFdmVudFtcIldIRUVMXCJdID0gXCJ3aGVlbFwiO1xuICBHNkV2ZW50W1wiRk9DVVNcIl0gPSBcImZvY3VzXCI7XG4gIEc2RXZlbnRbXCJCTFVSXCJdID0gXCJibHVyXCI7IC8vIHRvdWNoIGV2ZW50c1xuXG4gIEc2RXZlbnRbXCJUT1VDSFNUQVJUXCJdID0gXCJ0b3VjaHN0YXJ0XCI7XG4gIEc2RXZlbnRbXCJUT1VDSE1PVkVcIl0gPSBcInRvdWNobW92ZVwiO1xuICBHNkV2ZW50W1wiVE9VQ0hFTkRcIl0gPSBcInRvdWNoZW5kXCI7XG4gIEc2RXZlbnRbXCJDQU5WQVNfVE9VQ0hTVEFSVFwiXSA9IFwiY2FudmFzOnRvdWNoc3RhcnRcIjtcbiAgRzZFdmVudFtcIkNBTlZBU19UT1VDSE1PVkVcIl0gPSBcImNhbnZhczp0b3VjaG1vdmVcIjtcbiAgRzZFdmVudFtcIkNBTlZBU19UT1VDSEVORFwiXSA9IFwiY2FudmFzOnRvdWNoZW5kXCI7XG4gIEc2RXZlbnRbXCJOT0RFX1RPVUNIU1RBUlRcIl0gPSBcIm5vZGU6dG91Y2hzdGFydFwiO1xuICBHNkV2ZW50W1wiTk9ERV9UT1VDSE1PVkVcIl0gPSBcIm5vZGU6dG91Y2htb3ZlXCI7XG4gIEc2RXZlbnRbXCJOT0RFX1RPVUNIRU5EXCJdID0gXCJub2RlOnRvdWNoZW5kXCI7XG4gIEc2RXZlbnRbXCJDT01CT19UT1VDSFNUQVJUXCJdID0gXCJjb21ibzp0b3VjaHN0YXJ0XCI7XG4gIEc2RXZlbnRbXCJDT01CT19UT1VDSE1PVkVcIl0gPSBcImNvbWJvOnRvdWNobW92ZVwiO1xuICBHNkV2ZW50W1wiQ09NQk9fVE9VQ0hFTkRcIl0gPSBcImNvbWJvOnRvdWNoZW5kXCI7XG4gIEc2RXZlbnRbXCJFREdFX1RPVUNIU1RBUlRcIl0gPSBcImVkZ2U6dG91Y2hzdGFydFwiO1xuICBHNkV2ZW50W1wiRURHRV9UT1VDSE1PVkVcIl0gPSBcImVkZ2U6dG91Y2htb3ZlXCI7XG4gIEc2RXZlbnRbXCJFREdFX1RPVUNIRU5EXCJdID0gXCJlZGdlOnRvdWNoZW5kXCI7IC8vIG5vZGUgZXZlbnRzXG5cbiAgRzZFdmVudFtcIk5PREVfQ09OVEVYVE1FTlVcIl0gPSBcIm5vZGU6Y29udGV4dG1lbnVcIjtcbiAgRzZFdmVudFtcIk5PREVfQ0xJQ0tcIl0gPSBcIm5vZGU6Y2xpY2tcIjtcbiAgRzZFdmVudFtcIk5PREVfREJMQ0xJQ0tcIl0gPSBcIm5vZGU6ZGJsY2xpY2tcIjtcbiAgRzZFdmVudFtcIk5PREVfTU9VU0VET1dOXCJdID0gXCJub2RlOm1vdXNlZG93blwiO1xuICBHNkV2ZW50W1wiTk9ERV9NT1VTRVVQXCJdID0gXCJub2RlOm1vdXNldXBcIjtcbiAgRzZFdmVudFtcIk5PREVfTU9VU0VFTlRFUlwiXSA9IFwibm9kZTptb3VzZWVudGVyXCI7XG4gIEc2RXZlbnRbXCJOT0RFX01PVVNFTEVBVkVcIl0gPSBcIm5vZGU6bW91c2VsZWF2ZVwiO1xuICBHNkV2ZW50W1wiTk9ERV9NT1VTRU1PVkVcIl0gPSBcIm5vZGU6bW91c2Vtb3ZlXCI7XG4gIEc2RXZlbnRbXCJOT0RFX01PVVNFT1VUXCJdID0gXCJub2RlOm1vdXNlb3V0XCI7XG4gIEc2RXZlbnRbXCJOT0RFX01PVVNFT1ZFUlwiXSA9IFwibm9kZTptb3VzZW92ZXJcIjtcbiAgRzZFdmVudFtcIk5PREVfRFJPUFwiXSA9IFwibm9kZTpkcm9wXCI7XG4gIEc2RXZlbnRbXCJOT0RFX0RSQUdPVkVSXCJdID0gXCJub2RlOmRyYWdvdmVyXCI7XG4gIEc2RXZlbnRbXCJOT0RFX0RSQUdFTlRFUlwiXSA9IFwibm9kZTpkcmFnZW50ZXJcIjtcbiAgRzZFdmVudFtcIk5PREVfRFJBR0xFQVZFXCJdID0gXCJub2RlOmRyYWdsZWF2ZVwiO1xuICBHNkV2ZW50W1wiTk9ERV9EUkFHU1RBUlRcIl0gPSBcIm5vZGU6ZHJhZ3N0YXJ0XCI7XG4gIEc2RXZlbnRbXCJOT0RFX0RSQUdcIl0gPSBcIm5vZGU6ZHJhZ1wiO1xuICBHNkV2ZW50W1wiTk9ERV9EUkFHRU5EXCJdID0gXCJub2RlOmRyYWdlbmRcIjtcbiAgRzZFdmVudFtcIk5PREVfVEFQXCJdID0gXCJub2RlOnRhcFwiO1xuICBHNkV2ZW50W1wiTk9ERV9QQU5TVEFSVFwiXSA9IFwibm9kZTpwYW5zdGFydFwiO1xuICBHNkV2ZW50W1wiTk9ERV9QQU5NT1ZFXCJdID0gXCJub2RlOnBhbm1vdmVcIjtcbiAgRzZFdmVudFtcIk5PREVfUEFORU5EXCJdID0gXCJub2RlOnBhbmVuZFwiOyAvLyBjb21ibywgZXh0ZW5kcyBmcm9tIG5vZGVzXG5cbiAgRzZFdmVudFtcIkNPTUJPX0NPTlRFWFRNRU5VXCJdID0gXCJjb21ibzpjb250ZXh0bWVudVwiO1xuICBHNkV2ZW50W1wiQ09NQk9fQ0xJQ0tcIl0gPSBcImNvbWJvOmNsaWNrXCI7XG4gIEc2RXZlbnRbXCJDT01CT19EQkxDTElDS1wiXSA9IFwiY29tYm86ZGJsY2xpY2tcIjtcbiAgRzZFdmVudFtcIkNPTUJPX01PVVNFRE9XTlwiXSA9IFwiY29tYm86bW91c2Vkb3duXCI7XG4gIEc2RXZlbnRbXCJDT01CT19NT1VTRVVQXCJdID0gXCJjb21ibzptb3VzZXVwXCI7XG4gIEc2RXZlbnRbXCJDT01CT19NT1VTRUVOVEVSXCJdID0gXCJjb21ibzptb3VzZWVudGVyXCI7XG4gIEc2RXZlbnRbXCJDT01CT19NT1VTRUxFQVZFXCJdID0gXCJjb21ibzptb3VzZWxlYXZlXCI7XG4gIEc2RXZlbnRbXCJDT01CT19NT1VTRU1PVkVcIl0gPSBcImNvbWJvOm1vdXNlbW92ZVwiO1xuICBHNkV2ZW50W1wiQ09NQk9fTU9VU0VPVVRcIl0gPSBcImNvbWJvOm1vdXNlb3V0XCI7XG4gIEc2RXZlbnRbXCJDT01CT19NT1VTRU9WRVJcIl0gPSBcImNvbWJvOm1vdXNlb3ZlclwiO1xuICBHNkV2ZW50W1wiQ09NQk9fRFJPUFwiXSA9IFwiY29tYm86ZHJvcFwiO1xuICBHNkV2ZW50W1wiQ09NQk9fRFJBR09WRVJcIl0gPSBcImNvbWJvOmRyYWdvdmVyXCI7XG4gIEc2RXZlbnRbXCJDT01CT19EUkFHRU5URVJcIl0gPSBcImNvbWJvOmRyYWdlbnRlclwiO1xuICBHNkV2ZW50W1wiQ09NQk9fRFJBR0xFQVZFXCJdID0gXCJjb21ibzpkcmFnbGVhdmVcIjtcbiAgRzZFdmVudFtcIkNPTUJPX0RSQUdTVEFSVFwiXSA9IFwiY29tYm86ZHJhZ3N0YXJ0XCI7XG4gIEc2RXZlbnRbXCJDT01CT19EUkFHXCJdID0gXCJjb21ibzpkcmFnXCI7XG4gIEc2RXZlbnRbXCJDT01CT19EUkFHRU5EXCJdID0gXCJjb21ibzpkcmFnZW5kXCI7XG4gIEc2RXZlbnRbXCJDT01CT19UQVBcIl0gPSBcImNvbWJvOnRhcFwiO1xuICBHNkV2ZW50W1wiQ09NQk9fUEFOU1RBUlRcIl0gPSBcImNvbWJvOnBhbnN0YXJ0XCI7XG4gIEc2RXZlbnRbXCJDT01CT19QQU5NT1ZFXCJdID0gXCJjb21ibzpwYW5tb3ZlXCI7XG4gIEc2RXZlbnRbXCJDT01CT19QQU5FTkRcIl0gPSBcImNvbWJvOnBhbmVuZFwiOyAvLyBlZGdlIGV2ZW50c1xuXG4gIEc2RXZlbnRbXCJFREdFX0NPTlRFWFRNRU5VXCJdID0gXCJlZGdlOmNvbnRleHRtZW51XCI7XG4gIEc2RXZlbnRbXCJFREdFX0NMSUNLXCJdID0gXCJlZGdlOmNsaWNrXCI7XG4gIEc2RXZlbnRbXCJFREdFX0RCTENMSUNLXCJdID0gXCJlZGdlOmRibGNsaWNrXCI7XG4gIEc2RXZlbnRbXCJFREdFX01PVVNFRE9XTlwiXSA9IFwiZWRnZTptb3VzZWRvd25cIjtcbiAgRzZFdmVudFtcIkVER0VfTU9VU0VVUFwiXSA9IFwiZWRnZTptb3VzZXVwXCI7XG4gIEc2RXZlbnRbXCJFREdFX01PVVNFRU5URVJcIl0gPSBcImVkZ2U6bW91c2VlbnRlclwiO1xuICBHNkV2ZW50W1wiRURHRV9NT1VTRUxFQVZFXCJdID0gXCJlZGdlOm1vdXNlbGVhdmVcIjtcbiAgRzZFdmVudFtcIkVER0VfTU9VU0VNT1ZFXCJdID0gXCJlZGdlOm1vdXNlbW92ZVwiO1xuICBHNkV2ZW50W1wiRURHRV9NT1VTRU9VVFwiXSA9IFwiZWRnZTptb3VzZW91dFwiO1xuICBHNkV2ZW50W1wiRURHRV9NT1VTRU9WRVJcIl0gPSBcImVkZ2U6bW91c2VvdmVyXCI7XG4gIEc2RXZlbnRbXCJFREdFX0RST1BcIl0gPSBcImVkZ2U6ZHJvcFwiO1xuICBHNkV2ZW50W1wiRURHRV9EUkFHT1ZFUlwiXSA9IFwiZWRnZTpkcmFnb3ZlclwiO1xuICBHNkV2ZW50W1wiRURHRV9EUkFHRU5URVJcIl0gPSBcImVkZ2U6ZHJhZ2VudGVyXCI7XG4gIEc2RXZlbnRbXCJFREdFX0RSQUdMRUFWRVwiXSA9IFwiZWRnZTpkcmFnbGVhdmVcIjsgLy8gY2FudmFzIGV2ZW50c1xuXG4gIEc2RXZlbnRbXCJDQU5WQVNfQ09OVEVYVE1FTlVcIl0gPSBcImNhbnZhczpjb250ZXh0bWVudVwiO1xuICBHNkV2ZW50W1wiQ0FOVkFTX0NMSUNLXCJdID0gXCJjYW52YXM6Y2xpY2tcIjtcbiAgRzZFdmVudFtcIkNBTlZBU19EQkxDTElDS1wiXSA9IFwiY2FudmFzOmRibGNsaWNrXCI7XG4gIEc2RXZlbnRbXCJDQU5WQVNfTU9VU0VET1dOXCJdID0gXCJjYW52YXM6bW91c2Vkb3duXCI7XG4gIEc2RXZlbnRbXCJDQU5WQVNfTU9VU0VVUFwiXSA9IFwiY2FudmFzOm1vdXNldXBcIjtcbiAgRzZFdmVudFtcIkNBTlZBU19NT1VTRUVOVEVSXCJdID0gXCJjYW52YXM6bW91c2VlbnRlclwiO1xuICBHNkV2ZW50W1wiQ0FOVkFTX01PVVNFTEVBVkVcIl0gPSBcImNhbnZhczptb3VzZWxlYXZlXCI7XG4gIEc2RXZlbnRbXCJDQU5WQVNfTU9VU0VNT1ZFXCJdID0gXCJjYW52YXM6bW91c2Vtb3ZlXCI7XG4gIEc2RXZlbnRbXCJDQU5WQVNfTU9VU0VPVVRcIl0gPSBcImNhbnZhczptb3VzZW91dFwiO1xuICBHNkV2ZW50W1wiQ0FOVkFTX01PVVNFT1ZFUlwiXSA9IFwiY2FudmFzOm1vdXNlb3ZlclwiO1xuICBHNkV2ZW50W1wiQ0FOVkFTX0RST1BcIl0gPSBcImNhbnZhczpkcm9wXCI7XG4gIEc2RXZlbnRbXCJDQU5WQVNfRFJBR0VOVEVSXCJdID0gXCJjYW52YXM6ZHJhZ2VudGVyXCI7XG4gIEc2RXZlbnRbXCJDQU5WQVNfRFJBR0xFQVZFXCJdID0gXCJjYW52YXM6ZHJhZ2xlYXZlXCI7XG4gIEc2RXZlbnRbXCJDQU5WQVNfRFJBR1NUQVJUXCJdID0gXCJjYW52YXM6ZHJhZ3N0YXJ0XCI7XG4gIEc2RXZlbnRbXCJDQU5WQVNfRFJBR1wiXSA9IFwiY2FudmFzOmRyYWdcIjtcbiAgRzZFdmVudFtcIkNBTlZBU19EUkFHRU5EXCJdID0gXCJjYW52YXM6ZHJhZ2VuZFwiO1xuICBHNkV2ZW50W1wiQ0FOVkFTX1RBUFwiXSA9IFwiY2FudmFzOnRhcFwiO1xuICBHNkV2ZW50W1wiQ0FOVkFTX1BBTlNUQVJUXCJdID0gXCJjYW52YXM6cGFuc3RhcnRcIjtcbiAgRzZFdmVudFtcIkNBTlZBU19QQU5NT1ZFXCJdID0gXCJjYW52YXM6cGFubW92ZVwiO1xuICBHNkV2ZW50W1wiQ0FOVkFTX1BBTkVORFwiXSA9IFwiY2FudmFzOnBhbmVuZFwiOyAvLyB0aW1pbmcgZXZlbnRzXG5cbiAgRzZFdmVudFtcIkJFRk9SRVJFTkRFUlwiXSA9IFwiYmVmb3JlcmVuZGVyXCI7XG4gIEc2RXZlbnRbXCJBRlRFUlJFTkRFUlwiXSA9IFwiYWZ0ZXJyZW5kZXJcIjtcbiAgRzZFdmVudFtcIkJFRk9SRUFERElURU1cIl0gPSBcImJlZm9yZWFkZGl0ZW1cIjtcbiAgRzZFdmVudFtcIkFGVEVSQURESVRFTVwiXSA9IFwiYWZ0ZXJhZGRpdGVtXCI7XG4gIEc2RXZlbnRbXCJCRUZPUkVSRU1PVkVJVEVNXCJdID0gXCJiZWZvcmVyZW1vdmVpdGVtXCI7XG4gIEc2RXZlbnRbXCJBRlRFUlJFTU9WRUlURU1cIl0gPSBcImFmdGVycmVtb3ZlaXRlbVwiO1xuICBHNkV2ZW50W1wiQkVGT1JFVVBEQVRFSVRFTVwiXSA9IFwiYmVmb3JldXBkYXRlaXRlbVwiO1xuICBHNkV2ZW50W1wiQUZURVJVUERBVEVJVEVNXCJdID0gXCJhZnRlcnVwZGF0ZWl0ZW1cIjtcbiAgRzZFdmVudFtcIkJFRk9SRUlURU1WSVNJQklMSVRZQ0hBTkdFXCJdID0gXCJiZWZvcmVpdGVtdmlzaWJpbGl0eWNoYW5nZVwiO1xuICBHNkV2ZW50W1wiQUZURVJJVEVNVklTSUJJTElUWUNIQU5HRVwiXSA9IFwiYWZ0ZXJpdGVtdmlzaWJpbGl0eWNoYW5nZVwiO1xuICBHNkV2ZW50W1wiQkVGT1JFSVRFTVNUQVRFQ0hBTkdFXCJdID0gXCJiZWZvcmVpdGVtc3RhdGVjaGFuZ2VcIjtcbiAgRzZFdmVudFtcIkFGVEVSSVRFTVNUQVRFQ0hBTkdFXCJdID0gXCJhZnRlcml0ZW1zdGF0ZWNoYW5nZVwiO1xuICBHNkV2ZW50W1wiQkVGT1JFSVRFTVJFRlJFU0hcIl0gPSBcImJlZm9yZWl0ZW1yZWZyZXNoXCI7XG4gIEc2RXZlbnRbXCJBRlRFUklURU1SRUZSRVNIXCJdID0gXCJhZnRlcml0ZW1yZWZyZXNoXCI7XG4gIEc2RXZlbnRbXCJCRUZPUkVJVEVNU1RBVEVTQ0xFQVJcIl0gPSBcImJlZm9yZWl0ZW1zdGF0ZXNjbGVhclwiO1xuICBHNkV2ZW50W1wiQUZURVJJVEVNU1RBVEVTQ0xFQVJcIl0gPSBcImFmdGVyaXRlbXN0YXRlc2NsZWFyXCI7XG4gIEc2RXZlbnRbXCJCRUZPUkVNT0RFQ0hBTkdFXCJdID0gXCJiZWZvcmVtb2RlY2hhbmdlXCI7XG4gIEc2RXZlbnRbXCJBRlRFUk1PREVDSEFOR0VcIl0gPSBcImFmdGVybW9kZWNoYW5nZVwiO1xuICBHNkV2ZW50W1wiQkVGT1JFTEFZT1VUXCJdID0gXCJiZWZvcmVsYXlvdXRcIjtcbiAgRzZFdmVudFtcIkFGVEVSTEFZT1VUXCJdID0gXCJhZnRlcmxheW91dFwiO1xuICBHNkV2ZW50W1wiQkVGT1JFQ1JFQVRFRURHRVwiXSA9IFwiYmVmb3JlY3JlYXRlZWRnZVwiO1xuICBHNkV2ZW50W1wiQUZURVJDUkVBVEVFREdFXCJdID0gXCJhZnRlcmNyZWF0ZWVkZ2VcIjtcbiAgRzZFdmVudFtcIkJFRk9SRUdSQVBIUkVGUkVTSFBPU0lUSU9OXCJdID0gXCJiZWZvcmVncmFwaHJlZnJlc2hwb3NpdGlvblwiO1xuICBHNkV2ZW50W1wiQUZURVJHUkFQSFJFRlJFU0hQT1NJVElPTlwiXSA9IFwiYWZ0ZXJncmFwaHJlZnJlc2hwb3NpdGlvblwiO1xuICBHNkV2ZW50W1wiQkVGT1JFR1JBUEhSRUZSRVNIXCJdID0gXCJiZWZvcmVncmFwaHJlZnJlc2hcIjtcbiAgRzZFdmVudFtcIkFGVEVSR1JBUEhSRUZSRVNIXCJdID0gXCJhZnRlcmdyYXBocmVmcmVzaFwiO1xuICBHNkV2ZW50W1wiQkVGT1JFQU5JTUFURVwiXSA9IFwiYmVmb3JlYW5pbWF0ZVwiO1xuICBHNkV2ZW50W1wiQUZURVJBTklNQVRFXCJdID0gXCJhZnRlcmFuaW1hdGVcIjtcbiAgRzZFdmVudFtcIkJFRk9SRVBBSU5UXCJdID0gXCJiZWZvcmVwYWludFwiO1xuICBHNkV2ZW50W1wiQUZURVJQQUlOVFwiXSA9IFwiYWZ0ZXJwYWludFwiO1xuICBHNkV2ZW50W1wiQkVGT1JFQ09MTEFQU0VFWFBBTkRDT01CT1wiXSA9IFwiYmVmb3JlY29sbGFwc2VleHBhbmRjb21ib1wiO1xuICBHNkV2ZW50W1wiQUZURVJDT0xMQVBTRUVYUEFORENPTUJPXCJdID0gXCJhZnRlcmNvbGxhcHNlZXhwYW5kY29tYm9cIjtcbiAgRzZFdmVudFtcIkdSQVBIU1RBVEVDSEFOR0VcIl0gPSBcImdyYXBoc3RhdGVjaGFuZ2VcIjtcbiAgRzZFdmVudFtcIkFGVEVSQUNUSVZBVEVSRUxBVElPTlNcIl0gPSBcImFmdGVyYWN0aXZhdGVyZWxhdGlvbnNcIjtcbiAgRzZFdmVudFtcIk5PREVTRUxFQ1RDSEFOR0VcIl0gPSBcIm5vZGVzZWxlY3RjaGFuZ2VcIjtcbiAgRzZFdmVudFtcIlRPT0xUSVBDSEFOR0VcIl0gPSBcInRvb2x0aXBjaGFuZ2VcIjtcbiAgRzZFdmVudFtcIldIRUVMWk9PTVwiXSA9IFwid2hlZWx6b29tXCI7XG4gIEc2RXZlbnRbXCJWSUVXUE9SVENIQU5HRVwiXSA9IFwidmlld3BvcnRjaGFuZ2VcIjtcbiAgRzZFdmVudFtcIkRSQUdOT0RFRU5EXCJdID0gXCJkcmFnbm9kZWVuZFwiO1xuICBHNkV2ZW50W1wiU1RBQ0tDSEFOR0VcIl0gPSBcInN0YWNrY2hhbmdlXCI7IC8vIE1vYmlsZSBldmVudCBzdXBwb3J0XG5cbiAgRzZFdmVudFtcIlRBUFwiXSA9IFwidGFwXCI7XG4gIEc2RXZlbnRbXCJQSU5DSFNUQVJUXCJdID0gXCJwaW5jaHN0YXJ0XCI7XG4gIEc2RXZlbnRbXCJQSU5DSE1PVkVcIl0gPSBcInBpbmNobW92ZVwiO1xuICBHNkV2ZW50W1wiUEFOU1RBUlRcIl0gPSBcInBhbnN0YXJ0XCI7XG4gIEc2RXZlbnRbXCJQQU5NT1ZFXCJdID0gXCJwYW5tb3ZlXCI7XG4gIEc2RXZlbnRbXCJQQU5FTkRcIl0gPSBcInBhbmVuZFwiO1xufSkoRzZFdmVudCB8fCAoRzZFdmVudCA9IHt9KSk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/types/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/base.js":
/*!*************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/base.js ***!
\*************************************************************************/
/*! exports provided: uniqueId, formatPadding, cloneEvent, isViewportChanged, isNaN, calculationItemsBBox, processParallelEdges */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uniqueId\", function() { return uniqueId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatPadding\", function() { return formatPadding; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cloneEvent\", function() { return cloneEvent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isViewportChanged\", function() { return isViewportChanged; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNaN\", function() { return isNaN; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"calculationItemsBBox\", function() { return calculationItemsBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"processParallelEdges\", function() { return processParallelEdges; });\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _interface_behavior__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../interface/behavior */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/interface/behavior.js\");\n\n\nvar uniqueId = function uniqueId(type) {\n return type + \"-\" + Math.random() + Date.now();\n};\n/**\n * turn padding into [top, right, bottom, right]\n * @param {Number|Array} padding input padding\n * @return {array} output\n */\n\nvar formatPadding = function formatPadding(padding) {\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isArray\"])(padding)) {\n switch (padding.length) {\n case 4:\n return padding;\n\n case 3:\n padding.push(padding[1]);\n return padding;\n\n case 2:\n return padding.concat(padding);\n\n case 1:\n return [padding[0], padding[0], padding[0], padding[0]];\n\n default:\n return [0, 0, 0, 0];\n }\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isNumber\"])(padding)) {\n return [padding, padding, padding, padding];\n } else if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(padding)) {\n var intPadding = parseInt(padding, 10);\n return [intPadding, intPadding, intPadding, intPadding];\n }\n\n return [0, 0, 0, 0];\n};\n/**\n * clone event\n * @param e\n */\n\nvar cloneEvent = function cloneEvent(e) {\n var event = new _interface_behavior__WEBPACK_IMPORTED_MODULE_1__[\"G6GraphEvent\"](e.type, e);\n event.clientX = e.clientX;\n event.clientY = e.clientY;\n event.x = e.x;\n event.y = e.y;\n event.target = e.target;\n event.currentTarget = e.currentTarget;\n event.bubbles = true;\n event.item = e.item;\n return event;\n};\n/**\n * 判断 viewport 是否改变,通过和单位矩阵对比\n * @param matrix Viewport 的 Matrix\n */\n\nvar isViewportChanged = function isViewportChanged(matrix) {\n // matrix 为 null, 则说明没有变化\n if (!matrix) {\n return false;\n }\n\n var MATRIX_LEN = 9;\n var ORIGIN_MATRIX = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n\n for (var i = 0; i < MATRIX_LEN; i++) {\n if (matrix[i] !== ORIGIN_MATRIX[i]) {\n return true;\n }\n }\n\n return false;\n};\nvar isNaN = function isNaN(input) {\n return Number.isNaN(Number(input));\n};\n/**\n * 计算一组 Item 的 BBox\n * @param items 选中的一组Item,可以是 node 或 combo\n */\n\nvar calculationItemsBBox = function calculationItemsBBox(items) {\n var minx = Infinity;\n var maxx = -Infinity;\n var miny = Infinity;\n var maxy = -Infinity; // 获取已节点的所有最大最小x y值\n\n for (var i = 0; i < items.length; i++) {\n var element = items[i];\n var bbox = element.getBBox();\n var minX = bbox.minX,\n minY = bbox.minY,\n maxX = bbox.maxX,\n maxY = bbox.maxY;\n\n if (minX < minx) {\n minx = minX;\n }\n\n if (minY < miny) {\n miny = minY;\n }\n\n if (maxX > maxx) {\n maxx = maxX;\n }\n\n if (maxY > maxy) {\n maxy = maxY;\n }\n }\n\n var x = Math.floor(minx);\n var y = Math.floor(miny);\n var width = Math.ceil(maxx) - Math.floor(minx);\n var height = Math.ceil(maxy) - Math.floor(miny);\n return {\n x: x,\n y: y,\n width: width,\n height: height,\n minX: minx,\n minY: miny,\n maxX: maxx,\n maxY: maxy\n };\n};\n/**\n * 若 edges 中存在两端点相同的边,使用 quadratic 边并自动计算 curveOffset 使它们不相互重叠\n * 文档: https://g6.antv.vision/en/docs/api/Util\n * @param edges 边数据集合\n * @param offsetDiff 相邻两边的 offset 之差\n * @param multiEdgeType\n * @param singleEdgeType\n * @param loopEdgeType\n */\n\nvar processParallelEdges = function processParallelEdges(edges, offsetDiff, multiEdgeType, singleEdgeType, loopEdgeType) {\n if (offsetDiff === void 0) {\n offsetDiff = 15;\n }\n\n if (multiEdgeType === void 0) {\n multiEdgeType = 'quadratic';\n }\n\n if (singleEdgeType === void 0) {\n singleEdgeType = undefined;\n }\n\n if (loopEdgeType === void 0) {\n loopEdgeType = undefined;\n }\n\n var len = edges.length;\n var cod = offsetDiff * 2;\n var loopPosition = ['top', 'top-right', 'right', 'bottom-right', 'bottom', 'bottom-left', 'left', 'top-left'];\n var edgeMap = {};\n var tags = [];\n var reverses = {};\n\n for (var i = 0; i < len; i++) {\n var edge = edges[i];\n var source = edge.source,\n target = edge.target;\n var sourceTarget = source + \"-\" + target;\n if (tags[i]) continue;\n\n if (!edgeMap[sourceTarget]) {\n edgeMap[sourceTarget] = [];\n }\n\n tags[i] = true;\n edgeMap[sourceTarget].push(edge);\n\n for (var j = 0; j < len; j++) {\n if (i === j) continue;\n var sedge = edges[j];\n var src = sedge.source;\n var dst = sedge.target; // 两个节点之间共同的边\n // 第一条的source = 第二条的target\n // 第一条的target = 第二条的source\n\n if (!tags[j]) {\n if (source === dst && target === src) {\n edgeMap[sourceTarget].push(sedge);\n tags[j] = true;\n reverses[src + \"|\" + dst + \"|\" + (edgeMap[sourceTarget].length - 1)] = true;\n } else if (source === src && target === dst) {\n edgeMap[sourceTarget].push(sedge);\n tags[j] = true;\n }\n }\n }\n }\n\n for (var key in edgeMap) {\n var arcEdges = edgeMap[key];\n var length_1 = arcEdges.length;\n\n for (var k = 0; k < length_1; k++) {\n var current = arcEdges[k];\n\n if (current.source === current.target) {\n if (loopEdgeType) current.type = loopEdgeType; // 超过8条自环边,则需要重新处理\n\n current.loopCfg = {\n position: loopPosition[k % 8],\n dist: Math.floor(k / 8) * 20 + 50\n };\n continue;\n }\n\n if (length_1 === 1 && singleEdgeType && current.source !== current.target) {\n current.type = singleEdgeType;\n continue;\n }\n\n current.type = multiEdgeType;\n var sign = (k % 2 === 0 ? 1 : -1) * (reverses[current.source + \"|\" + current.target + \"|\" + k] ? -1 : 1);\n\n if (length_1 % 2 === 1) {\n current.curveOffset = sign * Math.ceil(k / 2) * cod;\n } else {\n current.curveOffset = sign * (Math.floor(k / 2) * cod + offsetDiff);\n }\n }\n }\n\n return edges;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy91dGlsL2Jhc2UuanM/N2JlMiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF5RDtBQUNKO0FBQzlDO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGFBQWE7QUFDekIsWUFBWSxNQUFNO0FBQ2xCOztBQUVPO0FBQ1AsTUFBTSwwREFBTztBQUNiO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE1BQU0sMkRBQVE7QUFDZDtBQUNBLEdBQUcsVUFBVSwyREFBUTtBQUNyQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1Asa0JBQWtCLGdFQUFZO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGlCQUFpQixnQkFBZ0I7QUFDakM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCOztBQUV2QixpQkFBaUIsa0JBQWtCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixTQUFTO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsbUJBQW1CLFNBQVM7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixjQUFjO0FBQ2pDOztBQUVBO0FBQ0Esc0RBQXNEOztBQUV0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy91dGlsL2Jhc2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1N0cmluZywgaXNOdW1iZXIsIGlzQXJyYXkgfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IEc2R3JhcGhFdmVudCB9IGZyb20gJy4uL2ludGVyZmFjZS9iZWhhdmlvcic7XG5leHBvcnQgdmFyIHVuaXF1ZUlkID0gZnVuY3Rpb24gdW5pcXVlSWQodHlwZSkge1xuICByZXR1cm4gdHlwZSArIFwiLVwiICsgTWF0aC5yYW5kb20oKSArIERhdGUubm93KCk7XG59O1xuLyoqXG4gKiB0dXJuIHBhZGRpbmcgaW50byBbdG9wLCByaWdodCwgYm90dG9tLCByaWdodF1cbiAqIEBwYXJhbSAge051bWJlcnxBcnJheX0gcGFkZGluZyBpbnB1dCBwYWRkaW5nXG4gKiBAcmV0dXJuIHthcnJheX0gb3V0cHV0XG4gKi9cblxuZXhwb3J0IHZhciBmb3JtYXRQYWRkaW5nID0gZnVuY3Rpb24gZm9ybWF0UGFkZGluZyhwYWRkaW5nKSB7XG4gIGlmIChpc0FycmF5KHBhZGRpbmcpKSB7XG4gICAgc3dpdGNoIChwYWRkaW5nLmxlbmd0aCkge1xuICAgICAgY2FzZSA0OlxuICAgICAgICByZXR1cm4gcGFkZGluZztcblxuICAgICAgY2FzZSAzOlxuICAgICAgICBwYWRkaW5nLnB1c2gocGFkZGluZ1sxXSk7XG4gICAgICAgIHJldHVybiBwYWRkaW5nO1xuXG4gICAgICBjYXNlIDI6XG4gICAgICAgIHJldHVybiBwYWRkaW5nLmNvbmNhdChwYWRkaW5nKTtcblxuICAgICAgY2FzZSAxOlxuICAgICAgICByZXR1cm4gW3BhZGRpbmdbMF0sIHBhZGRpbmdbMF0sIHBhZGRpbmdbMF0sIHBhZGRpbmdbMF1dO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gWzAsIDAsIDAsIDBdO1xuICAgIH1cbiAgfVxuXG4gIGlmIChpc051bWJlcihwYWRkaW5nKSkge1xuICAgIHJldHVybiBbcGFkZGluZywgcGFkZGluZywgcGFkZGluZywgcGFkZGluZ107XG4gIH0gZWxzZSBpZiAoaXNTdHJpbmcocGFkZGluZykpIHtcbiAgICB2YXIgaW50UGFkZGluZyA9IHBhcnNlSW50KHBhZGRpbmcsIDEwKTtcbiAgICByZXR1cm4gW2ludFBhZGRpbmcsIGludFBhZGRpbmcsIGludFBhZGRpbmcsIGludFBhZGRpbmddO1xuICB9XG5cbiAgcmV0dXJuIFswLCAwLCAwLCAwXTtcbn07XG4vKipcbiAqIGNsb25lIGV2ZW50XG4gKiBAcGFyYW0gZVxuICovXG5cbmV4cG9ydCB2YXIgY2xvbmVFdmVudCA9IGZ1bmN0aW9uIGNsb25lRXZlbnQoZSkge1xuICB2YXIgZXZlbnQgPSBuZXcgRzZHcmFwaEV2ZW50KGUudHlwZSwgZSk7XG4gIGV2ZW50LmNsaWVudFggPSBlLmNsaWVudFg7XG4gIGV2ZW50LmNsaWVudFkgPSBlLmNsaWVudFk7XG4gIGV2ZW50LnggPSBlLng7XG4gIGV2ZW50LnkgPSBlLnk7XG4gIGV2ZW50LnRhcmdldCA9IGUudGFyZ2V0O1xuICBldmVudC5jdXJyZW50VGFyZ2V0ID0gZS5jdXJyZW50VGFyZ2V0O1xuICBldmVudC5idWJibGVzID0gdHJ1ZTtcbiAgZXZlbnQuaXRlbSA9IGUuaXRlbTtcbiAgcmV0dXJuIGV2ZW50O1xufTtcbi8qKlxuICog5Yik5patIHZpZXdwb3J0IOaYr+WQpuaUueWPmO+8jOmAmui/h+WSjOWNleS9jeefqemYteWvueavlFxuICogQHBhcmFtIG1hdHJpeCBWaWV3cG9ydCDnmoQgTWF0cml4XG4gKi9cblxuZXhwb3J0IHZhciBpc1ZpZXdwb3J0Q2hhbmdlZCA9IGZ1bmN0aW9uIGlzVmlld3BvcnRDaGFuZ2VkKG1hdHJpeCkge1xuICAvLyBtYXRyaXgg5Li6IG51bGzvvIwg5YiZ6K+05piO5rKh5pyJ5Y+Y5YyWXG4gIGlmICghbWF0cml4KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIE1BVFJJWF9MRU4gPSA5O1xuICB2YXIgT1JJR0lOX01BVFJJWCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IE1BVFJJWF9MRU47IGkrKykge1xuICAgIGlmIChtYXRyaXhbaV0gIT09IE9SSUdJTl9NQVRSSVhbaV0pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5leHBvcnQgdmFyIGlzTmFOID0gZnVuY3Rpb24gaXNOYU4oaW5wdXQpIHtcbiAgcmV0dXJuIE51bWJlci5pc05hTihOdW1iZXIoaW5wdXQpKTtcbn07XG4vKipcbiAqIOiuoeeul+S4gOe7hCBJdGVtIOeahCBCQm94XG4gKiBAcGFyYW0gaXRlbXMg6YCJ5Lit55qE5LiA57uESXRlbe+8jOWPr+S7peaYryBub2RlIOaIliBjb21ib1xuICovXG5cbmV4cG9ydCB2YXIgY2FsY3VsYXRpb25JdGVtc0JCb3ggPSBmdW5jdGlvbiBjYWxjdWxhdGlvbkl0ZW1zQkJveChpdGVtcykge1xuICB2YXIgbWlueCA9IEluZmluaXR5O1xuICB2YXIgbWF4eCA9IC1JbmZpbml0eTtcbiAgdmFyIG1pbnkgPSBJbmZpbml0eTtcbiAgdmFyIG1heHkgPSAtSW5maW5pdHk7IC8vIOiOt+WPluW3suiKgueCueeahOaJgOacieacgOWkp+acgOWwj3ggeeWAvFxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZWxlbWVudCA9IGl0ZW1zW2ldO1xuICAgIHZhciBiYm94ID0gZWxlbWVudC5nZXRCQm94KCk7XG4gICAgdmFyIG1pblggPSBiYm94Lm1pblgsXG4gICAgICAgIG1pblkgPSBiYm94Lm1pblksXG4gICAgICAgIG1heFggPSBiYm94Lm1heFgsXG4gICAgICAgIG1heFkgPSBiYm94Lm1heFk7XG5cbiAgICBpZiAobWluWCA8IG1pbngpIHtcbiAgICAgIG1pbnggPSBtaW5YO1xuICAgIH1cblxuICAgIGlmIChtaW5ZIDwgbWlueSkge1xuICAgICAgbWlueSA9IG1pblk7XG4gICAgfVxuXG4gICAgaWYgKG1heFggPiBtYXh4KSB7XG4gICAgICBtYXh4ID0gbWF4WDtcbiAgICB9XG5cbiAgICBpZiAobWF4WSA+IG1heHkpIHtcbiAgICAgIG1heHkgPSBtYXhZO1xuICAgIH1cbiAgfVxuXG4gIHZhciB4ID0gTWF0aC5mbG9vcihtaW54KTtcbiAgdmFyIHkgPSBNYXRoLmZsb29yKG1pbnkpO1xuICB2YXIgd2lkdGggPSBNYXRoLmNlaWwobWF4eCkgLSBNYXRoLmZsb29yKG1pbngpO1xuICB2YXIgaGVpZ2h0ID0gTWF0aC5jZWlsKG1heHkpIC0gTWF0aC5mbG9vcihtaW55KTtcbiAgcmV0dXJuIHtcbiAgICB4OiB4LFxuICAgIHk6IHksXG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIG1pblg6IG1pbngsXG4gICAgbWluWTogbWlueSxcbiAgICBtYXhYOiBtYXh4LFxuICAgIG1heFk6IG1heHlcbiAgfTtcbn07XG4vKipcbiAqIOiLpSBlZGdlcyDkuK3lrZjlnKjkuKTnq6/ngrnnm7jlkIznmoTovrnvvIzkvb/nlKggcXVhZHJhdGljIOi+ueW5tuiHquWKqOiuoeeulyBjdXJ2ZU9mZnNldCDkvb/lroPku6zkuI3nm7jkupLph43lj6BcbiAqIOaWh+ahozogaHR0cHM6Ly9nNi5hbnR2LnZpc2lvbi9lbi9kb2NzL2FwaS9VdGlsXG4gKiBAcGFyYW0gZWRnZXMg6L655pWw5o2u6ZuG5ZCIXG4gKiBAcGFyYW0gb2Zmc2V0RGlmZiDnm7jpgrvkuKTovrnnmoQgb2Zmc2V0IOS5i+W3rlxuICogQHBhcmFtIG11bHRpRWRnZVR5cGVcbiAqIEBwYXJhbSBzaW5nbGVFZGdlVHlwZVxuICogQHBhcmFtIGxvb3BFZGdlVHlwZVxuICovXG5cbmV4cG9ydCB2YXIgcHJvY2Vzc1BhcmFsbGVsRWRnZXMgPSBmdW5jdGlvbiBwcm9jZXNzUGFyYWxsZWxFZGdlcyhlZGdlcywgb2Zmc2V0RGlmZiwgbXVsdGlFZGdlVHlwZSwgc2luZ2xlRWRnZVR5cGUsIGxvb3BFZGdlVHlwZSkge1xuICBpZiAob2Zmc2V0RGlmZiA9PT0gdm9pZCAwKSB7XG4gICAgb2Zmc2V0RGlmZiA9IDE1O1xuICB9XG5cbiAgaWYgKG11bHRpRWRnZVR5cGUgPT09IHZvaWQgMCkge1xuICAgIG11bHRpRWRnZVR5cGUgPSAncXVhZHJhdGljJztcbiAgfVxuXG4gIGlmIChzaW5nbGVFZGdlVHlwZSA9PT0gdm9pZCAwKSB7XG4gICAgc2luZ2xlRWRnZVR5cGUgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAobG9vcEVkZ2VUeXBlID09PSB2b2lkIDApIHtcbiAgICBsb29wRWRnZVR5cGUgPSB1bmRlZmluZWQ7XG4gIH1cblxuICB2YXIgbGVuID0gZWRnZXMubGVuZ3RoO1xuICB2YXIgY29kID0gb2Zmc2V0RGlmZiAqIDI7XG4gIHZhciBsb29wUG9zaXRpb24gPSBbJ3RvcCcsICd0b3AtcmlnaHQnLCAncmlnaHQnLCAnYm90dG9tLXJpZ2h0JywgJ2JvdHRvbScsICdib3R0b20tbGVmdCcsICdsZWZ0JywgJ3RvcC1sZWZ0J107XG4gIHZhciBlZGdlTWFwID0ge307XG4gIHZhciB0YWdzID0gW107XG4gIHZhciByZXZlcnNlcyA9IHt9O1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgZWRnZSA9IGVkZ2VzW2ldO1xuICAgIHZhciBzb3VyY2UgPSBlZGdlLnNvdXJjZSxcbiAgICAgICAgdGFyZ2V0ID0gZWRnZS50YXJnZXQ7XG4gICAgdmFyIHNvdXJjZVRhcmdldCA9IHNvdXJjZSArIFwiLVwiICsgdGFyZ2V0O1xuICAgIGlmICh0YWdzW2ldKSBjb250aW51ZTtcblxuICAgIGlmICghZWRnZU1hcFtzb3VyY2VUYXJnZXRdKSB7XG4gICAgICBlZGdlTWFwW3NvdXJjZVRhcmdldF0gPSBbXTtcbiAgICB9XG5cbiAgICB0YWdzW2ldID0gdHJ1ZTtcbiAgICBlZGdlTWFwW3NvdXJjZVRhcmdldF0ucHVzaChlZGdlKTtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgIGlmIChpID09PSBqKSBjb250aW51ZTtcbiAgICAgIHZhciBzZWRnZSA9IGVkZ2VzW2pdO1xuICAgICAgdmFyIHNyYyA9IHNlZGdlLnNvdXJjZTtcbiAgICAgIHZhciBkc3QgPSBzZWRnZS50YXJnZXQ7IC8vIOS4pOS4quiKgueCueS5i+mXtOWFseWQjOeahOi+uVxuICAgICAgLy8g56ys5LiA5p2h55qEc291cmNlID0g56ys5LqM5p2h55qEdGFyZ2V0XG4gICAgICAvLyDnrKzkuIDmnaHnmoR0YXJnZXQgPSDnrKzkuozmnaHnmoRzb3VyY2VcblxuICAgICAgaWYgKCF0YWdzW2pdKSB7XG4gICAgICAgIGlmIChzb3VyY2UgPT09IGRzdCAmJiB0YXJnZXQgPT09IHNyYykge1xuICAgICAgICAgIGVkZ2VNYXBbc291cmNlVGFyZ2V0XS5wdXNoKHNlZGdlKTtcbiAgICAgICAgICB0YWdzW2pdID0gdHJ1ZTtcbiAgICAgICAgICByZXZlcnNlc1tzcmMgKyBcInxcIiArIGRzdCArIFwifFwiICsgKGVkZ2VNYXBbc291cmNlVGFyZ2V0XS5sZW5ndGggLSAxKV0gPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZSA9PT0gc3JjICYmIHRhcmdldCA9PT0gZHN0KSB7XG4gICAgICAgICAgZWRnZU1hcFtzb3VyY2VUYXJnZXRdLnB1c2goc2VkZ2UpO1xuICAgICAgICAgIHRhZ3Nbal0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZm9yICh2YXIga2V5IGluIGVkZ2VNYXApIHtcbiAgICB2YXIgYXJjRWRnZXMgPSBlZGdlTWFwW2tleV07XG4gICAgdmFyIGxlbmd0aF8xID0gYXJjRWRnZXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBsZW5ndGhfMTsgaysrKSB7XG4gICAgICB2YXIgY3VycmVudCA9IGFyY0VkZ2VzW2tdO1xuXG4gICAgICBpZiAoY3VycmVudC5zb3VyY2UgPT09IGN1cnJlbnQudGFyZ2V0KSB7XG4gICAgICAgIGlmIChsb29wRWRnZVR5cGUpIGN1cnJlbnQudHlwZSA9IGxvb3BFZGdlVHlwZTsgLy8g6LaF6L+HOOadoeiHqueOr+i+ue+8jOWImemcgOimgemHjeaWsOWkhOeQhlxuXG4gICAgICAgIGN1cnJlbnQubG9vcENmZyA9IHtcbiAgICAgICAgICBwb3NpdGlvbjogbG9vcFBvc2l0aW9uW2sgJSA4XSxcbiAgICAgICAgICBkaXN0OiBNYXRoLmZsb29yKGsgLyA4KSAqIDIwICsgNTBcbiAgICAgICAgfTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChsZW5ndGhfMSA9PT0gMSAmJiBzaW5nbGVFZGdlVHlwZSAmJiBjdXJyZW50LnNvdXJjZSAhPT0gY3VycmVudC50YXJnZXQpIHtcbiAgICAgICAgY3VycmVudC50eXBlID0gc2luZ2xlRWRnZVR5cGU7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjdXJyZW50LnR5cGUgPSBtdWx0aUVkZ2VUeXBlO1xuICAgICAgdmFyIHNpZ24gPSAoayAlIDIgPT09IDAgPyAxIDogLTEpICogKHJldmVyc2VzW2N1cnJlbnQuc291cmNlICsgXCJ8XCIgKyBjdXJyZW50LnRhcmdldCArIFwifFwiICsga10gPyAtMSA6IDEpO1xuXG4gICAgICBpZiAobGVuZ3RoXzEgJSAyID09PSAxKSB7XG4gICAgICAgIGN1cnJlbnQuY3VydmVPZmZzZXQgPSBzaWduICogTWF0aC5jZWlsKGsgLyAyKSAqIGNvZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN1cnJlbnQuY3VydmVPZmZzZXQgPSBzaWduICogKE1hdGguZmxvb3IoayAvIDIpICogY29kICsgb2Zmc2V0RGlmZik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGVkZ2VzO1xufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/base.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/color.js":
/*!**************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/color.js ***!
\**************************************************************************/
/*! exports provided: defaultSubjectColors */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultSubjectColors\", function() { return defaultSubjectColors; });\nvar defaultSubjectColors = ['#5F95FF', '#61DDAA', '#65789B', '#F6BD16', '#7262FD', '#78D3F8', '#9661BC', '#F6903D', '#008685', '#F08BB4'];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy91dGlsL2NvbG9yLmpzPzRiOTIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFPIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1jb3JlQDAuNS4wQEBhbnR2L2c2LWNvcmUvZXMvdXRpbC9jb2xvci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgZGVmYXVsdFN1YmplY3RDb2xvcnMgPSBbJyM1Rjk1RkYnLCAnIzYxRERBQScsICcjNjU3ODlCJywgJyNGNkJEMTYnLCAnIzcyNjJGRCcsICcjNzhEM0Y4JywgJyM5NjYxQkMnLCAnI0Y2OTAzRCcsICcjMDA4Njg1JywgJyNGMDhCQjQnXTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/color.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/graphic.js":
/*!****************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/graphic.js ***!
\****************************************************************************/
/*! exports provided: getBBox, getLoopCfgs, getLabelPosition, traverseTree, traverseTreeUp, getLetterWidth, getTextSize, plainCombosToTrees, reconstructTree, getComboBBox, shouldRefreshEdge, cloneBesidesImg */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBox\", function() { return getBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLoopCfgs\", function() { return getLoopCfgs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLabelPosition\", function() { return getLabelPosition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"traverseTree\", function() { return traverseTree; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"traverseTreeUp\", function() { return traverseTreeUp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLetterWidth\", function() { return getLetterWidth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTextSize\", function() { return getTextSize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"plainCombosToTrees\", function() { return plainCombosToTrees; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"reconstructTree\", function() { return reconstructTree; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getComboBBox\", function() { return getComboBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"shouldRefreshEdge\", function() { return shouldRefreshEdge; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cloneBesidesImg\", function() { return cloneBesidesImg; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/_@antv_matrix-util@3.1.0-beta.3@@antv/matrix-util/esm/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../global */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/global.js\");\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./math */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/math.js\");\n/* harmony import */ var _letterAspectRatio__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./letterAspectRatio */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/letterAspectRatio.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\n\n\n\n\n\nvar PI = Math.PI,\n sin = Math.sin,\n cos = Math.cos; // 一共支持8个方向的自环,每个环占的角度是45度,在计算时再二分,为22.5度\n\nvar SELF_LINK_SIN = sin(PI / 8);\nvar SELF_LINK_COS = cos(PI / 8);\nvar getBBox = function getBBox(element, group) {\n var bbox = element.getBBox();\n var leftTop = {\n x: bbox.minX,\n y: bbox.minY\n };\n var rightBottom = {\n x: bbox.maxX,\n y: bbox.maxY\n }; // 根据父元素变换矩阵\n\n if (group) {\n var matrix = group.getMatrix();\n\n if (!matrix) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n leftTop = Object(_math__WEBPACK_IMPORTED_MODULE_3__[\"applyMatrix\"])(leftTop, matrix);\n rightBottom = Object(_math__WEBPACK_IMPORTED_MODULE_3__[\"applyMatrix\"])(rightBottom, matrix);\n }\n\n var lx = leftTop.x,\n ly = leftTop.y;\n var rx = rightBottom.x,\n ry = rightBottom.y;\n return {\n x: lx,\n y: ly,\n minX: lx,\n minY: ly,\n maxX: rx,\n maxY: ry,\n width: rx - lx,\n height: ry - ly\n };\n};\n/**\n * get loop edge config\n * @param cfg edge config\n */\n\nvar getLoopCfgs = function getLoopCfgs(cfg) {\n var item = cfg.sourceNode || cfg.targetNode;\n var container = item.get('group');\n var containerMatrix = container.getMatrix();\n if (!containerMatrix) containerMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n var keyShape = item.getKeyShape();\n var bbox = keyShape.getBBox();\n var loopCfg = cfg.loopCfg || {}; // 距离keyShape边的最高距离\n\n var dist = loopCfg.dist || Math.max(bbox.width, bbox.height) * 2; // 自环边与keyShape的相对位置关系\n\n var position = loopCfg.position || _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaultLoopPosition; // 中心取group上真实位置\n\n var center = [containerMatrix[6], containerMatrix[7]];\n var startPoint = [cfg.startPoint.x, cfg.startPoint.y];\n var endPoint = [cfg.endPoint.x, cfg.endPoint.y];\n var rstart = bbox.height / 2;\n var rend = bbox.height / 2;\n var sinDeltaStart = rstart * SELF_LINK_SIN;\n var cosDeltaStart = rstart * SELF_LINK_COS;\n var sinDeltaEnd = rend * SELF_LINK_SIN;\n var cosDeltaEnd = rend * SELF_LINK_COS; // 如果定义了锚点的,直接用锚点坐标,否则,根据自环的 cfg 计算\n\n if (startPoint[0] === endPoint[0] && startPoint[1] === endPoint[1]) {\n switch (position) {\n case 'top':\n startPoint = [center[0] - sinDeltaStart, center[1] - cosDeltaStart];\n endPoint = [center[0] + sinDeltaEnd, center[1] - cosDeltaEnd];\n break;\n\n case 'top-right':\n rstart = bbox.height / 2;\n rend = bbox.width / 2;\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] + sinDeltaStart, center[1] - cosDeltaStart];\n endPoint = [center[0] + cosDeltaEnd, center[1] - sinDeltaEnd];\n break;\n\n case 'right':\n rstart = bbox.width / 2;\n rend = bbox.width / 2;\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] + cosDeltaStart, center[1] - sinDeltaStart];\n endPoint = [center[0] + cosDeltaEnd, center[1] + sinDeltaEnd];\n break;\n\n case 'bottom-right':\n rstart = bbox.width / 2;\n rend = bbox.height / 2;\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] + cosDeltaStart, center[1] + sinDeltaStart];\n endPoint = [center[0] + sinDeltaEnd, center[1] + cosDeltaEnd];\n break;\n\n case 'bottom':\n rstart = bbox.height / 2;\n rend = bbox.height / 2;\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] + sinDeltaStart, center[1] + cosDeltaStart];\n endPoint = [center[0] - sinDeltaEnd, center[1] + cosDeltaEnd];\n break;\n\n case 'bottom-left':\n rstart = bbox.height / 2;\n rend = bbox.width / 2;\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] - sinDeltaStart, center[1] + cosDeltaStart];\n endPoint = [center[0] - cosDeltaEnd, center[1] + sinDeltaEnd];\n break;\n\n case 'left':\n rstart = bbox.width / 2;\n rend = bbox.width / 2;\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] - cosDeltaStart, center[1] + sinDeltaStart];\n endPoint = [center[0] - cosDeltaEnd, center[1] - sinDeltaEnd];\n break;\n\n case 'top-left':\n rstart = bbox.width / 2;\n rend = bbox.height / 2;\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] - cosDeltaStart, center[1] - sinDeltaStart];\n endPoint = [center[0] - sinDeltaEnd, center[1] - cosDeltaEnd];\n break;\n\n default:\n rstart = bbox.width / 2;\n rend = bbox.width / 2;\n sinDeltaStart = rstart * SELF_LINK_SIN;\n cosDeltaStart = rstart * SELF_LINK_COS;\n sinDeltaEnd = rend * SELF_LINK_SIN;\n cosDeltaEnd = rend * SELF_LINK_COS;\n startPoint = [center[0] - sinDeltaStart, center[1] - cosDeltaStart];\n endPoint = [center[0] + sinDeltaEnd, center[1] - cosDeltaEnd];\n } // 如果逆时针画,交换起点和终点\n\n\n if (loopCfg.clockwise === false) {\n var swap = [startPoint[0], startPoint[1]];\n startPoint = [endPoint[0], endPoint[1]];\n endPoint = [swap[0], swap[1]];\n }\n }\n\n var startVec = [startPoint[0] - center[0], startPoint[1] - center[1]];\n var scaleRateStart = (rstart + dist) / rstart;\n var scaleRateEnd = (rend + dist) / rend;\n\n if (loopCfg.clockwise === false) {\n scaleRateStart = (rend + dist) / rend;\n scaleRateEnd = (rstart + dist) / rstart;\n }\n\n var startExtendVec = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_1__[\"vec2\"].scale([0, 0], startVec, scaleRateStart);\n var controlPoint1 = [center[0] + startExtendVec[0], center[1] + startExtendVec[1]];\n var endVec = [endPoint[0] - center[0], endPoint[1] - center[1]];\n var endExtendVec = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_1__[\"vec2\"].scale([0, 0], endVec, scaleRateEnd);\n var controlPoint2 = [center[0] + endExtendVec[0], center[1] + endExtendVec[1]];\n cfg.startPoint = {\n x: startPoint[0],\n y: startPoint[1]\n };\n cfg.endPoint = {\n x: endPoint[0],\n y: endPoint[1]\n };\n cfg.controlPoints = [{\n x: controlPoint1[0],\n y: controlPoint1[1]\n }, {\n x: controlPoint2[0],\n y: controlPoint2[1]\n }];\n return cfg;\n};\n/**\n * 根据 label 所在线条的位置百分比,计算 label 坐标\n * @param {object} pathShape G 的 path 实例,一般是 Edge 实例的 keyShape\n * @param {number} percent 范围 0 - 1 的线条百分比\n * @param {number} refX x 轴正方向为基准的 label 偏移\n * @param {number} refY y 轴正方向为基准的 label 偏移\n * @param {boolean} rotate 是否根据线条斜率旋转文本\n * @return {object} 文本的 x, y, 文本的旋转角度\n */\n\nvar getLabelPosition = function getLabelPosition(pathShape, percent, refX, refY, rotate) {\n var TAN_OFFSET = 0.0001;\n var vector = [];\n var point = pathShape === null || pathShape === void 0 ? void 0 : pathShape.getPoint(percent);\n\n if (!point) {\n return {\n x: 0,\n y: 0,\n angle: 0\n };\n } // 头尾最可能,放在最前面,使用 g path 上封装的方法\n\n\n if (percent < TAN_OFFSET) {\n vector = pathShape.getStartTangent().reverse();\n } else if (percent > 1 - TAN_OFFSET) {\n vector = pathShape.getEndTangent();\n } else {\n // 否则取指定位置的点,与少量偏移的点,做微分向量\n var offsetPoint = pathShape === null || pathShape === void 0 ? void 0 : pathShape.getPoint(percent + TAN_OFFSET);\n vector.push([point.x, point.y]);\n vector.push([offsetPoint.x, offsetPoint.y]);\n }\n\n var rad = Math.atan2(vector[1][1] - vector[0][1], vector[1][0] - vector[0][0]);\n\n if (rad < 0) {\n rad += PI * 2;\n }\n\n if (refX) {\n point.x += cos(rad) * refX;\n point.y += sin(rad) * refX;\n }\n\n if (refY) {\n // 默认方向是 x 轴正方向,法线是 求出角度 - 90°\n var normal = rad - PI / 2; // 若法线角度在 y 轴负方向,切到正方向,保证 refY 相对于 y 轴正方向\n\n if (rad > 1 / 2 * PI && rad < 3 * 1 / 2 * PI) {\n normal -= PI;\n }\n\n point.x += cos(normal) * refY;\n point.y += sin(normal) * refY;\n }\n\n var result = {\n x: point.x,\n y: point.y,\n angle: rad\n };\n\n if (rotate) {\n if (rad > 0.5 * PI && rad < 1.5 * PI) {\n rad -= PI;\n }\n\n return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n rotate: rad\n }, result);\n }\n\n return result;\n};\n/**\n * depth first traverse, from root to leaves, children in inverse order\n * if the fn returns false, terminate the traverse\n */\n\nvar traverse = function traverse(data, fn) {\n if (fn(data) === false) {\n return false;\n }\n\n if (data && data.children) {\n for (var i = data.children.length - 1; i >= 0; i--) {\n if (!traverse(data.children[i], fn)) return false;\n }\n }\n\n return true;\n};\n/**\n * depth first traverse, from leaves to root, children in inverse order\n * if the fn returns false, terminate the traverse\n */\n\n\nvar traverseUp = function traverseUp(data, fn) {\n if (data && data.children) {\n for (var i = data.children.length - 1; i >= 0; i--) {\n if (!traverseUp(data.children[i], fn)) return;\n }\n }\n\n if (fn(data) === false) {\n return false;\n }\n\n return true;\n};\n/**\n * depth first traverse, from root to leaves, children in inverse order\n * if the fn returns false, terminate the traverse\n */\n\n\nvar traverseTree = function traverseTree(data, fn) {\n if (typeof fn !== 'function') {\n return;\n }\n\n traverse(data, fn);\n};\n/**\n * depth first traverse, from leaves to root, children in inverse order\n * if the fn returns false, terminate the traverse\n */\n\nvar traverseTreeUp = function traverseTreeUp(data, fn) {\n if (typeof fn !== 'function') {\n return;\n }\n\n traverseUp(data, fn);\n};\n/**\n *\n * @param letter the letter\n * @param fontSize\n * @return the letter's width\n */\n\nvar getLetterWidth = function getLetterWidth(letter, fontSize) {\n return fontSize * (_letterAspectRatio__WEBPACK_IMPORTED_MODULE_4__[\"default\"][letter] || 1);\n};\n/**\n *\n * @param text the text\n * @param fontSize\n * @return the text's size\n */\n\nvar getTextSize = function getTextSize(text, fontSize) {\n var width = 0;\n var pattern = new RegExp(\"[\\u4E00-\\u9FA5]+\");\n text.split('').forEach(function (letter) {\n if (pattern.test(letter)) {\n // 中文字符\n width += fontSize;\n } else {\n width += getLetterWidth(letter, fontSize);\n }\n });\n return [width, fontSize];\n};\n/**\n * construct the trees from combos data\n * @param array the combos array\n * @param nodes the nodes array\n * @return the tree\n */\n\nvar plainCombosToTrees = function plainCombosToTrees(array, nodes) {\n var result = [];\n var addedMap = {};\n var modelMap = {};\n array.forEach(function (d) {\n modelMap[d.id] = d;\n });\n array.forEach(function (d, i) {\n var cd = Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"clone\"])(d);\n cd.itemType = 'combo';\n cd.children = undefined;\n\n if (cd.parentId === cd.id) {\n console.warn(\"The parentId for combo \" + cd.id + \" can not be the same as the combo's id\");\n delete cd.parentId;\n } else if (cd.parentId && !modelMap[cd.parentId]) {\n console.warn(\"The parent combo for combo \" + cd.id + \" does not exist!\");\n delete cd.parentId;\n }\n\n var mappedObj = addedMap[cd.id];\n\n if (mappedObj) {\n cd.children = mappedObj.children;\n addedMap[cd.id] = cd;\n mappedObj = cd;\n\n if (!mappedObj.parentId) {\n result.push(mappedObj);\n return;\n }\n\n var mappedParent = addedMap[mappedObj.parentId];\n\n if (mappedParent) {\n if (mappedParent.children) mappedParent.children.push(cd);else mappedParent.children = [cd];\n } else {\n var parent_1 = {\n id: mappedObj.parentId,\n children: [mappedObj]\n };\n addedMap[mappedObj.parentId] = parent_1;\n addedMap[cd.id] = cd;\n }\n\n return;\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isString\"])(d.parentId)) {\n var parent_2 = addedMap[d.parentId];\n\n if (parent_2) {\n if (parent_2.children) parent_2.children.push(cd);else parent_2.children = [cd];\n addedMap[cd.id] = cd;\n } else {\n var pa = {\n id: d.parentId,\n children: [cd]\n };\n addedMap[pa.id] = pa;\n addedMap[cd.id] = cd;\n }\n } else {\n result.push(cd);\n addedMap[cd.id] = cd;\n }\n }); // proccess the nodes\n\n var nodeMap = {};\n (nodes || []).forEach(function (node) {\n nodeMap[node.id] = node;\n var combo = addedMap[node.comboId];\n\n if (combo) {\n var cnode = {\n id: node.id,\n comboId: node.comboId\n };\n if (combo.children) combo.children.push(cnode);else combo.children = [cnode];\n cnode.itemType = 'node';\n addedMap[node.id] = cnode;\n }\n }); // assign the depth for each element\n\n var maxDepth = 0;\n result.forEach(function (tree) {\n tree.depth = maxDepth + 10;\n traverse(tree, function (child) {\n var parent;\n var itemType = addedMap[child.id].itemType;\n\n if (itemType === 'node') {\n parent = addedMap[child.comboId];\n } else {\n parent = addedMap[child.parentId];\n }\n\n if (parent) {\n if (itemType === 'node') child.depth = maxDepth + 1;else child.depth = maxDepth + 10;\n } else {\n child.depth = maxDepth + 10;\n }\n\n if (maxDepth < child.depth) maxDepth = child.depth;\n var oriNodeModel = nodeMap[child.id];\n\n if (oriNodeModel) {\n oriNodeModel.depth = child.depth;\n }\n\n return true;\n });\n });\n return result;\n};\nvar reconstructTree = function reconstructTree(trees, subtreeId, newParentId) {\n var brothers = trees;\n var subtree;\n var comboChildsMap = {\n root: {\n children: trees\n }\n };\n var foundSubTree = false;\n var oldParentId = 'root';\n (trees || []).forEach(function (tree) {\n if (foundSubTree) return;\n\n if (tree.id === subtreeId) {\n subtree = tree;\n\n if (tree.itemType === 'combo') {\n subtree.parentId = newParentId;\n } else {\n subtree.comboId = newParentId;\n }\n\n foundSubTree = true;\n return;\n }\n\n traverseTree(tree, function (child) {\n comboChildsMap[child.id] = {\n children: child.children\n }; // store the old parent id to delete the subtree from the old parent's children in next recursion\n\n brothers = comboChildsMap[child.parentId || child.comboId || 'root'].children;\n\n if (child && (child.removed || subtreeId === child.id) && brothers) {\n oldParentId = child.parentId || child.comboId || 'root';\n subtree = child; // re-assign the parentId or comboId for the moved subtree\n\n if (child.itemType === 'combo') {\n subtree.parentId = newParentId;\n } else {\n subtree.comboId = newParentId;\n }\n\n foundSubTree = true;\n return false;\n }\n\n return true;\n });\n });\n brothers = comboChildsMap[oldParentId].children;\n var index = brothers ? brothers.indexOf(subtree) : -1;\n if (index > -1) brothers.splice(index, 1); // 如果遍历完整棵树还没有找到,说明之前就不在树中\n\n if (!foundSubTree) {\n subtree = {\n id: subtreeId,\n itemType: 'node',\n comboId: newParentId\n };\n comboChildsMap[subtreeId] = {\n children: undefined\n };\n } // append to new parent\n\n\n if (subtreeId) {\n var found_1 = false; // newParentId is undefined means the subtree will have no parent\n\n if (newParentId) {\n var newParentDepth_1 = 0;\n (trees || []).forEach(function (tree) {\n if (found_1) return; // terminate\n\n traverseTree(tree, function (child) {\n // append subtree to the new parent ans assign the depth to the subtree\n if (newParentId === child.id) {\n found_1 = true;\n if (child.children) child.children.push(subtree);else child.children = [subtree];\n newParentDepth_1 = child.depth;\n if (subtree.itemType === 'node') subtree.depth = newParentDepth_1 + 2;else subtree.depth = newParentDepth_1 + 1;\n return false; // terminate\n }\n\n return true;\n });\n });\n } else if ((!newParentId || !found_1) && subtree.itemType !== 'node') {\n // if the newParentId is undefined or it is not found in the tree, add the subTree to the root\n trees.push(subtree);\n } // update the depth of the subtree and its children from the subtree\n\n\n var currentDepth_1 = subtree.depth;\n traverseTree(subtree, function (child) {\n if (child.itemType === 'node') currentDepth_1 += 2;else currentDepth_1 += 1;\n child.depth = currentDepth_1;\n return true;\n });\n }\n\n return trees;\n};\nvar getComboBBox = function getComboBBox(children, graph) {\n var comboBBox = {\n minX: Infinity,\n minY: Infinity,\n maxX: -Infinity,\n maxY: -Infinity,\n x: undefined,\n y: undefined,\n width: undefined,\n height: undefined,\n centerX: undefined,\n centerY: undefined\n };\n\n if (!children || children.length === 0) {\n return comboBBox;\n }\n\n children.forEach(function (child) {\n var childItem = graph.findById(child.id);\n if (!childItem || !childItem.isVisible()) return; // ignore hidden children\n\n childItem.set('bboxCanvasCache', undefined);\n var childBBox = childItem.getCanvasBBox();\n if (childBBox.x && comboBBox.minX > childBBox.minX) comboBBox.minX = childBBox.minX;\n if (childBBox.y && comboBBox.minY > childBBox.minY) comboBBox.minY = childBBox.minY;\n if (childBBox.x && comboBBox.maxX < childBBox.maxX) comboBBox.maxX = childBBox.maxX;\n if (childBBox.y && comboBBox.maxY < childBBox.maxY) comboBBox.maxY = childBBox.maxY;\n });\n comboBBox.x = (comboBBox.minX + comboBBox.maxX) / 2;\n comboBBox.y = (comboBBox.minY + comboBBox.maxY) / 2;\n comboBBox.width = comboBBox.maxX - comboBBox.minX;\n comboBBox.height = comboBBox.maxY - comboBBox.minY;\n comboBBox.centerX = (comboBBox.minX + comboBBox.maxX) / 2;\n comboBBox.centerY = (comboBBox.minY + comboBBox.maxY) / 2;\n Object.keys(comboBBox).forEach(function (key) {\n if (comboBBox[key] === Infinity || comboBBox[key] === -Infinity) {\n comboBBox[key] = undefined;\n }\n });\n return comboBBox;\n};\nvar shouldRefreshEdge = function shouldRefreshEdge(cfg) {\n var refreshEdge = Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isNumber\"])(cfg.x) || Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isNumber\"])(cfg.y) || cfg.type || cfg.anchorPoints || cfg.size;\n if (cfg.style) refreshEdge = refreshEdge || Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isNumber\"])(cfg.style.r) || Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isNumber\"])(cfg.style.width) || Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isNumber\"])(cfg.style.height) || Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isNumber\"])(cfg.style.rx) || Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isNumber\"])(cfg.style.ry);\n return refreshEdge;\n};\nvar cloneBesidesImg = function cloneBesidesImg(obj) {\n var clonedObj = {};\n Object.keys(obj).forEach(function (key1) {\n var obj2 = obj[key1];\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isObject\"])(obj2) && !Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isArray\"])(obj2)) {\n var clonedObj2_1 = {};\n Object.keys(obj2).forEach(function (key2) {\n var v = obj2[key2];\n if (key2 === 'img' && !Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"isString\"])(v)) return;\n clonedObj2_1[key2] = Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"clone\"])(v);\n });\n clonedObj[key1] = clonedObj2_1;\n } else {\n clonedObj[key1] = Object(_antv_util__WEBPACK_IMPORTED_MODULE_5__[\"clone\"])(obj2);\n }\n });\n return clonedObj;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy91dGlsL2dyYXBoaWMuanM/YTI2YSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNRO0FBQ1Y7QUFDTTtBQUNlO0FBQ3NCO0FBQzFFO0FBQ0E7QUFDQSxtQkFBbUI7O0FBRW5CO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGNBQWMseURBQVc7QUFDekIsa0JBQWtCLHlEQUFXO0FBQzdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDOztBQUVsQyxtRUFBbUU7O0FBRW5FLHFDQUFxQywrQ0FBTSxxQkFBcUI7O0FBRWhFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7O0FBRXpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHVCQUF1QixzREFBSTtBQUMzQjtBQUNBO0FBQ0EscUJBQXFCLHNEQUFJO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsUUFBUTtBQUNuQixZQUFZLE9BQU87QUFDbkI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsOEJBQThCOztBQUU5QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsV0FBVyxzREFBUTtBQUNuQjtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQ0FBMEMsUUFBUTtBQUNsRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0EsMENBQTBDLFFBQVE7QUFDbEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1AscUJBQXFCLDBEQUFpQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsYUFBYSx3REFBSztBQUNsQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxrRUFBa0U7QUFDbEUsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsUUFBUSwyREFBUTtBQUNoQjs7QUFFQTtBQUNBLDBEQUEwRDtBQUMxRDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRDtBQUNyRDtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLDREQUE0RDtBQUM1RCxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUTs7QUFFUjs7QUFFQTtBQUNBO0FBQ0Esd0JBQXdCOztBQUV4QjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0EsNENBQTRDOztBQUU1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBLHdCQUF3Qjs7QUFFeEI7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCOztBQUU1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZEQUE2RDtBQUM3RDtBQUNBLGtGQUFrRjtBQUNsRix5QkFBeUI7QUFDekI7O0FBRUE7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBLHlEQUF5RDtBQUN6RDtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHFEQUFxRDs7QUFFckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDTztBQUNQLG9CQUFvQiwyREFBUSxXQUFXLDJEQUFRO0FBQy9DLDhDQUE4QywyREFBUSxpQkFBaUIsMkRBQVEscUJBQXFCLDJEQUFRLHNCQUFzQiwyREFBUSxrQkFBa0IsMkRBQVE7QUFDcEs7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBOztBQUVBLFFBQVEsMkRBQVEsV0FBVywwREFBTztBQUNsQztBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsMkRBQVE7QUFDdkMsNkJBQTZCLHdEQUFLO0FBQ2xDLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTCx3QkFBd0Isd0RBQUs7QUFDN0I7QUFDQSxHQUFHO0FBQ0g7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtY29yZUAwLjUuMEBAYW50di9nNi1jb3JlL2VzL3V0aWwvZ3JhcGhpYy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyB2ZWMyIH0gZnJvbSAnQGFudHYvbWF0cml4LXV0aWwnO1xuaW1wb3J0IEdsb2JhbCBmcm9tICcuLi9nbG9iYWwnO1xuaW1wb3J0IHsgYXBwbHlNYXRyaXggfSBmcm9tICcuL21hdGgnO1xuaW1wb3J0IGxldHRlckFzcGVjdFJhdGlvIGZyb20gJy4vbGV0dGVyQXNwZWN0UmF0aW8nO1xuaW1wb3J0IHsgaXNTdHJpbmcsIGNsb25lLCBpc051bWJlciwgaXNPYmplY3QsIGlzQXJyYXkgfSBmcm9tICdAYW50di91dGlsJztcbnZhciBQSSA9IE1hdGguUEksXG4gICAgc2luID0gTWF0aC5zaW4sXG4gICAgY29zID0gTWF0aC5jb3M7IC8vIOS4gOWFseaUr+aMgTjkuKrmlrnlkJHnmoToh6rnjq/vvIzmr4/kuKrnjq/ljaDnmoTop5LluqbmmK80NeW6pu+8jOWcqOiuoeeul+aXtuWGjeS6jOWIhu+8jOS4ujIyLjXluqZcblxudmFyIFNFTEZfTElOS19TSU4gPSBzaW4oUEkgLyA4KTtcbnZhciBTRUxGX0xJTktfQ09TID0gY29zKFBJIC8gOCk7XG5leHBvcnQgdmFyIGdldEJCb3ggPSBmdW5jdGlvbiBnZXRCQm94KGVsZW1lbnQsIGdyb3VwKSB7XG4gIHZhciBiYm94ID0gZWxlbWVudC5nZXRCQm94KCk7XG4gIHZhciBsZWZ0VG9wID0ge1xuICAgIHg6IGJib3gubWluWCxcbiAgICB5OiBiYm94Lm1pbllcbiAgfTtcbiAgdmFyIHJpZ2h0Qm90dG9tID0ge1xuICAgIHg6IGJib3gubWF4WCxcbiAgICB5OiBiYm94Lm1heFlcbiAgfTsgLy8g5qC55o2u54i25YWD57Sg5Y+Y5o2i55+p6Zi1XG5cbiAgaWYgKGdyb3VwKSB7XG4gICAgdmFyIG1hdHJpeCA9IGdyb3VwLmdldE1hdHJpeCgpO1xuXG4gICAgaWYgKCFtYXRyaXgpIHtcbiAgICAgIG1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgICB9XG5cbiAgICBsZWZ0VG9wID0gYXBwbHlNYXRyaXgobGVmdFRvcCwgbWF0cml4KTtcbiAgICByaWdodEJvdHRvbSA9IGFwcGx5TWF0cml4KHJpZ2h0Qm90dG9tLCBtYXRyaXgpO1xuICB9XG5cbiAgdmFyIGx4ID0gbGVmdFRvcC54LFxuICAgICAgbHkgPSBsZWZ0VG9wLnk7XG4gIHZhciByeCA9IHJpZ2h0Qm90dG9tLngsXG4gICAgICByeSA9IHJpZ2h0Qm90dG9tLnk7XG4gIHJldHVybiB7XG4gICAgeDogbHgsXG4gICAgeTogbHksXG4gICAgbWluWDogbHgsXG4gICAgbWluWTogbHksXG4gICAgbWF4WDogcngsXG4gICAgbWF4WTogcnksXG4gICAgd2lkdGg6IHJ4IC0gbHgsXG4gICAgaGVpZ2h0OiByeSAtIGx5XG4gIH07XG59O1xuLyoqXG4gKiBnZXQgbG9vcCBlZGdlIGNvbmZpZ1xuICogQHBhcmFtIGNmZyBlZGdlIGNvbmZpZ1xuICovXG5cbmV4cG9ydCB2YXIgZ2V0TG9vcENmZ3MgPSBmdW5jdGlvbiBnZXRMb29wQ2ZncyhjZmcpIHtcbiAgdmFyIGl0ZW0gPSBjZmcuc291cmNlTm9kZSB8fCBjZmcudGFyZ2V0Tm9kZTtcbiAgdmFyIGNvbnRhaW5lciA9IGl0ZW0uZ2V0KCdncm91cCcpO1xuICB2YXIgY29udGFpbmVyTWF0cml4ID0gY29udGFpbmVyLmdldE1hdHJpeCgpO1xuICBpZiAoIWNvbnRhaW5lck1hdHJpeCkgY29udGFpbmVyTWF0cml4ID0gWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuICB2YXIga2V5U2hhcGUgPSBpdGVtLmdldEtleVNoYXBlKCk7XG4gIHZhciBiYm94ID0ga2V5U2hhcGUuZ2V0QkJveCgpO1xuICB2YXIgbG9vcENmZyA9IGNmZy5sb29wQ2ZnIHx8IHt9OyAvLyDot53nprtrZXlTaGFwZei+ueeahOacgOmrmOi3neemu1xuXG4gIHZhciBkaXN0ID0gbG9vcENmZy5kaXN0IHx8IE1hdGgubWF4KGJib3gud2lkdGgsIGJib3guaGVpZ2h0KSAqIDI7IC8vIOiHqueOr+i+ueS4jmtleVNoYXBl55qE55u45a+55L2N572u5YWz57O7XG5cbiAgdmFyIHBvc2l0aW9uID0gbG9vcENmZy5wb3NpdGlvbiB8fCBHbG9iYWwuZGVmYXVsdExvb3BQb3NpdGlvbjsgLy8g5Lit5b+D5Y+WZ3JvdXDkuIrnnJ/lrp7kvY3nva5cblxuICB2YXIgY2VudGVyID0gW2NvbnRhaW5lck1hdHJpeFs2XSwgY29udGFpbmVyTWF0cml4WzddXTtcbiAgdmFyIHN0YXJ0UG9pbnQgPSBbY2ZnLnN0YXJ0UG9pbnQueCwgY2ZnLnN0YXJ0UG9pbnQueV07XG4gIHZhciBlbmRQb2ludCA9IFtjZmcuZW5kUG9pbnQueCwgY2ZnLmVuZFBvaW50LnldO1xuICB2YXIgcnN0YXJ0ID0gYmJveC5oZWlnaHQgLyAyO1xuICB2YXIgcmVuZCA9IGJib3guaGVpZ2h0IC8gMjtcbiAgdmFyIHNpbkRlbHRhU3RhcnQgPSByc3RhcnQgKiBTRUxGX0xJTktfU0lOO1xuICB2YXIgY29zRGVsdGFTdGFydCA9IHJzdGFydCAqIFNFTEZfTElOS19DT1M7XG4gIHZhciBzaW5EZWx0YUVuZCA9IHJlbmQgKiBTRUxGX0xJTktfU0lOO1xuICB2YXIgY29zRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX0NPUzsgLy8g5aaC5p6c5a6a5LmJ5LqG6ZSa54K555qE77yM55u05o6l55So6ZSa54K55Z2Q5qCH77yM5ZCm5YiZ77yM5qC55o2u6Ieq546v55qEIGNmZyDorqHnrpdcblxuICBpZiAoc3RhcnRQb2ludFswXSA9PT0gZW5kUG9pbnRbMF0gJiYgc3RhcnRQb2ludFsxXSA9PT0gZW5kUG9pbnRbMV0pIHtcbiAgICBzd2l0Y2ggKHBvc2l0aW9uKSB7XG4gICAgICBjYXNlICd0b3AnOlxuICAgICAgICBzdGFydFBvaW50ID0gW2NlbnRlclswXSAtIHNpbkRlbHRhU3RhcnQsIGNlbnRlclsxXSAtIGNvc0RlbHRhU3RhcnRdO1xuICAgICAgICBlbmRQb2ludCA9IFtjZW50ZXJbMF0gKyBzaW5EZWx0YUVuZCwgY2VudGVyWzFdIC0gY29zRGVsdGFFbmRdO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAndG9wLXJpZ2h0JzpcbiAgICAgICAgcnN0YXJ0ID0gYmJveC5oZWlnaHQgLyAyO1xuICAgICAgICByZW5kID0gYmJveC53aWR0aCAvIDI7XG4gICAgICAgIHNpbkRlbHRhU3RhcnQgPSByc3RhcnQgKiBTRUxGX0xJTktfU0lOO1xuICAgICAgICBjb3NEZWx0YVN0YXJ0ID0gcnN0YXJ0ICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc2luRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX1NJTjtcbiAgICAgICAgY29zRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc3RhcnRQb2ludCA9IFtjZW50ZXJbMF0gKyBzaW5EZWx0YVN0YXJ0LCBjZW50ZXJbMV0gLSBjb3NEZWx0YVN0YXJ0XTtcbiAgICAgICAgZW5kUG9pbnQgPSBbY2VudGVyWzBdICsgY29zRGVsdGFFbmQsIGNlbnRlclsxXSAtIHNpbkRlbHRhRW5kXTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgcnN0YXJ0ID0gYmJveC53aWR0aCAvIDI7XG4gICAgICAgIHJlbmQgPSBiYm94LndpZHRoIC8gMjtcbiAgICAgICAgc2luRGVsdGFTdGFydCA9IHJzdGFydCAqIFNFTEZfTElOS19TSU47XG4gICAgICAgIGNvc0RlbHRhU3RhcnQgPSByc3RhcnQgKiBTRUxGX0xJTktfQ09TO1xuICAgICAgICBzaW5EZWx0YUVuZCA9IHJlbmQgKiBTRUxGX0xJTktfU0lOO1xuICAgICAgICBjb3NEZWx0YUVuZCA9IHJlbmQgKiBTRUxGX0xJTktfQ09TO1xuICAgICAgICBzdGFydFBvaW50ID0gW2NlbnRlclswXSArIGNvc0RlbHRhU3RhcnQsIGNlbnRlclsxXSAtIHNpbkRlbHRhU3RhcnRdO1xuICAgICAgICBlbmRQb2ludCA9IFtjZW50ZXJbMF0gKyBjb3NEZWx0YUVuZCwgY2VudGVyWzFdICsgc2luRGVsdGFFbmRdO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYm90dG9tLXJpZ2h0JzpcbiAgICAgICAgcnN0YXJ0ID0gYmJveC53aWR0aCAvIDI7XG4gICAgICAgIHJlbmQgPSBiYm94LmhlaWdodCAvIDI7XG4gICAgICAgIHNpbkRlbHRhU3RhcnQgPSByc3RhcnQgKiBTRUxGX0xJTktfU0lOO1xuICAgICAgICBjb3NEZWx0YVN0YXJ0ID0gcnN0YXJ0ICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc2luRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX1NJTjtcbiAgICAgICAgY29zRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc3RhcnRQb2ludCA9IFtjZW50ZXJbMF0gKyBjb3NEZWx0YVN0YXJ0LCBjZW50ZXJbMV0gKyBzaW5EZWx0YVN0YXJ0XTtcbiAgICAgICAgZW5kUG9pbnQgPSBbY2VudGVyWzBdICsgc2luRGVsdGFFbmQsIGNlbnRlclsxXSArIGNvc0RlbHRhRW5kXTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgIHJzdGFydCA9IGJib3guaGVpZ2h0IC8gMjtcbiAgICAgICAgcmVuZCA9IGJib3guaGVpZ2h0IC8gMjtcbiAgICAgICAgc2luRGVsdGFTdGFydCA9IHJzdGFydCAqIFNFTEZfTElOS19TSU47XG4gICAgICAgIGNvc0RlbHRhU3RhcnQgPSByc3RhcnQgKiBTRUxGX0xJTktfQ09TO1xuICAgICAgICBzaW5EZWx0YUVuZCA9IHJlbmQgKiBTRUxGX0xJTktfU0lOO1xuICAgICAgICBjb3NEZWx0YUVuZCA9IHJlbmQgKiBTRUxGX0xJTktfQ09TO1xuICAgICAgICBzdGFydFBvaW50ID0gW2NlbnRlclswXSArIHNpbkRlbHRhU3RhcnQsIGNlbnRlclsxXSArIGNvc0RlbHRhU3RhcnRdO1xuICAgICAgICBlbmRQb2ludCA9IFtjZW50ZXJbMF0gLSBzaW5EZWx0YUVuZCwgY2VudGVyWzFdICsgY29zRGVsdGFFbmRdO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYm90dG9tLWxlZnQnOlxuICAgICAgICByc3RhcnQgPSBiYm94LmhlaWdodCAvIDI7XG4gICAgICAgIHJlbmQgPSBiYm94LndpZHRoIC8gMjtcbiAgICAgICAgc2luRGVsdGFTdGFydCA9IHJzdGFydCAqIFNFTEZfTElOS19TSU47XG4gICAgICAgIGNvc0RlbHRhU3RhcnQgPSByc3RhcnQgKiBTRUxGX0xJTktfQ09TO1xuICAgICAgICBzaW5EZWx0YUVuZCA9IHJlbmQgKiBTRUxGX0xJTktfU0lOO1xuICAgICAgICBjb3NEZWx0YUVuZCA9IHJlbmQgKiBTRUxGX0xJTktfQ09TO1xuICAgICAgICBzdGFydFBvaW50ID0gW2NlbnRlclswXSAtIHNpbkRlbHRhU3RhcnQsIGNlbnRlclsxXSArIGNvc0RlbHRhU3RhcnRdO1xuICAgICAgICBlbmRQb2ludCA9IFtjZW50ZXJbMF0gLSBjb3NEZWx0YUVuZCwgY2VudGVyWzFdICsgc2luRGVsdGFFbmRdO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgIHJzdGFydCA9IGJib3gud2lkdGggLyAyO1xuICAgICAgICByZW5kID0gYmJveC53aWR0aCAvIDI7XG4gICAgICAgIHNpbkRlbHRhU3RhcnQgPSByc3RhcnQgKiBTRUxGX0xJTktfU0lOO1xuICAgICAgICBjb3NEZWx0YVN0YXJ0ID0gcnN0YXJ0ICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc2luRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX1NJTjtcbiAgICAgICAgY29zRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc3RhcnRQb2ludCA9IFtjZW50ZXJbMF0gLSBjb3NEZWx0YVN0YXJ0LCBjZW50ZXJbMV0gKyBzaW5EZWx0YVN0YXJ0XTtcbiAgICAgICAgZW5kUG9pbnQgPSBbY2VudGVyWzBdIC0gY29zRGVsdGFFbmQsIGNlbnRlclsxXSAtIHNpbkRlbHRhRW5kXTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3RvcC1sZWZ0JzpcbiAgICAgICAgcnN0YXJ0ID0gYmJveC53aWR0aCAvIDI7XG4gICAgICAgIHJlbmQgPSBiYm94LmhlaWdodCAvIDI7XG4gICAgICAgIHNpbkRlbHRhU3RhcnQgPSByc3RhcnQgKiBTRUxGX0xJTktfU0lOO1xuICAgICAgICBjb3NEZWx0YVN0YXJ0ID0gcnN0YXJ0ICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc2luRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX1NJTjtcbiAgICAgICAgY29zRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc3RhcnRQb2ludCA9IFtjZW50ZXJbMF0gLSBjb3NEZWx0YVN0YXJ0LCBjZW50ZXJbMV0gLSBzaW5EZWx0YVN0YXJ0XTtcbiAgICAgICAgZW5kUG9pbnQgPSBbY2VudGVyWzBdIC0gc2luRGVsdGFFbmQsIGNlbnRlclsxXSAtIGNvc0RlbHRhRW5kXTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJzdGFydCA9IGJib3gud2lkdGggLyAyO1xuICAgICAgICByZW5kID0gYmJveC53aWR0aCAvIDI7XG4gICAgICAgIHNpbkRlbHRhU3RhcnQgPSByc3RhcnQgKiBTRUxGX0xJTktfU0lOO1xuICAgICAgICBjb3NEZWx0YVN0YXJ0ID0gcnN0YXJ0ICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc2luRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX1NJTjtcbiAgICAgICAgY29zRGVsdGFFbmQgPSByZW5kICogU0VMRl9MSU5LX0NPUztcbiAgICAgICAgc3RhcnRQb2ludCA9IFtjZW50ZXJbMF0gLSBzaW5EZWx0YVN0YXJ0LCBjZW50ZXJbMV0gLSBjb3NEZWx0YVN0YXJ0XTtcbiAgICAgICAgZW5kUG9pbnQgPSBbY2VudGVyWzBdICsgc2luRGVsdGFFbmQsIGNlbnRlclsxXSAtIGNvc0RlbHRhRW5kXTtcbiAgICB9IC8vIOWmguaenOmAhuaXtumSiOeUu++8jOS6pOaNoui1t+eCueWSjOe7iOeCuVxuXG5cbiAgICBpZiAobG9vcENmZy5jbG9ja3dpc2UgPT09IGZhbHNlKSB7XG4gICAgICB2YXIgc3dhcCA9IFtzdGFydFBvaW50WzBdLCBzdGFydFBvaW50WzFdXTtcbiAgICAgIHN0YXJ0UG9pbnQgPSBbZW5kUG9pbnRbMF0sIGVuZFBvaW50WzFdXTtcbiAgICAgIGVuZFBvaW50ID0gW3N3YXBbMF0sIHN3YXBbMV1dO1xuICAgIH1cbiAgfVxuXG4gIHZhciBzdGFydFZlYyA9IFtzdGFydFBvaW50WzBdIC0gY2VudGVyWzBdLCBzdGFydFBvaW50WzFdIC0gY2VudGVyWzFdXTtcbiAgdmFyIHNjYWxlUmF0ZVN0YXJ0ID0gKHJzdGFydCArIGRpc3QpIC8gcnN0YXJ0O1xuICB2YXIgc2NhbGVSYXRlRW5kID0gKHJlbmQgKyBkaXN0KSAvIHJlbmQ7XG5cbiAgaWYgKGxvb3BDZmcuY2xvY2t3aXNlID09PSBmYWxzZSkge1xuICAgIHNjYWxlUmF0ZVN0YXJ0ID0gKHJlbmQgKyBkaXN0KSAvIHJlbmQ7XG4gICAgc2NhbGVSYXRlRW5kID0gKHJzdGFydCArIGRpc3QpIC8gcnN0YXJ0O1xuICB9XG5cbiAgdmFyIHN0YXJ0RXh0ZW5kVmVjID0gdmVjMi5zY2FsZShbMCwgMF0sIHN0YXJ0VmVjLCBzY2FsZVJhdGVTdGFydCk7XG4gIHZhciBjb250cm9sUG9pbnQxID0gW2NlbnRlclswXSArIHN0YXJ0RXh0ZW5kVmVjWzBdLCBjZW50ZXJbMV0gKyBzdGFydEV4dGVuZFZlY1sxXV07XG4gIHZhciBlbmRWZWMgPSBbZW5kUG9pbnRbMF0gLSBjZW50ZXJbMF0sIGVuZFBvaW50WzFdIC0gY2VudGVyWzFdXTtcbiAgdmFyIGVuZEV4dGVuZFZlYyA9IHZlYzIuc2NhbGUoWzAsIDBdLCBlbmRWZWMsIHNjYWxlUmF0ZUVuZCk7XG4gIHZhciBjb250cm9sUG9pbnQyID0gW2NlbnRlclswXSArIGVuZEV4dGVuZFZlY1swXSwgY2VudGVyWzFdICsgZW5kRXh0ZW5kVmVjWzFdXTtcbiAgY2ZnLnN0YXJ0UG9pbnQgPSB7XG4gICAgeDogc3RhcnRQb2ludFswXSxcbiAgICB5OiBzdGFydFBvaW50WzFdXG4gIH07XG4gIGNmZy5lbmRQb2ludCA9IHtcbiAgICB4OiBlbmRQb2ludFswXSxcbiAgICB5OiBlbmRQb2ludFsxXVxuICB9O1xuICBjZmcuY29udHJvbFBvaW50cyA9IFt7XG4gICAgeDogY29udHJvbFBvaW50MVswXSxcbiAgICB5OiBjb250cm9sUG9pbnQxWzFdXG4gIH0sIHtcbiAgICB4OiBjb250cm9sUG9pbnQyWzBdLFxuICAgIHk6IGNvbnRyb2xQb2ludDJbMV1cbiAgfV07XG4gIHJldHVybiBjZmc7XG59O1xuLyoqXG4gKiDmoLnmja4gbGFiZWwg5omA5Zyo57q/5p2h55qE5L2N572u55m+5YiG5q+U77yM6K6h566XIGxhYmVsIOWdkOagh1xuICogQHBhcmFtIHtvYmplY3R9ICBwYXRoU2hhcGUgIEcg55qEIHBhdGgg5a6e5L6L77yM5LiA6Iis5pivIEVkZ2Ug5a6e5L6L55qEIGtleVNoYXBlXG4gKiBAcGFyYW0ge251bWJlcn0gIHBlcmNlbnQgICAg6IyD5Zu0IDAgLSAxIOeahOe6v+adoeeZvuWIhuavlFxuICogQHBhcmFtIHtudW1iZXJ9ICByZWZYICAgICB4IOi9tOato+aWueWQkeS4uuWfuuWHhueahCBsYWJlbCDlgY/np7tcbiAqIEBwYXJhbSB7bnVtYmVyfSAgcmVmWSAgICAgeSDovbTmraPmlrnlkJHkuLrln7rlh4bnmoQgbGFiZWwg5YGP56e7XG4gKiBAcGFyYW0ge2Jvb2xlYW59IHJvdGF0ZSAgICAg5piv5ZCm5qC55o2u57q/5p2h5pac546H5peL6L2s5paH5pysXG4gKiBAcmV0dXJuIHtvYmplY3R9IOaWh+acrOeahCB4LCB5LCDmlofmnKznmoTml4vovazop5LluqZcbiAqL1xuXG5leHBvcnQgdmFyIGdldExhYmVsUG9zaXRpb24gPSBmdW5jdGlvbiBnZXRMYWJlbFBvc2l0aW9uKHBhdGhTaGFwZSwgcGVyY2VudCwgcmVmWCwgcmVmWSwgcm90YXRlKSB7XG4gIHZhciBUQU5fT0ZGU0VUID0gMC4wMDAxO1xuICB2YXIgdmVjdG9yID0gW107XG4gIHZhciBwb2ludCA9IHBhdGhTaGFwZSA9PT0gbnVsbCB8fCBwYXRoU2hhcGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhdGhTaGFwZS5nZXRQb2ludChwZXJjZW50KTtcblxuICBpZiAoIXBvaW50KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwLFxuICAgICAgYW5nbGU6IDBcbiAgICB9O1xuICB9IC8vIOWktOWwvuacgOWPr+iDve+8jOaUvuWcqOacgOWJjemdou+8jOS9v+eUqCBnIHBhdGgg5LiK5bCB6KOF55qE5pa55rOVXG5cblxuICBpZiAocGVyY2VudCA8IFRBTl9PRkZTRVQpIHtcbiAgICB2ZWN0b3IgPSBwYXRoU2hhcGUuZ2V0U3RhcnRUYW5nZW50KCkucmV2ZXJzZSgpO1xuICB9IGVsc2UgaWYgKHBlcmNlbnQgPiAxIC0gVEFOX09GRlNFVCkge1xuICAgIHZlY3RvciA9IHBhdGhTaGFwZS5nZXRFbmRUYW5nZW50KCk7XG4gIH0gZWxzZSB7XG4gICAgLy8g5ZCm5YiZ5Y+W5oyH5a6a5L2N572u55qE54K5LOS4juWwkemHj+WBj+enu+eahOeCue+8jOWBmuW+ruWIhuWQkemHj1xuICAgIHZhciBvZmZzZXRQb2ludCA9IHBhdGhTaGFwZSA9PT0gbnVsbCB8fCBwYXRoU2hhcGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhdGhTaGFwZS5nZXRQb2ludChwZXJjZW50ICsgVEFOX09GRlNFVCk7XG4gICAgdmVjdG9yLnB1c2goW3BvaW50LngsIHBvaW50LnldKTtcbiAgICB2ZWN0b3IucHVzaChbb2Zmc2V0UG9pbnQueCwgb2Zmc2V0UG9pbnQueV0pO1xuICB9XG5cbiAgdmFyIHJhZCA9IE1hdGguYXRhbjIodmVjdG9yWzFdWzFdIC0gdmVjdG9yWzBdWzFdLCB2ZWN0b3JbMV1bMF0gLSB2ZWN0b3JbMF1bMF0pO1xuXG4gIGlmIChyYWQgPCAwKSB7XG4gICAgcmFkICs9IFBJICogMjtcbiAgfVxuXG4gIGlmIChyZWZYKSB7XG4gICAgcG9pbnQueCArPSBjb3MocmFkKSAqIHJlZlg7XG4gICAgcG9pbnQueSArPSBzaW4ocmFkKSAqIHJlZlg7XG4gIH1cblxuICBpZiAocmVmWSkge1xuICAgIC8vIOm7mOiupOaWueWQkeaYryB4IOi9tOato+aWueWQke+8jOazlee6v+aYryDmsYLlh7rop5LluqYgLSA5MMKwXG4gICAgdmFyIG5vcm1hbCA9IHJhZCAtIFBJIC8gMjsgLy8g6Iul5rOV57q/6KeS5bqm5ZyoIHkg6L206LSf5pa55ZCR77yM5YiH5Yiw5q2j5pa55ZCR77yM5L+d6K+BIHJlZlkg55u45a+55LqOIHkg6L205q2j5pa55ZCRXG5cbiAgICBpZiAocmFkID4gMSAvIDIgKiBQSSAmJiByYWQgPCAzICogMSAvIDIgKiBQSSkge1xuICAgICAgbm9ybWFsIC09IFBJO1xuICAgIH1cblxuICAgIHBvaW50LnggKz0gY29zKG5vcm1hbCkgKiByZWZZO1xuICAgIHBvaW50LnkgKz0gc2luKG5vcm1hbCkgKiByZWZZO1xuICB9XG5cbiAgdmFyIHJlc3VsdCA9IHtcbiAgICB4OiBwb2ludC54LFxuICAgIHk6IHBvaW50LnksXG4gICAgYW5nbGU6IHJhZFxuICB9O1xuXG4gIGlmIChyb3RhdGUpIHtcbiAgICBpZiAocmFkID4gMC41ICogUEkgJiYgcmFkIDwgMS41ICogUEkpIHtcbiAgICAgIHJhZCAtPSBQSTtcbiAgICB9XG5cbiAgICByZXR1cm4gX19hc3NpZ24oe1xuICAgICAgcm90YXRlOiByYWRcbiAgICB9LCByZXN1bHQpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4vKipcbiAqIGRlcHRoIGZpcnN0IHRyYXZlcnNlLCBmcm9tIHJvb3QgdG8gbGVhdmVzLCBjaGlsZHJlbiBpbiBpbnZlcnNlIG9yZGVyXG4gKiAgaWYgdGhlIGZuIHJldHVybnMgZmFsc2UsIHRlcm1pbmF0ZSB0aGUgdHJhdmVyc2VcbiAqL1xuXG52YXIgdHJhdmVyc2UgPSBmdW5jdGlvbiB0cmF2ZXJzZShkYXRhLCBmbikge1xuICBpZiAoZm4oZGF0YSkgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKGRhdGEgJiYgZGF0YS5jaGlsZHJlbikge1xuICAgIGZvciAodmFyIGkgPSBkYXRhLmNoaWxkcmVuLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBpZiAoIXRyYXZlcnNlKGRhdGEuY2hpbGRyZW5baV0sIGZuKSkgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcbi8qKlxuICogZGVwdGggZmlyc3QgdHJhdmVyc2UsIGZyb20gbGVhdmVzIHRvIHJvb3QsIGNoaWxkcmVuIGluIGludmVyc2Ugb3JkZXJcbiAqICBpZiB0aGUgZm4gcmV0dXJucyBmYWxzZSwgdGVybWluYXRlIHRoZSB0cmF2ZXJzZVxuICovXG5cblxudmFyIHRyYXZlcnNlVXAgPSBmdW5jdGlvbiB0cmF2ZXJzZVVwKGRhdGEsIGZuKSB7XG4gIGlmIChkYXRhICYmIGRhdGEuY2hpbGRyZW4pIHtcbiAgICBmb3IgKHZhciBpID0gZGF0YS5jaGlsZHJlbi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgaWYgKCF0cmF2ZXJzZVVwKGRhdGEuY2hpbGRyZW5baV0sIGZuKSkgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGlmIChmbihkYXRhKSA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG4vKipcbiAqIGRlcHRoIGZpcnN0IHRyYXZlcnNlLCBmcm9tIHJvb3QgdG8gbGVhdmVzLCBjaGlsZHJlbiBpbiBpbnZlcnNlIG9yZGVyXG4gKiAgaWYgdGhlIGZuIHJldHVybnMgZmFsc2UsIHRlcm1pbmF0ZSB0aGUgdHJhdmVyc2VcbiAqL1xuXG5cbmV4cG9ydCB2YXIgdHJhdmVyc2VUcmVlID0gZnVuY3Rpb24gdHJhdmVyc2VUcmVlKGRhdGEsIGZuKSB7XG4gIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB0cmF2ZXJzZShkYXRhLCBmbik7XG59O1xuLyoqXG4gKiBkZXB0aCBmaXJzdCB0cmF2ZXJzZSwgZnJvbSBsZWF2ZXMgdG8gcm9vdCwgY2hpbGRyZW4gaW4gaW52ZXJzZSBvcmRlclxuICogaWYgdGhlIGZuIHJldHVybnMgZmFsc2UsIHRlcm1pbmF0ZSB0aGUgdHJhdmVyc2VcbiAqL1xuXG5leHBvcnQgdmFyIHRyYXZlcnNlVHJlZVVwID0gZnVuY3Rpb24gdHJhdmVyc2VUcmVlVXAoZGF0YSwgZm4pIHtcbiAgaWYgKHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRyYXZlcnNlVXAoZGF0YSwgZm4pO1xufTtcbi8qKlxuICpcbiAqIEBwYXJhbSBsZXR0ZXIgdGhlIGxldHRlclxuICogQHBhcmFtIGZvbnRTaXplXG4gKiBAcmV0dXJuIHRoZSBsZXR0ZXIncyB3aWR0aFxuICovXG5cbmV4cG9ydCB2YXIgZ2V0TGV0dGVyV2lkdGggPSBmdW5jdGlvbiBnZXRMZXR0ZXJXaWR0aChsZXR0ZXIsIGZvbnRTaXplKSB7XG4gIHJldHVybiBmb250U2l6ZSAqIChsZXR0ZXJBc3BlY3RSYXRpb1tsZXR0ZXJdIHx8IDEpO1xufTtcbi8qKlxuICpcbiAqIEBwYXJhbSB0ZXh0IHRoZSB0ZXh0XG4gKiBAcGFyYW0gZm9udFNpemVcbiAqIEByZXR1cm4gdGhlIHRleHQncyBzaXplXG4gKi9cblxuZXhwb3J0IHZhciBnZXRUZXh0U2l6ZSA9IGZ1bmN0aW9uIGdldFRleHRTaXplKHRleHQsIGZvbnRTaXplKSB7XG4gIHZhciB3aWR0aCA9IDA7XG4gIHZhciBwYXR0ZXJuID0gbmV3IFJlZ0V4cChcIltcXHU0RTAwLVxcdTlGQTVdK1wiKTtcbiAgdGV4dC5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAobGV0dGVyKSB7XG4gICAgaWYgKHBhdHRlcm4udGVzdChsZXR0ZXIpKSB7XG4gICAgICAvLyDkuK3mloflrZfnrKZcbiAgICAgIHdpZHRoICs9IGZvbnRTaXplO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aWR0aCArPSBnZXRMZXR0ZXJXaWR0aChsZXR0ZXIsIGZvbnRTaXplKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gW3dpZHRoLCBmb250U2l6ZV07XG59O1xuLyoqXG4gKiBjb25zdHJ1Y3QgdGhlIHRyZWVzIGZyb20gY29tYm9zIGRhdGFcbiAqIEBwYXJhbSBhcnJheSB0aGUgY29tYm9zIGFycmF5XG4gKiBAcGFyYW0gbm9kZXMgdGhlIG5vZGVzIGFycmF5XG4gKiBAcmV0dXJuIHRoZSB0cmVlXG4gKi9cblxuZXhwb3J0IHZhciBwbGFpbkNvbWJvc1RvVHJlZXMgPSBmdW5jdGlvbiBwbGFpbkNvbWJvc1RvVHJlZXMoYXJyYXksIG5vZGVzKSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGFkZGVkTWFwID0ge307XG4gIHZhciBtb2RlbE1hcCA9IHt9O1xuICBhcnJheS5mb3JFYWNoKGZ1bmN0aW9uIChkKSB7XG4gICAgbW9kZWxNYXBbZC5pZF0gPSBkO1xuICB9KTtcbiAgYXJyYXkuZm9yRWFjaChmdW5jdGlvbiAoZCwgaSkge1xuICAgIHZhciBjZCA9IGNsb25lKGQpO1xuICAgIGNkLml0ZW1UeXBlID0gJ2NvbWJvJztcbiAgICBjZC5jaGlsZHJlbiA9IHVuZGVmaW5lZDtcblxuICAgIGlmIChjZC5wYXJlbnRJZCA9PT0gY2QuaWQpIHtcbiAgICAgIGNvbnNvbGUud2FybihcIlRoZSBwYXJlbnRJZCBmb3IgY29tYm8gXCIgKyBjZC5pZCArIFwiIGNhbiBub3QgYmUgdGhlIHNhbWUgYXMgdGhlIGNvbWJvJ3MgaWRcIik7XG4gICAgICBkZWxldGUgY2QucGFyZW50SWQ7XG4gICAgfSBlbHNlIGlmIChjZC5wYXJlbnRJZCAmJiAhbW9kZWxNYXBbY2QucGFyZW50SWRdKSB7XG4gICAgICBjb25zb2xlLndhcm4oXCJUaGUgcGFyZW50IGNvbWJvIGZvciBjb21ibyBcIiArIGNkLmlkICsgXCIgZG9lcyBub3QgZXhpc3QhXCIpO1xuICAgICAgZGVsZXRlIGNkLnBhcmVudElkO1xuICAgIH1cblxuICAgIHZhciBtYXBwZWRPYmogPSBhZGRlZE1hcFtjZC5pZF07XG5cbiAgICBpZiAobWFwcGVkT2JqKSB7XG4gICAgICBjZC5jaGlsZHJlbiA9IG1hcHBlZE9iai5jaGlsZHJlbjtcbiAgICAgIGFkZGVkTWFwW2NkLmlkXSA9IGNkO1xuICAgICAgbWFwcGVkT2JqID0gY2Q7XG5cbiAgICAgIGlmICghbWFwcGVkT2JqLnBhcmVudElkKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKG1hcHBlZE9iaik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIG1hcHBlZFBhcmVudCA9IGFkZGVkTWFwW21hcHBlZE9iai5wYXJlbnRJZF07XG5cbiAgICAgIGlmIChtYXBwZWRQYXJlbnQpIHtcbiAgICAgICAgaWYgKG1hcHBlZFBhcmVudC5jaGlsZHJlbikgbWFwcGVkUGFyZW50LmNoaWxkcmVuLnB1c2goY2QpO2Vsc2UgbWFwcGVkUGFyZW50LmNoaWxkcmVuID0gW2NkXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBwYXJlbnRfMSA9IHtcbiAgICAgICAgICBpZDogbWFwcGVkT2JqLnBhcmVudElkLFxuICAgICAgICAgIGNoaWxkcmVuOiBbbWFwcGVkT2JqXVxuICAgICAgICB9O1xuICAgICAgICBhZGRlZE1hcFttYXBwZWRPYmoucGFyZW50SWRdID0gcGFyZW50XzE7XG4gICAgICAgIGFkZGVkTWFwW2NkLmlkXSA9IGNkO1xuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGlzU3RyaW5nKGQucGFyZW50SWQpKSB7XG4gICAgICB2YXIgcGFyZW50XzIgPSBhZGRlZE1hcFtkLnBhcmVudElkXTtcblxuICAgICAgaWYgKHBhcmVudF8yKSB7XG4gICAgICAgIGlmIChwYXJlbnRfMi5jaGlsZHJlbikgcGFyZW50XzIuY2hpbGRyZW4ucHVzaChjZCk7ZWxzZSBwYXJlbnRfMi5jaGlsZHJlbiA9IFtjZF07XG4gICAgICAgIGFkZGVkTWFwW2NkLmlkXSA9IGNkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHBhID0ge1xuICAgICAgICAgIGlkOiBkLnBhcmVudElkLFxuICAgICAgICAgIGNoaWxkcmVuOiBbY2RdXG4gICAgICAgIH07XG4gICAgICAgIGFkZGVkTWFwW3BhLmlkXSA9IHBhO1xuICAgICAgICBhZGRlZE1hcFtjZC5pZF0gPSBjZDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0LnB1c2goY2QpO1xuICAgICAgYWRkZWRNYXBbY2QuaWRdID0gY2Q7XG4gICAgfVxuICB9KTsgLy8gcHJvY2Nlc3MgdGhlIG5vZGVzXG5cbiAgdmFyIG5vZGVNYXAgPSB7fTtcbiAgKG5vZGVzIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgbm9kZU1hcFtub2RlLmlkXSA9IG5vZGU7XG4gICAgdmFyIGNvbWJvID0gYWRkZWRNYXBbbm9kZS5jb21ib0lkXTtcblxuICAgIGlmIChjb21ibykge1xuICAgICAgdmFyIGNub2RlID0ge1xuICAgICAgICBpZDogbm9kZS5pZCxcbiAgICAgICAgY29tYm9JZDogbm9kZS5jb21ib0lkXG4gICAgICB9O1xuICAgICAgaWYgKGNvbWJvLmNoaWxkcmVuKSBjb21iby5jaGlsZHJlbi5wdXNoKGNub2RlKTtlbHNlIGNvbWJvLmNoaWxkcmVuID0gW2Nub2RlXTtcbiAgICAgIGNub2RlLml0ZW1UeXBlID0gJ25vZGUnO1xuICAgICAgYWRkZWRNYXBbbm9kZS5pZF0gPSBjbm9kZTtcbiAgICB9XG4gIH0pOyAvLyBhc3NpZ24gdGhlIGRlcHRoIGZvciBlYWNoIGVsZW1lbnRcblxuICB2YXIgbWF4RGVwdGggPSAwO1xuICByZXN1bHQuZm9yRWFjaChmdW5jdGlvbiAodHJlZSkge1xuICAgIHRyZWUuZGVwdGggPSBtYXhEZXB0aCArIDEwO1xuICAgIHRyYXZlcnNlKHRyZWUsIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgdmFyIHBhcmVudDtcbiAgICAgIHZhciBpdGVtVHlwZSA9IGFkZGVkTWFwW2NoaWxkLmlkXS5pdGVtVHlwZTtcblxuICAgICAgaWYgKGl0ZW1UeXBlID09PSAnbm9kZScpIHtcbiAgICAgICAgcGFyZW50ID0gYWRkZWRNYXBbY2hpbGQuY29tYm9JZF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJlbnQgPSBhZGRlZE1hcFtjaGlsZC5wYXJlbnRJZF07XG4gICAgICB9XG5cbiAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgaWYgKGl0ZW1UeXBlID09PSAnbm9kZScpIGNoaWxkLmRlcHRoID0gbWF4RGVwdGggKyAxO2Vsc2UgY2hpbGQuZGVwdGggPSBtYXhEZXB0aCArIDEwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hpbGQuZGVwdGggPSBtYXhEZXB0aCArIDEwO1xuICAgICAgfVxuXG4gICAgICBpZiAobWF4RGVwdGggPCBjaGlsZC5kZXB0aCkgbWF4RGVwdGggPSBjaGlsZC5kZXB0aDtcbiAgICAgIHZhciBvcmlOb2RlTW9kZWwgPSBub2RlTWFwW2NoaWxkLmlkXTtcblxuICAgICAgaWYgKG9yaU5vZGVNb2RlbCkge1xuICAgICAgICBvcmlOb2RlTW9kZWwuZGVwdGggPSBjaGlsZC5kZXB0aDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufTtcbmV4cG9ydCB2YXIgcmVjb25zdHJ1Y3RUcmVlID0gZnVuY3Rpb24gcmVjb25zdHJ1Y3RUcmVlKHRyZWVzLCBzdWJ0cmVlSWQsIG5ld1BhcmVudElkKSB7XG4gIHZhciBicm90aGVycyA9IHRyZWVzO1xuICB2YXIgc3VidHJlZTtcbiAgdmFyIGNvbWJvQ2hpbGRzTWFwID0ge1xuICAgIHJvb3Q6IHtcbiAgICAgIGNoaWxkcmVuOiB0cmVlc1xuICAgIH1cbiAgfTtcbiAgdmFyIGZvdW5kU3ViVHJlZSA9IGZhbHNlO1xuICB2YXIgb2xkUGFyZW50SWQgPSAncm9vdCc7XG4gICh0cmVlcyB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbiAodHJlZSkge1xuICAgIGlmIChmb3VuZFN1YlRyZWUpIHJldHVybjtcblxuICAgIGlmICh0cmVlLmlkID09PSBzdWJ0cmVlSWQpIHtcbiAgICAgIHN1YnRyZWUgPSB0cmVlO1xuXG4gICAgICBpZiAodHJlZS5pdGVtVHlwZSA9PT0gJ2NvbWJvJykge1xuICAgICAgICBzdWJ0cmVlLnBhcmVudElkID0gbmV3UGFyZW50SWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdWJ0cmVlLmNvbWJvSWQgPSBuZXdQYXJlbnRJZDtcbiAgICAgIH1cblxuICAgICAgZm91bmRTdWJUcmVlID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cmF2ZXJzZVRyZWUodHJlZSwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICBjb21ib0NoaWxkc01hcFtjaGlsZC5pZF0gPSB7XG4gICAgICAgIGNoaWxkcmVuOiBjaGlsZC5jaGlsZHJlblxuICAgICAgfTsgLy8gc3RvcmUgdGhlIG9sZCBwYXJlbnQgaWQgdG8gZGVsZXRlIHRoZSBzdWJ0cmVlIGZyb20gdGhlIG9sZCBwYXJlbnQncyBjaGlsZHJlbiBpbiBuZXh0IHJlY3Vyc2lvblxuXG4gICAgICBicm90aGVycyA9IGNvbWJvQ2hpbGRzTWFwW2NoaWxkLnBhcmVudElkIHx8IGNoaWxkLmNvbWJvSWQgfHwgJ3Jvb3QnXS5jaGlsZHJlbjtcblxuICAgICAgaWYgKGNoaWxkICYmIChjaGlsZC5yZW1vdmVkIHx8IHN1YnRyZWVJZCA9PT0gY2hpbGQuaWQpICYmIGJyb3RoZXJzKSB7XG4gICAgICAgIG9sZFBhcmVudElkID0gY2hpbGQucGFyZW50SWQgfHwgY2hpbGQuY29tYm9JZCB8fCAncm9vdCc7XG4gICAgICAgIHN1YnRyZWUgPSBjaGlsZDsgLy8gcmUtYXNzaWduIHRoZSBwYXJlbnRJZCBvciBjb21ib0lkIGZvciB0aGUgbW92ZWQgc3VidHJlZVxuXG4gICAgICAgIGlmIChjaGlsZC5pdGVtVHlwZSA9PT0gJ2NvbWJvJykge1xuICAgICAgICAgIHN1YnRyZWUucGFyZW50SWQgPSBuZXdQYXJlbnRJZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdWJ0cmVlLmNvbWJvSWQgPSBuZXdQYXJlbnRJZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvdW5kU3ViVHJlZSA9IHRydWU7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gIH0pO1xuICBicm90aGVycyA9IGNvbWJvQ2hpbGRzTWFwW29sZFBhcmVudElkXS5jaGlsZHJlbjtcbiAgdmFyIGluZGV4ID0gYnJvdGhlcnMgPyBicm90aGVycy5pbmRleE9mKHN1YnRyZWUpIDogLTE7XG4gIGlmIChpbmRleCA+IC0xKSBicm90aGVycy5zcGxpY2UoaW5kZXgsIDEpOyAvLyDlpoLmnpzpgY3ljoblrozmlbTmo7XmoJHov5jmsqHmnInmib7liLDvvIzor7TmmI7kuYvliY3lsLHkuI3lnKjmoJHkuK1cblxuICBpZiAoIWZvdW5kU3ViVHJlZSkge1xuICAgIHN1YnRyZWUgPSB7XG4gICAgICBpZDogc3VidHJlZUlkLFxuICAgICAgaXRlbVR5cGU6ICdub2RlJyxcbiAgICAgIGNvbWJvSWQ6IG5ld1BhcmVudElkXG4gICAgfTtcbiAgICBjb21ib0NoaWxkc01hcFtzdWJ0cmVlSWRdID0ge1xuICAgICAgY2hpbGRyZW46IHVuZGVmaW5lZFxuICAgIH07XG4gIH0gLy8gYXBwZW5kIHRvIG5ldyBwYXJlbnRcblxuXG4gIGlmIChzdWJ0cmVlSWQpIHtcbiAgICB2YXIgZm91bmRfMSA9IGZhbHNlOyAvLyBuZXdQYXJlbnRJZCBpcyB1bmRlZmluZWQgbWVhbnMgdGhlIHN1YnRyZWUgd2lsbCBoYXZlIG5vIHBhcmVudFxuXG4gICAgaWYgKG5ld1BhcmVudElkKSB7XG4gICAgICB2YXIgbmV3UGFyZW50RGVwdGhfMSA9IDA7XG4gICAgICAodHJlZXMgfHwgW10pLmZvckVhY2goZnVuY3Rpb24gKHRyZWUpIHtcbiAgICAgICAgaWYgKGZvdW5kXzEpIHJldHVybjsgLy8gdGVybWluYXRlXG5cbiAgICAgICAgdHJhdmVyc2VUcmVlKHRyZWUsIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICAgIC8vIGFwcGVuZCBzdWJ0cmVlIHRvIHRoZSBuZXcgcGFyZW50IGFucyBhc3NpZ24gdGhlIGRlcHRoIHRvIHRoZSBzdWJ0cmVlXG4gICAgICAgICAgaWYgKG5ld1BhcmVudElkID09PSBjaGlsZC5pZCkge1xuICAgICAgICAgICAgZm91bmRfMSA9IHRydWU7XG4gICAgICAgICAgICBpZiAoY2hpbGQuY2hpbGRyZW4pIGNoaWxkLmNoaWxkcmVuLnB1c2goc3VidHJlZSk7ZWxzZSBjaGlsZC5jaGlsZHJlbiA9IFtzdWJ0cmVlXTtcbiAgICAgICAgICAgIG5ld1BhcmVudERlcHRoXzEgPSBjaGlsZC5kZXB0aDtcbiAgICAgICAgICAgIGlmIChzdWJ0cmVlLml0ZW1UeXBlID09PSAnbm9kZScpIHN1YnRyZWUuZGVwdGggPSBuZXdQYXJlbnREZXB0aF8xICsgMjtlbHNlIHN1YnRyZWUuZGVwdGggPSBuZXdQYXJlbnREZXB0aF8xICsgMTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gdGVybWluYXRlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICgoIW5ld1BhcmVudElkIHx8ICFmb3VuZF8xKSAmJiBzdWJ0cmVlLml0ZW1UeXBlICE9PSAnbm9kZScpIHtcbiAgICAgIC8vIGlmIHRoZSBuZXdQYXJlbnRJZCBpcyB1bmRlZmluZWQgb3IgaXQgaXMgbm90IGZvdW5kIGluIHRoZSB0cmVlLCBhZGQgdGhlIHN1YlRyZWUgdG8gdGhlIHJvb3RcbiAgICAgIHRyZWVzLnB1c2goc3VidHJlZSk7XG4gICAgfSAvLyB1cGRhdGUgdGhlIGRlcHRoIG9mIHRoZSBzdWJ0cmVlIGFuZCBpdHMgY2hpbGRyZW4gZnJvbSB0aGUgc3VidHJlZVxuXG5cbiAgICB2YXIgY3VycmVudERlcHRoXzEgPSBzdWJ0cmVlLmRlcHRoO1xuICAgIHRyYXZlcnNlVHJlZShzdWJ0cmVlLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgIGlmIChjaGlsZC5pdGVtVHlwZSA9PT0gJ25vZGUnKSBjdXJyZW50RGVwdGhfMSArPSAyO2Vsc2UgY3VycmVudERlcHRoXzEgKz0gMTtcbiAgICAgIGNoaWxkLmRlcHRoID0gY3VycmVudERlcHRoXzE7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB0cmVlcztcbn07XG5leHBvcnQgdmFyIGdldENvbWJvQkJveCA9IGZ1bmN0aW9uIGdldENvbWJvQkJveChjaGlsZHJlbiwgZ3JhcGgpIHtcbiAgdmFyIGNvbWJvQkJveCA9IHtcbiAgICBtaW5YOiBJbmZpbml0eSxcbiAgICBtaW5ZOiBJbmZpbml0eSxcbiAgICBtYXhYOiAtSW5maW5pdHksXG4gICAgbWF4WTogLUluZmluaXR5LFxuICAgIHg6IHVuZGVmaW5lZCxcbiAgICB5OiB1bmRlZmluZWQsXG4gICAgd2lkdGg6IHVuZGVmaW5lZCxcbiAgICBoZWlnaHQ6IHVuZGVmaW5lZCxcbiAgICBjZW50ZXJYOiB1bmRlZmluZWQsXG4gICAgY2VudGVyWTogdW5kZWZpbmVkXG4gIH07XG5cbiAgaWYgKCFjaGlsZHJlbiB8fCBjaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gY29tYm9CQm94O1xuICB9XG5cbiAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICB2YXIgY2hpbGRJdGVtID0gZ3JhcGguZmluZEJ5SWQoY2hpbGQuaWQpO1xuICAgIGlmICghY2hpbGRJdGVtIHx8ICFjaGlsZEl0ZW0uaXNWaXNpYmxlKCkpIHJldHVybjsgLy8gaWdub3JlIGhpZGRlbiBjaGlsZHJlblxuXG4gICAgY2hpbGRJdGVtLnNldCgnYmJveENhbnZhc0NhY2hlJywgdW5kZWZpbmVkKTtcbiAgICB2YXIgY2hpbGRCQm94ID0gY2hpbGRJdGVtLmdldENhbnZhc0JCb3goKTtcbiAgICBpZiAoY2hpbGRCQm94LnggJiYgY29tYm9CQm94Lm1pblggPiBjaGlsZEJCb3gubWluWCkgY29tYm9CQm94Lm1pblggPSBjaGlsZEJCb3gubWluWDtcbiAgICBpZiAoY2hpbGRCQm94LnkgJiYgY29tYm9CQm94Lm1pblkgPiBjaGlsZEJCb3gubWluWSkgY29tYm9CQm94Lm1pblkgPSBjaGlsZEJCb3gubWluWTtcbiAgICBpZiAoY2hpbGRCQm94LnggJiYgY29tYm9CQm94Lm1heFggPCBjaGlsZEJCb3gubWF4WCkgY29tYm9CQm94Lm1heFggPSBjaGlsZEJCb3gubWF4WDtcbiAgICBpZiAoY2hpbGRCQm94LnkgJiYgY29tYm9CQm94Lm1heFkgPCBjaGlsZEJCb3gubWF4WSkgY29tYm9CQm94Lm1heFkgPSBjaGlsZEJCb3gubWF4WTtcbiAgfSk7XG4gIGNvbWJvQkJveC54ID0gKGNvbWJvQkJveC5taW5YICsgY29tYm9CQm94Lm1heFgpIC8gMjtcbiAgY29tYm9CQm94LnkgPSAoY29tYm9CQm94Lm1pblkgKyBjb21ib0JCb3gubWF4WSkgLyAyO1xuICBjb21ib0JCb3gud2lkdGggPSBjb21ib0JCb3gubWF4WCAtIGNvbWJvQkJveC5taW5YO1xuICBjb21ib0JCb3guaGVpZ2h0ID0gY29tYm9CQm94Lm1heFkgLSBjb21ib0JCb3gubWluWTtcbiAgY29tYm9CQm94LmNlbnRlclggPSAoY29tYm9CQm94Lm1pblggKyBjb21ib0JCb3gubWF4WCkgLyAyO1xuICBjb21ib0JCb3guY2VudGVyWSA9IChjb21ib0JCb3gubWluWSArIGNvbWJvQkJveC5tYXhZKSAvIDI7XG4gIE9iamVjdC5rZXlzKGNvbWJvQkJveCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgaWYgKGNvbWJvQkJveFtrZXldID09PSBJbmZpbml0eSB8fCBjb21ib0JCb3hba2V5XSA9PT0gLUluZmluaXR5KSB7XG4gICAgICBjb21ib0JCb3hba2V5XSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gY29tYm9CQm94O1xufTtcbmV4cG9ydCB2YXIgc2hvdWxkUmVmcmVzaEVkZ2UgPSBmdW5jdGlvbiBzaG91bGRSZWZyZXNoRWRnZShjZmcpIHtcbiAgdmFyIHJlZnJlc2hFZGdlID0gaXNOdW1iZXIoY2ZnLngpIHx8IGlzTnVtYmVyKGNmZy55KSB8fCBjZmcudHlwZSB8fCBjZmcuYW5jaG9yUG9pbnRzIHx8IGNmZy5zaXplO1xuICBpZiAoY2ZnLnN0eWxlKSByZWZyZXNoRWRnZSA9IHJlZnJlc2hFZGdlIHx8IGlzTnVtYmVyKGNmZy5zdHlsZS5yKSB8fCBpc051bWJlcihjZmcuc3R5bGUud2lkdGgpIHx8IGlzTnVtYmVyKGNmZy5zdHlsZS5oZWlnaHQpIHx8IGlzTnVtYmVyKGNmZy5zdHlsZS5yeCkgfHwgaXNOdW1iZXIoY2ZnLnN0eWxlLnJ5KTtcbiAgcmV0dXJuIHJlZnJlc2hFZGdlO1xufTtcbmV4cG9ydCB2YXIgY2xvbmVCZXNpZGVzSW1nID0gZnVuY3Rpb24gY2xvbmVCZXNpZGVzSW1nKG9iaikge1xuICB2YXIgY2xvbmVkT2JqID0ge307XG4gIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChmdW5jdGlvbiAoa2V5MSkge1xuICAgIHZhciBvYmoyID0gb2JqW2tleTFdO1xuXG4gICAgaWYgKGlzT2JqZWN0KG9iajIpICYmICFpc0FycmF5KG9iajIpKSB7XG4gICAgICB2YXIgY2xvbmVkT2JqMl8xID0ge307XG4gICAgICBPYmplY3Qua2V5cyhvYmoyKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkyKSB7XG4gICAgICAgIHZhciB2ID0gb2JqMltrZXkyXTtcbiAgICAgICAgaWYgKGtleTIgPT09ICdpbWcnICYmICFpc1N0cmluZyh2KSkgcmV0dXJuO1xuICAgICAgICBjbG9uZWRPYmoyXzFba2V5Ml0gPSBjbG9uZSh2KTtcbiAgICAgIH0pO1xuICAgICAgY2xvbmVkT2JqW2tleTFdID0gY2xvbmVkT2JqMl8xO1xuICAgIH0gZWxzZSB7XG4gICAgICBjbG9uZWRPYmpba2V5MV0gPSBjbG9uZShvYmoyKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gY2xvbmVkT2JqO1xufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/graphic.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/index.js":
/*!**************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/index.js ***!
\**************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/math.js\");\n/* harmony import */ var _graphic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./graphic */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/graphic.js\");\n/* harmony import */ var _path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./path */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/path.js\");\n/* harmony import */ var _base__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./base */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/base.js\");\n/* harmony import */ var _color__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./color */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/color.js\");\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/_@antv_matrix-util@3.1.0-beta.3@@antv/matrix-util/esm/index.js\");\n\n\n\n\n\n\n\nvar transform = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_6__[\"ext\"].transform;\n\nvar Util = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _base__WEBPACK_IMPORTED_MODULE_4__), _graphic__WEBPACK_IMPORTED_MODULE_2__), _path__WEBPACK_IMPORTED_MODULE_3__), _math__WEBPACK_IMPORTED_MODULE_1__), _color__WEBPACK_IMPORTED_MODULE_5__), {\n transform: transform,\n mat3: _antv_matrix_util__WEBPACK_IMPORTED_MODULE_6__[\"mat3\"]\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Util);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy91dGlsL2luZGV4LmpzP2IyZDMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNFO0FBQ007QUFDTjtBQUNBO0FBQ0U7QUFDUztBQUM5QyxnQkFBZ0IscURBQUc7O0FBRW5CLFdBQVcsc0RBQVEsQ0FBQyxzREFBUSxDQUFDLHNEQUFRLENBQUMsc0RBQVEsQ0FBQyxzREFBUSxDQUFDLHNEQUFRLEdBQUcsRUFBRSxrQ0FBUSxHQUFHLHFDQUFXLEdBQUcsa0NBQVEsR0FBRyxrQ0FBUSxHQUFHLG1DQUFTO0FBQzdIO0FBQ0EsUUFBUSxzREFBSTtBQUNaLENBQUM7O0FBRWMsbUVBQUkiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy91dGlsL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCAqIGFzIE1hdGhVdGlsIGZyb20gJy4vbWF0aCc7XG5pbXBvcnQgKiBhcyBHcmFwaGljVXRpbCBmcm9tICcuL2dyYXBoaWMnO1xuaW1wb3J0ICogYXMgUGF0aFV0aWwgZnJvbSAnLi9wYXRoJztcbmltcG9ydCAqIGFzIEJhc2VVdGlsIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgKiBhcyBDb2xvclV0aWwgZnJvbSAnLi9jb2xvcic7XG5pbXBvcnQgeyBleHQsIG1hdDMgfSBmcm9tICdAYW50di9tYXRyaXgtdXRpbCc7XG52YXIgdHJhbnNmb3JtID0gZXh0LnRyYW5zZm9ybTtcblxudmFyIFV0aWwgPSBfX2Fzc2lnbihfX2Fzc2lnbihfX2Fzc2lnbihfX2Fzc2lnbihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgQmFzZVV0aWwpLCBHcmFwaGljVXRpbCksIFBhdGhVdGlsKSwgTWF0aFV0aWwpLCBDb2xvclV0aWwpLCB7XG4gIHRyYW5zZm9ybTogdHJhbnNmb3JtLFxuICBtYXQzOiBtYXQzXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgVXRpbDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/letterAspectRatio.js":
/*!**************************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/letterAspectRatio.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 ' ': 0.3329986572265625,\n a: 0.5589996337890625,\n A: 0.6569992065429687,\n b: 0.58599853515625,\n B: 0.6769989013671875,\n c: 0.5469985961914062,\n C: 0.7279998779296875,\n d: 0.58599853515625,\n D: 0.705999755859375,\n e: 0.554998779296875,\n E: 0.63699951171875,\n f: 0.37299957275390627,\n F: 0.5769989013671875,\n g: 0.5909988403320312,\n G: 0.7479995727539063,\n h: 0.555999755859375,\n H: 0.7199996948242188,\n i: 0.255999755859375,\n I: 0.23699951171875,\n j: 0.26699981689453123,\n J: 0.5169998168945312,\n k: 0.5289993286132812,\n K: 0.6899993896484375,\n l: 0.23499908447265624,\n L: 0.5879989624023437,\n m: 0.854998779296875,\n M: 0.8819992065429687,\n n: 0.5589996337890625,\n N: 0.7189987182617188,\n o: 0.58599853515625,\n O: 0.7669998168945312,\n p: 0.58599853515625,\n P: 0.6419998168945312,\n q: 0.58599853515625,\n Q: 0.7669998168945312,\n r: 0.3649993896484375,\n R: 0.6759994506835938,\n s: 0.504998779296875,\n S: 0.6319992065429687,\n t: 0.354998779296875,\n T: 0.6189987182617187,\n u: 0.5599990844726562,\n U: 0.7139999389648437,\n v: 0.48199920654296874,\n V: 0.6389999389648438,\n w: 0.754998779296875,\n W: 0.929998779296875,\n x: 0.5089996337890625,\n X: 0.63699951171875,\n y: 0.4959991455078125,\n Y: 0.66199951171875,\n z: 0.48699951171875,\n Z: 0.6239990234375,\n '0': 0.6,\n '1': 0.40099945068359377,\n '2': 0.6,\n '3': 0.6,\n '4': 0.6,\n '5': 0.6,\n '6': 0.6,\n '7': 0.5469985961914062,\n '8': 0.6,\n '9': 0.6,\n '[': 0.3329986572265625,\n ']': 0.3329986572265625,\n ',': 0.26399993896484375,\n '.': 0.26399993896484375,\n ';': 0.26399993896484375,\n ':': 0.26399993896484375,\n '{': 0.3329986572265625,\n '}': 0.3329986572265625,\n '\\\\': 0.5,\n '|': 0.19499969482421875,\n '=': 0.604998779296875,\n '+': 0.604998779296875,\n '-': 0.604998779296875,\n _: 0.5,\n '`': 0.3329986572265625,\n ' ~': 0.8329986572265625,\n '!': 0.3329986572265625,\n '@': 0.8579986572265625,\n '#': 0.6,\n $: 0.6,\n '%': 0.9699996948242188,\n '^': 0.517999267578125,\n '&': 0.7259994506835937,\n '*': 0.505999755859375,\n '(': 0.3329986572265625,\n ')': 0.3329986572265625,\n '<': 0.604998779296875,\n '>': 0.604998779296875,\n '/': 0.5,\n '?': 0.53699951171875\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy91dGlsL2xldHRlckFzcGVjdFJhdGlvLmpzPzlkNTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsSUFBSTtBQUNKLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy91dGlsL2xldHRlckFzcGVjdFJhdGlvLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQge1xuICAnICc6IDAuMzMyOTk4NjU3MjI2NTYyNSxcbiAgYTogMC41NTg5OTk2MzM3ODkwNjI1LFxuICBBOiAwLjY1Njk5OTIwNjU0Mjk2ODcsXG4gIGI6IDAuNTg1OTk4NTM1MTU2MjUsXG4gIEI6IDAuNjc2OTk4OTAxMzY3MTg3NSxcbiAgYzogMC41NDY5OTg1OTYxOTE0MDYyLFxuICBDOiAwLjcyNzk5OTg3NzkyOTY4NzUsXG4gIGQ6IDAuNTg1OTk4NTM1MTU2MjUsXG4gIEQ6IDAuNzA1OTk5NzU1ODU5Mzc1LFxuICBlOiAwLjU1NDk5ODc3OTI5Njg3NSxcbiAgRTogMC42MzY5OTk1MTE3MTg3NSxcbiAgZjogMC4zNzI5OTk1NzI3NTM5MDYyNyxcbiAgRjogMC41NzY5OTg5MDEzNjcxODc1LFxuICBnOiAwLjU5MDk5ODg0MDMzMjAzMTIsXG4gIEc6IDAuNzQ3OTk5NTcyNzUzOTA2MyxcbiAgaDogMC41NTU5OTk3NTU4NTkzNzUsXG4gIEg6IDAuNzE5OTk5Njk0ODI0MjE4OCxcbiAgaTogMC4yNTU5OTk3NTU4NTkzNzUsXG4gIEk6IDAuMjM2OTk5NTExNzE4NzUsXG4gIGo6IDAuMjY2OTk5ODE2ODk0NTMxMjMsXG4gIEo6IDAuNTE2OTk5ODE2ODk0NTMxMixcbiAgazogMC41Mjg5OTkzMjg2MTMyODEyLFxuICBLOiAwLjY4OTk5OTM4OTY0ODQzNzUsXG4gIGw6IDAuMjM0OTk5MDg0NDcyNjU2MjQsXG4gIEw6IDAuNTg3OTk4OTYyNDAyMzQzNyxcbiAgbTogMC44NTQ5OTg3NzkyOTY4NzUsXG4gIE06IDAuODgxOTk5MjA2NTQyOTY4NyxcbiAgbjogMC41NTg5OTk2MzM3ODkwNjI1LFxuICBOOiAwLjcxODk5ODcxODI2MTcxODgsXG4gIG86IDAuNTg1OTk4NTM1MTU2MjUsXG4gIE86IDAuNzY2OTk5ODE2ODk0NTMxMixcbiAgcDogMC41ODU5OTg1MzUxNTYyNSxcbiAgUDogMC42NDE5OTk4MTY4OTQ1MzEyLFxuICBxOiAwLjU4NTk5ODUzNTE1NjI1LFxuICBROiAwLjc2Njk5OTgxNjg5NDUzMTIsXG4gIHI6IDAuMzY0OTk5Mzg5NjQ4NDM3NSxcbiAgUjogMC42NzU5OTk0NTA2ODM1OTM4LFxuICBzOiAwLjUwNDk5ODc3OTI5Njg3NSxcbiAgUzogMC42MzE5OTkyMDY1NDI5Njg3LFxuICB0OiAwLjM1NDk5ODc3OTI5Njg3NSxcbiAgVDogMC42MTg5OTg3MTgyNjE3MTg3LFxuICB1OiAwLjU1OTk5OTA4NDQ3MjY1NjIsXG4gIFU6IDAuNzEzOTk5OTM4OTY0ODQzNyxcbiAgdjogMC40ODE5OTkyMDY1NDI5Njg3NCxcbiAgVjogMC42Mzg5OTk5Mzg5NjQ4NDM4LFxuICB3OiAwLjc1NDk5ODc3OTI5Njg3NSxcbiAgVzogMC45Mjk5OTg3NzkyOTY4NzUsXG4gIHg6IDAuNTA4OTk5NjMzNzg5MDYyNSxcbiAgWDogMC42MzY5OTk1MTE3MTg3NSxcbiAgeTogMC40OTU5OTkxNDU1MDc4MTI1LFxuICBZOiAwLjY2MTk5OTUxMTcxODc1LFxuICB6OiAwLjQ4Njk5OTUxMTcxODc1LFxuICBaOiAwLjYyMzk5OTAyMzQzNzUsXG4gICcwJzogMC42LFxuICAnMSc6IDAuNDAwOTk5NDUwNjgzNTkzNzcsXG4gICcyJzogMC42LFxuICAnMyc6IDAuNixcbiAgJzQnOiAwLjYsXG4gICc1JzogMC42LFxuICAnNic6IDAuNixcbiAgJzcnOiAwLjU0Njk5ODU5NjE5MTQwNjIsXG4gICc4JzogMC42LFxuICAnOSc6IDAuNixcbiAgJ1snOiAwLjMzMjk5ODY1NzIyNjU2MjUsXG4gICddJzogMC4zMzI5OTg2NTcyMjY1NjI1LFxuICAnLCc6IDAuMjYzOTk5OTM4OTY0ODQzNzUsXG4gICcuJzogMC4yNjM5OTk5Mzg5NjQ4NDM3NSxcbiAgJzsnOiAwLjI2Mzk5OTkzODk2NDg0Mzc1LFxuICAnOic6IDAuMjYzOTk5OTM4OTY0ODQzNzUsXG4gICd7JzogMC4zMzI5OTg2NTcyMjY1NjI1LFxuICAnfSc6IDAuMzMyOTk4NjU3MjI2NTYyNSxcbiAgJ1xcXFwnOiAwLjUsXG4gICd8JzogMC4xOTQ5OTk2OTQ4MjQyMTg3NSxcbiAgJz0nOiAwLjYwNDk5ODc3OTI5Njg3NSxcbiAgJysnOiAwLjYwNDk5ODc3OTI5Njg3NSxcbiAgJy0nOiAwLjYwNDk5ODc3OTI5Njg3NSxcbiAgXzogMC41LFxuICAnYCc6IDAuMzMyOTk4NjU3MjI2NTYyNSxcbiAgJyB+JzogMC44MzI5OTg2NTcyMjY1NjI1LFxuICAnISc6IDAuMzMyOTk4NjU3MjI2NTYyNSxcbiAgJ0AnOiAwLjg1Nzk5ODY1NzIyNjU2MjUsXG4gICcjJzogMC42LFxuICAkOiAwLjYsXG4gICclJzogMC45Njk5OTk2OTQ4MjQyMTg4LFxuICAnXic6IDAuNTE3OTk5MjY3NTc4MTI1LFxuICAnJic6IDAuNzI1OTk5NDUwNjgzNTkzNyxcbiAgJyonOiAwLjUwNTk5OTc1NTg1OTM3NSxcbiAgJygnOiAwLjMzMjk5ODY1NzIyNjU2MjUsXG4gICcpJzogMC4zMzI5OTg2NTcyMjY1NjI1LFxuICAnPCc6IDAuNjA0OTk4Nzc5Mjk2ODc1LFxuICAnPic6IDAuNjA0OTk4Nzc5Mjk2ODc1LFxuICAnLyc6IDAuNSxcbiAgJz8nOiAwLjUzNjk5OTUxMTcxODc1XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/letterAspectRatio.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/math.js":
/*!*************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/math.js ***!
\*************************************************************************/
/*! exports provided: compare, getLineIntersect, getRectIntersectByPoint, getCircleIntersectByPoint, getEllipseIntersectByPoint, applyMatrix, invertMatrix, getCircleCenterByPoints, distance, scaleMatrix, floydWarshall, getAdjMatrix, translate, move, scale, rotate, getDegree, isPointInPolygon, intersectBBox, isPolygonsIntersect, Line, getBBoxBoundLine, itemIntersectByLine, fractionToLine, getPointsCenter, squareDist, pointLineSquareDist, isPointsOverlap, pointRectSquareDist, pointLineDistance, lerp */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"compare\", function() { return compare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLineIntersect\", function() { return getLineIntersect; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRectIntersectByPoint\", function() { return getRectIntersectByPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCircleIntersectByPoint\", function() { return getCircleIntersectByPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEllipseIntersectByPoint\", function() { return getEllipseIntersectByPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"applyMatrix\", function() { return applyMatrix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"invertMatrix\", function() { return invertMatrix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCircleCenterByPoints\", function() { return getCircleCenterByPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"distance\", function() { return distance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleMatrix\", function() { return scaleMatrix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"floydWarshall\", function() { return floydWarshall; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAdjMatrix\", function() { return getAdjMatrix; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"translate\", function() { return translate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"move\", function() { return move; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scale\", function() { return scale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rotate\", function() { return rotate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDegree\", function() { return getDegree; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPointInPolygon\", function() { return isPointInPolygon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"intersectBBox\", function() { return intersectBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPolygonsIntersect\", function() { return isPolygonsIntersect; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Line\", function() { return Line; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBoxBoundLine\", function() { return getBBoxBoundLine; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"itemIntersectByLine\", function() { return itemIntersectByLine; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fractionToLine\", function() { return fractionToLine; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPointsCenter\", function() { return getPointsCenter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"squareDist\", function() { return squareDist; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pointLineSquareDist\", function() { return pointLineSquareDist; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPointsOverlap\", function() { return isPointsOverlap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pointRectSquareDist\", function() { return pointRectSquareDist; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pointLineDistance\", function() { return pointLineDistance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lerp\", function() { return lerp; });\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/_@antv_matrix-util@3.1.0-beta.3@@antv/matrix-util/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\n\nvar transform = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"ext\"].transform;\n/**\n * 对比对象,用于对象数组排序\n * @param {string} attributeName 排序依据的字段名称\n * @param {number} min 最小值\n * @param {number} max 最大值\n * @return {boolean} bool 布尔\n */\n\nvar compare = function compare(attributeName) {\n return function (m, n) {\n return m[attributeName] - n[attributeName];\n };\n};\n/**\n * 是否在区间内\n * @param {number} value 值\n * @param {number} min 最小值\n * @param {number} max 最大值\n * @return {boolean} bool 布尔\n */\n\nvar isBetween = function isBetween(value, min, max) {\n return value >= min && value <= max;\n};\n/**\n * 获取两条线段的交点\n * @param {Point} p0 第一条线段起点\n * @param {Point} p1 第一条线段终点\n * @param {Point} p2 第二条线段起点\n * @param {Point} p3 第二条线段终点\n * @return {Point} 交点\n */\n\n\nvar getLineIntersect = function getLineIntersect(p0, p1, p2, p3) {\n var tolerance = 0.0001;\n var E = {\n x: p2.x - p0.x,\n y: p2.y - p0.y\n };\n var D0 = {\n x: p1.x - p0.x,\n y: p1.y - p0.y\n };\n var D1 = {\n x: p3.x - p2.x,\n y: p3.y - p2.y\n };\n var kross = D0.x * D1.y - D0.y * D1.x;\n var sqrKross = kross * kross;\n var invertKross = 1 / kross;\n var sqrLen0 = D0.x * D0.x + D0.y * D0.y;\n var sqrLen1 = D1.x * D1.x + D1.y * D1.y;\n\n if (sqrKross > tolerance * sqrLen0 * sqrLen1) {\n var s = (E.x * D1.y - E.y * D1.x) * invertKross;\n var t = (E.x * D0.y - E.y * D0.x) * invertKross;\n if (!isBetween(s, 0, 1) || !isBetween(t, 0, 1)) return null;\n return {\n x: p0.x + s * D0.x,\n y: p0.y + s * D0.y\n };\n }\n\n return null;\n};\n/**\n * point and rectangular intersection point\n * @param {IRect} rect rect\n * @param {Point} point point\n * @return {PointPoint} rst;\n */\n\nvar getRectIntersectByPoint = function getRectIntersectByPoint(rect, point) {\n var x = rect.x,\n y = rect.y,\n width = rect.width,\n height = rect.height;\n var cx = x + width / 2;\n var cy = y + height / 2;\n var points = [];\n var center = {\n x: cx,\n y: cy\n };\n points.push({\n x: x,\n y: y\n });\n points.push({\n x: x + width,\n y: y\n });\n points.push({\n x: x + width,\n y: y + height\n });\n points.push({\n x: x,\n y: y + height\n });\n points.push({\n x: x,\n y: y\n });\n var rst = null;\n\n for (var i = 1; i < points.length; i++) {\n rst = getLineIntersect(points[i - 1], points[i], center, point);\n\n if (rst) {\n break;\n }\n }\n\n return rst;\n};\n/**\n * get point and circle inIntersect\n * @param {ICircle} circle 圆点,x,y,r\n * @param {Point} point 点 x,y\n * @return {Point} applied point\n */\n\nvar getCircleIntersectByPoint = function getCircleIntersectByPoint(circle, point) {\n var cx = circle.x,\n cy = circle.y,\n r = circle.r;\n var x = point.x,\n y = point.y;\n var dx = x - cx;\n var dy = y - cy;\n\n if (dx * dx + dy * dy < r * r) {\n return null;\n }\n\n var angle = Math.atan(dy / dx);\n return {\n x: cx + Math.abs(r * Math.cos(angle)) * Math.sign(dx),\n y: cy + Math.abs(r * Math.sin(angle)) * Math.sign(dy)\n };\n};\n/**\n * get point and ellipse inIntersect\n * @param {Object} ellipse 椭圆 x,y,rx,ry\n * @param {Object} point 点 x,y\n * @return {object} applied point\n */\n\nvar getEllipseIntersectByPoint = function getEllipseIntersectByPoint(ellipse, point) {\n var a = ellipse.rx;\n var b = ellipse.ry;\n var cx = ellipse.x;\n var cy = ellipse.y;\n var dx = point.x - cx;\n var dy = point.y - cy; // 直接通过 x,y 求夹角,求出来的范围是 -PI, PI\n\n var angle = Math.atan2(dy / b, dx / a);\n\n if (angle < 0) {\n angle += 2 * Math.PI; // 转换到 0,2PI\n }\n\n return {\n x: cx + a * Math.cos(angle),\n y: cy + b * Math.sin(angle)\n };\n};\n/**\n * coordinate matrix transformation\n * @param {number} point coordinate\n * @param {Matrix} matrix matrix\n * @param {number} tag could be 0 or 1\n * @return {Point} transformed point\n */\n\nvar applyMatrix = function applyMatrix(point, matrix, tag) {\n if (tag === void 0) {\n tag = 1;\n }\n\n var vector = [point.x, point.y, tag];\n\n if (!matrix || isNaN(matrix[0])) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec3\"].transformMat3(vector, vector, matrix);\n return {\n x: vector[0],\n y: vector[1]\n };\n};\n/**\n * coordinate matrix invert transformation\n * @param {number} point coordinate\n * @param {number} matrix matrix\n * @param {number} tag could be 0 or 1\n * @return {object} transformed point\n */\n\nvar invertMatrix = function invertMatrix(point, matrix, tag) {\n if (tag === void 0) {\n tag = 1;\n }\n\n if (!matrix || isNaN(matrix[0])) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n var inversedMatrix = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"mat3\"].invert([1, 0, 0, 0, 1, 0, 0, 0, 1], matrix);\n\n if (!inversedMatrix) {\n inversedMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n var vector = [point.x, point.y, tag];\n _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec3\"].transformMat3(vector, vector, inversedMatrix);\n return {\n x: vector[0],\n y: vector[1]\n };\n};\n/**\n *\n * @param p1 First coordinate\n * @param p2 second coordinate\n * @param p3 three coordinate\n */\n\nvar getCircleCenterByPoints = function getCircleCenterByPoints(p1, p2, p3) {\n var a = p1.x - p2.x;\n var b = p1.y - p2.y;\n var c = p1.x - p3.x;\n var d = p1.y - p3.y;\n var e = (p1.x * p1.x - p2.x * p2.x - p2.y * p2.y + p1.y * p1.y) / 2;\n var f = (p1.x * p1.x - p3.x * p3.x - p3.y * p3.y + p1.y * p1.y) / 2;\n var denominator = b * c - a * d;\n return {\n x: -(d * e - b * f) / denominator,\n y: -(a * f - c * e) / denominator\n };\n};\n/**\n * get distance by two points\n * @param p1 first point\n * @param p2 second point\n */\n\nvar distance = function distance(p1, p2) {\n var vx = p1.x - p2.x;\n var vy = p1.y - p2.y;\n return Math.sqrt(vx * vx + vy * vy);\n};\n/**\n * scale matrix\n * @param matrix [ [], [], [] ]\n * @param ratio\n */\n\nvar scaleMatrix = function scaleMatrix(matrix, ratio) {\n var result = [];\n matrix.forEach(function (row) {\n var newRow = [];\n row.forEach(function (v) {\n newRow.push(v * ratio);\n });\n result.push(newRow);\n });\n return result;\n};\n/**\n * Floyd Warshall algorithm for shortest path distances matrix\n * @param {array} adjMatrix adjacency matrix\n * @return {array} distances shortest path distances matrix\n */\n\nvar floydWarshall = function floydWarshall(adjMatrix) {\n // initialize\n var dist = [];\n var size = adjMatrix.length;\n\n for (var i = 0; i < size; i += 1) {\n dist[i] = [];\n\n for (var j = 0; j < size; j += 1) {\n if (i === j) {\n dist[i][j] = 0;\n } else if (adjMatrix[i][j] === 0 || !adjMatrix[i][j]) {\n dist[i][j] = Infinity;\n } else {\n dist[i][j] = adjMatrix[i][j];\n }\n }\n } // floyd\n\n\n for (var k = 0; k < size; k += 1) {\n for (var i = 0; i < size; i += 1) {\n for (var j = 0; j < size; j += 1) {\n if (dist[i][j] > dist[i][k] + dist[k][j]) {\n dist[i][j] = dist[i][k] + dist[k][j];\n }\n }\n }\n }\n\n return dist;\n};\n/**\n * get adjacency matrix\n * @param data graph data\n * @param directed whether it's a directed graph\n */\n\nvar getAdjMatrix = function getAdjMatrix(data, directed) {\n var nodes = data.nodes,\n edges = data.edges;\n var matrix = []; // map node with index in data.nodes\n\n var nodeMap = {};\n\n if (!nodes) {\n throw new Error('invalid nodes data!');\n }\n\n if (nodes) {\n nodes.forEach(function (node, i) {\n nodeMap[node.id] = i;\n var row = [];\n matrix.push(row);\n });\n }\n\n if (edges) {\n edges.forEach(function (e) {\n var source = e.source,\n target = e.target;\n var sIndex = nodeMap[source];\n var tIndex = nodeMap[target];\n matrix[sIndex][tIndex] = 1;\n\n if (!directed) {\n matrix[tIndex][sIndex] = 1;\n }\n });\n }\n\n return matrix;\n};\n/**\n * 平移group\n * @param group Group 实例\n * @param vec 移动向量\n */\n\nvar translate = function translate(group, vec) {\n group.translate(vec.x, vec.y);\n};\n/**\n * 移动到指定坐标点\n * @param group Group 实例\n * @param point 移动到的坐标点\n */\n\nvar move = function move(group, point, animate, animateCfg) {\n if (animateCfg === void 0) {\n animateCfg = {\n duration: 500\n };\n }\n\n var matrix = group.getMatrix();\n\n if (!matrix) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n var bbox = group.getCanvasBBox();\n var vx = point.x - bbox.minX;\n var vy = point.y - bbox.minY;\n\n if (animate) {\n var dx_1 = vx * matrix[0];\n var dy_1 = vy * matrix[4];\n var lastX_1 = 0;\n var lastY_1 = 0;\n var newX_1 = 0;\n var newY_1 = 0;\n group.animate(function (ratio) {\n newX_1 = dx_1 * ratio;\n newY_1 = dy_1 * ratio;\n matrix = transform(matrix, [['t', newX_1 - lastX_1, newY_1 - lastY_1]]);\n lastX_1 = newX_1;\n lastY_1 = newY_1;\n return {\n matrix: matrix\n };\n }, animateCfg);\n } else {\n var movedMatrix = transform(matrix, [['t', vx, vy]]);\n group.setMatrix(movedMatrix);\n }\n};\n/**\n * 缩放 group\n * @param group Group 实例\n * @param point 在x 和 y 方向上的缩放比例\n */\n\nvar scale = function scale(group, ratio) {\n var matrix = group.getMatrix();\n\n if (!matrix) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n var scaleXY = ratio;\n\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(ratio)) {\n scaleXY = [ratio, ratio];\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(ratio) && ratio.length === 1) {\n scaleXY = [ratio[0], ratio[0]];\n }\n\n matrix = transform(matrix, [['s', scaleXY[0], scaleXY[1]]]);\n group.setMatrix(matrix);\n};\n/**\n *\n * @param group Group 实例\n * @param ratio 选择角度\n */\n\nvar rotate = function rotate(group, angle) {\n var matrix = group.getMatrix();\n\n if (!matrix) {\n matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n }\n\n matrix = transform(matrix, [['r', angle]]);\n group.setMatrix(matrix);\n};\nvar getDegree = function getDegree(n, nodeIdxMap, edges) {\n var degrees = [];\n\n for (var i = 0; i < n; i++) {\n degrees[i] = 0;\n }\n\n edges.forEach(function (e) {\n if (e.source) {\n degrees[nodeIdxMap[e.source]] += 1;\n }\n\n if (e.target) {\n degrees[nodeIdxMap[e.target]] += 1;\n }\n });\n return degrees;\n}; // 判断点Q是否在p1和p2的线段上\n\nfunction onSegment(p1, p2, q) {\n if ((q[0] - p1[0]) * (p2[1] - p1[1]) === (p2[0] - p1[0]) * (q[1] - p1[1]) && Math.min(p1[0], p2[0]) <= q[0] && q[0] <= Math.max(p1[0], p2[0]) && Math.min(p1[1], p2[1]) <= q[1] && q[1] <= Math.max(p1[1], p2[1])) {\n return true;\n }\n\n return false;\n}\n/**\n * 判断点P在多边形内-射线法. Borrow from https://github.com/antvis/util/blob/master/packages/path-util/src/point-in-polygon.ts\n * @param points\n * @param x\n * @param y\n */\n\n\nvar isPointInPolygon = function isPointInPolygon(points, x, y) {\n var isHit = false;\n var n = points.length; // 判断两个double在eps精度下的大小关系\n\n var tolerance = 1e-6;\n\n function dcmp(xValue) {\n if (Math.abs(xValue) < tolerance) {\n return 0;\n }\n\n return xValue < 0 ? -1 : 1;\n }\n\n if (n <= 2) {\n // svg 中点小于 3 个时,不显示,也无法被拾取\n return false;\n }\n\n for (var i = 0; i < n; i++) {\n var p1 = points[i];\n var p2 = points[(i + 1) % n];\n\n if (onSegment(p1, p2, [x, y])) {\n // 点在多边形一条边上\n return true;\n } // 前一个判断min(p1[1],p2[1]) 0 !== dcmp(p2[1] - y) > 0 && dcmp(x - (y - p1[1]) * (p1[0] - p2[0]) / (p1[1] - p2[1]) - p1[0]) < 0) {\n isHit = !isHit;\n }\n }\n\n return isHit;\n}; // 判断两个BBox是否相交\n\nvar intersectBBox = function intersectBBox(box1, box2) {\n return !(box2.minX > box1.maxX || box2.maxX < box1.minX || box2.minY > box1.maxY || box2.maxY < box1.minY);\n};\n\nvar lineIntersectPolygon = function lineIntersectPolygon(lines, line) {\n var isIntersect = false;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(lines, function (l) {\n if (getLineIntersect(l.from, l.to, line.from, line.to)) {\n isIntersect = true;\n return false;\n }\n });\n return isIntersect;\n};\n/**\n * 判断两个polygon是否相交。\n * borrow from @antv/path-util\n * @param points1 polygon1的顶点数组\n * @param points2 polygon2的顶点数组\n */\n\n\nvar isPolygonsIntersect = function isPolygonsIntersect(points1, points2) {\n var getBBox = function getBBox(points) {\n var xArr = points.map(function (p) {\n return p[0];\n });\n var yArr = points.map(function (p) {\n return p[1];\n });\n return {\n minX: Math.min.apply(null, xArr),\n maxX: Math.max.apply(null, xArr),\n minY: Math.min.apply(null, yArr),\n maxY: Math.max.apply(null, yArr)\n };\n };\n\n var parseToLines = function parseToLines(points) {\n var lines = [];\n var count = points.length;\n\n for (var i = 0; i < count - 1; i++) {\n var point = points[i];\n var next = points[i + 1];\n lines.push({\n from: {\n x: point[0],\n y: point[1]\n },\n to: {\n x: next[0],\n y: next[1]\n }\n });\n }\n\n if (lines.length > 1) {\n var first = points[0];\n var last = points[count - 1];\n lines.push({\n from: {\n x: last[0],\n y: last[1]\n },\n to: {\n x: first[0],\n y: first[1]\n }\n });\n }\n\n return lines;\n }; // 空数组,或者一个点返回 false\n\n\n if (points1.length < 2 || points2.length < 2) {\n return false;\n }\n\n var bbox1 = getBBox(points1);\n var bbox2 = getBBox(points2); // 判定包围盒是否相交,比判定点是否在多边形内要快的多,可以筛选掉大多数情况\n\n if (!intersectBBox(bbox1, bbox2)) {\n return false;\n }\n\n var isIn = false; // 判定点是否在多边形内部,一旦有一个点在另一个多边形内,则返回\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(points2, function (point) {\n if (isPointInPolygon(points1, point[0], point[1])) {\n isIn = true;\n return false;\n }\n });\n\n if (isIn) {\n return true;\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(points1, function (point) {\n if (isPointInPolygon(points2, point[0], point[1])) {\n isIn = true;\n return false;\n }\n });\n\n if (isIn) {\n return true;\n }\n\n var lines1 = parseToLines(points1);\n var lines2 = parseToLines(points2);\n var isIntersect = false;\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(lines2, function (line) {\n if (lineIntersectPolygon(lines1, line)) {\n isIntersect = true;\n return false;\n }\n });\n return isIntersect;\n};\n\nvar Line =\n/** @class */\nfunction () {\n function Line(x1, y1, x2, y2) {\n this.x1 = x1;\n this.y1 = y1;\n this.x2 = x2;\n this.y2 = y2;\n }\n\n Line.prototype.getBBox = function () {\n var minX = Math.min(this.x1, this.x2);\n var minY = Math.min(this.y1, this.y2);\n var maxX = Math.max(this.x1, this.x2);\n var maxY = Math.max(this.y1, this.y2);\n var res = {\n x: minX,\n y: minY,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n width: maxX - minX,\n height: maxY - minY\n };\n return res;\n };\n\n return Line;\n}();\n\n\nvar getBBoxBoundLine = function getBBoxBoundLine(bbox, direction) {\n var bounds = {\n top: [bbox.minX, bbox.minY, bbox.maxX, bbox.minY],\n left: [bbox.minX, bbox.minY, bbox.minX, bbox.maxY],\n bottom: [bbox.minX, bbox.maxY, bbox.maxX, bbox.maxY],\n right: [bbox.maxX, bbox.minY, bbox.maxX, bbox.maxY]\n };\n return bounds[direction];\n};\n/**\n * 计算两条线段相交时,相交点对第一条线段上的分割比例\n */\n\nvar fractionAlongLineA = function fractionAlongLineA(la, lb) {\n var uaT = (lb.x2 - lb.x1) * (la.y1 - lb.y1) - (lb.y2 - lb.y1) * (la.x1 - lb.x1);\n var ubT = (la.x2 - la.x1) * (la.y1 - lb.y1) - (la.y2 - la.y1) * (la.x1 - lb.x1);\n var uB = (lb.y2 - lb.y1) * (la.x2 - la.x1) - (lb.x2 - lb.x1) * (la.y2 - la.y1);\n\n if (uB) {\n var ua = uaT / uB;\n var ub = ubT / uB;\n\n if (ua >= 0 && ua <= 1 && ub >= 0 && ub <= 1) {\n return ua;\n }\n }\n\n return Number.POSITIVE_INFINITY;\n};\n\nvar itemIntersectByLine = function itemIntersectByLine(item, line) {\n var directions = ['top', 'left', 'bottom', 'right'];\n var bbox = item.getBBox();\n var countIntersections = 0;\n var intersections = [];\n\n for (var i = 0; i < 4; i++) {\n var _a = getBBoxBoundLine(bbox, directions[i]),\n x1 = _a[0],\n y1 = _a[1],\n x2 = _a[2],\n y2 = _a[3];\n\n intersections[i] = getLineIntersect({\n x: line.x1,\n y: line.y1\n }, {\n x: line.x2,\n y: line.y2\n }, {\n x: x1,\n y: y1\n }, {\n x: x2,\n y: y2\n });\n\n if (intersections[i]) {\n countIntersections += 1;\n }\n }\n\n return [intersections, countIntersections];\n};\nvar fractionToLine = function fractionToLine(item, line) {\n var directions = ['top', 'left', 'bottom', 'right'];\n var bbox = item.getBBox();\n var minDistance = Number.POSITIVE_INFINITY;\n var countIntersections = 0;\n\n for (var i = 0; i < 4; i++) {\n var _a = getBBoxBoundLine(bbox, directions[i]),\n x1 = _a[0],\n y1 = _a[1],\n x2 = _a[2],\n y2 = _a[3];\n\n var testDistance = fractionAlongLineA(line, new Line(x1, y1, x2, y2));\n testDistance = Math.abs(testDistance - 0.5);\n\n if (testDistance >= 0 && testDistance <= 1) {\n countIntersections += 1;\n minDistance = testDistance < minDistance ? testDistance : minDistance;\n }\n }\n\n if (countIntersections === 0) return -1;\n return minDistance;\n};\nvar getPointsCenter = function getPointsCenter(points) {\n var centerX = 0;\n var centerY = 0;\n\n if (points.length > 0) {\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var point = points_1[_i];\n centerX += point.x;\n centerY += point.y;\n }\n\n centerX /= points.length;\n centerY /= points.length;\n }\n\n return {\n x: centerX,\n y: centerY\n };\n};\nvar squareDist = function squareDist(a, b) {\n return Math.pow(a.x - b.x, 2) + Math.pow(a.y - b.y, 2);\n};\nvar pointLineSquareDist = function pointLineSquareDist(point, line) {\n var x1 = line.x1;\n var y1 = line.y1;\n var x2 = line.x2 - x1;\n var y2 = line.y2 - y1;\n var px = point.x - x1;\n var py = point.y - y1;\n var dotprod = px * x2 + py * y2;\n var projlenSq;\n\n if (dotprod <= 0) {\n projlenSq = 0;\n } else {\n px = x2 - px;\n py = y2 - py;\n dotprod = px * x2 + py * y2;\n\n if (dotprod <= 0) {\n projlenSq = 0;\n } else {\n projlenSq = dotprod * dotprod / (x2 * x2 + y2 * y2);\n }\n }\n\n var lenSq = px * px + py * py - projlenSq;\n\n if (lenSq < 0) {\n lenSq = 0;\n }\n\n return lenSq;\n};\nvar isPointsOverlap = function isPointsOverlap(p1, p2, e) {\n if (e === void 0) {\n e = 1e-3;\n }\n\n return Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2) < Math.pow(e, 2);\n};\n/**\n * 点到矩形的距离的平方:矩形内部点视作距离为0,外部的点若投影落在矩形边上则为点到矩形边的最近的垂直距离,否则为点到矩形顶点的距离,\n * @param point IPoint\n * @param rect IRect\n */\n\nvar pointRectSquareDist = function pointRectSquareDist(point, rect) {\n var isLeft = point.x < rect.x;\n var isRight = point.x > rect.x + rect.width;\n var isTop = point.y > rect.y + rect.height;\n var isBottom = point.y < rect.y;\n var isPointOutside = isLeft || isRight || isTop || isBottom;\n\n if (!isPointOutside) {\n return 0;\n }\n\n if (isTop && !isLeft && !isRight) {\n return Math.pow(rect.y + rect.height - point.y, 2);\n }\n\n if (isBottom && !isLeft && !isRight) {\n return Math.pow(point.y - rect.y, 2);\n }\n\n if (isLeft && !isTop && !isBottom) {\n return Math.pow(rect.x - point.x, 2);\n }\n\n if (isRight && !isTop && !isBottom) {\n return Math.pow(rect.x + rect.width - point.x, 2);\n }\n\n var dx = Math.min(Math.abs(rect.x - point.x), Math.abs(rect.x + rect.width - point.x));\n var dy = Math.min(Math.abs(rect.y - point.y), Math.abs(rect.y + rect.height - point.y));\n return dx * dx + dy * dy;\n};\n/**\n * point to line distance\n * @param {array} line 线的四个顶点 [x1, y1, x2, y2]\n * @param {object} point 坐标点 {x, y}\n * @return {Number|NaN} distance\n */\n\nvar pointLineDistance = function pointLineDistance(line, point) {\n var x1 = line[0],\n y1 = line[1],\n x2 = line[2],\n y2 = line[3];\n var x = point.x,\n y = point.y;\n var d = [x2 - x1, y2 - y1];\n\n if (_antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].exactEquals(d, [0, 0])) {\n return NaN;\n }\n\n var u = [-d[1], d[0]]; // @ts-ignore\n\n _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].normalize(u, u);\n var a = [x - x1, y - y1]; // @ts-ignore\n\n return Math.abs(_antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].dot(a, u));\n};\n/**\n * Linearly interpolate between start and end, where alpha is the percent distance along the line.\n * alpha = 0 will be start, and alpha = 1 will be end.\n * @param {Number} start\n * @param {Number} end\n * @param {Number} alpha interpolation factor, typically in the closed interval [0, 1]\n * @returns\n */\n\nvar lerp = function lerp(start, end, alpha) {\n return start + (end - start) * alpha;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy91dGlsL21hdGguanM/YjRjMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEwRDtBQUNmO0FBQzNDLGdCQUFnQixxREFBRztBQUNuQjtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsT0FBTztBQUNwQixhQUFhLE9BQU87QUFDcEIsYUFBYSxRQUFRO0FBQ3JCOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsT0FBTztBQUNwQixhQUFhLE9BQU87QUFDcEIsYUFBYSxRQUFRO0FBQ3JCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLE1BQU07QUFDbEIsWUFBWSxNQUFNO0FBQ2xCLFlBQVksTUFBTTtBQUNsQixZQUFZLE1BQU07QUFDbEIsWUFBWSxNQUFNO0FBQ2xCOzs7QUFHTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLE1BQU07QUFDbEIsWUFBWSxNQUFNO0FBQ2xCLFlBQVksV0FBVztBQUN2Qjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBLGlCQUFpQixtQkFBbUI7QUFDcEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxNQUFNO0FBQ2pCLFlBQVksTUFBTTtBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixZQUFZLE9BQU87QUFDbkI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCOztBQUV4Qjs7QUFFQTtBQUNBLHlCQUF5QjtBQUN6Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksT0FBTztBQUNuQixZQUFZLE9BQU87QUFDbkIsWUFBWSxPQUFPO0FBQ25CLFlBQVksTUFBTTtBQUNsQjs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRSxzREFBSTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxPQUFPO0FBQ25CLFlBQVksT0FBTztBQUNuQixZQUFZLE9BQU87QUFDbkIsWUFBWSxPQUFPO0FBQ25COztBQUVPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSx1QkFBdUIsc0RBQUk7O0FBRTNCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEVBQUUsc0RBQUk7QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLE1BQU07QUFDbEIsWUFBWSxNQUFNO0FBQ2xCOztBQUVPO0FBQ1A7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixVQUFVO0FBQzNCOztBQUVBLG1CQUFtQixVQUFVO0FBQzdCO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0gsaUJBQWlCLFVBQVU7QUFDM0IsbUJBQW1CLFVBQVU7QUFDN0IscUJBQXFCLFVBQVU7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBLGtCQUFrQjs7QUFFbEI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPLDBEQUFPO0FBQ2Q7QUFDQTs7QUFFQSxNQUFNLDBEQUFPO0FBQ2I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7O0FBRUEsaUJBQWlCLE9BQU87QUFDeEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdPO0FBQ1A7QUFDQSx3QkFBd0I7O0FBRXhCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLE9BQU87QUFDeEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsRUFBRTs7QUFFSztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUUsdURBQUk7QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsZUFBZTtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwrQkFBK0I7O0FBRS9CO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUI7O0FBRW5CLEVBQUUsdURBQUk7QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBOztBQUVBLEVBQUUsdURBQUk7QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsdURBQUk7QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFZTtBQUNUO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixPQUFPO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsT0FBTztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7O0FBRUE7QUFDQSx1Q0FBdUMsc0JBQXNCO0FBQzdEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxNQUFNO0FBQ2xCLFlBQVksT0FBTyxZQUFZO0FBQy9CLFlBQVksV0FBVztBQUN2Qjs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE1BQU0sc0RBQUk7QUFDVjtBQUNBOztBQUVBLHdCQUF3Qjs7QUFFeEIsRUFBRSxzREFBSTtBQUNOLDJCQUEyQjs7QUFFM0Isa0JBQWtCLHNEQUFJO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEI7QUFDQTs7QUFFTztBQUNQO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy91dGlsL21hdGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtYXQzLCB2ZWMzLCBleHQsIHZlYzIgfSBmcm9tICdAYW50di9tYXRyaXgtdXRpbCc7XG5pbXBvcnQgeyBpc0FycmF5LCBlYWNoIH0gZnJvbSAnQGFudHYvdXRpbCc7XG52YXIgdHJhbnNmb3JtID0gZXh0LnRyYW5zZm9ybTtcbi8qKlxuICog5a+55q+U5a+56LGh77yM55So5LqO5a+56LGh5pWw57uE5o6S5bqPXG4gKiBAcGFyYW0gICB7c3RyaW5nfSAgICAgICBhdHRyaWJ1dGVOYW1lICDmjpLluo/kvp3mja7nmoTlrZfmrrXlkI3np7BcbiAqIEBwYXJhbSAgIHtudW1iZXJ9ICAgICAgIG1pbiAgICDmnIDlsI/lgLxcbiAqIEBwYXJhbSAgIHtudW1iZXJ9ICAgICAgIG1heCAgICDmnIDlpKflgLxcbiAqIEByZXR1cm4gIHtib29sZWFufSAgICAgIGJvb2wgICDluIPlsJRcbiAqL1xuXG5leHBvcnQgdmFyIGNvbXBhcmUgPSBmdW5jdGlvbiBjb21wYXJlKGF0dHJpYnV0ZU5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChtLCBuKSB7XG4gICAgcmV0dXJuIG1bYXR0cmlidXRlTmFtZV0gLSBuW2F0dHJpYnV0ZU5hbWVdO1xuICB9O1xufTtcbi8qKlxuICog5piv5ZCm5Zyo5Yy66Ze05YaFXG4gKiBAcGFyYW0gICB7bnVtYmVyfSAgICAgICB2YWx1ZSAg5YC8XG4gKiBAcGFyYW0gICB7bnVtYmVyfSAgICAgICBtaW4gICAg5pyA5bCP5YC8XG4gKiBAcGFyYW0gICB7bnVtYmVyfSAgICAgICBtYXggICAg5pyA5aSn5YC8XG4gKiBAcmV0dXJuICB7Ym9vbGVhbn0gICAgICBib29sICAg5biD5bCUXG4gKi9cblxudmFyIGlzQmV0d2VlbiA9IGZ1bmN0aW9uIGlzQmV0d2Vlbih2YWx1ZSwgbWluLCBtYXgpIHtcbiAgcmV0dXJuIHZhbHVlID49IG1pbiAmJiB2YWx1ZSA8PSBtYXg7XG59O1xuLyoqXG4gKiDojrflj5bkuKTmnaHnur/mrrXnmoTkuqTngrlcbiAqIEBwYXJhbSAge1BvaW50fSAgcDAg56ys5LiA5p2h57q/5q616LW354K5XG4gKiBAcGFyYW0gIHtQb2ludH0gIHAxIOesrOS4gOadoee6v+autee7iOeCuVxuICogQHBhcmFtICB7UG9pbnR9ICBwMiDnrKzkuozmnaHnur/mrrXotbfngrlcbiAqIEBwYXJhbSAge1BvaW50fSAgcDMg56ys5LqM5p2h57q/5q6157uI54K5XG4gKiBAcmV0dXJuIHtQb2ludH0gIOS6pOeCuVxuICovXG5cblxuZXhwb3J0IHZhciBnZXRMaW5lSW50ZXJzZWN0ID0gZnVuY3Rpb24gZ2V0TGluZUludGVyc2VjdChwMCwgcDEsIHAyLCBwMykge1xuICB2YXIgdG9sZXJhbmNlID0gMC4wMDAxO1xuICB2YXIgRSA9IHtcbiAgICB4OiBwMi54IC0gcDAueCxcbiAgICB5OiBwMi55IC0gcDAueVxuICB9O1xuICB2YXIgRDAgPSB7XG4gICAgeDogcDEueCAtIHAwLngsXG4gICAgeTogcDEueSAtIHAwLnlcbiAgfTtcbiAgdmFyIEQxID0ge1xuICAgIHg6IHAzLnggLSBwMi54LFxuICAgIHk6IHAzLnkgLSBwMi55XG4gIH07XG4gIHZhciBrcm9zcyA9IEQwLnggKiBEMS55IC0gRDAueSAqIEQxLng7XG4gIHZhciBzcXJLcm9zcyA9IGtyb3NzICoga3Jvc3M7XG4gIHZhciBpbnZlcnRLcm9zcyA9IDEgLyBrcm9zcztcbiAgdmFyIHNxckxlbjAgPSBEMC54ICogRDAueCArIEQwLnkgKiBEMC55O1xuICB2YXIgc3FyTGVuMSA9IEQxLnggKiBEMS54ICsgRDEueSAqIEQxLnk7XG5cbiAgaWYgKHNxcktyb3NzID4gdG9sZXJhbmNlICogc3FyTGVuMCAqIHNxckxlbjEpIHtcbiAgICB2YXIgcyA9IChFLnggKiBEMS55IC0gRS55ICogRDEueCkgKiBpbnZlcnRLcm9zcztcbiAgICB2YXIgdCA9IChFLnggKiBEMC55IC0gRS55ICogRDAueCkgKiBpbnZlcnRLcm9zcztcbiAgICBpZiAoIWlzQmV0d2VlbihzLCAwLCAxKSB8fCAhaXNCZXR3ZWVuKHQsIDAsIDEpKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4ge1xuICAgICAgeDogcDAueCArIHMgKiBEMC54LFxuICAgICAgeTogcDAueSArIHMgKiBEMC55XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcbi8qKlxuICogcG9pbnQgYW5kIHJlY3Rhbmd1bGFyIGludGVyc2VjdGlvbiBwb2ludFxuICogQHBhcmFtICB7SVJlY3R9IHJlY3QgIHJlY3RcbiAqIEBwYXJhbSAge1BvaW50fSBwb2ludCBwb2ludFxuICogQHJldHVybiB7UG9pbnRQb2ludH0gcnN0O1xuICovXG5cbmV4cG9ydCB2YXIgZ2V0UmVjdEludGVyc2VjdEJ5UG9pbnQgPSBmdW5jdGlvbiBnZXRSZWN0SW50ZXJzZWN0QnlQb2ludChyZWN0LCBwb2ludCkge1xuICB2YXIgeCA9IHJlY3QueCxcbiAgICAgIHkgPSByZWN0LnksXG4gICAgICB3aWR0aCA9IHJlY3Qud2lkdGgsXG4gICAgICBoZWlnaHQgPSByZWN0LmhlaWdodDtcbiAgdmFyIGN4ID0geCArIHdpZHRoIC8gMjtcbiAgdmFyIGN5ID0geSArIGhlaWdodCAvIDI7XG4gIHZhciBwb2ludHMgPSBbXTtcbiAgdmFyIGNlbnRlciA9IHtcbiAgICB4OiBjeCxcbiAgICB5OiBjeVxuICB9O1xuICBwb2ludHMucHVzaCh7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH0pO1xuICBwb2ludHMucHVzaCh7XG4gICAgeDogeCArIHdpZHRoLFxuICAgIHk6IHlcbiAgfSk7XG4gIHBvaW50cy5wdXNoKHtcbiAgICB4OiB4ICsgd2lkdGgsXG4gICAgeTogeSArIGhlaWdodFxuICB9KTtcbiAgcG9pbnRzLnB1c2goe1xuICAgIHg6IHgsXG4gICAgeTogeSArIGhlaWdodFxuICB9KTtcbiAgcG9pbnRzLnB1c2goe1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9KTtcbiAgdmFyIHJzdCA9IG51bGw7XG5cbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICByc3QgPSBnZXRMaW5lSW50ZXJzZWN0KHBvaW50c1tpIC0gMV0sIHBvaW50c1tpXSwgY2VudGVyLCBwb2ludCk7XG5cbiAgICBpZiAocnN0KSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcnN0O1xufTtcbi8qKlxuICogZ2V0IHBvaW50IGFuZCBjaXJjbGUgaW5JbnRlcnNlY3RcbiAqIEBwYXJhbSB7SUNpcmNsZX0gY2lyY2xlIOWchueCue+8jHgseSxyXG4gKiBAcGFyYW0ge1BvaW50fSBwb2ludCDngrkgeCx5XG4gKiBAcmV0dXJuIHtQb2ludH0gYXBwbGllZCBwb2ludFxuICovXG5cbmV4cG9ydCB2YXIgZ2V0Q2lyY2xlSW50ZXJzZWN0QnlQb2ludCA9IGZ1bmN0aW9uIGdldENpcmNsZUludGVyc2VjdEJ5UG9pbnQoY2lyY2xlLCBwb2ludCkge1xuICB2YXIgY3ggPSBjaXJjbGUueCxcbiAgICAgIGN5ID0gY2lyY2xlLnksXG4gICAgICByID0gY2lyY2xlLnI7XG4gIHZhciB4ID0gcG9pbnQueCxcbiAgICAgIHkgPSBwb2ludC55O1xuICB2YXIgZHggPSB4IC0gY3g7XG4gIHZhciBkeSA9IHkgLSBjeTtcblxuICBpZiAoZHggKiBkeCArIGR5ICogZHkgPCByICogcikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdmFyIGFuZ2xlID0gTWF0aC5hdGFuKGR5IC8gZHgpO1xuICByZXR1cm4ge1xuICAgIHg6IGN4ICsgTWF0aC5hYnMociAqIE1hdGguY29zKGFuZ2xlKSkgKiBNYXRoLnNpZ24oZHgpLFxuICAgIHk6IGN5ICsgTWF0aC5hYnMociAqIE1hdGguc2luKGFuZ2xlKSkgKiBNYXRoLnNpZ24oZHkpXG4gIH07XG59O1xuLyoqXG4gKiBnZXQgcG9pbnQgYW5kIGVsbGlwc2UgaW5JbnRlcnNlY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBlbGxpcHNlIOakreWchiB4LHkscngscnlcbiAqIEBwYXJhbSB7T2JqZWN0fSBwb2ludCDngrkgeCx5XG4gKiBAcmV0dXJuIHtvYmplY3R9IGFwcGxpZWQgcG9pbnRcbiAqL1xuXG5leHBvcnQgdmFyIGdldEVsbGlwc2VJbnRlcnNlY3RCeVBvaW50ID0gZnVuY3Rpb24gZ2V0RWxsaXBzZUludGVyc2VjdEJ5UG9pbnQoZWxsaXBzZSwgcG9pbnQpIHtcbiAgdmFyIGEgPSBlbGxpcHNlLnJ4O1xuICB2YXIgYiA9IGVsbGlwc2Uucnk7XG4gIHZhciBjeCA9IGVsbGlwc2UueDtcbiAgdmFyIGN5ID0gZWxsaXBzZS55O1xuICB2YXIgZHggPSBwb2ludC54IC0gY3g7XG4gIHZhciBkeSA9IHBvaW50LnkgLSBjeTsgLy8g55u05o6l6YCa6L+HIHgseSDmsYLlpLnop5LvvIzmsYLlh7rmnaXnmoTojIPlm7TmmK8gLVBJLCBQSVxuXG4gIHZhciBhbmdsZSA9IE1hdGguYXRhbjIoZHkgLyBiLCBkeCAvIGEpO1xuXG4gIGlmIChhbmdsZSA8IDApIHtcbiAgICBhbmdsZSArPSAyICogTWF0aC5QSTsgLy8g6L2s5o2i5YiwIDDvvIwyUElcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgeDogY3ggKyBhICogTWF0aC5jb3MoYW5nbGUpLFxuICAgIHk6IGN5ICsgYiAqIE1hdGguc2luKGFuZ2xlKVxuICB9O1xufTtcbi8qKlxuICogY29vcmRpbmF0ZSBtYXRyaXggdHJhbnNmb3JtYXRpb25cbiAqIEBwYXJhbSAge251bWJlcn0gcG9pbnQgICBjb29yZGluYXRlXG4gKiBAcGFyYW0gIHtNYXRyaXh9IG1hdHJpeCAgbWF0cml4XG4gKiBAcGFyYW0gIHtudW1iZXJ9IHRhZyAgICAgY291bGQgYmUgMCBvciAxXG4gKiBAcmV0dXJuIHtQb2ludH0gdHJhbnNmb3JtZWQgcG9pbnRcbiAqL1xuXG5leHBvcnQgdmFyIGFwcGx5TWF0cml4ID0gZnVuY3Rpb24gYXBwbHlNYXRyaXgocG9pbnQsIG1hdHJpeCwgdGFnKSB7XG4gIGlmICh0YWcgPT09IHZvaWQgMCkge1xuICAgIHRhZyA9IDE7XG4gIH1cblxuICB2YXIgdmVjdG9yID0gW3BvaW50LngsIHBvaW50LnksIHRhZ107XG5cbiAgaWYgKCFtYXRyaXggfHwgaXNOYU4obWF0cml4WzBdKSkge1xuICAgIG1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgfVxuXG4gIHZlYzMudHJhbnNmb3JtTWF0Myh2ZWN0b3IsIHZlY3RvciwgbWF0cml4KTtcbiAgcmV0dXJuIHtcbiAgICB4OiB2ZWN0b3JbMF0sXG4gICAgeTogdmVjdG9yWzFdXG4gIH07XG59O1xuLyoqXG4gKiBjb29yZGluYXRlIG1hdHJpeCBpbnZlcnQgdHJhbnNmb3JtYXRpb25cbiAqIEBwYXJhbSAge251bWJlcn0gcG9pbnQgICBjb29yZGluYXRlXG4gKiBAcGFyYW0gIHtudW1iZXJ9IG1hdHJpeCAgbWF0cml4XG4gKiBAcGFyYW0gIHtudW1iZXJ9IHRhZyAgICAgY291bGQgYmUgMCBvciAxXG4gKiBAcmV0dXJuIHtvYmplY3R9IHRyYW5zZm9ybWVkIHBvaW50XG4gKi9cblxuZXhwb3J0IHZhciBpbnZlcnRNYXRyaXggPSBmdW5jdGlvbiBpbnZlcnRNYXRyaXgocG9pbnQsIG1hdHJpeCwgdGFnKSB7XG4gIGlmICh0YWcgPT09IHZvaWQgMCkge1xuICAgIHRhZyA9IDE7XG4gIH1cblxuICBpZiAoIW1hdHJpeCB8fCBpc05hTihtYXRyaXhbMF0pKSB7XG4gICAgbWF0cml4ID0gWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuICB9XG5cbiAgdmFyIGludmVyc2VkTWF0cml4ID0gbWF0My5pbnZlcnQoWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdLCBtYXRyaXgpO1xuXG4gIGlmICghaW52ZXJzZWRNYXRyaXgpIHtcbiAgICBpbnZlcnNlZE1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgfVxuXG4gIHZhciB2ZWN0b3IgPSBbcG9pbnQueCwgcG9pbnQueSwgdGFnXTtcbiAgdmVjMy50cmFuc2Zvcm1NYXQzKHZlY3RvciwgdmVjdG9yLCBpbnZlcnNlZE1hdHJpeCk7XG4gIHJldHVybiB7XG4gICAgeDogdmVjdG9yWzBdLFxuICAgIHk6IHZlY3RvclsxXVxuICB9O1xufTtcbi8qKlxuICpcbiAqIEBwYXJhbSBwMSBGaXJzdCBjb29yZGluYXRlXG4gKiBAcGFyYW0gcDIgc2Vjb25kIGNvb3JkaW5hdGVcbiAqIEBwYXJhbSBwMyB0aHJlZSBjb29yZGluYXRlXG4gKi9cblxuZXhwb3J0IHZhciBnZXRDaXJjbGVDZW50ZXJCeVBvaW50cyA9IGZ1bmN0aW9uIGdldENpcmNsZUNlbnRlckJ5UG9pbnRzKHAxLCBwMiwgcDMpIHtcbiAgdmFyIGEgPSBwMS54IC0gcDIueDtcbiAgdmFyIGIgPSBwMS55IC0gcDIueTtcbiAgdmFyIGMgPSBwMS54IC0gcDMueDtcbiAgdmFyIGQgPSBwMS55IC0gcDMueTtcbiAgdmFyIGUgPSAocDEueCAqIHAxLnggLSBwMi54ICogcDIueCAtIHAyLnkgKiBwMi55ICsgcDEueSAqIHAxLnkpIC8gMjtcbiAgdmFyIGYgPSAocDEueCAqIHAxLnggLSBwMy54ICogcDMueCAtIHAzLnkgKiBwMy55ICsgcDEueSAqIHAxLnkpIC8gMjtcbiAgdmFyIGRlbm9taW5hdG9yID0gYiAqIGMgLSBhICogZDtcbiAgcmV0dXJuIHtcbiAgICB4OiAtKGQgKiBlIC0gYiAqIGYpIC8gZGVub21pbmF0b3IsXG4gICAgeTogLShhICogZiAtIGMgKiBlKSAvIGRlbm9taW5hdG9yXG4gIH07XG59O1xuLyoqXG4gKiBnZXQgZGlzdGFuY2UgYnkgdHdvIHBvaW50c1xuICogQHBhcmFtIHAxIGZpcnN0IHBvaW50XG4gKiBAcGFyYW0gcDIgc2Vjb25kIHBvaW50XG4gKi9cblxuZXhwb3J0IHZhciBkaXN0YW5jZSA9IGZ1bmN0aW9uIGRpc3RhbmNlKHAxLCBwMikge1xuICB2YXIgdnggPSBwMS54IC0gcDIueDtcbiAgdmFyIHZ5ID0gcDEueSAtIHAyLnk7XG4gIHJldHVybiBNYXRoLnNxcnQodnggKiB2eCArIHZ5ICogdnkpO1xufTtcbi8qKlxuICogc2NhbGUgbWF0cml4XG4gKiBAcGFyYW0gbWF0cml4IFsgW10sIFtdLCBbXSBdXG4gKiBAcGFyYW0gcmF0aW9cbiAqL1xuXG5leHBvcnQgdmFyIHNjYWxlTWF0cml4ID0gZnVuY3Rpb24gc2NhbGVNYXRyaXgobWF0cml4LCByYXRpbykge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIG1hdHJpeC5mb3JFYWNoKGZ1bmN0aW9uIChyb3cpIHtcbiAgICB2YXIgbmV3Um93ID0gW107XG4gICAgcm93LmZvckVhY2goZnVuY3Rpb24gKHYpIHtcbiAgICAgIG5ld1Jvdy5wdXNoKHYgKiByYXRpbyk7XG4gICAgfSk7XG4gICAgcmVzdWx0LnB1c2gobmV3Um93KTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuLyoqXG4gKiBGbG95ZCBXYXJzaGFsbCBhbGdvcml0aG0gZm9yIHNob3J0ZXN0IHBhdGggZGlzdGFuY2VzIG1hdHJpeFxuICogQHBhcmFtICB7YXJyYXl9IGFkak1hdHJpeCAgIGFkamFjZW5jeSBtYXRyaXhcbiAqIEByZXR1cm4ge2FycmF5fSBkaXN0YW5jZXMgICBzaG9ydGVzdCBwYXRoIGRpc3RhbmNlcyBtYXRyaXhcbiAqL1xuXG5leHBvcnQgdmFyIGZsb3lkV2Fyc2hhbGwgPSBmdW5jdGlvbiBmbG95ZFdhcnNoYWxsKGFkak1hdHJpeCkge1xuICAvLyBpbml0aWFsaXplXG4gIHZhciBkaXN0ID0gW107XG4gIHZhciBzaXplID0gYWRqTWF0cml4Lmxlbmd0aDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkgKz0gMSkge1xuICAgIGRpc3RbaV0gPSBbXTtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2l6ZTsgaiArPSAxKSB7XG4gICAgICBpZiAoaSA9PT0gaikge1xuICAgICAgICBkaXN0W2ldW2pdID0gMDtcbiAgICAgIH0gZWxzZSBpZiAoYWRqTWF0cml4W2ldW2pdID09PSAwIHx8ICFhZGpNYXRyaXhbaV1bal0pIHtcbiAgICAgICAgZGlzdFtpXVtqXSA9IEluZmluaXR5O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzdFtpXVtqXSA9IGFkak1hdHJpeFtpXVtqXTtcbiAgICAgIH1cbiAgICB9XG4gIH0gLy8gZmxveWRcblxuXG4gIGZvciAodmFyIGsgPSAwOyBrIDwgc2l6ZTsgayArPSAxKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpICs9IDEpIHtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2l6ZTsgaiArPSAxKSB7XG4gICAgICAgIGlmIChkaXN0W2ldW2pdID4gZGlzdFtpXVtrXSArIGRpc3Rba11bal0pIHtcbiAgICAgICAgICBkaXN0W2ldW2pdID0gZGlzdFtpXVtrXSArIGRpc3Rba11bal07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGlzdDtcbn07XG4vKipcbiAqIGdldCBhZGphY2VuY3kgbWF0cml4XG4gKiBAcGFyYW0gZGF0YSBncmFwaCBkYXRhXG4gKiBAcGFyYW0gZGlyZWN0ZWQgd2hldGhlciBpdCdzIGEgZGlyZWN0ZWQgZ3JhcGhcbiAqL1xuXG5leHBvcnQgdmFyIGdldEFkak1hdHJpeCA9IGZ1bmN0aW9uIGdldEFkak1hdHJpeChkYXRhLCBkaXJlY3RlZCkge1xuICB2YXIgbm9kZXMgPSBkYXRhLm5vZGVzLFxuICAgICAgZWRnZXMgPSBkYXRhLmVkZ2VzO1xuICB2YXIgbWF0cml4ID0gW107IC8vIG1hcCBub2RlIHdpdGggaW5kZXggaW4gZGF0YS5ub2Rlc1xuXG4gIHZhciBub2RlTWFwID0ge307XG5cbiAgaWYgKCFub2Rlcykge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBub2RlcyBkYXRhIScpO1xuICB9XG5cbiAgaWYgKG5vZGVzKSB7XG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSwgaSkge1xuICAgICAgbm9kZU1hcFtub2RlLmlkXSA9IGk7XG4gICAgICB2YXIgcm93ID0gW107XG4gICAgICBtYXRyaXgucHVzaChyb3cpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKGVkZ2VzKSB7XG4gICAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xuICAgICAgdmFyIHNvdXJjZSA9IGUuc291cmNlLFxuICAgICAgICAgIHRhcmdldCA9IGUudGFyZ2V0O1xuICAgICAgdmFyIHNJbmRleCA9IG5vZGVNYXBbc291cmNlXTtcbiAgICAgIHZhciB0SW5kZXggPSBub2RlTWFwW3RhcmdldF07XG4gICAgICBtYXRyaXhbc0luZGV4XVt0SW5kZXhdID0gMTtcblxuICAgICAgaWYgKCFkaXJlY3RlZCkge1xuICAgICAgICBtYXRyaXhbdEluZGV4XVtzSW5kZXhdID0gMTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBtYXRyaXg7XG59O1xuLyoqXG4gKiDlubPnp7tncm91cFxuICogQHBhcmFtIGdyb3VwIEdyb3VwIOWunuS+i1xuICogQHBhcmFtIHZlYyDnp7vliqjlkJHph49cbiAqL1xuXG5leHBvcnQgdmFyIHRyYW5zbGF0ZSA9IGZ1bmN0aW9uIHRyYW5zbGF0ZShncm91cCwgdmVjKSB7XG4gIGdyb3VwLnRyYW5zbGF0ZSh2ZWMueCwgdmVjLnkpO1xufTtcbi8qKlxuICog56e75Yqo5Yiw5oyH5a6a5Z2Q5qCH54K5XG4gKiBAcGFyYW0gZ3JvdXAgR3JvdXAg5a6e5L6LXG4gKiBAcGFyYW0gcG9pbnQg56e75Yqo5Yiw55qE5Z2Q5qCH54K5XG4gKi9cblxuZXhwb3J0IHZhciBtb3ZlID0gZnVuY3Rpb24gbW92ZShncm91cCwgcG9pbnQsIGFuaW1hdGUsIGFuaW1hdGVDZmcpIHtcbiAgaWYgKGFuaW1hdGVDZmcgPT09IHZvaWQgMCkge1xuICAgIGFuaW1hdGVDZmcgPSB7XG4gICAgICBkdXJhdGlvbjogNTAwXG4gICAgfTtcbiAgfVxuXG4gIHZhciBtYXRyaXggPSBncm91cC5nZXRNYXRyaXgoKTtcblxuICBpZiAoIW1hdHJpeCkge1xuICAgIG1hdHJpeCA9IFsxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxXTtcbiAgfVxuXG4gIHZhciBiYm94ID0gZ3JvdXAuZ2V0Q2FudmFzQkJveCgpO1xuICB2YXIgdnggPSBwb2ludC54IC0gYmJveC5taW5YO1xuICB2YXIgdnkgPSBwb2ludC55IC0gYmJveC5taW5ZO1xuXG4gIGlmIChhbmltYXRlKSB7XG4gICAgdmFyIGR4XzEgPSB2eCAqIG1hdHJpeFswXTtcbiAgICB2YXIgZHlfMSA9IHZ5ICogbWF0cml4WzRdO1xuICAgIHZhciBsYXN0WF8xID0gMDtcbiAgICB2YXIgbGFzdFlfMSA9IDA7XG4gICAgdmFyIG5ld1hfMSA9IDA7XG4gICAgdmFyIG5ld1lfMSA9IDA7XG4gICAgZ3JvdXAuYW5pbWF0ZShmdW5jdGlvbiAocmF0aW8pIHtcbiAgICAgIG5ld1hfMSA9IGR4XzEgKiByYXRpbztcbiAgICAgIG5ld1lfMSA9IGR5XzEgKiByYXRpbztcbiAgICAgIG1hdHJpeCA9IHRyYW5zZm9ybShtYXRyaXgsIFtbJ3QnLCBuZXdYXzEgLSBsYXN0WF8xLCBuZXdZXzEgLSBsYXN0WV8xXV0pO1xuICAgICAgbGFzdFhfMSA9IG5ld1hfMTtcbiAgICAgIGxhc3RZXzEgPSBuZXdZXzE7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtYXRyaXg6IG1hdHJpeFxuICAgICAgfTtcbiAgICB9LCBhbmltYXRlQ2ZnKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgbW92ZWRNYXRyaXggPSB0cmFuc2Zvcm0obWF0cml4LCBbWyd0JywgdngsIHZ5XV0pO1xuICAgIGdyb3VwLnNldE1hdHJpeChtb3ZlZE1hdHJpeCk7XG4gIH1cbn07XG4vKipcbiAqIOe8qeaUviBncm91cFxuICogQHBhcmFtIGdyb3VwIEdyb3VwIOWunuS+i1xuICogQHBhcmFtIHBvaW50IOWcqHgg5ZKMIHkg5pa55ZCR5LiK55qE57yp5pS+5q+U5L6LXG4gKi9cblxuZXhwb3J0IHZhciBzY2FsZSA9IGZ1bmN0aW9uIHNjYWxlKGdyb3VwLCByYXRpbykge1xuICB2YXIgbWF0cml4ID0gZ3JvdXAuZ2V0TWF0cml4KCk7XG5cbiAgaWYgKCFtYXRyaXgpIHtcbiAgICBtYXRyaXggPSBbMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMV07XG4gIH1cblxuICB2YXIgc2NhbGVYWSA9IHJhdGlvO1xuXG4gIGlmICghaXNBcnJheShyYXRpbykpIHtcbiAgICBzY2FsZVhZID0gW3JhdGlvLCByYXRpb107XG4gIH1cblxuICBpZiAoaXNBcnJheShyYXRpbykgJiYgcmF0aW8ubGVuZ3RoID09PSAxKSB7XG4gICAgc2NhbGVYWSA9IFtyYXRpb1swXSwgcmF0aW9bMF1dO1xuICB9XG5cbiAgbWF0cml4ID0gdHJhbnNmb3JtKG1hdHJpeCwgW1sncycsIHNjYWxlWFlbMF0sIHNjYWxlWFlbMV1dXSk7XG4gIGdyb3VwLnNldE1hdHJpeChtYXRyaXgpO1xufTtcbi8qKlxuICpcbiAqIEBwYXJhbSBncm91cCBHcm91cCDlrp7kvotcbiAqIEBwYXJhbSByYXRpbyDpgInmi6nop5LluqZcbiAqL1xuXG5leHBvcnQgdmFyIHJvdGF0ZSA9IGZ1bmN0aW9uIHJvdGF0ZShncm91cCwgYW5nbGUpIHtcbiAgdmFyIG1hdHJpeCA9IGdyb3VwLmdldE1hdHJpeCgpO1xuXG4gIGlmICghbWF0cml4KSB7XG4gICAgbWF0cml4ID0gWzEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDFdO1xuICB9XG5cbiAgbWF0cml4ID0gdHJhbnNmb3JtKG1hdHJpeCwgW1sncicsIGFuZ2xlXV0pO1xuICBncm91cC5zZXRNYXRyaXgobWF0cml4KTtcbn07XG5leHBvcnQgdmFyIGdldERlZ3JlZSA9IGZ1bmN0aW9uIGdldERlZ3JlZShuLCBub2RlSWR4TWFwLCBlZGdlcykge1xuICB2YXIgZGVncmVlcyA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgZGVncmVlc1tpXSA9IDA7XG4gIH1cblxuICBlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XG4gICAgaWYgKGUuc291cmNlKSB7XG4gICAgICBkZWdyZWVzW25vZGVJZHhNYXBbZS5zb3VyY2VdXSArPSAxO1xuICAgIH1cblxuICAgIGlmIChlLnRhcmdldCkge1xuICAgICAgZGVncmVlc1tub2RlSWR4TWFwW2UudGFyZ2V0XV0gKz0gMTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gZGVncmVlcztcbn07IC8vIOWIpOaWreeCuVHmmK/lkKblnKhwMeWSjHAy55qE57q/5q615LiKXG5cbmZ1bmN0aW9uIG9uU2VnbWVudChwMSwgcDIsIHEpIHtcbiAgaWYgKChxWzBdIC0gcDFbMF0pICogKHAyWzFdIC0gcDFbMV0pID09PSAocDJbMF0gLSBwMVswXSkgKiAocVsxXSAtIHAxWzFdKSAmJiBNYXRoLm1pbihwMVswXSwgcDJbMF0pIDw9IHFbMF0gJiYgcVswXSA8PSBNYXRoLm1heChwMVswXSwgcDJbMF0pICYmIE1hdGgubWluKHAxWzFdLCBwMlsxXSkgPD0gcVsxXSAmJiBxWzFdIDw9IE1hdGgubWF4KHAxWzFdLCBwMlsxXSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cbi8qKlxuICog5Yik5pat54K5UOWcqOWkmui+ueW9ouWGhS3lsITnur/ms5UuIEJvcnJvdyBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9hbnR2aXMvdXRpbC9ibG9iL21hc3Rlci9wYWNrYWdlcy9wYXRoLXV0aWwvc3JjL3BvaW50LWluLXBvbHlnb24udHNcbiAqIEBwYXJhbSBwb2ludHNcbiAqIEBwYXJhbSB4XG4gKiBAcGFyYW0geVxuICovXG5cblxuZXhwb3J0IHZhciBpc1BvaW50SW5Qb2x5Z29uID0gZnVuY3Rpb24gaXNQb2ludEluUG9seWdvbihwb2ludHMsIHgsIHkpIHtcbiAgdmFyIGlzSGl0ID0gZmFsc2U7XG4gIHZhciBuID0gcG9pbnRzLmxlbmd0aDsgLy8g5Yik5pat5Lik5LiqZG91Ymxl5ZyoZXBz57K+5bqm5LiL55qE5aSn5bCP5YWz57O7XG5cbiAgdmFyIHRvbGVyYW5jZSA9IDFlLTY7XG5cbiAgZnVuY3Rpb24gZGNtcCh4VmFsdWUpIHtcbiAgICBpZiAoTWF0aC5hYnMoeFZhbHVlKSA8IHRvbGVyYW5jZSkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHhWYWx1ZSA8IDAgPyAtMSA6IDE7XG4gIH1cblxuICBpZiAobiA8PSAyKSB7XG4gICAgLy8gc3ZnIOS4reeCueWwj+S6jiAzIOS4quaXtu+8jOS4jeaYvuekuu+8jOS5n+aXoOazleiiq+aLvuWPllxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgdmFyIHAxID0gcG9pbnRzW2ldO1xuICAgIHZhciBwMiA9IHBvaW50c1soaSArIDEpICUgbl07XG5cbiAgICBpZiAob25TZWdtZW50KHAxLCBwMiwgW3gsIHldKSkge1xuICAgICAgLy8g54K55Zyo5aSa6L655b2i5LiA5p2h6L655LiKXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IC8vIOWJjeS4gOS4quWIpOaWrW1pbihwMVsxXSxwMlsxXSk8UC55PD1tYXgocDFbMV0scDJbMV0pXG4gICAgLy8g5ZCO5LiA5Liq5Yik5pat6KKr5rWL54K5IOWcqCDlsITnur/kuI7ovrnkuqTngrkg55qE5bem6L65XG5cblxuICAgIGlmIChkY21wKHAxWzFdIC0geSkgPiAwICE9PSBkY21wKHAyWzFdIC0geSkgPiAwICYmIGRjbXAoeCAtICh5IC0gcDFbMV0pICogKHAxWzBdIC0gcDJbMF0pIC8gKHAxWzFdIC0gcDJbMV0pIC0gcDFbMF0pIDwgMCkge1xuICAgICAgaXNIaXQgPSAhaXNIaXQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGlzSGl0O1xufTsgLy8g5Yik5pat5Lik5LiqQkJveOaYr+WQpuebuOS6pFxuXG5leHBvcnQgdmFyIGludGVyc2VjdEJCb3ggPSBmdW5jdGlvbiBpbnRlcnNlY3RCQm94KGJveDEsIGJveDIpIHtcbiAgcmV0dXJuICEoYm94Mi5taW5YID4gYm94MS5tYXhYIHx8IGJveDIubWF4WCA8IGJveDEubWluWCB8fCBib3gyLm1pblkgPiBib3gxLm1heFkgfHwgYm94Mi5tYXhZIDwgYm94MS5taW5ZKTtcbn07XG5cbnZhciBsaW5lSW50ZXJzZWN0UG9seWdvbiA9IGZ1bmN0aW9uIGxpbmVJbnRlcnNlY3RQb2x5Z29uKGxpbmVzLCBsaW5lKSB7XG4gIHZhciBpc0ludGVyc2VjdCA9IGZhbHNlO1xuICBlYWNoKGxpbmVzLCBmdW5jdGlvbiAobCkge1xuICAgIGlmIChnZXRMaW5lSW50ZXJzZWN0KGwuZnJvbSwgbC50bywgbGluZS5mcm9tLCBsaW5lLnRvKSkge1xuICAgICAgaXNJbnRlcnNlY3QgPSB0cnVlO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBpc0ludGVyc2VjdDtcbn07XG4vKipcbiAqIOWIpOaWreS4pOS4qnBvbHlnb27mmK/lkKbnm7jkuqTjgIJcbiAqIGJvcnJvdyBmcm9tIEBhbnR2L3BhdGgtdXRpbFxuICogQHBhcmFtIHBvaW50czEgcG9seWdvbjHnmoTpobbngrnmlbDnu4RcbiAqIEBwYXJhbSBwb2ludHMyIHBvbHlnb24y55qE6aG254K55pWw57uEXG4gKi9cblxuXG5leHBvcnQgdmFyIGlzUG9seWdvbnNJbnRlcnNlY3QgPSBmdW5jdGlvbiBpc1BvbHlnb25zSW50ZXJzZWN0KHBvaW50czEsIHBvaW50czIpIHtcbiAgdmFyIGdldEJCb3ggPSBmdW5jdGlvbiBnZXRCQm94KHBvaW50cykge1xuICAgIHZhciB4QXJyID0gcG9pbnRzLm1hcChmdW5jdGlvbiAocCkge1xuICAgICAgcmV0dXJuIHBbMF07XG4gICAgfSk7XG4gICAgdmFyIHlBcnIgPSBwb2ludHMubWFwKGZ1bmN0aW9uIChwKSB7XG4gICAgICByZXR1cm4gcFsxXTtcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgbWluWDogTWF0aC5taW4uYXBwbHkobnVsbCwgeEFyciksXG4gICAgICBtYXhYOiBNYXRoLm1heC5hcHBseShudWxsLCB4QXJyKSxcbiAgICAgIG1pblk6IE1hdGgubWluLmFwcGx5KG51bGwsIHlBcnIpLFxuICAgICAgbWF4WTogTWF0aC5tYXguYXBwbHkobnVsbCwgeUFycilcbiAgICB9O1xuICB9O1xuXG4gIHZhciBwYXJzZVRvTGluZXMgPSBmdW5jdGlvbiBwYXJzZVRvTGluZXMocG9pbnRzKSB7XG4gICAgdmFyIGxpbmVzID0gW107XG4gICAgdmFyIGNvdW50ID0gcG9pbnRzLmxlbmd0aDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQgLSAxOyBpKyspIHtcbiAgICAgIHZhciBwb2ludCA9IHBvaW50c1tpXTtcbiAgICAgIHZhciBuZXh0ID0gcG9pbnRzW2kgKyAxXTtcbiAgICAgIGxpbmVzLnB1c2goe1xuICAgICAgICBmcm9tOiB7XG4gICAgICAgICAgeDogcG9pbnRbMF0sXG4gICAgICAgICAgeTogcG9pbnRbMV1cbiAgICAgICAgfSxcbiAgICAgICAgdG86IHtcbiAgICAgICAgICB4OiBuZXh0WzBdLFxuICAgICAgICAgIHk6IG5leHRbMV1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGxpbmVzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHZhciBmaXJzdCA9IHBvaW50c1swXTtcbiAgICAgIHZhciBsYXN0ID0gcG9pbnRzW2NvdW50IC0gMV07XG4gICAgICBsaW5lcy5wdXNoKHtcbiAgICAgICAgZnJvbToge1xuICAgICAgICAgIHg6IGxhc3RbMF0sXG4gICAgICAgICAgeTogbGFzdFsxXVxuICAgICAgICB9LFxuICAgICAgICB0bzoge1xuICAgICAgICAgIHg6IGZpcnN0WzBdLFxuICAgICAgICAgIHk6IGZpcnN0WzFdXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBsaW5lcztcbiAgfTsgLy8g56m65pWw57uE77yM5oiW6ICF5LiA5Liq54K56L+U5ZueIGZhbHNlXG5cblxuICBpZiAocG9pbnRzMS5sZW5ndGggPCAyIHx8IHBvaW50czIubGVuZ3RoIDwgMikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBiYm94MSA9IGdldEJCb3gocG9pbnRzMSk7XG4gIHZhciBiYm94MiA9IGdldEJCb3gocG9pbnRzMik7IC8vIOWIpOWumuWMheWbtOebkuaYr+WQpuebuOS6pO+8jOavlOWIpOWumueCueaYr+WQpuWcqOWkmui+ueW9ouWGheimgeW/q+eahOWkmu+8jOWPr+S7peetm+mAieaOieWkp+WkmuaVsOaDheWGtVxuXG4gIGlmICghaW50ZXJzZWN0QkJveChiYm94MSwgYmJveDIpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIGlzSW4gPSBmYWxzZTsgLy8g5Yik5a6a54K55piv5ZCm5Zyo5aSa6L655b2i5YaF6YOo77yM5LiA5pem5pyJ5LiA5Liq54K55Zyo5Y+m5LiA5Liq5aSa6L655b2i5YaF77yM5YiZ6L+U5ZueXG5cbiAgZWFjaChwb2ludHMyLCBmdW5jdGlvbiAocG9pbnQpIHtcbiAgICBpZiAoaXNQb2ludEluUG9seWdvbihwb2ludHMxLCBwb2ludFswXSwgcG9pbnRbMV0pKSB7XG4gICAgICBpc0luID0gdHJ1ZTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0pO1xuXG4gIGlmIChpc0luKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBlYWNoKHBvaW50czEsIGZ1bmN0aW9uIChwb2ludCkge1xuICAgIGlmIChpc1BvaW50SW5Qb2x5Z29uKHBvaW50czIsIHBvaW50WzBdLCBwb2ludFsxXSkpIHtcbiAgICAgIGlzSW4gPSB0cnVlO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKGlzSW4pIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHZhciBsaW5lczEgPSBwYXJzZVRvTGluZXMocG9pbnRzMSk7XG4gIHZhciBsaW5lczIgPSBwYXJzZVRvTGluZXMocG9pbnRzMik7XG4gIHZhciBpc0ludGVyc2VjdCA9IGZhbHNlO1xuICBlYWNoKGxpbmVzMiwgZnVuY3Rpb24gKGxpbmUpIHtcbiAgICBpZiAobGluZUludGVyc2VjdFBvbHlnb24obGluZXMxLCBsaW5lKSkge1xuICAgICAgaXNJbnRlcnNlY3QgPSB0cnVlO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBpc0ludGVyc2VjdDtcbn07XG5cbnZhciBMaW5lID1cbi8qKiBAY2xhc3MgKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gTGluZSh4MSwgeTEsIHgyLCB5Mikge1xuICAgIHRoaXMueDEgPSB4MTtcbiAgICB0aGlzLnkxID0geTE7XG4gICAgdGhpcy54MiA9IHgyO1xuICAgIHRoaXMueTIgPSB5MjtcbiAgfVxuXG4gIExpbmUucHJvdG90eXBlLmdldEJCb3ggPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG1pblggPSBNYXRoLm1pbih0aGlzLngxLCB0aGlzLngyKTtcbiAgICB2YXIgbWluWSA9IE1hdGgubWluKHRoaXMueTEsIHRoaXMueTIpO1xuICAgIHZhciBtYXhYID0gTWF0aC5tYXgodGhpcy54MSwgdGhpcy54Mik7XG4gICAgdmFyIG1heFkgPSBNYXRoLm1heCh0aGlzLnkxLCB0aGlzLnkyKTtcbiAgICB2YXIgcmVzID0ge1xuICAgICAgeDogbWluWCxcbiAgICAgIHk6IG1pblksXG4gICAgICBtaW5YOiBtaW5YLFxuICAgICAgbWluWTogbWluWSxcbiAgICAgIG1heFg6IG1heFgsXG4gICAgICBtYXhZOiBtYXhZLFxuICAgICAgd2lkdGg6IG1heFggLSBtaW5YLFxuICAgICAgaGVpZ2h0OiBtYXhZIC0gbWluWVxuICAgIH07XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICByZXR1cm4gTGluZTtcbn0oKTtcblxuZXhwb3J0IHsgTGluZSB9O1xuZXhwb3J0IHZhciBnZXRCQm94Qm91bmRMaW5lID0gZnVuY3Rpb24gZ2V0QkJveEJvdW5kTGluZShiYm94LCBkaXJlY3Rpb24pIHtcbiAgdmFyIGJvdW5kcyA9IHtcbiAgICB0b3A6IFtiYm94Lm1pblgsIGJib3gubWluWSwgYmJveC5tYXhYLCBiYm94Lm1pblldLFxuICAgIGxlZnQ6IFtiYm94Lm1pblgsIGJib3gubWluWSwgYmJveC5taW5YLCBiYm94Lm1heFldLFxuICAgIGJvdHRvbTogW2Jib3gubWluWCwgYmJveC5tYXhZLCBiYm94Lm1heFgsIGJib3gubWF4WV0sXG4gICAgcmlnaHQ6IFtiYm94Lm1heFgsIGJib3gubWluWSwgYmJveC5tYXhYLCBiYm94Lm1heFldXG4gIH07XG4gIHJldHVybiBib3VuZHNbZGlyZWN0aW9uXTtcbn07XG4vKipcbiAqIOiuoeeul+S4pOadoee6v+auteebuOS6pOaXtu+8jOebuOS6pOeCueWvueesrOS4gOadoee6v+auteS4iueahOWIhuWJsuavlOS+i1xuICovXG5cbnZhciBmcmFjdGlvbkFsb25nTGluZUEgPSBmdW5jdGlvbiBmcmFjdGlvbkFsb25nTGluZUEobGEsIGxiKSB7XG4gIHZhciB1YVQgPSAobGIueDIgLSBsYi54MSkgKiAobGEueTEgLSBsYi55MSkgLSAobGIueTIgLSBsYi55MSkgKiAobGEueDEgLSBsYi54MSk7XG4gIHZhciB1YlQgPSAobGEueDIgLSBsYS54MSkgKiAobGEueTEgLSBsYi55MSkgLSAobGEueTIgLSBsYS55MSkgKiAobGEueDEgLSBsYi54MSk7XG4gIHZhciB1QiA9IChsYi55MiAtIGxiLnkxKSAqIChsYS54MiAtIGxhLngxKSAtIChsYi54MiAtIGxiLngxKSAqIChsYS55MiAtIGxhLnkxKTtcblxuICBpZiAodUIpIHtcbiAgICB2YXIgdWEgPSB1YVQgLyB1QjtcbiAgICB2YXIgdWIgPSB1YlQgLyB1QjtcblxuICAgIGlmICh1YSA+PSAwICYmIHVhIDw9IDEgJiYgdWIgPj0gMCAmJiB1YiA8PSAxKSB7XG4gICAgICByZXR1cm4gdWE7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbn07XG5cbmV4cG9ydCB2YXIgaXRlbUludGVyc2VjdEJ5TGluZSA9IGZ1bmN0aW9uIGl0ZW1JbnRlcnNlY3RCeUxpbmUoaXRlbSwgbGluZSkge1xuICB2YXIgZGlyZWN0aW9ucyA9IFsndG9wJywgJ2xlZnQnLCAnYm90dG9tJywgJ3JpZ2h0J107XG4gIHZhciBiYm94ID0gaXRlbS5nZXRCQm94KCk7XG4gIHZhciBjb3VudEludGVyc2VjdGlvbnMgPSAwO1xuICB2YXIgaW50ZXJzZWN0aW9ucyA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgdmFyIF9hID0gZ2V0QkJveEJvdW5kTGluZShiYm94LCBkaXJlY3Rpb25zW2ldKSxcbiAgICAgICAgeDEgPSBfYVswXSxcbiAgICAgICAgeTEgPSBfYVsxXSxcbiAgICAgICAgeDIgPSBfYVsyXSxcbiAgICAgICAgeTIgPSBfYVszXTtcblxuICAgIGludGVyc2VjdGlvbnNbaV0gPSBnZXRMaW5lSW50ZXJzZWN0KHtcbiAgICAgIHg6IGxpbmUueDEsXG4gICAgICB5OiBsaW5lLnkxXG4gICAgfSwge1xuICAgICAgeDogbGluZS54MixcbiAgICAgIHk6IGxpbmUueTJcbiAgICB9LCB7XG4gICAgICB4OiB4MSxcbiAgICAgIHk6IHkxXG4gICAgfSwge1xuICAgICAgeDogeDIsXG4gICAgICB5OiB5MlxuICAgIH0pO1xuXG4gICAgaWYgKGludGVyc2VjdGlvbnNbaV0pIHtcbiAgICAgIGNvdW50SW50ZXJzZWN0aW9ucyArPSAxO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBbaW50ZXJzZWN0aW9ucywgY291bnRJbnRlcnNlY3Rpb25zXTtcbn07XG5leHBvcnQgdmFyIGZyYWN0aW9uVG9MaW5lID0gZnVuY3Rpb24gZnJhY3Rpb25Ub0xpbmUoaXRlbSwgbGluZSkge1xuICB2YXIgZGlyZWN0aW9ucyA9IFsndG9wJywgJ2xlZnQnLCAnYm90dG9tJywgJ3JpZ2h0J107XG4gIHZhciBiYm94ID0gaXRlbS5nZXRCQm94KCk7XG4gIHZhciBtaW5EaXN0YW5jZSA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgdmFyIGNvdW50SW50ZXJzZWN0aW9ucyA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICB2YXIgX2EgPSBnZXRCQm94Qm91bmRMaW5lKGJib3gsIGRpcmVjdGlvbnNbaV0pLFxuICAgICAgICB4MSA9IF9hWzBdLFxuICAgICAgICB5MSA9IF9hWzFdLFxuICAgICAgICB4MiA9IF9hWzJdLFxuICAgICAgICB5MiA9IF9hWzNdO1xuXG4gICAgdmFyIHRlc3REaXN0YW5jZSA9IGZyYWN0aW9uQWxvbmdMaW5lQShsaW5lLCBuZXcgTGluZSh4MSwgeTEsIHgyLCB5MikpO1xuICAgIHRlc3REaXN0YW5jZSA9IE1hdGguYWJzKHRlc3REaXN0YW5jZSAtIDAuNSk7XG5cbiAgICBpZiAodGVzdERpc3RhbmNlID49IDAgJiYgdGVzdERpc3RhbmNlIDw9IDEpIHtcbiAgICAgIGNvdW50SW50ZXJzZWN0aW9ucyArPSAxO1xuICAgICAgbWluRGlzdGFuY2UgPSB0ZXN0RGlzdGFuY2UgPCBtaW5EaXN0YW5jZSA/IHRlc3REaXN0YW5jZSA6IG1pbkRpc3RhbmNlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChjb3VudEludGVyc2VjdGlvbnMgPT09IDApIHJldHVybiAtMTtcbiAgcmV0dXJuIG1pbkRpc3RhbmNlO1xufTtcbmV4cG9ydCB2YXIgZ2V0UG9pbnRzQ2VudGVyID0gZnVuY3Rpb24gZ2V0UG9pbnRzQ2VudGVyKHBvaW50cykge1xuICB2YXIgY2VudGVyWCA9IDA7XG4gIHZhciBjZW50ZXJZID0gMDtcblxuICBpZiAocG9pbnRzLmxlbmd0aCA+IDApIHtcbiAgICBmb3IgKHZhciBfaSA9IDAsIHBvaW50c18xID0gcG9pbnRzOyBfaSA8IHBvaW50c18xLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIHBvaW50ID0gcG9pbnRzXzFbX2ldO1xuICAgICAgY2VudGVyWCArPSBwb2ludC54O1xuICAgICAgY2VudGVyWSArPSBwb2ludC55O1xuICAgIH1cblxuICAgIGNlbnRlclggLz0gcG9pbnRzLmxlbmd0aDtcbiAgICBjZW50ZXJZIC89IHBvaW50cy5sZW5ndGg7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHg6IGNlbnRlclgsXG4gICAgeTogY2VudGVyWVxuICB9O1xufTtcbmV4cG9ydCB2YXIgc3F1YXJlRGlzdCA9IGZ1bmN0aW9uIHNxdWFyZURpc3QoYSwgYikge1xuICByZXR1cm4gTWF0aC5wb3coYS54IC0gYi54LCAyKSArIE1hdGgucG93KGEueSAtIGIueSwgMik7XG59O1xuZXhwb3J0IHZhciBwb2ludExpbmVTcXVhcmVEaXN0ID0gZnVuY3Rpb24gcG9pbnRMaW5lU3F1YXJlRGlzdChwb2ludCwgbGluZSkge1xuICB2YXIgeDEgPSBsaW5lLngxO1xuICB2YXIgeTEgPSBsaW5lLnkxO1xuICB2YXIgeDIgPSBsaW5lLngyIC0geDE7XG4gIHZhciB5MiA9IGxpbmUueTIgLSB5MTtcbiAgdmFyIHB4ID0gcG9pbnQueCAtIHgxO1xuICB2YXIgcHkgPSBwb2ludC55IC0geTE7XG4gIHZhciBkb3Rwcm9kID0gcHggKiB4MiArIHB5ICogeTI7XG4gIHZhciBwcm9qbGVuU3E7XG5cbiAgaWYgKGRvdHByb2QgPD0gMCkge1xuICAgIHByb2psZW5TcSA9IDA7XG4gIH0gZWxzZSB7XG4gICAgcHggPSB4MiAtIHB4O1xuICAgIHB5ID0geTIgLSBweTtcbiAgICBkb3Rwcm9kID0gcHggKiB4MiArIHB5ICogeTI7XG5cbiAgICBpZiAoZG90cHJvZCA8PSAwKSB7XG4gICAgICBwcm9qbGVuU3EgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9qbGVuU3EgPSBkb3Rwcm9kICogZG90cHJvZCAvICh4MiAqIHgyICsgeTIgKiB5Mik7XG4gICAgfVxuICB9XG5cbiAgdmFyIGxlblNxID0gcHggKiBweCArIHB5ICogcHkgLSBwcm9qbGVuU3E7XG5cbiAgaWYgKGxlblNxIDwgMCkge1xuICAgIGxlblNxID0gMDtcbiAgfVxuXG4gIHJldHVybiBsZW5TcTtcbn07XG5leHBvcnQgdmFyIGlzUG9pbnRzT3ZlcmxhcCA9IGZ1bmN0aW9uIGlzUG9pbnRzT3ZlcmxhcChwMSwgcDIsIGUpIHtcbiAgaWYgKGUgPT09IHZvaWQgMCkge1xuICAgIGUgPSAxZS0zO1xuICB9XG5cbiAgcmV0dXJuIE1hdGgucG93KHAxLnggLSBwMi54LCAyKSArIE1hdGgucG93KHAxLnkgLSBwMi55LCAyKSA8IE1hdGgucG93KGUsIDIpO1xufTtcbi8qKlxuICog54K55Yiw55+p5b2i55qE6Led56a755qE5bmz5pa577ya55+p5b2i5YaF6YOo54K56KeG5L2c6Led56a75Li6MO+8jOWklumDqOeahOeCueiLpeaKleW9seiQveWcqOefqeW9oui+ueS4iuWImeS4uueCueWIsOefqeW9oui+ueeahOacgOi/keeahOWeguebtOi3neemu++8jOWQpuWImeS4uueCueWIsOefqeW9oumhtueCueeahOi3neemu++8jFxuICogQHBhcmFtIHBvaW50IElQb2ludFxuICogQHBhcmFtIHJlY3QgSVJlY3RcbiAqL1xuXG5leHBvcnQgdmFyIHBvaW50UmVjdFNxdWFyZURpc3QgPSBmdW5jdGlvbiBwb2ludFJlY3RTcXVhcmVEaXN0KHBvaW50LCByZWN0KSB7XG4gIHZhciBpc0xlZnQgPSBwb2ludC54IDwgcmVjdC54O1xuICB2YXIgaXNSaWdodCA9IHBvaW50LnggPiByZWN0LnggKyByZWN0LndpZHRoO1xuICB2YXIgaXNUb3AgPSBwb2ludC55ID4gcmVjdC55ICsgcmVjdC5oZWlnaHQ7XG4gIHZhciBpc0JvdHRvbSA9IHBvaW50LnkgPCByZWN0Lnk7XG4gIHZhciBpc1BvaW50T3V0c2lkZSA9IGlzTGVmdCB8fCBpc1JpZ2h0IHx8IGlzVG9wIHx8IGlzQm90dG9tO1xuXG4gIGlmICghaXNQb2ludE91dHNpZGUpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGlmIChpc1RvcCAmJiAhaXNMZWZ0ICYmICFpc1JpZ2h0KSB7XG4gICAgcmV0dXJuIE1hdGgucG93KHJlY3QueSArIHJlY3QuaGVpZ2h0IC0gcG9pbnQueSwgMik7XG4gIH1cblxuICBpZiAoaXNCb3R0b20gJiYgIWlzTGVmdCAmJiAhaXNSaWdodCkge1xuICAgIHJldHVybiBNYXRoLnBvdyhwb2ludC55IC0gcmVjdC55LCAyKTtcbiAgfVxuXG4gIGlmIChpc0xlZnQgJiYgIWlzVG9wICYmICFpc0JvdHRvbSkge1xuICAgIHJldHVybiBNYXRoLnBvdyhyZWN0LnggLSBwb2ludC54LCAyKTtcbiAgfVxuXG4gIGlmIChpc1JpZ2h0ICYmICFpc1RvcCAmJiAhaXNCb3R0b20pIHtcbiAgICByZXR1cm4gTWF0aC5wb3cocmVjdC54ICsgcmVjdC53aWR0aCAtIHBvaW50LngsIDIpO1xuICB9XG5cbiAgdmFyIGR4ID0gTWF0aC5taW4oTWF0aC5hYnMocmVjdC54IC0gcG9pbnQueCksIE1hdGguYWJzKHJlY3QueCArIHJlY3Qud2lkdGggLSBwb2ludC54KSk7XG4gIHZhciBkeSA9IE1hdGgubWluKE1hdGguYWJzKHJlY3QueSAtIHBvaW50LnkpLCBNYXRoLmFicyhyZWN0LnkgKyByZWN0LmhlaWdodCAtIHBvaW50LnkpKTtcbiAgcmV0dXJuIGR4ICogZHggKyBkeSAqIGR5O1xufTtcbi8qKlxuICogcG9pbnQgdG8gbGluZSBkaXN0YW5jZVxuICogQHBhcmFtICB7YXJyYXl9IGxpbmUg57q/55qE5Zub5Liq6aG254K5IFt4MSwgeTEsIHgyLCB5Ml1cbiAqIEBwYXJhbSAge29iamVjdH0gcG9pbnQg5Z2Q5qCH54K5IHt4LCB5fVxuICogQHJldHVybiB7TnVtYmVyfE5hTn0gZGlzdGFuY2VcbiAqL1xuXG5leHBvcnQgdmFyIHBvaW50TGluZURpc3RhbmNlID0gZnVuY3Rpb24gcG9pbnRMaW5lRGlzdGFuY2UobGluZSwgcG9pbnQpIHtcbiAgdmFyIHgxID0gbGluZVswXSxcbiAgICAgIHkxID0gbGluZVsxXSxcbiAgICAgIHgyID0gbGluZVsyXSxcbiAgICAgIHkyID0gbGluZVszXTtcbiAgdmFyIHggPSBwb2ludC54LFxuICAgICAgeSA9IHBvaW50Lnk7XG4gIHZhciBkID0gW3gyIC0geDEsIHkyIC0geTFdO1xuXG4gIGlmICh2ZWMyLmV4YWN0RXF1YWxzKGQsIFswLCAwXSkpIHtcbiAgICByZXR1cm4gTmFOO1xuICB9XG5cbiAgdmFyIHUgPSBbLWRbMV0sIGRbMF1dOyAvLyBAdHMtaWdub3JlXG5cbiAgdmVjMi5ub3JtYWxpemUodSwgdSk7XG4gIHZhciBhID0gW3ggLSB4MSwgeSAtIHkxXTsgLy8gQHRzLWlnbm9yZVxuXG4gIHJldHVybiBNYXRoLmFicyh2ZWMyLmRvdChhLCB1KSk7XG59O1xuLyoqXG4gKiBMaW5lYXJseSBpbnRlcnBvbGF0ZSBiZXR3ZWVuIHN0YXJ0IGFuZCBlbmQsIHdoZXJlIGFscGhhIGlzIHRoZSBwZXJjZW50IGRpc3RhbmNlIGFsb25nIHRoZSBsaW5lLlxuICogYWxwaGEgPSAwIHdpbGwgYmUgc3RhcnQsIGFuZCBhbHBoYSA9IDEgd2lsbCBiZSBlbmQuXG4gKiBAcGFyYW0ge051bWJlcn0gc3RhcnRcbiAqIEBwYXJhbSB7TnVtYmVyfSBlbmRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbHBoYSBpbnRlcnBvbGF0aW9uIGZhY3RvciwgdHlwaWNhbGx5IGluIHRoZSBjbG9zZWQgaW50ZXJ2YWwgWzAsIDFdXG4gKiBAcmV0dXJuc1xuICovXG5cbmV4cG9ydCB2YXIgbGVycCA9IGZ1bmN0aW9uIGxlcnAoc3RhcnQsIGVuZCwgYWxwaGEpIHtcbiAgcmV0dXJuIHN0YXJ0ICsgKGVuZCAtIHN0YXJ0KSAqIGFscGhhO1xufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/math.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/path.js":
/*!*************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/path.js ***!
\*************************************************************************/
/*! exports provided: getSpline, getControlPoint, pointsToPolygon, pathToPoints, getClosedSpline, roundedHull, paddedHull */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSpline\", function() { return getSpline; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getControlPoint\", function() { return getControlPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pointsToPolygon\", function() { return pointsToPolygon; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathToPoints\", function() { return pathToPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getClosedSpline\", function() { return getClosedSpline; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"roundedHull\", function() { return roundedHull; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"paddedHull\", function() { return paddedHull; });\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/_@antv_matrix-util@3.1.0-beta.3@@antv/matrix-util/esm/index.js\");\n/* harmony import */ var _antv_path_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/path-util */ \"./node_modules/_@antv_path-util@2.0.15@@antv/path-util/esm/index.js\");\n\n\n/**\n * 替换字符串中的字段\n * @param {String} str 模版字符串\n * @param {Object} o json data\n */\n\nvar substitute = function substitute(str, o) {\n if (!str || !o) {\n return str;\n }\n\n return str.replace(/\\\\?\\{([^{}]+)\\}/g, function (match, name) {\n if (match.charAt(0) === '\\\\') {\n return match.slice(1);\n }\n\n var res = o[name];\n if (res === 0) res = '0';\n return res || '';\n });\n};\n/**\n * 给定坐标获取三次贝塞尔曲线的 M 及 C 值\n * @param points coordinate set\n */\n\n\nvar getSpline = function getSpline(points) {\n var data = [];\n\n if (points.length < 2) {\n throw new Error(\"point length must largn than 2, now it's \" + points.length);\n }\n\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var point = points_1[_i];\n var x = point.x,\n y = point.y;\n data.push(x);\n data.push(y);\n }\n\n var spliePath = Object(_antv_path_util__WEBPACK_IMPORTED_MODULE_1__[\"catmullRom2Bezier\"])(data);\n spliePath.unshift(['M', points[0].x, points[0].y]);\n return spliePath;\n};\n/**\n * 根据起始点、相对位置、偏移量计算控制点\n * @param {IPoint} startPoint 起始点,包含 x,y\n * @param {IPoint} endPoint 结束点, 包含 x,y\n * @param {Number} percent 相对位置,范围 0-1\n * @param {Number} offset 偏移量\n * @return {IPoint} 控制点,包含 x,y\n */\n\nvar getControlPoint = function getControlPoint(startPoint, endPoint, percent, offset) {\n if (percent === void 0) {\n percent = 0;\n }\n\n if (offset === void 0) {\n offset = 0;\n }\n\n var point = {\n x: (1 - percent) * startPoint.x + percent * endPoint.x,\n y: (1 - percent) * startPoint.y + percent * endPoint.y\n };\n var tangent = [0, 0];\n _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].normalize(tangent, [endPoint.x - startPoint.x, endPoint.y - startPoint.y]);\n\n if (!tangent || !tangent[0] && !tangent[1]) {\n tangent = [0, 0];\n }\n\n var perpendicular = [-tangent[1] * offset, tangent[0] * offset]; // 垂直向量\n\n point.x += perpendicular[0];\n point.y += perpendicular[1];\n return point;\n};\n/**\n * 点集转化为Path多边形\n * @param {Array} points 点集\n * @param {Boolen} z 是否封闭\n * @return {Array} Path\n */\n\nvar pointsToPolygon = function pointsToPolygon(points, z) {\n var length = points.length;\n\n if (!length) {\n return '';\n }\n\n var path = '';\n var str = '';\n\n for (var i = 0; i < length; i++) {\n var item = points[i];\n\n if (i === 0) {\n str = 'M{x} {y}';\n } else {\n str = 'L{x} {y}';\n }\n\n path += substitute(str, item);\n }\n\n if (z) {\n path += 'Z';\n }\n\n return path;\n};\nvar pathToPoints = function pathToPoints(path) {\n var points = [];\n path.forEach(function (seg) {\n var command = seg[0];\n\n if (command !== 'A') {\n for (var i = 1; i < seg.length; i = i + 2) {\n points.push([seg[i], seg[i + 1]]);\n }\n } else {\n var length_1 = seg.length;\n points.push([seg[length_1 - 2], seg[length_1 - 1]]);\n }\n });\n return points;\n};\n/**\n * 生成平滑的闭合曲线\n * @param points\n */\n\nvar getClosedSpline = function getClosedSpline(points) {\n if (points.length < 2) {\n throw new Error(\"point length must largn than 2, now it's \" + points.length);\n }\n\n var first = points[0];\n var second = points[1];\n var last = points[points.length - 1];\n var lastSecond = points[points.length - 2];\n points.unshift(last);\n points.unshift(lastSecond);\n points.push(first);\n points.push(second);\n var closedPath = [];\n\n for (var i = 1; i < points.length - 2; i += 1) {\n var x0 = points[i - 1].x;\n var y0 = points[i - 1].y;\n var x1 = points[i].x;\n var y1 = points[i].y;\n var x2 = points[i + 1].x;\n var y2 = points[i + 1].y;\n var x3 = i !== points.length - 2 ? points[i + 2].x : x2;\n var y3 = i !== points.length - 2 ? points[i + 2].y : y2;\n var cp1x = x1 + (x2 - x0) / 6;\n var cp1y = y1 + (y2 - y0) / 6;\n var cp2x = x2 - (x3 - x1) / 6;\n var cp2y = y2 - (y3 - y1) / 6;\n closedPath.push(['C', cp1x, cp1y, cp2x, cp2y, x2, y2]);\n }\n\n closedPath.unshift(['M', last.x, last.y]);\n return closedPath;\n};\n\nvar vecScaleTo = function vecScaleTo(v, length) {\n // Vector with direction of v with specified length\n return _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].normalize([0, 0], v), length);\n};\n\nvar unitNormal = function unitNormal(p0, p1) {\n // Returns the unit normal to the line segment from p0 to p1.\n var n = [p0[1] - p1[1], p1[0] - p0[0]];\n var nLength = Math.sqrt(n[0] * n[0] + n[1] * n[1]);\n\n if (nLength === 0) {\n throw new Error('p0 should not be equal to p1');\n }\n\n return [n[0] / nLength, n[1] / nLength];\n};\n\nvar vecFrom = function vecFrom(p0, p1) {\n // Vector from p0 to p1\n return [p1[0] - p0[0], p1[1] - p0[1]];\n};\n/**\n * 传入的节点作为多边形顶点,生成有圆角的多边形\n * @param polyPoints 多边形顶点\n * @param padding 在原多边形基础上增加最终轮廓和原多边形的空白间隔\n */\n\n\nfunction roundedHull(polyPoints, padding) {\n // The rounded hull path around a single point\n var roundedHull1 = function roundedHull1(points) {\n var p1 = [points[0][0], points[0][1] - padding];\n var p2 = [points[0][0], points[0][1] + padding];\n return \"M \" + p1 + \" A \" + padding + \",\" + padding + \",0,0,0,\" + p2 + \" A \" + padding + \",\" + padding + \",0,0,0,\" + p1;\n }; // The rounded hull path around two points\n\n\n var roundedHull2 = function roundedHull2(points) {\n var offsetVector = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], unitNormal(points[0], points[1]), padding);\n var invOffsetVector = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], offsetVector, -1);\n var p0 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], points[0], offsetVector);\n var p1 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], points[1], offsetVector);\n var p2 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], points[1], invOffsetVector);\n var p3 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], points[0], invOffsetVector);\n return \"M \" + p0 + \" L \" + p1 + \" A \" + [padding, padding, '0,0,0', p2].join(',') + \" L \" + p3 + \" A \" + [padding, padding, '0,0,0', p0].join(',');\n }; // 特殊情况处理:节点数小于等于2\n\n\n if (!polyPoints || polyPoints.length < 1) return '';\n if (polyPoints.length === 1) return roundedHull1(polyPoints);\n if (polyPoints.length === 2) return roundedHull2(polyPoints);\n var segments = new Array(polyPoints.length); // Calculate each offset (outwards) segment of the convex hull.\n\n for (var segmentIndex = 0; segmentIndex < segments.length; ++segmentIndex) {\n var p0 = segmentIndex === 0 ? polyPoints[polyPoints.length - 1] : polyPoints[segmentIndex - 1];\n var p1 = polyPoints[segmentIndex]; // Compute the offset vector for the line segment, with length = padding.\n\n var offset = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], unitNormal(p0, p1), padding);\n segments[segmentIndex] = [_antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], p0, offset), _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], p1, offset)];\n }\n\n var arcData = \"A \" + [padding, padding, '0,0,0,'].join(',');\n segments = segments.map(function (segment, index) {\n var pathFragment = '';\n\n if (index === 0) {\n pathFragment = \"M \" + segments[segments.length - 1][1] + \" \";\n }\n\n pathFragment += arcData + segment[0] + \" L \" + segment[1];\n return pathFragment;\n });\n return segments.join(' ');\n}\n/**\n * 传入的节点作为多边形顶点,生成平滑的闭合多边形\n * @param polyPoints\n * @param padding\n */\n\nfunction paddedHull(polyPoints, padding) {\n var pointCount = polyPoints.length;\n\n var smoothHull1 = function smoothHull1(points) {\n // Returns the path for a circular hull around a single point.\n var p1 = [points[0][0], points[0][1] - padding];\n var p2 = [points[0][0], points[0][1] + padding];\n return \"M \" + p1 + \" A \" + [padding, padding, '0,0,0', p2].join(',') + \" A \" + [padding, padding, '0,0,0', p1].join(',');\n }; // Returns the path for a rounded hull around two points.\n\n\n var smoothHull2 = function smoothHull2(points) {\n var v = vecFrom(points[0], points[1]);\n var extensionVec = vecScaleTo(v, padding);\n var extension0 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], points[0], _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], extensionVec, -1));\n var extension1 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], points[1], extensionVec);\n var tangentHalfLength = 1.2 * padding;\n var controlDelta = vecScaleTo(_antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].normalize([0, 0], v), tangentHalfLength);\n var invControlDelta = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], controlDelta, -1);\n var control0 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], extension0, invControlDelta);\n var control1 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], extension1, invControlDelta);\n var control3 = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], extension0, controlDelta); // return [\n // ['M', extension0[0], extension0[1]],\n // ['C', control0, control1, extension1],\n // ['S', control3, extension0],\n // 'Z',\n // ];\n\n return \"M \" + extension0 + \" C \" + [control0, control1, extension1].join(',') + \" S \" + [control3, extension0].join(',') + \" Z\";\n }; // Handle special cases\n\n\n if (!polyPoints || pointCount < 1) return '';\n if (pointCount === 1) return smoothHull1(polyPoints);\n if (pointCount === 2) return smoothHull2(polyPoints);\n var hullPoints = polyPoints.map(function (point, index) {\n var pNext = polyPoints[(index + 1) % pointCount];\n return {\n p: point,\n v: _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].normalize([0, 0], vecFrom(point, pNext))\n };\n }); // Compute the expanded hull points, and the nearest prior control point for each.\n\n for (var i = 0; i < hullPoints.length; ++i) {\n var priorIndex = i > 0 ? i - 1 : pointCount - 1;\n var extensionVec = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].normalize([0, 0], _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], hullPoints[priorIndex].v, _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], hullPoints[i].v, -1)));\n hullPoints[i].p = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].add([0, 0], hullPoints[i].p, _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"vec2\"].scale([0, 0], extensionVec, padding));\n }\n\n return hullPoints.map(function (obj) {\n var point = obj.p;\n return {\n x: point[0],\n y: point[1]\n };\n });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy91dGlsL3BhdGguanM/YmQ2NyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF5QztBQUNXO0FBQ3BEO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDJCQUEyQixLQUFLLEtBQUs7QUFDckM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHTztBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxxQ0FBcUMsc0JBQXNCO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0IseUVBQWlCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLE9BQU87QUFDbkIsWUFBWSxPQUFPO0FBQ25CLFlBQVksT0FBTztBQUNuQixZQUFZLE9BQU87QUFDbkIsWUFBWSxPQUFPO0FBQ25COztBQUVPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxzREFBSTs7QUFFTjtBQUNBO0FBQ0E7O0FBRUEsa0VBQWtFOztBQUVsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxPQUFPO0FBQ2xCLFlBQVksTUFBTTtBQUNsQjs7QUFFTztBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGlCQUFpQixZQUFZO0FBQzdCOztBQUVBO0FBQ0EsZUFBZSxFQUFFLEVBQUUsRUFBRTtBQUNyQixLQUFLO0FBQ0wsZUFBZSxFQUFFLEVBQUUsRUFBRTtBQUNyQjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxQkFBcUIsZ0JBQWdCO0FBQ3JDO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLHVCQUF1QjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUyxzREFBSSxlQUFlLHNEQUFJO0FBQ2hDOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQSx1QkFBdUIsc0RBQUk7QUFDM0IsMEJBQTBCLHNEQUFJO0FBQzlCLGFBQWEsc0RBQUk7QUFDakIsYUFBYSxzREFBSTtBQUNqQixhQUFhLHNEQUFJO0FBQ2pCLGFBQWEsc0RBQUk7QUFDakI7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEM7O0FBRTlDLDRCQUE0QixnQ0FBZ0M7QUFDNUQ7QUFDQSxzQ0FBc0M7O0FBRXRDLGlCQUFpQixzREFBSTtBQUNyQiw4QkFBOEIsc0RBQUksMEJBQTBCLHNEQUFJO0FBQ2hFOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsc0RBQUksd0JBQXdCLHNEQUFJO0FBQ3JELHFCQUFxQixzREFBSTtBQUN6QjtBQUNBLGtDQUFrQyxzREFBSTtBQUN0QywwQkFBMEIsc0RBQUk7QUFDOUIsbUJBQW1CLHNEQUFJO0FBQ3ZCLG1CQUFtQixzREFBSTtBQUN2QixtQkFBbUIsc0RBQUksdUNBQXVDO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsc0RBQUk7QUFDYjtBQUNBLEdBQUcsRUFBRTs7QUFFTCxpQkFBaUIsdUJBQXVCO0FBQ3hDO0FBQ0EsdUJBQXVCLHNEQUFJLG1CQUFtQixzREFBSSx1Q0FBdUMsc0RBQUk7QUFDN0Ysc0JBQXNCLHNEQUFJLDhCQUE4QixzREFBSTtBQUM1RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0giLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy91dGlsL3BhdGguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB2ZWMyIH0gZnJvbSAnQGFudHYvbWF0cml4LXV0aWwnO1xuaW1wb3J0IHsgY2F0bXVsbFJvbTJCZXppZXIgfSBmcm9tICdAYW50di9wYXRoLXV0aWwnO1xuLyoqXG4gKiDmm7/mjaLlrZfnrKbkuLLkuK3nmoTlrZfmrrVcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHIg5qih54mI5a2X56ym5LiyXG4gKiBAcGFyYW0ge09iamVjdH0gbyBqc29uIGRhdGFcbiAqL1xuXG52YXIgc3Vic3RpdHV0ZSA9IGZ1bmN0aW9uIHN1YnN0aXR1dGUoc3RyLCBvKSB7XG4gIGlmICghc3RyIHx8ICFvKSB7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuXG4gIHJldHVybiBzdHIucmVwbGFjZSgvXFxcXD9cXHsoW157fV0rKVxcfS9nLCBmdW5jdGlvbiAobWF0Y2gsIG5hbWUpIHtcbiAgICBpZiAobWF0Y2guY2hhckF0KDApID09PSAnXFxcXCcpIHtcbiAgICAgIHJldHVybiBtYXRjaC5zbGljZSgxKTtcbiAgICB9XG5cbiAgICB2YXIgcmVzID0gb1tuYW1lXTtcbiAgICBpZiAocmVzID09PSAwKSByZXMgPSAnMCc7XG4gICAgcmV0dXJuIHJlcyB8fCAnJztcbiAgfSk7XG59O1xuLyoqXG4gKiDnu5nlrprlnZDmoIfojrflj5bkuInmrKHotJ3loZ7lsJTmm7Lnur/nmoQgTSDlj4ogQyDlgLxcbiAqIEBwYXJhbSBwb2ludHMgY29vcmRpbmF0ZSBzZXRcbiAqL1xuXG5cbmV4cG9ydCB2YXIgZ2V0U3BsaW5lID0gZnVuY3Rpb24gZ2V0U3BsaW5lKHBvaW50cykge1xuICB2YXIgZGF0YSA9IFtdO1xuXG4gIGlmIChwb2ludHMubGVuZ3RoIDwgMikge1xuICAgIHRocm93IG5ldyBFcnJvcihcInBvaW50IGxlbmd0aCBtdXN0IGxhcmduIHRoYW4gMiwgbm93IGl0J3MgXCIgKyBwb2ludHMubGVuZ3RoKTtcbiAgfVxuXG4gIGZvciAodmFyIF9pID0gMCwgcG9pbnRzXzEgPSBwb2ludHM7IF9pIDwgcG9pbnRzXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgdmFyIHBvaW50ID0gcG9pbnRzXzFbX2ldO1xuICAgIHZhciB4ID0gcG9pbnQueCxcbiAgICAgICAgeSA9IHBvaW50Lnk7XG4gICAgZGF0YS5wdXNoKHgpO1xuICAgIGRhdGEucHVzaCh5KTtcbiAgfVxuXG4gIHZhciBzcGxpZVBhdGggPSBjYXRtdWxsUm9tMkJlemllcihkYXRhKTtcbiAgc3BsaWVQYXRoLnVuc2hpZnQoWydNJywgcG9pbnRzWzBdLngsIHBvaW50c1swXS55XSk7XG4gIHJldHVybiBzcGxpZVBhdGg7XG59O1xuLyoqXG4gKiDmoLnmja7otbflp4vngrnjgIHnm7jlr7nkvY3nva7jgIHlgY/np7vph4/orqHnrpfmjqfliLbngrlcbiAqIEBwYXJhbSAge0lQb2ludH0gc3RhcnRQb2ludCDotbflp4vngrnvvIzljIXlkKsgeCx5XG4gKiBAcGFyYW0gIHtJUG9pbnR9IGVuZFBvaW50ICDnu5PmnZ/ngrksIOWMheWQqyB4LHlcbiAqIEBwYXJhbSAge051bWJlcn0gcGVyY2VudCAgIOebuOWvueS9jee9rizojIPlm7QgMC0xXG4gKiBAcGFyYW0gIHtOdW1iZXJ9IG9mZnNldCAgICDlgY/np7vph49cbiAqIEByZXR1cm4ge0lQb2ludH0g5o6n5Yi254K577yM5YyF5ZCrIHgseVxuICovXG5cbmV4cG9ydCB2YXIgZ2V0Q29udHJvbFBvaW50ID0gZnVuY3Rpb24gZ2V0Q29udHJvbFBvaW50KHN0YXJ0UG9pbnQsIGVuZFBvaW50LCBwZXJjZW50LCBvZmZzZXQpIHtcbiAgaWYgKHBlcmNlbnQgPT09IHZvaWQgMCkge1xuICAgIHBlcmNlbnQgPSAwO1xuICB9XG5cbiAgaWYgKG9mZnNldCA9PT0gdm9pZCAwKSB7XG4gICAgb2Zmc2V0ID0gMDtcbiAgfVxuXG4gIHZhciBwb2ludCA9IHtcbiAgICB4OiAoMSAtIHBlcmNlbnQpICogc3RhcnRQb2ludC54ICsgcGVyY2VudCAqIGVuZFBvaW50LngsXG4gICAgeTogKDEgLSBwZXJjZW50KSAqIHN0YXJ0UG9pbnQueSArIHBlcmNlbnQgKiBlbmRQb2ludC55XG4gIH07XG4gIHZhciB0YW5nZW50ID0gWzAsIDBdO1xuICB2ZWMyLm5vcm1hbGl6ZSh0YW5nZW50LCBbZW5kUG9pbnQueCAtIHN0YXJ0UG9pbnQueCwgZW5kUG9pbnQueSAtIHN0YXJ0UG9pbnQueV0pO1xuXG4gIGlmICghdGFuZ2VudCB8fCAhdGFuZ2VudFswXSAmJiAhdGFuZ2VudFsxXSkge1xuICAgIHRhbmdlbnQgPSBbMCwgMF07XG4gIH1cblxuICB2YXIgcGVycGVuZGljdWxhciA9IFstdGFuZ2VudFsxXSAqIG9mZnNldCwgdGFuZ2VudFswXSAqIG9mZnNldF07IC8vIOWeguebtOWQkemHj1xuXG4gIHBvaW50LnggKz0gcGVycGVuZGljdWxhclswXTtcbiAgcG9pbnQueSArPSBwZXJwZW5kaWN1bGFyWzFdO1xuICByZXR1cm4gcG9pbnQ7XG59O1xuLyoqXG4gKiDngrnpm4bovazljJbkuLpQYXRo5aSa6L655b2iXG4gKiBAcGFyYW0ge0FycmF5fSBwb2ludHMg54K56ZuGXG4gKiBAcGFyYW0ge0Jvb2xlbn0geiDmmK/lkKblsIHpl61cbiAqIEByZXR1cm4ge0FycmF5fSBQYXRoXG4gKi9cblxuZXhwb3J0IHZhciBwb2ludHNUb1BvbHlnb24gPSBmdW5jdGlvbiBwb2ludHNUb1BvbHlnb24ocG9pbnRzLCB6KSB7XG4gIHZhciBsZW5ndGggPSBwb2ludHMubGVuZ3RoO1xuXG4gIGlmICghbGVuZ3RoKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgdmFyIHBhdGggPSAnJztcbiAgdmFyIHN0ciA9ICcnO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IHBvaW50c1tpXTtcblxuICAgIGlmIChpID09PSAwKSB7XG4gICAgICBzdHIgPSAnTXt4fSB7eX0nO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHIgPSAnTHt4fSB7eX0nO1xuICAgIH1cblxuICAgIHBhdGggKz0gc3Vic3RpdHV0ZShzdHIsIGl0ZW0pO1xuICB9XG5cbiAgaWYgKHopIHtcbiAgICBwYXRoICs9ICdaJztcbiAgfVxuXG4gIHJldHVybiBwYXRoO1xufTtcbmV4cG9ydCB2YXIgcGF0aFRvUG9pbnRzID0gZnVuY3Rpb24gcGF0aFRvUG9pbnRzKHBhdGgpIHtcbiAgdmFyIHBvaW50cyA9IFtdO1xuICBwYXRoLmZvckVhY2goZnVuY3Rpb24gKHNlZykge1xuICAgIHZhciBjb21tYW5kID0gc2VnWzBdO1xuXG4gICAgaWYgKGNvbW1hbmQgIT09ICdBJykge1xuICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzZWcubGVuZ3RoOyBpID0gaSArIDIpIHtcbiAgICAgICAgcG9pbnRzLnB1c2goW3NlZ1tpXSwgc2VnW2kgKyAxXV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbGVuZ3RoXzEgPSBzZWcubGVuZ3RoO1xuICAgICAgcG9pbnRzLnB1c2goW3NlZ1tsZW5ndGhfMSAtIDJdLCBzZWdbbGVuZ3RoXzEgLSAxXV0pO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBwb2ludHM7XG59O1xuLyoqXG4gKiDnlJ/miJDlubPmu5HnmoTpl63lkIjmm7Lnur9cbiAqIEBwYXJhbSBwb2ludHNcbiAqL1xuXG5leHBvcnQgdmFyIGdldENsb3NlZFNwbGluZSA9IGZ1bmN0aW9uIGdldENsb3NlZFNwbGluZShwb2ludHMpIHtcbiAgaWYgKHBvaW50cy5sZW5ndGggPCAyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwicG9pbnQgbGVuZ3RoIG11c3QgbGFyZ24gdGhhbiAyLCBub3cgaXQncyBcIiArIHBvaW50cy5sZW5ndGgpO1xuICB9XG5cbiAgdmFyIGZpcnN0ID0gcG9pbnRzWzBdO1xuICB2YXIgc2Vjb25kID0gcG9pbnRzWzFdO1xuICB2YXIgbGFzdCA9IHBvaW50c1twb2ludHMubGVuZ3RoIC0gMV07XG4gIHZhciBsYXN0U2Vjb25kID0gcG9pbnRzW3BvaW50cy5sZW5ndGggLSAyXTtcbiAgcG9pbnRzLnVuc2hpZnQobGFzdCk7XG4gIHBvaW50cy51bnNoaWZ0KGxhc3RTZWNvbmQpO1xuICBwb2ludHMucHVzaChmaXJzdCk7XG4gIHBvaW50cy5wdXNoKHNlY29uZCk7XG4gIHZhciBjbG9zZWRQYXRoID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBwb2ludHMubGVuZ3RoIC0gMjsgaSArPSAxKSB7XG4gICAgdmFyIHgwID0gcG9pbnRzW2kgLSAxXS54O1xuICAgIHZhciB5MCA9IHBvaW50c1tpIC0gMV0ueTtcbiAgICB2YXIgeDEgPSBwb2ludHNbaV0ueDtcbiAgICB2YXIgeTEgPSBwb2ludHNbaV0ueTtcbiAgICB2YXIgeDIgPSBwb2ludHNbaSArIDFdLng7XG4gICAgdmFyIHkyID0gcG9pbnRzW2kgKyAxXS55O1xuICAgIHZhciB4MyA9IGkgIT09IHBvaW50cy5sZW5ndGggLSAyID8gcG9pbnRzW2kgKyAyXS54IDogeDI7XG4gICAgdmFyIHkzID0gaSAhPT0gcG9pbnRzLmxlbmd0aCAtIDIgPyBwb2ludHNbaSArIDJdLnkgOiB5MjtcbiAgICB2YXIgY3AxeCA9IHgxICsgKHgyIC0geDApIC8gNjtcbiAgICB2YXIgY3AxeSA9IHkxICsgKHkyIC0geTApIC8gNjtcbiAgICB2YXIgY3AyeCA9IHgyIC0gKHgzIC0geDEpIC8gNjtcbiAgICB2YXIgY3AyeSA9IHkyIC0gKHkzIC0geTEpIC8gNjtcbiAgICBjbG9zZWRQYXRoLnB1c2goWydDJywgY3AxeCwgY3AxeSwgY3AyeCwgY3AyeSwgeDIsIHkyXSk7XG4gIH1cblxuICBjbG9zZWRQYXRoLnVuc2hpZnQoWydNJywgbGFzdC54LCBsYXN0LnldKTtcbiAgcmV0dXJuIGNsb3NlZFBhdGg7XG59O1xuXG52YXIgdmVjU2NhbGVUbyA9IGZ1bmN0aW9uIHZlY1NjYWxlVG8odiwgbGVuZ3RoKSB7XG4gIC8vIFZlY3RvciB3aXRoIGRpcmVjdGlvbiBvZiB2IHdpdGggc3BlY2lmaWVkIGxlbmd0aFxuICByZXR1cm4gdmVjMi5zY2FsZShbMCwgMF0sIHZlYzIubm9ybWFsaXplKFswLCAwXSwgdiksIGxlbmd0aCk7XG59O1xuXG52YXIgdW5pdE5vcm1hbCA9IGZ1bmN0aW9uIHVuaXROb3JtYWwocDAsIHAxKSB7XG4gIC8vIFJldHVybnMgdGhlIHVuaXQgbm9ybWFsIHRvIHRoZSBsaW5lIHNlZ21lbnQgZnJvbSBwMCB0byBwMS5cbiAgdmFyIG4gPSBbcDBbMV0gLSBwMVsxXSwgcDFbMF0gLSBwMFswXV07XG4gIHZhciBuTGVuZ3RoID0gTWF0aC5zcXJ0KG5bMF0gKiBuWzBdICsgblsxXSAqIG5bMV0pO1xuXG4gIGlmIChuTGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwMCBzaG91bGQgbm90IGJlIGVxdWFsIHRvIHAxJyk7XG4gIH1cblxuICByZXR1cm4gW25bMF0gLyBuTGVuZ3RoLCBuWzFdIC8gbkxlbmd0aF07XG59O1xuXG52YXIgdmVjRnJvbSA9IGZ1bmN0aW9uIHZlY0Zyb20ocDAsIHAxKSB7XG4gIC8vIFZlY3RvciBmcm9tIHAwIHRvIHAxXG4gIHJldHVybiBbcDFbMF0gLSBwMFswXSwgcDFbMV0gLSBwMFsxXV07XG59O1xuLyoqXG4gKiDkvKDlhaXnmoToioLngrnkvZzkuLrlpJrovrnlvaLpobbngrnvvIznlJ/miJDmnInlnIbop5LnmoTlpJrovrnlvaJcbiAqIEBwYXJhbSBwb2x5UG9pbnRzIOWkmui+ueW9oumhtueCuVxuICogQHBhcmFtIHBhZGRpbmcg5Zyo5Y6f5aSa6L655b2i5Z+656GA5LiK5aKe5Yqg5pyA57uI6L2u5buT5ZKM5Y6f5aSa6L655b2i55qE56m655m96Ze06ZqUXG4gKi9cblxuXG5leHBvcnQgZnVuY3Rpb24gcm91bmRlZEh1bGwocG9seVBvaW50cywgcGFkZGluZykge1xuICAvLyBUaGUgcm91bmRlZCBodWxsIHBhdGggYXJvdW5kIGEgc2luZ2xlIHBvaW50XG4gIHZhciByb3VuZGVkSHVsbDEgPSBmdW5jdGlvbiByb3VuZGVkSHVsbDEocG9pbnRzKSB7XG4gICAgdmFyIHAxID0gW3BvaW50c1swXVswXSwgcG9pbnRzWzBdWzFdIC0gcGFkZGluZ107XG4gICAgdmFyIHAyID0gW3BvaW50c1swXVswXSwgcG9pbnRzWzBdWzFdICsgcGFkZGluZ107XG4gICAgcmV0dXJuIFwiTSBcIiArIHAxICsgXCIgQSBcIiArIHBhZGRpbmcgKyBcIixcIiArIHBhZGRpbmcgKyBcIiwwLDAsMCxcIiArIHAyICsgXCIgQSBcIiArIHBhZGRpbmcgKyBcIixcIiArIHBhZGRpbmcgKyBcIiwwLDAsMCxcIiArIHAxO1xuICB9OyAvLyBUaGUgcm91bmRlZCBodWxsIHBhdGggYXJvdW5kIHR3byBwb2ludHNcblxuXG4gIHZhciByb3VuZGVkSHVsbDIgPSBmdW5jdGlvbiByb3VuZGVkSHVsbDIocG9pbnRzKSB7XG4gICAgdmFyIG9mZnNldFZlY3RvciA9IHZlYzIuc2NhbGUoWzAsIDBdLCB1bml0Tm9ybWFsKHBvaW50c1swXSwgcG9pbnRzWzFdKSwgcGFkZGluZyk7XG4gICAgdmFyIGludk9mZnNldFZlY3RvciA9IHZlYzIuc2NhbGUoWzAsIDBdLCBvZmZzZXRWZWN0b3IsIC0xKTtcbiAgICB2YXIgcDAgPSB2ZWMyLmFkZChbMCwgMF0sIHBvaW50c1swXSwgb2Zmc2V0VmVjdG9yKTtcbiAgICB2YXIgcDEgPSB2ZWMyLmFkZChbMCwgMF0sIHBvaW50c1sxXSwgb2Zmc2V0VmVjdG9yKTtcbiAgICB2YXIgcDIgPSB2ZWMyLmFkZChbMCwgMF0sIHBvaW50c1sxXSwgaW52T2Zmc2V0VmVjdG9yKTtcbiAgICB2YXIgcDMgPSB2ZWMyLmFkZChbMCwgMF0sIHBvaW50c1swXSwgaW52T2Zmc2V0VmVjdG9yKTtcbiAgICByZXR1cm4gXCJNIFwiICsgcDAgKyBcIiBMIFwiICsgcDEgKyBcIiBBIFwiICsgW3BhZGRpbmcsIHBhZGRpbmcsICcwLDAsMCcsIHAyXS5qb2luKCcsJykgKyBcIiBMIFwiICsgcDMgKyBcIiBBIFwiICsgW3BhZGRpbmcsIHBhZGRpbmcsICcwLDAsMCcsIHAwXS5qb2luKCcsJyk7XG4gIH07IC8vIOeJueauiuaDheWGteWkhOeQhu+8muiKgueCueaVsOWwj+S6juetieS6jjJcblxuXG4gIGlmICghcG9seVBvaW50cyB8fCBwb2x5UG9pbnRzLmxlbmd0aCA8IDEpIHJldHVybiAnJztcbiAgaWYgKHBvbHlQb2ludHMubGVuZ3RoID09PSAxKSByZXR1cm4gcm91bmRlZEh1bGwxKHBvbHlQb2ludHMpO1xuICBpZiAocG9seVBvaW50cy5sZW5ndGggPT09IDIpIHJldHVybiByb3VuZGVkSHVsbDIocG9seVBvaW50cyk7XG4gIHZhciBzZWdtZW50cyA9IG5ldyBBcnJheShwb2x5UG9pbnRzLmxlbmd0aCk7IC8vIENhbGN1bGF0ZSBlYWNoIG9mZnNldCAob3V0d2FyZHMpIHNlZ21lbnQgb2YgdGhlIGNvbnZleCBodWxsLlxuXG4gIGZvciAodmFyIHNlZ21lbnRJbmRleCA9IDA7IHNlZ21lbnRJbmRleCA8IHNlZ21lbnRzLmxlbmd0aDsgKytzZWdtZW50SW5kZXgpIHtcbiAgICB2YXIgcDAgPSBzZWdtZW50SW5kZXggPT09IDAgPyBwb2x5UG9pbnRzW3BvbHlQb2ludHMubGVuZ3RoIC0gMV0gOiBwb2x5UG9pbnRzW3NlZ21lbnRJbmRleCAtIDFdO1xuICAgIHZhciBwMSA9IHBvbHlQb2ludHNbc2VnbWVudEluZGV4XTsgLy8gQ29tcHV0ZSB0aGUgb2Zmc2V0IHZlY3RvciBmb3IgdGhlIGxpbmUgc2VnbWVudCwgd2l0aCBsZW5ndGggPSBwYWRkaW5nLlxuXG4gICAgdmFyIG9mZnNldCA9IHZlYzIuc2NhbGUoWzAsIDBdLCB1bml0Tm9ybWFsKHAwLCBwMSksIHBhZGRpbmcpO1xuICAgIHNlZ21lbnRzW3NlZ21lbnRJbmRleF0gPSBbdmVjMi5hZGQoWzAsIDBdLCBwMCwgb2Zmc2V0KSwgdmVjMi5hZGQoWzAsIDBdLCBwMSwgb2Zmc2V0KV07XG4gIH1cblxuICB2YXIgYXJjRGF0YSA9IFwiQSBcIiArIFtwYWRkaW5nLCBwYWRkaW5nLCAnMCwwLDAsJ10uam9pbignLCcpO1xuICBzZWdtZW50cyA9IHNlZ21lbnRzLm1hcChmdW5jdGlvbiAoc2VnbWVudCwgaW5kZXgpIHtcbiAgICB2YXIgcGF0aEZyYWdtZW50ID0gJyc7XG5cbiAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgIHBhdGhGcmFnbWVudCA9IFwiTSBcIiArIHNlZ21lbnRzW3NlZ21lbnRzLmxlbmd0aCAtIDFdWzFdICsgXCIgXCI7XG4gICAgfVxuXG4gICAgcGF0aEZyYWdtZW50ICs9IGFyY0RhdGEgKyBzZWdtZW50WzBdICsgXCIgTCBcIiArIHNlZ21lbnRbMV07XG4gICAgcmV0dXJuIHBhdGhGcmFnbWVudDtcbiAgfSk7XG4gIHJldHVybiBzZWdtZW50cy5qb2luKCcgJyk7XG59XG4vKipcbiAqIOS8oOWFpeeahOiKgueCueS9nOS4uuWkmui+ueW9oumhtueCue+8jOeUn+aIkOW5s+a7keeahOmXreWQiOWkmui+ueW9olxuICogQHBhcmFtIHBvbHlQb2ludHNcbiAqIEBwYXJhbSBwYWRkaW5nXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHBhZGRlZEh1bGwocG9seVBvaW50cywgcGFkZGluZykge1xuICB2YXIgcG9pbnRDb3VudCA9IHBvbHlQb2ludHMubGVuZ3RoO1xuXG4gIHZhciBzbW9vdGhIdWxsMSA9IGZ1bmN0aW9uIHNtb290aEh1bGwxKHBvaW50cykge1xuICAgIC8vIFJldHVybnMgdGhlIHBhdGggZm9yIGEgY2lyY3VsYXIgaHVsbCBhcm91bmQgYSBzaW5nbGUgcG9pbnQuXG4gICAgdmFyIHAxID0gW3BvaW50c1swXVswXSwgcG9pbnRzWzBdWzFdIC0gcGFkZGluZ107XG4gICAgdmFyIHAyID0gW3BvaW50c1swXVswXSwgcG9pbnRzWzBdWzFdICsgcGFkZGluZ107XG4gICAgcmV0dXJuIFwiTSBcIiArIHAxICsgXCIgQSBcIiArIFtwYWRkaW5nLCBwYWRkaW5nLCAnMCwwLDAnLCBwMl0uam9pbignLCcpICsgXCIgQSBcIiArIFtwYWRkaW5nLCBwYWRkaW5nLCAnMCwwLDAnLCBwMV0uam9pbignLCcpO1xuICB9OyAvLyBSZXR1cm5zIHRoZSBwYXRoIGZvciBhIHJvdW5kZWQgaHVsbCBhcm91bmQgdHdvIHBvaW50cy5cblxuXG4gIHZhciBzbW9vdGhIdWxsMiA9IGZ1bmN0aW9uIHNtb290aEh1bGwyKHBvaW50cykge1xuICAgIHZhciB2ID0gdmVjRnJvbShwb2ludHNbMF0sIHBvaW50c1sxXSk7XG4gICAgdmFyIGV4dGVuc2lvblZlYyA9IHZlY1NjYWxlVG8odiwgcGFkZGluZyk7XG4gICAgdmFyIGV4dGVuc2lvbjAgPSB2ZWMyLmFkZChbMCwgMF0sIHBvaW50c1swXSwgdmVjMi5zY2FsZShbMCwgMF0sIGV4dGVuc2lvblZlYywgLTEpKTtcbiAgICB2YXIgZXh0ZW5zaW9uMSA9IHZlYzIuYWRkKFswLCAwXSwgcG9pbnRzWzFdLCBleHRlbnNpb25WZWMpO1xuICAgIHZhciB0YW5nZW50SGFsZkxlbmd0aCA9IDEuMiAqIHBhZGRpbmc7XG4gICAgdmFyIGNvbnRyb2xEZWx0YSA9IHZlY1NjYWxlVG8odmVjMi5ub3JtYWxpemUoWzAsIDBdLCB2KSwgdGFuZ2VudEhhbGZMZW5ndGgpO1xuICAgIHZhciBpbnZDb250cm9sRGVsdGEgPSB2ZWMyLnNjYWxlKFswLCAwXSwgY29udHJvbERlbHRhLCAtMSk7XG4gICAgdmFyIGNvbnRyb2wwID0gdmVjMi5hZGQoWzAsIDBdLCBleHRlbnNpb24wLCBpbnZDb250cm9sRGVsdGEpO1xuICAgIHZhciBjb250cm9sMSA9IHZlYzIuYWRkKFswLCAwXSwgZXh0ZW5zaW9uMSwgaW52Q29udHJvbERlbHRhKTtcbiAgICB2YXIgY29udHJvbDMgPSB2ZWMyLmFkZChbMCwgMF0sIGV4dGVuc2lvbjAsIGNvbnRyb2xEZWx0YSk7IC8vIHJldHVybiBbXG4gICAgLy8gICBbJ00nLCBleHRlbnNpb24wWzBdLCBleHRlbnNpb24wWzFdXSxcbiAgICAvLyAgIFsnQycsIGNvbnRyb2wwLCBjb250cm9sMSwgZXh0ZW5zaW9uMV0sXG4gICAgLy8gICBbJ1MnLCBjb250cm9sMywgZXh0ZW5zaW9uMF0sXG4gICAgLy8gICAnWicsXG4gICAgLy8gXTtcblxuICAgIHJldHVybiBcIk0gXCIgKyBleHRlbnNpb24wICsgXCIgQyBcIiArIFtjb250cm9sMCwgY29udHJvbDEsIGV4dGVuc2lvbjFdLmpvaW4oJywnKSArIFwiIFMgXCIgKyBbY29udHJvbDMsIGV4dGVuc2lvbjBdLmpvaW4oJywnKSArIFwiIFpcIjtcbiAgfTsgLy8gSGFuZGxlIHNwZWNpYWwgY2FzZXNcblxuXG4gIGlmICghcG9seVBvaW50cyB8fCBwb2ludENvdW50IDwgMSkgcmV0dXJuICcnO1xuICBpZiAocG9pbnRDb3VudCA9PT0gMSkgcmV0dXJuIHNtb290aEh1bGwxKHBvbHlQb2ludHMpO1xuICBpZiAocG9pbnRDb3VudCA9PT0gMikgcmV0dXJuIHNtb290aEh1bGwyKHBvbHlQb2ludHMpO1xuICB2YXIgaHVsbFBvaW50cyA9IHBvbHlQb2ludHMubWFwKGZ1bmN0aW9uIChwb2ludCwgaW5kZXgpIHtcbiAgICB2YXIgcE5leHQgPSBwb2x5UG9pbnRzWyhpbmRleCArIDEpICUgcG9pbnRDb3VudF07XG4gICAgcmV0dXJuIHtcbiAgICAgIHA6IHBvaW50LFxuICAgICAgdjogdmVjMi5ub3JtYWxpemUoWzAsIDBdLCB2ZWNGcm9tKHBvaW50LCBwTmV4dCkpXG4gICAgfTtcbiAgfSk7IC8vIENvbXB1dGUgdGhlIGV4cGFuZGVkIGh1bGwgcG9pbnRzLCBhbmQgdGhlIG5lYXJlc3QgcHJpb3IgY29udHJvbCBwb2ludCBmb3IgZWFjaC5cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGh1bGxQb2ludHMubGVuZ3RoOyArK2kpIHtcbiAgICB2YXIgcHJpb3JJbmRleCA9IGkgPiAwID8gaSAtIDEgOiBwb2ludENvdW50IC0gMTtcbiAgICB2YXIgZXh0ZW5zaW9uVmVjID0gdmVjMi5ub3JtYWxpemUoWzAsIDBdLCB2ZWMyLmFkZChbMCwgMF0sIGh1bGxQb2ludHNbcHJpb3JJbmRleF0udiwgdmVjMi5zY2FsZShbMCwgMF0sIGh1bGxQb2ludHNbaV0udiwgLTEpKSk7XG4gICAgaHVsbFBvaW50c1tpXS5wID0gdmVjMi5hZGQoWzAsIDBdLCBodWxsUG9pbnRzW2ldLnAsIHZlYzIuc2NhbGUoWzAsIDBdLCBleHRlbnNpb25WZWMsIHBhZGRpbmcpKTtcbiAgfVxuXG4gIHJldHVybiBodWxsUG9pbnRzLm1hcChmdW5jdGlvbiAob2JqKSB7XG4gICAgdmFyIHBvaW50ID0gb2JqLnA7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IHBvaW50WzBdLFxuICAgICAgeTogcG9pbnRbMV1cbiAgICB9O1xuICB9KTtcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/path.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/validation.js":
/*!*******************************************************************************!*\
!*** ./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/validation.js ***!
\*******************************************************************************/
/*! exports provided: dataValidation, singleDataValidation */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dataValidation\", function() { return dataValidation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"singleDataValidation\", function() { return singleDataValidation; });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _graphic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./graphic */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/graphic.js\");\n\n\n\n/**\n * 验证关系图或树图数据的合法性,必须符合以下规则才会渲染图:\n * 1. 必须传入数据\n * 2. 节点的 ID 必须为字符串,暂不支持数字类型,如果支持数字类型,会出现类似 123 与 '123' 是否相等的问题\n * 3. 边的 source 和 target 值必须在节点 ID 中存在\n * @param data 关系图或树图数据\n * @return boolean 全部验证通过返回 true,否则返回 false\n */\n\nvar dataValidation = function dataValidation(data) {\n var _a; // 1. 必须传入数据\n\n\n if (!data) {\n console.error('G6 Error Tips: the data must be defined');\n return false;\n } // 2. 节点的 ID 必须为字符串或数字类型\n\n\n var nodes = data.nodes,\n edges = data.edges,\n _b = data.combos,\n combos = _b === void 0 ? [] : _b;\n\n if (!nodes && !edges) {\n var validated_1 = true; // 不存在 nodes 和 edges,则说明是 TreeGraphData,按 TreeGraphData 规则验证\n\n Object(_graphic__WEBPACK_IMPORTED_MODULE_2__[\"traverseTree\"])(data, function (param) {\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(param.id)) {\n validated_1 = false;\n return false;\n }\n\n return true;\n });\n return validated_1;\n }\n\n var nonNode = (nodes || []).find(function (node) {\n return !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(node.id);\n });\n\n if (nonNode) {\n console.warn(\"G6 Warning Tips: missing 'id' property, or %c\" + nonNode.id + \"%c is not a string.\", 'font-size: 20px; color: red;', '');\n return false;\n } // 3. 边的 source 和 target 必须存在于节点 或 Combo中\n\n\n var nodeIds = (nodes || []).map(function (node) {\n return node.id;\n });\n var comboIds = (_a = combos) === null || _a === void 0 ? void 0 : _a.map(function (combo) {\n return combo.id;\n });\n\n var ids = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__spreadArray\"])([], nodeIds, true), comboIds, true);\n\n var nonEdges = (edges || []).find(function (edge) {\n return !ids.includes(edge.source) || !ids.includes(edge.target);\n });\n\n if (nonEdges) {\n console.warn(\"G6 Warning Tips: The source %c\" + nonEdges.source + \"%c or the target %c\" + nonEdges.target + \"%c of the edge do not exist in the nodes or combos.\", 'font-size: 20px; color: red;', '', 'font-size: 20px; color: red;', '');\n return false;\n }\n\n return true;\n};\n/**\n * 验证添加节点、边或从combo时的数据\n * @param type 节点、边或从combo\n * @param data 添加的单条数据\n * @return boolean 全部验证通过返回 true,否则返回 false\n */\n\nvar singleDataValidation = function singleDataValidation(type, data) {\n if (type === 'node' || type === 'combo') {\n // 必须有 id 字段,且id必须为字符串类型\n if (data.id && !Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(data.id)) {\n console.warn(\"G6 Warning Tips: missing 'id' property, or the 'id' %c\" + data.id + \"%c is not a string.\", 'font-size: 20px; color: red;', '');\n return false;\n }\n } else if (type === 'edge') {\n // 必须有 source 和 target 字段\n if (!data.source || !data.target) {\n console.warn(\"G6 Warning Tips: missing 'source' or 'target' for the edge.\");\n return false;\n }\n }\n\n return true;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy91dGlsL3ZhbGlkYXRpb24uanM/MjA5ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBc0M7QUFDQTtBQUNHO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUCxTQUFTOzs7QUFHVDtBQUNBO0FBQ0E7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDJCQUEyQjs7QUFFM0IsSUFBSSw2REFBWTtBQUNoQixXQUFXLDJEQUFRO0FBQ25CO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EsWUFBWSwyREFBUTtBQUNwQixHQUFHOztBQUVIO0FBQ0Esd0hBQXdILFlBQVk7QUFDcEk7QUFDQSxHQUFHOzs7QUFHSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHOztBQUVILFlBQVksMkRBQWEsQ0FBQywyREFBYTs7QUFFdkM7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSx3TEFBd0wsWUFBWSx3QkFBd0IsWUFBWTtBQUN4TztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0Esb0JBQW9CLDJEQUFRO0FBQzVCLGdJQUFnSSxZQUFZO0FBQzVJO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWNvcmVAMC41LjBAQGFudHYvZzYtY29yZS9lcy91dGlsL3ZhbGlkYXRpb24uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX3NwcmVhZEFycmF5IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgdHJhdmVyc2VUcmVlIH0gZnJvbSAnLi9ncmFwaGljJztcbi8qKlxuICog6aqM6K+B5YWz57O75Zu+5oiW5qCR5Zu+5pWw5o2u55qE5ZCI5rOV5oCn77yM5b+F6aG756ym5ZCI5Lul5LiL6KeE5YiZ5omN5Lya5riy5p+T5Zu+77yaXG4gKiAxLiDlv4XpobvkvKDlhaXmlbDmja5cbiAqIDIuIOiKgueCueeahCBJRCDlv4XpobvkuLrlrZfnrKbkuLLvvIzmmoLkuI3mlK/mjIHmlbDlrZfnsbvlnovvvIzlpoLmnpzmlK/mjIHmlbDlrZfnsbvlnovvvIzkvJrlh7rnjrDnsbvkvLwgMTIzIOS4jiAnMTIzJyDmmK/lkKbnm7jnrYnnmoTpl67pophcbiAqIDMuIOi+ueeahCBzb3VyY2Ug5ZKMIHRhcmdldCDlgLzlv4XpobvlnKjoioLngrkgSUQg5Lit5a2Y5ZyoXG4gKiBAcGFyYW0gZGF0YSDlhbPns7vlm77miJbmoJHlm77mlbDmja5cbiAqIEByZXR1cm4gYm9vbGVhbiDlhajpg6jpqozor4HpgJrov4fov5Tlm54gdHJ1Ze+8jOWQpuWImei/lOWbniBmYWxzZVxuICovXG5cbmV4cG9ydCB2YXIgZGF0YVZhbGlkYXRpb24gPSBmdW5jdGlvbiBkYXRhVmFsaWRhdGlvbihkYXRhKSB7XG4gIHZhciBfYTsgLy8gMS4g5b+F6aG75Lyg5YWl5pWw5o2uXG5cblxuICBpZiAoIWRhdGEpIHtcbiAgICBjb25zb2xlLmVycm9yKCdHNiBFcnJvciBUaXBzOiB0aGUgZGF0YSBtdXN0IGJlIGRlZmluZWQnKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gLy8gMi4g6IqC54K555qEIElEIOW/hemhu+S4uuWtl+espuS4suaIluaVsOWtl+exu+Wei1xuXG5cbiAgdmFyIG5vZGVzID0gZGF0YS5ub2RlcyxcbiAgICAgIGVkZ2VzID0gZGF0YS5lZGdlcyxcbiAgICAgIF9iID0gZGF0YS5jb21ib3MsXG4gICAgICBjb21ib3MgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYjtcblxuICBpZiAoIW5vZGVzICYmICFlZGdlcykge1xuICAgIHZhciB2YWxpZGF0ZWRfMSA9IHRydWU7IC8vIOS4jeWtmOWcqCBub2RlcyDlkowgZWRnZXPvvIzliJnor7TmmI7mmK8gVHJlZUdyYXBoRGF0Ye+8jOaMiSBUcmVlR3JhcGhEYXRhIOinhOWImemqjOivgVxuXG4gICAgdHJhdmVyc2VUcmVlKGRhdGEsIGZ1bmN0aW9uIChwYXJhbSkge1xuICAgICAgaWYgKCFpc1N0cmluZyhwYXJhbS5pZCkpIHtcbiAgICAgICAgdmFsaWRhdGVkXzEgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gdmFsaWRhdGVkXzE7XG4gIH1cblxuICB2YXIgbm9uTm9kZSA9IChub2RlcyB8fCBbXSkuZmluZChmdW5jdGlvbiAobm9kZSkge1xuICAgIHJldHVybiAhaXNTdHJpbmcobm9kZS5pZCk7XG4gIH0pO1xuXG4gIGlmIChub25Ob2RlKSB7XG4gICAgY29uc29sZS53YXJuKFwiRzYgV2FybmluZyBUaXBzOiBtaXNzaW5nICdpZCcgcHJvcGVydHksIG9yICVjXCIgKyBub25Ob2RlLmlkICsgXCIlYyBpcyBub3QgYSBzdHJpbmcuXCIsICdmb250LXNpemU6IDIwcHg7IGNvbG9yOiByZWQ7JywgJycpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSAvLyAzLiDovrnnmoQgc291cmNlIOWSjCB0YXJnZXQg5b+F6aG75a2Y5Zyo5LqO6IqC54K5IOaIliBDb21ib+S4rVxuXG5cbiAgdmFyIG5vZGVJZHMgPSAobm9kZXMgfHwgW10pLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgIHJldHVybiBub2RlLmlkO1xuICB9KTtcbiAgdmFyIGNvbWJvSWRzID0gKF9hID0gY29tYm9zKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubWFwKGZ1bmN0aW9uIChjb21ibykge1xuICAgIHJldHVybiBjb21iby5pZDtcbiAgfSk7XG5cbiAgdmFyIGlkcyA9IF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgbm9kZUlkcywgdHJ1ZSksIGNvbWJvSWRzLCB0cnVlKTtcblxuICB2YXIgbm9uRWRnZXMgPSAoZWRnZXMgfHwgW10pLmZpbmQoZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICByZXR1cm4gIWlkcy5pbmNsdWRlcyhlZGdlLnNvdXJjZSkgfHwgIWlkcy5pbmNsdWRlcyhlZGdlLnRhcmdldCk7XG4gIH0pO1xuXG4gIGlmIChub25FZGdlcykge1xuICAgIGNvbnNvbGUud2FybihcIkc2IFdhcm5pbmcgVGlwczogVGhlIHNvdXJjZSAlY1wiICsgbm9uRWRnZXMuc291cmNlICsgXCIlYyBvciB0aGUgdGFyZ2V0ICVjXCIgKyBub25FZGdlcy50YXJnZXQgKyBcIiVjIG9mIHRoZSBlZGdlIGRvIG5vdCBleGlzdCBpbiB0aGUgbm9kZXMgb3IgY29tYm9zLlwiLCAnZm9udC1zaXplOiAyMHB4OyBjb2xvcjogcmVkOycsICcnLCAnZm9udC1zaXplOiAyMHB4OyBjb2xvcjogcmVkOycsICcnKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG4vKipcbiAqIOmqjOivgea3u+WKoOiKgueCueOAgei+ueaIluS7jmNvbWJv5pe255qE5pWw5o2uXG4gKiBAcGFyYW0gdHlwZSDoioLngrnjgIHovrnmiJbku45jb21ib1xuICogQHBhcmFtIGRhdGEg5re75Yqg55qE5Y2V5p2h5pWw5o2uXG4gKiBAcmV0dXJuIGJvb2xlYW4g5YWo6YOo6aqM6K+B6YCa6L+H6L+U5ZueIHRydWXvvIzlkKbliJnov5Tlm54gZmFsc2VcbiAqL1xuXG5leHBvcnQgdmFyIHNpbmdsZURhdGFWYWxpZGF0aW9uID0gZnVuY3Rpb24gc2luZ2xlRGF0YVZhbGlkYXRpb24odHlwZSwgZGF0YSkge1xuICBpZiAodHlwZSA9PT0gJ25vZGUnIHx8IHR5cGUgPT09ICdjb21ibycpIHtcbiAgICAvLyDlv4XpobvmnIkgaWQg5a2X5q6177yM5LiUaWTlv4XpobvkuLrlrZfnrKbkuLLnsbvlnotcbiAgICBpZiAoZGF0YS5pZCAmJiAhaXNTdHJpbmcoZGF0YS5pZCkpIHtcbiAgICAgIGNvbnNvbGUud2FybihcIkc2IFdhcm5pbmcgVGlwczogbWlzc2luZyAnaWQnIHByb3BlcnR5LCBvciB0aGUgJ2lkJyAlY1wiICsgZGF0YS5pZCArIFwiJWMgaXMgbm90IGEgc3RyaW5nLlwiLCAnZm9udC1zaXplOiAyMHB4OyBjb2xvcjogcmVkOycsICcnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2VkZ2UnKSB7XG4gICAgLy8g5b+F6aG75pyJIHNvdXJjZSDlkowgdGFyZ2V0IOWtl+autVxuICAgIGlmICghZGF0YS5zb3VyY2UgfHwgIWRhdGEudGFyZ2V0KSB7XG4gICAgICBjb25zb2xlLndhcm4oXCJHNiBXYXJuaW5nIFRpcHM6IG1pc3NpbmcgJ3NvdXJjZScgb3IgJ3RhcmdldCcgZm9yIHRoZSBlZGdlLlwiKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/util/validation.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/edges/index.js":
/*!*********************************************************************************!*\
!*** ./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/edges/index.js ***!
\*********************************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _polyline__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./polyline */ \"./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/edges/polyline.js\");\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWVsZW1lbnRAMC41LjBAQGFudHYvZzYtZWxlbWVudC9lcy9lZGdlcy9pbmRleC5qcz83YTg1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWVsZW1lbnRAMC41LjBAQGFudHYvZzYtZWxlbWVudC9lcy9lZGdlcy9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnLi9wb2x5bGluZSc7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/edges/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/edges/polyline-util.js":
/*!*****************************************************************************************!*\
!*** ./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/edges/polyline-util.js ***!
\*****************************************************************************************/
/*! exports provided: getBBoxFromPoint, getBBoxFromPoints, isBBoxesOverlapping, filterConnectPoints, simplifyPolyline, getSimplePolyline, getExpandedBBox, isHorizontalPort, getExpandedBBoxPoint, mergeBBox, getPointsFromBBox, isPointOutsideBBox, getBBoxXCrossPoints, getBBoxYCrossPoints, getBBoxCrossPointsByPoint, distance, _costByPoints, heuristicCostEstimate, reconstructPath, removeFrom, isSegmentsIntersected, isSegmentCrossingBBox, getNeighborPoints, pathFinder, isBending, getBorderRadiusPoints, getPathWithBorderRadiusByPolyline, getPolylinePoints */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBoxFromPoint\", function() { return getBBoxFromPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBoxFromPoints\", function() { return getBBoxFromPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isBBoxesOverlapping\", function() { return isBBoxesOverlapping; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"filterConnectPoints\", function() { return filterConnectPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"simplifyPolyline\", function() { return simplifyPolyline; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSimplePolyline\", function() { return getSimplePolyline; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getExpandedBBox\", function() { return getExpandedBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isHorizontalPort\", function() { return isHorizontalPort; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getExpandedBBoxPoint\", function() { return getExpandedBBoxPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeBBox\", function() { return mergeBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPointsFromBBox\", function() { return getPointsFromBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPointOutsideBBox\", function() { return isPointOutsideBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBoxXCrossPoints\", function() { return getBBoxXCrossPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBoxYCrossPoints\", function() { return getBBoxYCrossPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBBoxCrossPointsByPoint\", function() { return getBBoxCrossPointsByPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"distance\", function() { return distance; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"_costByPoints\", function() { return _costByPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"heuristicCostEstimate\", function() { return heuristicCostEstimate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"reconstructPath\", function() { return reconstructPath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeFrom\", function() { return removeFrom; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSegmentsIntersected\", function() { return isSegmentsIntersected; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSegmentCrossingBBox\", function() { return isSegmentCrossingBBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getNeighborPoints\", function() { return getNeighborPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathFinder\", function() { return pathFinder; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isBending\", function() { return isBending; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBorderRadiusPoints\", function() { return getBorderRadiusPoints; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPathWithBorderRadiusByPolyline\", function() { return getPathWithBorderRadiusByPolyline; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPolylinePoints\", function() { return getPolylinePoints; });\nvar getBBoxFromPoint = function getBBoxFromPoint(point) {\n var x = point.x,\n y = point.y;\n return {\n x: x,\n y: y,\n centerX: x,\n centerY: y,\n minX: x,\n minY: y,\n maxX: x,\n maxY: y,\n height: 0,\n width: 0\n };\n};\nvar getBBoxFromPoints = function getBBoxFromPoints(points) {\n if (points === void 0) {\n points = [];\n }\n\n var xs = [];\n var ys = [];\n points.forEach(function (p) {\n xs.push(p.x);\n ys.push(p.y);\n });\n var minX = Math.min.apply(Math, xs);\n var maxX = Math.max.apply(Math, xs);\n var minY = Math.min.apply(Math, ys);\n var maxY = Math.max.apply(Math, ys);\n return {\n centerX: (minX + maxX) / 2,\n centerY: (minY + maxY) / 2,\n maxX: maxX,\n maxY: maxY,\n minX: minX,\n minY: minY,\n height: maxY - minY,\n width: maxX - minX\n };\n};\nvar isBBoxesOverlapping = function isBBoxesOverlapping(b1, b2) {\n return Math.abs(b1.centerX - b2.centerX) * 2 < b1.width + b2.width && Math.abs(b1.centerY - b2.centerY) * 2 < b1.height + b2.height;\n};\nvar filterConnectPoints = function filterConnectPoints(points) {\n // pre-process: remove duplicated points\n var result = [];\n var pointsMap = {};\n var pointsLength = points.length;\n\n for (var i = pointsLength - 1; i >= 0; i--) {\n var p = points[i];\n p.id = p.x + \"|||\" + p.y;\n pointsMap[p.id] = p;\n result.push(p);\n }\n\n return result;\n};\nvar simplifyPolyline = function simplifyPolyline(points) {\n return filterConnectPoints(points);\n};\nvar getSimplePolyline = function getSimplePolyline(sPoint, tPoint) {\n return [sPoint, {\n x: sPoint.x,\n y: tPoint.y\n }, tPoint];\n};\nvar getExpandedBBox = function getExpandedBBox(bbox, offset) {\n if (bbox.width || bbox.height) {\n return {\n centerX: bbox.centerX,\n centerY: bbox.centerY,\n minX: bbox.minX - offset,\n minY: bbox.minY - offset,\n maxX: bbox.maxX + offset,\n maxY: bbox.maxY + offset,\n height: bbox.height + 2 * offset,\n width: bbox.width + 2 * offset\n };\n } // when it is a point\n\n\n return bbox;\n};\nvar isHorizontalPort = function isHorizontalPort(port, bbox) {\n var dx = Math.abs(port.x - bbox.centerX);\n var dy = Math.abs(port.y - bbox.centerY);\n if (dx === 0 && dy === 0) return 0;\n return dx / bbox.width > dy / bbox.height;\n};\nvar getExpandedBBoxPoint = function getExpandedBBoxPoint(bbox, // 将原来节点 bbox 扩展了 offset 后的 bbox,且被 gridSize 格式化\npoint, // 被 gridSize 格式化后的位置(anchorPoint)\nanotherPoint) {\n var isHorizontal = isHorizontalPort(point, bbox);\n\n if (isHorizontal === 0) {\n // 说明锚点是节点中心,linkCenter: true。需要根据两个节点的相对关系决定方向\n var x = bbox.centerX;\n var y = bbox.centerY;\n\n if (anotherPoint.y < point.y) {\n // 另一端在左上/右上方时,总是从上方走\n y = bbox.minY;\n } else if (anotherPoint.x > point.x) {\n // 另一端在右下方,往右边走\n x = bbox.maxX;\n } else if (anotherPoint.x < point.x) {\n // 另一端在左下方,往左边走\n x = bbox.minX;\n } else if (anotherPoint.x === point.x) {\n // 另一段在正下方,往下走\n y = bbox.maxY;\n }\n\n return {\n x: x,\n y: y\n };\n }\n\n if (isHorizontal) {\n return {\n x: point.x > bbox.centerX ? bbox.maxX : bbox.minX,\n y: point.y\n };\n }\n\n return {\n x: point.x,\n y: point.y > bbox.centerY ? bbox.maxY : bbox.minY\n };\n};\n/**\n *\n * @param b1\n * @param b2\n */\n\nvar mergeBBox = function mergeBBox(b1, b2) {\n var minX = Math.min(b1.minX, b2.minX);\n var minY = Math.min(b1.minY, b2.minY);\n var maxX = Math.max(b1.maxX, b2.maxX);\n var maxY = Math.max(b1.maxY, b2.maxY);\n return {\n centerX: (minX + maxX) / 2,\n centerY: (minY + maxY) / 2,\n minX: minX,\n minY: minY,\n maxX: maxX,\n maxY: maxY,\n height: maxY - minY,\n width: maxX - minX\n };\n};\nvar getPointsFromBBox = function getPointsFromBBox(bbox) {\n // anticlockwise\n // const { minX, minY, maxX, maxY } = bbox;\n return [{\n x: bbox.minX,\n y: bbox.minY\n }, {\n x: bbox.maxX,\n y: bbox.minY\n }, {\n x: bbox.maxX,\n y: bbox.maxY\n }, {\n x: bbox.minX,\n y: bbox.maxY\n }];\n};\nvar isPointOutsideBBox = function isPointOutsideBBox(point, bbox) {\n var x = point.x,\n y = point.y;\n return x < bbox.minX || x > bbox.maxX || y < bbox.minY || y > bbox.maxY;\n};\nvar getBBoxXCrossPoints = function getBBoxXCrossPoints(bbox, x) {\n if (x < bbox.minX || x > bbox.maxX) {\n return [];\n }\n\n return [{\n x: x,\n y: bbox.minY\n }, {\n x: x,\n y: bbox.maxY\n }];\n};\nvar getBBoxYCrossPoints = function getBBoxYCrossPoints(bbox, y) {\n if (y < bbox.minY || y > bbox.maxY) {\n return [];\n }\n\n return [{\n x: bbox.minX,\n y: y\n }, {\n x: bbox.maxX,\n y: y\n }];\n};\nvar getBBoxCrossPointsByPoint = function getBBoxCrossPointsByPoint(bbox, point) {\n return getBBoxXCrossPoints(bbox, point.x).concat(getBBoxYCrossPoints(bbox, point.y));\n};\n/**\n * 曼哈顿距离\n */\n\nvar distance = function distance(p1, p2) {\n return Math.abs(p1.x - p2.x) + Math.abs(p1.y - p2.y);\n};\n/**\n * 如果 points 中的一个节点 x 与 p 相等,则消耗 -2。y 同\n * 即优先选择和 points 在同一水平线 / 垂直线上的点\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\n\nvar _costByPoints = function _costByPoints(p, points) {\n var offset = -2;\n var result = 0;\n points.forEach(function (point) {\n if (point) {\n if (p.x === point.x) {\n result += offset;\n }\n\n if (p.y === point.y) {\n result += offset;\n }\n }\n });\n return result;\n};\n/**\n * ps 经过 p 到 pt 的距离,减去其他路过节点造成的消耗\n */\n\nvar heuristicCostEstimate = function heuristicCostEstimate(p, ps, pt, source, target) {\n return distance(p, ps) + distance(p, pt) + _costByPoints(p, [ps, pt, source, target]);\n};\nvar reconstructPath = function reconstructPath(pathPoints, pointById, cameFrom, currentId, iterator) {\n if (iterator === void 0) {\n iterator = 0;\n }\n\n pathPoints.unshift(pointById[currentId]);\n\n if (cameFrom[currentId] && cameFrom[currentId] !== currentId && iterator <= 100) {\n reconstructPath(pathPoints, pointById, cameFrom, cameFrom[currentId], iterator + 1);\n }\n};\n/**\n * 从 arr 中删去 item\n */\n\nvar removeFrom = function removeFrom(arr, item) {\n var index = arr.indexOf(item);\n\n if (index > -1) {\n arr.splice(index, 1);\n }\n};\nvar isSegmentsIntersected = function isSegmentsIntersected(p0, p1, p2, p3) {\n var v1x = p2.x - p0.x;\n var v1y = p2.y - p0.y;\n var v2x = p3.x - p0.x;\n var v2y = p3.y - p0.y;\n var v3x = p2.x - p1.x;\n var v3y = p2.y - p1.y;\n var v4x = p3.x - p1.x;\n var v4y = p3.y - p1.y;\n var pd1 = v1x * v2y - v1y * v2x;\n var pd2 = v3x * v4y - v3y * v4x;\n var pd3 = v1x * v3y - v1y * v3x;\n var pd4 = v2x * v4y - v2y * v4x;\n return pd1 * pd2 <= 0 && pd3 * pd4 <= 0;\n};\nvar isSegmentCrossingBBox = function isSegmentCrossingBBox(p1, p2, bbox) {\n if (bbox.width || bbox.height) {\n var _a = getPointsFromBBox(bbox),\n pa = _a[0],\n pb = _a[1],\n pc = _a[2],\n pd = _a[3];\n\n return isSegmentsIntersected(p1, p2, pa, pb) || isSegmentsIntersected(p1, p2, pa, pd) || isSegmentsIntersected(p1, p2, pb, pc) || isSegmentsIntersected(p1, p2, pc, pd);\n }\n\n return false;\n};\n/**\n * 在 points 中找到满足 x 或 y 和 point 的 x 或 y 相等,且与 point 连线不经过 bbox1 与 bbox2 的点\n */\n\nvar getNeighborPoints = function getNeighborPoints(points, point, bbox1, bbox2) {\n var neighbors = [];\n points.forEach(function (p) {\n if (p === point) return;\n\n if (p.x === point.x || p.y === point.y) {\n if (isSegmentCrossingBBox(p, point, bbox1) || isSegmentCrossingBBox(p, point, bbox2)) return;\n neighbors.push(p);\n }\n });\n return filterConnectPoints(neighbors);\n};\nvar pathFinder = function pathFinder(points, start, goal, sBBox, tBBox, os, ot) {\n // A-Star Algorithm\n var closedSet = [];\n var openSet = [start];\n var cameFrom = {};\n var gScore = {}; // all default values are Infinity\n\n var fScore = {}; // all default values are Infinity\n\n gScore[start.id] = 0;\n fScore[start.id] = heuristicCostEstimate(start, goal, start);\n var pointById = {};\n points.forEach(function (p) {\n pointById[p.id] = p;\n });\n var current, lowestFScore;\n\n while (openSet.length) {\n current = undefined;\n lowestFScore = Infinity; // 找到 openSet 中 fScore 最小的点\n\n openSet.forEach(function (p) {\n if (fScore[p.id] <= lowestFScore) {\n lowestFScore = fScore[p.id];\n current = p;\n }\n }); // 若 openSet 中 fScore 最小的点就是终点\n\n if (current === goal) {\n // ending condition\n var pathPoints = [];\n reconstructPath(pathPoints, pointById, cameFrom, goal.id);\n return pathPoints;\n }\n\n removeFrom(openSet, current);\n closedSet.push(current);\n getNeighborPoints(points, current, sBBox, tBBox).forEach(function (neighbor) {\n if (closedSet.indexOf(neighbor) !== -1) {\n return;\n }\n\n if (openSet.indexOf(neighbor) === -1) {\n openSet.push(neighbor);\n }\n\n var tentativeGScore = fScore[current.id] + distance(current, neighbor); // + distance(neighbor, goal);\n\n if (gScore[neighbor.id] && tentativeGScore >= gScore[neighbor.id]) {\n return;\n }\n\n cameFrom[neighbor.id] = current.id;\n gScore[neighbor.id] = tentativeGScore;\n fScore[neighbor.id] = gScore[neighbor.id] + heuristicCostEstimate(neighbor, goal, start, os, ot);\n });\n } // throw new Error('Cannot find path');\n\n\n return [start, goal];\n};\nvar isBending = function isBending(p0, p1, p2) {\n return !(p0.x === p1.x && p1.x === p2.x || p0.y === p1.y && p1.y === p2.y);\n};\nvar getBorderRadiusPoints = function getBorderRadiusPoints(p0, p1, p2, r) {\n var d0 = distance(p0, p1);\n var d1 = distance(p2, p1);\n\n if (d0 < r) {\n r = d0;\n }\n\n if (d1 < r) {\n r = d1;\n }\n\n var ps = {\n x: p1.x - r / d0 * (p1.x - p0.x),\n y: p1.y - r / d0 * (p1.y - p0.y)\n };\n var pt = {\n x: p1.x - r / d1 * (p1.x - p2.x),\n y: p1.y - r / d1 * (p1.y - p2.y)\n };\n return [ps, pt];\n};\nvar getPathWithBorderRadiusByPolyline = function getPathWithBorderRadiusByPolyline(points, borderRadius) {\n var pathSegments = [];\n var startPoint = points[0];\n pathSegments.push(\"M\" + startPoint.x + \" \" + startPoint.y);\n points.forEach(function (p, i) {\n var p1 = points[i + 1];\n var p2 = points[i + 2];\n\n if (p1 && p2) {\n if (isBending(p, p1, p2)) {\n var _a = getBorderRadiusPoints(p, p1, p2, borderRadius),\n ps = _a[0],\n pt = _a[1];\n\n pathSegments.push(\"L\" + ps.x + \" \" + ps.y);\n pathSegments.push(\"Q\" + p1.x + \" \" + p1.y + \" \" + pt.x + \" \" + pt.y);\n pathSegments.push(\"L\" + pt.x + \" \" + pt.y);\n } else {\n pathSegments.push(\"L\" + p1.x + \" \" + p1.y);\n }\n } else if (p1) {\n pathSegments.push(\"L\" + p1.x + \" \" + p1.y);\n }\n });\n return pathSegments.join('');\n};\nvar getPolylinePoints = function getPolylinePoints(start, end, sNode, tNode, offset) {\n var sBBox, tBBox;\n\n if (!sNode || !sNode.getType()) {\n sBBox = getBBoxFromPoint(start);\n } else if (sNode.getType() === 'combo') {\n var sNodeKeyShape = sNode.getKeyShape();\n sBBox = sNodeKeyShape.getCanvasBBox() || getBBoxFromPoint(start);\n sBBox.centerX = (sBBox.minX + sBBox.maxX) / 2;\n sBBox.centerY = (sBBox.minY + sBBox.maxY) / 2;\n } else {\n sBBox = sNode.getBBox();\n }\n\n if (!tNode || !tNode.getType()) {\n tBBox = getBBoxFromPoint(end);\n } else if (tNode.getType() === 'combo') {\n var tKeyShapeBBox = tNode.getKeyShape().getBBox();\n\n if (tKeyShapeBBox) {\n var _a = tNode.getModel(),\n tx = _a.x,\n ty = _a.y;\n\n tBBox = {\n x: tx,\n y: ty,\n width: tKeyShapeBBox.width,\n height: tKeyShapeBBox.height,\n minX: tKeyShapeBBox.minX + tx,\n maxX: tKeyShapeBBox.maxX + tx,\n minY: tKeyShapeBBox.minY + ty,\n maxY: tKeyShapeBBox.maxY + ty\n };\n tBBox.centerX = (tBBox.minX + tBBox.maxX) / 2;\n tBBox.centerY = (tBBox.minY + tBBox.maxY) / 2;\n } else {\n tBBox = getBBoxFromPoint(end);\n }\n } else {\n tBBox = tNode && tNode.getBBox();\n } // if (isBBoxesOverlapping(sBBox, tBBox)) {\n // // source and target nodes are overlapping\n // return simplifyPolyline(getSimplePolyline(start, end));\n // }\n\n\n var sxBBox = getExpandedBBox(sBBox, offset);\n var txBBox = getExpandedBBox(tBBox, offset); // if (isBBoxesOverlapping(sxBBox, txBBox)) {\n // // the expanded bounding boxes of source and target nodes are overlapping\n // return simplifyPolyline(getSimplePolyline(start, end));\n // }\n\n var sPoint = getExpandedBBoxPoint(sxBBox, start, end);\n var tPoint = getExpandedBBoxPoint(txBBox, end, start);\n var lineBBox = getBBoxFromPoints([sPoint, tPoint]);\n var sMixBBox = mergeBBox(sxBBox, lineBBox);\n var tMixBBox = mergeBBox(txBBox, lineBBox);\n var connectPoints = [];\n connectPoints = connectPoints.concat(getPointsFromBBox(sMixBBox)).concat(getPointsFromBBox(tMixBBox));\n var centerPoint = {\n x: (start.x + end.x) / 2,\n y: (start.y + end.y) / 2\n };\n [lineBBox, sMixBBox, tMixBBox].forEach(function (bbox) {\n connectPoints = connectPoints.concat(getBBoxCrossPointsByPoint(bbox, centerPoint).filter(function (p) {\n return isPointOutsideBBox(p, sxBBox) && isPointOutsideBBox(p, txBBox);\n }));\n });\n [{\n x: sPoint.x,\n y: tPoint.y\n }, {\n x: tPoint.x,\n y: sPoint.y\n }].forEach(function (p) {\n // impossible!!\n if (isPointOutsideBBox(p, sxBBox) && isPointOutsideBBox(p, txBBox) // &&\n // isPointInsideBBox(p, sMixBBox) && isPointInsideBBox(p, tMixBBox)\n ) {\n connectPoints.push(p);\n }\n });\n connectPoints.unshift(sPoint);\n connectPoints.push(tPoint); // filter out dulplicated points in connectPoints\n\n connectPoints = filterConnectPoints(connectPoints); // , sxBBox, txBBox, outerBBox\n\n var pathPoints = pathFinder(connectPoints, sPoint, tPoint, sBBox, tBBox, start, end);\n pathPoints.unshift(start);\n pathPoints.push(end);\n return simplifyPolyline(pathPoints);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWVsZW1lbnRAMC41LjBAQGFudHYvZzYtZWxlbWVudC9lcy9lZGdlcy9wb2x5bGluZS11dGlsLmpzPzM2ZGYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGdDQUFnQyxRQUFRO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBLFlBQVkseUJBQXlCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7O0FBRWxCLGtCQUFrQjs7QUFFbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0EsNEJBQTRCOztBQUU1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDZFQUE2RTs7QUFFN0U7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHOzs7QUFHSDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOzs7QUFHQTtBQUNBLDhDQUE4QztBQUM5QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsNkJBQTZCOztBQUU3QixxREFBcUQ7O0FBRXJEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWVsZW1lbnRAMC41LjBAQGFudHYvZzYtZWxlbWVudC9lcy9lZGdlcy9wb2x5bGluZS11dGlsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBnZXRCQm94RnJvbVBvaW50ID0gZnVuY3Rpb24gZ2V0QkJveEZyb21Qb2ludChwb2ludCkge1xuICB2YXIgeCA9IHBvaW50LngsXG4gICAgICB5ID0gcG9pbnQueTtcbiAgcmV0dXJuIHtcbiAgICB4OiB4LFxuICAgIHk6IHksXG4gICAgY2VudGVyWDogeCxcbiAgICBjZW50ZXJZOiB5LFxuICAgIG1pblg6IHgsXG4gICAgbWluWTogeSxcbiAgICBtYXhYOiB4LFxuICAgIG1heFk6IHksXG4gICAgaGVpZ2h0OiAwLFxuICAgIHdpZHRoOiAwXG4gIH07XG59O1xuZXhwb3J0IHZhciBnZXRCQm94RnJvbVBvaW50cyA9IGZ1bmN0aW9uIGdldEJCb3hGcm9tUG9pbnRzKHBvaW50cykge1xuICBpZiAocG9pbnRzID09PSB2b2lkIDApIHtcbiAgICBwb2ludHMgPSBbXTtcbiAgfVxuXG4gIHZhciB4cyA9IFtdO1xuICB2YXIgeXMgPSBbXTtcbiAgcG9pbnRzLmZvckVhY2goZnVuY3Rpb24gKHApIHtcbiAgICB4cy5wdXNoKHAueCk7XG4gICAgeXMucHVzaChwLnkpO1xuICB9KTtcbiAgdmFyIG1pblggPSBNYXRoLm1pbi5hcHBseShNYXRoLCB4cyk7XG4gIHZhciBtYXhYID0gTWF0aC5tYXguYXBwbHkoTWF0aCwgeHMpO1xuICB2YXIgbWluWSA9IE1hdGgubWluLmFwcGx5KE1hdGgsIHlzKTtcbiAgdmFyIG1heFkgPSBNYXRoLm1heC5hcHBseShNYXRoLCB5cyk7XG4gIHJldHVybiB7XG4gICAgY2VudGVyWDogKG1pblggKyBtYXhYKSAvIDIsXG4gICAgY2VudGVyWTogKG1pblkgKyBtYXhZKSAvIDIsXG4gICAgbWF4WDogbWF4WCxcbiAgICBtYXhZOiBtYXhZLFxuICAgIG1pblg6IG1pblgsXG4gICAgbWluWTogbWluWSxcbiAgICBoZWlnaHQ6IG1heFkgLSBtaW5ZLFxuICAgIHdpZHRoOiBtYXhYIC0gbWluWFxuICB9O1xufTtcbmV4cG9ydCB2YXIgaXNCQm94ZXNPdmVybGFwcGluZyA9IGZ1bmN0aW9uIGlzQkJveGVzT3ZlcmxhcHBpbmcoYjEsIGIyKSB7XG4gIHJldHVybiBNYXRoLmFicyhiMS5jZW50ZXJYIC0gYjIuY2VudGVyWCkgKiAyIDwgYjEud2lkdGggKyBiMi53aWR0aCAmJiBNYXRoLmFicyhiMS5jZW50ZXJZIC0gYjIuY2VudGVyWSkgKiAyIDwgYjEuaGVpZ2h0ICsgYjIuaGVpZ2h0O1xufTtcbmV4cG9ydCB2YXIgZmlsdGVyQ29ubmVjdFBvaW50cyA9IGZ1bmN0aW9uIGZpbHRlckNvbm5lY3RQb2ludHMocG9pbnRzKSB7XG4gIC8vIHByZS1wcm9jZXNzOiByZW1vdmUgZHVwbGljYXRlZCBwb2ludHNcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIgcG9pbnRzTWFwID0ge307XG4gIHZhciBwb2ludHNMZW5ndGggPSBwb2ludHMubGVuZ3RoO1xuXG4gIGZvciAodmFyIGkgPSBwb2ludHNMZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIHZhciBwID0gcG9pbnRzW2ldO1xuICAgIHAuaWQgPSBwLnggKyBcInx8fFwiICsgcC55O1xuICAgIHBvaW50c01hcFtwLmlkXSA9IHA7XG4gICAgcmVzdWx0LnB1c2gocCk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcbmV4cG9ydCB2YXIgc2ltcGxpZnlQb2x5bGluZSA9IGZ1bmN0aW9uIHNpbXBsaWZ5UG9seWxpbmUocG9pbnRzKSB7XG4gIHJldHVybiBmaWx0ZXJDb25uZWN0UG9pbnRzKHBvaW50cyk7XG59O1xuZXhwb3J0IHZhciBnZXRTaW1wbGVQb2x5bGluZSA9IGZ1bmN0aW9uIGdldFNpbXBsZVBvbHlsaW5lKHNQb2ludCwgdFBvaW50KSB7XG4gIHJldHVybiBbc1BvaW50LCB7XG4gICAgeDogc1BvaW50LngsXG4gICAgeTogdFBvaW50LnlcbiAgfSwgdFBvaW50XTtcbn07XG5leHBvcnQgdmFyIGdldEV4cGFuZGVkQkJveCA9IGZ1bmN0aW9uIGdldEV4cGFuZGVkQkJveChiYm94LCBvZmZzZXQpIHtcbiAgaWYgKGJib3gud2lkdGggfHwgYmJveC5oZWlnaHQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY2VudGVyWDogYmJveC5jZW50ZXJYLFxuICAgICAgY2VudGVyWTogYmJveC5jZW50ZXJZLFxuICAgICAgbWluWDogYmJveC5taW5YIC0gb2Zmc2V0LFxuICAgICAgbWluWTogYmJveC5taW5ZIC0gb2Zmc2V0LFxuICAgICAgbWF4WDogYmJveC5tYXhYICsgb2Zmc2V0LFxuICAgICAgbWF4WTogYmJveC5tYXhZICsgb2Zmc2V0LFxuICAgICAgaGVpZ2h0OiBiYm94LmhlaWdodCArIDIgKiBvZmZzZXQsXG4gICAgICB3aWR0aDogYmJveC53aWR0aCArIDIgKiBvZmZzZXRcbiAgICB9O1xuICB9IC8vIHdoZW4gaXQgaXMgYSBwb2ludFxuXG5cbiAgcmV0dXJuIGJib3g7XG59O1xuZXhwb3J0IHZhciBpc0hvcml6b250YWxQb3J0ID0gZnVuY3Rpb24gaXNIb3Jpem9udGFsUG9ydChwb3J0LCBiYm94KSB7XG4gIHZhciBkeCA9IE1hdGguYWJzKHBvcnQueCAtIGJib3guY2VudGVyWCk7XG4gIHZhciBkeSA9IE1hdGguYWJzKHBvcnQueSAtIGJib3guY2VudGVyWSk7XG4gIGlmIChkeCA9PT0gMCAmJiBkeSA9PT0gMCkgcmV0dXJuIDA7XG4gIHJldHVybiBkeCAvIGJib3gud2lkdGggPiBkeSAvIGJib3guaGVpZ2h0O1xufTtcbmV4cG9ydCB2YXIgZ2V0RXhwYW5kZWRCQm94UG9pbnQgPSBmdW5jdGlvbiBnZXRFeHBhbmRlZEJCb3hQb2ludChiYm94LCAvLyDlsIbljp/mnaXoioLngrkgYmJveCDmianlsZXkuoYgb2Zmc2V0IOWQjueahCBiYm9477yM5LiU6KKrIGdyaWRTaXplIOagvOW8j+WMllxucG9pbnQsIC8vIOiiqyBncmlkU2l6ZSDmoLzlvI/ljJblkI7nmoTkvY3nva7vvIhhbmNob3JQb2ludO+8iVxuYW5vdGhlclBvaW50KSB7XG4gIHZhciBpc0hvcml6b250YWwgPSBpc0hvcml6b250YWxQb3J0KHBvaW50LCBiYm94KTtcblxuICBpZiAoaXNIb3Jpem9udGFsID09PSAwKSB7XG4gICAgLy8g6K+05piO6ZSa54K55piv6IqC54K55Lit5b+D77yMbGlua0NlbnRlcjogdHJ1ZeOAgumcgOimgeagueaNruS4pOS4quiKgueCueeahOebuOWvueWFs+ezu+WGs+WumuaWueWQkVxuICAgIHZhciB4ID0gYmJveC5jZW50ZXJYO1xuICAgIHZhciB5ID0gYmJveC5jZW50ZXJZO1xuXG4gICAgaWYgKGFub3RoZXJQb2ludC55IDwgcG9pbnQueSkge1xuICAgICAgLy8g5Y+m5LiA56uv5Zyo5bem5LiKL+WPs+S4iuaWueaXtu+8jOaAu+aYr+S7juS4iuaWuei1sFxuICAgICAgeSA9IGJib3gubWluWTtcbiAgICB9IGVsc2UgaWYgKGFub3RoZXJQb2ludC54ID4gcG9pbnQueCkge1xuICAgICAgLy8g5Y+m5LiA56uv5Zyo5Y+z5LiL5pa577yM5b6A5Y+z6L656LWwXG4gICAgICB4ID0gYmJveC5tYXhYO1xuICAgIH0gZWxzZSBpZiAoYW5vdGhlclBvaW50LnggPCBwb2ludC54KSB7XG4gICAgICAvLyDlj6bkuIDnq6/lnKjlt6bkuIvmlrnvvIzlvoDlt6bovrnotbBcbiAgICAgIHggPSBiYm94Lm1pblg7XG4gICAgfSBlbHNlIGlmIChhbm90aGVyUG9pbnQueCA9PT0gcG9pbnQueCkge1xuICAgICAgLy8g5Y+m5LiA5q615Zyo5q2j5LiL5pa577yM5b6A5LiL6LWwXG4gICAgICB5ID0gYmJveC5tYXhZO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB4OiB4LFxuICAgICAgeTogeVxuICAgIH07XG4gIH1cblxuICBpZiAoaXNIb3Jpem9udGFsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IHBvaW50LnggPiBiYm94LmNlbnRlclggPyBiYm94Lm1heFggOiBiYm94Lm1pblgsXG4gICAgICB5OiBwb2ludC55XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgeDogcG9pbnQueCxcbiAgICB5OiBwb2ludC55ID4gYmJveC5jZW50ZXJZID8gYmJveC5tYXhZIDogYmJveC5taW5ZXG4gIH07XG59O1xuLyoqXG4gKlxuICogQHBhcmFtIGIxXG4gKiBAcGFyYW0gYjJcbiAqL1xuXG5leHBvcnQgdmFyIG1lcmdlQkJveCA9IGZ1bmN0aW9uIG1lcmdlQkJveChiMSwgYjIpIHtcbiAgdmFyIG1pblggPSBNYXRoLm1pbihiMS5taW5YLCBiMi5taW5YKTtcbiAgdmFyIG1pblkgPSBNYXRoLm1pbihiMS5taW5ZLCBiMi5taW5ZKTtcbiAgdmFyIG1heFggPSBNYXRoLm1heChiMS5tYXhYLCBiMi5tYXhYKTtcbiAgdmFyIG1heFkgPSBNYXRoLm1heChiMS5tYXhZLCBiMi5tYXhZKTtcbiAgcmV0dXJuIHtcbiAgICBjZW50ZXJYOiAobWluWCArIG1heFgpIC8gMixcbiAgICBjZW50ZXJZOiAobWluWSArIG1heFkpIC8gMixcbiAgICBtaW5YOiBtaW5YLFxuICAgIG1pblk6IG1pblksXG4gICAgbWF4WDogbWF4WCxcbiAgICBtYXhZOiBtYXhZLFxuICAgIGhlaWdodDogbWF4WSAtIG1pblksXG4gICAgd2lkdGg6IG1heFggLSBtaW5YXG4gIH07XG59O1xuZXhwb3J0IHZhciBnZXRQb2ludHNGcm9tQkJveCA9IGZ1bmN0aW9uIGdldFBvaW50c0Zyb21CQm94KGJib3gpIHtcbiAgLy8gYW50aWNsb2Nrd2lzZVxuICAvLyBjb25zdCB7IG1pblgsIG1pblksIG1heFgsIG1heFkgfSA9IGJib3g7XG4gIHJldHVybiBbe1xuICAgIHg6IGJib3gubWluWCxcbiAgICB5OiBiYm94Lm1pbllcbiAgfSwge1xuICAgIHg6IGJib3gubWF4WCxcbiAgICB5OiBiYm94Lm1pbllcbiAgfSwge1xuICAgIHg6IGJib3gubWF4WCxcbiAgICB5OiBiYm94Lm1heFlcbiAgfSwge1xuICAgIHg6IGJib3gubWluWCxcbiAgICB5OiBiYm94Lm1heFlcbiAgfV07XG59O1xuZXhwb3J0IHZhciBpc1BvaW50T3V0c2lkZUJCb3ggPSBmdW5jdGlvbiBpc1BvaW50T3V0c2lkZUJCb3gocG9pbnQsIGJib3gpIHtcbiAgdmFyIHggPSBwb2ludC54LFxuICAgICAgeSA9IHBvaW50Lnk7XG4gIHJldHVybiB4IDwgYmJveC5taW5YIHx8IHggPiBiYm94Lm1heFggfHwgeSA8IGJib3gubWluWSB8fCB5ID4gYmJveC5tYXhZO1xufTtcbmV4cG9ydCB2YXIgZ2V0QkJveFhDcm9zc1BvaW50cyA9IGZ1bmN0aW9uIGdldEJCb3hYQ3Jvc3NQb2ludHMoYmJveCwgeCkge1xuICBpZiAoeCA8IGJib3gubWluWCB8fCB4ID4gYmJveC5tYXhYKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcmV0dXJuIFt7XG4gICAgeDogeCxcbiAgICB5OiBiYm94Lm1pbllcbiAgfSwge1xuICAgIHg6IHgsXG4gICAgeTogYmJveC5tYXhZXG4gIH1dO1xufTtcbmV4cG9ydCB2YXIgZ2V0QkJveFlDcm9zc1BvaW50cyA9IGZ1bmN0aW9uIGdldEJCb3hZQ3Jvc3NQb2ludHMoYmJveCwgeSkge1xuICBpZiAoeSA8IGJib3gubWluWSB8fCB5ID4gYmJveC5tYXhZKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcmV0dXJuIFt7XG4gICAgeDogYmJveC5taW5YLFxuICAgIHk6IHlcbiAgfSwge1xuICAgIHg6IGJib3gubWF4WCxcbiAgICB5OiB5XG4gIH1dO1xufTtcbmV4cG9ydCB2YXIgZ2V0QkJveENyb3NzUG9pbnRzQnlQb2ludCA9IGZ1bmN0aW9uIGdldEJCb3hDcm9zc1BvaW50c0J5UG9pbnQoYmJveCwgcG9pbnQpIHtcbiAgcmV0dXJuIGdldEJCb3hYQ3Jvc3NQb2ludHMoYmJveCwgcG9pbnQueCkuY29uY2F0KGdldEJCb3hZQ3Jvc3NQb2ludHMoYmJveCwgcG9pbnQueSkpO1xufTtcbi8qKlxuICog5pu85ZOI6aG/6Led56a7XG4gKi9cblxuZXhwb3J0IHZhciBkaXN0YW5jZSA9IGZ1bmN0aW9uIGRpc3RhbmNlKHAxLCBwMikge1xuICByZXR1cm4gTWF0aC5hYnMocDEueCAtIHAyLngpICsgTWF0aC5hYnMocDEueSAtIHAyLnkpO1xufTtcbi8qKlxuICog5aaC5p6cIHBvaW50cyDkuK3nmoTkuIDkuKroioLngrkgeCDkuI4gcCDnm7jnrYnvvIzliJnmtojogJcgLTLjgIJ5IOWQjFxuICog5Y2z5LyY5YWI6YCJ5oup5ZKMIHBvaW50cyDlnKjlkIzkuIDmsLTlubPnur8gLyDlnoLnm7Tnur/kuIrnmoTngrlcbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuXG5leHBvcnQgdmFyIF9jb3N0QnlQb2ludHMgPSBmdW5jdGlvbiBfY29zdEJ5UG9pbnRzKHAsIHBvaW50cykge1xuICB2YXIgb2Zmc2V0ID0gLTI7XG4gIHZhciByZXN1bHQgPSAwO1xuICBwb2ludHMuZm9yRWFjaChmdW5jdGlvbiAocG9pbnQpIHtcbiAgICBpZiAocG9pbnQpIHtcbiAgICAgIGlmIChwLnggPT09IHBvaW50LngpIHtcbiAgICAgICAgcmVzdWx0ICs9IG9mZnNldDtcbiAgICAgIH1cblxuICAgICAgaWYgKHAueSA9PT0gcG9pbnQueSkge1xuICAgICAgICByZXN1bHQgKz0gb2Zmc2V0O1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuLyoqXG4gKiBwcyDnu4/ov4cgcCDliLAgcHQg55qE6Led56a777yM5YeP5Y675YW25LuW6Lev6L+H6IqC54K56YCg5oiQ55qE5raI6ICXXG4gKi9cblxuZXhwb3J0IHZhciBoZXVyaXN0aWNDb3N0RXN0aW1hdGUgPSBmdW5jdGlvbiBoZXVyaXN0aWNDb3N0RXN0aW1hdGUocCwgcHMsIHB0LCBzb3VyY2UsIHRhcmdldCkge1xuICByZXR1cm4gZGlzdGFuY2UocCwgcHMpICsgZGlzdGFuY2UocCwgcHQpICsgX2Nvc3RCeVBvaW50cyhwLCBbcHMsIHB0LCBzb3VyY2UsIHRhcmdldF0pO1xufTtcbmV4cG9ydCB2YXIgcmVjb25zdHJ1Y3RQYXRoID0gZnVuY3Rpb24gcmVjb25zdHJ1Y3RQYXRoKHBhdGhQb2ludHMsIHBvaW50QnlJZCwgY2FtZUZyb20sIGN1cnJlbnRJZCwgaXRlcmF0b3IpIHtcbiAgaWYgKGl0ZXJhdG9yID09PSB2b2lkIDApIHtcbiAgICBpdGVyYXRvciA9IDA7XG4gIH1cblxuICBwYXRoUG9pbnRzLnVuc2hpZnQocG9pbnRCeUlkW2N1cnJlbnRJZF0pO1xuXG4gIGlmIChjYW1lRnJvbVtjdXJyZW50SWRdICYmIGNhbWVGcm9tW2N1cnJlbnRJZF0gIT09IGN1cnJlbnRJZCAmJiBpdGVyYXRvciA8PSAxMDApIHtcbiAgICByZWNvbnN0cnVjdFBhdGgocGF0aFBvaW50cywgcG9pbnRCeUlkLCBjYW1lRnJvbSwgY2FtZUZyb21bY3VycmVudElkXSwgaXRlcmF0b3IgKyAxKTtcbiAgfVxufTtcbi8qKlxuICog5LuOIGFyciDkuK3liKDljrsgaXRlbVxuICovXG5cbmV4cG9ydCB2YXIgcmVtb3ZlRnJvbSA9IGZ1bmN0aW9uIHJlbW92ZUZyb20oYXJyLCBpdGVtKSB7XG4gIHZhciBpbmRleCA9IGFyci5pbmRleE9mKGl0ZW0pO1xuXG4gIGlmIChpbmRleCA+IC0xKSB7XG4gICAgYXJyLnNwbGljZShpbmRleCwgMSk7XG4gIH1cbn07XG5leHBvcnQgdmFyIGlzU2VnbWVudHNJbnRlcnNlY3RlZCA9IGZ1bmN0aW9uIGlzU2VnbWVudHNJbnRlcnNlY3RlZChwMCwgcDEsIHAyLCBwMykge1xuICB2YXIgdjF4ID0gcDIueCAtIHAwLng7XG4gIHZhciB2MXkgPSBwMi55IC0gcDAueTtcbiAgdmFyIHYyeCA9IHAzLnggLSBwMC54O1xuICB2YXIgdjJ5ID0gcDMueSAtIHAwLnk7XG4gIHZhciB2M3ggPSBwMi54IC0gcDEueDtcbiAgdmFyIHYzeSA9IHAyLnkgLSBwMS55O1xuICB2YXIgdjR4ID0gcDMueCAtIHAxLng7XG4gIHZhciB2NHkgPSBwMy55IC0gcDEueTtcbiAgdmFyIHBkMSA9IHYxeCAqIHYyeSAtIHYxeSAqIHYyeDtcbiAgdmFyIHBkMiA9IHYzeCAqIHY0eSAtIHYzeSAqIHY0eDtcbiAgdmFyIHBkMyA9IHYxeCAqIHYzeSAtIHYxeSAqIHYzeDtcbiAgdmFyIHBkNCA9IHYyeCAqIHY0eSAtIHYyeSAqIHY0eDtcbiAgcmV0dXJuIHBkMSAqIHBkMiA8PSAwICYmIHBkMyAqIHBkNCA8PSAwO1xufTtcbmV4cG9ydCB2YXIgaXNTZWdtZW50Q3Jvc3NpbmdCQm94ID0gZnVuY3Rpb24gaXNTZWdtZW50Q3Jvc3NpbmdCQm94KHAxLCBwMiwgYmJveCkge1xuICBpZiAoYmJveC53aWR0aCB8fCBiYm94LmhlaWdodCkge1xuICAgIHZhciBfYSA9IGdldFBvaW50c0Zyb21CQm94KGJib3gpLFxuICAgICAgICBwYSA9IF9hWzBdLFxuICAgICAgICBwYiA9IF9hWzFdLFxuICAgICAgICBwYyA9IF9hWzJdLFxuICAgICAgICBwZCA9IF9hWzNdO1xuXG4gICAgcmV0dXJuIGlzU2VnbWVudHNJbnRlcnNlY3RlZChwMSwgcDIsIHBhLCBwYikgfHwgaXNTZWdtZW50c0ludGVyc2VjdGVkKHAxLCBwMiwgcGEsIHBkKSB8fCBpc1NlZ21lbnRzSW50ZXJzZWN0ZWQocDEsIHAyLCBwYiwgcGMpIHx8IGlzU2VnbWVudHNJbnRlcnNlY3RlZChwMSwgcDIsIHBjLCBwZCk7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59O1xuLyoqXG4gKiDlnKggcG9pbnRzIOS4reaJvuWIsOa7oei2syB4IOaIliB5IOWSjCBwb2ludCDnmoQgeCDmiJYgeSDnm7jnrYnvvIzkuJTkuI4gcG9pbnQg6L+e57q/5LiN57uP6L+HIGJib3gxIOS4jiBiYm94MiDnmoTngrlcbiAqL1xuXG5leHBvcnQgdmFyIGdldE5laWdoYm9yUG9pbnRzID0gZnVuY3Rpb24gZ2V0TmVpZ2hib3JQb2ludHMocG9pbnRzLCBwb2ludCwgYmJveDEsIGJib3gyKSB7XG4gIHZhciBuZWlnaGJvcnMgPSBbXTtcbiAgcG9pbnRzLmZvckVhY2goZnVuY3Rpb24gKHApIHtcbiAgICBpZiAocCA9PT0gcG9pbnQpIHJldHVybjtcblxuICAgIGlmIChwLnggPT09IHBvaW50LnggfHwgcC55ID09PSBwb2ludC55KSB7XG4gICAgICBpZiAoaXNTZWdtZW50Q3Jvc3NpbmdCQm94KHAsIHBvaW50LCBiYm94MSkgfHwgaXNTZWdtZW50Q3Jvc3NpbmdCQm94KHAsIHBvaW50LCBiYm94MikpIHJldHVybjtcbiAgICAgIG5laWdoYm9ycy5wdXNoKHApO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBmaWx0ZXJDb25uZWN0UG9pbnRzKG5laWdoYm9ycyk7XG59O1xuZXhwb3J0IHZhciBwYXRoRmluZGVyID0gZnVuY3Rpb24gcGF0aEZpbmRlcihwb2ludHMsIHN0YXJ0LCBnb2FsLCBzQkJveCwgdEJCb3gsIG9zLCBvdCkge1xuICAvLyBBLVN0YXIgQWxnb3JpdGhtXG4gIHZhciBjbG9zZWRTZXQgPSBbXTtcbiAgdmFyIG9wZW5TZXQgPSBbc3RhcnRdO1xuICB2YXIgY2FtZUZyb20gPSB7fTtcbiAgdmFyIGdTY29yZSA9IHt9OyAvLyBhbGwgZGVmYXVsdCB2YWx1ZXMgYXJlIEluZmluaXR5XG5cbiAgdmFyIGZTY29yZSA9IHt9OyAvLyBhbGwgZGVmYXVsdCB2YWx1ZXMgYXJlIEluZmluaXR5XG5cbiAgZ1Njb3JlW3N0YXJ0LmlkXSA9IDA7XG4gIGZTY29yZVtzdGFydC5pZF0gPSBoZXVyaXN0aWNDb3N0RXN0aW1hdGUoc3RhcnQsIGdvYWwsIHN0YXJ0KTtcbiAgdmFyIHBvaW50QnlJZCA9IHt9O1xuICBwb2ludHMuZm9yRWFjaChmdW5jdGlvbiAocCkge1xuICAgIHBvaW50QnlJZFtwLmlkXSA9IHA7XG4gIH0pO1xuICB2YXIgY3VycmVudCwgbG93ZXN0RlNjb3JlO1xuXG4gIHdoaWxlIChvcGVuU2V0Lmxlbmd0aCkge1xuICAgIGN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgbG93ZXN0RlNjb3JlID0gSW5maW5pdHk7IC8vIOaJvuWIsCBvcGVuU2V0IOS4rSBmU2NvcmUg5pyA5bCP55qE54K5XG5cbiAgICBvcGVuU2V0LmZvckVhY2goZnVuY3Rpb24gKHApIHtcbiAgICAgIGlmIChmU2NvcmVbcC5pZF0gPD0gbG93ZXN0RlNjb3JlKSB7XG4gICAgICAgIGxvd2VzdEZTY29yZSA9IGZTY29yZVtwLmlkXTtcbiAgICAgICAgY3VycmVudCA9IHA7XG4gICAgICB9XG4gICAgfSk7IC8vIOiLpSBvcGVuU2V0IOS4rSBmU2NvcmUg5pyA5bCP55qE54K55bCx5piv57uI54K5XG5cbiAgICBpZiAoY3VycmVudCA9PT0gZ29hbCkge1xuICAgICAgLy8gZW5kaW5nIGNvbmRpdGlvblxuICAgICAgdmFyIHBhdGhQb2ludHMgPSBbXTtcbiAgICAgIHJlY29uc3RydWN0UGF0aChwYXRoUG9pbnRzLCBwb2ludEJ5SWQsIGNhbWVGcm9tLCBnb2FsLmlkKTtcbiAgICAgIHJldHVybiBwYXRoUG9pbnRzO1xuICAgIH1cblxuICAgIHJlbW92ZUZyb20ob3BlblNldCwgY3VycmVudCk7XG4gICAgY2xvc2VkU2V0LnB1c2goY3VycmVudCk7XG4gICAgZ2V0TmVpZ2hib3JQb2ludHMocG9pbnRzLCBjdXJyZW50LCBzQkJveCwgdEJCb3gpLmZvckVhY2goZnVuY3Rpb24gKG5laWdoYm9yKSB7XG4gICAgICBpZiAoY2xvc2VkU2V0LmluZGV4T2YobmVpZ2hib3IpICE9PSAtMSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChvcGVuU2V0LmluZGV4T2YobmVpZ2hib3IpID09PSAtMSkge1xuICAgICAgICBvcGVuU2V0LnB1c2gobmVpZ2hib3IpO1xuICAgICAgfVxuXG4gICAgICB2YXIgdGVudGF0aXZlR1Njb3JlID0gZlNjb3JlW2N1cnJlbnQuaWRdICsgZGlzdGFuY2UoY3VycmVudCwgbmVpZ2hib3IpOyAvLyArIGRpc3RhbmNlKG5laWdoYm9yLCBnb2FsKTtcblxuICAgICAgaWYgKGdTY29yZVtuZWlnaGJvci5pZF0gJiYgdGVudGF0aXZlR1Njb3JlID49IGdTY29yZVtuZWlnaGJvci5pZF0pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjYW1lRnJvbVtuZWlnaGJvci5pZF0gPSBjdXJyZW50LmlkO1xuICAgICAgZ1Njb3JlW25laWdoYm9yLmlkXSA9IHRlbnRhdGl2ZUdTY29yZTtcbiAgICAgIGZTY29yZVtuZWlnaGJvci5pZF0gPSBnU2NvcmVbbmVpZ2hib3IuaWRdICsgaGV1cmlzdGljQ29zdEVzdGltYXRlKG5laWdoYm9yLCBnb2FsLCBzdGFydCwgb3MsIG90KTtcbiAgICB9KTtcbiAgfSAvLyB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBmaW5kIHBhdGgnKTtcblxuXG4gIHJldHVybiBbc3RhcnQsIGdvYWxdO1xufTtcbmV4cG9ydCB2YXIgaXNCZW5kaW5nID0gZnVuY3Rpb24gaXNCZW5kaW5nKHAwLCBwMSwgcDIpIHtcbiAgcmV0dXJuICEocDAueCA9PT0gcDEueCAmJiBwMS54ID09PSBwMi54IHx8IHAwLnkgPT09IHAxLnkgJiYgcDEueSA9PT0gcDIueSk7XG59O1xuZXhwb3J0IHZhciBnZXRCb3JkZXJSYWRpdXNQb2ludHMgPSBmdW5jdGlvbiBnZXRCb3JkZXJSYWRpdXNQb2ludHMocDAsIHAxLCBwMiwgcikge1xuICB2YXIgZDAgPSBkaXN0YW5jZShwMCwgcDEpO1xuICB2YXIgZDEgPSBkaXN0YW5jZShwMiwgcDEpO1xuXG4gIGlmIChkMCA8IHIpIHtcbiAgICByID0gZDA7XG4gIH1cblxuICBpZiAoZDEgPCByKSB7XG4gICAgciA9IGQxO1xuICB9XG5cbiAgdmFyIHBzID0ge1xuICAgIHg6IHAxLnggLSByIC8gZDAgKiAocDEueCAtIHAwLngpLFxuICAgIHk6IHAxLnkgLSByIC8gZDAgKiAocDEueSAtIHAwLnkpXG4gIH07XG4gIHZhciBwdCA9IHtcbiAgICB4OiBwMS54IC0gciAvIGQxICogKHAxLnggLSBwMi54KSxcbiAgICB5OiBwMS55IC0gciAvIGQxICogKHAxLnkgLSBwMi55KVxuICB9O1xuICByZXR1cm4gW3BzLCBwdF07XG59O1xuZXhwb3J0IHZhciBnZXRQYXRoV2l0aEJvcmRlclJhZGl1c0J5UG9seWxpbmUgPSBmdW5jdGlvbiBnZXRQYXRoV2l0aEJvcmRlclJhZGl1c0J5UG9seWxpbmUocG9pbnRzLCBib3JkZXJSYWRpdXMpIHtcbiAgdmFyIHBhdGhTZWdtZW50cyA9IFtdO1xuICB2YXIgc3RhcnRQb2ludCA9IHBvaW50c1swXTtcbiAgcGF0aFNlZ21lbnRzLnB1c2goXCJNXCIgKyBzdGFydFBvaW50LnggKyBcIiBcIiArIHN0YXJ0UG9pbnQueSk7XG4gIHBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uIChwLCBpKSB7XG4gICAgdmFyIHAxID0gcG9pbnRzW2kgKyAxXTtcbiAgICB2YXIgcDIgPSBwb2ludHNbaSArIDJdO1xuXG4gICAgaWYgKHAxICYmIHAyKSB7XG4gICAgICBpZiAoaXNCZW5kaW5nKHAsIHAxLCBwMikpIHtcbiAgICAgICAgdmFyIF9hID0gZ2V0Qm9yZGVyUmFkaXVzUG9pbnRzKHAsIHAxLCBwMiwgYm9yZGVyUmFkaXVzKSxcbiAgICAgICAgICAgIHBzID0gX2FbMF0sXG4gICAgICAgICAgICBwdCA9IF9hWzFdO1xuXG4gICAgICAgIHBhdGhTZWdtZW50cy5wdXNoKFwiTFwiICsgcHMueCArIFwiIFwiICsgcHMueSk7XG4gICAgICAgIHBhdGhTZWdtZW50cy5wdXNoKFwiUVwiICsgcDEueCArIFwiIFwiICsgcDEueSArIFwiIFwiICsgcHQueCArIFwiIFwiICsgcHQueSk7XG4gICAgICAgIHBhdGhTZWdtZW50cy5wdXNoKFwiTFwiICsgcHQueCArIFwiIFwiICsgcHQueSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXRoU2VnbWVudHMucHVzaChcIkxcIiArIHAxLnggKyBcIiBcIiArIHAxLnkpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocDEpIHtcbiAgICAgIHBhdGhTZWdtZW50cy5wdXNoKFwiTFwiICsgcDEueCArIFwiIFwiICsgcDEueSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHBhdGhTZWdtZW50cy5qb2luKCcnKTtcbn07XG5leHBvcnQgdmFyIGdldFBvbHlsaW5lUG9pbnRzID0gZnVuY3Rpb24gZ2V0UG9seWxpbmVQb2ludHMoc3RhcnQsIGVuZCwgc05vZGUsIHROb2RlLCBvZmZzZXQpIHtcbiAgdmFyIHNCQm94LCB0QkJveDtcblxuICBpZiAoIXNOb2RlIHx8ICFzTm9kZS5nZXRUeXBlKCkpIHtcbiAgICBzQkJveCA9IGdldEJCb3hGcm9tUG9pbnQoc3RhcnQpO1xuICB9IGVsc2UgaWYgKHNOb2RlLmdldFR5cGUoKSA9PT0gJ2NvbWJvJykge1xuICAgIHZhciBzTm9kZUtleVNoYXBlID0gc05vZGUuZ2V0S2V5U2hhcGUoKTtcbiAgICBzQkJveCA9IHNOb2RlS2V5U2hhcGUuZ2V0Q2FudmFzQkJveCgpIHx8IGdldEJCb3hGcm9tUG9pbnQoc3RhcnQpO1xuICAgIHNCQm94LmNlbnRlclggPSAoc0JCb3gubWluWCArIHNCQm94Lm1heFgpIC8gMjtcbiAgICBzQkJveC5jZW50ZXJZID0gKHNCQm94Lm1pblkgKyBzQkJveC5tYXhZKSAvIDI7XG4gIH0gZWxzZSB7XG4gICAgc0JCb3ggPSBzTm9kZS5nZXRCQm94KCk7XG4gIH1cblxuICBpZiAoIXROb2RlIHx8ICF0Tm9kZS5nZXRUeXBlKCkpIHtcbiAgICB0QkJveCA9IGdldEJCb3hGcm9tUG9pbnQoZW5kKTtcbiAgfSBlbHNlIGlmICh0Tm9kZS5nZXRUeXBlKCkgPT09ICdjb21ibycpIHtcbiAgICB2YXIgdEtleVNoYXBlQkJveCA9IHROb2RlLmdldEtleVNoYXBlKCkuZ2V0QkJveCgpO1xuXG4gICAgaWYgKHRLZXlTaGFwZUJCb3gpIHtcbiAgICAgIHZhciBfYSA9IHROb2RlLmdldE1vZGVsKCksXG4gICAgICAgICAgdHggPSBfYS54LFxuICAgICAgICAgIHR5ID0gX2EueTtcblxuICAgICAgdEJCb3ggPSB7XG4gICAgICAgIHg6IHR4LFxuICAgICAgICB5OiB0eSxcbiAgICAgICAgd2lkdGg6IHRLZXlTaGFwZUJCb3gud2lkdGgsXG4gICAgICAgIGhlaWdodDogdEtleVNoYXBlQkJveC5oZWlnaHQsXG4gICAgICAgIG1pblg6IHRLZXlTaGFwZUJCb3gubWluWCArIHR4LFxuICAgICAgICBtYXhYOiB0S2V5U2hhcGVCQm94Lm1heFggKyB0eCxcbiAgICAgICAgbWluWTogdEtleVNoYXBlQkJveC5taW5ZICsgdHksXG4gICAgICAgIG1heFk6IHRLZXlTaGFwZUJCb3gubWF4WSArIHR5XG4gICAgICB9O1xuICAgICAgdEJCb3guY2VudGVyWCA9ICh0QkJveC5taW5YICsgdEJCb3gubWF4WCkgLyAyO1xuICAgICAgdEJCb3guY2VudGVyWSA9ICh0QkJveC5taW5ZICsgdEJCb3gubWF4WSkgLyAyO1xuICAgIH0gZWxzZSB7XG4gICAgICB0QkJveCA9IGdldEJCb3hGcm9tUG9pbnQoZW5kKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdEJCb3ggPSB0Tm9kZSAmJiB0Tm9kZS5nZXRCQm94KCk7XG4gIH0gLy8gaWYgKGlzQkJveGVzT3ZlcmxhcHBpbmcoc0JCb3gsIHRCQm94KSkge1xuICAvLyAgIC8vIHNvdXJjZSBhbmQgdGFyZ2V0IG5vZGVzIGFyZSBvdmVybGFwcGluZ1xuICAvLyAgIHJldHVybiBzaW1wbGlmeVBvbHlsaW5lKGdldFNpbXBsZVBvbHlsaW5lKHN0YXJ0LCBlbmQpKTtcbiAgLy8gfVxuXG5cbiAgdmFyIHN4QkJveCA9IGdldEV4cGFuZGVkQkJveChzQkJveCwgb2Zmc2V0KTtcbiAgdmFyIHR4QkJveCA9IGdldEV4cGFuZGVkQkJveCh0QkJveCwgb2Zmc2V0KTsgLy8gaWYgKGlzQkJveGVzT3ZlcmxhcHBpbmcoc3hCQm94LCB0eEJCb3gpKSB7XG4gIC8vICAgLy8gdGhlIGV4cGFuZGVkIGJvdW5kaW5nIGJveGVzIG9mIHNvdXJjZSBhbmQgdGFyZ2V0IG5vZGVzIGFyZSBvdmVybGFwcGluZ1xuICAvLyAgIHJldHVybiBzaW1wbGlmeVBvbHlsaW5lKGdldFNpbXBsZVBvbHlsaW5lKHN0YXJ0LCBlbmQpKTtcbiAgLy8gfVxuXG4gIHZhciBzUG9pbnQgPSBnZXRFeHBhbmRlZEJCb3hQb2ludChzeEJCb3gsIHN0YXJ0LCBlbmQpO1xuICB2YXIgdFBvaW50ID0gZ2V0RXhwYW5kZWRCQm94UG9pbnQodHhCQm94LCBlbmQsIHN0YXJ0KTtcbiAgdmFyIGxpbmVCQm94ID0gZ2V0QkJveEZyb21Qb2ludHMoW3NQb2ludCwgdFBvaW50XSk7XG4gIHZhciBzTWl4QkJveCA9IG1lcmdlQkJveChzeEJCb3gsIGxpbmVCQm94KTtcbiAgdmFyIHRNaXhCQm94ID0gbWVyZ2VCQm94KHR4QkJveCwgbGluZUJCb3gpO1xuICB2YXIgY29ubmVjdFBvaW50cyA9IFtdO1xuICBjb25uZWN0UG9pbnRzID0gY29ubmVjdFBvaW50cy5jb25jYXQoZ2V0UG9pbnRzRnJvbUJCb3goc01peEJCb3gpKS5jb25jYXQoZ2V0UG9pbnRzRnJvbUJCb3godE1peEJCb3gpKTtcbiAgdmFyIGNlbnRlclBvaW50ID0ge1xuICAgIHg6IChzdGFydC54ICsgZW5kLngpIC8gMixcbiAgICB5OiAoc3RhcnQueSArIGVuZC55KSAvIDJcbiAgfTtcbiAgW2xpbmVCQm94LCBzTWl4QkJveCwgdE1peEJCb3hdLmZvckVhY2goZnVuY3Rpb24gKGJib3gpIHtcbiAgICBjb25uZWN0UG9pbnRzID0gY29ubmVjdFBvaW50cy5jb25jYXQoZ2V0QkJveENyb3NzUG9pbnRzQnlQb2ludChiYm94LCBjZW50ZXJQb2ludCkuZmlsdGVyKGZ1bmN0aW9uIChwKSB7XG4gICAgICByZXR1cm4gaXNQb2ludE91dHNpZGVCQm94KHAsIHN4QkJveCkgJiYgaXNQb2ludE91dHNpZGVCQm94KHAsIHR4QkJveCk7XG4gICAgfSkpO1xuICB9KTtcbiAgW3tcbiAgICB4OiBzUG9pbnQueCxcbiAgICB5OiB0UG9pbnQueVxuICB9LCB7XG4gICAgeDogdFBvaW50LngsXG4gICAgeTogc1BvaW50LnlcbiAgfV0uZm9yRWFjaChmdW5jdGlvbiAocCkge1xuICAgIC8vIGltcG9zc2libGUhIVxuICAgIGlmIChpc1BvaW50T3V0c2lkZUJCb3gocCwgc3hCQm94KSAmJiBpc1BvaW50T3V0c2lkZUJCb3gocCwgdHhCQm94KSAvLyAmJlxuICAgIC8vIGlzUG9pbnRJbnNpZGVCQm94KHAsIHNNaXhCQm94KSAmJiBpc1BvaW50SW5zaWRlQkJveChwLCB0TWl4QkJveClcbiAgICApIHtcbiAgICAgIGNvbm5lY3RQb2ludHMucHVzaChwKTtcbiAgICB9XG4gIH0pO1xuICBjb25uZWN0UG9pbnRzLnVuc2hpZnQoc1BvaW50KTtcbiAgY29ubmVjdFBvaW50cy5wdXNoKHRQb2ludCk7IC8vIGZpbHRlciBvdXQgZHVscGxpY2F0ZWQgcG9pbnRzIGluIGNvbm5lY3RQb2ludHNcblxuICBjb25uZWN0UG9pbnRzID0gZmlsdGVyQ29ubmVjdFBvaW50cyhjb25uZWN0UG9pbnRzKTsgLy8gLCBzeEJCb3gsIHR4QkJveCwgb3V0ZXJCQm94XG5cbiAgdmFyIHBhdGhQb2ludHMgPSBwYXRoRmluZGVyKGNvbm5lY3RQb2ludHMsIHNQb2ludCwgdFBvaW50LCBzQkJveCwgdEJCb3gsIHN0YXJ0LCBlbmQpO1xuICBwYXRoUG9pbnRzLnVuc2hpZnQoc3RhcnQpO1xuICBwYXRoUG9pbnRzLnB1c2goZW5kKTtcbiAgcmV0dXJuIHNpbXBsaWZ5UG9seWxpbmUocGF0aFBvaW50cyk7XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/edges/polyline-util.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/edges/polyline.js":
/*!************************************************************************************!*\
!*** ./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/edges/polyline.js ***!
\************************************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\");\n/* harmony import */ var _polyline_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./polyline-util */ \"./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/edges/polyline-util.js\");\n/* harmony import */ var _router__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./router */ \"./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/edges/router.js\");\n\n\n\n\n // 折线\n\nObject(_antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"registerEdge\"])('polyline', {\n options: {\n color: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultEdge.color,\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultEdge.size,\n style: {\n radius: 0,\n offset: 15,\n x: 0,\n y: 0,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultEdge.style.stroke,\n lineAppendWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultEdge.style.lineAppendWidth\n },\n // 文本样式配置\n labelCfg: {\n style: {\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].edgeLabel.style.fill,\n fontSize: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].edgeLabel.style.fontSize,\n fontFamily: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].windowFontFamily\n }\n },\n routeCfg: {\n obstacles: [],\n maxAllowedDirectionChange: Math.PI,\n maximumLoops: 500,\n gridSize: 10 // 指定精度\n\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].edgeStateStyles)\n },\n shapeType: 'polyline',\n // 文本位置\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var shapeStyle = this.getShapeStyle(cfg);\n if (shapeStyle.radius === 0) delete shapeStyle.radius;\n var keyShape = group.addShape('path', {\n className: 'edge-shape',\n name: 'edge-shape',\n attrs: shapeStyle\n });\n group['shapeMap']['edge-shape'] = keyShape;\n return keyShape;\n },\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = this.options.style;\n var strokeStyle = {\n stroke: cfg.color\n };\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultStyle, strokeStyle, cfg.style);\n cfg = this.getPathPoints(cfg);\n this.radius = style.radius;\n this.offset = style.offset;\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n var controlPoints = this.getControlPoints(cfg);\n var points = [startPoint]; // 添加起始点\n // 添加控制点\n\n if (controlPoints) {\n points = points.concat(controlPoints);\n } // 添加结束点\n\n\n points.push(endPoint);\n var source = cfg.sourceNode;\n var target = cfg.targetNode;\n var radius = style.radius;\n var defaultRouteCfg = this.options.routeCfg;\n var routeCfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultRouteCfg, cfg.routeCfg);\n routeCfg.offset = style.offset;\n var path = this.getPath(points, source, target, radius, routeCfg);\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(path) && path.length <= 1 || Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(path) && path.indexOf('L') === -1) {\n path = 'M0 0, L0 0';\n }\n\n if (isNaN(startPoint.x) || isNaN(startPoint.y) || isNaN(endPoint.x) || isNaN(endPoint.y)) {\n path = 'M0 0, L0 0';\n }\n\n var attrs = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultEdge.style, style, {\n lineWidth: cfg.size,\n path: path\n });\n return attrs;\n },\n updateShapeStyle: function updateShapeStyle(cfg, item) {\n var group = item.getContainer();\n if (!item.isVisible()) return;\n var strokeStyle = {\n stroke: cfg.color\n };\n var shape = group['shapeMap']['edge-shape'] || group.find(function (element) {\n return element.get('className') === 'edge-shape';\n }) || item.getKeyShape();\n var size = cfg.size;\n cfg = this.getPathPoints(cfg);\n var startPoint = cfg.startPoint,\n endPoint = cfg.endPoint;\n var controlPoints = this.getControlPoints(cfg); // || cfg.controlPoints;\n\n var points = [startPoint]; // 添加起始点\n // 添加控制点\n\n if (controlPoints) {\n points = points.concat(controlPoints);\n } // 添加结束点\n\n\n points.push(endPoint);\n var currentAttr = shape.attr();\n var previousStyle = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, strokeStyle, currentAttr, cfg.style);\n var source = cfg.sourceNode;\n var target = cfg.targetNode;\n var radius = previousStyle.radius;\n var defaultRouteCfg = this.options.routeCfg;\n var routeCfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultRouteCfg, cfg.routeCfg);\n routeCfg.offset = previousStyle.offset;\n var path = this.getPath(points, source, target, radius, routeCfg);\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"])(path) && path.length <= 1 || Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(path) && path.indexOf('L') === -1) {\n path = 'M0 0, L0 0';\n }\n\n if (isNaN(startPoint.x) || isNaN(startPoint.y) || isNaN(endPoint.x) || isNaN(endPoint.y)) {\n path = 'M0 0, L0 0';\n }\n\n if (currentAttr.endArrow && previousStyle.endArrow === false) {\n cfg.style.endArrow = {\n path: ''\n };\n }\n\n if (currentAttr.startArrow && previousStyle.startArrow === false) {\n cfg.style.startArrow = {\n path: ''\n };\n }\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])(strokeStyle, shape.attr(), {\n lineWidth: size,\n path: path\n }, cfg.style);\n\n if (shape) {\n shape.attr(style);\n }\n },\n getPath: function getPath(points, source, target, radius, routeCfg) {\n var offset = routeCfg.offset,\n simple = routeCfg.simple; // 指定了控制点\n\n if (!offset || points.length > 2) {\n if (radius) {\n return Object(_polyline_util__WEBPACK_IMPORTED_MODULE_3__[\"getPathWithBorderRadiusByPolyline\"])(points, radius);\n }\n\n var pathArray_1 = [];\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(points, function (point, index) {\n if (index === 0) {\n pathArray_1.push(['M', point.x, point.y]);\n } else {\n pathArray_1.push(['L', point.x, point.y]);\n }\n });\n return pathArray_1;\n } // 未指定控制点\n\n\n var polylinePoints = simple ? Object(_polyline_util__WEBPACK_IMPORTED_MODULE_3__[\"getPolylinePoints\"])(points[points.length - 1], points[0], target, source, offset) : Object(_router__WEBPACK_IMPORTED_MODULE_4__[\"pathFinder\"])(points[0], points[points.length - 1], source, target, routeCfg);\n if (!polylinePoints || !polylinePoints.length) return 'M0 0, L0 0';\n\n if (radius) {\n var res_1 = Object(_polyline_util__WEBPACK_IMPORTED_MODULE_3__[\"getPathWithBorderRadiusByPolyline\"])(polylinePoints, radius);\n return res_1;\n }\n\n var res = _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"Util\"].pointsToPolygon(polylinePoints);\n return res;\n }\n}, 'single-edge');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWVsZW1lbnRAMC41LjBAQGFudHYvZzYtZWxlbWVudC9lcy9lZGdlcy9wb2x5bGluZS5qcz80YjVhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUN5QjtBQUNlO0FBQ2M7QUFDakQ7O0FBRXRDLGtFQUFZO0FBQ1o7QUFDQSxXQUFXLHdEQUFNO0FBQ2pCLFVBQVUsd0RBQU07QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsd0RBQU07QUFDcEIsdUJBQXVCLHdEQUFNO0FBQzdCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxjQUFjLHdEQUFNO0FBQ3BCLGtCQUFrQix3REFBTTtBQUN4QixvQkFBb0Isd0RBQU07QUFDMUI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxLQUFLO0FBQ0wsaUJBQWlCLHNEQUFRLEdBQUcsRUFBRSx3REFBTTtBQUNwQyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLHNEQUFHLEdBQUc7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCOztBQUVBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHNEQUFHLEdBQUc7QUFDekI7QUFDQTs7QUFFQSxRQUFRLDBEQUFPLDhCQUE4QiwyREFBUTtBQUNyRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxnQkFBZ0Isc0RBQUcsR0FBRyxFQUFFLHdEQUFNO0FBQzlCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1EQUFtRDs7QUFFbkQsOEJBQThCO0FBQzlCOztBQUVBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0Esd0JBQXdCLHNEQUFHLEdBQUc7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsc0RBQUcsR0FBRztBQUN6QjtBQUNBOztBQUVBLFFBQVEsMERBQU8sOEJBQThCLDJEQUFRO0FBQ3JEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxnQkFBZ0Isc0RBQUc7QUFDbkI7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxpQ0FBaUM7O0FBRWpDO0FBQ0E7QUFDQSxlQUFlLHdGQUFpQztBQUNoRDs7QUFFQTtBQUNBLE1BQU0sdURBQUk7QUFDVjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLOzs7QUFHTCxrQ0FBa0Msd0VBQWlCLGlFQUFpRSwwREFBVTtBQUM5SDs7QUFFQTtBQUNBLGtCQUFrQix3RkFBaUM7QUFDbkQ7QUFDQTs7QUFFQSxjQUFjLGtEQUFJO0FBQ2xCO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1lbGVtZW50QDAuNS4wQEBhbnR2L2c2LWVsZW1lbnQvZXMvZWRnZXMvcG9seWxpbmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgbWl4LCBlYWNoLCBpc0FycmF5LCBpc1N0cmluZyB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgcmVnaXN0ZXJFZGdlLCBVdGlsLCBCYXNlR2xvYmFsIGFzIEdsb2JhbCB9IGZyb20gJ0BhbnR2L2c2LWNvcmUnO1xuaW1wb3J0IHsgZ2V0UGF0aFdpdGhCb3JkZXJSYWRpdXNCeVBvbHlsaW5lLCBnZXRQb2x5bGluZVBvaW50cyB9IGZyb20gJy4vcG9seWxpbmUtdXRpbCc7XG5pbXBvcnQgeyBwYXRoRmluZGVyIH0gZnJvbSAnLi9yb3V0ZXInOyAvLyDmipjnur9cblxucmVnaXN0ZXJFZGdlKCdwb2x5bGluZScsIHtcbiAgb3B0aW9uczoge1xuICAgIGNvbG9yOiBHbG9iYWwuZGVmYXVsdEVkZ2UuY29sb3IsXG4gICAgc2l6ZTogR2xvYmFsLmRlZmF1bHRFZGdlLnNpemUsXG4gICAgc3R5bGU6IHtcbiAgICAgIHJhZGl1czogMCxcbiAgICAgIG9mZnNldDogMTUsXG4gICAgICB4OiAwLFxuICAgICAgeTogMCxcbiAgICAgIHN0cm9rZTogR2xvYmFsLmRlZmF1bHRFZGdlLnN0eWxlLnN0cm9rZSxcbiAgICAgIGxpbmVBcHBlbmRXaWR0aDogR2xvYmFsLmRlZmF1bHRFZGdlLnN0eWxlLmxpbmVBcHBlbmRXaWR0aFxuICAgIH0sXG4gICAgLy8g5paH5pys5qC35byP6YWN572uXG4gICAgbGFiZWxDZmc6IHtcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIGZpbGw6IEdsb2JhbC5lZGdlTGFiZWwuc3R5bGUuZmlsbCxcbiAgICAgICAgZm9udFNpemU6IEdsb2JhbC5lZGdlTGFiZWwuc3R5bGUuZm9udFNpemUsXG4gICAgICAgIGZvbnRGYW1pbHk6IEdsb2JhbC53aW5kb3dGb250RmFtaWx5XG4gICAgICB9XG4gICAgfSxcbiAgICByb3V0ZUNmZzoge1xuICAgICAgb2JzdGFjbGVzOiBbXSxcbiAgICAgIG1heEFsbG93ZWREaXJlY3Rpb25DaGFuZ2U6IE1hdGguUEksXG4gICAgICBtYXhpbXVtTG9vcHM6IDUwMCxcbiAgICAgIGdyaWRTaXplOiAxMCAvLyDmjIflrprnsr7luqZcblxuICAgIH0sXG4gICAgc3RhdGVTdHlsZXM6IF9fYXNzaWduKHt9LCBHbG9iYWwuZWRnZVN0YXRlU3R5bGVzKVxuICB9LFxuICBzaGFwZVR5cGU6ICdwb2x5bGluZScsXG4gIC8vIOaWh+acrOS9jee9rlxuICBsYWJlbFBvc2l0aW9uOiAnY2VudGVyJyxcbiAgZHJhd1NoYXBlOiBmdW5jdGlvbiBkcmF3U2hhcGUoY2ZnLCBncm91cCkge1xuICAgIHZhciBzaGFwZVN0eWxlID0gdGhpcy5nZXRTaGFwZVN0eWxlKGNmZyk7XG4gICAgaWYgKHNoYXBlU3R5bGUucmFkaXVzID09PSAwKSBkZWxldGUgc2hhcGVTdHlsZS5yYWRpdXM7XG4gICAgdmFyIGtleVNoYXBlID0gZ3JvdXAuYWRkU2hhcGUoJ3BhdGgnLCB7XG4gICAgICBjbGFzc05hbWU6ICdlZGdlLXNoYXBlJyxcbiAgICAgIG5hbWU6ICdlZGdlLXNoYXBlJyxcbiAgICAgIGF0dHJzOiBzaGFwZVN0eWxlXG4gICAgfSk7XG4gICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2VkZ2Utc2hhcGUnXSA9IGtleVNoYXBlO1xuICAgIHJldHVybiBrZXlTaGFwZTtcbiAgfSxcbiAgZ2V0U2hhcGVTdHlsZTogZnVuY3Rpb24gZ2V0U2hhcGVTdHlsZShjZmcpIHtcbiAgICB2YXIgZGVmYXVsdFN0eWxlID0gdGhpcy5vcHRpb25zLnN0eWxlO1xuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yXG4gICAgfTtcbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwgc3Ryb2tlU3R5bGUsIGNmZy5zdHlsZSk7XG4gICAgY2ZnID0gdGhpcy5nZXRQYXRoUG9pbnRzKGNmZyk7XG4gICAgdGhpcy5yYWRpdXMgPSBzdHlsZS5yYWRpdXM7XG4gICAgdGhpcy5vZmZzZXQgPSBzdHlsZS5vZmZzZXQ7XG4gICAgdmFyIHN0YXJ0UG9pbnQgPSBjZmcuc3RhcnRQb2ludCxcbiAgICAgICAgZW5kUG9pbnQgPSBjZmcuZW5kUG9pbnQ7XG4gICAgdmFyIGNvbnRyb2xQb2ludHMgPSB0aGlzLmdldENvbnRyb2xQb2ludHMoY2ZnKTtcbiAgICB2YXIgcG9pbnRzID0gW3N0YXJ0UG9pbnRdOyAvLyDmt7vliqDotbflp4vngrlcbiAgICAvLyDmt7vliqDmjqfliLbngrlcblxuICAgIGlmIChjb250cm9sUG9pbnRzKSB7XG4gICAgICBwb2ludHMgPSBwb2ludHMuY29uY2F0KGNvbnRyb2xQb2ludHMpO1xuICAgIH0gLy8g5re75Yqg57uT5p2f54K5XG5cblxuICAgIHBvaW50cy5wdXNoKGVuZFBvaW50KTtcbiAgICB2YXIgc291cmNlID0gY2ZnLnNvdXJjZU5vZGU7XG4gICAgdmFyIHRhcmdldCA9IGNmZy50YXJnZXROb2RlO1xuICAgIHZhciByYWRpdXMgPSBzdHlsZS5yYWRpdXM7XG4gICAgdmFyIGRlZmF1bHRSb3V0ZUNmZyA9IHRoaXMub3B0aW9ucy5yb3V0ZUNmZztcbiAgICB2YXIgcm91dGVDZmcgPSBtaXgoe30sIGRlZmF1bHRSb3V0ZUNmZywgY2ZnLnJvdXRlQ2ZnKTtcbiAgICByb3V0ZUNmZy5vZmZzZXQgPSBzdHlsZS5vZmZzZXQ7XG4gICAgdmFyIHBhdGggPSB0aGlzLmdldFBhdGgocG9pbnRzLCBzb3VyY2UsIHRhcmdldCwgcmFkaXVzLCByb3V0ZUNmZyk7XG5cbiAgICBpZiAoaXNBcnJheShwYXRoKSAmJiBwYXRoLmxlbmd0aCA8PSAxIHx8IGlzU3RyaW5nKHBhdGgpICYmIHBhdGguaW5kZXhPZignTCcpID09PSAtMSkge1xuICAgICAgcGF0aCA9ICdNMCAwLCBMMCAwJztcbiAgICB9XG5cbiAgICBpZiAoaXNOYU4oc3RhcnRQb2ludC54KSB8fCBpc05hTihzdGFydFBvaW50LnkpIHx8IGlzTmFOKGVuZFBvaW50LngpIHx8IGlzTmFOKGVuZFBvaW50LnkpKSB7XG4gICAgICBwYXRoID0gJ00wIDAsIEwwIDAnO1xuICAgIH1cblxuICAgIHZhciBhdHRycyA9IG1peCh7fSwgR2xvYmFsLmRlZmF1bHRFZGdlLnN0eWxlLCBzdHlsZSwge1xuICAgICAgbGluZVdpZHRoOiBjZmcuc2l6ZSxcbiAgICAgIHBhdGg6IHBhdGhcbiAgICB9KTtcbiAgICByZXR1cm4gYXR0cnM7XG4gIH0sXG4gIHVwZGF0ZVNoYXBlU3R5bGU6IGZ1bmN0aW9uIHVwZGF0ZVNoYXBlU3R5bGUoY2ZnLCBpdGVtKSB7XG4gICAgdmFyIGdyb3VwID0gaXRlbS5nZXRDb250YWluZXIoKTtcbiAgICBpZiAoIWl0ZW0uaXNWaXNpYmxlKCkpIHJldHVybjtcbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvclxuICAgIH07XG4gICAgdmFyIHNoYXBlID0gZ3JvdXBbJ3NoYXBlTWFwJ11bJ2VkZ2Utc2hhcGUnXSB8fCBncm91cC5maW5kKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ2NsYXNzTmFtZScpID09PSAnZWRnZS1zaGFwZSc7XG4gICAgfSkgfHwgaXRlbS5nZXRLZXlTaGFwZSgpO1xuICAgIHZhciBzaXplID0gY2ZnLnNpemU7XG4gICAgY2ZnID0gdGhpcy5nZXRQYXRoUG9pbnRzKGNmZyk7XG4gICAgdmFyIHN0YXJ0UG9pbnQgPSBjZmcuc3RhcnRQb2ludCxcbiAgICAgICAgZW5kUG9pbnQgPSBjZmcuZW5kUG9pbnQ7XG4gICAgdmFyIGNvbnRyb2xQb2ludHMgPSB0aGlzLmdldENvbnRyb2xQb2ludHMoY2ZnKTsgLy8gfHwgY2ZnLmNvbnRyb2xQb2ludHM7XG5cbiAgICB2YXIgcG9pbnRzID0gW3N0YXJ0UG9pbnRdOyAvLyDmt7vliqDotbflp4vngrlcbiAgICAvLyDmt7vliqDmjqfliLbngrlcblxuICAgIGlmIChjb250cm9sUG9pbnRzKSB7XG4gICAgICBwb2ludHMgPSBwb2ludHMuY29uY2F0KGNvbnRyb2xQb2ludHMpO1xuICAgIH0gLy8g5re75Yqg57uT5p2f54K5XG5cblxuICAgIHBvaW50cy5wdXNoKGVuZFBvaW50KTtcbiAgICB2YXIgY3VycmVudEF0dHIgPSBzaGFwZS5hdHRyKCk7XG4gICAgdmFyIHByZXZpb3VzU3R5bGUgPSBtaXgoe30sIHN0cm9rZVN0eWxlLCBjdXJyZW50QXR0ciwgY2ZnLnN0eWxlKTtcbiAgICB2YXIgc291cmNlID0gY2ZnLnNvdXJjZU5vZGU7XG4gICAgdmFyIHRhcmdldCA9IGNmZy50YXJnZXROb2RlO1xuICAgIHZhciByYWRpdXMgPSBwcmV2aW91c1N0eWxlLnJhZGl1cztcbiAgICB2YXIgZGVmYXVsdFJvdXRlQ2ZnID0gdGhpcy5vcHRpb25zLnJvdXRlQ2ZnO1xuICAgIHZhciByb3V0ZUNmZyA9IG1peCh7fSwgZGVmYXVsdFJvdXRlQ2ZnLCBjZmcucm91dGVDZmcpO1xuICAgIHJvdXRlQ2ZnLm9mZnNldCA9IHByZXZpb3VzU3R5bGUub2Zmc2V0O1xuICAgIHZhciBwYXRoID0gdGhpcy5nZXRQYXRoKHBvaW50cywgc291cmNlLCB0YXJnZXQsIHJhZGl1cywgcm91dGVDZmcpO1xuXG4gICAgaWYgKGlzQXJyYXkocGF0aCkgJiYgcGF0aC5sZW5ndGggPD0gMSB8fCBpc1N0cmluZyhwYXRoKSAmJiBwYXRoLmluZGV4T2YoJ0wnKSA9PT0gLTEpIHtcbiAgICAgIHBhdGggPSAnTTAgMCwgTDAgMCc7XG4gICAgfVxuXG4gICAgaWYgKGlzTmFOKHN0YXJ0UG9pbnQueCkgfHwgaXNOYU4oc3RhcnRQb2ludC55KSB8fCBpc05hTihlbmRQb2ludC54KSB8fCBpc05hTihlbmRQb2ludC55KSkge1xuICAgICAgcGF0aCA9ICdNMCAwLCBMMCAwJztcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudEF0dHIuZW5kQXJyb3cgJiYgcHJldmlvdXNTdHlsZS5lbmRBcnJvdyA9PT0gZmFsc2UpIHtcbiAgICAgIGNmZy5zdHlsZS5lbmRBcnJvdyA9IHtcbiAgICAgICAgcGF0aDogJydcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRBdHRyLnN0YXJ0QXJyb3cgJiYgcHJldmlvdXNTdHlsZS5zdGFydEFycm93ID09PSBmYWxzZSkge1xuICAgICAgY2ZnLnN0eWxlLnN0YXJ0QXJyb3cgPSB7XG4gICAgICAgIHBhdGg6ICcnXG4gICAgICB9O1xuICAgIH1cblxuICAgIHZhciBzdHlsZSA9IG1peChzdHJva2VTdHlsZSwgc2hhcGUuYXR0cigpLCB7XG4gICAgICBsaW5lV2lkdGg6IHNpemUsXG4gICAgICBwYXRoOiBwYXRoXG4gICAgfSwgY2ZnLnN0eWxlKTtcblxuICAgIGlmIChzaGFwZSkge1xuICAgICAgc2hhcGUuYXR0cihzdHlsZSk7XG4gICAgfVxuICB9LFxuICBnZXRQYXRoOiBmdW5jdGlvbiBnZXRQYXRoKHBvaW50cywgc291cmNlLCB0YXJnZXQsIHJhZGl1cywgcm91dGVDZmcpIHtcbiAgICB2YXIgb2Zmc2V0ID0gcm91dGVDZmcub2Zmc2V0LFxuICAgICAgICBzaW1wbGUgPSByb3V0ZUNmZy5zaW1wbGU7IC8vIOaMh+WumuS6huaOp+WItueCuVxuXG4gICAgaWYgKCFvZmZzZXQgfHwgcG9pbnRzLmxlbmd0aCA+IDIpIHtcbiAgICAgIGlmIChyYWRpdXMpIHtcbiAgICAgICAgcmV0dXJuIGdldFBhdGhXaXRoQm9yZGVyUmFkaXVzQnlQb2x5bGluZShwb2ludHMsIHJhZGl1cyk7XG4gICAgICB9XG5cbiAgICAgIHZhciBwYXRoQXJyYXlfMSA9IFtdO1xuICAgICAgZWFjaChwb2ludHMsIGZ1bmN0aW9uIChwb2ludCwgaW5kZXgpIHtcbiAgICAgICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICAgICAgcGF0aEFycmF5XzEucHVzaChbJ00nLCBwb2ludC54LCBwb2ludC55XSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGF0aEFycmF5XzEucHVzaChbJ0wnLCBwb2ludC54LCBwb2ludC55XSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHBhdGhBcnJheV8xO1xuICAgIH0gLy8g5pyq5oyH5a6a5o6n5Yi254K5XG5cblxuICAgIHZhciBwb2x5bGluZVBvaW50cyA9IHNpbXBsZSA/IGdldFBvbHlsaW5lUG9pbnRzKHBvaW50c1twb2ludHMubGVuZ3RoIC0gMV0sIHBvaW50c1swXSwgdGFyZ2V0LCBzb3VyY2UsIG9mZnNldCkgOiBwYXRoRmluZGVyKHBvaW50c1swXSwgcG9pbnRzW3BvaW50cy5sZW5ndGggLSAxXSwgc291cmNlLCB0YXJnZXQsIHJvdXRlQ2ZnKTtcbiAgICBpZiAoIXBvbHlsaW5lUG9pbnRzIHx8ICFwb2x5bGluZVBvaW50cy5sZW5ndGgpIHJldHVybiAnTTAgMCwgTDAgMCc7XG5cbiAgICBpZiAocmFkaXVzKSB7XG4gICAgICB2YXIgcmVzXzEgPSBnZXRQYXRoV2l0aEJvcmRlclJhZGl1c0J5UG9seWxpbmUocG9seWxpbmVQb2ludHMsIHJhZGl1cyk7XG4gICAgICByZXR1cm4gcmVzXzE7XG4gICAgfVxuXG4gICAgdmFyIHJlcyA9IFV0aWwucG9pbnRzVG9Qb2x5Z29uKHBvbHlsaW5lUG9pbnRzKTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG59LCAnc2luZ2xlLWVkZ2UnKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/edges/polyline.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/edges/router.js":
/*!**********************************************************************************!*\
!*** ./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/edges/router.js ***!
\**********************************************************************************/
/*! exports provided: octolinearCfg, pathFinder */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"octolinearCfg\", function() { return octolinearCfg; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathFinder\", function() { return pathFinder; });\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _polyline_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./polyline-util */ \"./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/edges/polyline-util.js\");\n/**\n * 通过配置不同的 costFunc, distFunc, constraints 可以得到不同效果的 router\n * generalRouter: 不限制搜索时的移动方向,避开障碍即可\n * orthogonal: 线必须沿着竖直或水平方向(4个方向)\n * octolinearRouter: 线沿着竖直、水平、对角线方向(8个方向)\n */\n\n\n\n\nvar manhattanDist = function manhattanDist(p1, p2) {\n return Math.abs(p1.x - p2.x) + Math.abs(p1.y - p2.y);\n};\n\nvar eucliDist = function eucliDist(p1, p2) {\n return Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2));\n};\n\nvar straightPath = function straightPath(start, end) {\n // console.warn('fallbackRoute: straight path');\n return [start, end];\n};\n\nvar simplePolyline = function simplePolyline(start, end, startNode, endNode, cfg) {\n return Object(_polyline_util__WEBPACK_IMPORTED_MODULE_2__[\"simplifyPolyline\"])(Object(_polyline_util__WEBPACK_IMPORTED_MODULE_2__[\"getPolylinePoints\"])(start, end, startNode, endNode, cfg.offset));\n}; // getPolylinePoints\n\n\nvar defaultCfg = {\n offset: 20,\n maxAllowedDirectionChange: Math.PI / 2,\n maximumLoops: 2000,\n gridSize: 10,\n directions: [{\n stepX: 1,\n stepY: 0\n }, {\n stepX: -1,\n stepY: 0\n }, {\n stepX: 0,\n stepY: 1\n }, {\n stepX: 0,\n stepY: -1\n } // top\n ],\n\n get penalties() {\n return {\n 0: 0,\n 45: this.gridSize / 2,\n 90: this.gridSize / 2\n };\n },\n\n distFunc: manhattanDist,\n fallbackRoute: simplePolyline\n};\nvar octolinearCfg = {\n maxAllowedDirectionChange: Math.PI / 4,\n // 8 个方向: 上下左右 + 45度斜线方向\n directions: [{\n stepX: 1,\n stepY: 0\n }, {\n stepX: 1,\n stepY: 1\n }, {\n stepX: 0,\n stepY: 1\n }, {\n stepX: -1,\n stepY: 1\n }, {\n stepX: -1,\n stepY: 0\n }, {\n stepX: -1,\n stepY: -1\n }, {\n stepX: 0,\n stepY: -1\n }, {\n stepX: 1,\n stepY: -1\n }],\n distFunc: eucliDist,\n fallbackRoute: straightPath\n};\n\nvar pos2GridIx = function pos2GridIx(pos, gridSize) {\n var gridIx = Math.round(Math.abs(pos / gridSize));\n var sign = pos < 0 ? -1 : 1;\n return gridIx < 0 ? 0 : sign * gridIx;\n};\n\nvar getObstacleMap = function getObstacleMap(items, gridSize, offset) {\n var map = {};\n items.forEach(function (item) {\n // create-edge 时,当边类型为 polyline 时 endNode 为 null\n if (!item) return;\n var bbox = Object(_polyline_util__WEBPACK_IMPORTED_MODULE_2__[\"getExpandedBBox\"])(item.getBBox(), offset);\n\n for (var x = pos2GridIx(bbox.minX, gridSize); x <= pos2GridIx(bbox.maxX, gridSize); x += 1) {\n for (var y = pos2GridIx(bbox.minY, gridSize); y <= pos2GridIx(bbox.maxY, gridSize); y += 1) {\n map[x + \"|||\" + y] = true;\n }\n }\n });\n return map;\n};\n/**\n * 方向角:计算从 p1 到 p2 的射线与水平线形成的夹角度数(顺时针从右侧0°转到该射线的角度)\n * @param p1 PolyPoint\n * @param p2 PolyPoint\n */\n\n\nvar getDirectionAngle = function getDirectionAngle(p1, p2) {\n var deltaX = p2.x - p1.x;\n var deltaY = p2.y - p1.y;\n\n if (deltaX || deltaY) {\n return Math.atan2(deltaY, deltaX);\n }\n\n return 0;\n};\n/**\n * 方向角的改变,取小于180度角\n * @param angle1\n * @param angle2\n */\n\n\nvar getAngleDiff = function getAngleDiff(angle1, angle2) {\n var directionChange = Math.abs(angle1 - angle2);\n return directionChange > Math.PI ? 2 * Math.PI - directionChange : directionChange; // return directionChange > 180 ? 360 - directionChange : directionChange;\n}; // Path finder //\n\n\nvar estimateCost = function estimateCost(from, endPoints, distFunc) {\n var min = Infinity;\n\n for (var i = 0, len = endPoints.length; i < len; i++) {\n var cost = distFunc(from, endPoints[i]);\n\n if (cost < min) {\n min = cost;\n }\n }\n\n return min;\n}; // 计算考虑 offset 后的 BBox 上的连接点\n\n\nvar getBoxPoints = function getBoxPoints(point, // 被 gridSize 格式化后的位置(anchorPoint)\noriPoint, // 未被 gridSize 格式化的位置(anchorPoint)\nnode, // 原始节点,用于获取 bbox\nanotherPoint, // 另一端被 gridSize 格式化后的位置\ncfg) {\n var points = []; // create-edge 生成边的过程中,endNode 为 null\n\n if (!node) {\n return [point];\n }\n\n var directions = cfg.directions,\n offset = cfg.offset;\n var bbox = node.getBBox();\n var isInside = oriPoint.x > bbox.minX && oriPoint.x < bbox.maxX && oriPoint.y > bbox.minY && oriPoint.y < bbox.maxY;\n var expandBBox = Object(_polyline_util__WEBPACK_IMPORTED_MODULE_2__[\"getExpandedBBox\"])(bbox, offset);\n\n for (var i in expandBBox) {\n expandBBox[i] = pos2GridIx(expandBBox[i], cfg.gridSize);\n }\n\n if (isInside) {\n // 如果 anchorPoint 在节点内部,允许第一段线穿过节点\n for (var _i = 0, directions_1 = directions; _i < directions_1.length; _i++) {\n var dir = directions_1[_i];\n var bounds = [[{\n x: expandBBox.minX,\n y: expandBBox.minY\n }, {\n x: expandBBox.maxX,\n y: expandBBox.minY\n }], [{\n x: expandBBox.minX,\n y: expandBBox.minY\n }, {\n x: expandBBox.minX,\n y: expandBBox.maxY\n }], [{\n x: expandBBox.maxX,\n y: expandBBox.minY\n }, {\n x: expandBBox.maxX,\n y: expandBBox.maxY\n }], [{\n x: expandBBox.minX,\n y: expandBBox.maxY\n }, {\n x: expandBBox.maxX,\n y: expandBBox.maxY\n }]];\n\n for (var i = 0; i < 4; i++) {\n var boundLine = bounds[i];\n var insterctP_1 = _antv_g6_core__WEBPACK_IMPORTED_MODULE_0__[\"Util\"].getLineIntersect(point, {\n x: point.x + dir.stepX * expandBBox.width,\n y: point.y + dir.stepY * expandBBox.height\n }, boundLine[0], boundLine[1]);\n\n if (insterctP_1 && !Object(_polyline_util__WEBPACK_IMPORTED_MODULE_2__[\"isSegmentCrossingBBox\"])(point, insterctP_1, bbox)) {\n insterctP_1.id = insterctP_1.x + \"|||\" + insterctP_1.y;\n points.push(insterctP_1);\n }\n }\n }\n\n return points;\n } // 如果 anchorPoint 在节点上,只有一个可选方向\n\n\n var insterctP = Object(_polyline_util__WEBPACK_IMPORTED_MODULE_2__[\"getExpandedBBoxPoint\"])(expandBBox, point, anotherPoint);\n insterctP.id = insterctP.x + \"|||\" + insterctP.y;\n return [insterctP];\n};\n\nvar getDirectionChange = function getDirectionChange(current, neighbor, cameFrom, scaleStartPoint) {\n var directionAngle = getDirectionAngle(current, neighbor);\n\n if (!cameFrom[current.id]) {\n var startAngle = getDirectionAngle(scaleStartPoint, current);\n return getAngleDiff(startAngle, directionAngle);\n }\n\n var prevDirectionAngle = getDirectionAngle({\n x: cameFrom[current.id].x,\n y: cameFrom[current.id].y\n }, current);\n return getAngleDiff(prevDirectionAngle, directionAngle);\n};\n\nvar getControlPoints = function getControlPoints(current, cameFrom, scaleStartPoint, endPoint, startPoint, scaleEndPoint, gridSize) {\n var controlPoints = [endPoint];\n var currentId = current.id;\n var currentX = current.x;\n var currentY = current.y;\n var lastPoint = {\n x: currentX,\n y: currentY,\n id: currentId\n };\n\n if (getDirectionChange(lastPoint, scaleEndPoint, cameFrom, scaleStartPoint)) {\n // if (scaleEndPoint.x === endPoint.x && scaleEndPoint.y === endPoint.y)\n // controlPoints.unshift({\n // x: endPoint.x,\n // y: endPoint.y\n // })\n // else\n // controlPoints.unshift({\n // x: lastPoint.x * gridSize,\n // y: lastPoint.y * gridSize,\n // });\n controlPoints.unshift({\n x: scaleEndPoint.x === endPoint.x ? endPoint.x : lastPoint.x * gridSize,\n y: scaleEndPoint.y === endPoint.y ? endPoint.y : lastPoint.y * gridSize\n });\n }\n\n while (cameFrom[currentId] && cameFrom[currentId].id !== currentId) {\n var point = {\n x: currentX,\n y: currentY,\n id: currentId\n };\n var preId = cameFrom[currentId].id;\n var preX = cameFrom[currentId].x;\n var preY = cameFrom[currentId].y;\n var prePoint = {\n x: preX,\n y: preY,\n id: preId\n };\n var directionChange = getDirectionChange(prePoint, point, cameFrom, scaleStartPoint);\n\n if (directionChange) {\n // if (prePoint.x === point.x && prePoint.y === point.y)\n // controlPoints.unshift({\n // x: controlPoints[0].x,\n // y: controlPoints[0].y\n // })\n // else\n // controlPoints.unshift({\n // x: prePoint.x * gridSize,\n // y: prePoint.y * gridSize,\n // });\n controlPoints.unshift({\n x: prePoint.x === point.x ? controlPoints[0].x : prePoint.x * gridSize,\n y: prePoint.y === point.y ? controlPoints[0].y : prePoint.y * gridSize\n });\n }\n\n currentId = preId;\n currentX = preX;\n currentY = preY;\n } // 和startNode对齐\n\n\n var firstPoint = {\n x: currentX,\n y: currentY,\n id: currentId\n }; // if (firstPoint.x === scaleStartPoint.x && firstPoint.y === scaleStartPoint.y) {\n // controlPoints[0].x = startPoint.x;\n // controlPoints[0].y = startPoint.y;\n // }\n\n controlPoints[0].x = firstPoint.x === scaleStartPoint.x ? startPoint.x : controlPoints[0].x;\n controlPoints[0].y = firstPoint.y === scaleStartPoint.y ? startPoint.y : controlPoints[0].y;\n controlPoints.unshift(startPoint);\n return controlPoints;\n};\n\nvar pathFinder = function pathFinder(startPoint, endPoint, startNode, endNode, routerCfg) {\n if (isNaN(startPoint.x) || isNaN(endPoint.x)) return [];\n var cfg = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])(defaultCfg, routerCfg);\n cfg.obstacles = cfg.obstacles || [];\n var gridSize = cfg.gridSize;\n var map = getObstacleMap(cfg.obstacles.concat([startNode, endNode]), gridSize, cfg.offset);\n var scaleStartPoint = {\n x: pos2GridIx(startPoint.x, gridSize),\n y: pos2GridIx(startPoint.y, gridSize)\n };\n var scaleEndPoint = {\n x: pos2GridIx(endPoint.x, gridSize),\n y: pos2GridIx(endPoint.y, gridSize)\n };\n startPoint.id = scaleStartPoint.x + \"|||\" + scaleStartPoint.y;\n endPoint.id = scaleEndPoint.x + \"|||\" + scaleEndPoint.y;\n var startPoints = getBoxPoints(scaleStartPoint, startPoint, startNode, scaleEndPoint, cfg);\n var endPoints = getBoxPoints(scaleEndPoint, endPoint, endNode, scaleStartPoint, cfg);\n startPoints.forEach(function (point) {\n delete map[point.id];\n });\n endPoints.forEach(function (point) {\n delete map[point.id];\n });\n var openSet = {};\n var closedSet = {};\n var cameFrom = {}; // 从起点到当前点已产生的 cost, default: Infinity\n\n var gScore = {}; // 起点经过当前点到达终点预估的 cost, default: Infinity\n\n var fScore = {}; // initialize\n\n for (var i = 0; i < startPoints.length; i++) {\n var firstStep = startPoints[i];\n openSet[firstStep.id] = firstStep; // cameFrom[firstStep.id] = startPoint.id;\n\n gScore[firstStep.id] = 0;\n fScore[firstStep.id] = estimateCost(firstStep, endPoints, cfg.distFunc);\n }\n\n var remainLoops = cfg.maximumLoops;\n var penalties = cfg.penalties;\n var current, curCost, direction, neighbor, neighborCost, costFromStart, directionChange;\n\n while (Object.keys(openSet).length > 0 && remainLoops > 0) {\n current = undefined;\n curCost = Infinity; // 找到 openSet 中 fScore 最小的点\n\n Object.keys(openSet).forEach(function (key) {\n var id = openSet[key].id;\n\n if (fScore[id] <= curCost) {\n curCost = fScore[id];\n current = openSet[id];\n }\n });\n if (!current) break; // 如果 fScore 最小的点就是终点\n\n if (endPoints.findIndex(function (point) {\n return point.x === current.x && point.y === current.y;\n }) > -1) {\n return getControlPoints(current, cameFrom, scaleStartPoint, endPoint, startPoint, scaleEndPoint, gridSize);\n }\n\n delete openSet[current.id];\n closedSet[current.id] = true; // 获取符合条件的下一步的候选连接点\n // 沿候选方向走一步\n\n for (var i = 0; i < cfg.directions.length; i++) {\n direction = cfg.directions[i];\n neighbor = {\n x: current.x + direction.stepX,\n y: current.y + direction.stepY,\n id: Math.round(current.x) + direction.stepX + \"|||\" + (Math.round(current.y) + direction.stepY)\n };\n if (closedSet[neighbor.id]) continue;\n directionChange = getDirectionChange(current, neighbor, cameFrom, scaleStartPoint);\n if (directionChange > cfg.maxAllowedDirectionChange) continue;\n if (map[neighbor.id]) continue; // 如果交叉则跳过\n // 将候选点加入 openSet, 并计算每个候选点的 cost\n\n if (!openSet[neighbor.id]) {\n openSet[neighbor.id] = neighbor;\n }\n\n neighborCost = cfg.distFunc(current, neighbor) + (isNaN(penalties[directionChange]) ? gridSize : penalties[directionChange]);\n costFromStart = gScore[current.id] + neighborCost;\n\n if (gScore[neighbor.id] && costFromStart >= gScore[neighbor.id]) {\n continue;\n }\n\n cameFrom[neighbor.id] = current;\n gScore[neighbor.id] = costFromStart;\n fScore[neighbor.id] = costFromStart + estimateCost(neighbor, endPoints, cfg.distFunc);\n }\n\n remainLoops -= 1;\n }\n\n return cfg.fallbackRoute(startPoint, endPoint, startNode, endNode, cfg);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWVsZW1lbnRAMC41LjBAQGFudHYvZzYtZWxlbWVudC9lcy9lZGdlcy9yb3V0ZXIuanM/YWUxNSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDcUM7QUFDQTtBQUMrRjs7QUFFcEk7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBQVMsdUVBQWdCLENBQUMsd0VBQWlCO0FBQzNDLEVBQUU7OztBQUdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzRUFBZTs7QUFFOUIsaURBQWlELHNDQUFzQztBQUN2RixtREFBbUQsc0NBQXNDO0FBQ3pGO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBLHFGQUFxRjtBQUNyRixFQUFFOzs7QUFHRjtBQUNBOztBQUVBLHlDQUF5QyxTQUFTO0FBQ2xEOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsRUFBRTs7O0FBR0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjs7QUFFbEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHNFQUFlOztBQUVsQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLCtDQUErQywwQkFBMEI7QUFDekU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87O0FBRVAscUJBQXFCLE9BQU87QUFDNUI7QUFDQSwwQkFBMEIsa0RBQUk7QUFDOUI7QUFDQTtBQUNBLFNBQVM7O0FBRVQsNEJBQTRCLDRFQUFxQjtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7O0FBR0gsa0JBQWtCLDJFQUFvQjtBQUN0QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBLFlBQVksMERBQU87QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxvQkFBb0I7O0FBRXBCLGtCQUFrQjs7QUFFbEIsa0JBQWtCOztBQUVsQixpQkFBaUIsd0JBQXdCO0FBQ3pDO0FBQ0Esc0NBQXNDOztBQUV0QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1QkFBdUI7O0FBRXZCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsd0JBQXdCOztBQUV4QjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSxpQ0FBaUM7QUFDakM7O0FBRUEsbUJBQW1CLDJCQUEyQjtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtZWxlbWVudEAwLjUuMEBAYW50di9nNi1lbGVtZW50L2VzL2VkZ2VzL3JvdXRlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog6YCa6L+H6YWN572u5LiN5ZCM55qEIGNvc3RGdW5jLCBkaXN0RnVuYywgY29uc3RyYWludHMg5Y+v5Lul5b6X5Yiw5LiN5ZCM5pWI5p6c55qEIHJvdXRlclxuICogZ2VuZXJhbFJvdXRlcjog5LiN6ZmQ5Yi25pCc57Si5pe255qE56e75Yqo5pa55ZCR77yM6YG/5byA6Zqc56KN5Y2z5Y+vXG4gKiBvcnRob2dvbmFsOiDnur/lv4Xpobvmsr/nnYDnq5bnm7TmiJbmsLTlubPmlrnlkJHvvIg05Liq5pa55ZCR77yJXG4gKiBvY3RvbGluZWFyUm91dGVyOiDnur/msr/nnYDnq5bnm7TjgIHmsLTlubPjgIHlr7nop5Lnur/mlrnlkJHvvIg45Liq5pa55ZCR77yJXG4gKi9cbmltcG9ydCB7IFV0aWwgfSBmcm9tICdAYW50di9nNi1jb3JlJztcbmltcG9ydCB7IGRlZXBNaXggfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCB7IGdldEV4cGFuZGVkQkJveCwgZ2V0RXhwYW5kZWRCQm94UG9pbnQsIGdldFBvbHlsaW5lUG9pbnRzLCBzaW1wbGlmeVBvbHlsaW5lLCBpc1NlZ21lbnRDcm9zc2luZ0JCb3ggfSBmcm9tICcuL3BvbHlsaW5lLXV0aWwnO1xuXG52YXIgbWFuaGF0dGFuRGlzdCA9IGZ1bmN0aW9uIG1hbmhhdHRhbkRpc3QocDEsIHAyKSB7XG4gIHJldHVybiBNYXRoLmFicyhwMS54IC0gcDIueCkgKyBNYXRoLmFicyhwMS55IC0gcDIueSk7XG59O1xuXG52YXIgZXVjbGlEaXN0ID0gZnVuY3Rpb24gZXVjbGlEaXN0KHAxLCBwMikge1xuICByZXR1cm4gTWF0aC5zcXJ0KE1hdGgucG93KHAxLnggLSBwMi54LCAyKSArIE1hdGgucG93KHAxLnkgLSBwMi55LCAyKSk7XG59O1xuXG52YXIgc3RyYWlnaHRQYXRoID0gZnVuY3Rpb24gc3RyYWlnaHRQYXRoKHN0YXJ0LCBlbmQpIHtcbiAgLy8gY29uc29sZS53YXJuKCdmYWxsYmFja1JvdXRlOiBzdHJhaWdodCBwYXRoJyk7XG4gIHJldHVybiBbc3RhcnQsIGVuZF07XG59O1xuXG52YXIgc2ltcGxlUG9seWxpbmUgPSBmdW5jdGlvbiBzaW1wbGVQb2x5bGluZShzdGFydCwgZW5kLCBzdGFydE5vZGUsIGVuZE5vZGUsIGNmZykge1xuICByZXR1cm4gc2ltcGxpZnlQb2x5bGluZShnZXRQb2x5bGluZVBvaW50cyhzdGFydCwgZW5kLCBzdGFydE5vZGUsIGVuZE5vZGUsIGNmZy5vZmZzZXQpKTtcbn07IC8vIGdldFBvbHlsaW5lUG9pbnRzXG5cblxudmFyIGRlZmF1bHRDZmcgPSB7XG4gIG9mZnNldDogMjAsXG4gIG1heEFsbG93ZWREaXJlY3Rpb25DaGFuZ2U6IE1hdGguUEkgLyAyLFxuICBtYXhpbXVtTG9vcHM6IDIwMDAsXG4gIGdyaWRTaXplOiAxMCxcbiAgZGlyZWN0aW9uczogW3tcbiAgICBzdGVwWDogMSxcbiAgICBzdGVwWTogMFxuICB9LCB7XG4gICAgc3RlcFg6IC0xLFxuICAgIHN0ZXBZOiAwXG4gIH0sIHtcbiAgICBzdGVwWDogMCxcbiAgICBzdGVwWTogMVxuICB9LCB7XG4gICAgc3RlcFg6IDAsXG4gICAgc3RlcFk6IC0xXG4gIH0gLy8gdG9wXG4gIF0sXG5cbiAgZ2V0IHBlbmFsdGllcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgMDogMCxcbiAgICAgIDQ1OiB0aGlzLmdyaWRTaXplIC8gMixcbiAgICAgIDkwOiB0aGlzLmdyaWRTaXplIC8gMlxuICAgIH07XG4gIH0sXG5cbiAgZGlzdEZ1bmM6IG1hbmhhdHRhbkRpc3QsXG4gIGZhbGxiYWNrUm91dGU6IHNpbXBsZVBvbHlsaW5lXG59O1xuZXhwb3J0IHZhciBvY3RvbGluZWFyQ2ZnID0ge1xuICBtYXhBbGxvd2VkRGlyZWN0aW9uQ2hhbmdlOiBNYXRoLlBJIC8gNCxcbiAgLy8gOCDkuKrmlrnlkJE6IOS4iuS4i+W3puWPsyArIDQ15bqm5pac57q/5pa55ZCRXG4gIGRpcmVjdGlvbnM6IFt7XG4gICAgc3RlcFg6IDEsXG4gICAgc3RlcFk6IDBcbiAgfSwge1xuICAgIHN0ZXBYOiAxLFxuICAgIHN0ZXBZOiAxXG4gIH0sIHtcbiAgICBzdGVwWDogMCxcbiAgICBzdGVwWTogMVxuICB9LCB7XG4gICAgc3RlcFg6IC0xLFxuICAgIHN0ZXBZOiAxXG4gIH0sIHtcbiAgICBzdGVwWDogLTEsXG4gICAgc3RlcFk6IDBcbiAgfSwge1xuICAgIHN0ZXBYOiAtMSxcbiAgICBzdGVwWTogLTFcbiAgfSwge1xuICAgIHN0ZXBYOiAwLFxuICAgIHN0ZXBZOiAtMVxuICB9LCB7XG4gICAgc3RlcFg6IDEsXG4gICAgc3RlcFk6IC0xXG4gIH1dLFxuICBkaXN0RnVuYzogZXVjbGlEaXN0LFxuICBmYWxsYmFja1JvdXRlOiBzdHJhaWdodFBhdGhcbn07XG5cbnZhciBwb3MyR3JpZEl4ID0gZnVuY3Rpb24gcG9zMkdyaWRJeChwb3MsIGdyaWRTaXplKSB7XG4gIHZhciBncmlkSXggPSBNYXRoLnJvdW5kKE1hdGguYWJzKHBvcyAvIGdyaWRTaXplKSk7XG4gIHZhciBzaWduID0gcG9zIDwgMCA/IC0xIDogMTtcbiAgcmV0dXJuIGdyaWRJeCA8IDAgPyAwIDogc2lnbiAqIGdyaWRJeDtcbn07XG5cbnZhciBnZXRPYnN0YWNsZU1hcCA9IGZ1bmN0aW9uIGdldE9ic3RhY2xlTWFwKGl0ZW1zLCBncmlkU2l6ZSwgb2Zmc2V0KSB7XG4gIHZhciBtYXAgPSB7fTtcbiAgaXRlbXMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgIC8vIGNyZWF0ZS1lZGdlIOaXtu+8jOW9k+i+ueexu+Wei+S4uiBwb2x5bGluZSDml7YgZW5kTm9kZSDkuLogbnVsbFxuICAgIGlmICghaXRlbSkgcmV0dXJuO1xuICAgIHZhciBiYm94ID0gZ2V0RXhwYW5kZWRCQm94KGl0ZW0uZ2V0QkJveCgpLCBvZmZzZXQpO1xuXG4gICAgZm9yICh2YXIgeCA9IHBvczJHcmlkSXgoYmJveC5taW5YLCBncmlkU2l6ZSk7IHggPD0gcG9zMkdyaWRJeChiYm94Lm1heFgsIGdyaWRTaXplKTsgeCArPSAxKSB7XG4gICAgICBmb3IgKHZhciB5ID0gcG9zMkdyaWRJeChiYm94Lm1pblksIGdyaWRTaXplKTsgeSA8PSBwb3MyR3JpZEl4KGJib3gubWF4WSwgZ3JpZFNpemUpOyB5ICs9IDEpIHtcbiAgICAgICAgbWFwW3ggKyBcInx8fFwiICsgeV0gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIHJldHVybiBtYXA7XG59O1xuLyoqXG4gKiDmlrnlkJHop5LvvJrorqHnrpfku44gcDEg5YiwIHAyIOeahOWwhOe6v+S4juawtOW5s+e6v+W9ouaIkOeahOWkueinkuW6puaVsO+8iOmhuuaXtumSiOS7juWPs+S+pzDCsOi9rOWIsOivpeWwhOe6v+eahOinkuW6pu+8iVxuICogQHBhcmFtIHAxIFBvbHlQb2ludFxuICogQHBhcmFtIHAyIFBvbHlQb2ludFxuICovXG5cblxudmFyIGdldERpcmVjdGlvbkFuZ2xlID0gZnVuY3Rpb24gZ2V0RGlyZWN0aW9uQW5nbGUocDEsIHAyKSB7XG4gIHZhciBkZWx0YVggPSBwMi54IC0gcDEueDtcbiAgdmFyIGRlbHRhWSA9IHAyLnkgLSBwMS55O1xuXG4gIGlmIChkZWx0YVggfHwgZGVsdGFZKSB7XG4gICAgcmV0dXJuIE1hdGguYXRhbjIoZGVsdGFZLCBkZWx0YVgpO1xuICB9XG5cbiAgcmV0dXJuIDA7XG59O1xuLyoqXG4gKiDmlrnlkJHop5LnmoTmlLnlj5jvvIzlj5blsI/kuo4xODDluqbop5JcbiAqIEBwYXJhbSBhbmdsZTFcbiAqIEBwYXJhbSBhbmdsZTJcbiAqL1xuXG5cbnZhciBnZXRBbmdsZURpZmYgPSBmdW5jdGlvbiBnZXRBbmdsZURpZmYoYW5nbGUxLCBhbmdsZTIpIHtcbiAgdmFyIGRpcmVjdGlvbkNoYW5nZSA9IE1hdGguYWJzKGFuZ2xlMSAtIGFuZ2xlMik7XG4gIHJldHVybiBkaXJlY3Rpb25DaGFuZ2UgPiBNYXRoLlBJID8gMiAqIE1hdGguUEkgLSBkaXJlY3Rpb25DaGFuZ2UgOiBkaXJlY3Rpb25DaGFuZ2U7IC8vIHJldHVybiBkaXJlY3Rpb25DaGFuZ2UgPiAxODAgPyAzNjAgLSBkaXJlY3Rpb25DaGFuZ2UgOiBkaXJlY3Rpb25DaGFuZ2U7XG59OyAvLyBQYXRoIGZpbmRlciAvL1xuXG5cbnZhciBlc3RpbWF0ZUNvc3QgPSBmdW5jdGlvbiBlc3RpbWF0ZUNvc3QoZnJvbSwgZW5kUG9pbnRzLCBkaXN0RnVuYykge1xuICB2YXIgbWluID0gSW5maW5pdHk7XG5cbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGVuZFBvaW50cy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBjb3N0ID0gZGlzdEZ1bmMoZnJvbSwgZW5kUG9pbnRzW2ldKTtcblxuICAgIGlmIChjb3N0IDwgbWluKSB7XG4gICAgICBtaW4gPSBjb3N0O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtaW47XG59OyAvLyDorqHnrpfogIPomZEgb2Zmc2V0IOWQjueahCBCQm94IOS4iueahOi/nuaOpeeCuVxuXG5cbnZhciBnZXRCb3hQb2ludHMgPSBmdW5jdGlvbiBnZXRCb3hQb2ludHMocG9pbnQsIC8vIOiiqyBncmlkU2l6ZSDmoLzlvI/ljJblkI7nmoTkvY3nva7vvIhhbmNob3JQb2ludO+8iVxub3JpUG9pbnQsIC8vIOacquiiqyBncmlkU2l6ZSDmoLzlvI/ljJbnmoTkvY3nva7vvIhhbmNob3JQb2ludO+8iVxubm9kZSwgLy8g5Y6f5aeL6IqC54K577yM55So5LqO6I635Y+WIGJib3hcbmFub3RoZXJQb2ludCwgLy8g5Y+m5LiA56uv6KKrIGdyaWRTaXplIOagvOW8j+WMluWQjueahOS9jee9rlxuY2ZnKSB7XG4gIHZhciBwb2ludHMgPSBbXTsgLy8gY3JlYXRlLWVkZ2Ug55Sf5oiQ6L6555qE6L+H56iL5Lit77yMZW5kTm9kZSDkuLogbnVsbFxuXG4gIGlmICghbm9kZSkge1xuICAgIHJldHVybiBbcG9pbnRdO1xuICB9XG5cbiAgdmFyIGRpcmVjdGlvbnMgPSBjZmcuZGlyZWN0aW9ucyxcbiAgICAgIG9mZnNldCA9IGNmZy5vZmZzZXQ7XG4gIHZhciBiYm94ID0gbm9kZS5nZXRCQm94KCk7XG4gIHZhciBpc0luc2lkZSA9IG9yaVBvaW50LnggPiBiYm94Lm1pblggJiYgb3JpUG9pbnQueCA8IGJib3gubWF4WCAmJiBvcmlQb2ludC55ID4gYmJveC5taW5ZICYmIG9yaVBvaW50LnkgPCBiYm94Lm1heFk7XG4gIHZhciBleHBhbmRCQm94ID0gZ2V0RXhwYW5kZWRCQm94KGJib3gsIG9mZnNldCk7XG5cbiAgZm9yICh2YXIgaSBpbiBleHBhbmRCQm94KSB7XG4gICAgZXhwYW5kQkJveFtpXSA9IHBvczJHcmlkSXgoZXhwYW5kQkJveFtpXSwgY2ZnLmdyaWRTaXplKTtcbiAgfVxuXG4gIGlmIChpc0luc2lkZSkge1xuICAgIC8vIOWmguaenCBhbmNob3JQb2ludCDlnKjoioLngrnlhoXpg6jvvIzlhYHorrjnrKzkuIDmrrXnur/nqb/ov4foioLngrlcbiAgICBmb3IgKHZhciBfaSA9IDAsIGRpcmVjdGlvbnNfMSA9IGRpcmVjdGlvbnM7IF9pIDwgZGlyZWN0aW9uc18xLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIGRpciA9IGRpcmVjdGlvbnNfMVtfaV07XG4gICAgICB2YXIgYm91bmRzID0gW1t7XG4gICAgICAgIHg6IGV4cGFuZEJCb3gubWluWCxcbiAgICAgICAgeTogZXhwYW5kQkJveC5taW5ZXG4gICAgICB9LCB7XG4gICAgICAgIHg6IGV4cGFuZEJCb3gubWF4WCxcbiAgICAgICAgeTogZXhwYW5kQkJveC5taW5ZXG4gICAgICB9XSwgW3tcbiAgICAgICAgeDogZXhwYW5kQkJveC5taW5YLFxuICAgICAgICB5OiBleHBhbmRCQm94Lm1pbllcbiAgICAgIH0sIHtcbiAgICAgICAgeDogZXhwYW5kQkJveC5taW5YLFxuICAgICAgICB5OiBleHBhbmRCQm94Lm1heFlcbiAgICAgIH1dLCBbe1xuICAgICAgICB4OiBleHBhbmRCQm94Lm1heFgsXG4gICAgICAgIHk6IGV4cGFuZEJCb3gubWluWVxuICAgICAgfSwge1xuICAgICAgICB4OiBleHBhbmRCQm94Lm1heFgsXG4gICAgICAgIHk6IGV4cGFuZEJCb3gubWF4WVxuICAgICAgfV0sIFt7XG4gICAgICAgIHg6IGV4cGFuZEJCb3gubWluWCxcbiAgICAgICAgeTogZXhwYW5kQkJveC5tYXhZXG4gICAgICB9LCB7XG4gICAgICAgIHg6IGV4cGFuZEJCb3gubWF4WCxcbiAgICAgICAgeTogZXhwYW5kQkJveC5tYXhZXG4gICAgICB9XV07XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgICAgIHZhciBib3VuZExpbmUgPSBib3VuZHNbaV07XG4gICAgICAgIHZhciBpbnN0ZXJjdFBfMSA9IFV0aWwuZ2V0TGluZUludGVyc2VjdChwb2ludCwge1xuICAgICAgICAgIHg6IHBvaW50LnggKyBkaXIuc3RlcFggKiBleHBhbmRCQm94LndpZHRoLFxuICAgICAgICAgIHk6IHBvaW50LnkgKyBkaXIuc3RlcFkgKiBleHBhbmRCQm94LmhlaWdodFxuICAgICAgICB9LCBib3VuZExpbmVbMF0sIGJvdW5kTGluZVsxXSk7XG5cbiAgICAgICAgaWYgKGluc3RlcmN0UF8xICYmICFpc1NlZ21lbnRDcm9zc2luZ0JCb3gocG9pbnQsIGluc3RlcmN0UF8xLCBiYm94KSkge1xuICAgICAgICAgIGluc3RlcmN0UF8xLmlkID0gaW5zdGVyY3RQXzEueCArIFwifHx8XCIgKyBpbnN0ZXJjdFBfMS55O1xuICAgICAgICAgIHBvaW50cy5wdXNoKGluc3RlcmN0UF8xKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwb2ludHM7XG4gIH0gLy8g5aaC5p6cIGFuY2hvclBvaW50IOWcqOiKgueCueS4iu+8jOWPquacieS4gOS4quWPr+mAieaWueWQkVxuXG5cbiAgdmFyIGluc3RlcmN0UCA9IGdldEV4cGFuZGVkQkJveFBvaW50KGV4cGFuZEJCb3gsIHBvaW50LCBhbm90aGVyUG9pbnQpO1xuICBpbnN0ZXJjdFAuaWQgPSBpbnN0ZXJjdFAueCArIFwifHx8XCIgKyBpbnN0ZXJjdFAueTtcbiAgcmV0dXJuIFtpbnN0ZXJjdFBdO1xufTtcblxudmFyIGdldERpcmVjdGlvbkNoYW5nZSA9IGZ1bmN0aW9uIGdldERpcmVjdGlvbkNoYW5nZShjdXJyZW50LCBuZWlnaGJvciwgY2FtZUZyb20sIHNjYWxlU3RhcnRQb2ludCkge1xuICB2YXIgZGlyZWN0aW9uQW5nbGUgPSBnZXREaXJlY3Rpb25BbmdsZShjdXJyZW50LCBuZWlnaGJvcik7XG5cbiAgaWYgKCFjYW1lRnJvbVtjdXJyZW50LmlkXSkge1xuICAgIHZhciBzdGFydEFuZ2xlID0gZ2V0RGlyZWN0aW9uQW5nbGUoc2NhbGVTdGFydFBvaW50LCBjdXJyZW50KTtcbiAgICByZXR1cm4gZ2V0QW5nbGVEaWZmKHN0YXJ0QW5nbGUsIGRpcmVjdGlvbkFuZ2xlKTtcbiAgfVxuXG4gIHZhciBwcmV2RGlyZWN0aW9uQW5nbGUgPSBnZXREaXJlY3Rpb25BbmdsZSh7XG4gICAgeDogY2FtZUZyb21bY3VycmVudC5pZF0ueCxcbiAgICB5OiBjYW1lRnJvbVtjdXJyZW50LmlkXS55XG4gIH0sIGN1cnJlbnQpO1xuICByZXR1cm4gZ2V0QW5nbGVEaWZmKHByZXZEaXJlY3Rpb25BbmdsZSwgZGlyZWN0aW9uQW5nbGUpO1xufTtcblxudmFyIGdldENvbnRyb2xQb2ludHMgPSBmdW5jdGlvbiBnZXRDb250cm9sUG9pbnRzKGN1cnJlbnQsIGNhbWVGcm9tLCBzY2FsZVN0YXJ0UG9pbnQsIGVuZFBvaW50LCBzdGFydFBvaW50LCBzY2FsZUVuZFBvaW50LCBncmlkU2l6ZSkge1xuICB2YXIgY29udHJvbFBvaW50cyA9IFtlbmRQb2ludF07XG4gIHZhciBjdXJyZW50SWQgPSBjdXJyZW50LmlkO1xuICB2YXIgY3VycmVudFggPSBjdXJyZW50Lng7XG4gIHZhciBjdXJyZW50WSA9IGN1cnJlbnQueTtcbiAgdmFyIGxhc3RQb2ludCA9IHtcbiAgICB4OiBjdXJyZW50WCxcbiAgICB5OiBjdXJyZW50WSxcbiAgICBpZDogY3VycmVudElkXG4gIH07XG5cbiAgaWYgKGdldERpcmVjdGlvbkNoYW5nZShsYXN0UG9pbnQsIHNjYWxlRW5kUG9pbnQsIGNhbWVGcm9tLCBzY2FsZVN0YXJ0UG9pbnQpKSB7XG4gICAgLy8gaWYgKHNjYWxlRW5kUG9pbnQueCA9PT0gZW5kUG9pbnQueCAmJiBzY2FsZUVuZFBvaW50LnkgPT09IGVuZFBvaW50LnkpXG4gICAgLy8gICBjb250cm9sUG9pbnRzLnVuc2hpZnQoe1xuICAgIC8vICAgICB4OiBlbmRQb2ludC54LFxuICAgIC8vICAgICB5OiBlbmRQb2ludC55XG4gICAgLy8gICB9KVxuICAgIC8vIGVsc2VcbiAgICAvLyAgIGNvbnRyb2xQb2ludHMudW5zaGlmdCh7XG4gICAgLy8gICAgIHg6IGxhc3RQb2ludC54ICogZ3JpZFNpemUsXG4gICAgLy8gICAgIHk6IGxhc3RQb2ludC55ICogZ3JpZFNpemUsXG4gICAgLy8gICB9KTtcbiAgICBjb250cm9sUG9pbnRzLnVuc2hpZnQoe1xuICAgICAgeDogc2NhbGVFbmRQb2ludC54ID09PSBlbmRQb2ludC54ID8gZW5kUG9pbnQueCA6IGxhc3RQb2ludC54ICogZ3JpZFNpemUsXG4gICAgICB5OiBzY2FsZUVuZFBvaW50LnkgPT09IGVuZFBvaW50LnkgPyBlbmRQb2ludC55IDogbGFzdFBvaW50LnkgKiBncmlkU2l6ZVxuICAgIH0pO1xuICB9XG5cbiAgd2hpbGUgKGNhbWVGcm9tW2N1cnJlbnRJZF0gJiYgY2FtZUZyb21bY3VycmVudElkXS5pZCAhPT0gY3VycmVudElkKSB7XG4gICAgdmFyIHBvaW50ID0ge1xuICAgICAgeDogY3VycmVudFgsXG4gICAgICB5OiBjdXJyZW50WSxcbiAgICAgIGlkOiBjdXJyZW50SWRcbiAgICB9O1xuICAgIHZhciBwcmVJZCA9IGNhbWVGcm9tW2N1cnJlbnRJZF0uaWQ7XG4gICAgdmFyIHByZVggPSBjYW1lRnJvbVtjdXJyZW50SWRdLng7XG4gICAgdmFyIHByZVkgPSBjYW1lRnJvbVtjdXJyZW50SWRdLnk7XG4gICAgdmFyIHByZVBvaW50ID0ge1xuICAgICAgeDogcHJlWCxcbiAgICAgIHk6IHByZVksXG4gICAgICBpZDogcHJlSWRcbiAgICB9O1xuICAgIHZhciBkaXJlY3Rpb25DaGFuZ2UgPSBnZXREaXJlY3Rpb25DaGFuZ2UocHJlUG9pbnQsIHBvaW50LCBjYW1lRnJvbSwgc2NhbGVTdGFydFBvaW50KTtcblxuICAgIGlmIChkaXJlY3Rpb25DaGFuZ2UpIHtcbiAgICAgIC8vIGlmIChwcmVQb2ludC54ID09PSBwb2ludC54ICYmIHByZVBvaW50LnkgPT09IHBvaW50LnkpXG4gICAgICAvLyAgIGNvbnRyb2xQb2ludHMudW5zaGlmdCh7XG4gICAgICAvLyAgICAgeDogY29udHJvbFBvaW50c1swXS54LFxuICAgICAgLy8gICAgIHk6IGNvbnRyb2xQb2ludHNbMF0ueVxuICAgICAgLy8gICB9KVxuICAgICAgLy8gZWxzZVxuICAgICAgLy8gICBjb250cm9sUG9pbnRzLnVuc2hpZnQoe1xuICAgICAgLy8gICAgIHg6IHByZVBvaW50LnggKiBncmlkU2l6ZSxcbiAgICAgIC8vICAgICB5OiBwcmVQb2ludC55ICogZ3JpZFNpemUsXG4gICAgICAvLyAgIH0pO1xuICAgICAgY29udHJvbFBvaW50cy51bnNoaWZ0KHtcbiAgICAgICAgeDogcHJlUG9pbnQueCA9PT0gcG9pbnQueCA/IGNvbnRyb2xQb2ludHNbMF0ueCA6IHByZVBvaW50LnggKiBncmlkU2l6ZSxcbiAgICAgICAgeTogcHJlUG9pbnQueSA9PT0gcG9pbnQueSA/IGNvbnRyb2xQb2ludHNbMF0ueSA6IHByZVBvaW50LnkgKiBncmlkU2l6ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY3VycmVudElkID0gcHJlSWQ7XG4gICAgY3VycmVudFggPSBwcmVYO1xuICAgIGN1cnJlbnRZID0gcHJlWTtcbiAgfSAvLyDlkoxzdGFydE5vZGXlr7npvZBcblxuXG4gIHZhciBmaXJzdFBvaW50ID0ge1xuICAgIHg6IGN1cnJlbnRYLFxuICAgIHk6IGN1cnJlbnRZLFxuICAgIGlkOiBjdXJyZW50SWRcbiAgfTsgLy8gaWYgKGZpcnN0UG9pbnQueCA9PT0gc2NhbGVTdGFydFBvaW50LnggJiYgZmlyc3RQb2ludC55ID09PSBzY2FsZVN0YXJ0UG9pbnQueSkge1xuICAvLyAgIGNvbnRyb2xQb2ludHNbMF0ueCA9IHN0YXJ0UG9pbnQueDtcbiAgLy8gICBjb250cm9sUG9pbnRzWzBdLnkgPSBzdGFydFBvaW50Lnk7XG4gIC8vIH1cblxuICBjb250cm9sUG9pbnRzWzBdLnggPSBmaXJzdFBvaW50LnggPT09IHNjYWxlU3RhcnRQb2ludC54ID8gc3RhcnRQb2ludC54IDogY29udHJvbFBvaW50c1swXS54O1xuICBjb250cm9sUG9pbnRzWzBdLnkgPSBmaXJzdFBvaW50LnkgPT09IHNjYWxlU3RhcnRQb2ludC55ID8gc3RhcnRQb2ludC55IDogY29udHJvbFBvaW50c1swXS55O1xuICBjb250cm9sUG9pbnRzLnVuc2hpZnQoc3RhcnRQb2ludCk7XG4gIHJldHVybiBjb250cm9sUG9pbnRzO1xufTtcblxuZXhwb3J0IHZhciBwYXRoRmluZGVyID0gZnVuY3Rpb24gcGF0aEZpbmRlcihzdGFydFBvaW50LCBlbmRQb2ludCwgc3RhcnROb2RlLCBlbmROb2RlLCByb3V0ZXJDZmcpIHtcbiAgaWYgKGlzTmFOKHN0YXJ0UG9pbnQueCkgfHwgaXNOYU4oZW5kUG9pbnQueCkpIHJldHVybiBbXTtcbiAgdmFyIGNmZyA9IGRlZXBNaXgoZGVmYXVsdENmZywgcm91dGVyQ2ZnKTtcbiAgY2ZnLm9ic3RhY2xlcyA9IGNmZy5vYnN0YWNsZXMgfHwgW107XG4gIHZhciBncmlkU2l6ZSA9IGNmZy5ncmlkU2l6ZTtcbiAgdmFyIG1hcCA9IGdldE9ic3RhY2xlTWFwKGNmZy5vYnN0YWNsZXMuY29uY2F0KFtzdGFydE5vZGUsIGVuZE5vZGVdKSwgZ3JpZFNpemUsIGNmZy5vZmZzZXQpO1xuICB2YXIgc2NhbGVTdGFydFBvaW50ID0ge1xuICAgIHg6IHBvczJHcmlkSXgoc3RhcnRQb2ludC54LCBncmlkU2l6ZSksXG4gICAgeTogcG9zMkdyaWRJeChzdGFydFBvaW50LnksIGdyaWRTaXplKVxuICB9O1xuICB2YXIgc2NhbGVFbmRQb2ludCA9IHtcbiAgICB4OiBwb3MyR3JpZEl4KGVuZFBvaW50LngsIGdyaWRTaXplKSxcbiAgICB5OiBwb3MyR3JpZEl4KGVuZFBvaW50LnksIGdyaWRTaXplKVxuICB9O1xuICBzdGFydFBvaW50LmlkID0gc2NhbGVTdGFydFBvaW50LnggKyBcInx8fFwiICsgc2NhbGVTdGFydFBvaW50Lnk7XG4gIGVuZFBvaW50LmlkID0gc2NhbGVFbmRQb2ludC54ICsgXCJ8fHxcIiArIHNjYWxlRW5kUG9pbnQueTtcbiAgdmFyIHN0YXJ0UG9pbnRzID0gZ2V0Qm94UG9pbnRzKHNjYWxlU3RhcnRQb2ludCwgc3RhcnRQb2ludCwgc3RhcnROb2RlLCBzY2FsZUVuZFBvaW50LCBjZmcpO1xuICB2YXIgZW5kUG9pbnRzID0gZ2V0Qm94UG9pbnRzKHNjYWxlRW5kUG9pbnQsIGVuZFBvaW50LCBlbmROb2RlLCBzY2FsZVN0YXJ0UG9pbnQsIGNmZyk7XG4gIHN0YXJ0UG9pbnRzLmZvckVhY2goZnVuY3Rpb24gKHBvaW50KSB7XG4gICAgZGVsZXRlIG1hcFtwb2ludC5pZF07XG4gIH0pO1xuICBlbmRQb2ludHMuZm9yRWFjaChmdW5jdGlvbiAocG9pbnQpIHtcbiAgICBkZWxldGUgbWFwW3BvaW50LmlkXTtcbiAgfSk7XG4gIHZhciBvcGVuU2V0ID0ge307XG4gIHZhciBjbG9zZWRTZXQgPSB7fTtcbiAgdmFyIGNhbWVGcm9tID0ge307IC8vIOS7jui1t+eCueWIsOW9k+WJjeeCueW3suS6p+eUn+eahCBjb3N0LCBkZWZhdWx0OiBJbmZpbml0eVxuXG4gIHZhciBnU2NvcmUgPSB7fTsgLy8g6LW354K557uP6L+H5b2T5YmN54K55Yiw6L6+57uI54K56aKE5Lyw55qEIGNvc3QsIGRlZmF1bHQ6IEluZmluaXR5XG5cbiAgdmFyIGZTY29yZSA9IHt9OyAvLyBpbml0aWFsaXplXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdGFydFBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBmaXJzdFN0ZXAgPSBzdGFydFBvaW50c1tpXTtcbiAgICBvcGVuU2V0W2ZpcnN0U3RlcC5pZF0gPSBmaXJzdFN0ZXA7IC8vIGNhbWVGcm9tW2ZpcnN0U3RlcC5pZF0gPSBzdGFydFBvaW50LmlkO1xuXG4gICAgZ1Njb3JlW2ZpcnN0U3RlcC5pZF0gPSAwO1xuICAgIGZTY29yZVtmaXJzdFN0ZXAuaWRdID0gZXN0aW1hdGVDb3N0KGZpcnN0U3RlcCwgZW5kUG9pbnRzLCBjZmcuZGlzdEZ1bmMpO1xuICB9XG5cbiAgdmFyIHJlbWFpbkxvb3BzID0gY2ZnLm1heGltdW1Mb29wcztcbiAgdmFyIHBlbmFsdGllcyA9IGNmZy5wZW5hbHRpZXM7XG4gIHZhciBjdXJyZW50LCBjdXJDb3N0LCBkaXJlY3Rpb24sIG5laWdoYm9yLCBuZWlnaGJvckNvc3QsIGNvc3RGcm9tU3RhcnQsIGRpcmVjdGlvbkNoYW5nZTtcblxuICB3aGlsZSAoT2JqZWN0LmtleXMob3BlblNldCkubGVuZ3RoID4gMCAmJiByZW1haW5Mb29wcyA+IDApIHtcbiAgICBjdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgIGN1ckNvc3QgPSBJbmZpbml0eTsgLy8g5om+5YiwIG9wZW5TZXQg5LitIGZTY29yZSDmnIDlsI/nmoTngrlcblxuICAgIE9iamVjdC5rZXlzKG9wZW5TZXQpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgdmFyIGlkID0gb3BlblNldFtrZXldLmlkO1xuXG4gICAgICBpZiAoZlNjb3JlW2lkXSA8PSBjdXJDb3N0KSB7XG4gICAgICAgIGN1ckNvc3QgPSBmU2NvcmVbaWRdO1xuICAgICAgICBjdXJyZW50ID0gb3BlblNldFtpZF07XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKCFjdXJyZW50KSBicmVhazsgLy8g5aaC5p6cIGZTY29yZSDmnIDlsI/nmoTngrnlsLHmmK/nu4jngrlcblxuICAgIGlmIChlbmRQb2ludHMuZmluZEluZGV4KGZ1bmN0aW9uIChwb2ludCkge1xuICAgICAgcmV0dXJuIHBvaW50LnggPT09IGN1cnJlbnQueCAmJiBwb2ludC55ID09PSBjdXJyZW50Lnk7XG4gICAgfSkgPiAtMSkge1xuICAgICAgcmV0dXJuIGdldENvbnRyb2xQb2ludHMoY3VycmVudCwgY2FtZUZyb20sIHNjYWxlU3RhcnRQb2ludCwgZW5kUG9pbnQsIHN0YXJ0UG9pbnQsIHNjYWxlRW5kUG9pbnQsIGdyaWRTaXplKTtcbiAgICB9XG5cbiAgICBkZWxldGUgb3BlblNldFtjdXJyZW50LmlkXTtcbiAgICBjbG9zZWRTZXRbY3VycmVudC5pZF0gPSB0cnVlOyAvLyDojrflj5bnrKblkIjmnaHku7bnmoTkuIvkuIDmraXnmoTlgJnpgInov57mjqXngrlcbiAgICAvLyDmsr/lgJnpgInmlrnlkJHotbDkuIDmraVcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2ZnLmRpcmVjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGRpcmVjdGlvbiA9IGNmZy5kaXJlY3Rpb25zW2ldO1xuICAgICAgbmVpZ2hib3IgPSB7XG4gICAgICAgIHg6IGN1cnJlbnQueCArIGRpcmVjdGlvbi5zdGVwWCxcbiAgICAgICAgeTogY3VycmVudC55ICsgZGlyZWN0aW9uLnN0ZXBZLFxuICAgICAgICBpZDogTWF0aC5yb3VuZChjdXJyZW50LngpICsgZGlyZWN0aW9uLnN0ZXBYICsgXCJ8fHxcIiArIChNYXRoLnJvdW5kKGN1cnJlbnQueSkgKyBkaXJlY3Rpb24uc3RlcFkpXG4gICAgICB9O1xuICAgICAgaWYgKGNsb3NlZFNldFtuZWlnaGJvci5pZF0pIGNvbnRpbnVlO1xuICAgICAgZGlyZWN0aW9uQ2hhbmdlID0gZ2V0RGlyZWN0aW9uQ2hhbmdlKGN1cnJlbnQsIG5laWdoYm9yLCBjYW1lRnJvbSwgc2NhbGVTdGFydFBvaW50KTtcbiAgICAgIGlmIChkaXJlY3Rpb25DaGFuZ2UgPiBjZmcubWF4QWxsb3dlZERpcmVjdGlvbkNoYW5nZSkgY29udGludWU7XG4gICAgICBpZiAobWFwW25laWdoYm9yLmlkXSkgY29udGludWU7IC8vIOWmguaenOS6pOWPieWImei3s+i/h1xuICAgICAgLy8g5bCG5YCZ6YCJ54K55Yqg5YWlIG9wZW5TZXQsIOW5tuiuoeeul+avj+S4quWAmemAieeCueeahCBjb3N0XG5cbiAgICAgIGlmICghb3BlblNldFtuZWlnaGJvci5pZF0pIHtcbiAgICAgICAgb3BlblNldFtuZWlnaGJvci5pZF0gPSBuZWlnaGJvcjtcbiAgICAgIH1cblxuICAgICAgbmVpZ2hib3JDb3N0ID0gY2ZnLmRpc3RGdW5jKGN1cnJlbnQsIG5laWdoYm9yKSArIChpc05hTihwZW5hbHRpZXNbZGlyZWN0aW9uQ2hhbmdlXSkgPyBncmlkU2l6ZSA6IHBlbmFsdGllc1tkaXJlY3Rpb25DaGFuZ2VdKTtcbiAgICAgIGNvc3RGcm9tU3RhcnQgPSBnU2NvcmVbY3VycmVudC5pZF0gKyBuZWlnaGJvckNvc3Q7XG5cbiAgICAgIGlmIChnU2NvcmVbbmVpZ2hib3IuaWRdICYmIGNvc3RGcm9tU3RhcnQgPj0gZ1Njb3JlW25laWdoYm9yLmlkXSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY2FtZUZyb21bbmVpZ2hib3IuaWRdID0gY3VycmVudDtcbiAgICAgIGdTY29yZVtuZWlnaGJvci5pZF0gPSBjb3N0RnJvbVN0YXJ0O1xuICAgICAgZlNjb3JlW25laWdoYm9yLmlkXSA9IGNvc3RGcm9tU3RhcnQgKyBlc3RpbWF0ZUNvc3QobmVpZ2hib3IsIGVuZFBvaW50cywgY2ZnLmRpc3RGdW5jKTtcbiAgICB9XG5cbiAgICByZW1haW5Mb29wcyAtPSAxO1xuICB9XG5cbiAgcmV0dXJuIGNmZy5mYWxsYmFja1JvdXRlKHN0YXJ0UG9pbnQsIGVuZFBvaW50LCBzdGFydE5vZGUsIGVuZE5vZGUsIGNmZyk7XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/edges/router.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/index.js":
/*!***************************************************************************!*\
!*** ./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/index.js ***!
\***************************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nodes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./nodes */ \"./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/index.js\");\n/* harmony import */ var _edges__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./edges */ \"./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/edges/index.js\");\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWVsZW1lbnRAMC41LjBAQGFudHYvZzYtZWxlbWVudC9lcy9pbmRleC5qcz81YzZlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFpQiIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtZWxlbWVudEAwLjUuMEBAYW50di9nNi1lbGVtZW50L2VzL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICcuL25vZGVzJztcbmltcG9ydCAnLi9lZGdlcyc7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/circle.js":
/*!**********************************************************************************!*\
!*** ./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/circle.js ***!
\**********************************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\n\n // 带有图标的圆,可用于拓扑图中\n\nObject(_antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerNode\"])('circle', {\n // 自定义节点时的配置\n options: {\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.size,\n style: {\n x: 0,\n y: 0,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.stroke,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.fill,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.lineWidth\n },\n labelCfg: {\n style: {\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fill,\n fontSize: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fontSize,\n fontFamily: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].windowFontFamily\n }\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.size,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.lineWidth,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.fill,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.stroke\n },\n // 节点中icon配置\n icon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: false,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/bmw-prod/5d015065-8505-4e7a-baec-976f81e3c41d.svg',\n width: 20,\n height: 20\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeStateStyles)\n },\n shapeType: 'circle',\n // 文本位置\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).icon,\n defaultIcon = _a === void 0 ? {} : _a;\n var style = this.getShapeStyle(cfg);\n var icon = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"deepMix\"])({}, defaultIcon, cfg.icon);\n var name = this.type + \"-keyShape\";\n var keyShape = group.addShape('circle', {\n attrs: style,\n className: name,\n name: name,\n draggable: true\n });\n group['shapeMap'][name] = keyShape;\n var width = icon.width,\n height = icon.height,\n show = icon.show,\n text = icon.text;\n\n if (show) {\n var iconName = this.type + \"-icon\";\n\n if (text) {\n group['shapeMap'][iconName] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, icon),\n className: iconName,\n name: iconName,\n draggable: true\n });\n } else {\n group['shapeMap'][iconName] = group.addShape('image', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -width / 2,\n y: -height / 2\n }, icon),\n className: iconName,\n name: iconName,\n draggable: true\n });\n }\n }\n\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n\n /**\n * 绘制节点上的LinkPoints\n * @param {Object} cfg data数据配置项\n * @param {Group} group Group实例\n */\n drawLinkPoints: function drawLinkPoints(cfg, group) {\n var linkPoints = (this.mergeStyle || this.getOptions(cfg)).linkPoints;\n if (!linkPoints) return;\n\n var _a = linkPoints || {},\n top = _a.top,\n left = _a.left,\n right = _a.right,\n bottom = _a.bottom,\n markSize = _a.size,\n markR = _a.r,\n markStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(_a, [\"top\", \"left\", \"right\", \"bottom\", \"size\", \"r\"]);\n\n var size = this.getSize(cfg);\n var r = size[0] / 2;\n\n if (left) {\n // left circle\n var name_1 = 'link-point-left';\n group['shapeMap'][name_1] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: -r,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: name_1,\n name: name_1,\n isAnchorPoint: true\n });\n }\n\n if (right) {\n // right circle\n var name_2 = 'link-point-right';\n group['shapeMap'][name_2] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: r,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: name_2,\n name: name_2,\n isAnchorPoint: true\n });\n }\n\n if (top) {\n // top circle\n var name_3 = 'link-point-top';\n group['shapeMap'][name_3] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: -r,\n r: markSize / 2 || markR || 5\n }),\n className: name_3,\n name: name_3,\n isAnchorPoint: true\n });\n }\n\n if (bottom) {\n // bottom circle\n var name_4 = 'link-point-bottom';\n group['shapeMap'][name_4] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: r,\n r: markSize / 2 || markR || 5\n }),\n className: name_4,\n name: name_4,\n isAnchorPoint: true\n });\n }\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"deepMix\"])({}, defaultStyle, strokeStyle);\n var size = this.getSize(cfg);\n var r = size[0] / 2;\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n r: r\n }, style);\n\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var group = item.getContainer();\n var size = this.getSize(cfg); // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n // const strokeStyle = {\n // stroke: cfg.color,\n // r: size[0] / 2,\n // };\n // // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n // const keyShape = item.get('keyShape');\n // TODO: performance\n // const style = deepMix({}, keyShape.attr(), strokeStyle, cfg.style);\n // const style = deepMix({}, keyShape.attr(), cfg.style);\n\n var style = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, cfg.style);\n\n if (cfg.style.stroke === undefined && cfg.color) {\n style.stroke = cfg.color;\n }\n\n if (cfg.style.r === undefined && !isNaN(size[0])) {\n style.r = size[0] / 2;\n }\n\n this.updateShape(cfg, item, style, true, updateType); // (this as any).updateShape(cfg, item, style, true, updateType);\n\n this.updateLinkPoints(cfg, group);\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWVsZW1lbnRAMC41LjBAQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9jaXJjbGUuanM/Y2IwOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF5QztBQUMwQjtBQUM5Qjs7QUFFckMsa0VBQVk7QUFDWjtBQUNBO0FBQ0EsVUFBVSx3REFBTTtBQUNoQjtBQUNBO0FBQ0E7QUFDQSxjQUFjLHdEQUFNO0FBQ3BCLFlBQVksd0RBQU07QUFDbEIsaUJBQWlCLHdEQUFNO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsY0FBYyx3REFBTTtBQUNwQixrQkFBa0Isd0RBQU07QUFDeEIsb0JBQW9CLHdEQUFNO0FBQzFCO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx3REFBTTtBQUNsQixpQkFBaUIsd0RBQU07QUFDdkIsWUFBWSx3REFBTTtBQUNsQixjQUFjLHdEQUFNO0FBQ3BCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLGlCQUFpQixzREFBUSxHQUFHLEVBQUUsd0RBQU07QUFDcEMsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7QUFDeEM7QUFDQSxlQUFlLDBEQUFPLEdBQUc7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsaUJBQWlCLHNEQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG9EQUFNOztBQUUxQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU4sZ0JBQWdCLDBEQUFPLEdBQUc7QUFDMUI7QUFDQTs7QUFFQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CLCtCQUErQjs7QUFFL0IsZ0JBQWdCLHNEQUFRLEdBQUc7O0FBRTNCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEseURBQXlEOztBQUV6RDtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtZWxlbWVudEAwLjUuMEBAYW50di9nNi1lbGVtZW50L2VzL25vZGVzL2NpcmNsZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduLCBfX3Jlc3QgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IHJlZ2lzdGVyTm9kZSwgQmFzZUdsb2JhbCBhcyBHbG9iYWwgfSBmcm9tICdAYW50di9nNi1jb3JlJztcbmltcG9ydCB7IGRlZXBNaXggfSBmcm9tICdAYW50di91dGlsJzsgLy8g5bim5pyJ5Zu+5qCH55qE5ZyG77yM5Y+v55So5LqO5ouT5omR5Zu+5LitXG5cbnJlZ2lzdGVyTm9kZSgnY2lyY2xlJywge1xuICAvLyDoh6rlrprkuYnoioLngrnml7bnmoTphY3nva5cbiAgb3B0aW9uczoge1xuICAgIHNpemU6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zaXplLFxuICAgIHN0eWxlOiB7XG4gICAgICB4OiAwLFxuICAgICAgeTogMCxcbiAgICAgIHN0cm9rZTogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLnN0cm9rZSxcbiAgICAgIGZpbGw6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zdHlsZS5maWxsLFxuICAgICAgbGluZVdpZHRoOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUubGluZVdpZHRoXG4gICAgfSxcbiAgICBsYWJlbENmZzoge1xuICAgICAgc3R5bGU6IHtcbiAgICAgICAgZmlsbDogR2xvYmFsLm5vZGVMYWJlbC5zdHlsZS5maWxsLFxuICAgICAgICBmb250U2l6ZTogR2xvYmFsLm5vZGVMYWJlbC5zdHlsZS5mb250U2l6ZSxcbiAgICAgICAgZm9udEZhbWlseTogR2xvYmFsLndpbmRvd0ZvbnRGYW1pbHlcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIOiKgueCueS4iuW3puWPs+S4iuS4i+Wbm+S4quaWueWQkeS4iueahOmTvuaOpWNpcmNsZemFjee9rlxuICAgIGxpbmtQb2ludHM6IHtcbiAgICAgIHRvcDogZmFsc2UsXG4gICAgICByaWdodDogZmFsc2UsXG4gICAgICBib3R0b206IGZhbHNlLFxuICAgICAgbGVmdDogZmFsc2UsXG4gICAgICAvLyBjaXJjbGXnmoTlpKflsI9cbiAgICAgIHNpemU6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLnNpemUsXG4gICAgICBsaW5lV2lkdGg6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLmxpbmVXaWR0aCxcbiAgICAgIGZpbGw6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLmZpbGwsXG4gICAgICBzdHJva2U6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLnN0cm9rZVxuICAgIH0sXG4gICAgLy8g6IqC54K55LitaWNvbumFjee9rlxuICAgIGljb246IHtcbiAgICAgIC8vIOaYr+WQpuaYvuekumljb27vvIzlgLzkuLogZmFsc2Ug5YiZ5LiN5riy5p+TaWNvblxuICAgICAgc2hvdzogZmFsc2UsXG4gICAgICAvLyBpY29u55qE5Zyw5Z2A77yM5a2X56ym5Liy57G75Z6LXG4gICAgICBpbWc6ICdodHRwczovL2d3LmFsaXBheW9iamVjdHMuY29tL3pvcy9ibXctcHJvZC81ZDAxNTA2NS04NTA1LTRlN2EtYmFlYy05NzZmODFlM2M0MWQuc3ZnJyxcbiAgICAgIHdpZHRoOiAyMCxcbiAgICAgIGhlaWdodDogMjBcbiAgICB9LFxuICAgIHN0YXRlU3R5bGVzOiBfX2Fzc2lnbih7fSwgR2xvYmFsLm5vZGVTdGF0ZVN0eWxlcylcbiAgfSxcbiAgc2hhcGVUeXBlOiAnY2lyY2xlJyxcbiAgLy8g5paH5pys5L2N572uXG4gIGxhYmVsUG9zaXRpb246ICdjZW50ZXInLFxuICBkcmF3U2hhcGU6IGZ1bmN0aW9uIGRyYXdTaGFwZShjZmcsIGdyb3VwKSB7XG4gICAgdmFyIF9hID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkuaWNvbixcbiAgICAgICAgZGVmYXVsdEljb24gPSBfYSA9PT0gdm9pZCAwID8ge30gOiBfYTtcbiAgICB2YXIgc3R5bGUgPSB0aGlzLmdldFNoYXBlU3R5bGUoY2ZnKTtcbiAgICB2YXIgaWNvbiA9IGRlZXBNaXgoe30sIGRlZmF1bHRJY29uLCBjZmcuaWNvbik7XG4gICAgdmFyIG5hbWUgPSB0aGlzLnR5cGUgKyBcIi1rZXlTaGFwZVwiO1xuICAgIHZhciBrZXlTaGFwZSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICBhdHRyczogc3R5bGUsXG4gICAgICBjbGFzc05hbWU6IG5hbWUsXG4gICAgICBuYW1lOiBuYW1lLFxuICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgZ3JvdXBbJ3NoYXBlTWFwJ11bbmFtZV0gPSBrZXlTaGFwZTtcbiAgICB2YXIgd2lkdGggPSBpY29uLndpZHRoLFxuICAgICAgICBoZWlnaHQgPSBpY29uLmhlaWdodCxcbiAgICAgICAgc2hvdyA9IGljb24uc2hvdyxcbiAgICAgICAgdGV4dCA9IGljb24udGV4dDtcblxuICAgIGlmIChzaG93KSB7XG4gICAgICB2YXIgaWNvbk5hbWUgPSB0aGlzLnR5cGUgKyBcIi1pY29uXCI7XG5cbiAgICAgIGlmICh0ZXh0KSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW2ljb25OYW1lXSA9IGdyb3VwLmFkZFNoYXBlKCd0ZXh0Jywge1xuICAgICAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgIGZvbnRTaXplOiAxMixcbiAgICAgICAgICAgIGZpbGw6ICcjMDAwJyxcbiAgICAgICAgICAgIHN0cm9rZTogJyMwMDAnLFxuICAgICAgICAgICAgdGV4dEJhc2VsaW5lOiAnbWlkZGxlJyxcbiAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgICAgICAgICB9LCBpY29uKSxcbiAgICAgICAgICBjbGFzc05hbWU6IGljb25OYW1lLFxuICAgICAgICAgIG5hbWU6IGljb25OYW1lLFxuICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW2ljb25OYW1lXSA9IGdyb3VwLmFkZFNoYXBlKCdpbWFnZScsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgICAgeDogLXdpZHRoIC8gMixcbiAgICAgICAgICAgIHk6IC1oZWlnaHQgLyAyXG4gICAgICAgICAgfSwgaWNvbiksXG4gICAgICAgICAgY2xhc3NOYW1lOiBpY29uTmFtZSxcbiAgICAgICAgICBuYW1lOiBpY29uTmFtZSxcbiAgICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5kcmF3TGlua1BvaW50cyhjZmcsIGdyb3VwKTtcbiAgICByZXR1cm4ga2V5U2hhcGU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOe7mOWItuiKgueCueS4iueahExpbmtQb2ludHNcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyBkYXRh5pWw5o2u6YWN572u6aG5XG4gICAqIEBwYXJhbSB7R3JvdXB9IGdyb3VwIEdyb3Vw5a6e5L6LXG4gICAqL1xuICBkcmF3TGlua1BvaW50czogZnVuY3Rpb24gZHJhd0xpbmtQb2ludHMoY2ZnLCBncm91cCkge1xuICAgIHZhciBsaW5rUG9pbnRzID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkubGlua1BvaW50cztcbiAgICBpZiAoIWxpbmtQb2ludHMpIHJldHVybjtcblxuICAgIHZhciBfYSA9IGxpbmtQb2ludHMgfHwge30sXG4gICAgICAgIHRvcCA9IF9hLnRvcCxcbiAgICAgICAgbGVmdCA9IF9hLmxlZnQsXG4gICAgICAgIHJpZ2h0ID0gX2EucmlnaHQsXG4gICAgICAgIGJvdHRvbSA9IF9hLmJvdHRvbSxcbiAgICAgICAgbWFya1NpemUgPSBfYS5zaXplLFxuICAgICAgICBtYXJrUiA9IF9hLnIsXG4gICAgICAgIG1hcmtTdHlsZSA9IF9fcmVzdChfYSwgW1widG9wXCIsIFwibGVmdFwiLCBcInJpZ2h0XCIsIFwiYm90dG9tXCIsIFwic2l6ZVwiLCBcInJcIl0pO1xuXG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgciA9IHNpemVbMF0gLyAyO1xuXG4gICAgaWYgKGxlZnQpIHtcbiAgICAgIC8vIGxlZnQgY2lyY2xlXG4gICAgICB2YXIgbmFtZV8xID0gJ2xpbmstcG9pbnQtbGVmdCc7XG4gICAgICBncm91cFsnc2hhcGVNYXAnXVtuYW1lXzFdID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogLXIsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICByOiBtYXJrU2l6ZSAvIDIgfHwgbWFya1IgfHwgNVxuICAgICAgICB9KSxcbiAgICAgICAgY2xhc3NOYW1lOiBuYW1lXzEsXG4gICAgICAgIG5hbWU6IG5hbWVfMSxcbiAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHJpZ2h0KSB7XG4gICAgICAvLyByaWdodCBjaXJjbGVcbiAgICAgIHZhciBuYW1lXzIgPSAnbGluay1wb2ludC1yaWdodCc7XG4gICAgICBncm91cFsnc2hhcGVNYXAnXVtuYW1lXzJdID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogcixcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6IG5hbWVfMixcbiAgICAgICAgbmFtZTogbmFtZV8yLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodG9wKSB7XG4gICAgICAvLyB0b3AgY2lyY2xlXG4gICAgICB2YXIgbmFtZV8zID0gJ2xpbmstcG9pbnQtdG9wJztcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddW25hbWVfM10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IC1yLFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6IG5hbWVfMyxcbiAgICAgICAgbmFtZTogbmFtZV8zLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoYm90dG9tKSB7XG4gICAgICAvLyBib3R0b20gY2lyY2xlXG4gICAgICB2YXIgbmFtZV80ID0gJ2xpbmstcG9pbnQtYm90dG9tJztcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddW25hbWVfNF0gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IHIsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogbmFtZV80LFxuICAgICAgICBuYW1lOiBuYW1lXzQsXG4gICAgICAgIGlzQW5jaG9yUG9pbnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICog6I635Y+W6IqC54K555qE5qC35byP77yM5L6b5Z+65LqO6K+l6IqC54K56Ieq5a6a5LmJ5pe25L2/55SoXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcg6IqC54K55pWw5o2u5qih5Z6LXG4gICAqIEByZXR1cm4ge09iamVjdH0g6IqC54K555qE5qC35byPXG4gICAqL1xuICBnZXRTaGFwZVN0eWxlOiBmdW5jdGlvbiBnZXRTaGFwZVN0eWxlKGNmZykge1xuICAgIHZhciBkZWZhdWx0U3R5bGUgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpKS5zdHlsZTtcbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvclxuICAgIH07IC8vIOWmguaenOiuvue9ruS6hmNvbG9y77yM5YiZ6KaG55uW6buY6K6k55qEc3Ryb2tl5bGe5oCnXG5cbiAgICB2YXIgc3R5bGUgPSBkZWVwTWl4KHt9LCBkZWZhdWx0U3R5bGUsIHN0cm9rZVN0eWxlKTtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciByID0gc2l6ZVswXSAvIDI7XG5cbiAgICB2YXIgc3R5bGVzID0gX19hc3NpZ24oe1xuICAgICAgeDogMCxcbiAgICAgIHk6IDAsXG4gICAgICByOiByXG4gICAgfSwgc3R5bGUpO1xuXG4gICAgcmV0dXJuIHN0eWxlcztcbiAgfSxcbiAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUoY2ZnLCBpdGVtLCB1cGRhdGVUeXBlKSB7XG4gICAgdmFyIGdyb3VwID0gaXRlbS5nZXRDb250YWluZXIoKTtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpOyAvLyDkuIvpnaLov5nkupvlsZ7mgKfpnIDopoHopobnm5bpu5jorqTmoLflvI/kuI7nm67liY3moLflvI/vvIzkvYboi6XlnKggY2ZnIOS4reacieaMh+WumuWImeW6lOivpeiiqyBjZmcg55qE55u45bqU6YWN572u6KaG55uW44CCXG4gICAgLy8gY29uc3Qgc3Ryb2tlU3R5bGUgPSB7XG4gICAgLy8gICBzdHJva2U6IGNmZy5jb2xvcixcbiAgICAvLyAgIHI6IHNpemVbMF0gLyAyLFxuICAgIC8vIH07XG4gICAgLy8gLy8g5LiOIGdldFNoYXBlU3R5bGUg5LiN5ZCM5Zyo5LqO77yMdXBkYXRlIOaXtumcgOimgeiOt+WPluWIsOW9k+WJjeeahCBzdHlsZSDov5vooYzono3lkIjjgILljbPmlrDkvKDlhaXnmoTphY3nva7pobnkuK3msqHmnInmtonlj4rnmoTlsZ7mgKfvvIzkv53nlZnlvZPliY3nmoTphY3nva7jgIJcbiAgICAvLyBjb25zdCBrZXlTaGFwZSA9IGl0ZW0uZ2V0KCdrZXlTaGFwZScpO1xuICAgIC8vIFRPRE86IHBlcmZvcm1hbmNlXG4gICAgLy8gY29uc3Qgc3R5bGUgPSBkZWVwTWl4KHt9LCBrZXlTaGFwZS5hdHRyKCksIHN0cm9rZVN0eWxlLCBjZmcuc3R5bGUpO1xuICAgIC8vIGNvbnN0IHN0eWxlID0gZGVlcE1peCh7fSwga2V5U2hhcGUuYXR0cigpLCBjZmcuc3R5bGUpO1xuXG4gICAgdmFyIHN0eWxlID0gX19hc3NpZ24oe30sIGNmZy5zdHlsZSk7XG5cbiAgICBpZiAoY2ZnLnN0eWxlLnN0cm9rZSA9PT0gdW5kZWZpbmVkICYmIGNmZy5jb2xvcikge1xuICAgICAgc3R5bGUuc3Ryb2tlID0gY2ZnLmNvbG9yO1xuICAgIH1cblxuICAgIGlmIChjZmcuc3R5bGUuciA9PT0gdW5kZWZpbmVkICYmICFpc05hTihzaXplWzBdKSkge1xuICAgICAgc3R5bGUuciA9IHNpemVbMF0gLyAyO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlU2hhcGUoY2ZnLCBpdGVtLCBzdHlsZSwgdHJ1ZSwgdXBkYXRlVHlwZSk7IC8vICh0aGlzIGFzIGFueSkudXBkYXRlU2hhcGUoY2ZnLCBpdGVtLCBzdHlsZSwgdHJ1ZSwgdXBkYXRlVHlwZSk7XG5cbiAgICB0aGlzLnVwZGF0ZUxpbmtQb2ludHMoY2ZnLCBncm91cCk7XG4gIH1cbn0sICdzaW5nbGUtbm9kZScpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/circle.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/diamond.js":
/*!***********************************************************************************!*\
!*** ./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/diamond.js ***!
\***********************************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\n\n // 菱形shape\n\nObject(_antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerNode\"])('diamond', {\n // 自定义节点时的配置\n options: {\n size: [80, 80],\n style: {\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.stroke,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.fill,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.lineWidth\n },\n // 文本样式配置\n labelCfg: {\n style: {\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fill,\n fontSize: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fontSize,\n fontFamily: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].windowFontFamily\n }\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.size,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.lineWidth,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.fill,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.stroke\n },\n // 节点中icon配置\n icon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: false,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/bmw-prod/5d015065-8505-4e7a-baec-976f81e3c41d.svg',\n width: 20,\n height: 20\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeStateStyles)\n },\n shapeType: 'diamond',\n // 文本位置\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).icon,\n icon = _a === void 0 ? {} : _a;\n var style = this.getShapeStyle(cfg);\n var keyShape = group.addShape('path', {\n attrs: style,\n className: this.type + \"-keyShape\",\n name: this.type + \"-keyShape\",\n draggable: true\n });\n group['shapeMap'][this.type + \"-keyShape\"] = keyShape;\n var w = icon.width,\n h = icon.height,\n show = icon.show,\n text = icon.text;\n\n if (show) {\n if (text) {\n group['shapeMap'][this.type + \"-icon\"] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, icon),\n className: this.type + \"-icon\",\n name: this.type + \"-icon\",\n draggable: true\n });\n } else {\n group['shapeMap'][this.type + \"-icon\"] = group.addShape('image', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -w / 2,\n y: -h / 2\n }, icon),\n className: this.type + \"-icon\",\n name: this.type + \"-icon\",\n draggable: true\n });\n }\n }\n\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n\n /**\n * 绘制节点上的LinkPoints\n * @param {Object} cfg data数据配置项\n * @param {Group} group Group实例\n */\n drawLinkPoints: function drawLinkPoints(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).linkPoints,\n linkPoints = _a === void 0 ? {} : _a;\n\n var top = linkPoints.top,\n left = linkPoints.left,\n right = linkPoints.right,\n bottom = linkPoints.bottom,\n markSize = linkPoints.size,\n markR = linkPoints.r,\n markStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(linkPoints, [\"top\", \"left\", \"right\", \"bottom\", \"size\", \"r\"]);\n\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n\n if (left) {\n // left circle\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: -width / 2,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-left',\n name: 'link-point-left',\n isAnchorPoint: true\n });\n }\n\n if (right) {\n // right circle\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: width / 2,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-right',\n name: 'link-point-right',\n isAnchorPoint: true\n });\n }\n\n if (top) {\n // top circle\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: -height / 2,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-top',\n name: 'link-point-top',\n isAnchorPoint: true\n });\n }\n\n if (bottom) {\n // bottom circle\n group['shapeMap']['link-point-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: height / 2,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-bottom',\n name: 'link-point-bottom',\n isAnchorPoint: true\n });\n }\n },\n getPath: function getPath(cfg) {\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n var path = [['M', 0, -height / 2], ['L', width / 2, 0], ['L', 0, height / 2], ['L', -width / 2, 0], ['Z'] // 封闭\n ];\n return path;\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, defaultStyle, strokeStyle);\n var path = this.getPath(cfg);\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n path: path\n }, style);\n\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var group = item.getContainer(); // 这里不传 cfg 参数是因为 cfg.style 需要最后覆盖样式\n\n var defaultStyle = this.getOptions({}).style;\n var path = this.getPath(cfg); // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n\n var strokeStyle = {\n stroke: cfg.color,\n path: path\n }; // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n\n var keyShape = item.get('keyShape');\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, defaultStyle, keyShape.attr(), strokeStyle);\n style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])(style, cfg.style);\n this.updateShape(cfg, item, style, true, updateType);\n this.updateLinkPoints(cfg, group);\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWVsZW1lbnRAMC41LjBAQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9kaWFtb25kLmpzP2U0NTEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBeUM7QUFDMEI7QUFDbEM7O0FBRWpDLGtFQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLHdEQUFNO0FBQ3BCLFlBQVksd0RBQU07QUFDbEIsaUJBQWlCLHdEQUFNO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxjQUFjLHdEQUFNO0FBQ3BCLGtCQUFrQix3REFBTTtBQUN4QixvQkFBb0Isd0RBQU07QUFDMUI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHdEQUFNO0FBQ2xCLGlCQUFpQix3REFBTTtBQUN2QixZQUFZLHdEQUFNO0FBQ2xCLGNBQWMsd0RBQU07QUFDcEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsaUJBQWlCLHNEQUFRLEdBQUcsRUFBRSx3REFBTTtBQUNwQyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLGlCQUFpQixzREFBUTtBQUN6QjtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBLHVDQUF1Qzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG9EQUFNOztBQUUxQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU4sZ0JBQWdCLHNEQUFHLEdBQUc7QUFDdEI7O0FBRUEsaUJBQWlCLHNEQUFRO0FBQ3pCO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLEdBQUc7QUFDSDtBQUNBLG9DQUFvQzs7QUFFcEMseUNBQXlDO0FBQ3pDLGlDQUFpQzs7QUFFakM7QUFDQTtBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBLGdCQUFnQixzREFBRyxHQUFHO0FBQ3RCLFlBQVksc0RBQUc7QUFDZjtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1lbGVtZW50QDAuNS4wQEBhbnR2L2c2LWVsZW1lbnQvZXMvbm9kZXMvZGlhbW9uZC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduLCBfX3Jlc3QgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IHJlZ2lzdGVyTm9kZSwgQmFzZUdsb2JhbCBhcyBHbG9iYWwgfSBmcm9tICdAYW50di9nNi1jb3JlJztcbmltcG9ydCB7IG1peCB9IGZyb20gJ0BhbnR2L3V0aWwnOyAvLyDoj7HlvaJzaGFwZVxuXG5yZWdpc3Rlck5vZGUoJ2RpYW1vbmQnLCB7XG4gIC8vIOiHquWumuS5ieiKgueCueaXtueahOmFjee9rlxuICBvcHRpb25zOiB7XG4gICAgc2l6ZTogWzgwLCA4MF0sXG4gICAgc3R5bGU6IHtcbiAgICAgIHN0cm9rZTogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLnN0cm9rZSxcbiAgICAgIGZpbGw6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zdHlsZS5maWxsLFxuICAgICAgbGluZVdpZHRoOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUubGluZVdpZHRoXG4gICAgfSxcbiAgICAvLyDmlofmnKzmoLflvI/phY3nva5cbiAgICBsYWJlbENmZzoge1xuICAgICAgc3R5bGU6IHtcbiAgICAgICAgZmlsbDogR2xvYmFsLm5vZGVMYWJlbC5zdHlsZS5maWxsLFxuICAgICAgICBmb250U2l6ZTogR2xvYmFsLm5vZGVMYWJlbC5zdHlsZS5mb250U2l6ZSxcbiAgICAgICAgZm9udEZhbWlseTogR2xvYmFsLndpbmRvd0ZvbnRGYW1pbHlcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIOiKgueCueS4iuW3puWPs+S4iuS4i+Wbm+S4quaWueWQkeS4iueahOmTvuaOpWNpcmNsZemFjee9rlxuICAgIGxpbmtQb2ludHM6IHtcbiAgICAgIHRvcDogZmFsc2UsXG4gICAgICByaWdodDogZmFsc2UsXG4gICAgICBib3R0b206IGZhbHNlLFxuICAgICAgbGVmdDogZmFsc2UsXG4gICAgICAvLyBjaXJjbGXnmoTlpKflsI9cbiAgICAgIHNpemU6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLnNpemUsXG4gICAgICBsaW5lV2lkdGg6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLmxpbmVXaWR0aCxcbiAgICAgIGZpbGw6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLmZpbGwsXG4gICAgICBzdHJva2U6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLnN0cm9rZVxuICAgIH0sXG4gICAgLy8g6IqC54K55LitaWNvbumFjee9rlxuICAgIGljb246IHtcbiAgICAgIC8vIOaYr+WQpuaYvuekumljb27vvIzlgLzkuLogZmFsc2Ug5YiZ5LiN5riy5p+TaWNvblxuICAgICAgc2hvdzogZmFsc2UsXG4gICAgICAvLyBpY29u55qE5Zyw5Z2A77yM5a2X56ym5Liy57G75Z6LXG4gICAgICBpbWc6ICdodHRwczovL2d3LmFsaXBheW9iamVjdHMuY29tL3pvcy9ibXctcHJvZC81ZDAxNTA2NS04NTA1LTRlN2EtYmFlYy05NzZmODFlM2M0MWQuc3ZnJyxcbiAgICAgIHdpZHRoOiAyMCxcbiAgICAgIGhlaWdodDogMjBcbiAgICB9LFxuICAgIHN0YXRlU3R5bGVzOiBfX2Fzc2lnbih7fSwgR2xvYmFsLm5vZGVTdGF0ZVN0eWxlcylcbiAgfSxcbiAgc2hhcGVUeXBlOiAnZGlhbW9uZCcsXG4gIC8vIOaWh+acrOS9jee9rlxuICBsYWJlbFBvc2l0aW9uOiAnY2VudGVyJyxcbiAgZHJhd1NoYXBlOiBmdW5jdGlvbiBkcmF3U2hhcGUoY2ZnLCBncm91cCkge1xuICAgIHZhciBfYSA9ICh0aGlzLm1lcmdlU3R5bGUgfHwgdGhpcy5nZXRPcHRpb25zKGNmZykpLmljb24sXG4gICAgICAgIGljb24gPSBfYSA9PT0gdm9pZCAwID8ge30gOiBfYTtcbiAgICB2YXIgc3R5bGUgPSB0aGlzLmdldFNoYXBlU3R5bGUoY2ZnKTtcbiAgICB2YXIga2V5U2hhcGUgPSBncm91cC5hZGRTaGFwZSgncGF0aCcsIHtcbiAgICAgIGF0dHJzOiBzdHlsZSxcbiAgICAgIGNsYXNzTmFtZTogdGhpcy50eXBlICsgXCIta2V5U2hhcGVcIixcbiAgICAgIG5hbWU6IHRoaXMudHlwZSArIFwiLWtleVNoYXBlXCIsXG4gICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICB9KTtcbiAgICBncm91cFsnc2hhcGVNYXAnXVt0aGlzLnR5cGUgKyBcIi1rZXlTaGFwZVwiXSA9IGtleVNoYXBlO1xuICAgIHZhciB3ID0gaWNvbi53aWR0aCxcbiAgICAgICAgaCA9IGljb24uaGVpZ2h0LFxuICAgICAgICBzaG93ID0gaWNvbi5zaG93LFxuICAgICAgICB0ZXh0ID0gaWNvbi50ZXh0O1xuXG4gICAgaWYgKHNob3cpIHtcbiAgICAgIGlmICh0ZXh0KSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW3RoaXMudHlwZSArIFwiLWljb25cIl0gPSBncm91cC5hZGRTaGFwZSgndGV4dCcsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICBmb250U2l6ZTogMTIsXG4gICAgICAgICAgICBmaWxsOiAnIzAwMCcsXG4gICAgICAgICAgICBzdHJva2U6ICcjMDAwJyxcbiAgICAgICAgICAgIHRleHRCYXNlbGluZTogJ21pZGRsZScsXG4gICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInXG4gICAgICAgICAgfSwgaWNvbiksXG4gICAgICAgICAgY2xhc3NOYW1lOiB0aGlzLnR5cGUgKyBcIi1pY29uXCIsXG4gICAgICAgICAgbmFtZTogdGhpcy50eXBlICsgXCItaWNvblwiLFxuICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW3RoaXMudHlwZSArIFwiLWljb25cIl0gPSBncm91cC5hZGRTaGFwZSgnaW1hZ2UnLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICAgIHg6IC13IC8gMixcbiAgICAgICAgICAgIHk6IC1oIC8gMlxuICAgICAgICAgIH0sIGljb24pLFxuICAgICAgICAgIGNsYXNzTmFtZTogdGhpcy50eXBlICsgXCItaWNvblwiLFxuICAgICAgICAgIG5hbWU6IHRoaXMudHlwZSArIFwiLWljb25cIixcbiAgICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5kcmF3TGlua1BvaW50cyhjZmcsIGdyb3VwKTtcbiAgICByZXR1cm4ga2V5U2hhcGU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOe7mOWItuiKgueCueS4iueahExpbmtQb2ludHNcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyBkYXRh5pWw5o2u6YWN572u6aG5XG4gICAqIEBwYXJhbSB7R3JvdXB9IGdyb3VwIEdyb3Vw5a6e5L6LXG4gICAqL1xuICBkcmF3TGlua1BvaW50czogZnVuY3Rpb24gZHJhd0xpbmtQb2ludHMoY2ZnLCBncm91cCkge1xuICAgIHZhciBfYSA9ICh0aGlzLm1lcmdlU3R5bGUgfHwgdGhpcy5nZXRPcHRpb25zKGNmZykpLmxpbmtQb2ludHMsXG4gICAgICAgIGxpbmtQb2ludHMgPSBfYSA9PT0gdm9pZCAwID8ge30gOiBfYTtcblxuICAgIHZhciB0b3AgPSBsaW5rUG9pbnRzLnRvcCxcbiAgICAgICAgbGVmdCA9IGxpbmtQb2ludHMubGVmdCxcbiAgICAgICAgcmlnaHQgPSBsaW5rUG9pbnRzLnJpZ2h0LFxuICAgICAgICBib3R0b20gPSBsaW5rUG9pbnRzLmJvdHRvbSxcbiAgICAgICAgbWFya1NpemUgPSBsaW5rUG9pbnRzLnNpemUsXG4gICAgICAgIG1hcmtSID0gbGlua1BvaW50cy5yLFxuICAgICAgICBtYXJrU3R5bGUgPSBfX3Jlc3QobGlua1BvaW50cywgW1widG9wXCIsIFwibGVmdFwiLCBcInJpZ2h0XCIsIFwiYm90dG9tXCIsIFwic2l6ZVwiLCBcInJcIl0pO1xuXG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgd2lkdGggPSBzaXplWzBdO1xuICAgIHZhciBoZWlnaHQgPSBzaXplWzFdO1xuXG4gICAgaWYgKGxlZnQpIHtcbiAgICAgIC8vIGxlZnQgY2lyY2xlXG4gICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1sZWZ0J10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICB4OiAtd2lkdGggLyAyLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtbGVmdCcsXG4gICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LWxlZnQnLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocmlnaHQpIHtcbiAgICAgIC8vIHJpZ2h0IGNpcmNsZVxuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtcmlnaHQnXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbWFya1N0eWxlKSwge1xuICAgICAgICAgIHg6IHdpZHRoIC8gMixcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LXJpZ2h0JyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtcmlnaHQnLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodG9wKSB7XG4gICAgICAvLyB0b3AgY2lyY2xlXG4gICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC10b3AnXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbWFya1N0eWxlKSwge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogLWhlaWdodCAvIDIsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtdG9wJyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtdG9wJyxcbiAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGJvdHRvbSkge1xuICAgICAgLy8gYm90dG9tIGNpcmNsZVxuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtYm90dG9tJ10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IGhlaWdodCAvIDIsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtYm90dG9tJyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtYm90dG9tJyxcbiAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICBnZXRQYXRoOiBmdW5jdGlvbiBnZXRQYXRoKGNmZykge1xuICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgdmFyIHdpZHRoID0gc2l6ZVswXTtcbiAgICB2YXIgaGVpZ2h0ID0gc2l6ZVsxXTtcbiAgICB2YXIgcGF0aCA9IFtbJ00nLCAwLCAtaGVpZ2h0IC8gMl0sIFsnTCcsIHdpZHRoIC8gMiwgMF0sIFsnTCcsIDAsIGhlaWdodCAvIDJdLCBbJ0wnLCAtd2lkdGggLyAyLCAwXSwgWydaJ10gLy8g5bCB6ZetXG4gICAgXTtcbiAgICByZXR1cm4gcGF0aDtcbiAgfSxcblxuICAvKipcbiAgICog6I635Y+W6IqC54K555qE5qC35byP77yM5L6b5Z+65LqO6K+l6IqC54K56Ieq5a6a5LmJ5pe25L2/55SoXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcg6IqC54K55pWw5o2u5qih5Z6LXG4gICAqIEByZXR1cm4ge09iamVjdH0g6IqC54K555qE5qC35byPXG4gICAqL1xuICBnZXRTaGFwZVN0eWxlOiBmdW5jdGlvbiBnZXRTaGFwZVN0eWxlKGNmZykge1xuICAgIHZhciBkZWZhdWx0U3R5bGUgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpKS5zdHlsZTtcbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvclxuICAgIH07IC8vIOWmguaenOiuvue9ruS6hmNvbG9y77yM5YiZ6KaG55uW6buY6K6k55qEc3Ryb2tl5bGe5oCnXG5cbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwgc3Ryb2tlU3R5bGUpO1xuICAgIHZhciBwYXRoID0gdGhpcy5nZXRQYXRoKGNmZyk7XG5cbiAgICB2YXIgc3R5bGVzID0gX19hc3NpZ24oe1xuICAgICAgcGF0aDogcGF0aFxuICAgIH0sIHN0eWxlKTtcblxuICAgIHJldHVybiBzdHlsZXM7XG4gIH0sXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKGNmZywgaXRlbSwgdXBkYXRlVHlwZSkge1xuICAgIHZhciBncm91cCA9IGl0ZW0uZ2V0Q29udGFpbmVyKCk7IC8vIOi/memHjOS4jeS8oCBjZmcg5Y+C5pWw5piv5Zug5Li6IGNmZy5zdHlsZSDpnIDopoHmnIDlkI7opobnm5bmoLflvI9cblxuICAgIHZhciBkZWZhdWx0U3R5bGUgPSB0aGlzLmdldE9wdGlvbnMoe30pLnN0eWxlO1xuICAgIHZhciBwYXRoID0gdGhpcy5nZXRQYXRoKGNmZyk7IC8vIOS4i+mdoui/meS6m+WxnuaAp+mcgOimgeimhueblum7mOiupOagt+W8j+S4juebruWJjeagt+W8j++8jOS9huiLpeWcqCBjZmcg5Lit5pyJ5oyH5a6a5YiZ5bqU6K+l6KKrIGNmZyDnmoTnm7jlupTphY3nva7opobnm5bjgIJcblxuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yLFxuICAgICAgcGF0aDogcGF0aFxuICAgIH07IC8vIOS4jiBnZXRTaGFwZVN0eWxlIOS4jeWQjOWcqOS6ju+8jHVwZGF0ZSDml7bpnIDopoHojrflj5bliLDlvZPliY3nmoQgc3R5bGUg6L+b6KGM6J6N5ZCI44CC5Y2z5paw5Lyg5YWl55qE6YWN572u6aG55Lit5rKh5pyJ5raJ5Y+K55qE5bGe5oCn77yM5L+d55WZ5b2T5YmN55qE6YWN572u44CCXG5cbiAgICB2YXIga2V5U2hhcGUgPSBpdGVtLmdldCgna2V5U2hhcGUnKTtcbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwga2V5U2hhcGUuYXR0cigpLCBzdHJva2VTdHlsZSk7XG4gICAgc3R5bGUgPSBtaXgoc3R5bGUsIGNmZy5zdHlsZSk7XG4gICAgdGhpcy51cGRhdGVTaGFwZShjZmcsIGl0ZW0sIHN0eWxlLCB0cnVlLCB1cGRhdGVUeXBlKTtcbiAgICB0aGlzLnVwZGF0ZUxpbmtQb2ludHMoY2ZnLCBncm91cCk7XG4gIH1cbn0sICdzaW5nbGUtbm9kZScpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/diamond.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/donut.js":
/*!*********************************************************************************!*\
!*** ./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/donut.js ***!
\*********************************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\n\n\nvar defaultSubjectColors = _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"Util\"].defaultSubjectColors; // 饼图节点\n\nObject(_antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerNode\"])('donut', {\n // 自定义节点时的配置\n options: {\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.size,\n style: {\n x: 0,\n y: 0,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.stroke,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.fill,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.lineWidth\n },\n labelCfg: {\n style: {\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fill,\n fontSize: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fontSize,\n fontFamily: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].windowFontFamily\n }\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.size,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.lineWidth,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.fill,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.stroke\n },\n // 节点中icon配置\n icon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: false,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/bmw-prod/5d015065-8505-4e7a-baec-976f81e3c41d.svg',\n width: 20,\n height: 20\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeStateStyles)\n },\n shapeType: 'circle',\n // 文本位置\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).icon,\n defaultIcon = _a === void 0 ? {} : _a;\n var style = this.getShapeStyle(cfg);\n var icon = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"deepMix\"])({}, defaultIcon, cfg.icon);\n var keyShape = group.addShape('circle', {\n attrs: style,\n className: this.type + \"-keyShape\",\n draggable: true,\n name: this.type + \"-keyShape\"\n });\n group['shapeMap'][this.type + \"-keyShape\"] = keyShape;\n var width = icon.width,\n height = icon.height,\n show = icon.show,\n text = icon.text;\n\n if (show) {\n if (text) {\n group['shapeMap'][this.type + \"-icon\"] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, icon),\n className: this.type + \"-icon\",\n name: this.type + \"-icon\",\n draggable: true\n });\n } else {\n group['shapeMap'][this.type + \"-icon\"] = group.addShape('image', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -width / 2,\n y: -height / 2\n }, icon),\n className: this.type + \"-icon\",\n name: this.type + \"-icon\",\n draggable: true\n });\n }\n }\n\n var donutR = keyShape.attr('r');\n var innerR = 0.6 * donutR; // 甜甜圈的内环半径\n\n var arcR = (donutR + innerR) / 2; // 内环半径与外环半径的平均值\n\n var _b = cfg,\n _c = _b.donutAttrs,\n donutAttrs = _c === void 0 ? {} : _c,\n _d = _b.donutColorMap,\n donutColorMap = _d === void 0 ? {} : _d;\n var attrNum = Object.keys(donutAttrs).length;\n\n if (donutAttrs && attrNum > 1) {\n var attrs_1 = [];\n var totalValue_1 = 0;\n Object.keys(donutAttrs).forEach(function (name) {\n var value = donutAttrs[name] || 0;\n if (!Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"isNumber\"])(value)) return;\n attrs_1.push({\n key: name,\n value: value,\n color: donutColorMap[name]\n });\n totalValue_1 += value;\n });\n\n if (totalValue_1) {\n var lineWidth_1 = donutR - innerR;\n\n if (attrNum === 1) {\n group['shapeMap']['fan-shape-0'] = group.addShape('circle', {\n attrs: {\n r: arcR,\n x: 0,\n y: 0,\n stroke: attrs_1[0].color || defaultSubjectColors[0],\n lineWidth: lineWidth_1\n },\n name: \"fan-shape-0\"\n });\n return;\n }\n\n var arcBegin_1 = [arcR, 0];\n var beginAngle_1 = 0;\n attrs_1.forEach(function (attr, i) {\n var percent = attr.value / totalValue_1;\n if (percent < 0.001) return;\n if (percent > 0.999) percent = 1;\n\n if (percent === 1) {\n group['shapeMap'][\"fan-shape-\" + i] = group.addShape('circle', {\n attrs: {\n r: arcR,\n x: 0,\n y: 0,\n stroke: attr.color || defaultSubjectColors[i % defaultSubjectColors.length],\n lineWidth: lineWidth_1\n },\n name: \"fan-shape-\" + i\n });\n return;\n }\n\n attr.percent = percent;\n attr.angle = percent * Math.PI * 2;\n attr.beginAgnle = beginAngle_1;\n beginAngle_1 += attr.angle;\n attr.endAngle = beginAngle_1;\n attr.arcBegin = arcBegin_1;\n attr.arcEnd = [arcR * Math.cos(attr.endAngle), -arcR * Math.sin(attr.endAngle)];\n var isBig = attr.angle > Math.PI ? 1 : 0;\n var path = [['M', attr.arcBegin[0], attr.arcBegin[1]], ['A', arcR, arcR, 0, isBig, 0, attr.arcEnd[0], attr.arcEnd[1]], ['L', attr.arcEnd[0], attr.arcEnd[1]]];\n group['shapeMap'][\"fan-shape-\" + i] = group.addShape('path', {\n attrs: {\n path: path,\n lineWidth: lineWidth_1,\n stroke: attr.color || defaultSubjectColors[i % defaultSubjectColors.length]\n },\n name: \"fan-shape-\" + i\n });\n arcBegin_1 = attr.arcEnd;\n });\n }\n }\n\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n update: undefined\n}, 'circle');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWVsZW1lbnRAMC41LjBAQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9kb251dC5qcz84MDJjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ3dDO0FBQzFCO0FBQy9DLDJCQUEyQixrREFBSSxzQkFBc0I7O0FBRXJELGtFQUFZO0FBQ1o7QUFDQTtBQUNBLFVBQVUsd0RBQU07QUFDaEI7QUFDQTtBQUNBO0FBQ0EsY0FBYyx3REFBTTtBQUNwQixZQUFZLHdEQUFNO0FBQ2xCLGlCQUFpQix3REFBTTtBQUN2QixLQUFLO0FBQ0w7QUFDQTtBQUNBLGNBQWMsd0RBQU07QUFDcEIsa0JBQWtCLHdEQUFNO0FBQ3hCLG9CQUFvQix3REFBTTtBQUMxQjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksd0RBQU07QUFDbEIsaUJBQWlCLHdEQUFNO0FBQ3ZCLFlBQVksd0RBQU07QUFDbEIsY0FBYyx3REFBTTtBQUNwQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxpQkFBaUIsc0RBQVEsR0FBRyxFQUFFLHdEQUFNO0FBQ3BDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDO0FBQ3hDO0FBQ0EsZUFBZSwwREFBTyxHQUFHO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLGlCQUFpQixzREFBUTtBQUN6QjtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0EsOEJBQThCOztBQUU5QixxQ0FBcUM7O0FBRXJDO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQSwwQ0FBMEM7QUFDMUM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsMkRBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxPQUFPOztBQUVQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFdBQVc7QUFDWDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFdBQVc7QUFDWDtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1lbGVtZW50QDAuNS4wQEBhbnR2L2c2LWVsZW1lbnQvZXMvbm9kZXMvZG9udXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgcmVnaXN0ZXJOb2RlLCBCYXNlR2xvYmFsIGFzIEdsb2JhbCwgVXRpbCB9IGZyb20gJ0BhbnR2L2c2LWNvcmUnO1xuaW1wb3J0IHsgZGVlcE1peCwgaXNOdW1iZXIgfSBmcm9tICdAYW50di91dGlsJztcbnZhciBkZWZhdWx0U3ViamVjdENvbG9ycyA9IFV0aWwuZGVmYXVsdFN1YmplY3RDb2xvcnM7IC8vIOmlvOWbvuiKgueCuVxuXG5yZWdpc3Rlck5vZGUoJ2RvbnV0Jywge1xuICAvLyDoh6rlrprkuYnoioLngrnml7bnmoTphY3nva5cbiAgb3B0aW9uczoge1xuICAgIHNpemU6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zaXplLFxuICAgIHN0eWxlOiB7XG4gICAgICB4OiAwLFxuICAgICAgeTogMCxcbiAgICAgIHN0cm9rZTogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLnN0cm9rZSxcbiAgICAgIGZpbGw6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zdHlsZS5maWxsLFxuICAgICAgbGluZVdpZHRoOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUubGluZVdpZHRoXG4gICAgfSxcbiAgICBsYWJlbENmZzoge1xuICAgICAgc3R5bGU6IHtcbiAgICAgICAgZmlsbDogR2xvYmFsLm5vZGVMYWJlbC5zdHlsZS5maWxsLFxuICAgICAgICBmb250U2l6ZTogR2xvYmFsLm5vZGVMYWJlbC5zdHlsZS5mb250U2l6ZSxcbiAgICAgICAgZm9udEZhbWlseTogR2xvYmFsLndpbmRvd0ZvbnRGYW1pbHlcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIOiKgueCueS4iuW3puWPs+S4iuS4i+Wbm+S4quaWueWQkeS4iueahOmTvuaOpWNpcmNsZemFjee9rlxuICAgIGxpbmtQb2ludHM6IHtcbiAgICAgIHRvcDogZmFsc2UsXG4gICAgICByaWdodDogZmFsc2UsXG4gICAgICBib3R0b206IGZhbHNlLFxuICAgICAgbGVmdDogZmFsc2UsXG4gICAgICAvLyBjaXJjbGXnmoTlpKflsI9cbiAgICAgIHNpemU6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLnNpemUsXG4gICAgICBsaW5lV2lkdGg6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLmxpbmVXaWR0aCxcbiAgICAgIGZpbGw6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLmZpbGwsXG4gICAgICBzdHJva2U6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLnN0cm9rZVxuICAgIH0sXG4gICAgLy8g6IqC54K55LitaWNvbumFjee9rlxuICAgIGljb246IHtcbiAgICAgIC8vIOaYr+WQpuaYvuekumljb27vvIzlgLzkuLogZmFsc2Ug5YiZ5LiN5riy5p+TaWNvblxuICAgICAgc2hvdzogZmFsc2UsXG4gICAgICAvLyBpY29u55qE5Zyw5Z2A77yM5a2X56ym5Liy57G75Z6LXG4gICAgICBpbWc6ICdodHRwczovL2d3LmFsaXBheW9iamVjdHMuY29tL3pvcy9ibXctcHJvZC81ZDAxNTA2NS04NTA1LTRlN2EtYmFlYy05NzZmODFlM2M0MWQuc3ZnJyxcbiAgICAgIHdpZHRoOiAyMCxcbiAgICAgIGhlaWdodDogMjBcbiAgICB9LFxuICAgIHN0YXRlU3R5bGVzOiBfX2Fzc2lnbih7fSwgR2xvYmFsLm5vZGVTdGF0ZVN0eWxlcylcbiAgfSxcbiAgc2hhcGVUeXBlOiAnY2lyY2xlJyxcbiAgLy8g5paH5pys5L2N572uXG4gIGxhYmVsUG9zaXRpb246ICdjZW50ZXInLFxuICBkcmF3U2hhcGU6IGZ1bmN0aW9uIGRyYXdTaGFwZShjZmcsIGdyb3VwKSB7XG4gICAgdmFyIF9hID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkuaWNvbixcbiAgICAgICAgZGVmYXVsdEljb24gPSBfYSA9PT0gdm9pZCAwID8ge30gOiBfYTtcbiAgICB2YXIgc3R5bGUgPSB0aGlzLmdldFNoYXBlU3R5bGUoY2ZnKTtcbiAgICB2YXIgaWNvbiA9IGRlZXBNaXgoe30sIGRlZmF1bHRJY29uLCBjZmcuaWNvbik7XG4gICAgdmFyIGtleVNoYXBlID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgIGF0dHJzOiBzdHlsZSxcbiAgICAgIGNsYXNzTmFtZTogdGhpcy50eXBlICsgXCIta2V5U2hhcGVcIixcbiAgICAgIGRyYWdnYWJsZTogdHJ1ZSxcbiAgICAgIG5hbWU6IHRoaXMudHlwZSArIFwiLWtleVNoYXBlXCJcbiAgICB9KTtcbiAgICBncm91cFsnc2hhcGVNYXAnXVt0aGlzLnR5cGUgKyBcIi1rZXlTaGFwZVwiXSA9IGtleVNoYXBlO1xuICAgIHZhciB3aWR0aCA9IGljb24ud2lkdGgsXG4gICAgICAgIGhlaWdodCA9IGljb24uaGVpZ2h0LFxuICAgICAgICBzaG93ID0gaWNvbi5zaG93LFxuICAgICAgICB0ZXh0ID0gaWNvbi50ZXh0O1xuXG4gICAgaWYgKHNob3cpIHtcbiAgICAgIGlmICh0ZXh0KSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW3RoaXMudHlwZSArIFwiLWljb25cIl0gPSBncm91cC5hZGRTaGFwZSgndGV4dCcsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICBmb250U2l6ZTogMTIsXG4gICAgICAgICAgICBmaWxsOiAnIzAwMCcsXG4gICAgICAgICAgICBzdHJva2U6ICcjMDAwJyxcbiAgICAgICAgICAgIHRleHRCYXNlbGluZTogJ21pZGRsZScsXG4gICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInXG4gICAgICAgICAgfSwgaWNvbiksXG4gICAgICAgICAgY2xhc3NOYW1lOiB0aGlzLnR5cGUgKyBcIi1pY29uXCIsXG4gICAgICAgICAgbmFtZTogdGhpcy50eXBlICsgXCItaWNvblwiLFxuICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW3RoaXMudHlwZSArIFwiLWljb25cIl0gPSBncm91cC5hZGRTaGFwZSgnaW1hZ2UnLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICAgIHg6IC13aWR0aCAvIDIsXG4gICAgICAgICAgICB5OiAtaGVpZ2h0IC8gMlxuICAgICAgICAgIH0sIGljb24pLFxuICAgICAgICAgIGNsYXNzTmFtZTogdGhpcy50eXBlICsgXCItaWNvblwiLFxuICAgICAgICAgIG5hbWU6IHRoaXMudHlwZSArIFwiLWljb25cIixcbiAgICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRvbnV0UiA9IGtleVNoYXBlLmF0dHIoJ3InKTtcbiAgICB2YXIgaW5uZXJSID0gMC42ICogZG9udXRSOyAvLyDnlJznlJzlnIjnmoTlhoXnjq/ljYrlvoRcblxuICAgIHZhciBhcmNSID0gKGRvbnV0UiArIGlubmVyUikgLyAyOyAvLyDlhoXnjq/ljYrlvoTkuI7lpJbnjq/ljYrlvoTnmoTlubPlnYflgLxcblxuICAgIHZhciBfYiA9IGNmZyxcbiAgICAgICAgX2MgPSBfYi5kb251dEF0dHJzLFxuICAgICAgICBkb251dEF0dHJzID0gX2MgPT09IHZvaWQgMCA/IHt9IDogX2MsXG4gICAgICAgIF9kID0gX2IuZG9udXRDb2xvck1hcCxcbiAgICAgICAgZG9udXRDb2xvck1hcCA9IF9kID09PSB2b2lkIDAgPyB7fSA6IF9kO1xuICAgIHZhciBhdHRyTnVtID0gT2JqZWN0LmtleXMoZG9udXRBdHRycykubGVuZ3RoO1xuXG4gICAgaWYgKGRvbnV0QXR0cnMgJiYgYXR0ck51bSA+IDEpIHtcbiAgICAgIHZhciBhdHRyc18xID0gW107XG4gICAgICB2YXIgdG90YWxWYWx1ZV8xID0gMDtcbiAgICAgIE9iamVjdC5rZXlzKGRvbnV0QXR0cnMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gZG9udXRBdHRyc1tuYW1lXSB8fCAwO1xuICAgICAgICBpZiAoIWlzTnVtYmVyKHZhbHVlKSkgcmV0dXJuO1xuICAgICAgICBhdHRyc18xLnB1c2goe1xuICAgICAgICAgIGtleTogbmFtZSxcbiAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgY29sb3I6IGRvbnV0Q29sb3JNYXBbbmFtZV1cbiAgICAgICAgfSk7XG4gICAgICAgIHRvdGFsVmFsdWVfMSArPSB2YWx1ZTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodG90YWxWYWx1ZV8xKSB7XG4gICAgICAgIHZhciBsaW5lV2lkdGhfMSA9IGRvbnV0UiAtIGlubmVyUjtcblxuICAgICAgICBpZiAoYXR0ck51bSA9PT0gMSkge1xuICAgICAgICAgIGdyb3VwWydzaGFwZU1hcCddWydmYW4tc2hhcGUtMCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgIHI6IGFyY1IsXG4gICAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICAgIHN0cm9rZTogYXR0cnNfMVswXS5jb2xvciB8fCBkZWZhdWx0U3ViamVjdENvbG9yc1swXSxcbiAgICAgICAgICAgICAgbGluZVdpZHRoOiBsaW5lV2lkdGhfMVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5hbWU6IFwiZmFuLXNoYXBlLTBcIlxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBhcmNCZWdpbl8xID0gW2FyY1IsIDBdO1xuICAgICAgICB2YXIgYmVnaW5BbmdsZV8xID0gMDtcbiAgICAgICAgYXR0cnNfMS5mb3JFYWNoKGZ1bmN0aW9uIChhdHRyLCBpKSB7XG4gICAgICAgICAgdmFyIHBlcmNlbnQgPSBhdHRyLnZhbHVlIC8gdG90YWxWYWx1ZV8xO1xuICAgICAgICAgIGlmIChwZXJjZW50IDwgMC4wMDEpIHJldHVybjtcbiAgICAgICAgICBpZiAocGVyY2VudCA+IDAuOTk5KSBwZXJjZW50ID0gMTtcblxuICAgICAgICAgIGlmIChwZXJjZW50ID09PSAxKSB7XG4gICAgICAgICAgICBncm91cFsnc2hhcGVNYXAnXVtcImZhbi1zaGFwZS1cIiArIGldID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICByOiBhcmNSLFxuICAgICAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgICAgICBzdHJva2U6IGF0dHIuY29sb3IgfHwgZGVmYXVsdFN1YmplY3RDb2xvcnNbaSAlIGRlZmF1bHRTdWJqZWN0Q29sb3JzLmxlbmd0aF0sXG4gICAgICAgICAgICAgICAgbGluZVdpZHRoOiBsaW5lV2lkdGhfMVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBuYW1lOiBcImZhbi1zaGFwZS1cIiArIGlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGF0dHIucGVyY2VudCA9IHBlcmNlbnQ7XG4gICAgICAgICAgYXR0ci5hbmdsZSA9IHBlcmNlbnQgKiBNYXRoLlBJICogMjtcbiAgICAgICAgICBhdHRyLmJlZ2luQWdubGUgPSBiZWdpbkFuZ2xlXzE7XG4gICAgICAgICAgYmVnaW5BbmdsZV8xICs9IGF0dHIuYW5nbGU7XG4gICAgICAgICAgYXR0ci5lbmRBbmdsZSA9IGJlZ2luQW5nbGVfMTtcbiAgICAgICAgICBhdHRyLmFyY0JlZ2luID0gYXJjQmVnaW5fMTtcbiAgICAgICAgICBhdHRyLmFyY0VuZCA9IFthcmNSICogTWF0aC5jb3MoYXR0ci5lbmRBbmdsZSksIC1hcmNSICogTWF0aC5zaW4oYXR0ci5lbmRBbmdsZSldO1xuICAgICAgICAgIHZhciBpc0JpZyA9IGF0dHIuYW5nbGUgPiBNYXRoLlBJID8gMSA6IDA7XG4gICAgICAgICAgdmFyIHBhdGggPSBbWydNJywgYXR0ci5hcmNCZWdpblswXSwgYXR0ci5hcmNCZWdpblsxXV0sIFsnQScsIGFyY1IsIGFyY1IsIDAsIGlzQmlnLCAwLCBhdHRyLmFyY0VuZFswXSwgYXR0ci5hcmNFbmRbMV1dLCBbJ0wnLCBhdHRyLmFyY0VuZFswXSwgYXR0ci5hcmNFbmRbMV1dXTtcbiAgICAgICAgICBncm91cFsnc2hhcGVNYXAnXVtcImZhbi1zaGFwZS1cIiArIGldID0gZ3JvdXAuYWRkU2hhcGUoJ3BhdGgnLCB7XG4gICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICBwYXRoOiBwYXRoLFxuICAgICAgICAgICAgICBsaW5lV2lkdGg6IGxpbmVXaWR0aF8xLFxuICAgICAgICAgICAgICBzdHJva2U6IGF0dHIuY29sb3IgfHwgZGVmYXVsdFN1YmplY3RDb2xvcnNbaSAlIGRlZmF1bHRTdWJqZWN0Q29sb3JzLmxlbmd0aF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuYW1lOiBcImZhbi1zaGFwZS1cIiArIGlcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBhcmNCZWdpbl8xID0gYXR0ci5hcmNFbmQ7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZHJhd0xpbmtQb2ludHMoY2ZnLCBncm91cCk7XG4gICAgcmV0dXJuIGtleVNoYXBlO1xuICB9LFxuICB1cGRhdGU6IHVuZGVmaW5lZFxufSwgJ2NpcmNsZScpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/donut.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/ellipse.js":
/*!***********************************************************************************!*\
!*** ./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/ellipse.js ***!
\***********************************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\n\n\n/**\n * 基本的椭圆,可以添加文本,默认文本居中\n */\n\nObject(_antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerNode\"])('ellipse', {\n // 自定义节点时的配置\n options: {\n size: [80, 40],\n style: {\n x: 0,\n y: 0,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.stroke,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.fill,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.lineWidth\n },\n // 文本样式配置\n labelCfg: {\n style: {\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fill,\n fontSize: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fontSize,\n fontFamily: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].windowFontFamily\n }\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.size,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.lineWidth,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.fill,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.stroke\n },\n // 节点中icon配置\n icon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: false,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/bmw-prod/5d015065-8505-4e7a-baec-976f81e3c41d.svg',\n width: 20,\n height: 20\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeStateStyles)\n },\n shapeType: 'ellipse',\n // 文本位置\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).icon,\n icon = _a === void 0 ? {} : _a;\n var style = this.getShapeStyle(cfg);\n var keyShape = group.addShape('ellipse', {\n attrs: style,\n className: 'ellipse-keyShape',\n name: 'ellipse-keyShape',\n draggable: true\n });\n group['shapeMap']['ellipse-keyShape'] = keyShape;\n var width = icon.width,\n height = icon.height,\n show = icon.show,\n text = icon.text;\n\n if (show) {\n if (text) {\n group['shapeMap'][this.type + \"-icon\"] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, icon),\n className: this.type + \"-icon\",\n name: this.type + \"-icon\",\n draggable: true\n });\n } else {\n group['shapeMap'][this.type + \"-icon\"] = group.addShape('image', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -width / 2,\n y: -height / 2\n }, icon),\n className: this.type + \"-icon\",\n name: this.type + \"-icon\",\n draggable: true\n });\n }\n }\n\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n\n /**\n * 绘制节点上的LinkPoints\n * @param {Object} cfg data数据配置项\n * @param {Group} group Group实例\n */\n drawLinkPoints: function drawLinkPoints(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).linkPoints,\n linkPoints = _a === void 0 ? {} : _a;\n\n var top = linkPoints.top,\n left = linkPoints.left,\n right = linkPoints.right,\n bottom = linkPoints.bottom,\n markSize = linkPoints.size,\n markR = linkPoints.r,\n markStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(linkPoints, [\"top\", \"left\", \"right\", \"bottom\", \"size\", \"r\"]);\n\n var size = this.getSize(cfg);\n var rx = size[0] / 2;\n var ry = size[1] / 2;\n\n if (left) {\n // left circle\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: -rx,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-left',\n name: 'link-point-left',\n isAnchorPoint: true\n });\n }\n\n if (right) {\n // right circle\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: rx,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-right',\n name: 'link-point-right',\n isAnchorPoint: true\n });\n }\n\n if (top) {\n // top circle\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: -ry,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-top',\n name: 'link-point-top',\n isAnchorPoint: true\n });\n }\n\n if (bottom) {\n // bottom circle\n group['shapeMap']['link-point-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: ry,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-bottom',\n name: 'link-point-bottom',\n isAnchorPoint: true\n });\n }\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, defaultStyle, strokeStyle);\n var size = this.getSize(cfg);\n var rx = size[0] / 2;\n var ry = size[1] / 2;\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n rx: rx,\n ry: ry\n }, style);\n\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var group = item.getContainer(); // 这里不传 cfg 参数是因为 cfg.style 需要最后覆盖样式\n\n var defaultStyle = this.getOptions({}).style;\n var size = this.getSize(cfg);\n var strokeStyle = {\n stroke: cfg.color,\n rx: size[0] / 2,\n ry: size[1] / 2\n }; // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n\n var keyShape = item.get('keyShape');\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, defaultStyle, keyShape.attr(), strokeStyle);\n style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])(style, cfg.style);\n this.updateShape(cfg, item, style, true, updateType);\n this.updateLinkPoints(cfg, group);\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWVsZW1lbnRAMC41LjBAQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9lbGxpcHNlLmpzPzIzOGYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBeUM7QUFDMEI7QUFDbEM7QUFDakM7QUFDQTtBQUNBOztBQUVBLGtFQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyx3REFBTTtBQUNwQixZQUFZLHdEQUFNO0FBQ2xCLGlCQUFpQix3REFBTTtBQUN2QixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsY0FBYyx3REFBTTtBQUNwQixrQkFBa0Isd0RBQU07QUFDeEIsb0JBQW9CLHdEQUFNO0FBQzFCO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx3REFBTTtBQUNsQixpQkFBaUIsd0RBQU07QUFDdkIsWUFBWSx3REFBTTtBQUNsQixjQUFjLHdEQUFNO0FBQ3BCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLGlCQUFpQixzREFBUSxHQUFHLEVBQUUsd0RBQU07QUFDcEMsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHNEQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixvREFBTTs7QUFFMUI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOLGdCQUFnQixzREFBRyxHQUFHO0FBQ3RCO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0EsR0FBRztBQUNIO0FBQ0Esb0NBQW9DOztBQUVwQyx5Q0FBeUM7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQSxnQkFBZ0Isc0RBQUcsR0FBRztBQUN0QixZQUFZLHNEQUFHO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtZWxlbWVudEAwLjUuMEBAYW50di9nNi1lbGVtZW50L2VzL25vZGVzL2VsbGlwc2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiwgX19yZXN0IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyByZWdpc3Rlck5vZGUsIEJhc2VHbG9iYWwgYXMgR2xvYmFsIH0gZnJvbSAnQGFudHYvZzYtY29yZSc7XG5pbXBvcnQgeyBtaXggfSBmcm9tICdAYW50di91dGlsJztcbi8qKlxuICog5Z+65pys55qE5qSt5ZyG77yM5Y+v5Lul5re75Yqg5paH5pys77yM6buY6K6k5paH5pys5bGF5LitXG4gKi9cblxucmVnaXN0ZXJOb2RlKCdlbGxpcHNlJywge1xuICAvLyDoh6rlrprkuYnoioLngrnml7bnmoTphY3nva5cbiAgb3B0aW9uczoge1xuICAgIHNpemU6IFs4MCwgNDBdLFxuICAgIHN0eWxlOiB7XG4gICAgICB4OiAwLFxuICAgICAgeTogMCxcbiAgICAgIHN0cm9rZTogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLnN0cm9rZSxcbiAgICAgIGZpbGw6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zdHlsZS5maWxsLFxuICAgICAgbGluZVdpZHRoOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUubGluZVdpZHRoXG4gICAgfSxcbiAgICAvLyDmlofmnKzmoLflvI/phY3nva5cbiAgICBsYWJlbENmZzoge1xuICAgICAgc3R5bGU6IHtcbiAgICAgICAgZmlsbDogR2xvYmFsLm5vZGVMYWJlbC5zdHlsZS5maWxsLFxuICAgICAgICBmb250U2l6ZTogR2xvYmFsLm5vZGVMYWJlbC5zdHlsZS5mb250U2l6ZSxcbiAgICAgICAgZm9udEZhbWlseTogR2xvYmFsLndpbmRvd0ZvbnRGYW1pbHlcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIOiKgueCueS4iuW3puWPs+S4iuS4i+Wbm+S4quaWueWQkeS4iueahOmTvuaOpWNpcmNsZemFjee9rlxuICAgIGxpbmtQb2ludHM6IHtcbiAgICAgIHRvcDogZmFsc2UsXG4gICAgICByaWdodDogZmFsc2UsXG4gICAgICBib3R0b206IGZhbHNlLFxuICAgICAgbGVmdDogZmFsc2UsXG4gICAgICAvLyBjaXJjbGXnmoTlpKflsI9cbiAgICAgIHNpemU6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLnNpemUsXG4gICAgICBsaW5lV2lkdGg6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLmxpbmVXaWR0aCxcbiAgICAgIGZpbGw6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLmZpbGwsXG4gICAgICBzdHJva2U6IEdsb2JhbC5kZWZhdWx0Tm9kZS5saW5rUG9pbnRzLnN0cm9rZVxuICAgIH0sXG4gICAgLy8g6IqC54K55LitaWNvbumFjee9rlxuICAgIGljb246IHtcbiAgICAgIC8vIOaYr+WQpuaYvuekumljb27vvIzlgLzkuLogZmFsc2Ug5YiZ5LiN5riy5p+TaWNvblxuICAgICAgc2hvdzogZmFsc2UsXG4gICAgICAvLyBpY29u55qE5Zyw5Z2A77yM5a2X56ym5Liy57G75Z6LXG4gICAgICBpbWc6ICdodHRwczovL2d3LmFsaXBheW9iamVjdHMuY29tL3pvcy9ibXctcHJvZC81ZDAxNTA2NS04NTA1LTRlN2EtYmFlYy05NzZmODFlM2M0MWQuc3ZnJyxcbiAgICAgIHdpZHRoOiAyMCxcbiAgICAgIGhlaWdodDogMjBcbiAgICB9LFxuICAgIHN0YXRlU3R5bGVzOiBfX2Fzc2lnbih7fSwgR2xvYmFsLm5vZGVTdGF0ZVN0eWxlcylcbiAgfSxcbiAgc2hhcGVUeXBlOiAnZWxsaXBzZScsXG4gIC8vIOaWh+acrOS9jee9rlxuICBsYWJlbFBvc2l0aW9uOiAnY2VudGVyJyxcbiAgZHJhd1NoYXBlOiBmdW5jdGlvbiBkcmF3U2hhcGUoY2ZnLCBncm91cCkge1xuICAgIHZhciBfYSA9ICh0aGlzLm1lcmdlU3R5bGUgfHwgdGhpcy5nZXRPcHRpb25zKGNmZykpLmljb24sXG4gICAgICAgIGljb24gPSBfYSA9PT0gdm9pZCAwID8ge30gOiBfYTtcbiAgICB2YXIgc3R5bGUgPSB0aGlzLmdldFNoYXBlU3R5bGUoY2ZnKTtcbiAgICB2YXIga2V5U2hhcGUgPSBncm91cC5hZGRTaGFwZSgnZWxsaXBzZScsIHtcbiAgICAgIGF0dHJzOiBzdHlsZSxcbiAgICAgIGNsYXNzTmFtZTogJ2VsbGlwc2Uta2V5U2hhcGUnLFxuICAgICAgbmFtZTogJ2VsbGlwc2Uta2V5U2hhcGUnLFxuICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2VsbGlwc2Uta2V5U2hhcGUnXSA9IGtleVNoYXBlO1xuICAgIHZhciB3aWR0aCA9IGljb24ud2lkdGgsXG4gICAgICAgIGhlaWdodCA9IGljb24uaGVpZ2h0LFxuICAgICAgICBzaG93ID0gaWNvbi5zaG93LFxuICAgICAgICB0ZXh0ID0gaWNvbi50ZXh0O1xuXG4gICAgaWYgKHNob3cpIHtcbiAgICAgIGlmICh0ZXh0KSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW3RoaXMudHlwZSArIFwiLWljb25cIl0gPSBncm91cC5hZGRTaGFwZSgndGV4dCcsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICBmb250U2l6ZTogMTIsXG4gICAgICAgICAgICBmaWxsOiAnIzAwMCcsXG4gICAgICAgICAgICBzdHJva2U6ICcjMDAwJyxcbiAgICAgICAgICAgIHRleHRCYXNlbGluZTogJ21pZGRsZScsXG4gICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInXG4gICAgICAgICAgfSwgaWNvbiksXG4gICAgICAgICAgY2xhc3NOYW1lOiB0aGlzLnR5cGUgKyBcIi1pY29uXCIsXG4gICAgICAgICAgbmFtZTogdGhpcy50eXBlICsgXCItaWNvblwiLFxuICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW3RoaXMudHlwZSArIFwiLWljb25cIl0gPSBncm91cC5hZGRTaGFwZSgnaW1hZ2UnLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICAgIHg6IC13aWR0aCAvIDIsXG4gICAgICAgICAgICB5OiAtaGVpZ2h0IC8gMlxuICAgICAgICAgIH0sIGljb24pLFxuICAgICAgICAgIGNsYXNzTmFtZTogdGhpcy50eXBlICsgXCItaWNvblwiLFxuICAgICAgICAgIG5hbWU6IHRoaXMudHlwZSArIFwiLWljb25cIixcbiAgICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5kcmF3TGlua1BvaW50cyhjZmcsIGdyb3VwKTtcbiAgICByZXR1cm4ga2V5U2hhcGU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOe7mOWItuiKgueCueS4iueahExpbmtQb2ludHNcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyBkYXRh5pWw5o2u6YWN572u6aG5XG4gICAqIEBwYXJhbSB7R3JvdXB9IGdyb3VwIEdyb3Vw5a6e5L6LXG4gICAqL1xuICBkcmF3TGlua1BvaW50czogZnVuY3Rpb24gZHJhd0xpbmtQb2ludHMoY2ZnLCBncm91cCkge1xuICAgIHZhciBfYSA9ICh0aGlzLm1lcmdlU3R5bGUgfHwgdGhpcy5nZXRPcHRpb25zKGNmZykpLmxpbmtQb2ludHMsXG4gICAgICAgIGxpbmtQb2ludHMgPSBfYSA9PT0gdm9pZCAwID8ge30gOiBfYTtcblxuICAgIHZhciB0b3AgPSBsaW5rUG9pbnRzLnRvcCxcbiAgICAgICAgbGVmdCA9IGxpbmtQb2ludHMubGVmdCxcbiAgICAgICAgcmlnaHQgPSBsaW5rUG9pbnRzLnJpZ2h0LFxuICAgICAgICBib3R0b20gPSBsaW5rUG9pbnRzLmJvdHRvbSxcbiAgICAgICAgbWFya1NpemUgPSBsaW5rUG9pbnRzLnNpemUsXG4gICAgICAgIG1hcmtSID0gbGlua1BvaW50cy5yLFxuICAgICAgICBtYXJrU3R5bGUgPSBfX3Jlc3QobGlua1BvaW50cywgW1widG9wXCIsIFwibGVmdFwiLCBcInJpZ2h0XCIsIFwiYm90dG9tXCIsIFwic2l6ZVwiLCBcInJcIl0pO1xuXG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgcnggPSBzaXplWzBdIC8gMjtcbiAgICB2YXIgcnkgPSBzaXplWzFdIC8gMjtcblxuICAgIGlmIChsZWZ0KSB7XG4gICAgICAvLyBsZWZ0IGNpcmNsZVxuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtbGVmdCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogLXJ4LFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtbGVmdCcsXG4gICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LWxlZnQnLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocmlnaHQpIHtcbiAgICAgIC8vIHJpZ2h0IGNpcmNsZVxuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtcmlnaHQnXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbWFya1N0eWxlKSwge1xuICAgICAgICAgIHg6IHJ4LFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtcmlnaHQnLFxuICAgICAgICBuYW1lOiAnbGluay1wb2ludC1yaWdodCcsXG4gICAgICAgIGlzQW5jaG9yUG9pbnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0b3ApIHtcbiAgICAgIC8vIHRvcCBjaXJjbGVcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXRvcCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAtcnksXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtdG9wJyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtdG9wJyxcbiAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGJvdHRvbSkge1xuICAgICAgLy8gYm90dG9tIGNpcmNsZVxuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtYm90dG9tJ10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IHJ5LFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LWJvdHRvbScsXG4gICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LWJvdHRvbScsXG4gICAgICAgIGlzQW5jaG9yUG9pbnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICog6I635Y+W6IqC54K555qE5qC35byP77yM5L6b5Z+65LqO6K+l6IqC54K56Ieq5a6a5LmJ5pe25L2/55SoXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcg6IqC54K55pWw5o2u5qih5Z6LXG4gICAqIEByZXR1cm4ge09iamVjdH0g6IqC54K555qE5qC35byPXG4gICAqL1xuICBnZXRTaGFwZVN0eWxlOiBmdW5jdGlvbiBnZXRTaGFwZVN0eWxlKGNmZykge1xuICAgIHZhciBkZWZhdWx0U3R5bGUgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpKS5zdHlsZTtcbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvclxuICAgIH07IC8vIOWmguaenOiuvue9ruS6hmNvbG9y77yM5YiZ6KaG55uW6buY6K6k55qEc3Ryb2tl5bGe5oCnXG5cbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwgc3Ryb2tlU3R5bGUpO1xuICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgdmFyIHJ4ID0gc2l6ZVswXSAvIDI7XG4gICAgdmFyIHJ5ID0gc2l6ZVsxXSAvIDI7XG5cbiAgICB2YXIgc3R5bGVzID0gX19hc3NpZ24oe1xuICAgICAgeDogMCxcbiAgICAgIHk6IDAsXG4gICAgICByeDogcngsXG4gICAgICByeTogcnlcbiAgICB9LCBzdHlsZSk7XG5cbiAgICByZXR1cm4gc3R5bGVzO1xuICB9LFxuICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZShjZmcsIGl0ZW0sIHVwZGF0ZVR5cGUpIHtcbiAgICB2YXIgZ3JvdXAgPSBpdGVtLmdldENvbnRhaW5lcigpOyAvLyDov5nph4zkuI3kvKAgY2ZnIOWPguaVsOaYr+WboOS4uiBjZmcuc3R5bGUg6ZyA6KaB5pyA5ZCO6KaG55uW5qC35byPXG5cbiAgICB2YXIgZGVmYXVsdFN0eWxlID0gdGhpcy5nZXRPcHRpb25zKHt9KS5zdHlsZTtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yLFxuICAgICAgcng6IHNpemVbMF0gLyAyLFxuICAgICAgcnk6IHNpemVbMV0gLyAyXG4gICAgfTsgLy8g5LiOIGdldFNoYXBlU3R5bGUg5LiN5ZCM5Zyo5LqO77yMdXBkYXRlIOaXtumcgOimgeiOt+WPluWIsOW9k+WJjeeahCBzdHlsZSDov5vooYzono3lkIjjgILljbPmlrDkvKDlhaXnmoTphY3nva7pobnkuK3msqHmnInmtonlj4rnmoTlsZ7mgKfvvIzkv53nlZnlvZPliY3nmoTphY3nva7jgIJcblxuICAgIHZhciBrZXlTaGFwZSA9IGl0ZW0uZ2V0KCdrZXlTaGFwZScpO1xuICAgIHZhciBzdHlsZSA9IG1peCh7fSwgZGVmYXVsdFN0eWxlLCBrZXlTaGFwZS5hdHRyKCksIHN0cm9rZVN0eWxlKTtcbiAgICBzdHlsZSA9IG1peChzdHlsZSwgY2ZnLnN0eWxlKTtcbiAgICB0aGlzLnVwZGF0ZVNoYXBlKGNmZywgaXRlbSwgc3R5bGUsIHRydWUsIHVwZGF0ZVR5cGUpO1xuICAgIHRoaXMudXBkYXRlTGlua1BvaW50cyhjZmcsIGdyb3VwKTtcbiAgfVxufSwgJ3NpbmdsZS1ub2RlJyk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/ellipse.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/index.js":
/*!*********************************************************************************!*\
!*** ./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/index.js ***!
\*********************************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _circle__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./circle */ \"./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/circle.js\");\n/* harmony import */ var _rect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rect */ \"./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/rect.js\");\n/* harmony import */ var _ellipse__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ellipse */ \"./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/ellipse.js\");\n/* harmony import */ var _diamond__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./diamond */ \"./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/diamond.js\");\n/* harmony import */ var _triangle__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./triangle */ \"./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/triangle.js\");\n/* harmony import */ var _modelRect__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./modelRect */ \"./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/modelRect.js\");\n/* harmony import */ var _star__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./star */ \"./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/star.js\");\n/* harmony import */ var _donut__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./donut */ \"./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/donut.js\");\n\n\n\n\n\n\n\n // import './image';//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWVsZW1lbnRAMC41LjBAQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9pbmRleC5qcz81YmY3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQjtBQUNGO0FBQ0c7QUFDQTtBQUNDO0FBQ0M7QUFDTDtBQUNDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1lbGVtZW50QDAuNS4wQEBhbnR2L2c2LWVsZW1lbnQvZXMvbm9kZXMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJy4vY2lyY2xlJztcbmltcG9ydCAnLi9yZWN0JztcbmltcG9ydCAnLi9lbGxpcHNlJztcbmltcG9ydCAnLi9kaWFtb25kJztcbmltcG9ydCAnLi90cmlhbmdsZSc7XG5pbXBvcnQgJy4vbW9kZWxSZWN0JztcbmltcG9ydCAnLi9zdGFyJztcbmltcG9ydCAnLi9kb251dCc7IC8vIGltcG9ydCAnLi9pbWFnZSc7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/modelRect.js":
/*!*************************************************************************************!*\
!*** ./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/modelRect.js ***!
\*************************************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\");\n\n\n\nObject(_antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"registerNode\"])('modelRect', {\n // 自定义节点时的配置\n options: {\n size: [185, 70],\n style: {\n radius: 5,\n stroke: '#69c0ff',\n fill: '#ffffff',\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultNode.style.lineWidth,\n fillOpacity: 1\n },\n // 文本样式配置\n labelCfg: {\n style: {\n fill: '#595959',\n fontSize: 14,\n fontFamily: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].windowFontFamily\n },\n offset: 30 // 距离左侧的 offset,没有设置 y 轴上移动的配置\n\n },\n descriptionCfg: {\n style: {\n fontSize: 12,\n fill: '#bfbfbf',\n fontFamily: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].windowFontFamily\n },\n paddingTop: 0\n },\n preRect: {\n show: true,\n width: 4,\n fill: '#40a9ff',\n radius: 2\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: 10,\n lineWidth: 1,\n fill: '#72CC4A',\n stroke: '#72CC4A'\n },\n // 节点中icon配置\n logoIcon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: true,\n x: 0,\n y: 0,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/basement_prod/4f81893c-1806-4de4-aff3-9a6b266bc8a2.svg',\n width: 16,\n height: 16,\n // 用于调整图标的左右位置\n offset: 0\n },\n // 节点中表示状态的icon配置\n stateIcon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: true,\n x: 0,\n y: 0,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/basement_prod/300a2523-67e0-4cbf-9d4a-67c077b40395.svg',\n width: 16,\n height: 16,\n // 用于调整图标的左右位置\n offset: -5\n },\n // 连接点,默认为左右\n // anchorPoints: [{ x: 0, y: 0.5 }, { x: 1, y: 0.5 }]\n anchorPoints: [[0, 0.5], [1, 0.5]]\n },\n shapeType: 'modelRect',\n drawShape: function drawShape(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).preRect,\n preRect = _a === void 0 ? {} : _a;\n var style = this.getShapeStyle(cfg);\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n var keyShape = group.addShape('rect', {\n attrs: style,\n className: this.type + \"-keyShape\",\n name: this.type + \"-keyShape\",\n draggable: true\n });\n group['shapeMap'][this.type + \"-keyShape\"] = keyShape;\n\n var preRectShow = preRect.show,\n preRectStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(preRect, [\"show\"]);\n\n if (preRectShow) {\n group['shapeMap']['pre-rect'] = group.addShape('rect', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -width / 2,\n y: -height / 2,\n height: height\n }, preRectStyle),\n className: 'pre-rect',\n name: 'pre-rect',\n draggable: true\n });\n }\n\n this.drawLogoIcon(cfg, group);\n this.drawStateIcon(cfg, group);\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n\n /**\n * 绘制模型矩形左边的logo图标\n * @param {Object} cfg 数据配置项\n * @param {Group} group Group实例\n */\n drawLogoIcon: function drawLogoIcon(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).logoIcon,\n logoIcon = _a === void 0 ? {} : _a;\n var size = this.getSize(cfg);\n var width = size[0];\n\n if (logoIcon.show) {\n var w = logoIcon.width,\n h = logoIcon.height,\n x = logoIcon.x,\n y = logoIcon.y,\n offset = logoIcon.offset,\n text = logoIcon.text,\n logoIconStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(logoIcon, [\"width\", \"height\", \"x\", \"y\", \"offset\", \"text\"]);\n\n if (text) {\n group['shapeMap']['rect-logo-icon'] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, logoIconStyle),\n className: 'rect-logo-icon',\n name: 'rect-logo-icon',\n draggable: true\n });\n } else {\n group['shapeMap']['rect-logo-icon'] = group.addShape('image', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, logoIconStyle), {\n x: x || -width / 2 + w + offset,\n y: y || -h / 2,\n width: w,\n height: h\n }),\n className: 'rect-logo-icon',\n name: 'rect-logo-icon',\n draggable: true\n });\n }\n }\n },\n\n /**\n * 绘制模型矩形右边的状态图标\n * @param {Object} cfg 数据配置项\n * @param {Group} group Group实例\n */\n drawStateIcon: function drawStateIcon(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).stateIcon,\n stateIcon = _a === void 0 ? {} : _a;\n var size = this.getSize(cfg);\n var width = size[0];\n\n if (stateIcon.show) {\n var w = stateIcon.width,\n h = stateIcon.height,\n x = stateIcon.x,\n y = stateIcon.y,\n offset = stateIcon.offset,\n text = stateIcon.text,\n iconStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(stateIcon, [\"width\", \"height\", \"x\", \"y\", \"offset\", \"text\"]);\n\n if (text) {\n group['shapeMap']['rect-state-icon'] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, iconStyle),\n className: 'rect-state-icon',\n name: 'rect-state-icon',\n draggable: true\n });\n } else {\n group['shapeMap']['rect-state-icon'] = group.addShape('image', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, iconStyle), {\n x: x || width / 2 - w + offset,\n y: y || -h / 2,\n width: w,\n height: h\n }),\n className: 'rect-state-icon',\n name: 'rect-state-icon',\n draggable: true\n });\n }\n }\n },\n\n /**\n * 绘制节点上的LinkPoints\n * @param {Object} cfg data数据配置项\n * @param {Group} group Group实例\n */\n drawLinkPoints: function drawLinkPoints(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).linkPoints,\n linkPoints = _a === void 0 ? {} : _a;\n\n var top = linkPoints.top,\n left = linkPoints.left,\n right = linkPoints.right,\n bottom = linkPoints.bottom,\n markSize = linkPoints.size,\n markR = linkPoints.r,\n markStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(linkPoints, [\"top\", \"left\", \"right\", \"bottom\", \"size\", \"r\"]);\n\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n\n if (left) {\n // left circle\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: -width / 2,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-left',\n name: 'link-point-left',\n isAnchorPoint: true\n });\n }\n\n if (right) {\n // right circle\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: width / 2,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-right',\n name: 'link-point-right',\n isAnchorPoint: true\n });\n }\n\n if (top) {\n // top circle\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: -height / 2,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-top',\n name: 'link-point-top',\n isAnchorPoint: true\n });\n }\n\n if (bottom) {\n // bottom circle\n group['shapeMap']['link-point-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: height / 2,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-bottom',\n name: 'link-point-bottom',\n isAnchorPoint: true\n });\n }\n },\n drawLabel: function drawLabel(cfg, group) {\n var _a = this.getOptions(cfg),\n _b = _a.labelCfg,\n labelCfg = _b === void 0 ? {} : _b,\n _c = _a.logoIcon,\n logoIcon = _c === void 0 ? {} : _c,\n _d = _a.descriptionCfg,\n descriptionCfg = _d === void 0 ? {} : _d;\n\n var size = this.getSize(cfg);\n var width = size[0];\n var label = null;\n var show = logoIcon.show,\n w = logoIcon.width;\n var offsetX = -width / 2 + labelCfg.offset;\n\n if (show) {\n offsetX = -width / 2 + w + labelCfg.offset;\n }\n\n var fontStyle = labelCfg.style;\n var descriptionStyle = descriptionCfg.style,\n descriptionPaddingTop = descriptionCfg.paddingTop;\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(cfg.description)) {\n label = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, fontStyle), {\n x: offsetX,\n y: -5,\n text: cfg.label\n }),\n className: 'text-shape',\n name: 'text-shape',\n draggable: true\n });\n group['shapeMap']['text-shape'] = label;\n group['shapeMap']['rect-description'] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, descriptionStyle), {\n x: offsetX,\n y: 17 + (descriptionPaddingTop || 0),\n text: cfg.description\n }),\n className: 'rect-description',\n name: 'rect-description',\n draggable: true\n });\n } else {\n label = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, fontStyle), {\n x: offsetX,\n y: 7,\n text: cfg.label\n }),\n className: 'text-shape',\n name: 'text-shape',\n draggable: true\n });\n group['shapeMap']['text-shape'] = label;\n }\n\n return label;\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultStyle, strokeStyle);\n var size = this.getSize(cfg);\n var width = style.width || size[0];\n var height = style.height || size[1];\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -width / 2,\n y: -height / 2,\n width: width,\n height: height\n }, style);\n\n return styles;\n },\n update: function update(cfg, item) {\n var _a = this.mergeStyle || this.getOptions(cfg),\n _b = _a.style,\n style = _b === void 0 ? {} : _b,\n _c = _a.labelCfg,\n labelCfg = _c === void 0 ? {} : _c,\n _d = _a.descriptionCfg,\n descriptionCfg = _d === void 0 ? {} : _d;\n\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n var keyShape = item.get('keyShape');\n keyShape.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, style), {\n x: -width / 2,\n y: -height / 2,\n width: width,\n height: height\n }));\n var group = item.getContainer();\n var logoIconShape = group['shapeMap']['rect-logo-icon'] || group.find(function (element) {\n return element.get('className') === 'rect-logo-icon';\n });\n var currentLogoIconAttr = logoIconShape ? logoIconShape.attr() : {};\n var logoIcon = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, currentLogoIconAttr, cfg.logoIcon);\n var w = logoIcon.width;\n\n if (w === undefined) {\n w = this.options.logoIcon.width;\n }\n\n var show = cfg.logoIcon ? cfg.logoIcon.show : undefined;\n var offset = labelCfg.offset;\n var offsetX = -width / 2 + w + offset;\n\n if (!show && show !== undefined) {\n offsetX = -width / 2 + offset;\n }\n\n var label = group['shapeMap']['node-label'] || group.find(function (element) {\n return element.get('className') === 'node-label';\n });\n var description = group['shapeMap']['rect-description'] || group.find(function (element) {\n return element.get('className') === 'rect-description';\n });\n\n if (cfg.label) {\n if (!label) {\n group['shapeMap']['node-label'] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, labelCfg.style), {\n x: offsetX,\n y: cfg.description ? -5 : 7,\n text: cfg.label\n }),\n className: 'node-label',\n name: 'node-label',\n draggable: true\n });\n } else {\n var cfgStyle = cfg.labelCfg ? cfg.labelCfg.style : {};\n var labelStyle = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, label.attr(), cfgStyle);\n if (cfg.label) labelStyle.text = cfg.label;\n labelStyle.x = offsetX;\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(cfg.description)) labelStyle.y = -5;\n\n if (description) {\n description.resetMatrix();\n description.attr({\n x: offsetX\n });\n }\n\n label.resetMatrix();\n label.attr(labelStyle);\n }\n }\n\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(cfg.description)) {\n var paddingTop = descriptionCfg.paddingTop;\n\n if (!description) {\n group['shapeMap']['rect-description'] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, descriptionCfg.style), {\n x: offsetX,\n y: 17 + (paddingTop || 0),\n text: cfg.description\n }),\n className: 'rect-description',\n name: 'rect-description',\n draggable: true\n });\n } else {\n var cfgStyle = cfg.descriptionCfg ? cfg.descriptionCfg.style : {};\n var descriptionStyle = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, description.attr(), cfgStyle);\n if (Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isString\"])(cfg.description)) descriptionStyle.text = cfg.description;\n descriptionStyle.x = offsetX;\n description.resetMatrix();\n description.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, descriptionStyle), {\n y: 17 + (paddingTop || 0)\n }));\n }\n }\n\n var preRectShape = group['shapeMap']['pre-rect'] || group.find(function (element) {\n return element.get('className') === 'pre-rect';\n });\n\n if (preRectShape && !preRectShape.destroyed) {\n var preRect = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, preRectShape.attr(), cfg.preRect);\n preRectShape.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, preRect), {\n x: -width / 2,\n y: -height / 2,\n height: height\n }));\n }\n\n if (logoIconShape && !logoIconShape.destroyed) {\n if (!show && show !== undefined) {\n logoIconShape.remove();\n delete group['shapeMap']['pre-rect'];\n } else {\n var logoW = logoIcon.width,\n h = logoIcon.height,\n x = logoIcon.x,\n y = logoIcon.y,\n logoOffset = logoIcon.offset,\n logoIconStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(logoIcon, [\"width\", \"height\", \"x\", \"y\", \"offset\"]);\n\n logoIconShape.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, logoIconStyle), {\n x: x || -width / 2 + logoW + logoOffset,\n y: y || -h / 2,\n width: logoW,\n height: h\n }));\n }\n } else if (show) {\n this.drawLogoIcon(cfg, group);\n }\n\n var stateIconShape = group['shapeMap']['rect-state-icon'] || group.find(function (element) {\n return element.get('className') === 'rect-state-icon';\n });\n var currentStateIconAttr = stateIconShape ? stateIconShape.attr() : {};\n var stateIcon = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, currentStateIconAttr, cfg.stateIcon);\n\n if (stateIconShape) {\n if (!stateIcon.show && stateIcon.show !== undefined) {\n stateIconShape.remove();\n delete group['shapeMap']['rect-state-icon'];\n }\n\n var stateW = stateIcon.width,\n h = stateIcon.height,\n x = stateIcon.x,\n y = stateIcon.y,\n stateOffset = stateIcon.offset,\n stateIconStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(stateIcon, [\"width\", \"height\", \"x\", \"y\", \"offset\"]);\n\n stateIconShape.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, stateIconStyle), {\n x: x || width / 2 - stateW + stateOffset,\n y: y || -h / 2,\n width: stateW,\n height: h\n }));\n } else if (stateIcon.show) {\n this.drawStateIcon(cfg, group);\n }\n\n this.updateLinkPoints(cfg, group);\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWVsZW1lbnRAMC41LjBAQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9tb2RlbFJlY3QuanM/MjZmYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF5QztBQUNFO0FBQ3dCO0FBQ25FLGtFQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsd0RBQU07QUFDdkI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQix3REFBTTtBQUMxQixPQUFPO0FBQ1A7O0FBRUEsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHdEQUFNO0FBQzFCLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLHVCQUF1QixlQUFlLEdBQUcsZUFBZTtBQUN4RDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0M7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0EsdUJBQXVCLG9EQUFNOztBQUU3QjtBQUNBO0FBQ0EsZUFBZSxzREFBUTtBQUN2QjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixvREFBTTs7QUFFaEM7QUFDQTtBQUNBLGlCQUFpQixzREFBUTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EsaUJBQWlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDO0FBQ3RDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0Isb0RBQU07O0FBRTVCO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLGlCQUFpQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBLHVDQUF1Qzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG9EQUFNOztBQUUxQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQSwyQ0FBMkM7O0FBRTNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU4sZ0JBQWdCLHNEQUFHLEdBQUc7QUFDdEI7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixzREFBUTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0EsMkNBQTJDOztBQUUzQztBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsbUJBQW1CLHNEQUFHLEdBQUc7QUFDekI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EseUJBQXlCLHNEQUFHLEdBQUc7QUFDL0I7QUFDQTtBQUNBLFlBQVksMkRBQVE7O0FBRXBCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFFBQVEsMkRBQVE7QUFDaEI7O0FBRUE7QUFDQTtBQUNBLGlCQUFpQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDckM7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSwrQkFBK0Isc0RBQUcsR0FBRztBQUNyQyxZQUFZLDJEQUFRO0FBQ3BCO0FBQ0E7QUFDQSx5QkFBeUIsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQzdDO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSxvQkFBb0Isc0RBQUcsR0FBRztBQUMxQix3QkFBd0Isc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQzVDO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLG9EQUFNOztBQUVsQywyQkFBMkIsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLG9CQUFvQixzREFBRyxHQUFHOztBQUUxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsb0RBQU07O0FBRWpDLDBCQUEwQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWVsZW1lbnRAMC41LjBAQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9tb2RlbFJlY3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiwgX19yZXN0IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBtaXgsIGlzU3RyaW5nIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgeyByZWdpc3Rlck5vZGUsIEJhc2VHbG9iYWwgYXMgR2xvYmFsIH0gZnJvbSAnQGFudHYvZzYtY29yZSc7XG5yZWdpc3Rlck5vZGUoJ21vZGVsUmVjdCcsIHtcbiAgLy8g6Ieq5a6a5LmJ6IqC54K55pe255qE6YWN572uXG4gIG9wdGlvbnM6IHtcbiAgICBzaXplOiBbMTg1LCA3MF0sXG4gICAgc3R5bGU6IHtcbiAgICAgIHJhZGl1czogNSxcbiAgICAgIHN0cm9rZTogJyM2OWMwZmYnLFxuICAgICAgZmlsbDogJyNmZmZmZmYnLFxuICAgICAgbGluZVdpZHRoOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUubGluZVdpZHRoLFxuICAgICAgZmlsbE9wYWNpdHk6IDFcbiAgICB9LFxuICAgIC8vIOaWh+acrOagt+W8j+mFjee9rlxuICAgIGxhYmVsQ2ZnOiB7XG4gICAgICBzdHlsZToge1xuICAgICAgICBmaWxsOiAnIzU5NTk1OScsXG4gICAgICAgIGZvbnRTaXplOiAxNCxcbiAgICAgICAgZm9udEZhbWlseTogR2xvYmFsLndpbmRvd0ZvbnRGYW1pbHlcbiAgICAgIH0sXG4gICAgICBvZmZzZXQ6IDMwIC8vIOi3neemu+W3puS+p+eahCBvZmZzZXTvvIzmsqHmnInorr7nva4geSDovbTkuIrnp7vliqjnmoTphY3nva5cblxuICAgIH0sXG4gICAgZGVzY3JpcHRpb25DZmc6IHtcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIGZvbnRTaXplOiAxMixcbiAgICAgICAgZmlsbDogJyNiZmJmYmYnLFxuICAgICAgICBmb250RmFtaWx5OiBHbG9iYWwud2luZG93Rm9udEZhbWlseVxuICAgICAgfSxcbiAgICAgIHBhZGRpbmdUb3A6IDBcbiAgICB9LFxuICAgIHByZVJlY3Q6IHtcbiAgICAgIHNob3c6IHRydWUsXG4gICAgICB3aWR0aDogNCxcbiAgICAgIGZpbGw6ICcjNDBhOWZmJyxcbiAgICAgIHJhZGl1czogMlxuICAgIH0sXG4gICAgLy8g6IqC54K55LiK5bem5Y+z5LiK5LiL5Zub5Liq5pa55ZCR5LiK55qE6ZO+5o6lY2lyY2xl6YWN572uXG4gICAgbGlua1BvaW50czoge1xuICAgICAgdG9wOiBmYWxzZSxcbiAgICAgIHJpZ2h0OiBmYWxzZSxcbiAgICAgIGJvdHRvbTogZmFsc2UsXG4gICAgICBsZWZ0OiBmYWxzZSxcbiAgICAgIC8vIGNpcmNsZeeahOWkp+Wwj1xuICAgICAgc2l6ZTogMTAsXG4gICAgICBsaW5lV2lkdGg6IDEsXG4gICAgICBmaWxsOiAnIzcyQ0M0QScsXG4gICAgICBzdHJva2U6ICcjNzJDQzRBJ1xuICAgIH0sXG4gICAgLy8g6IqC54K55LitaWNvbumFjee9rlxuICAgIGxvZ29JY29uOiB7XG4gICAgICAvLyDmmK/lkKbmmL7npLppY29u77yM5YC85Li6IGZhbHNlIOWImeS4jea4suafk2ljb25cbiAgICAgIHNob3c6IHRydWUsXG4gICAgICB4OiAwLFxuICAgICAgeTogMCxcbiAgICAgIC8vIGljb27nmoTlnLDlnYDvvIzlrZfnrKbkuLLnsbvlnotcbiAgICAgIGltZzogJ2h0dHBzOi8vZ3cuYWxpcGF5b2JqZWN0cy5jb20vem9zL2Jhc2VtZW50X3Byb2QvNGY4MTg5M2MtMTgwNi00ZGU0LWFmZjMtOWE2YjI2NmJjOGEyLnN2ZycsXG4gICAgICB3aWR0aDogMTYsXG4gICAgICBoZWlnaHQ6IDE2LFxuICAgICAgLy8g55So5LqO6LCD5pW05Zu+5qCH55qE5bem5Y+z5L2N572uXG4gICAgICBvZmZzZXQ6IDBcbiAgICB9LFxuICAgIC8vIOiKgueCueS4reihqOekuueKtuaAgeeahGljb27phY3nva5cbiAgICBzdGF0ZUljb246IHtcbiAgICAgIC8vIOaYr+WQpuaYvuekumljb27vvIzlgLzkuLogZmFsc2Ug5YiZ5LiN5riy5p+TaWNvblxuICAgICAgc2hvdzogdHJ1ZSxcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwLFxuICAgICAgLy8gaWNvbueahOWcsOWdgO+8jOWtl+espuS4suexu+Wei1xuICAgICAgaW1nOiAnaHR0cHM6Ly9ndy5hbGlwYXlvYmplY3RzLmNvbS96b3MvYmFzZW1lbnRfcHJvZC8zMDBhMjUyMy02N2UwLTRjYmYtOWQ0YS02N2MwNzdiNDAzOTUuc3ZnJyxcbiAgICAgIHdpZHRoOiAxNixcbiAgICAgIGhlaWdodDogMTYsXG4gICAgICAvLyDnlKjkuo7osIPmlbTlm77moIfnmoTlt6blj7PkvY3nva5cbiAgICAgIG9mZnNldDogLTVcbiAgICB9LFxuICAgIC8vIOi/nuaOpeeCue+8jOm7mOiupOS4uuW3puWPs1xuICAgIC8vIGFuY2hvclBvaW50czogW3sgeDogMCwgeTogMC41IH0sIHsgeDogMSwgeTogMC41IH1dXG4gICAgYW5jaG9yUG9pbnRzOiBbWzAsIDAuNV0sIFsxLCAwLjVdXVxuICB9LFxuICBzaGFwZVR5cGU6ICdtb2RlbFJlY3QnLFxuICBkcmF3U2hhcGU6IGZ1bmN0aW9uIGRyYXdTaGFwZShjZmcsIGdyb3VwKSB7XG4gICAgdmFyIF9hID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkucHJlUmVjdCxcbiAgICAgICAgcHJlUmVjdCA9IF9hID09PSB2b2lkIDAgPyB7fSA6IF9hO1xuICAgIHZhciBzdHlsZSA9IHRoaXMuZ2V0U2hhcGVTdHlsZShjZmcpO1xuICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgdmFyIHdpZHRoID0gc2l6ZVswXTtcbiAgICB2YXIgaGVpZ2h0ID0gc2l6ZVsxXTtcbiAgICB2YXIga2V5U2hhcGUgPSBncm91cC5hZGRTaGFwZSgncmVjdCcsIHtcbiAgICAgIGF0dHJzOiBzdHlsZSxcbiAgICAgIGNsYXNzTmFtZTogdGhpcy50eXBlICsgXCIta2V5U2hhcGVcIixcbiAgICAgIG5hbWU6IHRoaXMudHlwZSArIFwiLWtleVNoYXBlXCIsXG4gICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICB9KTtcbiAgICBncm91cFsnc2hhcGVNYXAnXVt0aGlzLnR5cGUgKyBcIi1rZXlTaGFwZVwiXSA9IGtleVNoYXBlO1xuXG4gICAgdmFyIHByZVJlY3RTaG93ID0gcHJlUmVjdC5zaG93LFxuICAgICAgICBwcmVSZWN0U3R5bGUgPSBfX3Jlc3QocHJlUmVjdCwgW1wic2hvd1wiXSk7XG5cbiAgICBpZiAocHJlUmVjdFNob3cpIHtcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydwcmUtcmVjdCddID0gZ3JvdXAuYWRkU2hhcGUoJ3JlY3QnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgICAgeDogLXdpZHRoIC8gMixcbiAgICAgICAgICB5OiAtaGVpZ2h0IC8gMixcbiAgICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgICB9LCBwcmVSZWN0U3R5bGUpLFxuICAgICAgICBjbGFzc05hbWU6ICdwcmUtcmVjdCcsXG4gICAgICAgIG5hbWU6ICdwcmUtcmVjdCcsXG4gICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5kcmF3TG9nb0ljb24oY2ZnLCBncm91cCk7XG4gICAgdGhpcy5kcmF3U3RhdGVJY29uKGNmZywgZ3JvdXApO1xuICAgIHRoaXMuZHJhd0xpbmtQb2ludHMoY2ZnLCBncm91cCk7XG4gICAgcmV0dXJuIGtleVNoYXBlO1xuICB9LFxuXG4gIC8qKlxuICAgKiDnu5jliLbmqKHlnovnn6nlvaLlt6bovrnnmoRsb2dv5Zu+5qCHXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcg5pWw5o2u6YWN572u6aG5XG4gICAqIEBwYXJhbSB7R3JvdXB9IGdyb3VwIEdyb3Vw5a6e5L6LXG4gICAqL1xuICBkcmF3TG9nb0ljb246IGZ1bmN0aW9uIGRyYXdMb2dvSWNvbihjZmcsIGdyb3VwKSB7XG4gICAgdmFyIF9hID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkubG9nb0ljb24sXG4gICAgICAgIGxvZ29JY29uID0gX2EgPT09IHZvaWQgMCA/IHt9IDogX2E7XG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgd2lkdGggPSBzaXplWzBdO1xuXG4gICAgaWYgKGxvZ29JY29uLnNob3cpIHtcbiAgICAgIHZhciB3ID0gbG9nb0ljb24ud2lkdGgsXG4gICAgICAgICAgaCA9IGxvZ29JY29uLmhlaWdodCxcbiAgICAgICAgICB4ID0gbG9nb0ljb24ueCxcbiAgICAgICAgICB5ID0gbG9nb0ljb24ueSxcbiAgICAgICAgICBvZmZzZXQgPSBsb2dvSWNvbi5vZmZzZXQsXG4gICAgICAgICAgdGV4dCA9IGxvZ29JY29uLnRleHQsXG4gICAgICAgICAgbG9nb0ljb25TdHlsZSA9IF9fcmVzdChsb2dvSWNvbiwgW1wid2lkdGhcIiwgXCJoZWlnaHRcIiwgXCJ4XCIsIFwieVwiLCBcIm9mZnNldFwiLCBcInRleHRcIl0pO1xuXG4gICAgICBpZiAodGV4dCkge1xuICAgICAgICBncm91cFsnc2hhcGVNYXAnXVsncmVjdC1sb2dvLWljb24nXSA9IGdyb3VwLmFkZFNoYXBlKCd0ZXh0Jywge1xuICAgICAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgIGZvbnRTaXplOiAxMixcbiAgICAgICAgICAgIGZpbGw6ICcjMDAwJyxcbiAgICAgICAgICAgIHN0cm9rZTogJyMwMDAnLFxuICAgICAgICAgICAgdGV4dEJhc2VsaW5lOiAnbWlkZGxlJyxcbiAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgICAgICAgICB9LCBsb2dvSWNvblN0eWxlKSxcbiAgICAgICAgICBjbGFzc05hbWU6ICdyZWN0LWxvZ28taWNvbicsXG4gICAgICAgICAgbmFtZTogJ3JlY3QtbG9nby1pY29uJyxcbiAgICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBncm91cFsnc2hhcGVNYXAnXVsncmVjdC1sb2dvLWljb24nXSA9IGdyb3VwLmFkZFNoYXBlKCdpbWFnZScsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIGxvZ29JY29uU3R5bGUpLCB7XG4gICAgICAgICAgICB4OiB4IHx8IC13aWR0aCAvIDIgKyB3ICsgb2Zmc2V0LFxuICAgICAgICAgICAgeTogeSB8fCAtaCAvIDIsXG4gICAgICAgICAgICB3aWR0aDogdyxcbiAgICAgICAgICAgIGhlaWdodDogaFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNsYXNzTmFtZTogJ3JlY3QtbG9nby1pY29uJyxcbiAgICAgICAgICBuYW1lOiAncmVjdC1sb2dvLWljb24nLFxuICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIOe7mOWItuaooeWei+efqeW9ouWPs+i+ueeahOeKtuaAgeWbvuagh1xuICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIOaVsOaNrumFjee9rumhuVxuICAgKiBAcGFyYW0ge0dyb3VwfSBncm91cCBHcm91cOWunuS+i1xuICAgKi9cbiAgZHJhd1N0YXRlSWNvbjogZnVuY3Rpb24gZHJhd1N0YXRlSWNvbihjZmcsIGdyb3VwKSB7XG4gICAgdmFyIF9hID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkuc3RhdGVJY29uLFxuICAgICAgICBzdGF0ZUljb24gPSBfYSA9PT0gdm9pZCAwID8ge30gOiBfYTtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciB3aWR0aCA9IHNpemVbMF07XG5cbiAgICBpZiAoc3RhdGVJY29uLnNob3cpIHtcbiAgICAgIHZhciB3ID0gc3RhdGVJY29uLndpZHRoLFxuICAgICAgICAgIGggPSBzdGF0ZUljb24uaGVpZ2h0LFxuICAgICAgICAgIHggPSBzdGF0ZUljb24ueCxcbiAgICAgICAgICB5ID0gc3RhdGVJY29uLnksXG4gICAgICAgICAgb2Zmc2V0ID0gc3RhdGVJY29uLm9mZnNldCxcbiAgICAgICAgICB0ZXh0ID0gc3RhdGVJY29uLnRleHQsXG4gICAgICAgICAgaWNvblN0eWxlID0gX19yZXN0KHN0YXRlSWNvbiwgW1wid2lkdGhcIiwgXCJoZWlnaHRcIiwgXCJ4XCIsIFwieVwiLCBcIm9mZnNldFwiLCBcInRleHRcIl0pO1xuXG4gICAgICBpZiAodGV4dCkge1xuICAgICAgICBncm91cFsnc2hhcGVNYXAnXVsncmVjdC1zdGF0ZS1pY29uJ10gPSBncm91cC5hZGRTaGFwZSgndGV4dCcsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICBmb250U2l6ZTogMTIsXG4gICAgICAgICAgICBmaWxsOiAnIzAwMCcsXG4gICAgICAgICAgICBzdHJva2U6ICcjMDAwJyxcbiAgICAgICAgICAgIHRleHRCYXNlbGluZTogJ21pZGRsZScsXG4gICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInXG4gICAgICAgICAgfSwgaWNvblN0eWxlKSxcbiAgICAgICAgICBjbGFzc05hbWU6ICdyZWN0LXN0YXRlLWljb24nLFxuICAgICAgICAgIG5hbWU6ICdyZWN0LXN0YXRlLWljb24nLFxuICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddWydyZWN0LXN0YXRlLWljb24nXSA9IGdyb3VwLmFkZFNoYXBlKCdpbWFnZScsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIGljb25TdHlsZSksIHtcbiAgICAgICAgICAgIHg6IHggfHwgd2lkdGggLyAyIC0gdyArIG9mZnNldCxcbiAgICAgICAgICAgIHk6IHkgfHwgLWggLyAyLFxuICAgICAgICAgICAgd2lkdGg6IHcsXG4gICAgICAgICAgICBoZWlnaHQ6IGhcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjbGFzc05hbWU6ICdyZWN0LXN0YXRlLWljb24nLFxuICAgICAgICAgIG5hbWU6ICdyZWN0LXN0YXRlLWljb24nLFxuICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIOe7mOWItuiKgueCueS4iueahExpbmtQb2ludHNcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyBkYXRh5pWw5o2u6YWN572u6aG5XG4gICAqIEBwYXJhbSB7R3JvdXB9IGdyb3VwIEdyb3Vw5a6e5L6LXG4gICAqL1xuICBkcmF3TGlua1BvaW50czogZnVuY3Rpb24gZHJhd0xpbmtQb2ludHMoY2ZnLCBncm91cCkge1xuICAgIHZhciBfYSA9ICh0aGlzLm1lcmdlU3R5bGUgfHwgdGhpcy5nZXRPcHRpb25zKGNmZykpLmxpbmtQb2ludHMsXG4gICAgICAgIGxpbmtQb2ludHMgPSBfYSA9PT0gdm9pZCAwID8ge30gOiBfYTtcblxuICAgIHZhciB0b3AgPSBsaW5rUG9pbnRzLnRvcCxcbiAgICAgICAgbGVmdCA9IGxpbmtQb2ludHMubGVmdCxcbiAgICAgICAgcmlnaHQgPSBsaW5rUG9pbnRzLnJpZ2h0LFxuICAgICAgICBib3R0b20gPSBsaW5rUG9pbnRzLmJvdHRvbSxcbiAgICAgICAgbWFya1NpemUgPSBsaW5rUG9pbnRzLnNpemUsXG4gICAgICAgIG1hcmtSID0gbGlua1BvaW50cy5yLFxuICAgICAgICBtYXJrU3R5bGUgPSBfX3Jlc3QobGlua1BvaW50cywgW1widG9wXCIsIFwibGVmdFwiLCBcInJpZ2h0XCIsIFwiYm90dG9tXCIsIFwic2l6ZVwiLCBcInJcIl0pO1xuXG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgd2lkdGggPSBzaXplWzBdO1xuICAgIHZhciBoZWlnaHQgPSBzaXplWzFdO1xuXG4gICAgaWYgKGxlZnQpIHtcbiAgICAgIC8vIGxlZnQgY2lyY2xlXG4gICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1sZWZ0J10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICB4OiAtd2lkdGggLyAyLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtbGVmdCcsXG4gICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LWxlZnQnLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocmlnaHQpIHtcbiAgICAgIC8vIHJpZ2h0IGNpcmNsZVxuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtcmlnaHQnXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbWFya1N0eWxlKSwge1xuICAgICAgICAgIHg6IHdpZHRoIC8gMixcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LXJpZ2h0JyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtcmlnaHQnLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodG9wKSB7XG4gICAgICAvLyB0b3AgY2lyY2xlXG4gICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC10b3AnXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbWFya1N0eWxlKSwge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogLWhlaWdodCAvIDIsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtdG9wJyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtdG9wJyxcbiAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGJvdHRvbSkge1xuICAgICAgLy8gYm90dG9tIGNpcmNsZVxuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtYm90dG9tJ10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IGhlaWdodCAvIDIsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtYm90dG9tJyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtYm90dG9tJyxcbiAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICBkcmF3TGFiZWw6IGZ1bmN0aW9uIGRyYXdMYWJlbChjZmcsIGdyb3VwKSB7XG4gICAgdmFyIF9hID0gdGhpcy5nZXRPcHRpb25zKGNmZyksXG4gICAgICAgIF9iID0gX2EubGFiZWxDZmcsXG4gICAgICAgIGxhYmVsQ2ZnID0gX2IgPT09IHZvaWQgMCA/IHt9IDogX2IsXG4gICAgICAgIF9jID0gX2EubG9nb0ljb24sXG4gICAgICAgIGxvZ29JY29uID0gX2MgPT09IHZvaWQgMCA/IHt9IDogX2MsXG4gICAgICAgIF9kID0gX2EuZGVzY3JpcHRpb25DZmcsXG4gICAgICAgIGRlc2NyaXB0aW9uQ2ZnID0gX2QgPT09IHZvaWQgMCA/IHt9IDogX2Q7XG5cbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciB3aWR0aCA9IHNpemVbMF07XG4gICAgdmFyIGxhYmVsID0gbnVsbDtcbiAgICB2YXIgc2hvdyA9IGxvZ29JY29uLnNob3csXG4gICAgICAgIHcgPSBsb2dvSWNvbi53aWR0aDtcbiAgICB2YXIgb2Zmc2V0WCA9IC13aWR0aCAvIDIgKyBsYWJlbENmZy5vZmZzZXQ7XG5cbiAgICBpZiAoc2hvdykge1xuICAgICAgb2Zmc2V0WCA9IC13aWR0aCAvIDIgKyB3ICsgbGFiZWxDZmcub2Zmc2V0O1xuICAgIH1cblxuICAgIHZhciBmb250U3R5bGUgPSBsYWJlbENmZy5zdHlsZTtcbiAgICB2YXIgZGVzY3JpcHRpb25TdHlsZSA9IGRlc2NyaXB0aW9uQ2ZnLnN0eWxlLFxuICAgICAgICBkZXNjcmlwdGlvblBhZGRpbmdUb3AgPSBkZXNjcmlwdGlvbkNmZy5wYWRkaW5nVG9wO1xuXG4gICAgaWYgKGlzU3RyaW5nKGNmZy5kZXNjcmlwdGlvbikpIHtcbiAgICAgIGxhYmVsID0gZ3JvdXAuYWRkU2hhcGUoJ3RleHQnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZm9udFN0eWxlKSwge1xuICAgICAgICAgIHg6IG9mZnNldFgsXG4gICAgICAgICAgeTogLTUsXG4gICAgICAgICAgdGV4dDogY2ZnLmxhYmVsXG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICd0ZXh0LXNoYXBlJyxcbiAgICAgICAgbmFtZTogJ3RleHQtc2hhcGUnLFxuICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgIH0pO1xuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ3RleHQtc2hhcGUnXSA9IGxhYmVsO1xuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ3JlY3QtZGVzY3JpcHRpb24nXSA9IGdyb3VwLmFkZFNoYXBlKCd0ZXh0Jywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIGRlc2NyaXB0aW9uU3R5bGUpLCB7XG4gICAgICAgICAgeDogb2Zmc2V0WCxcbiAgICAgICAgICB5OiAxNyArIChkZXNjcmlwdGlvblBhZGRpbmdUb3AgfHwgMCksXG4gICAgICAgICAgdGV4dDogY2ZnLmRlc2NyaXB0aW9uXG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdyZWN0LWRlc2NyaXB0aW9uJyxcbiAgICAgICAgbmFtZTogJ3JlY3QtZGVzY3JpcHRpb24nLFxuICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsYWJlbCA9IGdyb3VwLmFkZFNoYXBlKCd0ZXh0Jywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIGZvbnRTdHlsZSksIHtcbiAgICAgICAgICB4OiBvZmZzZXRYLFxuICAgICAgICAgIHk6IDcsXG4gICAgICAgICAgdGV4dDogY2ZnLmxhYmVsXG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICd0ZXh0LXNoYXBlJyxcbiAgICAgICAgbmFtZTogJ3RleHQtc2hhcGUnLFxuICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgIH0pO1xuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ3RleHQtc2hhcGUnXSA9IGxhYmVsO1xuICAgIH1cblxuICAgIHJldHVybiBsYWJlbDtcbiAgfSxcblxuICAvKipcbiAgICog6I635Y+W6IqC54K555qE5qC35byP77yM5L6b5Z+65LqO6K+l6IqC54K56Ieq5a6a5LmJ5pe25L2/55SoXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcg6IqC54K55pWw5o2u5qih5Z6LXG4gICAqIEByZXR1cm4ge09iamVjdH0g6IqC54K555qE5qC35byPXG4gICAqL1xuICBnZXRTaGFwZVN0eWxlOiBmdW5jdGlvbiBnZXRTaGFwZVN0eWxlKGNmZykge1xuICAgIHZhciBkZWZhdWx0U3R5bGUgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpKS5zdHlsZTtcbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvclxuICAgIH07IC8vIOWmguaenOiuvue9ruS6hmNvbG9y77yM5YiZ6KaG55uW6buY6K6k55qEc3Ryb2tl5bGe5oCnXG5cbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwgc3Ryb2tlU3R5bGUpO1xuICAgIHZhciBzaXplID0gdGhpcy5nZXRTaXplKGNmZyk7XG4gICAgdmFyIHdpZHRoID0gc3R5bGUud2lkdGggfHwgc2l6ZVswXTtcbiAgICB2YXIgaGVpZ2h0ID0gc3R5bGUuaGVpZ2h0IHx8IHNpemVbMV07XG5cbiAgICB2YXIgc3R5bGVzID0gX19hc3NpZ24oe1xuICAgICAgeDogLXdpZHRoIC8gMixcbiAgICAgIHk6IC1oZWlnaHQgLyAyLFxuICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgaGVpZ2h0OiBoZWlnaHRcbiAgICB9LCBzdHlsZSk7XG5cbiAgICByZXR1cm4gc3R5bGVzO1xuICB9LFxuICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZShjZmcsIGl0ZW0pIHtcbiAgICB2YXIgX2EgPSB0aGlzLm1lcmdlU3R5bGUgfHwgdGhpcy5nZXRPcHRpb25zKGNmZyksXG4gICAgICAgIF9iID0gX2Euc3R5bGUsXG4gICAgICAgIHN0eWxlID0gX2IgPT09IHZvaWQgMCA/IHt9IDogX2IsXG4gICAgICAgIF9jID0gX2EubGFiZWxDZmcsXG4gICAgICAgIGxhYmVsQ2ZnID0gX2MgPT09IHZvaWQgMCA/IHt9IDogX2MsXG4gICAgICAgIF9kID0gX2EuZGVzY3JpcHRpb25DZmcsXG4gICAgICAgIGRlc2NyaXB0aW9uQ2ZnID0gX2QgPT09IHZvaWQgMCA/IHt9IDogX2Q7XG5cbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciB3aWR0aCA9IHNpemVbMF07XG4gICAgdmFyIGhlaWdodCA9IHNpemVbMV07XG4gICAgdmFyIGtleVNoYXBlID0gaXRlbS5nZXQoJ2tleVNoYXBlJyk7XG4gICAga2V5U2hhcGUuYXR0cihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3R5bGUpLCB7XG4gICAgICB4OiAtd2lkdGggLyAyLFxuICAgICAgeTogLWhlaWdodCAvIDIsXG4gICAgICB3aWR0aDogd2lkdGgsXG4gICAgICBoZWlnaHQ6IGhlaWdodFxuICAgIH0pKTtcbiAgICB2YXIgZ3JvdXAgPSBpdGVtLmdldENvbnRhaW5lcigpO1xuICAgIHZhciBsb2dvSWNvblNoYXBlID0gZ3JvdXBbJ3NoYXBlTWFwJ11bJ3JlY3QtbG9nby1pY29uJ10gfHwgZ3JvdXAuZmluZChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCdjbGFzc05hbWUnKSA9PT0gJ3JlY3QtbG9nby1pY29uJztcbiAgICB9KTtcbiAgICB2YXIgY3VycmVudExvZ29JY29uQXR0ciA9IGxvZ29JY29uU2hhcGUgPyBsb2dvSWNvblNoYXBlLmF0dHIoKSA6IHt9O1xuICAgIHZhciBsb2dvSWNvbiA9IG1peCh7fSwgY3VycmVudExvZ29JY29uQXR0ciwgY2ZnLmxvZ29JY29uKTtcbiAgICB2YXIgdyA9IGxvZ29JY29uLndpZHRoO1xuXG4gICAgaWYgKHcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdyA9IHRoaXMub3B0aW9ucy5sb2dvSWNvbi53aWR0aDtcbiAgICB9XG5cbiAgICB2YXIgc2hvdyA9IGNmZy5sb2dvSWNvbiA/IGNmZy5sb2dvSWNvbi5zaG93IDogdW5kZWZpbmVkO1xuICAgIHZhciBvZmZzZXQgPSBsYWJlbENmZy5vZmZzZXQ7XG4gICAgdmFyIG9mZnNldFggPSAtd2lkdGggLyAyICsgdyArIG9mZnNldDtcblxuICAgIGlmICghc2hvdyAmJiBzaG93ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG9mZnNldFggPSAtd2lkdGggLyAyICsgb2Zmc2V0O1xuICAgIH1cblxuICAgIHZhciBsYWJlbCA9IGdyb3VwWydzaGFwZU1hcCddWydub2RlLWxhYmVsJ10gfHwgZ3JvdXAuZmluZChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCdjbGFzc05hbWUnKSA9PT0gJ25vZGUtbGFiZWwnO1xuICAgIH0pO1xuICAgIHZhciBkZXNjcmlwdGlvbiA9IGdyb3VwWydzaGFwZU1hcCddWydyZWN0LWRlc2NyaXB0aW9uJ10gfHwgZ3JvdXAuZmluZChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCdjbGFzc05hbWUnKSA9PT0gJ3JlY3QtZGVzY3JpcHRpb24nO1xuICAgIH0pO1xuXG4gICAgaWYgKGNmZy5sYWJlbCkge1xuICAgICAgaWYgKCFsYWJlbCkge1xuICAgICAgICBncm91cFsnc2hhcGVNYXAnXVsnbm9kZS1sYWJlbCddID0gZ3JvdXAuYWRkU2hhcGUoJ3RleHQnLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBsYWJlbENmZy5zdHlsZSksIHtcbiAgICAgICAgICAgIHg6IG9mZnNldFgsXG4gICAgICAgICAgICB5OiBjZmcuZGVzY3JpcHRpb24gPyAtNSA6IDcsXG4gICAgICAgICAgICB0ZXh0OiBjZmcubGFiZWxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjbGFzc05hbWU6ICdub2RlLWxhYmVsJyxcbiAgICAgICAgICBuYW1lOiAnbm9kZS1sYWJlbCcsXG4gICAgICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGNmZ1N0eWxlID0gY2ZnLmxhYmVsQ2ZnID8gY2ZnLmxhYmVsQ2ZnLnN0eWxlIDoge307XG4gICAgICAgIHZhciBsYWJlbFN0eWxlID0gbWl4KHt9LCBsYWJlbC5hdHRyKCksIGNmZ1N0eWxlKTtcbiAgICAgICAgaWYgKGNmZy5sYWJlbCkgbGFiZWxTdHlsZS50ZXh0ID0gY2ZnLmxhYmVsO1xuICAgICAgICBsYWJlbFN0eWxlLnggPSBvZmZzZXRYO1xuICAgICAgICBpZiAoaXNTdHJpbmcoY2ZnLmRlc2NyaXB0aW9uKSkgbGFiZWxTdHlsZS55ID0gLTU7XG5cbiAgICAgICAgaWYgKGRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgZGVzY3JpcHRpb24ucmVzZXRNYXRyaXgoKTtcbiAgICAgICAgICBkZXNjcmlwdGlvbi5hdHRyKHtcbiAgICAgICAgICAgIHg6IG9mZnNldFhcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxhYmVsLnJlc2V0TWF0cml4KCk7XG4gICAgICAgIGxhYmVsLmF0dHIobGFiZWxTdHlsZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGlzU3RyaW5nKGNmZy5kZXNjcmlwdGlvbikpIHtcbiAgICAgIHZhciBwYWRkaW5nVG9wID0gZGVzY3JpcHRpb25DZmcucGFkZGluZ1RvcDtcblxuICAgICAgaWYgKCFkZXNjcmlwdGlvbikge1xuICAgICAgICBncm91cFsnc2hhcGVNYXAnXVsncmVjdC1kZXNjcmlwdGlvbiddID0gZ3JvdXAuYWRkU2hhcGUoJ3RleHQnLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBkZXNjcmlwdGlvbkNmZy5zdHlsZSksIHtcbiAgICAgICAgICAgIHg6IG9mZnNldFgsXG4gICAgICAgICAgICB5OiAxNyArIChwYWRkaW5nVG9wIHx8IDApLFxuICAgICAgICAgICAgdGV4dDogY2ZnLmRlc2NyaXB0aW9uXG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2xhc3NOYW1lOiAncmVjdC1kZXNjcmlwdGlvbicsXG4gICAgICAgICAgbmFtZTogJ3JlY3QtZGVzY3JpcHRpb24nLFxuICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBjZmdTdHlsZSA9IGNmZy5kZXNjcmlwdGlvbkNmZyA/IGNmZy5kZXNjcmlwdGlvbkNmZy5zdHlsZSA6IHt9O1xuICAgICAgICB2YXIgZGVzY3JpcHRpb25TdHlsZSA9IG1peCh7fSwgZGVzY3JpcHRpb24uYXR0cigpLCBjZmdTdHlsZSk7XG4gICAgICAgIGlmIChpc1N0cmluZyhjZmcuZGVzY3JpcHRpb24pKSBkZXNjcmlwdGlvblN0eWxlLnRleHQgPSBjZmcuZGVzY3JpcHRpb247XG4gICAgICAgIGRlc2NyaXB0aW9uU3R5bGUueCA9IG9mZnNldFg7XG4gICAgICAgIGRlc2NyaXB0aW9uLnJlc2V0TWF0cml4KCk7XG4gICAgICAgIGRlc2NyaXB0aW9uLmF0dHIoX19hc3NpZ24oX19hc3NpZ24oe30sIGRlc2NyaXB0aW9uU3R5bGUpLCB7XG4gICAgICAgICAgeTogMTcgKyAocGFkZGluZ1RvcCB8fCAwKVxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHByZVJlY3RTaGFwZSA9IGdyb3VwWydzaGFwZU1hcCddWydwcmUtcmVjdCddIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50LmdldCgnY2xhc3NOYW1lJykgPT09ICdwcmUtcmVjdCc7XG4gICAgfSk7XG5cbiAgICBpZiAocHJlUmVjdFNoYXBlICYmICFwcmVSZWN0U2hhcGUuZGVzdHJveWVkKSB7XG4gICAgICB2YXIgcHJlUmVjdCA9IG1peCh7fSwgcHJlUmVjdFNoYXBlLmF0dHIoKSwgY2ZnLnByZVJlY3QpO1xuICAgICAgcHJlUmVjdFNoYXBlLmF0dHIoX19hc3NpZ24oX19hc3NpZ24oe30sIHByZVJlY3QpLCB7XG4gICAgICAgIHg6IC13aWR0aCAvIDIsXG4gICAgICAgIHk6IC1oZWlnaHQgLyAyLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIGlmIChsb2dvSWNvblNoYXBlICYmICFsb2dvSWNvblNoYXBlLmRlc3Ryb3llZCkge1xuICAgICAgaWYgKCFzaG93ICYmIHNob3cgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsb2dvSWNvblNoYXBlLnJlbW92ZSgpO1xuICAgICAgICBkZWxldGUgZ3JvdXBbJ3NoYXBlTWFwJ11bJ3ByZS1yZWN0J107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgbG9nb1cgPSBsb2dvSWNvbi53aWR0aCxcbiAgICAgICAgICAgIGggPSBsb2dvSWNvbi5oZWlnaHQsXG4gICAgICAgICAgICB4ID0gbG9nb0ljb24ueCxcbiAgICAgICAgICAgIHkgPSBsb2dvSWNvbi55LFxuICAgICAgICAgICAgbG9nb09mZnNldCA9IGxvZ29JY29uLm9mZnNldCxcbiAgICAgICAgICAgIGxvZ29JY29uU3R5bGUgPSBfX3Jlc3QobG9nb0ljb24sIFtcIndpZHRoXCIsIFwiaGVpZ2h0XCIsIFwieFwiLCBcInlcIiwgXCJvZmZzZXRcIl0pO1xuXG4gICAgICAgIGxvZ29JY29uU2hhcGUuYXR0cihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbG9nb0ljb25TdHlsZSksIHtcbiAgICAgICAgICB4OiB4IHx8IC13aWR0aCAvIDIgKyBsb2dvVyArIGxvZ29PZmZzZXQsXG4gICAgICAgICAgeTogeSB8fCAtaCAvIDIsXG4gICAgICAgICAgd2lkdGg6IGxvZ29XLFxuICAgICAgICAgIGhlaWdodDogaFxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzaG93KSB7XG4gICAgICB0aGlzLmRyYXdMb2dvSWNvbihjZmcsIGdyb3VwKTtcbiAgICB9XG5cbiAgICB2YXIgc3RhdGVJY29uU2hhcGUgPSBncm91cFsnc2hhcGVNYXAnXVsncmVjdC1zdGF0ZS1pY29uJ10gfHwgZ3JvdXAuZmluZChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCdjbGFzc05hbWUnKSA9PT0gJ3JlY3Qtc3RhdGUtaWNvbic7XG4gICAgfSk7XG4gICAgdmFyIGN1cnJlbnRTdGF0ZUljb25BdHRyID0gc3RhdGVJY29uU2hhcGUgPyBzdGF0ZUljb25TaGFwZS5hdHRyKCkgOiB7fTtcbiAgICB2YXIgc3RhdGVJY29uID0gbWl4KHt9LCBjdXJyZW50U3RhdGVJY29uQXR0ciwgY2ZnLnN0YXRlSWNvbik7XG5cbiAgICBpZiAoc3RhdGVJY29uU2hhcGUpIHtcbiAgICAgIGlmICghc3RhdGVJY29uLnNob3cgJiYgc3RhdGVJY29uLnNob3cgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzdGF0ZUljb25TaGFwZS5yZW1vdmUoKTtcbiAgICAgICAgZGVsZXRlIGdyb3VwWydzaGFwZU1hcCddWydyZWN0LXN0YXRlLWljb24nXTtcbiAgICAgIH1cblxuICAgICAgdmFyIHN0YXRlVyA9IHN0YXRlSWNvbi53aWR0aCxcbiAgICAgICAgICBoID0gc3RhdGVJY29uLmhlaWdodCxcbiAgICAgICAgICB4ID0gc3RhdGVJY29uLngsXG4gICAgICAgICAgeSA9IHN0YXRlSWNvbi55LFxuICAgICAgICAgIHN0YXRlT2Zmc2V0ID0gc3RhdGVJY29uLm9mZnNldCxcbiAgICAgICAgICBzdGF0ZUljb25TdHlsZSA9IF9fcmVzdChzdGF0ZUljb24sIFtcIndpZHRoXCIsIFwiaGVpZ2h0XCIsIFwieFwiLCBcInlcIiwgXCJvZmZzZXRcIl0pO1xuXG4gICAgICBzdGF0ZUljb25TaGFwZS5hdHRyKF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdGF0ZUljb25TdHlsZSksIHtcbiAgICAgICAgeDogeCB8fCB3aWR0aCAvIDIgLSBzdGF0ZVcgKyBzdGF0ZU9mZnNldCxcbiAgICAgICAgeTogeSB8fCAtaCAvIDIsXG4gICAgICAgIHdpZHRoOiBzdGF0ZVcsXG4gICAgICAgIGhlaWdodDogaFxuICAgICAgfSkpO1xuICAgIH0gZWxzZSBpZiAoc3RhdGVJY29uLnNob3cpIHtcbiAgICAgIHRoaXMuZHJhd1N0YXRlSWNvbihjZmcsIGdyb3VwKTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZUxpbmtQb2ludHMoY2ZnLCBncm91cCk7XG4gIH1cbn0sICdzaW5nbGUtbm9kZScpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/modelRect.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/rect.js":
/*!********************************************************************************!*\
!*** ./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/rect.js ***!
\********************************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\");\n\n\n\nObject(_antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"registerNode\"])('rect', {\n // 自定义节点时的配置\n options: {\n size: [100, 30],\n style: {\n radius: 0,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultNode.style.stroke,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultNode.style.fill,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultNode.style.lineWidth\n },\n // 文本样式配置\n labelCfg: {\n style: {\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].nodeLabel.style.fill,\n fontSize: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].nodeLabel.style.fontSize,\n fontFamily: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].windowFontFamily\n }\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultNode.linkPoints.size,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultNode.linkPoints.lineWidth,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultNode.linkPoints.fill,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].defaultNode.linkPoints.stroke\n },\n // 节点中icon配置\n icon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: false,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/bmw-prod/5d015065-8505-4e7a-baec-976f81e3c41d.svg',\n width: 20,\n height: 20\n },\n // 连接点,默认为左右\n // anchorPoints: [{ x: 0, y: 0.5 }, { x: 1, y: 0.5 }]\n anchorPoints: [[0, 0.5], [1, 0.5]],\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_2__[\"BaseGlobal\"].nodeStateStyles)\n },\n shapeType: 'rect',\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var style = this.getShapeStyle(cfg);\n var keyShape = group.addShape('rect', {\n attrs: style,\n className: this.type + \"-keyShape\",\n name: this.type + \"-keyShape\",\n draggable: true\n });\n group['shapeMap'][this.type + \"-keyShape\"] = keyShape;\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n\n /**\n * 绘制节点上的LinkPoints\n * @param {Object} cfg data数据配置项\n * @param {Group} group Group实例\n */\n drawLinkPoints: function drawLinkPoints(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).linkPoints,\n linkPoints = _a === void 0 ? {} : _a;\n\n var top = linkPoints.top,\n left = linkPoints.left,\n right = linkPoints.right,\n bottom = linkPoints.bottom,\n markSize = linkPoints.size,\n markR = linkPoints.r,\n markStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(linkPoints, [\"top\", \"left\", \"right\", \"bottom\", \"size\", \"r\"]);\n\n var size = this.getSize(cfg);\n var width = size[0];\n var height = size[1];\n\n if (left) {\n // left circle\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: -width / 2,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-left',\n name: 'link-point-left',\n isAnchorPoint: true\n });\n }\n\n if (right) {\n // right circle\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: width / 2,\n y: 0,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-right',\n name: 'link-point-right',\n isAnchorPoint: true\n });\n }\n\n if (top) {\n // top circle\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: -height / 2,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-top',\n name: 'link-point-top',\n isAnchorPoint: true\n });\n }\n\n if (bottom) {\n // bottom circle\n group['shapeMap']['link-point-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: 0,\n y: height / 2,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-bottom',\n name: 'link-point-bottom',\n isAnchorPoint: true\n });\n }\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultStyle, strokeStyle);\n var size = this.getSize(cfg);\n var width = style.width || size[0];\n var height = style.height || size[1];\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -width / 2,\n y: -height / 2,\n width: width,\n height: height\n }, style);\n\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var group = item.getContainer(); // 这里不传 cfg 参数是因为 cfg.style 需要最后覆盖样式\n\n var defaultStyle = this.getOptions({}).style;\n var size = this.getSize(cfg);\n var keyShape = item.get('keyShape');\n\n if (!cfg.size) {\n size[0] = keyShape.attr('width') || defaultStyle.width;\n size[1] = keyShape.attr('height') || defaultStyle.height;\n } // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n\n\n var strokeStyle = {\n stroke: cfg.color,\n x: -size[0] / 2,\n y: -size[1] / 2,\n width: size[0],\n height: size[1]\n }; // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])({}, defaultStyle, keyShape.attr(), strokeStyle);\n style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"mix\"])(style, cfg.style);\n this.updateShape(cfg, item, style, false, updateType);\n this.updateLinkPoints(cfg, group);\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWVsZW1lbnRAMC41LjBAQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9yZWN0LmpzP2Q2NDEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBeUM7QUFDUjtBQUNrQztBQUNuRSxrRUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLHdEQUFNO0FBQ3BCLFlBQVksd0RBQU07QUFDbEIsaUJBQWlCLHdEQUFNO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxjQUFjLHdEQUFNO0FBQ3BCLGtCQUFrQix3REFBTTtBQUN4QixvQkFBb0Isd0RBQU07QUFDMUI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHdEQUFNO0FBQ2xCLGlCQUFpQix3REFBTTtBQUN2QixZQUFZLHdEQUFNO0FBQ2xCLGNBQWMsd0RBQU07QUFDcEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSx1QkFBdUIsZUFBZSxHQUFHLGVBQWU7QUFDeEQ7QUFDQSxpQkFBaUIsc0RBQVEsR0FBRyxFQUFFLHdEQUFNO0FBQ3BDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixvREFBTTs7QUFFMUI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOLGdCQUFnQixzREFBRyxHQUFHO0FBQ3RCO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0EsR0FBRztBQUNIO0FBQ0Esb0NBQW9DOztBQUVwQyx5Q0FBeUM7QUFDekM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOLGdCQUFnQixzREFBRyxHQUFHO0FBQ3RCLFlBQVksc0RBQUc7QUFDZjtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1lbGVtZW50QDAuNS4wQEBhbnR2L2c2LWVsZW1lbnQvZXMvbm9kZXMvcmVjdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduLCBfX3Jlc3QgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IG1peCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgcmVnaXN0ZXJOb2RlLCBCYXNlR2xvYmFsIGFzIEdsb2JhbCB9IGZyb20gJ0BhbnR2L2c2LWNvcmUnO1xucmVnaXN0ZXJOb2RlKCdyZWN0Jywge1xuICAvLyDoh6rlrprkuYnoioLngrnml7bnmoTphY3nva5cbiAgb3B0aW9uczoge1xuICAgIHNpemU6IFsxMDAsIDMwXSxcbiAgICBzdHlsZToge1xuICAgICAgcmFkaXVzOiAwLFxuICAgICAgc3Ryb2tlOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUuc3Ryb2tlLFxuICAgICAgZmlsbDogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLmZpbGwsXG4gICAgICBsaW5lV2lkdGg6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zdHlsZS5saW5lV2lkdGhcbiAgICB9LFxuICAgIC8vIOaWh+acrOagt+W8j+mFjee9rlxuICAgIGxhYmVsQ2ZnOiB7XG4gICAgICBzdHlsZToge1xuICAgICAgICBmaWxsOiBHbG9iYWwubm9kZUxhYmVsLnN0eWxlLmZpbGwsXG4gICAgICAgIGZvbnRTaXplOiBHbG9iYWwubm9kZUxhYmVsLnN0eWxlLmZvbnRTaXplLFxuICAgICAgICBmb250RmFtaWx5OiBHbG9iYWwud2luZG93Rm9udEZhbWlseVxuICAgICAgfVxuICAgIH0sXG4gICAgLy8g6IqC54K55LiK5bem5Y+z5LiK5LiL5Zub5Liq5pa55ZCR5LiK55qE6ZO+5o6lY2lyY2xl6YWN572uXG4gICAgbGlua1BvaW50czoge1xuICAgICAgdG9wOiBmYWxzZSxcbiAgICAgIHJpZ2h0OiBmYWxzZSxcbiAgICAgIGJvdHRvbTogZmFsc2UsXG4gICAgICBsZWZ0OiBmYWxzZSxcbiAgICAgIC8vIGNpcmNsZeeahOWkp+Wwj1xuICAgICAgc2l6ZTogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMuc2l6ZSxcbiAgICAgIGxpbmVXaWR0aDogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMubGluZVdpZHRoLFxuICAgICAgZmlsbDogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMuZmlsbCxcbiAgICAgIHN0cm9rZTogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMuc3Ryb2tlXG4gICAgfSxcbiAgICAvLyDoioLngrnkuK1pY29u6YWN572uXG4gICAgaWNvbjoge1xuICAgICAgLy8g5piv5ZCm5pi+56S6aWNvbu+8jOWAvOS4uiBmYWxzZSDliJnkuI3muLLmn5NpY29uXG4gICAgICBzaG93OiBmYWxzZSxcbiAgICAgIC8vIGljb27nmoTlnLDlnYDvvIzlrZfnrKbkuLLnsbvlnotcbiAgICAgIGltZzogJ2h0dHBzOi8vZ3cuYWxpcGF5b2JqZWN0cy5jb20vem9zL2Jtdy1wcm9kLzVkMDE1MDY1LTg1MDUtNGU3YS1iYWVjLTk3NmY4MWUzYzQxZC5zdmcnLFxuICAgICAgd2lkdGg6IDIwLFxuICAgICAgaGVpZ2h0OiAyMFxuICAgIH0sXG4gICAgLy8g6L+e5o6l54K577yM6buY6K6k5Li65bem5Y+zXG4gICAgLy8gYW5jaG9yUG9pbnRzOiBbeyB4OiAwLCB5OiAwLjUgfSwgeyB4OiAxLCB5OiAwLjUgfV1cbiAgICBhbmNob3JQb2ludHM6IFtbMCwgMC41XSwgWzEsIDAuNV1dLFxuICAgIHN0YXRlU3R5bGVzOiBfX2Fzc2lnbih7fSwgR2xvYmFsLm5vZGVTdGF0ZVN0eWxlcylcbiAgfSxcbiAgc2hhcGVUeXBlOiAncmVjdCcsXG4gIGxhYmVsUG9zaXRpb246ICdjZW50ZXInLFxuICBkcmF3U2hhcGU6IGZ1bmN0aW9uIGRyYXdTaGFwZShjZmcsIGdyb3VwKSB7XG4gICAgdmFyIHN0eWxlID0gdGhpcy5nZXRTaGFwZVN0eWxlKGNmZyk7XG4gICAgdmFyIGtleVNoYXBlID0gZ3JvdXAuYWRkU2hhcGUoJ3JlY3QnLCB7XG4gICAgICBhdHRyczogc3R5bGUsXG4gICAgICBjbGFzc05hbWU6IHRoaXMudHlwZSArIFwiLWtleVNoYXBlXCIsXG4gICAgICBuYW1lOiB0aGlzLnR5cGUgKyBcIi1rZXlTaGFwZVwiLFxuICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgZ3JvdXBbJ3NoYXBlTWFwJ11bdGhpcy50eXBlICsgXCIta2V5U2hhcGVcIl0gPSBrZXlTaGFwZTtcbiAgICB0aGlzLmRyYXdMaW5rUG9pbnRzKGNmZywgZ3JvdXApO1xuICAgIHJldHVybiBrZXlTaGFwZTtcbiAgfSxcblxuICAvKipcbiAgICog57uY5Yi26IqC54K55LiK55qETGlua1BvaW50c1xuICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIGRhdGHmlbDmja7phY3nva7poblcbiAgICogQHBhcmFtIHtHcm91cH0gZ3JvdXAgR3JvdXDlrp7kvotcbiAgICovXG4gIGRyYXdMaW5rUG9pbnRzOiBmdW5jdGlvbiBkcmF3TGlua1BvaW50cyhjZmcsIGdyb3VwKSB7XG4gICAgdmFyIF9hID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkubGlua1BvaW50cyxcbiAgICAgICAgbGlua1BvaW50cyA9IF9hID09PSB2b2lkIDAgPyB7fSA6IF9hO1xuXG4gICAgdmFyIHRvcCA9IGxpbmtQb2ludHMudG9wLFxuICAgICAgICBsZWZ0ID0gbGlua1BvaW50cy5sZWZ0LFxuICAgICAgICByaWdodCA9IGxpbmtQb2ludHMucmlnaHQsXG4gICAgICAgIGJvdHRvbSA9IGxpbmtQb2ludHMuYm90dG9tLFxuICAgICAgICBtYXJrU2l6ZSA9IGxpbmtQb2ludHMuc2l6ZSxcbiAgICAgICAgbWFya1IgPSBsaW5rUG9pbnRzLnIsXG4gICAgICAgIG1hcmtTdHlsZSA9IF9fcmVzdChsaW5rUG9pbnRzLCBbXCJ0b3BcIiwgXCJsZWZ0XCIsIFwicmlnaHRcIiwgXCJib3R0b21cIiwgXCJzaXplXCIsIFwiclwiXSk7XG5cbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciB3aWR0aCA9IHNpemVbMF07XG4gICAgdmFyIGhlaWdodCA9IHNpemVbMV07XG5cbiAgICBpZiAobGVmdCkge1xuICAgICAgLy8gbGVmdCBjaXJjbGVcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWxlZnQnXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbWFya1N0eWxlKSwge1xuICAgICAgICAgIHg6IC13aWR0aCAvIDIsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICByOiBtYXJrU2l6ZSAvIDIgfHwgbWFya1IgfHwgNVxuICAgICAgICB9KSxcbiAgICAgICAgY2xhc3NOYW1lOiAnbGluay1wb2ludC1sZWZ0JyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtbGVmdCcsXG4gICAgICAgIGlzQW5jaG9yUG9pbnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChyaWdodCkge1xuICAgICAgLy8gcmlnaHQgY2lyY2xlXG4gICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1yaWdodCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogd2lkdGggLyAyLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtcmlnaHQnLFxuICAgICAgICBuYW1lOiAnbGluay1wb2ludC1yaWdodCcsXG4gICAgICAgIGlzQW5jaG9yUG9pbnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0b3ApIHtcbiAgICAgIC8vIHRvcCBjaXJjbGVcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXRvcCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAtaGVpZ2h0IC8gMixcbiAgICAgICAgICByOiBtYXJrU2l6ZSAvIDIgfHwgbWFya1IgfHwgNVxuICAgICAgICB9KSxcbiAgICAgICAgY2xhc3NOYW1lOiAnbGluay1wb2ludC10b3AnLFxuICAgICAgICBuYW1lOiAnbGluay1wb2ludC10b3AnLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoYm90dG9tKSB7XG4gICAgICAvLyBib3R0b20gY2lyY2xlXG4gICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1ib3R0b20nXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbWFya1N0eWxlKSwge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogaGVpZ2h0IC8gMixcbiAgICAgICAgICByOiBtYXJrU2l6ZSAvIDIgfHwgbWFya1IgfHwgNVxuICAgICAgICB9KSxcbiAgICAgICAgY2xhc3NOYW1lOiAnbGluay1wb2ludC1ib3R0b20nLFxuICAgICAgICBuYW1lOiAnbGluay1wb2ludC1ib3R0b20nLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIOiOt+WPluiKgueCueeahOagt+W8j++8jOS+m+WfuuS6juivpeiKgueCueiHquWumuS5ieaXtuS9v+eUqFxuICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIOiKgueCueaVsOaNruaooeWei1xuICAgKiBAcmV0dXJuIHtPYmplY3R9IOiKgueCueeahOagt+W8j1xuICAgKi9cbiAgZ2V0U2hhcGVTdHlsZTogZnVuY3Rpb24gZ2V0U2hhcGVTdHlsZShjZmcpIHtcbiAgICB2YXIgZGVmYXVsdFN0eWxlID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkuc3R5bGU7XG4gICAgdmFyIHN0cm9rZVN0eWxlID0ge1xuICAgICAgc3Ryb2tlOiBjZmcuY29sb3JcbiAgICB9OyAvLyDlpoLmnpzorr7nva7kuoZjb2xvcu+8jOWImeimhueblum7mOiupOeahHN0cm9rZeWxnuaAp1xuXG4gICAgdmFyIHN0eWxlID0gbWl4KHt9LCBkZWZhdWx0U3R5bGUsIHN0cm9rZVN0eWxlKTtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciB3aWR0aCA9IHN0eWxlLndpZHRoIHx8IHNpemVbMF07XG4gICAgdmFyIGhlaWdodCA9IHN0eWxlLmhlaWdodCB8fCBzaXplWzFdO1xuXG4gICAgdmFyIHN0eWxlcyA9IF9fYXNzaWduKHtcbiAgICAgIHg6IC13aWR0aCAvIDIsXG4gICAgICB5OiAtaGVpZ2h0IC8gMixcbiAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgfSwgc3R5bGUpO1xuXG4gICAgcmV0dXJuIHN0eWxlcztcbiAgfSxcbiAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUoY2ZnLCBpdGVtLCB1cGRhdGVUeXBlKSB7XG4gICAgdmFyIGdyb3VwID0gaXRlbS5nZXRDb250YWluZXIoKTsgLy8g6L+Z6YeM5LiN5LygIGNmZyDlj4LmlbDmmK/lm6DkuLogY2ZnLnN0eWxlIOmcgOimgeacgOWQjuimhuebluagt+W8j1xuXG4gICAgdmFyIGRlZmF1bHRTdHlsZSA9IHRoaXMuZ2V0T3B0aW9ucyh7fSkuc3R5bGU7XG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIga2V5U2hhcGUgPSBpdGVtLmdldCgna2V5U2hhcGUnKTtcblxuICAgIGlmICghY2ZnLnNpemUpIHtcbiAgICAgIHNpemVbMF0gPSBrZXlTaGFwZS5hdHRyKCd3aWR0aCcpIHx8IGRlZmF1bHRTdHlsZS53aWR0aDtcbiAgICAgIHNpemVbMV0gPSBrZXlTaGFwZS5hdHRyKCdoZWlnaHQnKSB8fCBkZWZhdWx0U3R5bGUuaGVpZ2h0O1xuICAgIH0gLy8g5LiL6Z2i6L+Z5Lqb5bGe5oCn6ZyA6KaB6KaG55uW6buY6K6k5qC35byP5LiO55uu5YmN5qC35byP77yM5L2G6Iul5ZyoIGNmZyDkuK3mnInmjIflrprliJnlupTor6XooqsgY2ZnIOeahOebuOW6lOmFjee9ruimhuebluOAglxuXG5cbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvcixcbiAgICAgIHg6IC1zaXplWzBdIC8gMixcbiAgICAgIHk6IC1zaXplWzFdIC8gMixcbiAgICAgIHdpZHRoOiBzaXplWzBdLFxuICAgICAgaGVpZ2h0OiBzaXplWzFdXG4gICAgfTsgLy8g5LiOIGdldFNoYXBlU3R5bGUg5LiN5ZCM5Zyo5LqO77yMdXBkYXRlIOaXtumcgOimgeiOt+WPluWIsOW9k+WJjeeahCBzdHlsZSDov5vooYzono3lkIjjgILljbPmlrDkvKDlhaXnmoTphY3nva7pobnkuK3msqHmnInmtonlj4rnmoTlsZ7mgKfvvIzkv53nlZnlvZPliY3nmoTphY3nva7jgIJcblxuICAgIHZhciBzdHlsZSA9IG1peCh7fSwgZGVmYXVsdFN0eWxlLCBrZXlTaGFwZS5hdHRyKCksIHN0cm9rZVN0eWxlKTtcbiAgICBzdHlsZSA9IG1peChzdHlsZSwgY2ZnLnN0eWxlKTtcbiAgICB0aGlzLnVwZGF0ZVNoYXBlKGNmZywgaXRlbSwgc3R5bGUsIGZhbHNlLCB1cGRhdGVUeXBlKTtcbiAgICB0aGlzLnVwZGF0ZUxpbmtQb2ludHMoY2ZnLCBncm91cCk7XG4gIH1cbn0sICdzaW5nbGUtbm9kZScpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/rect.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/star.js":
/*!********************************************************************************!*\
!*** ./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/star.js ***!
\********************************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\n\n // 五角星shape\n\nObject(_antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerNode\"])('star', {\n // 自定义节点时的配置\n options: {\n size: 60,\n style: {\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.stroke,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.fill,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.lineWidth\n },\n labelCfg: {\n style: {\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fill,\n fontSize: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fontSize,\n fontFamily: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].windowFontFamily\n }\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.size,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.lineWidth,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.fill,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.stroke\n },\n // 节点中icon配置\n icon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: false,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/bmw-prod/5d015065-8505-4e7a-baec-976f81e3c41d.svg',\n width: 20,\n height: 20\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeStateStyles)\n },\n shapeType: 'star',\n // 文本位置\n labelPosition: 'center',\n drawShape: function drawShape(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).icon,\n icon = _a === void 0 ? {} : _a;\n var style = this.getShapeStyle(cfg);\n var keyShape = group.addShape('path', {\n attrs: style,\n className: this.type + \"-keyShape\",\n name: this.type + \"-keyShape\",\n draggable: true\n });\n group['shapeMap'][this.type + \"-keyShape\"] = keyShape;\n var w = icon.width,\n h = icon.height,\n show = icon.show,\n text = icon.text;\n\n if (show) {\n if (text) {\n group['shapeMap'][this.type + \"-icon\"] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, icon),\n className: this.type + \"-icon\",\n name: this.type + \"-icon\",\n draggable: true\n });\n } else {\n group['shapeMap'][this.type + \"-icon\"] = group.addShape('image', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: -w / 2,\n y: -h / 2\n }, icon),\n className: this.type + \"-icon\",\n name: this.type + \"-icon\",\n draggable: true\n });\n }\n }\n\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n\n /**\n * 绘制节点上的LinkPoints\n * @param {Object} cfg data数据配置项\n * @param {Group} group Group实例\n */\n drawLinkPoints: function drawLinkPoints(cfg, group) {\n var _a = (this.mergeStyle || this.getOptions(cfg)).linkPoints,\n linkPoints = _a === void 0 ? {} : _a;\n\n var top = linkPoints.top,\n left = linkPoints.left,\n right = linkPoints.right,\n leftBottom = linkPoints.leftBottom,\n rightBottom = linkPoints.rightBottom,\n markSize = linkPoints.size,\n markR = linkPoints.r,\n markStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(linkPoints, [\"top\", \"left\", \"right\", \"leftBottom\", \"rightBottom\", \"size\", \"r\"]);\n\n var size = this.getSize(cfg);\n var outerR = size[0];\n\n if (right) {\n // right circle\n // up down left right 四个方向的坐标均不相同\n var x1 = Math.cos((18 + 72 * 0) / 180 * Math.PI) * outerR;\n var y1 = Math.sin((18 + 72 * 0) / 180 * Math.PI) * outerR;\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: x1,\n y: -y1,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-right',\n name: 'link-point-right'\n });\n }\n\n if (top) {\n // up down left right 四个方向的坐标均不相同\n var x1 = Math.cos((18 + 72 * 1) / 180 * Math.PI) * outerR;\n var y1 = Math.sin((18 + 72 * 1) / 180 * Math.PI) * outerR; // top circle\n\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: x1,\n y: -y1,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-top',\n name: 'link-point-top'\n });\n }\n\n if (left) {\n // up down left right 四个方向的坐标均不相同\n var x1 = Math.cos((18 + 72 * 2) / 180 * Math.PI) * outerR;\n var y1 = Math.sin((18 + 72 * 2) / 180 * Math.PI) * outerR; // left circle\n\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: x1,\n y: -y1,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-left',\n name: 'link-point-left'\n });\n }\n\n if (leftBottom) {\n // up down left right 四个方向的坐标均不相同\n var x1 = Math.cos((18 + 72 * 3) / 180 * Math.PI) * outerR;\n var y1 = Math.sin((18 + 72 * 3) / 180 * Math.PI) * outerR; // left bottom circle\n\n group['shapeMap']['link-point-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: x1,\n y: -y1,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-left-bottom',\n name: 'link-point-left-bottom'\n });\n }\n\n if (rightBottom) {\n // up down left right 四个方向的坐标均不相同\n var x1 = Math.cos((18 + 72 * 4) / 180 * Math.PI) * outerR;\n var y1 = Math.sin((18 + 72 * 4) / 180 * Math.PI) * outerR; // left bottom circle\n\n group['shapeMap']['link-point-right-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: x1,\n y: -y1,\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-right-bottom',\n name: 'link-point-right-bottom'\n });\n }\n },\n getPath: function getPath(cfg) {\n var size = this.getSize(cfg);\n var outerR = size[0];\n var defaultInnerR = outerR * 3 / 8;\n var innerR = cfg.innerR || defaultInnerR;\n var path = [];\n\n for (var i = 0; i < 5; i++) {\n var x1 = Math.cos((18 + 72 * i) / 180 * Math.PI) * outerR;\n var y1 = Math.sin((18 + 72 * i) / 180 * Math.PI) * outerR;\n var x2 = Math.cos((54 + 72 * i) / 180 * Math.PI) * innerR;\n var y2 = Math.sin((54 + 72 * i) / 180 * Math.PI) * innerR;\n\n if (i === 0) {\n path.push(['M', x1, -y1]);\n } else {\n path.push(['L', x1, -y1]);\n }\n\n path.push(['L', x2, -y2]);\n }\n\n path.push(['Z']);\n return path;\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖原来默认的 stroke 属性。但 cfg 中但 stroke 属性优先级更高\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, defaultStyle, strokeStyle);\n var path = this.getPath(cfg);\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n path: path\n }, style);\n\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var group = item.getContainer(); // 这里不传 cfg 参数是因为 cfg.style 需要最后覆盖样式\n\n var defaultStyle = this.getOptions({}).style;\n var path = this.getPath(cfg); // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n\n var strokeStyle = {\n stroke: cfg.color,\n path: path\n }; // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n\n var keyShape = item.get('keyShape');\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, defaultStyle, keyShape.attr(), strokeStyle);\n style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])(style, cfg.style);\n this.updateShape(cfg, item, style, true, updateType);\n this.updateLinkPoints(cfg, group);\n },\n\n /**\n * 更新linkPoints\n * @param {Object} cfg 节点数据配置项\n * @param {Group} group Item所在的group\n */\n updateLinkPoints: function updateLinkPoints(cfg, group) {\n var defaultLinkPoints = this.getOptions({}).linkPoints;\n var markLeft = group['shapeMap']['link-point-left'] || group.find(function (element) {\n return element.get('className') === 'link-point-left';\n });\n var markRight = group['shapeMap']['link-point-right'] || group.find(function (element) {\n return element.get('className') === 'link-point-right';\n });\n var markTop = group['shapeMap']['link-point-top'] || group.find(function (element) {\n return element.get('className') === 'link-point-top';\n });\n var markLeftBottom = group['shapeMap']['link-point-left-bottom'] || group.find(function (element) {\n return element.get('className') === 'link-point-left-bottom';\n });\n var markRightBottom = group['shapeMap']['link-point-left-bottom'] || group.find(function (element) {\n return element.get('className') === 'link-point-right-bottom';\n });\n var currentLinkPoints = defaultLinkPoints;\n var existLinkPoint = markLeft || markRight || markTop || markLeftBottom || markRightBottom;\n\n if (existLinkPoint) {\n currentLinkPoints = existLinkPoint.attr();\n }\n\n var linkPoints = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, currentLinkPoints, cfg.linkPoints);\n var markFill = linkPoints.fill,\n markStroke = linkPoints.stroke,\n borderWidth = linkPoints.lineWidth;\n var markSize = linkPoints.size / 2;\n if (!markSize) markSize = linkPoints.r;\n\n var _a = cfg.linkPoints ? cfg.linkPoints : {\n left: undefined,\n right: undefined,\n top: undefined,\n leftBottom: undefined,\n rightBottom: undefined\n },\n left = _a.left,\n right = _a.right,\n top = _a.top,\n leftBottom = _a.leftBottom,\n rightBottom = _a.rightBottom;\n\n var size = this.getSize(cfg);\n var outerR = size[0];\n var styles = {\n r: markSize,\n fill: markFill,\n stroke: markStroke,\n lineWidth: borderWidth\n };\n var x = Math.cos((18 + 72 * 0) / 180 * Math.PI) * outerR;\n var y = Math.sin((18 + 72 * 0) / 180 * Math.PI) * outerR;\n\n if (markRight) {\n if (!right && right !== undefined) {\n markRight.remove();\n delete group['shapeMap']['link-point-right'];\n } else {\n markRight.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }));\n }\n } else if (right) {\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }),\n className: 'link-point-right',\n name: 'link-point-right',\n isAnchorPoint: true\n });\n }\n\n x = Math.cos((18 + 72 * 1) / 180 * Math.PI) * outerR;\n y = Math.sin((18 + 72 * 1) / 180 * Math.PI) * outerR;\n\n if (markTop) {\n if (!top && top !== undefined) {\n markTop.remove();\n delete group['shapeMap']['link-point-top'];\n } else {\n markTop.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }));\n }\n } else if (top) {\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }),\n className: 'link-point-top',\n name: 'link-point-top',\n isAnchorPoint: true\n });\n }\n\n x = Math.cos((18 + 72 * 2) / 180 * Math.PI) * outerR;\n y = Math.sin((18 + 72 * 2) / 180 * Math.PI) * outerR;\n\n if (markLeft) {\n if (!left && left !== undefined) {\n markLeft.remove();\n delete group['shapeMap']['link-point-left'];\n } else {\n markLeft.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }));\n }\n } else if (left) {\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }),\n className: 'link-point-left',\n name: 'link-point-left',\n isAnchorPoint: true\n });\n }\n\n x = Math.cos((18 + 72 * 3) / 180 * Math.PI) * outerR;\n y = Math.sin((18 + 72 * 3) / 180 * Math.PI) * outerR;\n\n if (markLeftBottom) {\n if (!leftBottom && leftBottom !== undefined) {\n markLeftBottom.remove();\n delete group['shapeMap']['link-point-left-bottom'];\n } else {\n markLeftBottom.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }));\n }\n } else if (leftBottom) {\n group['shapeMap']['link-point-left-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }),\n className: 'link-point-left-bottom',\n name: 'link-point-left-bottom',\n isAnchorPoint: true\n });\n }\n\n x = Math.cos((18 + 72 * 4) / 180 * Math.PI) * outerR;\n y = Math.sin((18 + 72 * 4) / 180 * Math.PI) * outerR;\n\n if (markRightBottom) {\n if (!rightBottom && rightBottom !== undefined) {\n markLeftBottom.remove();\n delete group['shapeMap']['link-point-right-bottom'];\n } else {\n markRightBottom.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }));\n }\n } else if (rightBottom) {\n group['shapeMap']['link-point-right-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: x,\n y: -y\n }),\n className: 'link-point-right-bottom',\n name: 'link-point-right-bottom',\n isAnchorPoint: true\n });\n }\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWVsZW1lbnRAMC41LjBAQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9zdGFyLmpzP2ZhZGIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBeUM7QUFDMEI7QUFDbEM7O0FBRWpDLGtFQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLHdEQUFNO0FBQ3BCLFlBQVksd0RBQU07QUFDbEIsaUJBQWlCLHdEQUFNO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsY0FBYyx3REFBTTtBQUNwQixrQkFBa0Isd0RBQU07QUFDeEIsb0JBQW9CLHdEQUFNO0FBQzFCO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx3REFBTTtBQUNsQixpQkFBaUIsd0RBQU07QUFDdkIsWUFBWSx3REFBTTtBQUNsQixjQUFjLHdEQUFNO0FBQ3BCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLGlCQUFpQixzREFBUSxHQUFHLEVBQUUsd0RBQU07QUFDcEMsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHNEQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG9EQUFNOztBQUUxQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdFQUFnRTs7QUFFaEU7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnRUFBZ0U7O0FBRWhFO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0VBQWdFOztBQUVoRTtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdFQUFnRTs7QUFFaEU7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLE9BQU87QUFDMUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU4sZ0JBQWdCLHNEQUFHLEdBQUc7QUFDdEI7O0FBRUEsaUJBQWlCLHNEQUFRO0FBQ3pCO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLEdBQUc7QUFDSDtBQUNBLG9DQUFvQzs7QUFFcEMseUNBQXlDO0FBQ3pDLGlDQUFpQzs7QUFFakM7QUFDQTtBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBLGdCQUFnQixzREFBRyxHQUFHO0FBQ3RCLFlBQVksc0RBQUc7QUFDZjtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0EsOENBQThDO0FBQzlDO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIsc0RBQUcsR0FBRztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLHVCQUF1QixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDM0M7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AscUJBQXFCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUN6QztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxzQkFBc0Isc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQzFDO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDQSxlQUFlLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLDRCQUE0QixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDaEQ7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBLGVBQWUsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsNkJBQTZCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNqRDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMO0FBQ0EsZUFBZSxzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDbkM7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWVsZW1lbnRAMC41LjBAQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy9zdGFyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24sIF9fcmVzdCB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgcmVnaXN0ZXJOb2RlLCBCYXNlR2xvYmFsIGFzIEdsb2JhbCB9IGZyb20gJ0BhbnR2L2c2LWNvcmUnO1xuaW1wb3J0IHsgbWl4IH0gZnJvbSAnQGFudHYvdXRpbCc7IC8vIOS6lOinkuaYn3NoYXBlXG5cbnJlZ2lzdGVyTm9kZSgnc3RhcicsIHtcbiAgLy8g6Ieq5a6a5LmJ6IqC54K55pe255qE6YWN572uXG4gIG9wdGlvbnM6IHtcbiAgICBzaXplOiA2MCxcbiAgICBzdHlsZToge1xuICAgICAgc3Ryb2tlOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUuc3Ryb2tlLFxuICAgICAgZmlsbDogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLmZpbGwsXG4gICAgICBsaW5lV2lkdGg6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zdHlsZS5saW5lV2lkdGhcbiAgICB9LFxuICAgIGxhYmVsQ2ZnOiB7XG4gICAgICBzdHlsZToge1xuICAgICAgICBmaWxsOiBHbG9iYWwubm9kZUxhYmVsLnN0eWxlLmZpbGwsXG4gICAgICAgIGZvbnRTaXplOiBHbG9iYWwubm9kZUxhYmVsLnN0eWxlLmZvbnRTaXplLFxuICAgICAgICBmb250RmFtaWx5OiBHbG9iYWwud2luZG93Rm9udEZhbWlseVxuICAgICAgfVxuICAgIH0sXG4gICAgLy8g6IqC54K55LiK5bem5Y+z5LiK5LiL5Zub5Liq5pa55ZCR5LiK55qE6ZO+5o6lY2lyY2xl6YWN572uXG4gICAgbGlua1BvaW50czoge1xuICAgICAgdG9wOiBmYWxzZSxcbiAgICAgIHJpZ2h0OiBmYWxzZSxcbiAgICAgIGJvdHRvbTogZmFsc2UsXG4gICAgICBsZWZ0OiBmYWxzZSxcbiAgICAgIC8vIGNpcmNsZeeahOWkp+Wwj1xuICAgICAgc2l6ZTogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMuc2l6ZSxcbiAgICAgIGxpbmVXaWR0aDogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMubGluZVdpZHRoLFxuICAgICAgZmlsbDogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMuZmlsbCxcbiAgICAgIHN0cm9rZTogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMuc3Ryb2tlXG4gICAgfSxcbiAgICAvLyDoioLngrnkuK1pY29u6YWN572uXG4gICAgaWNvbjoge1xuICAgICAgLy8g5piv5ZCm5pi+56S6aWNvbu+8jOWAvOS4uiBmYWxzZSDliJnkuI3muLLmn5NpY29uXG4gICAgICBzaG93OiBmYWxzZSxcbiAgICAgIC8vIGljb27nmoTlnLDlnYDvvIzlrZfnrKbkuLLnsbvlnotcbiAgICAgIGltZzogJ2h0dHBzOi8vZ3cuYWxpcGF5b2JqZWN0cy5jb20vem9zL2Jtdy1wcm9kLzVkMDE1MDY1LTg1MDUtNGU3YS1iYWVjLTk3NmY4MWUzYzQxZC5zdmcnLFxuICAgICAgd2lkdGg6IDIwLFxuICAgICAgaGVpZ2h0OiAyMFxuICAgIH0sXG4gICAgc3RhdGVTdHlsZXM6IF9fYXNzaWduKHt9LCBHbG9iYWwubm9kZVN0YXRlU3R5bGVzKVxuICB9LFxuICBzaGFwZVR5cGU6ICdzdGFyJyxcbiAgLy8g5paH5pys5L2N572uXG4gIGxhYmVsUG9zaXRpb246ICdjZW50ZXInLFxuICBkcmF3U2hhcGU6IGZ1bmN0aW9uIGRyYXdTaGFwZShjZmcsIGdyb3VwKSB7XG4gICAgdmFyIF9hID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkuaWNvbixcbiAgICAgICAgaWNvbiA9IF9hID09PSB2b2lkIDAgPyB7fSA6IF9hO1xuICAgIHZhciBzdHlsZSA9IHRoaXMuZ2V0U2hhcGVTdHlsZShjZmcpO1xuICAgIHZhciBrZXlTaGFwZSA9IGdyb3VwLmFkZFNoYXBlKCdwYXRoJywge1xuICAgICAgYXR0cnM6IHN0eWxlLFxuICAgICAgY2xhc3NOYW1lOiB0aGlzLnR5cGUgKyBcIi1rZXlTaGFwZVwiLFxuICAgICAgbmFtZTogdGhpcy50eXBlICsgXCIta2V5U2hhcGVcIixcbiAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIGdyb3VwWydzaGFwZU1hcCddW3RoaXMudHlwZSArIFwiLWtleVNoYXBlXCJdID0ga2V5U2hhcGU7XG4gICAgdmFyIHcgPSBpY29uLndpZHRoLFxuICAgICAgICBoID0gaWNvbi5oZWlnaHQsXG4gICAgICAgIHNob3cgPSBpY29uLnNob3csXG4gICAgICAgIHRleHQgPSBpY29uLnRleHQ7XG5cbiAgICBpZiAoc2hvdykge1xuICAgICAgaWYgKHRleHQpIHtcbiAgICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bdGhpcy50eXBlICsgXCItaWNvblwiXSA9IGdyb3VwLmFkZFNoYXBlKCd0ZXh0Jywge1xuICAgICAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgIGZvbnRTaXplOiAxMixcbiAgICAgICAgICAgIGZpbGw6ICcjMDAwJyxcbiAgICAgICAgICAgIHN0cm9rZTogJyMwMDAnLFxuICAgICAgICAgICAgdGV4dEJhc2VsaW5lOiAnbWlkZGxlJyxcbiAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgICAgICAgICB9LCBpY29uKSxcbiAgICAgICAgICBjbGFzc05hbWU6IHRoaXMudHlwZSArIFwiLWljb25cIixcbiAgICAgICAgICBuYW1lOiB0aGlzLnR5cGUgKyBcIi1pY29uXCIsXG4gICAgICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bdGhpcy50eXBlICsgXCItaWNvblwiXSA9IGdyb3VwLmFkZFNoYXBlKCdpbWFnZScsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgICAgeDogLXcgLyAyLFxuICAgICAgICAgICAgeTogLWggLyAyXG4gICAgICAgICAgfSwgaWNvbiksXG4gICAgICAgICAgY2xhc3NOYW1lOiB0aGlzLnR5cGUgKyBcIi1pY29uXCIsXG4gICAgICAgICAgbmFtZTogdGhpcy50eXBlICsgXCItaWNvblwiLFxuICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmRyYXdMaW5rUG9pbnRzKGNmZywgZ3JvdXApO1xuICAgIHJldHVybiBrZXlTaGFwZTtcbiAgfSxcblxuICAvKipcbiAgICog57uY5Yi26IqC54K55LiK55qETGlua1BvaW50c1xuICAgKiBAcGFyYW0ge09iamVjdH0gY2ZnIGRhdGHmlbDmja7phY3nva7poblcbiAgICogQHBhcmFtIHtHcm91cH0gZ3JvdXAgR3JvdXDlrp7kvotcbiAgICovXG4gIGRyYXdMaW5rUG9pbnRzOiBmdW5jdGlvbiBkcmF3TGlua1BvaW50cyhjZmcsIGdyb3VwKSB7XG4gICAgdmFyIF9hID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkubGlua1BvaW50cyxcbiAgICAgICAgbGlua1BvaW50cyA9IF9hID09PSB2b2lkIDAgPyB7fSA6IF9hO1xuXG4gICAgdmFyIHRvcCA9IGxpbmtQb2ludHMudG9wLFxuICAgICAgICBsZWZ0ID0gbGlua1BvaW50cy5sZWZ0LFxuICAgICAgICByaWdodCA9IGxpbmtQb2ludHMucmlnaHQsXG4gICAgICAgIGxlZnRCb3R0b20gPSBsaW5rUG9pbnRzLmxlZnRCb3R0b20sXG4gICAgICAgIHJpZ2h0Qm90dG9tID0gbGlua1BvaW50cy5yaWdodEJvdHRvbSxcbiAgICAgICAgbWFya1NpemUgPSBsaW5rUG9pbnRzLnNpemUsXG4gICAgICAgIG1hcmtSID0gbGlua1BvaW50cy5yLFxuICAgICAgICBtYXJrU3R5bGUgPSBfX3Jlc3QobGlua1BvaW50cywgW1widG9wXCIsIFwibGVmdFwiLCBcInJpZ2h0XCIsIFwibGVmdEJvdHRvbVwiLCBcInJpZ2h0Qm90dG9tXCIsIFwic2l6ZVwiLCBcInJcIl0pO1xuXG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgb3V0ZXJSID0gc2l6ZVswXTtcblxuICAgIGlmIChyaWdodCkge1xuICAgICAgLy8gcmlnaHQgY2lyY2xlXG4gICAgICAvLyB1cCBkb3duIGxlZnQgcmlnaHQg5Zub5Liq5pa55ZCR55qE5Z2Q5qCH5Z2H5LiN55u45ZCMXG4gICAgICB2YXIgeDEgPSBNYXRoLmNvcygoMTggKyA3MiAqIDApIC8gMTgwICogTWF0aC5QSSkgKiBvdXRlclI7XG4gICAgICB2YXIgeTEgPSBNYXRoLnNpbigoMTggKyA3MiAqIDApIC8gMTgwICogTWF0aC5QSSkgKiBvdXRlclI7XG4gICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1yaWdodCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogeDEsXG4gICAgICAgICAgeTogLXkxLFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LXJpZ2h0JyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtcmlnaHQnXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodG9wKSB7XG4gICAgICAvLyB1cCBkb3duIGxlZnQgcmlnaHQg5Zub5Liq5pa55ZCR55qE5Z2Q5qCH5Z2H5LiN55u45ZCMXG4gICAgICB2YXIgeDEgPSBNYXRoLmNvcygoMTggKyA3MiAqIDEpIC8gMTgwICogTWF0aC5QSSkgKiBvdXRlclI7XG4gICAgICB2YXIgeTEgPSBNYXRoLnNpbigoMTggKyA3MiAqIDEpIC8gMTgwICogTWF0aC5QSSkgKiBvdXRlclI7IC8vIHRvcCBjaXJjbGVcblxuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtdG9wJ10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICB4OiB4MSxcbiAgICAgICAgICB5OiAteTEsXG4gICAgICAgICAgcjogbWFya1NpemUgLyAyIHx8IG1hcmtSIHx8IDVcbiAgICAgICAgfSksXG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtdG9wJyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtdG9wJ1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGxlZnQpIHtcbiAgICAgIC8vIHVwIGRvd24gbGVmdCByaWdodCDlm5vkuKrmlrnlkJHnmoTlnZDmoIflnYfkuI3nm7jlkIxcbiAgICAgIHZhciB4MSA9IE1hdGguY29zKCgxOCArIDcyICogMikgLyAxODAgKiBNYXRoLlBJKSAqIG91dGVyUjtcbiAgICAgIHZhciB5MSA9IE1hdGguc2luKCgxOCArIDcyICogMikgLyAxODAgKiBNYXRoLlBJKSAqIG91dGVyUjsgLy8gbGVmdCBjaXJjbGVcblxuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtbGVmdCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogeDEsXG4gICAgICAgICAgeTogLXkxLFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LWxlZnQnLFxuICAgICAgICBuYW1lOiAnbGluay1wb2ludC1sZWZ0J1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGxlZnRCb3R0b20pIHtcbiAgICAgIC8vIHVwIGRvd24gbGVmdCByaWdodCDlm5vkuKrmlrnlkJHnmoTlnZDmoIflnYfkuI3nm7jlkIxcbiAgICAgIHZhciB4MSA9IE1hdGguY29zKCgxOCArIDcyICogMykgLyAxODAgKiBNYXRoLlBJKSAqIG91dGVyUjtcbiAgICAgIHZhciB5MSA9IE1hdGguc2luKCgxOCArIDcyICogMykgLyAxODAgKiBNYXRoLlBJKSAqIG91dGVyUjsgLy8gbGVmdCBib3R0b20gY2lyY2xlXG5cbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWJvdHRvbSddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogeDEsXG4gICAgICAgICAgeTogLXkxLFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LWxlZnQtYm90dG9tJyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtbGVmdC1ib3R0b20nXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocmlnaHRCb3R0b20pIHtcbiAgICAgIC8vIHVwIGRvd24gbGVmdCByaWdodCDlm5vkuKrmlrnlkJHnmoTlnZDmoIflnYfkuI3nm7jlkIxcbiAgICAgIHZhciB4MSA9IE1hdGguY29zKCgxOCArIDcyICogNCkgLyAxODAgKiBNYXRoLlBJKSAqIG91dGVyUjtcbiAgICAgIHZhciB5MSA9IE1hdGguc2luKCgxOCArIDcyICogNCkgLyAxODAgKiBNYXRoLlBJKSAqIG91dGVyUjsgLy8gbGVmdCBib3R0b20gY2lyY2xlXG5cbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXJpZ2h0LWJvdHRvbSddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgeDogeDEsXG4gICAgICAgICAgeTogLXkxLFxuICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LXJpZ2h0LWJvdHRvbScsXG4gICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LXJpZ2h0LWJvdHRvbSdcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgZ2V0UGF0aDogZnVuY3Rpb24gZ2V0UGF0aChjZmcpIHtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciBvdXRlclIgPSBzaXplWzBdO1xuICAgIHZhciBkZWZhdWx0SW5uZXJSID0gb3V0ZXJSICogMyAvIDg7XG4gICAgdmFyIGlubmVyUiA9IGNmZy5pbm5lclIgfHwgZGVmYXVsdElubmVyUjtcbiAgICB2YXIgcGF0aCA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCA1OyBpKyspIHtcbiAgICAgIHZhciB4MSA9IE1hdGguY29zKCgxOCArIDcyICogaSkgLyAxODAgKiBNYXRoLlBJKSAqIG91dGVyUjtcbiAgICAgIHZhciB5MSA9IE1hdGguc2luKCgxOCArIDcyICogaSkgLyAxODAgKiBNYXRoLlBJKSAqIG91dGVyUjtcbiAgICAgIHZhciB4MiA9IE1hdGguY29zKCg1NCArIDcyICogaSkgLyAxODAgKiBNYXRoLlBJKSAqIGlubmVyUjtcbiAgICAgIHZhciB5MiA9IE1hdGguc2luKCg1NCArIDcyICogaSkgLyAxODAgKiBNYXRoLlBJKSAqIGlubmVyUjtcblxuICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgcGF0aC5wdXNoKFsnTScsIHgxLCAteTFdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhdGgucHVzaChbJ0wnLCB4MSwgLXkxXSk7XG4gICAgICB9XG5cbiAgICAgIHBhdGgucHVzaChbJ0wnLCB4MiwgLXkyXSk7XG4gICAgfVxuXG4gICAgcGF0aC5wdXNoKFsnWiddKTtcbiAgICByZXR1cm4gcGF0aDtcbiAgfSxcblxuICAvKipcbiAgICog6I635Y+W6IqC54K555qE5qC35byP77yM5L6b5Z+65LqO6K+l6IqC54K56Ieq5a6a5LmJ5pe25L2/55SoXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcg6IqC54K55pWw5o2u5qih5Z6LXG4gICAqIEByZXR1cm4ge09iamVjdH0g6IqC54K555qE5qC35byPXG4gICAqL1xuICBnZXRTaGFwZVN0eWxlOiBmdW5jdGlvbiBnZXRTaGFwZVN0eWxlKGNmZykge1xuICAgIHZhciBkZWZhdWx0U3R5bGUgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpKS5zdHlsZTtcbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvclxuICAgIH07IC8vIOWmguaenOiuvue9ruS6hmNvbG9y77yM5YiZ6KaG55uW5Y6f5p2l6buY6K6k55qEIHN0cm9rZSDlsZ7mgKfjgILkvYYgY2ZnIOS4reS9hiBzdHJva2Ug5bGe5oCn5LyY5YWI57qn5pu06auYXG5cbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwgc3Ryb2tlU3R5bGUpO1xuICAgIHZhciBwYXRoID0gdGhpcy5nZXRQYXRoKGNmZyk7XG5cbiAgICB2YXIgc3R5bGVzID0gX19hc3NpZ24oe1xuICAgICAgcGF0aDogcGF0aFxuICAgIH0sIHN0eWxlKTtcblxuICAgIHJldHVybiBzdHlsZXM7XG4gIH0sXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKGNmZywgaXRlbSwgdXBkYXRlVHlwZSkge1xuICAgIHZhciBncm91cCA9IGl0ZW0uZ2V0Q29udGFpbmVyKCk7IC8vIOi/memHjOS4jeS8oCBjZmcg5Y+C5pWw5piv5Zug5Li6IGNmZy5zdHlsZSDpnIDopoHmnIDlkI7opobnm5bmoLflvI9cblxuICAgIHZhciBkZWZhdWx0U3R5bGUgPSB0aGlzLmdldE9wdGlvbnMoe30pLnN0eWxlO1xuICAgIHZhciBwYXRoID0gdGhpcy5nZXRQYXRoKGNmZyk7IC8vIOS4i+mdoui/meS6m+WxnuaAp+mcgOimgeimhueblum7mOiupOagt+W8j+S4juebruWJjeagt+W8j++8jOS9huiLpeWcqCBjZmcg5Lit5pyJ5oyH5a6a5YiZ5bqU6K+l6KKrIGNmZyDnmoTnm7jlupTphY3nva7opobnm5bjgIJcblxuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yLFxuICAgICAgcGF0aDogcGF0aFxuICAgIH07IC8vIOS4jiBnZXRTaGFwZVN0eWxlIOS4jeWQjOWcqOS6ju+8jHVwZGF0ZSDml7bpnIDopoHojrflj5bliLDlvZPliY3nmoQgc3R5bGUg6L+b6KGM6J6N5ZCI44CC5Y2z5paw5Lyg5YWl55qE6YWN572u6aG55Lit5rKh5pyJ5raJ5Y+K55qE5bGe5oCn77yM5L+d55WZ5b2T5YmN55qE6YWN572u44CCXG5cbiAgICB2YXIga2V5U2hhcGUgPSBpdGVtLmdldCgna2V5U2hhcGUnKTtcbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwga2V5U2hhcGUuYXR0cigpLCBzdHJva2VTdHlsZSk7XG4gICAgc3R5bGUgPSBtaXgoc3R5bGUsIGNmZy5zdHlsZSk7XG4gICAgdGhpcy51cGRhdGVTaGFwZShjZmcsIGl0ZW0sIHN0eWxlLCB0cnVlLCB1cGRhdGVUeXBlKTtcbiAgICB0aGlzLnVwZGF0ZUxpbmtQb2ludHMoY2ZnLCBncm91cCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOabtOaWsGxpbmtQb2ludHNcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyDoioLngrnmlbDmja7phY3nva7poblcbiAgICogQHBhcmFtIHtHcm91cH0gZ3JvdXAgSXRlbeaJgOWcqOeahGdyb3VwXG4gICAqL1xuICB1cGRhdGVMaW5rUG9pbnRzOiBmdW5jdGlvbiB1cGRhdGVMaW5rUG9pbnRzKGNmZywgZ3JvdXApIHtcbiAgICB2YXIgZGVmYXVsdExpbmtQb2ludHMgPSB0aGlzLmdldE9wdGlvbnMoe30pLmxpbmtQb2ludHM7XG4gICAgdmFyIG1hcmtMZWZ0ID0gZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtbGVmdCddIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50LmdldCgnY2xhc3NOYW1lJykgPT09ICdsaW5rLXBvaW50LWxlZnQnO1xuICAgIH0pO1xuICAgIHZhciBtYXJrUmlnaHQgPSBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1yaWdodCddIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50LmdldCgnY2xhc3NOYW1lJykgPT09ICdsaW5rLXBvaW50LXJpZ2h0JztcbiAgICB9KTtcbiAgICB2YXIgbWFya1RvcCA9IGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXRvcCddIHx8IGdyb3VwLmZpbmQoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50LmdldCgnY2xhc3NOYW1lJykgPT09ICdsaW5rLXBvaW50LXRvcCc7XG4gICAgfSk7XG4gICAgdmFyIG1hcmtMZWZ0Qm90dG9tID0gZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtbGVmdC1ib3R0b20nXSB8fCBncm91cC5maW5kKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ2NsYXNzTmFtZScpID09PSAnbGluay1wb2ludC1sZWZ0LWJvdHRvbSc7XG4gICAgfSk7XG4gICAgdmFyIG1hcmtSaWdodEJvdHRvbSA9IGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWxlZnQtYm90dG9tJ10gfHwgZ3JvdXAuZmluZChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCdjbGFzc05hbWUnKSA9PT0gJ2xpbmstcG9pbnQtcmlnaHQtYm90dG9tJztcbiAgICB9KTtcbiAgICB2YXIgY3VycmVudExpbmtQb2ludHMgPSBkZWZhdWx0TGlua1BvaW50cztcbiAgICB2YXIgZXhpc3RMaW5rUG9pbnQgPSBtYXJrTGVmdCB8fCBtYXJrUmlnaHQgfHwgbWFya1RvcCB8fCBtYXJrTGVmdEJvdHRvbSB8fCBtYXJrUmlnaHRCb3R0b207XG5cbiAgICBpZiAoZXhpc3RMaW5rUG9pbnQpIHtcbiAgICAgIGN1cnJlbnRMaW5rUG9pbnRzID0gZXhpc3RMaW5rUG9pbnQuYXR0cigpO1xuICAgIH1cblxuICAgIHZhciBsaW5rUG9pbnRzID0gbWl4KHt9LCBjdXJyZW50TGlua1BvaW50cywgY2ZnLmxpbmtQb2ludHMpO1xuICAgIHZhciBtYXJrRmlsbCA9IGxpbmtQb2ludHMuZmlsbCxcbiAgICAgICAgbWFya1N0cm9rZSA9IGxpbmtQb2ludHMuc3Ryb2tlLFxuICAgICAgICBib3JkZXJXaWR0aCA9IGxpbmtQb2ludHMubGluZVdpZHRoO1xuICAgIHZhciBtYXJrU2l6ZSA9IGxpbmtQb2ludHMuc2l6ZSAvIDI7XG4gICAgaWYgKCFtYXJrU2l6ZSkgbWFya1NpemUgPSBsaW5rUG9pbnRzLnI7XG5cbiAgICB2YXIgX2EgPSBjZmcubGlua1BvaW50cyA/IGNmZy5saW5rUG9pbnRzIDoge1xuICAgICAgbGVmdDogdW5kZWZpbmVkLFxuICAgICAgcmlnaHQ6IHVuZGVmaW5lZCxcbiAgICAgIHRvcDogdW5kZWZpbmVkLFxuICAgICAgbGVmdEJvdHRvbTogdW5kZWZpbmVkLFxuICAgICAgcmlnaHRCb3R0b206IHVuZGVmaW5lZFxuICAgIH0sXG4gICAgICAgIGxlZnQgPSBfYS5sZWZ0LFxuICAgICAgICByaWdodCA9IF9hLnJpZ2h0LFxuICAgICAgICB0b3AgPSBfYS50b3AsXG4gICAgICAgIGxlZnRCb3R0b20gPSBfYS5sZWZ0Qm90dG9tLFxuICAgICAgICByaWdodEJvdHRvbSA9IF9hLnJpZ2h0Qm90dG9tO1xuXG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgb3V0ZXJSID0gc2l6ZVswXTtcbiAgICB2YXIgc3R5bGVzID0ge1xuICAgICAgcjogbWFya1NpemUsXG4gICAgICBmaWxsOiBtYXJrRmlsbCxcbiAgICAgIHN0cm9rZTogbWFya1N0cm9rZSxcbiAgICAgIGxpbmVXaWR0aDogYm9yZGVyV2lkdGhcbiAgICB9O1xuICAgIHZhciB4ID0gTWF0aC5jb3MoKDE4ICsgNzIgKiAwKSAvIDE4MCAqIE1hdGguUEkpICogb3V0ZXJSO1xuICAgIHZhciB5ID0gTWF0aC5zaW4oKDE4ICsgNzIgKiAwKSAvIDE4MCAqIE1hdGguUEkpICogb3V0ZXJSO1xuXG4gICAgaWYgKG1hcmtSaWdodCkge1xuICAgICAgaWYgKCFyaWdodCAmJiByaWdodCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG1hcmtSaWdodC5yZW1vdmUoKTtcbiAgICAgICAgZGVsZXRlIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXJpZ2h0J107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtYXJrUmlnaHQuYXR0cihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3R5bGVzKSwge1xuICAgICAgICAgIHg6IHgsXG4gICAgICAgICAgeTogLXlcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocmlnaHQpIHtcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXJpZ2h0J10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICB4OiB4LFxuICAgICAgICAgIHk6IC15XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LXJpZ2h0JyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtcmlnaHQnLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB4ID0gTWF0aC5jb3MoKDE4ICsgNzIgKiAxKSAvIDE4MCAqIE1hdGguUEkpICogb3V0ZXJSO1xuICAgIHkgPSBNYXRoLnNpbigoMTggKyA3MiAqIDEpIC8gMTgwICogTWF0aC5QSSkgKiBvdXRlclI7XG5cbiAgICBpZiAobWFya1RvcCkge1xuICAgICAgaWYgKCF0b3AgJiYgdG9wICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbWFya1RvcC5yZW1vdmUoKTtcbiAgICAgICAgZGVsZXRlIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXRvcCddO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWFya1RvcC5hdHRyKF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgICAgeDogeCxcbiAgICAgICAgICB5OiAteVxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0b3ApIHtcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXRvcCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgICAgeDogeCxcbiAgICAgICAgICB5OiAteVxuICAgICAgICB9KSxcbiAgICAgICAgY2xhc3NOYW1lOiAnbGluay1wb2ludC10b3AnLFxuICAgICAgICBuYW1lOiAnbGluay1wb2ludC10b3AnLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB4ID0gTWF0aC5jb3MoKDE4ICsgNzIgKiAyKSAvIDE4MCAqIE1hdGguUEkpICogb3V0ZXJSO1xuICAgIHkgPSBNYXRoLnNpbigoMTggKyA3MiAqIDIpIC8gMTgwICogTWF0aC5QSSkgKiBvdXRlclI7XG5cbiAgICBpZiAobWFya0xlZnQpIHtcbiAgICAgIGlmICghbGVmdCAmJiBsZWZ0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbWFya0xlZnQucmVtb3ZlKCk7XG4gICAgICAgIGRlbGV0ZSBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1sZWZ0J107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtYXJrTGVmdC5hdHRyKF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgICAgeDogeCxcbiAgICAgICAgICB5OiAteVxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChsZWZ0KSB7XG4gICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1sZWZ0J10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICB4OiB4LFxuICAgICAgICAgIHk6IC15XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LWxlZnQnLFxuICAgICAgICBuYW1lOiAnbGluay1wb2ludC1sZWZ0JyxcbiAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgeCA9IE1hdGguY29zKCgxOCArIDcyICogMykgLyAxODAgKiBNYXRoLlBJKSAqIG91dGVyUjtcbiAgICB5ID0gTWF0aC5zaW4oKDE4ICsgNzIgKiAzKSAvIDE4MCAqIE1hdGguUEkpICogb3V0ZXJSO1xuXG4gICAgaWYgKG1hcmtMZWZ0Qm90dG9tKSB7XG4gICAgICBpZiAoIWxlZnRCb3R0b20gJiYgbGVmdEJvdHRvbSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG1hcmtMZWZ0Qm90dG9tLnJlbW92ZSgpO1xuICAgICAgICBkZWxldGUgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtbGVmdC1ib3R0b20nXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hcmtMZWZ0Qm90dG9tLmF0dHIoX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICB4OiB4LFxuICAgICAgICAgIHk6IC15XG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGxlZnRCb3R0b20pIHtcbiAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWxlZnQtYm90dG9tJ10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICB4OiB4LFxuICAgICAgICAgIHk6IC15XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LWxlZnQtYm90dG9tJyxcbiAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtbGVmdC1ib3R0b20nLFxuICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB4ID0gTWF0aC5jb3MoKDE4ICsgNzIgKiA0KSAvIDE4MCAqIE1hdGguUEkpICogb3V0ZXJSO1xuICAgIHkgPSBNYXRoLnNpbigoMTggKyA3MiAqIDQpIC8gMTgwICogTWF0aC5QSSkgKiBvdXRlclI7XG5cbiAgICBpZiAobWFya1JpZ2h0Qm90dG9tKSB7XG4gICAgICBpZiAoIXJpZ2h0Qm90dG9tICYmIHJpZ2h0Qm90dG9tICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbWFya0xlZnRCb3R0b20ucmVtb3ZlKCk7XG4gICAgICAgIGRlbGV0ZSBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1yaWdodC1ib3R0b20nXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hcmtSaWdodEJvdHRvbS5hdHRyKF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgICAgeDogeCxcbiAgICAgICAgICB5OiAteVxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChyaWdodEJvdHRvbSkge1xuICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtcmlnaHQtYm90dG9tJ10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICB4OiB4LFxuICAgICAgICAgIHk6IC15XG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LXJpZ2h0LWJvdHRvbScsXG4gICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LXJpZ2h0LWJvdHRvbScsXG4gICAgICAgIGlzQW5jaG9yUG9pbnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufSwgJ3NpbmdsZS1ub2RlJyk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/star.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/triangle.js":
/*!************************************************************************************!*\
!*** ./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/triangle.js ***!
\************************************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\n\n // 三角形\n\nObject(_antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerNode\"])('triangle', {\n // 自定义节点时的配置\n options: {\n size: 40,\n direction: 'up',\n style: {\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.stroke,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.fill,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.style.lineWidth\n },\n labelCfg: {\n style: {\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fill,\n fontSize: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeLabel.style.fontSize\n },\n offset: 15\n },\n // 节点上左右上下四个方向上的链接circle配置\n linkPoints: {\n top: false,\n right: false,\n bottom: false,\n left: false,\n // circle的大小\n size: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.size,\n lineWidth: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.lineWidth,\n fill: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.fill,\n stroke: _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].defaultNode.linkPoints.stroke\n },\n // 节点中icon配置\n icon: {\n // 是否显示icon,值为 false 则不渲染icon\n show: false,\n // icon的地址,字符串类型\n img: 'https://gw.alipayobjects.com/zos/bmw-prod/5d015065-8505-4e7a-baec-976f81e3c41d.svg',\n width: 20,\n height: 20,\n offset: 6\n },\n stateStyles: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"BaseGlobal\"].nodeStateStyles)\n },\n shapeType: 'triangle',\n // 文本位置\n labelPosition: 'bottom',\n drawShape: function drawShape(cfg, group) {\n var _a = this.mergeStyle || this.getOptions(cfg),\n _b = _a.icon,\n icon = _b === void 0 ? {} : _b,\n defaultDirection = _a.direction;\n\n var style = this.getShapeStyle(cfg);\n var direction = cfg.direction || defaultDirection;\n var keyShape = group.addShape('path', {\n attrs: style,\n className: this.type + \"-keyShape\",\n name: this.type + \"-keyShape\",\n draggable: true\n });\n group['shapeMap'][this.type + \"-keyShape\"] = keyShape;\n var w = icon.width,\n h = icon.height,\n show = icon.show,\n offset = icon.offset,\n text = icon.text;\n\n if (show) {\n if (text) {\n group['shapeMap'][this.type + \"-icon\"] = group.addShape('text', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#000',\n stroke: '#000',\n textBaseline: 'middle',\n textAlign: 'center'\n }, icon),\n className: this.type + \"-icon\",\n name: this.type + \"-icon\",\n draggable: true\n });\n } else {\n var iconW = -w / 2;\n var iconH = -h / 2;\n\n if (direction === 'up' || direction === 'down') {\n iconH += offset;\n }\n\n if (direction === 'left' || direction === 'right') {\n iconW += offset;\n }\n\n group['shapeMap'][this.type + \"-icon\"] = group.addShape('image', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n x: iconW,\n y: iconH\n }, icon),\n className: this.type + \"-icon\",\n name: this.type + \"-icon\",\n draggable: true\n });\n }\n }\n\n this.drawLinkPoints(cfg, group);\n return keyShape;\n },\n\n /**\n * 绘制节点上的LinkPoints\n * @param {Object} cfg data数据配置项\n * @param {Group} group Group实例\n */\n drawLinkPoints: function drawLinkPoints(cfg, group) {\n var _a = this.mergeStyle || this.getOptions(cfg),\n _b = _a.linkPoints,\n linkPoints = _b === void 0 ? {} : _b,\n defaultDirection = _a.direction;\n\n var direction = cfg.direction || defaultDirection;\n\n var top = linkPoints.top,\n left = linkPoints.left,\n right = linkPoints.right,\n bottom = linkPoints.bottom,\n markSize = linkPoints.size,\n markR = linkPoints.r,\n markStyle = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__rest\"])(linkPoints, [\"top\", \"left\", \"right\", \"bottom\", \"size\", \"r\"]);\n\n var size = this.getSize(cfg);\n var len = size[0];\n\n if (left) {\n // up down left right 四个方向的坐标均不相同\n var leftPos = null;\n var diffY = len * Math.sin(1 / 3 * Math.PI);\n var r = len * Math.sin(1 / 3 * Math.PI);\n\n if (direction === 'up') {\n leftPos = [-r, diffY];\n } else if (direction === 'down') {\n leftPos = [-r, -diffY];\n } else if (direction === 'left') {\n leftPos = [-r, r - diffY];\n }\n\n if (leftPos) {\n // left circle\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: leftPos[0],\n y: leftPos[1],\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-left',\n name: 'link-point-left'\n });\n }\n }\n\n if (right) {\n // right circle\n // up down left right 四个方向的坐标均不相同\n var rightPos = null;\n var diffY = len * Math.sin(1 / 3 * Math.PI);\n var r = len * Math.sin(1 / 3 * Math.PI);\n\n if (direction === 'up') {\n rightPos = [r, diffY];\n } else if (direction === 'down') {\n rightPos = [r, -diffY];\n } else if (direction === 'right') {\n rightPos = [r, r - diffY];\n }\n\n if (rightPos) {\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: rightPos[0],\n y: rightPos[1],\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-right',\n name: 'link-point-right'\n });\n }\n }\n\n if (top) {\n // up down left right 四个方向的坐标均不相同\n var topPos = null;\n var diffY = len * Math.sin(1 / 3 * Math.PI);\n var r = len * Math.sin(1 / 3 * Math.PI);\n\n if (direction === 'up') {\n topPos = [r - diffY, -diffY];\n } else if (direction === 'left') {\n topPos = [r, -diffY];\n } else if (direction === 'right') {\n topPos = [-r, -diffY];\n }\n\n if (topPos) {\n // top circle\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: topPos[0],\n y: topPos[1],\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-top',\n name: 'link-point-top'\n });\n }\n }\n\n if (bottom) {\n // up down left right 四个方向的坐标均不相同\n var bottomPos = null;\n var diffY = len * Math.sin(1 / 3 * Math.PI);\n var r = len * Math.sin(1 / 3 * Math.PI);\n\n if (direction === 'down') {\n bottomPos = [-r + diffY, diffY];\n } else if (direction === 'left') {\n bottomPos = [r, diffY];\n } else if (direction === 'right') {\n bottomPos = [-r, diffY];\n }\n\n if (bottomPos) {\n // bottom circle\n group['shapeMap']['link-point-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, markStyle), {\n x: bottomPos[0],\n y: bottomPos[1],\n r: markSize / 2 || markR || 5\n }),\n className: 'link-point-bottom',\n name: 'link-point-bottom'\n });\n }\n }\n },\n getPath: function getPath(cfg) {\n var defaultDirection = (this.mergeStyle || this.getOptions(cfg)).direction;\n var direction = cfg.direction || defaultDirection;\n var size = this.getSize(cfg);\n var len = size[0];\n var diffY = len * Math.sin(1 / 3 * Math.PI);\n var r = len * Math.sin(1 / 3 * Math.PI);\n var path = [['M', -r, diffY], ['L', 0, -diffY], ['L', r, diffY], ['Z'] // 封闭\n ];\n\n if (direction === 'down') {\n path = [['M', -r, -diffY], ['L', r, -diffY], ['L', 0, diffY], ['Z'] // 封闭\n ];\n } else if (direction === 'left') {\n path = [['M', -r, r - diffY], ['L', r, -r], ['L', r, r], ['Z'] // 封闭\n ];\n } else if (direction === 'right') {\n path = [['M', r, r - diffY], ['L', -r, r], ['L', -r, -r], ['Z'] // 封闭\n ];\n }\n\n return path;\n },\n\n /**\n * 获取节点的样式,供基于该节点自定义时使用\n * @param {Object} cfg 节点数据模型\n * @return {Object} 节点的样式\n */\n getShapeStyle: function getShapeStyle(cfg) {\n var defaultStyle = (this.mergeStyle || this.getOptions(cfg)).style;\n var strokeStyle = {\n stroke: cfg.color\n }; // 如果设置了color,则覆盖默认的stroke属性\n\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, defaultStyle, strokeStyle);\n var path = this.getPath(cfg);\n\n var styles = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n path: path\n }, style);\n\n return styles;\n },\n update: function update(cfg, item, updateType) {\n var group = item.getContainer(); // 这里不传 cfg 参数是因为 cfg.style 需要最后覆盖样式\n\n var defaultStyle = this.getOptions({}).style;\n var path = this.getPath(cfg); // 下面这些属性需要覆盖默认样式与目前样式,但若在 cfg 中有指定则应该被 cfg 的相应配置覆盖。\n\n var strokeStyle = {\n stroke: cfg.color,\n path: path\n }; // 与 getShapeStyle 不同在于,update 时需要获取到当前的 style 进行融合。即新传入的配置项中没有涉及的属性,保留当前的配置。\n\n var keyShape = item.get('keyShape');\n var style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, defaultStyle, keyShape.attr(), strokeStyle);\n style = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])(style, cfg.style);\n this.updateShape(cfg, item, style, true, updateType);\n this.updateLinkPoints(cfg, group);\n },\n\n /**\n * 更新linkPoints\n * @param {Object} cfg 节点数据配置项\n * @param {Group} group Item所在的group\n */\n updateLinkPoints: function updateLinkPoints(cfg, group) {\n var _a = this.getOptions({}),\n defaultLinkPoints = _a.linkPoints,\n defaultDirection = _a.direction;\n\n var direction = cfg.direction || defaultDirection;\n var markLeft = group['shapeMap']['link-point-left'] || group.find(function (element) {\n return element.get('className') === 'link-point-left';\n });\n var markRight = group['shapeMap']['link-point-right'] || group.find(function (element) {\n return element.get('className') === 'link-point-right';\n });\n var markTop = group['shapeMap']['link-point-top'] || group.find(function (element) {\n return element.get('className') === 'link-point-top';\n });\n var markBottom = group['shapeMap']['link-point-bottom'] || group.find(function (element) {\n return element.get('className') === 'link-point-bottom';\n });\n var currentLinkPoints = defaultLinkPoints;\n var existLinkPoint = markLeft || markRight || markTop || markBottom;\n\n if (existLinkPoint) {\n currentLinkPoints = existLinkPoint.attr();\n }\n\n var linkPoints = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"mix\"])({}, currentLinkPoints, cfg.linkPoints);\n var markFill = linkPoints.fill,\n markStroke = linkPoints.stroke,\n borderWidth = linkPoints.lineWidth;\n var markSize = linkPoints.size / 2;\n if (!markSize) markSize = linkPoints.r;\n\n var _b = cfg.linkPoints ? cfg.linkPoints : {\n left: undefined,\n right: undefined,\n top: undefined,\n bottom: undefined\n },\n left = _b.left,\n right = _b.right,\n top = _b.top,\n bottom = _b.bottom;\n\n var size = this.getSize(cfg);\n var len = size[0];\n var styles = {\n r: markSize,\n fill: markFill,\n stroke: markStroke,\n lineWidth: borderWidth\n };\n var leftPos = null;\n var diffY = len * Math.sin(1 / 3 * Math.PI);\n var r = len * Math.sin(1 / 3 * Math.PI);\n\n if (direction === 'up') {\n leftPos = [-r, diffY];\n } else if (direction === 'down') {\n leftPos = [-r, -diffY];\n } else if (direction === 'left') {\n leftPos = [-r, r - diffY];\n }\n\n if (leftPos) {\n if (markLeft) {\n if (!left && left !== undefined) {\n markLeft.remove();\n delete group['shapeMap']['link-point-left'];\n } else {\n markLeft.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: leftPos[0],\n y: leftPos[1]\n }));\n }\n } else if (left) {\n group['shapeMap']['link-point-left'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: leftPos[0],\n y: leftPos[1]\n }),\n className: 'link-point-left',\n name: 'link-point-left',\n isAnchorPoint: true\n });\n }\n }\n\n var rightPos = null;\n\n if (direction === 'up') {\n rightPos = [r, diffY];\n } else if (direction === 'down') {\n rightPos = [r, -diffY];\n } else if (direction === 'right') {\n rightPos = [r, r - diffY];\n }\n\n if (rightPos) {\n if (markRight) {\n if (!right && right !== undefined) {\n markRight.remove();\n delete group['shapeMap']['link-point-right'];\n } else {\n markRight.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: rightPos[0],\n y: rightPos[1]\n }));\n }\n } else if (right) {\n group['shapeMap']['link-point-right'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: rightPos[0],\n y: rightPos[1]\n }),\n className: 'link-point-right',\n name: 'link-point-right',\n isAnchorPoint: true\n });\n }\n }\n\n var topPos = null;\n\n if (direction === 'up') {\n topPos = [r - diffY, -diffY];\n } else if (direction === 'left') {\n topPos = [r, -diffY];\n } else if (direction === 'right') {\n topPos = [-r, -diffY];\n }\n\n if (topPos) {\n if (markTop) {\n if (!top && top !== undefined) {\n markTop.remove();\n delete group['shapeMap']['link-point-top'];\n } else {\n // top circle\n markTop.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: topPos[0],\n y: topPos[1]\n }));\n }\n } else if (top) {\n group['shapeMap']['link-point-top'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: topPos[0],\n y: topPos[1]\n }),\n className: 'link-point-top',\n name: 'link-point-top',\n isAnchorPoint: true\n });\n }\n }\n\n var bottomPos = null;\n\n if (direction === 'down') {\n bottomPos = [-r + diffY, diffY];\n } else if (direction === 'left') {\n bottomPos = [r, diffY];\n } else if (direction === 'right') {\n bottomPos = [-r, diffY];\n }\n\n if (bottomPos) {\n if (markBottom) {\n if (!bottom && bottom !== undefined) {\n markBottom.remove();\n delete group['shapeMap']['link-point-bottom'];\n } else {\n markBottom.attr(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: bottomPos[0],\n y: bottomPos[1]\n }));\n }\n } else if (bottom) {\n group['shapeMap']['link-point-bottom'] = group.addShape('circle', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, styles), {\n x: bottomPos[0],\n y: bottomPos[1]\n }),\n className: 'link-point-bottom',\n name: 'link-point-bottom',\n isAnchorPoint: true\n });\n }\n }\n }\n}, 'single-node');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LWVsZW1lbnRAMC41LjBAQGFudHYvZzYtZWxlbWVudC9lcy9ub2Rlcy90cmlhbmdsZS5qcz8xM2ExIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXlDO0FBQzBCO0FBQ2xDOztBQUVqQyxrRUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLHdEQUFNO0FBQ3BCLFlBQVksd0RBQU07QUFDbEIsaUJBQWlCLHdEQUFNO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBO0FBQ0EsY0FBYyx3REFBTTtBQUNwQixrQkFBa0Isd0RBQU07QUFDeEIsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx3REFBTTtBQUNsQixpQkFBaUIsd0RBQU07QUFDdkIsWUFBWSx3REFBTTtBQUNsQixjQUFjLHdEQUFNO0FBQ3BCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsaUJBQWlCLHNEQUFRLEdBQUcsRUFBRSx3REFBTTtBQUNwQyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxpQkFBaUIsc0RBQVE7QUFDekI7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QztBQUN2Qzs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isb0RBQU07O0FBRTFCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNyQztBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGlCQUFpQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDckM7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNyQztBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsY0FBYyxPQUFPO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOLGdCQUFnQixzREFBRyxHQUFHO0FBQ3RCOztBQUVBLGlCQUFpQixzREFBUTtBQUN6QjtBQUNBLEtBQUs7O0FBRUw7QUFDQSxHQUFHO0FBQ0g7QUFDQSxvQ0FBb0M7O0FBRXBDLHlDQUF5QztBQUN6QyxpQ0FBaUM7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQSxnQkFBZ0Isc0RBQUcsR0FBRztBQUN0QixZQUFZLHNEQUFHO0FBQ2Y7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBLCtCQUErQjtBQUMvQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIsc0RBQUcsR0FBRztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCx3QkFBd0Isc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQzVDO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxPQUFPO0FBQ1A7QUFDQSxpQkFBaUIsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQ3JDO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QseUJBQXlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUM3QztBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsT0FBTztBQUNQO0FBQ0EsaUJBQWlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNyQztBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsdUJBQXVCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUMzQztBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsT0FBTztBQUNQO0FBQ0EsaUJBQWlCLHNEQUFRLENBQUMsc0RBQVEsR0FBRztBQUNyQztBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULDBCQUEwQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDOUM7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBLGlCQUFpQixzREFBUSxDQUFDLHNEQUFRLEdBQUc7QUFDckM7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtZWxlbWVudEAwLjUuMEBAYW50di9nNi1lbGVtZW50L2VzL25vZGVzL3RyaWFuZ2xlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24sIF9fcmVzdCB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgcmVnaXN0ZXJOb2RlLCBCYXNlR2xvYmFsIGFzIEdsb2JhbCB9IGZyb20gJ0BhbnR2L2c2LWNvcmUnO1xuaW1wb3J0IHsgbWl4IH0gZnJvbSAnQGFudHYvdXRpbCc7IC8vIOS4ieinkuW9olxuXG5yZWdpc3Rlck5vZGUoJ3RyaWFuZ2xlJywge1xuICAvLyDoh6rlrprkuYnoioLngrnml7bnmoTphY3nva5cbiAgb3B0aW9uczoge1xuICAgIHNpemU6IDQwLFxuICAgIGRpcmVjdGlvbjogJ3VwJyxcbiAgICBzdHlsZToge1xuICAgICAgc3Ryb2tlOiBHbG9iYWwuZGVmYXVsdE5vZGUuc3R5bGUuc3Ryb2tlLFxuICAgICAgZmlsbDogR2xvYmFsLmRlZmF1bHROb2RlLnN0eWxlLmZpbGwsXG4gICAgICBsaW5lV2lkdGg6IEdsb2JhbC5kZWZhdWx0Tm9kZS5zdHlsZS5saW5lV2lkdGhcbiAgICB9LFxuICAgIGxhYmVsQ2ZnOiB7XG4gICAgICBzdHlsZToge1xuICAgICAgICBmaWxsOiBHbG9iYWwubm9kZUxhYmVsLnN0eWxlLmZpbGwsXG4gICAgICAgIGZvbnRTaXplOiBHbG9iYWwubm9kZUxhYmVsLnN0eWxlLmZvbnRTaXplXG4gICAgICB9LFxuICAgICAgb2Zmc2V0OiAxNVxuICAgIH0sXG4gICAgLy8g6IqC54K55LiK5bem5Y+z5LiK5LiL5Zub5Liq5pa55ZCR5LiK55qE6ZO+5o6lY2lyY2xl6YWN572uXG4gICAgbGlua1BvaW50czoge1xuICAgICAgdG9wOiBmYWxzZSxcbiAgICAgIHJpZ2h0OiBmYWxzZSxcbiAgICAgIGJvdHRvbTogZmFsc2UsXG4gICAgICBsZWZ0OiBmYWxzZSxcbiAgICAgIC8vIGNpcmNsZeeahOWkp+Wwj1xuICAgICAgc2l6ZTogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMuc2l6ZSxcbiAgICAgIGxpbmVXaWR0aDogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMubGluZVdpZHRoLFxuICAgICAgZmlsbDogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMuZmlsbCxcbiAgICAgIHN0cm9rZTogR2xvYmFsLmRlZmF1bHROb2RlLmxpbmtQb2ludHMuc3Ryb2tlXG4gICAgfSxcbiAgICAvLyDoioLngrnkuK1pY29u6YWN572uXG4gICAgaWNvbjoge1xuICAgICAgLy8g5piv5ZCm5pi+56S6aWNvbu+8jOWAvOS4uiBmYWxzZSDliJnkuI3muLLmn5NpY29uXG4gICAgICBzaG93OiBmYWxzZSxcbiAgICAgIC8vIGljb27nmoTlnLDlnYDvvIzlrZfnrKbkuLLnsbvlnotcbiAgICAgIGltZzogJ2h0dHBzOi8vZ3cuYWxpcGF5b2JqZWN0cy5jb20vem9zL2Jtdy1wcm9kLzVkMDE1MDY1LTg1MDUtNGU3YS1iYWVjLTk3NmY4MWUzYzQxZC5zdmcnLFxuICAgICAgd2lkdGg6IDIwLFxuICAgICAgaGVpZ2h0OiAyMCxcbiAgICAgIG9mZnNldDogNlxuICAgIH0sXG4gICAgc3RhdGVTdHlsZXM6IF9fYXNzaWduKHt9LCBHbG9iYWwubm9kZVN0YXRlU3R5bGVzKVxuICB9LFxuICBzaGFwZVR5cGU6ICd0cmlhbmdsZScsXG4gIC8vIOaWh+acrOS9jee9rlxuICBsYWJlbFBvc2l0aW9uOiAnYm90dG9tJyxcbiAgZHJhd1NoYXBlOiBmdW5jdGlvbiBkcmF3U2hhcGUoY2ZnLCBncm91cCkge1xuICAgIHZhciBfYSA9IHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSxcbiAgICAgICAgX2IgPSBfYS5pY29uLFxuICAgICAgICBpY29uID0gX2IgPT09IHZvaWQgMCA/IHt9IDogX2IsXG4gICAgICAgIGRlZmF1bHREaXJlY3Rpb24gPSBfYS5kaXJlY3Rpb247XG5cbiAgICB2YXIgc3R5bGUgPSB0aGlzLmdldFNoYXBlU3R5bGUoY2ZnKTtcbiAgICB2YXIgZGlyZWN0aW9uID0gY2ZnLmRpcmVjdGlvbiB8fCBkZWZhdWx0RGlyZWN0aW9uO1xuICAgIHZhciBrZXlTaGFwZSA9IGdyb3VwLmFkZFNoYXBlKCdwYXRoJywge1xuICAgICAgYXR0cnM6IHN0eWxlLFxuICAgICAgY2xhc3NOYW1lOiB0aGlzLnR5cGUgKyBcIi1rZXlTaGFwZVwiLFxuICAgICAgbmFtZTogdGhpcy50eXBlICsgXCIta2V5U2hhcGVcIixcbiAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIGdyb3VwWydzaGFwZU1hcCddW3RoaXMudHlwZSArIFwiLWtleVNoYXBlXCJdID0ga2V5U2hhcGU7XG4gICAgdmFyIHcgPSBpY29uLndpZHRoLFxuICAgICAgICBoID0gaWNvbi5oZWlnaHQsXG4gICAgICAgIHNob3cgPSBpY29uLnNob3csXG4gICAgICAgIG9mZnNldCA9IGljb24ub2Zmc2V0LFxuICAgICAgICB0ZXh0ID0gaWNvbi50ZXh0O1xuXG4gICAgaWYgKHNob3cpIHtcbiAgICAgIGlmICh0ZXh0KSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddW3RoaXMudHlwZSArIFwiLWljb25cIl0gPSBncm91cC5hZGRTaGFwZSgndGV4dCcsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICBmb250U2l6ZTogMTIsXG4gICAgICAgICAgICBmaWxsOiAnIzAwMCcsXG4gICAgICAgICAgICBzdHJva2U6ICcjMDAwJyxcbiAgICAgICAgICAgIHRleHRCYXNlbGluZTogJ21pZGRsZScsXG4gICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInXG4gICAgICAgICAgfSwgaWNvbiksXG4gICAgICAgICAgY2xhc3NOYW1lOiB0aGlzLnR5cGUgKyBcIi1pY29uXCIsXG4gICAgICAgICAgbmFtZTogdGhpcy50eXBlICsgXCItaWNvblwiLFxuICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBpY29uVyA9IC13IC8gMjtcbiAgICAgICAgdmFyIGljb25IID0gLWggLyAyO1xuXG4gICAgICAgIGlmIChkaXJlY3Rpb24gPT09ICd1cCcgfHwgZGlyZWN0aW9uID09PSAnZG93bicpIHtcbiAgICAgICAgICBpY29uSCArPSBvZmZzZXQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGlyZWN0aW9uID09PSAnbGVmdCcgfHwgZGlyZWN0aW9uID09PSAncmlnaHQnKSB7XG4gICAgICAgICAgaWNvblcgKz0gb2Zmc2V0O1xuICAgICAgICB9XG5cbiAgICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bdGhpcy50eXBlICsgXCItaWNvblwiXSA9IGdyb3VwLmFkZFNoYXBlKCdpbWFnZScsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oe1xuICAgICAgICAgICAgeDogaWNvblcsXG4gICAgICAgICAgICB5OiBpY29uSFxuICAgICAgICAgIH0sIGljb24pLFxuICAgICAgICAgIGNsYXNzTmFtZTogdGhpcy50eXBlICsgXCItaWNvblwiLFxuICAgICAgICAgIG5hbWU6IHRoaXMudHlwZSArIFwiLWljb25cIixcbiAgICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5kcmF3TGlua1BvaW50cyhjZmcsIGdyb3VwKTtcbiAgICByZXR1cm4ga2V5U2hhcGU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOe7mOWItuiKgueCueS4iueahExpbmtQb2ludHNcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyBkYXRh5pWw5o2u6YWN572u6aG5XG4gICAqIEBwYXJhbSB7R3JvdXB9IGdyb3VwIEdyb3Vw5a6e5L6LXG4gICAqL1xuICBkcmF3TGlua1BvaW50czogZnVuY3Rpb24gZHJhd0xpbmtQb2ludHMoY2ZnLCBncm91cCkge1xuICAgIHZhciBfYSA9IHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSxcbiAgICAgICAgX2IgPSBfYS5saW5rUG9pbnRzLFxuICAgICAgICBsaW5rUG9pbnRzID0gX2IgPT09IHZvaWQgMCA/IHt9IDogX2IsXG4gICAgICAgIGRlZmF1bHREaXJlY3Rpb24gPSBfYS5kaXJlY3Rpb247XG5cbiAgICB2YXIgZGlyZWN0aW9uID0gY2ZnLmRpcmVjdGlvbiB8fCBkZWZhdWx0RGlyZWN0aW9uO1xuXG4gICAgdmFyIHRvcCA9IGxpbmtQb2ludHMudG9wLFxuICAgICAgICBsZWZ0ID0gbGlua1BvaW50cy5sZWZ0LFxuICAgICAgICByaWdodCA9IGxpbmtQb2ludHMucmlnaHQsXG4gICAgICAgIGJvdHRvbSA9IGxpbmtQb2ludHMuYm90dG9tLFxuICAgICAgICBtYXJrU2l6ZSA9IGxpbmtQb2ludHMuc2l6ZSxcbiAgICAgICAgbWFya1IgPSBsaW5rUG9pbnRzLnIsXG4gICAgICAgIG1hcmtTdHlsZSA9IF9fcmVzdChsaW5rUG9pbnRzLCBbXCJ0b3BcIiwgXCJsZWZ0XCIsIFwicmlnaHRcIiwgXCJib3R0b21cIiwgXCJzaXplXCIsIFwiclwiXSk7XG5cbiAgICB2YXIgc2l6ZSA9IHRoaXMuZ2V0U2l6ZShjZmcpO1xuICAgIHZhciBsZW4gPSBzaXplWzBdO1xuXG4gICAgaWYgKGxlZnQpIHtcbiAgICAgIC8vIHVwIGRvd24gbGVmdCByaWdodCDlm5vkuKrmlrnlkJHnmoTlnZDmoIflnYfkuI3nm7jlkIxcbiAgICAgIHZhciBsZWZ0UG9zID0gbnVsbDtcbiAgICAgIHZhciBkaWZmWSA9IGxlbiAqIE1hdGguc2luKDEgLyAzICogTWF0aC5QSSk7XG4gICAgICB2YXIgciA9IGxlbiAqIE1hdGguc2luKDEgLyAzICogTWF0aC5QSSk7XG5cbiAgICAgIGlmIChkaXJlY3Rpb24gPT09ICd1cCcpIHtcbiAgICAgICAgbGVmdFBvcyA9IFstciwgZGlmZlldO1xuICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdkb3duJykge1xuICAgICAgICBsZWZ0UG9zID0gWy1yLCAtZGlmZlldO1xuICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdsZWZ0Jykge1xuICAgICAgICBsZWZ0UG9zID0gWy1yLCByIC0gZGlmZlldO1xuICAgICAgfVxuXG4gICAgICBpZiAobGVmdFBvcykge1xuICAgICAgICAvLyBsZWZ0IGNpcmNsZVxuICAgICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1sZWZ0J10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbWFya1N0eWxlKSwge1xuICAgICAgICAgICAgeDogbGVmdFBvc1swXSxcbiAgICAgICAgICAgIHk6IGxlZnRQb3NbMV0sXG4gICAgICAgICAgICByOiBtYXJrU2l6ZSAvIDIgfHwgbWFya1IgfHwgNVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtbGVmdCcsXG4gICAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtbGVmdCdcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJpZ2h0KSB7XG4gICAgICAvLyByaWdodCBjaXJjbGVcbiAgICAgIC8vIHVwIGRvd24gbGVmdCByaWdodCDlm5vkuKrmlrnlkJHnmoTlnZDmoIflnYfkuI3nm7jlkIxcbiAgICAgIHZhciByaWdodFBvcyA9IG51bGw7XG4gICAgICB2YXIgZGlmZlkgPSBsZW4gKiBNYXRoLnNpbigxIC8gMyAqIE1hdGguUEkpO1xuICAgICAgdmFyIHIgPSBsZW4gKiBNYXRoLnNpbigxIC8gMyAqIE1hdGguUEkpO1xuXG4gICAgICBpZiAoZGlyZWN0aW9uID09PSAndXAnKSB7XG4gICAgICAgIHJpZ2h0UG9zID0gW3IsIGRpZmZZXTtcbiAgICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAnZG93bicpIHtcbiAgICAgICAgcmlnaHRQb3MgPSBbciwgLWRpZmZZXTtcbiAgICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAncmlnaHQnKSB7XG4gICAgICAgIHJpZ2h0UG9zID0gW3IsIHIgLSBkaWZmWV07XG4gICAgICB9XG5cbiAgICAgIGlmIChyaWdodFBvcykge1xuICAgICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1yaWdodCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICAgIHg6IHJpZ2h0UG9zWzBdLFxuICAgICAgICAgICAgeTogcmlnaHRQb3NbMV0sXG4gICAgICAgICAgICByOiBtYXJrU2l6ZSAvIDIgfHwgbWFya1IgfHwgNVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtcmlnaHQnLFxuICAgICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LXJpZ2h0J1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodG9wKSB7XG4gICAgICAvLyB1cCBkb3duIGxlZnQgcmlnaHQg5Zub5Liq5pa55ZCR55qE5Z2Q5qCH5Z2H5LiN55u45ZCMXG4gICAgICB2YXIgdG9wUG9zID0gbnVsbDtcbiAgICAgIHZhciBkaWZmWSA9IGxlbiAqIE1hdGguc2luKDEgLyAzICogTWF0aC5QSSk7XG4gICAgICB2YXIgciA9IGxlbiAqIE1hdGguc2luKDEgLyAzICogTWF0aC5QSSk7XG5cbiAgICAgIGlmIChkaXJlY3Rpb24gPT09ICd1cCcpIHtcbiAgICAgICAgdG9wUG9zID0gW3IgLSBkaWZmWSwgLWRpZmZZXTtcbiAgICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAnbGVmdCcpIHtcbiAgICAgICAgdG9wUG9zID0gW3IsIC1kaWZmWV07XG4gICAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICB0b3BQb3MgPSBbLXIsIC1kaWZmWV07XG4gICAgICB9XG5cbiAgICAgIGlmICh0b3BQb3MpIHtcbiAgICAgICAgLy8gdG9wIGNpcmNsZVxuICAgICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC10b3AnXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBtYXJrU3R5bGUpLCB7XG4gICAgICAgICAgICB4OiB0b3BQb3NbMF0sXG4gICAgICAgICAgICB5OiB0b3BQb3NbMV0sXG4gICAgICAgICAgICByOiBtYXJrU2l6ZSAvIDIgfHwgbWFya1IgfHwgNVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtdG9wJyxcbiAgICAgICAgICBuYW1lOiAnbGluay1wb2ludC10b3AnXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChib3R0b20pIHtcbiAgICAgIC8vIHVwIGRvd24gbGVmdCByaWdodCDlm5vkuKrmlrnlkJHnmoTlnZDmoIflnYfkuI3nm7jlkIxcbiAgICAgIHZhciBib3R0b21Qb3MgPSBudWxsO1xuICAgICAgdmFyIGRpZmZZID0gbGVuICogTWF0aC5zaW4oMSAvIDMgKiBNYXRoLlBJKTtcbiAgICAgIHZhciByID0gbGVuICogTWF0aC5zaW4oMSAvIDMgKiBNYXRoLlBJKTtcblxuICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gJ2Rvd24nKSB7XG4gICAgICAgIGJvdHRvbVBvcyA9IFstciArIGRpZmZZLCBkaWZmWV07XG4gICAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ2xlZnQnKSB7XG4gICAgICAgIGJvdHRvbVBvcyA9IFtyLCBkaWZmWV07XG4gICAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICBib3R0b21Qb3MgPSBbLXIsIGRpZmZZXTtcbiAgICAgIH1cblxuICAgICAgaWYgKGJvdHRvbVBvcykge1xuICAgICAgICAvLyBib3R0b20gY2lyY2xlXG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWJvdHRvbSddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIG1hcmtTdHlsZSksIHtcbiAgICAgICAgICAgIHg6IGJvdHRvbVBvc1swXSxcbiAgICAgICAgICAgIHk6IGJvdHRvbVBvc1sxXSxcbiAgICAgICAgICAgIHI6IG1hcmtTaXplIC8gMiB8fCBtYXJrUiB8fCA1XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2xhc3NOYW1lOiAnbGluay1wb2ludC1ib3R0b20nLFxuICAgICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LWJvdHRvbSdcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBnZXRQYXRoOiBmdW5jdGlvbiBnZXRQYXRoKGNmZykge1xuICAgIHZhciBkZWZhdWx0RGlyZWN0aW9uID0gKHRoaXMubWVyZ2VTdHlsZSB8fCB0aGlzLmdldE9wdGlvbnMoY2ZnKSkuZGlyZWN0aW9uO1xuICAgIHZhciBkaXJlY3Rpb24gPSBjZmcuZGlyZWN0aW9uIHx8IGRlZmF1bHREaXJlY3Rpb247XG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgbGVuID0gc2l6ZVswXTtcbiAgICB2YXIgZGlmZlkgPSBsZW4gKiBNYXRoLnNpbigxIC8gMyAqIE1hdGguUEkpO1xuICAgIHZhciByID0gbGVuICogTWF0aC5zaW4oMSAvIDMgKiBNYXRoLlBJKTtcbiAgICB2YXIgcGF0aCA9IFtbJ00nLCAtciwgZGlmZlldLCBbJ0wnLCAwLCAtZGlmZlldLCBbJ0wnLCByLCBkaWZmWV0sIFsnWiddIC8vIOWwgemXrVxuICAgIF07XG5cbiAgICBpZiAoZGlyZWN0aW9uID09PSAnZG93bicpIHtcbiAgICAgIHBhdGggPSBbWydNJywgLXIsIC1kaWZmWV0sIFsnTCcsIHIsIC1kaWZmWV0sIFsnTCcsIDAsIGRpZmZZXSwgWydaJ10gLy8g5bCB6ZetXG4gICAgICBdO1xuICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAnbGVmdCcpIHtcbiAgICAgIHBhdGggPSBbWydNJywgLXIsIHIgLSBkaWZmWV0sIFsnTCcsIHIsIC1yXSwgWydMJywgciwgcl0sIFsnWiddIC8vIOWwgemXrVxuICAgICAgXTtcbiAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ3JpZ2h0Jykge1xuICAgICAgcGF0aCA9IFtbJ00nLCByLCByIC0gZGlmZlldLCBbJ0wnLCAtciwgcl0sIFsnTCcsIC1yLCAtcl0sIFsnWiddIC8vIOWwgemXrVxuICAgICAgXTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGF0aDtcbiAgfSxcblxuICAvKipcbiAgICog6I635Y+W6IqC54K555qE5qC35byP77yM5L6b5Z+65LqO6K+l6IqC54K56Ieq5a6a5LmJ5pe25L2/55SoXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcg6IqC54K55pWw5o2u5qih5Z6LXG4gICAqIEByZXR1cm4ge09iamVjdH0g6IqC54K555qE5qC35byPXG4gICAqL1xuICBnZXRTaGFwZVN0eWxlOiBmdW5jdGlvbiBnZXRTaGFwZVN0eWxlKGNmZykge1xuICAgIHZhciBkZWZhdWx0U3R5bGUgPSAodGhpcy5tZXJnZVN0eWxlIHx8IHRoaXMuZ2V0T3B0aW9ucyhjZmcpKS5zdHlsZTtcbiAgICB2YXIgc3Ryb2tlU3R5bGUgPSB7XG4gICAgICBzdHJva2U6IGNmZy5jb2xvclxuICAgIH07IC8vIOWmguaenOiuvue9ruS6hmNvbG9y77yM5YiZ6KaG55uW6buY6K6k55qEc3Ryb2tl5bGe5oCnXG5cbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwgc3Ryb2tlU3R5bGUpO1xuICAgIHZhciBwYXRoID0gdGhpcy5nZXRQYXRoKGNmZyk7XG5cbiAgICB2YXIgc3R5bGVzID0gX19hc3NpZ24oe1xuICAgICAgcGF0aDogcGF0aFxuICAgIH0sIHN0eWxlKTtcblxuICAgIHJldHVybiBzdHlsZXM7XG4gIH0sXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKGNmZywgaXRlbSwgdXBkYXRlVHlwZSkge1xuICAgIHZhciBncm91cCA9IGl0ZW0uZ2V0Q29udGFpbmVyKCk7IC8vIOi/memHjOS4jeS8oCBjZmcg5Y+C5pWw5piv5Zug5Li6IGNmZy5zdHlsZSDpnIDopoHmnIDlkI7opobnm5bmoLflvI9cblxuICAgIHZhciBkZWZhdWx0U3R5bGUgPSB0aGlzLmdldE9wdGlvbnMoe30pLnN0eWxlO1xuICAgIHZhciBwYXRoID0gdGhpcy5nZXRQYXRoKGNmZyk7IC8vIOS4i+mdoui/meS6m+WxnuaAp+mcgOimgeimhueblum7mOiupOagt+W8j+S4juebruWJjeagt+W8j++8jOS9huiLpeWcqCBjZmcg5Lit5pyJ5oyH5a6a5YiZ5bqU6K+l6KKrIGNmZyDnmoTnm7jlupTphY3nva7opobnm5bjgIJcblxuICAgIHZhciBzdHJva2VTdHlsZSA9IHtcbiAgICAgIHN0cm9rZTogY2ZnLmNvbG9yLFxuICAgICAgcGF0aDogcGF0aFxuICAgIH07IC8vIOS4jiBnZXRTaGFwZVN0eWxlIOS4jeWQjOWcqOS6ju+8jHVwZGF0ZSDml7bpnIDopoHojrflj5bliLDlvZPliY3nmoQgc3R5bGUg6L+b6KGM6J6N5ZCI44CC5Y2z5paw5Lyg5YWl55qE6YWN572u6aG55Lit5rKh5pyJ5raJ5Y+K55qE5bGe5oCn77yM5L+d55WZ5b2T5YmN55qE6YWN572u44CCXG5cbiAgICB2YXIga2V5U2hhcGUgPSBpdGVtLmdldCgna2V5U2hhcGUnKTtcbiAgICB2YXIgc3R5bGUgPSBtaXgoe30sIGRlZmF1bHRTdHlsZSwga2V5U2hhcGUuYXR0cigpLCBzdHJva2VTdHlsZSk7XG4gICAgc3R5bGUgPSBtaXgoc3R5bGUsIGNmZy5zdHlsZSk7XG4gICAgdGhpcy51cGRhdGVTaGFwZShjZmcsIGl0ZW0sIHN0eWxlLCB0cnVlLCB1cGRhdGVUeXBlKTtcbiAgICB0aGlzLnVwZGF0ZUxpbmtQb2ludHMoY2ZnLCBncm91cCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOabtOaWsGxpbmtQb2ludHNcbiAgICogQHBhcmFtIHtPYmplY3R9IGNmZyDoioLngrnmlbDmja7phY3nva7poblcbiAgICogQHBhcmFtIHtHcm91cH0gZ3JvdXAgSXRlbeaJgOWcqOeahGdyb3VwXG4gICAqL1xuICB1cGRhdGVMaW5rUG9pbnRzOiBmdW5jdGlvbiB1cGRhdGVMaW5rUG9pbnRzKGNmZywgZ3JvdXApIHtcbiAgICB2YXIgX2EgPSB0aGlzLmdldE9wdGlvbnMoe30pLFxuICAgICAgICBkZWZhdWx0TGlua1BvaW50cyA9IF9hLmxpbmtQb2ludHMsXG4gICAgICAgIGRlZmF1bHREaXJlY3Rpb24gPSBfYS5kaXJlY3Rpb247XG5cbiAgICB2YXIgZGlyZWN0aW9uID0gY2ZnLmRpcmVjdGlvbiB8fCBkZWZhdWx0RGlyZWN0aW9uO1xuICAgIHZhciBtYXJrTGVmdCA9IGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWxlZnQnXSB8fCBncm91cC5maW5kKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ2NsYXNzTmFtZScpID09PSAnbGluay1wb2ludC1sZWZ0JztcbiAgICB9KTtcbiAgICB2YXIgbWFya1JpZ2h0ID0gZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtcmlnaHQnXSB8fCBncm91cC5maW5kKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ2NsYXNzTmFtZScpID09PSAnbGluay1wb2ludC1yaWdodCc7XG4gICAgfSk7XG4gICAgdmFyIG1hcmtUb3AgPSBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC10b3AnXSB8fCBncm91cC5maW5kKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5nZXQoJ2NsYXNzTmFtZScpID09PSAnbGluay1wb2ludC10b3AnO1xuICAgIH0pO1xuICAgIHZhciBtYXJrQm90dG9tID0gZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtYm90dG9tJ10gfHwgZ3JvdXAuZmluZChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCdjbGFzc05hbWUnKSA9PT0gJ2xpbmstcG9pbnQtYm90dG9tJztcbiAgICB9KTtcbiAgICB2YXIgY3VycmVudExpbmtQb2ludHMgPSBkZWZhdWx0TGlua1BvaW50cztcbiAgICB2YXIgZXhpc3RMaW5rUG9pbnQgPSBtYXJrTGVmdCB8fCBtYXJrUmlnaHQgfHwgbWFya1RvcCB8fCBtYXJrQm90dG9tO1xuXG4gICAgaWYgKGV4aXN0TGlua1BvaW50KSB7XG4gICAgICBjdXJyZW50TGlua1BvaW50cyA9IGV4aXN0TGlua1BvaW50LmF0dHIoKTtcbiAgICB9XG5cbiAgICB2YXIgbGlua1BvaW50cyA9IG1peCh7fSwgY3VycmVudExpbmtQb2ludHMsIGNmZy5saW5rUG9pbnRzKTtcbiAgICB2YXIgbWFya0ZpbGwgPSBsaW5rUG9pbnRzLmZpbGwsXG4gICAgICAgIG1hcmtTdHJva2UgPSBsaW5rUG9pbnRzLnN0cm9rZSxcbiAgICAgICAgYm9yZGVyV2lkdGggPSBsaW5rUG9pbnRzLmxpbmVXaWR0aDtcbiAgICB2YXIgbWFya1NpemUgPSBsaW5rUG9pbnRzLnNpemUgLyAyO1xuICAgIGlmICghbWFya1NpemUpIG1hcmtTaXplID0gbGlua1BvaW50cy5yO1xuXG4gICAgdmFyIF9iID0gY2ZnLmxpbmtQb2ludHMgPyBjZmcubGlua1BvaW50cyA6IHtcbiAgICAgIGxlZnQ6IHVuZGVmaW5lZCxcbiAgICAgIHJpZ2h0OiB1bmRlZmluZWQsXG4gICAgICB0b3A6IHVuZGVmaW5lZCxcbiAgICAgIGJvdHRvbTogdW5kZWZpbmVkXG4gICAgfSxcbiAgICAgICAgbGVmdCA9IF9iLmxlZnQsXG4gICAgICAgIHJpZ2h0ID0gX2IucmlnaHQsXG4gICAgICAgIHRvcCA9IF9iLnRvcCxcbiAgICAgICAgYm90dG9tID0gX2IuYm90dG9tO1xuXG4gICAgdmFyIHNpemUgPSB0aGlzLmdldFNpemUoY2ZnKTtcbiAgICB2YXIgbGVuID0gc2l6ZVswXTtcbiAgICB2YXIgc3R5bGVzID0ge1xuICAgICAgcjogbWFya1NpemUsXG4gICAgICBmaWxsOiBtYXJrRmlsbCxcbiAgICAgIHN0cm9rZTogbWFya1N0cm9rZSxcbiAgICAgIGxpbmVXaWR0aDogYm9yZGVyV2lkdGhcbiAgICB9O1xuICAgIHZhciBsZWZ0UG9zID0gbnVsbDtcbiAgICB2YXIgZGlmZlkgPSBsZW4gKiBNYXRoLnNpbigxIC8gMyAqIE1hdGguUEkpO1xuICAgIHZhciByID0gbGVuICogTWF0aC5zaW4oMSAvIDMgKiBNYXRoLlBJKTtcblxuICAgIGlmIChkaXJlY3Rpb24gPT09ICd1cCcpIHtcbiAgICAgIGxlZnRQb3MgPSBbLXIsIGRpZmZZXTtcbiAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ2Rvd24nKSB7XG4gICAgICBsZWZ0UG9zID0gWy1yLCAtZGlmZlldO1xuICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAnbGVmdCcpIHtcbiAgICAgIGxlZnRQb3MgPSBbLXIsIHIgLSBkaWZmWV07XG4gICAgfVxuXG4gICAgaWYgKGxlZnRQb3MpIHtcbiAgICAgIGlmIChtYXJrTGVmdCkge1xuICAgICAgICBpZiAoIWxlZnQgJiYgbGVmdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbWFya0xlZnQucmVtb3ZlKCk7XG4gICAgICAgICAgZGVsZXRlIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWxlZnQnXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtYXJrTGVmdC5hdHRyKF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgICAgICB4OiBsZWZ0UG9zWzBdLFxuICAgICAgICAgICAgeTogbGVmdFBvc1sxXVxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChsZWZ0KSB7XG4gICAgICAgIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWxlZnQnXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgICAgICB4OiBsZWZ0UG9zWzBdLFxuICAgICAgICAgICAgeTogbGVmdFBvc1sxXVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNsYXNzTmFtZTogJ2xpbmstcG9pbnQtbGVmdCcsXG4gICAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtbGVmdCcsXG4gICAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgcmlnaHRQb3MgPSBudWxsO1xuXG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gJ3VwJykge1xuICAgICAgcmlnaHRQb3MgPSBbciwgZGlmZlldO1xuICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAnZG93bicpIHtcbiAgICAgIHJpZ2h0UG9zID0gW3IsIC1kaWZmWV07XG4gICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdyaWdodCcpIHtcbiAgICAgIHJpZ2h0UG9zID0gW3IsIHIgLSBkaWZmWV07XG4gICAgfVxuXG4gICAgaWYgKHJpZ2h0UG9zKSB7XG4gICAgICBpZiAobWFya1JpZ2h0KSB7XG4gICAgICAgIGlmICghcmlnaHQgJiYgcmlnaHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG1hcmtSaWdodC5yZW1vdmUoKTtcbiAgICAgICAgICBkZWxldGUgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtcmlnaHQnXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtYXJrUmlnaHQuYXR0cihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3R5bGVzKSwge1xuICAgICAgICAgICAgeDogcmlnaHRQb3NbMF0sXG4gICAgICAgICAgICB5OiByaWdodFBvc1sxXVxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChyaWdodCkge1xuICAgICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1yaWdodCddID0gZ3JvdXAuYWRkU2hhcGUoJ2NpcmNsZScsIHtcbiAgICAgICAgICBhdHRyczogX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICAgIHg6IHJpZ2h0UG9zWzBdLFxuICAgICAgICAgICAgeTogcmlnaHRQb3NbMV1cbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LXJpZ2h0JyxcbiAgICAgICAgICBuYW1lOiAnbGluay1wb2ludC1yaWdodCcsXG4gICAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgdG9wUG9zID0gbnVsbDtcblxuICAgIGlmIChkaXJlY3Rpb24gPT09ICd1cCcpIHtcbiAgICAgIHRvcFBvcyA9IFtyIC0gZGlmZlksIC1kaWZmWV07XG4gICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdsZWZ0Jykge1xuICAgICAgdG9wUG9zID0gW3IsIC1kaWZmWV07XG4gICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdyaWdodCcpIHtcbiAgICAgIHRvcFBvcyA9IFstciwgLWRpZmZZXTtcbiAgICB9XG5cbiAgICBpZiAodG9wUG9zKSB7XG4gICAgICBpZiAobWFya1RvcCkge1xuICAgICAgICBpZiAoIXRvcCAmJiB0b3AgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG1hcmtUb3AucmVtb3ZlKCk7XG4gICAgICAgICAgZGVsZXRlIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LXRvcCddO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHRvcCBjaXJjbGVcbiAgICAgICAgICBtYXJrVG9wLmF0dHIoX19hc3NpZ24oX19hc3NpZ24oe30sIHN0eWxlcyksIHtcbiAgICAgICAgICAgIHg6IHRvcFBvc1swXSxcbiAgICAgICAgICAgIHk6IHRvcFBvc1sxXVxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0b3ApIHtcbiAgICAgICAgZ3JvdXBbJ3NoYXBlTWFwJ11bJ2xpbmstcG9pbnQtdG9wJ10gPSBncm91cC5hZGRTaGFwZSgnY2lyY2xlJywge1xuICAgICAgICAgIGF0dHJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3R5bGVzKSwge1xuICAgICAgICAgICAgeDogdG9wUG9zWzBdLFxuICAgICAgICAgICAgeTogdG9wUG9zWzFdXG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2xhc3NOYW1lOiAnbGluay1wb2ludC10b3AnLFxuICAgICAgICAgIG5hbWU6ICdsaW5rLXBvaW50LXRvcCcsXG4gICAgICAgICAgaXNBbmNob3JQb2ludDogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgYm90dG9tUG9zID0gbnVsbDtcblxuICAgIGlmIChkaXJlY3Rpb24gPT09ICdkb3duJykge1xuICAgICAgYm90dG9tUG9zID0gWy1yICsgZGlmZlksIGRpZmZZXTtcbiAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ2xlZnQnKSB7XG4gICAgICBib3R0b21Qb3MgPSBbciwgZGlmZlldO1xuICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAncmlnaHQnKSB7XG4gICAgICBib3R0b21Qb3MgPSBbLXIsIGRpZmZZXTtcbiAgICB9XG5cbiAgICBpZiAoYm90dG9tUG9zKSB7XG4gICAgICBpZiAobWFya0JvdHRvbSkge1xuICAgICAgICBpZiAoIWJvdHRvbSAmJiBib3R0b20gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG1hcmtCb3R0b20ucmVtb3ZlKCk7XG4gICAgICAgICAgZGVsZXRlIGdyb3VwWydzaGFwZU1hcCddWydsaW5rLXBvaW50LWJvdHRvbSddO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1hcmtCb3R0b20uYXR0cihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3R5bGVzKSwge1xuICAgICAgICAgICAgeDogYm90dG9tUG9zWzBdLFxuICAgICAgICAgICAgeTogYm90dG9tUG9zWzFdXG4gICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGJvdHRvbSkge1xuICAgICAgICBncm91cFsnc2hhcGVNYXAnXVsnbGluay1wb2ludC1ib3R0b20nXSA9IGdyb3VwLmFkZFNoYXBlKCdjaXJjbGUnLCB7XG4gICAgICAgICAgYXR0cnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzdHlsZXMpLCB7XG4gICAgICAgICAgICB4OiBib3R0b21Qb3NbMF0sXG4gICAgICAgICAgICB5OiBib3R0b21Qb3NbMV1cbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjbGFzc05hbWU6ICdsaW5rLXBvaW50LWJvdHRvbScsXG4gICAgICAgICAgbmFtZTogJ2xpbmstcG9pbnQtYm90dG9tJyxcbiAgICAgICAgICBpc0FuY2hvclBvaW50OiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSwgJ3NpbmdsZS1ub2RlJyk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/nodes/triangle.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/activate-relations.js":
/*!***************************************************************************************!*\
!*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/activate-relations.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 getDefaultCfg: function getDefaultCfg() {\n return {\n // 可选 mouseenter || click\n // 选择 click 会监听 touch,mouseenter 不会监听\n trigger: 'mouseenter',\n activeState: 'active',\n inactiveState: 'inactive',\n resetSelected: false,\n shouldUpdate: function shouldUpdate() {\n return true;\n }\n };\n },\n getEvents: function getEvents() {\n if (this.get('trigger') === 'mouseenter') {\n return {\n 'node:mouseenter': 'setAllItemStates',\n 'combo:mouseenter': 'setAllItemStates',\n 'node:mouseleave': 'clearActiveState',\n 'combo:mouseleave': 'clearActiveState'\n };\n }\n\n return {\n 'node:click': 'setAllItemStates',\n 'combo:click': 'setAllItemStates',\n 'canvas:click': 'clearActiveState',\n 'node:touchstart': 'setOnTouchStart',\n 'combo:touchstart': 'setOnTouchStart',\n 'canvas:touchstart': 'clearOnTouchStart'\n };\n },\n setOnTouchStart: function setOnTouchStart(e) {\n var self = this;\n\n try {\n var touches = e.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1];\n\n if (event1 && event2) {\n return;\n }\n\n e.preventDefault();\n } catch (e) {\n console.warn('Touch original event not exist!');\n }\n\n self.setAllItemStates(e);\n },\n clearOnTouchStart: function clearOnTouchStart(e) {\n var self = this;\n\n try {\n var touches = e.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1];\n\n if (event1 && event2) {\n return;\n }\n\n e.preventDefault();\n } catch (e) {\n console.warn('Touch original event not exist!');\n }\n\n self.clearActiveState(e);\n },\n setAllItemStates: function setAllItemStates(e) {\n var item = e.item;\n var graph = this.graph;\n this.item = item;\n\n if (!this.shouldUpdate(e.item, {\n event: e,\n action: 'activate'\n })) {\n return;\n }\n\n var self = this;\n var activeState = this.activeState;\n var inactiveState = this.inactiveState;\n var nodes = graph.getNodes();\n var combos = graph.getCombos();\n var edges = graph.getEdges();\n var vEdges = graph.get('vedges');\n var nodeLength = nodes.length;\n var comboLength = combos.length;\n var edgeLength = edges.length;\n var vEdgeLength = vEdges.length;\n\n for (var i = 0; i < nodeLength; i++) {\n var node = nodes[i];\n var hasSelected = node.hasState('selected');\n\n if (self.resetSelected) {\n if (hasSelected) {\n graph.setItemState(node, 'selected', false);\n }\n }\n\n graph.setItemState(node, activeState, false);\n\n if (inactiveState) {\n graph.setItemState(node, inactiveState, true);\n }\n }\n\n for (var i = 0; i < comboLength; i++) {\n var combo = combos[i];\n var hasSelected = combo.hasState('selected');\n\n if (self.resetSelected) {\n if (hasSelected) {\n graph.setItemState(combo, 'selected', false);\n }\n }\n\n graph.setItemState(combo, activeState, false);\n\n if (inactiveState) {\n graph.setItemState(combo, inactiveState, true);\n }\n }\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edges[i];\n graph.setItemState(edge, activeState, false);\n\n if (inactiveState) {\n graph.setItemState(edge, inactiveState, true);\n }\n }\n\n for (var i = 0; i < vEdgeLength; i++) {\n var vEdge = vEdges[i];\n graph.setItemState(vEdge, activeState, false);\n\n if (inactiveState) {\n graph.setItemState(vEdge, inactiveState, true);\n }\n }\n\n if (inactiveState) {\n graph.setItemState(item, inactiveState, false);\n }\n\n graph.setItemState(item, activeState, true);\n var rEdges = item.getEdges();\n var rEdgeLegnth = rEdges.length;\n\n for (var i = 0; i < rEdgeLegnth; i++) {\n var edge = rEdges[i];\n var otherEnd = void 0;\n\n if (edge.getSource() === item) {\n otherEnd = edge.getTarget();\n } else {\n otherEnd = edge.getSource();\n }\n\n if (inactiveState) {\n graph.setItemState(otherEnd, inactiveState, false);\n }\n\n graph.setItemState(otherEnd, activeState, true);\n graph.setItemState(edge, inactiveState, false);\n graph.setItemState(edge, activeState, true);\n edge.toFront();\n }\n\n graph.emit('afteractivaterelations', {\n item: e.item,\n action: 'activate'\n });\n },\n clearActiveState: function clearActiveState(e) {\n var self = this;\n var graph = self.get('graph');\n\n if (!self.shouldUpdate(e.item, {\n event: e,\n action: 'deactivate'\n })) {\n return;\n }\n\n var activeState = this.activeState;\n var inactiveState = this.inactiveState;\n var autoPaint = graph.get('autoPaint');\n graph.setAutoPaint(false);\n var nodes = graph.getNodes() || [];\n var combos = graph.getCombos() || [];\n var edges = graph.getEdges() || [];\n var vEdges = graph.get('vedges') || [];\n var nodeLength = nodes.length;\n var comboLength = combos.length;\n var edgeLength = edges.length;\n var vEdgeLength = vEdges.length;\n\n for (var i = 0; i < nodeLength; i++) {\n var node = nodes[i];\n graph.clearItemStates(node, [activeState, inactiveState]);\n }\n\n for (var i = 0; i < comboLength; i++) {\n var combo = combos[i];\n graph.clearItemStates(combo, [activeState, inactiveState]);\n }\n\n for (var i = 0; i < edgeLength; i++) {\n var edge = edges[i];\n graph.clearItemStates(edge, [activeState, inactiveState, 'deactivate']);\n }\n\n for (var i = 0; i < vEdgeLength; i++) {\n var vEdge = vEdges[i];\n graph.clearItemStates(vEdge, [activeState, inactiveState, 'deactivate']);\n }\n\n graph.paint();\n graph.setAutoPaint(autoPaint);\n graph.emit('afteractivaterelations', {\n item: e.item || self.get('item'),\n action: 'deactivate'\n });\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL2FjdGl2YXRlLXJlbGF0aW9ucy5qcz85NWI3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGlCQUFpQjtBQUNwQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGdCQUFnQjtBQUNuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixpQkFBaUI7QUFDcEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixpQkFBaUI7QUFDcEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixpQkFBaUI7QUFDcEM7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixpQkFBaUI7QUFDcEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1wY0AwLjUuMEBAYW50di9nNi1wYy9lcy9iZWhhdmlvci9hY3RpdmF0ZS1yZWxhdGlvbnMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB7XG4gIGdldERlZmF1bHRDZmc6IGZ1bmN0aW9uIGdldERlZmF1bHRDZmcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIOWPr+mAiSBtb3VzZWVudGVyIHx8IGNsaWNrXG4gICAgICAvLyDpgInmi6kgY2xpY2sg5Lya55uR5ZCsIHRvdWNo77yMbW91c2VlbnRlciDkuI3kvJrnm5HlkKxcbiAgICAgIHRyaWdnZXI6ICdtb3VzZWVudGVyJyxcbiAgICAgIGFjdGl2ZVN0YXRlOiAnYWN0aXZlJyxcbiAgICAgIGluYWN0aXZlU3RhdGU6ICdpbmFjdGl2ZScsXG4gICAgICByZXNldFNlbGVjdGVkOiBmYWxzZSxcbiAgICAgIHNob3VsZFVwZGF0ZTogZnVuY3Rpb24gc2hvdWxkVXBkYXRlKCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBnZXRFdmVudHM6IGZ1bmN0aW9uIGdldEV2ZW50cygpIHtcbiAgICBpZiAodGhpcy5nZXQoJ3RyaWdnZXInKSA9PT0gJ21vdXNlZW50ZXInKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAnbm9kZTptb3VzZWVudGVyJzogJ3NldEFsbEl0ZW1TdGF0ZXMnLFxuICAgICAgICAnY29tYm86bW91c2VlbnRlcic6ICdzZXRBbGxJdGVtU3RhdGVzJyxcbiAgICAgICAgJ25vZGU6bW91c2VsZWF2ZSc6ICdjbGVhckFjdGl2ZVN0YXRlJyxcbiAgICAgICAgJ2NvbWJvOm1vdXNlbGVhdmUnOiAnY2xlYXJBY3RpdmVTdGF0ZSdcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICdub2RlOmNsaWNrJzogJ3NldEFsbEl0ZW1TdGF0ZXMnLFxuICAgICAgJ2NvbWJvOmNsaWNrJzogJ3NldEFsbEl0ZW1TdGF0ZXMnLFxuICAgICAgJ2NhbnZhczpjbGljayc6ICdjbGVhckFjdGl2ZVN0YXRlJyxcbiAgICAgICdub2RlOnRvdWNoc3RhcnQnOiAnc2V0T25Ub3VjaFN0YXJ0JyxcbiAgICAgICdjb21ibzp0b3VjaHN0YXJ0JzogJ3NldE9uVG91Y2hTdGFydCcsXG4gICAgICAnY2FudmFzOnRvdWNoc3RhcnQnOiAnY2xlYXJPblRvdWNoU3RhcnQnXG4gICAgfTtcbiAgfSxcbiAgc2V0T25Ub3VjaFN0YXJ0OiBmdW5jdGlvbiBzZXRPblRvdWNoU3RhcnQoZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHRyeSB7XG4gICAgICB2YXIgdG91Y2hlcyA9IGUub3JpZ2luYWxFdmVudC50b3VjaGVzO1xuICAgICAgdmFyIGV2ZW50MSA9IHRvdWNoZXNbMF07XG4gICAgICB2YXIgZXZlbnQyID0gdG91Y2hlc1sxXTtcblxuICAgICAgaWYgKGV2ZW50MSAmJiBldmVudDIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS53YXJuKCdUb3VjaCBvcmlnaW5hbCBldmVudCBub3QgZXhpc3QhJyk7XG4gICAgfVxuXG4gICAgc2VsZi5zZXRBbGxJdGVtU3RhdGVzKGUpO1xuICB9LFxuICBjbGVhck9uVG91Y2hTdGFydDogZnVuY3Rpb24gY2xlYXJPblRvdWNoU3RhcnQoZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHRyeSB7XG4gICAgICB2YXIgdG91Y2hlcyA9IGUub3JpZ2luYWxFdmVudC50b3VjaGVzO1xuICAgICAgdmFyIGV2ZW50MSA9IHRvdWNoZXNbMF07XG4gICAgICB2YXIgZXZlbnQyID0gdG91Y2hlc1sxXTtcblxuICAgICAgaWYgKGV2ZW50MSAmJiBldmVudDIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS53YXJuKCdUb3VjaCBvcmlnaW5hbCBldmVudCBub3QgZXhpc3QhJyk7XG4gICAgfVxuXG4gICAgc2VsZi5jbGVhckFjdGl2ZVN0YXRlKGUpO1xuICB9LFxuICBzZXRBbGxJdGVtU3RhdGVzOiBmdW5jdGlvbiBzZXRBbGxJdGVtU3RhdGVzKGUpIHtcbiAgICB2YXIgaXRlbSA9IGUuaXRlbTtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIHRoaXMuaXRlbSA9IGl0ZW07XG5cbiAgICBpZiAoIXRoaXMuc2hvdWxkVXBkYXRlKGUuaXRlbSwge1xuICAgICAgZXZlbnQ6IGUsXG4gICAgICBhY3Rpb246ICdhY3RpdmF0ZSdcbiAgICB9KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgYWN0aXZlU3RhdGUgPSB0aGlzLmFjdGl2ZVN0YXRlO1xuICAgIHZhciBpbmFjdGl2ZVN0YXRlID0gdGhpcy5pbmFjdGl2ZVN0YXRlO1xuICAgIHZhciBub2RlcyA9IGdyYXBoLmdldE5vZGVzKCk7XG4gICAgdmFyIGNvbWJvcyA9IGdyYXBoLmdldENvbWJvcygpO1xuICAgIHZhciBlZGdlcyA9IGdyYXBoLmdldEVkZ2VzKCk7XG4gICAgdmFyIHZFZGdlcyA9IGdyYXBoLmdldCgndmVkZ2VzJyk7XG4gICAgdmFyIG5vZGVMZW5ndGggPSBub2Rlcy5sZW5ndGg7XG4gICAgdmFyIGNvbWJvTGVuZ3RoID0gY29tYm9zLmxlbmd0aDtcbiAgICB2YXIgZWRnZUxlbmd0aCA9IGVkZ2VzLmxlbmd0aDtcbiAgICB2YXIgdkVkZ2VMZW5ndGggPSB2RWRnZXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBub2RlID0gbm9kZXNbaV07XG4gICAgICB2YXIgaGFzU2VsZWN0ZWQgPSBub2RlLmhhc1N0YXRlKCdzZWxlY3RlZCcpO1xuXG4gICAgICBpZiAoc2VsZi5yZXNldFNlbGVjdGVkKSB7XG4gICAgICAgIGlmIChoYXNTZWxlY3RlZCkge1xuICAgICAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShub2RlLCAnc2VsZWN0ZWQnLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKG5vZGUsIGFjdGl2ZVN0YXRlLCBmYWxzZSk7XG5cbiAgICAgIGlmIChpbmFjdGl2ZVN0YXRlKSB7XG4gICAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShub2RlLCBpbmFjdGl2ZVN0YXRlLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbWJvTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjb21ibyA9IGNvbWJvc1tpXTtcbiAgICAgIHZhciBoYXNTZWxlY3RlZCA9IGNvbWJvLmhhc1N0YXRlKCdzZWxlY3RlZCcpO1xuXG4gICAgICBpZiAoc2VsZi5yZXNldFNlbGVjdGVkKSB7XG4gICAgICAgIGlmIChoYXNTZWxlY3RlZCkge1xuICAgICAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShjb21ibywgJ3NlbGVjdGVkJywgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShjb21ibywgYWN0aXZlU3RhdGUsIGZhbHNlKTtcblxuICAgICAgaWYgKGluYWN0aXZlU3RhdGUpIHtcbiAgICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKGNvbWJvLCBpbmFjdGl2ZVN0YXRlLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVkZ2VMZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVkZ2UgPSBlZGdlc1tpXTtcbiAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShlZGdlLCBhY3RpdmVTdGF0ZSwgZmFsc2UpO1xuXG4gICAgICBpZiAoaW5hY3RpdmVTdGF0ZSkge1xuICAgICAgICBncmFwaC5zZXRJdGVtU3RhdGUoZWRnZSwgaW5hY3RpdmVTdGF0ZSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2RWRnZUxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdkVkZ2UgPSB2RWRnZXNbaV07XG4gICAgICBncmFwaC5zZXRJdGVtU3RhdGUodkVkZ2UsIGFjdGl2ZVN0YXRlLCBmYWxzZSk7XG5cbiAgICAgIGlmIChpbmFjdGl2ZVN0YXRlKSB7XG4gICAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZSh2RWRnZSwgaW5hY3RpdmVTdGF0ZSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGluYWN0aXZlU3RhdGUpIHtcbiAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShpdGVtLCBpbmFjdGl2ZVN0YXRlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgZ3JhcGguc2V0SXRlbVN0YXRlKGl0ZW0sIGFjdGl2ZVN0YXRlLCB0cnVlKTtcbiAgICB2YXIgckVkZ2VzID0gaXRlbS5nZXRFZGdlcygpO1xuICAgIHZhciByRWRnZUxlZ250aCA9IHJFZGdlcy5sZW5ndGg7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJFZGdlTGVnbnRoOyBpKyspIHtcbiAgICAgIHZhciBlZGdlID0gckVkZ2VzW2ldO1xuICAgICAgdmFyIG90aGVyRW5kID0gdm9pZCAwO1xuXG4gICAgICBpZiAoZWRnZS5nZXRTb3VyY2UoKSA9PT0gaXRlbSkge1xuICAgICAgICBvdGhlckVuZCA9IGVkZ2UuZ2V0VGFyZ2V0KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdGhlckVuZCA9IGVkZ2UuZ2V0U291cmNlKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpbmFjdGl2ZVN0YXRlKSB7XG4gICAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShvdGhlckVuZCwgaW5hY3RpdmVTdGF0ZSwgZmFsc2UpO1xuICAgICAgfVxuXG4gICAgICBncmFwaC5zZXRJdGVtU3RhdGUob3RoZXJFbmQsIGFjdGl2ZVN0YXRlLCB0cnVlKTtcbiAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShlZGdlLCBpbmFjdGl2ZVN0YXRlLCBmYWxzZSk7XG4gICAgICBncmFwaC5zZXRJdGVtU3RhdGUoZWRnZSwgYWN0aXZlU3RhdGUsIHRydWUpO1xuICAgICAgZWRnZS50b0Zyb250KCk7XG4gICAgfVxuXG4gICAgZ3JhcGguZW1pdCgnYWZ0ZXJhY3RpdmF0ZXJlbGF0aW9ucycsIHtcbiAgICAgIGl0ZW06IGUuaXRlbSxcbiAgICAgIGFjdGlvbjogJ2FjdGl2YXRlJ1xuICAgIH0pO1xuICB9LFxuICBjbGVhckFjdGl2ZVN0YXRlOiBmdW5jdGlvbiBjbGVhckFjdGl2ZVN0YXRlKGUpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGdyYXBoID0gc2VsZi5nZXQoJ2dyYXBoJyk7XG5cbiAgICBpZiAoIXNlbGYuc2hvdWxkVXBkYXRlKGUuaXRlbSwge1xuICAgICAgZXZlbnQ6IGUsXG4gICAgICBhY3Rpb246ICdkZWFjdGl2YXRlJ1xuICAgIH0pKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGFjdGl2ZVN0YXRlID0gdGhpcy5hY3RpdmVTdGF0ZTtcbiAgICB2YXIgaW5hY3RpdmVTdGF0ZSA9IHRoaXMuaW5hY3RpdmVTdGF0ZTtcbiAgICB2YXIgYXV0b1BhaW50ID0gZ3JhcGguZ2V0KCdhdXRvUGFpbnQnKTtcbiAgICBncmFwaC5zZXRBdXRvUGFpbnQoZmFsc2UpO1xuICAgIHZhciBub2RlcyA9IGdyYXBoLmdldE5vZGVzKCkgfHwgW107XG4gICAgdmFyIGNvbWJvcyA9IGdyYXBoLmdldENvbWJvcygpIHx8IFtdO1xuICAgIHZhciBlZGdlcyA9IGdyYXBoLmdldEVkZ2VzKCkgfHwgW107XG4gICAgdmFyIHZFZGdlcyA9IGdyYXBoLmdldCgndmVkZ2VzJykgfHwgW107XG4gICAgdmFyIG5vZGVMZW5ndGggPSBub2Rlcy5sZW5ndGg7XG4gICAgdmFyIGNvbWJvTGVuZ3RoID0gY29tYm9zLmxlbmd0aDtcbiAgICB2YXIgZWRnZUxlbmd0aCA9IGVkZ2VzLmxlbmd0aDtcbiAgICB2YXIgdkVkZ2VMZW5ndGggPSB2RWRnZXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlTGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBub2RlID0gbm9kZXNbaV07XG4gICAgICBncmFwaC5jbGVhckl0ZW1TdGF0ZXMobm9kZSwgW2FjdGl2ZVN0YXRlLCBpbmFjdGl2ZVN0YXRlXSk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21ib0xlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgY29tYm8gPSBjb21ib3NbaV07XG4gICAgICBncmFwaC5jbGVhckl0ZW1TdGF0ZXMoY29tYm8sIFthY3RpdmVTdGF0ZSwgaW5hY3RpdmVTdGF0ZV0pO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWRnZUxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWRnZSA9IGVkZ2VzW2ldO1xuICAgICAgZ3JhcGguY2xlYXJJdGVtU3RhdGVzKGVkZ2UsIFthY3RpdmVTdGF0ZSwgaW5hY3RpdmVTdGF0ZSwgJ2RlYWN0aXZhdGUnXSk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2RWRnZUxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdkVkZ2UgPSB2RWRnZXNbaV07XG4gICAgICBncmFwaC5jbGVhckl0ZW1TdGF0ZXModkVkZ2UsIFthY3RpdmVTdGF0ZSwgaW5hY3RpdmVTdGF0ZSwgJ2RlYWN0aXZhdGUnXSk7XG4gICAgfVxuXG4gICAgZ3JhcGgucGFpbnQoKTtcbiAgICBncmFwaC5zZXRBdXRvUGFpbnQoYXV0b1BhaW50KTtcbiAgICBncmFwaC5lbWl0KCdhZnRlcmFjdGl2YXRlcmVsYXRpb25zJywge1xuICAgICAgaXRlbTogZS5pdGVtIHx8IHNlbGYuZ2V0KCdpdGVtJyksXG4gICAgICBhY3Rpb246ICdkZWFjdGl2YXRlJ1xuICAgIH0pO1xuICB9XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/activate-relations.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/brush-select.js":
/*!*********************************************************************************!*\
!*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/brush-select.js ***!
\*********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar min = Math.min,\n max = Math.max,\n abs = Math.abs;\nvar DEFAULT_TRIGGER = 'shift';\nvar ALLOW_EVENTS = ['drag', 'shift', 'ctrl', 'alt', 'control'];\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n brushStyle: {\n fill: '#EEF6FF',\n fillOpacity: 0.4,\n stroke: '#DDEEFE',\n lineWidth: 1\n },\n onSelect: function onSelect() {},\n onDeselect: function onDeselect() {},\n selectedState: 'selected',\n trigger: DEFAULT_TRIGGER,\n includeEdges: true,\n selectedEdges: [],\n selectedNodes: []\n };\n },\n getEvents: function getEvents() {\n // 检测输入是否合法\n if (!(ALLOW_EVENTS.indexOf(this.trigger.toLowerCase()) > -1)) {\n this.trigger = DEFAULT_TRIGGER;\n console.warn(\"Behavior brush-select 的 trigger 参数不合法,请输入 'drag'、'shift'、'ctrl' 或 'alt'\");\n }\n\n if (this.trigger === 'drag') {\n return {\n dragstart: 'onMouseDown',\n drag: 'onMouseMove',\n dragend: 'onMouseUp',\n 'canvas:click': 'clearStates'\n };\n }\n\n return {\n dragstart: 'onMouseDown',\n drag: 'onMouseMove',\n dragend: 'onMouseUp',\n 'canvas:click': 'clearStates',\n keyup: 'onKeyUp',\n keydown: 'onKeyDown'\n };\n },\n onMouseDown: function onMouseDown(e) {\n // 按在node上面拖动时候不应该是框选\n var item = e.item;\n var brush = this.brush;\n\n if (item) {\n return;\n }\n\n if (this.trigger !== 'drag' && !this.keydown) {\n return;\n }\n\n if (this.selectedNodes && this.selectedNodes.length !== 0) {\n this.clearStates();\n }\n\n if (!brush) {\n brush = this.createBrush();\n }\n\n this.originPoint = {\n x: e.canvasX,\n y: e.canvasY\n };\n brush.attr({\n width: 0,\n height: 0\n });\n brush.show();\n this.dragging = true;\n },\n onMouseMove: function onMouseMove(e) {\n if (!this.dragging) {\n return;\n }\n\n if (this.trigger !== 'drag' && !this.keydown) {\n return;\n }\n\n this.updateBrush(e);\n },\n onMouseUp: function onMouseUp(e) {\n var graph = this.graph; // TODO: 触发了 canvas:click 导致 clearStates\n\n if (!this.brush && !this.dragging) {\n return;\n }\n\n if (this.trigger !== 'drag' && !this.keydown) {\n return;\n }\n\n this.brush.remove(true); // remove and destroy\n\n this.brush = null;\n this.getSelectedNodes(e);\n this.dragging = false;\n },\n clearStates: function clearStates() {\n var _a = this,\n graph = _a.graph,\n selectedState = _a.selectedState;\n\n var nodes = graph.findAllByState('node', selectedState);\n var edges = graph.findAllByState('edge', selectedState);\n nodes.forEach(function (node) {\n return graph.setItemState(node, selectedState, false);\n });\n edges.forEach(function (edge) {\n return graph.setItemState(edge, selectedState, false);\n });\n this.selectedNodes = [];\n this.selectedEdges = [];\n\n if (this.onDeselect) {\n this.onDeselect(this.selectedNodes, this.selectedEdges);\n }\n\n graph.emit('nodeselectchange', {\n selectedItems: {\n nodes: [],\n edges: []\n },\n select: false\n });\n },\n getSelectedNodes: function getSelectedNodes(e) {\n var _this = this;\n\n var _a = this,\n graph = _a.graph,\n originPoint = _a.originPoint,\n shouldUpdate = _a.shouldUpdate;\n\n var state = this.selectedState;\n var p1 = {\n x: e.x,\n y: e.y\n };\n var p2 = graph.getPointByCanvas(originPoint.x, originPoint.y);\n var left = min(p1.x, p2.x);\n var right = max(p1.x, p2.x);\n var top = min(p1.y, p2.y);\n var bottom = max(p1.y, p2.y);\n var selectedNodes = [];\n var selectedIds = [];\n graph.getNodes().forEach(function (node) {\n if (!node.isVisible()) return; // 隐藏节点不能被选中\n\n var bbox = node.getBBox();\n\n if (bbox.centerX >= left && bbox.centerX <= right && bbox.centerY >= top && bbox.centerY <= bottom) {\n if (shouldUpdate(node, 'select')) {\n selectedNodes.push(node);\n var model = node.getModel();\n selectedIds.push(model.id);\n graph.setItemState(node, state, true);\n }\n }\n });\n var selectedEdges = [];\n\n if (this.includeEdges) {\n // 选中边,边的source和target都在选中的节点中时才选中\n selectedNodes.forEach(function (node) {\n var edges = node.getOutEdges();\n edges.forEach(function (edge) {\n if (!edge.isVisible()) return; // 隐藏边不能够被选中\n\n var model = edge.getModel();\n var source = model.source,\n target = model.target;\n\n if (selectedIds.includes(source) && selectedIds.includes(target) && shouldUpdate(edge, 'select')) {\n selectedEdges.push(edge);\n graph.setItemState(edge, _this.selectedState, true);\n }\n });\n });\n }\n\n this.selectedEdges = selectedEdges;\n this.selectedNodes = selectedNodes;\n\n if (this.onSelect) {\n this.onSelect(selectedNodes, selectedEdges);\n }\n\n graph.emit('nodeselectchange', {\n selectedItems: {\n nodes: selectedNodes,\n edges: selectedEdges\n },\n select: true\n });\n },\n createBrush: function createBrush() {\n var self = this;\n var brush = self.graph.get('canvas').addShape('rect', {\n attrs: self.brushStyle,\n capture: false,\n name: 'brush-shape'\n });\n this.brush = brush;\n this.delegate = brush;\n return brush;\n },\n updateBrush: function updateBrush(e) {\n var originPoint = this.originPoint;\n this.brush.attr({\n width: abs(e.canvasX - originPoint.x),\n height: abs(e.canvasY - originPoint.y),\n x: min(e.canvasX, originPoint.x),\n y: min(e.canvasY, originPoint.y)\n });\n },\n onKeyDown: function onKeyDown(e) {\n var code = e.key;\n\n if (!code) {\n return;\n }\n\n var triggerLowerCase = this.trigger.toLowerCase();\n var codeLowerCase = code.toLowerCase(); // 按住 control 键时,允许用户设置 trigger 为 ctrl\n\n if (codeLowerCase === triggerLowerCase || codeLowerCase === 'control' && triggerLowerCase === 'ctrl' || codeLowerCase === 'ctrl' && triggerLowerCase === 'control') {\n this.keydown = true;\n } else {\n this.keydown = false;\n }\n },\n onKeyUp: function onKeyUp() {\n if (this.brush) {\n // 清除所有选中状态后,设置拖得动状态为false,并清除框选的brush\n this.brush.remove(true);\n this.brush = null;\n this.dragging = false;\n }\n\n this.keydown = false;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL2JydXNoLXNlbGVjdC5qcz81ZWFkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1Asc0NBQXNDO0FBQ3RDLDBDQUEwQztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQSwyQkFBMkI7O0FBRTNCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsNEJBQTRCOztBQUU1QjtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQzs7QUFFcEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDOztBQUV4QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDJDQUEyQzs7QUFFM0M7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1wY0AwLjUuMEBAYW50di9nNi1wYy9lcy9iZWhhdmlvci9icnVzaC1zZWxlY3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbWluID0gTWF0aC5taW4sXG4gICAgbWF4ID0gTWF0aC5tYXgsXG4gICAgYWJzID0gTWF0aC5hYnM7XG52YXIgREVGQVVMVF9UUklHR0VSID0gJ3NoaWZ0JztcbnZhciBBTExPV19FVkVOVFMgPSBbJ2RyYWcnLCAnc2hpZnQnLCAnY3RybCcsICdhbHQnLCAnY29udHJvbCddO1xuZXhwb3J0IGRlZmF1bHQge1xuICBnZXREZWZhdWx0Q2ZnOiBmdW5jdGlvbiBnZXREZWZhdWx0Q2ZnKCkge1xuICAgIHJldHVybiB7XG4gICAgICBicnVzaFN0eWxlOiB7XG4gICAgICAgIGZpbGw6ICcjRUVGNkZGJyxcbiAgICAgICAgZmlsbE9wYWNpdHk6IDAuNCxcbiAgICAgICAgc3Ryb2tlOiAnI0RERUVGRScsXG4gICAgICAgIGxpbmVXaWR0aDogMVxuICAgICAgfSxcbiAgICAgIG9uU2VsZWN0OiBmdW5jdGlvbiBvblNlbGVjdCgpIHt9LFxuICAgICAgb25EZXNlbGVjdDogZnVuY3Rpb24gb25EZXNlbGVjdCgpIHt9LFxuICAgICAgc2VsZWN0ZWRTdGF0ZTogJ3NlbGVjdGVkJyxcbiAgICAgIHRyaWdnZXI6IERFRkFVTFRfVFJJR0dFUixcbiAgICAgIGluY2x1ZGVFZGdlczogdHJ1ZSxcbiAgICAgIHNlbGVjdGVkRWRnZXM6IFtdLFxuICAgICAgc2VsZWN0ZWROb2RlczogW11cbiAgICB9O1xuICB9LFxuICBnZXRFdmVudHM6IGZ1bmN0aW9uIGdldEV2ZW50cygpIHtcbiAgICAvLyDmo4DmtYvovpPlhaXmmK/lkKblkIjms5VcbiAgICBpZiAoIShBTExPV19FVkVOVFMuaW5kZXhPZih0aGlzLnRyaWdnZXIudG9Mb3dlckNhc2UoKSkgPiAtMSkpIHtcbiAgICAgIHRoaXMudHJpZ2dlciA9IERFRkFVTFRfVFJJR0dFUjtcbiAgICAgIGNvbnNvbGUud2FybihcIkJlaGF2aW9yIGJydXNoLXNlbGVjdCDnmoQgdHJpZ2dlciDlj4LmlbDkuI3lkIjms5XvvIzor7fovpPlhaUgJ2RyYWcn44CBJ3NoaWZ0J+OAgSdjdHJsJyDmiJYgJ2FsdCdcIik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHJpZ2dlciA9PT0gJ2RyYWcnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkcmFnc3RhcnQ6ICdvbk1vdXNlRG93bicsXG4gICAgICAgIGRyYWc6ICdvbk1vdXNlTW92ZScsXG4gICAgICAgIGRyYWdlbmQ6ICdvbk1vdXNlVXAnLFxuICAgICAgICAnY2FudmFzOmNsaWNrJzogJ2NsZWFyU3RhdGVzJ1xuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZHJhZ3N0YXJ0OiAnb25Nb3VzZURvd24nLFxuICAgICAgZHJhZzogJ29uTW91c2VNb3ZlJyxcbiAgICAgIGRyYWdlbmQ6ICdvbk1vdXNlVXAnLFxuICAgICAgJ2NhbnZhczpjbGljayc6ICdjbGVhclN0YXRlcycsXG4gICAgICBrZXl1cDogJ29uS2V5VXAnLFxuICAgICAga2V5ZG93bjogJ29uS2V5RG93bidcbiAgICB9O1xuICB9LFxuICBvbk1vdXNlRG93bjogZnVuY3Rpb24gb25Nb3VzZURvd24oZSkge1xuICAgIC8vIOaMieWcqG5vZGXkuIrpnaLmi5bliqjml7blgJnkuI3lupTor6XmmK/moYbpgIlcbiAgICB2YXIgaXRlbSA9IGUuaXRlbTtcbiAgICB2YXIgYnJ1c2ggPSB0aGlzLmJydXNoO1xuXG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50cmlnZ2VyICE9PSAnZHJhZycgJiYgIXRoaXMua2V5ZG93bikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNlbGVjdGVkTm9kZXMgJiYgdGhpcy5zZWxlY3RlZE5vZGVzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgdGhpcy5jbGVhclN0YXRlcygpO1xuICAgIH1cblxuICAgIGlmICghYnJ1c2gpIHtcbiAgICAgIGJydXNoID0gdGhpcy5jcmVhdGVCcnVzaCgpO1xuICAgIH1cblxuICAgIHRoaXMub3JpZ2luUG9pbnQgPSB7XG4gICAgICB4OiBlLmNhbnZhc1gsXG4gICAgICB5OiBlLmNhbnZhc1lcbiAgICB9O1xuICAgIGJydXNoLmF0dHIoe1xuICAgICAgd2lkdGg6IDAsXG4gICAgICBoZWlnaHQ6IDBcbiAgICB9KTtcbiAgICBicnVzaC5zaG93KCk7XG4gICAgdGhpcy5kcmFnZ2luZyA9IHRydWU7XG4gIH0sXG4gIG9uTW91c2VNb3ZlOiBmdW5jdGlvbiBvbk1vdXNlTW92ZShlKSB7XG4gICAgaWYgKCF0aGlzLmRyYWdnaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHJpZ2dlciAhPT0gJ2RyYWcnICYmICF0aGlzLmtleWRvd24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZUJydXNoKGUpO1xuICB9LFxuICBvbk1vdXNlVXA6IGZ1bmN0aW9uIG9uTW91c2VVcChlKSB7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDsgLy8gVE9ETzog6Kem5Y+R5LqGIGNhbnZhczpjbGljayDlr7zoh7QgY2xlYXJTdGF0ZXNcblxuICAgIGlmICghdGhpcy5icnVzaCAmJiAhdGhpcy5kcmFnZ2luZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRyaWdnZXIgIT09ICdkcmFnJyAmJiAhdGhpcy5rZXlkb3duKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5icnVzaC5yZW1vdmUodHJ1ZSk7IC8vIHJlbW92ZSBhbmQgZGVzdHJveVxuXG4gICAgdGhpcy5icnVzaCA9IG51bGw7XG4gICAgdGhpcy5nZXRTZWxlY3RlZE5vZGVzKGUpO1xuICAgIHRoaXMuZHJhZ2dpbmcgPSBmYWxzZTtcbiAgfSxcbiAgY2xlYXJTdGF0ZXM6IGZ1bmN0aW9uIGNsZWFyU3RhdGVzKCkge1xuICAgIHZhciBfYSA9IHRoaXMsXG4gICAgICAgIGdyYXBoID0gX2EuZ3JhcGgsXG4gICAgICAgIHNlbGVjdGVkU3RhdGUgPSBfYS5zZWxlY3RlZFN0YXRlO1xuXG4gICAgdmFyIG5vZGVzID0gZ3JhcGguZmluZEFsbEJ5U3RhdGUoJ25vZGUnLCBzZWxlY3RlZFN0YXRlKTtcbiAgICB2YXIgZWRnZXMgPSBncmFwaC5maW5kQWxsQnlTdGF0ZSgnZWRnZScsIHNlbGVjdGVkU3RhdGUpO1xuICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHJldHVybiBncmFwaC5zZXRJdGVtU3RhdGUobm9kZSwgc2VsZWN0ZWRTdGF0ZSwgZmFsc2UpO1xuICAgIH0pO1xuICAgIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgIHJldHVybiBncmFwaC5zZXRJdGVtU3RhdGUoZWRnZSwgc2VsZWN0ZWRTdGF0ZSwgZmFsc2UpO1xuICAgIH0pO1xuICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRFZGdlcyA9IFtdO1xuXG4gICAgaWYgKHRoaXMub25EZXNlbGVjdCkge1xuICAgICAgdGhpcy5vbkRlc2VsZWN0KHRoaXMuc2VsZWN0ZWROb2RlcywgdGhpcy5zZWxlY3RlZEVkZ2VzKTtcbiAgICB9XG5cbiAgICBncmFwaC5lbWl0KCdub2Rlc2VsZWN0Y2hhbmdlJywge1xuICAgICAgc2VsZWN0ZWRJdGVtczoge1xuICAgICAgICBub2RlczogW10sXG4gICAgICAgIGVkZ2VzOiBbXVxuICAgICAgfSxcbiAgICAgIHNlbGVjdDogZmFsc2VcbiAgICB9KTtcbiAgfSxcbiAgZ2V0U2VsZWN0ZWROb2RlczogZnVuY3Rpb24gZ2V0U2VsZWN0ZWROb2RlcyhlKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBfYSA9IHRoaXMsXG4gICAgICAgIGdyYXBoID0gX2EuZ3JhcGgsXG4gICAgICAgIG9yaWdpblBvaW50ID0gX2Eub3JpZ2luUG9pbnQsXG4gICAgICAgIHNob3VsZFVwZGF0ZSA9IF9hLnNob3VsZFVwZGF0ZTtcblxuICAgIHZhciBzdGF0ZSA9IHRoaXMuc2VsZWN0ZWRTdGF0ZTtcbiAgICB2YXIgcDEgPSB7XG4gICAgICB4OiBlLngsXG4gICAgICB5OiBlLnlcbiAgICB9O1xuICAgIHZhciBwMiA9IGdyYXBoLmdldFBvaW50QnlDYW52YXMob3JpZ2luUG9pbnQueCwgb3JpZ2luUG9pbnQueSk7XG4gICAgdmFyIGxlZnQgPSBtaW4ocDEueCwgcDIueCk7XG4gICAgdmFyIHJpZ2h0ID0gbWF4KHAxLngsIHAyLngpO1xuICAgIHZhciB0b3AgPSBtaW4ocDEueSwgcDIueSk7XG4gICAgdmFyIGJvdHRvbSA9IG1heChwMS55LCBwMi55KTtcbiAgICB2YXIgc2VsZWN0ZWROb2RlcyA9IFtdO1xuICAgIHZhciBzZWxlY3RlZElkcyA9IFtdO1xuICAgIGdyYXBoLmdldE5vZGVzKCkuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgaWYgKCFub2RlLmlzVmlzaWJsZSgpKSByZXR1cm47IC8vIOmakOiXj+iKgueCueS4jeiDveiiq+mAieS4rVxuXG4gICAgICB2YXIgYmJveCA9IG5vZGUuZ2V0QkJveCgpO1xuXG4gICAgICBpZiAoYmJveC5jZW50ZXJYID49IGxlZnQgJiYgYmJveC5jZW50ZXJYIDw9IHJpZ2h0ICYmIGJib3guY2VudGVyWSA+PSB0b3AgJiYgYmJveC5jZW50ZXJZIDw9IGJvdHRvbSkge1xuICAgICAgICBpZiAoc2hvdWxkVXBkYXRlKG5vZGUsICdzZWxlY3QnKSkge1xuICAgICAgICAgIHNlbGVjdGVkTm9kZXMucHVzaChub2RlKTtcbiAgICAgICAgICB2YXIgbW9kZWwgPSBub2RlLmdldE1vZGVsKCk7XG4gICAgICAgICAgc2VsZWN0ZWRJZHMucHVzaChtb2RlbC5pZCk7XG4gICAgICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKG5vZGUsIHN0YXRlLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHZhciBzZWxlY3RlZEVkZ2VzID0gW107XG5cbiAgICBpZiAodGhpcy5pbmNsdWRlRWRnZXMpIHtcbiAgICAgIC8vIOmAieS4rei+ue+8jOi+ueeahHNvdXJjZeWSjHRhcmdldOmDveWcqOmAieS4reeahOiKgueCueS4reaXtuaJjemAieS4rVxuICAgICAgc2VsZWN0ZWROb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHZhciBlZGdlcyA9IG5vZGUuZ2V0T3V0RWRnZXMoKTtcbiAgICAgICAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgIGlmICghZWRnZS5pc1Zpc2libGUoKSkgcmV0dXJuOyAvLyDpmpDol4/ovrnkuI3og73lpJ/ooqvpgInkuK1cblxuICAgICAgICAgIHZhciBtb2RlbCA9IGVkZ2UuZ2V0TW9kZWwoKTtcbiAgICAgICAgICB2YXIgc291cmNlID0gbW9kZWwuc291cmNlLFxuICAgICAgICAgICAgICB0YXJnZXQgPSBtb2RlbC50YXJnZXQ7XG5cbiAgICAgICAgICBpZiAoc2VsZWN0ZWRJZHMuaW5jbHVkZXMoc291cmNlKSAmJiBzZWxlY3RlZElkcy5pbmNsdWRlcyh0YXJnZXQpICYmIHNob3VsZFVwZGF0ZShlZGdlLCAnc2VsZWN0JykpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkRWRnZXMucHVzaChlZGdlKTtcbiAgICAgICAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShlZGdlLCBfdGhpcy5zZWxlY3RlZFN0YXRlLCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3RlZEVkZ2VzID0gc2VsZWN0ZWRFZGdlcztcbiAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSBzZWxlY3RlZE5vZGVzO1xuXG4gICAgaWYgKHRoaXMub25TZWxlY3QpIHtcbiAgICAgIHRoaXMub25TZWxlY3Qoc2VsZWN0ZWROb2Rlcywgc2VsZWN0ZWRFZGdlcyk7XG4gICAgfVxuXG4gICAgZ3JhcGguZW1pdCgnbm9kZXNlbGVjdGNoYW5nZScsIHtcbiAgICAgIHNlbGVjdGVkSXRlbXM6IHtcbiAgICAgICAgbm9kZXM6IHNlbGVjdGVkTm9kZXMsXG4gICAgICAgIGVkZ2VzOiBzZWxlY3RlZEVkZ2VzXG4gICAgICB9LFxuICAgICAgc2VsZWN0OiB0cnVlXG4gICAgfSk7XG4gIH0sXG4gIGNyZWF0ZUJydXNoOiBmdW5jdGlvbiBjcmVhdGVCcnVzaCgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGJydXNoID0gc2VsZi5ncmFwaC5nZXQoJ2NhbnZhcycpLmFkZFNoYXBlKCdyZWN0Jywge1xuICAgICAgYXR0cnM6IHNlbGYuYnJ1c2hTdHlsZSxcbiAgICAgIGNhcHR1cmU6IGZhbHNlLFxuICAgICAgbmFtZTogJ2JydXNoLXNoYXBlJ1xuICAgIH0pO1xuICAgIHRoaXMuYnJ1c2ggPSBicnVzaDtcbiAgICB0aGlzLmRlbGVnYXRlID0gYnJ1c2g7XG4gICAgcmV0dXJuIGJydXNoO1xuICB9LFxuICB1cGRhdGVCcnVzaDogZnVuY3Rpb24gdXBkYXRlQnJ1c2goZSkge1xuICAgIHZhciBvcmlnaW5Qb2ludCA9IHRoaXMub3JpZ2luUG9pbnQ7XG4gICAgdGhpcy5icnVzaC5hdHRyKHtcbiAgICAgIHdpZHRoOiBhYnMoZS5jYW52YXNYIC0gb3JpZ2luUG9pbnQueCksXG4gICAgICBoZWlnaHQ6IGFicyhlLmNhbnZhc1kgLSBvcmlnaW5Qb2ludC55KSxcbiAgICAgIHg6IG1pbihlLmNhbnZhc1gsIG9yaWdpblBvaW50LngpLFxuICAgICAgeTogbWluKGUuY2FudmFzWSwgb3JpZ2luUG9pbnQueSlcbiAgICB9KTtcbiAgfSxcbiAgb25LZXlEb3duOiBmdW5jdGlvbiBvbktleURvd24oZSkge1xuICAgIHZhciBjb2RlID0gZS5rZXk7XG5cbiAgICBpZiAoIWNvZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgdHJpZ2dlckxvd2VyQ2FzZSA9IHRoaXMudHJpZ2dlci50b0xvd2VyQ2FzZSgpO1xuICAgIHZhciBjb2RlTG93ZXJDYXNlID0gY29kZS50b0xvd2VyQ2FzZSgpOyAvLyDmjInkvY8gY29udHJvbCDplK7ml7bvvIzlhYHorrjnlKjmiLforr7nva4gdHJpZ2dlciDkuLogY3RybFxuXG4gICAgaWYgKGNvZGVMb3dlckNhc2UgPT09IHRyaWdnZXJMb3dlckNhc2UgfHwgY29kZUxvd2VyQ2FzZSA9PT0gJ2NvbnRyb2wnICYmIHRyaWdnZXJMb3dlckNhc2UgPT09ICdjdHJsJyB8fCBjb2RlTG93ZXJDYXNlID09PSAnY3RybCcgJiYgdHJpZ2dlckxvd2VyQ2FzZSA9PT0gJ2NvbnRyb2wnKSB7XG4gICAgICB0aGlzLmtleWRvd24gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmtleWRvd24gPSBmYWxzZTtcbiAgICB9XG4gIH0sXG4gIG9uS2V5VXA6IGZ1bmN0aW9uIG9uS2V5VXAoKSB7XG4gICAgaWYgKHRoaXMuYnJ1c2gpIHtcbiAgICAgIC8vIOa4hemZpOaJgOaciemAieS4reeKtuaAgeWQju+8jOiuvue9ruaLluW+l+WKqOeKtuaAgeS4umZhbHNl77yM5bm25riF6Zmk5qGG6YCJ55qEYnJ1c2hcbiAgICAgIHRoaXMuYnJ1c2gucmVtb3ZlKHRydWUpO1xuICAgICAgdGhpcy5icnVzaCA9IG51bGw7XG4gICAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5rZXlkb3duID0gZmFsc2U7XG4gIH1cbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/brush-select.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/click-select.js":
/*!*********************************************************************************!*\
!*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/click-select.js ***!
\*********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\nvar DEFAULT_TRIGGER = 'shift';\nvar ALLOW_EVENTS = ['shift', 'ctrl', 'alt', 'control'];\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n multiple: true,\n trigger: DEFAULT_TRIGGER,\n selectedState: 'selected'\n };\n },\n getEvents: function getEvents() {\n var self = this; // 检测输入是否合法\n\n if (!(ALLOW_EVENTS.indexOf(self.trigger.toLowerCase()) > -1)) {\n self.trigger = DEFAULT_TRIGGER; // eslint-disable-next-line no-console\n\n console.warn(\"Behavior brush-select 的 trigger 参数不合法,请输入 'drag'、'shift'、'ctrl' 或 'alt'\");\n }\n\n if (!self.multiple) {\n return {\n 'node:click': 'onClick',\n 'combo:click': 'onClick',\n 'canvas:click': 'onCanvasClick'\n };\n }\n\n return {\n 'node:click': 'onClick',\n 'combo:click': 'onClick',\n 'canvas:click': 'onCanvasClick',\n keyup: 'onKeyUp',\n keydown: 'onKeyDown'\n };\n },\n onClick: function onClick(evt) {\n var self = this;\n var item = evt.item;\n\n if (!item || item.destroyed) {\n return;\n }\n\n var type = item.getType();\n var graph = self.graph,\n keydown = self.keydown,\n multiple = self.multiple,\n shouldUpdate = self.shouldUpdate,\n shouldBegin = self.shouldBegin;\n\n if (!shouldBegin.call(self, evt)) {\n return;\n } // allow to select multiple nodes but did not press a key || do not allow the select multiple nodes\n\n\n if (!keydown || !multiple) {\n var selected = graph.findAllByState('node', self.selectedState).concat(graph.findAllByState('combo', self.selectedState));\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(selected, function (combo) {\n if (combo !== item) {\n graph.setItemState(combo, self.selectedState, false);\n }\n });\n }\n\n if (item.hasState(self.selectedState)) {\n if (shouldUpdate.call(self, evt)) {\n graph.setItemState(item, self.selectedState, false);\n }\n\n var selectedNodes = graph.findAllByState('node', self.selectedState);\n var selectedCombos = graph.findAllByState('combo', self.selectedState);\n graph.emit('nodeselectchange', {\n target: item,\n selectedItems: {\n nodes: selectedNodes,\n combos: selectedCombos\n },\n select: false\n });\n } else {\n if (shouldUpdate.call(self, evt)) {\n graph.setItemState(item, self.selectedState, true);\n }\n\n var selectedNodes = graph.findAllByState('node', self.selectedState);\n var selectedCombos = graph.findAllByState('combo', self.selectedState);\n graph.emit('nodeselectchange', {\n target: item,\n selectedItems: {\n nodes: selectedNodes,\n combos: selectedCombos\n },\n select: true\n });\n }\n },\n onCanvasClick: function onCanvasClick() {\n var _this = this;\n\n var graph = this.graph;\n var selected = graph.findAllByState('node', this.selectedState);\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(selected, function (node) {\n graph.setItemState(node, _this.selectedState, false);\n });\n var selectedCombos = graph.findAllByState('combo', this.selectedState);\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(selectedCombos, function (combo) {\n graph.setItemState(combo, _this.selectedState, false);\n });\n graph.emit('nodeselectchange', {\n selectedItems: {\n nodes: [],\n edges: [],\n combos: []\n },\n select: false\n });\n },\n onKeyDown: function onKeyDown(e) {\n var self = this;\n var code = e.key;\n\n if (!code) {\n return;\n }\n\n if (code.toLowerCase() === this.trigger.toLowerCase() || code.toLowerCase() === 'control') {\n self.keydown = true;\n } else {\n self.keydown = false;\n }\n },\n onKeyUp: function onKeyUp() {\n var self = this;\n self.keydown = false;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL2NsaWNrLXNlbGVjdC5qcz9kMjVhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBa0M7QUFDbEM7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0Esb0JBQW9COztBQUVwQjtBQUNBLHFDQUFxQzs7QUFFckM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBLE1BQU0sdURBQUk7QUFDVjtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQSxLQUFLO0FBQ0w7QUFDQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1wY0AwLjUuMEBAYW50di9nNi1wYy9lcy9iZWhhdmlvci9jbGljay1zZWxlY3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlYWNoIH0gZnJvbSAnQGFudHYvdXRpbCc7XG52YXIgREVGQVVMVF9UUklHR0VSID0gJ3NoaWZ0JztcbnZhciBBTExPV19FVkVOVFMgPSBbJ3NoaWZ0JywgJ2N0cmwnLCAnYWx0JywgJ2NvbnRyb2wnXTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0RGVmYXVsdENmZzogZnVuY3Rpb24gZ2V0RGVmYXVsdENmZygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICB0cmlnZ2VyOiBERUZBVUxUX1RSSUdHRVIsXG4gICAgICBzZWxlY3RlZFN0YXRlOiAnc2VsZWN0ZWQnXG4gICAgfTtcbiAgfSxcbiAgZ2V0RXZlbnRzOiBmdW5jdGlvbiBnZXRFdmVudHMoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzOyAvLyDmo4DmtYvovpPlhaXmmK/lkKblkIjms5VcblxuICAgIGlmICghKEFMTE9XX0VWRU5UUy5pbmRleE9mKHNlbGYudHJpZ2dlci50b0xvd2VyQ2FzZSgpKSA+IC0xKSkge1xuICAgICAgc2VsZi50cmlnZ2VyID0gREVGQVVMVF9UUklHR0VSOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuXG4gICAgICBjb25zb2xlLndhcm4oXCJCZWhhdmlvciBicnVzaC1zZWxlY3Qg55qEIHRyaWdnZXIg5Y+C5pWw5LiN5ZCI5rOV77yM6K+36L6T5YWlICdkcmFnJ+OAgSdzaGlmdCfjgIEnY3RybCcg5oiWICdhbHQnXCIpO1xuICAgIH1cblxuICAgIGlmICghc2VsZi5tdWx0aXBsZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgJ25vZGU6Y2xpY2snOiAnb25DbGljaycsXG4gICAgICAgICdjb21ibzpjbGljayc6ICdvbkNsaWNrJyxcbiAgICAgICAgJ2NhbnZhczpjbGljayc6ICdvbkNhbnZhc0NsaWNrJ1xuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgJ25vZGU6Y2xpY2snOiAnb25DbGljaycsXG4gICAgICAnY29tYm86Y2xpY2snOiAnb25DbGljaycsXG4gICAgICAnY2FudmFzOmNsaWNrJzogJ29uQ2FudmFzQ2xpY2snLFxuICAgICAga2V5dXA6ICdvbktleVVwJyxcbiAgICAgIGtleWRvd246ICdvbktleURvd24nXG4gICAgfTtcbiAgfSxcbiAgb25DbGljazogZnVuY3Rpb24gb25DbGljayhldnQpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGl0ZW0gPSBldnQuaXRlbTtcblxuICAgIGlmICghaXRlbSB8fCBpdGVtLmRlc3Ryb3llZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciB0eXBlID0gaXRlbS5nZXRUeXBlKCk7XG4gICAgdmFyIGdyYXBoID0gc2VsZi5ncmFwaCxcbiAgICAgICAga2V5ZG93biA9IHNlbGYua2V5ZG93bixcbiAgICAgICAgbXVsdGlwbGUgPSBzZWxmLm11bHRpcGxlLFxuICAgICAgICBzaG91bGRVcGRhdGUgPSBzZWxmLnNob3VsZFVwZGF0ZSxcbiAgICAgICAgc2hvdWxkQmVnaW4gPSBzZWxmLnNob3VsZEJlZ2luO1xuXG4gICAgaWYgKCFzaG91bGRCZWdpbi5jYWxsKHNlbGYsIGV2dCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIGFsbG93IHRvIHNlbGVjdCBtdWx0aXBsZSBub2RlcyBidXQgZGlkIG5vdCBwcmVzcyBhIGtleSB8fCBkbyBub3QgYWxsb3cgdGhlIHNlbGVjdCBtdWx0aXBsZSBub2Rlc1xuXG5cbiAgICBpZiAoIWtleWRvd24gfHwgIW11bHRpcGxlKSB7XG4gICAgICB2YXIgc2VsZWN0ZWQgPSBncmFwaC5maW5kQWxsQnlTdGF0ZSgnbm9kZScsIHNlbGYuc2VsZWN0ZWRTdGF0ZSkuY29uY2F0KGdyYXBoLmZpbmRBbGxCeVN0YXRlKCdjb21ibycsIHNlbGYuc2VsZWN0ZWRTdGF0ZSkpO1xuICAgICAgZWFjaChzZWxlY3RlZCwgZnVuY3Rpb24gKGNvbWJvKSB7XG4gICAgICAgIGlmIChjb21ibyAhPT0gaXRlbSkge1xuICAgICAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShjb21ibywgc2VsZi5zZWxlY3RlZFN0YXRlLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChpdGVtLmhhc1N0YXRlKHNlbGYuc2VsZWN0ZWRTdGF0ZSkpIHtcbiAgICAgIGlmIChzaG91bGRVcGRhdGUuY2FsbChzZWxmLCBldnQpKSB7XG4gICAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShpdGVtLCBzZWxmLnNlbGVjdGVkU3RhdGUsIGZhbHNlKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHNlbGVjdGVkTm9kZXMgPSBncmFwaC5maW5kQWxsQnlTdGF0ZSgnbm9kZScsIHNlbGYuc2VsZWN0ZWRTdGF0ZSk7XG4gICAgICB2YXIgc2VsZWN0ZWRDb21ib3MgPSBncmFwaC5maW5kQWxsQnlTdGF0ZSgnY29tYm8nLCBzZWxmLnNlbGVjdGVkU3RhdGUpO1xuICAgICAgZ3JhcGguZW1pdCgnbm9kZXNlbGVjdGNoYW5nZScsIHtcbiAgICAgICAgdGFyZ2V0OiBpdGVtLFxuICAgICAgICBzZWxlY3RlZEl0ZW1zOiB7XG4gICAgICAgICAgbm9kZXM6IHNlbGVjdGVkTm9kZXMsXG4gICAgICAgICAgY29tYm9zOiBzZWxlY3RlZENvbWJvc1xuICAgICAgICB9LFxuICAgICAgICBzZWxlY3Q6IGZhbHNlXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHNob3VsZFVwZGF0ZS5jYWxsKHNlbGYsIGV2dCkpIHtcbiAgICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKGl0ZW0sIHNlbGYuc2VsZWN0ZWRTdGF0ZSwgdHJ1ZSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBzZWxlY3RlZE5vZGVzID0gZ3JhcGguZmluZEFsbEJ5U3RhdGUoJ25vZGUnLCBzZWxmLnNlbGVjdGVkU3RhdGUpO1xuICAgICAgdmFyIHNlbGVjdGVkQ29tYm9zID0gZ3JhcGguZmluZEFsbEJ5U3RhdGUoJ2NvbWJvJywgc2VsZi5zZWxlY3RlZFN0YXRlKTtcbiAgICAgIGdyYXBoLmVtaXQoJ25vZGVzZWxlY3RjaGFuZ2UnLCB7XG4gICAgICAgIHRhcmdldDogaXRlbSxcbiAgICAgICAgc2VsZWN0ZWRJdGVtczoge1xuICAgICAgICAgIG5vZGVzOiBzZWxlY3RlZE5vZGVzLFxuICAgICAgICAgIGNvbWJvczogc2VsZWN0ZWRDb21ib3NcbiAgICAgICAgfSxcbiAgICAgICAgc2VsZWN0OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIG9uQ2FudmFzQ2xpY2s6IGZ1bmN0aW9uIG9uQ2FudmFzQ2xpY2soKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgdmFyIHNlbGVjdGVkID0gZ3JhcGguZmluZEFsbEJ5U3RhdGUoJ25vZGUnLCB0aGlzLnNlbGVjdGVkU3RhdGUpO1xuICAgIGVhY2goc2VsZWN0ZWQsIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICBncmFwaC5zZXRJdGVtU3RhdGUobm9kZSwgX3RoaXMuc2VsZWN0ZWRTdGF0ZSwgZmFsc2UpO1xuICAgIH0pO1xuICAgIHZhciBzZWxlY3RlZENvbWJvcyA9IGdyYXBoLmZpbmRBbGxCeVN0YXRlKCdjb21ibycsIHRoaXMuc2VsZWN0ZWRTdGF0ZSk7XG4gICAgZWFjaChzZWxlY3RlZENvbWJvcywgZnVuY3Rpb24gKGNvbWJvKSB7XG4gICAgICBncmFwaC5zZXRJdGVtU3RhdGUoY29tYm8sIF90aGlzLnNlbGVjdGVkU3RhdGUsIGZhbHNlKTtcbiAgICB9KTtcbiAgICBncmFwaC5lbWl0KCdub2Rlc2VsZWN0Y2hhbmdlJywge1xuICAgICAgc2VsZWN0ZWRJdGVtczoge1xuICAgICAgICBub2RlczogW10sXG4gICAgICAgIGVkZ2VzOiBbXSxcbiAgICAgICAgY29tYm9zOiBbXVxuICAgICAgfSxcbiAgICAgIHNlbGVjdDogZmFsc2VcbiAgICB9KTtcbiAgfSxcbiAgb25LZXlEb3duOiBmdW5jdGlvbiBvbktleURvd24oZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgY29kZSA9IGUua2V5O1xuXG4gICAgaWYgKCFjb2RlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGNvZGUudG9Mb3dlckNhc2UoKSA9PT0gdGhpcy50cmlnZ2VyLnRvTG93ZXJDYXNlKCkgfHwgY29kZS50b0xvd2VyQ2FzZSgpID09PSAnY29udHJvbCcpIHtcbiAgICAgIHNlbGYua2V5ZG93biA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlbGYua2V5ZG93biA9IGZhbHNlO1xuICAgIH1cbiAgfSxcbiAgb25LZXlVcDogZnVuY3Rpb24gb25LZXlVcCgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgc2VsZi5rZXlkb3duID0gZmFsc2U7XG4gIH1cbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/click-select.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/collapse-expand-combo.js":
/*!******************************************************************************************!*\
!*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/collapse-expand-combo.js ***!
\******************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/*\n * @Author: Shiwu\n * @Description: 收起和展开 Combo\n */\nvar DEFAULT_TRIGGER = 'dblclick';\nvar ALLOW_EVENTS = ['click', 'dblclick'];\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n trigger: DEFAULT_TRIGGER,\n relayout: true\n };\n },\n getEvents: function getEvents() {\n var _a;\n\n var trigger; // 检测输入是否合法\n\n if (ALLOW_EVENTS.includes(this.trigger)) {\n trigger = this.trigger;\n } else {\n trigger = DEFAULT_TRIGGER; // eslint-disable-next-line no-console\n\n console.warn(\"Behavior collapse-expand-group 的 trigger 参数不合法,请输入 'click' 或 'dblclick'\");\n }\n\n return _a = {}, _a[\"combo:\" + trigger] = 'onComboClick', _a;\n },\n onComboClick: function onComboClick(evt) {\n var item = evt.item;\n\n var _a = this,\n graph = _a.graph,\n relayout = _a.relayout;\n\n if (!item || item.destroyed || item.getType() !== 'combo') return;\n var model = item.getModel();\n var comboId = model.id;\n\n if (!comboId) {\n return;\n }\n\n graph.collapseExpandCombo(comboId);\n if (relayout && graph.get('layout')) graph.layout();else graph.refreshPositions();\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL2NvbGxhcHNlLWV4cGFuZC1jb21iby5qcz9iZGNlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUEsZ0JBQWdCOztBQUVoQjtBQUNBO0FBQ0EsS0FBSztBQUNMLGdDQUFnQzs7QUFFaEM7QUFDQTs7QUFFQSxrQkFBa0I7QUFDbEIsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx3REFBd0Q7QUFDeEQ7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1wY0AwLjUuMEBAYW50di9nNi1wYy9lcy9iZWhhdmlvci9jb2xsYXBzZS1leHBhbmQtY29tYm8uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQEF1dGhvcjogU2hpd3VcbiAqIEBEZXNjcmlwdGlvbjog5pS26LW35ZKM5bGV5byAIENvbWJvXG4gKi9cbnZhciBERUZBVUxUX1RSSUdHRVIgPSAnZGJsY2xpY2snO1xudmFyIEFMTE9XX0VWRU5UUyA9IFsnY2xpY2snLCAnZGJsY2xpY2snXTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0RGVmYXVsdENmZzogZnVuY3Rpb24gZ2V0RGVmYXVsdENmZygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHJpZ2dlcjogREVGQVVMVF9UUklHR0VSLFxuICAgICAgcmVsYXlvdXQ6IHRydWVcbiAgICB9O1xuICB9LFxuICBnZXRFdmVudHM6IGZ1bmN0aW9uIGdldEV2ZW50cygpIHtcbiAgICB2YXIgX2E7XG5cbiAgICB2YXIgdHJpZ2dlcjsgLy8g5qOA5rWL6L6T5YWl5piv5ZCm5ZCI5rOVXG5cbiAgICBpZiAoQUxMT1dfRVZFTlRTLmluY2x1ZGVzKHRoaXMudHJpZ2dlcikpIHtcbiAgICAgIHRyaWdnZXIgPSB0aGlzLnRyaWdnZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyaWdnZXIgPSBERUZBVUxUX1RSSUdHRVI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG5cbiAgICAgIGNvbnNvbGUud2FybihcIkJlaGF2aW9yIGNvbGxhcHNlLWV4cGFuZC1ncm91cCDnmoQgdHJpZ2dlciDlj4LmlbDkuI3lkIjms5XvvIzor7fovpPlhaUgJ2NsaWNrJyDmiJYgJ2RibGNsaWNrJ1wiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gX2EgPSB7fSwgX2FbXCJjb21ibzpcIiArIHRyaWdnZXJdID0gJ29uQ29tYm9DbGljaycsIF9hO1xuICB9LFxuICBvbkNvbWJvQ2xpY2s6IGZ1bmN0aW9uIG9uQ29tYm9DbGljayhldnQpIHtcbiAgICB2YXIgaXRlbSA9IGV2dC5pdGVtO1xuXG4gICAgdmFyIF9hID0gdGhpcyxcbiAgICAgICAgZ3JhcGggPSBfYS5ncmFwaCxcbiAgICAgICAgcmVsYXlvdXQgPSBfYS5yZWxheW91dDtcblxuICAgIGlmICghaXRlbSB8fCBpdGVtLmRlc3Ryb3llZCB8fCBpdGVtLmdldFR5cGUoKSAhPT0gJ2NvbWJvJykgcmV0dXJuO1xuICAgIHZhciBtb2RlbCA9IGl0ZW0uZ2V0TW9kZWwoKTtcbiAgICB2YXIgY29tYm9JZCA9IG1vZGVsLmlkO1xuXG4gICAgaWYgKCFjb21ib0lkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZ3JhcGguY29sbGFwc2VFeHBhbmRDb21ibyhjb21ib0lkKTtcbiAgICBpZiAocmVsYXlvdXQgJiYgZ3JhcGguZ2V0KCdsYXlvdXQnKSkgZ3JhcGgubGF5b3V0KCk7ZWxzZSBncmFwaC5yZWZyZXNoUG9zaXRpb25zKCk7XG4gIH1cbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/collapse-expand-combo.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/collapse-expand.js":
/*!************************************************************************************!*\
!*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/collapse-expand.js ***!
\************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar DEFAULT_TRIGGER = 'click';\nvar ALLOW_EVENTS = ['click', 'dblclick'];\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n /**\n * 发生收缩/扩展变化时的回调\n */\n trigger: DEFAULT_TRIGGER,\n onChange: function onChange() {}\n };\n },\n getEvents: function getEvents() {\n var _a;\n\n var trigger; // 检测输入是否合法\n\n if (ALLOW_EVENTS.includes(this.trigger)) {\n trigger = this.trigger;\n } else {\n trigger = DEFAULT_TRIGGER; // eslint-disable-next-line no-console\n\n console.warn(\"Behavior collapse-expand 的 trigger 参数不合法,请输入 'click' 或 'dblclick'\");\n }\n\n return _a = {}, _a[\"node:\" + trigger] = 'onNodeClick', // 支持移动端事件\n _a.touchstart = 'onNodeClick', _a;\n },\n onNodeClick: function onNodeClick(e) {\n var item = e.item;\n if (!item) return; // 如果节点进行过更新,model 会进行 merge,直接改 model 就不能改布局,所以需要去改源数据\n\n var sourceData = this.graph.findDataById(item.get('id'));\n\n if (!sourceData) {\n return;\n }\n\n var children = sourceData.children; // 叶子节点的收缩和展开没有意义\n\n if (!children || children.length === 0) {\n return;\n }\n\n var collapsed = !sourceData.collapsed;\n\n if (!this.shouldBegin(e, collapsed)) {\n return;\n }\n\n sourceData.collapsed = collapsed;\n item.getModel().collapsed = collapsed;\n this.graph.emit('itemcollapsed', {\n item: e.item,\n collapsed: collapsed\n });\n\n if (!this.shouldUpdate(e, collapsed)) {\n return;\n }\n\n this.onChange(item, collapsed);\n this.graph.layout();\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL2NvbGxhcHNlLWV4cGFuZC5qcz9jZGFmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBLGdCQUFnQjs7QUFFaEI7QUFDQTtBQUNBLEtBQUs7QUFDTCxnQ0FBZ0M7O0FBRWhDO0FBQ0E7O0FBRUEsa0JBQWtCO0FBQ2xCO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxzQkFBc0I7O0FBRXRCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSx1Q0FBdUM7O0FBRXZDO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL2NvbGxhcHNlLWV4cGFuZC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBERUZBVUxUX1RSSUdHRVIgPSAnY2xpY2snO1xudmFyIEFMTE9XX0VWRU5UUyA9IFsnY2xpY2snLCAnZGJsY2xpY2snXTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0RGVmYXVsdENmZzogZnVuY3Rpb24gZ2V0RGVmYXVsdENmZygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLyoqXG4gICAgICAgKiDlj5HnlJ/mlLbnvKkv5omp5bGV5Y+Y5YyW5pe255qE5Zue6LCDXG4gICAgICAgKi9cbiAgICAgIHRyaWdnZXI6IERFRkFVTFRfVFJJR0dFUixcbiAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSgpIHt9XG4gICAgfTtcbiAgfSxcbiAgZ2V0RXZlbnRzOiBmdW5jdGlvbiBnZXRFdmVudHMoKSB7XG4gICAgdmFyIF9hO1xuXG4gICAgdmFyIHRyaWdnZXI7IC8vIOajgOa1i+i+k+WFpeaYr+WQpuWQiOazlVxuXG4gICAgaWYgKEFMTE9XX0VWRU5UUy5pbmNsdWRlcyh0aGlzLnRyaWdnZXIpKSB7XG4gICAgICB0cmlnZ2VyID0gdGhpcy50cmlnZ2VyO1xuICAgIH0gZWxzZSB7XG4gICAgICB0cmlnZ2VyID0gREVGQVVMVF9UUklHR0VSOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuXG4gICAgICBjb25zb2xlLndhcm4oXCJCZWhhdmlvciBjb2xsYXBzZS1leHBhbmQg55qEIHRyaWdnZXIg5Y+C5pWw5LiN5ZCI5rOV77yM6K+36L6T5YWlICdjbGljaycg5oiWICdkYmxjbGljaydcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIF9hID0ge30sIF9hW1wibm9kZTpcIiArIHRyaWdnZXJdID0gJ29uTm9kZUNsaWNrJywgLy8g5pSv5oyB56e75Yqo56uv5LqL5Lu2XG4gICAgX2EudG91Y2hzdGFydCA9ICdvbk5vZGVDbGljaycsIF9hO1xuICB9LFxuICBvbk5vZGVDbGljazogZnVuY3Rpb24gb25Ob2RlQ2xpY2soZSkge1xuICAgIHZhciBpdGVtID0gZS5pdGVtO1xuICAgIGlmICghaXRlbSkgcmV0dXJuOyAvLyDlpoLmnpzoioLngrnov5vooYzov4fmm7TmlrDvvIxtb2RlbCDkvJrov5vooYwgbWVyZ2XvvIznm7TmjqXmlLkgbW9kZWwg5bCx5LiN6IO95pS55biD5bGA77yM5omA5Lul6ZyA6KaB5Y675pS55rqQ5pWw5o2uXG5cbiAgICB2YXIgc291cmNlRGF0YSA9IHRoaXMuZ3JhcGguZmluZERhdGFCeUlkKGl0ZW0uZ2V0KCdpZCcpKTtcblxuICAgIGlmICghc291cmNlRGF0YSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBjaGlsZHJlbiA9IHNvdXJjZURhdGEuY2hpbGRyZW47IC8vIOWPtuWtkOiKgueCueeahOaUtue8qeWSjOWxleW8gOayoeacieaEj+S5iVxuXG4gICAgaWYgKCFjaGlsZHJlbiB8fCBjaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgY29sbGFwc2VkID0gIXNvdXJjZURhdGEuY29sbGFwc2VkO1xuXG4gICAgaWYgKCF0aGlzLnNob3VsZEJlZ2luKGUsIGNvbGxhcHNlZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzb3VyY2VEYXRhLmNvbGxhcHNlZCA9IGNvbGxhcHNlZDtcbiAgICBpdGVtLmdldE1vZGVsKCkuY29sbGFwc2VkID0gY29sbGFwc2VkO1xuICAgIHRoaXMuZ3JhcGguZW1pdCgnaXRlbWNvbGxhcHNlZCcsIHtcbiAgICAgIGl0ZW06IGUuaXRlbSxcbiAgICAgIGNvbGxhcHNlZDogY29sbGFwc2VkXG4gICAgfSk7XG5cbiAgICBpZiAoIXRoaXMuc2hvdWxkVXBkYXRlKGUsIGNvbGxhcHNlZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm9uQ2hhbmdlKGl0ZW0sIGNvbGxhcHNlZCk7XG4gICAgdGhpcy5ncmFwaC5sYXlvdXQoKTtcbiAgfVxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/collapse-expand.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/create-edge.js":
/*!********************************************************************************!*\
!*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/create-edge.js ***!
\********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\n\nvar DEFAULT_TRIGGER = 'click';\nvar ALLOW_EVENTS = ['click', 'drag'];\nvar DEFAULT_KEY = undefined;\nvar ALLOW_KEYS = ['shift', 'ctrl', 'control', 'alt', 'meta', undefined];\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n trigger: DEFAULT_TRIGGER,\n key: DEFAULT_KEY,\n edgeConfig: {},\n getEdgeConfig: undefined\n };\n },\n getEvents: function getEvents() {\n var self = this; // 检测输入是否合法\n\n if (!(ALLOW_EVENTS.indexOf(self.trigger.toLowerCase()) > -1)) {\n self.trigger = DEFAULT_TRIGGER; // eslint-disable-next-line no-console\n\n console.warn(\"Behavior create-edge 的 trigger 参数不合法,请输入 'click','drag'\");\n }\n\n if (self.key && ALLOW_KEYS.indexOf(self.key.toLowerCase()) === -1) {\n self.trigger = DEFAULT_KEY; // eslint-disable-next-line no-console\n\n console.warn(\"Behavior create-edge 的 key 参数不合法,请输入 'shift','ctrl','alt','control',或 undefined\");\n }\n\n var events;\n\n if (self.trigger === 'drag') {\n events = {\n 'node:dragstart': 'onClick',\n 'combo:dragstart': 'onClick',\n drag: 'updateEndPoint',\n 'node:drop': 'onClick',\n 'combo:drop': 'onClick',\n dragend: 'onDragEnd'\n };\n } else if (self.trigger === 'click') {\n events = {\n 'node:click': 'onClick',\n mousemove: 'updateEndPoint',\n 'edge:click': 'cancelCreating',\n 'canvas:click': 'cancelCreating',\n 'combo:click': 'onClick'\n };\n }\n\n if (self.key) {\n events.keydown = 'onKeyDown';\n events.keyup = 'onKeyUp';\n }\n\n return events;\n },\n onDragEnd: function onDragEnd(ev) {\n var self = this;\n if (self.key && !self.keydown) return;\n var item = ev.item;\n if (!item || item.getID() === self.source || item.getType() !== 'node') self.cancelCreating({\n item: self.edge,\n x: ev.x,\n y: ev.y\n });\n },\n // 如果边的起点没有指定,则根据起点创建新边;如果起点已经指定而终点未指定,则指定终点\n onClick: function onClick(ev) {\n var self = this;\n if (self.key && !self.keydown) return;\n var node = ev.item;\n var graph = self.graph;\n var model = node.getModel();\n var getEdgeConfig = self.getEdgeConfig; // 如果起点已经指定而终点未指定,则指定终点\n\n if (self.addingEdge && self.edge) {\n if (!self.shouldEnd.call(self, ev)) return;\n var edgeConfig = void 0;\n\n if (getEdgeConfig && Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(getEdgeConfig)) {\n edgeConfig = getEdgeConfig({\n source: self.source,\n target: model.id\n });\n } else {\n edgeConfig = self.edgeConfig;\n }\n\n var updateCfg = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n target: model.id\n }, edgeConfig);\n\n if (self.source === model.id) {\n updateCfg.type = 'loop';\n }\n\n graph.emit('beforecreateedge', {});\n graph.updateItem(self.edge, updateCfg, false);\n\n if (graph.get('enabledStack')) {\n var addedModel = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, self.edge.getModel()), {\n itemType: 'edge'\n });\n\n var after = {};\n after.edges = [addedModel];\n graph.pushStack('add', {\n before: {},\n after: after\n });\n }\n\n graph.emit('aftercreateedge', {\n edge: self.edge\n }); // 暂时将该边的 capture 恢复为 true\n\n self.edge.getKeyShape().set('capture', true);\n self.edge = null;\n self.addingEdge = false;\n } else {\n // 如果边的起点没有指定,则根据起点创建新边\n if (!self.shouldBegin.call(self, ev)) return; // 获取自定义 edge 配置\n\n var edgeConfig = void 0;\n\n if (getEdgeConfig && Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(getEdgeConfig)) {\n edgeConfig = getEdgeConfig({\n source: model.id,\n target: model.id\n });\n } else {\n edgeConfig = self.edgeConfig;\n }\n\n self.edge = graph.addItem('edge', Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n source: model.id,\n target: model.id\n }, edgeConfig), false);\n self.source = model.id;\n self.addingEdge = true; // 暂时将该边的 capture 设置为 false,这样可以拾取到后面的元素\n\n self.edge.getKeyShape().set('capture', false);\n }\n },\n // 边的起点已经确定,边的末端跟随鼠标移动\n updateEndPoint: function updateEndPoint(ev) {\n var self = this;\n if (self.key && !self.keydown) return;\n var point = {\n x: ev.x,\n y: ev.y\n }; // 若此时 source 节点已经被移除,结束添加边\n\n if (!self.graph.findById(self.source)) {\n self.addingEdge = false;\n return;\n }\n\n if (self.addingEdge && self.edge) {\n // 更新边的终点为鼠标位置\n self.graph.updateItem(self.edge, {\n target: point\n }, false);\n }\n },\n // 取消增加边,删除该边;或指定终点\n cancelCreating: function cancelCreating(ev) {\n var self = this;\n if (self.key && !self.keydown) return;\n var graph = self.graph;\n var currentEdge = ev.item;\n\n if (self.addingEdge && ev.target && ev.target.isCanvas && ev.target.isCanvas()) {\n graph.removeItem(self.edge, false);\n self.edge = null;\n self.addingEdge = false;\n return;\n }\n\n if (self.addingEdge && self.edge === currentEdge) {\n graph.removeItem(self.edge, false);\n self.edge = null;\n self.addingEdge = false;\n }\n },\n onKeyDown: function onKeyDown(e) {\n var self = this;\n var code = e.key;\n\n if (!code) {\n return;\n }\n\n if (code.toLowerCase() === self.key.toLowerCase()) {\n self.keydown = true;\n } else {\n self.keydown = false;\n }\n },\n onKeyUp: function onKeyUp() {\n var self = this;\n\n if (self.addingEdge && self.edge) {\n // 清除正在增加的边\n self.graph.removeItem(self.edge, false);\n self.addingEdge = false;\n self.edge = null;\n }\n\n this.keydown = false;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL2NyZWF0ZS1lZGdlLmpzP2FjNDEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ087QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxvQkFBb0I7O0FBRXBCO0FBQ0EscUNBQXFDOztBQUVyQztBQUNBOztBQUVBO0FBQ0EsaUNBQWlDOztBQUVqQztBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDOztBQUUzQztBQUNBO0FBQ0E7O0FBRUEsMkJBQTJCLDZEQUFVO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTs7QUFFQSxzQkFBc0Isc0RBQVE7QUFDOUI7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQSx1Q0FBdUM7QUFDdkM7O0FBRUE7QUFDQSx5QkFBeUIsc0RBQVEsQ0FBQyxzREFBUSxHQUFHO0FBQzdDO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEI7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBLE9BQU8sRUFBRTs7QUFFVDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxtREFBbUQ7O0FBRW5EOztBQUVBLDJCQUEyQiw2REFBVTtBQUNyQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7O0FBRUEsd0NBQXdDLHNEQUFRO0FBQ2hEO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSw2QkFBNkI7O0FBRTdCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtcGNAMC41LjBAQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvY3JlYXRlLWVkZ2UuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgaXNGdW5jdGlvbiB9IGZyb20gJ0BhbnR2L3V0aWwnO1xudmFyIERFRkFVTFRfVFJJR0dFUiA9ICdjbGljayc7XG52YXIgQUxMT1dfRVZFTlRTID0gWydjbGljaycsICdkcmFnJ107XG52YXIgREVGQVVMVF9LRVkgPSB1bmRlZmluZWQ7XG52YXIgQUxMT1dfS0VZUyA9IFsnc2hpZnQnLCAnY3RybCcsICdjb250cm9sJywgJ2FsdCcsICdtZXRhJywgdW5kZWZpbmVkXTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0RGVmYXVsdENmZzogZnVuY3Rpb24gZ2V0RGVmYXVsdENmZygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHJpZ2dlcjogREVGQVVMVF9UUklHR0VSLFxuICAgICAga2V5OiBERUZBVUxUX0tFWSxcbiAgICAgIGVkZ2VDb25maWc6IHt9LFxuICAgICAgZ2V0RWRnZUNvbmZpZzogdW5kZWZpbmVkXG4gICAgfTtcbiAgfSxcbiAgZ2V0RXZlbnRzOiBmdW5jdGlvbiBnZXRFdmVudHMoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzOyAvLyDmo4DmtYvovpPlhaXmmK/lkKblkIjms5VcblxuICAgIGlmICghKEFMTE9XX0VWRU5UUy5pbmRleE9mKHNlbGYudHJpZ2dlci50b0xvd2VyQ2FzZSgpKSA+IC0xKSkge1xuICAgICAgc2VsZi50cmlnZ2VyID0gREVGQVVMVF9UUklHR0VSOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuXG4gICAgICBjb25zb2xlLndhcm4oXCJCZWhhdmlvciBjcmVhdGUtZWRnZSDnmoQgdHJpZ2dlciDlj4LmlbDkuI3lkIjms5XvvIzor7fovpPlhaUgJ2NsaWNrJ++8jCdkcmFnJ1wiKTtcbiAgICB9XG5cbiAgICBpZiAoc2VsZi5rZXkgJiYgQUxMT1dfS0VZUy5pbmRleE9mKHNlbGYua2V5LnRvTG93ZXJDYXNlKCkpID09PSAtMSkge1xuICAgICAgc2VsZi50cmlnZ2VyID0gREVGQVVMVF9LRVk7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG5cbiAgICAgIGNvbnNvbGUud2FybihcIkJlaGF2aW9yIGNyZWF0ZS1lZGdlIOeahCBrZXkg5Y+C5pWw5LiN5ZCI5rOV77yM6K+36L6T5YWlICdzaGlmdCfvvIwnY3RybCfvvIwnYWx0J++8jCdjb250cm9sJ++8jOaIliB1bmRlZmluZWRcIik7XG4gICAgfVxuXG4gICAgdmFyIGV2ZW50cztcblxuICAgIGlmIChzZWxmLnRyaWdnZXIgPT09ICdkcmFnJykge1xuICAgICAgZXZlbnRzID0ge1xuICAgICAgICAnbm9kZTpkcmFnc3RhcnQnOiAnb25DbGljaycsXG4gICAgICAgICdjb21ibzpkcmFnc3RhcnQnOiAnb25DbGljaycsXG4gICAgICAgIGRyYWc6ICd1cGRhdGVFbmRQb2ludCcsXG4gICAgICAgICdub2RlOmRyb3AnOiAnb25DbGljaycsXG4gICAgICAgICdjb21ibzpkcm9wJzogJ29uQ2xpY2snLFxuICAgICAgICBkcmFnZW5kOiAnb25EcmFnRW5kJ1xuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHNlbGYudHJpZ2dlciA9PT0gJ2NsaWNrJykge1xuICAgICAgZXZlbnRzID0ge1xuICAgICAgICAnbm9kZTpjbGljayc6ICdvbkNsaWNrJyxcbiAgICAgICAgbW91c2Vtb3ZlOiAndXBkYXRlRW5kUG9pbnQnLFxuICAgICAgICAnZWRnZTpjbGljayc6ICdjYW5jZWxDcmVhdGluZycsXG4gICAgICAgICdjYW52YXM6Y2xpY2snOiAnY2FuY2VsQ3JlYXRpbmcnLFxuICAgICAgICAnY29tYm86Y2xpY2snOiAnb25DbGljaydcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHNlbGYua2V5KSB7XG4gICAgICBldmVudHMua2V5ZG93biA9ICdvbktleURvd24nO1xuICAgICAgZXZlbnRzLmtleXVwID0gJ29uS2V5VXAnO1xuICAgIH1cblxuICAgIHJldHVybiBldmVudHM7XG4gIH0sXG4gIG9uRHJhZ0VuZDogZnVuY3Rpb24gb25EcmFnRW5kKGV2KSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIGlmIChzZWxmLmtleSAmJiAhc2VsZi5rZXlkb3duKSByZXR1cm47XG4gICAgdmFyIGl0ZW0gPSBldi5pdGVtO1xuICAgIGlmICghaXRlbSB8fCBpdGVtLmdldElEKCkgPT09IHNlbGYuc291cmNlIHx8IGl0ZW0uZ2V0VHlwZSgpICE9PSAnbm9kZScpIHNlbGYuY2FuY2VsQ3JlYXRpbmcoe1xuICAgICAgaXRlbTogc2VsZi5lZGdlLFxuICAgICAgeDogZXYueCxcbiAgICAgIHk6IGV2LnlcbiAgICB9KTtcbiAgfSxcbiAgLy8g5aaC5p6c6L6555qE6LW354K55rKh5pyJ5oyH5a6a77yM5YiZ5qC55o2u6LW354K55Yib5bu65paw6L6577yb5aaC5p6c6LW354K55bey57uP5oyH5a6a6ICM57uI54K55pyq5oyH5a6a77yM5YiZ5oyH5a6a57uI54K5XG4gIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soZXYpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgaWYgKHNlbGYua2V5ICYmICFzZWxmLmtleWRvd24pIHJldHVybjtcbiAgICB2YXIgbm9kZSA9IGV2Lml0ZW07XG4gICAgdmFyIGdyYXBoID0gc2VsZi5ncmFwaDtcbiAgICB2YXIgbW9kZWwgPSBub2RlLmdldE1vZGVsKCk7XG4gICAgdmFyIGdldEVkZ2VDb25maWcgPSBzZWxmLmdldEVkZ2VDb25maWc7IC8vIOWmguaenOi1t+eCueW3sue7j+aMh+WumuiAjOe7iOeCueacquaMh+Wumu+8jOWImeaMh+Wumue7iOeCuVxuXG4gICAgaWYgKHNlbGYuYWRkaW5nRWRnZSAmJiBzZWxmLmVkZ2UpIHtcbiAgICAgIGlmICghc2VsZi5zaG91bGRFbmQuY2FsbChzZWxmLCBldikpIHJldHVybjtcbiAgICAgIHZhciBlZGdlQ29uZmlnID0gdm9pZCAwO1xuXG4gICAgICBpZiAoZ2V0RWRnZUNvbmZpZyAmJiBpc0Z1bmN0aW9uKGdldEVkZ2VDb25maWcpKSB7XG4gICAgICAgIGVkZ2VDb25maWcgPSBnZXRFZGdlQ29uZmlnKHtcbiAgICAgICAgICBzb3VyY2U6IHNlbGYuc291cmNlLFxuICAgICAgICAgIHRhcmdldDogbW9kZWwuaWRcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlZGdlQ29uZmlnID0gc2VsZi5lZGdlQ29uZmlnO1xuICAgICAgfVxuXG4gICAgICB2YXIgdXBkYXRlQ2ZnID0gX19hc3NpZ24oe1xuICAgICAgICB0YXJnZXQ6IG1vZGVsLmlkXG4gICAgICB9LCBlZGdlQ29uZmlnKTtcblxuICAgICAgaWYgKHNlbGYuc291cmNlID09PSBtb2RlbC5pZCkge1xuICAgICAgICB1cGRhdGVDZmcudHlwZSA9ICdsb29wJztcbiAgICAgIH1cblxuICAgICAgZ3JhcGguZW1pdCgnYmVmb3JlY3JlYXRlZWRnZScsIHt9KTtcbiAgICAgIGdyYXBoLnVwZGF0ZUl0ZW0oc2VsZi5lZGdlLCB1cGRhdGVDZmcsIGZhbHNlKTtcblxuICAgICAgaWYgKGdyYXBoLmdldCgnZW5hYmxlZFN0YWNrJykpIHtcbiAgICAgICAgdmFyIGFkZGVkTW9kZWwgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc2VsZi5lZGdlLmdldE1vZGVsKCkpLCB7XG4gICAgICAgICAgaXRlbVR5cGU6ICdlZGdlJ1xuICAgICAgICB9KTtcblxuICAgICAgICB2YXIgYWZ0ZXIgPSB7fTtcbiAgICAgICAgYWZ0ZXIuZWRnZXMgPSBbYWRkZWRNb2RlbF07XG4gICAgICAgIGdyYXBoLnB1c2hTdGFjaygnYWRkJywge1xuICAgICAgICAgIGJlZm9yZToge30sXG4gICAgICAgICAgYWZ0ZXI6IGFmdGVyXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBncmFwaC5lbWl0KCdhZnRlcmNyZWF0ZWVkZ2UnLCB7XG4gICAgICAgIGVkZ2U6IHNlbGYuZWRnZVxuICAgICAgfSk7IC8vIOaaguaXtuWwhuivpei+ueeahCBjYXB0dXJlIOaBouWkjeS4uiB0cnVlXG5cbiAgICAgIHNlbGYuZWRnZS5nZXRLZXlTaGFwZSgpLnNldCgnY2FwdHVyZScsIHRydWUpO1xuICAgICAgc2VsZi5lZGdlID0gbnVsbDtcbiAgICAgIHNlbGYuYWRkaW5nRWRnZSA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyDlpoLmnpzovrnnmoTotbfngrnmsqHmnInmjIflrprvvIzliJnmoLnmja7otbfngrnliJvlu7rmlrDovrlcbiAgICAgIGlmICghc2VsZi5zaG91bGRCZWdpbi5jYWxsKHNlbGYsIGV2KSkgcmV0dXJuOyAvLyDojrflj5boh6rlrprkuYkgZWRnZSDphY3nva5cblxuICAgICAgdmFyIGVkZ2VDb25maWcgPSB2b2lkIDA7XG5cbiAgICAgIGlmIChnZXRFZGdlQ29uZmlnICYmIGlzRnVuY3Rpb24oZ2V0RWRnZUNvbmZpZykpIHtcbiAgICAgICAgZWRnZUNvbmZpZyA9IGdldEVkZ2VDb25maWcoe1xuICAgICAgICAgIHNvdXJjZTogbW9kZWwuaWQsXG4gICAgICAgICAgdGFyZ2V0OiBtb2RlbC5pZFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVkZ2VDb25maWcgPSBzZWxmLmVkZ2VDb25maWc7XG4gICAgICB9XG5cbiAgICAgIHNlbGYuZWRnZSA9IGdyYXBoLmFkZEl0ZW0oJ2VkZ2UnLCBfX2Fzc2lnbih7XG4gICAgICAgIHNvdXJjZTogbW9kZWwuaWQsXG4gICAgICAgIHRhcmdldDogbW9kZWwuaWRcbiAgICAgIH0sIGVkZ2VDb25maWcpLCBmYWxzZSk7XG4gICAgICBzZWxmLnNvdXJjZSA9IG1vZGVsLmlkO1xuICAgICAgc2VsZi5hZGRpbmdFZGdlID0gdHJ1ZTsgLy8g5pqC5pe25bCG6K+l6L6555qEIGNhcHR1cmUg6K6+572u5Li6IGZhbHNl77yM6L+Z5qC35Y+v5Lul5ou+5Y+W5Yiw5ZCO6Z2i55qE5YWD57SgXG5cbiAgICAgIHNlbGYuZWRnZS5nZXRLZXlTaGFwZSgpLnNldCgnY2FwdHVyZScsIGZhbHNlKTtcbiAgICB9XG4gIH0sXG4gIC8vIOi+ueeahOi1t+eCueW3sue7j+ehruWumu+8jOi+ueeahOacq+err+i3n+maj+m8oOagh+enu+WKqFxuICB1cGRhdGVFbmRQb2ludDogZnVuY3Rpb24gdXBkYXRlRW5kUG9pbnQoZXYpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgaWYgKHNlbGYua2V5ICYmICFzZWxmLmtleWRvd24pIHJldHVybjtcbiAgICB2YXIgcG9pbnQgPSB7XG4gICAgICB4OiBldi54LFxuICAgICAgeTogZXYueVxuICAgIH07IC8vIOiLpeatpOaXtiBzb3VyY2Ug6IqC54K55bey57uP6KKr56e76Zmk77yM57uT5p2f5re75Yqg6L65XG5cbiAgICBpZiAoIXNlbGYuZ3JhcGguZmluZEJ5SWQoc2VsZi5zb3VyY2UpKSB7XG4gICAgICBzZWxmLmFkZGluZ0VkZ2UgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoc2VsZi5hZGRpbmdFZGdlICYmIHNlbGYuZWRnZSkge1xuICAgICAgLy8g5pu05paw6L6555qE57uI54K55Li66byg5qCH5L2N572uXG4gICAgICBzZWxmLmdyYXBoLnVwZGF0ZUl0ZW0oc2VsZi5lZGdlLCB7XG4gICAgICAgIHRhcmdldDogcG9pbnRcbiAgICAgIH0sIGZhbHNlKTtcbiAgICB9XG4gIH0sXG4gIC8vIOWPlua2iOWinuWKoOi+ue+8jOWIoOmZpOivpei+ue+8m+aIluaMh+Wumue7iOeCuVxuICBjYW5jZWxDcmVhdGluZzogZnVuY3Rpb24gY2FuY2VsQ3JlYXRpbmcoZXYpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgaWYgKHNlbGYua2V5ICYmICFzZWxmLmtleWRvd24pIHJldHVybjtcbiAgICB2YXIgZ3JhcGggPSBzZWxmLmdyYXBoO1xuICAgIHZhciBjdXJyZW50RWRnZSA9IGV2Lml0ZW07XG5cbiAgICBpZiAoc2VsZi5hZGRpbmdFZGdlICYmIGV2LnRhcmdldCAmJiBldi50YXJnZXQuaXNDYW52YXMgJiYgZXYudGFyZ2V0LmlzQ2FudmFzKCkpIHtcbiAgICAgIGdyYXBoLnJlbW92ZUl0ZW0oc2VsZi5lZGdlLCBmYWxzZSk7XG4gICAgICBzZWxmLmVkZ2UgPSBudWxsO1xuICAgICAgc2VsZi5hZGRpbmdFZGdlID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHNlbGYuYWRkaW5nRWRnZSAmJiBzZWxmLmVkZ2UgPT09IGN1cnJlbnRFZGdlKSB7XG4gICAgICBncmFwaC5yZW1vdmVJdGVtKHNlbGYuZWRnZSwgZmFsc2UpO1xuICAgICAgc2VsZi5lZGdlID0gbnVsbDtcbiAgICAgIHNlbGYuYWRkaW5nRWRnZSA9IGZhbHNlO1xuICAgIH1cbiAgfSxcbiAgb25LZXlEb3duOiBmdW5jdGlvbiBvbktleURvd24oZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgY29kZSA9IGUua2V5O1xuXG4gICAgaWYgKCFjb2RlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGNvZGUudG9Mb3dlckNhc2UoKSA9PT0gc2VsZi5rZXkudG9Mb3dlckNhc2UoKSkge1xuICAgICAgc2VsZi5rZXlkb3duID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VsZi5rZXlkb3duID0gZmFsc2U7XG4gICAgfVxuICB9LFxuICBvbktleVVwOiBmdW5jdGlvbiBvbktleVVwKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIGlmIChzZWxmLmFkZGluZ0VkZ2UgJiYgc2VsZi5lZGdlKSB7XG4gICAgICAvLyDmuIXpmaTmraPlnKjlop7liqDnmoTovrlcbiAgICAgIHNlbGYuZ3JhcGgucmVtb3ZlSXRlbShzZWxmLmVkZ2UsIGZhbHNlKTtcbiAgICAgIHNlbGYuYWRkaW5nRWRnZSA9IGZhbHNlO1xuICAgICAgc2VsZi5lZGdlID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLmtleWRvd24gPSBmYWxzZTtcbiAgfVxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/create-edge.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/drag-canvas.js":
/*!********************************************************************************!*\
!*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/drag-canvas.js ***!
\********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/util/index.js\");\n\n\nvar cloneEvent = _util__WEBPACK_IMPORTED_MODULE_1__[\"default\"].cloneEvent,\n isNaN = _util__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isNaN;\nvar abs = Math.abs;\nvar DRAG_OFFSET = 10;\nvar ALLOW_EVENTS = ['shift', 'ctrl', 'alt', 'control'];\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n direction: 'both',\n enableOptimize: false,\n // drag-canvas 可拖动的扩展范围,默认为 0,即最多可以拖动一屏的位置\n // 当设置的值大于 0 时,即拖动可以超过一屏\n // 当设置的值小于 0 时,相当于缩小了可拖动范围\n // 具体实例可参考:https://gw.alipayobjects.com/mdn/rms_f8c6a0/afts/img/A*IFfoS67_HssAAAAAAAAAAAAAARQnAQ\n scalableRange: 0,\n allowDragOnItem: false\n };\n },\n getEvents: function getEvents() {\n return {\n dragstart: 'onMouseDown',\n drag: 'onMouseMove',\n dragend: 'onMouseUp',\n 'canvas:click': 'onMouseUp',\n keyup: 'onKeyUp',\n focus: 'onKeyUp',\n keydown: 'onKeyDown',\n touchstart: 'onTouchStart',\n touchmove: 'onTouchMove',\n touchend: 'onMouseUp'\n };\n },\n updateViewport: function updateViewport(e) {\n var origin = this.origin;\n var clientX = +e.clientX;\n var clientY = +e.clientY;\n\n if (isNaN(clientX) || isNaN(clientY)) {\n return;\n }\n\n var dx = clientX - origin.x;\n var dy = clientY - origin.y;\n\n if (this.get('direction') === 'x') {\n dy = 0;\n } else if (this.get('direction') === 'y') {\n dx = 0;\n }\n\n this.origin = {\n x: clientX,\n y: clientY\n };\n var width = this.graph.get('width');\n var height = this.graph.get('height');\n var graphCanvasBBox = this.graph.get('canvas').getCanvasBBox();\n var expandWidth = this.scalableRange;\n var expandHeight = this.scalableRange; // 若 scalableRange 是 0~1 的小数,则作为比例考虑\n\n if (expandWidth < 1 && expandWidth > -1) {\n expandWidth = width * expandWidth;\n expandHeight = height * expandHeight;\n }\n\n if (graphCanvasBBox.minX <= width + expandWidth && graphCanvasBBox.minX + dx > width + expandWidth || graphCanvasBBox.maxX + expandWidth >= 0 && graphCanvasBBox.maxX + expandWidth + dx < 0) {\n dx = 0;\n }\n\n if (graphCanvasBBox.minY <= height + expandHeight && graphCanvasBBox.minY + dy > height + expandHeight || graphCanvasBBox.maxY + expandHeight >= 0 && graphCanvasBBox.maxY + expandHeight + dy < 0) {\n dy = 0;\n }\n\n this.graph.translate(dx, dy);\n },\n onTouchStart: function onTouchStart(e) {\n var self = this;\n var touches = e.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1]; // 如果是双指操作,不允许拖拽画布\n\n if (event1 && event2) {\n return;\n }\n\n e.preventDefault();\n self.onMouseDown(e);\n },\n onMouseDown: function onMouseDown(e) {\n var self = this;\n var event = e.originalEvent;\n\n if (event && e.name !== _antv_g6_core__WEBPACK_IMPORTED_MODULE_0__[\"G6Event\"].TOUCHSTART && event.button !== 0) {\n return;\n }\n\n if (e.name !== _antv_g6_core__WEBPACK_IMPORTED_MODULE_0__[\"G6Event\"].TOUCHSTART && typeof window !== 'undefined' && window.event && !window.event.buttons && !window.event.button) {\n return;\n }\n\n if (!this.shouldBegin.call(this, e)) {\n return;\n }\n\n if (self.keydown) return;\n var target = e.target;\n var targetIsCanvas = target && target.isCanvas && target.isCanvas();\n if (!this.allowDragOnItem && !targetIsCanvas) return;\n self.origin = {\n x: e.clientX,\n y: e.clientY\n };\n self.dragging = false;\n\n if (this.enableOptimize) {\n // 拖动 canvas 过程中隐藏所有的边及label\n var graph = this.graph;\n var edges = graph.getEdges();\n\n for (var i = 0, len = edges.length; i < len; i++) {\n var shapes = edges[i].get('group').get('children');\n if (!shapes) continue;\n shapes.forEach(function (shape) {\n shape.set('ori-visibility', shape.get('ori-visibility') || shape.get('visible'));\n shape.hide();\n });\n }\n\n var nodes = graph.getNodes();\n\n for (var j = 0, nodeLen = nodes.length; j < nodeLen; j++) {\n var container = nodes[j].getContainer();\n var children = container.get('children');\n\n for (var _i = 0, children_1 = children; _i < children_1.length; _i++) {\n var child = children_1[_i];\n var isKeyShape = child.get('isKeyShape');\n\n if (!isKeyShape) {\n child.set('ori-visibility', child.get('ori-visibility') || child.get('visible'));\n child.hide();\n }\n }\n }\n }\n },\n onTouchMove: function onTouchMove(e) {\n var self = this;\n var touches = e.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1]; // 如果是双指操作,不允许拖拽画布,结束拖拽\n\n if (event1 && event2) {\n this.onMouseUp(e);\n return;\n }\n\n e.preventDefault();\n self.onMouseMove(e);\n },\n onMouseMove: function onMouseMove(e) {\n var graph = this.graph;\n if (this.keydown) return;\n var target = e.target;\n var targetIsCanvas = target && target.isCanvas && target.isCanvas();\n if (!this.allowDragOnItem && !targetIsCanvas) return;\n e = cloneEvent(e);\n\n if (!this.origin) {\n return;\n }\n\n if (!this.dragging) {\n if (abs(this.origin.x - e.clientX) + abs(this.origin.y - e.clientY) < DRAG_OFFSET) {\n return;\n }\n\n if (this.shouldBegin.call(this, e)) {\n e.type = 'dragstart';\n graph.emit('canvas:dragstart', e);\n this.originPosition = {\n x: e.clientX,\n y: e.clientY\n };\n this.dragging = true;\n }\n } else {\n e.type = 'drag';\n graph.emit('canvas:drag', e);\n }\n\n if (this.shouldUpdate.call(this, e)) {\n this.updateViewport(e);\n }\n },\n onMouseUp: function onMouseUp(e) {\n var _a, _b;\n\n var graph = this.graph;\n if (this.keydown) return;\n var currentZoom = graph.getZoom();\n var modeController = graph.get('modeController');\n var zoomCanvas = (_b = (_a = modeController === null || modeController === void 0 ? void 0 : modeController.modes[modeController.mode]) === null || _a === void 0 ? void 0 : _a.filter(function (behavior) {\n return behavior.type === 'zoom-canvas';\n })) === null || _b === void 0 ? void 0 : _b[0];\n var optimizeZoom = zoomCanvas ? zoomCanvas.optimizeZoom || 0.1 : 0;\n\n if (this.enableOptimize) {\n // 拖动结束后显示所有的边\n var edges = graph.getEdges();\n\n for (var i = 0, len = edges.length; i < len; i++) {\n var shapes = edges[i].get('group').get('children');\n if (!shapes) continue;\n shapes.forEach(function (shape) {\n var oriVis = shape.get('ori-visibility');\n if (oriVis) shape.show();\n });\n }\n\n if (currentZoom > optimizeZoom) {\n var nodes = graph.getNodes();\n\n for (var j = 0, nodeLen = nodes.length; j < nodeLen; j++) {\n var container = nodes[j].getContainer();\n var children = container.get('children');\n\n for (var _i = 0, children_2 = children; _i < children_2.length; _i++) {\n var child = children_2[_i];\n var isKeyShape = child.get('isKeyShape');\n\n if (!isKeyShape) {\n var oriVis = child.get('ori-visibility');\n if (oriVis) child.show();\n }\n }\n }\n }\n }\n\n if (!this.dragging) {\n this.origin = null;\n return;\n }\n\n e = cloneEvent(e);\n\n if (this.shouldEnd.call(this, e)) {\n this.updateViewport(e);\n }\n\n e.type = 'dragend';\n e.dx = e.clientX - this.originPosition.x;\n e.dy = e.clientY - this.originPosition.y;\n graph.emit('canvas:dragend', e);\n this.endDrag();\n },\n endDrag: function endDrag() {\n this.origin = null;\n this.dragging = false;\n this.dragbegin = false;\n },\n onKeyDown: function onKeyDown(e) {\n var self = this;\n var code = e.key;\n\n if (!code) {\n return;\n }\n\n if (ALLOW_EVENTS.indexOf(code.toLowerCase()) > -1) {\n self.keydown = true;\n } else {\n self.keydown = false;\n }\n },\n onKeyUp: function onKeyUp() {\n this.keydown = false;\n this.origin = null;\n this.dragging = false;\n this.dragbegin = false;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL2RyYWctY2FudmFzLmpzPzNmNTciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQXdDO0FBQ2I7QUFDM0IsaUJBQWlCLDZDQUFJO0FBQ3JCLFlBQVksNkNBQUk7QUFDaEI7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDOztBQUUxQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCOztBQUU1QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUEsNEJBQTRCLHFEQUFPO0FBQ25DO0FBQ0E7O0FBRUEsbUJBQW1CLHFEQUFPO0FBQzFCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx5Q0FBeUMsU0FBUztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBOztBQUVBLDZDQUE2QyxhQUFhO0FBQzFEO0FBQ0E7O0FBRUEsK0NBQStDLHdCQUF3QjtBQUN2RTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCOztBQUU1QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEseUNBQXlDLFNBQVM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBOztBQUVBLCtDQUErQyxhQUFhO0FBQzVEO0FBQ0E7O0FBRUEsaURBQWlELHdCQUF3QjtBQUN6RTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtcGNAMC41LjBAQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvZHJhZy1jYW52YXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHNkV2ZW50IH0gZnJvbSAnQGFudHYvZzYtY29yZSc7XG5pbXBvcnQgVXRpbCBmcm9tICcuLi91dGlsJztcbnZhciBjbG9uZUV2ZW50ID0gVXRpbC5jbG9uZUV2ZW50LFxuICAgIGlzTmFOID0gVXRpbC5pc05hTjtcbnZhciBhYnMgPSBNYXRoLmFicztcbnZhciBEUkFHX09GRlNFVCA9IDEwO1xudmFyIEFMTE9XX0VWRU5UUyA9IFsnc2hpZnQnLCAnY3RybCcsICdhbHQnLCAnY29udHJvbCddO1xuZXhwb3J0IGRlZmF1bHQge1xuICBnZXREZWZhdWx0Q2ZnOiBmdW5jdGlvbiBnZXREZWZhdWx0Q2ZnKCkge1xuICAgIHJldHVybiB7XG4gICAgICBkaXJlY3Rpb246ICdib3RoJyxcbiAgICAgIGVuYWJsZU9wdGltaXplOiBmYWxzZSxcbiAgICAgIC8vIGRyYWctY2FudmFzIOWPr+aLluWKqOeahOaJqeWxleiMg+WbtO+8jOm7mOiupOS4uiAw77yM5Y2z5pyA5aSa5Y+v5Lul5ouW5Yqo5LiA5bGP55qE5L2N572uXG4gICAgICAvLyDlvZPorr7nva7nmoTlgLzlpKfkuo4gMCDml7bvvIzljbPmi5bliqjlj6/ku6XotoXov4fkuIDlsY9cbiAgICAgIC8vIOW9k+iuvue9rueahOWAvOWwj+S6jiAwIOaXtu+8jOebuOW9k+S6jue8qeWwj+S6huWPr+aLluWKqOiMg+WbtFxuICAgICAgLy8g5YW35L2T5a6e5L6L5Y+v5Y+C6ICD77yaaHR0cHM6Ly9ndy5hbGlwYXlvYmplY3RzLmNvbS9tZG4vcm1zX2Y4YzZhMC9hZnRzL2ltZy9BKklGZm9TNjdfSHNzQUFBQUFBQUFBQUFBQUFSUW5BUVxuICAgICAgc2NhbGFibGVSYW5nZTogMCxcbiAgICAgIGFsbG93RHJhZ09uSXRlbTogZmFsc2VcbiAgICB9O1xuICB9LFxuICBnZXRFdmVudHM6IGZ1bmN0aW9uIGdldEV2ZW50cygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZHJhZ3N0YXJ0OiAnb25Nb3VzZURvd24nLFxuICAgICAgZHJhZzogJ29uTW91c2VNb3ZlJyxcbiAgICAgIGRyYWdlbmQ6ICdvbk1vdXNlVXAnLFxuICAgICAgJ2NhbnZhczpjbGljayc6ICdvbk1vdXNlVXAnLFxuICAgICAga2V5dXA6ICdvbktleVVwJyxcbiAgICAgIGZvY3VzOiAnb25LZXlVcCcsXG4gICAgICBrZXlkb3duOiAnb25LZXlEb3duJyxcbiAgICAgIHRvdWNoc3RhcnQ6ICdvblRvdWNoU3RhcnQnLFxuICAgICAgdG91Y2htb3ZlOiAnb25Ub3VjaE1vdmUnLFxuICAgICAgdG91Y2hlbmQ6ICdvbk1vdXNlVXAnXG4gICAgfTtcbiAgfSxcbiAgdXBkYXRlVmlld3BvcnQ6IGZ1bmN0aW9uIHVwZGF0ZVZpZXdwb3J0KGUpIHtcbiAgICB2YXIgb3JpZ2luID0gdGhpcy5vcmlnaW47XG4gICAgdmFyIGNsaWVudFggPSArZS5jbGllbnRYO1xuICAgIHZhciBjbGllbnRZID0gK2UuY2xpZW50WTtcblxuICAgIGlmIChpc05hTihjbGllbnRYKSB8fCBpc05hTihjbGllbnRZKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBkeCA9IGNsaWVudFggLSBvcmlnaW4ueDtcbiAgICB2YXIgZHkgPSBjbGllbnRZIC0gb3JpZ2luLnk7XG5cbiAgICBpZiAodGhpcy5nZXQoJ2RpcmVjdGlvbicpID09PSAneCcpIHtcbiAgICAgIGR5ID0gMDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZ2V0KCdkaXJlY3Rpb24nKSA9PT0gJ3knKSB7XG4gICAgICBkeCA9IDA7XG4gICAgfVxuXG4gICAgdGhpcy5vcmlnaW4gPSB7XG4gICAgICB4OiBjbGllbnRYLFxuICAgICAgeTogY2xpZW50WVxuICAgIH07XG4gICAgdmFyIHdpZHRoID0gdGhpcy5ncmFwaC5nZXQoJ3dpZHRoJyk7XG4gICAgdmFyIGhlaWdodCA9IHRoaXMuZ3JhcGguZ2V0KCdoZWlnaHQnKTtcbiAgICB2YXIgZ3JhcGhDYW52YXNCQm94ID0gdGhpcy5ncmFwaC5nZXQoJ2NhbnZhcycpLmdldENhbnZhc0JCb3goKTtcbiAgICB2YXIgZXhwYW5kV2lkdGggPSB0aGlzLnNjYWxhYmxlUmFuZ2U7XG4gICAgdmFyIGV4cGFuZEhlaWdodCA9IHRoaXMuc2NhbGFibGVSYW5nZTsgLy8g6IulIHNjYWxhYmxlUmFuZ2Ug5pivIDB+MSDnmoTlsI/mlbDvvIzliJnkvZzkuLrmr5TkvovogIPomZFcblxuICAgIGlmIChleHBhbmRXaWR0aCA8IDEgJiYgZXhwYW5kV2lkdGggPiAtMSkge1xuICAgICAgZXhwYW5kV2lkdGggPSB3aWR0aCAqIGV4cGFuZFdpZHRoO1xuICAgICAgZXhwYW5kSGVpZ2h0ID0gaGVpZ2h0ICogZXhwYW5kSGVpZ2h0O1xuICAgIH1cblxuICAgIGlmIChncmFwaENhbnZhc0JCb3gubWluWCA8PSB3aWR0aCArIGV4cGFuZFdpZHRoICYmIGdyYXBoQ2FudmFzQkJveC5taW5YICsgZHggPiB3aWR0aCArIGV4cGFuZFdpZHRoIHx8IGdyYXBoQ2FudmFzQkJveC5tYXhYICsgZXhwYW5kV2lkdGggPj0gMCAmJiBncmFwaENhbnZhc0JCb3gubWF4WCArIGV4cGFuZFdpZHRoICsgZHggPCAwKSB7XG4gICAgICBkeCA9IDA7XG4gICAgfVxuXG4gICAgaWYgKGdyYXBoQ2FudmFzQkJveC5taW5ZIDw9IGhlaWdodCArIGV4cGFuZEhlaWdodCAmJiBncmFwaENhbnZhc0JCb3gubWluWSArIGR5ID4gaGVpZ2h0ICsgZXhwYW5kSGVpZ2h0IHx8IGdyYXBoQ2FudmFzQkJveC5tYXhZICsgZXhwYW5kSGVpZ2h0ID49IDAgJiYgZ3JhcGhDYW52YXNCQm94Lm1heFkgKyBleHBhbmRIZWlnaHQgKyBkeSA8IDApIHtcbiAgICAgIGR5ID0gMDtcbiAgICB9XG5cbiAgICB0aGlzLmdyYXBoLnRyYW5zbGF0ZShkeCwgZHkpO1xuICB9LFxuICBvblRvdWNoU3RhcnQ6IGZ1bmN0aW9uIG9uVG91Y2hTdGFydChlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciB0b3VjaGVzID0gZS5vcmlnaW5hbEV2ZW50LnRvdWNoZXM7XG4gICAgdmFyIGV2ZW50MSA9IHRvdWNoZXNbMF07XG4gICAgdmFyIGV2ZW50MiA9IHRvdWNoZXNbMV07IC8vIOWmguaenOaYr+WPjOaMh+aTjeS9nO+8jOS4jeWFgeiuuOaLluaLveeUu+W4g1xuXG4gICAgaWYgKGV2ZW50MSAmJiBldmVudDIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgc2VsZi5vbk1vdXNlRG93bihlKTtcbiAgfSxcbiAgb25Nb3VzZURvd246IGZ1bmN0aW9uIG9uTW91c2VEb3duKGUpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGV2ZW50ID0gZS5vcmlnaW5hbEV2ZW50O1xuXG4gICAgaWYgKGV2ZW50ICYmIGUubmFtZSAhPT0gRzZFdmVudC5UT1VDSFNUQVJUICYmIGV2ZW50LmJ1dHRvbiAhPT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChlLm5hbWUgIT09IEc2RXZlbnQuVE9VQ0hTVEFSVCAmJiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuZXZlbnQgJiYgIXdpbmRvdy5ldmVudC5idXR0b25zICYmICF3aW5kb3cuZXZlbnQuYnV0dG9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnNob3VsZEJlZ2luLmNhbGwodGhpcywgZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoc2VsZi5rZXlkb3duKSByZXR1cm47XG4gICAgdmFyIHRhcmdldCA9IGUudGFyZ2V0O1xuICAgIHZhciB0YXJnZXRJc0NhbnZhcyA9IHRhcmdldCAmJiB0YXJnZXQuaXNDYW52YXMgJiYgdGFyZ2V0LmlzQ2FudmFzKCk7XG4gICAgaWYgKCF0aGlzLmFsbG93RHJhZ09uSXRlbSAmJiAhdGFyZ2V0SXNDYW52YXMpIHJldHVybjtcbiAgICBzZWxmLm9yaWdpbiA9IHtcbiAgICAgIHg6IGUuY2xpZW50WCxcbiAgICAgIHk6IGUuY2xpZW50WVxuICAgIH07XG4gICAgc2VsZi5kcmFnZ2luZyA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuZW5hYmxlT3B0aW1pemUpIHtcbiAgICAgIC8vIOaLluWKqCBjYW52YXMg6L+H56iL5Lit6ZqQ6JeP5omA5pyJ55qE6L655Y+KbGFiZWxcbiAgICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgICB2YXIgZWRnZXMgPSBncmFwaC5nZXRFZGdlcygpO1xuXG4gICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gZWRnZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgdmFyIHNoYXBlcyA9IGVkZ2VzW2ldLmdldCgnZ3JvdXAnKS5nZXQoJ2NoaWxkcmVuJyk7XG4gICAgICAgIGlmICghc2hhcGVzKSBjb250aW51ZTtcbiAgICAgICAgc2hhcGVzLmZvckVhY2goZnVuY3Rpb24gKHNoYXBlKSB7XG4gICAgICAgICAgc2hhcGUuc2V0KCdvcmktdmlzaWJpbGl0eScsIHNoYXBlLmdldCgnb3JpLXZpc2liaWxpdHknKSB8fCBzaGFwZS5nZXQoJ3Zpc2libGUnKSk7XG4gICAgICAgICAgc2hhcGUuaGlkZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdmFyIG5vZGVzID0gZ3JhcGguZ2V0Tm9kZXMoKTtcblxuICAgICAgZm9yICh2YXIgaiA9IDAsIG5vZGVMZW4gPSBub2Rlcy5sZW5ndGg7IGogPCBub2RlTGVuOyBqKyspIHtcbiAgICAgICAgdmFyIGNvbnRhaW5lciA9IG5vZGVzW2pdLmdldENvbnRhaW5lcigpO1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSBjb250YWluZXIuZ2V0KCdjaGlsZHJlbicpO1xuXG4gICAgICAgIGZvciAodmFyIF9pID0gMCwgY2hpbGRyZW5fMSA9IGNoaWxkcmVuOyBfaSA8IGNoaWxkcmVuXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5fMVtfaV07XG4gICAgICAgICAgdmFyIGlzS2V5U2hhcGUgPSBjaGlsZC5nZXQoJ2lzS2V5U2hhcGUnKTtcblxuICAgICAgICAgIGlmICghaXNLZXlTaGFwZSkge1xuICAgICAgICAgICAgY2hpbGQuc2V0KCdvcmktdmlzaWJpbGl0eScsIGNoaWxkLmdldCgnb3JpLXZpc2liaWxpdHknKSB8fCBjaGlsZC5nZXQoJ3Zpc2libGUnKSk7XG4gICAgICAgICAgICBjaGlsZC5oaWRlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBvblRvdWNoTW92ZTogZnVuY3Rpb24gb25Ub3VjaE1vdmUoZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgdG91Y2hlcyA9IGUub3JpZ2luYWxFdmVudC50b3VjaGVzO1xuICAgIHZhciBldmVudDEgPSB0b3VjaGVzWzBdO1xuICAgIHZhciBldmVudDIgPSB0b3VjaGVzWzFdOyAvLyDlpoLmnpzmmK/lj4zmjIfmk43kvZzvvIzkuI3lhYHorrjmi5bmi73nlLvluIPvvIznu5PmnZ/mi5bmi71cblxuICAgIGlmIChldmVudDEgJiYgZXZlbnQyKSB7XG4gICAgICB0aGlzLm9uTW91c2VVcChlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgc2VsZi5vbk1vdXNlTW92ZShlKTtcbiAgfSxcbiAgb25Nb3VzZU1vdmU6IGZ1bmN0aW9uIG9uTW91c2VNb3ZlKGUpIHtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIGlmICh0aGlzLmtleWRvd24pIHJldHVybjtcbiAgICB2YXIgdGFyZ2V0ID0gZS50YXJnZXQ7XG4gICAgdmFyIHRhcmdldElzQ2FudmFzID0gdGFyZ2V0ICYmIHRhcmdldC5pc0NhbnZhcyAmJiB0YXJnZXQuaXNDYW52YXMoKTtcbiAgICBpZiAoIXRoaXMuYWxsb3dEcmFnT25JdGVtICYmICF0YXJnZXRJc0NhbnZhcykgcmV0dXJuO1xuICAgIGUgPSBjbG9uZUV2ZW50KGUpO1xuXG4gICAgaWYgKCF0aGlzLm9yaWdpbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5kcmFnZ2luZykge1xuICAgICAgaWYgKGFicyh0aGlzLm9yaWdpbi54IC0gZS5jbGllbnRYKSArIGFicyh0aGlzLm9yaWdpbi55IC0gZS5jbGllbnRZKSA8IERSQUdfT0ZGU0VUKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuc2hvdWxkQmVnaW4uY2FsbCh0aGlzLCBlKSkge1xuICAgICAgICBlLnR5cGUgPSAnZHJhZ3N0YXJ0JztcbiAgICAgICAgZ3JhcGguZW1pdCgnY2FudmFzOmRyYWdzdGFydCcsIGUpO1xuICAgICAgICB0aGlzLm9yaWdpblBvc2l0aW9uID0ge1xuICAgICAgICAgIHg6IGUuY2xpZW50WCxcbiAgICAgICAgICB5OiBlLmNsaWVudFlcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5kcmFnZ2luZyA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGUudHlwZSA9ICdkcmFnJztcbiAgICAgIGdyYXBoLmVtaXQoJ2NhbnZhczpkcmFnJywgZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2hvdWxkVXBkYXRlLmNhbGwodGhpcywgZSkpIHtcbiAgICAgIHRoaXMudXBkYXRlVmlld3BvcnQoZSk7XG4gICAgfVxuICB9LFxuICBvbk1vdXNlVXA6IGZ1bmN0aW9uIG9uTW91c2VVcChlKSB7XG4gICAgdmFyIF9hLCBfYjtcblxuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgaWYgKHRoaXMua2V5ZG93bikgcmV0dXJuO1xuICAgIHZhciBjdXJyZW50Wm9vbSA9IGdyYXBoLmdldFpvb20oKTtcbiAgICB2YXIgbW9kZUNvbnRyb2xsZXIgPSBncmFwaC5nZXQoJ21vZGVDb250cm9sbGVyJyk7XG4gICAgdmFyIHpvb21DYW52YXMgPSAoX2IgPSAoX2EgPSBtb2RlQ29udHJvbGxlciA9PT0gbnVsbCB8fCBtb2RlQ29udHJvbGxlciA9PT0gdm9pZCAwID8gdm9pZCAwIDogbW9kZUNvbnRyb2xsZXIubW9kZXNbbW9kZUNvbnRyb2xsZXIubW9kZV0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5maWx0ZXIoZnVuY3Rpb24gKGJlaGF2aW9yKSB7XG4gICAgICByZXR1cm4gYmVoYXZpb3IudHlwZSA9PT0gJ3pvb20tY2FudmFzJztcbiAgICB9KSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iWzBdO1xuICAgIHZhciBvcHRpbWl6ZVpvb20gPSB6b29tQ2FudmFzID8gem9vbUNhbnZhcy5vcHRpbWl6ZVpvb20gfHwgMC4xIDogMDtcblxuICAgIGlmICh0aGlzLmVuYWJsZU9wdGltaXplKSB7XG4gICAgICAvLyDmi5bliqjnu5PmnZ/lkI7mmL7npLrmiYDmnInnmoTovrlcbiAgICAgIHZhciBlZGdlcyA9IGdyYXBoLmdldEVkZ2VzKCk7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBlZGdlcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICB2YXIgc2hhcGVzID0gZWRnZXNbaV0uZ2V0KCdncm91cCcpLmdldCgnY2hpbGRyZW4nKTtcbiAgICAgICAgaWYgKCFzaGFwZXMpIGNvbnRpbnVlO1xuICAgICAgICBzaGFwZXMuZm9yRWFjaChmdW5jdGlvbiAoc2hhcGUpIHtcbiAgICAgICAgICB2YXIgb3JpVmlzID0gc2hhcGUuZ2V0KCdvcmktdmlzaWJpbGl0eScpO1xuICAgICAgICAgIGlmIChvcmlWaXMpIHNoYXBlLnNob3coKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChjdXJyZW50Wm9vbSA+IG9wdGltaXplWm9vbSkge1xuICAgICAgICB2YXIgbm9kZXMgPSBncmFwaC5nZXROb2RlcygpO1xuXG4gICAgICAgIGZvciAodmFyIGogPSAwLCBub2RlTGVuID0gbm9kZXMubGVuZ3RoOyBqIDwgbm9kZUxlbjsgaisrKSB7XG4gICAgICAgICAgdmFyIGNvbnRhaW5lciA9IG5vZGVzW2pdLmdldENvbnRhaW5lcigpO1xuICAgICAgICAgIHZhciBjaGlsZHJlbiA9IGNvbnRhaW5lci5nZXQoJ2NoaWxkcmVuJyk7XG5cbiAgICAgICAgICBmb3IgKHZhciBfaSA9IDAsIGNoaWxkcmVuXzIgPSBjaGlsZHJlbjsgX2kgPCBjaGlsZHJlbl8yLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5fMltfaV07XG4gICAgICAgICAgICB2YXIgaXNLZXlTaGFwZSA9IGNoaWxkLmdldCgnaXNLZXlTaGFwZScpO1xuXG4gICAgICAgICAgICBpZiAoIWlzS2V5U2hhcGUpIHtcbiAgICAgICAgICAgICAgdmFyIG9yaVZpcyA9IGNoaWxkLmdldCgnb3JpLXZpc2liaWxpdHknKTtcbiAgICAgICAgICAgICAgaWYgKG9yaVZpcykgY2hpbGQuc2hvdygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghdGhpcy5kcmFnZ2luZykge1xuICAgICAgdGhpcy5vcmlnaW4gPSBudWxsO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGUgPSBjbG9uZUV2ZW50KGUpO1xuXG4gICAgaWYgKHRoaXMuc2hvdWxkRW5kLmNhbGwodGhpcywgZSkpIHtcbiAgICAgIHRoaXMudXBkYXRlVmlld3BvcnQoZSk7XG4gICAgfVxuXG4gICAgZS50eXBlID0gJ2RyYWdlbmQnO1xuICAgIGUuZHggPSBlLmNsaWVudFggLSB0aGlzLm9yaWdpblBvc2l0aW9uLng7XG4gICAgZS5keSA9IGUuY2xpZW50WSAtIHRoaXMub3JpZ2luUG9zaXRpb24ueTtcbiAgICBncmFwaC5lbWl0KCdjYW52YXM6ZHJhZ2VuZCcsIGUpO1xuICAgIHRoaXMuZW5kRHJhZygpO1xuICB9LFxuICBlbmREcmFnOiBmdW5jdGlvbiBlbmREcmFnKCkge1xuICAgIHRoaXMub3JpZ2luID0gbnVsbDtcbiAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XG4gICAgdGhpcy5kcmFnYmVnaW4gPSBmYWxzZTtcbiAgfSxcbiAgb25LZXlEb3duOiBmdW5jdGlvbiBvbktleURvd24oZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgY29kZSA9IGUua2V5O1xuXG4gICAgaWYgKCFjb2RlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKEFMTE9XX0VWRU5UUy5pbmRleE9mKGNvZGUudG9Mb3dlckNhc2UoKSkgPiAtMSkge1xuICAgICAgc2VsZi5rZXlkb3duID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VsZi5rZXlkb3duID0gZmFsc2U7XG4gICAgfVxuICB9LFxuICBvbktleVVwOiBmdW5jdGlvbiBvbktleVVwKCkge1xuICAgIHRoaXMua2V5ZG93biA9IGZhbHNlO1xuICAgIHRoaXMub3JpZ2luID0gbnVsbDtcbiAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XG4gICAgdGhpcy5kcmFnYmVnaW4gPSBmYWxzZTtcbiAgfVxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/drag-canvas.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/drag-combo.js":
/*!*******************************************************************************!*\
!*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/drag-combo.js ***!
\*******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/util/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../global */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/global.js\");\n\n/*\n * @Author: moyee\n * @LastEditors: moyee\n * @Description: 拖动 Combo\n */\n\n\n\n\nvar calculationItemsBBox = _util__WEBPACK_IMPORTED_MODULE_2__[\"default\"].calculationItemsBBox;\n/**\n * 遍历拖动的 Combo 下的所有 Combo\n * @param data 拖动的 Combo\n * @param fn\n */\n\nvar traverseCombo = function traverseCombo(data, fn) {\n if (fn(data) === false) {\n return;\n }\n\n if (data) {\n var combos = data.get('combos');\n\n if (combos.length === 0) {\n return false;\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(combos, function (child) {\n traverseCombo(child, fn);\n });\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n enableDelegate: false,\n delegateStyle: {},\n // 拖动节点过程中是否只改变 Combo 的大小,而不改变其结构\n onlyChangeComboSize: false,\n // 拖动过程中目标 combo 状态样式\n activeState: '',\n selectedState: 'selected'\n };\n },\n getEvents: function getEvents() {\n return {\n 'combo:dragstart': 'onDragStart',\n 'combo:drag': 'onDrag',\n 'combo:dragend': 'onDragEnd',\n 'combo:drop': 'onDrop',\n 'node:drop': 'onNodeDrop',\n 'combo:dragenter': 'onDragEnter',\n 'combo:dragleave': 'onDragLeave'\n };\n },\n validationCombo: function validationCombo(evt) {\n var item = evt.item;\n\n if (!item || item.destroyed) {\n return false;\n }\n\n if (!this.shouldUpdate.call(this, evt)) {\n return false;\n }\n\n var type = item.getType();\n\n if (type !== 'combo') {\n return false;\n }\n\n return true;\n },\n onDragStart: function onDragStart(evt) {\n var _this = this;\n\n var graph = this.graph;\n var item = evt.item;\n this.currentShouldEnd = true;\n if (!this.validationCombo(evt)) return;\n this.targets = []; // 获取所有选中的 Combo\n\n var combos = graph.findAllByState('combo', this.selectedState);\n var currentCombo = item.get('id');\n var dragCombos = combos.filter(function (combo) {\n var comboId = combo.get('id');\n return currentCombo === comboId;\n });\n\n if (dragCombos.length === 0) {\n this.targets.push(item);\n } else {\n this.targets = combos;\n }\n\n if (this.activeState) {\n this.targets.map(function (combo) {\n var model = combo.getModel();\n\n if (model.parentId) {\n var parentCombo = graph.findById(model.parentId);\n\n if (parentCombo) {\n graph.setItemState(parentCombo, _this.activeState, true);\n }\n }\n });\n }\n\n this.point = {};\n this.originPoint = {};\n this.origin = {\n x: evt.x,\n y: evt.y\n };\n this.currentItemChildCombos = [];\n traverseCombo(item, function (param) {\n if (param.destroyed) {\n return false;\n }\n\n var model = param.getModel();\n\n _this.currentItemChildCombos.push(model.id);\n\n return true;\n });\n },\n onDrag: function onDrag(evt) {\n var _this = this;\n\n if (!this.origin) {\n return;\n }\n\n if (!this.validationCombo(evt)) return;\n\n if (this.enableDelegate) {\n this.updateDelegate(evt);\n } else {\n if (this.activeState) {\n var graph_1 = this.graph;\n var item = evt.item;\n var model_1 = item.getModel(); // 拖动过程中实时计算距离\n\n var combos = graph_1.getCombos();\n var sourceBBox = item.getBBox();\n var centerX_1 = sourceBBox.centerX,\n centerY_1 = sourceBBox.centerY,\n width_1 = sourceBBox.width; // 参与计算的 Combo,需要排除掉:\n // 1、拖动 combo 自己\n // 2、拖动 combo 的 parent\n // 3、拖动 Combo 的 children\n\n var calcCombos = combos.filter(function (combo) {\n var cmodel = combo.getModel(); // 被拖动的是最外层的 Combo,无 parent,排除自身和子元素\n\n if (!model_1.parentId) {\n return cmodel.id !== model_1.id && !_this.currentItemChildCombos.includes(cmodel.id);\n }\n\n return cmodel.id !== model_1.id && !_this.currentItemChildCombos.includes(cmodel.id);\n });\n calcCombos.map(function (combo) {\n var _a = combo.getBBox(),\n cx = _a.centerX,\n cy = _a.centerY,\n w = _a.width; // 拖动的 combo 和要进入的 combo 之间的距离\n\n\n var disX = centerX_1 - cx;\n var disY = centerY_1 - cy; // 圆心距离\n\n var distance = 2 * Math.sqrt(disX * disX + disY * disY);\n\n if (width_1 + w - distance > 0.8 * width_1) {\n graph_1.setItemState(combo, _this.activeState, true);\n } else {\n graph_1.setItemState(combo, _this.activeState, false);\n }\n });\n }\n\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(this.targets, function (item) {\n _this.updateCombo(item, evt);\n });\n }\n },\n updatePositions: function updatePositions(evt, restore) {\n var _this = this; // 当启用 delegate 时,拖动结束时需要更新 combo\n\n\n if (this.enableDelegate || restore) {\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(this.targets, function (item) {\n _this.updateCombo(item, evt, restore);\n });\n }\n },\n onDrop: function onDrop(evt) {\n var _this = this; // 被放下的目标 combo\n\n\n var item = evt.item;\n this.currentShouldEnd = this.shouldEnd.call(this, evt, item);\n this.updatePositions(evt, !this.currentShouldEnd);\n if (!this.currentShouldEnd || !item || !this.targets || item.destroyed) return;\n var graph = this.graph;\n var targetModel = item.getModel();\n this.targets.map(function (combo) {\n var model = combo.getModel();\n\n if (model.parentId !== targetModel.id) {\n if (_this.activeState) {\n graph.setItemState(item, _this.activeState, false);\n } // 将 Combo 放置到某个 Combo 上面时,只有当 onlyChangeComboSize 为 false 时候才更新 Combo 结构\n\n\n if (!_this.onlyChangeComboSize) {\n graph.updateComboTree(combo, targetModel.id);\n } else {\n graph.updateCombo(combo);\n }\n } else {\n graph.updateCombo(item);\n }\n });\n this.end(item, evt); // 如果已经拖放下了,则不需要再通过距离判断了\n\n this.endComparison = true;\n },\n onNodeDrop: function onNodeDrop(evt) {\n var _this = this;\n\n if (!this.targets || this.targets.length === 0) return;\n var graph = this.graph;\n var item = evt.item;\n var comboId = item.getModel().comboId;\n var newParentCombo = comboId ? graph.findById(comboId) : undefined;\n this.currentShouldEnd = this.shouldEnd.call(this, evt, newParentCombo);\n this.updatePositions(evt, !this.currentShouldEnd);\n if (!this.currentShouldEnd) return;\n var droppedCombo; // 如果被放置的的节点有 comboId,且这个 comboId 与正在被拖拽的 combo 的父 id 不相同,则更新父亲为 comboId\n\n if (comboId) {\n if (this.activeState) {\n var combo = graph.findById(comboId);\n graph.setItemState(combo, this.activeState, false);\n }\n\n this.targets.map(function (combo) {\n if (!_this.onlyChangeComboSize) {\n if (comboId !== combo.getID()) {\n droppedCombo = graph.findById(comboId);\n if (comboId !== combo.getModel().parentId) graph.updateComboTree(combo, comboId);\n }\n } else {\n graph.updateCombo(combo);\n }\n });\n } else {\n // 如果被放置的节点没有 comboId,且正在被拖拽的 combo 有父 id,则更新父亲为 undefined\n this.targets.map(function (combo) {\n if (!_this.onlyChangeComboSize) {\n var model = combo.getModel();\n\n if (model.comboId) {\n graph.updateComboTree(combo);\n }\n } else {\n graph.updateCombo(combo);\n }\n });\n } // 如果已经拖放下了,则不需要再通过距离判断了\n\n\n this.endComparison = true;\n this.end(droppedCombo, evt);\n },\n onDragEnter: function onDragEnter(evt) {\n if (!this.origin) {\n return;\n }\n\n if (!this.validationCombo(evt)) return;\n var item = evt.item;\n var graph = this.graph;\n\n if (this.activeState) {\n graph.setItemState(item, this.activeState, true);\n }\n },\n onDragLeave: function onDragLeave(evt) {\n if (!this.origin) {\n return;\n }\n\n if (!this.validationCombo(evt)) return;\n var item = evt.item;\n var graph = this.graph;\n\n if (this.activeState) {\n graph.setItemState(item, this.activeState, false);\n }\n },\n onDragEnd: function onDragEnd(evt) {\n if (!this.targets || this.targets.length === 0) return;\n var item = evt.item;\n\n if (this.currentShouldEnd) {\n this.updatePositions(evt);\n }\n\n var parentCombo = this.getParentCombo(item.getModel().parentId);\n var graph = this.graph;\n\n if (parentCombo && this.activeState) {\n graph.setItemState(parentCombo, this.activeState, false);\n }\n\n this.end(undefined, evt);\n },\n end: function end(comboDropedOn, evt) {\n var _this = this;\n\n if (!this.origin) return;\n var graph = this.graph; // 删除delegate shape\n\n if (this.delegateShape) {\n var delegateGroup = graph.get('delegateGroup');\n delegateGroup.clear();\n this.delegateShape = null;\n }\n\n if (comboDropedOn && this.activeState) {\n graph.setItemState(comboDropedOn, this.activeState, false);\n } // 若没有被放置的 combo,则是被放置在画布上\n\n\n if (!comboDropedOn) {\n this.targets.map(function (combo) {\n // 将 Combo 放置到某个 Combo 上面时,只有当 onlyChangeComboSize 为 false 时候才更新 Combo 结构\n if (!_this.onlyChangeComboSize) {\n graph.updateComboTree(combo);\n } else {\n graph.updateCombo(combo);\n }\n });\n }\n\n this.point = [];\n this.origin = null;\n this.originPoint = null;\n this.targets.length = 0;\n },\n\n /**\n * 遍历 comboTree,分别更新 node 和 combo\n * @param data\n * @param fn\n */\n traverse: function traverse(data, fn) {\n var _this = this;\n\n if (fn(data) === false) {\n return;\n }\n\n if (data) {\n var combos = data.get('combos');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(combos, function (child) {\n _this.traverse(child, fn);\n });\n var nodes = data.get('nodes');\n Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"each\"])(nodes, function (child) {\n _this.traverse(child, fn);\n });\n }\n },\n updateCombo: function updateCombo(item, evt, restore) {\n var _this = this;\n\n this.traverse(item, function (param) {\n if (param.destroyed) {\n return false;\n }\n\n _this.updateSignleItem(param, evt, restore);\n\n return true;\n });\n },\n\n /**\n *\n * @param item 当前正在拖动的元素\n * @param evt\n */\n updateSignleItem: function updateSignleItem(item, evt, restore) {\n var origin = this.origin;\n var graph = this.graph;\n var model = item.getModel();\n var itemId = item.get('id');\n\n if (!this.point[itemId]) {\n this.point[itemId] = {\n x: model.x,\n y: model.y\n };\n }\n\n var x = evt.x - origin.x + this.point[itemId].x;\n var y = evt.y - origin.y + this.point[itemId].y;\n\n if (restore) {\n x += origin.x - evt.x;\n y += origin.y - evt.y;\n }\n\n graph.updateItem(item, {\n x: x,\n y: y\n });\n },\n\n /**\n * 根据 ID 获取父 Combo\n * @param parentId 父 Combo ID\n */\n getParentCombo: function getParentCombo(parentId) {\n var graph = this.graph;\n\n if (!parentId) {\n return undefined;\n }\n\n var parentCombo = graph.findById(parentId);\n\n if (!parentCombo) {\n return undefined;\n }\n\n return parentCombo;\n },\n updateDelegate: function updateDelegate(evt) {\n var graph = this.graph; // 当没有 delegate shape 时创建\n\n if (!this.delegateShape) {\n var delegateGroup = graph.get('delegateGroup');\n var bbox = null;\n\n if (this.targets.length > 1) {\n bbox = calculationItemsBBox(this.targets);\n } else {\n bbox = this.targets[0].getBBox();\n }\n\n var x = bbox.x,\n y = bbox.y,\n width = bbox.width,\n height = bbox.height,\n minX = bbox.minX,\n minY = bbox.minY;\n this.originPoint = {\n x: x,\n y: y,\n width: width,\n height: height,\n minX: minX,\n minY: minY\n };\n\n var attrs = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({}, _global__WEBPACK_IMPORTED_MODULE_3__[\"default\"].delegateStyle), this.delegateStyle);\n\n this.delegateShape = delegateGroup.addShape('rect', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n width: bbox.width,\n height: bbox.height,\n x: bbox.x,\n y: bbox.y\n }, attrs),\n name: 'combo-delegate-shape'\n });\n this.delegateShape.set('capture', false);\n this.delegate = this.delegateShape;\n } else {\n var clientX = evt.x - this.origin.x + this.originPoint.minX;\n var clientY = evt.y - this.origin.y + this.originPoint.minY;\n this.delegateShape.attr({\n x: clientX,\n y: clientY\n });\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL2RyYWctY29tYm8uanM/NzQxYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWtDO0FBQ1A7QUFDSTtBQUMvQiwyQkFBMkIsNkNBQUk7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJLHVEQUFJO0FBQ1I7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFZTtBQUNmO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCOztBQUV0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0M7O0FBRXRDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDO0FBQ3ZDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHdDQUF3Qzs7QUFFeEM7QUFDQTtBQUNBOztBQUVBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCOzs7QUFHM0I7QUFDQSxvQ0FBb0M7O0FBRXBDOztBQUVBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQSxNQUFNLHVEQUFJO0FBQ1Y7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQSxxQkFBcUI7OztBQUdyQjtBQUNBLE1BQU0sdURBQUk7QUFDVjtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBLHFCQUFxQjs7O0FBR3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7O0FBR1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsd0JBQXdCOztBQUV4QjtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7O0FBRXJCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7OztBQUdMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBLDJCQUEyQjs7QUFFM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU0sdURBQUk7QUFDVjtBQUNBLE9BQU87QUFDUDtBQUNBLE1BQU0sdURBQUk7QUFDVjtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQSwyQkFBMkI7O0FBRTNCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0Isc0RBQVEsQ0FBQyxzREFBUSxHQUFHLEVBQUUsK0NBQU07O0FBRTlDO0FBQ0EsZUFBZSxzREFBUTtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL2RyYWctY29tYm8uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuLypcbiAqIEBBdXRob3I6IG1veWVlXG4gKiBATGFzdEVkaXRvcnM6IG1veWVlXG4gKiBARGVzY3JpcHRpb246IOaLluWKqCBDb21ib1xuICovXG5cbmltcG9ydCB7IGVhY2ggfSBmcm9tICdAYW50di91dGlsJztcbmltcG9ydCBVdGlsIGZyb20gJy4uL3V0aWwnO1xuaW1wb3J0IEdsb2JhbCBmcm9tICcuLi9nbG9iYWwnO1xudmFyIGNhbGN1bGF0aW9uSXRlbXNCQm94ID0gVXRpbC5jYWxjdWxhdGlvbkl0ZW1zQkJveDtcbi8qKlxuICog6YGN5Y6G5ouW5Yqo55qEIENvbWJvIOS4i+eahOaJgOaciSBDb21ib1xuICogQHBhcmFtIGRhdGEg5ouW5Yqo55qEIENvbWJvXG4gKiBAcGFyYW0gZm5cbiAqL1xuXG52YXIgdHJhdmVyc2VDb21ibyA9IGZ1bmN0aW9uIHRyYXZlcnNlQ29tYm8oZGF0YSwgZm4pIHtcbiAgaWYgKGZuKGRhdGEpID09PSBmYWxzZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChkYXRhKSB7XG4gICAgdmFyIGNvbWJvcyA9IGRhdGEuZ2V0KCdjb21ib3MnKTtcblxuICAgIGlmIChjb21ib3MubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZWFjaChjb21ib3MsIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgdHJhdmVyc2VDb21ibyhjaGlsZCwgZm4pO1xuICAgIH0pO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGdldERlZmF1bHRDZmc6IGZ1bmN0aW9uIGdldERlZmF1bHRDZmcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVuYWJsZURlbGVnYXRlOiBmYWxzZSxcbiAgICAgIGRlbGVnYXRlU3R5bGU6IHt9LFxuICAgICAgLy8g5ouW5Yqo6IqC54K56L+H56iL5Lit5piv5ZCm5Y+q5pS55Y+YIENvbWJvIOeahOWkp+Wwj++8jOiAjOS4jeaUueWPmOWFtue7k+aehFxuICAgICAgb25seUNoYW5nZUNvbWJvU2l6ZTogZmFsc2UsXG4gICAgICAvLyDmi5bliqjov4fnqIvkuK3nm67moIcgY29tYm8g54q25oCB5qC35byPXG4gICAgICBhY3RpdmVTdGF0ZTogJycsXG4gICAgICBzZWxlY3RlZFN0YXRlOiAnc2VsZWN0ZWQnXG4gICAgfTtcbiAgfSxcbiAgZ2V0RXZlbnRzOiBmdW5jdGlvbiBnZXRFdmVudHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdjb21ibzpkcmFnc3RhcnQnOiAnb25EcmFnU3RhcnQnLFxuICAgICAgJ2NvbWJvOmRyYWcnOiAnb25EcmFnJyxcbiAgICAgICdjb21ibzpkcmFnZW5kJzogJ29uRHJhZ0VuZCcsXG4gICAgICAnY29tYm86ZHJvcCc6ICdvbkRyb3AnLFxuICAgICAgJ25vZGU6ZHJvcCc6ICdvbk5vZGVEcm9wJyxcbiAgICAgICdjb21ibzpkcmFnZW50ZXInOiAnb25EcmFnRW50ZXInLFxuICAgICAgJ2NvbWJvOmRyYWdsZWF2ZSc6ICdvbkRyYWdMZWF2ZSdcbiAgICB9O1xuICB9LFxuICB2YWxpZGF0aW9uQ29tYm86IGZ1bmN0aW9uIHZhbGlkYXRpb25Db21ibyhldnQpIHtcbiAgICB2YXIgaXRlbSA9IGV2dC5pdGVtO1xuXG4gICAgaWYgKCFpdGVtIHx8IGl0ZW0uZGVzdHJveWVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnNob3VsZFVwZGF0ZS5jYWxsKHRoaXMsIGV2dCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIgdHlwZSA9IGl0ZW0uZ2V0VHlwZSgpO1xuXG4gICAgaWYgKHR5cGUgIT09ICdjb21ibycpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcbiAgb25EcmFnU3RhcnQ6IGZ1bmN0aW9uIG9uRHJhZ1N0YXJ0KGV2dCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIHZhciBpdGVtID0gZXZ0Lml0ZW07XG4gICAgdGhpcy5jdXJyZW50U2hvdWxkRW5kID0gdHJ1ZTtcbiAgICBpZiAoIXRoaXMudmFsaWRhdGlvbkNvbWJvKGV2dCkpIHJldHVybjtcbiAgICB0aGlzLnRhcmdldHMgPSBbXTsgLy8g6I635Y+W5omA5pyJ6YCJ5Lit55qEIENvbWJvXG5cbiAgICB2YXIgY29tYm9zID0gZ3JhcGguZmluZEFsbEJ5U3RhdGUoJ2NvbWJvJywgdGhpcy5zZWxlY3RlZFN0YXRlKTtcbiAgICB2YXIgY3VycmVudENvbWJvID0gaXRlbS5nZXQoJ2lkJyk7XG4gICAgdmFyIGRyYWdDb21ib3MgPSBjb21ib3MuZmlsdGVyKGZ1bmN0aW9uIChjb21ibykge1xuICAgICAgdmFyIGNvbWJvSWQgPSBjb21iby5nZXQoJ2lkJyk7XG4gICAgICByZXR1cm4gY3VycmVudENvbWJvID09PSBjb21ib0lkO1xuICAgIH0pO1xuXG4gICAgaWYgKGRyYWdDb21ib3MubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLnRhcmdldHMucHVzaChpdGVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50YXJnZXRzID0gY29tYm9zO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFjdGl2ZVN0YXRlKSB7XG4gICAgICB0aGlzLnRhcmdldHMubWFwKGZ1bmN0aW9uIChjb21ibykge1xuICAgICAgICB2YXIgbW9kZWwgPSBjb21iby5nZXRNb2RlbCgpO1xuXG4gICAgICAgIGlmIChtb2RlbC5wYXJlbnRJZCkge1xuICAgICAgICAgIHZhciBwYXJlbnRDb21ibyA9IGdyYXBoLmZpbmRCeUlkKG1vZGVsLnBhcmVudElkKTtcblxuICAgICAgICAgIGlmIChwYXJlbnRDb21ibykge1xuICAgICAgICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKHBhcmVudENvbWJvLCBfdGhpcy5hY3RpdmVTdGF0ZSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnBvaW50ID0ge307XG4gICAgdGhpcy5vcmlnaW5Qb2ludCA9IHt9O1xuICAgIHRoaXMub3JpZ2luID0ge1xuICAgICAgeDogZXZ0LngsXG4gICAgICB5OiBldnQueVxuICAgIH07XG4gICAgdGhpcy5jdXJyZW50SXRlbUNoaWxkQ29tYm9zID0gW107XG4gICAgdHJhdmVyc2VDb21ibyhpdGVtLCBmdW5jdGlvbiAocGFyYW0pIHtcbiAgICAgIGlmIChwYXJhbS5kZXN0cm95ZWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICB2YXIgbW9kZWwgPSBwYXJhbS5nZXRNb2RlbCgpO1xuXG4gICAgICBfdGhpcy5jdXJyZW50SXRlbUNoaWxkQ29tYm9zLnB1c2gobW9kZWwuaWQpO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgfSxcbiAgb25EcmFnOiBmdW5jdGlvbiBvbkRyYWcoZXZ0KSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIGlmICghdGhpcy5vcmlnaW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMudmFsaWRhdGlvbkNvbWJvKGV2dCkpIHJldHVybjtcblxuICAgIGlmICh0aGlzLmVuYWJsZURlbGVnYXRlKSB7XG4gICAgICB0aGlzLnVwZGF0ZURlbGVnYXRlKGV2dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmFjdGl2ZVN0YXRlKSB7XG4gICAgICAgIHZhciBncmFwaF8xID0gdGhpcy5ncmFwaDtcbiAgICAgICAgdmFyIGl0ZW0gPSBldnQuaXRlbTtcbiAgICAgICAgdmFyIG1vZGVsXzEgPSBpdGVtLmdldE1vZGVsKCk7IC8vIOaLluWKqOi/h+eoi+S4reWunuaXtuiuoeeul+i3neemu1xuXG4gICAgICAgIHZhciBjb21ib3MgPSBncmFwaF8xLmdldENvbWJvcygpO1xuICAgICAgICB2YXIgc291cmNlQkJveCA9IGl0ZW0uZ2V0QkJveCgpO1xuICAgICAgICB2YXIgY2VudGVyWF8xID0gc291cmNlQkJveC5jZW50ZXJYLFxuICAgICAgICAgICAgY2VudGVyWV8xID0gc291cmNlQkJveC5jZW50ZXJZLFxuICAgICAgICAgICAgd2lkdGhfMSA9IHNvdXJjZUJCb3gud2lkdGg7IC8vIOWPguS4juiuoeeul+eahCBDb21ib++8jOmcgOimgeaOkumZpOaOie+8mlxuICAgICAgICAvLyAx44CB5ouW5YqoIGNvbWJvIOiHquW3sVxuICAgICAgICAvLyAy44CB5ouW5YqoIGNvbWJvIOeahCBwYXJlbnRcbiAgICAgICAgLy8gM+OAgeaLluWKqCBDb21ibyDnmoQgY2hpbGRyZW5cblxuICAgICAgICB2YXIgY2FsY0NvbWJvcyA9IGNvbWJvcy5maWx0ZXIoZnVuY3Rpb24gKGNvbWJvKSB7XG4gICAgICAgICAgdmFyIGNtb2RlbCA9IGNvbWJvLmdldE1vZGVsKCk7IC8vIOiiq+aLluWKqOeahOaYr+acgOWkluWxgueahCBDb21ib++8jOaXoCBwYXJlbnTvvIzmjpLpmaToh6rouqvlkozlrZDlhYPntKBcblxuICAgICAgICAgIGlmICghbW9kZWxfMS5wYXJlbnRJZCkge1xuICAgICAgICAgICAgcmV0dXJuIGNtb2RlbC5pZCAhPT0gbW9kZWxfMS5pZCAmJiAhX3RoaXMuY3VycmVudEl0ZW1DaGlsZENvbWJvcy5pbmNsdWRlcyhjbW9kZWwuaWQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjbW9kZWwuaWQgIT09IG1vZGVsXzEuaWQgJiYgIV90aGlzLmN1cnJlbnRJdGVtQ2hpbGRDb21ib3MuaW5jbHVkZXMoY21vZGVsLmlkKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNhbGNDb21ib3MubWFwKGZ1bmN0aW9uIChjb21ibykge1xuICAgICAgICAgIHZhciBfYSA9IGNvbWJvLmdldEJCb3goKSxcbiAgICAgICAgICAgICAgY3ggPSBfYS5jZW50ZXJYLFxuICAgICAgICAgICAgICBjeSA9IF9hLmNlbnRlclksXG4gICAgICAgICAgICAgIHcgPSBfYS53aWR0aDsgLy8g5ouW5Yqo55qEIGNvbWJvIOWSjOimgei/m+WFpeeahCBjb21ibyDkuYvpl7TnmoTot53nprtcblxuXG4gICAgICAgICAgdmFyIGRpc1ggPSBjZW50ZXJYXzEgLSBjeDtcbiAgICAgICAgICB2YXIgZGlzWSA9IGNlbnRlcllfMSAtIGN5OyAvLyDlnIblv4Pot53nprtcblxuICAgICAgICAgIHZhciBkaXN0YW5jZSA9IDIgKiBNYXRoLnNxcnQoZGlzWCAqIGRpc1ggKyBkaXNZICogZGlzWSk7XG5cbiAgICAgICAgICBpZiAod2lkdGhfMSArIHcgLSBkaXN0YW5jZSA+IDAuOCAqIHdpZHRoXzEpIHtcbiAgICAgICAgICAgIGdyYXBoXzEuc2V0SXRlbVN0YXRlKGNvbWJvLCBfdGhpcy5hY3RpdmVTdGF0ZSwgdHJ1ZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGdyYXBoXzEuc2V0SXRlbVN0YXRlKGNvbWJvLCBfdGhpcy5hY3RpdmVTdGF0ZSwgZmFsc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGVhY2godGhpcy50YXJnZXRzLCBmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICBfdGhpcy51cGRhdGVDb21ibyhpdGVtLCBldnQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICB1cGRhdGVQb3NpdGlvbnM6IGZ1bmN0aW9uIHVwZGF0ZVBvc2l0aW9ucyhldnQsIHJlc3RvcmUpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzOyAvLyDlvZPlkK/nlKggZGVsZWdhdGUg5pe277yM5ouW5Yqo57uT5p2f5pe26ZyA6KaB5pu05pawIGNvbWJvXG5cblxuICAgIGlmICh0aGlzLmVuYWJsZURlbGVnYXRlIHx8IHJlc3RvcmUpIHtcbiAgICAgIGVhY2godGhpcy50YXJnZXRzLCBmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICBfdGhpcy51cGRhdGVDb21ibyhpdGVtLCBldnQsIHJlc3RvcmUpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICBvbkRyb3A6IGZ1bmN0aW9uIG9uRHJvcChldnQpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzOyAvLyDooqvmlL7kuIvnmoTnm67moIcgY29tYm9cblxuXG4gICAgdmFyIGl0ZW0gPSBldnQuaXRlbTtcbiAgICB0aGlzLmN1cnJlbnRTaG91bGRFbmQgPSB0aGlzLnNob3VsZEVuZC5jYWxsKHRoaXMsIGV2dCwgaXRlbSk7XG4gICAgdGhpcy51cGRhdGVQb3NpdGlvbnMoZXZ0LCAhdGhpcy5jdXJyZW50U2hvdWxkRW5kKTtcbiAgICBpZiAoIXRoaXMuY3VycmVudFNob3VsZEVuZCB8fCAhaXRlbSB8fCAhdGhpcy50YXJnZXRzIHx8IGl0ZW0uZGVzdHJveWVkKSByZXR1cm47XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcbiAgICB2YXIgdGFyZ2V0TW9kZWwgPSBpdGVtLmdldE1vZGVsKCk7XG4gICAgdGhpcy50YXJnZXRzLm1hcChmdW5jdGlvbiAoY29tYm8pIHtcbiAgICAgIHZhciBtb2RlbCA9IGNvbWJvLmdldE1vZGVsKCk7XG5cbiAgICAgIGlmIChtb2RlbC5wYXJlbnRJZCAhPT0gdGFyZ2V0TW9kZWwuaWQpIHtcbiAgICAgICAgaWYgKF90aGlzLmFjdGl2ZVN0YXRlKSB7XG4gICAgICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKGl0ZW0sIF90aGlzLmFjdGl2ZVN0YXRlLCBmYWxzZSk7XG4gICAgICAgIH0gLy8g5bCGIENvbWJvIOaUvue9ruWIsOafkOS4qiBDb21ibyDkuIrpnaLml7bvvIzlj6rmnInlvZMgb25seUNoYW5nZUNvbWJvU2l6ZSDkuLogZmFsc2Ug5pe25YCZ5omN5pu05pawIENvbWJvIOe7k+aehFxuXG5cbiAgICAgICAgaWYgKCFfdGhpcy5vbmx5Q2hhbmdlQ29tYm9TaXplKSB7XG4gICAgICAgICAgZ3JhcGgudXBkYXRlQ29tYm9UcmVlKGNvbWJvLCB0YXJnZXRNb2RlbC5pZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZ3JhcGgudXBkYXRlQ29tYm8oY29tYm8pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBncmFwaC51cGRhdGVDb21ibyhpdGVtKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmVuZChpdGVtLCBldnQpOyAvLyDlpoLmnpzlt7Lnu4/mi5bmlL7kuIvkuobvvIzliJnkuI3pnIDopoHlho3pgJrov4fot53nprvliKTmlq3kuoZcblxuICAgIHRoaXMuZW5kQ29tcGFyaXNvbiA9IHRydWU7XG4gIH0sXG4gIG9uTm9kZURyb3A6IGZ1bmN0aW9uIG9uTm9kZURyb3AoZXZ0KSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIGlmICghdGhpcy50YXJnZXRzIHx8IHRoaXMudGFyZ2V0cy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIHZhciBpdGVtID0gZXZ0Lml0ZW07XG4gICAgdmFyIGNvbWJvSWQgPSBpdGVtLmdldE1vZGVsKCkuY29tYm9JZDtcbiAgICB2YXIgbmV3UGFyZW50Q29tYm8gPSBjb21ib0lkID8gZ3JhcGguZmluZEJ5SWQoY29tYm9JZCkgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5jdXJyZW50U2hvdWxkRW5kID0gdGhpcy5zaG91bGRFbmQuY2FsbCh0aGlzLCBldnQsIG5ld1BhcmVudENvbWJvKTtcbiAgICB0aGlzLnVwZGF0ZVBvc2l0aW9ucyhldnQsICF0aGlzLmN1cnJlbnRTaG91bGRFbmQpO1xuICAgIGlmICghdGhpcy5jdXJyZW50U2hvdWxkRW5kKSByZXR1cm47XG4gICAgdmFyIGRyb3BwZWRDb21ibzsgLy8g5aaC5p6c6KKr5pS+572u55qE55qE6IqC54K55pyJIGNvbWJvSWTvvIzkuJTov5nkuKogY29tYm9JZCDkuI7mraPlnKjooqvmi5bmi73nmoQgY29tYm8g55qE54i2IGlkIOS4jeebuOWQjO+8jOWImeabtOaWsOeItuS6suS4uiBjb21ib0lkXG5cbiAgICBpZiAoY29tYm9JZCkge1xuICAgICAgaWYgKHRoaXMuYWN0aXZlU3RhdGUpIHtcbiAgICAgICAgdmFyIGNvbWJvID0gZ3JhcGguZmluZEJ5SWQoY29tYm9JZCk7XG4gICAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShjb21ibywgdGhpcy5hY3RpdmVTdGF0ZSwgZmFsc2UpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnRhcmdldHMubWFwKGZ1bmN0aW9uIChjb21ibykge1xuICAgICAgICBpZiAoIV90aGlzLm9ubHlDaGFuZ2VDb21ib1NpemUpIHtcbiAgICAgICAgICBpZiAoY29tYm9JZCAhPT0gY29tYm8uZ2V0SUQoKSkge1xuICAgICAgICAgICAgZHJvcHBlZENvbWJvID0gZ3JhcGguZmluZEJ5SWQoY29tYm9JZCk7XG4gICAgICAgICAgICBpZiAoY29tYm9JZCAhPT0gY29tYm8uZ2V0TW9kZWwoKS5wYXJlbnRJZCkgZ3JhcGgudXBkYXRlQ29tYm9UcmVlKGNvbWJvLCBjb21ib0lkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZ3JhcGgudXBkYXRlQ29tYm8oY29tYm8pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8g5aaC5p6c6KKr5pS+572u55qE6IqC54K55rKh5pyJIGNvbWJvSWTvvIzkuJTmraPlnKjooqvmi5bmi73nmoQgY29tYm8g5pyJ54i2IGlk77yM5YiZ5pu05paw54i25Lqy5Li6IHVuZGVmaW5lZFxuICAgICAgdGhpcy50YXJnZXRzLm1hcChmdW5jdGlvbiAoY29tYm8pIHtcbiAgICAgICAgaWYgKCFfdGhpcy5vbmx5Q2hhbmdlQ29tYm9TaXplKSB7XG4gICAgICAgICAgdmFyIG1vZGVsID0gY29tYm8uZ2V0TW9kZWwoKTtcblxuICAgICAgICAgIGlmIChtb2RlbC5jb21ib0lkKSB7XG4gICAgICAgICAgICBncmFwaC51cGRhdGVDb21ib1RyZWUoY29tYm8pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBncmFwaC51cGRhdGVDb21ibyhjb21ibyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gLy8g5aaC5p6c5bey57uP5ouW5pS+5LiL5LqG77yM5YiZ5LiN6ZyA6KaB5YaN6YCa6L+H6Led56a75Yik5pat5LqGXG5cblxuICAgIHRoaXMuZW5kQ29tcGFyaXNvbiA9IHRydWU7XG4gICAgdGhpcy5lbmQoZHJvcHBlZENvbWJvLCBldnQpO1xuICB9LFxuICBvbkRyYWdFbnRlcjogZnVuY3Rpb24gb25EcmFnRW50ZXIoZXZ0KSB7XG4gICAgaWYgKCF0aGlzLm9yaWdpbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy52YWxpZGF0aW9uQ29tYm8oZXZ0KSkgcmV0dXJuO1xuICAgIHZhciBpdGVtID0gZXZ0Lml0ZW07XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcblxuICAgIGlmICh0aGlzLmFjdGl2ZVN0YXRlKSB7XG4gICAgICBncmFwaC5zZXRJdGVtU3RhdGUoaXRlbSwgdGhpcy5hY3RpdmVTdGF0ZSwgdHJ1ZSk7XG4gICAgfVxuICB9LFxuICBvbkRyYWdMZWF2ZTogZnVuY3Rpb24gb25EcmFnTGVhdmUoZXZ0KSB7XG4gICAgaWYgKCF0aGlzLm9yaWdpbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy52YWxpZGF0aW9uQ29tYm8oZXZ0KSkgcmV0dXJuO1xuICAgIHZhciBpdGVtID0gZXZ0Lml0ZW07XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcblxuICAgIGlmICh0aGlzLmFjdGl2ZVN0YXRlKSB7XG4gICAgICBncmFwaC5zZXRJdGVtU3RhdGUoaXRlbSwgdGhpcy5hY3RpdmVTdGF0ZSwgZmFsc2UpO1xuICAgIH1cbiAgfSxcbiAgb25EcmFnRW5kOiBmdW5jdGlvbiBvbkRyYWdFbmQoZXZ0KSB7XG4gICAgaWYgKCF0aGlzLnRhcmdldHMgfHwgdGhpcy50YXJnZXRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIHZhciBpdGVtID0gZXZ0Lml0ZW07XG5cbiAgICBpZiAodGhpcy5jdXJyZW50U2hvdWxkRW5kKSB7XG4gICAgICB0aGlzLnVwZGF0ZVBvc2l0aW9ucyhldnQpO1xuICAgIH1cblxuICAgIHZhciBwYXJlbnRDb21ibyA9IHRoaXMuZ2V0UGFyZW50Q29tYm8oaXRlbS5nZXRNb2RlbCgpLnBhcmVudElkKTtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuXG4gICAgaWYgKHBhcmVudENvbWJvICYmIHRoaXMuYWN0aXZlU3RhdGUpIHtcbiAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShwYXJlbnRDb21ibywgdGhpcy5hY3RpdmVTdGF0ZSwgZmFsc2UpO1xuICAgIH1cblxuICAgIHRoaXMuZW5kKHVuZGVmaW5lZCwgZXZ0KTtcbiAgfSxcbiAgZW5kOiBmdW5jdGlvbiBlbmQoY29tYm9Ecm9wZWRPbiwgZXZ0KSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIGlmICghdGhpcy5vcmlnaW4pIHJldHVybjtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoOyAvLyDliKDpmaRkZWxlZ2F0ZSBzaGFwZVxuXG4gICAgaWYgKHRoaXMuZGVsZWdhdGVTaGFwZSkge1xuICAgICAgdmFyIGRlbGVnYXRlR3JvdXAgPSBncmFwaC5nZXQoJ2RlbGVnYXRlR3JvdXAnKTtcbiAgICAgIGRlbGVnYXRlR3JvdXAuY2xlYXIoKTtcbiAgICAgIHRoaXMuZGVsZWdhdGVTaGFwZSA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGNvbWJvRHJvcGVkT24gJiYgdGhpcy5hY3RpdmVTdGF0ZSkge1xuICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKGNvbWJvRHJvcGVkT24sIHRoaXMuYWN0aXZlU3RhdGUsIGZhbHNlKTtcbiAgICB9IC8vIOiLpeayoeacieiiq+aUvue9rueahCBjb21ib++8jOWImeaYr+iiq+aUvue9ruWcqOeUu+W4g+S4ilxuXG5cbiAgICBpZiAoIWNvbWJvRHJvcGVkT24pIHtcbiAgICAgIHRoaXMudGFyZ2V0cy5tYXAoZnVuY3Rpb24gKGNvbWJvKSB7XG4gICAgICAgIC8vIOWwhiBDb21ibyDmlL7nva7liLDmn5DkuKogQ29tYm8g5LiK6Z2i5pe277yM5Y+q5pyJ5b2TIG9ubHlDaGFuZ2VDb21ib1NpemUg5Li6IGZhbHNlIOaXtuWAmeaJjeabtOaWsCBDb21ibyDnu5PmnoRcbiAgICAgICAgaWYgKCFfdGhpcy5vbmx5Q2hhbmdlQ29tYm9TaXplKSB7XG4gICAgICAgICAgZ3JhcGgudXBkYXRlQ29tYm9UcmVlKGNvbWJvKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBncmFwaC51cGRhdGVDb21ibyhjb21ibyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMucG9pbnQgPSBbXTtcbiAgICB0aGlzLm9yaWdpbiA9IG51bGw7XG4gICAgdGhpcy5vcmlnaW5Qb2ludCA9IG51bGw7XG4gICAgdGhpcy50YXJnZXRzLmxlbmd0aCA9IDA7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOmBjeWOhiBjb21ib1RyZWXvvIzliIbliKvmm7TmlrAgbm9kZSDlkowgY29tYm9cbiAgICogQHBhcmFtIGRhdGFcbiAgICogQHBhcmFtIGZuXG4gICAqL1xuICB0cmF2ZXJzZTogZnVuY3Rpb24gdHJhdmVyc2UoZGF0YSwgZm4pIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgaWYgKGZuKGRhdGEpID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChkYXRhKSB7XG4gICAgICB2YXIgY29tYm9zID0gZGF0YS5nZXQoJ2NvbWJvcycpO1xuICAgICAgZWFjaChjb21ib3MsIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICBfdGhpcy50cmF2ZXJzZShjaGlsZCwgZm4pO1xuICAgICAgfSk7XG4gICAgICB2YXIgbm9kZXMgPSBkYXRhLmdldCgnbm9kZXMnKTtcbiAgICAgIGVhY2gobm9kZXMsIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICBfdGhpcy50cmF2ZXJzZShjaGlsZCwgZm4pO1xuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICB1cGRhdGVDb21ibzogZnVuY3Rpb24gdXBkYXRlQ29tYm8oaXRlbSwgZXZ0LCByZXN0b3JlKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHRoaXMudHJhdmVyc2UoaXRlbSwgZnVuY3Rpb24gKHBhcmFtKSB7XG4gICAgICBpZiAocGFyYW0uZGVzdHJveWVkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgX3RoaXMudXBkYXRlU2lnbmxlSXRlbShwYXJhbSwgZXZ0LCByZXN0b3JlKTtcblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBpdGVtIOW9k+WJjeato+WcqOaLluWKqOeahOWFg+e0oFxuICAgKiBAcGFyYW0gZXZ0XG4gICAqL1xuICB1cGRhdGVTaWdubGVJdGVtOiBmdW5jdGlvbiB1cGRhdGVTaWdubGVJdGVtKGl0ZW0sIGV2dCwgcmVzdG9yZSkge1xuICAgIHZhciBvcmlnaW4gPSB0aGlzLm9yaWdpbjtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIHZhciBtb2RlbCA9IGl0ZW0uZ2V0TW9kZWwoKTtcbiAgICB2YXIgaXRlbUlkID0gaXRlbS5nZXQoJ2lkJyk7XG5cbiAgICBpZiAoIXRoaXMucG9pbnRbaXRlbUlkXSkge1xuICAgICAgdGhpcy5wb2ludFtpdGVtSWRdID0ge1xuICAgICAgICB4OiBtb2RlbC54LFxuICAgICAgICB5OiBtb2RlbC55XG4gICAgICB9O1xuICAgIH1cblxuICAgIHZhciB4ID0gZXZ0LnggLSBvcmlnaW4ueCArIHRoaXMucG9pbnRbaXRlbUlkXS54O1xuICAgIHZhciB5ID0gZXZ0LnkgLSBvcmlnaW4ueSArIHRoaXMucG9pbnRbaXRlbUlkXS55O1xuXG4gICAgaWYgKHJlc3RvcmUpIHtcbiAgICAgIHggKz0gb3JpZ2luLnggLSBldnQueDtcbiAgICAgIHkgKz0gb3JpZ2luLnkgLSBldnQueTtcbiAgICB9XG5cbiAgICBncmFwaC51cGRhdGVJdGVtKGl0ZW0sIHtcbiAgICAgIHg6IHgsXG4gICAgICB5OiB5XG4gICAgfSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOagueaNriBJRCDojrflj5bniLYgQ29tYm9cbiAgICogQHBhcmFtIHBhcmVudElkIOeItiBDb21ibyBJRFxuICAgKi9cbiAgZ2V0UGFyZW50Q29tYm86IGZ1bmN0aW9uIGdldFBhcmVudENvbWJvKHBhcmVudElkKSB7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcblxuICAgIGlmICghcGFyZW50SWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgdmFyIHBhcmVudENvbWJvID0gZ3JhcGguZmluZEJ5SWQocGFyZW50SWQpO1xuXG4gICAgaWYgKCFwYXJlbnRDb21ibykge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyZW50Q29tYm87XG4gIH0sXG4gIHVwZGF0ZURlbGVnYXRlOiBmdW5jdGlvbiB1cGRhdGVEZWxlZ2F0ZShldnQpIHtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoOyAvLyDlvZPmsqHmnIkgZGVsZWdhdGUgc2hhcGUg5pe25Yib5bu6XG5cbiAgICBpZiAoIXRoaXMuZGVsZWdhdGVTaGFwZSkge1xuICAgICAgdmFyIGRlbGVnYXRlR3JvdXAgPSBncmFwaC5nZXQoJ2RlbGVnYXRlR3JvdXAnKTtcbiAgICAgIHZhciBiYm94ID0gbnVsbDtcblxuICAgICAgaWYgKHRoaXMudGFyZ2V0cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGJib3ggPSBjYWxjdWxhdGlvbkl0ZW1zQkJveCh0aGlzLnRhcmdldHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYmJveCA9IHRoaXMudGFyZ2V0c1swXS5nZXRCQm94KCk7XG4gICAgICB9XG5cbiAgICAgIHZhciB4ID0gYmJveC54LFxuICAgICAgICAgIHkgPSBiYm94LnksXG4gICAgICAgICAgd2lkdGggPSBiYm94LndpZHRoLFxuICAgICAgICAgIGhlaWdodCA9IGJib3guaGVpZ2h0LFxuICAgICAgICAgIG1pblggPSBiYm94Lm1pblgsXG4gICAgICAgICAgbWluWSA9IGJib3gubWluWTtcbiAgICAgIHRoaXMub3JpZ2luUG9pbnQgPSB7XG4gICAgICAgIHg6IHgsXG4gICAgICAgIHk6IHksXG4gICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgIG1pblg6IG1pblgsXG4gICAgICAgIG1pblk6IG1pbllcbiAgICAgIH07XG5cbiAgICAgIHZhciBhdHRycyA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBHbG9iYWwuZGVsZWdhdGVTdHlsZSksIHRoaXMuZGVsZWdhdGVTdHlsZSk7XG5cbiAgICAgIHRoaXMuZGVsZWdhdGVTaGFwZSA9IGRlbGVnYXRlR3JvdXAuYWRkU2hhcGUoJ3JlY3QnLCB7XG4gICAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgICAgd2lkdGg6IGJib3gud2lkdGgsXG4gICAgICAgICAgaGVpZ2h0OiBiYm94LmhlaWdodCxcbiAgICAgICAgICB4OiBiYm94LngsXG4gICAgICAgICAgeTogYmJveC55XG4gICAgICAgIH0sIGF0dHJzKSxcbiAgICAgICAgbmFtZTogJ2NvbWJvLWRlbGVnYXRlLXNoYXBlJ1xuICAgICAgfSk7XG4gICAgICB0aGlzLmRlbGVnYXRlU2hhcGUuc2V0KCdjYXB0dXJlJywgZmFsc2UpO1xuICAgICAgdGhpcy5kZWxlZ2F0ZSA9IHRoaXMuZGVsZWdhdGVTaGFwZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGNsaWVudFggPSBldnQueCAtIHRoaXMub3JpZ2luLnggKyB0aGlzLm9yaWdpblBvaW50Lm1pblg7XG4gICAgICB2YXIgY2xpZW50WSA9IGV2dC55IC0gdGhpcy5vcmlnaW4ueSArIHRoaXMub3JpZ2luUG9pbnQubWluWTtcbiAgICAgIHRoaXMuZGVsZWdhdGVTaGFwZS5hdHRyKHtcbiAgICAgICAgeDogY2xpZW50WCxcbiAgICAgICAgeTogY2xpZW50WVxuICAgICAgfSk7XG4gICAgfVxuICB9XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/drag-combo.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/drag-node.js":
/*!******************************************************************************!*\
!*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/drag-node.js ***!
\******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../global */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/global.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n updateEdge: true,\n delegateStyle: {},\n // 是否开启delegate\n enableDelegate: false,\n // 拖动节点过程中是否只改变 Combo 的大小,而不改变其结构\n onlyChangeComboSize: false,\n // 拖动过程中目标 combo 状态样式\n comboActiveState: '',\n selectedState: 'selected',\n enableOptimize: false,\n enableDebounce: false,\n enableStack: true\n };\n },\n getEvents: function getEvents() {\n return {\n 'node:dragstart': 'onDragStart',\n 'node:drag': 'onDrag',\n 'node:dragend': 'onDragEnd',\n 'combo:dragenter': 'onDragEnter',\n 'combo:dragleave': 'onDragLeave',\n 'combo:drop': 'onDropCombo',\n 'node:drop': 'onDropNode',\n 'canvas:drop': 'onDropCanvas',\n 'touchstart': 'onTouchStart',\n 'touchmove': 'onTouchMove',\n 'touchend': 'onDragEnd'\n };\n },\n validationCombo: function validationCombo(item) {\n if (!this.origin || !item || item.destroyed) {\n return false;\n }\n\n var type = item.getType();\n\n if (type !== 'combo') {\n return false;\n }\n\n return true;\n },\n onTouchStart: function onTouchStart(e) {\n if (!e.item) return;\n var self = this;\n\n try {\n var touches = e.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1];\n\n if (event1 && event2) {\n return;\n }\n\n e.preventDefault();\n } catch (e) {\n console.warn('Touch original event not exist!');\n }\n\n self.onDragStart(e);\n },\n onTouchMove: function onTouchMove(e) {\n var self = this;\n\n try {\n var touches = e.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1];\n\n if (event1 && event2) {\n self.onDragEnd(e);\n return;\n }\n\n e.preventDefault();\n } catch (e) {\n console.warn('Touch original event not exist!');\n }\n\n self.onDrag(e);\n },\n\n /**\n * 开始拖动节点\n * @param evt\n */\n onDragStart: function onDragStart(evt) {\n var _this = this;\n\n this.currentShouldEnd = true;\n\n if (!this.shouldBegin.call(this, evt)) {\n return;\n }\n\n var item = evt.item;\n\n if (!item || item.destroyed || item.hasLocked()) {\n return;\n } // 拖动时,设置拖动元素的 capture 为false,则不拾取拖动的元素\n\n\n var group = item.getContainer();\n group.set('capture', false);\n if (!this.cachedCaptureItems) this.cachedCaptureItems = [];\n this.cachedCaptureItems.push(item); // 如果拖动的target 是linkPoints / anchorPoints 则不允许拖动\n\n var target = evt.target;\n\n if (target) {\n var isAnchorPoint = target.get('isAnchorPoint');\n\n if (isAnchorPoint) {\n return;\n }\n }\n\n var graph = this.graph;\n this.targets = []; // 将节点拖入到指定的 Combo\n\n this.targetCombo = null; // 获取所有选中的元素\n\n var nodes = graph.findAllByState('node', this.selectedState);\n var currentNodeId = item.get('id'); // 当前拖动的节点是否是选中的节点\n\n var dragNodes = nodes.filter(function (node) {\n var nodeId = node.get('id');\n return currentNodeId === nodeId;\n }); // 只拖动当前节点\n\n if (dragNodes.length === 0) {\n this.targets.push(item);\n } else if (nodes.length > 1) {\n // 拖动多个节点\n nodes.forEach(function (node) {\n var locked = node.hasLocked();\n\n if (!locked) {\n _this.targets.push(node);\n }\n });\n } else {\n this.targets.push(item);\n }\n\n var beforeDragNodes = [];\n this.targets.forEach(function (t) {\n beforeDragNodes.push(Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(t.getModel()));\n });\n this.set('beforeDragNodes', beforeDragNodes);\n this.hidenEdge = {};\n\n if (this.get('updateEdge') && this.enableOptimize && !this.enableDelegate) {\n this.targets.forEach(function (node) {\n var edges = node.getEdges();\n edges.forEach(function (edge) {\n if (!edge.isVisible()) return;\n _this.hidenEdge[edge.getID()] = true;\n edge.hide();\n });\n });\n }\n\n this.origin = {\n x: evt.x,\n y: evt.y\n };\n this.point = {};\n this.originPoint = {};\n },\n\n /**\n * 持续拖动节点\n * @param evt\n */\n onDrag: function onDrag(evt) {\n var _this = this;\n\n if (!this.origin) {\n return;\n }\n\n if (!this.shouldUpdate.call(this, evt)) {\n return;\n }\n\n if (this.get('enableDelegate')) {\n this.updateDelegate(evt);\n } else {\n if (this.enableDebounce) this.debounceUpdate({\n targets: this.targets,\n graph: this.graph,\n point: this.point,\n origin: this.origin,\n evt: evt,\n updateEdge: this.get('updateEdge')\n });else this.targets.map(function (target) {\n _this.update(target, evt);\n });\n }\n },\n\n /**\n * 拖动结束,设置拖动元素capture为true,更新元素位置,如果是拖动涉及到 combo,则更新 combo 结构\n * @param evt\n */\n onDragEnd: function onDragEnd(evt) {\n var _this = this;\n\n var _a;\n\n if (!this.origin) {\n return;\n } // 拖动结束后,设置拖动元素 group 的 capture 为 true,允许拾取拖动元素\n\n\n (_a = this.cachedCaptureItems) === null || _a === void 0 ? void 0 : _a.forEach(function (item) {\n var group = item.getContainer();\n group.set('capture', true);\n });\n this.cachedCaptureItems = [];\n\n if (this.delegateRect) {\n this.delegateRect.remove();\n this.delegateRect = null;\n }\n\n if (this.get('updateEdge') && this.enableOptimize && !this.enableDelegate) {\n this.targets.forEach(function (node) {\n var edges = node.getEdges();\n edges.forEach(function (edge) {\n if (_this.hidenEdge[edge.getID()]) edge.show();\n edge.refresh();\n });\n });\n }\n\n this.hidenEdge = {};\n var graph = this.graph; // 拖动结束后,入栈\n\n if (graph.get('enabledStack') && this.enableStack) {\n var stackData_1 = {\n before: {\n nodes: [],\n edges: [],\n combos: []\n },\n after: {\n nodes: [],\n edges: [],\n combos: []\n }\n };\n this.get('beforeDragNodes').forEach(function (model) {\n stackData_1.before.nodes.push({\n id: model.id,\n x: model.x,\n y: model.y\n });\n });\n this.targets.forEach(function (target) {\n var targetModel = target.getModel();\n stackData_1.after.nodes.push({\n id: targetModel.id,\n x: targetModel.x,\n y: targetModel.y\n });\n });\n graph.pushStack('update', Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(stackData_1));\n } // 拖动结束后emit事件,将当前操作的节点抛出去,目标节点为null\n\n\n graph.emit('dragnodeend', {\n items: this.targets,\n targetItem: null\n });\n this.point = {};\n this.origin = null;\n this.originPoint = {};\n this.targets.length = 0;\n this.targetCombo = null;\n },\n\n /**\n * 拖动过程中将节点放置到 combo 上\n * @param evt\n */\n onDropCombo: function onDropCombo(evt) {\n var item = evt.item;\n this.currentShouldEnd = this.shouldEnd.call(this, evt, item); // 若不允许结束,则将节点位置设置回初识位置。后面的逻辑仍需要执行\n\n this.updatePositions(evt, !this.currentShouldEnd);\n if (!this.currentShouldEnd || !this.validationCombo(item)) return;\n var graph = this.graph;\n\n if (this.comboActiveState) {\n graph.setItemState(item, this.comboActiveState, false);\n }\n\n this.targetCombo = item; // 拖动结束后是动态改变 Combo 大小还是将节点从 Combo 中删除\n\n if (this.onlyChangeComboSize) {\n // 拖动节点结束后,动态改变 Combo 的大小\n graph.updateCombos();\n } else {\n var targetComboModel_1 = item.getModel();\n this.targets.map(function (node) {\n var nodeModel = node.getModel();\n\n if (nodeModel.comboId !== targetComboModel_1.id) {\n graph.updateComboTree(node, targetComboModel_1.id);\n }\n });\n graph.updateCombo(item);\n } // 将节点拖动到 combo 上面,emit事件抛出当前操作的节点及目标 combo\n\n\n graph.emit('dragnodeend', {\n items: this.targets,\n targetItem: this.targetCombo\n });\n },\n onDropCanvas: function onDropCanvas(evt) {\n var graph = this.graph;\n this.currentShouldEnd = this.shouldEnd.call(this, evt, undefined); // 若不允许结束,则将节点位置设置回初识位置。后面的逻辑仍需要执行\n\n this.updatePositions(evt, !this.currentShouldEnd);\n if (!this.targets || this.targets.length === 0 || !this.currentShouldEnd) return;\n\n if (this.onlyChangeComboSize) {\n // 拖动节点结束后,动态改变 Combo 的大小\n graph.updateCombos();\n } else {\n this.targets.map(function (node) {\n // 拖动的节点有 comboId,即是从其他 combo 中拖出时才处理\n var model = node.getModel();\n\n if (model.comboId) {\n graph.updateComboTree(node);\n }\n });\n }\n },\n\n /**\n * 拖动放置到某个 combo 中的子 node 上\n * @param evt\n */\n onDropNode: function onDropNode(evt) {\n if (!this.targets || this.targets.length === 0) return;\n var self = this;\n var item = evt.item;\n var graph = self.graph;\n var comboId = item.getModel().comboId;\n var newParentCombo = comboId ? graph.findById(comboId) : undefined;\n this.currentShouldEnd = this.shouldEnd.call(this, evt, newParentCombo); // 若不允许结束,则将节点位置设置回初识位置。后面的逻辑仍需要执行\n\n this.updatePositions(evt, !this.currentShouldEnd);\n if (!this.currentShouldEnd) return;\n\n if (this.onlyChangeComboSize) {\n graph.updateCombos();\n } else if (comboId) {\n var combo = graph.findById(comboId);\n\n if (self.comboActiveState) {\n graph.setItemState(combo, self.comboActiveState, false);\n }\n\n this.targets.map(function (node) {\n var nodeModel = node.getModel();\n\n if (comboId !== nodeModel.comboId) {\n graph.updateComboTree(node, comboId);\n }\n });\n graph.updateCombo(combo);\n } else {\n this.targets.map(function (node) {\n var model = node.getModel();\n\n if (model.comboId) {\n graph.updateComboTree(node);\n }\n });\n } // 将节点拖动到另外个节点上面,emit 事件抛出当前操作的节点及目标节点\n\n\n graph.emit('dragnodeend', {\n items: this.targets,\n targetItem: item\n });\n },\n\n /**\n * 将节点拖入到 Combo 中\n * @param evt\n */\n onDragEnter: function onDragEnter(evt) {\n var item = evt.item;\n if (!this.validationCombo(item)) return;\n var graph = this.graph;\n\n if (this.comboActiveState) {\n graph.setItemState(item, this.comboActiveState, true);\n }\n },\n\n /**\n * 将节点从 Combo 中拖出\n * @param evt\n */\n onDragLeave: function onDragLeave(evt) {\n var item = evt.item;\n if (!this.validationCombo(item)) return;\n var graph = this.graph;\n\n if (this.comboActiveState) {\n graph.setItemState(item, this.comboActiveState, false);\n }\n },\n updatePositions: function updatePositions(evt, restore) {\n var _this = this;\n\n if (!this.targets || this.targets.length === 0) return; // 当开启 delegate 时,拖动结束后需要更新所有已选中节点的位置\n\n if (this.get('enableDelegate')) {\n if (this.enableDebounce) this.debounceUpdate({\n targets: this.targets,\n graph: this.graph,\n point: this.point,\n origin: this.origin,\n evt: evt,\n updateEdge: this.get('updateEdge'),\n updateFunc: this.update\n });else if (!restore) this.targets.map(function (node) {\n return _this.update(node, evt);\n });\n } else this.targets.map(function (node) {\n return _this.update(node, evt, restore);\n });\n },\n\n /**\n * 更新节点\n * @param item 拖动的节点实例\n * @param evt\n */\n update: function update(item, evt, restore) {\n var origin = this.origin;\n var model = item.get('model');\n var nodeId = item.get('id');\n\n if (!this.point[nodeId]) {\n this.point[nodeId] = {\n x: model.x || 0,\n y: model.y || 0\n };\n }\n\n var x = evt.x - origin.x + this.point[nodeId].x;\n var y = evt.y - origin.y + this.point[nodeId].y;\n\n if (restore) {\n x += origin.x - evt.x;\n y += origin.y - evt.y;\n }\n\n var pos = {\n x: x,\n y: y\n };\n\n if (this.get('updateEdge')) {\n this.graph.updateItem(item, pos, false);\n } else {\n item.updatePosition(pos);\n }\n },\n\n /**\n * 限流更新节点\n * @param item 拖动的节点实例\n * @param evt\n */\n debounceUpdate: Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"debounce\"])(function (event) {\n var targets = event.targets,\n graph = event.graph,\n point = event.point,\n origin = event.origin,\n evt = event.evt,\n updateEdge = event.updateEdge,\n updateFunc = event.updateFunc;\n targets.map(function (item) {\n var model = item.get('model');\n var nodeId = item.get('id');\n\n if (!point[nodeId]) {\n point[nodeId] = {\n x: model.x || 0,\n y: model.y || 0\n };\n }\n\n var x = evt.x - origin.x + point[nodeId].x;\n var y = evt.y - origin.y + point[nodeId].y;\n var pos = {\n x: x,\n y: y\n };\n\n if (updateEdge) {\n graph.updateItem(item, pos, false);\n } else {\n item.updatePosition(pos);\n }\n });\n }, 50, true),\n\n /**\n * 更新拖动元素时的delegate\n * @param {Event} e 事件句柄\n * @param {number} x 拖动单个元素时候的x坐标\n * @param {number} y 拖动单个元素时候的y坐标\n */\n updateDelegate: function updateDelegate(e) {\n var graph = this.graph;\n\n if (!this.delegateRect) {\n // 拖动多个\n var parent_1 = graph.get('group');\n var attrs = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"deepMix\"])({}, _global__WEBPACK_IMPORTED_MODULE_2__[\"default\"].delegateStyle, this.delegateStyle);\n\n var _a = this.calculationGroupPosition(e),\n cx = _a.x,\n cy = _a.y,\n width = _a.width,\n height = _a.height,\n minX = _a.minX,\n minY = _a.minY;\n\n this.originPoint = {\n x: cx,\n y: cy,\n width: width,\n height: height,\n minX: minX,\n minY: minY\n }; // model上的x, y是相对于图形中心的,delegateShape是g实例,x,y是绝对坐标\n\n this.delegateRect = parent_1.addShape('rect', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n width: width,\n height: height,\n x: cx,\n y: cy\n }, attrs),\n name: 'rect-delegate-shape'\n });\n this.delegate = this.delegateRect;\n this.delegateRect.set('capture', false);\n } else {\n var clientX = e.x - this.origin.x + this.originPoint.minX;\n var clientY = e.y - this.origin.y + this.originPoint.minY;\n this.delegateRect.attr({\n x: clientX,\n y: clientY\n });\n }\n },\n\n /**\n * 计算delegate位置,包括左上角左边及宽度和高度\n * @memberof ItemGroup\n * @return {object} 计算出来的delegate坐标信息及宽高\n */\n calculationGroupPosition: function calculationGroupPosition(evt) {\n var nodes = this.targets;\n\n if (nodes.length === 0) {\n nodes.push(evt.item);\n }\n\n var minx = Infinity;\n var maxx = -Infinity;\n var miny = Infinity;\n var maxy = -Infinity; // 获取已节点的所有最大最小x y值\n\n for (var i = 0; i < nodes.length; i++) {\n var element = nodes[i];\n var bbox = element.getBBox();\n var minX = bbox.minX,\n minY = bbox.minY,\n maxX = bbox.maxX,\n maxY = bbox.maxY;\n\n if (minX < minx) {\n minx = minX;\n }\n\n if (minY < miny) {\n miny = minY;\n }\n\n if (maxX > maxx) {\n maxx = maxX;\n }\n\n if (maxY > maxy) {\n maxy = maxY;\n }\n }\n\n var x = Math.floor(minx);\n var y = Math.floor(miny);\n var width = Math.ceil(maxx) - Math.floor(minx);\n var height = Math.ceil(maxy) - Math.floor(miny);\n return {\n x: x,\n y: y,\n width: width,\n height: height,\n minX: minx,\n minY: miny\n };\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL2RyYWctbm9kZS5qcz8yZmRiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWlDO0FBQ3FCO0FBQ3ZCO0FBQ2hCO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDOztBQUV2Qzs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esc0JBQXNCOztBQUV0Qiw0QkFBNEI7O0FBRTVCO0FBQ0EsdUNBQXVDOztBQUV2QztBQUNBO0FBQ0E7QUFDQSxLQUFLLEVBQUU7O0FBRVA7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQSwyQkFBMkIsd0RBQUs7QUFDaEMsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sRUFBRTtBQUNUO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQOztBQUVBO0FBQ0EsMkJBQTJCOztBQUUzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxnQ0FBZ0Msd0RBQUs7QUFDckMsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlFQUFpRTs7QUFFakU7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSw0QkFBNEI7O0FBRTVCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0Esc0VBQXNFOztBQUV0RTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkVBQTJFOztBQUUzRTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBLDJEQUEyRDs7QUFFM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxFQUFFO0FBQ1Q7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQiwyREFBUTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0E7QUFDQSxhQUFhLE1BQU07QUFDbkIsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLDBEQUFPLEdBQUcsRUFBRSwrQ0FBTTs7QUFFcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFROztBQUVSO0FBQ0EsZUFBZSxzREFBUTtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5Qjs7QUFFekIsbUJBQW1CLGtCQUFrQjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1wY0AwLjUuMEBAYW50di9nNi1wYy9lcy9iZWhhdmlvci9kcmFnLW5vZGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgZGVlcE1peCwgY2xvbmUsIGRlYm91bmNlIH0gZnJvbSAnQGFudHYvdXRpbCc7XG5pbXBvcnQgR2xvYmFsIGZyb20gJy4uL2dsb2JhbCc7XG5leHBvcnQgZGVmYXVsdCB7XG4gIGdldERlZmF1bHRDZmc6IGZ1bmN0aW9uIGdldERlZmF1bHRDZmcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVwZGF0ZUVkZ2U6IHRydWUsXG4gICAgICBkZWxlZ2F0ZVN0eWxlOiB7fSxcbiAgICAgIC8vIOaYr+WQpuW8gOWQr2RlbGVnYXRlXG4gICAgICBlbmFibGVEZWxlZ2F0ZTogZmFsc2UsXG4gICAgICAvLyDmi5bliqjoioLngrnov4fnqIvkuK3mmK/lkKblj6rmlLnlj5ggQ29tYm8g55qE5aSn5bCP77yM6ICM5LiN5pS55Y+Y5YW257uT5p6EXG4gICAgICBvbmx5Q2hhbmdlQ29tYm9TaXplOiBmYWxzZSxcbiAgICAgIC8vIOaLluWKqOi/h+eoi+S4reebruaghyBjb21ibyDnirbmgIHmoLflvI9cbiAgICAgIGNvbWJvQWN0aXZlU3RhdGU6ICcnLFxuICAgICAgc2VsZWN0ZWRTdGF0ZTogJ3NlbGVjdGVkJyxcbiAgICAgIGVuYWJsZU9wdGltaXplOiBmYWxzZSxcbiAgICAgIGVuYWJsZURlYm91bmNlOiBmYWxzZSxcbiAgICAgIGVuYWJsZVN0YWNrOiB0cnVlXG4gICAgfTtcbiAgfSxcbiAgZ2V0RXZlbnRzOiBmdW5jdGlvbiBnZXRFdmVudHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdub2RlOmRyYWdzdGFydCc6ICdvbkRyYWdTdGFydCcsXG4gICAgICAnbm9kZTpkcmFnJzogJ29uRHJhZycsXG4gICAgICAnbm9kZTpkcmFnZW5kJzogJ29uRHJhZ0VuZCcsXG4gICAgICAnY29tYm86ZHJhZ2VudGVyJzogJ29uRHJhZ0VudGVyJyxcbiAgICAgICdjb21ibzpkcmFnbGVhdmUnOiAnb25EcmFnTGVhdmUnLFxuICAgICAgJ2NvbWJvOmRyb3AnOiAnb25Ecm9wQ29tYm8nLFxuICAgICAgJ25vZGU6ZHJvcCc6ICdvbkRyb3BOb2RlJyxcbiAgICAgICdjYW52YXM6ZHJvcCc6ICdvbkRyb3BDYW52YXMnLFxuICAgICAgJ3RvdWNoc3RhcnQnOiAnb25Ub3VjaFN0YXJ0JyxcbiAgICAgICd0b3VjaG1vdmUnOiAnb25Ub3VjaE1vdmUnLFxuICAgICAgJ3RvdWNoZW5kJzogJ29uRHJhZ0VuZCdcbiAgICB9O1xuICB9LFxuICB2YWxpZGF0aW9uQ29tYm86IGZ1bmN0aW9uIHZhbGlkYXRpb25Db21ibyhpdGVtKSB7XG4gICAgaWYgKCF0aGlzLm9yaWdpbiB8fCAhaXRlbSB8fCBpdGVtLmRlc3Ryb3llZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHZhciB0eXBlID0gaXRlbS5nZXRUeXBlKCk7XG5cbiAgICBpZiAodHlwZSAhPT0gJ2NvbWJvJykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9LFxuICBvblRvdWNoU3RhcnQ6IGZ1bmN0aW9uIG9uVG91Y2hTdGFydChlKSB7XG4gICAgaWYgKCFlLml0ZW0pIHJldHVybjtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB0cnkge1xuICAgICAgdmFyIHRvdWNoZXMgPSBlLm9yaWdpbmFsRXZlbnQudG91Y2hlcztcbiAgICAgIHZhciBldmVudDEgPSB0b3VjaGVzWzBdO1xuICAgICAgdmFyIGV2ZW50MiA9IHRvdWNoZXNbMV07XG5cbiAgICAgIGlmIChldmVudDEgJiYgZXZlbnQyKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUud2FybignVG91Y2ggb3JpZ2luYWwgZXZlbnQgbm90IGV4aXN0IScpO1xuICAgIH1cblxuICAgIHNlbGYub25EcmFnU3RhcnQoZSk7XG4gIH0sXG4gIG9uVG91Y2hNb3ZlOiBmdW5jdGlvbiBvblRvdWNoTW92ZShlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdHJ5IHtcbiAgICAgIHZhciB0b3VjaGVzID0gZS5vcmlnaW5hbEV2ZW50LnRvdWNoZXM7XG4gICAgICB2YXIgZXZlbnQxID0gdG91Y2hlc1swXTtcbiAgICAgIHZhciBldmVudDIgPSB0b3VjaGVzWzFdO1xuXG4gICAgICBpZiAoZXZlbnQxICYmIGV2ZW50Mikge1xuICAgICAgICBzZWxmLm9uRHJhZ0VuZChlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS53YXJuKCdUb3VjaCBvcmlnaW5hbCBldmVudCBub3QgZXhpc3QhJyk7XG4gICAgfVxuXG4gICAgc2VsZi5vbkRyYWcoZSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOW8gOWni+aLluWKqOiKgueCuVxuICAgKiBAcGFyYW0gZXZ0XG4gICAqL1xuICBvbkRyYWdTdGFydDogZnVuY3Rpb24gb25EcmFnU3RhcnQoZXZ0KSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHRoaXMuY3VycmVudFNob3VsZEVuZCA9IHRydWU7XG5cbiAgICBpZiAoIXRoaXMuc2hvdWxkQmVnaW4uY2FsbCh0aGlzLCBldnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGl0ZW0gPSBldnQuaXRlbTtcblxuICAgIGlmICghaXRlbSB8fCBpdGVtLmRlc3Ryb3llZCB8fCBpdGVtLmhhc0xvY2tlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyDmi5bliqjml7bvvIzorr7nva7mi5bliqjlhYPntKDnmoQgY2FwdHVyZSDkuLpmYWxzZe+8jOWImeS4jeaLvuWPluaLluWKqOeahOWFg+e0oFxuXG5cbiAgICB2YXIgZ3JvdXAgPSBpdGVtLmdldENvbnRhaW5lcigpO1xuICAgIGdyb3VwLnNldCgnY2FwdHVyZScsIGZhbHNlKTtcbiAgICBpZiAoIXRoaXMuY2FjaGVkQ2FwdHVyZUl0ZW1zKSB0aGlzLmNhY2hlZENhcHR1cmVJdGVtcyA9IFtdO1xuICAgIHRoaXMuY2FjaGVkQ2FwdHVyZUl0ZW1zLnB1c2goaXRlbSk7IC8vIOWmguaenOaLluWKqOeahHRhcmdldCDmmK9saW5rUG9pbnRzIC8gYW5jaG9yUG9pbnRzIOWImeS4jeWFgeiuuOaLluWKqFxuXG4gICAgdmFyIHRhcmdldCA9IGV2dC50YXJnZXQ7XG5cbiAgICBpZiAodGFyZ2V0KSB7XG4gICAgICB2YXIgaXNBbmNob3JQb2ludCA9IHRhcmdldC5nZXQoJ2lzQW5jaG9yUG9pbnQnKTtcblxuICAgICAgaWYgKGlzQW5jaG9yUG9pbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgdGhpcy50YXJnZXRzID0gW107IC8vIOWwhuiKgueCueaLluWFpeWIsOaMh+WumueahCBDb21ib1xuXG4gICAgdGhpcy50YXJnZXRDb21ibyA9IG51bGw7IC8vIOiOt+WPluaJgOaciemAieS4reeahOWFg+e0oFxuXG4gICAgdmFyIG5vZGVzID0gZ3JhcGguZmluZEFsbEJ5U3RhdGUoJ25vZGUnLCB0aGlzLnNlbGVjdGVkU3RhdGUpO1xuICAgIHZhciBjdXJyZW50Tm9kZUlkID0gaXRlbS5nZXQoJ2lkJyk7IC8vIOW9k+WJjeaLluWKqOeahOiKgueCueaYr+WQpuaYr+mAieS4reeahOiKgueCuVxuXG4gICAgdmFyIGRyYWdOb2RlcyA9IG5vZGVzLmZpbHRlcihmdW5jdGlvbiAobm9kZSkge1xuICAgICAgdmFyIG5vZGVJZCA9IG5vZGUuZ2V0KCdpZCcpO1xuICAgICAgcmV0dXJuIGN1cnJlbnROb2RlSWQgPT09IG5vZGVJZDtcbiAgICB9KTsgLy8g5Y+q5ouW5Yqo5b2T5YmN6IqC54K5XG5cbiAgICBpZiAoZHJhZ05vZGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy50YXJnZXRzLnB1c2goaXRlbSk7XG4gICAgfSBlbHNlIGlmIChub2Rlcy5sZW5ndGggPiAxKSB7XG4gICAgICAvLyDmi5bliqjlpJrkuKroioLngrlcbiAgICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgdmFyIGxvY2tlZCA9IG5vZGUuaGFzTG9ja2VkKCk7XG5cbiAgICAgICAgaWYgKCFsb2NrZWQpIHtcbiAgICAgICAgICBfdGhpcy50YXJnZXRzLnB1c2gobm9kZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRhcmdldHMucHVzaChpdGVtKTtcbiAgICB9XG5cbiAgICB2YXIgYmVmb3JlRHJhZ05vZGVzID0gW107XG4gICAgdGhpcy50YXJnZXRzLmZvckVhY2goZnVuY3Rpb24gKHQpIHtcbiAgICAgIGJlZm9yZURyYWdOb2Rlcy5wdXNoKGNsb25lKHQuZ2V0TW9kZWwoKSkpO1xuICAgIH0pO1xuICAgIHRoaXMuc2V0KCdiZWZvcmVEcmFnTm9kZXMnLCBiZWZvcmVEcmFnTm9kZXMpO1xuICAgIHRoaXMuaGlkZW5FZGdlID0ge307XG5cbiAgICBpZiAodGhpcy5nZXQoJ3VwZGF0ZUVkZ2UnKSAmJiB0aGlzLmVuYWJsZU9wdGltaXplICYmICF0aGlzLmVuYWJsZURlbGVnYXRlKSB7XG4gICAgICB0aGlzLnRhcmdldHMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICB2YXIgZWRnZXMgPSBub2RlLmdldEVkZ2VzKCk7XG4gICAgICAgIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICBpZiAoIWVkZ2UuaXNWaXNpYmxlKCkpIHJldHVybjtcbiAgICAgICAgICBfdGhpcy5oaWRlbkVkZ2VbZWRnZS5nZXRJRCgpXSA9IHRydWU7XG4gICAgICAgICAgZWRnZS5oaWRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5vcmlnaW4gPSB7XG4gICAgICB4OiBldnQueCxcbiAgICAgIHk6IGV2dC55XG4gICAgfTtcbiAgICB0aGlzLnBvaW50ID0ge307XG4gICAgdGhpcy5vcmlnaW5Qb2ludCA9IHt9O1xuICB9LFxuXG4gIC8qKlxuICAgKiDmjIHnu63mi5bliqjoioLngrlcbiAgICogQHBhcmFtIGV2dFxuICAgKi9cbiAgb25EcmFnOiBmdW5jdGlvbiBvbkRyYWcoZXZ0KSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIGlmICghdGhpcy5vcmlnaW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuc2hvdWxkVXBkYXRlLmNhbGwodGhpcywgZXZ0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmdldCgnZW5hYmxlRGVsZWdhdGUnKSkge1xuICAgICAgdGhpcy51cGRhdGVEZWxlZ2F0ZShldnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5lbmFibGVEZWJvdW5jZSkgdGhpcy5kZWJvdW5jZVVwZGF0ZSh7XG4gICAgICAgIHRhcmdldHM6IHRoaXMudGFyZ2V0cyxcbiAgICAgICAgZ3JhcGg6IHRoaXMuZ3JhcGgsXG4gICAgICAgIHBvaW50OiB0aGlzLnBvaW50LFxuICAgICAgICBvcmlnaW46IHRoaXMub3JpZ2luLFxuICAgICAgICBldnQ6IGV2dCxcbiAgICAgICAgdXBkYXRlRWRnZTogdGhpcy5nZXQoJ3VwZGF0ZUVkZ2UnKVxuICAgICAgfSk7ZWxzZSB0aGlzLnRhcmdldHMubWFwKGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICAgICAgX3RoaXMudXBkYXRlKHRhcmdldCwgZXZ0KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICog5ouW5Yqo57uT5p2f77yM6K6+572u5ouW5Yqo5YWD57SgY2FwdHVyZeS4unRydWXvvIzmm7TmlrDlhYPntKDkvY3nva7vvIzlpoLmnpzmmK/mi5bliqjmtonlj4rliLAgY29tYm/vvIzliJnmm7TmlrAgY29tYm8g57uT5p6EXG4gICAqIEBwYXJhbSBldnRcbiAgICovXG4gIG9uRHJhZ0VuZDogZnVuY3Rpb24gb25EcmFnRW5kKGV2dCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgX2E7XG5cbiAgICBpZiAoIXRoaXMub3JpZ2luKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyDmi5bliqjnu5PmnZ/lkI7vvIzorr7nva7mi5bliqjlhYPntKAgZ3JvdXAg55qEIGNhcHR1cmUg5Li6IHRydWXvvIzlhYHorrjmi77lj5bmi5bliqjlhYPntKBcblxuXG4gICAgKF9hID0gdGhpcy5jYWNoZWRDYXB0dXJlSXRlbXMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICB2YXIgZ3JvdXAgPSBpdGVtLmdldENvbnRhaW5lcigpO1xuICAgICAgZ3JvdXAuc2V0KCdjYXB0dXJlJywgdHJ1ZSk7XG4gICAgfSk7XG4gICAgdGhpcy5jYWNoZWRDYXB0dXJlSXRlbXMgPSBbXTtcblxuICAgIGlmICh0aGlzLmRlbGVnYXRlUmVjdCkge1xuICAgICAgdGhpcy5kZWxlZ2F0ZVJlY3QucmVtb3ZlKCk7XG4gICAgICB0aGlzLmRlbGVnYXRlUmVjdCA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZ2V0KCd1cGRhdGVFZGdlJykgJiYgdGhpcy5lbmFibGVPcHRpbWl6ZSAmJiAhdGhpcy5lbmFibGVEZWxlZ2F0ZSkge1xuICAgICAgdGhpcy50YXJnZXRzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgdmFyIGVkZ2VzID0gbm9kZS5nZXRFZGdlcygpO1xuICAgICAgICBlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgICAgaWYgKF90aGlzLmhpZGVuRWRnZVtlZGdlLmdldElEKCldKSBlZGdlLnNob3coKTtcbiAgICAgICAgICBlZGdlLnJlZnJlc2goKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmhpZGVuRWRnZSA9IHt9O1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7IC8vIOaLluWKqOe7k+adn+WQju+8jOWFpeagiFxuXG4gICAgaWYgKGdyYXBoLmdldCgnZW5hYmxlZFN0YWNrJykgJiYgdGhpcy5lbmFibGVTdGFjaykge1xuICAgICAgdmFyIHN0YWNrRGF0YV8xID0ge1xuICAgICAgICBiZWZvcmU6IHtcbiAgICAgICAgICBub2RlczogW10sXG4gICAgICAgICAgZWRnZXM6IFtdLFxuICAgICAgICAgIGNvbWJvczogW11cbiAgICAgICAgfSxcbiAgICAgICAgYWZ0ZXI6IHtcbiAgICAgICAgICBub2RlczogW10sXG4gICAgICAgICAgZWRnZXM6IFtdLFxuICAgICAgICAgIGNvbWJvczogW11cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHRoaXMuZ2V0KCdiZWZvcmVEcmFnTm9kZXMnKS5mb3JFYWNoKGZ1bmN0aW9uIChtb2RlbCkge1xuICAgICAgICBzdGFja0RhdGFfMS5iZWZvcmUubm9kZXMucHVzaCh7XG4gICAgICAgICAgaWQ6IG1vZGVsLmlkLFxuICAgICAgICAgIHg6IG1vZGVsLngsXG4gICAgICAgICAgeTogbW9kZWwueVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy50YXJnZXRzLmZvckVhY2goZnVuY3Rpb24gKHRhcmdldCkge1xuICAgICAgICB2YXIgdGFyZ2V0TW9kZWwgPSB0YXJnZXQuZ2V0TW9kZWwoKTtcbiAgICAgICAgc3RhY2tEYXRhXzEuYWZ0ZXIubm9kZXMucHVzaCh7XG4gICAgICAgICAgaWQ6IHRhcmdldE1vZGVsLmlkLFxuICAgICAgICAgIHg6IHRhcmdldE1vZGVsLngsXG4gICAgICAgICAgeTogdGFyZ2V0TW9kZWwueVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgZ3JhcGgucHVzaFN0YWNrKCd1cGRhdGUnLCBjbG9uZShzdGFja0RhdGFfMSkpO1xuICAgIH0gLy8g5ouW5Yqo57uT5p2f5ZCOZW1pdOS6i+S7tu+8jOWwhuW9k+WJjeaTjeS9nOeahOiKgueCueaKm+WHuuWOu++8jOebruagh+iKgueCueS4um51bGxcblxuXG4gICAgZ3JhcGguZW1pdCgnZHJhZ25vZGVlbmQnLCB7XG4gICAgICBpdGVtczogdGhpcy50YXJnZXRzLFxuICAgICAgdGFyZ2V0SXRlbTogbnVsbFxuICAgIH0pO1xuICAgIHRoaXMucG9pbnQgPSB7fTtcbiAgICB0aGlzLm9yaWdpbiA9IG51bGw7XG4gICAgdGhpcy5vcmlnaW5Qb2ludCA9IHt9O1xuICAgIHRoaXMudGFyZ2V0cy5sZW5ndGggPSAwO1xuICAgIHRoaXMudGFyZ2V0Q29tYm8gPSBudWxsO1xuICB9LFxuXG4gIC8qKlxuICAgKiDmi5bliqjov4fnqIvkuK3lsIboioLngrnmlL7nva7liLAgY29tYm8g5LiKXG4gICAqIEBwYXJhbSBldnRcbiAgICovXG4gIG9uRHJvcENvbWJvOiBmdW5jdGlvbiBvbkRyb3BDb21ibyhldnQpIHtcbiAgICB2YXIgaXRlbSA9IGV2dC5pdGVtO1xuICAgIHRoaXMuY3VycmVudFNob3VsZEVuZCA9IHRoaXMuc2hvdWxkRW5kLmNhbGwodGhpcywgZXZ0LCBpdGVtKTsgLy8g6Iul5LiN5YWB6K6457uT5p2f77yM5YiZ5bCG6IqC54K55L2N572u6K6+572u5Zue5Yid6K+G5L2N572u44CC5ZCO6Z2i55qE6YC76L6R5LuN6ZyA6KaB5omn6KGMXG5cbiAgICB0aGlzLnVwZGF0ZVBvc2l0aW9ucyhldnQsICF0aGlzLmN1cnJlbnRTaG91bGRFbmQpO1xuICAgIGlmICghdGhpcy5jdXJyZW50U2hvdWxkRW5kIHx8ICF0aGlzLnZhbGlkYXRpb25Db21ibyhpdGVtKSkgcmV0dXJuO1xuICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG5cbiAgICBpZiAodGhpcy5jb21ib0FjdGl2ZVN0YXRlKSB7XG4gICAgICBncmFwaC5zZXRJdGVtU3RhdGUoaXRlbSwgdGhpcy5jb21ib0FjdGl2ZVN0YXRlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgdGhpcy50YXJnZXRDb21ibyA9IGl0ZW07IC8vIOaLluWKqOe7k+adn+WQjuaYr+WKqOaAgeaUueWPmCBDb21ibyDlpKflsI/ov5jmmK/lsIboioLngrnku44gQ29tYm8g5Lit5Yig6ZmkXG5cbiAgICBpZiAodGhpcy5vbmx5Q2hhbmdlQ29tYm9TaXplKSB7XG4gICAgICAvLyDmi5bliqjoioLngrnnu5PmnZ/lkI7vvIzliqjmgIHmlLnlj5ggQ29tYm8g55qE5aSn5bCPXG4gICAgICBncmFwaC51cGRhdGVDb21ib3MoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHRhcmdldENvbWJvTW9kZWxfMSA9IGl0ZW0uZ2V0TW9kZWwoKTtcbiAgICAgIHRoaXMudGFyZ2V0cy5tYXAoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgdmFyIG5vZGVNb2RlbCA9IG5vZGUuZ2V0TW9kZWwoKTtcblxuICAgICAgICBpZiAobm9kZU1vZGVsLmNvbWJvSWQgIT09IHRhcmdldENvbWJvTW9kZWxfMS5pZCkge1xuICAgICAgICAgIGdyYXBoLnVwZGF0ZUNvbWJvVHJlZShub2RlLCB0YXJnZXRDb21ib01vZGVsXzEuaWQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGdyYXBoLnVwZGF0ZUNvbWJvKGl0ZW0pO1xuICAgIH0gLy8g5bCG6IqC54K55ouW5Yqo5YiwIGNvbWJvIOS4iumdou+8jGVtaXTkuovku7bmipvlh7rlvZPliY3mk43kvZznmoToioLngrnlj4rnm67moIcgY29tYm9cblxuXG4gICAgZ3JhcGguZW1pdCgnZHJhZ25vZGVlbmQnLCB7XG4gICAgICBpdGVtczogdGhpcy50YXJnZXRzLFxuICAgICAgdGFyZ2V0SXRlbTogdGhpcy50YXJnZXRDb21ib1xuICAgIH0pO1xuICB9LFxuICBvbkRyb3BDYW52YXM6IGZ1bmN0aW9uIG9uRHJvcENhbnZhcyhldnQpIHtcbiAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgIHRoaXMuY3VycmVudFNob3VsZEVuZCA9IHRoaXMuc2hvdWxkRW5kLmNhbGwodGhpcywgZXZ0LCB1bmRlZmluZWQpOyAvLyDoi6XkuI3lhYHorrjnu5PmnZ/vvIzliJnlsIboioLngrnkvY3nva7orr7nva7lm57liJ3or4bkvY3nva7jgILlkI7pnaLnmoTpgLvovpHku43pnIDopoHmiafooYxcblxuICAgIHRoaXMudXBkYXRlUG9zaXRpb25zKGV2dCwgIXRoaXMuY3VycmVudFNob3VsZEVuZCk7XG4gICAgaWYgKCF0aGlzLnRhcmdldHMgfHwgdGhpcy50YXJnZXRzLmxlbmd0aCA9PT0gMCB8fCAhdGhpcy5jdXJyZW50U2hvdWxkRW5kKSByZXR1cm47XG5cbiAgICBpZiAodGhpcy5vbmx5Q2hhbmdlQ29tYm9TaXplKSB7XG4gICAgICAvLyDmi5bliqjoioLngrnnu5PmnZ/lkI7vvIzliqjmgIHmlLnlj5ggQ29tYm8g55qE5aSn5bCPXG4gICAgICBncmFwaC51cGRhdGVDb21ib3MoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50YXJnZXRzLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAvLyDmi5bliqjnmoToioLngrnmnIkgY29tYm9JZO+8jOWNs+aYr+S7juWFtuS7liBjb21ibyDkuK3mi5blh7rml7bmiY3lpITnkIZcbiAgICAgICAgdmFyIG1vZGVsID0gbm9kZS5nZXRNb2RlbCgpO1xuXG4gICAgICAgIGlmIChtb2RlbC5jb21ib0lkKSB7XG4gICAgICAgICAgZ3JhcGgudXBkYXRlQ29tYm9UcmVlKG5vZGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIOaLluWKqOaUvue9ruWIsOafkOS4qiBjb21ibyDkuK3nmoTlrZAgbm9kZSDkuIpcbiAgICogQHBhcmFtIGV2dFxuICAgKi9cbiAgb25Ecm9wTm9kZTogZnVuY3Rpb24gb25Ecm9wTm9kZShldnQpIHtcbiAgICBpZiAoIXRoaXMudGFyZ2V0cyB8fCB0aGlzLnRhcmdldHMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBpdGVtID0gZXZ0Lml0ZW07XG4gICAgdmFyIGdyYXBoID0gc2VsZi5ncmFwaDtcbiAgICB2YXIgY29tYm9JZCA9IGl0ZW0uZ2V0TW9kZWwoKS5jb21ib0lkO1xuICAgIHZhciBuZXdQYXJlbnRDb21ibyA9IGNvbWJvSWQgPyBncmFwaC5maW5kQnlJZChjb21ib0lkKSA6IHVuZGVmaW5lZDtcbiAgICB0aGlzLmN1cnJlbnRTaG91bGRFbmQgPSB0aGlzLnNob3VsZEVuZC5jYWxsKHRoaXMsIGV2dCwgbmV3UGFyZW50Q29tYm8pOyAvLyDoi6XkuI3lhYHorrjnu5PmnZ/vvIzliJnlsIboioLngrnkvY3nva7orr7nva7lm57liJ3or4bkvY3nva7jgILlkI7pnaLnmoTpgLvovpHku43pnIDopoHmiafooYxcblxuICAgIHRoaXMudXBkYXRlUG9zaXRpb25zKGV2dCwgIXRoaXMuY3VycmVudFNob3VsZEVuZCk7XG4gICAgaWYgKCF0aGlzLmN1cnJlbnRTaG91bGRFbmQpIHJldHVybjtcblxuICAgIGlmICh0aGlzLm9ubHlDaGFuZ2VDb21ib1NpemUpIHtcbiAgICAgIGdyYXBoLnVwZGF0ZUNvbWJvcygpO1xuICAgIH0gZWxzZSBpZiAoY29tYm9JZCkge1xuICAgICAgdmFyIGNvbWJvID0gZ3JhcGguZmluZEJ5SWQoY29tYm9JZCk7XG5cbiAgICAgIGlmIChzZWxmLmNvbWJvQWN0aXZlU3RhdGUpIHtcbiAgICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKGNvbWJvLCBzZWxmLmNvbWJvQWN0aXZlU3RhdGUsIGZhbHNlKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy50YXJnZXRzLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICB2YXIgbm9kZU1vZGVsID0gbm9kZS5nZXRNb2RlbCgpO1xuXG4gICAgICAgIGlmIChjb21ib0lkICE9PSBub2RlTW9kZWwuY29tYm9JZCkge1xuICAgICAgICAgIGdyYXBoLnVwZGF0ZUNvbWJvVHJlZShub2RlLCBjb21ib0lkKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBncmFwaC51cGRhdGVDb21ibyhjb21ibyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGFyZ2V0cy5tYXAoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgdmFyIG1vZGVsID0gbm9kZS5nZXRNb2RlbCgpO1xuXG4gICAgICAgIGlmIChtb2RlbC5jb21ib0lkKSB7XG4gICAgICAgICAgZ3JhcGgudXBkYXRlQ29tYm9UcmVlKG5vZGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IC8vIOWwhuiKgueCueaLluWKqOWIsOWPpuWkluS4quiKgueCueS4iumdou+8jGVtaXQg5LqL5Lu25oqb5Ye65b2T5YmN5pON5L2c55qE6IqC54K55Y+K55uu5qCH6IqC54K5XG5cblxuICAgIGdyYXBoLmVtaXQoJ2RyYWdub2RlZW5kJywge1xuICAgICAgaXRlbXM6IHRoaXMudGFyZ2V0cyxcbiAgICAgIHRhcmdldEl0ZW06IGl0ZW1cbiAgICB9KTtcbiAgfSxcblxuICAvKipcbiAgICog5bCG6IqC54K55ouW5YWl5YiwIENvbWJvIOS4rVxuICAgKiBAcGFyYW0gZXZ0XG4gICAqL1xuICBvbkRyYWdFbnRlcjogZnVuY3Rpb24gb25EcmFnRW50ZXIoZXZ0KSB7XG4gICAgdmFyIGl0ZW0gPSBldnQuaXRlbTtcbiAgICBpZiAoIXRoaXMudmFsaWRhdGlvbkNvbWJvKGl0ZW0pKSByZXR1cm47XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcblxuICAgIGlmICh0aGlzLmNvbWJvQWN0aXZlU3RhdGUpIHtcbiAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShpdGVtLCB0aGlzLmNvbWJvQWN0aXZlU3RhdGUsIHRydWUpO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICog5bCG6IqC54K55LuOIENvbWJvIOS4reaLluWHulxuICAgKiBAcGFyYW0gZXZ0XG4gICAqL1xuICBvbkRyYWdMZWF2ZTogZnVuY3Rpb24gb25EcmFnTGVhdmUoZXZ0KSB7XG4gICAgdmFyIGl0ZW0gPSBldnQuaXRlbTtcbiAgICBpZiAoIXRoaXMudmFsaWRhdGlvbkNvbWJvKGl0ZW0pKSByZXR1cm47XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcblxuICAgIGlmICh0aGlzLmNvbWJvQWN0aXZlU3RhdGUpIHtcbiAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShpdGVtLCB0aGlzLmNvbWJvQWN0aXZlU3RhdGUsIGZhbHNlKTtcbiAgICB9XG4gIH0sXG4gIHVwZGF0ZVBvc2l0aW9uczogZnVuY3Rpb24gdXBkYXRlUG9zaXRpb25zKGV2dCwgcmVzdG9yZSkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBpZiAoIXRoaXMudGFyZ2V0cyB8fCB0aGlzLnRhcmdldHMubGVuZ3RoID09PSAwKSByZXR1cm47IC8vIOW9k+W8gOWQryBkZWxlZ2F0ZSDml7bvvIzmi5bliqjnu5PmnZ/lkI7pnIDopoHmm7TmlrDmiYDmnInlt7LpgInkuK3oioLngrnnmoTkvY3nva5cblxuICAgIGlmICh0aGlzLmdldCgnZW5hYmxlRGVsZWdhdGUnKSkge1xuICAgICAgaWYgKHRoaXMuZW5hYmxlRGVib3VuY2UpIHRoaXMuZGVib3VuY2VVcGRhdGUoe1xuICAgICAgICB0YXJnZXRzOiB0aGlzLnRhcmdldHMsXG4gICAgICAgIGdyYXBoOiB0aGlzLmdyYXBoLFxuICAgICAgICBwb2ludDogdGhpcy5wb2ludCxcbiAgICAgICAgb3JpZ2luOiB0aGlzLm9yaWdpbixcbiAgICAgICAgZXZ0OiBldnQsXG4gICAgICAgIHVwZGF0ZUVkZ2U6IHRoaXMuZ2V0KCd1cGRhdGVFZGdlJyksXG4gICAgICAgIHVwZGF0ZUZ1bmM6IHRoaXMudXBkYXRlXG4gICAgICB9KTtlbHNlIGlmICghcmVzdG9yZSkgdGhpcy50YXJnZXRzLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICByZXR1cm4gX3RoaXMudXBkYXRlKG5vZGUsIGV2dCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2UgdGhpcy50YXJnZXRzLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgcmV0dXJuIF90aGlzLnVwZGF0ZShub2RlLCBldnQsIHJlc3RvcmUpO1xuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiDmm7TmlrDoioLngrlcbiAgICogQHBhcmFtIGl0ZW0g5ouW5Yqo55qE6IqC54K55a6e5L6LXG4gICAqIEBwYXJhbSBldnRcbiAgICovXG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKGl0ZW0sIGV2dCwgcmVzdG9yZSkge1xuICAgIHZhciBvcmlnaW4gPSB0aGlzLm9yaWdpbjtcbiAgICB2YXIgbW9kZWwgPSBpdGVtLmdldCgnbW9kZWwnKTtcbiAgICB2YXIgbm9kZUlkID0gaXRlbS5nZXQoJ2lkJyk7XG5cbiAgICBpZiAoIXRoaXMucG9pbnRbbm9kZUlkXSkge1xuICAgICAgdGhpcy5wb2ludFtub2RlSWRdID0ge1xuICAgICAgICB4OiBtb2RlbC54IHx8IDAsXG4gICAgICAgIHk6IG1vZGVsLnkgfHwgMFxuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgeCA9IGV2dC54IC0gb3JpZ2luLnggKyB0aGlzLnBvaW50W25vZGVJZF0ueDtcbiAgICB2YXIgeSA9IGV2dC55IC0gb3JpZ2luLnkgKyB0aGlzLnBvaW50W25vZGVJZF0ueTtcblxuICAgIGlmIChyZXN0b3JlKSB7XG4gICAgICB4ICs9IG9yaWdpbi54IC0gZXZ0Lng7XG4gICAgICB5ICs9IG9yaWdpbi55IC0gZXZ0Lnk7XG4gICAgfVxuXG4gICAgdmFyIHBvcyA9IHtcbiAgICAgIHg6IHgsXG4gICAgICB5OiB5XG4gICAgfTtcblxuICAgIGlmICh0aGlzLmdldCgndXBkYXRlRWRnZScpKSB7XG4gICAgICB0aGlzLmdyYXBoLnVwZGF0ZUl0ZW0oaXRlbSwgcG9zLCBmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZW0udXBkYXRlUG9zaXRpb24ocG9zKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIOmZkOa1geabtOaWsOiKgueCuVxuICAgKiBAcGFyYW0gaXRlbSDmi5bliqjnmoToioLngrnlrp7kvotcbiAgICogQHBhcmFtIGV2dFxuICAgKi9cbiAgZGVib3VuY2VVcGRhdGU6IGRlYm91bmNlKGZ1bmN0aW9uIChldmVudCkge1xuICAgIHZhciB0YXJnZXRzID0gZXZlbnQudGFyZ2V0cyxcbiAgICAgICAgZ3JhcGggPSBldmVudC5ncmFwaCxcbiAgICAgICAgcG9pbnQgPSBldmVudC5wb2ludCxcbiAgICAgICAgb3JpZ2luID0gZXZlbnQub3JpZ2luLFxuICAgICAgICBldnQgPSBldmVudC5ldnQsXG4gICAgICAgIHVwZGF0ZUVkZ2UgPSBldmVudC51cGRhdGVFZGdlLFxuICAgICAgICB1cGRhdGVGdW5jID0gZXZlbnQudXBkYXRlRnVuYztcbiAgICB0YXJnZXRzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdmFyIG1vZGVsID0gaXRlbS5nZXQoJ21vZGVsJyk7XG4gICAgICB2YXIgbm9kZUlkID0gaXRlbS5nZXQoJ2lkJyk7XG5cbiAgICAgIGlmICghcG9pbnRbbm9kZUlkXSkge1xuICAgICAgICBwb2ludFtub2RlSWRdID0ge1xuICAgICAgICAgIHg6IG1vZGVsLnggfHwgMCxcbiAgICAgICAgICB5OiBtb2RlbC55IHx8IDBcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgdmFyIHggPSBldnQueCAtIG9yaWdpbi54ICsgcG9pbnRbbm9kZUlkXS54O1xuICAgICAgdmFyIHkgPSBldnQueSAtIG9yaWdpbi55ICsgcG9pbnRbbm9kZUlkXS55O1xuICAgICAgdmFyIHBvcyA9IHtcbiAgICAgICAgeDogeCxcbiAgICAgICAgeTogeVxuICAgICAgfTtcblxuICAgICAgaWYgKHVwZGF0ZUVkZ2UpIHtcbiAgICAgICAgZ3JhcGgudXBkYXRlSXRlbShpdGVtLCBwb3MsIGZhbHNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGl0ZW0udXBkYXRlUG9zaXRpb24ocG9zKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSwgNTAsIHRydWUpLFxuXG4gIC8qKlxuICAgKiDmm7TmlrDmi5bliqjlhYPntKDml7bnmoRkZWxlZ2F0ZVxuICAgKiBAcGFyYW0ge0V2ZW50fSBlIOS6i+S7tuWPpeafhFxuICAgKiBAcGFyYW0ge251bWJlcn0geCDmi5bliqjljZXkuKrlhYPntKDml7blgJnnmoR45Z2Q5qCHXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB5IOaLluWKqOWNleS4quWFg+e0oOaXtuWAmeeahHnlnZDmoIdcbiAgICovXG4gIHVwZGF0ZURlbGVnYXRlOiBmdW5jdGlvbiB1cGRhdGVEZWxlZ2F0ZShlKSB7XG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcblxuICAgIGlmICghdGhpcy5kZWxlZ2F0ZVJlY3QpIHtcbiAgICAgIC8vIOaLluWKqOWkmuS4qlxuICAgICAgdmFyIHBhcmVudF8xID0gZ3JhcGguZ2V0KCdncm91cCcpO1xuICAgICAgdmFyIGF0dHJzID0gZGVlcE1peCh7fSwgR2xvYmFsLmRlbGVnYXRlU3R5bGUsIHRoaXMuZGVsZWdhdGVTdHlsZSk7XG5cbiAgICAgIHZhciBfYSA9IHRoaXMuY2FsY3VsYXRpb25Hcm91cFBvc2l0aW9uKGUpLFxuICAgICAgICAgIGN4ID0gX2EueCxcbiAgICAgICAgICBjeSA9IF9hLnksXG4gICAgICAgICAgd2lkdGggPSBfYS53aWR0aCxcbiAgICAgICAgICBoZWlnaHQgPSBfYS5oZWlnaHQsXG4gICAgICAgICAgbWluWCA9IF9hLm1pblgsXG4gICAgICAgICAgbWluWSA9IF9hLm1pblk7XG5cbiAgICAgIHRoaXMub3JpZ2luUG9pbnQgPSB7XG4gICAgICAgIHg6IGN4LFxuICAgICAgICB5OiBjeSxcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgbWluWDogbWluWCxcbiAgICAgICAgbWluWTogbWluWVxuICAgICAgfTsgLy8gbW9kZWzkuIrnmoR4LCB55piv55u45a+55LqO5Zu+5b2i5Lit5b+D55qE77yMZGVsZWdhdGVTaGFwZeaYr2flrp7kvovvvIx4LHnmmK/nu53lr7nlnZDmoIdcblxuICAgICAgdGhpcy5kZWxlZ2F0ZVJlY3QgPSBwYXJlbnRfMS5hZGRTaGFwZSgncmVjdCcsIHtcbiAgICAgICAgYXR0cnM6IF9fYXNzaWduKHtcbiAgICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgICAgeDogY3gsXG4gICAgICAgICAgeTogY3lcbiAgICAgICAgfSwgYXR0cnMpLFxuICAgICAgICBuYW1lOiAncmVjdC1kZWxlZ2F0ZS1zaGFwZSdcbiAgICAgIH0pO1xuICAgICAgdGhpcy5kZWxlZ2F0ZSA9IHRoaXMuZGVsZWdhdGVSZWN0O1xuICAgICAgdGhpcy5kZWxlZ2F0ZVJlY3Quc2V0KCdjYXB0dXJlJywgZmFsc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgY2xpZW50WCA9IGUueCAtIHRoaXMub3JpZ2luLnggKyB0aGlzLm9yaWdpblBvaW50Lm1pblg7XG4gICAgICB2YXIgY2xpZW50WSA9IGUueSAtIHRoaXMub3JpZ2luLnkgKyB0aGlzLm9yaWdpblBvaW50Lm1pblk7XG4gICAgICB0aGlzLmRlbGVnYXRlUmVjdC5hdHRyKHtcbiAgICAgICAgeDogY2xpZW50WCxcbiAgICAgICAgeTogY2xpZW50WVxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiDorqHnrpdkZWxlZ2F0ZeS9jee9ru+8jOWMheaLrOW3puS4iuinkuW3pui+ueWPiuWuveW6puWSjOmrmOW6plxuICAgKiBAbWVtYmVyb2YgSXRlbUdyb3VwXG4gICAqIEByZXR1cm4ge29iamVjdH0g6K6h566X5Ye65p2l55qEZGVsZWdhdGXlnZDmoIfkv6Hmga/lj4rlrr3pq5hcbiAgICovXG4gIGNhbGN1bGF0aW9uR3JvdXBQb3NpdGlvbjogZnVuY3Rpb24gY2FsY3VsYXRpb25Hcm91cFBvc2l0aW9uKGV2dCkge1xuICAgIHZhciBub2RlcyA9IHRoaXMudGFyZ2V0cztcblxuICAgIGlmIChub2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIG5vZGVzLnB1c2goZXZ0Lml0ZW0pO1xuICAgIH1cblxuICAgIHZhciBtaW54ID0gSW5maW5pdHk7XG4gICAgdmFyIG1heHggPSAtSW5maW5pdHk7XG4gICAgdmFyIG1pbnkgPSBJbmZpbml0eTtcbiAgICB2YXIgbWF4eSA9IC1JbmZpbml0eTsgLy8g6I635Y+W5bey6IqC54K555qE5omA5pyJ5pyA5aSn5pyA5bCPeCB55YC8XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWxlbWVudCA9IG5vZGVzW2ldO1xuICAgICAgdmFyIGJib3ggPSBlbGVtZW50LmdldEJCb3goKTtcbiAgICAgIHZhciBtaW5YID0gYmJveC5taW5YLFxuICAgICAgICAgIG1pblkgPSBiYm94Lm1pblksXG4gICAgICAgICAgbWF4WCA9IGJib3gubWF4WCxcbiAgICAgICAgICBtYXhZID0gYmJveC5tYXhZO1xuXG4gICAgICBpZiAobWluWCA8IG1pbngpIHtcbiAgICAgICAgbWlueCA9IG1pblg7XG4gICAgICB9XG5cbiAgICAgIGlmIChtaW5ZIDwgbWlueSkge1xuICAgICAgICBtaW55ID0gbWluWTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1heFggPiBtYXh4KSB7XG4gICAgICAgIG1heHggPSBtYXhYO1xuICAgICAgfVxuXG4gICAgICBpZiAobWF4WSA+IG1heHkpIHtcbiAgICAgICAgbWF4eSA9IG1heFk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHggPSBNYXRoLmZsb29yKG1pbngpO1xuICAgIHZhciB5ID0gTWF0aC5mbG9vcihtaW55KTtcbiAgICB2YXIgd2lkdGggPSBNYXRoLmNlaWwobWF4eCkgLSBNYXRoLmZsb29yKG1pbngpO1xuICAgIHZhciBoZWlnaHQgPSBNYXRoLmNlaWwobWF4eSkgLSBNYXRoLmZsb29yKG1pbnkpO1xuICAgIHJldHVybiB7XG4gICAgICB4OiB4LFxuICAgICAgeTogeSxcbiAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgbWluWDogbWlueCxcbiAgICAgIG1pblk6IG1pbnlcbiAgICB9O1xuICB9XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/drag-node.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/edge-tooltip.js":
/*!*********************************************************************************!*\
!*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/edge-tooltip.js ***!
\*********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _tooltip_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tooltip-base */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/tooltip-base.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n getDefaultCfg: function getDefaultCfg() {\n return {\n item: 'edge',\n offset: 12,\n formatText: function formatText(model) {\n return \"source: \" + model.source + \" target: \" + model.target;\n }\n };\n },\n getEvents: function getEvents() {\n return {\n 'edge:mouseenter': 'onMouseEnter',\n 'edge:mouseleave': 'onMouseLeave',\n 'edge:mousemove': 'onMouseMove',\n afterremoveitem: 'onMouseLeave'\n };\n }\n}, _tooltip_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL2VkZ2UtdG9vbHRpcC5qcz85NDk0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNDO0FBQ25CLHFIQUFRO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBRSxxREFBSSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1wY0AwLjUuMEBAYW50di9nNi1wYy9lcy9iZWhhdmlvci9lZGdlLXRvb2x0aXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IGJhc2UgZnJvbSAnLi90b29sdGlwLWJhc2UnO1xuZXhwb3J0IGRlZmF1bHQgX19hc3NpZ24oe1xuICBnZXREZWZhdWx0Q2ZnOiBmdW5jdGlvbiBnZXREZWZhdWx0Q2ZnKCkge1xuICAgIHJldHVybiB7XG4gICAgICBpdGVtOiAnZWRnZScsXG4gICAgICBvZmZzZXQ6IDEyLFxuICAgICAgZm9ybWF0VGV4dDogZnVuY3Rpb24gZm9ybWF0VGV4dChtb2RlbCkge1xuICAgICAgICByZXR1cm4gXCJzb3VyY2U6IFwiICsgbW9kZWwuc291cmNlICsgXCIgdGFyZ2V0OiBcIiArIG1vZGVsLnRhcmdldDtcbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBnZXRFdmVudHM6IGZ1bmN0aW9uIGdldEV2ZW50cygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJ2VkZ2U6bW91c2VlbnRlcic6ICdvbk1vdXNlRW50ZXInLFxuICAgICAgJ2VkZ2U6bW91c2VsZWF2ZSc6ICdvbk1vdXNlTGVhdmUnLFxuICAgICAgJ2VkZ2U6bW91c2Vtb3ZlJzogJ29uTW91c2VNb3ZlJyxcbiAgICAgIGFmdGVycmVtb3ZlaXRlbTogJ29uTW91c2VMZWF2ZSdcbiAgICB9O1xuICB9XG59LCBiYXNlKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/edge-tooltip.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/index.js":
/*!**************************************************************************!*\
!*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/index.js ***!
\**************************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\");\n/* harmony import */ var _drag_canvas__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./drag-canvas */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/drag-canvas.js\");\n/* harmony import */ var _drag_node__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./drag-node */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/drag-node.js\");\n/* harmony import */ var _activate_relations__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./activate-relations */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/activate-relations.js\");\n/* harmony import */ var _brush_select__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./brush-select */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/brush-select.js\");\n/* harmony import */ var _click_select__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./click-select */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/click-select.js\");\n/* harmony import */ var _zoom_canvas__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./zoom-canvas */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/zoom-canvas.js\");\n/* harmony import */ var _tooltip__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./tooltip */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/tooltip.js\");\n/* harmony import */ var _edge_tooltip__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./edge-tooltip */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/edge-tooltip.js\");\n/* harmony import */ var _collapse_expand__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./collapse-expand */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/collapse-expand.js\");\n/* harmony import */ var _drag_combo__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./drag-combo */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/drag-combo.js\");\n/* harmony import */ var _collapse_expand_combo__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./collapse-expand-combo */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/collapse-expand-combo.js\");\n/* harmony import */ var _lasso_select__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./lasso-select */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/lasso-select.js\");\n/* harmony import */ var _create_edge__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./create-edge */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/create-edge.js\");\n/* harmony import */ var _shortcuts_call__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./shortcuts-call */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/shortcuts-call.js\");\n/* harmony import */ var _scroll_canvas__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./scroll-canvas */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/scroll-canvas.js\");\n\n // import Behavior from './behavior';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar behaviors = {\n 'drag-canvas': _drag_canvas__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n 'zoom-canvas': _zoom_canvas__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n 'drag-node': _drag_node__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n 'activate-relations': _activate_relations__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n 'brush-select': _brush_select__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n 'click-select': _click_select__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n 'lasso-select': _lasso_select__WEBPACK_IMPORTED_MODULE_13__[\"default\"],\n tooltip: _tooltip__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n 'edge-tooltip': _edge_tooltip__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n 'collapse-expand': _collapse_expand__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n 'drag-combo': _drag_combo__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n 'collapse-expand-combo': _collapse_expand_combo__WEBPACK_IMPORTED_MODULE_12__[\"default\"],\n 'create-edge': _create_edge__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n 'shortcuts-call': _shortcuts_call__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n 'scroll-canvas': _scroll_canvas__WEBPACK_IMPORTED_MODULE_16__[\"default\"]\n};\nObject(_antv_util__WEBPACK_IMPORTED_MODULE_0__[\"each\"])(behaviors, function (behavior, type) {\n Object(_antv_g6_core__WEBPACK_IMPORTED_MODULE_1__[\"registerBehavior\"])(type, behavior);\n}); // export default Behavior;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL2luZGV4LmpzP2FjOGYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtDO0FBQ2U7O0FBRVY7QUFDSjtBQUNrQjtBQUNaO0FBQ0E7QUFDRjtBQUNQO0FBQ1M7QUFDTTtBQUNWO0FBQ3FCO0FBQ2pCO0FBQ0Y7QUFDTTtBQUNGO0FBQzNDO0FBQ0EsaUJBQWlCLG9EQUFVO0FBQzNCLGlCQUFpQixvREFBVTtBQUMzQixlQUFlLGtEQUFRO0FBQ3ZCLHdCQUF3QiwyREFBaUI7QUFDekMsa0JBQWtCLHFEQUFXO0FBQzdCLGtCQUFrQixxREFBVztBQUM3QixrQkFBa0Isc0RBQVc7QUFDN0IsV0FBVyxnREFBTztBQUNsQixrQkFBa0IscURBQVc7QUFDN0IscUJBQXFCLHlEQUFjO0FBQ25DLGdCQUFnQixvREFBUztBQUN6QiwyQkFBMkIsK0RBQW1CO0FBQzlDLGlCQUFpQixxREFBVTtBQUMzQixvQkFBb0Isd0RBQWE7QUFDakMsbUJBQW1CLHVEQUFZO0FBQy9CO0FBQ0EsdURBQUk7QUFDSixFQUFFLHNFQUFnQjtBQUNsQixDQUFDLEVBQUUiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZWFjaCB9IGZyb20gJ0BhbnR2L3V0aWwnO1xuaW1wb3J0IHsgcmVnaXN0ZXJCZWhhdmlvciB9IGZyb20gJ0BhbnR2L2c2LWNvcmUnOyAvLyBpbXBvcnQgQmVoYXZpb3IgZnJvbSAnLi9iZWhhdmlvcic7XG5cbmltcG9ydCBEcmFnQ2FudmFzIGZyb20gJy4vZHJhZy1jYW52YXMnO1xuaW1wb3J0IERyYWdOb2RlIGZyb20gJy4vZHJhZy1ub2RlJztcbmltcG9ydCBBY3RpdmF0ZVJlbGF0aW9ucyBmcm9tICcuL2FjdGl2YXRlLXJlbGF0aW9ucyc7XG5pbXBvcnQgQnJ1c2hTZWxlY3QgZnJvbSAnLi9icnVzaC1zZWxlY3QnO1xuaW1wb3J0IENsaWNrU2VsZWN0IGZyb20gJy4vY2xpY2stc2VsZWN0JztcbmltcG9ydCBab29tQ2FudmFzIGZyb20gJy4vem9vbS1jYW52YXMnO1xuaW1wb3J0IFRvb2x0aXAgZnJvbSAnLi90b29sdGlwJztcbmltcG9ydCBFZGdlVG9vbHRpcCBmcm9tICcuL2VkZ2UtdG9vbHRpcCc7XG5pbXBvcnQgQ29sbGFwc2VFeHBhbmQgZnJvbSAnLi9jb2xsYXBzZS1leHBhbmQnO1xuaW1wb3J0IERyYWdDb21ibyBmcm9tICcuL2RyYWctY29tYm8nO1xuaW1wb3J0IENvbGxhcHNlRXhwYW5kQ29tYm8gZnJvbSAnLi9jb2xsYXBzZS1leHBhbmQtY29tYm8nO1xuaW1wb3J0IExhc3NvU2VsZWN0IGZyb20gJy4vbGFzc28tc2VsZWN0JztcbmltcG9ydCBDcmVhdGVFZGdlIGZyb20gJy4vY3JlYXRlLWVkZ2UnO1xuaW1wb3J0IFNob3J0Y3V0c0NhbGwgZnJvbSAnLi9zaG9ydGN1dHMtY2FsbCc7XG5pbXBvcnQgU2Nyb2xsQ2FudmFzIGZyb20gJy4vc2Nyb2xsLWNhbnZhcyc7XG52YXIgYmVoYXZpb3JzID0ge1xuICAnZHJhZy1jYW52YXMnOiBEcmFnQ2FudmFzLFxuICAnem9vbS1jYW52YXMnOiBab29tQ2FudmFzLFxuICAnZHJhZy1ub2RlJzogRHJhZ05vZGUsXG4gICdhY3RpdmF0ZS1yZWxhdGlvbnMnOiBBY3RpdmF0ZVJlbGF0aW9ucyxcbiAgJ2JydXNoLXNlbGVjdCc6IEJydXNoU2VsZWN0LFxuICAnY2xpY2stc2VsZWN0JzogQ2xpY2tTZWxlY3QsXG4gICdsYXNzby1zZWxlY3QnOiBMYXNzb1NlbGVjdCxcbiAgdG9vbHRpcDogVG9vbHRpcCxcbiAgJ2VkZ2UtdG9vbHRpcCc6IEVkZ2VUb29sdGlwLFxuICAnY29sbGFwc2UtZXhwYW5kJzogQ29sbGFwc2VFeHBhbmQsXG4gICdkcmFnLWNvbWJvJzogRHJhZ0NvbWJvLFxuICAnY29sbGFwc2UtZXhwYW5kLWNvbWJvJzogQ29sbGFwc2VFeHBhbmRDb21ibyxcbiAgJ2NyZWF0ZS1lZGdlJzogQ3JlYXRlRWRnZSxcbiAgJ3Nob3J0Y3V0cy1jYWxsJzogU2hvcnRjdXRzQ2FsbCxcbiAgJ3Njcm9sbC1jYW52YXMnOiBTY3JvbGxDYW52YXNcbn07XG5lYWNoKGJlaGF2aW9ycywgZnVuY3Rpb24gKGJlaGF2aW9yLCB0eXBlKSB7XG4gIHJlZ2lzdGVyQmVoYXZpb3IodHlwZSwgYmVoYXZpb3IpO1xufSk7IC8vIGV4cG9ydCBkZWZhdWx0IEJlaGF2aW9yOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/lasso-select.js":
/*!*********************************************************************************!*\
!*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/lasso-select.js ***!
\*********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/util/index.js\");\n\n\nvar isPolygonsIntersect = _util__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isPolygonsIntersect,\n pathToPoints = _util__WEBPACK_IMPORTED_MODULE_1__[\"default\"].pathToPoints;\nvar DEFAULT_TRIGGER = 'shift';\nvar ALLOW_EVENTS = ['drag', 'shift', 'ctrl', 'alt', 'control'];\n\nvar isItemIntersecPolygon = function isItemIntersecPolygon(item, polyPoints) {\n var shapePoints;\n var shape = item.getKeyShape();\n\n if (item.get('type') === 'path') {\n shapePoints = pathToPoints(shape.attr('path'));\n } else {\n var shapeBBox = shape.getCanvasBBox();\n shapePoints = [[shapeBBox.minX, shapeBBox.minY], [shapeBBox.maxX, shapeBBox.minY], [shapeBBox.maxX, shapeBBox.maxY], [shapeBBox.minX, shapeBBox.maxY]];\n }\n\n return isPolygonsIntersect(polyPoints, shapePoints);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n delegateStyle: {\n fill: '#EEF6FF',\n fillOpacity: 0.4,\n stroke: '#DDEEFE',\n lineWidth: 1\n },\n onSelect: function onSelect() {},\n onDeselect: function onDeselect() {},\n selectedState: 'selected',\n trigger: DEFAULT_TRIGGER,\n includeEdges: true,\n selectedEdges: [],\n selectedNodes: [] // multiple: false,\n\n };\n },\n getEvents: function getEvents() {\n // 检测输入是否合法\n if (!(ALLOW_EVENTS.indexOf(this.trigger.toLowerCase()) > -1)) {\n this.trigger = DEFAULT_TRIGGER;\n console.warn(\"Behavior lasso-select 的 trigger 参数不合法,请输入 'drag'、'shift'、'ctrl' 或 'alt'\");\n }\n\n if (this.trigger === 'drag') {\n return {\n dragstart: 'onDragStart',\n drag: 'onDragMove',\n dragend: 'onDragEnd',\n 'canvas:click': 'clearStates'\n };\n }\n\n return {\n dragstart: 'onDragStart',\n drag: 'onDragMove',\n dragend: 'onDragEnd',\n keyup: 'onKeyUp',\n keydown: 'onKeyDown',\n 'canvas:click': 'clearStates'\n };\n },\n onDragStart: function onDragStart(e) {\n var lasso = this.lasso;\n var item = e.item; // 排除在节点上拖动\n\n if (item) {\n return;\n }\n\n if (this.trigger !== 'drag' && !this.keydown) {\n return;\n }\n\n if (this.selectedNodes && this.selectedNodes.length !== 0) {\n this.clearStates();\n }\n\n if (!lasso) {\n lasso = this.createLasso();\n }\n\n this.dragging = true;\n this.originPoint = {\n x: e.x,\n y: e.y\n };\n this.points.push(this.originPoint);\n lasso.show();\n },\n onDragMove: function onDragMove(e) {\n if (!this.dragging) {\n return;\n }\n\n if (this.trigger !== 'drag' && !this.keydown) {\n return;\n }\n\n this.points.push({\n x: e.x,\n y: e.y\n });\n this.updateLasso(e);\n },\n onDragEnd: function onDragEnd(e) {\n if (!this.lasso && !this.dragging) {\n return;\n }\n\n if (this.trigger !== 'drag' && !this.keydown) {\n return;\n }\n\n this.points.push(this.originPoint);\n this.getSelectedItems();\n this.lasso.remove(true);\n this.lasso = null;\n this.points = [];\n this.dragging = false;\n },\n getLassoPath: function getLassoPath() {\n var points = this.points;\n var path = [];\n\n if (points.length) {\n points.forEach(function (point, index) {\n if (index === 0) {\n path.push(['M', point.x, point.y]);\n } else {\n path.push(['L', point.x, point.y]);\n }\n });\n path.push(['L', points[0].x, points[0].y]);\n }\n\n return path;\n },\n clearStates: function clearStates() {\n var _a = this,\n graph = _a.graph,\n selectedState = _a.selectedState;\n\n var nodes = graph.findAllByState('node', selectedState);\n var edges = graph.findAllByState('edge', selectedState);\n nodes.forEach(function (node) {\n return graph.setItemState(node, selectedState, false);\n });\n edges.forEach(function (edge) {\n return graph.setItemState(edge, selectedState, false);\n });\n\n if (this.onDeselect) {\n this.onDeselect(this.selectedNodes, this.selectedEdges);\n }\n\n this.selectedNodes = [];\n this.selectedEdges = [];\n graph.emit('nodeselectchange', {\n selectedItems: {\n nodes: [],\n edges: []\n },\n select: false\n });\n },\n getSelectedItems: function getSelectedItems() {\n var _this = this;\n\n var _a = this,\n graph = _a.graph,\n shouldUpdate = _a.shouldUpdate;\n\n var lassoContour = this.points.map(function (point) {\n return [graph.getCanvasByPoint(point.x, point.y).x, graph.getCanvasByPoint(point.x, point.y).y];\n });\n var state = this.selectedState;\n var selectedNodes = [];\n var selectedIds = [];\n graph.getNodes().forEach(function (node) {\n if (!node.isVisible()) return; // 隐藏节点不能被选中\n\n if (isItemIntersecPolygon(node, lassoContour)) {\n if (shouldUpdate(node, 'select')) {\n selectedNodes.push(node);\n var model = node.getModel();\n selectedIds.push(model.id);\n graph.setItemState(node, state, true);\n }\n }\n });\n var selectedEdges = [];\n\n if (this.includeEdges) {\n // 选中边,边的source和target都在选中的节点中时才选中\n selectedNodes.forEach(function (node) {\n var edges = node.getOutEdges();\n edges.forEach(function (edge) {\n if (!edge.isVisible()) return; // 隐藏边不能够被选中\n\n var model = edge.getModel();\n var source = model.source,\n target = model.target;\n\n if (selectedIds.includes(source) && selectedIds.includes(target) && shouldUpdate(edge, 'select')) {\n selectedEdges.push(edge);\n graph.setItemState(edge, _this.selectedState, true);\n }\n });\n });\n }\n\n this.selectedEdges = selectedEdges;\n this.selectedNodes = selectedNodes;\n\n if (this.onSelect) {\n this.onSelect(selectedNodes, selectedEdges);\n }\n\n graph.emit('nodeselectchange', {\n selectedItems: {\n nodes: selectedNodes,\n edges: selectedEdges\n },\n select: true\n });\n },\n createLasso: function createLasso() {\n var self = this;\n var lasso = self.graph.get('delegateGroup').addShape('path', {\n attrs: Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n path: []\n }, self.delegateStyle),\n capture: false,\n name: 'lasso-shape'\n });\n this.lasso = lasso;\n this.delegate = lasso;\n this.points = [];\n return lasso;\n },\n updateLasso: function updateLasso(e) {\n var self = this;\n this.lasso.attr({\n path: self.getLassoPath()\n });\n },\n onKeyDown: function onKeyDown(e) {\n var code = e.key;\n\n if (!code) {\n return;\n } // if (this.selectedNodes && this.selectedNodes.length !== 0) {\n // this.clearStates();\n // }\n\n\n if (code.toLowerCase() === this.trigger.toLowerCase()) {\n this.keydown = true;\n } else {\n this.keydown = false;\n }\n },\n onKeyUp: function onKeyUp() {\n if (this.lasso) {\n // 清除所有选中状态后,设置拖得动状态为false,并清除框选的lasso\n this.lasso.remove(true);\n this.lasso = null;\n this.points = [];\n this.dragging = false;\n }\n\n this.keydown = false;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL2xhc3NvLXNlbGVjdC5qcz80MzYzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFpQztBQUNOO0FBQzNCLDBCQUEwQiw2Q0FBSTtBQUM5QixtQkFBbUIsNkNBQUk7QUFDdkI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLHNDQUFzQztBQUN0QywwQ0FBMEM7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxzQkFBc0I7O0FBRXRCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DOztBQUVwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7O0FBRXhDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLGFBQWEsc0RBQVE7QUFDckI7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1wY0AwLjUuMEBAYW50di9nNi1wYy9lcy9iZWhhdmlvci9sYXNzby1zZWxlY3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IFV0aWwgZnJvbSAnLi4vdXRpbCc7XG52YXIgaXNQb2x5Z29uc0ludGVyc2VjdCA9IFV0aWwuaXNQb2x5Z29uc0ludGVyc2VjdCxcbiAgICBwYXRoVG9Qb2ludHMgPSBVdGlsLnBhdGhUb1BvaW50cztcbnZhciBERUZBVUxUX1RSSUdHRVIgPSAnc2hpZnQnO1xudmFyIEFMTE9XX0VWRU5UUyA9IFsnZHJhZycsICdzaGlmdCcsICdjdHJsJywgJ2FsdCcsICdjb250cm9sJ107XG5cbnZhciBpc0l0ZW1JbnRlcnNlY1BvbHlnb24gPSBmdW5jdGlvbiBpc0l0ZW1JbnRlcnNlY1BvbHlnb24oaXRlbSwgcG9seVBvaW50cykge1xuICB2YXIgc2hhcGVQb2ludHM7XG4gIHZhciBzaGFwZSA9IGl0ZW0uZ2V0S2V5U2hhcGUoKTtcblxuICBpZiAoaXRlbS5nZXQoJ3R5cGUnKSA9PT0gJ3BhdGgnKSB7XG4gICAgc2hhcGVQb2ludHMgPSBwYXRoVG9Qb2ludHMoc2hhcGUuYXR0cigncGF0aCcpKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgc2hhcGVCQm94ID0gc2hhcGUuZ2V0Q2FudmFzQkJveCgpO1xuICAgIHNoYXBlUG9pbnRzID0gW1tzaGFwZUJCb3gubWluWCwgc2hhcGVCQm94Lm1pblldLCBbc2hhcGVCQm94Lm1heFgsIHNoYXBlQkJveC5taW5ZXSwgW3NoYXBlQkJveC5tYXhYLCBzaGFwZUJCb3gubWF4WV0sIFtzaGFwZUJCb3gubWluWCwgc2hhcGVCQm94Lm1heFldXTtcbiAgfVxuXG4gIHJldHVybiBpc1BvbHlnb25zSW50ZXJzZWN0KHBvbHlQb2ludHMsIHNoYXBlUG9pbnRzKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0RGVmYXVsdENmZzogZnVuY3Rpb24gZ2V0RGVmYXVsdENmZygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGVsZWdhdGVTdHlsZToge1xuICAgICAgICBmaWxsOiAnI0VFRjZGRicsXG4gICAgICAgIGZpbGxPcGFjaXR5OiAwLjQsXG4gICAgICAgIHN0cm9rZTogJyNEREVFRkUnLFxuICAgICAgICBsaW5lV2lkdGg6IDFcbiAgICAgIH0sXG4gICAgICBvblNlbGVjdDogZnVuY3Rpb24gb25TZWxlY3QoKSB7fSxcbiAgICAgIG9uRGVzZWxlY3Q6IGZ1bmN0aW9uIG9uRGVzZWxlY3QoKSB7fSxcbiAgICAgIHNlbGVjdGVkU3RhdGU6ICdzZWxlY3RlZCcsXG4gICAgICB0cmlnZ2VyOiBERUZBVUxUX1RSSUdHRVIsXG4gICAgICBpbmNsdWRlRWRnZXM6IHRydWUsXG4gICAgICBzZWxlY3RlZEVkZ2VzOiBbXSxcbiAgICAgIHNlbGVjdGVkTm9kZXM6IFtdIC8vIG11bHRpcGxlOiBmYWxzZSxcblxuICAgIH07XG4gIH0sXG4gIGdldEV2ZW50czogZnVuY3Rpb24gZ2V0RXZlbnRzKCkge1xuICAgIC8vIOajgOa1i+i+k+WFpeaYr+WQpuWQiOazlVxuICAgIGlmICghKEFMTE9XX0VWRU5UUy5pbmRleE9mKHRoaXMudHJpZ2dlci50b0xvd2VyQ2FzZSgpKSA+IC0xKSkge1xuICAgICAgdGhpcy50cmlnZ2VyID0gREVGQVVMVF9UUklHR0VSO1xuICAgICAgY29uc29sZS53YXJuKFwiQmVoYXZpb3IgbGFzc28tc2VsZWN0IOeahCB0cmlnZ2VyIOWPguaVsOS4jeWQiOazle+8jOivt+i+k+WFpSAnZHJhZyfjgIEnc2hpZnQn44CBJ2N0cmwnIOaIliAnYWx0J1wiKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50cmlnZ2VyID09PSAnZHJhZycpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRyYWdzdGFydDogJ29uRHJhZ1N0YXJ0JyxcbiAgICAgICAgZHJhZzogJ29uRHJhZ01vdmUnLFxuICAgICAgICBkcmFnZW5kOiAnb25EcmFnRW5kJyxcbiAgICAgICAgJ2NhbnZhczpjbGljayc6ICdjbGVhclN0YXRlcydcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRyYWdzdGFydDogJ29uRHJhZ1N0YXJ0JyxcbiAgICAgIGRyYWc6ICdvbkRyYWdNb3ZlJyxcbiAgICAgIGRyYWdlbmQ6ICdvbkRyYWdFbmQnLFxuICAgICAga2V5dXA6ICdvbktleVVwJyxcbiAgICAgIGtleWRvd246ICdvbktleURvd24nLFxuICAgICAgJ2NhbnZhczpjbGljayc6ICdjbGVhclN0YXRlcydcbiAgICB9O1xuICB9LFxuICBvbkRyYWdTdGFydDogZnVuY3Rpb24gb25EcmFnU3RhcnQoZSkge1xuICAgIHZhciBsYXNzbyA9IHRoaXMubGFzc287XG4gICAgdmFyIGl0ZW0gPSBlLml0ZW07IC8vIOaOkumZpOWcqOiKgueCueS4iuaLluWKqFxuXG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50cmlnZ2VyICE9PSAnZHJhZycgJiYgIXRoaXMua2V5ZG93bikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNlbGVjdGVkTm9kZXMgJiYgdGhpcy5zZWxlY3RlZE5vZGVzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgdGhpcy5jbGVhclN0YXRlcygpO1xuICAgIH1cblxuICAgIGlmICghbGFzc28pIHtcbiAgICAgIGxhc3NvID0gdGhpcy5jcmVhdGVMYXNzbygpO1xuICAgIH1cblxuICAgIHRoaXMuZHJhZ2dpbmcgPSB0cnVlO1xuICAgIHRoaXMub3JpZ2luUG9pbnQgPSB7XG4gICAgICB4OiBlLngsXG4gICAgICB5OiBlLnlcbiAgICB9O1xuICAgIHRoaXMucG9pbnRzLnB1c2godGhpcy5vcmlnaW5Qb2ludCk7XG4gICAgbGFzc28uc2hvdygpO1xuICB9LFxuICBvbkRyYWdNb3ZlOiBmdW5jdGlvbiBvbkRyYWdNb3ZlKGUpIHtcbiAgICBpZiAoIXRoaXMuZHJhZ2dpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50cmlnZ2VyICE9PSAnZHJhZycgJiYgIXRoaXMua2V5ZG93bikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucG9pbnRzLnB1c2goe1xuICAgICAgeDogZS54LFxuICAgICAgeTogZS55XG4gICAgfSk7XG4gICAgdGhpcy51cGRhdGVMYXNzbyhlKTtcbiAgfSxcbiAgb25EcmFnRW5kOiBmdW5jdGlvbiBvbkRyYWdFbmQoZSkge1xuICAgIGlmICghdGhpcy5sYXNzbyAmJiAhdGhpcy5kcmFnZ2luZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRyaWdnZXIgIT09ICdkcmFnJyAmJiAhdGhpcy5rZXlkb3duKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wb2ludHMucHVzaCh0aGlzLm9yaWdpblBvaW50KTtcbiAgICB0aGlzLmdldFNlbGVjdGVkSXRlbXMoKTtcbiAgICB0aGlzLmxhc3NvLnJlbW92ZSh0cnVlKTtcbiAgICB0aGlzLmxhc3NvID0gbnVsbDtcbiAgICB0aGlzLnBvaW50cyA9IFtdO1xuICAgIHRoaXMuZHJhZ2dpbmcgPSBmYWxzZTtcbiAgfSxcbiAgZ2V0TGFzc29QYXRoOiBmdW5jdGlvbiBnZXRMYXNzb1BhdGgoKSB7XG4gICAgdmFyIHBvaW50cyA9IHRoaXMucG9pbnRzO1xuICAgIHZhciBwYXRoID0gW107XG5cbiAgICBpZiAocG9pbnRzLmxlbmd0aCkge1xuICAgICAgcG9pbnRzLmZvckVhY2goZnVuY3Rpb24gKHBvaW50LCBpbmRleCkge1xuICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICBwYXRoLnB1c2goWydNJywgcG9pbnQueCwgcG9pbnQueV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBhdGgucHVzaChbJ0wnLCBwb2ludC54LCBwb2ludC55XSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcGF0aC5wdXNoKFsnTCcsIHBvaW50c1swXS54LCBwb2ludHNbMF0ueV0pO1xuICAgIH1cblxuICAgIHJldHVybiBwYXRoO1xuICB9LFxuICBjbGVhclN0YXRlczogZnVuY3Rpb24gY2xlYXJTdGF0ZXMoKSB7XG4gICAgdmFyIF9hID0gdGhpcyxcbiAgICAgICAgZ3JhcGggPSBfYS5ncmFwaCxcbiAgICAgICAgc2VsZWN0ZWRTdGF0ZSA9IF9hLnNlbGVjdGVkU3RhdGU7XG5cbiAgICB2YXIgbm9kZXMgPSBncmFwaC5maW5kQWxsQnlTdGF0ZSgnbm9kZScsIHNlbGVjdGVkU3RhdGUpO1xuICAgIHZhciBlZGdlcyA9IGdyYXBoLmZpbmRBbGxCeVN0YXRlKCdlZGdlJywgc2VsZWN0ZWRTdGF0ZSk7XG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgcmV0dXJuIGdyYXBoLnNldEl0ZW1TdGF0ZShub2RlLCBzZWxlY3RlZFN0YXRlLCBmYWxzZSk7XG4gICAgfSk7XG4gICAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgcmV0dXJuIGdyYXBoLnNldEl0ZW1TdGF0ZShlZGdlLCBzZWxlY3RlZFN0YXRlLCBmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5vbkRlc2VsZWN0KSB7XG4gICAgICB0aGlzLm9uRGVzZWxlY3QodGhpcy5zZWxlY3RlZE5vZGVzLCB0aGlzLnNlbGVjdGVkRWRnZXMpO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRFZGdlcyA9IFtdO1xuICAgIGdyYXBoLmVtaXQoJ25vZGVzZWxlY3RjaGFuZ2UnLCB7XG4gICAgICBzZWxlY3RlZEl0ZW1zOiB7XG4gICAgICAgIG5vZGVzOiBbXSxcbiAgICAgICAgZWRnZXM6IFtdXG4gICAgICB9LFxuICAgICAgc2VsZWN0OiBmYWxzZVxuICAgIH0pO1xuICB9LFxuICBnZXRTZWxlY3RlZEl0ZW1zOiBmdW5jdGlvbiBnZXRTZWxlY3RlZEl0ZW1zKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgX2EgPSB0aGlzLFxuICAgICAgICBncmFwaCA9IF9hLmdyYXBoLFxuICAgICAgICBzaG91bGRVcGRhdGUgPSBfYS5zaG91bGRVcGRhdGU7XG5cbiAgICB2YXIgbGFzc29Db250b3VyID0gdGhpcy5wb2ludHMubWFwKGZ1bmN0aW9uIChwb2ludCkge1xuICAgICAgcmV0dXJuIFtncmFwaC5nZXRDYW52YXNCeVBvaW50KHBvaW50LngsIHBvaW50LnkpLngsIGdyYXBoLmdldENhbnZhc0J5UG9pbnQocG9pbnQueCwgcG9pbnQueSkueV07XG4gICAgfSk7XG4gICAgdmFyIHN0YXRlID0gdGhpcy5zZWxlY3RlZFN0YXRlO1xuICAgIHZhciBzZWxlY3RlZE5vZGVzID0gW107XG4gICAgdmFyIHNlbGVjdGVkSWRzID0gW107XG4gICAgZ3JhcGguZ2V0Tm9kZXMoKS5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICBpZiAoIW5vZGUuaXNWaXNpYmxlKCkpIHJldHVybjsgLy8g6ZqQ6JeP6IqC54K55LiN6IO96KKr6YCJ5LitXG5cbiAgICAgIGlmIChpc0l0ZW1JbnRlcnNlY1BvbHlnb24obm9kZSwgbGFzc29Db250b3VyKSkge1xuICAgICAgICBpZiAoc2hvdWxkVXBkYXRlKG5vZGUsICdzZWxlY3QnKSkge1xuICAgICAgICAgIHNlbGVjdGVkTm9kZXMucHVzaChub2RlKTtcbiAgICAgICAgICB2YXIgbW9kZWwgPSBub2RlLmdldE1vZGVsKCk7XG4gICAgICAgICAgc2VsZWN0ZWRJZHMucHVzaChtb2RlbC5pZCk7XG4gICAgICAgICAgZ3JhcGguc2V0SXRlbVN0YXRlKG5vZGUsIHN0YXRlLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHZhciBzZWxlY3RlZEVkZ2VzID0gW107XG5cbiAgICBpZiAodGhpcy5pbmNsdWRlRWRnZXMpIHtcbiAgICAgIC8vIOmAieS4rei+ue+8jOi+ueeahHNvdXJjZeWSjHRhcmdldOmDveWcqOmAieS4reeahOiKgueCueS4reaXtuaJjemAieS4rVxuICAgICAgc2VsZWN0ZWROb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHZhciBlZGdlcyA9IG5vZGUuZ2V0T3V0RWRnZXMoKTtcbiAgICAgICAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgIGlmICghZWRnZS5pc1Zpc2libGUoKSkgcmV0dXJuOyAvLyDpmpDol4/ovrnkuI3og73lpJ/ooqvpgInkuK1cblxuICAgICAgICAgIHZhciBtb2RlbCA9IGVkZ2UuZ2V0TW9kZWwoKTtcbiAgICAgICAgICB2YXIgc291cmNlID0gbW9kZWwuc291cmNlLFxuICAgICAgICAgICAgICB0YXJnZXQgPSBtb2RlbC50YXJnZXQ7XG5cbiAgICAgICAgICBpZiAoc2VsZWN0ZWRJZHMuaW5jbHVkZXMoc291cmNlKSAmJiBzZWxlY3RlZElkcy5pbmNsdWRlcyh0YXJnZXQpICYmIHNob3VsZFVwZGF0ZShlZGdlLCAnc2VsZWN0JykpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkRWRnZXMucHVzaChlZGdlKTtcbiAgICAgICAgICAgIGdyYXBoLnNldEl0ZW1TdGF0ZShlZGdlLCBfdGhpcy5zZWxlY3RlZFN0YXRlLCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3RlZEVkZ2VzID0gc2VsZWN0ZWRFZGdlcztcbiAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSBzZWxlY3RlZE5vZGVzO1xuXG4gICAgaWYgKHRoaXMub25TZWxlY3QpIHtcbiAgICAgIHRoaXMub25TZWxlY3Qoc2VsZWN0ZWROb2Rlcywgc2VsZWN0ZWRFZGdlcyk7XG4gICAgfVxuXG4gICAgZ3JhcGguZW1pdCgnbm9kZXNlbGVjdGNoYW5nZScsIHtcbiAgICAgIHNlbGVjdGVkSXRlbXM6IHtcbiAgICAgICAgbm9kZXM6IHNlbGVjdGVkTm9kZXMsXG4gICAgICAgIGVkZ2VzOiBzZWxlY3RlZEVkZ2VzXG4gICAgICB9LFxuICAgICAgc2VsZWN0OiB0cnVlXG4gICAgfSk7XG4gIH0sXG4gIGNyZWF0ZUxhc3NvOiBmdW5jdGlvbiBjcmVhdGVMYXNzbygpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGxhc3NvID0gc2VsZi5ncmFwaC5nZXQoJ2RlbGVnYXRlR3JvdXAnKS5hZGRTaGFwZSgncGF0aCcsIHtcbiAgICAgIGF0dHJzOiBfX2Fzc2lnbih7XG4gICAgICAgIHBhdGg6IFtdXG4gICAgICB9LCBzZWxmLmRlbGVnYXRlU3R5bGUpLFxuICAgICAgY2FwdHVyZTogZmFsc2UsXG4gICAgICBuYW1lOiAnbGFzc28tc2hhcGUnXG4gICAgfSk7XG4gICAgdGhpcy5sYXNzbyA9IGxhc3NvO1xuICAgIHRoaXMuZGVsZWdhdGUgPSBsYXNzbztcbiAgICB0aGlzLnBvaW50cyA9IFtdO1xuICAgIHJldHVybiBsYXNzbztcbiAgfSxcbiAgdXBkYXRlTGFzc286IGZ1bmN0aW9uIHVwZGF0ZUxhc3NvKGUpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdGhpcy5sYXNzby5hdHRyKHtcbiAgICAgIHBhdGg6IHNlbGYuZ2V0TGFzc29QYXRoKClcbiAgICB9KTtcbiAgfSxcbiAgb25LZXlEb3duOiBmdW5jdGlvbiBvbktleURvd24oZSkge1xuICAgIHZhciBjb2RlID0gZS5rZXk7XG5cbiAgICBpZiAoIWNvZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIGlmICh0aGlzLnNlbGVjdGVkTm9kZXMgJiYgdGhpcy5zZWxlY3RlZE5vZGVzLmxlbmd0aCAhPT0gMCkge1xuICAgIC8vICAgdGhpcy5jbGVhclN0YXRlcygpO1xuICAgIC8vIH1cblxuXG4gICAgaWYgKGNvZGUudG9Mb3dlckNhc2UoKSA9PT0gdGhpcy50cmlnZ2VyLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIHRoaXMua2V5ZG93biA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMua2V5ZG93biA9IGZhbHNlO1xuICAgIH1cbiAgfSxcbiAgb25LZXlVcDogZnVuY3Rpb24gb25LZXlVcCgpIHtcbiAgICBpZiAodGhpcy5sYXNzbykge1xuICAgICAgLy8g5riF6Zmk5omA5pyJ6YCJ5Lit54q25oCB5ZCO77yM6K6+572u5ouW5b6X5Yqo54q25oCB5Li6ZmFsc2XvvIzlubbmuIXpmaTmoYbpgInnmoRsYXNzb1xuICAgICAgdGhpcy5sYXNzby5yZW1vdmUodHJ1ZSk7XG4gICAgICB0aGlzLmxhc3NvID0gbnVsbDtcbiAgICAgIHRoaXMucG9pbnRzID0gW107XG4gICAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5rZXlkb3duID0gZmFsc2U7XG4gIH1cbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/lasso-select.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/scroll-canvas.js":
/*!**********************************************************************************!*\
!*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/scroll-canvas.js ***!
\**********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar ALLOW_EVENTS = ['shift', 'ctrl', 'alt', 'control'];\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n direction: 'both',\n enableOptimize: false,\n zoomKey: 'ctrl',\n // scroll-canvas 可滚动的扩展范围,默认为 0,即最多可以滚动一屏的位置\n // 当设置的值大于 0 时,即滚动可以超过一屏\n // 当设置的值小于 0 时,相当于缩小了可滚动范围\n // 具体实例可参考:https://gw.alipayobjects.com/mdn/rms_f8c6a0/afts/img/A*IFfoS67_HssAAAAAAAAAAAAAARQnAQ\n scalableRange: 0\n };\n },\n getEvents: function getEvents() {\n if (!this.zoomKey || ALLOW_EVENTS.indexOf(this.zoomKey) === -1) this.zoomKey = 'ctrl';\n return {\n wheel: 'onWheel'\n };\n },\n onWheel: function onWheel(ev) {\n var _this = this;\n\n var graph = this.graph;\n var keyDown = ev[this.zoomKey + \"Key\"];\n if (this.zoomKey === 'control') keyDown = ev.ctrlKey;\n\n if (keyDown) {\n var canvas = graph.get('canvas');\n var point = canvas.getPointByClient(ev.clientX, ev.clientY);\n var ratio = graph.getZoom();\n\n if (ev.wheelDelta > 0) {\n ratio = ratio + ratio * 0.05;\n } else {\n ratio = ratio - ratio * 0.05;\n }\n\n graph.zoomTo(ratio, {\n x: point.x,\n y: point.y\n });\n } else {\n var dx = ev.deltaX || ev.movementX;\n var dy = ev.deltaY || ev.movementY;\n if (!dy && navigator.userAgent.indexOf('Firefox') > -1) dy = -ev.wheelDelta * 125 / 3;\n var width = this.graph.get('width');\n var height = this.graph.get('height');\n var graphCanvasBBox = this.graph.get('canvas').getCanvasBBox();\n var expandWidth = this.scalableRange;\n var expandHeight = this.scalableRange; // 若 scalableRange 是 0~1 的小数,则作为比例考虑\n\n if (expandWidth < 1 && expandWidth > -1) {\n expandWidth = width * expandWidth;\n expandHeight = height * expandHeight;\n }\n\n var minX = graphCanvasBBox.minX,\n maxX = graphCanvasBBox.maxX,\n minY = graphCanvasBBox.minY,\n maxY = graphCanvasBBox.maxY;\n\n if (dx > 0) {\n if (maxX < -expandWidth) {\n dx = 0;\n } else if (maxX - dx < -expandWidth) {\n dx = maxX + expandWidth;\n }\n } else if (dx < 0) {\n if (minX > width + expandWidth) {\n dx = 0;\n } else if (minX - dx > width + expandWidth) {\n dx = minX - (width + expandWidth);\n }\n }\n\n if (dy > 0) {\n if (maxY < -expandHeight) {\n dy = 0;\n } else if (maxY - dy < -expandHeight) {\n dy = maxY + expandHeight;\n }\n } else if (dy < 0) {\n if (minY > height + expandHeight) {\n dy = 0;\n } else if (minY - dy > height + expandHeight) {\n dy = minY - (height + expandHeight);\n }\n }\n\n if (this.get('direction') === 'x') {\n dy = 0;\n } else if (this.get('direction') === 'y') {\n dx = 0;\n }\n\n graph.translate(-dx, -dy);\n }\n\n ev.preventDefault(); // hide the shapes when the zoom ratio is smaller than optimizeZoom\n // hide the shapes when zoomming\n\n var enableOptimize = this.get('enableOptimize');\n\n if (enableOptimize) {\n var optimizeZoom_1 = this.get('optimizeZoom');\n var optimized = this.get('optimized');\n var nodes_1 = graph.getNodes();\n var edges_1 = graph.getEdges();\n var nodesLength_1 = nodes_1.length;\n var edgesLength_1 = edges_1.length; // hiding\n\n if (!optimized) {\n for (var n = 0; n < nodesLength_1; n++) {\n var node = nodes_1[n];\n\n if (!node.destroyed) {\n var children = node.get('group').get('children');\n var childrenLength = children.length;\n\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n\n if (!shape.destoryed && !shape.get('isKeyShape')) {\n shape.set('ori-visibility', shape.get('ori-visibility') || shape.get('visible'));\n shape.hide();\n }\n }\n }\n }\n\n for (var edgeIndex = 0; edgeIndex < edgesLength_1; edgeIndex++) {\n var edge = edges_1[edgeIndex];\n var children = edge.get('group').get('children');\n var childrenLength = children.length;\n\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n shape.set('ori-visibility', shape.get('ori-visibility') || shape.get('visible'));\n shape.hide();\n }\n }\n\n this.set('optimized', true);\n } // showing after 100ms\n\n\n clearTimeout(this.get('timeout'));\n var timeout = setTimeout(function () {\n var currentZoom = graph.getZoom();\n\n var curOptimized = _this.get('optimized');\n\n if (curOptimized) {\n _this.set('optimized', false);\n\n for (var n = 0; n < nodesLength_1; n++) {\n var node = nodes_1[n];\n var children = node.get('group').get('children');\n var childrenLength = children.length;\n\n if (currentZoom < optimizeZoom_1) {\n var keyShape = node.getKeyShape();\n var oriVis = keyShape.get('ori-visibility');\n if (oriVis) keyShape.show();\n } else {\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n var oriVis = shape.get('ori-visibility');\n\n if (!shape.get('visible') && oriVis) {\n if (oriVis) shape.show();\n }\n }\n }\n }\n\n for (var edgeIndex = 0; edgeIndex < edgesLength_1; edgeIndex++) {\n var edge = edges_1[edgeIndex];\n var children = edge.get('group').get('children');\n var childrenLength = children.length;\n\n if (currentZoom < optimizeZoom_1) {\n var keyShape = edge.getKeyShape();\n var oriVis = keyShape.get('ori-visibility');\n if (oriVis) keyShape.show();\n } else {\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n\n if (!shape.get('visible')) {\n var oriVis = shape.get('ori-visibility');\n if (oriVis) shape.show();\n }\n }\n }\n }\n }\n }, 100);\n this.set('timeout', timeout);\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL3Njcm9sbC1jYW52YXMuanM/NmZmOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEM7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHdCQUF3QjtBQUN4Qjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7O0FBRXpDO0FBQ0EsdUJBQXVCLG1CQUFtQjtBQUMxQzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsMkJBQTJCLG9CQUFvQjtBQUMvQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwrQkFBK0IsMkJBQTJCO0FBQzFEO0FBQ0E7QUFDQTs7QUFFQSx5QkFBeUIsb0JBQW9CO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQSx5QkFBeUIsbUJBQW1CO0FBQzVDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYiw2QkFBNkIsb0JBQW9CO0FBQ2pEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlDQUFpQywyQkFBMkI7QUFDNUQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLDZCQUE2QixvQkFBb0I7QUFDakQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1wY0AwLjUuMEBAYW50di9nNi1wYy9lcy9iZWhhdmlvci9zY3JvbGwtY2FudmFzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIEFMTE9XX0VWRU5UUyA9IFsnc2hpZnQnLCAnY3RybCcsICdhbHQnLCAnY29udHJvbCddO1xuZXhwb3J0IGRlZmF1bHQge1xuICBnZXREZWZhdWx0Q2ZnOiBmdW5jdGlvbiBnZXREZWZhdWx0Q2ZnKCkge1xuICAgIHJldHVybiB7XG4gICAgICBkaXJlY3Rpb246ICdib3RoJyxcbiAgICAgIGVuYWJsZU9wdGltaXplOiBmYWxzZSxcbiAgICAgIHpvb21LZXk6ICdjdHJsJyxcbiAgICAgIC8vIHNjcm9sbC1jYW52YXMg5Y+v5rua5Yqo55qE5omp5bGV6IyD5Zu077yM6buY6K6k5Li6IDDvvIzljbPmnIDlpJrlj6/ku6Xmu5rliqjkuIDlsY/nmoTkvY3nva5cbiAgICAgIC8vIOW9k+iuvue9rueahOWAvOWkp+S6jiAwIOaXtu+8jOWNs+a7muWKqOWPr+S7pei2hei/h+S4gOWxj1xuICAgICAgLy8g5b2T6K6+572u55qE5YC85bCP5LqOIDAg5pe277yM55u45b2T5LqO57yp5bCP5LqG5Y+v5rua5Yqo6IyD5Zu0XG4gICAgICAvLyDlhbfkvZPlrp7kvovlj6/lj4LogIPvvJpodHRwczovL2d3LmFsaXBheW9iamVjdHMuY29tL21kbi9ybXNfZjhjNmEwL2FmdHMvaW1nL0EqSUZmb1M2N19Ic3NBQUFBQUFBQUFBQUFBQVJRbkFRXG4gICAgICBzY2FsYWJsZVJhbmdlOiAwXG4gICAgfTtcbiAgfSxcbiAgZ2V0RXZlbnRzOiBmdW5jdGlvbiBnZXRFdmVudHMoKSB7XG4gICAgaWYgKCF0aGlzLnpvb21LZXkgfHwgQUxMT1dfRVZFTlRTLmluZGV4T2YodGhpcy56b29tS2V5KSA9PT0gLTEpIHRoaXMuem9vbUtleSA9ICdjdHJsJztcbiAgICByZXR1cm4ge1xuICAgICAgd2hlZWw6ICdvbldoZWVsJ1xuICAgIH07XG4gIH0sXG4gIG9uV2hlZWw6IGZ1bmN0aW9uIG9uV2hlZWwoZXYpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcbiAgICB2YXIga2V5RG93biA9IGV2W3RoaXMuem9vbUtleSArIFwiS2V5XCJdO1xuICAgIGlmICh0aGlzLnpvb21LZXkgPT09ICdjb250cm9sJykga2V5RG93biA9IGV2LmN0cmxLZXk7XG5cbiAgICBpZiAoa2V5RG93bikge1xuICAgICAgdmFyIGNhbnZhcyA9IGdyYXBoLmdldCgnY2FudmFzJyk7XG4gICAgICB2YXIgcG9pbnQgPSBjYW52YXMuZ2V0UG9pbnRCeUNsaWVudChldi5jbGllbnRYLCBldi5jbGllbnRZKTtcbiAgICAgIHZhciByYXRpbyA9IGdyYXBoLmdldFpvb20oKTtcblxuICAgICAgaWYgKGV2LndoZWVsRGVsdGEgPiAwKSB7XG4gICAgICAgIHJhdGlvID0gcmF0aW8gKyByYXRpbyAqIDAuMDU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByYXRpbyA9IHJhdGlvIC0gcmF0aW8gKiAwLjA1O1xuICAgICAgfVxuXG4gICAgICBncmFwaC56b29tVG8ocmF0aW8sIHtcbiAgICAgICAgeDogcG9pbnQueCxcbiAgICAgICAgeTogcG9pbnQueVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBkeCA9IGV2LmRlbHRhWCB8fCBldi5tb3ZlbWVudFg7XG4gICAgICB2YXIgZHkgPSBldi5kZWx0YVkgfHwgZXYubW92ZW1lbnRZO1xuICAgICAgaWYgKCFkeSAmJiBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0ZpcmVmb3gnKSA+IC0xKSBkeSA9IC1ldi53aGVlbERlbHRhICogMTI1IC8gMztcbiAgICAgIHZhciB3aWR0aCA9IHRoaXMuZ3JhcGguZ2V0KCd3aWR0aCcpO1xuICAgICAgdmFyIGhlaWdodCA9IHRoaXMuZ3JhcGguZ2V0KCdoZWlnaHQnKTtcbiAgICAgIHZhciBncmFwaENhbnZhc0JCb3ggPSB0aGlzLmdyYXBoLmdldCgnY2FudmFzJykuZ2V0Q2FudmFzQkJveCgpO1xuICAgICAgdmFyIGV4cGFuZFdpZHRoID0gdGhpcy5zY2FsYWJsZVJhbmdlO1xuICAgICAgdmFyIGV4cGFuZEhlaWdodCA9IHRoaXMuc2NhbGFibGVSYW5nZTsgLy8g6IulIHNjYWxhYmxlUmFuZ2Ug5pivIDB+MSDnmoTlsI/mlbDvvIzliJnkvZzkuLrmr5TkvovogIPomZFcblxuICAgICAgaWYgKGV4cGFuZFdpZHRoIDwgMSAmJiBleHBhbmRXaWR0aCA+IC0xKSB7XG4gICAgICAgIGV4cGFuZFdpZHRoID0gd2lkdGggKiBleHBhbmRXaWR0aDtcbiAgICAgICAgZXhwYW5kSGVpZ2h0ID0gaGVpZ2h0ICogZXhwYW5kSGVpZ2h0O1xuICAgICAgfVxuXG4gICAgICB2YXIgbWluWCA9IGdyYXBoQ2FudmFzQkJveC5taW5YLFxuICAgICAgICAgIG1heFggPSBncmFwaENhbnZhc0JCb3gubWF4WCxcbiAgICAgICAgICBtaW5ZID0gZ3JhcGhDYW52YXNCQm94Lm1pblksXG4gICAgICAgICAgbWF4WSA9IGdyYXBoQ2FudmFzQkJveC5tYXhZO1xuXG4gICAgICBpZiAoZHggPiAwKSB7XG4gICAgICAgIGlmIChtYXhYIDwgLWV4cGFuZFdpZHRoKSB7XG4gICAgICAgICAgZHggPSAwO1xuICAgICAgICB9IGVsc2UgaWYgKG1heFggLSBkeCA8IC1leHBhbmRXaWR0aCkge1xuICAgICAgICAgIGR4ID0gbWF4WCArIGV4cGFuZFdpZHRoO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGR4IDwgMCkge1xuICAgICAgICBpZiAobWluWCA+IHdpZHRoICsgZXhwYW5kV2lkdGgpIHtcbiAgICAgICAgICBkeCA9IDA7XG4gICAgICAgIH0gZWxzZSBpZiAobWluWCAtIGR4ID4gd2lkdGggKyBleHBhbmRXaWR0aCkge1xuICAgICAgICAgIGR4ID0gbWluWCAtICh3aWR0aCArIGV4cGFuZFdpZHRoKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZHkgPiAwKSB7XG4gICAgICAgIGlmIChtYXhZIDwgLWV4cGFuZEhlaWdodCkge1xuICAgICAgICAgIGR5ID0gMDtcbiAgICAgICAgfSBlbHNlIGlmIChtYXhZIC0gZHkgPCAtZXhwYW5kSGVpZ2h0KSB7XG4gICAgICAgICAgZHkgPSBtYXhZICsgZXhwYW5kSGVpZ2h0O1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGR5IDwgMCkge1xuICAgICAgICBpZiAobWluWSA+IGhlaWdodCArIGV4cGFuZEhlaWdodCkge1xuICAgICAgICAgIGR5ID0gMDtcbiAgICAgICAgfSBlbHNlIGlmIChtaW5ZIC0gZHkgPiBoZWlnaHQgKyBleHBhbmRIZWlnaHQpIHtcbiAgICAgICAgICBkeSA9IG1pblkgLSAoaGVpZ2h0ICsgZXhwYW5kSGVpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5nZXQoJ2RpcmVjdGlvbicpID09PSAneCcpIHtcbiAgICAgICAgZHkgPSAwO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmdldCgnZGlyZWN0aW9uJykgPT09ICd5Jykge1xuICAgICAgICBkeCA9IDA7XG4gICAgICB9XG5cbiAgICAgIGdyYXBoLnRyYW5zbGF0ZSgtZHgsIC1keSk7XG4gICAgfVxuXG4gICAgZXYucHJldmVudERlZmF1bHQoKTsgLy8gaGlkZSB0aGUgc2hhcGVzIHdoZW4gdGhlIHpvb20gcmF0aW8gaXMgc21hbGxlciB0aGFuIG9wdGltaXplWm9vbVxuICAgIC8vIGhpZGUgdGhlIHNoYXBlcyB3aGVuIHpvb21taW5nXG5cbiAgICB2YXIgZW5hYmxlT3B0aW1pemUgPSB0aGlzLmdldCgnZW5hYmxlT3B0aW1pemUnKTtcblxuICAgIGlmIChlbmFibGVPcHRpbWl6ZSkge1xuICAgICAgdmFyIG9wdGltaXplWm9vbV8xID0gdGhpcy5nZXQoJ29wdGltaXplWm9vbScpO1xuICAgICAgdmFyIG9wdGltaXplZCA9IHRoaXMuZ2V0KCdvcHRpbWl6ZWQnKTtcbiAgICAgIHZhciBub2Rlc18xID0gZ3JhcGguZ2V0Tm9kZXMoKTtcbiAgICAgIHZhciBlZGdlc18xID0gZ3JhcGguZ2V0RWRnZXMoKTtcbiAgICAgIHZhciBub2Rlc0xlbmd0aF8xID0gbm9kZXNfMS5sZW5ndGg7XG4gICAgICB2YXIgZWRnZXNMZW5ndGhfMSA9IGVkZ2VzXzEubGVuZ3RoOyAvLyBoaWRpbmdcblxuICAgICAgaWYgKCFvcHRpbWl6ZWQpIHtcbiAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCBub2Rlc0xlbmd0aF8xOyBuKyspIHtcbiAgICAgICAgICB2YXIgbm9kZSA9IG5vZGVzXzFbbl07XG5cbiAgICAgICAgICBpZiAoIW5vZGUuZGVzdHJveWVkKSB7XG4gICAgICAgICAgICB2YXIgY2hpbGRyZW4gPSBub2RlLmdldCgnZ3JvdXAnKS5nZXQoJ2NoaWxkcmVuJyk7XG4gICAgICAgICAgICB2YXIgY2hpbGRyZW5MZW5ndGggPSBjaGlsZHJlbi5sZW5ndGg7XG5cbiAgICAgICAgICAgIGZvciAodmFyIGMgPSAwOyBjIDwgY2hpbGRyZW5MZW5ndGg7IGMrKykge1xuICAgICAgICAgICAgICB2YXIgc2hhcGUgPSBjaGlsZHJlbltjXTtcblxuICAgICAgICAgICAgICBpZiAoIXNoYXBlLmRlc3RvcnllZCAmJiAhc2hhcGUuZ2V0KCdpc0tleVNoYXBlJykpIHtcbiAgICAgICAgICAgICAgICBzaGFwZS5zZXQoJ29yaS12aXNpYmlsaXR5Jywgc2hhcGUuZ2V0KCdvcmktdmlzaWJpbGl0eScpIHx8IHNoYXBlLmdldCgndmlzaWJsZScpKTtcbiAgICAgICAgICAgICAgICBzaGFwZS5oaWRlKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKHZhciBlZGdlSW5kZXggPSAwOyBlZGdlSW5kZXggPCBlZGdlc0xlbmd0aF8xOyBlZGdlSW5kZXgrKykge1xuICAgICAgICAgIHZhciBlZGdlID0gZWRnZXNfMVtlZGdlSW5kZXhdO1xuICAgICAgICAgIHZhciBjaGlsZHJlbiA9IGVkZ2UuZ2V0KCdncm91cCcpLmdldCgnY2hpbGRyZW4nKTtcbiAgICAgICAgICB2YXIgY2hpbGRyZW5MZW5ndGggPSBjaGlsZHJlbi5sZW5ndGg7XG5cbiAgICAgICAgICBmb3IgKHZhciBjID0gMDsgYyA8IGNoaWxkcmVuTGVuZ3RoOyBjKyspIHtcbiAgICAgICAgICAgIHZhciBzaGFwZSA9IGNoaWxkcmVuW2NdO1xuICAgICAgICAgICAgc2hhcGUuc2V0KCdvcmktdmlzaWJpbGl0eScsIHNoYXBlLmdldCgnb3JpLXZpc2liaWxpdHknKSB8fCBzaGFwZS5nZXQoJ3Zpc2libGUnKSk7XG4gICAgICAgICAgICBzaGFwZS5oaWRlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXQoJ29wdGltaXplZCcsIHRydWUpO1xuICAgICAgfSAvLyBzaG93aW5nIGFmdGVyIDEwMG1zXG5cblxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZ2V0KCd0aW1lb3V0JykpO1xuICAgICAgdmFyIHRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGN1cnJlbnRab29tID0gZ3JhcGguZ2V0Wm9vbSgpO1xuXG4gICAgICAgIHZhciBjdXJPcHRpbWl6ZWQgPSBfdGhpcy5nZXQoJ29wdGltaXplZCcpO1xuXG4gICAgICAgIGlmIChjdXJPcHRpbWl6ZWQpIHtcbiAgICAgICAgICBfdGhpcy5zZXQoJ29wdGltaXplZCcsIGZhbHNlKTtcblxuICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgbm9kZXNMZW5ndGhfMTsgbisrKSB7XG4gICAgICAgICAgICB2YXIgbm9kZSA9IG5vZGVzXzFbbl07XG4gICAgICAgICAgICB2YXIgY2hpbGRyZW4gPSBub2RlLmdldCgnZ3JvdXAnKS5nZXQoJ2NoaWxkcmVuJyk7XG4gICAgICAgICAgICB2YXIgY2hpbGRyZW5MZW5ndGggPSBjaGlsZHJlbi5sZW5ndGg7XG5cbiAgICAgICAgICAgIGlmIChjdXJyZW50Wm9vbSA8IG9wdGltaXplWm9vbV8xKSB7XG4gICAgICAgICAgICAgIHZhciBrZXlTaGFwZSA9IG5vZGUuZ2V0S2V5U2hhcGUoKTtcbiAgICAgICAgICAgICAgdmFyIG9yaVZpcyA9IGtleVNoYXBlLmdldCgnb3JpLXZpc2liaWxpdHknKTtcbiAgICAgICAgICAgICAgaWYgKG9yaVZpcykga2V5U2hhcGUuc2hvdygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZm9yICh2YXIgYyA9IDA7IGMgPCBjaGlsZHJlbkxlbmd0aDsgYysrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNoYXBlID0gY2hpbGRyZW5bY107XG4gICAgICAgICAgICAgICAgdmFyIG9yaVZpcyA9IHNoYXBlLmdldCgnb3JpLXZpc2liaWxpdHknKTtcblxuICAgICAgICAgICAgICAgIGlmICghc2hhcGUuZ2V0KCd2aXNpYmxlJykgJiYgb3JpVmlzKSB7XG4gICAgICAgICAgICAgICAgICBpZiAob3JpVmlzKSBzaGFwZS5zaG93KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZm9yICh2YXIgZWRnZUluZGV4ID0gMDsgZWRnZUluZGV4IDwgZWRnZXNMZW5ndGhfMTsgZWRnZUluZGV4KyspIHtcbiAgICAgICAgICAgIHZhciBlZGdlID0gZWRnZXNfMVtlZGdlSW5kZXhdO1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gZWRnZS5nZXQoJ2dyb3VwJykuZ2V0KCdjaGlsZHJlbicpO1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoO1xuXG4gICAgICAgICAgICBpZiAoY3VycmVudFpvb20gPCBvcHRpbWl6ZVpvb21fMSkge1xuICAgICAgICAgICAgICB2YXIga2V5U2hhcGUgPSBlZGdlLmdldEtleVNoYXBlKCk7XG4gICAgICAgICAgICAgIHZhciBvcmlWaXMgPSBrZXlTaGFwZS5nZXQoJ29yaS12aXNpYmlsaXR5Jyk7XG4gICAgICAgICAgICAgIGlmIChvcmlWaXMpIGtleVNoYXBlLnNob3coKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGZvciAodmFyIGMgPSAwOyBjIDwgY2hpbGRyZW5MZW5ndGg7IGMrKykge1xuICAgICAgICAgICAgICAgIHZhciBzaGFwZSA9IGNoaWxkcmVuW2NdO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFzaGFwZS5nZXQoJ3Zpc2libGUnKSkge1xuICAgICAgICAgICAgICAgICAgdmFyIG9yaVZpcyA9IHNoYXBlLmdldCgnb3JpLXZpc2liaWxpdHknKTtcbiAgICAgICAgICAgICAgICAgIGlmIChvcmlWaXMpIHNoYXBlLnNob3coKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sIDEwMCk7XG4gICAgICB0aGlzLnNldCgndGltZW91dCcsIHRpbWVvdXQpO1xuICAgIH1cbiAgfVxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/scroll-canvas.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/shortcuts-call.js":
/*!***********************************************************************************!*\
!*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/shortcuts-call.js ***!
\***********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\nvar DEFAULT_TRIGGER = 'ctrl';\nvar ALLOW_EVENTS = ['shift', 'ctrl', 'alt', 'control'];\nvar DEFAULT_COMBINED_KEY = '1';\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n trigger: DEFAULT_TRIGGER,\n combinedKey: DEFAULT_COMBINED_KEY,\n functionName: 'fitView',\n functionParams: []\n };\n },\n getEvents: function getEvents() {\n // 检测输入是否合法\n if (!(ALLOW_EVENTS.indexOf(this.trigger.toLowerCase()) > -1)) {\n this.trigger = DEFAULT_TRIGGER;\n console.warn(\"Behavior shortcuts-fit-view \\u7684 trigger \\u53C2\\u6570 '\" + this.trigger + \"' \\u4E0D\\u5408\\u6CD5\\uFF0C\\u8BF7\\u8F93\\u5165 'drag'\\u3001'shift'\\u3001'ctrl' \\u6216 'alt'\");\n }\n\n if (this.combinedKey === this.trigger) {\n this.combinedKey = undefined;\n }\n\n return {\n keyup: 'onKeyUp',\n keydown: 'onKeyDown'\n };\n },\n onKeyDown: function onKeyDown(e) {\n var code = e.key;\n\n if (!code) {\n return;\n }\n\n var triggerLowerCase = this.trigger.toLowerCase();\n var codeLowerCase = code.toLowerCase(); // 按住 control 键时,允许用户设置 trigger 为 ctrl\n\n if (!this.triggerKeydown) {\n if (codeLowerCase === triggerLowerCase || codeLowerCase === 'control' && triggerLowerCase === 'ctrl' || codeLowerCase === 'ctrl' && triggerLowerCase === 'control') {\n this.triggerKeydown = true;\n } else {\n this.triggerKeydown = false;\n }\n }\n\n var graph = this.graph;\n\n if (!graph[this.functionName]) {\n console.warn(\"Behavior shortcuts-fit-view \\u7684 functionName \\u53C2\\u6570 '\" + this.functionName + \"' \\u4E0D\\u5408\\u6CD5\\uFF0C\\u5B83\\u4E0D\\u662F Graph \\u7684\\u4E00\\u4E2A\\u51FD\\u6570\\u540D\");\n return {};\n } // 未配置 combinedKey,直接 fitView\n\n\n if (this.triggerKeydown && !this.combinedKey) {\n if (this.functionParams && this.functionParams.length) graph[this.functionName].apply(graph, this.functionParams);else graph[this.functionName]();\n return;\n }\n\n var combinedKeyLowerCase = this.combinedKey.toLowerCase();\n\n if (this.triggerKeydown) {\n if (codeLowerCase === combinedKeyLowerCase || codeLowerCase === 'control' && combinedKeyLowerCase === 'ctrl' || codeLowerCase === 'ctrl' && combinedKeyLowerCase === 'control') {\n if (this.functionParams && this.functionParams.length) graph[this.functionName].apply(graph, this.functionParams);else graph[this.functionName]();\n }\n }\n },\n onKeyUp: function onKeyUp() {\n if (this.brush) {\n // 清除所有选中状态后,设置拖得动状态为false,并清除框选的brush\n this.brush.remove(true);\n this.brush = null;\n this.dragging = false;\n }\n\n this.triggerKeydown = false;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL3Nob3J0Y3V0cy1jYWxsLmpzP2Q5YjMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwyQ0FBMkM7O0FBRTNDO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQSx3SEFBd0g7QUFDeEg7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsMEhBQTBIO0FBQzFIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL3Nob3J0Y3V0cy1jYWxsLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIERFRkFVTFRfVFJJR0dFUiA9ICdjdHJsJztcbnZhciBBTExPV19FVkVOVFMgPSBbJ3NoaWZ0JywgJ2N0cmwnLCAnYWx0JywgJ2NvbnRyb2wnXTtcbnZhciBERUZBVUxUX0NPTUJJTkVEX0tFWSA9ICcxJztcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0RGVmYXVsdENmZzogZnVuY3Rpb24gZ2V0RGVmYXVsdENmZygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHJpZ2dlcjogREVGQVVMVF9UUklHR0VSLFxuICAgICAgY29tYmluZWRLZXk6IERFRkFVTFRfQ09NQklORURfS0VZLFxuICAgICAgZnVuY3Rpb25OYW1lOiAnZml0VmlldycsXG4gICAgICBmdW5jdGlvblBhcmFtczogW11cbiAgICB9O1xuICB9LFxuICBnZXRFdmVudHM6IGZ1bmN0aW9uIGdldEV2ZW50cygpIHtcbiAgICAvLyDmo4DmtYvovpPlhaXmmK/lkKblkIjms5VcbiAgICBpZiAoIShBTExPV19FVkVOVFMuaW5kZXhPZih0aGlzLnRyaWdnZXIudG9Mb3dlckNhc2UoKSkgPiAtMSkpIHtcbiAgICAgIHRoaXMudHJpZ2dlciA9IERFRkFVTFRfVFJJR0dFUjtcbiAgICAgIGNvbnNvbGUud2FybihcIkJlaGF2aW9yIHNob3J0Y3V0cy1maXQtdmlldyBcXHU3Njg0IHRyaWdnZXIgXFx1NTNDMlxcdTY1NzAgJ1wiICsgdGhpcy50cmlnZ2VyICsgXCInIFxcdTRFMERcXHU1NDA4XFx1NkNENVxcdUZGMENcXHU4QkY3XFx1OEY5M1xcdTUxNjUgJ2RyYWcnXFx1MzAwMSdzaGlmdCdcXHUzMDAxJ2N0cmwnIFxcdTYyMTYgJ2FsdCdcIik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29tYmluZWRLZXkgPT09IHRoaXMudHJpZ2dlcikge1xuICAgICAgdGhpcy5jb21iaW5lZEtleSA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAga2V5dXA6ICdvbktleVVwJyxcbiAgICAgIGtleWRvd246ICdvbktleURvd24nXG4gICAgfTtcbiAgfSxcbiAgb25LZXlEb3duOiBmdW5jdGlvbiBvbktleURvd24oZSkge1xuICAgIHZhciBjb2RlID0gZS5rZXk7XG5cbiAgICBpZiAoIWNvZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgdHJpZ2dlckxvd2VyQ2FzZSA9IHRoaXMudHJpZ2dlci50b0xvd2VyQ2FzZSgpO1xuICAgIHZhciBjb2RlTG93ZXJDYXNlID0gY29kZS50b0xvd2VyQ2FzZSgpOyAvLyDmjInkvY8gY29udHJvbCDplK7ml7bvvIzlhYHorrjnlKjmiLforr7nva4gdHJpZ2dlciDkuLogY3RybFxuXG4gICAgaWYgKCF0aGlzLnRyaWdnZXJLZXlkb3duKSB7XG4gICAgICBpZiAoY29kZUxvd2VyQ2FzZSA9PT0gdHJpZ2dlckxvd2VyQ2FzZSB8fCBjb2RlTG93ZXJDYXNlID09PSAnY29udHJvbCcgJiYgdHJpZ2dlckxvd2VyQ2FzZSA9PT0gJ2N0cmwnIHx8IGNvZGVMb3dlckNhc2UgPT09ICdjdHJsJyAmJiB0cmlnZ2VyTG93ZXJDYXNlID09PSAnY29udHJvbCcpIHtcbiAgICAgICAgdGhpcy50cmlnZ2VyS2V5ZG93biA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnRyaWdnZXJLZXlkb3duID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGdyYXBoID0gdGhpcy5ncmFwaDtcblxuICAgIGlmICghZ3JhcGhbdGhpcy5mdW5jdGlvbk5hbWVdKSB7XG4gICAgICBjb25zb2xlLndhcm4oXCJCZWhhdmlvciBzaG9ydGN1dHMtZml0LXZpZXcgXFx1NzY4NCBmdW5jdGlvbk5hbWUgXFx1NTNDMlxcdTY1NzAgJ1wiICsgdGhpcy5mdW5jdGlvbk5hbWUgKyBcIicgXFx1NEUwRFxcdTU0MDhcXHU2Q0Q1XFx1RkYwQ1xcdTVCODNcXHU0RTBEXFx1NjYyRiBHcmFwaCBcXHU3Njg0XFx1NEUwMFxcdTRFMkFcXHU1MUZEXFx1NjU3MFxcdTU0MERcIik7XG4gICAgICByZXR1cm4ge307XG4gICAgfSAvLyDmnKrphY3nva4gY29tYmluZWRLZXnvvIznm7TmjqUgZml0Vmlld1xuXG5cbiAgICBpZiAodGhpcy50cmlnZ2VyS2V5ZG93biAmJiAhdGhpcy5jb21iaW5lZEtleSkge1xuICAgICAgaWYgKHRoaXMuZnVuY3Rpb25QYXJhbXMgJiYgdGhpcy5mdW5jdGlvblBhcmFtcy5sZW5ndGgpIGdyYXBoW3RoaXMuZnVuY3Rpb25OYW1lXS5hcHBseShncmFwaCwgdGhpcy5mdW5jdGlvblBhcmFtcyk7ZWxzZSBncmFwaFt0aGlzLmZ1bmN0aW9uTmFtZV0oKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgY29tYmluZWRLZXlMb3dlckNhc2UgPSB0aGlzLmNvbWJpbmVkS2V5LnRvTG93ZXJDYXNlKCk7XG5cbiAgICBpZiAodGhpcy50cmlnZ2VyS2V5ZG93bikge1xuICAgICAgaWYgKGNvZGVMb3dlckNhc2UgPT09IGNvbWJpbmVkS2V5TG93ZXJDYXNlIHx8IGNvZGVMb3dlckNhc2UgPT09ICdjb250cm9sJyAmJiBjb21iaW5lZEtleUxvd2VyQ2FzZSA9PT0gJ2N0cmwnIHx8IGNvZGVMb3dlckNhc2UgPT09ICdjdHJsJyAmJiBjb21iaW5lZEtleUxvd2VyQ2FzZSA9PT0gJ2NvbnRyb2wnKSB7XG4gICAgICAgIGlmICh0aGlzLmZ1bmN0aW9uUGFyYW1zICYmIHRoaXMuZnVuY3Rpb25QYXJhbXMubGVuZ3RoKSBncmFwaFt0aGlzLmZ1bmN0aW9uTmFtZV0uYXBwbHkoZ3JhcGgsIHRoaXMuZnVuY3Rpb25QYXJhbXMpO2Vsc2UgZ3JhcGhbdGhpcy5mdW5jdGlvbk5hbWVdKCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBvbktleVVwOiBmdW5jdGlvbiBvbktleVVwKCkge1xuICAgIGlmICh0aGlzLmJydXNoKSB7XG4gICAgICAvLyDmuIXpmaTmiYDmnInpgInkuK3nirbmgIHlkI7vvIzorr7nva7mi5blvpfliqjnirbmgIHkuLpmYWxzZe+8jOW5tua4hemZpOahhumAieeahGJydXNoXG4gICAgICB0aGlzLmJydXNoLnJlbW92ZSh0cnVlKTtcbiAgICAgIHRoaXMuYnJ1c2ggPSBudWxsO1xuICAgICAgdGhpcy5kcmFnZ2luZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMudHJpZ2dlcktleWRvd24gPSBmYWxzZTtcbiAgfVxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/shortcuts-call.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/tooltip-base.js":
/*!*********************************************************************************!*\
!*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/tooltip-base.js ***!
\*********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_dom_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/dom-util */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/index.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n onMouseEnter: function onMouseEnter(e) {\n var item = e.item;\n this.currentTarget = item;\n this.showTooltip(e);\n this.graph.emit('tooltipchange', {\n item: e.item,\n action: 'show'\n });\n },\n onMouseMove: function onMouseMove(e) {\n if (!this.shouldUpdate(e)) {\n this.hideTooltip();\n return;\n }\n\n if (!this.currentTarget || e.item !== this.currentTarget) {\n return;\n }\n\n this.updatePosition(e);\n },\n onMouseLeave: function onMouseLeave(e) {\n if (!this.shouldEnd(e)) {\n return;\n }\n\n this.hideTooltip();\n this.graph.emit('tooltipchange', {\n item: this.currentTarget,\n action: 'hide'\n });\n this.currentTarget = null;\n },\n showTooltip: function showTooltip(e) {\n var container = this.container;\n\n if (!e.item || e.item.destroyed) {\n return;\n }\n\n if (!container) {\n container = this.createTooltip(this.graph.get('canvas'));\n this.container = container;\n }\n\n var text = this.formatText(e.item.get('model'), e);\n container.innerHTML = text;\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(this.container, {\n visibility: 'visible'\n });\n this.updatePosition(e);\n },\n hideTooltip: function hideTooltip() {\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(this.container, {\n visibility: 'hidden'\n });\n },\n updatePosition: function updatePosition(e) {\n var shouldBegin = this.get('shouldBegin');\n\n var _a = this,\n width = _a.width,\n height = _a.height,\n container = _a.container,\n graph = _a.graph;\n\n if (!shouldBegin(e)) {\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(container, {\n visibility: 'hidden'\n });\n return;\n }\n\n var point = graph.getPointByClient(e.clientX, e.clientY);\n\n var _b = graph.getCanvasByPoint(point.x, point.y),\n x = _b.x,\n y = _b.y;\n\n var bbox = container.getBoundingClientRect();\n\n if (x > width / 2) {\n x -= bbox.width;\n } else {\n x += this.offset;\n }\n\n if (y > height / 2) {\n y -= bbox.height;\n } else {\n y += this.offset;\n }\n\n var left = x + \"px\";\n var top = y + \"px\";\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(this.container, {\n left: left,\n top: top,\n visibility: 'visible'\n });\n },\n createTooltip: function createTooltip(canvas) {\n var el = canvas.get('el');\n el.style.position = 'relative';\n var container = Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"createDom\"])(\"\");\n el.parentNode.appendChild(container);\n Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_0__[\"modifyCSS\"])(container, {\n position: 'absolute',\n visibility: 'visible'\n });\n this.width = canvas.get('width');\n this.height = canvas.get('height');\n this.container = container;\n this.graph.get('tooltips').push(container);\n return container;\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL3Rvb2x0aXAtYmFzZS5qcz82YmNlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBc0Q7QUFDdkM7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUksZ0VBQVM7QUFDYjtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDtBQUNBLElBQUksZ0VBQVM7QUFDYjtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsTUFBTSxnRUFBUztBQUNmO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUksZ0VBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixnRUFBUztBQUM3QjtBQUNBLElBQUksZ0VBQVM7QUFDYjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL3Rvb2x0aXAtYmFzZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1vZGlmeUNTUywgY3JlYXRlRG9tIH0gZnJvbSAnQGFudHYvZG9tLXV0aWwnO1xuZXhwb3J0IGRlZmF1bHQge1xuICBvbk1vdXNlRW50ZXI6IGZ1bmN0aW9uIG9uTW91c2VFbnRlcihlKSB7XG4gICAgdmFyIGl0ZW0gPSBlLml0ZW07XG4gICAgdGhpcy5jdXJyZW50VGFyZ2V0ID0gaXRlbTtcbiAgICB0aGlzLnNob3dUb29sdGlwKGUpO1xuICAgIHRoaXMuZ3JhcGguZW1pdCgndG9vbHRpcGNoYW5nZScsIHtcbiAgICAgIGl0ZW06IGUuaXRlbSxcbiAgICAgIGFjdGlvbjogJ3Nob3cnXG4gICAgfSk7XG4gIH0sXG4gIG9uTW91c2VNb3ZlOiBmdW5jdGlvbiBvbk1vdXNlTW92ZShlKSB7XG4gICAgaWYgKCF0aGlzLnNob3VsZFVwZGF0ZShlKSkge1xuICAgICAgdGhpcy5oaWRlVG9vbHRpcCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5jdXJyZW50VGFyZ2V0IHx8IGUuaXRlbSAhPT0gdGhpcy5jdXJyZW50VGFyZ2V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVQb3NpdGlvbihlKTtcbiAgfSxcbiAgb25Nb3VzZUxlYXZlOiBmdW5jdGlvbiBvbk1vdXNlTGVhdmUoZSkge1xuICAgIGlmICghdGhpcy5zaG91bGRFbmQoZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmhpZGVUb29sdGlwKCk7XG4gICAgdGhpcy5ncmFwaC5lbWl0KCd0b29sdGlwY2hhbmdlJywge1xuICAgICAgaXRlbTogdGhpcy5jdXJyZW50VGFyZ2V0LFxuICAgICAgYWN0aW9uOiAnaGlkZSdcbiAgICB9KTtcbiAgICB0aGlzLmN1cnJlbnRUYXJnZXQgPSBudWxsO1xuICB9LFxuICBzaG93VG9vbHRpcDogZnVuY3Rpb24gc2hvd1Rvb2x0aXAoZSkge1xuICAgIHZhciBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lcjtcblxuICAgIGlmICghZS5pdGVtIHx8IGUuaXRlbS5kZXN0cm95ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWNvbnRhaW5lcikge1xuICAgICAgY29udGFpbmVyID0gdGhpcy5jcmVhdGVUb29sdGlwKHRoaXMuZ3JhcGguZ2V0KCdjYW52YXMnKSk7XG4gICAgICB0aGlzLmNvbnRhaW5lciA9IGNvbnRhaW5lcjtcbiAgICB9XG5cbiAgICB2YXIgdGV4dCA9IHRoaXMuZm9ybWF0VGV4dChlLml0ZW0uZ2V0KCdtb2RlbCcpLCBlKTtcbiAgICBjb250YWluZXIuaW5uZXJIVE1MID0gdGV4dDtcbiAgICBtb2RpZnlDU1ModGhpcy5jb250YWluZXIsIHtcbiAgICAgIHZpc2liaWxpdHk6ICd2aXNpYmxlJ1xuICAgIH0pO1xuICAgIHRoaXMudXBkYXRlUG9zaXRpb24oZSk7XG4gIH0sXG4gIGhpZGVUb29sdGlwOiBmdW5jdGlvbiBoaWRlVG9vbHRpcCgpIHtcbiAgICBtb2RpZnlDU1ModGhpcy5jb250YWluZXIsIHtcbiAgICAgIHZpc2liaWxpdHk6ICdoaWRkZW4nXG4gICAgfSk7XG4gIH0sXG4gIHVwZGF0ZVBvc2l0aW9uOiBmdW5jdGlvbiB1cGRhdGVQb3NpdGlvbihlKSB7XG4gICAgdmFyIHNob3VsZEJlZ2luID0gdGhpcy5nZXQoJ3Nob3VsZEJlZ2luJyk7XG5cbiAgICB2YXIgX2EgPSB0aGlzLFxuICAgICAgICB3aWR0aCA9IF9hLndpZHRoLFxuICAgICAgICBoZWlnaHQgPSBfYS5oZWlnaHQsXG4gICAgICAgIGNvbnRhaW5lciA9IF9hLmNvbnRhaW5lcixcbiAgICAgICAgZ3JhcGggPSBfYS5ncmFwaDtcblxuICAgIGlmICghc2hvdWxkQmVnaW4oZSkpIHtcbiAgICAgIG1vZGlmeUNTUyhjb250YWluZXIsIHtcbiAgICAgICAgdmlzaWJpbGl0eTogJ2hpZGRlbidcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBwb2ludCA9IGdyYXBoLmdldFBvaW50QnlDbGllbnQoZS5jbGllbnRYLCBlLmNsaWVudFkpO1xuXG4gICAgdmFyIF9iID0gZ3JhcGguZ2V0Q2FudmFzQnlQb2ludChwb2ludC54LCBwb2ludC55KSxcbiAgICAgICAgeCA9IF9iLngsXG4gICAgICAgIHkgPSBfYi55O1xuXG4gICAgdmFyIGJib3ggPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICBpZiAoeCA+IHdpZHRoIC8gMikge1xuICAgICAgeCAtPSBiYm94LndpZHRoO1xuICAgIH0gZWxzZSB7XG4gICAgICB4ICs9IHRoaXMub2Zmc2V0O1xuICAgIH1cblxuICAgIGlmICh5ID4gaGVpZ2h0IC8gMikge1xuICAgICAgeSAtPSBiYm94LmhlaWdodDtcbiAgICB9IGVsc2Uge1xuICAgICAgeSArPSB0aGlzLm9mZnNldDtcbiAgICB9XG5cbiAgICB2YXIgbGVmdCA9IHggKyBcInB4XCI7XG4gICAgdmFyIHRvcCA9IHkgKyBcInB4XCI7XG4gICAgbW9kaWZ5Q1NTKHRoaXMuY29udGFpbmVyLCB7XG4gICAgICBsZWZ0OiBsZWZ0LFxuICAgICAgdG9wOiB0b3AsXG4gICAgICB2aXNpYmlsaXR5OiAndmlzaWJsZSdcbiAgICB9KTtcbiAgfSxcbiAgY3JlYXRlVG9vbHRpcDogZnVuY3Rpb24gY3JlYXRlVG9vbHRpcChjYW52YXMpIHtcbiAgICB2YXIgZWwgPSBjYW52YXMuZ2V0KCdlbCcpO1xuICAgIGVsLnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJztcbiAgICB2YXIgY29udGFpbmVyID0gY3JlYXRlRG9tKFwiPGRpdiBjbGFzcz1cXFwiZzYtdG9vbHRpcCBnNi1cIiArIHRoaXMuaXRlbSArIFwiLXRvb2x0aXBcXFwiPjwvZGl2PlwiKTtcbiAgICBlbC5wYXJlbnROb2RlLmFwcGVuZENoaWxkKGNvbnRhaW5lcik7XG4gICAgbW9kaWZ5Q1NTKGNvbnRhaW5lciwge1xuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICB2aXNpYmlsaXR5OiAndmlzaWJsZSdcbiAgICB9KTtcbiAgICB0aGlzLndpZHRoID0gY2FudmFzLmdldCgnd2lkdGgnKTtcbiAgICB0aGlzLmhlaWdodCA9IGNhbnZhcy5nZXQoJ2hlaWdodCcpO1xuICAgIHRoaXMuY29udGFpbmVyID0gY29udGFpbmVyO1xuICAgIHRoaXMuZ3JhcGguZ2V0KCd0b29sdGlwcycpLnB1c2goY29udGFpbmVyKTtcbiAgICByZXR1cm4gY29udGFpbmVyO1xuICB9XG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/tooltip-base.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/tooltip.js":
/*!****************************************************************************!*\
!*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/tooltip.js ***!
\****************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _tooltip_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tooltip-base */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/tooltip-base.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__assign\"])({\n getDefaultCfg: function getDefaultCfg() {\n return {\n item: 'node',\n offset: 12,\n formatText: function formatText(model) {\n return model.label;\n }\n };\n },\n getEvents: function getEvents() {\n return {\n 'node:mouseenter': 'onMouseEnter',\n 'node:mouseleave': 'onMouseLeave',\n 'node:mousemove': 'onMouseMove',\n afterremoveitem: 'onMouseLeave'\n };\n }\n}, _tooltip_base__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL3Rvb2x0aXAuanM/ZDU0NSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBaUM7QUFDQztBQUNuQixxSEFBUTtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUUscURBQUksQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9fQGFudHZfZzYtcGNAMC41LjBAQGFudHYvZzYtcGMvZXMvYmVoYXZpb3IvdG9vbHRpcC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgYmFzZSBmcm9tICcuL3Rvb2x0aXAtYmFzZSc7XG5leHBvcnQgZGVmYXVsdCBfX2Fzc2lnbih7XG4gIGdldERlZmF1bHRDZmc6IGZ1bmN0aW9uIGdldERlZmF1bHRDZmcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGl0ZW06ICdub2RlJyxcbiAgICAgIG9mZnNldDogMTIsXG4gICAgICBmb3JtYXRUZXh0OiBmdW5jdGlvbiBmb3JtYXRUZXh0KG1vZGVsKSB7XG4gICAgICAgIHJldHVybiBtb2RlbC5sYWJlbDtcbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBnZXRFdmVudHM6IGZ1bmN0aW9uIGdldEV2ZW50cygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJ25vZGU6bW91c2VlbnRlcic6ICdvbk1vdXNlRW50ZXInLFxuICAgICAgJ25vZGU6bW91c2VsZWF2ZSc6ICdvbk1vdXNlTGVhdmUnLFxuICAgICAgJ25vZGU6bW91c2Vtb3ZlJzogJ29uTW91c2VNb3ZlJyxcbiAgICAgIGFmdGVycmVtb3ZlaXRlbTogJ29uTW91c2VMZWF2ZSdcbiAgICB9O1xuICB9XG59LCBiYXNlKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/tooltip.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/zoom-canvas.js":
/*!********************************************************************************!*\
!*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/zoom-canvas.js ***!
\********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/matrix-util */ \"./node_modules/_@antv_matrix-util@3.1.0-beta.3@@antv/matrix-util/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n\n\nvar transform = _antv_matrix_util__WEBPACK_IMPORTED_MODULE_0__[\"ext\"].transform;\nvar DELTA = 0.05;\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getDefaultCfg: function getDefaultCfg() {\n return {\n sensitivity: 2,\n minZoom: undefined,\n maxZoom: undefined,\n enableOptimize: false,\n optimizeZoom: 0.1,\n fixSelectedItems: {\n fixAll: false,\n fixLineWidth: false,\n fixLabel: false,\n fixState: 'selected'\n }\n };\n },\n getEvents: function getEvents() {\n var fixSelectedItems = this.fixSelectedItems;\n if (!fixSelectedItems.fixState) fixSelectedItems.fixState = 'selected';\n\n if (fixSelectedItems.fixAll) {\n fixSelectedItems.fixLineWidth = true;\n fixSelectedItems.fixLabel = true;\n }\n\n return {\n wheel: 'onWheel',\n touchstart: 'onTouchStart',\n touchmove: 'onTouchMove',\n touchend: 'onTouchEnd'\n };\n },\n onTouchStart: function onTouchStart(evt) {\n var touches = evt.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1];\n evt.preventDefault(); // 如果不是缩放事件则禁止继续执行\n\n if (!event2) {\n return;\n }\n\n if (this.shouldBegin && !this.shouldBegin.call(this, evt)) {\n return;\n } // 第一个触摸点位置\n\n\n this.startPoint = {\n pageX: event1.pageX,\n pageY: event1.pageY\n };\n this.moveable = true;\n\n if (event2) {\n this.endPoint = {\n pageX: event2.pageX,\n pageY: event2.pageY\n };\n }\n\n this.originScale = this.graph.getZoom() || this.currentScale || 1;\n },\n onTouchMove: function onTouchMove(evt) {\n if (!this.moveable) {\n return;\n }\n\n evt.preventDefault();\n var touches = evt.originalEvent.touches;\n var event1 = touches[0];\n var event2 = touches[1];\n\n if (!event2) {\n return;\n }\n\n if (!this.endPoint) {\n this.endPoint = {\n pageX: event2.pageX,\n pageY: event2.pageY\n };\n } // 获取坐标之间的距离\n\n\n var getDistance = function getDistance(start, end) {\n return Math.hypot(end.x - start.x, end.y - start.y);\n }; // 双指缩放比例\n\n\n var scale = getDistance({\n x: event1.pageX,\n y: event1.pageY\n }, {\n x: event2.pageX,\n y: event2.pageY\n }) / getDistance({\n x: this.startPoint.pageX,\n y: this.startPoint.pageY\n }, {\n x: this.endPoint.pageX,\n y: this.endPoint.pageY\n }); // 应用到画布上的缩放比例\n\n var zoom = this.originScale * scale; // 缓存当前的缩放比例\n\n this.currentScale = zoom;\n var minZoom = this.get('minZoom') || this.graph.get('minZoom');\n var maxZoom = this.get('maxZoom') || this.graph.get('maxZoom');\n\n if (zoom > maxZoom || zoom < minZoom) {\n return;\n }\n\n var canvas = this.graph.get('canvas');\n var point = canvas.getPointByClient(evt.clientX, evt.clientY);\n this.graph.zoomTo(zoom, {\n x: point.x,\n y: point.y\n });\n this.graph.emit('wheelzoom', evt);\n },\n onTouchEnd: function onTouchEnd() {\n this.moveable = false;\n this.endPoint = null;\n },\n onWheel: function onWheel(e) {\n var _this = this;\n\n var _a = this,\n graph = _a.graph,\n fixSelectedItems = _a.fixSelectedItems;\n\n if (this.shouldBegin && !this.shouldBegin.call(this, e)) {\n return;\n }\n\n if (!this.shouldUpdate.call(this, e)) {\n return;\n }\n\n e.preventDefault();\n var canvas = graph.get('canvas');\n var point = canvas.getPointByClient(e.clientX, e.clientY);\n var sensitivity = this.get('sensitivity');\n var graphZoom = graph.getZoom();\n var ratio = graphZoom;\n var zoom = graphZoom; // 兼容IE、Firefox及Chrome\n\n if (e.wheelDelta < 0) {\n ratio = 1 - DELTA * sensitivity;\n } else {\n ratio = 1 / (1 - DELTA * sensitivity);\n }\n\n zoom = graphZoom * ratio; // const zoom = ratio * graphZoom;\n\n var minZoom = this.get('minZoom') || graph.get('minZoom');\n var maxZoom = this.get('maxZoom') || graph.get('maxZoom');\n\n if (zoom > maxZoom || zoom < minZoom) {\n return;\n } // hide the shapes when the zoom ratio is smaller than optimizeZoom\n // hide the shapes when zoomming\n\n\n var enableOptimize = this.get('enableOptimize');\n\n if (enableOptimize) {\n var optimizeZoom_1 = this.get('optimizeZoom');\n var optimized = this.get('optimized');\n var nodes_1 = graph.getNodes();\n var edges_1 = graph.getEdges();\n var nodesLength_1 = nodes_1.length;\n var edgesLength_1 = edges_1.length; // hiding\n\n if (!optimized) {\n for (var n = 0; n < nodesLength_1; n++) {\n var node = nodes_1[n];\n\n if (!node.destroyed) {\n var children = node.get('group').get('children');\n var childrenLength = children.length;\n\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n\n if (!shape.destoryed && !shape.get('isKeyShape')) {\n shape.set('ori-visibility', shape.get('ori-visibility') || shape.get('visible'));\n shape.hide();\n }\n }\n }\n }\n\n for (var edgeIndex = 0; edgeIndex < edgesLength_1; edgeIndex++) {\n var edge = edges_1[edgeIndex];\n var children = edge.get('group').get('children');\n var childrenLength = children.length;\n\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n shape.set('ori-visibility', shape.get('ori-visibility') || shape.get('visible'));\n shape.hide();\n }\n }\n\n this.set('optimized', true);\n } // showing after 100ms\n\n\n clearTimeout(this.get('timeout'));\n var timeout = setTimeout(function () {\n var currentZoom = graph.getZoom();\n\n var curOptimized = _this.get('optimized');\n\n if (curOptimized) {\n _this.set('optimized', false);\n\n for (var n = 0; n < nodesLength_1; n++) {\n var node = nodes_1[n];\n var children = node.get('group').get('children');\n var childrenLength = children.length;\n\n if (currentZoom < optimizeZoom_1) {\n var keyShape = node.getKeyShape();\n var oriVis = keyShape.get('ori-visibility');\n if (oriVis) keyShape.show();\n } else {\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n var oriVis = shape.get('ori-visibility');\n\n if (!shape.get('visible') && oriVis) {\n if (oriVis) shape.show();\n }\n }\n }\n }\n\n for (var edgeIndex = 0; edgeIndex < edgesLength_1; edgeIndex++) {\n var edge = edges_1[edgeIndex];\n var children = edge.get('group').get('children');\n var childrenLength = children.length;\n\n if (currentZoom < optimizeZoom_1) {\n var keyShape = edge.getKeyShape();\n var oriVis = keyShape.get('ori-visibility');\n if (oriVis) keyShape.show();\n } else {\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n\n if (!shape.get('visible')) {\n var oriVis = shape.get('ori-visibility');\n if (oriVis) shape.show();\n }\n }\n }\n }\n }\n }, 100);\n this.set('timeout', timeout);\n } // fix the items when zooming\n\n\n if (graphZoom <= 1) {\n var fixNodes = void 0,\n fixEdges = void 0;\n\n if (fixSelectedItems.fixAll || fixSelectedItems.fixLineWidth || fixSelectedItems.fixLabel) {\n fixNodes = graph.findAllByState('node', fixSelectedItems.fixState);\n fixEdges = graph.findAllByState('edge', fixSelectedItems.fixState);\n var scale = graphZoom / zoom;\n var fixNodesLength = fixNodes.length;\n\n for (var fn = 0; fn < fixNodesLength; fn++) {\n var node = fixNodes[fn];\n var group = node.getContainer();\n var nodeModel = node.getModel();\n var originStyle = node.getOriginStyle();\n var itemStateStyle = node.getStateStyle(fixSelectedItems.fixState);\n var shapeStateStyle = node.get('shapeFactory').getShape(nodeModel.type).getStateStyle(fixSelectedItems.fixState, node)[fixSelectedItems.fixState];\n\n if (fixSelectedItems.fixAll) {\n if (zoom <= 1) {\n var groupMatrix = Object(_antv_util__WEBPACK_IMPORTED_MODULE_1__[\"clone\"])(group.getMatrix());\n if (!groupMatrix) groupMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n\n var _b = node.getModel(),\n x = _b.x,\n y = _b.y;\n\n groupMatrix = transform(groupMatrix, [['t', -x, -y], ['s', scale, scale], ['t', x, y]]);\n group.setMatrix(groupMatrix);\n }\n } else {\n var children = group.get('children');\n var childrenLength = children.length;\n\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n var fontSize = void 0,\n lineWidth = void 0;\n\n if (fixSelectedItems.fixLabel) {\n var shapeType = shape.get('type');\n\n if (shapeType === 'text') {\n fontSize = shape.attr('fontSize') || 12;\n var itemStyle = itemStateStyle[shape.get('name')];\n var shapeStyle = shapeStateStyle[shape.get('name')];\n var itemFontSize = itemStyle ? itemStyle.fontSize : 12;\n var shapeFontSize = shapeStyle ? shapeStyle.fontSize : 12;\n var oriFontSize = itemFontSize || shapeFontSize || 12;\n if (zoom <= 1) shape.attr('fontSize', oriFontSize / zoom); // * graphZoom / zoom\n\n if (lineWidth) break;\n }\n }\n\n if (fixSelectedItems.fixLineWidth) {\n if (shape.get('isKeyShape')) {\n lineWidth = shape.attr('lineWidth') || 0;\n var oriLineWidth = itemStateStyle.lineWidth || shapeStateStyle.lineWidth || originStyle.lineWidth || 0;\n if (zoom <= 1) shape.attr('lineWidth', oriLineWidth / zoom); // * graphZoom / zoom\n\n if (fontSize) break;\n }\n }\n }\n }\n }\n\n var fixEdgesLength = fixEdges.length;\n\n for (var fe = 0; fe < fixEdgesLength; fe++) {\n var edge = fixEdges[fe];\n var group = edge.getContainer();\n var children = group.get('children');\n var nodeModel = edge.getModel();\n var itemStateStyle = edge.getStateStyle(fixSelectedItems.fixState);\n var shapeStateStyle = edge.get('shapeFactory').getShape(nodeModel.type).getStateStyle(fixSelectedItems.fixState, edge)[fixSelectedItems.fixState];\n var childrenLength = children.length;\n\n for (var c = 0; c < childrenLength; c++) {\n var shape = children[c];\n var fontSize = void 0,\n lineWidth = void 0;\n\n if (fixSelectedItems.fixLabel || fixSelectedItems.fixAll) {\n var shapeType = shape.get('type');\n\n if (shapeType === 'text') {\n fontSize = shape.attr('fontSize') || 12;\n var itemStyle = itemStateStyle[shape.get('name')];\n var shapeStyle = shapeStateStyle[shape.get('name')];\n var itemFontSize = itemStyle ? itemStyle.fontSize : 12;\n var shapeFontSize = shapeStyle ? shapeStyle.fontSize : 12;\n var oriFontSize = itemFontSize || shapeFontSize || 12;\n if (zoom <= 1) shape.attr('fontSize', oriFontSize / zoom);\n if (lineWidth) break;\n }\n }\n\n if (fixSelectedItems.fixLineWidth || fixSelectedItems.fixAll) {\n if (shape.get('isKeyShape')) {\n lineWidth = shape.attr('lineWidth') || 0;\n var oriLineWidth = itemStateStyle.lineWidth || shapeStateStyle.lineWidth || 1;\n if (zoom <= 1) shape.attr('lineWidth', oriLineWidth / zoom);\n if (fontSize) break;\n }\n }\n }\n }\n }\n }\n\n graph.zoomTo(zoom, {\n x: point.x,\n y: point.y\n });\n graph.emit('wheelzoom', e);\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL3pvb20tY2FudmFzLmpzP2YxOWEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQXdDO0FBQ0w7QUFDbkMsZ0JBQWdCLHFEQUFHO0FBQ25CO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7O0FBRXpCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0EsTUFBTTs7O0FBR047QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSyxFQUFFOztBQUVQLHdDQUF3Qzs7QUFFeEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5Qjs7QUFFekI7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBLDZCQUE2Qjs7QUFFN0I7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7O0FBRXpDO0FBQ0EsdUJBQXVCLG1CQUFtQjtBQUMxQzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsMkJBQTJCLG9CQUFvQjtBQUMvQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwrQkFBK0IsMkJBQTJCO0FBQzFEO0FBQ0E7QUFDQTs7QUFFQSx5QkFBeUIsb0JBQW9CO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPOzs7QUFHUDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQSx5QkFBeUIsbUJBQW1CO0FBQzVDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYiw2QkFBNkIsb0JBQW9CO0FBQ2pEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlDQUFpQywyQkFBMkI7QUFDNUQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLDZCQUE2QixvQkFBb0I7QUFDakQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHdCQUF3QixxQkFBcUI7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxnQ0FBZ0Msd0RBQUs7QUFDckM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBOztBQUVBLDJCQUEyQixvQkFBb0I7QUFDL0M7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0RUFBNEU7O0FBRTVFO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhFQUE4RTs7QUFFOUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLHdCQUF3QixxQkFBcUI7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEseUJBQXlCLG9CQUFvQjtBQUM3QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2JlaGF2aW9yL3pvb20tY2FudmFzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXh0IH0gZnJvbSAnQGFudHYvbWF0cml4LXV0aWwnO1xuaW1wb3J0IHsgY2xvbmUgfSBmcm9tICdAYW50di91dGlsJztcbnZhciB0cmFuc2Zvcm0gPSBleHQudHJhbnNmb3JtO1xudmFyIERFTFRBID0gMC4wNTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0RGVmYXVsdENmZzogZnVuY3Rpb24gZ2V0RGVmYXVsdENmZygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2Vuc2l0aXZpdHk6IDIsXG4gICAgICBtaW5ab29tOiB1bmRlZmluZWQsXG4gICAgICBtYXhab29tOiB1bmRlZmluZWQsXG4gICAgICBlbmFibGVPcHRpbWl6ZTogZmFsc2UsXG4gICAgICBvcHRpbWl6ZVpvb206IDAuMSxcbiAgICAgIGZpeFNlbGVjdGVkSXRlbXM6IHtcbiAgICAgICAgZml4QWxsOiBmYWxzZSxcbiAgICAgICAgZml4TGluZVdpZHRoOiBmYWxzZSxcbiAgICAgICAgZml4TGFiZWw6IGZhbHNlLFxuICAgICAgICBmaXhTdGF0ZTogJ3NlbGVjdGVkJ1xuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIGdldEV2ZW50czogZnVuY3Rpb24gZ2V0RXZlbnRzKCkge1xuICAgIHZhciBmaXhTZWxlY3RlZEl0ZW1zID0gdGhpcy5maXhTZWxlY3RlZEl0ZW1zO1xuICAgIGlmICghZml4U2VsZWN0ZWRJdGVtcy5maXhTdGF0ZSkgZml4U2VsZWN0ZWRJdGVtcy5maXhTdGF0ZSA9ICdzZWxlY3RlZCc7XG5cbiAgICBpZiAoZml4U2VsZWN0ZWRJdGVtcy5maXhBbGwpIHtcbiAgICAgIGZpeFNlbGVjdGVkSXRlbXMuZml4TGluZVdpZHRoID0gdHJ1ZTtcbiAgICAgIGZpeFNlbGVjdGVkSXRlbXMuZml4TGFiZWwgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB3aGVlbDogJ29uV2hlZWwnLFxuICAgICAgdG91Y2hzdGFydDogJ29uVG91Y2hTdGFydCcsXG4gICAgICB0b3VjaG1vdmU6ICdvblRvdWNoTW92ZScsXG4gICAgICB0b3VjaGVuZDogJ29uVG91Y2hFbmQnXG4gICAgfTtcbiAgfSxcbiAgb25Ub3VjaFN0YXJ0OiBmdW5jdGlvbiBvblRvdWNoU3RhcnQoZXZ0KSB7XG4gICAgdmFyIHRvdWNoZXMgPSBldnQub3JpZ2luYWxFdmVudC50b3VjaGVzO1xuICAgIHZhciBldmVudDEgPSB0b3VjaGVzWzBdO1xuICAgIHZhciBldmVudDIgPSB0b3VjaGVzWzFdO1xuICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpOyAvLyDlpoLmnpzkuI3mmK/nvKnmlL7kuovku7bliJnnpoHmraLnu6fnu63miafooYxcblxuICAgIGlmICghZXZlbnQyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2hvdWxkQmVnaW4gJiYgIXRoaXMuc2hvdWxkQmVnaW4uY2FsbCh0aGlzLCBldnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyDnrKzkuIDkuKrop6bmkbjngrnkvY3nva5cblxuXG4gICAgdGhpcy5zdGFydFBvaW50ID0ge1xuICAgICAgcGFnZVg6IGV2ZW50MS5wYWdlWCxcbiAgICAgIHBhZ2VZOiBldmVudDEucGFnZVlcbiAgICB9O1xuICAgIHRoaXMubW92ZWFibGUgPSB0cnVlO1xuXG4gICAgaWYgKGV2ZW50Mikge1xuICAgICAgdGhpcy5lbmRQb2ludCA9IHtcbiAgICAgICAgcGFnZVg6IGV2ZW50Mi5wYWdlWCxcbiAgICAgICAgcGFnZVk6IGV2ZW50Mi5wYWdlWVxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLm9yaWdpblNjYWxlID0gdGhpcy5ncmFwaC5nZXRab29tKCkgfHwgdGhpcy5jdXJyZW50U2NhbGUgfHwgMTtcbiAgfSxcbiAgb25Ub3VjaE1vdmU6IGZ1bmN0aW9uIG9uVG91Y2hNb3ZlKGV2dCkge1xuICAgIGlmICghdGhpcy5tb3ZlYWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHZhciB0b3VjaGVzID0gZXZ0Lm9yaWdpbmFsRXZlbnQudG91Y2hlcztcbiAgICB2YXIgZXZlbnQxID0gdG91Y2hlc1swXTtcbiAgICB2YXIgZXZlbnQyID0gdG91Y2hlc1sxXTtcblxuICAgIGlmICghZXZlbnQyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmVuZFBvaW50KSB7XG4gICAgICB0aGlzLmVuZFBvaW50ID0ge1xuICAgICAgICBwYWdlWDogZXZlbnQyLnBhZ2VYLFxuICAgICAgICBwYWdlWTogZXZlbnQyLnBhZ2VZXG4gICAgICB9O1xuICAgIH0gLy8g6I635Y+W5Z2Q5qCH5LmL6Ze055qE6Led56a7XG5cblxuICAgIHZhciBnZXREaXN0YW5jZSA9IGZ1bmN0aW9uIGdldERpc3RhbmNlKHN0YXJ0LCBlbmQpIHtcbiAgICAgIHJldHVybiBNYXRoLmh5cG90KGVuZC54IC0gc3RhcnQueCwgZW5kLnkgLSBzdGFydC55KTtcbiAgICB9OyAvLyDlj4zmjIfnvKnmlL7mr5TkvotcblxuXG4gICAgdmFyIHNjYWxlID0gZ2V0RGlzdGFuY2Uoe1xuICAgICAgeDogZXZlbnQxLnBhZ2VYLFxuICAgICAgeTogZXZlbnQxLnBhZ2VZXG4gICAgfSwge1xuICAgICAgeDogZXZlbnQyLnBhZ2VYLFxuICAgICAgeTogZXZlbnQyLnBhZ2VZXG4gICAgfSkgLyBnZXREaXN0YW5jZSh7XG4gICAgICB4OiB0aGlzLnN0YXJ0UG9pbnQucGFnZVgsXG4gICAgICB5OiB0aGlzLnN0YXJ0UG9pbnQucGFnZVlcbiAgICB9LCB7XG4gICAgICB4OiB0aGlzLmVuZFBvaW50LnBhZ2VYLFxuICAgICAgeTogdGhpcy5lbmRQb2ludC5wYWdlWVxuICAgIH0pOyAvLyDlupTnlKjliLDnlLvluIPkuIrnmoTnvKnmlL7mr5TkvotcblxuICAgIHZhciB6b29tID0gdGhpcy5vcmlnaW5TY2FsZSAqIHNjYWxlOyAvLyDnvJPlrZjlvZPliY3nmoTnvKnmlL7mr5TkvotcblxuICAgIHRoaXMuY3VycmVudFNjYWxlID0gem9vbTtcbiAgICB2YXIgbWluWm9vbSA9IHRoaXMuZ2V0KCdtaW5ab29tJykgfHwgdGhpcy5ncmFwaC5nZXQoJ21pblpvb20nKTtcbiAgICB2YXIgbWF4Wm9vbSA9IHRoaXMuZ2V0KCdtYXhab29tJykgfHwgdGhpcy5ncmFwaC5nZXQoJ21heFpvb20nKTtcblxuICAgIGlmICh6b29tID4gbWF4Wm9vbSB8fCB6b29tIDwgbWluWm9vbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBjYW52YXMgPSB0aGlzLmdyYXBoLmdldCgnY2FudmFzJyk7XG4gICAgdmFyIHBvaW50ID0gY2FudmFzLmdldFBvaW50QnlDbGllbnQoZXZ0LmNsaWVudFgsIGV2dC5jbGllbnRZKTtcbiAgICB0aGlzLmdyYXBoLnpvb21Ubyh6b29tLCB7XG4gICAgICB4OiBwb2ludC54LFxuICAgICAgeTogcG9pbnQueVxuICAgIH0pO1xuICAgIHRoaXMuZ3JhcGguZW1pdCgnd2hlZWx6b29tJywgZXZ0KTtcbiAgfSxcbiAgb25Ub3VjaEVuZDogZnVuY3Rpb24gb25Ub3VjaEVuZCgpIHtcbiAgICB0aGlzLm1vdmVhYmxlID0gZmFsc2U7XG4gICAgdGhpcy5lbmRQb2ludCA9IG51bGw7XG4gIH0sXG4gIG9uV2hlZWw6IGZ1bmN0aW9uIG9uV2hlZWwoZSkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgX2EgPSB0aGlzLFxuICAgICAgICBncmFwaCA9IF9hLmdyYXBoLFxuICAgICAgICBmaXhTZWxlY3RlZEl0ZW1zID0gX2EuZml4U2VsZWN0ZWRJdGVtcztcblxuICAgIGlmICh0aGlzLnNob3VsZEJlZ2luICYmICF0aGlzLnNob3VsZEJlZ2luLmNhbGwodGhpcywgZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuc2hvdWxkVXBkYXRlLmNhbGwodGhpcywgZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgdmFyIGNhbnZhcyA9IGdyYXBoLmdldCgnY2FudmFzJyk7XG4gICAgdmFyIHBvaW50ID0gY2FudmFzLmdldFBvaW50QnlDbGllbnQoZS5jbGllbnRYLCBlLmNsaWVudFkpO1xuICAgIHZhciBzZW5zaXRpdml0eSA9IHRoaXMuZ2V0KCdzZW5zaXRpdml0eScpO1xuICAgIHZhciBncmFwaFpvb20gPSBncmFwaC5nZXRab29tKCk7XG4gICAgdmFyIHJhdGlvID0gZ3JhcGhab29tO1xuICAgIHZhciB6b29tID0gZ3JhcGhab29tOyAvLyDlhbzlrrlJReOAgUZpcmVmb3jlj4pDaHJvbWVcblxuICAgIGlmIChlLndoZWVsRGVsdGEgPCAwKSB7XG4gICAgICByYXRpbyA9IDEgLSBERUxUQSAqIHNlbnNpdGl2aXR5O1xuICAgIH0gZWxzZSB7XG4gICAgICByYXRpbyA9IDEgLyAoMSAtIERFTFRBICogc2Vuc2l0aXZpdHkpO1xuICAgIH1cblxuICAgIHpvb20gPSBncmFwaFpvb20gKiByYXRpbzsgLy8gY29uc3Qgem9vbSA9IHJhdGlvICogZ3JhcGhab29tO1xuXG4gICAgdmFyIG1pblpvb20gPSB0aGlzLmdldCgnbWluWm9vbScpIHx8IGdyYXBoLmdldCgnbWluWm9vbScpO1xuICAgIHZhciBtYXhab29tID0gdGhpcy5nZXQoJ21heFpvb20nKSB8fCBncmFwaC5nZXQoJ21heFpvb20nKTtcblxuICAgIGlmICh6b29tID4gbWF4Wm9vbSB8fCB6b29tIDwgbWluWm9vbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gaGlkZSB0aGUgc2hhcGVzIHdoZW4gdGhlIHpvb20gcmF0aW8gaXMgc21hbGxlciB0aGFuIG9wdGltaXplWm9vbVxuICAgIC8vIGhpZGUgdGhlIHNoYXBlcyB3aGVuIHpvb21taW5nXG5cblxuICAgIHZhciBlbmFibGVPcHRpbWl6ZSA9IHRoaXMuZ2V0KCdlbmFibGVPcHRpbWl6ZScpO1xuXG4gICAgaWYgKGVuYWJsZU9wdGltaXplKSB7XG4gICAgICB2YXIgb3B0aW1pemVab29tXzEgPSB0aGlzLmdldCgnb3B0aW1pemVab29tJyk7XG4gICAgICB2YXIgb3B0aW1pemVkID0gdGhpcy5nZXQoJ29wdGltaXplZCcpO1xuICAgICAgdmFyIG5vZGVzXzEgPSBncmFwaC5nZXROb2RlcygpO1xuICAgICAgdmFyIGVkZ2VzXzEgPSBncmFwaC5nZXRFZGdlcygpO1xuICAgICAgdmFyIG5vZGVzTGVuZ3RoXzEgPSBub2Rlc18xLmxlbmd0aDtcbiAgICAgIHZhciBlZGdlc0xlbmd0aF8xID0gZWRnZXNfMS5sZW5ndGg7IC8vIGhpZGluZ1xuXG4gICAgICBpZiAoIW9wdGltaXplZCkge1xuICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IG5vZGVzTGVuZ3RoXzE7IG4rKykge1xuICAgICAgICAgIHZhciBub2RlID0gbm9kZXNfMVtuXTtcblxuICAgICAgICAgIGlmICghbm9kZS5kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbiA9IG5vZGUuZ2V0KCdncm91cCcpLmdldCgnY2hpbGRyZW4nKTtcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbkxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aDtcblxuICAgICAgICAgICAgZm9yICh2YXIgYyA9IDA7IGMgPCBjaGlsZHJlbkxlbmd0aDsgYysrKSB7XG4gICAgICAgICAgICAgIHZhciBzaGFwZSA9IGNoaWxkcmVuW2NdO1xuXG4gICAgICAgICAgICAgIGlmICghc2hhcGUuZGVzdG9yeWVkICYmICFzaGFwZS5nZXQoJ2lzS2V5U2hhcGUnKSkge1xuICAgICAgICAgICAgICAgIHNoYXBlLnNldCgnb3JpLXZpc2liaWxpdHknLCBzaGFwZS5nZXQoJ29yaS12aXNpYmlsaXR5JykgfHwgc2hhcGUuZ2V0KCd2aXNpYmxlJykpO1xuICAgICAgICAgICAgICAgIHNoYXBlLmhpZGUoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAodmFyIGVkZ2VJbmRleCA9IDA7IGVkZ2VJbmRleCA8IGVkZ2VzTGVuZ3RoXzE7IGVkZ2VJbmRleCsrKSB7XG4gICAgICAgICAgdmFyIGVkZ2UgPSBlZGdlc18xW2VkZ2VJbmRleF07XG4gICAgICAgICAgdmFyIGNoaWxkcmVuID0gZWRnZS5nZXQoJ2dyb3VwJykuZ2V0KCdjaGlsZHJlbicpO1xuICAgICAgICAgIHZhciBjaGlsZHJlbkxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aDtcblxuICAgICAgICAgIGZvciAodmFyIGMgPSAwOyBjIDwgY2hpbGRyZW5MZW5ndGg7IGMrKykge1xuICAgICAgICAgICAgdmFyIHNoYXBlID0gY2hpbGRyZW5bY107XG4gICAgICAgICAgICBzaGFwZS5zZXQoJ29yaS12aXNpYmlsaXR5Jywgc2hhcGUuZ2V0KCdvcmktdmlzaWJpbGl0eScpIHx8IHNoYXBlLmdldCgndmlzaWJsZScpKTtcbiAgICAgICAgICAgIHNoYXBlLmhpZGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldCgnb3B0aW1pemVkJywgdHJ1ZSk7XG4gICAgICB9IC8vIHNob3dpbmcgYWZ0ZXIgMTAwbXNcblxuXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5nZXQoJ3RpbWVvdXQnKSk7XG4gICAgICB2YXIgdGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgY3VycmVudFpvb20gPSBncmFwaC5nZXRab29tKCk7XG5cbiAgICAgICAgdmFyIGN1ck9wdGltaXplZCA9IF90aGlzLmdldCgnb3B0aW1pemVkJyk7XG5cbiAgICAgICAgaWYgKGN1ck9wdGltaXplZCkge1xuICAgICAgICAgIF90aGlzLnNldCgnb3B0aW1pemVkJywgZmFsc2UpO1xuXG4gICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCBub2Rlc0xlbmd0aF8xOyBuKyspIHtcbiAgICAgICAgICAgIHZhciBub2RlID0gbm9kZXNfMVtuXTtcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbiA9IG5vZGUuZ2V0KCdncm91cCcpLmdldCgnY2hpbGRyZW4nKTtcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbkxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aDtcblxuICAgICAgICAgICAgaWYgKGN1cnJlbnRab29tIDwgb3B0aW1pemVab29tXzEpIHtcbiAgICAgICAgICAgICAgdmFyIGtleVNoYXBlID0gbm9kZS5nZXRLZXlTaGFwZSgpO1xuICAgICAgICAgICAgICB2YXIgb3JpVmlzID0ga2V5U2hhcGUuZ2V0KCdvcmktdmlzaWJpbGl0eScpO1xuICAgICAgICAgICAgICBpZiAob3JpVmlzKSBrZXlTaGFwZS5zaG93KCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmb3IgKHZhciBjID0gMDsgYyA8IGNoaWxkcmVuTGVuZ3RoOyBjKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgc2hhcGUgPSBjaGlsZHJlbltjXTtcbiAgICAgICAgICAgICAgICB2YXIgb3JpVmlzID0gc2hhcGUuZ2V0KCdvcmktdmlzaWJpbGl0eScpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFzaGFwZS5nZXQoJ3Zpc2libGUnKSAmJiBvcmlWaXMpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChvcmlWaXMpIHNoYXBlLnNob3coKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBmb3IgKHZhciBlZGdlSW5kZXggPSAwOyBlZGdlSW5kZXggPCBlZGdlc0xlbmd0aF8xOyBlZGdlSW5kZXgrKykge1xuICAgICAgICAgICAgdmFyIGVkZ2UgPSBlZGdlc18xW2VkZ2VJbmRleF07XG4gICAgICAgICAgICB2YXIgY2hpbGRyZW4gPSBlZGdlLmdldCgnZ3JvdXAnKS5nZXQoJ2NoaWxkcmVuJyk7XG4gICAgICAgICAgICB2YXIgY2hpbGRyZW5MZW5ndGggPSBjaGlsZHJlbi5sZW5ndGg7XG5cbiAgICAgICAgICAgIGlmIChjdXJyZW50Wm9vbSA8IG9wdGltaXplWm9vbV8xKSB7XG4gICAgICAgICAgICAgIHZhciBrZXlTaGFwZSA9IGVkZ2UuZ2V0S2V5U2hhcGUoKTtcbiAgICAgICAgICAgICAgdmFyIG9yaVZpcyA9IGtleVNoYXBlLmdldCgnb3JpLXZpc2liaWxpdHknKTtcbiAgICAgICAgICAgICAgaWYgKG9yaVZpcykga2V5U2hhcGUuc2hvdygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZm9yICh2YXIgYyA9IDA7IGMgPCBjaGlsZHJlbkxlbmd0aDsgYysrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNoYXBlID0gY2hpbGRyZW5bY107XG5cbiAgICAgICAgICAgICAgICBpZiAoIXNoYXBlLmdldCgndmlzaWJsZScpKSB7XG4gICAgICAgICAgICAgICAgICB2YXIgb3JpVmlzID0gc2hhcGUuZ2V0KCdvcmktdmlzaWJpbGl0eScpO1xuICAgICAgICAgICAgICAgICAgaWYgKG9yaVZpcykgc2hhcGUuc2hvdygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSwgMTAwKTtcbiAgICAgIHRoaXMuc2V0KCd0aW1lb3V0JywgdGltZW91dCk7XG4gICAgfSAvLyBmaXggdGhlIGl0ZW1zIHdoZW4gem9vbWluZ1xuXG5cbiAgICBpZiAoZ3JhcGhab29tIDw9IDEpIHtcbiAgICAgIHZhciBmaXhOb2RlcyA9IHZvaWQgMCxcbiAgICAgICAgICBmaXhFZGdlcyA9IHZvaWQgMDtcblxuICAgICAgaWYgKGZpeFNlbGVjdGVkSXRlbXMuZml4QWxsIHx8IGZpeFNlbGVjdGVkSXRlbXMuZml4TGluZVdpZHRoIHx8IGZpeFNlbGVjdGVkSXRlbXMuZml4TGFiZWwpIHtcbiAgICAgICAgZml4Tm9kZXMgPSBncmFwaC5maW5kQWxsQnlTdGF0ZSgnbm9kZScsIGZpeFNlbGVjdGVkSXRlbXMuZml4U3RhdGUpO1xuICAgICAgICBmaXhFZGdlcyA9IGdyYXBoLmZpbmRBbGxCeVN0YXRlKCdlZGdlJywgZml4U2VsZWN0ZWRJdGVtcy5maXhTdGF0ZSk7XG4gICAgICAgIHZhciBzY2FsZSA9IGdyYXBoWm9vbSAvIHpvb207XG4gICAgICAgIHZhciBmaXhOb2Rlc0xlbmd0aCA9IGZpeE5vZGVzLmxlbmd0aDtcblxuICAgICAgICBmb3IgKHZhciBmbiA9IDA7IGZuIDwgZml4Tm9kZXNMZW5ndGg7IGZuKyspIHtcbiAgICAgICAgICB2YXIgbm9kZSA9IGZpeE5vZGVzW2ZuXTtcbiAgICAgICAgICB2YXIgZ3JvdXAgPSBub2RlLmdldENvbnRhaW5lcigpO1xuICAgICAgICAgIHZhciBub2RlTW9kZWwgPSBub2RlLmdldE1vZGVsKCk7XG4gICAgICAgICAgdmFyIG9yaWdpblN0eWxlID0gbm9kZS5nZXRPcmlnaW5TdHlsZSgpO1xuICAgICAgICAgIHZhciBpdGVtU3RhdGVTdHlsZSA9IG5vZGUuZ2V0U3RhdGVTdHlsZShmaXhTZWxlY3RlZEl0ZW1zLmZpeFN0YXRlKTtcbiAgICAgICAgICB2YXIgc2hhcGVTdGF0ZVN0eWxlID0gbm9kZS5nZXQoJ3NoYXBlRmFjdG9yeScpLmdldFNoYXBlKG5vZGVNb2RlbC50eXBlKS5nZXRTdGF0ZVN0eWxlKGZpeFNlbGVjdGVkSXRlbXMuZml4U3RhdGUsIG5vZGUpW2ZpeFNlbGVjdGVkSXRlbXMuZml4U3RhdGVdO1xuXG4gICAgICAgICAgaWYgKGZpeFNlbGVjdGVkSXRlbXMuZml4QWxsKSB7XG4gICAgICAgICAgICBpZiAoem9vbSA8PSAxKSB7XG4gICAgICAgICAgICAgIHZhciBncm91cE1hdHJpeCA9IGNsb25lKGdyb3VwLmdldE1hdHJpeCgpKTtcbiAgICAgICAgICAgICAgaWYgKCFncm91cE1hdHJpeCkgZ3JvdXBNYXRyaXggPSBbMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMV07XG5cbiAgICAgICAgICAgICAgdmFyIF9iID0gbm9kZS5nZXRNb2RlbCgpLFxuICAgICAgICAgICAgICAgICAgeCA9IF9iLngsXG4gICAgICAgICAgICAgICAgICB5ID0gX2IueTtcblxuICAgICAgICAgICAgICBncm91cE1hdHJpeCA9IHRyYW5zZm9ybShncm91cE1hdHJpeCwgW1sndCcsIC14LCAteV0sIFsncycsIHNjYWxlLCBzY2FsZV0sIFsndCcsIHgsIHldXSk7XG4gICAgICAgICAgICAgIGdyb3VwLnNldE1hdHJpeChncm91cE1hdHJpeCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbiA9IGdyb3VwLmdldCgnY2hpbGRyZW4nKTtcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbkxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aDtcblxuICAgICAgICAgICAgZm9yICh2YXIgYyA9IDA7IGMgPCBjaGlsZHJlbkxlbmd0aDsgYysrKSB7XG4gICAgICAgICAgICAgIHZhciBzaGFwZSA9IGNoaWxkcmVuW2NdO1xuICAgICAgICAgICAgICB2YXIgZm9udFNpemUgPSB2b2lkIDAsXG4gICAgICAgICAgICAgICAgICBsaW5lV2lkdGggPSB2b2lkIDA7XG5cbiAgICAgICAgICAgICAgaWYgKGZpeFNlbGVjdGVkSXRlbXMuZml4TGFiZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgc2hhcGVUeXBlID0gc2hhcGUuZ2V0KCd0eXBlJyk7XG5cbiAgICAgICAgICAgICAgICBpZiAoc2hhcGVUeXBlID09PSAndGV4dCcpIHtcbiAgICAgICAgICAgICAgICAgIGZvbnRTaXplID0gc2hhcGUuYXR0cignZm9udFNpemUnKSB8fCAxMjtcbiAgICAgICAgICAgICAgICAgIHZhciBpdGVtU3R5bGUgPSBpdGVtU3RhdGVTdHlsZVtzaGFwZS5nZXQoJ25hbWUnKV07XG4gICAgICAgICAgICAgICAgICB2YXIgc2hhcGVTdHlsZSA9IHNoYXBlU3RhdGVTdHlsZVtzaGFwZS5nZXQoJ25hbWUnKV07XG4gICAgICAgICAgICAgICAgICB2YXIgaXRlbUZvbnRTaXplID0gaXRlbVN0eWxlID8gaXRlbVN0eWxlLmZvbnRTaXplIDogMTI7XG4gICAgICAgICAgICAgICAgICB2YXIgc2hhcGVGb250U2l6ZSA9IHNoYXBlU3R5bGUgPyBzaGFwZVN0eWxlLmZvbnRTaXplIDogMTI7XG4gICAgICAgICAgICAgICAgICB2YXIgb3JpRm9udFNpemUgPSBpdGVtRm9udFNpemUgfHwgc2hhcGVGb250U2l6ZSB8fCAxMjtcbiAgICAgICAgICAgICAgICAgIGlmICh6b29tIDw9IDEpIHNoYXBlLmF0dHIoJ2ZvbnRTaXplJywgb3JpRm9udFNpemUgLyB6b29tKTsgLy8gKiBncmFwaFpvb20gLyB6b29tXG5cbiAgICAgICAgICAgICAgICAgIGlmIChsaW5lV2lkdGgpIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChmaXhTZWxlY3RlZEl0ZW1zLmZpeExpbmVXaWR0aCkge1xuICAgICAgICAgICAgICAgIGlmIChzaGFwZS5nZXQoJ2lzS2V5U2hhcGUnKSkge1xuICAgICAgICAgICAgICAgICAgbGluZVdpZHRoID0gc2hhcGUuYXR0cignbGluZVdpZHRoJykgfHwgMDtcbiAgICAgICAgICAgICAgICAgIHZhciBvcmlMaW5lV2lkdGggPSBpdGVtU3RhdGVTdHlsZS5saW5lV2lkdGggfHwgc2hhcGVTdGF0ZVN0eWxlLmxpbmVXaWR0aCB8fCBvcmlnaW5TdHlsZS5saW5lV2lkdGggfHwgMDtcbiAgICAgICAgICAgICAgICAgIGlmICh6b29tIDw9IDEpIHNoYXBlLmF0dHIoJ2xpbmVXaWR0aCcsIG9yaUxpbmVXaWR0aCAvIHpvb20pOyAvLyAqIGdyYXBoWm9vbSAvIHpvb21cblxuICAgICAgICAgICAgICAgICAgaWYgKGZvbnRTaXplKSBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZml4RWRnZXNMZW5ndGggPSBmaXhFZGdlcy5sZW5ndGg7XG5cbiAgICAgICAgZm9yICh2YXIgZmUgPSAwOyBmZSA8IGZpeEVkZ2VzTGVuZ3RoOyBmZSsrKSB7XG4gICAgICAgICAgdmFyIGVkZ2UgPSBmaXhFZGdlc1tmZV07XG4gICAgICAgICAgdmFyIGdyb3VwID0gZWRnZS5nZXRDb250YWluZXIoKTtcbiAgICAgICAgICB2YXIgY2hpbGRyZW4gPSBncm91cC5nZXQoJ2NoaWxkcmVuJyk7XG4gICAgICAgICAgdmFyIG5vZGVNb2RlbCA9IGVkZ2UuZ2V0TW9kZWwoKTtcbiAgICAgICAgICB2YXIgaXRlbVN0YXRlU3R5bGUgPSBlZGdlLmdldFN0YXRlU3R5bGUoZml4U2VsZWN0ZWRJdGVtcy5maXhTdGF0ZSk7XG4gICAgICAgICAgdmFyIHNoYXBlU3RhdGVTdHlsZSA9IGVkZ2UuZ2V0KCdzaGFwZUZhY3RvcnknKS5nZXRTaGFwZShub2RlTW9kZWwudHlwZSkuZ2V0U3RhdGVTdHlsZShmaXhTZWxlY3RlZEl0ZW1zLmZpeFN0YXRlLCBlZGdlKVtmaXhTZWxlY3RlZEl0ZW1zLmZpeFN0YXRlXTtcbiAgICAgICAgICB2YXIgY2hpbGRyZW5MZW5ndGggPSBjaGlsZHJlbi5sZW5ndGg7XG5cbiAgICAgICAgICBmb3IgKHZhciBjID0gMDsgYyA8IGNoaWxkcmVuTGVuZ3RoOyBjKyspIHtcbiAgICAgICAgICAgIHZhciBzaGFwZSA9IGNoaWxkcmVuW2NdO1xuICAgICAgICAgICAgdmFyIGZvbnRTaXplID0gdm9pZCAwLFxuICAgICAgICAgICAgICAgIGxpbmVXaWR0aCA9IHZvaWQgMDtcblxuICAgICAgICAgICAgaWYgKGZpeFNlbGVjdGVkSXRlbXMuZml4TGFiZWwgfHwgZml4U2VsZWN0ZWRJdGVtcy5maXhBbGwpIHtcbiAgICAgICAgICAgICAgdmFyIHNoYXBlVHlwZSA9IHNoYXBlLmdldCgndHlwZScpO1xuXG4gICAgICAgICAgICAgIGlmIChzaGFwZVR5cGUgPT09ICd0ZXh0Jykge1xuICAgICAgICAgICAgICAgIGZvbnRTaXplID0gc2hhcGUuYXR0cignZm9udFNpemUnKSB8fCAxMjtcbiAgICAgICAgICAgICAgICB2YXIgaXRlbVN0eWxlID0gaXRlbVN0YXRlU3R5bGVbc2hhcGUuZ2V0KCduYW1lJyldO1xuICAgICAgICAgICAgICAgIHZhciBzaGFwZVN0eWxlID0gc2hhcGVTdGF0ZVN0eWxlW3NoYXBlLmdldCgnbmFtZScpXTtcbiAgICAgICAgICAgICAgICB2YXIgaXRlbUZvbnRTaXplID0gaXRlbVN0eWxlID8gaXRlbVN0eWxlLmZvbnRTaXplIDogMTI7XG4gICAgICAgICAgICAgICAgdmFyIHNoYXBlRm9udFNpemUgPSBzaGFwZVN0eWxlID8gc2hhcGVTdHlsZS5mb250U2l6ZSA6IDEyO1xuICAgICAgICAgICAgICAgIHZhciBvcmlGb250U2l6ZSA9IGl0ZW1Gb250U2l6ZSB8fCBzaGFwZUZvbnRTaXplIHx8IDEyO1xuICAgICAgICAgICAgICAgIGlmICh6b29tIDw9IDEpIHNoYXBlLmF0dHIoJ2ZvbnRTaXplJywgb3JpRm9udFNpemUgLyB6b29tKTtcbiAgICAgICAgICAgICAgICBpZiAobGluZVdpZHRoKSBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZml4U2VsZWN0ZWRJdGVtcy5maXhMaW5lV2lkdGggfHwgZml4U2VsZWN0ZWRJdGVtcy5maXhBbGwpIHtcbiAgICAgICAgICAgICAgaWYgKHNoYXBlLmdldCgnaXNLZXlTaGFwZScpKSB7XG4gICAgICAgICAgICAgICAgbGluZVdpZHRoID0gc2hhcGUuYXR0cignbGluZVdpZHRoJykgfHwgMDtcbiAgICAgICAgICAgICAgICB2YXIgb3JpTGluZVdpZHRoID0gaXRlbVN0YXRlU3R5bGUubGluZVdpZHRoIHx8IHNoYXBlU3RhdGVTdHlsZS5saW5lV2lkdGggfHwgMTtcbiAgICAgICAgICAgICAgICBpZiAoem9vbSA8PSAxKSBzaGFwZS5hdHRyKCdsaW5lV2lkdGgnLCBvcmlMaW5lV2lkdGggLyB6b29tKTtcbiAgICAgICAgICAgICAgICBpZiAoZm9udFNpemUpIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZ3JhcGguem9vbVRvKHpvb20sIHtcbiAgICAgIHg6IHBvaW50LngsXG4gICAgICB5OiBwb2ludC55XG4gICAgfSk7XG4gICAgZ3JhcGguZW1pdCgnd2hlZWx6b29tJywgZSk7XG4gIH1cbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/behavior/zoom-canvas.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/element/index.js":
/*!*************************************************************************!*\
!*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/element/index.js ***!
\*************************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _antv_g6_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @antv/g6-element */ \"./node_modules/_@antv_g6-element@0.5.0@@antv/g6-element/es/index.js\");\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2VsZW1lbnQvaW5kZXguanM/MTg3MiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL19AYW50dl9nNi1wY0AwLjUuMEBAYW50di9nNi1wYy9lcy9lbGVtZW50L2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdAYW50di9nNi1lbGVtZW50JzsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/element/index.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/global.js":
/*!******************************************************************!*\
!*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/global.js ***!
\******************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util/color */ \"./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/util/color.js\");\n\nvar subjectColor = 'rgb(95, 149, 255)';\nvar backColor = 'rgb(255, 255, 255)';\nvar textColor = 'rgb(0, 0, 0)';\nvar colorSet = Object(_util_color__WEBPACK_IMPORTED_MODULE_0__[\"getColorsWithSubjectColor\"])(subjectColor, backColor);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n version: '0.5.0',\n rootContainerClassName: 'root-container',\n nodeContainerClassName: 'node-container',\n edgeContainerClassName: 'edge-container',\n comboContainerClassName: 'combo-container',\n delegateContainerClassName: 'delegate-container',\n defaultLoopPosition: 'top',\n nodeLabel: {\n style: {\n fill: '#000',\n fontSize: 12,\n textAlign: 'center',\n textBaseline: 'middle'\n },\n offset: 4 // 节点的默认文本不居中时的偏移量\n\n },\n defaultNode: {\n type: 'circle',\n style: {\n lineWidth: 1,\n stroke: colorSet.mainStroke,\n fill: colorSet.mainFill\n },\n size: 20,\n color: colorSet.mainStroke,\n linkPoints: {\n size: 8,\n lineWidth: 1,\n fill: colorSet.activeFill,\n stroke: colorSet.activeStroke\n }\n },\n // 节点应用状态后的样式,默认仅提供 active、selected、highlight、inactive、disable,用户可以自己扩展\n nodeStateStyles: {\n active: {\n fill: colorSet.activeFill,\n stroke: colorSet.activeStroke,\n lineWidth: 2,\n shadowColor: colorSet.mainStroke,\n shadowBlur: 10\n },\n selected: {\n fill: colorSet.selectedFill,\n stroke: colorSet.selectedStroke,\n lineWidth: 4,\n shadowColor: colorSet.selectedStroke,\n shadowBlur: 10,\n 'text-shape': {\n fontWeight: 500\n }\n },\n highlight: {\n fill: colorSet.highlightFill,\n stroke: colorSet.highlightStroke,\n lineWidth: 2,\n 'text-shape': {\n fontWeight: 500\n }\n },\n inactive: {\n fill: colorSet.inactiveFill,\n stroke: colorSet.inactiveStroke,\n lineWidth: 1\n },\n disable: {\n fill: colorSet.disableFill,\n stroke: colorSet.disableStroke,\n lineWidth: 1\n }\n },\n edgeLabel: {\n style: {\n fill: textColor,\n textAlign: 'center',\n textBaseline: 'middle',\n fontSize: 12\n }\n },\n defaultEdge: {\n type: 'line',\n size: 1,\n style: {\n stroke: colorSet.edgeMainStroke,\n lineAppendWidth: 2\n },\n color: colorSet.edgeMainStroke\n },\n // 边应用状态后的样式,默认仅提供 active、selected、highlight、inactive、disable,用户可以自己扩展\n edgeStateStyles: {\n active: {\n stroke: colorSet.edgeActiveStroke,\n lineWidth: 1\n },\n selected: {\n stroke: colorSet.edgeSelectedStroke,\n lineWidth: 2,\n shadowColor: colorSet.edgeSelectedStroke,\n shadowBlur: 10,\n 'text-shape': {\n fontWeight: 500\n }\n },\n highlight: {\n stroke: colorSet.edgeHighlightStroke,\n lineWidth: 2,\n 'text-shape': {\n fontWeight: 500\n }\n },\n inactive: {\n stroke: colorSet.edgeInactiveStroke,\n lineWidth: 1\n },\n disable: {\n stroke: colorSet.edgeDisableStroke,\n lineWidth: 1\n }\n },\n comboLabel: {\n style: {\n fill: textColor,\n // textAlign: 'center',\n textBaseline: 'middle',\n fontSize: 12\n },\n refY: 10,\n refX: 10 // Combo 的默认文本不居中时的偏移量\n\n },\n defaultCombo: {\n type: 'circle',\n style: {\n fill: colorSet.comboMainFill,\n lineWidth: 1,\n stroke: colorSet.comboMainStroke,\n r: 5,\n width: 20,\n height: 10\n },\n size: [20, 5],\n color: colorSet.comboMainStroke,\n padding: [25, 20, 15, 20]\n },\n // combo 应用状态后的样式,默认仅提供 active、selected、highlight、inactive、disable,用户可以自己扩展\n comboStateStyles: {\n active: {\n stroke: colorSet.comboActiveStroke,\n lineWidth: 1,\n fill: colorSet.comboActiveFill\n },\n selected: {\n stroke: colorSet.comboSelectedStroke,\n lineWidth: 2,\n fill: colorSet.comboSelectedFill,\n shadowColor: colorSet.comboSelectedStroke,\n shadowBlur: 10,\n 'text-shape': {\n fontWeight: 500\n }\n },\n highlight: {\n stroke: colorSet.comboHighlightStroke,\n lineWidth: 2,\n fill: colorSet.comboHighlightFill,\n 'text-shape': {\n fontWeight: 500\n }\n },\n inactive: {\n stroke: colorSet.comboInactiveStroke,\n fill: colorSet.comboInactiveFill,\n lineWidth: 1\n },\n disable: {\n stroke: colorSet.comboDisableStroke,\n fill: colorSet.comboDisableFill,\n lineWidth: 1\n }\n },\n delegateStyle: {\n fill: '#F3F9FF',\n fillOpacity: 0.5,\n stroke: '#1890FF',\n strokeOpacity: 0.9,\n lineDash: [5, 5]\n },\n // 文本水印默认配置\n textWaterMarkerConfig: {\n width: 150,\n height: 100,\n compatible: false,\n text: {\n x: 0,\n y: 60,\n lineHeight: 20,\n rotate: 20,\n fontSize: 14,\n fontFamily: 'Microsoft YaHei',\n fill: 'rgba(0, 0, 0, 0.1)',\n baseline: 'Middle'\n }\n },\n imageWaterMarkerConfig: {\n width: 150,\n height: 130,\n compatible: false,\n image: {\n x: 0,\n y: 0,\n width: 30,\n height: 20,\n rotate: 0\n }\n },\n waterMarkerImage: 'https://gw.alipayobjects.com/os/s/prod/antv/assets/image/logo-with-text-73b8a.svg'\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2dsb2JhbC5qcz84ZmUyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBeUQ7QUFDekQ7QUFDQTtBQUNBO0FBQ0EsZUFBZSw2RUFBeUI7QUFDekI7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUEsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUMiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvX0BhbnR2X2c2LXBjQDAuNS4wQEBhbnR2L2c2LXBjL2VzL2dsb2JhbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldENvbG9yc1dpdGhTdWJqZWN0Q29sb3IgfSBmcm9tICcuL3V0aWwvY29sb3InO1xudmFyIHN1YmplY3RDb2xvciA9ICdyZ2IoOTUsIDE0OSwgMjU1KSc7XG52YXIgYmFja0NvbG9yID0gJ3JnYigyNTUsIDI1NSwgMjU1KSc7XG52YXIgdGV4dENvbG9yID0gJ3JnYigwLCAwLCAwKSc7XG52YXIgY29sb3JTZXQgPSBnZXRDb2xvcnNXaXRoU3ViamVjdENvbG9yKHN1YmplY3RDb2xvciwgYmFja0NvbG9yKTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgdmVyc2lvbjogJzAuNS4wJyxcbiAgcm9vdENvbnRhaW5lckNsYXNzTmFtZTogJ3Jvb3QtY29udGFpbmVyJyxcbiAgbm9kZUNvbnRhaW5lckNsYXNzTmFtZTogJ25vZGUtY29udGFpbmVyJyxcbiAgZWRnZUNvbnRhaW5lckNsYXNzTmFtZTogJ2VkZ2UtY29udGFpbmVyJyxcbiAgY29tYm9Db250YWluZXJDbGFzc05hbWU6ICdjb21iby1jb250YWluZXInLFxuICBkZWxlZ2F0ZUNvbnRhaW5lckNsYXNzTmFtZTogJ2RlbGVnYXRlLWNvbnRhaW5lcicsXG4gIGRlZmF1bHRMb29wUG9zaXRpb246ICd0b3AnLFxuICBub2RlTGFiZWw6IHtcbiAgICBzdHlsZToge1xuICAgICAgZmlsbDogJyMwMDAnLFxuICAgICAgZm9udFNpemU6IDEyLFxuICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgIHRleHRCYXNlbGluZTogJ21pZGRsZSdcbiAgICB9LFxuICAgIG9mZnNldDogNCAvLyDoioLngrnnmoTpu5jorqTmlofmnKzkuI3lsYXkuK3ml7bnmoTlgY/np7vph49cblxuICB9LFxuICBkZWZhdWx0Tm9kZToge1xuICAgIHR5cGU6ICdjaXJjbGUnLFxuICAgIHN0eWxlOiB7XG4gICAgICBsaW5lV2lkdGg6IDEsXG4gICAgICBzdHJva2U6IGNvbG9yU2V0Lm1haW5TdHJva2UsXG4gICAgICBmaWxsOiBjb2xvclNldC5tYWluRmlsbFxuICAgIH0sXG4gICAgc2l6ZTogMjAsXG4gICAgY29sb3I6IGNvbG9yU2V0Lm1haW5TdHJva2UsXG4gICAgbGlua1BvaW50czoge1xuICAgICAgc2l6ZTogOCxcbiAgICAgIGxpbmVXaWR0aDogMSxcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmFjdGl2ZUZpbGwsXG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmFjdGl2ZVN0cm9rZVxuICAgIH1cbiAgfSxcbiAgLy8g6IqC54K55bqU55So54q25oCB5ZCO55qE5qC35byP77yM6buY6K6k5LuF5o+Q5L6bIGFjdGl2ZeOAgXNlbGVjdGVk44CBaGlnaGxpZ2h044CBaW5hY3RpdmXjgIFkaXNhYmxl77yM55So5oi35Y+v5Lul6Ieq5bex5omp5bGVXG4gIG5vZGVTdGF0ZVN0eWxlczoge1xuICAgIGFjdGl2ZToge1xuICAgICAgZmlsbDogY29sb3JTZXQuYWN0aXZlRmlsbCxcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuYWN0aXZlU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAyLFxuICAgICAgc2hhZG93Q29sb3I6IGNvbG9yU2V0Lm1haW5TdHJva2UsXG4gICAgICBzaGFkb3dCbHVyOiAxMFxuICAgIH0sXG4gICAgc2VsZWN0ZWQ6IHtcbiAgICAgIGZpbGw6IGNvbG9yU2V0LnNlbGVjdGVkRmlsbCxcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuc2VsZWN0ZWRTdHJva2UsXG4gICAgICBsaW5lV2lkdGg6IDQsXG4gICAgICBzaGFkb3dDb2xvcjogY29sb3JTZXQuc2VsZWN0ZWRTdHJva2UsXG4gICAgICBzaGFkb3dCbHVyOiAxMCxcbiAgICAgICd0ZXh0LXNoYXBlJzoge1xuICAgICAgICBmb250V2VpZ2h0OiA1MDBcbiAgICAgIH1cbiAgICB9LFxuICAgIGhpZ2hsaWdodDoge1xuICAgICAgZmlsbDogY29sb3JTZXQuaGlnaGxpZ2h0RmlsbCxcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuaGlnaGxpZ2h0U3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAyLFxuICAgICAgJ3RleHQtc2hhcGUnOiB7XG4gICAgICAgIGZvbnRXZWlnaHQ6IDUwMFxuICAgICAgfVxuICAgIH0sXG4gICAgaW5hY3RpdmU6IHtcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmluYWN0aXZlRmlsbCxcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuaW5hY3RpdmVTdHJva2UsXG4gICAgICBsaW5lV2lkdGg6IDFcbiAgICB9LFxuICAgIGRpc2FibGU6IHtcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmRpc2FibGVGaWxsLFxuICAgICAgc3Ryb2tlOiBjb2xvclNldC5kaXNhYmxlU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAxXG4gICAgfVxuICB9LFxuICBlZGdlTGFiZWw6IHtcbiAgICBzdHlsZToge1xuICAgICAgZmlsbDogdGV4dENvbG9yLFxuICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgIHRleHRCYXNlbGluZTogJ21pZGRsZScsXG4gICAgICBmb250U2l6ZTogMTJcbiAgICB9XG4gIH0sXG4gIGRlZmF1bHRFZGdlOiB7XG4gICAgdHlwZTogJ2xpbmUnLFxuICAgIHNpemU6IDEsXG4gICAgc3R5bGU6IHtcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuZWRnZU1haW5TdHJva2UsXG4gICAgICBsaW5lQXBwZW5kV2lkdGg6IDJcbiAgICB9LFxuICAgIGNvbG9yOiBjb2xvclNldC5lZGdlTWFpblN0cm9rZVxuICB9LFxuICAvLyDovrnlupTnlKjnirbmgIHlkI7nmoTmoLflvI/vvIzpu5jorqTku4Xmj5DkvpsgYWN0aXZl44CBc2VsZWN0ZWTjgIFoaWdobGlnaHTjgIFpbmFjdGl2ZeOAgWRpc2FibGXvvIznlKjmiLflj6/ku6Xoh6rlt7HmianlsZVcbiAgZWRnZVN0YXRlU3R5bGVzOiB7XG4gICAgYWN0aXZlOiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmVkZ2VBY3RpdmVTdHJva2UsXG4gICAgICBsaW5lV2lkdGg6IDFcbiAgICB9LFxuICAgIHNlbGVjdGVkOiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmVkZ2VTZWxlY3RlZFN0cm9rZSxcbiAgICAgIGxpbmVXaWR0aDogMixcbiAgICAgIHNoYWRvd0NvbG9yOiBjb2xvclNldC5lZGdlU2VsZWN0ZWRTdHJva2UsXG4gICAgICBzaGFkb3dCbHVyOiAxMCxcbiAgICAgICd0ZXh0LXNoYXBlJzoge1xuICAgICAgICBmb250V2VpZ2h0OiA1MDBcbiAgICAgIH1cbiAgICB9LFxuICAgIGhpZ2hsaWdodDoge1xuICAgICAgc3Ryb2tlOiBjb2xvclNldC5lZGdlSGlnaGxpZ2h0U3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAyLFxuICAgICAgJ3RleHQtc2hhcGUnOiB7XG4gICAgICAgIGZvbnRXZWlnaHQ6IDUwMFxuICAgICAgfVxuICAgIH0sXG4gICAgaW5hY3RpdmU6IHtcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuZWRnZUluYWN0aXZlU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAxXG4gICAgfSxcbiAgICBkaXNhYmxlOiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmVkZ2VEaXNhYmxlU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAxXG4gICAgfVxuICB9LFxuICBjb21ib0xhYmVsOiB7XG4gICAgc3R5bGU6IHtcbiAgICAgIGZpbGw6IHRleHRDb2xvcixcbiAgICAgIC8vIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICB0ZXh0QmFzZWxpbmU6ICdtaWRkbGUnLFxuICAgICAgZm9udFNpemU6IDEyXG4gICAgfSxcbiAgICByZWZZOiAxMCxcbiAgICByZWZYOiAxMCAvLyBDb21ibyDnmoTpu5jorqTmlofmnKzkuI3lsYXkuK3ml7bnmoTlgY/np7vph49cblxuICB9LFxuICBkZWZhdWx0Q29tYm86IHtcbiAgICB0eXBlOiAnY2lyY2xlJyxcbiAgICBzdHlsZToge1xuICAgICAgZmlsbDogY29sb3JTZXQuY29tYm9NYWluRmlsbCxcbiAgICAgIGxpbmVXaWR0aDogMSxcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuY29tYm9NYWluU3Ryb2tlLFxuICAgICAgcjogNSxcbiAgICAgIHdpZHRoOiAyMCxcbiAgICAgIGhlaWdodDogMTBcbiAgICB9LFxuICAgIHNpemU6IFsyMCwgNV0sXG4gICAgY29sb3I6IGNvbG9yU2V0LmNvbWJvTWFpblN0cm9rZSxcbiAgICBwYWRkaW5nOiBbMjUsIDIwLCAxNSwgMjBdXG4gIH0sXG4gIC8vIGNvbWJvIOW6lOeUqOeKtuaAgeWQjueahOagt+W8j++8jOm7mOiupOS7heaPkOS+myBhY3RpdmXjgIFzZWxlY3RlZOOAgWhpZ2hsaWdodOOAgWluYWN0aXZl44CBZGlzYWJsZe+8jOeUqOaIt+WPr+S7peiHquW3seaJqeWxlVxuICBjb21ib1N0YXRlU3R5bGVzOiB7XG4gICAgYWN0aXZlOiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmNvbWJvQWN0aXZlU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAxLFxuICAgICAgZmlsbDogY29sb3JTZXQuY29tYm9BY3RpdmVGaWxsXG4gICAgfSxcbiAgICBzZWxlY3RlZDoge1xuICAgICAgc3Ryb2tlOiBjb2xvclNldC5jb21ib1NlbGVjdGVkU3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAyLFxuICAgICAgZmlsbDogY29sb3JTZXQuY29tYm9TZWxlY3RlZEZpbGwsXG4gICAgICBzaGFkb3dDb2xvcjogY29sb3JTZXQuY29tYm9TZWxlY3RlZFN0cm9rZSxcbiAgICAgIHNoYWRvd0JsdXI6IDEwLFxuICAgICAgJ3RleHQtc2hhcGUnOiB7XG4gICAgICAgIGZvbnRXZWlnaHQ6IDUwMFxuICAgICAgfVxuICAgIH0sXG4gICAgaGlnaGxpZ2h0OiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmNvbWJvSGlnaGxpZ2h0U3Ryb2tlLFxuICAgICAgbGluZVdpZHRoOiAyLFxuICAgICAgZmlsbDogY29sb3JTZXQuY29tYm9IaWdobGlnaHRGaWxsLFxuICAgICAgJ3RleHQtc2hhcGUnOiB7XG4gICAgICAgIGZvbnRXZWlnaHQ6IDUwMFxuICAgICAgfVxuICAgIH0sXG4gICAgaW5hY3RpdmU6IHtcbiAgICAgIHN0cm9rZTogY29sb3JTZXQuY29tYm9JbmFjdGl2ZVN0cm9rZSxcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmNvbWJvSW5hY3RpdmVGaWxsLFxuICAgICAgbGluZVdpZHRoOiAxXG4gICAgfSxcbiAgICBkaXNhYmxlOiB7XG4gICAgICBzdHJva2U6IGNvbG9yU2V0LmNvbWJvRGlzYWJsZVN0cm9rZSxcbiAgICAgIGZpbGw6IGNvbG9yU2V0LmNvbWJvRGlzYWJsZUZpbGwsXG4gICAgICBsaW5lV2lkdGg6IDFcbiAgICB9XG4gIH0sXG4gIGRlbGVnYXRlU3R5bGU6IHtcbiAgICBmaWxsOiAnI0YzRjlGRicsXG4gICAgZmlsbE9wYWNpdHk6IDAuNSxcbiAgICBzdHJva2U6ICcjMTg5MEZGJyxcbiAgICBzdHJva2VPcGFjaXR5OiAwLjksXG4gICAgbGluZURhc2g6IFs1LCA1XVxuICB9LFxuICAvLyDmlofmnKzmsLTljbDpu5jorqTphY3nva5cbiAgdGV4dFdhdGVyTWFya2VyQ29uZmlnOiB7XG4gICAgd2lkdGg6IDE1MCxcbiAgICBoZWlnaHQ6IDEwMCxcbiAgICBjb21wYXRpYmxlOiBmYWxzZSxcbiAgICB0ZXh0OiB7XG4gICAgICB4OiAwLFxuICAgICAgeTogNjAsXG4gICAgICBsaW5lSGVpZ2h0OiAyMCxcbiAgICAgIHJvdGF0ZTogMjAsXG4gICAgICBmb250U2l6ZTogMTQsXG4gICAgICBmb250RmFtaWx5OiAnTWljcm9zb2Z0IFlhSGVpJyxcbiAgICAgIGZpbGw6ICdyZ2JhKDAsIDAsIDAsIDAuMSknLFxuICAgICAgYmFzZWxpbmU6ICdNaWRkbGUnXG4gICAgfVxuICB9LFxuICBpbWFnZVdhdGVyTWFya2VyQ29uZmlnOiB7XG4gICAgd2lkdGg6IDE1MCxcbiAgICBoZWlnaHQ6IDEzMCxcbiAgICBjb21wYXRpYmxlOiBmYWxzZSxcbiAgICBpbWFnZToge1xuICAgICAgeDogMCxcbiAgICAgIHk6IDAsXG4gICAgICB3aWR0aDogMzAsXG4gICAgICBoZWlnaHQ6IDIwLFxuICAgICAgcm90YXRlOiAwXG4gICAgfVxuICB9LFxuICB3YXRlck1hcmtlckltYWdlOiAnaHR0cHM6Ly9ndy5hbGlwYXlvYmplY3RzLmNvbS9vcy9zL3Byb2QvYW50di9hc3NldHMvaW1hZ2UvbG9nby13aXRoLXRleHQtNzNiOGEuc3ZnJ1xufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/global.js\n");
/***/ }),
/***/ "./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/graph/controller/event.js":
/*!**********************************************************************************!*\
!*** ./node_modules/_@antv_g6-pc@0.5.0@@antv/g6-pc/es/graph/controller/event.js ***!
\**********************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/_tslib@2.3.1@tslib/tslib.es6.js\");\n/* harmony import */ var _antv_dom_util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @antv/dom-util */ \"./node_modules/_@antv_dom-util@2.0.3@@antv/dom-util/esm/index.js\");\n/* harmony import */ var _antv_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @antv/util */ \"./node_modules/_@antv_util@2.0.17@@antv/util/esm/index.js\");\n/* harmony import */ var _antv_g6_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @antv/g6-core */ \"./node_modules/_@antv_g6-core@0.5.0@@antv/g6-core/es/index.js\");\n\n\n\n\nvar cloneEvent = _antv_g6_core__WEBPACK_IMPORTED_MODULE_3__[\"Util\"].cloneEvent,\n isViewportChanged = _antv_g6_core__WEBPACK_IMPORTED_MODULE_3__[\"Util\"].isViewportChanged;\n\nvar EventController =\n/** @class */\nfunction (_super) {\n Object(tslib__WEBPACK_IMPORTED_MODULE_0__[\"__extends\"])(EventController, _super);\n\n function EventController(graph) {\n var _this = _super.call(this, graph) || this;\n\n _this.extendEvents = [];\n _this.dragging = false;\n _this.preItem = null;\n _this.graph = graph;\n _this.destroyed = false;\n\n _this.initEvents();\n\n return _this;\n } // 初始化 G6 中的事件\n\n\n EventController.prototype.initEvents = function () {\n var _a = this,\n graph = _a.graph,\n _b = _a.extendEvents,\n extendEvents = _b === void 0 ? [] : _b;\n\n var canvas = graph.get('canvas'); // canvas.set('draggable', true);\n\n var el = canvas.get('el');\n var canvasHandler = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"wrapBehavior\"])(this, 'onCanvasEvents');\n var originHandler = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"wrapBehavior\"])(this, 'onExtendEvents');\n var wheelHandler = Object(_antv_util__WEBPACK_IMPORTED_MODULE_2__[\"wrapBehavior\"])(this, 'onWheelEvent'); // each(EVENTS, event => {\n // canvas.off(event).on(event, canvasHandler);\n // });\n\n canvas.off('*').on('*', canvasHandler);\n this.canvasHandler = canvasHandler;\n extendEvents.push(Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"addEventListener\"])(el, 'DOMMouseScroll', wheelHandler));\n extendEvents.push(Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"addEventListener\"])(el, 'mousewheel', wheelHandler));\n\n if (typeof window !== 'undefined') {\n extendEvents.push(Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"addEventListener\"])(window, 'keydown', originHandler));\n extendEvents.push(Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"addEventListener\"])(window, 'keyup', originHandler));\n extendEvents.push(Object(_antv_dom_util__WEBPACK_IMPORTED_MODULE_1__[\"addEventListener\"])(window, 'focus', originHandler));\n }\n }; // 获取 shape 的 item 对象\n\n\n EventController.getItemRoot = function (shape) {\n while (shape && !shape.get('item')) {\n shape = shape.get('parent');\n }\n\n return shape;\n };\n /**\n * 处理 canvas 事件\n * @param evt 事件句柄\n */\n\n\n EventController.prototype.onCanvasEvents = function (evt) {\n var graph = this.graph;\n var canvas = graph.get('canvas');\n var target = evt.target;\n var eventType = evt.type;\n /**\n * (clientX, clientY): 相对于页面的坐标;\n * (canvasX, canvasY): 相对于