Hacked By AnonymousFox
{"version":3,"sources":["<anon>"],"sourcesContent":["/**\n * @license Highcharts JS v12.1.2 (2025-01-09)\n * @module highcharts/modules/venn\n * @requires highcharts\n *\n * (c) 2017-2024 Highsoft AS\n * Authors: Jon Arild Nygard\n *\n * License: www.highcharts.com/license\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"highcharts\"), require(\"highcharts\")[\"Color\"], require(\"highcharts\")[\"SeriesRegistry\"]);\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"highcharts/modules/venn\", [[\"highcharts/highcharts\"], [\"highcharts/highcharts\",\"Color\"], [\"highcharts/highcharts\",\"SeriesRegistry\"]], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"highcharts/modules/venn\"] = factory(require(\"highcharts\"), require(\"highcharts\")[\"Color\"], require(\"highcharts\")[\"SeriesRegistry\"]);\n\telse\n\t\troot[\"Highcharts\"] = factory(root[\"Highcharts\"], root[\"Highcharts\"][\"Color\"], root[\"Highcharts\"][\"SeriesRegistry\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE__944__, __WEBPACK_EXTERNAL_MODULE__620__, __WEBPACK_EXTERNAL_MODULE__512__) {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 620:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__620__;\n\n/***/ }),\n\n/***/ 512:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__512__;\n\n/***/ }),\n\n/***/ 944:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__944__;\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return module; };\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"default\": function() { return /* binding */ venn_src; }\n});\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\"],\"commonjs\":[\"highcharts\"],\"commonjs2\":[\"highcharts\"],\"root\":[\"Highcharts\"]}\nvar highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_ = __webpack_require__(944);\nvar highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default = /*#__PURE__*/__webpack_require__.n(highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_);\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"Color\"],\"commonjs\":[\"highcharts\",\"Color\"],\"commonjs2\":[\"highcharts\",\"Color\"],\"root\":[\"Highcharts\",\"Color\"]}\nvar highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_ = __webpack_require__(620);\nvar highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default = /*#__PURE__*/__webpack_require__.n(highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_);\n;// ./code/es5/es-modules/Core/Geometry/GeometryUtilities.js\n/* *\n *\n * (c) 2010-2024 Highsoft AS\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n * Namespace\n *\n * */\nvar GeometryUtilities;\n(function (GeometryUtilities) {\n /* *\n *\n * Functions\n *\n * */\n /**\n * Calculates the center between a list of points.\n *\n * @private\n *\n * @param {Array<Highcharts.PositionObject>} points\n * A list of points to calculate the center of.\n *\n * @return {Highcharts.PositionObject}\n * Calculated center\n */\n function getCenterOfPoints(points) {\n var sum = points.reduce(function (sum,\n point) {\n sum.x += point.x;\n sum.y += point.y;\n return sum;\n }, { x: 0, y: 0 });\n return {\n x: sum.x / points.length,\n y: sum.y / points.length\n };\n }\n GeometryUtilities.getCenterOfPoints = getCenterOfPoints;\n /**\n * Calculates the distance between two points based on their x and y\n * coordinates.\n *\n * @private\n *\n * @param {Highcharts.PositionObject} p1\n * The x and y coordinates of the first point.\n *\n * @param {Highcharts.PositionObject} p2\n * The x and y coordinates of the second point.\n *\n * @return {number}\n * Returns the distance between the points.\n */\n function getDistanceBetweenPoints(p1, p2) {\n return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n }\n GeometryUtilities.getDistanceBetweenPoints = getDistanceBetweenPoints;\n /**\n * Calculates the angle between two points.\n * @todo add unit tests.\n * @private\n * @param {Highcharts.PositionObject} p1 The first point.\n * @param {Highcharts.PositionObject} p2 The second point.\n * @return {number} Returns the angle in radians.\n */\n function getAngleBetweenPoints(p1, p2) {\n return Math.atan2(p2.x - p1.x, p2.y - p1.y);\n }\n GeometryUtilities.getAngleBetweenPoints = getAngleBetweenPoints;\n /**\n * Test for point in polygon. Polygon defined as array of [x,y] points.\n * @private\n * @param {PositionObject} point The point potentially within a polygon.\n * @param {Array<Array<number>>} polygon The polygon potentially containing the point.\n */\n function pointInPolygon(_a, polygon) {\n var x = _a.x,\n y = _a.y;\n var len = polygon.length;\n var i,\n j,\n inside = false;\n for (i = 0, j = len - 1; i < len; j = i++) {\n var _b = polygon[i],\n x1 = _b[0],\n y1 = _b[1],\n _c = polygon[j],\n x2 = _c[0],\n y2 = _c[1];\n if (y1 > y !== y2 > y &&\n (x < (x2 - x1) *\n (y - y1) /\n (y2 - y1) +\n x1)) {\n inside = !inside;\n }\n }\n return inside;\n }\n GeometryUtilities.pointInPolygon = pointInPolygon;\n})(GeometryUtilities || (GeometryUtilities = {}));\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Geometry_GeometryUtilities = (GeometryUtilities);\n\n;// ./code/es5/es-modules/Core/Geometry/CircleUtilities.js\n/* *\n *\n * (c) 2010-2024 Highsoft AS\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar getAngleBetweenPoints = Geometry_GeometryUtilities.getAngleBetweenPoints, getCenterOfPoints = Geometry_GeometryUtilities.getCenterOfPoints, getDistanceBetweenPoints = Geometry_GeometryUtilities.getDistanceBetweenPoints;\n/* *\n *\n * Namespace\n *\n * */\nvar CircleUtilities;\n(function (CircleUtilities) {\n /* *\n *\n * Functions\n *\n * */\n /**\n * @private\n *\n * @param {number} x\n * Number to round\n *\n * @param {number} decimals\n * Number of decimals to round to\n *\n * @return {number}\n * Rounded number\n */\n function round(x, decimals) {\n var a = Math.pow(10,\n decimals);\n return Math.round(x * a) / a;\n }\n CircleUtilities.round = round;\n /**\n * Calculates the area of a circle based on its radius.\n *\n * @private\n *\n * @param {number} r\n * The radius of the circle.\n *\n * @return {number}\n * Returns the area of the circle.\n */\n function getAreaOfCircle(r) {\n if (r <= 0) {\n throw new Error('radius of circle must be a positive number.');\n }\n return Math.PI * r * r;\n }\n CircleUtilities.getAreaOfCircle = getAreaOfCircle;\n /**\n * Calculates the area of a circular segment based on the radius of the\n * circle and the height of the segment.\n *\n * @see http://mathworld.wolfram.com/CircularSegment.html\n *\n * @private\n *\n * @param {number} r\n * The radius of the circle.\n *\n * @param {number} h\n * The height of the circular segment.\n *\n * @return {number}\n * Returns the area of the circular segment.\n */\n function getCircularSegmentArea(r, h) {\n return (r * r * Math.acos(1 - h / r) -\n (r - h) * Math.sqrt(h * (2 * r - h)));\n }\n CircleUtilities.getCircularSegmentArea = getCircularSegmentArea;\n /**\n * Calculates the area of overlap between two circles based on their\n * radiuses and the distance between them.\n *\n * @see http://mathworld.wolfram.com/Circle-CircleIntersection.html\n *\n * @private\n *\n * @param {number} r1\n * Radius of the first circle.\n *\n * @param {number} r2\n * Radius of the second circle.\n *\n * @param {number} d\n * The distance between the two circles.\n *\n * @return {number}\n * Returns the area of overlap between the two circles.\n */\n function getOverlapBetweenCircles(r1, r2, d) {\n var overlap = 0;\n // If the distance is larger than the sum of the radiuses then the\n // circles does not overlap.\n if (d < r1 + r2) {\n if (d <= Math.abs(r2 - r1)) {\n // If the circles are completely overlapping, then the overlap\n // equals the area of the smallest circle.\n overlap = getAreaOfCircle(r1 < r2 ? r1 : r2);\n }\n else {\n // Height of first triangle segment.\n var d1 = (r1 * r1 - r2 * r2 + d * d) / (2 * d), \n // Height of second triangle segment.\n d2 = d - d1;\n overlap = (getCircularSegmentArea(r1, r1 - d1) +\n getCircularSegmentArea(r2, r2 - d2));\n }\n // Round the result to two decimals.\n overlap = round(overlap, 14);\n }\n return overlap;\n }\n CircleUtilities.getOverlapBetweenCircles = getOverlapBetweenCircles;\n /**\n * Calculates the intersection points of two circles.\n *\n * NOTE: does not handle floating errors well.\n *\n * @private\n *\n * @param {Highcharts.CircleObject} c1\n * The first circle.\n *\n * @param {Highcharts.CircleObject} c2\n * The second circle.\n *\n * @return {Array<Highcharts.PositionObject>}\n * Returns the resulting intersection points.\n */\n function getCircleCircleIntersection(c1, c2) {\n var d = getDistanceBetweenPoints(c1,\n c2),\n r1 = c1.r,\n r2 = c2.r;\n var points = [];\n if (d < r1 + r2 && d > Math.abs(r1 - r2)) {\n // If the circles are overlapping, but not completely overlapping,\n // then it exists intersecting points.\n var r1Square = r1 * r1, r2Square = r2 * r2, \n // `d^2 - r^2 + R^2 / 2d`\n x = (r1Square - r2Square + d * d) / (2 * d), \n // `y^2 = R^2 - x^2`\n y = Math.sqrt(r1Square - x * x), x1 = c1.x, x2 = c2.x, y1 = c1.y, y2 = c2.y, x0 = x1 + x * (x2 - x1) / d, y0 = y1 + x * (y2 - y1) / d, rx = -(y2 - y1) * (y / d), ry = -(x2 - x1) * (y / d);\n points = [\n { x: round(x0 + rx, 14), y: round(y0 - ry, 14) },\n { x: round(x0 - rx, 14), y: round(y0 + ry, 14) }\n ];\n }\n return points;\n }\n CircleUtilities.getCircleCircleIntersection = getCircleCircleIntersection;\n /**\n * Calculates all the intersection points for between a list of circles.\n *\n * @private\n *\n * @param {Array<Highcharts.CircleObject>} circles\n * The circles to calculate the points from.\n *\n * @return {Array<Highcharts.GeometryObject>}\n * Returns a list of intersection points.\n */\n function getCirclesIntersectionPoints(circles) {\n return circles.reduce(function (points, c1, i, arr) {\n var additional = arr\n .slice(i + 1)\n .reduce(function (points,\n c2,\n j) {\n var indexes = [i,\n j + i + 1];\n return points.concat(getCircleCircleIntersection(c1, c2).map(function (p) {\n p.indexes = indexes;\n return p;\n }));\n }, []);\n return points.concat(additional);\n }, []);\n }\n CircleUtilities.getCirclesIntersectionPoints = getCirclesIntersectionPoints;\n /**\n * Tests whether the first circle is completely overlapping the second\n * circle.\n *\n * @private\n *\n * @param {Highcharts.CircleObject} circle1\n * The first circle.\n *\n * @param {Highcharts.CircleObject} circle2\n * The second circle.\n *\n * @return {boolean}\n * Returns true if circle1 is completely overlapping circle2, false if not.\n */\n function isCircle1CompletelyOverlappingCircle2(circle1, circle2) {\n return getDistanceBetweenPoints(circle1, circle2) + circle2.r < circle1.r + 1e-10;\n }\n CircleUtilities.isCircle1CompletelyOverlappingCircle2 = isCircle1CompletelyOverlappingCircle2;\n /**\n * Tests whether a point lies within a given circle.\n * @private\n * @param {Highcharts.PositionObject} point\n * The point to test for.\n *\n * @param {Highcharts.CircleObject} circle\n * The circle to test if the point is within.\n *\n * @return {boolean}\n * Returns true if the point is inside, false if outside.\n */\n function isPointInsideCircle(point, circle) {\n return getDistanceBetweenPoints(point, circle) <= circle.r + 1e-10;\n }\n CircleUtilities.isPointInsideCircle = isPointInsideCircle;\n /**\n * Tests whether a point lies within a set of circles.\n *\n * @private\n *\n * @param {Highcharts.PositionObject} point\n * The point to test.\n *\n * @param {Array<Highcharts.CircleObject>} circles\n * The list of circles to test against.\n *\n * @return {boolean}\n * Returns true if the point is inside all the circles, false if not.\n */\n function isPointInsideAllCircles(point, circles) {\n return !circles.some(function (circle) {\n return !isPointInsideCircle(point, circle);\n });\n }\n CircleUtilities.isPointInsideAllCircles = isPointInsideAllCircles;\n /**\n * Tests whether a point lies outside a set of circles.\n *\n * TODO: add unit tests.\n *\n * @private\n *\n * @param {Highcharts.PositionObject} point\n * The point to test.\n *\n * @param {Array<Highcharts.CircleObject>} circles\n * The list of circles to test against.\n *\n * @return {boolean}\n * Returns true if the point is outside all the circles, false if not.\n */\n function isPointOutsideAllCircles(point, circles) {\n return !circles.some(function (circle) {\n return isPointInsideCircle(point, circle);\n });\n }\n CircleUtilities.isPointOutsideAllCircles = isPointOutsideAllCircles;\n /**\n * Calculates the points for the polygon of the intersection area between\n * a set of circles.\n *\n * @private\n *\n * @param {Array<Highcharts.CircleObject>} circles\n * List of circles to calculate polygon of.\n *\n * @return {Array<Highcharts.GeometryObject>}\n * Return list of points in the intersection polygon.\n */\n function getCirclesIntersectionPolygon(circles) {\n return getCirclesIntersectionPoints(circles)\n .filter(function (p) {\n return isPointInsideAllCircles(p, circles);\n });\n }\n CircleUtilities.getCirclesIntersectionPolygon = getCirclesIntersectionPolygon;\n /**\n * Calculate the path for the area of overlap between a set of circles.\n *\n * @todo handle cases with only 1 or 0 arcs.\n *\n * @private\n *\n * @param {Array<Highcharts.CircleObject>} circles\n * List of circles to calculate area of.\n *\n * @return {Highcharts.GeometryIntersectionObject|undefined}\n * Returns the path for the area of overlap. Returns an empty string if\n * there are no intersection between all the circles.\n */\n function getAreaOfIntersectionBetweenCircles(circles) {\n var intersectionPoints = getCirclesIntersectionPolygon(circles),\n result;\n if (intersectionPoints.length > 1) {\n // Calculate the center of the intersection points.\n var center_1 = getCenterOfPoints(intersectionPoints);\n intersectionPoints = intersectionPoints\n // Calculate the angle between the center and the points.\n .map(function (p) {\n p.angle = getAngleBetweenPoints(center_1, p);\n return p;\n })\n // Sort the points by the angle to the center.\n .sort(function (a, b) {\n return b.angle - a.angle;\n });\n var startPoint = intersectionPoints[intersectionPoints.length - 1];\n var arcs = intersectionPoints\n .reduce(function (data,\n p1) {\n var startPoint = data.startPoint,\n midPoint = getCenterOfPoints([startPoint,\n p1]);\n // Calculate the arc from the intersection points and their\n // circles.\n var arc = p1.indexes\n // Filter out circles that are not included in both\n // intersection points.\n .filter(function (index) {\n return startPoint.indexes.indexOf(index) > -1;\n })\n // Iterate the circles of the intersection points and\n // calculate arcs.\n .reduce(function (arc, index) {\n var circle = circles[index],\n angle1 = getAngleBetweenPoints(circle,\n p1),\n angle2 = getAngleBetweenPoints(circle,\n startPoint),\n angleDiff = angle2 - angle1 +\n (angle2 < angle1 ? 2 * Math.PI : 0),\n angle = angle2 - angleDiff / 2;\n var width = getDistanceBetweenPoints(midPoint, {\n x: circle.x + circle.r * Math.sin(angle),\n y: circle.y + circle.r * Math.cos(angle)\n });\n var r = circle.r;\n // Width can sometimes become to large due to\n // floating point errors\n if (width > r * 2) {\n width = r * 2;\n }\n // Get the arc with the smallest width.\n if (!arc || arc.width > width) {\n arc = {\n r: r,\n largeArc: width > r ? 1 : 0,\n width: width,\n x: p1.x,\n y: p1.y\n };\n }\n // Return the chosen arc.\n return arc;\n }, null);\n // If we find an arc then add it to the list and update p2.\n if (arc) {\n var r = arc.r;\n data.arcs.push(['A', r, r, 0, arc.largeArc, 1, arc.x, arc.y]);\n data.startPoint = p1;\n }\n return data;\n }, {\n startPoint: startPoint,\n arcs: []\n }).arcs;\n if (arcs.length === 0) {\n // Empty\n }\n else if (arcs.length === 1) {\n // Empty\n }\n else {\n arcs.unshift(['M', startPoint.x, startPoint.y]);\n result = {\n center: center_1,\n d: arcs\n };\n }\n }\n return result;\n }\n CircleUtilities.getAreaOfIntersectionBetweenCircles = getAreaOfIntersectionBetweenCircles;\n})(CircleUtilities || (CircleUtilities = {}));\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Geometry_CircleUtilities = (CircleUtilities);\n\n;// ./code/es5/es-modules/Series/DrawPointUtilities.js\n/* *\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar __assign = (undefined && undefined.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n/* *\n *\n * Functions\n *\n * */\n/**\n * Handles the drawing of a component.\n * Can be used for any type of component that reserves the graphic property,\n * and provides a shouldDraw on its context.\n *\n * @private\n *\n * @todo add type checking.\n * @todo export this function to enable usage\n */\nfunction draw(point, params) {\n var animatableAttribs = params.animatableAttribs,\n onComplete = params.onComplete,\n css = params.css,\n renderer = params.renderer;\n var animation = (point.series && point.series.chart.hasRendered) ?\n // Chart-level animation on updates\n void 0 :\n // Series-level animation on new points\n (point.series &&\n point.series.options.animation);\n var graphic = point.graphic;\n params.attribs = __assign(__assign({}, params.attribs), { 'class': point.getClassName() }) || {};\n if ((point.shouldDraw())) {\n if (!graphic) {\n if (params.shapeType === 'text') {\n graphic = renderer.text();\n }\n else if (params.shapeType === 'image') {\n graphic = renderer.image(params.imageUrl || '')\n .attr(params.shapeArgs || {});\n }\n else {\n graphic = renderer[params.shapeType](params.shapeArgs || {});\n }\n point.graphic = graphic;\n graphic.add(params.group);\n }\n if (css) {\n graphic.css(css);\n }\n graphic\n .attr(params.attribs)\n .animate(animatableAttribs, params.isNew ? false : animation, onComplete);\n }\n else if (graphic) {\n var destroy_1 = function () {\n point.graphic = graphic = (graphic && graphic.destroy());\n if (typeof onComplete === 'function') {\n onComplete();\n }\n };\n // Animate only runs complete callback if something was animated.\n if (Object.keys(animatableAttribs).length) {\n graphic.animate(animatableAttribs, void 0, function () { return destroy_1(); });\n }\n else {\n destroy_1();\n }\n }\n}\n/* *\n *\n * Default Export\n *\n * */\nvar DrawPointUtilities = {\n draw: draw\n};\n/* harmony default export */ var Series_DrawPointUtilities = (DrawPointUtilities);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"SeriesRegistry\"],\"commonjs\":[\"highcharts\",\"SeriesRegistry\"],\"commonjs2\":[\"highcharts\",\"SeriesRegistry\"],\"root\":[\"Highcharts\",\"SeriesRegistry\"]}\nvar highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_ = __webpack_require__(512);\nvar highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default = /*#__PURE__*/__webpack_require__.n(highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_);\n;// ./code/es5/es-modules/Series/Venn/VennPoint.js\n/* *\n *\n * Experimental Highcharts module which enables visualization of a Venn\n * diagram.\n *\n * (c) 2016-2024 Highsoft AS\n * Authors: Jon Arild Nygard\n *\n * Layout algorithm by Ben Frederickson:\n * https://www.benfrederickson.com/better-venn-diagrams/\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\nvar ScatterPoint = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes.scatter.prototype.pointClass;\n\nvar isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber;\n/* *\n *\n * Class\n *\n * */\nvar VennPoint = /** @class */ (function (_super) {\n __extends(VennPoint, _super);\n function VennPoint() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /* *\n *\n * Functions\n *\n * */\n VennPoint.prototype.isValid = function () {\n return isNumber(this.value);\n };\n VennPoint.prototype.shouldDraw = function () {\n // Only draw points with single sets.\n return !!this.shapeArgs;\n };\n return VennPoint;\n}(ScatterPoint));\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Venn_VennPoint = (VennPoint);\n\n;// ./code/es5/es-modules/Series/Venn/VennSeriesDefaults.js\n/* *\n *\n * Experimental Highcharts module which enables visualization of a Venn\n * diagram.\n *\n * (c) 2016-2024 Highsoft AS\n * Authors: Jon Arild Nygard\n *\n * Layout algorithm by Ben Frederickson:\n * https://www.benfrederickson.com/better-venn-diagrams/\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n * API Options\n *\n * */\n/**\n * A Venn diagram displays all possible logical relations between a\n * collection of different sets. The sets are represented by circles, and\n * the relation between the sets are displayed by the overlap or lack of\n * overlap between them. The venn diagram is a special case of Euler\n * diagrams, which can also be displayed by this series type.\n *\n * @sample {highcharts} highcharts/demo/venn-diagram/\n * Venn diagram\n * @sample {highcharts} highcharts/demo/euler-diagram/\n * Euler diagram\n * @sample {highcharts} highcharts/series-venn/point-legend/\n * Venn diagram with a legend\n *\n * @extends plotOptions.scatter\n * @excluding connectEnds, connectNulls, cropThreshold, dragDrop,\n * findNearestPointBy, getExtremesFromAll, jitter, label,\n * linecap, lineWidth, linkedTo, marker, negativeColor,\n * pointInterval, pointIntervalUnit, pointPlacement,\n * pointStart, softThreshold, stacking, steps, threshold,\n * xAxis, yAxis, zoneAxis, zones, dataSorting, boostThreshold,\n * boostBlending\n * @product highcharts\n * @requires modules/venn\n * @optionparent plotOptions.venn\n */\nvar VennSeriesDefaults = {\n borderColor: \"#cccccc\" /* Palette.neutralColor20 */,\n borderDashStyle: 'solid',\n borderWidth: 1,\n brighten: 0,\n clip: false,\n colorByPoint: true,\n dataLabels: {\n enabled: true,\n verticalAlign: 'middle',\n formatter: function () {\n return this.point.name;\n }\n },\n /**\n * @default true\n * @extends plotOptions.series.inactiveOtherPoints\n * @private\n */\n inactiveOtherPoints: true,\n /**\n * @ignore-option\n * @private\n */\n marker: false,\n opacity: 0.75,\n showInLegend: false,\n /**\n * @ignore-option\n *\n * @private\n */\n legendType: 'point',\n states: {\n /**\n * @excluding halo\n */\n hover: {\n opacity: 1,\n borderColor: \"#333333\" /* Palette.neutralColor80 */\n },\n /**\n * @excluding halo\n */\n select: {\n color: \"#cccccc\" /* Palette.neutralColor20 */,\n borderColor: \"#000000\" /* Palette.neutralColor100 */,\n animation: false\n },\n inactive: {\n opacity: 0.075\n }\n },\n tooltip: {\n pointFormat: '{point.name}: {point.value}'\n },\n legendSymbol: 'rectangle'\n};\n/**\n * A `venn` series. If the [type](#series.venn.type) option is\n * not specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends series,plotOptions.venn\n * @excluding connectEnds, connectNulls, cropThreshold, dataParser, dataURL,\n * findNearestPointBy, getExtremesFromAll, label, linecap, lineWidth,\n * linkedTo, marker, negativeColor, pointInterval, pointIntervalUnit,\n * pointPlacement, pointStart, softThreshold, stack, stacking, steps,\n * threshold, xAxis, yAxis, zoneAxis, zones, dataSorting,\n * boostThreshold, boostBlending\n * @product highcharts\n * @requires modules/venn\n * @apioption series.venn\n */\n/**\n * @type {Array<*>}\n * @extends series.scatter.data\n * @excluding marker, x, y\n * @product highcharts\n * @apioption series.venn.data\n */\n/**\n * The name of the point. Used in data labels and tooltip. If name is not\n * defined then it will default to the joined values in\n * [sets](#series.venn.sets).\n *\n * @sample {highcharts} highcharts/demo/venn-diagram/\n * Venn diagram\n * @sample {highcharts} highcharts/demo/euler-diagram/\n * Euler diagram\n *\n * @type {string}\n * @since 7.0.0\n * @product highcharts\n * @apioption series.venn.data.name\n */\n/**\n * The value of the point, resulting in a relative area of the circle, or area\n * of overlap between two sets in the venn or euler diagram.\n *\n * @sample {highcharts} highcharts/demo/venn-diagram/\n * Venn diagram\n * @sample {highcharts} highcharts/demo/euler-diagram/\n * Euler diagram\n *\n * @type {number}\n * @since 7.0.0\n * @product highcharts\n * @apioption series.venn.data.value\n */\n/**\n * The set or sets the options will be applied to. If a single entry is defined,\n * then it will create a new set. If more than one entry is defined, then it\n * will define the overlap between the sets in the array.\n *\n * @sample {highcharts} highcharts/demo/venn-diagram/\n * Venn diagram\n * @sample {highcharts} highcharts/demo/euler-diagram/\n * Euler diagram\n *\n * @type {Array<string>}\n * @since 7.0.0\n * @product highcharts\n * @apioption series.venn.data.sets\n */\n/**\n * @excluding halo\n * @apioption series.venn.states.hover\n */\n/**\n * @excluding halo\n * @apioption series.venn.states.select\n */\n''; // Detachs doclets above\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Venn_VennSeriesDefaults = (VennSeriesDefaults);\n\n;// ./code/es5/es-modules/Series/Venn/VennUtils.js\n/* *\n *\n * Experimental Highcharts module which enables visualization of a Venn\n * diagram.\n *\n * (c) 2016-2024 Highsoft AS\n * Authors: Jon Arild Nygard\n *\n * Layout algorithm by Ben Frederickson:\n * https://www.benfrederickson.com/better-venn-diagrams/\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar VennUtils_assign = (undefined && undefined.__assign) || function () {\n VennUtils_assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return VennUtils_assign.apply(this, arguments);\n};\n\nvar getAreaOfCircle = Geometry_CircleUtilities.getAreaOfCircle, getCircleCircleIntersection = Geometry_CircleUtilities.getCircleCircleIntersection, getOverlapBetweenCirclesByDistance = Geometry_CircleUtilities.getOverlapBetweenCircles, isPointInsideAllCircles = Geometry_CircleUtilities.isPointInsideAllCircles, isPointInsideCircle = Geometry_CircleUtilities.isPointInsideCircle, isPointOutsideAllCircles = Geometry_CircleUtilities.isPointOutsideAllCircles;\n\nvar VennUtils_getDistanceBetweenPoints = Geometry_GeometryUtilities.getDistanceBetweenPoints;\n\nvar extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, isArray = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isArray, VennUtils_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, isObject = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isObject, isString = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isString;\n/* *\n *\n * Functions\n *\n * */\n/**\n * Takes an array of relations and adds the properties `totalOverlap` and\n * `overlapping` to each set. The property `totalOverlap` is the sum of\n * value for each relation where this set is included. The property\n * `overlapping` is a map of how much this set is overlapping another set.\n * NOTE: This algorithm ignores relations consisting of more than 2 sets.\n * @private\n * @param {Array<Highcharts.VennRelationObject>} relations\n * The list of relations that should be sorted.\n * @return {Array<Highcharts.VennRelationObject>}\n * Returns the modified input relations with added properties `totalOverlap`\n * and `overlapping`.\n */\nfunction addOverlapToSets(relations) {\n // Calculate the amount of overlap per set.\n var mapOfIdToProps = {};\n relations\n // Filter out relations consisting of 2 sets.\n .filter(function (relation) { return (relation.sets.length === 2); })\n // Sum up the amount of overlap for each set.\n .forEach(function (relation) {\n relation.sets.forEach(function (set, i, arr) {\n var _a;\n if (!isObject(mapOfIdToProps[set])) {\n mapOfIdToProps[set] = {\n totalOverlap: 0,\n overlapping: {}\n };\n }\n mapOfIdToProps[set] = {\n totalOverlap: (mapOfIdToProps[set].totalOverlap || 0) +\n relation.value,\n overlapping: VennUtils_assign(VennUtils_assign({}, (mapOfIdToProps[set].overlapping || {})), (_a = {}, _a[arr[1 - i]] = relation.value, _a))\n };\n });\n });\n relations\n // Filter out single sets\n .filter(isSet)\n // Extend the set with the calculated properties.\n .forEach(function (set) {\n var properties = mapOfIdToProps[set.sets[0]];\n extend(set, properties);\n });\n // Returns the modified relations.\n return relations;\n}\n/**\n * Finds the root of a given function. The root is the input value needed\n * for a function to return 0.\n *\n * See https://en.wikipedia.org/wiki/Bisection_method#Algorithm\n *\n * TODO: Add unit tests.\n *\n * @param {Function} f\n * The function to find the root of.\n * @param {number} a\n * The lowest number in the search range.\n * @param {number} b\n * The highest number in the search range.\n * @param {number} [tolerance=1e-10]\n * The allowed difference between the returned value and root.\n * @param {number} [maxIterations=100]\n * The maximum iterations allowed.\n * @return {number}\n * Root number.\n */\nfunction bisect(f, a, b, tolerance, maxIterations) {\n var fA = f(a),\n fB = f(b),\n nMax = maxIterations || 100,\n tol = tolerance || 1e-10;\n var delta = b - a,\n x,\n fX,\n n = 1;\n if (a >= b) {\n throw new Error('a must be smaller than b.');\n }\n else if (fA * fB > 0) {\n throw new Error('f(a) and f(b) must have opposite signs.');\n }\n if (fA === 0) {\n x = a;\n }\n else if (fB === 0) {\n x = b;\n }\n else {\n while (n++ <= nMax && fX !== 0 && delta > tol) {\n delta = (b - a) / 2;\n x = a + delta;\n fX = f(x);\n // Update low and high for next search interval.\n if (fA * fX > 0) {\n a = x;\n }\n else {\n b = x;\n }\n }\n }\n return x;\n}\n/**\n * @private\n */\nfunction getCentroid(simplex) {\n var arr = simplex.slice(0, -1),\n length = arr.length,\n result = [],\n sum = function (data,\n point) {\n data.sum += point[data.i];\n return data;\n };\n for (var i = 0; i < length; i++) {\n result[i] = arr.reduce(sum, { sum: 0, i: i }).sum / length;\n }\n return result;\n}\n/**\n * Uses the bisection method to make a best guess of the ideal distance\n * between two circles too get the desired overlap.\n * Currently there is no known formula to calculate the distance from the\n * area of overlap, which makes the bisection method preferred.\n * @private\n * @param {number} r1\n * Radius of the first circle.\n * @param {number} r2\n * Radius of the second circle.\n * @param {number} overlap\n * The wanted overlap between the two circles.\n * @return {number}\n * Returns the distance needed to get the wanted overlap between the two\n * circles.\n */\nfunction getDistanceBetweenCirclesByOverlap(r1, r2, overlap) {\n var maxDistance = r1 + r2;\n var distance;\n if (overlap <= 0) {\n // If overlap is below or equal to zero, then there is no overlap.\n distance = maxDistance;\n }\n else if (getAreaOfCircle(r1 < r2 ? r1 : r2) <= overlap) {\n // When area of overlap is larger than the area of the smallest\n // circle, then it is completely overlapping.\n distance = 0;\n }\n else {\n distance = bisect(function (x) {\n var actualOverlap = getOverlapBetweenCirclesByDistance(r1,\n r2,\n x);\n // Return the difference between wanted and actual overlap.\n return overlap - actualOverlap;\n }, 0, maxDistance);\n }\n return distance;\n}\n/**\n * Finds the available width for a label, by taking the label position and\n * finding the largest distance, which is inside all internal circles, and\n * outside all external circles.\n *\n * @private\n * @param {Highcharts.PositionObject} pos\n * The x and y coordinate of the label.\n * @param {Array<Highcharts.CircleObject>} internal\n * Internal circles.\n * @param {Array<Highcharts.CircleObject>} external\n * External circles.\n * @return {number}\n * Returns available width for the label.\n */\nfunction getLabelWidth(pos, internal, external) {\n var radius = internal.reduce(function (min,\n circle) { return Math.min(circle.r,\n min); },\n Infinity), \n // Filter out external circles that are completely overlapping.\n filteredExternals = external.filter(function (circle) { return !isPointInsideCircle(pos,\n circle); });\n var findDistance = function (maxDistance,\n direction) {\n return bisect(function (x) {\n var testPos = {\n x: pos.x + (direction * x),\n y: pos.y\n },\n isValid = (isPointInsideAllCircles(testPos,\n internal) &&\n isPointOutsideAllCircles(testPos,\n filteredExternals));\n // If the position is valid, then we want to move towards the\n // max distance. If not, then we want to away from the max distance.\n return -(maxDistance - x) + (isValid ? 0 : Number.MAX_VALUE);\n }, 0, maxDistance);\n };\n // Find the smallest distance of left and right.\n return Math.min(findDistance(radius, -1), findDistance(radius, 1)) * 2;\n}\n/**\n * Calculates a margin for a point based on the internal and external\n * circles. The margin describes if the point is well placed within the\n * internal circles, and away from the external.\n * @private\n * @todo add unit tests.\n * @param {Highcharts.PositionObject} point\n * The point to evaluate.\n * @param {Array<Highcharts.CircleObject>} internal\n * The internal circles.\n * @param {Array<Highcharts.CircleObject>} external\n * The external circles.\n * @return {number}\n * Returns the margin.\n */\nfunction getMarginFromCircles(point, internal, external) {\n var margin = internal.reduce(function (margin,\n circle) {\n var m = circle.r - VennUtils_getDistanceBetweenPoints(point,\n circle);\n return (m <= margin) ? m : margin;\n }, Number.MAX_VALUE);\n margin = external.reduce(function (margin, circle) {\n var m = VennUtils_getDistanceBetweenPoints(point,\n circle) - circle.r;\n return (m <= margin) ? m : margin;\n }, margin);\n return margin;\n}\n/**\n * Calculates the area of overlap between a list of circles.\n * @private\n * @todo add support for calculating overlap between more than 2 circles.\n * @param {Array<Highcharts.CircleObject>} circles\n * List of circles with their given positions.\n * @return {number}\n * Returns the area of overlap between all the circles.\n */\nfunction getOverlapBetweenCircles(circles) {\n var overlap = 0;\n // When there is only two circles we can find the overlap by using their\n // radiuses and the distance between them.\n if (circles.length === 2) {\n var circle1 = circles[0];\n var circle2 = circles[1];\n overlap = getOverlapBetweenCirclesByDistance(circle1.r, circle2.r, VennUtils_getDistanceBetweenPoints(circle1, circle2));\n }\n return overlap;\n}\n// eslint-disable-next-line require-jsdoc\n/**\n *\n */\nfunction isSet(x) {\n return isArray(x.sets) && x.sets.length === 1;\n}\n// eslint-disable-next-line require-jsdoc\n/**\n *\n */\nfunction isValidRelation(x) {\n var map = {};\n return (isObject(x) &&\n (VennUtils_isNumber(x.value) && x.value > -1) &&\n (isArray(x.sets) && x.sets.length > 0) &&\n !x.sets.some(function (set) {\n var invalid = false;\n if (!map[set] && isString(set)) {\n map[set] = true;\n }\n else {\n invalid = true;\n }\n return invalid;\n }));\n}\n// eslint-disable-next-line require-jsdoc\n/**\n *\n */\nfunction isValidSet(x) {\n return (isValidRelation(x) && isSet(x) && x.value > 0);\n}\n/**\n * Uses a greedy approach to position all the sets. Works well with a small\n * number of sets, and are in these cases a good choice aesthetically.\n * @private\n * @param {Array<object>} relations List of the overlap between two or more\n * sets, or the size of a single set.\n * @return {Array<object>} List of circles and their calculated positions.\n */\nfunction layoutGreedyVenn(relations) {\n var positionedSets = [],\n mapOfIdToCircles = {};\n // Define a circle for each set.\n relations\n .filter(function (relation) { return (relation.sets.length === 1); })\n .forEach(function (relation) {\n mapOfIdToCircles[relation.sets[0]] = relation.circle = {\n x: Number.MAX_VALUE,\n y: Number.MAX_VALUE,\n r: Math.sqrt(relation.value / Math.PI)\n };\n });\n /**\n * Takes a set and updates the position, and add the set to the list of\n * positioned sets.\n * @private\n * @param {Object} set\n * The set to add to its final position.\n * @param {Object} coordinates\n * The coordinates to position the set at.\n */\n var positionSet = function (set,\n coordinates) {\n var circle = set.circle;\n if (circle) {\n circle.x = coordinates.x;\n circle.y = coordinates.y;\n }\n positionedSets.push(set);\n };\n // Find overlap between sets. Ignore relations with more then 2 sets.\n addOverlapToSets(relations);\n // Sort sets by the sum of their size from large to small.\n var sortedByOverlap = relations\n .filter(isSet)\n .sort(sortByTotalOverlap);\n // Position the most overlapped set at 0,0.\n positionSet(sortedByOverlap.shift(), { x: 0, y: 0 });\n var relationsWithTwoSets = relations.filter(function (x) { return (x.sets.length === 2); });\n var _loop_1 = function (set) {\n var circle = set.circle;\n if (!circle) {\n return \"continue\";\n }\n var radius = circle.r,\n overlapping = set.overlapping;\n var bestPosition = positionedSets.reduce(function (best,\n positionedSet,\n i) {\n var positionedCircle = positionedSet.circle;\n if (!positionedCircle || !overlapping) {\n return best;\n }\n var overlap = overlapping[positionedSet.sets[0]];\n // Calculate the distance between the sets to get the\n // correct overlap\n var distance = getDistanceBetweenCirclesByOverlap(radius,\n positionedCircle.r,\n overlap);\n // Create a list of possible coordinates calculated from\n // distance.\n var possibleCoordinates = [\n { x: positionedCircle.x + distance,\n y: positionedCircle.y },\n { x: positionedCircle.x - distance,\n y: positionedCircle.y },\n { x: positionedCircle.x,\n y: positionedCircle.y + distance },\n { x: positionedCircle.x,\n y: positionedCircle.y - distance }\n ];\n // If there are more circles overlapping, then add the\n // intersection points as possible positions.\n for (var _i = 0, _a = positionedSets.slice(i + 1); _i < _a.length; _i++) {\n var positionedSet2 = _a[_i];\n var positionedCircle2 = positionedSet2.circle,\n overlap2 = overlapping[positionedSet2.sets[0]];\n if (!positionedCircle2) {\n continue;\n }\n var distance2 = getDistanceBetweenCirclesByOverlap(radius,\n positionedCircle2.r,\n overlap2);\n // Add intersections to list of coordinates.\n possibleCoordinates = possibleCoordinates.concat(getCircleCircleIntersection({\n x: positionedCircle.x,\n y: positionedCircle.y,\n r: distance\n }, {\n x: positionedCircle2.x,\n y: positionedCircle2.y,\n r: distance2\n }));\n }\n // Iterate all suggested coordinates and find the best one.\n for (var _b = 0, possibleCoordinates_1 = possibleCoordinates; _b < possibleCoordinates_1.length; _b++) {\n var coordinates = possibleCoordinates_1[_b];\n circle.x = coordinates.x;\n circle.y = coordinates.y;\n // Calculate loss for the suggested coordinates.\n var currentLoss = loss(mapOfIdToCircles,\n relationsWithTwoSets);\n // If the loss is better, then use these new coordinates\n if (currentLoss < best.loss) {\n best.loss = currentLoss;\n best.coordinates = coordinates;\n }\n }\n // Return resulting coordinates.\n return best;\n }, {\n loss: Number.MAX_VALUE,\n coordinates: void 0\n });\n // Add the set to its final position.\n positionSet(set, bestPosition.coordinates);\n };\n // Iterate and position the remaining sets.\n for (var _i = 0, sortedByOverlap_1 = sortedByOverlap; _i < sortedByOverlap_1.length; _i++) {\n var set = sortedByOverlap_1[_i];\n _loop_1(set);\n }\n // Return the positions of each set.\n return mapOfIdToCircles;\n}\n/**\n * Calculates the difference between the desired overlap and the actual\n * overlap between two circles.\n * @private\n * @param {Dictionary<Highcharts.CircleObject>} mapOfIdToCircle\n * Map from id to circle.\n * @param {Array<Highcharts.VennRelationObject>} relations\n * List of relations to calculate the loss of.\n * @return {number}\n * Returns the loss between positions of the circles for the given\n * relations.\n */\nfunction loss(mapOfIdToCircle, relations) {\n var precision = 10e10;\n // Iterate all the relations and calculate their individual loss.\n return relations.reduce(function (totalLoss, relation) {\n var loss = 0;\n if (relation.sets.length > 1) {\n var wantedOverlap = relation.value;\n // Calculate the actual overlap between the sets.\n var actualOverlap = getOverlapBetweenCircles(\n // Get the circles for the given sets.\n relation.sets.map(function (set) {\n return mapOfIdToCircle[set];\n }));\n var diff = wantedOverlap - actualOverlap;\n loss = Math.round((diff * diff) * precision) / precision;\n }\n // Add calculated loss to the sum.\n return totalLoss + loss;\n }, 0);\n}\n/**\n * Finds an optimal position for a given point.\n * @todo add unit tests.\n * @todo add constraints to optimize the algorithm.\n * @private\n * @param {Highcharts.NelderMeadTestFunction} fn\n * The function to test a point.\n * @param {Highcharts.NelderMeadPointArray} initial\n * The initial point to optimize.\n * @return {Highcharts.NelderMeadPointArray}\n * Returns the optimized position of a point.\n */\nfunction nelderMead(fn, initial) {\n var maxIterations = 100,\n sortByFx = function (a,\n b) {\n return a.fx - b.fx;\n }, pRef = 1, // Reflection parameter\n pExp = 2, // Expansion parameter\n pCon = -0.5, // Contraction parameter\n pOCon = pCon * pRef, // Outwards contraction parameter\n pShrink = 0.5; // Shrink parameter\n /**\n * @private\n */\n var weightedSum = function (weight1,\n v1,\n weight2,\n v2) { return v1.map(function (x,\n i) { return weight1 * x + weight2 * v2[i]; }); };\n /**\n * @private\n */\n var getSimplex = function (initial) {\n var n = initial.length,\n simplex = new Array(n + 1);\n // Initial point to the simplex.\n simplex[0] = initial;\n simplex[0].fx = fn(initial);\n // Create a set of extra points based on the initial.\n for (var i = 0; i < n; ++i) {\n var point = initial.slice();\n point[i] = point[i] ? point[i] * 1.05 : 0.001;\n point.fx = fn(point);\n simplex[i + 1] = point;\n }\n return simplex;\n };\n var updateSimplex = function (simplex,\n point) {\n point.fx = fn(point);\n simplex[simplex.length - 1] = point;\n return simplex;\n };\n var shrinkSimplex = function (simplex) {\n var best = simplex[0];\n return simplex.map(function (point) {\n var p = weightedSum(1 - pShrink,\n best,\n pShrink,\n point);\n p.fx = fn(p);\n return p;\n });\n };\n var getPoint = function (centroid,\n worst,\n a,\n b) {\n var point = weightedSum(a,\n centroid,\n b,\n worst);\n point.fx = fn(point);\n return point;\n };\n // Create a simplex\n var simplex = getSimplex(initial);\n // Iterate from 0 to max iterations\n for (var i = 0; i < maxIterations; i++) {\n // Sort the simplex\n simplex.sort(sortByFx);\n // Create a centroid from the simplex\n var worst = simplex[simplex.length - 1];\n var centroid = getCentroid(simplex);\n // Calculate the reflected point.\n var reflected = getPoint(centroid,\n worst, 1 + pRef, -pRef);\n if (reflected.fx < simplex[0].fx) {\n // If reflected point is the best, then possibly expand.\n var expanded = getPoint(centroid,\n worst, 1 + pExp, -pExp);\n simplex = updateSimplex(simplex, (expanded.fx < reflected.fx) ? expanded : reflected);\n }\n else if (reflected.fx >= simplex[simplex.length - 2].fx) {\n // If the reflected point is worse than the second worse, then\n // contract.\n var contracted = void 0;\n if (reflected.fx > worst.fx) {\n // If the reflected is worse than the worst point, do a\n // contraction\n contracted = getPoint(centroid, worst, 1 + pCon, -pCon);\n if (contracted.fx < worst.fx) {\n simplex = updateSimplex(simplex, contracted);\n }\n else {\n simplex = shrinkSimplex(simplex);\n }\n }\n else {\n // Otherwise do an outwards contraction\n contracted = getPoint(centroid, worst, 1 - pOCon, pOCon);\n if (contracted.fx < reflected.fx) {\n simplex = updateSimplex(simplex, contracted);\n }\n else {\n simplex = shrinkSimplex(simplex);\n }\n }\n }\n else {\n simplex = updateSimplex(simplex, reflected);\n }\n }\n return simplex[0];\n}\n/**\n * Prepares the venn data so that it is usable for the layout function.\n * Filter out sets, or intersections that includes sets, that are missing in\n * the data or has (value < 1). Adds missing relations between sets in the\n * data as value = 0.\n * @private\n * @param {Array<object>} data The raw input data.\n * @return {Array<object>} Returns an array of valid venn data.\n */\nfunction processVennData(data, splitter) {\n var d = isArray(data) ? data : [];\n var validSets = d\n .reduce(function (arr,\n x) {\n // Check if x is a valid set, and that it is not an duplicate.\n if (x.sets && isValidSet(x) && arr.indexOf(x.sets[0]) === -1) {\n arr.push(x.sets[0]);\n }\n return arr;\n }, [])\n .sort();\n var mapOfIdToRelation = d.reduce(function (mapOfIdToRelation,\n relation) {\n if (relation.sets &&\n isValidRelation(relation) &&\n !relation.sets.some(function (set) {\n return validSets.indexOf(set) === -1;\n })) {\n mapOfIdToRelation[relation.sets.sort().join(splitter)] = {\n sets: relation.sets,\n value: relation.value || 0\n };\n }\n return mapOfIdToRelation;\n }, {});\n validSets.reduce(function (combinations, set, i, arr) {\n var remaining = arr.slice(i + 1);\n remaining.forEach(function (set2) {\n combinations.push(set + splitter + set2);\n });\n return combinations;\n }, []).forEach(function (combination) {\n if (!mapOfIdToRelation[combination]) {\n var obj = {\n sets: combination.split(splitter),\n value: 0\n };\n mapOfIdToRelation[combination] = obj;\n }\n });\n // Transform map into array.\n return Object\n .keys(mapOfIdToRelation)\n .map(function (id) {\n return mapOfIdToRelation[id];\n });\n}\n/**\n * Takes two sets and finds the one with the largest total overlap.\n * @private\n * @param {Object} a\n * The first set to compare.\n * @param {Object} b\n * The second set to compare.\n * @return {number}\n * Returns 0 if a and b are equal, <0 if a is greater, >0 if b is greater.\n */\nfunction sortByTotalOverlap(a, b) {\n if (typeof b.totalOverlap !== 'undefined' &&\n typeof a.totalOverlap !== 'undefined') {\n return b.totalOverlap - a.totalOverlap;\n }\n return NaN;\n}\n/* *\n *\n * Default Export\n *\n * */\nvar VennUtils = {\n geometry: Geometry_GeometryUtilities,\n geometryCircles: Geometry_CircleUtilities,\n addOverlapToSets: addOverlapToSets,\n getCentroid: getCentroid,\n getDistanceBetweenCirclesByOverlap: getDistanceBetweenCirclesByOverlap,\n getLabelWidth: getLabelWidth,\n getMarginFromCircles: getMarginFromCircles,\n isSet: isSet,\n layoutGreedyVenn: layoutGreedyVenn,\n loss: loss,\n nelderMead: nelderMead,\n processVennData: processVennData,\n sortByTotalOverlap: sortByTotalOverlap\n};\n/* harmony default export */ var Venn_VennUtils = (VennUtils);\n\n;// ./code/es5/es-modules/Series/Venn/VennSeries.js\n/* *\n *\n * Experimental Highcharts module which enables visualization of a Venn\n * diagram.\n *\n * (c) 2016-2024 Highsoft AS\n * Authors: Jon Arild Nygard\n *\n * Layout algorithm by Ben Frederickson:\n * https://www.benfrederickson.com/better-venn-diagrams/\n *\n * License: www.highcharts.com/license\n *\n * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar VennSeries_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d,\n b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d,\n b) { d.__proto__ = b; }) ||\n function (d,\n b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\nvar animObject = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).animObject;\n\nvar color = (highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default()).parse;\n\nvar getAreaOfIntersectionBetweenCircles = Geometry_CircleUtilities.getAreaOfIntersectionBetweenCircles, getCirclesIntersectionPolygon = Geometry_CircleUtilities.getCirclesIntersectionPolygon, isCircle1CompletelyOverlappingCircle2 = Geometry_CircleUtilities.isCircle1CompletelyOverlappingCircle2, VennSeries_isPointInsideAllCircles = Geometry_CircleUtilities.isPointInsideAllCircles, VennSeries_isPointOutsideAllCircles = Geometry_CircleUtilities.isPointOutsideAllCircles;\n\n\nvar VennSeries_getCenterOfPoints = Geometry_GeometryUtilities.getCenterOfPoints;\n\nvar ScatterSeries = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes.scatter;\n\n\n\n\nvar addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, VennSeries_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, VennSeries_isArray = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isArray, VennSeries_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, VennSeries_isObject = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isObject, merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge;\n/* *\n *\n * Class\n *\n * */\n/**\n * @private\n * @class\n * @name Highcharts.seriesTypes.venn\n *\n * @augments Highcharts.Series\n */\nvar VennSeries = /** @class */ (function (_super) {\n VennSeries_extends(VennSeries, _super);\n function VennSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /* *\n *\n * Static Functions\n *\n * */\n /**\n * Finds the optimal label position by looking for a position that has a low\n * distance from the internal circles, and as large possible distance to the\n * external circles.\n * @private\n * @todo Optimize the intial position.\n * @todo Add unit tests.\n * @param {Array<Highcharts.CircleObject>} internal\n * Internal circles.\n * @param {Array<Highcharts.CircleObject>} external\n * External circles.\n * @return {Highcharts.PositionObject}\n * Returns the found position.\n */\n VennSeries.getLabelPosition = function (internal, external) {\n // Get the best label position within the internal circles.\n var best = internal.reduce(function (best,\n circle) {\n var d = circle.r / 2;\n // Give a set of points with the circle to evaluate as the best\n // label position.\n return [\n { x: circle.x, y: circle.y },\n { x: circle.x + d, y: circle.y },\n { x: circle.x - d, y: circle.y },\n { x: circle.x, y: circle.y + d },\n { x: circle.x, y: circle.y - d }\n ]\n // Iterate the given points and return the one with the\n // largest margin.\n .reduce(function (best, point) {\n var margin = Venn_VennUtils.getMarginFromCircles(point,\n internal,\n external);\n // If the margin better than the current best, then\n // update sbest.\n if (best.margin < margin) {\n best.point = point;\n best.margin = margin;\n }\n return best;\n }, best);\n }, {\n point: void 0,\n margin: -Number.MAX_VALUE\n }).point;\n // Use nelder mead to optimize the initial label position.\n var optimal = Venn_VennUtils.nelderMead(function (p) { return -(Venn_VennUtils.getMarginFromCircles({ x: p[0],\n y: p[1] },\n internal,\n external)); },\n [\n best.x,\n best.y\n ]);\n // Update best to be the point which was found to have the best margin.\n best = {\n x: optimal[0],\n y: optimal[1]\n };\n if (!(VennSeries_isPointInsideAllCircles(best, internal) &&\n VennSeries_isPointOutsideAllCircles(best, external))) {\n // If point was either outside one of the internal, or inside one of\n // the external, then it was invalid and should use a fallback.\n if (internal.length > 1) {\n best = VennSeries_getCenterOfPoints(getCirclesIntersectionPolygon(internal));\n }\n else {\n best = {\n x: internal[0].x,\n y: internal[0].y\n };\n }\n }\n // Return the best point.\n return best;\n };\n /**\n * Calculates data label values for a given relations object.\n *\n * @private\n * @todo add unit tests\n * @param {Highcharts.VennRelationObject} relation A relations object.\n * @param {Array<Highcharts.VennRelationObject>} setRelations The list of\n * relations that is a set.\n * @return {Highcharts.VennLabelValuesObject}\n * Returns an object containing position and width of the label.\n */\n VennSeries.getLabelValues = function (relation, setRelations) {\n var sets = relation.sets;\n // Create a list of internal and external circles.\n var data = setRelations.reduce(function (data,\n set) {\n // If the set exists in this relation, then it is internal,\n // otherwise it will be external.\n var isInternal = sets.indexOf(set.sets[0]) > -1;\n var property = isInternal ? 'internal' : 'external';\n // Add the circle to the list.\n if (set.circle) {\n data[property].push(set.circle);\n }\n return data;\n }, {\n internal: [],\n external: []\n });\n // Filter out external circles that are completely overlapping all\n // internal\n data.external = data.external.filter(function (externalCircle) {\n return data.internal.some(function (internalCircle) {\n return !isCircle1CompletelyOverlappingCircle2(externalCircle, internalCircle);\n });\n });\n // Calculate the label position.\n var position = VennSeries.getLabelPosition(data.internal,\n data.external);\n // Calculate the label width\n var width = Venn_VennUtils.getLabelWidth(position,\n data.internal,\n data.external);\n return {\n position: position,\n width: width\n };\n };\n /**\n * Calculates the positions, and the label values of all the sets in the\n * venn diagram.\n *\n * @private\n * @todo Add support for constrained MDS.\n * @param {Array<Highchats.VennRelationObject>} relations\n * List of the overlap between two or more sets, or the size of a single\n * set.\n * @return {Highcharts.Dictionary<*>}\n * List of circles and their calculated positions.\n */\n VennSeries.layout = function (relations) {\n var mapOfIdToShape = {};\n var mapOfIdToLabelValues = {};\n // Calculate best initial positions by using greedy layout.\n if (relations.length > 0) {\n var mapOfIdToCircles_1 = Venn_VennUtils.layoutGreedyVenn(relations);\n var setRelations = relations.filter(Venn_VennUtils.isSet);\n for (var _i = 0, relations_1 = relations; _i < relations_1.length; _i++) {\n var relation = relations_1[_i];\n var sets = relation.sets;\n var id = sets.join();\n // Get shape from map of circles, or calculate intersection.\n var shape = Venn_VennUtils.isSet(relation) ?\n mapOfIdToCircles_1[id] :\n getAreaOfIntersectionBetweenCircles(sets.map(function (set) { return mapOfIdToCircles_1[set]; }));\n // Calculate label values if the set has a shape\n if (shape) {\n mapOfIdToShape[id] = shape;\n mapOfIdToLabelValues[id] = VennSeries.getLabelValues(relation, setRelations);\n }\n }\n }\n return { mapOfIdToShape: mapOfIdToShape, mapOfIdToLabelValues: mapOfIdToLabelValues };\n };\n /**\n * Calculates the proper scale to fit the cloud inside the plotting area.\n * @private\n * @todo add unit test\n * @param {number} targetWidth\n * Width of target area.\n * @param {number} targetHeight\n * Height of target area.\n * @param {Highcharts.PolygonBoxObject} field\n * The playing field.\n * @return {Highcharts.Dictionary<number>}\n * Returns the value to scale the playing field up to the size of the target\n * area, and center of x and y.\n */\n VennSeries.getScale = function (targetWidth, targetHeight, field) {\n var height = field.bottom - field.top, // Top is smaller than bottom\n width = field.right - field.left, scaleX = width > 0 ? 1 / width * targetWidth : 1, scaleY = height > 0 ? 1 / height * targetHeight : 1, adjustX = (field.right + field.left) / 2, adjustY = (field.top + field.bottom) / 2, scale = Math.min(scaleX, scaleY);\n return {\n scale: scale,\n centerX: targetWidth / 2 - adjustX * scale,\n centerY: targetHeight / 2 - adjustY * scale\n };\n };\n /**\n * If a circle is outside a give field, then the boundaries of the field is\n * adjusted accordingly. Modifies the field object which is passed as the\n * first parameter.\n * @private\n * @todo NOTE: Copied from wordcloud, can probably be unified.\n * @param {Highcharts.PolygonBoxObject} field\n * The bounding box of a playing field.\n * @param {Highcharts.CircleObject} circle\n * The bounding box for a placed point.\n * @return {Highcharts.PolygonBoxObject}\n * Returns a modified field object.\n */\n VennSeries.updateFieldBoundaries = function (field, circle) {\n var left = circle.x - circle.r,\n right = circle.x + circle.r,\n bottom = circle.y + circle.r,\n top = circle.y - circle.r;\n // TODO improve type checking.\n if (!VennSeries_isNumber(field.left) || field.left > left) {\n field.left = left;\n }\n if (!VennSeries_isNumber(field.right) || field.right < right) {\n field.right = right;\n }\n if (!VennSeries_isNumber(field.top) || field.top > top) {\n field.top = top;\n }\n if (!VennSeries_isNumber(field.bottom) || field.bottom < bottom) {\n field.bottom = bottom;\n }\n return field;\n };\n /* *\n *\n * Functions\n *\n * */\n /* eslint-disable valid-jsdoc */\n VennSeries.prototype.animate = function (init) {\n if (!init) {\n var series = this,\n animOptions = animObject(series.options.animation);\n var _loop_1 = function (point) {\n var args = point.shapeArgs;\n if (point.graphic && args) {\n var attr = {},\n animate = {};\n if (args.d) {\n // If shape is a path, then animate opacity.\n attr.opacity = 0.001;\n }\n else {\n // If shape is a circle, then animate radius.\n attr.r = 0;\n animate.r = args.r;\n }\n point.graphic\n .attr(attr)\n .animate(animate, animOptions);\n // If shape is path, then fade it in after the circles\n // animation\n if (args.d) {\n setTimeout(function () {\n if (point && point.graphic) {\n point.graphic.animate({\n opacity: 1\n });\n }\n }, animOptions.duration);\n }\n }\n };\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point = _a[_i];\n _loop_1(point);\n }\n }\n };\n /**\n * Draw the graphics for each point.\n * @private\n */\n VennSeries.prototype.drawPoints = function () {\n var series = this, \n // Series properties\n chart = series.chart,\n group = series.group,\n points = series.points || [], \n // Chart properties\n renderer = chart.renderer;\n // Iterate all points and calculate and draw their graphics.\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var point = points_1[_i];\n var attribs = {\n zIndex: VennSeries_isArray(point.sets) ? point.sets.length : 0\n },\n shapeArgs = point.shapeArgs;\n // Add point attribs\n if (!chart.styledMode) {\n VennSeries_extend(attribs, series.pointAttribs(point, point.state));\n }\n // Draw the point graphic.\n Series_DrawPointUtilities.draw(point, {\n isNew: !point.graphic,\n animatableAttribs: shapeArgs,\n attribs: attribs,\n group: group,\n renderer: renderer,\n shapeType: shapeArgs && shapeArgs.d ? 'path' : 'circle'\n });\n }\n };\n VennSeries.prototype.init = function () {\n ScatterSeries.prototype.init.apply(this, arguments);\n // Venn's opacity is a different option from other series\n delete this.opacity;\n };\n /**\n * Calculates the style attributes for a point. The attributes can vary\n * depending on the state of the point.\n * @private\n * @param {Highcharts.Point} point\n * The point which will get the resulting attributes.\n * @param {string} [state]\n * The state of the point.\n * @return {Highcharts.SVGAttributes}\n * Returns the calculated attributes.\n */\n VennSeries.prototype.pointAttribs = function (point, state) {\n var series = this,\n seriesOptions = series.options || {},\n pointOptions = point && point.options || {},\n stateOptions = (state && seriesOptions.states[state]) || {},\n options = merge(seriesOptions, { color: point && point.color },\n pointOptions,\n stateOptions);\n // Return resulting values for the attributes.\n return {\n 'fill': color(options.color)\n .brighten(options.brightness)\n .get(),\n // Set opacity directly to the SVG element, not to pattern #14372.\n opacity: options.opacity,\n 'stroke': options.borderColor,\n 'stroke-width': options.borderWidth,\n 'dashstyle': options.borderDashStyle\n };\n };\n VennSeries.prototype.translate = function () {\n var chart = this.chart;\n this.dataTable.modified = this.dataTable;\n this.generatePoints();\n // Process the data before passing it into the layout function.\n var relations = Venn_VennUtils.processVennData(this.options.data,\n VennSeries.splitter);\n // Calculate the positions of each circle.\n var _a = VennSeries.layout(relations),\n mapOfIdToShape = _a.mapOfIdToShape,\n mapOfIdToLabelValues = _a.mapOfIdToLabelValues;\n // Calculate the scale, and center of the plot area.\n var field = Object.keys(mapOfIdToShape)\n .filter(function (key) {\n var shape = mapOfIdToShape[key];\n return shape && VennSeries_isNumber(shape.r);\n })\n .reduce(function (field, key) { return VennSeries.updateFieldBoundaries(field, mapOfIdToShape[key]); }, {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0\n }), scaling = VennSeries.getScale(chart.plotWidth, chart.plotHeight, field), scale = scaling.scale, centerX = scaling.centerX, centerY = scaling.centerY;\n // Iterate all points and calculate and draw their graphics.\n for (var _i = 0, _b = this.points; _i < _b.length; _i++) {\n var point = _b[_i];\n var sets = VennSeries_isArray(point.sets) ? point.sets : [],\n id = sets.join(),\n shape = mapOfIdToShape[id],\n dataLabelValues = mapOfIdToLabelValues[id] || {},\n dlOptions = point.options && point.options.dataLabels;\n var shapeArgs = void 0,\n dataLabelWidth = dataLabelValues.width,\n dataLabelPosition = dataLabelValues.position;\n if (shape) {\n if (shape.r) {\n shapeArgs = {\n x: centerX + shape.x * scale,\n y: centerY + shape.y * scale,\n r: shape.r * scale\n };\n }\n else if (shape.d) {\n var d = shape.d;\n d.forEach(function (seg) {\n if (seg[0] === 'M') {\n seg[1] = centerX + seg[1] * scale;\n seg[2] = centerY + seg[2] * scale;\n }\n else if (seg[0] === 'A') {\n seg[1] = seg[1] * scale;\n seg[2] = seg[2] * scale;\n seg[6] = centerX + seg[6] * scale;\n seg[7] = centerY + seg[7] * scale;\n }\n });\n shapeArgs = { d: d };\n }\n // Scale the position for the data label.\n if (dataLabelPosition) {\n dataLabelPosition.x = centerX + dataLabelPosition.x * scale;\n dataLabelPosition.y = centerY + dataLabelPosition.y * scale;\n }\n else {\n dataLabelPosition = {};\n }\n if (VennSeries_isNumber(dataLabelWidth)) {\n dataLabelWidth = Math.round(dataLabelWidth * scale);\n }\n }\n point.shapeArgs = shapeArgs;\n // Placement for the data labels\n if (dataLabelPosition && shapeArgs) {\n point.plotX = dataLabelPosition.x;\n point.plotY = dataLabelPosition.y;\n }\n // Add width for the data label\n if (dataLabelWidth && shapeArgs) {\n point.dlOptions = merge(true, {\n style: {\n width: dataLabelWidth\n }\n }, VennSeries_isObject(dlOptions, true) ? dlOptions : void 0);\n }\n // Set name for usage in tooltip and in data label.\n point.name = point.options.name || sets.join('∩');\n }\n };\n /* *\n *\n * Static Properties\n *\n * */\n VennSeries.splitter = 'highcharts-split';\n VennSeries.defaultOptions = merge(ScatterSeries.defaultOptions, Venn_VennSeriesDefaults);\n return VennSeries;\n}(ScatterSeries));\nVennSeries_extend(VennSeries.prototype, {\n axisTypes: [],\n directTouch: true,\n isCartesian: false,\n pointArrayMap: ['value'],\n pointClass: Venn_VennPoint,\n utils: Venn_VennUtils\n});\n// Modify final series options.\naddEvent(VennSeries, 'afterSetOptions', function (e) {\n var options = e.options,\n states = options.states || {};\n if (this.is('venn')) {\n // Explicitly disable all halo options.\n for (var _i = 0, _a = Object.keys(states); _i < _a.length; _i++) {\n var state = _a[_i];\n states[state].halo = false;\n }\n }\n});\nhighcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default().registerSeriesType('venn', VennSeries);\n/* *\n *\n * Default Export\n *\n * */\n/* harmony default export */ var Venn_VennSeries = ((/* unused pure expression or super */ null && (VennSeries)));\n\n;// ./code/es5/es-modules/masters/modules/venn.src.js\n\n\n\n\n/* harmony default export */ var venn_src = ((highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()));\n\n__webpack_exports__ = __webpack_exports__[\"default\"];\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});"],"names":["root","factory","exports","module","require","define","amd","__WEBPACK_EXTERNAL_MODULE__944__","__WEBPACK_EXTERNAL_MODULE__620__","__WEBPACK_EXTERNAL_MODULE__512__","GeometryUtilities","extendStatics","CircleUtilities","__webpack_modules__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","__webpack_exports__","venn_src","highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_","highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default","highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_","highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default","getCenterOfPoints","points","sum","reduce","point","x","y","length","getDistanceBetweenPoints","p1","p2","Math","sqrt","pow","getAngleBetweenPoints","atan2","pointInPolygon","_a","polygon","i","j","len","inside","_b","x1","y1","_c","x2","y2","Geometry_GeometryUtilities","round","decimals","getAreaOfCircle","r","Error","PI","getCircularSegmentArea","h","acos","getCircleCircleIntersection","c1","c2","r1","r2","abs","r1Square","x0","y0","rx","ry","getCirclesIntersectionPoints","circles","arr","additional","slice","indexes","concat","map","p","isPointInsideCircle","circle","isPointInsideAllCircles","some","getCirclesIntersectionPolygon","filter","getOverlapBetweenCircles","overlap","d1","isCircle1CompletelyOverlappingCircle2","circle1","circle2","isPointOutsideAllCircles","getAreaOfIntersectionBetweenCircles","result","intersectionPoints","center_1","startPoint","angle","sort","b","arcs","data","midPoint","arc","index","indexOf","angle1","angle2","angleDiff","width","sin","cos","largeArc","push","unshift","center","Geometry_CircleUtilities","__assign","assign","t","s","arguments","apply","Series_DrawPointUtilities","draw","params","animatableAttribs","onComplete","css","renderer","animation","series","chart","hasRendered","options","graphic","attribs","getClassName","shouldDraw","shapeType","text","image","imageUrl","attr","shapeArgs","add","group","animate","isNew","destroy_1","destroy","keys","highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_","highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default","__extends","setPrototypeOf","__proto__","Array","__","constructor","create","ScatterPoint","seriesTypes","scatter","pointClass","isNumber","VennPoint","_super","isValid","value","Venn_VennSeriesDefaults","borderColor","borderDashStyle","borderWidth","brighten","clip","colorByPoint","dataLabels","enabled","verticalAlign","formatter","name","inactiveOtherPoints","marker","opacity","showInLegend","legendType","states","hover","select","color","inactive","tooltip","pointFormat","legendSymbol","VennUtils_assign","getOverlapBetweenCirclesByDistance","VennUtils_getDistanceBetweenPoints","extend","isArray","VennUtils_isNumber","isObject","isString","addOverlapToSets","relations","mapOfIdToProps","relation","sets","forEach","set","totalOverlap","overlapping","isSet","properties","bisect","f","tolerance","maxIterations","fX","fA","fB","nMax","tol","delta","getCentroid","simplex","getDistanceBetweenCirclesByOverlap","maxDistance","isValidRelation","invalid","loss","mapOfIdToCircle","totalLoss","diff","wantedOverlap","sortByTotalOverlap","NaN","Venn_VennUtils","geometry","geometryCircles","getLabelWidth","pos","internal","external","radius","min","Infinity","filteredExternals","findDistance","direction","testPos","Number","MAX_VALUE","getMarginFromCircles","margin","m","layoutGreedyVenn","positionedSets","mapOfIdToCircles","positionSet","coordinates","sortedByOverlap","shift","relationsWithTwoSets","_i","sortedByOverlap_1","_loop_1","bestPosition","best","positionedSet","positionedCircle","distance","possibleCoordinates","positionedSet2","positionedCircle2","overlap2","distance2","possibleCoordinates_1","currentLoss","nelderMead","fn","initial","sortByFx","fx","weightedSum","weight1","v1","weight2","v2","updateSimplex","shrinkSimplex","getPoint","centroid","worst","getSimplex","reflected","expanded","contracted","pCon","processVennData","splitter","validSets","mapOfIdToRelation","join","combinations","remaining","set2","combination","split","id","VennSeries_extends","TypeError","String","animObject","parse","VennSeries_isPointInsideAllCircles","VennSeries_isPointOutsideAllCircles","VennSeries_getCenterOfPoints","ScatterSeries","addEvent","VennSeries_extend","VennSeries_isArray","VennSeries_isNumber","VennSeries_isObject","merge","VennSeries","getLabelPosition","optimal","getLabelValues","setRelations","isInternal","externalCircle","internalCircle","position","layout","mapOfIdToShape","mapOfIdToLabelValues","mapOfIdToCircles_1","relations_1","shape","getScale","targetWidth","targetHeight","field","height","bottom","top","right","left","adjustX","adjustY","scale","centerX","centerY","updateFieldBoundaries","init","animOptions","args","setTimeout","duration","drawPoints","points_1","zIndex","styledMode","pointAttribs","state","seriesOptions","pointOptions","stateOptions","brightness","translate","dataTable","modified","generatePoints","scaling","plotWidth","plotHeight","dataLabelValues","dlOptions","dataLabelWidth","dataLabelPosition","seg","plotX","plotY","style","defaultOptions","axisTypes","directTouch","isCartesian","pointArrayMap","utils","e","is","halo","registerSeriesType"],"mappings":"CAUA,AAVA;;;;;;;;;CASC,EACA,SAA0CA,CAAI,CAAEC,CAAO,EACpD,AAAmB,UAAnB,OAAOC,SAAwB,AAAkB,UAAlB,OAAOC,OACxCA,OAAOD,OAAO,CAAGD,EAAQG,QAAQ,cAAeA,QAAQ,cAAc,KAAQ,CAAEA,QAAQ,cAAc,cAAiB,EAChH,AAAkB,YAAlB,OAAOC,QAAyBA,OAAOC,GAAG,CACjDD,OAAO,0BAA2B,CAAC,CAAC,wBAAwB,CAAE,CAAC,wBAAwB,QAAQ,CAAE,CAAC,wBAAwB,iBAAiB,CAAC,CAAEJ,GACvI,AAAmB,UAAnB,OAAOC,QACdA,OAAO,CAAC,0BAA0B,CAAGD,EAAQG,QAAQ,cAAeA,QAAQ,cAAc,KAAQ,CAAEA,QAAQ,cAAc,cAAiB,EAE3IJ,EAAK,UAAa,CAAGC,EAAQD,EAAK,UAAa,CAAEA,EAAK,UAAa,CAAC,KAAQ,CAAEA,EAAK,UAAa,CAAC,cAAiB,CACpH,EAAG,IAAI,CAAE,SAASO,CAAgC,CAAEC,CAAgC,CAAEC,CAAgC,EACtH,OAAgB,AAAC,WACP,aACA,IA8GCC,EA6mBHC,EA48BAA,EA1jDJD,EAuHAE,EApOUC,EAAuB,CAE/B,IACC,SAASV,CAAM,EAEtBA,EAAOD,OAAO,CAAGM,CAEX,EAEA,IACC,SAASL,CAAM,EAEtBA,EAAOD,OAAO,CAAGO,CAEX,EAEA,IACC,SAASN,CAAM,EAEtBA,EAAOD,OAAO,CAAGK,CAEX,CAEI,EAGIO,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,CAAQ,EAEpC,IAAIC,EAAeH,CAAwB,CAACE,EAAS,CACrD,GAAIC,AAAiBC,KAAAA,IAAjBD,EACH,OAAOA,EAAaf,OAAO,CAG5B,IAAIC,EAASW,CAAwB,CAACE,EAAS,CAAG,CAGjDd,QAAS,CAAC,CACX,EAMA,OAHAW,CAAmB,CAACG,EAAS,CAACb,EAAQA,EAAOD,OAAO,CAAEa,GAG/CZ,EAAOD,OAAO,AACtB,CAMCa,EAAoBI,CAAC,CAAG,SAAShB,CAAM,EACtC,IAAIiB,EAASjB,GAAUA,EAAOkB,UAAU,CACvC,WAAa,OAAOlB,EAAO,OAAU,AAAE,EACvC,WAAa,OAAOA,CAAQ,EAE7B,OADAY,EAAoBO,CAAC,CAACF,EAAQ,CAAEG,EAAGH,CAAO,GACnCA,CACR,EAMAL,EAAoBO,CAAC,CAAG,SAASpB,CAAO,CAAEsB,CAAU,EACnD,IAAI,IAAIC,KAAOD,EACXT,EAAoBW,CAAC,CAACF,EAAYC,IAAQ,CAACV,EAAoBW,CAAC,CAACxB,EAASuB,IAC5EE,OAAOC,cAAc,CAAC1B,EAASuB,EAAK,CAAEI,WAAY,CAAA,EAAMC,IAAKN,CAAU,CAACC,EAAI,AAAC,EAGhF,EAKAV,EAAoBW,CAAC,CAAG,SAASK,CAAG,CAAEC,CAAI,EAAI,OAAOL,OAAOM,SAAS,CAACC,cAAc,CAACC,IAAI,CAACJ,EAAKC,EAAO,EAIjH,IAAII,EAAsB,CAAC,EAG3BrB,EAAoBO,CAAC,CAACc,EAAqB,CACzC,QAAW,WAAa,OAAqBC,EAAU,CACzD,GAGA,IAAIC,EAAuEvB,EAAoB,KAC3FwB,EAA2FxB,EAAoBI,CAAC,CAACmB,GAEjHE,EAA+FzB,EAAoB,KACnH0B,EAAmH1B,EAAoBI,CAAC,CAACqB,EA+CzI9B,EA7BOA,EA4FRA,GAAsBA,CAAAA,EAAoB,CAAC,CAAA,GA/DxBgC,iBAAiB,CAZnC,SAA2BC,CAAM,EAC7B,IAAIC,EAAMD,EAAOE,MAAM,CAAC,SAAUD,CAAG,CACjCE,CAAK,EAGL,OAFIF,EAAIG,CAAC,EAAID,EAAMC,CAAC,CACpBH,EAAII,CAAC,EAAIF,EAAME,CAAC,CACTJ,CACX,EAAG,CAAEG,EAAG,EAAGC,EAAG,CAAE,GAChB,MAAO,CACHD,EAAGH,EAAIG,CAAC,CAAGJ,EAAOM,MAAM,CACxBD,EAAGJ,EAAII,CAAC,CAAGL,EAAOM,MAAM,AAC5B,CACJ,EAoBAvC,EAAkBwC,wBAAwB,CAH1C,SAAkCC,CAAE,CAAEC,CAAE,EACpC,OAAOC,KAAKC,IAAI,CAACD,KAAKE,GAAG,CAACH,EAAGL,CAAC,CAAGI,EAAGJ,CAAC,CAAE,GAAKM,KAAKE,GAAG,CAACH,EAAGJ,CAAC,CAAGG,EAAGH,CAAC,CAAE,GACtE,EAaAtC,EAAkB8C,qBAAqB,CAHvC,SAA+BL,CAAE,CAAEC,CAAE,EACjC,OAAOC,KAAKI,KAAK,CAACL,EAAGL,CAAC,CAAGI,EAAGJ,CAAC,CAAEK,EAAGJ,CAAC,CAAGG,EAAGH,CAAC,CAC9C,EAgCAtC,EAAkBgD,cAAc,CAxBhC,SAAwBC,CAAE,CAAEC,CAAO,EAC/B,IAGIC,EACAC,EAJAf,EAAIY,EAAGZ,CAAC,CACRC,EAAIW,EAAGX,CAAC,CACRe,EAAMH,EAAQX,MAAM,CAGpBe,EAAS,CAAA,EACb,IAAKH,EAAI,EAAGC,EAAIC,EAAM,EAAGF,EAAIE,EAAKD,EAAID,IAAK,CACvC,IAAII,EAAKL,CAAO,CAACC,EAAE,CACfK,EAAKD,CAAE,CAAC,EAAE,CACVE,EAAKF,CAAE,CAAC,EAAE,CACVG,EAAKR,CAAO,CAACE,EAAE,CACfO,EAAKD,CAAE,CAAC,EAAE,CACVE,EAAKF,CAAE,CAAC,EAAE,CACVD,EAAKnB,GAAMsB,EAAKtB,GACfD,EAAI,AAACsB,CAAAA,EAAKH,CAAC,EACPlB,CAAAA,EAAImB,CAAC,EACLG,CAAAA,EAAKH,CAAC,EACPD,GACJF,CAAAA,EAAS,CAACA,CAAK,CAEvB,CACA,OAAOA,CACX,EAQyB,IAAIO,EAA8B7D,EAc3D8C,EAAwBe,EAA2Bf,qBAAqB,CAAEd,EAAoB6B,EAA2B7B,iBAAiB,CAAEQ,EAA2BqB,EAA2BrB,wBAAwB,EAO9N,AAAC,SAAUtC,CAAe,EAkBtB,SAAS4D,EAAMzB,CAAC,CAAE0B,CAAQ,EACtB,IAAIlD,EAAI8B,KAAKE,GAAG,CAAC,GACbkB,GACJ,OAAOpB,KAAKmB,KAAK,CAACzB,EAAIxB,GAAKA,CAC/B,CAaA,SAASmD,EAAgBC,CAAC,EACtB,GAAIA,GAAK,EACL,MAAM,AAAIC,MAAM,+CAEpB,OAAOvB,KAAKwB,EAAE,CAAGF,EAAIA,CACzB,CAmBA,SAASG,EAAuBH,CAAC,CAAEI,CAAC,EAChC,OAAQJ,EAAIA,EAAItB,KAAK2B,IAAI,CAAC,EAAID,EAAIJ,GAC9B,AAACA,CAAAA,EAAII,CAAAA,EAAK1B,KAAKC,IAAI,CAACyB,EAAK,CAAA,EAAIJ,EAAII,CAAAA,EACzC,CA8DA,SAASE,EAA4BC,CAAE,CAAEC,CAAE,EACvC,IAAI7D,EAAI4B,EAAyBgC,EAC7BC,GACAC,EAAKF,EAAGP,CAAC,CACTU,EAAKF,EAAGR,CAAC,CACThC,EAAS,EAAE,CACf,GAAIrB,EAAI8D,EAAKC,GAAM/D,EAAI+B,KAAKiC,GAAG,CAACF,EAAKC,GAAK,CAGtC,IAAIE,EAAWH,EAAKA,EAEhBrC,EAAI,AAACwC,CAAAA,EAF0BF,EAAKA,EAET/D,EAAIA,CAAAA,EAAM,CAAA,EAAIA,CAAAA,EAEzC0B,EAAIK,KAAKC,IAAI,CAACiC,EAAWxC,EAAIA,GAAImB,EAAKgB,EAAGnC,CAAC,CAAEsB,EAAKc,EAAGpC,CAAC,CAAEoB,EAAKe,EAAGlC,CAAC,CAAEsB,EAAKa,EAAGnC,CAAC,CAAEwC,EAAKtB,EAAKnB,EAAKsB,CAAAA,EAAKH,CAAC,EAAK5C,EAAGmE,EAAKtB,EAAKpB,EAAKuB,CAAAA,EAAKH,CAAC,EAAK7C,EAAGoE,EAAK,CAAA,CAAA,AAAc1C,EAAI1B,EAAhBgD,CAAAA,EAAKH,CAAC,CAAW,EAAGwB,EAAK,CAAA,CAAA,AAAc3C,EAAI1B,EAAhB+C,CAAAA,EAAKH,CAAC,CAAW,EAC9LvB,EAAS,CACL,CAAEI,EAAGyB,EAAMgB,EAAKE,EAAI,IAAK1C,EAAGwB,EAAMiB,EAAKE,EAAI,GAAI,EAC/C,CAAE5C,EAAGyB,EAAMgB,EAAKE,EAAI,IAAK1C,EAAGwB,EAAMiB,EAAKE,EAAI,GAAI,EAClD,AACL,CACA,OAAOhD,CACX,CAaA,SAASiD,EAA6BC,CAAO,EACzC,OAAOA,EAAQhD,MAAM,CAAC,SAAUF,CAAM,CAAEuC,CAAE,CAAErB,CAAC,CAAEiC,CAAG,EAC9C,IAAIC,EAAaD,EACRE,KAAK,CAACnC,EAAI,GACVhB,MAAM,CAAC,SAAUF,CAAM,CAC5BwC,CAAE,CACFrB,CAAC,EACG,IAAImC,EAAU,CAACpC,EACnBC,EAAID,EAAI,EAAE,CACV,OAAOlB,EAAOuD,MAAM,CAACjB,EAA4BC,EAAIC,GAAIgB,GAAG,CAAC,SAAUC,CAAC,EAEpE,OADAA,EAAEH,OAAO,CAAGA,EACLG,CACX,GACJ,EAAG,EAAE,EACL,OAAOzD,EAAOuD,MAAM,CAACH,EACzB,EAAG,EAAE,CACT,CAiCA,SAASM,EAAoBvD,CAAK,CAAEwD,CAAM,EACtC,OAAOpD,EAAyBJ,EAAOwD,IAAWA,EAAO3B,CAAC,CAAG,KACjE,CAgBA,SAAS4B,EAAwBzD,CAAK,CAAE+C,CAAO,EAC3C,MAAO,CAACA,EAAQW,IAAI,CAAC,SAAUF,CAAM,EACjC,MAAO,CAACD,EAAoBvD,EAAOwD,EACvC,EACJ,CAoCA,SAASG,EAA8BZ,CAAO,EAC1C,OAAOD,EAA6BC,GAC/Ba,MAAM,CAAC,SAAUN,CAAC,EACnB,OAAOG,EAAwBH,EAAGP,EACtC,EACJ,CAtPAjF,EAAgB4D,KAAK,CAAGA,EAkBxB5D,EAAgB8D,eAAe,CAAGA,EAsBlC9D,EAAgBkE,sBAAsB,CAAGA,EA4CzClE,EAAgB+F,wBAAwB,CAvBxC,SAAkCvB,CAAE,CAAEC,CAAE,CAAE/D,CAAC,EACvC,IAAIsF,EAAU,EAGd,GAAItF,EAAI8D,EAAKC,EAAI,CACb,GAAI/D,GAAK+B,KAAKiC,GAAG,CAACD,EAAKD,GAGnBwB,EAAUlC,EAAgBU,EAAKC,EAAKD,EAAKC,OAExC,CAED,IAAIwB,EAAK,AAACzB,CAAAA,EAAKA,EAAKC,EAAKA,EAAK/D,EAAIA,CAAAA,EAAM,CAAA,EAAIA,CAAAA,EAG5CsF,EAAW9B,EAAuBM,EAAIA,EAAKyB,GACvC/B,EAAuBO,EAAIA,EAFtB/D,CAAAA,EAAIuF,CAAC,EAGlB,CAEAD,EAAUpC,EAAMoC,EAAS,GAC7B,CACA,OAAOA,CACX,EAuCAhG,EAAgBqE,2BAA2B,CAAGA,EA6B9CrE,EAAgBgF,4BAA4B,CAAGA,EAmB/ChF,EAAgBkG,qCAAqC,CAHrD,SAA+CC,CAAO,CAAEC,CAAO,EAC3D,OAAO9D,EAAyB6D,EAASC,GAAWA,EAAQrC,CAAC,CAAGoC,EAAQpC,CAAC,CAAG,KAChF,EAiBA/D,EAAgByF,mBAAmB,CAAGA,EAoBtCzF,EAAgB2F,uBAAuB,CAAGA,EAsB1C3F,EAAgBqG,wBAAwB,CALxC,SAAkCnE,CAAK,CAAE+C,CAAO,EAC5C,MAAO,CAACA,EAAQW,IAAI,CAAC,SAAUF,CAAM,EACjC,OAAOD,EAAoBvD,EAAOwD,EACtC,EACJ,EAoBA1F,EAAgB6F,6BAA6B,CAAGA,EA2GhD7F,EAAgBsG,mCAAmC,CA5FnD,SAA6CrB,CAAO,EAChD,IACIsB,EADAC,EAAqBX,EAA8BZ,GAEvD,GAAIuB,EAAmBnE,MAAM,CAAG,EAAG,CAE/B,IAAIoE,EAAW3E,EAAkB0E,GAW7BE,EAAaF,AAVjBA,CAAAA,EAAqBA,EAEhBjB,GAAG,CAAC,SAAUC,CAAC,EAEhB,OADAA,EAAEmB,KAAK,CAAG/D,EAAsB6D,EAAUjB,GACnCA,CACX,GAEKoB,IAAI,CAAC,SAAUjG,CAAC,CAAEkG,CAAC,EACpB,OAAOA,EAAEF,KAAK,CAAGhG,EAAEgG,KAAK,AAC5B,EAAC,CACkC,CAACH,EAAmBnE,MAAM,CAAG,EAAE,CAC9DyE,EAAON,EACFvE,MAAM,CAAC,SAAU8E,CAAI,CAC1BxE,CAAE,EACE,IAAImE,EAAaK,EAAKL,UAAU,CACpCM,EAAWlF,EAAkB,CAAC4E,EAC9BnE,EAAG,EAGC0E,EAAM1E,EAAG8C,OAAO,CAGXS,MAAM,CAAC,SAAUoB,CAAK,EACvB,OAAOR,EAAWrB,OAAO,CAAC8B,OAAO,CAACD,GAAS,EACnD,GAGKjF,MAAM,CAAC,SAAUgF,CAAG,CAAEC,CAAK,EAC5B,IAAIxB,EAAST,CAAO,CAACiC,EAAM,CACvBE,EAASxE,EAAsB8C,EAC/BnD,GACA8E,EAASzE,EAAsB8C,EAC/BgB,GACAY,EAAYD,EAASD,EAChBC,CAAAA,EAASD,EAAS,EAAI3E,KAAKwB,EAAE,CAAG,CAAA,EACrC0C,EAAQU,EAASC,EAAY,EAC7BC,EAAQjF,EAAyB0E,EAAU,CACvC7E,EAAGuD,EAAOvD,CAAC,CAAGuD,EAAO3B,CAAC,CAAGtB,KAAK+E,GAAG,CAACb,GAClCvE,EAAGsD,EAAOtD,CAAC,CAAGsD,EAAO3B,CAAC,CAAGtB,KAAKgF,GAAG,CAACd,EACtC,GACA5C,EAAI2B,EAAO3B,CAAC,CAiBhB,OAdIwD,EAAQxD,AAAI,EAAJA,GACRwD,CAAAA,EAAQxD,AAAI,EAAJA,CAAI,EAGZ,CAAA,CAACkD,GAAOA,EAAIM,KAAK,CAAGA,CAAI,GACxBN,CAAAA,EAAM,CACFlD,EAAGA,EACH2D,SAAUH,EAAQxD,EAAI,EAAI,EAC1BwD,MAAOA,EACPpF,EAAGI,EAAGJ,CAAC,CACPC,EAAGG,EAAGH,CAAC,AACX,CAAA,EAGG6E,CACX,EAAG,MAEH,GAAIA,EAAK,CACL,IAAIlD,EAAIkD,EAAIlD,CAAC,CACbgD,EAAKD,IAAI,CAACa,IAAI,CAAC,CAAC,IAAK5D,EAAGA,EAAG,EAAGkD,EAAIS,QAAQ,CAAE,EAAGT,EAAI9E,CAAC,CAAE8E,EAAI7E,CAAC,CAAC,EAC5D2E,EAAKL,UAAU,CAAGnE,CACtB,CACA,OAAOwE,CACX,EAAG,CACCL,WAAYA,EACZI,KAAM,EAAE,AACZ,GAAGA,IAAI,AACa,CAAA,IAAhBA,EAAKzE,MAAM,EAGNyE,AAAgB,IAAhBA,EAAKzE,MAAM,GAIhByE,EAAKc,OAAO,CAAC,CAAC,IAAKlB,EAAWvE,CAAC,CAAEuE,EAAWtE,CAAC,CAAC,EAC9CmE,EAAS,CACLsB,OAAQpB,EACR/F,EAAGoG,CACP,EAER,CACA,OAAOP,CACX,CAEJ,EAAGvG,GAAoBA,CAAAA,EAAkB,CAAC,CAAA,GAMb,IAAI8H,EAA4B9H,EASzD+H,EAAgD,WAShD,MAAOA,AARPA,CAAAA,EAAWhH,OAAOiH,MAAM,EAAI,SAASC,CAAC,EAClC,IAAK,IAAIC,EAAGjF,EAAI,EAAG1C,EAAI4H,UAAU9F,MAAM,CAAEY,EAAI1C,EAAG0C,IAE5C,IAAK,IAAIuC,KADT0C,EAAIC,SAAS,CAAClF,EAAE,CACKlC,OAAOM,SAAS,CAACC,cAAc,CAACC,IAAI,CAAC2G,EAAG1C,IACzDyC,CAAAA,CAAC,CAACzC,EAAE,CAAG0C,CAAC,CAAC1C,EAAE,AAAD,EAElB,OAAOyC,CACX,CAAA,EACgBG,KAAK,CAAC,IAAI,CAAED,UAChC,EA2EiCE,EAHR,CACrBC,KAzDJ,SAAcpG,CAAK,CAAEqG,CAAM,EACvB,IAAIC,EAAoBD,EAAOC,iBAAiB,CAC5CC,EAAaF,EAAOE,UAAU,CAC9BC,EAAMH,EAAOG,GAAG,CAChBC,EAAWJ,EAAOI,QAAQ,CAC1BC,EAAY,AAAC1G,EAAM2G,MAAM,EAAI3G,EAAM2G,MAAM,CAACC,KAAK,CAACC,WAAW,CAEvD,KAAK,EAEJ7G,EAAM2G,MAAM,EACT3G,EAAM2G,MAAM,CAACG,OAAO,CAACJ,SAAS,CACtCK,EAAU/G,EAAM+G,OAAO,CAE3B,GADAV,EAAOW,OAAO,CAAGnB,EAASA,EAAS,CAAC,EAAGQ,EAAOW,OAAO,EAAG,CAAE,MAAShH,EAAMiH,YAAY,EAAG,IAAM,CAAC,EAC1FjH,EAAMkH,UAAU,GACZH,IAEGA,EADAV,AAAqB,SAArBA,EAAOc,SAAS,CACNV,EAASW,IAAI,GAElBf,AAAqB,UAArBA,EAAOc,SAAS,CACXV,EAASY,KAAK,CAAChB,EAAOiB,QAAQ,EAAI,IACvCC,IAAI,CAAClB,EAAOmB,SAAS,EAAI,CAAC,GAGrBf,CAAQ,CAACJ,EAAOc,SAAS,CAAC,CAACd,EAAOmB,SAAS,EAAI,CAAC,GAE9DxH,EAAM+G,OAAO,CAAGA,EAChBA,EAAQU,GAAG,CAACpB,EAAOqB,KAAK,GAExBlB,GACAO,EAAQP,GAAG,CAACA,GAEhBO,EACKQ,IAAI,CAAClB,EAAOW,OAAO,EACnBW,OAAO,CAACrB,EAAmBD,CAAAA,EAAOuB,KAAK,EAAWlB,EAAWH,QAEjE,GAAIQ,EAAS,CACd,IAAIc,EAAY,WACR7H,EAAM+G,OAAO,CAAGA,EAAWA,GAAWA,EAAQe,OAAO,GAC/B,YAAtB,OAAOvB,GACPA,GAER,CAEI1H,CAAAA,OAAOkJ,IAAI,CAACzB,GAAmBnG,MAAM,CACrC4G,EAAQY,OAAO,CAACrB,EAAmB,KAAK,EAAG,WAAc,OAAOuB,GAAa,GAG7EA,GAER,CACJ,CAQA,EAIIG,EAAmI/J,EAAoB,KACvJgK,EAAuJhK,EAAoBI,CAAC,CAAC2J,GAmB7KE,GACIrK,EAAgB,SAAUW,CAAC,CAC3BmG,CAAC,EAMD,MAAO9G,AALHA,CAAAA,EAAgBgB,OAAOsJ,cAAc,EAChC,CAAA,CAAEC,UAAW,EAAE,AAAC,CAAA,YAAaC,OAAS,SAAU7J,CAAC,CAC1DmG,CAAC,EAAInG,EAAE4J,SAAS,CAAGzD,CAAG,GACd,SAAUnG,CAAC,CACnBmG,CAAC,EAAI,IAAK,IAAIrB,KAAKqB,EAAOA,EAAEvF,cAAc,CAACkE,IAAI9E,CAAAA,CAAC,CAAC8E,EAAE,CAAGqB,CAAC,CAACrB,EAAE,AAAD,CAAG,CAAA,EACvC9E,EAAGmG,EAC5B,EACO,SAAUnG,CAAC,CAAEmG,CAAC,EAEjB,SAAS2D,IAAO,IAAI,CAACC,WAAW,CAAG/J,CAAG,CADtCX,EAAcW,EAAGmG,GAEjBnG,EAAEW,SAAS,CAAGwF,AAAM,OAANA,EAAa9F,OAAO2J,MAAM,CAAC7D,GAAM2D,CAAAA,EAAGnJ,SAAS,CAAGwF,EAAExF,SAAS,CAAE,IAAImJ,CAAG,CACtF,GAGAG,EAAe,AAACR,IAA2IS,WAAW,CAACC,OAAO,CAACxJ,SAAS,CAACyJ,UAAU,CAEnMC,EAAW,AAACpJ,IAA+EoJ,QAAQ,CAMnGC,EAA2B,SAAUC,CAAM,EAE3C,SAASD,IACL,OAAOC,AAAW,OAAXA,GAAmBA,EAAO7C,KAAK,CAAC,IAAI,CAAED,YAAc,IAAI,AACnE,CAaA,OAhBAiC,EAAUY,EAAWC,GASrBD,EAAU3J,SAAS,CAAC6J,OAAO,CAAG,WAC1B,OAAOH,EAAS,IAAI,CAACI,KAAK,CAC9B,EACAH,EAAU3J,SAAS,CAAC+H,UAAU,CAAG,WAE7B,MAAO,CAAC,CAAC,IAAI,CAACM,SAAS,AAC3B,EACOsB,CACX,EAAEL,GAmM+BS,EA1IR,CACrBC,YAAa,UACbC,gBAAiB,QACjBC,YAAa,EACbC,SAAU,EACVC,KAAM,CAAA,EACNC,aAAc,CAAA,EACdC,WAAY,CACRC,QAAS,CAAA,EACTC,cAAe,SACfC,UAAW,WACP,OAAO,IAAI,CAAC5J,KAAK,CAAC6J,IAAI,AAC1B,CACJ,EAMAC,oBAAqB,CAAA,EAKrBC,OAAQ,CAAA,EACRC,QAAS,IACTC,aAAc,CAAA,EAMdC,WAAY,QACZC,OAAQ,CAIJC,MAAO,CACHJ,QAAS,EACTb,YAAa,SACjB,EAIAkB,OAAQ,CACJC,MAAO,UACPnB,YAAa,UACbzC,UAAW,CAAA,CACf,EACA6D,SAAU,CACNP,QAAS,IACb,CACJ,EACAQ,QAAS,CACLC,YAAa,6BACjB,EACAC,aAAc,WAClB,EAqGIC,EAAwD,WASxD,MAAOA,AARPA,CAAAA,EAAmB9L,OAAOiH,MAAM,EAAI,SAASC,CAAC,EAC1C,IAAK,IAAIC,EAAGjF,EAAI,EAAG1C,EAAI4H,UAAU9F,MAAM,CAAEY,EAAI1C,EAAG0C,IAE5C,IAAK,IAAIuC,KADT0C,EAAIC,SAAS,CAAClF,EAAE,CACKlC,OAAOM,SAAS,CAACC,cAAc,CAACC,IAAI,CAAC2G,EAAG1C,IACzDyC,CAAAA,CAAC,CAACzC,EAAE,CAAG0C,CAAC,CAAC1C,EAAE,AAAD,EAElB,OAAOyC,CACX,CAAA,EACwBG,KAAK,CAAC,IAAI,CAAED,UACxC,EAEIrE,EAAkBgE,EAAyBhE,eAAe,CAAEO,EAA8ByD,EAAyBzD,2BAA2B,CAAEyI,EAAqChF,EAAyB/B,wBAAwB,CAAEJ,EAA0BmC,EAAyBnC,uBAAuB,CAAEF,EAAsBqC,EAAyBrC,mBAAmB,CAAEY,EAA2ByB,EAAyBzB,wBAAwB,CAEpc0G,EAAqCpJ,EAA2BrB,wBAAwB,CAExF0K,EAAS,AAACrL,IAA+EqL,MAAM,CAAEC,EAAU,AAACtL,IAA+EsL,OAAO,CAAEC,EAAqB,AAACvL,IAA+EoJ,QAAQ,CAAEoC,EAAW,AAACxL,IAA+EwL,QAAQ,CAAEC,EAAW,AAACzL,IAA+EyL,QAAQ,CAmB/f,SAASC,EAAiBC,CAAS,EAE/B,IAAIC,EAAiB,CAAC,EA8BtB,OA7BAD,EAEKxH,MAAM,CAAC,SAAU0H,CAAQ,EAAI,OAAQA,AAAyB,IAAzBA,EAASC,IAAI,CAACpL,MAAM,AAAS,GAElEqL,OAAO,CAAC,SAAUF,CAAQ,EAC3BA,EAASC,IAAI,CAACC,OAAO,CAAC,SAAUC,CAAG,CAAE1K,CAAC,CAAEiC,CAAG,EACvC,IAAInC,EACCoK,EAASI,CAAc,CAACI,EAAI,GAC7BJ,CAAAA,CAAc,CAACI,EAAI,CAAG,CAClBC,aAAc,EACdC,YAAa,CAAC,CAClB,CAAA,EAEJN,CAAc,CAACI,EAAI,CAAG,CAClBC,aAAc,AAACL,CAAAA,CAAc,CAACI,EAAI,CAACC,YAAY,EAAI,CAAA,EAC/CJ,EAASrC,KAAK,CAClB0C,YAAahB,EAAiBA,EAAiB,CAAC,EAAIU,CAAc,CAACI,EAAI,CAACE,WAAW,EAAI,CAAC,GAAM9K,CAAAA,AAASA,CAATA,EAAK,CAAC,CAAA,CAAK,CAACmC,CAAG,CAAC,EAAIjC,EAAE,CAAC,CAAGuK,EAASrC,KAAK,CAAEpI,CAAC,EAC7I,CACJ,EACJ,GACAuK,EAEKxH,MAAM,CAACgI,GAEPJ,OAAO,CAAC,SAAUC,CAAG,EACtB,IAAII,EAAaR,CAAc,CAACI,EAAIF,IAAI,CAAC,EAAE,CAAC,CAC5CT,EAAOW,EAAKI,EAChB,GAEOT,CACX,CAsBA,SAASU,EAAOC,CAAC,CAAEtN,CAAC,CAAEkG,CAAC,CAAEqH,CAAS,CAAEC,CAAa,EAC7C,IAKIhM,EACAiM,EANAC,EAAKJ,EAAEtN,GACP2N,EAAKL,EAAEpH,GACP0H,EAAOJ,GAAiB,IACxBK,EAAMN,GAAa,MACnBO,EAAQ5H,EAAIlG,EAGZJ,EAAI,EACR,GAAII,GAAKkG,EACL,MAAM,AAAI7C,MAAM,6BAEf,GAAIqK,EAAKC,EAAK,EACf,MAAM,AAAItK,MAAM,2CAEpB,GAAIqK,AAAO,IAAPA,EACAlM,EAAIxB,OAEH,GAAI2N,AAAO,IAAPA,EACLnM,EAAI0E,OAGJ,KAAOtG,KAAOgO,GAAQH,AAAO,IAAPA,GAAYK,EAAQD,GACtCC,EAAQ,AAAC5H,CAAAA,EAAIlG,CAAAA,EAAK,EAId0N,EAFJD,CAAAA,EAAKH,EADL9L,EAAIxB,EAAI8N,EACA,EAEM,EACV9N,EAAIwB,EAGJ0E,EAAI1E,EAIhB,OAAOA,CACX,CAIA,SAASuM,EAAYC,CAAO,EASxB,IAAK,IARDzJ,EAAMyJ,EAAQvJ,KAAK,CAAC,EAAG,IACvB/C,EAAS6C,EAAI7C,MAAM,CACnBkE,EAAS,EAAE,CACXvE,EAAM,SAAU+E,CAAI,CACpB7E,CAAK,EAEL,OADI6E,EAAK/E,GAAG,EAAIE,CAAK,CAAC6E,EAAK9D,CAAC,CAAC,CACtB8D,CACX,EACS9D,EAAI,EAAGA,EAAIZ,EAAQY,IACxBsD,CAAM,CAACtD,EAAE,CAAGiC,EAAIjD,MAAM,CAACD,EAAK,CAAEA,IAAK,EAAGiB,EAAGA,CAAE,GAAGjB,GAAG,CAAGK,EAExD,OAAOkE,CACX,CAiBA,SAASqI,EAAmCpK,CAAE,CAAEC,CAAE,CAAEuB,CAAO,EACvD,IAAI6I,EAAcrK,EAAKC,EAoBvB,OAlBIuB,GAAW,EAEA6I,EAEN/K,EAAgBU,EAAKC,EAAKD,EAAKC,IAAOuB,EAGhC,EAGAgI,EAAO,SAAU7L,CAAC,EAKzB,OAAO6D,EAJa8G,EAAmCtI,EACnDC,EACAtC,EAGR,EAAG,EAAG0M,EAGd,CAgGA,SAASf,EAAM3L,CAAC,EACZ,OAAO8K,EAAQ9K,EAAEsL,IAAI,GAAKtL,AAAkB,IAAlBA,EAAEsL,IAAI,CAACpL,MAAM,AAC3C,CAKA,SAASyM,EAAgB3M,CAAC,EACtB,IAAIoD,EAAM,CAAC,EACX,OAAQ4H,EAAShL,IACZ+K,EAAmB/K,EAAEgJ,KAAK,GAAKhJ,EAAEgJ,KAAK,CAAG,IACzC8B,EAAQ9K,EAAEsL,IAAI,GAAKtL,EAAEsL,IAAI,CAACpL,MAAM,CAAG,GACpC,CAACF,EAAEsL,IAAI,CAAC7H,IAAI,CAAC,SAAU+H,CAAG,EACtB,IAAIoB,EAAU,CAAA,EAOd,MANI,CAACxJ,CAAG,CAACoI,EAAI,EAAIP,EAASO,GACtBpI,CAAG,CAACoI,EAAI,CAAG,CAAA,EAGXoB,EAAU,CAAA,EAEPA,CACX,EACR,CA0JA,SAASC,EAAKC,CAAe,CAAE3B,CAAS,EAGpC,OAAOA,EAAUrL,MAAM,CAAC,SAAUiN,CAAS,CAAE1B,CAAQ,EACjD,IAAIwB,EAAO,EACX,GAAIxB,EAASC,IAAI,CAACpL,MAAM,CAAG,EAAG,CAQ1B,IAAI8M,EAAOC,AAPS5B,EAASrC,KAAK,CAEdpF,AAvMhC,SAAkCd,CAAO,EACrC,IAAIe,EAAU,EAGd,GAAIf,AAAmB,IAAnBA,EAAQ5C,MAAM,CAAQ,CACtB,IAAI8D,EAAUlB,CAAO,CAAC,EAAE,CACpBmB,EAAUnB,CAAO,CAAC,EAAE,CACxBe,EAAU8G,EAAmC3G,EAAQpC,CAAC,CAAEqC,EAAQrC,CAAC,CAAEgJ,EAAmC5G,EAASC,GACnH,CACA,OAAOJ,CACX,EA+LgBwH,EAASC,IAAI,CAAClI,GAAG,CAAC,SAAUoI,CAAG,EAC3B,OAAOsB,CAAe,CAACtB,EAAI,AACnC,IAEAqB,EAAOvM,KAAKmB,KAAK,CAAC,AAACuL,EAAOA,EAblB,MAAA,IAcZ,CAEA,OAAOD,EAAYF,CACvB,EAAG,EACP,CAkMA,SAASK,EAAmB1O,CAAC,CAAEkG,CAAC,SAC5B,AAAI,AAA0B,KAAA,IAAnBA,EAAE+G,YAAY,EACrB,AAA0B,KAAA,IAAnBjN,EAAEiN,YAAY,CACd/G,EAAE+G,YAAY,CAAGjN,EAAEiN,YAAY,CAEnC0B,GACX,CAqB6B,IAAIC,EAfjB,CACZC,SAAU7L,EACV8L,gBAAiB3H,EACjBuF,iBAAkBA,EAClBqB,YAAaA,EACbE,mCAAoCA,EACpCc,cAveJ,SAAuBC,CAAG,CAAEC,CAAQ,CAAEC,CAAQ,EAC1C,IAAIC,EAASF,EAAS3N,MAAM,CAAC,SAAU8N,CAAG,CACtCrK,CAAM,EAAI,OAAOjD,KAAKsN,GAAG,CAACrK,EAAO3B,CAAC,CAClCgM,EAAM,EACNC,KAEAC,EAAoBJ,EAAS/J,MAAM,CAAC,SAAUJ,CAAM,EAAI,MAAO,CAACD,EAAoBkK,EACpFjK,EAAS,GACTwK,EAAe,SAAUrB,CAAW,CACpCsB,CAAS,EACL,OAAOnC,EAAO,SAAU7L,CAAC,EACrB,IAAIiO,EAAU,CACVjO,EAAGwN,EAAIxN,CAAC,CAAIgO,EAAYhO,EACxBC,EAAGuN,EAAIvN,CAAC,AACZ,EAOJ,MAAO,CAAEyM,CAAAA,EAAc1M,CAAAA,EAAM+I,CAAAA,AANtBvF,EAAwByK,EACnCR,IACYvJ,EAAyB+J,EACrCH,GAG2C,EAAII,OAAOC,SAAS,AAAD,CAC9D,EAAG,EAAGzB,EACV,EAEA,OAAOpM,AAA8D,EAA9DA,KAAKsN,GAAG,CAACG,EAAaJ,EAAQ,IAAKI,EAAaJ,EAAQ,GACnE,EA8cIS,qBA9bJ,SAA8BrO,CAAK,CAAE0N,CAAQ,CAAEC,CAAQ,EACnD,IAAIW,EAASZ,EAAS3N,MAAM,CAAC,SAAUuO,CAAM,CACzC9K,CAAM,EACF,IAAI+K,EAAI/K,EAAO3B,CAAC,CAAGgJ,EAAmC7K,EAC1DwD,GACA,OAAO,AAAC+K,GAAKD,EAAUC,EAAID,CAC/B,EAAGH,OAAOC,SAAS,EAMnB,OALST,EAAS5N,MAAM,CAAC,SAAUuO,CAAM,CAAE9K,CAAM,EAC7C,IAAI+K,EAAI1D,EAAmC7K,EACvCwD,GAAUA,EAAO3B,CAAC,CACtB,OAAO,AAAC0M,GAAKD,EAAUC,EAAID,CAC/B,EAAGA,EAEP,EAkbI1C,MAAOA,EACP4C,iBApXJ,SAA0BpD,CAAS,EAC/B,IAAIqD,EAAiB,EAAE,CACnBC,EAAmB,CAAC,EAExBtD,EACKxH,MAAM,CAAC,SAAU0H,CAAQ,EAAI,OAAQA,AAAyB,IAAzBA,EAASC,IAAI,CAACpL,MAAM,AAAS,GAClEqL,OAAO,CAAC,SAAUF,CAAQ,EAC3BoD,CAAgB,CAACpD,EAASC,IAAI,CAAC,EAAE,CAAC,CAAGD,EAAS9H,MAAM,CAAG,CACnDvD,EAAGkO,OAAOC,SAAS,CACnBlO,EAAGiO,OAAOC,SAAS,CACnBvM,EAAGtB,KAAKC,IAAI,CAAC8K,EAASrC,KAAK,CAAG1I,KAAKwB,EAAE,CACzC,CACJ,GAUA,IAAI4M,EAAc,SAAUlD,CAAG,CAC3BmD,CAAW,EACP,IAAIpL,EAASiI,EAAIjI,MAAM,CACvBA,IACAA,EAAOvD,CAAC,CAAG2O,EAAY3O,CAAC,CACxBuD,EAAOtD,CAAC,CAAG0O,EAAY1O,CAAC,EAE5BuO,EAAehJ,IAAI,CAACgG,EACxB,EAEAN,EAAiBC,GAEjB,IAAIyD,EAAkBzD,EACbxH,MAAM,CAACgI,GACPlH,IAAI,CAACyI,GAEdwB,EAAYE,EAAgBC,KAAK,GAAI,CAAE7O,EAAG,EAAGC,EAAG,CAAE,GAiFlD,IAAK,IAhFD6O,EAAuB3D,EAAUxH,MAAM,CAAC,SAAU3D,CAAC,EAAI,OAAQA,AAAkB,IAAlBA,EAAEsL,IAAI,CAACpL,MAAM,AAAS,GAgFhF6O,EAAK,EAAwCA,EAAKC,AAAtBJ,EAAwC1O,MAAM,CAAE6O,KAEjFE,AAjFU,SAAUzD,CAAG,EACnB,IAAIjI,EAASiI,EAAIjI,MAAM,CAC3B,GAAKA,GAGL,IAAIoK,EAASpK,EAAO3B,CAAC,CACjB8J,EAAcF,EAAIE,WAAW,CAsEjCgD,EAAYlD,EAAK0D,AArEEV,EAAe1O,MAAM,CAAC,SAAUqP,CAAI,CACnDC,CAAa,CACbtO,CAAC,EACG,IAAIuO,EAAmBD,EAAc7L,MAAM,CAC/C,GAAI,CAAC8L,GAAoB,CAAC3D,EACtB,OAAOyD,EAsBX,IAAK,IApBDtL,EAAU6H,CAAW,CAAC0D,EAAc9D,IAAI,CAAC,EAAE,CAAC,CAG5CgE,EAAW7C,EAAmCkB,EAC9C0B,EAAiBzN,CAAC,CAClBiC,GAGA0L,EAAsB,CAClB,CAAEvP,EAAGqP,EAAiBrP,CAAC,CAAGsP,EAC9BrP,EAAGoP,EAAiBpP,CAAC,AAAC,EAClB,CAAED,EAAGqP,EAAiBrP,CAAC,CAAGsP,EAC9BrP,EAAGoP,EAAiBpP,CAAC,AAAC,EAClB,CAAED,EAAGqP,EAAiBrP,CAAC,CAC3BC,EAAGoP,EAAiBpP,CAAC,CAAGqP,CAAS,EAC7B,CAAEtP,EAAGqP,EAAiBrP,CAAC,CAC3BC,EAAGoP,EAAiBpP,CAAC,CAAGqP,CAAS,EAChC,CAGIP,EAAK,EAAGnO,EAAK4N,EAAevL,KAAK,CAACnC,EAAI,GAAIiO,EAAKnO,EAAGV,MAAM,CAAE6O,IAAM,CACrE,IAAIS,EAAiB5O,CAAE,CAACmO,EAAG,CACvBU,EAAoBD,EAAejM,MAAM,CACzCmM,EAAWhE,CAAW,CAAC8D,EAAelE,IAAI,CAAC,EAAE,CAAC,CAClD,GAAKmE,GAGL,IAAIE,EAAYlD,EAAmCkB,EAC/C8B,EAAkB7N,CAAC,CACnB8N,GAEJH,EAAsBA,EAAoBpM,MAAM,CAACjB,EAA4B,CACzElC,EAAGqP,EAAiBrP,CAAC,CACrBC,EAAGoP,EAAiBpP,CAAC,CACrB2B,EAAG0N,CACP,EAAG,CACCtP,EAAGyP,EAAkBzP,CAAC,CACtBC,EAAGwP,EAAkBxP,CAAC,CACtB2B,EAAG+N,CACP,IACJ,CAEA,IAAK,IAAIzO,EAAK,EAAG0O,EAAwBL,EAAqBrO,EAAK0O,EAAsB1P,MAAM,CAAEgB,IAAM,CACnG,IAAIyN,EAAciB,CAAqB,CAAC1O,EAAG,AAC3CqC,CAAAA,EAAOvD,CAAC,CAAG2O,EAAY3O,CAAC,CACxBuD,EAAOtD,CAAC,CAAG0O,EAAY1O,CAAC,CAExB,IAAI4P,EAAchD,EAAK4B,EACnBK,GAEAe,EAAcV,EAAKtC,IAAI,GACvBsC,EAAKtC,IAAI,CAAGgD,EACZV,EAAKR,WAAW,CAAGA,EAE3B,CAEA,OAAOQ,CACX,EAAG,CACCtC,KAAMqB,OAAOC,SAAS,CACtBQ,YAAa,KAAK,CACtB,GAE8BA,WAAW,EAC7C,EAGcK,AADuBJ,CACN,CAACG,EAAG,EAInC,OAAON,CACX,EAwPI5B,KAAMA,EACNiD,WA5MJ,SAAoBC,CAAE,CAAEC,CAAO,EAmE3B,IAAK,IAjEDC,EAAW,SAAUzR,CAAC,CACtBkG,CAAC,EACG,OAAOlG,EAAE0R,EAAE,CAAGxL,EAAEwL,EAAE,AAC1B,EAQIC,EAAc,SAAUC,CAAO,CAC/BC,CAAE,CACFC,CAAO,CACPC,CAAE,EAAI,OAAOF,EAAGjN,GAAG,CAAC,SAAUpD,CAAC,CAC/Bc,CAAC,EAAI,OAAOsP,EAAUpQ,EAAIsQ,EAAUC,CAAE,CAACzP,EAAE,AAAE,EAAI,EAmB/C0P,EAAgB,SAAUhE,CAAO,CACjCzM,CAAK,EAGL,OAFIA,EAAMmQ,EAAE,CAAGH,EAAGhQ,GAClByM,CAAO,CAACA,EAAQtM,MAAM,CAAG,EAAE,CAAGH,EACvByM,CACX,EACIiE,EAAgB,SAAUjE,CAAO,EAC7B,IAAI2C,EAAO3C,CAAO,CAAC,EAAE,CACzB,OAAOA,EAAQpJ,GAAG,CAAC,SAAUrD,CAAK,EAC9B,IAAIsD,EAAI8M,EAAY,GAChBhB,EArCF,GAuCEpP,GAEJ,OADAsD,EAAE6M,EAAE,CAAGH,EAAG1M,GACHA,CACX,EACJ,EACIqN,EAAW,SAAUC,CAAQ,CAC7BC,CAAK,CACLpS,CAAC,CACDkG,CAAC,EACG,IAAI3E,EAAQoQ,EAAY3R,EAC5BmS,EACAjM,EACAkM,GAEA,OADA7Q,EAAMmQ,EAAE,CAAGH,EAAGhQ,GACPA,CACX,EAEIyM,EAAUqE,AA5CG,SAAUb,CAAO,EAC1B,IAAI5R,EAAI4R,EAAQ9P,MAAM,CAC1BsM,EAAU,AAAIpE,MAAMhK,EAAI,EAExBoO,CAAAA,CAAO,CAAC,EAAE,CAAGwD,EACbxD,CAAO,CAAC,EAAE,CAAC0D,EAAE,CAAGH,EAAGC,GAEnB,IAAK,IAAIlP,EAAI,EAAGA,EAAI1C,EAAG,EAAE0C,EAAG,CACxB,IAAIf,EAAQiQ,EAAQ/M,KAAK,EACzBlD,CAAAA,CAAK,CAACe,EAAE,CAAGf,CAAK,CAACe,EAAE,CAAGf,AAAW,KAAXA,CAAK,CAACe,EAAE,CAAU,KACxCf,EAAMmQ,EAAE,CAAGH,EAAGhQ,GACdyM,CAAO,CAAC1L,EAAI,EAAE,CAAGf,CACrB,CACA,OAAOyM,CACX,EA8ByBwD,GAEhBlP,EAAI,EAAGA,EAlEI,IAkEeA,IAAK,CAEpC0L,EAAQ/H,IAAI,CAACwL,GAEb,IAAIW,EAAQpE,CAAO,CAACA,EAAQtM,MAAM,CAAG,EAAE,CACnCyQ,EAAWpE,EAAYC,GAEvBsE,EAAYJ,EAASC,EACrBC,EAAO,EAAU,IACrB,GAAIE,EAAUZ,EAAE,CAAG1D,CAAO,CAAC,EAAE,CAAC0D,EAAE,CAAE,CAE9B,IAAIa,EAAWL,EAASC,EACpBC,EAAO,EAAU,IACrBpE,EAAUgE,EAAchE,EAAS,AAACuE,EAASb,EAAE,CAAGY,EAAUZ,EAAE,CAAIa,EAAWD,EAC/E,MACK,GAAIA,EAAUZ,EAAE,EAAI1D,CAAO,CAACA,EAAQtM,MAAM,CAAG,EAAE,CAACgQ,EAAE,CAAE,CAGrD,IAAIc,EAAa,KAAK,EAMdxE,EALJsE,EAAUZ,EAAE,CAAGU,EAAMV,EAAE,CAInBc,AADJA,CAAAA,EAAaN,EAASC,EAAUC,EAAO,GAAU,GAAK,EACvCV,EAAE,CAAGU,EAAMV,EAAE,CACdM,EAAchE,EAASwE,GAGvBP,EAAcjE,GAMxBwE,AADJA,CAAAA,EAAaN,EAASC,EAAUC,EAAO,IA3F3CK,IA2F2D,EACxCf,EAAE,CAAGY,EAAUZ,EAAE,CAClBM,EAAchE,EAASwE,GAGvBP,EAAcjE,EAGpC,MAEIA,EAAUgE,EAAchE,EAASsE,EAEzC,CACA,OAAOtE,CAAO,CAAC,EAAE,AACrB,EA4FI0E,gBAlFJ,SAAyBtM,CAAI,CAAEuM,CAAQ,EACnC,IAAI5S,EAAIuM,EAAQlG,GAAQA,EAAO,EAAE,CAC7BwM,EAAY7S,EACPuB,MAAM,CAAC,SAAUiD,CAAG,CACzB/C,CAAC,MApTWA,EAyTZ,OAHQA,EAAEsL,IAAI,EArTVqB,EADQ3M,EAsTiBA,IArTH2L,EAAM3L,IAAMA,EAAEgJ,KAAK,CAAG,GAqTbjG,AAA2B,KAA3BA,EAAIiC,OAAO,CAAChF,EAAEsL,IAAI,CAAC,EAAE,GAChDvI,EAAIyC,IAAI,CAACxF,EAAEsL,IAAI,CAAC,EAAE,EAEnBvI,CACX,EAAG,EAAE,EACA0B,IAAI,GACL4M,EAAoB9S,EAAEuB,MAAM,CAAC,SAAUuR,CAAiB,CACxDhG,CAAQ,EAWR,OAVQA,EAASC,IAAI,EACbqB,EAAgBtB,IAChB,CAACA,EAASC,IAAI,CAAC7H,IAAI,CAAC,SAAU+H,CAAG,EAC7B,OAAO4F,AAA2B,KAA3BA,EAAUpM,OAAO,CAACwG,EACjC,IACA6F,CAAAA,CAAiB,CAAChG,EAASC,IAAI,CAAC7G,IAAI,GAAG6M,IAAI,CAACH,GAAU,CAAG,CACrD7F,KAAMD,EAASC,IAAI,CACnBtC,MAAOqC,EAASrC,KAAK,EAAI,CAC7B,CAAA,EAEGqI,CACX,EAAG,CAAC,GAiBJ,OAhBAD,EAAUtR,MAAM,CAAC,SAAUyR,CAAY,CAAE/F,CAAG,CAAE1K,CAAC,CAAEiC,CAAG,EAKhD,OAHAyO,AADgBzO,EAAIE,KAAK,CAACnC,EAAI,GACpByK,OAAO,CAAC,SAAUkG,CAAI,EAC5BF,EAAa/L,IAAI,CAACgG,EAAM2F,EAAWM,EACvC,GACOF,CACX,EAAG,EAAE,EAAEhG,OAAO,CAAC,SAAUmG,CAAW,EAChC,GAAI,CAACL,CAAiB,CAACK,EAAY,CAAE,CACjC,IAAI1S,EAAM,CACFsM,KAAMoG,EAAYC,KAAK,CAACR,GACxBnI,MAAO,CACX,CACJqI,CAAAA,CAAiB,CAACK,EAAY,CAAG1S,CACrC,CACJ,GAEOJ,OACFkJ,IAAI,CAACuJ,GACLjO,GAAG,CAAC,SAAUwO,CAAE,EACjB,OAAOP,CAAiB,CAACO,EAAG,AAChC,EACJ,EAoCI1E,mBAAoBA,CACxB,EAqBI2E,GACIjU,EAAgB,SAAUW,CAAC,CAC3BmG,CAAC,EAOD,MAAO9G,AANHA,CAAAA,EAAgBgB,OAAOsJ,cAAc,EAChC,CAAA,CAAEC,UAAW,EAAE,AAAC,CAAA,YAAaC,OAAS,SAAU7J,CAAC,CAC1DmG,CAAC,EAAInG,EAAE4J,SAAS,CAAGzD,CAAG,GACd,SAAUnG,CAAC,CACnBmG,CAAC,EAAI,IAAK,IAAIrB,KAAKqB,EAAO9F,OAAOM,SAAS,CAACC,cAAc,CAACC,IAAI,CAACsF,EAC/DrB,IAAI9E,CAAAA,CAAC,CAAC8E,EAAE,CAAGqB,CAAC,CAACrB,EAAE,AAAD,CAAG,CAAA,EACI9E,EAAGmG,EAC5B,EACO,SAAUnG,CAAC,CAAEmG,CAAC,EACjB,GAAI,AAAa,YAAb,OAAOA,GAAoBA,AAAM,OAANA,EAC3B,MAAM,AAAIoN,UAAU,uBAAyBC,OAAOrN,GAAK,iCAE7D,SAAS2D,IAAO,IAAI,CAACC,WAAW,CAAG/J,CAAG,CADtCX,EAAcW,EAAGmG,GAEjBnG,EAAEW,SAAS,CAAGwF,AAAM,OAANA,EAAa9F,OAAO2J,MAAM,CAAC7D,GAAM2D,CAAAA,EAAGnJ,SAAS,CAAGwF,EAAExF,SAAS,CAAE,IAAImJ,CAAG,CACtF,GAGA2J,EAAa,AAACxS,IAA+EwS,UAAU,CAEvG3H,GAAQ,AAAC3K,IAAuGuS,KAAK,CAErH9N,GAAsCwB,EAAyBxB,mCAAmC,CAAET,GAAgCiC,EAAyBjC,6BAA6B,CAAEK,GAAwC4B,EAAyB5B,qCAAqC,CAAEmO,GAAqCvM,EAAyBnC,uBAAuB,CAAE2O,GAAsCxM,EAAyBzB,wBAAwB,CAGldkO,GAA+B5Q,EAA2B7B,iBAAiB,CAE3E0S,GAAgB,AAACrK,IAA2IS,WAAW,CAACC,OAAO,CAK/K4J,GAAW,AAAC9S,IAA+E8S,QAAQ,CAAEC,GAAoB,AAAC/S,IAA+EqL,MAAM,CAAE2H,GAAqB,AAAChT,IAA+EsL,OAAO,CAAE2H,GAAsB,AAACjT,IAA+EoJ,QAAQ,CAAE8J,GAAsB,AAAClT,IAA+EwL,QAAQ,CAAE2H,GAAQ,AAACnT,IAA+EmT,KAAK,CAa5nBC,GAA4B,SAAU9J,CAAM,EAE5C,SAAS8J,IACL,OAAO9J,AAAW,OAAXA,GAAmBA,EAAO7C,KAAK,CAAC,IAAI,CAAED,YAAc,IAAI,AACnE,CAkbA,OArbA6L,EAAmBe,EAAY9J,GAuB/B8J,EAAWC,gBAAgB,CAAG,SAAUpF,CAAQ,CAAEC,CAAQ,EAEtD,IAAIyB,EAAO1B,EAAS3N,MAAM,CAAC,SAAUqP,CAAI,CACrC5L,CAAM,EACF,IAAIhF,EAAIgF,EAAO3B,CAAC,CAAG,EAGvB,MAAO,CACH,CAAE5B,EAAGuD,EAAOvD,CAAC,CAAEC,EAAGsD,EAAOtD,CAAC,AAAC,EAC3B,CAAED,EAAGuD,EAAOvD,CAAC,CAAGzB,EAAG0B,EAAGsD,EAAOtD,CAAC,AAAC,EAC/B,CAAED,EAAGuD,EAAOvD,CAAC,CAAGzB,EAAG0B,EAAGsD,EAAOtD,CAAC,AAAC,EAC/B,CAAED,EAAGuD,EAAOvD,CAAC,CAAEC,EAAGsD,EAAOtD,CAAC,CAAG1B,CAAE,EAC/B,CAAEyB,EAAGuD,EAAOvD,CAAC,CAAEC,EAAGsD,EAAOtD,CAAC,CAAG1B,CAAE,EAClC,CAGIuB,MAAM,CAAC,SAAUqP,CAAI,CAAEpP,CAAK,EAC7B,IAAIsO,EAASjB,EAAegB,oBAAoB,CAACrO,EAC7C0N,EACAC,GAOJ,OAJIyB,EAAKd,MAAM,CAAGA,IACdc,EAAKpP,KAAK,CAAGA,EACboP,EAAKd,MAAM,CAAGA,GAEXc,CACX,EAAGA,EACP,EAAG,CACCpP,MAAO,KAAK,EACZsO,OAAQ,CAACH,OAAOC,SAAS,AAC7B,GAAGpO,KAAK,CAEJ+S,EAAU1F,EAAe0C,UAAU,CAAC,SAAUzM,CAAC,EAAI,MAAO,CAAE+J,EAAegB,oBAAoB,CAAC,CAAEpO,EAAGqD,CAAC,CAAC,EAAE,CACzGpD,EAAGoD,CAAC,CAAC,EAAE,AAAC,EACRoK,EACAC,EAAY,EACZ,CACIyB,EAAKnP,CAAC,CACNmP,EAAKlP,CAAC,CACT,EAqBL,OAfMiS,GAJN/C,EAAO,CACHnP,EAAG8S,CAAO,CAAC,EAAE,CACb7S,EAAG6S,CAAO,CAAC,EAAE,AACjB,EAC+CrF,IAC3C0E,GAAoChD,EAAMzB,KAItCyB,EADA1B,EAASvN,MAAM,CAAG,EACXkS,GAA6B1O,GAA8B+J,IAG3D,CACHzN,EAAGyN,CAAQ,CAAC,EAAE,CAACzN,CAAC,CAChBC,EAAGwN,CAAQ,CAAC,EAAE,CAACxN,CAAC,AACpB,GAIDkP,CACX,EAYAyD,EAAWG,cAAc,CAAG,SAAU1H,CAAQ,CAAE2H,CAAY,EACxD,IAAI1H,EAAOD,EAASC,IAAI,CAEpB1G,EAAOoO,EAAalT,MAAM,CAAC,SAAU8E,CAAI,CACzC4G,CAAG,EAGC,IAAIyH,EAAa3H,EAAKtG,OAAO,CAACwG,EAAIF,IAAI,CAAC,EAAE,EAAI,GAMjD,OAHIE,EAAIjI,MAAM,EACVqB,CAAI,CAHOqO,EAAa,WAAa,WAGvB,CAACzN,IAAI,CAACgG,EAAIjI,MAAM,EAE3BqB,CACX,EAAG,CACC6I,SAAU,EAAE,CACZC,SAAU,EAAE,AAChB,EAGA9I,CAAAA,EAAK8I,QAAQ,CAAG9I,EAAK8I,QAAQ,CAAC/J,MAAM,CAAC,SAAUuP,CAAc,EACzD,OAAOtO,EAAK6I,QAAQ,CAAChK,IAAI,CAAC,SAAU0P,CAAc,EAC9C,MAAO,CAACpP,GAAsCmP,EAAgBC,EAClE,EACJ,GAEA,IAAIC,EAAWR,EAAWC,gBAAgB,CAACjO,EAAK6I,QAAQ,CACpD7I,EAAK8I,QAAQ,EAEbtI,EAAQgI,EAAeG,aAAa,CAAC6F,EACrCxO,EAAK6I,QAAQ,CACb7I,EAAK8I,QAAQ,EACjB,MAAO,CACH0F,SAAUA,EACVhO,MAAOA,CACX,CACJ,EAaAwN,EAAWS,MAAM,CAAG,SAAUlI,CAAS,EACnC,IAAImI,EAAiB,CAAC,EAClBC,EAAuB,CAAC,EAE5B,GAAIpI,EAAUjL,MAAM,CAAG,EAGnB,IAAK,IAFDsT,EAAqBpG,EAAemB,gBAAgB,CAACpD,GACrD6H,EAAe7H,EAAUxH,MAAM,CAACyJ,EAAezB,KAAK,EAC/CoD,EAAK,EAA4BA,EAAK0E,AAAhBtI,EAA4BjL,MAAM,CAAE6O,IAAM,CACrE,IAAI1D,EAAWoI,AADYtI,CACD,CAAC4D,EAAG,CAC1BzD,EAAOD,EAASC,IAAI,CACpBsG,EAAKtG,EAAKgG,IAAI,GAEdoC,EAAQtG,EAAezB,KAAK,CAACN,GACzBmI,CAAkB,CAAC5B,EAAG,CACtBzN,GAAoCmH,EAAKlI,GAAG,CAAC,SAAUoI,CAAG,EAAI,OAAOgI,CAAkB,CAAChI,EAAI,AAAE,IAElGkI,IACAJ,CAAc,CAAC1B,EAAG,CAAG8B,EACrBH,CAAoB,CAAC3B,EAAG,CAAGgB,EAAWG,cAAc,CAAC1H,EAAU2H,GAEvE,CAEJ,MAAO,CAAEM,eAAgBA,EAAgBC,qBAAsBA,CAAqB,CACxF,EAeAX,EAAWe,QAAQ,CAAG,SAAUC,CAAW,CAAEC,CAAY,CAAEC,CAAK,EAC5D,IAAIC,EAASD,EAAME,MAAM,CAAGF,EAAMG,GAAG,CACjC7O,EAAQ0O,EAAMI,KAAK,CAAGJ,EAAMK,IAAI,CAAyGC,EAAU,AAACN,CAAAA,EAAMI,KAAK,CAAGJ,EAAMK,IAAI,AAAD,EAAK,EAAGE,EAAU,AAACP,CAAAA,EAAMG,GAAG,CAAGH,EAAME,MAAM,AAAD,EAAK,EAAGM,EAAQhU,KAAKsN,GAAG,CAAlMxI,EAAQ,EAAI,EAAIA,EAAQwO,EAAc,EAAYG,EAAS,EAAI,EAAIA,EAASF,EAAe,GAC1I,MAAO,CACHS,MAAOA,EACPC,QAASX,EAAc,EAAIQ,EAAUE,EACrCE,QAASX,EAAe,EAAIQ,EAAUC,CAC1C,CACJ,EAcA1B,EAAW6B,qBAAqB,CAAG,SAAUX,CAAK,CAAEvQ,CAAM,EACtD,IAAI4Q,EAAO5Q,EAAOvD,CAAC,CAAGuD,EAAO3B,CAAC,CAC1BsS,EAAQ3Q,EAAOvD,CAAC,CAAGuD,EAAO3B,CAAC,CAC3BoS,EAASzQ,EAAOtD,CAAC,CAAGsD,EAAO3B,CAAC,CAC5BqS,EAAM1Q,EAAOtD,CAAC,CAAGsD,EAAO3B,CAAC,CAc7B,MAZI,CAAA,CAAC6Q,GAAoBqB,EAAMK,IAAI,GAAKL,EAAMK,IAAI,CAAGA,CAAG,GACpDL,CAAAA,EAAMK,IAAI,CAAGA,CAAG,EAEhB,CAAA,CAAC1B,GAAoBqB,EAAMI,KAAK,GAAKJ,EAAMI,KAAK,CAAGA,CAAI,GACvDJ,CAAAA,EAAMI,KAAK,CAAGA,CAAI,EAElB,CAAA,CAACzB,GAAoBqB,EAAMG,GAAG,GAAKH,EAAMG,GAAG,CAAGA,CAAE,GACjDH,CAAAA,EAAMG,GAAG,CAAGA,CAAE,EAEd,CAAA,CAACxB,GAAoBqB,EAAME,MAAM,GAAKF,EAAME,MAAM,CAAGA,CAAK,GAC1DF,CAAAA,EAAME,MAAM,CAAGA,CAAK,EAEjBF,CACX,EAOAlB,EAAW1T,SAAS,CAACwI,OAAO,CAAG,SAAUgN,CAAI,EACzC,GAAI,CAACA,EAiCD,IAAK,IA/BDC,EAAc3C,EAAWtL,AADhB,IAAI,CACmBG,OAAO,CAACJ,SAAS,EACjDwI,EAAU,SAAUlP,CAAK,EACrB,IAAI6U,EAAO7U,EAAMwH,SAAS,CAC9B,GAAIxH,EAAM+G,OAAO,EAAI8N,EAAM,CACvB,IAAItN,EAAO,CAAC,EACRI,EAAU,CAAC,CACXkN,CAAAA,EAAKrW,CAAC,CAEN+I,EAAKyC,OAAO,CAAG,MAIfzC,EAAK1F,CAAC,CAAG,EACT8F,EAAQ9F,CAAC,CAAGgT,EAAKhT,CAAC,EAEtB7B,EAAM+G,OAAO,CACRQ,IAAI,CAACA,GACLI,OAAO,CAACA,EAASiN,GAGlBC,EAAKrW,CAAC,EACNsW,WAAW,WACH9U,GAASA,EAAM+G,OAAO,EACtB/G,EAAM+G,OAAO,CAACY,OAAO,CAAC,CAClBqC,QAAS,CACb,EAER,EAAG4K,EAAYG,QAAQ,CAE/B,CACJ,EACS/F,EAAK,EAAGnO,EAAK8F,AAhCT,IAAI,CAgCY9G,MAAM,CAAEmP,EAAKnO,EAAGV,MAAM,CAAE6O,IAEjDE,EADYrO,CAAE,CAACmO,EAAG,CAI9B,EAKA6D,EAAW1T,SAAS,CAAC6V,UAAU,CAAG,WAS9B,IAAK,IANDpO,EAAQD,AAFC,IAAI,CAEEC,KAAK,CACpBc,EAAQf,AAHC,IAAI,CAGEe,KAAK,CACpB7H,EAAS8G,AAJA,IAAI,CAIG9G,MAAM,EAAI,EAAE,CAE5B4G,EAAWG,EAAMH,QAAQ,CAEpBuI,EAAK,EAAsBA,EAAKiG,AAAbpV,EAAsBM,MAAM,CAAE6O,IAAM,CAC5D,IAAIhP,EAAQiV,AADYpV,CACJ,CAACmP,EAAG,CACpBhI,EAAU,CACNkO,OAAQzC,GAAmBzS,EAAMuL,IAAI,EAAIvL,EAAMuL,IAAI,CAACpL,MAAM,CAAG,CACjE,EACAqH,EAAYxH,EAAMwH,SAAS,AAE1BZ,CAAAA,EAAMuO,UAAU,EACjB3C,GAAkBxL,EAASL,AAhBtB,IAAI,CAgByByO,YAAY,CAACpV,EAAOA,EAAMqV,KAAK,GAGrElP,EAA0BC,IAAI,CAACpG,EAAO,CAClC4H,MAAO,CAAC5H,EAAM+G,OAAO,CACrBT,kBAAmBkB,EACnBR,QAASA,EACTU,MAAOA,EACPjB,SAAUA,EACVU,UAAWK,GAAaA,EAAUhJ,CAAC,CAAG,OAAS,QACnD,EACJ,CACJ,EACAqU,EAAW1T,SAAS,CAACwV,IAAI,CAAG,WACxBrC,GAAcnT,SAAS,CAACwV,IAAI,CAACzO,KAAK,CAAC,IAAI,CAAED,WAEzC,OAAO,IAAI,CAAC+D,OAAO,AACvB,EAYA6I,EAAW1T,SAAS,CAACiW,YAAY,CAAG,SAAUpV,CAAK,CAAEqV,CAAK,EACtD,IACIC,EAAgB3O,AADP,IAAI,CACUG,OAAO,EAAI,CAAC,EACnCyO,EAAevV,GAASA,EAAM8G,OAAO,EAAI,CAAC,EAC1C0O,EAAe,AAACH,GAASC,EAAcnL,MAAM,CAACkL,EAAM,EAAK,CAAC,EAC1DvO,EAAU8L,GAAM0C,EAAe,CAAEhL,MAAOtK,GAASA,EAAMsK,KAAK,AAAC,EAC7DiL,EACAC,GAEJ,MAAO,CACH,KAAQlL,GAAMxD,EAAQwD,KAAK,EACtBhB,QAAQ,CAACxC,EAAQ2O,UAAU,EAC3BzW,GAAG,GAERgL,QAASlD,EAAQkD,OAAO,CACxB,OAAUlD,EAAQqC,WAAW,CAC7B,eAAgBrC,EAAQuC,WAAW,CACnC,UAAavC,EAAQsC,eAAe,AACxC,CACJ,EACAyJ,EAAW1T,SAAS,CAACuW,SAAS,CAAG,WAC7B,IAAI9O,EAAQ,IAAI,CAACA,KAAK,AACtB,CAAA,IAAI,CAAC+O,SAAS,CAACC,QAAQ,CAAG,IAAI,CAACD,SAAS,CACxC,IAAI,CAACE,cAAc,GAqBnB,IAAK,IAnBDzK,EAAYiC,EAAe8D,eAAe,CAAC,IAAI,CAACrK,OAAO,CAACjC,IAAI,CAC5DgO,EAAWzB,QAAQ,EAEnBvQ,EAAKgS,EAAWS,MAAM,CAAClI,GACvBmI,EAAiB1S,EAAG0S,cAAc,CAClCC,EAAuB3S,EAAG2S,oBAAoB,CAE9CO,EAAQlV,OAAOkJ,IAAI,CAACwL,GACf3P,MAAM,CAAC,SAAUjF,CAAG,EACrB,IAAIgV,EAAQJ,CAAc,CAAC5U,EAAI,CACnC,OAAOgV,GAASjB,GAAoBiB,EAAM9R,CAAC,CAC/C,GACK9B,MAAM,CAAC,SAAUgU,CAAK,CAAEpV,CAAG,EAAI,OAAOkU,EAAW6B,qBAAqB,CAACX,EAAOR,CAAc,CAAC5U,EAAI,CAAG,EAAG,CACxGuV,IAAK,EACLD,OAAQ,EACRG,KAAM,EACND,MAAO,CACX,GAAI2B,EAAUjD,EAAWe,QAAQ,CAAChN,EAAMmP,SAAS,CAAEnP,EAAMoP,UAAU,CAAEjC,GAAQQ,EAAQuB,EAAQvB,KAAK,CAAEC,EAAUsB,EAAQtB,OAAO,CAAEC,EAAUqB,EAAQrB,OAAO,CAE/IzF,EAAK,EAAG7N,EAAK,IAAI,CAACtB,MAAM,CAAEmP,EAAK7N,EAAGhB,MAAM,CAAE6O,IAAM,CACrD,IAAIhP,EAAQmB,CAAE,CAAC6N,EAAG,CACdzD,EAAOkH,GAAmBzS,EAAMuL,IAAI,EAAIvL,EAAMuL,IAAI,CAAG,EAAE,CACvDsG,EAAKtG,EAAKgG,IAAI,GACdoC,EAAQJ,CAAc,CAAC1B,EAAG,CAC1BoE,EAAkBzC,CAAoB,CAAC3B,EAAG,EAAI,CAAC,EAC/CqE,EAAYlW,EAAM8G,OAAO,EAAI9G,EAAM8G,OAAO,CAAC2C,UAAU,CACrDjC,EAAY,KAAK,EACjB2O,EAAiBF,EAAgB5Q,KAAK,CACtC+Q,EAAoBH,EAAgB5C,QAAQ,CAChD,GAAIM,EAAO,CACP,GAAIA,EAAM9R,CAAC,CACP2F,EAAY,CACRvH,EAAGuU,EAAUb,EAAM1T,CAAC,CAAGsU,EACvBrU,EAAGuU,EAAUd,EAAMzT,CAAC,CAAGqU,EACvB1S,EAAG8R,EAAM9R,CAAC,CAAG0S,CACjB,OAEC,GAAIZ,EAAMnV,CAAC,CAAE,CACd,IAAIA,EAAImV,EAAMnV,CAAC,CACfA,EAAEgN,OAAO,CAAC,SAAU6K,CAAG,EACfA,AAAW,MAAXA,CAAG,CAAC,EAAE,EACNA,CAAG,CAAC,EAAE,CAAG7B,EAAU6B,CAAG,CAAC,EAAE,CAAG9B,EAC5B8B,CAAG,CAAC,EAAE,CAAG5B,EAAU4B,CAAG,CAAC,EAAE,CAAG9B,GAEZ,MAAX8B,CAAG,CAAC,EAAE,GACXA,CAAG,CAAC,EAAE,CAAGA,CAAG,CAAC,EAAE,CAAG9B,EAClB8B,CAAG,CAAC,EAAE,CAAGA,CAAG,CAAC,EAAE,CAAG9B,EAClB8B,CAAG,CAAC,EAAE,CAAG7B,EAAU6B,CAAG,CAAC,EAAE,CAAG9B,EAC5B8B,CAAG,CAAC,EAAE,CAAG5B,EAAU4B,CAAG,CAAC,EAAE,CAAG9B,EAEpC,GACA/M,EAAY,CAAEhJ,EAAGA,CAAE,CACvB,CAEI4X,GACAA,EAAkBnW,CAAC,CAAGuU,EAAU4B,EAAkBnW,CAAC,CAAGsU,EACtD6B,EAAkBlW,CAAC,CAAGuU,EAAU2B,EAAkBlW,CAAC,CAAGqU,GAGtD6B,EAAoB,CAAC,EAErB1D,GAAoByD,IACpBA,CAAAA,EAAiB5V,KAAKmB,KAAK,CAACyU,EAAiB5B,EAAK,CAE1D,CACAvU,EAAMwH,SAAS,CAAGA,EAEd4O,GAAqB5O,IACrBxH,EAAMsW,KAAK,CAAGF,EAAkBnW,CAAC,CACjCD,EAAMuW,KAAK,CAAGH,EAAkBlW,CAAC,EAGjCiW,GAAkB3O,GAClBxH,CAAAA,EAAMkW,SAAS,CAAGtD,GAAM,CAAA,EAAM,CAC1B4D,MAAO,CACHnR,MAAO8Q,CACX,CACJ,EAAGxD,GAAoBuD,EAAW,CAAA,GAAQA,EAAY,KAAK,EAAC,EAGhElW,EAAM6J,IAAI,CAAG7J,EAAM8G,OAAO,CAAC+C,IAAI,EAAI0B,EAAKgG,IAAI,CAAC,IACjD,CACJ,EAMAsB,EAAWzB,QAAQ,CAAG,mBACtByB,EAAW4D,cAAc,CAAG7D,GAAMN,GAAcmE,cAAc,CAAEvN,GACzD2J,CACX,EAAEP,IACFE,GAAkBK,GAAW1T,SAAS,CAAE,CACpCuX,UAAW,EAAE,CACbC,YAAa,CAAA,EACbC,YAAa,CAAA,EACbC,cAAe,CAAC,QAAQ,CACxBjO,WAv4C+CE,EAw4C/CgO,MAAOzJ,CACX,GAEAkF,GAASM,GAAY,kBAAmB,SAAUkE,CAAC,EAC/C,IACI5M,EAASrD,AADCiQ,EAAEjQ,OAAO,CACFqD,MAAM,EAAI,CAAC,EAChC,GAAI,IAAI,CAAC6M,EAAE,CAAC,QAER,IAAK,IAAIhI,EAAK,EAAGnO,EAAKhC,OAAOkJ,IAAI,CAACoC,GAAS6E,EAAKnO,EAAGV,MAAM,CAAE6O,IAEvD7E,CAAM,CADMtJ,CAAE,CAACmO,EAAG,CACL,CAACiI,IAAI,CAAG,CAAA,CAGjC,GACAhP,IAA0IiP,kBAAkB,CAAC,OAAQrE,IAaxI,IAAItT,GAAaE,IAGpC,OADYH,EAAoB,OAAU,AAE3C,GAET"}
Hacked By AnonymousFox1.0, Coded By AnonymousFox