{"version":3,"file":"static/chunks/2279-77748305e0db4230.js","mappings":"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","sources":["webpack://_N_E/./node_modules/chart.js/dist/chunks/helpers.segment.js","webpack://_N_E/./node_modules/react-chartjs-2/dist/index.js","webpack://_N_E/./node_modules/@swc/helpers/src/_sliced_to_array.mjs","webpack://_N_E/./node_modules/@swc/helpers/src/_array_with_holes.mjs","webpack://_N_E/./node_modules/@swc/helpers/src/_non_iterable_rest.mjs"],"sourcesContent":["/*!\n * Chart.js v3.7.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\nconst requestAnimFrame = (function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}());\nfunction throttled(fn, thisArg, updateFn) {\n const updateArgs = updateFn || ((args) => Array.prototype.slice.call(args));\n let ticking = false;\n let args = [];\n return function(...rest) {\n args = updateArgs(rest);\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, () => {\n ticking = false;\n fn.apply(thisArg, args);\n });\n }\n };\n}\nfunction debounce(fn, delay) {\n let timeout;\n return function(...args) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\nconst _toLeftRightCenter = (align) => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\nconst _alignStartEnd = (align, start, end) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\nconst _textX = (align, left, right, rtl) => {\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\n\nfunction noop() {}\nconst uid = (function() {\n let id = 0;\n return function() {\n return id++;\n };\n}());\nfunction isNullOrUndef(value) {\n return value === null || typeof value === 'undefined';\n}\nfunction isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') {\n return true;\n }\n return false;\n}\nfunction isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\nconst isNumberFinite = (value) => (typeof value === 'number' || value instanceof Number) && isFinite(+value);\nfunction finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\nfunction valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100\n : value / dimension;\nconst toDimension = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100 * dimension\n : +value;\nfunction callback(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n let i, len, keys;\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for (i = len - 1; i >= 0; i--) {\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\nfunction _elementsEqual(a0, a1) {\n let i, ilen, v0, v1;\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n return true;\n}\nfunction clone$1(source) {\n if (isArray(source)) {\n return source.map(clone$1);\n }\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n for (; k < klen; ++k) {\n target[keys[k]] = clone$1(source[keys[k]]);\n }\n return target;\n }\n return source;\n}\nfunction isValidKey(key) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\nfunction _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n merge(tval, sval, options);\n } else {\n target[key] = clone$1(sval);\n }\n}\nfunction merge(target, source, options) {\n const sources = isArray(source) ? source : [source];\n const ilen = sources.length;\n if (!isObject(target)) {\n return target;\n }\n options = options || {};\n const merger = options.merger || _merger;\n for (let i = 0; i < ilen; ++i) {\n source = sources[i];\n if (!isObject(source)) {\n continue;\n }\n const keys = Object.keys(source);\n for (let k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, source, options);\n }\n }\n return target;\n}\nfunction mergeIf(target, source) {\n return merge(target, source, {merger: _mergerIf});\n}\nfunction _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone$1(sval);\n }\n}\nfunction _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous +\n\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\nconst emptyString = '';\nconst dot = '.';\nfunction indexOfDotOrLength(key, start) {\n const idx = key.indexOf(dot, start);\n return idx === -1 ? key.length : idx;\n}\nfunction resolveObjectKey(obj, key) {\n if (key === emptyString) {\n return obj;\n }\n let pos = 0;\n let idx = indexOfDotOrLength(key, pos);\n while (obj && idx > pos) {\n obj = obj[key.substr(pos, idx - pos)];\n pos = idx + 1;\n idx = indexOfDotOrLength(key, pos);\n }\n return obj;\n}\nfunction _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = (value) => typeof value !== 'undefined';\nconst isFunction = (value) => typeof value === 'function';\nconst setsEqual = (a, b) => {\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n};\nfunction _isClickEvent(e) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\nconst PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction niceNum(range) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\nfunction _factorize(value) {\n const result = [];\n const sqrt = Math.sqrt(value);\n let i;\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) {\n result.push(sqrt);\n }\n result.sort((a, b) => a - b).pop();\n return result;\n}\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\nfunction almostWhole(x, epsilon) {\n const rounded = Math.round(x);\n return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\nfunction _setMinAndMaxByKey(array, target, property) {\n let i, ilen, value;\n for (i = 0, ilen = array.length; i < ilen; i++) {\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\nfunction toRadians(degrees) {\n return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n return radians * (180 / PI);\n}\nfunction _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n return p;\n}\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n if (angle < (-0.5 * PI)) {\n angle += TAU;\n }\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\nfunction distanceBetweenPoints(pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\nfunction _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\nfunction _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\nfunction _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || (sameAngleIsFullCircle && s === e)\n || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\nfunction _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\nfunction _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\nfunction _isBetween(value, start, end, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n\nconst atEdge = (t) => t === 0 || t === 1;\nconst elasticIn = (t, s, p) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\nconst effects = {\n linear: t => t,\n easeInQuad: t => t * t,\n easeOutQuad: t => -t * (t - 2),\n easeInOutQuad: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t\n : -0.5 * ((--t) * (t - 2) - 1),\n easeInCubic: t => t * t * t,\n easeOutCubic: t => (t -= 1) * t * t + 1,\n easeInOutCubic: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t\n : 0.5 * ((t -= 2) * t * t + 2),\n easeInQuart: t => t * t * t * t,\n easeOutQuart: t => -((t -= 1) * t * t * t - 1),\n easeInOutQuart: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t\n : -0.5 * ((t -= 2) * t * t * t - 2),\n easeInQuint: t => t * t * t * t * t,\n easeOutQuint: t => (t -= 1) * t * t * t * t + 1,\n easeInOutQuint: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t * t\n : 0.5 * ((t -= 2) * t * t * t * t + 2),\n easeInSine: t => -Math.cos(t * HALF_PI) + 1,\n easeOutSine: t => Math.sin(t * HALF_PI),\n easeInOutSine: t => -0.5 * (Math.cos(PI * t) - 1),\n easeInExpo: t => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)),\n easeOutExpo: t => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1,\n easeInOutExpo: t => atEdge(t) ? t : t < 0.5\n ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n easeInCirc: t => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1),\n easeOutCirc: t => Math.sqrt(1 - (t -= 1) * t),\n easeInOutCirc: t => ((t /= 0.5) < 1)\n ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n easeInElastic: t => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n easeOutElastic: t => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n easeInOutElastic(t) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t :\n t < 0.5\n ? 0.5 * elasticIn(t * 2, s, p)\n : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n easeInBack(t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n easeOutBack(t) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n easeInOutBack(t) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n },\n easeInBounce: t => 1 - effects.easeOutBounce(1 - t),\n easeOutBounce(t) {\n const m = 7.5625;\n const d = 2.75;\n if (t < (1 / d)) {\n return m * t * t;\n }\n if (t < (2 / d)) {\n return m * (t -= (1.5 / d)) * t + 0.75;\n }\n if (t < (2.5 / d)) {\n return m * (t -= (2.25 / d)) * t + 0.9375;\n }\n return m * (t -= (2.625 / d)) * t + 0.984375;\n },\n easeInOutBounce: t => (t < 0.5)\n ? effects.easeInBounce(t * 2) * 0.5\n : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n};\n\n/*!\n * @kurkle/color v0.1.9\n * https://github.com/kurkle/color#readme\n * (c) 2020 Jukka Kurkela\n * Released under the MIT License\n */\nconst map = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = '0123456789ABCDEF';\nconst h1 = (b) => hex[b & 0xF];\nconst h2 = (b) => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = (b) => (((b & 0xF0) >> 4) === (b & 0xF));\nfunction isShort(v) {\n\treturn eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\n}\nfunction hexParse(str) {\n\tvar len = str.length;\n\tvar ret;\n\tif (str[0] === '#') {\n\t\tif (len === 4 || len === 5) {\n\t\t\tret = {\n\t\t\t\tr: 255 & map[str[1]] * 17,\n\t\t\t\tg: 255 & map[str[2]] * 17,\n\t\t\t\tb: 255 & map[str[3]] * 17,\n\t\t\t\ta: len === 5 ? map[str[4]] * 17 : 255\n\t\t\t};\n\t\t} else if (len === 7 || len === 9) {\n\t\t\tret = {\n\t\t\t\tr: map[str[1]] << 4 | map[str[2]],\n\t\t\t\tg: map[str[3]] << 4 | map[str[4]],\n\t\t\t\tb: map[str[5]] << 4 | map[str[6]],\n\t\t\t\ta: len === 9 ? (map[str[7]] << 4 | map[str[8]]) : 255\n\t\t\t};\n\t\t}\n\t}\n\treturn ret;\n}\nfunction hexString(v) {\n\tvar f = isShort(v) ? h1 : h2;\n\treturn v\n\t\t? '#' + f(v.r) + f(v.g) + f(v.b) + (v.a < 255 ? f(v.a) : '')\n\t\t: v;\n}\nfunction round(v) {\n\treturn v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n\treturn lim(round(v * 2.55), 0, 255);\n}\nfunction n2b(v) {\n\treturn lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n\treturn lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n\treturn lim(round(v * 100), 0, 100);\n}\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n\tconst m = RGB_RE.exec(str);\n\tlet a = 255;\n\tlet r, g, b;\n\tif (!m) {\n\t\treturn;\n\t}\n\tif (m[7] !== r) {\n\t\tconst v = +m[7];\n\t\ta = 255 & (m[8] ? p2b(v) : v * 255);\n\t}\n\tr = +m[1];\n\tg = +m[3];\n\tb = +m[5];\n\tr = 255 & (m[2] ? p2b(r) : r);\n\tg = 255 & (m[4] ? p2b(g) : g);\n\tb = 255 & (m[6] ? p2b(b) : b);\n\treturn {\n\t\tr: r,\n\t\tg: g,\n\t\tb: b,\n\t\ta: a\n\t};\n}\nfunction rgbString(v) {\n\treturn v && (\n\t\tv.a < 255\n\t\t\t? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n\t\t\t: `rgb(${v.r}, ${v.g}, ${v.b})`\n\t);\n}\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n\tconst a = s * Math.min(l, 1 - l);\n\tconst f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n\treturn [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n\tconst f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n\treturn [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n\tconst rgb = hsl2rgbn(h, 1, 0.5);\n\tlet i;\n\tif (w + b > 1) {\n\t\ti = 1 / (w + b);\n\t\tw *= i;\n\t\tb *= i;\n\t}\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] *= 1 - w - b;\n\t\trgb[i] += w;\n\t}\n\treturn rgb;\n}\nfunction rgb2hsl(v) {\n\tconst range = 255;\n\tconst r = v.r / range;\n\tconst g = v.g / range;\n\tconst b = v.b / range;\n\tconst max = Math.max(r, g, b);\n\tconst min = Math.min(r, g, b);\n\tconst l = (max + min) / 2;\n\tlet h, s, d;\n\tif (max !== min) {\n\t\td = max - min;\n\t\ts = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\t\th = max === r\n\t\t\t? ((g - b) / d) + (g < b ? 6 : 0)\n\t\t\t: max === g\n\t\t\t\t? (b - r) / d + 2\n\t\t\t\t: (r - g) / d + 4;\n\t\th = h * 60 + 0.5;\n\t}\n\treturn [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n\treturn (\n\t\tArray.isArray(a)\n\t\t\t? f(a[0], a[1], a[2])\n\t\t\t: f(a, b, c)\n\t).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n\treturn calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n\treturn calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n\treturn calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n\treturn (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n\tconst m = HUE_RE.exec(str);\n\tlet a = 255;\n\tlet v;\n\tif (!m) {\n\t\treturn;\n\t}\n\tif (m[5] !== v) {\n\t\ta = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n\t}\n\tconst h = hue(+m[2]);\n\tconst p1 = +m[3] / 100;\n\tconst p2 = +m[4] / 100;\n\tif (m[1] === 'hwb') {\n\t\tv = hwb2rgb(h, p1, p2);\n\t} else if (m[1] === 'hsv') {\n\t\tv = hsv2rgb(h, p1, p2);\n\t} else {\n\t\tv = hsl2rgb(h, p1, p2);\n\t}\n\treturn {\n\t\tr: v[0],\n\t\tg: v[1],\n\t\tb: v[2],\n\t\ta: a\n\t};\n}\nfunction rotate(v, deg) {\n\tvar h = rgb2hsl(v);\n\th[0] = hue(h[0] + deg);\n\th = hsl2rgb(h);\n\tv.r = h[0];\n\tv.g = h[1];\n\tv.b = h[2];\n}\nfunction hslString(v) {\n\tif (!v) {\n\t\treturn;\n\t}\n\tconst a = rgb2hsl(v);\n\tconst h = a[0];\n\tconst s = n2p(a[1]);\n\tconst l = n2p(a[2]);\n\treturn v.a < 255\n\t\t? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n\t\t: `hsl(${h}, ${s}%, ${l}%)`;\n}\nconst map$1 = {\n\tx: 'dark',\n\tZ: 'light',\n\tY: 're',\n\tX: 'blu',\n\tW: 'gr',\n\tV: 'medium',\n\tU: 'slate',\n\tA: 'ee',\n\tT: 'ol',\n\tS: 'or',\n\tB: 'ra',\n\tC: 'lateg',\n\tD: 'ights',\n\tR: 'in',\n\tQ: 'turquois',\n\tE: 'hi',\n\tP: 'ro',\n\tO: 'al',\n\tN: 'le',\n\tM: 'de',\n\tL: 'yello',\n\tF: 'en',\n\tK: 'ch',\n\tG: 'arks',\n\tH: 'ea',\n\tI: 'ightg',\n\tJ: 'wh'\n};\nconst names = {\n\tOiceXe: 'f0f8ff',\n\tantiquewEte: 'faebd7',\n\taqua: 'ffff',\n\taquamarRe: '7fffd4',\n\tazuY: 'f0ffff',\n\tbeige: 'f5f5dc',\n\tbisque: 'ffe4c4',\n\tblack: '0',\n\tblanKedOmond: 'ffebcd',\n\tXe: 'ff',\n\tXeviTet: '8a2be2',\n\tbPwn: 'a52a2a',\n\tburlywood: 'deb887',\n\tcaMtXe: '5f9ea0',\n\tKartYuse: '7fff00',\n\tKocTate: 'd2691e',\n\tcSO: 'ff7f50',\n\tcSnflowerXe: '6495ed',\n\tcSnsilk: 'fff8dc',\n\tcrimson: 'dc143c',\n\tcyan: 'ffff',\n\txXe: '8b',\n\txcyan: '8b8b',\n\txgTMnPd: 'b8860b',\n\txWay: 'a9a9a9',\n\txgYF: '6400',\n\txgYy: 'a9a9a9',\n\txkhaki: 'bdb76b',\n\txmagFta: '8b008b',\n\txTivegYF: '556b2f',\n\txSange: 'ff8c00',\n\txScEd: '9932cc',\n\txYd: '8b0000',\n\txsOmon: 'e9967a',\n\txsHgYF: '8fbc8f',\n\txUXe: '483d8b',\n\txUWay: '2f4f4f',\n\txUgYy: '2f4f4f',\n\txQe: 'ced1',\n\txviTet: '9400d3',\n\tdAppRk: 'ff1493',\n\tdApskyXe: 'bfff',\n\tdimWay: '696969',\n\tdimgYy: '696969',\n\tdodgerXe: '1e90ff',\n\tfiYbrick: 'b22222',\n\tflSOwEte: 'fffaf0',\n\tfoYstWAn: '228b22',\n\tfuKsia: 'ff00ff',\n\tgaRsbSo: 'dcdcdc',\n\tghostwEte: 'f8f8ff',\n\tgTd: 'ffd700',\n\tgTMnPd: 'daa520',\n\tWay: '808080',\n\tgYF: '8000',\n\tgYFLw: 'adff2f',\n\tgYy: '808080',\n\thoneyMw: 'f0fff0',\n\thotpRk: 'ff69b4',\n\tRdianYd: 'cd5c5c',\n\tRdigo: '4b0082',\n\tivSy: 'fffff0',\n\tkhaki: 'f0e68c',\n\tlavFMr: 'e6e6fa',\n\tlavFMrXsh: 'fff0f5',\n\tlawngYF: '7cfc00',\n\tNmoncEffon: 'fffacd',\n\tZXe: 'add8e6',\n\tZcSO: 'f08080',\n\tZcyan: 'e0ffff',\n\tZgTMnPdLw: 'fafad2',\n\tZWay: 'd3d3d3',\n\tZgYF: '90ee90',\n\tZgYy: 'd3d3d3',\n\tZpRk: 'ffb6c1',\n\tZsOmon: 'ffa07a',\n\tZsHgYF: '20b2aa',\n\tZskyXe: '87cefa',\n\tZUWay: '778899',\n\tZUgYy: '778899',\n\tZstAlXe: 'b0c4de',\n\tZLw: 'ffffe0',\n\tlime: 'ff00',\n\tlimegYF: '32cd32',\n\tlRF: 'faf0e6',\n\tmagFta: 'ff00ff',\n\tmaPon: '800000',\n\tVaquamarRe: '66cdaa',\n\tVXe: 'cd',\n\tVScEd: 'ba55d3',\n\tVpurpN: '9370db',\n\tVsHgYF: '3cb371',\n\tVUXe: '7b68ee',\n\tVsprRggYF: 'fa9a',\n\tVQe: '48d1cc',\n\tVviTetYd: 'c71585',\n\tmidnightXe: '191970',\n\tmRtcYam: 'f5fffa',\n\tmistyPse: 'ffe4e1',\n\tmoccasR: 'ffe4b5',\n\tnavajowEte: 'ffdead',\n\tnavy: '80',\n\tTdlace: 'fdf5e6',\n\tTive: '808000',\n\tTivedBb: '6b8e23',\n\tSange: 'ffa500',\n\tSangeYd: 'ff4500',\n\tScEd: 'da70d6',\n\tpOegTMnPd: 'eee8aa',\n\tpOegYF: '98fb98',\n\tpOeQe: 'afeeee',\n\tpOeviTetYd: 'db7093',\n\tpapayawEp: 'ffefd5',\n\tpHKpuff: 'ffdab9',\n\tperu: 'cd853f',\n\tpRk: 'ffc0cb',\n\tplum: 'dda0dd',\n\tpowMrXe: 'b0e0e6',\n\tpurpN: '800080',\n\tYbeccapurpN: '663399',\n\tYd: 'ff0000',\n\tPsybrown: 'bc8f8f',\n\tPyOXe: '4169e1',\n\tsaddNbPwn: '8b4513',\n\tsOmon: 'fa8072',\n\tsandybPwn: 'f4a460',\n\tsHgYF: '2e8b57',\n\tsHshell: 'fff5ee',\n\tsiFna: 'a0522d',\n\tsilver: 'c0c0c0',\n\tskyXe: '87ceeb',\n\tUXe: '6a5acd',\n\tUWay: '708090',\n\tUgYy: '708090',\n\tsnow: 'fffafa',\n\tsprRggYF: 'ff7f',\n\tstAlXe: '4682b4',\n\ttan: 'd2b48c',\n\tteO: '8080',\n\ttEstN: 'd8bfd8',\n\ttomato: 'ff6347',\n\tQe: '40e0d0',\n\tviTet: 'ee82ee',\n\tJHt: 'f5deb3',\n\twEte: 'ffffff',\n\twEtesmoke: 'f5f5f5',\n\tLw: 'ffff00',\n\tLwgYF: '9acd32'\n};\nfunction unpack() {\n\tconst unpacked = {};\n\tconst keys = Object.keys(names);\n\tconst tkeys = Object.keys(map$1);\n\tlet i, j, k, ok, nk;\n\tfor (i = 0; i < keys.length; i++) {\n\t\tok = nk = keys[i];\n\t\tfor (j = 0; j < tkeys.length; j++) {\n\t\t\tk = tkeys[j];\n\t\t\tnk = nk.replace(k, map$1[k]);\n\t\t}\n\t\tk = parseInt(names[ok], 16);\n\t\tunpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n\t}\n\treturn unpacked;\n}\nlet names$1;\nfunction nameParse(str) {\n\tif (!names$1) {\n\t\tnames$1 = unpack();\n\t\tnames$1.transparent = [0, 0, 0, 0];\n\t}\n\tconst a = names$1[str.toLowerCase()];\n\treturn a && {\n\t\tr: a[0],\n\t\tg: a[1],\n\t\tb: a[2],\n\t\ta: a.length === 4 ? a[3] : 255\n\t};\n}\nfunction modHSL(v, i, ratio) {\n\tif (v) {\n\t\tlet tmp = rgb2hsl(v);\n\t\ttmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n\t\ttmp = hsl2rgb(tmp);\n\t\tv.r = tmp[0];\n\t\tv.g = tmp[1];\n\t\tv.b = tmp[2];\n\t}\n}\nfunction clone(v, proto) {\n\treturn v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n\tvar v = {r: 0, g: 0, b: 0, a: 255};\n\tif (Array.isArray(input)) {\n\t\tif (input.length >= 3) {\n\t\t\tv = {r: input[0], g: input[1], b: input[2], a: 255};\n\t\t\tif (input.length > 3) {\n\t\t\t\tv.a = n2b(input[3]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tv = clone(input, {r: 0, g: 0, b: 0, a: 1});\n\t\tv.a = n2b(v.a);\n\t}\n\treturn v;\n}\nfunction functionParse(str) {\n\tif (str.charAt(0) === 'r') {\n\t\treturn rgbParse(str);\n\t}\n\treturn hueParse(str);\n}\nclass Color {\n\tconstructor(input) {\n\t\tif (input instanceof Color) {\n\t\t\treturn input;\n\t\t}\n\t\tconst type = typeof input;\n\t\tlet v;\n\t\tif (type === 'object') {\n\t\t\tv = fromObject(input);\n\t\t} else if (type === 'string') {\n\t\t\tv = hexParse(input) || nameParse(input) || functionParse(input);\n\t\t}\n\t\tthis._rgb = v;\n\t\tthis._valid = !!v;\n\t}\n\tget valid() {\n\t\treturn this._valid;\n\t}\n\tget rgb() {\n\t\tvar v = clone(this._rgb);\n\t\tif (v) {\n\t\t\tv.a = b2n(v.a);\n\t\t}\n\t\treturn v;\n\t}\n\tset rgb(obj) {\n\t\tthis._rgb = fromObject(obj);\n\t}\n\trgbString() {\n\t\treturn this._valid ? rgbString(this._rgb) : this._rgb;\n\t}\n\thexString() {\n\t\treturn this._valid ? hexString(this._rgb) : this._rgb;\n\t}\n\thslString() {\n\t\treturn this._valid ? hslString(this._rgb) : this._rgb;\n\t}\n\tmix(color, weight) {\n\t\tconst me = this;\n\t\tif (color) {\n\t\t\tconst c1 = me.rgb;\n\t\t\tconst c2 = color.rgb;\n\t\t\tlet w2;\n\t\t\tconst p = weight === w2 ? 0.5 : weight;\n\t\t\tconst w = 2 * p - 1;\n\t\t\tconst a = c1.a - c2.a;\n\t\t\tconst w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\t\tw2 = 1 - w1;\n\t\t\tc1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n\t\t\tc1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n\t\t\tc1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n\t\t\tc1.a = p * c1.a + (1 - p) * c2.a;\n\t\t\tme.rgb = c1;\n\t\t}\n\t\treturn me;\n\t}\n\tclone() {\n\t\treturn new Color(this.rgb);\n\t}\n\talpha(a) {\n\t\tthis._rgb.a = n2b(a);\n\t\treturn this;\n\t}\n\tclearer(ratio) {\n\t\tconst rgb = this._rgb;\n\t\trgb.a *= 1 - ratio;\n\t\treturn this;\n\t}\n\tgreyscale() {\n\t\tconst rgb = this._rgb;\n\t\tconst val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n\t\trgb.r = rgb.g = rgb.b = val;\n\t\treturn this;\n\t}\n\topaquer(ratio) {\n\t\tconst rgb = this._rgb;\n\t\trgb.a *= 1 + ratio;\n\t\treturn this;\n\t}\n\tnegate() {\n\t\tconst v = this._rgb;\n\t\tv.r = 255 - v.r;\n\t\tv.g = 255 - v.g;\n\t\tv.b = 255 - v.b;\n\t\treturn this;\n\t}\n\tlighten(ratio) {\n\t\tmodHSL(this._rgb, 2, ratio);\n\t\treturn this;\n\t}\n\tdarken(ratio) {\n\t\tmodHSL(this._rgb, 2, -ratio);\n\t\treturn this;\n\t}\n\tsaturate(ratio) {\n\t\tmodHSL(this._rgb, 1, ratio);\n\t\treturn this;\n\t}\n\tdesaturate(ratio) {\n\t\tmodHSL(this._rgb, 1, -ratio);\n\t\treturn this;\n\t}\n\trotate(deg) {\n\t\trotate(this._rgb, deg);\n\t\treturn this;\n\t}\n}\nfunction index_esm(input) {\n\treturn new Color(input);\n}\n\nconst isPatternOrGradient = (value) => value instanceof CanvasGradient || value instanceof CanvasPattern;\nfunction color(value) {\n return isPatternOrGradient(value) ? value : index_esm(value);\n}\nfunction getHoverColor(value) {\n return isPatternOrGradient(value)\n ? value\n : index_esm(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\nfunction getScope$1(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for (let i = 0, n = keys.length; i < n; ++i) {\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope$1(root, scope), values);\n }\n return merge(getScope$1(root, ''), scope);\n}\nclass Defaults {\n constructor(_descriptors) {\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = [\n 'mousemove',\n 'mouseout',\n 'click',\n 'touchstart',\n 'touchmove'\n ];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options) => getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n this.describe(_descriptors);\n }\n set(scope, values) {\n return set(this, scope, values);\n }\n get(scope) {\n return getScope$1(this, scope);\n }\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n override(scope, values) {\n return set(overrides, scope, values);\n }\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope$1(this, scope);\n const targetScopeObject = getScope$1(this, targetScope);\n const privateName = '_' + name;\n Object.defineProperties(scopeObject, {\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n [name]: {\n enumerable: true,\n get() {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set(value) {\n this[privateName] = value;\n }\n }\n });\n }\n}\nvar defaults = new Defaults({\n _scriptable: (name) => !name.startsWith('on'),\n _indexable: (name) => name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false,\n }\n});\n\nfunction toFontString(font) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\nfunction _measureText(ctx, data, gc, longest, string) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n ctx.save();\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i, j, jlen, thing, nestedThing;\n for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i];\n if (thing !== undefined && thing !== null && isArray(thing) !== true) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n for (j = 0, jlen = thing.length; j < jlen; j++) {\n nestedThing = thing[j];\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n ctx.restore();\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\nfunction _alignPixel(chart, pixel, width) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\nfunction clearCanvas(canvas, ctx) {\n ctx = ctx || canvas.getContext('2d');\n ctx.save();\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n let type, xOffset, yOffset, size, cornerRadius;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n ctx.beginPath();\n switch (style) {\n default:\n ctx.arc(x, y, radius, 0, TAU);\n ctx.closePath();\n break;\n case 'triangle':\n ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n ctx.rect(x - size, y - size, 2 * size, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n case 'rectRot':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + yOffset, y - xOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n case 'cross':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'star':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n rad += QUARTER_PI;\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'line':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n break;\n }\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\nfunction _isPointInArea(point, area, margin) {\n margin = margin || 0.5;\n return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&\n\t\tpoint.y > area.top - margin && point.y < area.bottom + margin);\n}\nfunction clipArea(ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\nfunction unclipArea(ctx) {\n ctx.restore();\n}\nfunction _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\nfunction _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(\n flip ? previous.cp1x : previous.cp2x,\n flip ? previous.cp1y : previous.cp2y,\n flip ? target.cp2x : target.cp1x,\n flip ? target.cp2y : target.cp1y,\n target.x,\n target.y);\n}\nfunction renderText(ctx, text, x, y, font, opts = {}) {\n const lines = isArray(text) ? text : [text];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i, line;\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n for (i = 0; i < lines.length; ++i) {\n line = lines[i];\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n y += font.lineHeight;\n }\n ctx.restore();\n}\nfunction setRenderOpts(ctx, opts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n if (opts.strikethrough || opts.underline) {\n const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\nfunction addRoundedRectPath(ctx, rect) {\n const {x, y, w, h, radius} = rect;\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, -HALF_PI, PI, true);\n ctx.lineTo(x, y + h - radius.bottomLeft);\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n ctx.lineTo(x + w, y + radius.topRight);\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n ctx.lineTo(x + radius.topLeft, y);\n}\n\nconst LINE_HEIGHT = new RegExp(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\nconst FONT_STYLE = new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);\nfunction toLineHeight(value, size) {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n value = +matches[2];\n switch (matches[3]) {\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n }\n return size * value;\n}\nconst numberOrZero = v => +v || 0;\nfunction _readValueToProps(value, props) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value)\n ? objProps\n ? prop => valueOrDefault(value[prop], value[props[prop]])\n : prop => value[prop]\n : () => value;\n for (const prop of keys) {\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\nfunction toTRBL(value) {\n return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\nfunction toTRBLCorners(value) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\nfunction toPadding(value) {\n const obj = toTRBL(value);\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n return obj;\n}\nfunction toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n let size = valueOrDefault(options.size, fallback.size);\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = '';\n }\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n font.string = toFontString(font);\n return font;\n}\nfunction resolve(inputs, context, index, info) {\n let cacheable = true;\n let i, ilen, value;\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\nfunction _addGrace(minmax, grace, beginAtZero) {\n const {min, max} = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value, add) => beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\nfunction createContext(parentContext, context) {\n return Object.assign(Object.create(parentContext), context);\n}\n\nfunction _lookup(table, value, cmp) {\n cmp = cmp || ((index) => table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid;\n while (hi - lo > 1) {\n mid = (lo + hi) >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n return {lo, hi};\n}\nconst _lookupByKey = (table, key, value) =>\n _lookup(table, value, index => table[index][key] < value);\nconst _rlookupByKey = (table, key, value) =>\n _lookup(table, value, index => table[index][key] >= value);\nfunction _filterBetween(values, min, max) {\n let start = 0;\n let end = values.length;\n while (start < end && values[start] < min) {\n start++;\n }\n while (end > start && values[end - 1] > max) {\n end--;\n }\n return start > 0 || end < values.length\n ? values.slice(start, end)\n : values;\n}\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\nfunction listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n arrayEvents.forEach((key) => {\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value(...args) {\n const res = base.apply(this, args);\n array._chartjs.listeners.forEach((object) => {\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n return res;\n }\n });\n });\n}\nfunction unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n if (listeners.length > 0) {\n return;\n }\n arrayEvents.forEach((key) => {\n delete array[key];\n });\n delete array._chartjs;\n}\nfunction _arrayUnique(items) {\n const set = new Set();\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n set.add(items[i]);\n }\n if (set.size === ilen) {\n return items;\n }\n return Array.from(set);\n}\n\nfunction _createResolver(scopes, prefixes = [''], rootScopes = scopes, fallback, getTarget = () => scopes[0]) {\n if (!defined(fallback)) {\n fallback = _resolve('_fallback', scopes);\n }\n const cache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: rootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope) => _createResolver([scope, ...scopes], prefixes, rootScopes, fallback),\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete target._keys;\n delete scopes[0][prop];\n return true;\n },\n get(target, prop) {\n return _cached(target, prop,\n () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n has(target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n set(target, prop, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value;\n delete target._keys;\n return true;\n }\n });\n}\nfunction _attachContext(proxy, context, subProxy, descriptorDefaults) {\n const cache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete proxy[prop];\n return true;\n },\n get(target, prop, receiver) {\n return _cached(target, prop,\n () => _resolveWithContext(target, prop, receiver));\n },\n getOwnPropertyDescriptor(target, prop) {\n return target._descriptors.allKeys\n ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n set(target, prop, value) {\n proxy[prop] = value;\n delete target[prop];\n return true;\n }\n });\n}\nfunction _descriptors(proxy, defaults = {scriptable: true, indexable: true}) {\n const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n };\n}\nconst readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value) => isObject(value) && prop !== 'adapters' &&\n (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n return target[prop];\n }\n const value = resolve();\n target[prop] = value;\n return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n let value = _proxy[prop];\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\nfunction _resolveScriptable(prop, value, target, receiver) {\n const {_proxy, _context, _subProxy, _stack} = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n value = value(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n if (defined(_context.index) && isIndexable(prop)) {\n value = value[_context.index % value.length];\n } else if (isObject(value[0])) {\n const arr = value;\n const scopes = _proxy._scopes.filter(s => s !== arr);\n value = [];\n for (const item of arr) {\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent) => key === true ? parent\n : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n for (const parent of parentScopes) {\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (defined(fallback) && fallback !== key && fallback !== parentFallback) {\n return fallback;\n }\n } else if (scope === false && defined(parentFallback) && key !== parentFallback) {\n return null;\n }\n }\n return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [...parentScopes, ...rootScopes];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (defined(fallback) && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [''], rootScopes, fallback,\n () => subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n return value;\n }\n return target;\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n let value;\n for (const prefix of prefixes) {\n value = _resolve(readKey(prefix, prop), scopes);\n if (defined(value)) {\n return needsSubResolver(prop, value)\n ? createSubResolver(scopes, proxy, prop, value)\n : value;\n }\n }\n}\nfunction _resolve(key, scopes) {\n for (const scope of scopes) {\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (defined(value)) {\n return value;\n }\n }\n}\nfunction getKeysFromAllScopes(target) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n const set = new Set();\n for (const scope of scopes) {\n for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n set.add(key);\n }\n }\n return Array.from(set);\n}\n\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i) => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis) => indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n const fa = t * s01;\n const fb = t * s12;\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\nfunction monotoneAdjust(points, deltaK, mK) {\n const pointsLen = points.length;\n let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\nfunction monotoneCompute(points, mK, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\nfunction splineCurveMonotone(points, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK = Array(pointsLen).fill(0);\n const mK = Array(pointsLen);\n let i, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i]\n : !pointAfter ? deltaK[i - 1]\n : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\nfunction _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n let i, ilen, point, controlPoints;\n if (options.spanGaps) {\n points = points.filter((pt) => !pt.skip);\n }\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n point = points[i];\n controlPoints = splineCurve(\n prev,\n point,\n points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n options.tension\n );\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n\nfunction _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\nfunction _getParentNode(domNode) {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n return parent;\n}\nfunction parseMaxStyle(styleValue, node, parentProperty) {\n let valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n if (styleValue.indexOf('%') !== -1) {\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n return valueInPixels;\n}\nconst getComputedStyle = (element) => window.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles, style, suffix) {\n const result = {};\n suffix = suffix ? '-' + suffix : '';\n for (let i = 0; i < 4; i++) {\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\nconst useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot);\nfunction getCanvasPosition(evt, canvas) {\n const e = evt.native || evt;\n const touches = e.touches;\n const source = touches && touches.length ? touches[0] : e;\n const {offsetX, offsetY} = source;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {x, y, box};\n}\nfunction getRelativePosition(evt, chart) {\n const {canvas, currentDevicePixelRatio} = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const {x, y, box} = getCanvasPosition(evt, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n let {width, height} = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\nfunction getContainerSize(canvas, width, height) {\n let maxWidth, maxHeight;\n if (width === undefined || height === undefined) {\n const container = _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect();\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\nconst round1 = v => Math.round(v * 10) / 10;\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let {width, height} = containerSize;\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n height = round1(width / 2);\n }\n return {\n width,\n height\n };\n}\nfunction retinaScale(chart, forceRatio, forceStyle) {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n chart.height = deviceHeight / pixelRatio;\n chart.width = deviceWidth / pixelRatio;\n const canvas = chart.canvas;\n if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n if (chart.currentDevicePixelRatio !== pixelRatio\n || canvas.height !== deviceHeight\n || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\nconst supportsEventListenerOptions = (function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive() {\n passiveSupported = true;\n return false;\n }\n };\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {\n }\n return passiveSupported;\n}());\nfunction readUsedSize(element, property) {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n\nfunction _pointInLine(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\nfunction _steppedInterpolation(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y\n : mode === 'after' ? t < 1 ? p1.y : p2.y\n : t > 0 ? p2.y : p1.y\n };\n}\nfunction _bezierInterpolation(p1, p2, t, mode) {\n const cp1 = {x: p1.cp2x, y: p1.cp2y};\n const cp2 = {x: p2.cp1x, y: p2.cp1y};\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\n\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\nfunction formatNumber(num, locale, options) {\n return getNumberFormat(locale, options).format(num);\n}\n\nconst getRightToLeftAdapter = function(rectX, width) {\n return {\n x(x) {\n return rectX + rectX + width - x;\n },\n setWidth(w) {\n width = w;\n },\n textAlign(align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus(x, value) {\n return x - value;\n },\n leftForLtr(x, itemWidth) {\n return x - itemWidth;\n },\n };\n};\nconst getLeftToRightAdapter = function() {\n return {\n x(x) {\n return x;\n },\n setWidth(w) {\n },\n textAlign(align) {\n return align;\n },\n xPlus(x, value) {\n return x + value;\n },\n leftForLtr(x, _itemWidth) {\n return x;\n },\n };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n let style, original;\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction'),\n ];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n}\nfunction restoreTextDirection(ctx, original) {\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle,\n };\n }\n return {\n between: _isBetween,\n compare: (a, b) => a - b,\n normalize: x => x\n };\n}\nfunction normalizeSegment({start, end, count, loop, style}) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\nfunction getSegment(segment, points, bounds) {\n const {property, start: startBound, end: endBound} = bounds;\n const {between, normalize} = propertyFn(property);\n const count = points.length;\n let {start, end, loop} = segment;\n let i, ilen;\n if (loop) {\n start += count;\n end += count;\n for (i = 0, ilen = count; i < ilen; ++i) {\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n if (end < start) {\n end += count;\n }\n return {start, end, loop, style: segment.style};\n}\nfunction _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\n }\n const {property, start: startBound, end: endBound} = bounds;\n const count = points.length;\n const {compare, between, normalize} = propertyFn(property);\n const {start, end, loop, style} = getSegment(segment, points, bounds);\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = () => inside || startIsBefore();\n const shouldStop = () => !inside || endIsBefore();\n for (let i = start, prev = start; i <= end; ++i) {\n point = points[i % count];\n if (point.skip) {\n continue;\n }\n value = normalize(point[property]);\n if (value === prevValue) {\n continue;\n }\n inside = between(value, startBound, endBound);\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({start: subStart, end: i, loop, count, style}));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n if (subStart !== null) {\n result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n }\n return result;\n}\nfunction _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n for (let i = 0; i < segments.length; i++) {\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n if (loop && !spanGaps) {\n while (start < count && !points[start].skip) {\n start++;\n }\n }\n while (start < count && points[start].skip) {\n start++;\n }\n start %= count;\n if (loop) {\n end += start;\n }\n while (end > start && points[end % count].skip) {\n end--;\n }\n end %= count;\n return {start, end};\n}\nfunction solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n for (end = start + 1; end <= max; ++end) {\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({start: start % count, end: (end - 1) % count, loop});\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n if (last !== null) {\n result.push({start: start % count, end: last % count, loop});\n }\n return result;\n}\nfunction _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n if (!count) {\n return [];\n }\n const loop = !!line._loop;\n const {start, end} = findStartAndEnd(points, count, loop, spanGaps);\n if (spanGaps === true) {\n return splitByStyles(line, [{start, end, loop}], points, segmentOptions);\n }\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\nfunction splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const {_datasetIndex: datasetIndex, options: {spanGaps}} = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n s += count;\n while (points[s % count].skip) {\n s -= dir;\n }\n while (points[e % count].skip) {\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({start: s % count, end: e % count, loop: l, style: st});\n prevStyle = st;\n start = e % count;\n }\n }\n for (const segment of segments) {\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for (i = start + 1; i <= segment.end; i++) {\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n return result;\n}\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\nfunction styleChanged(style, prevStyle) {\n return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle);\n}\n\nexport { _toLeftRightCenter as $, _rlookupByKey as A, getAngleFromPoint as B, toPadding as C, each as D, getMaximumSize as E, _getParentNode as F, readUsedSize as G, HALF_PI as H, throttled as I, supportsEventListenerOptions as J, _isDomSupported as K, log10 as L, _factorize as M, finiteOrDefault as N, callback as O, PI as P, _addGrace as Q, toDegrees as R, _measureText as S, TAU as T, _int16Range as U, _alignPixel as V, clipArea as W, renderText as X, unclipArea as Y, toFont as Z, _arrayUnique as _, resolve as a, _angleDiff as a$, _alignStartEnd as a0, overrides as a1, merge as a2, _capitalize as a3, descriptors as a4, isFunction as a5, _attachContext as a6, _createResolver as a7, _descriptors as a8, mergeIf as a9, restoreTextDirection as aA, noop as aB, distanceBetweenPoints as aC, _setMinAndMaxByKey as aD, niceNum as aE, almostWhole as aF, almostEquals as aG, _decimalPlaces as aH, _longestText as aI, _filterBetween as aJ, _lookup as aK, getHoverColor as aL, clone$1 as aM, _merger as aN, _mergerIf as aO, _deprecated as aP, toFontString as aQ, splineCurve as aR, splineCurveMonotone as aS, getStyle as aT, fontString as aU, toLineHeight as aV, PITAU as aW, INFINITY as aX, RAD_PER_DEG as aY, QUARTER_PI as aZ, TWO_THIRDS_PI as a_, uid as aa, debounce as ab, retinaScale as ac, clearCanvas as ad, setsEqual as ae, _elementsEqual as af, _isClickEvent as ag, _isBetween as ah, _readValueToProps as ai, _updateBezierControlPoints as aj, _computeSegments as ak, _boundSegments as al, _steppedInterpolation as am, _bezierInterpolation as an, _pointInLine as ao, _steppedLineTo as ap, _bezierCurveTo as aq, drawPoint as ar, addRoundedRectPath as as, toTRBL as at, toTRBLCorners as au, _boundSegment as av, _normalizeAngle as aw, getRtlAdapter as ax, overrideTextDirection as ay, _textX as az, isArray as b, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, createContext as h, isObject as i, defined as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, isNumber as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _limitValue as w, _lookupByKey as x, getRelativePosition as y, _isPointInArea as z };\n","import React, { forwardRef, useRef, useEffect } from 'react';\nimport { Chart as Chart$1, LineController, BarController, RadarController, DoughnutController, PolarAreaController, BubbleController, PieController, ScatterController } from 'chart.js';\n\nconst defaultDatasetIdKey = 'label';\nfunction reforwardRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}\nfunction setOptions(chart, nextOptions) {\n chart.options = {\n ...nextOptions\n };\n}\nfunction setLabels(currentData, nextLabels) {\n currentData.labels = nextLabels;\n}\nfunction setDatasets(currentData, nextDatasets) {\n let datasetIdKey = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : defaultDatasetIdKey;\n const addedDatasets = [];\n currentData.datasets = nextDatasets.map((nextDataset)=>{\n // given the new set, find it's current match\n const currentDataset = currentData.datasets.find((dataset)=>dataset[datasetIdKey] === nextDataset[datasetIdKey]\n );\n // There is no original to update, so simply add new one\n if (!currentDataset || !nextDataset.data || addedDatasets.includes(currentDataset)) {\n return {\n ...nextDataset\n };\n }\n addedDatasets.push(currentDataset);\n Object.assign(currentDataset, nextDataset);\n return currentDataset;\n });\n}\nfunction cloneData(data) {\n let datasetIdKey = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : defaultDatasetIdKey;\n const nextData = {\n labels: [],\n datasets: []\n };\n setLabels(nextData, data.labels);\n setDatasets(nextData, data.datasets, datasetIdKey);\n return nextData;\n}\n/**\n * Get dataset from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */ function getDatasetAtEvent(chart, event) {\n return chart.getElementsAtEventForMode(event.nativeEvent, 'dataset', {\n intersect: true\n }, false);\n}\n/**\n * Get single dataset element from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */ function getElementAtEvent(chart, event) {\n return chart.getElementsAtEventForMode(event.nativeEvent, 'nearest', {\n intersect: true\n }, false);\n}\n/**\n * Get all dataset elements from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */ function getElementsAtEvent(chart, event) {\n return chart.getElementsAtEventForMode(event.nativeEvent, 'index', {\n intersect: true\n }, false);\n}\n\nfunction ChartComponent(param, ref) {\n let { height =150 , width =300 , redraw =false , datasetIdKey , type , data , options , plugins =[] , fallbackContent , ...props } = param;\n const canvasRef = useRef(null);\n const chartRef = useRef();\n const renderChart = ()=>{\n if (!canvasRef.current) return;\n chartRef.current = new Chart$1(canvasRef.current, {\n type,\n data: cloneData(data, datasetIdKey),\n options,\n plugins\n });\n reforwardRef(ref, chartRef.current);\n };\n const destroyChart = ()=>{\n reforwardRef(ref, null);\n if (chartRef.current) {\n chartRef.current.destroy();\n chartRef.current = null;\n }\n };\n useEffect(()=>{\n if (!redraw && chartRef.current && options) {\n setOptions(chartRef.current, options);\n }\n }, [\n redraw,\n options\n ]);\n useEffect(()=>{\n if (!redraw && chartRef.current) {\n setLabels(chartRef.current.config.data, data.labels);\n }\n }, [\n redraw,\n data.labels\n ]);\n useEffect(()=>{\n if (!redraw && chartRef.current && data.datasets) {\n setDatasets(chartRef.current.config.data, data.datasets, datasetIdKey);\n }\n }, [\n redraw,\n data.datasets\n ]);\n useEffect(()=>{\n if (!chartRef.current) return;\n if (redraw) {\n destroyChart();\n setTimeout(renderChart);\n } else {\n chartRef.current.update();\n }\n }, [\n redraw,\n options,\n data.labels,\n data.datasets\n ]);\n useEffect(()=>{\n renderChart();\n return ()=>destroyChart()\n ;\n }, []);\n return(/*#__PURE__*/ React.createElement(\"canvas\", Object.assign({\n ref: canvasRef,\n role: \"img\",\n height: height,\n width: width\n }, props), fallbackContent));\n}\nconst Chart = /*#__PURE__*/ forwardRef(ChartComponent);\n\nfunction createTypedChart(type, registerables) {\n Chart$1.register(registerables);\n return(/*#__PURE__*/ forwardRef((props, ref)=>/*#__PURE__*/ React.createElement(Chart, Object.assign({}, props, {\n ref: ref,\n type: type\n }))\n ));\n}\nconst Line = /* #__PURE__ */ createTypedChart('line', LineController);\nconst Bar = /* #__PURE__ */ createTypedChart('bar', BarController);\nconst Radar = /* #__PURE__ */ createTypedChart('radar', RadarController);\nconst Doughnut = /* #__PURE__ */ createTypedChart('doughnut', DoughnutController);\nconst PolarArea = /* #__PURE__ */ createTypedChart('polarArea', PolarAreaController);\nconst Bubble = /* #__PURE__ */ createTypedChart('bubble', BubbleController);\nconst Pie = /* #__PURE__ */ createTypedChart('pie', PieController);\nconst Scatter = /* #__PURE__ */ createTypedChart('scatter', ScatterController);\n\nexport { Bar, Bubble, Chart, Doughnut, Line, Pie, PolarArea, Radar, Scatter, getDatasetAtEvent, getElementAtEvent, getElementsAtEvent };\n//# sourceMappingURL=index.js.map\n","import arrayWithHoles from './_array_with_holes.mjs';\nimport iterableToArrayLimit from './_iterable_to_array.mjs';\nimport nonIterableRest from './_non_iterable_rest.mjs';\nimport unsupportedIterableToArray from './_unsupported_iterable_to_array.mjs';\n\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n"],"names":["requestAnimFrame","window","callback","requestAnimationFrame","throttled","fn","thisArg","updateFn","updateArgs","args","Array","prototype","slice","call","ticking","rest","apply","debounce","delay","timeout","clearTimeout","setTimeout","this","_toLeftRightCenter","align","_alignStartEnd","start","end","_textX","left","right","rtl","noop","uid","id","isNullOrUndef","value","isArray","type","Object","toString","substr","isObject","isNumberFinite","Number","isFinite","finiteOrDefault","defaultValue","valueOrDefault","toPercentage","dimension","endsWith","parseFloat","toDimension","each","loopable","reverse","i","len","keys","length","_elementsEqual","a0","a1","ilen","v0","v1","datasetIndex","index","clone$1","source","map","target","create","klen","k","isValidKey","key","indexOf","_merger","options","tval","sval","merge","sources","merger","mergeIf","_mergerIf","hasOwnProperty","indexOfDotOrLength","idx","resolveObjectKey","obj","pos","_capitalize","str","charAt","toUpperCase","defined","isFunction","setsEqual","a","b","size","item","has","_isClickEvent","e","PI","Math","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","sign","niceNum","range","roundedRange","round","almostEquals","niceRange","pow","floor","fraction","_factorize","result","sqrt","push","sort","pop","isNumber","n","isNaN","x","y","epsilon","abs","almostWhole","rounded","_setMinAndMaxByKey","array","property","min","max","toRadians","degrees","toDegrees","radians","_decimalPlaces","p","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","angle","atan2","distance","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","sameAngleIsFullCircle","s","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_int16Range","_isBetween","atEdge","t","elasticIn","sin","elasticOut","effects","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","cos","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","m","d","easeInOutBounce","A","B","C","D","E","F","c","f","hex","h1","h2","eq","hexString","v","r","g","isShort","lim","l","h","p2b","n2b","b2n","n2p","RGB_RE","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","w","rgb","rgb2hsl","calln","hsl2rgb","hue","hueParse","exec","p1","p2","hwb2rgb","hsv2rgb","map$1","Z","Y","X","W","V","U","T","S","R","Q","P","O","N","M","L","K","G","H","I","J","names","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","Xe","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Yd","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","Qe","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","names$1","nameParse","unpacked","tkeys","j","ok","nk","replace","parseInt","unpack","transparent","toLowerCase","modHSL","ratio","tmp","clone","proto","assign","fromObject","input","functionParse","rgbParse","Color","constructor","ret","hexParse","_rgb","_valid","valid","rgbString","hslString","mix","color","weight","me","c1","c2","w2","w1","alpha","clearer","greyscale","val","opaquer","negate","lighten","darken","saturate","desaturate","rotate","deg","index_esm","isPatternOrGradient","CanvasGradient","CanvasPattern","getHoverColor","overrides","descriptors","getScope$1","node","split","set","root","scope","values","defaults","_descriptors","animation","undefined","backgroundColor","borderColor","datasets","devicePixelRatio","context","chart","platform","getDevicePixelRatio","elements","events","font","family","style","lineHeight","hover","hoverBackgroundColor","ctx","hoverBorderColor","hoverColor","indexAxis","interaction","mode","intersect","maintainAspectRatio","onHover","onClick","parsing","plugins","responsive","scale","scales","showLine","drawActiveElementsOnTop","describe","get","override","route","name","targetScope","targetName","scopeObject","targetScopeObject","privateName","defineProperties","writable","enumerable","local","_scriptable","startsWith","_indexable","_fallback","_measureText","data","gc","longest","string","textWidth","measureText","width","_longestText","arrayOfThings","cache","garbageCollect","save","jlen","thing","nestedThing","restore","gcLen","splice","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","canvas","getContext","resetTransform","clearRect","height","drawPoint","xOffset","yOffset","cornerRadius","pointStyle","rotation","radius","rad","translate","drawImage","beginPath","arc","closePath","moveTo","lineTo","SQRT1_2","rect","fill","borderWidth","stroke","_isPointInArea","point","area","margin","top","bottom","clipArea","clip","unclipArea","_steppedLineTo","previous","flip","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","renderText","text","opts","lines","strokeWidth","strokeColor","line","translation","fillStyle","textAlign","textBaseline","setRenderOpts","strokeStyle","lineWidth","strokeText","maxWidth","fillText","decorateText","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","decorationWidth","addRoundedRectPath","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","RegExp","FONT_STYLE","toLineHeight","matches","match","_readValueToProps","props","objProps","read","prop","toTRBL","toTRBLCorners","toPadding","toFont","fallback","console","warn","toFontString","resolve","inputs","info","cacheable","_addGrace","minmax","grace","beginAtZero","change","keepZero","add","createContext","parentContext","_lookup","table","cmp","mid","hi","lo","_lookupByKey","_rlookupByKey","_filterBetween","arrayEvents","listenArrayEvents","listener","_chartjs","listeners","defineProperty","configurable","forEach","method","base","res","object","unlistenArrayEvents","stub","_arrayUnique","items","Set","from","_createResolver","scopes","prefixes","rootScopes","getTarget","_resolve","Symbol","toStringTag","_cacheable","_scopes","_rootScopes","_getTarget","Proxy","deleteProperty","_keys","_cached","proxy","prefix","readKey","needsSubResolver","createSubResolver","_resolveWithPrefixes","getOwnPropertyDescriptor","Reflect","getPrototypeOf","getKeysFromAllScopes","includes","ownKeys","storage","_storage","_attachContext","subProxy","descriptorDefaults","_proxy","_context","_subProxy","_stack","setContext","receiver","isScriptable","Error","join","delete","_resolveScriptable","isIndexable","arr","filter","resolver","_resolveArray","_resolveWithContext","allKeys","scriptable","indexable","_allKeys","resolveFallback","getScope","parent","addScopes","parentScopes","parentFallback","allScopes","addScopesFromKey","subGetTarget","resolveKeysFromAllScopes","EPSILON","getPoint","points","skip","getValueAxis","splineCurve","firstPoint","middlePoint","afterPoint","current","next","d01","d12","s01","s12","fa","fb","splineCurveMonotone","valueAxis","pointsLen","deltaK","mK","pointBefore","pointCurrent","pointAfter","slopeDelta","alphaK","betaK","tauK","squaredMagnitude","monotoneAdjust","delta","iPixel","vPixel","monotoneCompute","capControlPoint","pt","_updateBezierControlPoints","loop","controlPoints","spanGaps","cubicInterpolationMode","prev","tension","capBezierPoints","inArea","inAreaPrev","inAreaNext","_isDomSupported","document","_getParentNode","domNode","parentNode","host","parseMaxStyle","styleValue","parentProperty","valueInPixels","getComputedStyle","element","positions","getPositionedStyle","styles","suffix","getRelativePosition","evt","borderBox","boxSizing","paddings","borders","box","native","touches","offsetX","offsetY","shadowRoot","useOffsetPos","getBoundingClientRect","clientX","clientY","getCanvasPosition","round1","getMaximumSize","bbWidth","bbHeight","aspectRatio","margins","maxHeight","containerSize","container","containerStyle","containerBorder","containerPadding","clientWidth","clientHeight","getContainerSize","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","passiveSupported","passive","addEventListener","removeEventListener","readUsedSize","el","getPropertyValue","getStyle","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","intlCache","Map","formatNumber","num","locale","cacheKey","JSON","stringify","formatter","Intl","NumberFormat","getNumberFormat","format","getRtlAdapter","rectX","setWidth","xPlus","leftForLtr","itemWidth","getRightToLeftAdapter","_itemWidth","overrideTextDirection","direction","original","getPropertyPriority","setProperty","prevTextDirection","restoreTextDirection","propertyFn","between","compare","normalize","normalizeSegment","count","_boundSegment","segment","bounds","startBound","endBound","getSegment","prevValue","inside","subStart","shouldStart","shouldStop","_boundSegments","segments","sub","_computeSegments","segmentOptions","_loop","findStartAndEnd","splitByStyles","last","cur","stop","solidSegments","_fullLoop","chartContext","_chart","baseStyle","readStyle","_datasetIndex","prevStyle","addStyle","st","dir","p0","p0DataIndex","p1DataIndex","styleChanged","doSplitByStyles","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","defaultDatasetIdKey","reforwardRef","ref","setLabels","currentData","nextLabels","labels","setDatasets","nextDatasets","datasetIdKey","arguments","addedDatasets","nextDataset","currentDataset","find","dataset","cloneData","nextData","ChartComponent","param","redraw","fallbackContent","canvasRef","useRef","chartRef","renderChart","destroyChart","destroy","useEffect","nextOptions","config","update","role","Chart","forwardRef","createTypedChart","registerables","Bar","Radar","_slicedToArray","TypeError"],"sourceRoot":""}