{"version":3,"file":"static/js/main.9e294050.js","mappings":"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","sources":["../node_modules/axios/index.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/utils.js","../node_modules/exenv/index.js","../node_modules/object-assign/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/index.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../node_modules/react-modal/lib/components/Modal.js","../node_modules/react-modal/lib/components/ModalPortal.js","../node_modules/react-modal/lib/helpers/ariaAppHider.js","../node_modules/react-modal/lib/helpers/bodyTrap.js","../node_modules/react-modal/lib/helpers/classList.js","../node_modules/react-modal/lib/helpers/focusManager.js","../node_modules/react-modal/lib/helpers/portalOpenInstances.js","../node_modules/react-modal/lib/helpers/safeHTMLElement.js","../node_modules/react-modal/lib/helpers/scopeTab.js","../node_modules/react-modal/lib/helpers/tabbable.js","../node_modules/react-modal/lib/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/warning/warning.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/react-currency-input-field/node_modules/tslib/tslib.es6.js","../node_modules/react-currency-input-field/src/components/utils/escapeRegExp.ts","../node_modules/react-currency-input-field/src/components/utils/parseAbbrValue.ts","../node_modules/react-currency-input-field/src/components/utils/cleanValue.ts","../node_modules/react-currency-input-field/src/components/utils/removeSeparators.ts","../node_modules/react-currency-input-field/src/components/utils/removeInvalidChars.ts","../node_modules/react-currency-input-field/src/components/utils/getSuffix.ts","../node_modules/react-currency-input-field/src/components/utils/formatValue.ts","../node_modules/react-currency-input-field/src/components/utils/getLocaleConfig.ts","../node_modules/react-currency-input-field/src/components/utils/isNumber.ts","../node_modules/react-currency-input-field/src/components/CurrencyInput.tsx","../node_modules/react-currency-input-field/src/components/utils/repositionCursor.ts","../node_modules/react-currency-input-field/src/components/utils/fixedDecimalValue.ts","../node_modules/react-currency-input-field/src/components/utils/padTrimValue.ts","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/chart.js/dist/chunks/helpers.segment.mjs","../node_modules/chart.js/dist/chart.mjs","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/react-chartjs-2/src/utils.ts","../node_modules/react-chartjs-2/src/chart.tsx","../node_modules/react-chartjs-2/src/typedCharts.tsx","components/ChartPayment.js","components/ChartInterestRate.js","components/MortgageCalculationTable.js","components/LoadingSpinner.js","components/Toggle.js","Calculator.js","App.js","reportWebVitals.js","index.js"],"sourcesContent":["module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar transitionalDefaults = require('../defaults/transitional');\nvar AxiosError = require('../core/AxiosError');\nvar CanceledError = require('../cancel/CanceledError');\nvar parseProtocol = require('../helpers/parseProtocol');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData) && utils.isStandardBrowserEnv()) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new CanceledError() : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n var protocol = parseProtocol(fullPath);\n\n if (protocol && [ 'http', 'https', 'file' ].indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = require('./cancel/CanceledError');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\naxios.toFormData = require('./helpers/toFormData');\n\n// Expose AxiosError class\naxios.AxiosError = require('../lib/core/AxiosError');\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\nvar CanceledError = require('./CanceledError');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nvar AxiosError = require('../core/AxiosError');\nvar utils = require('../utils');\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction CanceledError(message) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nmodule.exports = CanceledError;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar buildFullPath = require('./buildFullPath');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n var fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url: url,\n data: data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nvar prototype = AxiosError.prototype;\nvar descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED'\n// eslint-disable-next-line func-names\n].forEach(function(code) {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = function(error, code, config, request, response, customProps) {\n var axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nmodule.exports = AxiosError;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar CanceledError = require('../cancel/CanceledError');\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'beforeRedirect': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","'use strict';\n\nvar AxiosError = require('./AxiosError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\nvar AxiosError = require('../core/AxiosError');\nvar transitionalDefaults = require('./transitional');\nvar toFormData = require('../helpers/toFormData');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('../adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('../adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n\n var isObjectPayload = utils.isObject(data);\n var contentType = headers && headers['Content-Type'];\n\n var isFileList;\n\n if ((isFileList = utils.isFileList(data)) || (isObjectPayload && contentType === 'multipart/form-data')) {\n var _FormData = this.env && this.env.FormData;\n return toFormData(isFileList ? {'files[]': data} : data, _FormData && new _FormData());\n } else if (isObjectPayload || contentType === 'application/json') {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: require('./env/FormData')\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","module.exports = {\n \"version\": \"0.27.2\"\n};","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","// eslint-disable-next-line strict\nmodule.exports = null;\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nmodule.exports = function parseProtocol(url) {\n var match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Convert a data object to FormData\n * @param {Object} obj\n * @param {?Object} [formData]\n * @returns {Object}\n **/\n\nfunction toFormData(obj, formData) {\n // eslint-disable-next-line no-param-reassign\n formData = formData || new FormData();\n\n var stack = [];\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n function build(data, parentKey) {\n if (utils.isPlainObject(data) || utils.isArray(data)) {\n if (stack.indexOf(data) !== -1) {\n throw Error('Circular reference detected in ' + parentKey);\n }\n\n stack.push(data);\n\n utils.forEach(data, function each(value, key) {\n if (utils.isUndefined(value)) return;\n var fullKey = parentKey ? parentKey + '.' + key : key;\n var arr;\n\n if (value && !parentKey && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (utils.endsWith(key, '[]') && (arr = utils.toArray(value))) {\n // eslint-disable-next-line func-names\n arr.forEach(function(el) {\n !utils.isUndefined(el) && formData.append(fullKey, convertValue(el));\n });\n return;\n }\n }\n\n build(value, fullKey);\n });\n\n stack.pop();\n } else {\n formData.append(parentKey, convertValue(data));\n }\n }\n\n build(obj);\n\n return formData;\n}\n\nmodule.exports = toFormData;\n","'use strict';\n\nvar VERSION = require('../env/data').version;\nvar AxiosError = require('../core/AxiosError');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n// eslint-disable-next-line func-names\nvar kindOf = (function(cache) {\n // eslint-disable-next-line func-names\n return function(thing) {\n var str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n };\n})(Object.create(null));\n\nfunction kindOfTest(type) {\n type = type.toLowerCase();\n return function isKindOf(thing) {\n return kindOf(thing) === type;\n };\n}\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nvar isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nvar isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nvar isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} thing The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(thing) {\n var pattern = '[object FormData]';\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) ||\n toString.call(thing) === pattern ||\n (isFunction(thing.toString) && thing.toString() === pattern)\n );\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nvar isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n */\n\nfunction inherits(constructor, superConstructor, props, descriptors) {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function} [filter]\n * @returns {Object}\n */\n\nfunction toFlatObject(sourceObj, destObj, filter) {\n var props;\n var i;\n var prop;\n var merged = {};\n\n destObj = destObj || {};\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if (!merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = Object.getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/*\n * determines whether a string ends with the characters of a specified string\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n * @returns {boolean}\n */\nfunction endsWith(str, searchString, position) {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n var lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object\n * @param {*} [thing]\n * @returns {Array}\n */\nfunction toArray(thing) {\n if (!thing) return null;\n var i = thing.length;\n if (isUndefined(i)) return null;\n var arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n// eslint-disable-next-line func-names\nvar isTypedArray = (function(TypedArray) {\n // eslint-disable-next-line func-names\n return function(thing) {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array));\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM,\n inherits: inherits,\n toFlatObject: toFlatObject,\n kindOf: kindOf,\n kindOfTest: kindOfTest,\n endsWith: endsWith,\n toArray: toArray,\n isTypedArray: isTypedArray,\n isFileList: isFileList\n};\n","/*!\n Copyright (c) 2015 Jed Watson.\n Based on code that is Copyright 2013-2015, Facebook, Inc.\n All rights reserved.\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar canUseDOM = !!(\n\t\ttypeof window !== 'undefined' &&\n\t\twindow.document &&\n\t\twindow.document.createElement\n\t);\n\n\tvar ExecutionEnvironment = {\n\n\t\tcanUseDOM: canUseDOM,\n\n\t\tcanUseWorkers: typeof Worker !== 'undefined',\n\n\t\tcanUseEventListeners:\n\t\t\tcanUseDOM && !!(window.addEventListener || window.attachEvent),\n\n\t\tcanUseViewport: canUseDOM && !!window.screen\n\n\t};\n\n\tif (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\tdefine(function () {\n\t\t\treturn ExecutionEnvironment;\n\t\t});\n\t} else if (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = ExecutionEnvironment;\n\t} else {\n\t\twindow.ExecutionEnvironment = ExecutionEnvironment;\n\t}\n\n}());\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/** @license React v17.0.2\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),m=require(\"object-assign\"),r=require(\"scheduler\");function y(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function B(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(oa,\npa);D[b]=new B(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return m({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(y(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;ad?0:1<c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Oe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Pe=fa&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Oe(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;az?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;zz?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;af))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0c?98:c,function(){a(!0)});gg(97\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eJi&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;ee&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10 component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;tO()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e 0) {\n ariaHiddenInstances -= 1;\n\n if (ariaHiddenInstances === 0) {\n ariaAppHider.show(appElement);\n }\n }\n\n if (_this.props.shouldFocusAfterRender) {\n if (_this.props.shouldReturnFocusAfterClose) {\n focusManager.returnFocus(_this.props.preventScroll);\n focusManager.teardownScopedFocus();\n } else {\n focusManager.popWithoutFocus();\n }\n }\n\n if (_this.props.onAfterClose) {\n _this.props.onAfterClose();\n }\n\n _portalOpenInstances2.default.deregister(_this);\n };\n\n _this.open = function () {\n _this.beforeOpen();\n if (_this.state.afterOpen && _this.state.beforeClose) {\n clearTimeout(_this.closeTimer);\n _this.setState({ beforeClose: false });\n } else {\n if (_this.props.shouldFocusAfterRender) {\n focusManager.setupScopedFocus(_this.node);\n focusManager.markForFocusLater();\n }\n\n _this.setState({ isOpen: true }, function () {\n _this.openAnimationFrame = requestAnimationFrame(function () {\n _this.setState({ afterOpen: true });\n\n if (_this.props.isOpen && _this.props.onAfterOpen) {\n _this.props.onAfterOpen({\n overlayEl: _this.overlay,\n contentEl: _this.content\n });\n }\n });\n });\n }\n };\n\n _this.close = function () {\n if (_this.props.closeTimeoutMS > 0) {\n _this.closeWithTimeout();\n } else {\n _this.closeWithoutTimeout();\n }\n };\n\n _this.focusContent = function () {\n return _this.content && !_this.contentHasFocus() && _this.content.focus({ preventScroll: true });\n };\n\n _this.closeWithTimeout = function () {\n var closesAt = Date.now() + _this.props.closeTimeoutMS;\n _this.setState({ beforeClose: true, closesAt: closesAt }, function () {\n _this.closeTimer = setTimeout(_this.closeWithoutTimeout, _this.state.closesAt - Date.now());\n });\n };\n\n _this.closeWithoutTimeout = function () {\n _this.setState({\n beforeClose: false,\n isOpen: false,\n afterOpen: false,\n closesAt: null\n }, _this.afterClose);\n };\n\n _this.handleKeyDown = function (event) {\n if (event.keyCode === TAB_KEY) {\n (0, _scopeTab2.default)(_this.content, event);\n }\n\n if (_this.props.shouldCloseOnEsc && event.keyCode === ESC_KEY) {\n event.stopPropagation();\n _this.requestClose(event);\n }\n };\n\n _this.handleOverlayOnClick = function (event) {\n if (_this.shouldClose === null) {\n _this.shouldClose = true;\n }\n\n if (_this.shouldClose && _this.props.shouldCloseOnOverlayClick) {\n if (_this.ownerHandlesClose()) {\n _this.requestClose(event);\n } else {\n _this.focusContent();\n }\n }\n _this.shouldClose = null;\n };\n\n _this.handleContentOnMouseUp = function () {\n _this.shouldClose = false;\n };\n\n _this.handleOverlayOnMouseDown = function (event) {\n if (!_this.props.shouldCloseOnOverlayClick && event.target == _this.overlay) {\n event.preventDefault();\n }\n };\n\n _this.handleContentOnClick = function () {\n _this.shouldClose = false;\n };\n\n _this.handleContentOnMouseDown = function () {\n _this.shouldClose = false;\n };\n\n _this.requestClose = function (event) {\n return _this.ownerHandlesClose() && _this.props.onRequestClose(event);\n };\n\n _this.ownerHandlesClose = function () {\n return _this.props.onRequestClose;\n };\n\n _this.shouldBeClosed = function () {\n return !_this.state.isOpen && !_this.state.beforeClose;\n };\n\n _this.contentHasFocus = function () {\n return document.activeElement === _this.content || _this.content.contains(document.activeElement);\n };\n\n _this.buildClassName = function (which, additional) {\n var classNames = (typeof additional === \"undefined\" ? \"undefined\" : _typeof(additional)) === \"object\" ? additional : {\n base: CLASS_NAMES[which],\n afterOpen: CLASS_NAMES[which] + \"--after-open\",\n beforeClose: CLASS_NAMES[which] + \"--before-close\"\n };\n var className = classNames.base;\n if (_this.state.afterOpen) {\n className = className + \" \" + classNames.afterOpen;\n }\n if (_this.state.beforeClose) {\n className = className + \" \" + classNames.beforeClose;\n }\n return typeof additional === \"string\" && additional ? className + \" \" + additional : className;\n };\n\n _this.attributesFromObject = function (prefix, items) {\n return Object.keys(items).reduce(function (acc, name) {\n acc[prefix + \"-\" + name] = items[name];\n return acc;\n }, {});\n };\n\n _this.state = {\n afterOpen: false,\n beforeClose: false\n };\n\n _this.shouldClose = null;\n _this.moveFromContentToOverlay = null;\n return _this;\n }\n\n _createClass(ModalPortal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (this.props.isOpen) {\n this.open();\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n if (process.env.NODE_ENV !== \"production\") {\n if (prevProps.bodyOpenClassName !== this.props.bodyOpenClassName) {\n // eslint-disable-next-line no-console\n console.warn('React-Modal: \"bodyOpenClassName\" prop has been modified. ' + \"This may cause unexpected behavior when multiple modals are open.\");\n }\n if (prevProps.htmlOpenClassName !== this.props.htmlOpenClassName) {\n // eslint-disable-next-line no-console\n console.warn('React-Modal: \"htmlOpenClassName\" prop has been modified. ' + \"This may cause unexpected behavior when multiple modals are open.\");\n }\n }\n\n if (this.props.isOpen && !prevProps.isOpen) {\n this.open();\n } else if (!this.props.isOpen && prevProps.isOpen) {\n this.close();\n }\n\n // Focus only needs to be set once when the modal is being opened\n if (this.props.shouldFocusAfterRender && this.state.isOpen && !prevState.isOpen) {\n this.focusContent();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.state.isOpen) {\n this.afterClose();\n }\n clearTimeout(this.closeTimer);\n cancelAnimationFrame(this.openAnimationFrame);\n }\n }, {\n key: \"beforeOpen\",\n value: function beforeOpen() {\n var _props = this.props,\n appElement = _props.appElement,\n ariaHideApp = _props.ariaHideApp,\n htmlOpenClassName = _props.htmlOpenClassName,\n bodyOpenClassName = _props.bodyOpenClassName;\n\n // Add classes.\n\n bodyOpenClassName && classList.add(document.body, bodyOpenClassName);\n\n htmlOpenClassName && classList.add(document.getElementsByTagName(\"html\")[0], htmlOpenClassName);\n\n if (ariaHideApp) {\n ariaHiddenInstances += 1;\n ariaAppHider.hide(appElement);\n }\n\n _portalOpenInstances2.default.register(this);\n }\n\n // Don't steal focus from inner elements\n\n }, {\n key: \"render\",\n value: function render() {\n var _props2 = this.props,\n id = _props2.id,\n className = _props2.className,\n overlayClassName = _props2.overlayClassName,\n defaultStyles = _props2.defaultStyles,\n children = _props2.children;\n\n var contentStyles = className ? {} : defaultStyles.content;\n var overlayStyles = overlayClassName ? {} : defaultStyles.overlay;\n\n if (this.shouldBeClosed()) {\n return null;\n }\n\n var overlayProps = {\n ref: this.setOverlayRef,\n className: this.buildClassName(\"overlay\", overlayClassName),\n style: _extends({}, overlayStyles, this.props.style.overlay),\n onClick: this.handleOverlayOnClick,\n onMouseDown: this.handleOverlayOnMouseDown\n };\n\n var contentProps = _extends({\n id: id,\n ref: this.setContentRef,\n style: _extends({}, contentStyles, this.props.style.content),\n className: this.buildClassName(\"content\", className),\n tabIndex: \"-1\",\n onKeyDown: this.handleKeyDown,\n onMouseDown: this.handleContentOnMouseDown,\n onMouseUp: this.handleContentOnMouseUp,\n onClick: this.handleContentOnClick,\n role: this.props.role,\n \"aria-label\": this.props.contentLabel\n }, this.attributesFromObject(\"aria\", _extends({ modal: true }, this.props.aria)), this.attributesFromObject(\"data\", this.props.data || {}), {\n \"data-testid\": this.props.testId\n });\n\n var contentElement = this.props.contentElement(contentProps, children);\n return this.props.overlayElement(overlayProps, contentElement);\n }\n }]);\n\n return ModalPortal;\n}(_react.Component);\n\nModalPortal.defaultProps = {\n style: {\n overlay: {},\n content: {}\n },\n defaultStyles: {}\n};\nModalPortal.propTypes = {\n isOpen: _propTypes2.default.bool.isRequired,\n defaultStyles: _propTypes2.default.shape({\n content: _propTypes2.default.object,\n overlay: _propTypes2.default.object\n }),\n style: _propTypes2.default.shape({\n content: _propTypes2.default.object,\n overlay: _propTypes2.default.object\n }),\n className: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]),\n overlayClassName: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]),\n bodyOpenClassName: _propTypes2.default.string,\n htmlOpenClassName: _propTypes2.default.string,\n ariaHideApp: _propTypes2.default.bool,\n appElement: _propTypes2.default.oneOfType([_propTypes2.default.instanceOf(_safeHTMLElement2.default), _propTypes2.default.instanceOf(_safeHTMLElement.SafeHTMLCollection), _propTypes2.default.instanceOf(_safeHTMLElement.SafeNodeList), _propTypes2.default.arrayOf(_propTypes2.default.instanceOf(_safeHTMLElement2.default))]),\n onAfterOpen: _propTypes2.default.func,\n onAfterClose: _propTypes2.default.func,\n onRequestClose: _propTypes2.default.func,\n closeTimeoutMS: _propTypes2.default.number,\n shouldFocusAfterRender: _propTypes2.default.bool,\n shouldCloseOnOverlayClick: _propTypes2.default.bool,\n shouldReturnFocusAfterClose: _propTypes2.default.bool,\n preventScroll: _propTypes2.default.bool,\n role: _propTypes2.default.string,\n contentLabel: _propTypes2.default.string,\n aria: _propTypes2.default.object,\n data: _propTypes2.default.object,\n children: _propTypes2.default.node,\n shouldCloseOnEsc: _propTypes2.default.bool,\n overlayRef: _propTypes2.default.func,\n contentRef: _propTypes2.default.func,\n id: _propTypes2.default.string,\n overlayElement: _propTypes2.default.func,\n contentElement: _propTypes2.default.func,\n testId: _propTypes2.default.string\n};\nexports.default = ModalPortal;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resetState = resetState;\nexports.log = log;\nexports.assertNodeList = assertNodeList;\nexports.setElement = setElement;\nexports.validateElement = validateElement;\nexports.hide = hide;\nexports.show = show;\nexports.documentNotReadyOrSSRTesting = documentNotReadyOrSSRTesting;\n\nvar _warning = require(\"warning\");\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _safeHTMLElement = require(\"./safeHTMLElement\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar globalElement = null;\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction resetState() {\n if (globalElement) {\n if (globalElement.removeAttribute) {\n globalElement.removeAttribute(\"aria-hidden\");\n } else if (globalElement.length != null) {\n globalElement.forEach(function (element) {\n return element.removeAttribute(\"aria-hidden\");\n });\n } else {\n document.querySelectorAll(globalElement).forEach(function (element) {\n return element.removeAttribute(\"aria-hidden\");\n });\n }\n }\n globalElement = null;\n}\n\n/* istanbul ignore next */\nfunction log() {\n if (process.env.NODE_ENV !== \"production\") {\n var check = globalElement || {};\n console.log(\"ariaAppHider ----------\");\n console.log(check.nodeName, check.className, check.id);\n console.log(\"end ariaAppHider ----------\");\n }\n}\n/* eslint-enable no-console */\n\nfunction assertNodeList(nodeList, selector) {\n if (!nodeList || !nodeList.length) {\n throw new Error(\"react-modal: No elements were found for selector \" + selector + \".\");\n }\n}\n\nfunction setElement(element) {\n var useElement = element;\n if (typeof useElement === \"string\" && _safeHTMLElement.canUseDOM) {\n var el = document.querySelectorAll(useElement);\n assertNodeList(el, useElement);\n useElement = el;\n }\n globalElement = useElement || globalElement;\n return globalElement;\n}\n\nfunction validateElement(appElement) {\n var el = appElement || globalElement;\n if (el) {\n return Array.isArray(el) || el instanceof HTMLCollection || el instanceof NodeList ? el : [el];\n } else {\n (0, _warning2.default)(false, [\"react-modal: App element is not defined.\", \"Please use `Modal.setAppElement(el)` or set `appElement={el}`.\", \"This is needed so screen readers don't see main content\", \"when modal is opened. It is not recommended, but you can opt-out\", \"by setting `ariaHideApp={false}`.\"].join(\" \"));\n\n return [];\n }\n}\n\nfunction hide(appElement) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = validateElement(appElement)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var el = _step.value;\n\n el.setAttribute(\"aria-hidden\", \"true\");\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\n\nfunction show(appElement) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = validateElement(appElement)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var el = _step2.value;\n\n el.removeAttribute(\"aria-hidden\");\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n}\n\nfunction documentNotReadyOrSSRTesting() {\n globalElement = null;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resetState = resetState;\nexports.log = log;\n\nvar _portalOpenInstances = require(\"./portalOpenInstances\");\n\nvar _portalOpenInstances2 = _interopRequireDefault(_portalOpenInstances);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Body focus trap see Issue #742\n\nvar before = void 0,\n after = void 0,\n instances = [];\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction resetState() {\n var _arr = [before, after];\n\n for (var _i = 0; _i < _arr.length; _i++) {\n var item = _arr[_i];\n if (!item) continue;\n item.parentNode && item.parentNode.removeChild(item);\n }\n before = after = null;\n instances = [];\n}\n\n/* istanbul ignore next */\nfunction log() {\n console.log(\"bodyTrap ----------\");\n console.log(instances.length);\n var _arr2 = [before, after];\n for (var _i2 = 0; _i2 < _arr2.length; _i2++) {\n var item = _arr2[_i2];\n var check = item || {};\n console.log(check.nodeName, check.className, check.id);\n }\n console.log(\"edn bodyTrap ----------\");\n}\n/* eslint-enable no-console */\n\nfunction focusContent() {\n if (instances.length === 0) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\"React-Modal: Open instances > 0 expected\");\n }\n return;\n }\n instances[instances.length - 1].focusContent();\n}\n\nfunction bodyTrap(eventType, openInstances) {\n if (!before && !after) {\n before = document.createElement(\"div\");\n before.setAttribute(\"data-react-modal-body-trap\", \"\");\n before.style.position = \"absolute\";\n before.style.opacity = \"0\";\n before.setAttribute(\"tabindex\", \"0\");\n before.addEventListener(\"focus\", focusContent);\n after = before.cloneNode();\n after.addEventListener(\"focus\", focusContent);\n }\n\n instances = openInstances;\n\n if (instances.length > 0) {\n // Add focus trap\n if (document.body.firstChild !== before) {\n document.body.insertBefore(before, document.body.firstChild);\n }\n if (document.body.lastChild !== after) {\n document.body.appendChild(after);\n }\n } else {\n // Remove focus trap\n if (before.parentElement) {\n before.parentElement.removeChild(before);\n }\n if (after.parentElement) {\n after.parentElement.removeChild(after);\n }\n }\n}\n\n_portalOpenInstances2.default.subscribe(bodyTrap);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resetState = resetState;\nexports.log = log;\nvar htmlClassList = {};\nvar docBodyClassList = {};\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction removeClass(at, cls) {\n at.classList.remove(cls);\n}\n\n/* istanbul ignore next */\nfunction resetState() {\n var htmlElement = document.getElementsByTagName(\"html\")[0];\n for (var cls in htmlClassList) {\n removeClass(htmlElement, htmlClassList[cls]);\n }\n\n var body = document.body;\n for (var _cls in docBodyClassList) {\n removeClass(body, docBodyClassList[_cls]);\n }\n\n htmlClassList = {};\n docBodyClassList = {};\n}\n\n/* istanbul ignore next */\nfunction log() {\n if (process.env.NODE_ENV !== \"production\") {\n var classes = document.getElementsByTagName(\"html\")[0].className;\n var buffer = \"Show tracked classes:\\n\\n\";\n\n buffer += \" (\" + classes + \"):\\n \";\n for (var x in htmlClassList) {\n buffer += \" \" + x + \" \" + htmlClassList[x] + \"\\n \";\n }\n\n classes = document.body.className;\n\n buffer += \"\\n\\ndoc.body (\" + classes + \"):\\n \";\n for (var _x in docBodyClassList) {\n buffer += \" \" + _x + \" \" + docBodyClassList[_x] + \"\\n \";\n }\n\n buffer += \"\\n\";\n\n console.log(buffer);\n }\n}\n/* eslint-enable no-console */\n\n/**\n * Track the number of reference of a class.\n * @param {object} poll The poll to receive the reference.\n * @param {string} className The class name.\n * @return {string}\n */\nvar incrementReference = function incrementReference(poll, className) {\n if (!poll[className]) {\n poll[className] = 0;\n }\n poll[className] += 1;\n return className;\n};\n\n/**\n * Drop the reference of a class.\n * @param {object} poll The poll to receive the reference.\n * @param {string} className The class name.\n * @return {string}\n */\nvar decrementReference = function decrementReference(poll, className) {\n if (poll[className]) {\n poll[className] -= 1;\n }\n return className;\n};\n\n/**\n * Track a class and add to the given class list.\n * @param {Object} classListRef A class list of an element.\n * @param {Object} poll The poll to be used.\n * @param {Array} classes The list of classes to be tracked.\n */\nvar trackClass = function trackClass(classListRef, poll, classes) {\n classes.forEach(function (className) {\n incrementReference(poll, className);\n classListRef.add(className);\n });\n};\n\n/**\n * Untrack a class and remove from the given class list if the reference\n * reaches 0.\n * @param {Object} classListRef A class list of an element.\n * @param {Object} poll The poll to be used.\n * @param {Array} classes The list of classes to be untracked.\n */\nvar untrackClass = function untrackClass(classListRef, poll, classes) {\n classes.forEach(function (className) {\n decrementReference(poll, className);\n poll[className] === 0 && classListRef.remove(className);\n });\n};\n\n/**\n * Public inferface to add classes to the document.body.\n * @param {string} bodyClass The class string to be added.\n * It may contain more then one class\n * with ' ' as separator.\n */\nvar add = exports.add = function add(element, classString) {\n return trackClass(element.classList, element.nodeName.toLowerCase() == \"html\" ? htmlClassList : docBodyClassList, classString.split(\" \"));\n};\n\n/**\n * Public inferface to remove classes from the document.body.\n * @param {string} bodyClass The class string to be added.\n * It may contain more then one class\n * with ' ' as separator.\n */\nvar remove = exports.remove = function remove(element, classString) {\n return untrackClass(element.classList, element.nodeName.toLowerCase() == \"html\" ? htmlClassList : docBodyClassList, classString.split(\" \"));\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resetState = resetState;\nexports.log = log;\nexports.handleBlur = handleBlur;\nexports.handleFocus = handleFocus;\nexports.markForFocusLater = markForFocusLater;\nexports.returnFocus = returnFocus;\nexports.popWithoutFocus = popWithoutFocus;\nexports.setupScopedFocus = setupScopedFocus;\nexports.teardownScopedFocus = teardownScopedFocus;\n\nvar _tabbable = require(\"../helpers/tabbable\");\n\nvar _tabbable2 = _interopRequireDefault(_tabbable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar focusLaterElements = [];\nvar modalElement = null;\nvar needToFocus = false;\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction resetState() {\n focusLaterElements = [];\n}\n\n/* istanbul ignore next */\nfunction log() {\n if (process.env.NODE_ENV !== \"production\") {\n console.log(\"focusManager ----------\");\n focusLaterElements.forEach(function (f) {\n var check = f || {};\n console.log(check.nodeName, check.className, check.id);\n });\n console.log(\"end focusManager ----------\");\n }\n}\n/* eslint-enable no-console */\n\nfunction handleBlur() {\n needToFocus = true;\n}\n\nfunction handleFocus() {\n if (needToFocus) {\n needToFocus = false;\n if (!modalElement) {\n return;\n }\n // need to see how jQuery shims document.on('focusin') so we don't need the\n // setTimeout, firefox doesn't support focusin, if it did, we could focus\n // the element outside of a setTimeout. Side-effect of this implementation\n // is that the document.body gets focus, and then we focus our element right\n // after, seems fine.\n setTimeout(function () {\n if (modalElement.contains(document.activeElement)) {\n return;\n }\n var el = (0, _tabbable2.default)(modalElement)[0] || modalElement;\n el.focus();\n }, 0);\n }\n}\n\nfunction markForFocusLater() {\n focusLaterElements.push(document.activeElement);\n}\n\n/* eslint-disable no-console */\nfunction returnFocus() {\n var preventScroll = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var toFocus = null;\n try {\n if (focusLaterElements.length !== 0) {\n toFocus = focusLaterElements.pop();\n toFocus.focus({ preventScroll: preventScroll });\n }\n return;\n } catch (e) {\n console.warn([\"You tried to return focus to\", toFocus, \"but it is not in the DOM anymore\"].join(\" \"));\n }\n}\n/* eslint-enable no-console */\n\nfunction popWithoutFocus() {\n focusLaterElements.length > 0 && focusLaterElements.pop();\n}\n\nfunction setupScopedFocus(element) {\n modalElement = element;\n\n if (window.addEventListener) {\n window.addEventListener(\"blur\", handleBlur, false);\n document.addEventListener(\"focus\", handleFocus, true);\n } else {\n window.attachEvent(\"onBlur\", handleBlur);\n document.attachEvent(\"onFocus\", handleFocus);\n }\n}\n\nfunction teardownScopedFocus() {\n modalElement = null;\n\n if (window.addEventListener) {\n window.removeEventListener(\"blur\", handleBlur);\n document.removeEventListener(\"focus\", handleFocus);\n } else {\n window.detachEvent(\"onBlur\", handleBlur);\n document.detachEvent(\"onFocus\", handleFocus);\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.log = log;\nexports.resetState = resetState;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// Tracks portals that are open and emits events to subscribers\n\nvar PortalOpenInstances = function PortalOpenInstances() {\n var _this = this;\n\n _classCallCheck(this, PortalOpenInstances);\n\n this.register = function (openInstance) {\n if (_this.openInstances.indexOf(openInstance) !== -1) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\"React-Modal: Cannot register modal instance that's already open\");\n }\n return;\n }\n _this.openInstances.push(openInstance);\n _this.emit(\"register\");\n };\n\n this.deregister = function (openInstance) {\n var index = _this.openInstances.indexOf(openInstance);\n if (index === -1) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\"React-Modal: Unable to deregister \" + openInstance + \" as \" + \"it was never registered\");\n }\n return;\n }\n _this.openInstances.splice(index, 1);\n _this.emit(\"deregister\");\n };\n\n this.subscribe = function (callback) {\n _this.subscribers.push(callback);\n };\n\n this.emit = function (eventType) {\n _this.subscribers.forEach(function (subscriber) {\n return subscriber(eventType,\n // shallow copy to avoid accidental mutation\n _this.openInstances.slice());\n });\n };\n\n this.openInstances = [];\n this.subscribers = [];\n};\n\nvar portalOpenInstances = new PortalOpenInstances();\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction log() {\n console.log(\"portalOpenInstances ----------\");\n console.log(portalOpenInstances.openInstances.length);\n portalOpenInstances.openInstances.forEach(function (p) {\n return console.log(p);\n });\n console.log(\"end portalOpenInstances ----------\");\n}\n\n/* istanbul ignore next */\nfunction resetState() {\n portalOpenInstances = new PortalOpenInstances();\n}\n/* eslint-enable no-console */\n\nexports.default = portalOpenInstances;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.canUseDOM = exports.SafeNodeList = exports.SafeHTMLCollection = undefined;\n\nvar _exenv = require(\"exenv\");\n\nvar _exenv2 = _interopRequireDefault(_exenv);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EE = _exenv2.default;\n\nvar SafeHTMLElement = EE.canUseDOM ? window.HTMLElement : {};\n\nvar SafeHTMLCollection = exports.SafeHTMLCollection = EE.canUseDOM ? window.HTMLCollection : {};\n\nvar SafeNodeList = exports.SafeNodeList = EE.canUseDOM ? window.NodeList : {};\n\nvar canUseDOM = exports.canUseDOM = EE.canUseDOM;\n\nexports.default = SafeHTMLElement;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = scopeTab;\n\nvar _tabbable = require(\"./tabbable\");\n\nvar _tabbable2 = _interopRequireDefault(_tabbable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getActiveElement() {\n var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n\n return el.activeElement.shadowRoot ? getActiveElement(el.activeElement.shadowRoot) : el.activeElement;\n}\n\nfunction scopeTab(node, event) {\n var tabbable = (0, _tabbable2.default)(node);\n\n if (!tabbable.length) {\n // Do nothing, since there are no elements that can receive focus.\n event.preventDefault();\n return;\n }\n\n var target = void 0;\n\n var shiftKey = event.shiftKey;\n var head = tabbable[0];\n var tail = tabbable[tabbable.length - 1];\n var activeElement = getActiveElement();\n\n // proceed with default browser behavior on tab.\n // Focus on last element on shift + tab.\n if (node === activeElement) {\n if (!shiftKey) return;\n target = tail;\n }\n\n if (tail === activeElement && !shiftKey) {\n target = head;\n }\n\n if (head === activeElement && shiftKey) {\n target = tail;\n }\n\n if (target) {\n event.preventDefault();\n target.focus();\n return;\n }\n\n // Safari radio issue.\n //\n // Safari does not move the focus to the radio button,\n // so we need to force it to really walk through all elements.\n //\n // This is very error prone, since we are trying to guess\n // if it is a safari browser from the first occurence between\n // chrome or safari.\n //\n // The chrome user agent contains the first ocurrence\n // as the 'chrome/version' and later the 'safari/version'.\n var checkSafari = /(\\bChrome\\b|\\bSafari\\b)\\//.exec(navigator.userAgent);\n var isSafariDesktop = checkSafari != null && checkSafari[1] != \"Chrome\" && /\\biPod\\b|\\biPad\\b/g.exec(navigator.userAgent) == null;\n\n // If we are not in safari desktop, let the browser control\n // the focus\n if (!isSafariDesktop) return;\n\n var x = tabbable.indexOf(activeElement);\n\n if (x > -1) {\n x += shiftKey ? -1 : 1;\n }\n\n target = tabbable[x];\n\n // If the tabbable element does not exist,\n // focus head/tail based on shiftKey\n if (typeof target === \"undefined\") {\n event.preventDefault();\n target = shiftKey ? tail : head;\n target.focus();\n return;\n }\n\n event.preventDefault();\n\n target.focus();\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = findTabbableDescendants;\n/*!\n * Adapted from jQuery UI core\n *\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/category/ui-core/\n */\n\nvar tabbableNode = /input|select|textarea|button|object|iframe/;\n\nfunction hidesContents(element) {\n var zeroSize = element.offsetWidth <= 0 && element.offsetHeight <= 0;\n\n // If the node is empty, this is good enough\n if (zeroSize && !element.innerHTML) return true;\n\n try {\n // Otherwise we need to check some styles\n var style = window.getComputedStyle(element);\n return zeroSize ? style.getPropertyValue(\"overflow\") !== \"visible\" ||\n // if 'overflow: visible' set, check if there is actually any overflow\n element.scrollWidth <= 0 && element.scrollHeight <= 0 : style.getPropertyValue(\"display\") == \"none\";\n } catch (exception) {\n // eslint-disable-next-line no-console\n console.warn(\"Failed to inspect element style\");\n return false;\n }\n}\n\nfunction visible(element) {\n var parentElement = element;\n var rootNode = element.getRootNode && element.getRootNode();\n while (parentElement) {\n if (parentElement === document.body) break;\n\n // if we are not hidden yet, skip to checking outside the Web Component\n if (rootNode && parentElement === rootNode) parentElement = rootNode.host.parentNode;\n\n if (hidesContents(parentElement)) return false;\n parentElement = parentElement.parentNode;\n }\n return true;\n}\n\nfunction focusable(element, isTabIndexNotNaN) {\n var nodeName = element.nodeName.toLowerCase();\n var res = tabbableNode.test(nodeName) && !element.disabled || (nodeName === \"a\" ? element.href || isTabIndexNotNaN : isTabIndexNotNaN);\n return res && visible(element);\n}\n\nfunction tabbable(element) {\n var tabIndex = element.getAttribute(\"tabindex\");\n if (tabIndex === null) tabIndex = undefined;\n var isTabIndexNaN = isNaN(tabIndex);\n return (isTabIndexNaN || tabIndex >= 0) && focusable(element, !isTabIndexNaN);\n}\n\nfunction findTabbableDescendants(element) {\n var descendants = [].slice.call(element.querySelectorAll(\"*\"), 0).reduce(function (finished, el) {\n return finished.concat(!el.shadowRoot ? [el] : findTabbableDescendants(el.shadowRoot));\n }, []);\n return descendants.filter(tabbable);\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Modal = require(\"./components/Modal\");\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _Modal2.default;\nmodule.exports = exports[\"default\"];","/** @license React v17.0.2\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';require(\"object-assign\");var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","/** @license React v17.0.2\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=require(\"object-assign\"),n=60103,p=60106;exports.Fragment=60107;exports.StrictMode=60108;exports.Profiler=60114;var q=60109,r=60110,t=60112;exports.Suspense=60113;var u=60115,v=60116;\nif(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;n=w(\"react.element\");p=w(\"react.portal\");exports.Fragment=w(\"react.fragment\");exports.StrictMode=w(\"react.strict_mode\");exports.Profiler=w(\"react.profiler\");q=w(\"react.provider\");r=w(\"react.context\");t=w(\"react.forward_ref\");exports.Suspense=w(\"react.suspense\");u=w(\"react.memo\");v=w(\"react.lazy\")}var x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){if(null===a||\"object\"!==typeof a)return null;a=x&&a[x]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function z(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125>>1,e=a[d];if(void 0!==e&&0I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + \"b6e36b20\" + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"mortgage-calculator:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"./\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkmortgage_calculator\"] = self[\"webpackChunkmortgage_calculator\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\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}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","/**\n * Escape regex char\n *\n * See: https://stackoverflow.com/questions/17885855/use-dynamic-variable-string-as-regex-pattern-in-javascript\n */\nexport const escapeRegExp = (stringToGoIntoTheRegex: string): string => {\n return stringToGoIntoTheRegex.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n};\n","import { escapeRegExp } from './escapeRegExp';\n\n/**\n * Abbreviate number eg. 1000 = 1k\n *\n * Source: https://stackoverflow.com/a/9345181\n */\nexport const abbrValue = (value: number, decimalSeparator = '.', _decimalPlaces = 10): string => {\n if (value > 999) {\n let valueLength = ('' + value).length;\n const p = Math.pow;\n const d = p(10, _decimalPlaces);\n valueLength -= valueLength % 3;\n\n const abbrValue = Math.round((value * d) / p(10, valueLength)) / d + ' kMGTPE'[valueLength / 3];\n return abbrValue.replace('.', decimalSeparator);\n }\n\n return String(value);\n};\n\ntype AbbrMap = { [key: string]: number };\n\nconst abbrMap: AbbrMap = { k: 1000, m: 1000000, b: 1000000000 };\n\n/**\n * Parse a value with abbreviation e.g 1k = 1000\n */\nexport const parseAbbrValue = (value: string, decimalSeparator = '.'): number | undefined => {\n const reg = new RegExp(`(\\\\d+(${escapeRegExp(decimalSeparator)}\\\\d*)?)([kmb])$`, 'i');\n const match = value.match(reg);\n\n if (match) {\n const [, digits, , abbr] = match;\n const multiplier = abbrMap[abbr.toLowerCase()];\n\n return Number(digits.replace(decimalSeparator, '.')) * multiplier;\n }\n\n return undefined;\n};\n","import { parseAbbrValue } from './parseAbbrValue';\nimport { removeSeparators } from './removeSeparators';\nimport { removeInvalidChars } from './removeInvalidChars';\nimport { escapeRegExp } from './escapeRegExp';\nimport { CurrencyInputProps } from '../CurrencyInputProps';\n\nexport type CleanValueOptions = Pick<\n CurrencyInputProps,\n | 'decimalSeparator'\n | 'groupSeparator'\n | 'allowDecimals'\n | 'decimalsLimit'\n | 'allowNegativeValue'\n | 'disableAbbreviations'\n | 'prefix'\n | 'transformRawValue'\n> & { value: string };\n\n/**\n * Remove prefix, separators and extra decimals from value\n */\nexport const cleanValue = ({\n value,\n groupSeparator = ',',\n decimalSeparator = '.',\n allowDecimals = true,\n decimalsLimit = 2,\n allowNegativeValue = true,\n disableAbbreviations = false,\n prefix = '',\n transformRawValue = (rawValue) => rawValue,\n}: CleanValueOptions): string => {\n const transformedValue = transformRawValue(value);\n\n if (transformedValue === '-') {\n return transformedValue;\n }\n\n const abbreviations = disableAbbreviations ? [] : ['k', 'm', 'b'];\n const reg = new RegExp(`((^|\\\\D)-\\\\d)|(-${escapeRegExp(prefix)})`);\n const isNegative = reg.test(transformedValue);\n\n // Is there a digit before the prefix? eg. 1$\n const [prefixWithValue, preValue] = RegExp(`(\\\\d+)-?${escapeRegExp(prefix)}`).exec(value) || [];\n const withoutPrefix = prefix\n ? prefixWithValue\n ? transformedValue.replace(prefixWithValue, '').concat(preValue)\n : transformedValue.replace(prefix, '')\n : transformedValue;\n const withoutSeparators = removeSeparators(withoutPrefix, groupSeparator);\n const withoutInvalidChars = removeInvalidChars(withoutSeparators, [\n groupSeparator,\n decimalSeparator,\n ...abbreviations,\n ]);\n\n let valueOnly = withoutInvalidChars;\n\n if (!disableAbbreviations) {\n // disallow letter without number\n if (abbreviations.some((letter) => letter === withoutInvalidChars.toLowerCase())) {\n return '';\n }\n const parsed = parseAbbrValue(withoutInvalidChars, decimalSeparator);\n if (parsed) {\n valueOnly = String(parsed);\n }\n }\n\n const includeNegative = isNegative && allowNegativeValue ? '-' : '';\n\n if (decimalSeparator && valueOnly.includes(decimalSeparator)) {\n const [int, decimals] = withoutInvalidChars.split(decimalSeparator);\n const trimmedDecimals = decimalsLimit && decimals ? decimals.slice(0, decimalsLimit) : decimals;\n const includeDecimals = allowDecimals ? `${decimalSeparator}${trimmedDecimals}` : '';\n\n return `${includeNegative}${int}${includeDecimals}`;\n }\n\n return `${includeNegative}${valueOnly}`;\n};\n","import { escapeRegExp } from './escapeRegExp';\n\n/**\n * Remove group separator from value eg. 1,000 > 1000\n */\nexport const removeSeparators = (value: string, separator = ','): string => {\n const reg = new RegExp(escapeRegExp(separator), 'g');\n return value.replace(reg, '');\n};\n","import { escapeRegExp } from './escapeRegExp';\n\n/**\n * Remove invalid characters\n */\nexport const removeInvalidChars = (value: string, validChars: ReadonlyArray): string => {\n const chars = escapeRegExp(validChars.join(''));\n const reg = new RegExp(`[^\\\\d${chars}]`, 'gi');\n return value.replace(reg, '');\n};\n","import { escapeRegExp } from './escapeRegExp';\ntype Options = {\n decimalSeparator?: string;\n groupSeparator?: string;\n};\n\nexport const getSuffix = (\n value: string,\n { groupSeparator = ',', decimalSeparator = '.' }: Options\n): string | undefined => {\n const suffixReg = new RegExp(\n `\\\\d([^${escapeRegExp(groupSeparator)}${escapeRegExp(decimalSeparator)}0-9]+)`\n );\n const suffixMatch = value.match(suffixReg);\n return suffixMatch ? suffixMatch[1] : undefined;\n};\n","import { IntlConfig } from '../CurrencyInputProps';\nimport { escapeRegExp } from './escapeRegExp';\nimport { getSuffix } from './getSuffix';\n\nexport type FormatValueOptions = {\n /**\n * Value to format\n */\n value: string | undefined;\n\n /**\n * Decimal separator\n *\n * Default = '.'\n */\n decimalSeparator?: string;\n\n /**\n * Group separator\n *\n * Default = ','\n */\n groupSeparator?: string;\n\n /**\n * Turn off separators\n *\n * This will override Group separators\n *\n * Default = false\n */\n disableGroupSeparators?: boolean;\n\n /**\n * Intl locale currency config\n */\n intlConfig?: IntlConfig;\n\n /**\n * Specify decimal scale for padding/trimming\n *\n * Eg. 1.5 -> 1.50 or 1.234 -> 1.23\n */\n decimalScale?: number;\n\n /**\n * Prefix\n */\n prefix?: string;\n\n /**\n * Suffix\n */\n suffix?: string;\n};\n\n/**\n * Format value with decimal separator, group separator and prefix\n */\nexport const formatValue = (options: FormatValueOptions): string => {\n const {\n value: _value,\n decimalSeparator,\n intlConfig,\n decimalScale,\n prefix = '',\n suffix = '',\n } = options;\n\n if (_value === '' || _value === undefined) {\n return '';\n }\n\n if (_value === '-') {\n return '-';\n }\n\n const isNegative = new RegExp(`^\\\\d?-${prefix ? `${escapeRegExp(prefix)}?` : ''}\\\\d`).test(\n _value\n );\n\n const value =\n decimalSeparator !== '.'\n ? replaceDecimalSeparator(_value, decimalSeparator, isNegative)\n : _value;\n\n const numberFormatter = intlConfig\n ? new Intl.NumberFormat(\n intlConfig.locale,\n intlConfig.currency\n ? {\n style: 'currency',\n currency: intlConfig.currency,\n minimumFractionDigits: decimalScale || 0,\n maximumFractionDigits: 20,\n }\n : undefined\n )\n : new Intl.NumberFormat(undefined, {\n minimumFractionDigits: decimalScale || 0,\n maximumFractionDigits: 20,\n });\n\n const parts = numberFormatter.formatToParts(Number(value));\n\n let formatted = replaceParts(parts, options);\n\n // Does intl formatting add a suffix?\n const intlSuffix = getSuffix(formatted, { ...options });\n\n // Include decimal separator if user input ends with decimal separator\n const includeDecimalSeparator = _value.slice(-1) === decimalSeparator ? decimalSeparator : '';\n\n const [, decimals] = value.match(RegExp('\\\\d+\\\\.(\\\\d+)')) || [];\n\n // Keep original decimal padding if no decimalScale\n if (decimalScale === undefined && decimals && decimalSeparator) {\n if (formatted.includes(decimalSeparator)) {\n formatted = formatted.replace(\n RegExp(`(\\\\d+)(${escapeRegExp(decimalSeparator)})(\\\\d+)`, 'g'),\n `$1$2${decimals}`\n );\n } else {\n if (intlSuffix && !suffix) {\n formatted = formatted.replace(intlSuffix, `${decimalSeparator}${decimals}${intlSuffix}`);\n } else {\n formatted = `${formatted}${decimalSeparator}${decimals}`;\n }\n }\n }\n\n if (suffix && includeDecimalSeparator) {\n return `${formatted}${includeDecimalSeparator}${suffix}`;\n }\n\n if (intlSuffix && includeDecimalSeparator) {\n return formatted.replace(intlSuffix, `${includeDecimalSeparator}${intlSuffix}`);\n }\n\n if (intlSuffix && suffix) {\n return formatted.replace(intlSuffix, `${includeDecimalSeparator}${suffix}`);\n }\n\n return [formatted, includeDecimalSeparator, suffix].join('');\n};\n\n/**\n * Before converting to Number, decimal separator has to be .\n */\nconst replaceDecimalSeparator = (\n value: string,\n decimalSeparator: FormatValueOptions['decimalSeparator'],\n isNegative: boolean\n): string => {\n let newValue = value;\n if (decimalSeparator && decimalSeparator !== '.') {\n newValue = newValue.replace(RegExp(escapeRegExp(decimalSeparator), 'g'), '.');\n if (isNegative && decimalSeparator === '-') {\n newValue = `-${newValue.slice(1)}`;\n }\n }\n return newValue;\n};\n\nconst replaceParts = (\n parts: Intl.NumberFormatPart[],\n {\n prefix,\n groupSeparator,\n decimalSeparator,\n decimalScale,\n disableGroupSeparators = false,\n }: Pick<\n FormatValueOptions,\n 'prefix' | 'groupSeparator' | 'decimalSeparator' | 'decimalScale' | 'disableGroupSeparators'\n >\n): string => {\n return parts\n .reduce(\n (prev, { type, value }, i) => {\n if (i === 0 && prefix) {\n if (type === 'minusSign') {\n return [value, prefix];\n }\n\n if (type === 'currency') {\n return [...prev, prefix];\n }\n\n return [prefix, value];\n }\n\n if (type === 'currency') {\n return prefix ? prev : [...prev, value];\n }\n\n if (type === 'group') {\n return !disableGroupSeparators\n ? [...prev, groupSeparator !== undefined ? groupSeparator : value]\n : prev;\n }\n\n if (type === 'decimal') {\n if (decimalScale !== undefined && decimalScale === 0) {\n return prev;\n }\n\n return [...prev, decimalSeparator !== undefined ? decimalSeparator : value];\n }\n\n if (type === 'fraction') {\n return [...prev, decimalScale !== undefined ? value.slice(0, decimalScale) : value];\n }\n\n return [...prev, value];\n },\n ['']\n )\n .join('');\n};\n","import { IntlConfig } from '../CurrencyInputProps';\n\ntype LocaleConfig = {\n currencySymbol: string;\n groupSeparator: string;\n decimalSeparator: string;\n prefix: string;\n suffix: string;\n};\n\nconst defaultConfig: LocaleConfig = {\n currencySymbol: '',\n groupSeparator: '',\n decimalSeparator: '',\n prefix: '',\n suffix: '',\n};\n\n/**\n * Get locale config from input or default\n */\nexport const getLocaleConfig = (intlConfig?: IntlConfig): LocaleConfig => {\n const { locale, currency } = intlConfig || {};\n const numberFormatter = locale\n ? new Intl.NumberFormat(locale, currency ? { currency, style: 'currency' } : undefined)\n : new Intl.NumberFormat();\n\n return numberFormatter.formatToParts(1000.1).reduce((prev, curr, i): LocaleConfig => {\n if (curr.type === 'currency') {\n if (i === 0) {\n return { ...prev, currencySymbol: curr.value, prefix: curr.value };\n } else {\n return { ...prev, currencySymbol: curr.value, suffix: curr.value };\n }\n }\n if (curr.type === 'group') {\n return { ...prev, groupSeparator: curr.value };\n }\n if (curr.type === 'decimal') {\n return { ...prev, decimalSeparator: curr.value };\n }\n\n return prev;\n }, defaultConfig);\n};\n","export const isNumber = (input: string): boolean => RegExp(/\\d/, 'gi').test(input);\n","import React, { FC, useState, useEffect, useRef, forwardRef, useMemo } from 'react';\nimport { CurrencyInputProps, CurrencyInputOnChangeValues } from './CurrencyInputProps';\nimport {\n isNumber,\n cleanValue,\n fixedDecimalValue,\n formatValue,\n getLocaleConfig,\n padTrimValue,\n CleanValueOptions,\n getSuffix,\n FormatValueOptions,\n repositionCursor,\n} from './utils';\n\nexport const CurrencyInput: FC = forwardRef<\n HTMLInputElement,\n CurrencyInputProps\n>(\n (\n {\n allowDecimals = true,\n allowNegativeValue = true,\n id,\n name,\n className,\n customInput,\n decimalsLimit,\n defaultValue,\n disabled = false,\n maxLength: userMaxLength,\n value: userValue,\n onValueChange,\n fixedDecimalLength,\n placeholder,\n decimalScale,\n prefix,\n suffix,\n intlConfig,\n step,\n min,\n max,\n disableGroupSeparators = false,\n disableAbbreviations = false,\n decimalSeparator: _decimalSeparator,\n groupSeparator: _groupSeparator,\n onChange,\n onFocus,\n onBlur,\n onKeyDown,\n onKeyUp,\n transformRawValue,\n ...props\n }: CurrencyInputProps,\n ref\n ) => {\n if (_decimalSeparator && isNumber(_decimalSeparator)) {\n throw new Error('decimalSeparator cannot be a number');\n }\n\n if (_groupSeparator && isNumber(_groupSeparator)) {\n throw new Error('groupSeparator cannot be a number');\n }\n\n const localeConfig = useMemo(() => getLocaleConfig(intlConfig), [intlConfig]);\n const decimalSeparator = _decimalSeparator || localeConfig.decimalSeparator || '';\n const groupSeparator = _groupSeparator || localeConfig.groupSeparator || '';\n\n if (\n decimalSeparator &&\n groupSeparator &&\n decimalSeparator === groupSeparator &&\n disableGroupSeparators === false\n ) {\n throw new Error('decimalSeparator cannot be the same as groupSeparator');\n }\n\n const formatValueOptions: Partial = {\n decimalSeparator,\n groupSeparator,\n disableGroupSeparators,\n intlConfig,\n prefix: prefix || localeConfig.prefix,\n suffix: suffix,\n };\n\n const cleanValueOptions: Partial = {\n decimalSeparator,\n groupSeparator,\n allowDecimals,\n decimalsLimit: decimalsLimit || fixedDecimalLength || 2,\n allowNegativeValue,\n disableAbbreviations,\n prefix: prefix || localeConfig.prefix,\n transformRawValue,\n };\n\n const formattedStateValue =\n defaultValue !== undefined && defaultValue !== null\n ? formatValue({ ...formatValueOptions, decimalScale, value: String(defaultValue) })\n : userValue !== undefined && userValue !== null\n ? formatValue({ ...formatValueOptions, decimalScale, value: String(userValue) })\n : '';\n\n const [stateValue, setStateValue] = useState(formattedStateValue);\n const [dirty, setDirty] = useState(false);\n const [cursor, setCursor] = useState(0);\n const [changeCount, setChangeCount] = useState(0);\n const [lastKeyStroke, setLastKeyStroke] = useState(null);\n const inputRef = ref || useRef(null);\n\n /**\n * Process change in value\n */\n const processChange = (value: string, selectionStart?: number | null): void => {\n setDirty(true);\n\n const { modifiedValue, cursorPosition } = repositionCursor({\n selectionStart,\n value,\n lastKeyStroke,\n stateValue,\n groupSeparator,\n });\n\n const stringValue = cleanValue({ value: modifiedValue, ...cleanValueOptions });\n\n if (userMaxLength && stringValue.replace(/-/g, '').length > userMaxLength) {\n return;\n }\n\n if (stringValue === '' || stringValue === '-' || stringValue === decimalSeparator) {\n onValueChange && onValueChange(undefined, name, { float: null, formatted: '', value: '' });\n setStateValue(stringValue);\n return;\n }\n\n const numberValue = parseFloat(stringValue.replace(decimalSeparator, '.'));\n\n const formattedValue = formatValue({\n value: stringValue,\n ...formatValueOptions,\n });\n\n if (cursorPosition !== undefined && cursorPosition !== null) {\n // Prevent cursor jumping\n let newCursor = cursorPosition + (formattedValue.length - value.length);\n newCursor = newCursor <= 0 ? (prefix ? prefix.length : 0) : newCursor;\n\n setCursor(newCursor);\n setChangeCount(changeCount + 1);\n }\n\n setStateValue(formattedValue);\n\n if (onValueChange) {\n const values: CurrencyInputOnChangeValues = {\n float: numberValue,\n formatted: formattedValue,\n value: stringValue,\n };\n onValueChange(stringValue, name, values);\n }\n };\n\n /**\n * Handle change event\n */\n const handleOnChange = (event: React.ChangeEvent): void => {\n const {\n target: { value, selectionStart },\n } = event;\n\n processChange(value, selectionStart);\n\n onChange && onChange(event);\n };\n\n /**\n * Handle focus event\n */\n const handleOnFocus = (event: React.FocusEvent): number => {\n onFocus && onFocus(event);\n return stateValue ? stateValue.length : 0;\n };\n\n /**\n * Handle blur event\n *\n * Format value by padding/trimming decimals if required by\n */\n const handleOnBlur = (event: React.FocusEvent): void => {\n const {\n target: { value },\n } = event;\n\n const valueOnly = cleanValue({ value, ...cleanValueOptions });\n\n if (valueOnly === '-' || !valueOnly) {\n setStateValue('');\n onBlur && onBlur(event);\n return;\n }\n\n const fixedDecimals = fixedDecimalValue(valueOnly, decimalSeparator, fixedDecimalLength);\n\n const newValue = padTrimValue(\n fixedDecimals,\n decimalSeparator,\n decimalScale !== undefined ? decimalScale : fixedDecimalLength\n );\n\n const numberValue = parseFloat(newValue.replace(decimalSeparator, '.'));\n\n const formattedValue = formatValue({\n ...formatValueOptions,\n value: newValue,\n });\n\n if (onValueChange) {\n onValueChange(newValue, name, {\n float: numberValue,\n formatted: formattedValue,\n value: newValue,\n });\n }\n\n setStateValue(formattedValue);\n\n onBlur && onBlur(event);\n };\n\n /**\n * Handle key down event\n *\n * Increase or decrease value by step\n */\n const handleOnKeyDown = (event: React.KeyboardEvent) => {\n const { key } = event;\n\n setLastKeyStroke(key);\n\n if (step && (key === 'ArrowUp' || key === 'ArrowDown')) {\n event.preventDefault();\n setCursor(stateValue.length);\n\n const currentValue =\n parseFloat(\n userValue !== undefined && userValue !== null\n ? String(userValue).replace(decimalSeparator, '.')\n : cleanValue({ value: stateValue, ...cleanValueOptions })\n ) || 0;\n const newValue = key === 'ArrowUp' ? currentValue + step : currentValue - step;\n\n if (min !== undefined && newValue < min) {\n return;\n }\n\n if (max !== undefined && newValue > max) {\n return;\n }\n\n const fixedLength = String(step).includes('.')\n ? Number(String(step).split('.')[1].length)\n : undefined;\n\n processChange(\n String(fixedLength ? newValue.toFixed(fixedLength) : newValue).replace(\n '.',\n decimalSeparator\n )\n );\n }\n\n onKeyDown && onKeyDown(event);\n };\n\n /**\n * Handle key up event\n *\n * Move cursor if there is a suffix to prevent user typing past suffix\n */\n const handleOnKeyUp = (event: React.KeyboardEvent) => {\n const {\n key,\n currentTarget: { selectionStart },\n } = event;\n if (key !== 'ArrowUp' && key !== 'ArrowDown' && stateValue !== '-') {\n const suffix = getSuffix(stateValue, { groupSeparator, decimalSeparator });\n\n if (suffix && selectionStart && selectionStart > stateValue.length - suffix.length) {\n /* istanbul ignore else */\n if (inputRef && typeof inputRef === 'object' && inputRef.current) {\n const newCursor = stateValue.length - suffix.length;\n inputRef.current.setSelectionRange(newCursor, newCursor);\n }\n }\n }\n\n onKeyUp && onKeyUp(event);\n };\n\n useEffect(() => {\n // prevent cursor jumping if editing value\n if (\n dirty &&\n stateValue !== '-' &&\n inputRef &&\n typeof inputRef === 'object' &&\n inputRef.current\n ) {\n inputRef.current.setSelectionRange(cursor, cursor);\n }\n }, [stateValue, cursor, inputRef, dirty, changeCount]);\n\n /**\n * If user has only entered \"-\" or decimal separator,\n * keep the char to allow them to enter next value\n */\n const getRenderValue = () => {\n if (\n userValue !== undefined &&\n userValue !== null &&\n stateValue !== '-' &&\n (!decimalSeparator || stateValue !== decimalSeparator)\n ) {\n return formatValue({\n ...formatValueOptions,\n decimalScale: dirty ? undefined : decimalScale,\n value: String(userValue),\n });\n }\n\n return stateValue;\n };\n\n const inputProps: React.ComponentPropsWithRef<'input'> = {\n type: 'text',\n inputMode: 'decimal',\n id,\n name,\n className,\n onChange: handleOnChange,\n onBlur: handleOnBlur,\n onFocus: handleOnFocus,\n onKeyDown: handleOnKeyDown,\n onKeyUp: handleOnKeyUp,\n placeholder,\n disabled,\n value: getRenderValue(),\n ref: inputRef,\n ...props,\n };\n\n if (customInput) {\n const CustomInput = customInput;\n return ;\n }\n\n return ;\n }\n);\n\nCurrencyInput.displayName = 'CurrencyInput';\n\nexport default CurrencyInput;\n","type RepositionCursorProps = {\n selectionStart?: number | null;\n value: string;\n lastKeyStroke: string | null;\n stateValue?: string;\n groupSeparator?: string;\n};\n\n/**\n * Based on the last key stroke and the cursor position, update the value\n * and reposition the cursor to the right place\n */\nexport const repositionCursor = ({\n selectionStart,\n value,\n lastKeyStroke,\n stateValue,\n groupSeparator,\n}: RepositionCursorProps): {\n modifiedValue: string;\n cursorPosition: number | null | undefined;\n} => {\n let cursorPosition = selectionStart;\n let modifiedValue = value;\n if (stateValue && cursorPosition) {\n const splitValue = value.split('');\n // if cursor is to right of groupSeparator and backspace pressed, delete the character to the left of the separator and reposition the cursor\n if (lastKeyStroke === 'Backspace' && stateValue[cursorPosition] === groupSeparator) {\n splitValue.splice(cursorPosition - 1, 1);\n cursorPosition -= 1;\n }\n // if cursor is to left of groupSeparator and delete pressed, delete the character to the right of the separator and reposition the cursor\n if (lastKeyStroke === 'Delete' && stateValue[cursorPosition] === groupSeparator) {\n splitValue.splice(cursorPosition, 1);\n cursorPosition += 1;\n }\n modifiedValue = splitValue.join('');\n return { modifiedValue, cursorPosition };\n }\n\n return { modifiedValue, cursorPosition: selectionStart };\n};\n","export const fixedDecimalValue = (\n value: string,\n decimalSeparator: string,\n fixedDecimalLength?: number\n): string => {\n if (fixedDecimalLength && value.length > 1) {\n if (value.includes(decimalSeparator)) {\n const [int, decimals] = value.split(decimalSeparator);\n if (decimals.length > fixedDecimalLength) {\n return `${int}${decimalSeparator}${decimals.slice(0, fixedDecimalLength)}`;\n }\n }\n\n const reg =\n value.length > fixedDecimalLength\n ? new RegExp(`(\\\\d+)(\\\\d{${fixedDecimalLength}})`)\n : new RegExp(`(\\\\d)(\\\\d+)`);\n\n const match = value.match(reg);\n if (match) {\n const [, int, decimals] = match;\n return `${int}${decimalSeparator}${decimals}`;\n }\n }\n\n return value;\n};\n","export const padTrimValue = (\n value: string,\n decimalSeparator = '.',\n decimalScale?: number\n): string => {\n if (decimalScale === undefined || value === '' || value === undefined) {\n return value;\n }\n\n if (!value.match(/\\d/g)) {\n return '';\n }\n\n const [int, decimals] = value.split(decimalSeparator);\n\n if (decimalScale === 0) {\n return int;\n }\n\n let newValue = decimals || '';\n\n if (newValue.length < decimalScale) {\n while (newValue.length < decimalScale) {\n newValue += '0';\n }\n } else {\n newValue = newValue.slice(0, decimalScale);\n }\n\n return `${int}${decimalSeparator}${newValue}`;\n};\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import defineProperty from \"./defineProperty.js\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}","import superPropBase from \"./superPropBase.js\";\nexport default function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get.bind();\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get.apply(this, arguments);\n}","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\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.slice(0, 7) === '[object' && type.slice(-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 keyResolvers = {\n '': v => v,\n x: o => o.x,\n y: o => o.y\n};\nfunction resolveObjectKey(obj, key) {\n const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n return resolver(obj);\n}\nfunction _getKeyResolver(key) {\n const keys = _splitKey(key);\n return obj => {\n for (const k of keys) {\n if (k === '') {\n break;\n }\n obj = obj && obj[k];\n }\n return obj;\n };\n}\nfunction _splitKey(key) {\n const parts = key.split('.');\n const keys = [];\n let tmp = '';\n for (const part of parts) {\n tmp += part;\n if (tmp.endsWith('\\\\')) {\n tmp = tmp.slice(0, -1) + '.';\n } else {\n keys.push(tmp);\n tmp = '';\n }\n }\n return keys;\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\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, last) =>\n _lookup(table, value, last\n ? index => table[index][key] <= value\n : 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 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};\nfunction _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n const pointCount = points.length;\n let start = 0;\n let count = pointCount;\n if (meta._sorted) {\n const {iScale, _parsed} = meta;\n const axis = iScale.axis;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(Math.min(\n _lookupByKey(_parsed, iScale.axis, min).lo,\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo),\n 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(\n _lookupByKey(_parsed, iScale.axis, max, true).hi + 1,\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1),\n start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n return {start, count};\n}\nfunction _scaleRangesChanged(meta) {\n const {xScale, yScale, _scaleRanges} = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _scaleRanges.ymax !== yScale.max;\n Object.assign(_scaleRanges, newRanges);\n return changed;\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.2.1\n * https://github.com/kurkle/color#readme\n * (c) 2022 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\nconst map$1 = {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);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n };\n }\n }\n return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v\n ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n : undefined;\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 const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return ((g - b) / d) + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h, s, d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (\n Array.isArray(a)\n ? f(a[0], a[1], a[2])\n : f(a, b, c)\n ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return;\n }\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\nfunction rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\nfunction hslString(v) {\n if (!v) {\n return;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255\n ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n : `hsl(${h}, ${s}%, ${l}%)`;\n}\nconst map = {\n x: 'dark',\n Z: 'light',\n Y: 're',\n X: 'blu',\n W: 'gr',\n V: 'medium',\n U: 'slate',\n A: 'ee',\n T: 'ol',\n S: 'or',\n B: 'ra',\n C: 'lateg',\n D: 'ights',\n R: 'in',\n Q: 'turquois',\n E: 'hi',\n P: 'ro',\n O: 'al',\n N: 'le',\n M: 'de',\n L: 'yello',\n F: 'en',\n K: 'ch',\n G: 'arks',\n H: 'ea',\n I: 'ightg',\n J: 'wh'\n};\nconst names$1 = {\n OiceXe: 'f0f8ff',\n antiquewEte: 'faebd7',\n aqua: 'ffff',\n aquamarRe: '7fffd4',\n azuY: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '0',\n blanKedOmond: 'ffebcd',\n Xe: 'ff',\n XeviTet: '8a2be2',\n bPwn: 'a52a2a',\n burlywood: 'deb887',\n caMtXe: '5f9ea0',\n KartYuse: '7fff00',\n KocTate: 'd2691e',\n cSO: 'ff7f50',\n cSnflowerXe: '6495ed',\n cSnsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: 'ffff',\n xXe: '8b',\n xcyan: '8b8b',\n xgTMnPd: 'b8860b',\n xWay: 'a9a9a9',\n xgYF: '6400',\n xgYy: 'a9a9a9',\n xkhaki: 'bdb76b',\n xmagFta: '8b008b',\n xTivegYF: '556b2f',\n xSange: 'ff8c00',\n xScEd: '9932cc',\n xYd: '8b0000',\n xsOmon: 'e9967a',\n xsHgYF: '8fbc8f',\n xUXe: '483d8b',\n xUWay: '2f4f4f',\n xUgYy: '2f4f4f',\n xQe: 'ced1',\n xviTet: '9400d3',\n dAppRk: 'ff1493',\n dApskyXe: 'bfff',\n dimWay: '696969',\n dimgYy: '696969',\n dodgerXe: '1e90ff',\n fiYbrick: 'b22222',\n flSOwEte: 'fffaf0',\n foYstWAn: '228b22',\n fuKsia: 'ff00ff',\n gaRsbSo: 'dcdcdc',\n ghostwEte: 'f8f8ff',\n gTd: 'ffd700',\n gTMnPd: 'daa520',\n Way: '808080',\n gYF: '8000',\n gYFLw: 'adff2f',\n gYy: '808080',\n honeyMw: 'f0fff0',\n hotpRk: 'ff69b4',\n RdianYd: 'cd5c5c',\n Rdigo: '4b0082',\n ivSy: 'fffff0',\n khaki: 'f0e68c',\n lavFMr: 'e6e6fa',\n lavFMrXsh: 'fff0f5',\n lawngYF: '7cfc00',\n NmoncEffon: 'fffacd',\n ZXe: 'add8e6',\n ZcSO: 'f08080',\n Zcyan: 'e0ffff',\n ZgTMnPdLw: 'fafad2',\n ZWay: 'd3d3d3',\n ZgYF: '90ee90',\n ZgYy: 'd3d3d3',\n ZpRk: 'ffb6c1',\n ZsOmon: 'ffa07a',\n ZsHgYF: '20b2aa',\n ZskyXe: '87cefa',\n ZUWay: '778899',\n ZUgYy: '778899',\n ZstAlXe: 'b0c4de',\n ZLw: 'ffffe0',\n lime: 'ff00',\n limegYF: '32cd32',\n lRF: 'faf0e6',\n magFta: 'ff00ff',\n maPon: '800000',\n VaquamarRe: '66cdaa',\n VXe: 'cd',\n VScEd: 'ba55d3',\n VpurpN: '9370db',\n VsHgYF: '3cb371',\n VUXe: '7b68ee',\n VsprRggYF: 'fa9a',\n VQe: '48d1cc',\n VviTetYd: 'c71585',\n midnightXe: '191970',\n mRtcYam: 'f5fffa',\n mistyPse: 'ffe4e1',\n moccasR: 'ffe4b5',\n navajowEte: 'ffdead',\n navy: '80',\n Tdlace: 'fdf5e6',\n Tive: '808000',\n TivedBb: '6b8e23',\n Sange: 'ffa500',\n SangeYd: 'ff4500',\n ScEd: 'da70d6',\n pOegTMnPd: 'eee8aa',\n pOegYF: '98fb98',\n pOeQe: 'afeeee',\n pOeviTetYd: 'db7093',\n papayawEp: 'ffefd5',\n pHKpuff: 'ffdab9',\n peru: 'cd853f',\n pRk: 'ffc0cb',\n plum: 'dda0dd',\n powMrXe: 'b0e0e6',\n purpN: '800080',\n YbeccapurpN: '663399',\n Yd: 'ff0000',\n Psybrown: 'bc8f8f',\n PyOXe: '4169e1',\n saddNbPwn: '8b4513',\n sOmon: 'fa8072',\n sandybPwn: 'f4a460',\n sHgYF: '2e8b57',\n sHshell: 'fff5ee',\n siFna: 'a0522d',\n silver: 'c0c0c0',\n skyXe: '87ceeb',\n UXe: '6a5acd',\n UWay: '708090',\n UgYy: '708090',\n snow: 'fffafa',\n sprRggYF: 'ff7f',\n stAlXe: '4682b4',\n tan: 'd2b48c',\n teO: '8080',\n tEstN: 'd8bfd8',\n tomato: 'ff6347',\n Qe: '40e0d0',\n viTet: 'ee82ee',\n JHt: 'f5deb3',\n wEte: 'ffffff',\n wEtesmoke: 'f5f5f5',\n Lw: 'ffff00',\n LwgYF: '9acd32'\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names$1);\n const tkeys = Object.keys(map);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return;\n }\n if (m[7] !== r) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n}\nfunction rgbString(v) {\n return v && (\n v.a < 255\n ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n : `rgb(${v.r}, ${v.g}, ${v.b})`\n );\n}\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n var v = {r: 0, g: 0, b: 0, a: 255};\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {r: input[0], g: input[1], b: input[2], a: 255};\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nclass Color {\n constructor(input) {\n if (input instanceof Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\nfunction index_esm(input) {\n return new Color(input);\n}\n\nfunction isPatternOrGradient(value) {\n if (value && typeof value === 'object') {\n const type = value.toString();\n return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n }\n return false;\n}\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 includeInvisible: false\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 drawPointLegend(ctx, options, x, y, null);\n}\nfunction drawPointLegend(ctx, options, x, y, w) {\n let type, xOffset, yOffset, size, cornerRadius, width;\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 if (w) {\n ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n } else {\n ctx.arc(x, y, radius, 0, TAU);\n }\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 width = w ? w / 2 : size;\n ctx.rect(x - width, y - size, 2 * width, 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 = w ? w / 2 : 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 _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}\nfunction _parseObjectDataRadialScale(meta, data, start, count) {\n const {iScale} = meta;\n const {key = 'r'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n r: iScale.parse(resolveObjectKey(item, key), index)\n };\n }\n return parsed;\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(e, canvas) {\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 if ('native' in evt) {\n return evt;\n }\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 { _isPointInArea as $, _factorize as A, finiteOrDefault as B, callback as C, _addGrace as D, _limitValue as E, toDegrees as F, _measureText as G, HALF_PI as H, _int16Range as I, _alignPixel as J, toPadding as K, clipArea as L, renderText as M, unclipArea as N, toFont as O, PI as P, each as Q, _toLeftRightCenter as R, _alignStartEnd as S, TAU as T, overrides as U, merge as V, _capitalize as W, getRelativePosition as X, _rlookupByKey as Y, _lookupByKey as Z, _arrayUnique as _, resolve as a, toLineHeight as a$, getAngleFromPoint as a0, getMaximumSize as a1, _getParentNode as a2, readUsedSize as a3, throttled as a4, supportsEventListenerOptions as a5, _isDomSupported as a6, descriptors as a7, isFunction as a8, _attachContext as a9, getRtlAdapter as aA, overrideTextDirection as aB, _textX as aC, restoreTextDirection as aD, drawPointLegend as aE, noop as aF, distanceBetweenPoints as aG, _setMinAndMaxByKey as aH, niceNum as aI, almostWhole as aJ, almostEquals as aK, _decimalPlaces as aL, _longestText as aM, _filterBetween as aN, _lookup as aO, isPatternOrGradient as aP, getHoverColor as aQ, clone$1 as aR, _merger as aS, _mergerIf as aT, _deprecated as aU, _splitKey as aV, toFontString as aW, splineCurve as aX, splineCurveMonotone as aY, getStyle as aZ, fontString as a_, _createResolver as aa, _descriptors as ab, mergeIf as ac, uid as ad, debounce as ae, retinaScale as af, clearCanvas as ag, setsEqual as ah, _elementsEqual as ai, _isClickEvent as aj, _isBetween as ak, _readValueToProps as al, _updateBezierControlPoints as am, _computeSegments as an, _boundSegments as ao, _steppedInterpolation as ap, _bezierInterpolation as aq, _pointInLine as ar, _steppedLineTo as as, _bezierCurveTo as at, drawPoint as au, addRoundedRectPath as av, toTRBL as aw, toTRBLCorners as ax, _boundSegment as ay, _normalizeAngle as az, isArray as b, PITAU as b0, INFINITY as b1, RAD_PER_DEG as b2, QUARTER_PI as b3, TWO_THIRDS_PI as b4, _angleDiff as b5, 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, _getStartAndCountOfVisiblePoints as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _scaleRangesChanged as w, isNumber as x, _parseObjectDataRadialScale as y, log10 as z };\n","/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, d as defaults, i as isObject, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as createContext, j as defined, s as sign, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as _getStartAndCountOfVisiblePoints, w as _scaleRangesChanged, x as isNumber, y as _parseObjectDataRadialScale, z as log10, A as _factorize, B as finiteOrDefault, C as callback, D as _addGrace, E as _limitValue, F as toDegrees, G as _measureText, I as _int16Range, J as _alignPixel, K as toPadding, L as clipArea, M as renderText, N as unclipArea, O as toFont, Q as each, R as _toLeftRightCenter, S as _alignStartEnd, U as overrides, V as merge, W as _capitalize, X as getRelativePosition, Y as _rlookupByKey, Z as _lookupByKey, $ as _isPointInArea, a0 as getAngleFromPoint, a1 as getMaximumSize, a2 as _getParentNode, a3 as readUsedSize, a4 as throttled, a5 as supportsEventListenerOptions, a6 as _isDomSupported, a7 as descriptors, a8 as isFunction, a9 as _attachContext, aa as _createResolver, ab as _descriptors, ac as mergeIf, ad as uid, ae as debounce, af as retinaScale, ag as clearCanvas, ah as setsEqual, ai as _elementsEqual, aj as _isClickEvent, ak as _isBetween, al as _readValueToProps, am as _updateBezierControlPoints, an as _computeSegments, ao as _boundSegments, ap as _steppedInterpolation, aq as _bezierInterpolation, ar as _pointInLine, as as _steppedLineTo, at as _bezierCurveTo, au as drawPoint, av as addRoundedRectPath, aw as toTRBL, ax as toTRBLCorners, ay as _boundSegment, az as _normalizeAngle, aA as getRtlAdapter, aB as overrideTextDirection, aC as _textX, aD as restoreTextDirection, aE as drawPointLegend, aF as noop, aG as distanceBetweenPoints, aH as _setMinAndMaxByKey, aI as niceNum, aJ as almostWhole, aK as almostEquals, aL as _decimalPlaces, aM as _longestText, aN as _filterBetween, aO as _lookup } from './chunks/helpers.segment.mjs';\nexport { d as defaults } from './chunks/helpers.segment.mjs';\n\nclass Animator {\n constructor() {\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n callbacks.forEach(fn => fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n this._request = requestAnimFrame.call(window, () => {\n this._update();\n this._request = null;\n if (this._running) {\n this._refresh();\n }\n });\n }\n _update(date = Date.now()) {\n let remaining = 0;\n this._charts.forEach((anims, chart) => {\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n for (; i >= 0; --i) {\n item = items[i];\n if (item._active) {\n if (item._total > anims.duration) {\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n remaining += items.length;\n });\n this._lastDate = date;\n if (remaining === 0) {\n this._running = false;\n }\n }\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n for (; i >= 0; --i) {\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\nvar animator = new Animator();\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean(from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n color(from, to, factor) {\n const c0 = color(from || transparent);\n const c1 = c0.valid && color(to || transparent);\n return c1 && c1.valid\n ? c1.mix(c0, factor).hexString()\n : to;\n },\n number(from, to, factor) {\n return from + (to - from) * factor;\n }\n};\nclass Animation {\n constructor(cfg, target, prop, to) {\n const currentValue = target[prop];\n to = resolve([cfg.to, to, currentValue, cfg.from]);\n const from = resolve([cfg.from, currentValue, to]);\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n active() {\n return this._active;\n }\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n this._from = resolve([cfg.from, currentValue, to]);\n }\n }\n cancel() {\n if (this._active) {\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n this._active = from !== to && (loop || (elapsed < duration));\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n factor = (elapsed / duration) % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n this._target[prop] = this._fn(from, to, factor);\n }\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej) => {\n promises.push({res, rej});\n });\n }\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for (let i = 0; i < promises.length; i++) {\n promises[i][method]();\n }\n }\n}\n\nconst numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\ndefaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined,\n});\nconst animationOptions = Object.keys(defaults.animation);\ndefaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n});\ndefaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n },\n});\ndefaults.describe('animations', {\n _fallback: 'animation',\n});\ndefaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0\n },\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: v => v | 0\n },\n }\n }\n});\nclass Animations {\n constructor(chart, config) {\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n const animatedProps = this._properties;\n Object.getOwnPropertyNames(config).forEach(key => {\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions) {\n resolved[option] = cfg[option];\n }\n (isArray(cfg.properties) && cfg.properties || [key]).forEach((prop) => {\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(() => {\n target.options = newOptions;\n }, () => {\n });\n }\n return animations;\n }\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n for (i = props.length - 1; i >= 0; --i) {\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n if (animation) {\n if (cfg && animation.active()) {\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n target[prop] = value;\n continue;\n }\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n update(target, values) {\n if (this._properties.size === 0) {\n Object.assign(target, values);\n return;\n }\n const animations = this._createAnimations(target, values);\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for (let i = 0; i < keys.length; i++) {\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});\n }\n return options;\n}\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\nfunction toClip(value) {\n let t, r, b, l;\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n keys.push(metasets[i].index);\n }\n return keys;\n}\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n if (value === null) {\n return;\n }\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isNumberFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n value += otherValue;\n }\n }\n return value;\n}\nfunction convertObjectDataToArray(data) {\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n adata[i] = {\n x: key,\n y: data[key]\n };\n }\n return adata;\n}\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || (stacked === undefined && meta.stack !== undefined);\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n const {min, max, minDefined, maxDefined} = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n const value = stack[meta.index];\n if ((positive && value > 0) || (!positive && value < 0)) {\n return meta.index;\n }\n }\n return null;\n}\nfunction updateStacks(controller, parsed) {\n const {chart, _cachedMeta: meta} = controller;\n const stacks = chart._stacks || (chart._stacks = {});\n const {iScale, vScale, index: datasetIndex} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n for (let i = 0; i < ilen; ++i) {\n const item = parsed[i];\n const {[iAxis]: index, [vAxis]: value} = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n }\n}\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n return createContext(parent,\n {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n }\n );\n}\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\nfunction clearStacks(meta, items) {\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n items = items || meta._parsed;\n for (const parsed of items) {\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n }\n}\nconst isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked\n && {keys: getSortedDatasetIndices(chart, true), values: null};\nclass DatasetController {\n constructor(chart, datasetIndex) {\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.supportsDecimation = false;\n this.$context = undefined;\n this._syncList = [];\n this.initialize();\n }\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n }\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale\n ? meta.vScale\n : meta.iScale;\n }\n reset() {\n this._update('reset');\n }\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n if (isObject(data)) {\n this._data = convertObjectDataToArray(data);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, this);\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n addElements() {\n const meta = this._cachedMeta;\n this._dataCheck();\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n this._dataCheck();\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n this._resyncElements(resetNewElements);\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n }\n }\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n parse(start, count) {\n const {_cachedMeta: meta, _data: data} = this;\n const {iScale, _stacked} = meta;\n const iAxis = iScale.axis;\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]);\n for (i = 0; i < count; ++i) {\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n parsePrimitiveData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]\n };\n return applyStack(stack, value, meta.index, {mode});\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n const {min: otherMin, max: otherMax} = getUserBounds(otherScale);\n let i, parsed;\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n for (i = 0; i < ilen; ++i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n break;\n }\n }\n if (sorted) {\n for (i = ilen - 1; i >= 0; --i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n value = parsed[i][scale.axis];\n if (isNumberFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n getMaxOverflow() {\n return false;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n update(mode) {}\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || (elements.length - start);\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n for (i = start; i < start + count; ++i) {\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n for (i = 0; i < active.length; ++i) {\n active[i].draw(ctx, area);\n }\n }\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset\n ? this.resolveDatasetElementOptions(mode)\n : this.resolveDataElementOptions(index || 0, mode);\n }\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context ||\n (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context ||\n (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n const context = () => this.getContext(index, active);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n if (values.$shared) {\n values.$shared = sharing;\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n return values;\n }\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n _getSharedOptions(start, mode) {\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const previouslySharedOptions = this._sharedOptions;\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions) || (sharedOptions !== previouslySharedOptions);\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n return {sharedOptions, includeOptions};\n }\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n options: (!active && this.getSharedOptions(options)) || options\n });\n }\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n for (const [method, arg1, arg2] of this._syncList) {\n this[method](arg1, arg2);\n }\n this._syncList = [];\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n if (count) {\n this.parse(0, count);\n }\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n const move = (arr) => {\n arr.length += count;\n for (i = arr.length - 1; i >= end; i--) {\n arr[i] = arr[i - count];\n }\n };\n move(data);\n for (i = start; i < end; ++i) {\n data[i] = new this.dataElementType();\n }\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n updateElements(element, start, count, mode) {}\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([this.index, ...args]);\n }\n _onDataPush() {\n const count = arguments.length;\n this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n }\n _onDataPop() {\n this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n }\n _onDataShift() {\n this._sync(['_removeElements', 0, 1]);\n }\n _onDataSplice(start, count) {\n if (count) {\n this._sync(['_removeElements', start, count]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync(['_insertElements', start, newCount]);\n }\n }\n _onDataUnshift() {\n this._sync(['_insertElements', 0, arguments.length]);\n }\n}\nDatasetController.defaults = {};\nDatasetController.prototype.datasetElementType = null;\nDatasetController.prototype.dataElementType = null;\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n }\n return scale._cache.$bar;\n}\nfunction computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = () => {\n if (curr === 32767 || curr === -32768) {\n return;\n }\n if (defined(prev)) {\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n for (i = 0, ilen = values.length; i < ilen; ++i) {\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n prev = undefined;\n for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n return min;\n}\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n size = thickness * stackCount;\n ratio = 1;\n }\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - (size / 2)\n };\n}\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n if (prev === null) {\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n if (next === null) {\n next = curr + curr - prev;\n }\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n item[vScale.axis] = barEnd;\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {start, end, reverse, top, bottom};\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n if (edge === true) {\n properties.borderSkipped = {top: true, right: true, bottom: true, left: true};\n return;\n }\n const {start, end, reverse, top, bottom} = borderProps(properties);\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, {inflateAmount}, ratio) {\n properties.inflateAmount = inflateAmount === 'auto'\n ? ratio === 1 ? 0.33 : 0\n : inflateAmount;\n}\nclass BarController extends DatasetController {\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseObjectData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n getMaxOverflow() {\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {iScale, vScale} = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom)\n ? '[' + custom.start + ', ' + custom.end + ']'\n : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const {index, _cachedMeta: {vScale}} = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n for (let i = start; i < start + count; i++) {\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom),\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n _getStacks(last, dataIndex) {\n const {iScale} = this._cachedMeta;\n const metasets = iScale.getMatchingVisibleMetas(this._type)\n .filter(meta => meta.controller.options.grouped);\n const stacked = iScale.options.stacked;\n const stacks = [];\n const skipNull = (meta) => {\n const parsed = meta.controller.getParsed(dataIndex);\n const val = parsed && parsed[meta.vScale.axis];\n if (isNullOrUndef(val) || isNaN(val)) {\n return true;\n }\n };\n for (const meta of metasets) {\n if (dataIndex !== undefined && skipNull(meta)) {\n continue;\n }\n if (stacked === false || stacks.indexOf(meta.stack) === -1 ||\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\n stacks.push(meta.stack);\n }\n if (meta.index === last) {\n break;\n }\n }\n if (!stacks.length) {\n stacks.push(undefined);\n }\n return stacks;\n }\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = (name !== undefined)\n ? stacks.indexOf(name)\n : -1;\n return (index === -1)\n ? stacks.length - 1\n : index;\n }\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n _calculateBarValuePixels(index) {\n const {_cachedMeta: {vScale, _stacked}, options: {base: baseValue, minBarLength}} = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n if (length !== value) {\n start = length - value;\n length = value;\n }\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n head = base;\n }\n size = head - base;\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n const startPixel = vScale.getPixelForDecimal(0);\n const endPixel = vScale.getPixelForDecimal(1);\n const min = Math.min(startPixel, endPixel);\n const max = Math.max(startPixel, endPixel);\n base = Math.max(Math.min(base, max), min);\n head = base + size;\n }\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex'\n ? computeFlexCategoryTraits(index, ruler, options, stackCount)\n : computeFitCategoryTraits(index, ruler, options, stackCount);\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n for (; i < ilen; ++i) {\n if (this.getParsed(i)[vScale.axis] !== null) {\n rects[i].draw(this._ctx);\n }\n }\n }\n}\nBarController.id = 'bar';\nBarController.defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'base', 'width', 'height']\n }\n }\n};\nBarController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true,\n }\n }\n};\n\nclass BubbleController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {xScale, yScale} = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n return {\n label: meta.label,\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n update(mode) {\n const points = this._cachedMeta.data;\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n if (reset) {\n properties.options.radius = 0;\n }\n }\n this.updateElement(point, i, properties, mode);\n }\n }\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n if (values.$shared) {\n values = Object.assign({}, values, {$shared: false});\n }\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n return values;\n }\n}\nBubbleController.id = 'bubble';\nBubbleController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'borderWidth', 'radius']\n }\n }\n};\nBubbleController.overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n }\n }\n }\n }\n};\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {ratioX, ratioY, offsetX, offsetY};\n}\nclass DoughnutController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n linkScales() {}\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = (i) => +data[i];\n if (isObject(data[start])) {\n const {key = 'value'} = this._parsing;\n getter = (i) => +resolveObjectKey(data[i], key);\n }\n let i, ilen;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n meta._parsed[i] = getter(i);\n }\n }\n }\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n return {\n rotation: min,\n circumference: max - min,\n };\n }\n update(mode) {\n const chart = this.chart;\n const {chartArea} = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n const {circumference, rotation} = this._getRotationExtents();\n const {ratioX, ratioY, offsetX, offsetY} = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n meta.total = this.calculateTotal();\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if ((reset && opts.animation.animateRotate) || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n let startAngle = this._getRotation();\n let i;\n for (i = 0; i < start; ++i) {\n startAngle += this._circumference(i, reset);\n }\n for (i = start; i < start + count; ++i) {\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n this.updateElement(arc, i, properties, mode);\n }\n }\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n for (i = 0; i < metaData.length; i++) {\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n return total;\n }\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n if (!arcs) {\n for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n if (!arcs) {\n return 0;\n }\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n getMaxOffset(arcs) {\n let max = 0;\n for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n for (let i = 0; i < datasetIndex; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n return ringWeightOffset;\n }\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\nDoughnutController.id = 'doughnut';\nDoughnutController.defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n },\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n spacing: 0,\n indexAxis: 'r',\n};\nDoughnutController.descriptors = {\n _scriptable: (name) => name !== 'spacing',\n _indexable: (name) => name !== 'spacing',\n};\nDoughnutController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(tooltipItem) {\n let dataLabel = tooltipItem.label;\n const value = ': ' + tooltipItem.formattedValue;\n if (isArray(dataLabel)) {\n dataLabel = dataLabel.slice();\n dataLabel[0] += value;\n } else {\n dataLabel += value;\n }\n return dataLabel;\n }\n }\n }\n }\n};\n\nclass LineController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n this.supportsDecimation = true;\n super.initialize();\n }\n update(mode) {\n const meta = this._cachedMeta;\n const {dataset: line, data: points = [], _dataset} = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n this.updateElements(points, start, count, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\nLineController.id = 'line';\nLineController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false,\n};\nLineController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n },\n _value_: {\n type: 'linear',\n },\n }\n};\n\nclass PolarAreaController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const arcs = this._cachedMeta.data;\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n getMinMax() {\n const meta = this._cachedMeta;\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n meta.data.forEach((element, index) => {\n const parsed = this.getParsed(index).r;\n if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n if (parsed < range.min) {\n range.min = parsed;\n }\n if (parsed > range.max) {\n range.max = parsed;\n }\n }\n });\n return range;\n }\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? (outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n this.outerRadius = outerRadius - (radiusLength * this.index);\n this.innerRadius = this.outerRadius - radiusLength;\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n const defaultAngle = 360 / this.countVisibleElements();\n for (i = 0; i < start; ++i) {\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for (i = start; i < start + count; i++) {\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n angle = endAngle;\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n this.updateElement(arc, i, properties, mode);\n }\n }\n countVisibleElements() {\n const meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index) => {\n if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n return count;\n }\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index)\n ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n : 0;\n }\n}\nPolarAreaController.id = 'polarArea';\nPolarAreaController.defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n },\n },\n indexAxis: 'r',\n startAngle: 0,\n};\nPolarAreaController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(context) {\n return context.chart.data.labels[context.dataIndex] + ': ' + context.formattedValue;\n }\n }\n }\n },\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n};\n\nclass PieController extends DoughnutController {\n}\nPieController.id = 'pie';\nPieController.defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n};\n\nclass RadarController extends DatasetController {\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n line.points = points;\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n this.updateElement(line, undefined, properties, mode);\n }\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n this.updateElement(point, i, properties, mode);\n }\n }\n}\nRadarController.id = 'radar';\nRadarController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n },\n};\nRadarController.overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear',\n }\n }\n};\n\nclass Element {\n constructor() {\n this.x = undefined;\n this.y = undefined;\n this.active = false;\n this.options = undefined;\n this.$animations = undefined;\n }\n tooltipPosition(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n getProps(props, final) {\n const anims = this.$animations;\n if (!final || !anims) {\n return this;\n }\n const ret = {};\n props.forEach(prop => {\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n });\n return ret;\n }\n}\nElement.defaults = {};\nElement.defaultRoutes = undefined;\n\nconst formatters = {\n values(value) {\n return isArray(value) ? value : '' + value;\n },\n numeric(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue;\n if (ticks.length > 1) {\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n delta = calculateDelta(tickValue, ticks);\n }\n const logDelta = log10(Math.abs(delta));\n const numDecimal = Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n Object.assign(options, this.options.ticks.format);\n return formatNumber(tickValue, locale, options);\n },\n logarithmic(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = tickValue / (Math.pow(10, Math.floor(log10(tickValue))));\n if (remain === 1 || remain === 2 || remain === 5) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n};\nfunction calculateDelta(tickValue, ticks) {\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\nvar Ticks = {formatters};\n\ndefaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n bounds: 'ticks',\n grace: 0,\n grid: {\n display: true,\n lineWidth: 1,\n drawBorder: true,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options) => options.lineWidth,\n tickColor: (_ctx, options) => options.color,\n offset: false,\n borderDash: [],\n borderDashOffset: 0.0,\n borderWidth: 1\n },\n title: {\n display: false,\n text: '',\n padding: {\n top: 4,\n bottom: 4\n }\n },\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2,\n }\n});\ndefaults.route('scale.ticks', 'color', '', 'color');\ndefaults.route('scale.grid', 'color', '', 'borderColor');\ndefaults.route('scale.grid', 'borderColor', '', 'borderColor');\ndefaults.route('scale.title', 'color', '', 'color');\ndefaults.describe('scale', {\n _fallback: false,\n _scriptable: (name) => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: (name) => name !== 'borderDash' && name !== 'tickBorderDash',\n});\ndefaults.describe('scales', {\n _fallback: 'scale',\n});\ndefaults.describe('scale.ticks', {\n _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name) => name !== 'backdropPadding',\n});\n\nfunction autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const ticksLimit = tickOpts.maxTicksLimit || determineMaxTicks(scale);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n const factors = _factorize(evenMajorSpacing);\n for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\nfunction getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n spacing = Math.ceil(spacing);\n for (i = 0; i < ticks.length; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n next = start;\n while (next < 0) {\n count++;\n next = Math.round(start + count * spacing);\n }\n for (i = Math.max(start, 0); i < end; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\nfunction getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n if (len < 2) {\n return false;\n }\n for (diff = arr[0], i = 1; i < len; ++i) {\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n\nconst reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nfunction sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n for (; i < len; i += increment) {\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6;\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\nfunction garbageCollect(caches, length) {\n each(caches, (cache) => {\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for (i = 0; i < gcLen; ++i) {\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\nfunction getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\nfunction getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n return (lines * font.lineHeight) + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\nfunction titleAlign(align, position, reverse) {\n let ret = _toLeftRightCenter(align);\n if ((reverse && position !== 'right') || (!reverse && position === 'right')) {\n ret = reverseAlign(ret);\n }\n return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n const {top, left, bottom, right, chart} = scale;\n const {chartArea, scales} = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {titleX, titleY, maxWidth, rotation};\n}\nclass Scale extends Element {\n constructor(cfg) {\n super();\n this.id = cfg.id;\n this.type = cfg.type;\n this.options = undefined;\n this.ctx = cfg.ctx;\n this.chart = cfg.chart;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this.maxWidth = undefined;\n this.maxHeight = undefined;\n this.paddingTop = undefined;\n this.paddingBottom = undefined;\n this.paddingLeft = undefined;\n this.paddingRight = undefined;\n this.axis = undefined;\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n this.ticks = [];\n this._gridLineItems = null;\n this._labelItems = null;\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n this._startPixel = undefined;\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n init(options) {\n this.options = options.setContext(this.getContext());\n this.axis = options.axis;\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n parse(raw, index) {\n return raw;\n }\n getUserBounds() {\n let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isNumberFinite(_userMin),\n maxDefined: isNumberFinite(_userMax)\n };\n }\n getMinMax(canStack) {\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n let range;\n if (minDefined && maxDefined) {\n return {min, max};\n }\n const metas = this.getMatchingVisibleMetas();\n for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n getTicks() {\n return this.ticks;\n }\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n beforeUpdate() {\n callback(this.options.beforeUpdate, [this]);\n }\n update(maxWidth, maxHeight, margins) {\n const {beginAtZero, grace, ticks: tickOpts} = this.options;\n const sampleSize = tickOpts.sampleSize;\n this.beforeUpdate();\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n this._maxLength = this.isHorizontal()\n ? this.width + margins.left + margins.right\n : this.height + margins.top + margins.bottom;\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n this.beforeBuildTicks();\n this.ticks = this.buildTicks() || [];\n this.afterBuildTicks();\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n this.configure();\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation();\n this.afterCalculateLabelRotation();\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n this.afterAutoSkip();\n }\n if (samplingEnabled) {\n this._convertTicksToLabels(this.ticks);\n }\n this.beforeFit();\n this.fit();\n this.afterFit();\n this.afterUpdate();\n }\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n afterUpdate() {\n callback(this.options.afterUpdate, [this]);\n }\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [this]);\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = 0;\n this.bottom = this.height;\n }\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n callback(this.options.afterSetDimensions, [this]);\n }\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n callback(this.options[name], [this]);\n }\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n beforeTickToLabelConversion() {\n callback(this.options.beforeTickToLabelConversion, [this]);\n }\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n tick = ticks[i];\n tick.label = callback(tickOpts.callback, [tick.value, i, ticks], this);\n }\n }\n afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [this]);\n }\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [this]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = this.ticks.length;\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(\n Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n ));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [this]);\n }\n afterAutoSkip() {}\n beforeFit() {\n callback(this.options.beforeFit, [this]);\n }\n fit() {\n const minSize = {\n width: 0,\n height: 0\n };\n const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight;\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n if (tickOpts.display && this.ticks.length) {\n const {first, last, widest, highest} = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n if (isHorizontal) {\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n this._handleMargins();\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n _calculatePadding(first, last, sin, cos) {\n const {ticks: {align, padding}, position} = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else if (align !== 'inner') {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n afterFit() {\n callback(this.options.afterFit, [this]);\n }\n isHorizontal() {\n const {axis, position} = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n isFullSize() {\n return this.options.fullSize;\n }\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n this.generateTickLabels(ticks);\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n this.afterTickToLabelConversion();\n }\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length);\n }\n return labelSizes;\n }\n _computeLabelSizes(ticks, length) {\n const {ctx, _longestTextCache: caches} = this;\n const widths = [];\n const heights = [];\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n for (i = 0; i < length; ++i) {\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n for (j = 0, jlen = label.length; j < jlen; ++j) {\n nestedLabel = label[j];\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0});\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights,\n };\n }\n getLabelForValue(value) {\n return value;\n }\n getPixelForValue(value, index) {\n return NaN;\n }\n getValueForPixel(pixel) {}\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n getBaseValue() {\n const {min, max} = this;\n return min < 0 && max < 0 ? max :\n min > 0 && max > 0 ? min :\n 0;\n }\n getContext(index) {\n const ticks = this.ticks || [];\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context ||\n\t\t\t(this.$context = createScaleContext(this.chart.getContext(), this));\n }\n _tickSize() {\n const optionTicks = this.options.ticks;\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n return this.isHorizontal()\n ? h * cos > w * sin ? w / cos : h / sin\n : h * sin < w * cos ? h / cos : w / sin;\n }\n _isVisible() {\n const display = this.options.display;\n if (display !== 'auto') {\n return !!display;\n }\n return this.getMatchingVisibleMetas().length > 0;\n }\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const {grid, position} = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = borderOpts.drawBorder ? borderOpts.borderWidth : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for (i = 0; i < ticksLength; i += step) {\n const optsAtIndex = grid.setContext(this.getContext(i));\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = optsAtIndex.borderDash || [];\n const borderDashOffset = optsAtIndex.borderDashOffset;\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n lineValue = getPixelForGridLine(this, i, offset);\n if (lineValue === undefined) {\n continue;\n }\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset,\n });\n }\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n return items;\n }\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const {position, ticks: optionTicks} = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const {align, crossAlign, padding, mirror} = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n const labelSizes = this._getLabelSizes();\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n label = tick.label;\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n let tickTextAlign = textAlign;\n if (isHorizontal) {\n x = pixel;\n if (textAlign === 'inner') {\n if (i === ilen - 1) {\n tickTextAlign = !this.options.reverse ? 'right' : 'left';\n } else if (i === 0) {\n tickTextAlign = !this.options.reverse ? 'left' : 'right';\n } else {\n tickTextAlign = 'center';\n }\n }\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n let backdrop;\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n let top = y + textOffset - labelPadding.top;\n let left = x - labelPadding.left;\n switch (textBaseline) {\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n }\n switch (textAlign) {\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n }\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n color: optsAtIndex.backdropColor,\n };\n }\n items.push({\n rotation,\n label,\n font,\n color,\n strokeColor,\n strokeWidth,\n textOffset,\n textAlign: tickTextAlign,\n textBaseline,\n translation: [x, y],\n backdrop,\n });\n }\n return items;\n }\n _getXAxisLabelAlignment() {\n const {position, ticks} = this.options;\n const rotation = -toRadians(this.labelRotation);\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n let align = 'center';\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n } else if (ticks.align === 'inner') {\n align = 'inner';\n }\n return align;\n }\n _getYAxisLabelAlignment(tl) {\n const {position, ticks: {crossAlign, mirror, padding}} = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n let textAlign;\n let x;\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += (widest / 2);\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n return {textAlign, x};\n }\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n const chart = this.chart;\n const position = this.options.position;\n if (position === 'left' || position === 'right') {\n return {top: 0, left: this.left, bottom: chart.height, right: this.right};\n } if (position === 'top' || position === 'bottom') {\n return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\n }\n }\n drawBackground() {\n const {ctx, options: {backgroundColor}, left, top, width, height} = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex(t => t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n const drawLine = (p1, p2, style) => {\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n if (grid.display) {\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n if (grid.drawOnChartArea) {\n drawLine(\n {x: item.x1, y: item.y1},\n {x: item.x2, y: item.y2},\n item\n );\n }\n if (grid.drawTicks) {\n drawLine(\n {x: item.tx1, y: item.ty1},\n {x: item.tx2, y: item.ty2},\n {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n }\n );\n }\n }\n }\n }\n drawBorder() {\n const {chart, ctx, options: {grid}} = this;\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = grid.drawBorder ? borderOpts.borderWidth : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.borderWidth;\n ctx.strokeStyle = borderOpts.borderColor;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n ctx.restore();\n }\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n if (!optionTicks.display) {\n return;\n }\n const ctx = this.ctx;\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n const tickFont = item.font;\n const label = item.label;\n if (item.backdrop) {\n ctx.fillStyle = item.backdrop.color;\n ctx.fillRect(item.backdrop.left, item.backdrop.top, item.backdrop.width, item.backdrop.height);\n }\n let y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, item);\n }\n if (area) {\n unclipArea(ctx);\n }\n }\n drawTitle() {\n const {ctx, options: {position, title, reverse}} = this;\n if (!title.display) {\n return;\n }\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align);\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n return [{\n z: tz,\n draw: (chartArea) => {\n this.draw(chartArea);\n }\n }];\n }\n return [{\n z: gz,\n draw: (chartArea) => {\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n }, {\n z: gz + 1,\n draw: () => {\n this.drawBorder();\n }\n }, {\n z: tz,\n draw: (chartArea) => {\n this.drawLabels(chartArea);\n }\n }];\n }\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n\nclass TypedRegistry {\n constructor(type, scope, override) {\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n if (isIChartComponent(proto)) {\n parentScope = this.register(proto);\n }\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n if (id in items) {\n return scope;\n }\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n return scope;\n }\n get(id) {\n return this.items[id];\n }\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n if (id in items) {\n delete items[id];\n }\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\nfunction registerDefaults(item, scope, parentScope) {\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n defaults.set(scope, itemDefaults);\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach(property => {\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [scope].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n\nclass Registry {\n constructor() {\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n this._typedRegistries = [this.controllers, this.scales, this.elements];\n }\n add(...args) {\n this._each('register', args);\n }\n remove(...args) {\n this._each('unregister', args);\n }\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n _each(method, args, typedRegistry) {\n [...args].forEach(arg => {\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) {\n this._exec(method, reg, arg);\n } else {\n each(arg, item => {\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n callback(component['before' + camelMethod], [], component);\n registry[method](component);\n callback(component['after' + camelMethod], [], component);\n }\n _getRegistryForType(type) {\n for (let i = 0; i < this._typedRegistries.length; i++) {\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n return this.plugins;\n }\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n}\nvar registry = new Registry();\n\nclass ScatterController extends DatasetController {\n update(mode) {\n const meta = this._cachedMeta;\n const {data: points = []} = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n if (this.options.showLine) {\n const {dataset: line, _dataset} = meta;\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n }\n this.updateElements(points, start, count, mode);\n }\n addElements() {\n const {showLine} = this.options;\n if (!this.datasetElementType && showLine) {\n this.datasetElementType = registry.getElement('line');\n }\n super.addElements();\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const data = meta.data || [];\n if (!this.options.showLine) {\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n}\nScatterController.id = 'scatter';\nScatterController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n showLine: false,\n fill: false\n};\nScatterController.overrides = {\n interaction: {\n mode: 'point'\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(item) {\n return '(' + item.label + ', ' + item.formattedValue + ')';\n }\n }\n }\n },\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n};\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPolarAreaController: PolarAreaController,\nPieController: PieController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\nfunction abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\nclass DateAdapter {\n constructor(options) {\n this.options = options || {};\n }\n init(chartOptions) {}\n formats() {\n return abstract();\n }\n parse(value, format) {\n return abstract();\n }\n format(timestamp, format) {\n return abstract();\n }\n add(timestamp, amount, unit) {\n return abstract();\n }\n diff(a, b, unit) {\n return abstract();\n }\n startOf(timestamp, unit, weekday) {\n return abstract();\n }\n endOf(timestamp, unit) {\n return abstract();\n }\n}\nDateAdapter.override = function(members) {\n Object.assign(DateAdapter.prototype, members);\n};\nvar adapters = {\n _date: DateAdapter\n};\n\nfunction binarySearch(metaset, axis, value, intersect) {\n const {controller, data, _sorted} = metaset;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {lo: start.lo, hi: end.hi};\n }\n }\n }\n return {lo: 0, hi: data.length - 1};\n}\nfunction evaluateInteractionItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n const {index, data} = metasets[i];\n const {lo, hi} = binarySearch(metasets[i], axis, value, intersect);\n for (let j = lo; j <= hi; ++j) {\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\nfunction getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\nfunction getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n const items = [];\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n const evaluationFunc = function(element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({element, datasetIndex, index});\n }\n };\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n function evaluationFunc(element, datasetIndex, index) {\n const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({element, datasetIndex, index});\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n if (!pointInArea && !inRange) {\n return;\n }\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [{element, datasetIndex, index}];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({element, datasetIndex, index});\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n return axis === 'r' && !intersect\n ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\nfunction getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n const items = [];\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index) => {\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({element, datasetIndex, index});\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\nvar Interaction = {\n evaluateInteractionItems,\n modes: {\n index(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const includeInvisible = options.includeInvisible || false;\n const items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible)\n : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n const elements = [];\n if (!items.length) {\n return [];\n }\n chart.getSortedVisibleDatasetMetas().forEach((meta) => {\n const index = items[0].index;\n const element = meta.data[index];\n if (element && !element.skip) {\n elements.push({element, datasetIndex: meta.index, index});\n }\n });\n return elements;\n },\n dataset(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n let items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) :\n getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for (let i = 0; i < data.length; ++i) {\n items.push({element: data[i], datasetIndex, index: i});\n }\n }\n return items;\n },\n point(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n nearest(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n x(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n y(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n }\n }\n};\n\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\nfunction filterByPosition(array, position) {\n return array.filter(v => v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b) => {\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ?\n v0.index - v1.index :\n v0.weight - v1.weight;\n });\n}\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n box = boxes[i];\n ({position: pos, options: {stack, stackWeight = 1}} = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && (pos + stack),\n stackWeight\n });\n }\n return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts) {\n const {stack, pos, stackWeight} = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0});\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\nfunction setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const {vBoxMaxWidth, hBoxMaxHeight} = params;\n let i, ilen, layout;\n for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n layout = layouts[i];\n const {fullSize} = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n const {pos, box} = layout;\n const maxPadding = chartArea.maxPadding;\n if (!isObject(pos)) {\n if (layout.size) {\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {size: 0, count: 1};\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n return layout.horizontal\n ? {same: widthChanged, other: heightChanged}\n : {same: heightChanged, other: widthChanged};\n}\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n function marginForPositions(positions) {\n const margin = {left: 0, top: 0, right: 0, bottom: 0};\n positions.forEach((pos) => {\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n return horizontal\n ? marginForPositions(['left', 'right'])\n : marginForPositions(['top', 'bottom']);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n box.update(\n layout.width || chartArea.w,\n layout.height || chartArea.h,\n getMargins(layout.horizontal, chartArea)\n );\n const {same, other} = updateDims(chartArea, params, layout, stacks);\n refit |= same && refitBoxes.length;\n changed = changed || other;\n if (!box.fullSize) {\n refitBoxes.push(layout);\n }\n }\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let {x, y} = chartArea;\n for (const layout of boxes) {\n const box = layout.box;\n const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1};\n const weight = (layout.stackWeight / stack.weight) || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n chartArea.x = x;\n chartArea.y = y;\n}\ndefaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n});\nvar layouts = {\n addBox(chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n item._layers = item._layers || function() {\n return [{\n z: 0,\n draw(chartArea) {\n item.draw(chartArea);\n }\n }];\n };\n chart.boxes.push(item);\n },\n removeBox(chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n configure(chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n update(chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n each(chart.boxes, box => {\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) =>\n wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n handleMaxPadding(chartArea);\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w,\n };\n each(boxes.chartArea, (layout) => {\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0});\n });\n }\n};\n\nclass BasePlatform {\n acquireContext(canvas, aspectRatio) {}\n releaseContext(context) {\n return false;\n }\n addEventListener(chart, type, listener) {}\n removeEventListener(chart, type, listener) {}\n getDevicePixelRatio() {\n return 1;\n }\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n isAttached(canvas) {\n return true;\n }\n updateConfig(config) {\n }\n}\n\nclass BasicPlatform extends BasePlatform {\n acquireContext(item) {\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n\nconst EXPANDO_KEY = '$chartjs';\nconst EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\nconst isNullOrEmpty = value => value === null || value === '';\nfunction initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n style.display = style.display || 'block';\n style.boxSizing = style.boxSizing || 'border-box';\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\nfunction addListener(node, type, listener) {\n node.addEventListener(type, listener, eventListenerOptions);\n}\nfunction removeListener(chart, type, listener) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n}\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const {x, y} = getRelativePosition(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null,\n };\n}\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList) {\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart) => {\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height) => {\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n listener();\n }\n }, window);\n const observer = new ResizeObserver(entries => {\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event) => {\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart, (args) => {\n const event = args[0];\n return [event, event.offsetX, event.offsetY];\n });\n addListener(canvas, type, proxy);\n return proxy;\n}\nclass DomPlatform extends BasePlatform {\n acquireContext(canvas, aspectRatio) {\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n if (context && context.canvas === canvas) {\n initCanvas(canvas, aspectRatio);\n return context;\n }\n return null;\n }\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n const initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach((prop) => {\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n const style = initial.style || {};\n Object.keys(style).forEach((key) => {\n canvas.style[key] = style[key];\n });\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n return true;\n }\n addEventListener(chart, type, listener) {\n this.removeEventListener(chart, type);\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n if (!proxy) {\n return;\n }\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n isAttached(canvas) {\n const container = _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n\nfunction _detectPlatform(canvas) {\n if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nclass PluginService {\n constructor() {\n this._init = [];\n }\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors) {\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [chart, args, descriptor.options];\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n return true;\n }\n invalidate() {\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n const descriptors = this._cache = this._createDescriptors(chart);\n this._notifyStateChanges(chart);\n return descriptors;\n }\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\nfunction allPlugins(config) {\n const localIds = {};\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for (let i = 0; i < keys.length; i++) {\n plugins.push(registry.getPlugin(keys[i]));\n }\n const local = config.plugins || [];\n for (let i = 0; i < local.length; i++) {\n const plugin = local[i];\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n localIds[plugin.id] = true;\n }\n }\n return {plugins, localIds};\n}\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\nfunction createDescriptors(chart, {plugins, localIds}, options, all) {\n const result = [];\n const context = chart.getContext();\n for (const plugin of plugins) {\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, {plugin, local: localIds[id]}, opts, context)\n });\n }\n return result;\n}\nfunction pluginOpts(config, {plugin, local}, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n if (local && plugin.defaults) {\n scopes.push(plugin.defaults);\n }\n return config.createResolver(scopes, context, [''], {\n scriptable: false,\n indexable: false,\n allKeys: true\n });\n}\n\nfunction getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\nfunction determineAxis(id, scaleOptions) {\n if (id === 'x' || id === 'y') {\n return id;\n }\n return scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.charAt(0).toLowerCase();\n}\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {scales: {}};\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const firstIDs = Object.create(null);\n const scales = Object.create(null);\n Object.keys(configScales).forEach(id => {\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n firstIDs[axis] = firstIDs[axis] || id;\n scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n });\n config.data.datasets.forEach(dataset => {\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach(defaultID => {\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || firstIDs[axis] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n });\n });\n Object.keys(scales).forEach(key => {\n const scale = scales[key];\n mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n });\n return scales;\n}\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n initOptions(config);\n return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\nconst addIfFound = (set, obj, key) => {\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\nclass Config {\n constructor(config) {\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n get platform() {\n return this._config.platform;\n }\n get type() {\n return this._config.type;\n }\n set type(type) {\n this._config.type = type;\n }\n get data() {\n return this._config.data;\n }\n set data(data) {\n this._config.data = initData(data);\n }\n get options() {\n return this._config.options;\n }\n set options(options) {\n this._config.options = options;\n }\n get plugins() {\n return this._config.plugins;\n }\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType,\n () => [[\n `datasets.${datasetType}`,\n ''\n ]]);\n }\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`,\n () => [\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`,\n ],\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`,\n () => [[\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]]);\n }\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`,\n () => [[\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || [],\n ]]);\n }\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n getOptionScopes(mainScope, keyLists, resetCache) {\n const {options, type} = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n const scopes = new Set();\n keyLists.forEach(keys => {\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach(key => addIfFound(scopes, mainScope, key));\n }\n keys.forEach(key => addIfFound(scopes, options, key));\n keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach(key => addIfFound(scopes, defaults, key));\n keys.forEach(key => addIfFound(scopes, descriptors, key));\n });\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n chartOptionScopes() {\n const {options, type} = this;\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {},\n {type},\n defaults,\n descriptors\n ];\n }\n resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n const result = {$shared: true};\n const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n for (const prop of names) {\n result[prop] = options[prop];\n }\n return result;\n }\n createResolver(scopes, context, prefixes = [''], descriptorDefaults) {\n const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context)\n ? _attachContext(resolver, context, undefined, descriptorDefaults)\n : resolver;\n }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\nconst hasFunction = value => isObject(value)\n && Object.getOwnPropertyNames(value).reduce((acc, key) => acc || isFunction(value[key]), false);\nfunction needContext(proxy, names) {\n const {isScriptable, isIndexable} = _descriptors(proxy);\n for (const prop of names) {\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if ((scriptable && (isFunction(value) || hasFunction(value)))\n || (indexable && isArray(value))) {\n return true;\n }\n }\n return false;\n}\n\nvar version = \"3.9.1\";\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x');\n}\nfunction compare2Level(l1, l2) {\n return function(a, b) {\n return a[l1] === b[l1]\n ? a[l2] - b[l2]\n : a[l1] - b[l1];\n };\n}\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n chart.notifyPlugins('afterRender');\n callback(animationOptions && animationOptions.onComplete, [context], chart);\n}\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [context], chart);\n}\nfunction getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n item = item[0];\n }\n if (item && item.canvas) {\n item = item.canvas;\n }\n return item;\n}\nconst instances = {};\nconst getChart = (key) => {\n const canvas = getCanvas(key);\n return Object.values(instances).filter((c) => c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys) {\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\nclass Chart {\n constructor(item, userConfig) {\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error(\n 'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.'\n );\n }\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n instances[this.id] = this;\n if (!context || !canvas) {\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n get aspectRatio() {\n const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this;\n if (!isNullOrUndef(aspectRatio)) {\n return aspectRatio;\n }\n if (maintainAspectRatio && _aspectRatio) {\n return _aspectRatio;\n }\n return height ? width / height : null;\n }\n get data() {\n return this.config.data;\n }\n set data(data) {\n this.config.data = data;\n }\n get options() {\n return this._options;\n }\n set options(options) {\n this.config.options = options;\n }\n _initialize() {\n this.notifyPlugins('beforeInit');\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n this.bindEvents();\n this.notifyPlugins('afterInit');\n return this;\n }\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n stop() {\n animator.stop(this);\n return this;\n }\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {width, height};\n }\n }\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n this.notifyPlugins('resize', {size: newSize});\n callback(options.onResize, [this, newSize], this);\n if (this.attached) {\n if (this._doResize(mode)) {\n this.render();\n }\n }\n }\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n each(scalesOptions, (axisOptions, axisID) => {\n axisOptions.id = axisID;\n });\n }\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id) => {\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n if (scaleOpts) {\n items = items.concat(\n Object.keys(scaleOpts).map((id) => {\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n })\n );\n }\n each(items, (item) => {\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n scale.init(scaleOptions, options);\n });\n each(updated, (hasUpdated, id) => {\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n each(scales, (scale) => {\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n metasets.sort((a, b) => a.index - b.index);\n if (numMeta > numData) {\n for (let i = numData; i < numMeta; ++i) {\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n _removeUnreferencedMetasets() {\n const {_metasets: metasets, data: {datasets}} = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index) => {\n if (datasets.filter(x => x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n this._removeUnreferencedMetasets();\n for (i = 0, ilen = datasets.length; i < ilen; i++) {\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const {datasetElementType, dataElementType} = defaults.datasets[type];\n Object.assign(ControllerClass.prototype, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n this._updateMetasets();\n return newControllers;\n }\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex) => {\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n update(mode) {\n const config = this.config;\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n this._plugins.invalidate();\n if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n const newControllers = this.buildOrUpdateControllers();\n this.notifyPlugins('beforeElementsUpdate');\n let minPadding = 0;\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n const {controller} = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n if (!animsDisabled) {\n each(newControllers, (controller) => {\n controller.reset();\n });\n }\n this._updateDatasets(mode);\n this.notifyPlugins('afterUpdate', {mode});\n this._layers.sort(compare2Level('z', '_idx'));\n const {_active, _lastEvent} = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n this.render();\n }\n _updateScales() {\n each(this.scales, (scale) => {\n layouts.removeBox(this, scale);\n });\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n this.unbindEvents();\n this.bindEvents();\n }\n }\n _updateHiddenIndices() {\n const {_hiddenIndices} = this;\n const changes = this._getUniformDataChanges() || [];\n for (const {method, start, count} of changes) {\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = (idx) => new Set(\n _dataChanges\n .filter(c => c[0] === idx)\n .map((c, i) => i + ',' + c.splice(1).join(','))\n );\n const changeSet = makeSet(0);\n for (let i = 1; i < datasetCount; i++) {\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet)\n .map(c => c.split(','))\n .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n }\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) {\n return;\n }\n layouts.update(this, this.width, this.height, minPadding);\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n this._layers = [];\n each(this.boxes, (box) => {\n if (noArea && box.position === 'chartArea') {\n return;\n }\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n this._layers.forEach((item, index) => {\n item._idx = index;\n });\n this.notifyPlugins('afterLayout');\n }\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this.getDatasetMeta(i).controller.configure();\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._updateDataset(i, isFunction(mode) ? mode({datasetIndex: i}) : mode);\n }\n this.notifyPlugins('afterDatasetsUpdate', {mode});\n }\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {meta, index, mode, cancelable: true};\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n meta.controller._update(mode);\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n render() {\n if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) {\n return;\n }\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({chart: this});\n }\n }\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const {width, height} = this._resizeBeforeDraw;\n this._resize(width, height);\n this._resizeBeforeDraw = null;\n }\n this.clear();\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) {\n return;\n }\n const layers = this._layers;\n for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n layers[i].draw(this.chartArea);\n }\n this._drawDatasets();\n for (; i < layers.length; ++i) {\n layers[i].draw(this.chartArea);\n }\n this.notifyPlugins('afterDraw');\n }\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n return result;\n }\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) {\n return;\n }\n const metasets = this.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n this._drawDataset(metasets[i]);\n }\n this.notifyPlugins('afterDatasetsDraw');\n }\n _drawDataset(meta) {\n const ctx = this.ctx;\n const clip = meta._clip;\n const useClip = !clip.disabled;\n const area = this.chartArea;\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n if (useClip) {\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? this.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n });\n }\n meta.controller.draw();\n if (useClip) {\n unclipArea(ctx);\n }\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n isPointInArea(point) {\n return _isPointInArea(point, this.chartArea, this._minPadding);\n }\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n return [];\n }\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n return meta;\n }\n getContext() {\n return this.$context || (this.$context = createContext(null, {chart: this, type: 'chart'}));\n }\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n const meta = this.getDatasetMeta(datasetIndex);\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n anims.update(meta, {visible});\n this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._destroyDatasetMeta(i);\n }\n }\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const {canvas, ctx} = this;\n this._stop();\n this.config.clearCache();\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n this.notifyPlugins('destroy');\n delete instances[this.id];\n this.notifyPlugins('afterDestroy');\n }\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const listener = (e, x, y) => {\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n each(this.options.events, (type) => _add(type, listener));\n }\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener) => {\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n const listener = (width, height) => {\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n let detached;\n const attached = () => {\n _remove('attach', attached);\n this.attached = true;\n this.resize();\n _add('resize', listener);\n _add('detach', detached);\n };\n detached = () => {\n this.attached = false;\n _remove('resize', listener);\n this._stop();\n this._resize(0, 0);\n _add('attach', attached);\n };\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n unbindEvents() {\n each(this._listeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n each(this._responsiveListeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n if (changed) {\n this._active = active;\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: this.isPointInArea(e)\n };\n const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type);\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n const changed = this._handleEvent(e, replay, args.inChartArea);\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n if (changed || args.changed) {\n this.render();\n }\n return this;\n }\n _handleEvent(e, replay, inChartArea) {\n const {_active: lastActive = [], options} = this;\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n if (inChartArea) {\n this._lastEvent = null;\n callback(options.onHover, [e, active, this], this);\n if (isClick) {\n callback(options.onClick, [e, active, this], this);\n }\n }\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n this._lastEvent = lastEvent;\n return changed;\n }\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\nconst invalidatePlugins = () => each(Chart.instances, (chart) => chart._plugins.invalidate());\nconst enumerable = true;\nObject.defineProperties(Chart, {\n defaults: {\n enumerable,\n value: defaults\n },\n instances: {\n enumerable,\n value: instances\n },\n overrides: {\n enumerable,\n value: overrides\n },\n registry: {\n enumerable,\n value: registry\n },\n version: {\n enumerable,\n value: version\n },\n getChart: {\n enumerable,\n value: getChart\n },\n register: {\n enumerable,\n value: (...items) => {\n registry.add(...items);\n invalidatePlugins();\n }\n },\n unregister: {\n enumerable,\n value: (...items) => {\n registry.remove(...items);\n invalidatePlugins();\n }\n }\n});\n\nfunction clipArc(ctx, element, endAngle) {\n const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n let angleMargin = pixelMargin / outerRadius;\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\nfunction parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n const computeOuterLimit = (val) => {\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit),\n };\n}\nfunction rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta),\n };\n}\nfunction pathArc(ctx, element, offset, spacing, end, circular) {\n const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element;\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n let spacingOffset = 0;\n const alpha = end - start;\n if (spacing) {\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? (alpha * avNogSpacingRadius) / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const {outerStart, outerEnd, innerStart, innerEnd} = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle);\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n ctx.beginPath();\n if (circular) {\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerEndAdjustedAngle);\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n if (innerEnd > 0) {\n const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), startAngle + (innerStart / innerRadius), true);\n if (innerStart > 0) {\n const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n if (outerStart > 0) {\n const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n } else {\n ctx.moveTo(x, y);\n const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerStartX, outerStartY);\n const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerEndX, outerEndY);\n }\n ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing, circular) {\n const {fullCircles, startAngle, circumference} = element;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, startAngle + TAU, circular);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + circumference % TAU;\n if (circumference % TAU === 0) {\n endAngle += TAU;\n }\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.fill();\n return endAngle;\n}\nfunction drawFullCircleBorders(ctx, element, inner) {\n const {x, y, startAngle, pixelMargin, fullCircles} = element;\n const outerRadius = Math.max(element.outerRadius - pixelMargin, 0);\n const innerRadius = element.innerRadius + pixelMargin;\n let i;\n if (inner) {\n clipArc(ctx, element, startAngle + TAU);\n }\n ctx.beginPath();\n ctx.arc(x, y, innerRadius, startAngle + TAU, startAngle, true);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle, startAngle + TAU);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n}\nfunction drawBorder(ctx, element, offset, spacing, endAngle, circular) {\n const {options} = element;\n const {borderWidth, borderJoinStyle} = options;\n const inner = options.borderAlign === 'inner';\n if (!borderWidth) {\n return;\n }\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n if (element.fullCircles) {\n drawFullCircleBorders(ctx, element, inner);\n }\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.stroke();\n}\nclass ArcElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(chartX, chartY, useFinalPosition) {\n const point = this.getProps(['x', 'y'], useFinalPosition);\n const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});\n const {startAngle, endAngle, innerRadius, outerRadius, circumference} = this.getProps([\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const rAdjust = this.options.spacing / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n return (betweenAngles && withinRadius);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference',\n ], useFinalPosition);\n const {offset, spacing} = this.options;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n tooltipPosition(useFinalPosition) {\n return this.getCenterPoint(useFinalPosition);\n }\n draw(ctx) {\n const {options, circumference} = this;\n const offset = (options.offset || 0) / 2;\n const spacing = (options.spacing || 0) / 2;\n const circular = options.circular;\n this.pixelMargin = (options.borderAlign === 'inner') ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n ctx.save();\n let radiusOffset = 0;\n if (offset) {\n radiusOffset = offset / 2;\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * radiusOffset, Math.sin(halfAngle) * radiusOffset);\n if (this.circumference >= PI) {\n radiusOffset = offset;\n }\n }\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n const endAngle = drawArc(ctx, this, radiusOffset, spacing, circular);\n drawBorder(ctx, this, radiusOffset, spacing, endAngle, circular);\n ctx.restore();\n }\n}\nArcElement.id = 'arc';\nArcElement.defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n circular: true,\n};\nArcElement.defaultRoutes = {\n backgroundColor: 'backgroundColor'\n};\n\nfunction setStyle(ctx, options, style = options) {\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\nfunction getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n return lineTo;\n}\nfunction pathVars(points, segment, params = {}) {\n const count = points.length;\n const {start: paramsStart = 0, end: paramsEnd = count - 1} = params;\n const {start: segmentStart, end: segmentEnd} = segment;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\nfunction pathSegment(ctx, line, segment, params) {\n const {points, options} = line;\n const {count, start, loop, ilen} = pathVars(points, segment, params);\n const lineMethod = getLineMethod(options);\n let {move = true, reverse} = params || {};\n let i, point, prev;\n for (i = 0; i <= ilen; ++i) {\n point = points[(start + (reverse ? ilen - i : i)) % count];\n if (point.skip) {\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n prev = point;\n }\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n return !!loop;\n}\nfunction fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const {count, start, ilen} = pathVars(points, segment, params);\n const {move = true, reverse} = params || {};\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count;\n const drawX = () => {\n if (minY !== maxY) {\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n ctx.lineTo(avgX, lastY);\n }\n };\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n for (i = 0; i <= ilen; ++i) {\n point = points[pointIndex(i)];\n if (point.skip) {\n continue;\n }\n const x = point.x;\n const y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n ctx.lineTo(x, y);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n lastY = y;\n }\n drawX();\n}\nfunction _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\nfunction _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n const {segments, options} = line;\n const segmentMethod = _getSegmentMethod(line);\n for (const segment of segments) {\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {start, end: start + count - 1})) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\nconst usePath2D = typeof Path2D === 'function';\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\nclass LineElement extends Element {\n constructor(cfg) {\n super();\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n get points() {\n return this._points;\n }\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {property, start: value, end: value});\n if (!segments.length) {\n return;\n }\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for (i = 0, ilen = segments.length; i < ilen; ++i) {\n const {start, end} = segments[i];\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n start = start || 0;\n count = count || (this.points.length - start);\n for (const segment of segments) {\n loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1});\n }\n return !!loop;\n }\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n if (points.length && options.borderWidth) {\n ctx.save();\n draw(ctx, this, start, count);\n ctx.restore();\n }\n if (this.animated) {\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\nLineElement.id = 'line';\nLineElement.defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0,\n};\nLineElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\nLineElement.descriptors = {\n _scriptable: true,\n _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n};\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n const options = el.options;\n const {[axis]: value} = el.getProps([axis], useFinalPosition);\n return (Math.abs(pos - value) < options.radius + options.hitRadius);\n}\nclass PointElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n const options = this.options;\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return ((Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2)) < Math.pow(options.hitRadius + options.radius, 2));\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange$1(this, mouseX, 'x', useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange$1(this, mouseY, 'y', useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n size(options) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n draw(ctx, area) {\n const options = this.options;\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n getRange() {\n const options = this.options || {};\n return options.radius + options.hitRadius;\n }\n}\nPointElement.id = 'point';\nPointElement.defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n};\nPointElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nfunction getBarBounds(bar, useFinalPosition) {\n const {x, y, base, width, height} = bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition);\n let left, right, top, bottom, half;\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n return {left, top, right, bottom};\n}\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\nfunction parseBorderRadius(bar, maxW, maxH) {\n const {enableBorderRadius} = bar.getProps(['enableBorderRadius']);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n const enableBorder = enableBorderRadius || isObject(value);\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)),\n }\n }\n };\n}\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n return bounds\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\nfunction addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\nclass BarElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n draw(ctx) {\n const {inflateAmount, options: {borderColor, backgroundColor}} = this;\n const {inner, outer} = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n ctx.save();\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, base, horizontal} = this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition);\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\nBarElement.id = 'bar';\nBarElement.defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n};\nBarElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nvar elements = /*#__PURE__*/Object.freeze({\n__proto__: null,\nArcElement: ArcElement,\nLineElement: LineElement,\nPointElement: PointElement,\nBarElement: BarElement\n});\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n const samples = options.samples || availableWidth;\n if (samples >= count) {\n return data.slice(start, start + count);\n }\n const decimated = [];\n const bucketWidth = (count - 2) / (samples - 2);\n let sampledIndex = 0;\n const endIndex = start + count - 1;\n let a = start;\n let i, maxAreaPoint, maxArea, area, nextA;\n decimated[sampledIndex++] = data[a];\n for (i = 0; i < samples - 2; i++) {\n let avgX = 0;\n let avgY = 0;\n let j;\n const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n const avgRangeLength = avgRangeEnd - avgRangeStart;\n for (j = avgRangeStart; j < avgRangeEnd; j++) {\n avgX += data[j].x;\n avgY += data[j].y;\n }\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n const {x: pointAx, y: pointAy} = data[a];\n maxArea = area = -1;\n for (j = rangeOffs; j < rangeTo; j++) {\n area = 0.5 * Math.abs(\n (pointAx - avgX) * (data[j].y - pointAy) -\n (pointAx - data[j].x) * (avgY - pointAy)\n );\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n decimated[sampledIndex++] = data[endIndex];\n return decimated;\n}\nfunction minMaxDecimation(data, start, count, availableWidth) {\n let avgX = 0;\n let countX = 0;\n let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n const decimated = [];\n const endIndex = start + count - 1;\n const xMin = data[start].x;\n const xMax = data[endIndex].x;\n const dx = xMax - xMin;\n for (i = start; i < start + count; ++i) {\n point = data[i];\n x = (point.x - xMin) / dx * availableWidth;\n y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n minIndex = i;\n } else if (y > maxY) {\n maxY = y;\n maxIndex = i;\n }\n avgX = (countX * avgX + point.x) / ++countX;\n } else {\n const lastIndex = i - 1;\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n const intermediateIndex1 = Math.min(minIndex, maxIndex);\n const intermediateIndex2 = Math.max(minIndex, maxIndex);\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex1],\n x: avgX,\n });\n }\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex2],\n x: avgX\n });\n }\n }\n if (i > 0 && lastIndex !== startIndex) {\n decimated.push(data[lastIndex]);\n }\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n return decimated;\n}\nfunction cleanDecimatedDataset(dataset) {\n if (dataset._decimated) {\n const data = dataset._data;\n delete dataset._decimated;\n delete dataset._data;\n Object.defineProperty(dataset, 'data', {value: data});\n }\n}\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach((dataset) => {\n cleanDecimatedDataset(dataset);\n });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n const pointCount = points.length;\n let start = 0;\n let count;\n const {iScale} = meta;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n return {start, count};\n}\nvar plugin_decimation = {\n id: 'decimation',\n defaults: {\n algorithm: 'min-max',\n enabled: false,\n },\n beforeElementsUpdate: (chart, args, options) => {\n if (!options.enabled) {\n cleanDecimatedData(chart);\n return;\n }\n const availableWidth = chart.width;\n chart.data.datasets.forEach((dataset, datasetIndex) => {\n const {_data, indexAxis} = dataset;\n const meta = chart.getDatasetMeta(datasetIndex);\n const data = _data || dataset.data;\n if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n return;\n }\n if (!meta.controller.supportsDecimation) {\n return;\n }\n const xAxis = chart.scales[meta.xAxisID];\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n return;\n }\n if (chart.options.parsing) {\n return;\n }\n let {start, count} = getStartAndCountOfVisiblePointsSimplified(meta, data);\n const threshold = options.threshold || 4 * availableWidth;\n if (count <= threshold) {\n cleanDecimatedDataset(dataset);\n return;\n }\n if (isNullOrUndef(_data)) {\n dataset._data = data;\n delete dataset.data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this._decimated;\n },\n set: function(d) {\n this._data = d;\n }\n });\n }\n let decimated;\n switch (options.algorithm) {\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n default:\n throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n }\n dataset._decimated = decimated;\n });\n },\n destroy(chart) {\n cleanDecimatedData(chart);\n }\n};\n\nfunction _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n for (const segment of segments) {\n let {start, end} = segment;\n end = _findSegmentEnd(start, end, points);\n const bounds = _getBounds(property, points[start], points[end], segment.loop);\n if (!target.segments) {\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n const targetSegments = _boundSegments(target, bounds);\n for (const tgt of targetSegments) {\n const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n for (const fillSource of fillSources) {\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\nfunction _getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {property, start, end};\n}\nfunction _pointsFromSegments(boundary, line) {\n const {x = null, y = null} = boundary || {};\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(({start, end}) => {\n end = _findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({x: first.x, y});\n points.push({x: last.x, y});\n } else if (x !== null) {\n points.push({x, y: first.y});\n points.push({x, y: last.y});\n }\n });\n return points;\n}\nfunction _findSegmentEnd(start, end, points) {\n for (;end > start; end--) {\n const point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\n\nfunction _createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n if (isArray(boundary)) {\n _loop = true;\n points = boundary;\n } else {\n points = _pointsFromSegments(boundary, line);\n }\n return points.length ? new LineElement({\n points,\n options: {tension: 0},\n _loop,\n _fullLoop: _loop\n }) : null;\n}\nfunction _shouldApplyFill(source) {\n return source && source.fill !== false;\n}\n\nfunction _resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [index];\n let target;\n if (!propagate) {\n return fill;\n }\n while (fill !== false && visited.indexOf(fill) === -1) {\n if (!isNumberFinite(fill)) {\n return fill;\n }\n target = sources[fill];\n if (!target) {\n return false;\n }\n if (target.visible) {\n return fill;\n }\n visited.push(fill);\n fill = target.fill;\n }\n return false;\n}\nfunction _decodeFill(line, index, count) {\n const fill = parseFillOption(line);\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n let target = parseFloat(fill);\n if (isNumberFinite(target) && Math.floor(target) === target) {\n return decodeTargetIndex(fill[0], index, target, count);\n }\n return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\nfunction decodeTargetIndex(firstCh, index, target, count) {\n if (firstCh === '-' || firstCh === '+') {\n target = index + target;\n }\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n return target;\n}\nfunction _getTargetPixel(fill, scale) {\n let pixel = null;\n if (fill === 'start') {\n pixel = scale.bottom;\n } else if (fill === 'end') {\n pixel = scale.top;\n } else if (isObject(fill)) {\n pixel = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n pixel = scale.getBasePixel();\n }\n return pixel;\n}\nfunction _getTargetValue(fill, scale, startValue) {\n let value;\n if (fill === 'start') {\n value = startValue;\n } else if (fill === 'end') {\n value = scale.options.reverse ? scale.min : scale.max;\n } else if (isObject(fill)) {\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n return value;\n}\nfunction parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n if (fill === false || fill === null) {\n return false;\n }\n if (fill === true) {\n return 'origin';\n }\n return fill;\n}\n\nfunction _buildStackLine(source) {\n const {scale, index, line} = source;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(_createBoundaryLine({x: null, y: scale.bottom}, line));\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n for (let j = segment.start; j <= segment.end; j++) {\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({points, options: {}});\n}\nfunction getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n for (let i = 0; i < metas.length; i++) {\n const meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n for (let j = 0; j < linesBelow.length; j++) {\n const line = linesBelow[j];\n const {first, last, point} = findPoint(line, sourcePoint, 'x');\n if (!point || (first && last)) {\n continue;\n }\n if (first) {\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n break;\n }\n }\n }\n points.push(...postponed);\n}\nfunction findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {first, last, point};\n}\n\nclass simpleArc {\n constructor(opts) {\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n pathSegment(ctx, bounds, opts) {\n const {x, y, radius} = this;\n bounds = bounds || {start: 0, end: TAU};\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n interpolate(point) {\n const {x, y, radius} = this;\n const angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle\n };\n }\n}\n\nfunction _getTarget(source) {\n const {chart, fill, line} = source;\n if (isNumberFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n if (fill === 'stack') {\n return _buildStackLine(source);\n }\n if (fill === 'shape') {\n return true;\n }\n const boundary = computeBoundary(source);\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n return _createBoundaryLine(boundary, line);\n}\nfunction getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\nfunction computeLinearBoundary(source) {\n const {scale = {}, fill} = source;\n const pixel = _getTargetPixel(fill, scale);\n if (isNumberFinite(pixel)) {\n const horizontal = scale.isHorizontal();\n return {\n x: horizontal ? pixel : null,\n y: horizontal ? null : pixel\n };\n }\n return null;\n}\nfunction computeCircularBoundary(source) {\n const {scale, fill} = source;\n const options = scale.options;\n const length = scale.getLabels().length;\n const start = options.reverse ? scale.max : scale.min;\n const value = _getTargetValue(fill, scale, start);\n const target = [];\n if (options.grid.circular) {\n const center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n for (let i = 0; i < length; ++i) {\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\n\nfunction _drawfill(ctx, source, area) {\n const target = _getTarget(source);\n const {line, scale, axis} = source;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const {above = color, below = color} = fillOption || {};\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {line, target, above, below, area, scale, axis});\n unclipArea(ctx);\n }\n}\nfunction doFill(ctx, cfg) {\n const {line, target, above, below, area, scale} = cfg;\n const property = line._loop ? 'angle' : cfg.axis;\n ctx.save();\n if (property === 'x' && below !== above) {\n clipVertical(ctx, target, area.top);\n fill(ctx, {line, target, color: above, scale, property});\n ctx.restore();\n ctx.save();\n clipVertical(ctx, target, area.bottom);\n }\n fill(ctx, {line, target, color: below, scale, property});\n ctx.restore();\n}\nfunction clipVertical(ctx, target, clipY) {\n const {segments, points} = target;\n let first = true;\n let lineLoop = false;\n ctx.beginPath();\n for (const segment of segments) {\n const {start, end} = segment;\n const firstPoint = points[start];\n const lastPoint = points[_findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(firstPoint.x, clipY);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop});\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(lastPoint.x, clipY);\n }\n }\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\nfunction fill(ctx, cfg) {\n const {line, target, property, color, scale} = cfg;\n const segments = _segments(line, target, property);\n for (const {source: src, target: tgt, start, end} of segments) {\n const {style: {backgroundColor = color} = {}} = src;\n const notShape = target !== true;\n ctx.save();\n ctx.fillStyle = backgroundColor;\n clipBounds(ctx, scale, notShape && _getBounds(property, start, end));\n ctx.beginPath();\n const lineLoop = !!line.pathSegment(ctx, src);\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n const targetLoop = !!target.pathSegment(ctx, tgt, {move: lineLoop, reverse: true});\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n ctx.restore();\n }\n}\nfunction clipBounds(ctx, scale, bounds) {\n const {top, bottom} = scale.chart.chartArea;\n const {property, start, end} = bounds || {};\n if (property === 'x') {\n ctx.beginPath();\n ctx.rect(start, top, end - start, bottom - top);\n ctx.clip();\n }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\n\nvar index = {\n id: 'filler',\n afterDatasetsUpdate(chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n for (i = 0; i < count; ++i) {\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: _decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line,\n };\n }\n meta.$filler = source;\n sources.push(source);\n }\n for (i = 0; i < count; ++i) {\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n source.fill = _resolveTarget(sources, i, options.propagate);\n }\n },\n beforeDraw(chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n source.line.updateControlPoints(area, source.axis);\n if (draw && source.fill) {\n _drawfill(chart.ctx, source, area);\n }\n }\n },\n beforeDatasetsDraw(chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n const metasets = chart.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (_shouldApplyFill(source)) {\n _drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n beforeDatasetDraw(chart, args, options) {\n const source = args.meta.$filler;\n if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n _drawfill(chart.ctx, source, chart.chartArea);\n },\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\n\nconst getBoxSize = (labelOpts, fontSize) => {\n let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts;\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n }\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n constructor(config) {\n super();\n this._added = false;\n this.legendHitBoxes = [];\n this._hoveredItem = null;\n this.doughnutMode = false;\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = callback(labelOpts.generateLabels, [this.chart], this) || [];\n if (labelOpts.filter) {\n legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data));\n }\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n }\n if (this.options.reverse) {\n legendItems.reverse();\n }\n this.legendItems = legendItems;\n }\n fit() {\n const {options, ctx} = this;\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize);\n let width, height;\n ctx.font = labelFont.string;\n if (this.isHorizontal()) {\n width = this.maxWidth;\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight;\n width = this._fitCols(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n }\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxWidth, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const lineWidths = this.lineWidths = [0];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n _fitCols(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxHeight, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n let left = 0;\n let col = 0;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n totalWidth += currentColWidth;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n return totalWidth;\n }\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes) {\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox of hitboxes) {\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox.top = top;\n hitbox.left += this.left + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n top += hitbox.height + padding;\n }\n }\n }\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n this._draw();\n unclipArea(ctx);\n }\n }\n _draw() {\n const {options: opts, columnSizes, lineWidths, ctx} = this;\n const {align, labels: labelOpts} = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const {color: fontColor, padding} = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n this.drawTitle();\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize);\n const drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n ctx.save();\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n if (labelOpts.usePointStyle) {\n const drawOptions = {\n radius: boxHeight * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n } else {\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n ctx.beginPath();\n if (Object.values(borderRadius).some(v => v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n ctx.restore();\n };\n const fillText = function(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n overrideTextDirection(this.ctx, opts.textDirection);\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i) => {\n ctx.strokeStyle = legendItem.fontColor || fontColor;\n ctx.fillStyle = legendItem.fontColor || fontColor;\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n rtlHelper.setWidth(this.width);\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n const realX = rtlHelper.x(x);\n drawLegendBox(realX, y, legendItem);\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n fillText(rtlHelper.x(x), y, legendItem);\n if (isHorizontal) {\n cursor.x += width + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n if (!titleOpts.display) {\n return;\n }\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n let left = this.left;\n let maxWidth = this.width;\n if (this.isHorizontal()) {\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n const x = _alignStartEnd(position, left, left + maxWidth);\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n if (_isBetween(x, this.left, this.right)\n && _isBetween(y, this.top, this.bottom)) {\n lh = this.legendHitBoxes;\n for (i = 0; i < lh.length; ++i) {\n hitBox = lh[i];\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width)\n && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n return this.legendItems[i];\n }\n }\n }\n return null;\n }\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n if (e.type === 'mousemove' || e.type === 'mouseout') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n callback(opts.onLeave, [e, previous, this], this);\n }\n this._hoveredItem = hoveredItem;\n if (hoveredItem && !sameItem) {\n callback(opts.onHover, [e, hoveredItem, this], this);\n }\n } else if (hoveredItem) {\n callback(opts.onClick, [e, hoveredItem, this], this);\n }\n }\n}\nfunction isListened(type, opts) {\n if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\nvar plugin_legend = {\n id: 'legend',\n _element: Legend,\n start(chart, _args, options) {\n const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart});\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n stop(chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n beforeUpdate(chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n afterUpdate(chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n afterEvent(chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n onClick(e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n onHover: null,\n onLeave: null,\n labels: {\n color: (ctx) => ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n generateLabels(chart) {\n const datasets = chart.data.datasets;\n const {labels: {usePointStyle, pointStyle, textAlign, color}} = chart.legend.options;\n return chart._getSortedDatasetMetas().map((meta) => {\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: 0,\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n title: {\n color: (ctx) => ctx.chart.options.color,\n display: false,\n position: 'center',\n text: '',\n }\n },\n descriptors: {\n _scriptable: (name) => !name.startsWith('on'),\n labels: {\n _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name),\n }\n },\n};\n\nclass Title extends Element {\n constructor(config) {\n super();\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight) {\n const opts = this.options;\n this.left = 0;\n this.top = 0;\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n _drawArgs(offset) {\n const {top, left, bottom, right, options} = this;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {titleX, titleY, maxWidth, rotation};\n }\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n if (!opts.display) {\n return;\n }\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const {titleX, titleY, maxWidth, rotation} = this._drawArgs(offset);\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n}\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\nvar plugin_title = {\n id: 'title',\n _element: Title,\n start(chart, _args, options) {\n createTitle(chart, options);\n },\n stop(chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n beforeUpdate(chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold',\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst map = new WeakMap();\nvar plugin_subtitle = {\n id: 'subtitle',\n start(chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n stop(chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n beforeUpdate(chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal',\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst positioners = {\n average(items) {\n if (!items.length) {\n return false;\n }\n let i, len;\n let x = 0;\n let y = 0;\n let count = 0;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n x += pos.x;\n y += pos.y;\n ++count;\n }\n }\n return {\n x: x / count,\n y: y / count\n };\n },\n nearest(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n return {\n x,\n y\n };\n }\n};\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n return base;\n}\nfunction splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\nfunction createTooltipItem(chart, item) {\n const {element, datasetIndex, index} = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const {label, value} = controller.getLabelAndValue(index);\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\nfunction getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const {body, footer, title} = tooltip;\n const {boxWidth, boxHeight} = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (footerLineCount - 1) * options.footerSpacing;\n }\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n ctx.save();\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0;\n each(body, (bodyItem) => {\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n widthPadding = 0;\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n ctx.restore();\n width += padding.width;\n return {width, height};\n}\nfunction determineYAlign(chart, size) {\n const {y, height} = size;\n if (y < height / 2) {\n return 'top';\n } else if (y > (chart.height - height / 2)) {\n return 'bottom';\n }\n return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const {x, width} = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n const {x, width} = size;\n const {width: chartWidth, chartArea: {left, right}} = chart;\n let xAlign = 'center';\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n return xAlign;\n}\nfunction determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\nfunction alignX(size, xAlign) {\n let {x, width} = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= (width / 2);\n }\n return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n let {y, height} = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= (height / 2);\n }\n return y;\n}\nfunction getBackgroundPoint(options, size, alignment, chart) {\n const {caretSize, caretPadding, cornerRadius} = options;\n const {xAlign, yAlign} = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n return align === 'center'\n ? tooltip.x + tooltip.width / 2\n : align === 'right'\n ? tooltip.x + tooltip.width - padding.right\n : tooltip.x + padding.left;\n}\nfunction getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\nclass Tooltip extends Element {\n constructor(config) {\n super();\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart || config._chart;\n this._chart = this.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n if (cached) {\n return cached;\n }\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n return animations;\n }\n getContext() {\n return this.$context ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n getTitle(context, options) {\n const {callbacks} = options;\n const beforeTitle = callbacks.beforeTitle.apply(this, [context]);\n const title = callbacks.title.apply(this, [context]);\n const afterTitle = callbacks.afterTitle.apply(this, [context]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n return lines;\n }\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.beforeBody.apply(this, [tooltipItems]));\n }\n getBody(tooltipItems, options) {\n const {callbacks} = options;\n const bodyItems = [];\n each(tooltipItems, (context) => {\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(scoped.beforeLabel.call(this, context)));\n pushOrConcat(bodyItem.lines, scoped.label.call(this, context));\n pushOrConcat(bodyItem.after, splitNewlines(scoped.afterLabel.call(this, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.afterBody.apply(this, [tooltipItems]));\n }\n getFooter(tooltipItems, options) {\n const {callbacks} = options;\n const beforeFooter = callbacks.beforeFooter.apply(this, [tooltipItems]);\n const footer = callbacks.footer.apply(this, [tooltipItems]);\n const afterFooter = callbacks.afterFooter.apply(this, [tooltipItems]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n return lines;\n }\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n for (i = 0, len = active.length; i < len; ++i) {\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n }\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n }\n each(tooltipItems, (context) => {\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(scoped.labelColor.call(this, context));\n labelPointStyles.push(scoped.labelPointStyle.call(this, context));\n labelTextColors.push(scoped.labelTextColor.call(this, context));\n });\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n if (changed && options.external) {\n options.external.call(this, {chart: this.chart, tooltip: this, replay});\n }\n }\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n getCaretPosition(tooltipPoint, size, options) {\n const {xAlign, yAlign} = this;\n const {caretSize, cornerRadius} = options;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n const {x: ptX, y: ptY} = tooltipPoint;\n const {width, height} = size;\n let x1, x2, x3, y1, y2, y3;\n if (yAlign === 'center') {\n y2 = ptY + (height / 2);\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize);\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {x1, x2, x3, y1, y2, y3};\n }\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.titleAlign, options);\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing;\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing;\n }\n }\n }\n }\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColors = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const {boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2,\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.fillStyle = labelColors.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = isObject(labelColors.borderWidth) ? Math.max(...Object.values(labelColors.borderWidth)) : (labelColors.borderWidth || 1);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.setLineDash(labelColors.borderDash || []);\n ctx.lineDashOffset = labelColors.borderDashOffset || 0;\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth - boxPadding);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - boxPadding - 2);\n const borderRadius = toTRBLCorners(labelColors.borderRadius);\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n ctx.fillStyle = this.labelTextColors[i];\n }\n drawBody(pt, ctx, options) {\n const {body} = this;\n const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right'\n ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n : 0;\n for (i = 0, ilen = body.length; i < ilen; ++i) {\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n lines = bodyItem.lines;\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n for (j = 0, jlen = lines.length; j < jlen; ++j) {\n fillLineOfText(lines[j]);\n bodyLineHeight = bodyFont.lineHeight;\n }\n each(bodyItem.after, fillLineOfText);\n }\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing;\n }\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n footerFont = toFont(options.footerFont);\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n drawBackground(pt, ctx, tooltipSize, options) {\n const {xAlign, yAlign} = this;\n const {x, y} = pt;\n const {width, height} = tooltipSize;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(options.cornerRadius);\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n _willRender() {\n return !!this.opacity;\n }\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n if (!opacity) {\n return;\n }\n this._updateAnimationTarget(options);\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n const padding = toPadding(options.padding);\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n this.drawBackground(pt, ctx, tooltipSize, options);\n overrideTextDirection(ctx, options.textDirection);\n pt.y += padding.top;\n this.drawTitle(pt, ctx, options);\n this.drawBody(pt, ctx, options);\n this.drawFooter(pt, ctx, options);\n restoreTextDirection(ctx, options.textDirection);\n ctx.restore();\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.chart.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n const positionChanged = this._positionChanged(active, e);\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n if (changed) {\n this._active = active;\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n this.update(true, replay);\n }\n }\n return changed;\n }\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n if (options.reverse) {\n active.reverse();\n }\n return active;\n }\n _positionChanged(active, e) {\n const {caretX, caretY, options} = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\nTooltip.positioners = positioners;\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n afterInit(chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({chart, options});\n }\n },\n beforeUpdate(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n reset(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n afterDraw(chart) {\n const tooltip = chart.tooltip;\n if (tooltip && tooltip._willRender()) {\n const args = {\n tooltip\n };\n if (chart.notifyPlugins('beforeTooltipDraw', args) === false) {\n return;\n }\n tooltip.draw(chart.ctx);\n chart.notifyPlugins('afterTooltipDraw', args);\n }\n },\n afterEvent(chart, args) {\n if (chart.tooltip) {\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n args.changed = true;\n }\n }\n },\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold',\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {\n },\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold',\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts) => opts.bodyFont.size,\n boxWidth: (ctx, opts) => opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart',\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: {\n beforeTitle: noop,\n title(tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n return '';\n },\n afterTitle: noop,\n beforeBody: noop,\n beforeLabel: noop,\n label(tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n let label = tooltipItem.dataset.label || '';\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0,\n };\n },\n labelTextColor() {\n return this.options.bodyColor;\n },\n labelPointStyle(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation,\n };\n },\n afterLabel: noop,\n afterBody: noop,\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n }\n },\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n descriptors: {\n _scriptable: (name) => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false,\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n additionalOptionScopes: ['interaction']\n};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\nDecimation: plugin_decimation,\nFiller: index,\nLegend: plugin_legend,\nSubTitle: plugin_subtitle,\nTitle: plugin_title,\nTooltip: plugin_tooltip\n});\n\nconst addIfString = (labels, raw, index, addedLabels) => {\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({index, label: raw});\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\nclass CategoryScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const {index, label} of added) {\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index\n : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n determineDataLimits() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this.getMinMax(true);\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1);\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n for (let value = min; value <= max; value++) {\n ticks.push({value});\n }\n return ticks;\n }\n getLabelForValue(value) {\n const labels = this.getLabels();\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n }\n configure() {\n super.configure();\n if (!this.isHorizontal()) {\n this._reversePixels = !this._reversePixels;\n }\n }\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n getBasePixel() {\n return this.bottom;\n }\n}\nCategoryScale.id = 'category';\nCategoryScale.defaults = {\n ticks: {\n callback: CategoryScale.prototype.getLabelForValue\n }\n};\n\nfunction generateTicks$1(generationOptions, dataRange) {\n const ticks = [];\n const MIN_SPACING = 1e-14;\n const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const {min: rmin, max: rmax} = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [{value: rmin}, {value: rmax}];\n }\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n if (!isNullOrUndef(precision)) {\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n numSpaces = (niceMax - niceMin) / spacing;\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n const decimalPlaces = Math.max(\n _decimalPlaces(spacing),\n _decimalPlaces(niceMin)\n );\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({value: min});\n if (niceMin < min) {\n j++;\n }\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n for (; j < numSpaces; ++j) {\n ticks.push({value: Math.round((niceMin + j * spacing) * factor) / factor});\n }\n if (maxDefined && includeBounds && niceMax !== max) {\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({value: max});\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({value: niceMax});\n }\n return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, {horizontal, minRotation}) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._endValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n return +raw;\n }\n handleTickRangeOptions() {\n const {beginAtZero} = this.options;\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n if (min === max) {\n let offset = 1;\n if (max >= Number.MAX_SAFE_INTEGER || min <= Number.MIN_SAFE_INTEGER) {\n offset = Math.abs(max * 0.05);\n }\n setMax(max + offset);\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n getTickLimit() {\n const tickOpts = this.options.ticks;\n let {maxTicksLimit, stepSize} = tickOpts;\n let maxTicks;\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n return maxTicks;\n }\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n super.configure();\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n\nclass LinearScale extends LinearScaleBase {\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? min : 0;\n this.max = isNumberFinite(max) ? max : 1;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\nLinearScale.id = 'linear';\nLinearScale.defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n};\n\nfunction isMajor(tickVal) {\n const remain = tickVal / (Math.pow(10, Math.floor(log10(tickVal))));\n return remain === 1;\n}\nfunction generateTicks(generationOptions, dataRange) {\n const endExp = Math.floor(log10(dataRange.max));\n const endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n const ticks = [];\n let tickVal = finiteOrDefault(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\n let exp = Math.floor(log10(tickVal));\n let significand = Math.floor(tickVal / Math.pow(10, exp));\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n do {\n ticks.push({value: tickVal, major: isMajor(tickVal)});\n ++significand;\n if (significand === 10) {\n significand = 1;\n ++exp;\n precision = exp >= 0 ? 1 : precision;\n }\n tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n } while (exp < endExp || (exp === endExp && significand < endSignificand));\n const lastTick = finiteOrDefault(generationOptions.max, tickVal);\n ticks.push({value: lastTick, major: isMajor(tickVal)});\n return ticks;\n}\nclass LogarithmicScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isNumberFinite(value) && value > 0 ? value : null;\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n this.handleTickRangeOptions();\n }\n handleTickRangeOptions() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n const exp = (v, m) => Math.pow(10, Math.floor(log10(v)) + m);\n if (min === max) {\n if (min <= 0) {\n setMin(1);\n setMax(10);\n } else {\n setMin(exp(min, -1));\n setMax(exp(max, +1));\n }\n }\n if (min <= 0) {\n setMin(exp(max, -1));\n }\n if (max <= 0) {\n setMax(exp(min, +1));\n }\n if (this._zero && this.min !== this._suggestedMin && min === exp(this.min, 0)) {\n setMin(exp(min, -1));\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const opts = this.options;\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n getLabelForValue(value) {\n return value === undefined\n ? '0'\n : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n configure() {\n const start = this.min;\n super.configure();\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min\n ? 0\n : (log10(value) - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\nLogarithmicScale.id = 'logarithmic';\nLogarithmicScale.defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n};\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [label];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - (size / 2),\n end: pos + (size / 2)\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n return {\n start: pos,\n end: pos + size\n };\n}\nfunction fitWithPointLabels(scale) {\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n scale.setCenterPoint(\n orig.l - limits.l,\n limits.r - orig.r,\n orig.t - limits.t,\n limits.b - orig.b\n );\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const extra = getTickBackdropHeight(opts) / 2;\n const outerDistance = scale.drawingArea;\n const additionalAngle = opts.pointLabels.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const size = labelSizes[i];\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n items.push({\n x: pointLabelPosition.x,\n y,\n textAlign,\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n });\n }\n return items;\n}\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= (w / 2);\n }\n return x;\n}\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= (h / 2);\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\nfunction drawPointLabels(scale, labelCount) {\n const {ctx, options: {pointLabels}} = scale;\n for (let i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n const plFont = toFont(optsAtIndex.font);\n const {x, y, textAlign, left, top, right, bottom} = scale._pointLabelItems[i];\n const {backdropColor} = optsAtIndex;\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(optsAtIndex.borderRadius);\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillStyle = backdropColor;\n const backdropLeft = left - padding.left;\n const backdropTop = top - padding.top;\n const backdropWidth = right - left + padding.width;\n const backdropHeight = bottom - top + padding.height;\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: backdropLeft,\n y: backdropTop,\n w: backdropWidth,\n h: backdropHeight,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n }\n }\n renderText(\n ctx,\n scale._pointLabels[i],\n x,\n y + (plFont.lineHeight / 2),\n plFont,\n {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n }\n );\n }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const {ctx} = scale;\n if (circular) {\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n for (let i = 1; i < labelCount; i++) {\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n const {color, lineWidth} = gridLineOpts;\n if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) {\n return;\n }\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(gridLineOpts.borderDash);\n ctx.lineDashOffset = gridLineOpts.borderDashOffset;\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\nclass RadialLinearScale extends LinearScaleBase {\n constructor(cfg) {\n super(cfg);\n this.xCenter = undefined;\n this.yCenter = undefined;\n this.drawingArea = undefined;\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n setDimensions() {\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(false);\n this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n this._pointLabels = this.getLabels()\n .map((value, index) => {\n const label = callback(this.options.pointLabels.callback, [value, index], this);\n return label || label === 0 ? label : '';\n })\n .filter((v, i) => this.chart.getDataVisibility(i));\n }\n fit() {\n const opts = this.options;\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n getPointLabelPosition(index) {\n const {left, top, right, bottom} = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom,\n };\n }\n drawBackground() {\n const {backgroundColor, grid: {circular}} = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const {angleLines, grid} = opts;\n const labelCount = this._pointLabels.length;\n let i, offset, position;\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n if (grid.display) {\n this.ticks.forEach((tick, index) => {\n if (index !== 0) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const optsAtIndex = grid.setContext(this.getContext(index - 1));\n drawRadiusLine(this, optsAtIndex, offset, labelCount);\n }\n });\n }\n if (angleLines.display) {\n ctx.save();\n for (i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const {color, lineWidth} = optsAtIndex;\n if (!lineWidth || !color) {\n continue;\n }\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n ctx.restore();\n }\n }\n drawBorder() {}\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n if (!tickOpts.display) {\n return;\n }\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n this.ticks.forEach((tick, index) => {\n if (index === 0 && !opts.reverse) {\n return;\n }\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(\n -width / 2 - padding.left,\n -offset - tickFont.size / 2 - padding.top,\n width + padding.width,\n tickFont.size + padding.height\n );\n }\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color,\n });\n });\n ctx.restore();\n }\n drawTitle() {}\n}\nRadialLinearScale.id = 'radialLinear';\nRadialLinearScale.defaults = {\n display: true,\n animate: true,\n position: 'chartArea',\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n grid: {\n circular: false\n },\n startAngle: 0,\n ticks: {\n showLabelBackdrop: true,\n callback: Ticks.formatters.numeric\n },\n pointLabels: {\n backdropColor: undefined,\n backdropPadding: 2,\n display: true,\n font: {\n size: 10\n },\n callback(label) {\n return label;\n },\n padding: 5,\n centerPointLabels: false\n }\n};\nRadialLinearScale.defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n};\nRadialLinearScale.descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n};\n\nconst INTERVALS = {\n millisecond: {common: true, size: 1, steps: 1000},\n second: {common: true, size: 1000, steps: 60},\n minute: {common: true, size: 60000, steps: 60},\n hour: {common: true, size: 3600000, steps: 24},\n day: {common: true, size: 86400000, steps: 30},\n week: {common: false, size: 604800000, steps: 4},\n month: {common: true, size: 2.628e9, steps: 12},\n quarter: {common: false, size: 7.884e9, steps: 4},\n year: {common: true, size: 3.154e10}\n};\nconst UNITS = (Object.keys(INTERVALS));\nfunction sorter(a, b) {\n return a - b;\n}\nfunction parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n const adapter = scale._adapter;\n const {parser, round, isoWeekday} = scale._parseOpts;\n let value = input;\n if (typeof parser === 'function') {\n value = parser(value);\n }\n if (!isNumberFinite(value)) {\n value = typeof parser === 'string'\n ? adapter.parse(value, parser)\n : adapter.parse(value);\n }\n if (value === null) {\n return null;\n }\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n ? adapter.startOf(value, 'isoWeek', isoWeekday)\n : adapter.startOf(value, round);\n }\n return +value;\n}\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n return UNITS[ilen - 1];\n}\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\nfunction determineMajorUnit(unit) {\n for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\nfunction addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const {lo, hi} = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n const map = {};\n const ilen = values.length;\n let i, value;\n for (i = 0; i < ilen; ++i) {\n value = values[i];\n map[value] = i;\n ticks.push({\n value,\n major: false\n });\n }\n return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n constructor(props) {\n super(props);\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n this._unit = 'day';\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n init(scaleOpts, opts) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n adapter.init(opts);\n mergeIf(time.displayFormats, adapter.formats());\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n super.init(scaleOpts);\n this._normalized = opts.normalized;\n }\n parse(raw, index) {\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n if (!minDefined || !maxDefined) {\n _applyBounds(this._getLabelBounds());\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {min, max};\n }\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n const min = this.min;\n const max = this.max;\n const ticks = _filterBetween(timestamps, min, max);\n this._unit = timeOpts.unit || (tickOpts.autoSkip\n ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n if (options.reverse) {\n ticks.reverse();\n }\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n afterAutoSkip() {\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map(tick => +tick.value));\n }\n }\n initOffsets(timestamps) {\n let start = 0;\n let end = 0;\n let first, last;\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n this._offsets = {start, end, factor: 1 / (start + 1 + end)};\n }\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(timeOpts.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n addTick(ticks, time, timestamps);\n }\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n return Object.keys(ticks).sort((a, b) => a - b).map(x => +x);\n }\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n const label = this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n const formatter = options.ticks.callback;\n return formatter ? callback(formatter, [label, index, ticks], this) : label;\n }\n generateTickLabels(ticks) {\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n return {\n w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n };\n }\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const metas = this.getMatchingVisibleMetas();\n if (this._normalized && metas.length) {\n return (this._cache.data = metas[0].controller.getAllParsedValues(this));\n }\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n return (this._cache.data = this.normalize(timestamps));\n }\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const labels = this.getLabels();\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n timestamps.push(parse(this, labels[i]));\n }\n return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps));\n }\n normalize(values) {\n return _arrayUnique(values.sort(sorter));\n }\n}\nTimeScale.id = 'time';\nTimeScale.defaults = {\n bounds: 'data',\n adapters: {},\n time: {\n parser: false,\n unit: false,\n round: false,\n isoWeekday: false,\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n source: 'auto',\n major: {\n enabled: false\n }\n }\n};\n\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({lo, hi} = _lookupByKey(table, 'pos', val));\n }\n ({pos: prevSource, time: prevTarget} = table[lo]);\n ({pos: nextSource, time: nextTarget} = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({lo, hi} = _lookupByKey(table, 'time', val));\n }\n ({time: prevSource, pos: prevTarget} = table[lo]);\n ({time: nextSource, pos: nextTarget} = table[hi]);\n }\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n constructor(props) {\n super(props);\n this._table = [];\n this._minPos = undefined;\n this._tableRange = undefined;\n }\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n buildLookupTable(timestamps) {\n const {min, max} = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n if (items.length < 2) {\n return [\n {time: min, pos: 0},\n {time: max, pos: 1}\n ];\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({time: curr, pos: i / (ilen - 1)});\n }\n }\n return table;\n }\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n if (timestamps.length) {\n return timestamps;\n }\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n return timestamps;\n }\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\nTimeSeriesScale.id = 'timeseries';\nTimeSeriesScale.defaults = TimeScale.defaults;\n\nvar scales = /*#__PURE__*/Object.freeze({\n__proto__: null,\nCategoryScale: CategoryScale,\nLinearScale: LinearScale,\nLogarithmicScale: LogarithmicScale,\nRadialLinearScale: RadialLinearScale,\nTimeScale: TimeScale,\nTimeSeriesScale: TimeSeriesScale\n});\n\nconst registerables = [\n controllers,\n elements,\n plugins,\n scales,\n];\n\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, index as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, elements, layouts, plugins, registerables, registry, scales };\n","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import type { MouseEvent } from 'react';\nimport type {\n ChartType,\n ChartData,\n DefaultDataPoint,\n ChartDataset,\n ChartOptions,\n Chart,\n} from 'chart.js';\n\nimport type { ForwardedRef } from './types';\n\nconst defaultDatasetIdKey = 'label';\n\nexport function reforwardRef(ref: ForwardedRef, value: T) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}\n\nexport function setOptions<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(chart: Chart, nextOptions: ChartOptions) {\n Object.assign(chart.options, nextOptions);\n}\n\nexport function setLabels<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(\n currentData: ChartData,\n nextLabels: TLabel[] | undefined\n) {\n currentData.labels = nextLabels;\n}\n\nexport function setDatasets<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(\n currentData: ChartData,\n nextDatasets: ChartDataset[],\n datasetIdKey = defaultDatasetIdKey\n) {\n const addedDatasets: ChartDataset[] = [];\n\n currentData.datasets = nextDatasets.map(\n (nextDataset: Record) => {\n // given the new set, find it's current match\n const currentDataset = currentData.datasets.find(\n (dataset: Record) =>\n dataset[datasetIdKey] === nextDataset[datasetIdKey]\n );\n\n // There is no original to update, so simply add new one\n if (\n !currentDataset ||\n !nextDataset.data ||\n addedDatasets.includes(currentDataset)\n ) {\n return { ...nextDataset } as ChartDataset;\n }\n\n addedDatasets.push(currentDataset);\n\n Object.assign(currentDataset, nextDataset);\n\n return currentDataset;\n }\n );\n}\n\nexport function cloneData<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(data: ChartData, datasetIdKey = defaultDatasetIdKey) {\n const nextData: ChartData = {\n labels: [],\n datasets: [],\n };\n\n setLabels(nextData, data.labels);\n setDatasets(nextData, data.datasets, datasetIdKey);\n\n return nextData;\n}\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 */\nexport function getDatasetAtEvent(\n chart: Chart,\n event: MouseEvent\n) {\n return chart.getElementsAtEventForMode(\n event.nativeEvent,\n 'dataset',\n { intersect: true },\n false\n );\n}\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 */\nexport function getElementAtEvent(\n chart: Chart,\n event: MouseEvent\n) {\n return chart.getElementsAtEventForMode(\n event.nativeEvent,\n 'nearest',\n { intersect: true },\n false\n );\n}\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 */\nexport function getElementsAtEvent(\n chart: Chart,\n event: MouseEvent\n) {\n return chart.getElementsAtEventForMode(\n event.nativeEvent,\n 'index',\n { intersect: true },\n false\n );\n}\n","import React, { useEffect, useRef, forwardRef } from 'react';\nimport { Chart as ChartJS } from 'chart.js';\nimport type { ChartType, DefaultDataPoint } from 'chart.js';\n\nimport type { ForwardedRef, ChartProps, TypedChartComponent } from './types';\nimport {\n reforwardRef,\n cloneData,\n setOptions,\n setLabels,\n setDatasets,\n} from './utils';\n\nfunction ChartComponent<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(\n {\n height = 150,\n width = 300,\n redraw = false,\n datasetIdKey,\n type,\n data,\n options,\n plugins = [],\n fallbackContent,\n updateMode,\n ...props\n }: ChartProps,\n ref: ForwardedRef>\n) {\n type TypedChartJS = ChartJS;\n\n const canvasRef = useRef(null);\n const chartRef = useRef();\n\n const renderChart = () => {\n if (!canvasRef.current) return;\n\n chartRef.current = new ChartJS(canvasRef.current, {\n type,\n data: cloneData(data, datasetIdKey),\n options: options && { ...options },\n plugins,\n });\n\n reforwardRef(ref, chartRef.current);\n };\n\n const destroyChart = () => {\n reforwardRef(ref, null);\n\n if (chartRef.current) {\n chartRef.current.destroy();\n chartRef.current = null;\n }\n };\n\n useEffect(() => {\n if (!redraw && chartRef.current && options) {\n setOptions(chartRef.current, options);\n }\n }, [redraw, options]);\n\n useEffect(() => {\n if (!redraw && chartRef.current) {\n setLabels(chartRef.current.config.data, data.labels);\n }\n }, [redraw, data.labels]);\n\n useEffect(() => {\n if (!redraw && chartRef.current && data.datasets) {\n setDatasets(chartRef.current.config.data, data.datasets, datasetIdKey);\n }\n }, [redraw, data.datasets]);\n\n useEffect(() => {\n if (!chartRef.current) return;\n\n if (redraw) {\n destroyChart();\n setTimeout(renderChart);\n } else {\n chartRef.current.update(updateMode);\n }\n }, [redraw, options, data.labels, data.datasets, updateMode]);\n\n useEffect(() => {\n if (!chartRef.current) return;\n\n destroyChart();\n setTimeout(renderChart);\n }, [type]);\n\n useEffect(() => {\n renderChart();\n\n return () => destroyChart();\n }, []);\n\n return (\n \n {fallbackContent}\n \n );\n}\n\nexport const Chart = forwardRef(ChartComponent) as TypedChartComponent;\n","import React, { forwardRef } from 'react';\nimport {\n Chart as ChartJS,\n LineController,\n BarController,\n RadarController,\n DoughnutController,\n PolarAreaController,\n BubbleController,\n PieController,\n ScatterController,\n} from 'chart.js';\nimport type { ChartType, ChartComponentLike } from 'chart.js';\n\nimport type {\n ChartProps,\n ChartJSOrUndefined,\n TypedChartComponent,\n} from './types';\nimport { Chart } from './chart';\n\nfunction createTypedChart(\n type: T,\n registerables: ChartComponentLike\n) {\n ChartJS.register(registerables);\n\n return forwardRef, Omit, 'type'>>(\n (props, ref) => \n ) as TypedChartComponent;\n}\n\nexport const Line = /* #__PURE__ */ createTypedChart('line', LineController);\n\nexport const Bar = /* #__PURE__ */ createTypedChart('bar', BarController);\n\nexport const Radar = /* #__PURE__ */ createTypedChart('radar', RadarController);\n\nexport const Doughnut = /* #__PURE__ */ createTypedChart(\n 'doughnut',\n DoughnutController\n);\n\nexport const PolarArea = /* #__PURE__ */ createTypedChart(\n 'polarArea',\n PolarAreaController\n);\n\nexport const Bubble = /* #__PURE__ */ createTypedChart(\n 'bubble',\n BubbleController\n);\n\nexport const Pie = /* #__PURE__ */ createTypedChart('pie', PieController);\n\nexport const Scatter = /* #__PURE__ */ createTypedChart(\n 'scatter',\n ScatterController\n);\n","import { ArcElement, CategoryScale, Chart as ChartJS, Legend, LinearScale, LineElement, Tooltip } from 'chart.js';\nimport React from 'react';\nimport { Line } from 'react-chartjs-2';\n\nChartJS.register(ArcElement, Tooltip, Legend, CategoryScale, LinearScale, LineElement);\n\nclass ChartPayment extends React.Component {\n constructor(props) {\n super(props);\n this.chartRef = {};\n\n this.chartPaymentData = {\n labels: [],\n datasets: [\n {\n label: 'Flex Amortised',\n data: [],\n borderWidth: 2,\n backgroundColor: '#B13950',\n fill: true,\n borderColor: '#B13950',\n pointBorderWidth: 0,\n pointRadius: 1,\n stepped: true\n \n },\n {\n label: 'Flex Serial',\n data: [],\n borderWidth: 2,\n backgroundColor: '#726763',\n borderColor: '#726763',\n pointBorderWidth: 0,\n pointRadius: 1,\n stepped: true\n },\n {\n label: 'Advantage Amortised',\n data: [],\n borderWidth: 2,\n backgroundColor: '#4289AF',\n borderColor: '#4289AF',\n pointBorderWidth: 0,\n pointRadius: 1,\n stepped: true\n },\n {\n label: 'Advantage Serial',\n data: [],\n borderWidth: 2,\n backgroundColor: 'rgba(53, 162, 235, 0.5)',\n borderColor: 'rgba(53, 162, 235, 0.5)',\n pointBorderWidth: 0,\n pointRadius: 1,\n stepped: true\n }\n ],\n };\n this.chartPaymentOptions = {\n responsive: true,\n plugins: {\n legend: {\n position: 'top'\n },\n tooltip: {\n callbacks: {\n title: function(context) {\n return 'Month: ' + context[0].label + ' / Year: ' + (context[0].label / 12).toFixed(0);\n },\n label: function(context) {\n let label = context.dataset.label || '';\n\n if (label) {\n label += ': ';\n }\n if (context.parsed.y !== null) {\n label += new Intl.NumberFormat('en-GB', { style: 'currency', currency: 'GBP' }).format(context.parsed.y);\n }\n return label;\n }\n }\n }\n },\n \n scales: {\n x: {\n title: {\n display: false,\n text: ''\n },\n min: 0,\n max: 500,\n ticks: {\n autoSkip: false,\n maxTicksLimit: 60,\n //major: {enabled: true},\n callback: function(tick, index, array) {\n if (index % 60){\n if(index === 12){\n return (tick / 12) + \" Year\";\n }\n else{\n return \"\";\n }\n }\n else{\n if(index === 0){\n return \"\";\n }\n else{\n return (tick / 12) + \" Years\";\n }\n \n }\n }\n } \n },\n y: {\n ticks: {\n // forces step size to be 50 units\n stepSize: 200,\n callback: function(tick, index, array) {\n return \"£ \" + tick;\n }\n }\n }\n\n\n }\n };\n \n }\n\n buildDatasets(){\n this.chartPaymentData.labels = [];\n this.chartPaymentData.datasets[0].data = [];\n this.chartPaymentData.datasets[1].data = [];\n this.chartPaymentData.datasets[2].data = [];\n this.chartPaymentData.datasets[3].data = [];\n if(this.props.competitorDisplay && this.props.competitorHasCalculation){\n this.chartPaymentData.datasets[4] = {\n label: 'Competitor',\n data: [],\n borderWidth: 2,\n backgroundColor: '#0B5240',\n borderColor: '#0B5240',\n pointBorderWidth: 0,\n pointRadius: 1,\n stepped: true,\n hidden: false\n };\n this.chartPaymentData.datasets[4].data = [];\n \n }\n else{\n if(this.chartPaymentData.datasets[4] !== undefined){\n this.chartPaymentData.datasets.pop();\n }\n }\n \n for(var a=0; a < this.props.calcData.flexAmortised.monthlyPayments.length; a++){\n var rowNumber = a;\n this.chartPaymentData.labels.push(rowNumber + 1);\n this.chartPaymentData.datasets[0].data[rowNumber] = Math.round(this.props.calcData.flexAmortised.monthlyPayments[a]);\n this.chartPaymentData.datasets[1].data[rowNumber] = Math.round(this.props.calcData.flexSerial.monthlyPayments[a]);\n this.chartPaymentData.datasets[2].data[rowNumber] = Math.round(this.props.calcData.advantageAmortised.monthlyPayments[a]);\n this.chartPaymentData.datasets[3].data[rowNumber] = Math.round(this.props.calcData.advantageSerial.monthlyPayments[a]);\n if(this.props.competitorDisplay && this.props.competitorHasCalculation){\n this.chartPaymentData.datasets[4].data[rowNumber] = Math.round(this.props.calcDataCompetitor.monthlyPayments[a]);\n }\n }\n }\n\n componentDidMount() {\n this.buildDatasets();\n }\n\n componentDidUpdate(prevProps) {\n this.buildDatasets();\n this.chartRef.data.labels = this.chartPaymentData.labels;\n this.chartRef.data.datasets = this.chartPaymentData.datasets;\n this.chartRef.update();\n }\n \n\n render() {\n return (
\n

Monthly Payment

\n this.chartRef = reference} options={this.chartPaymentOptions} data={this.chartPaymentData} />\n
);\n \n \n }\n\n \n}\n\nexport default ChartPayment;","import React from 'react';\nimport { Chart as ChartJS, ArcElement, Tooltip, Legend, CategoryScale, LinearScale, LineElement} from 'chart.js';\nimport { Line } from 'react-chartjs-2';\n\nChartJS.register(ArcElement, Tooltip, Legend, CategoryScale, LinearScale, LineElement);\n\nclass ChartInterestRate extends React.Component {\n constructor(props) {\n super(props);\n this.chartRef = {};\n\n this.chartPaymentData = {\n labels: [],\n datasets: [\n {\n label: 'Flex',\n data: [],\n borderWidth: 2,\n backgroundColor: '#B13950',\n fill: true,\n borderColor: '#B13950',\n pointBorderWidth: 0,\n pointRadius: 1,\n stepped: true\n \n },\n {\n label: 'Advantage',\n data: [],\n borderWidth: 2,\n backgroundColor: '#4289AF',\n borderColor: '#4289AF',\n pointBorderWidth: 0,\n pointRadius: 1,\n stepped: true\n }\n \n ],\n };\n this.chartPaymentOptions = {\n responsive: true,\n plugins: {\n legend: {\n position: 'top'\n },\n tooltip: {\n callbacks: {\n title: function(context) {\n return 'Year: ' + context[0].label;\n },\n label: function(context) {\n return context.dataset.label + ': ' + context.parsed.y + '%';\n }\n }\n }\n },\n scales: {\n x:{\n ticks: {\n callback: function(tick, index, array) {\n if (index % 5){\n if(index === 1){\n return tick + \" Year\";\n }\n else{\n return \"\";\n }\n }\n else{\n if(index === 0){\n return \"\";\n }\n else{\n return tick + \" Years\";\n }\n \n }\n }\n }\n },\n y: {\n ticks: {\n // forces step size to be 50 units\n stepSize: 1,\n callback: function(tick, index, array) {\n return tick + \"%\";\n }\n }\n }\n }\n }\n \n }\n\n componentDidMount() {\n this.buildData();\n }\n\n buildData(){\n this.chartPaymentData.labels = [];\n this.chartPaymentData.datasets[0].data = [];\n this.chartPaymentData.datasets[1].data = [];\n if(this.props.competitorDisplay && this.props.competitorHasCalculation){\n this.chartPaymentData.datasets[2] = {\n label: 'Competitor',\n data: [],\n borderWidth: 2,\n backgroundColor: '#808080',\n borderColor: '#808080',\n pointBorderWidth: 0,\n pointRadius: 1,\n stepped: true\n }\n }\n else{\n if(this.chartPaymentData.datasets[2] !== undefined){\n this.chartPaymentData.datasets.pop();\n }\n }\n \n for(var a=0; a< this.props.term; a++){\n this.chartPaymentData.labels.push(a);\n \n if(a < 5){\n this.chartPaymentData.datasets[1].data.push(this.props.calcData.advantageAmortised.interestRateFirst5Years);\n this.chartPaymentData.datasets[0].data.push(this.props.calcData.flexAmortised.interestRateFirst5Years);\n }\n else{\n this.chartPaymentData.datasets[1].data.push(this.props.calcData.advantageAmortised.interestRateAfter5Years);\n this.chartPaymentData.datasets[0].data.push(this.props.calcData.flexAmortised.interestRateAfter5Years);\n }\n if(this.props.competitorDisplay && this.props.competitorHasCalculation){\n if(a < this.props.competitorCommitmentPeriod){\n this.chartPaymentData.datasets[2].data.push(this.props.calcDataCompetitor.interestRateInitialPeriod);\n }\n else{\n this.chartPaymentData.datasets[2].data.push(this.props.calcDataCompetitor.interestRateExtendedPeriod);\n }\n }\n\n }\n }\n\n componentDidUpdate(prevProps) {\n this.buildData();\n this.chartRef.data.labels = this.chartPaymentData.labels;\n this.chartRef.data.datasets = this.chartPaymentData.datasets;\n this.chartRef.update();\n }\n \n\n render() {\n return (
\n

Interest Rate

\n this.chartRef = reference} options={this.chartPaymentOptions} data={this.chartPaymentData} />\n
);\n }\n\n \n}\n\nexport default ChartInterestRate;","import React from 'react';\n\nclass MortgageCalculationTable extends React.Component {\n \n render() {\n return (
\n

Loan Details

\n \n \n \n \n \n \n \n \n {(this.props.competitorDisplay && this.props.competitorHasCalculation) && (\n \n )}\n {(this.props.competitorDisplay && this.props.competitorHasCalculation) && (\n \n )}\n \n \n \n \n \n \n \n \n \n {(this.props.competitorDisplay && this.props.competitorHasCalculation) && (\n \n )}\n {(this.props.competitorDisplay && this.props.competitorHasCalculation) && (\n \n )}\n \n \n \n \n \n \n \n {(this.props.competitorDisplay && this.props.competitorHasCalculation) && (\n \n )}\n {(this.props.competitorDisplay && this.props.competitorHasCalculation) && (\n \n )}\n \n \n \n \n \n \n \n {(this.props.competitorDisplay && this.props.competitorHasCalculation) && (\n \n )}\n {(this.props.competitorDisplay && this.props.competitorHasCalculation) && (\n \n )}\n \n \n \n \n \n \n \n {(this.props.competitorDisplay && this.props.competitorHasCalculation) && (\n \n )}\n {(this.props.competitorDisplay && this.props.competitorHasCalculation) && (\n \n )}\n \n \n \n \n \n \n \n {(this.props.competitorDisplay && this.props.competitorHasCalculation) && (\n \n )}\n {(this.props.competitorDisplay && this.props.competitorHasCalculation) && (\n \n )}\n \n \n
Flex
Amortised
Flex
Serial
Advantage
Amortised
Advantage
Serial
Competitor
Monthly payments first 5 years£ {Math.round(this.props.calcData.flexAmortised.monthlyPayments[0]).toLocaleString()}£ {Math.round(this.props.calcData.flexSerial.monthlyPayments[0]).toLocaleString()}£ {Math.round(this.props.calcData.advantageAmortised.monthlyPayments[0]).toLocaleString()}£ {Math.round(this.props.calcData.advantageSerial.monthlyPayments[0]).toLocaleString()}Monthly payments first {this.props.competitorCommitmentPeriod} years£ {Math.ceil(this.props.competitorCalc.monthlyPayments[0]).toLocaleString()}
Monthly payment after 5 years£ {Math.round(this.props.calcData.flexAmortised.monthlyPayments[60]).toLocaleString()}£ {Math.round(this.props.calcData.flexSerial.monthlyPayments[60]).toLocaleString()}£ {Math.round(this.props.calcData.advantageAmortised.monthlyPayments[60]).toLocaleString()}£ {Math.round(this.props.calcData.advantageSerial.monthlyPayments[60]).toLocaleString()}Monthly payments after {this.props.competitorCommitmentPeriod} years£ {Math.ceil(this.props.competitorCalc.monthlyPayments[60]).toLocaleString()}
Interest first 5 years
{this.props.interestComment}
{this.props.calcData.flexAmortised.interestRateFirst5Years}%{this.props.calcData.flexSerial.interestRateFirst5Years}%{this.props.calcData.advantageAmortised.interestRateFirst5Years}%{this.props.calcData.advantageSerial.interestRateFirst5Years}%Interest first {this.props.competitorCommitmentPeriod} years{this.props.competitorCalc.interestRateInitialPeriod}%
Interest after 5 years
{this.props.interestComment}
{this.props.calcData.flexAmortised.interestRateAfter5Years}%{this.props.calcData.flexSerial.interestRateAfter5Years}%{this.props.calcData.advantageAmortised.interestRateAfter5Years}%{this.props.calcData.advantageSerial.interestRateAfter5Years}%Interest after {this.props.competitorCommitmentPeriod} years{this.props.competitorCalc.interestRateExtendedPeriod}%
Total costs£ {Math.round(this.props.calcData.flexAmortised.totalFees).toLocaleString()}£ {Math.round(this.props.calcData.flexSerial.totalFees).toLocaleString()}£ {Math.round(this.props.calcData.advantageAmortised.totalFees).toLocaleString()}£ {Math.round(this.props.calcData.advantageSerial.totalFees).toLocaleString()}
\n
);\n }\n}\n\nexport default MortgageCalculationTable;\n","import React from \"react\";\n\nexport default function LoadingSpinner() {\n return (\n
\n
\n
\n
\n );\n}","import React, { useRef } from 'react'\nimport PropTypes from 'prop-types'\nToggle.propTypes = {\n onChange: PropTypes.func,\n value: PropTypes.string,\n name: PropTypes.string,\n checked: PropTypes.bool\n}\nexport default function Toggle(props) {\n const toggle = useRef()\n const checkbox = useRef()\n function handleToggle() {\n if (props.onChange) props.onChange()\n toggle.current.classList.toggle('toggled')\n checkbox.current.checked = !checkbox.current.checked\n }\n return (\n <>\n \n \n \n \n \n )\n}","import React from 'react';\nimport CurrencyInput from 'react-currency-input-field';\nimport axios from 'axios';\nimport { Chart as ChartJS, ArcElement, Tooltip, Legend, CategoryScale, LinearScale, PointElement, LineElement} from 'chart.js';\nimport { Doughnut } from 'react-chartjs-2';\nimport ChartPayment from './components/ChartPayment';\nimport ChartInterestRate from './components/ChartInterestRate';\nimport Modal from 'react-modal';\nimport MortgageCalculationTable from './components/MortgageCalculationTable';\nimport LoadingSpinner from './components/LoadingSpinner';\nimport Toggle from './components/Toggle';\n\nChartJS.register(ArcElement, Tooltip, Legend, CategoryScale, LinearScale, PointElement, LineElement);\n\n/*Custom styles for modal*/\nconst customStyles = {\n content: {\n top: '50%',\n left: '50%',\n right: 'auto',\n bottom: 'auto',\n marginRight: '-50%',\n transform: 'translate(-50%, -50%)',\n width: '600px',\n borderRadius: '10px',\n padding: '50px 60px 50px 60px'\n },\n };\n\n Modal.setAppElement('#root');\n\nclass Calculator extends React.Component {\n \n constructor(props) {\n super(props);\n\n this.chartReference = {};\n\n this.state = {\n isLoading: false,\n hasResult: false,\n isInternal: window.mortgageCalculatorConfig.isInternal,\n purchasePrice: window.mortgageCalculatorConfig.defaultPuchasePrice,\n deposit: window.mortgageCalculatorConfig.defaultDeposit,\n term: window.mortgageCalculatorConfig.termDefault,\n interestFlex: window.mortgageCalculatorConfig.defaultFlexRate,\n interestRateAfter5Years: window.mortgageCalculatorConfig.defaultExtendedRate,\n interestRateFirst5Years: window.mortgageCalculatorConfig.defaultInterestRate,\n modalApplyIsOpen: false,\n applyMortgageName: '',\n applyMortgagePhone: '',\n applyMortgageEmail: '',\n applyMortgageAddress: '',\n applyMortgageCity: '',\n applyMortgageLoanType: 'Flex Amortised',\n applyMortgageAlreadyCustomer: 'No',\n applyMortgageMsg: '',\n applyMortgageSendSuccess: false,\n applyMortgageSendError: false,\n applyMortgageValidateError: false,\n modalCompetitorIsOpen: false,\n competitorDisplay: false,\n competitorHasCalculation: false,\n competitorCommitmentPeriod: window.mortgageCalculatorConfig.competitorCommitmentPeriodDefault,\n competitorInitialRate: window.mortgageCalculatorConfig.competitorInitialRateDefault,\n competitorExtendedRate: window.mortgageCalculatorConfig.competitorExtendedRateDefault,\n interestComment: window.mortgageCalculatorConfig.interestComment,\n applyMortgageSuccessMsg: window.mortgageCalculatorConfig.applyMortgageSuccessMsg,\n } \n this.chartdata = {\n labels: ['Deposit', 'Mortgage'],\n \n datasets: [\n {\n data: [this.state.deposit, (this.state.purchasePrice - this.state.deposit)],\n backgroundColor: [\n '#0B5240',\n '#22866C'\n ],\n borderColor: [\n 'rgba(255, 99, 132, 1)',\n 'rgba(54, 162, 235, 1)'\n ],\n borderWidth: 0,\n },\n ]\n \n };\n this.chartOptions = {\n cutout: 75,\n responsive: true,\n plugins: {\n legend: {\n position: 'bottom',\n labels: {\n padding: 20\n },\n onClick: (e) => e.stopPropagation()\n },\n tooltip: {\n callbacks: {\n label: function(context) {\n var sum = (context.dataset.data[0] + context.dataset.data[1]);\n\n\n return context.label + ': £' + context.formattedValue + ' (' + Math.round(context.dataset.data[context.dataIndex] / sum * 100) + '%)';\n }\n }\n }\n },\n \n };\n\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleDepositChange = this.handleDepositChange.bind(this);\n this.handlePurchasePriceChange = this.handlePurchasePriceChange.bind(this);\n this.handleTermChange = this.handleTermChange.bind(this);\n this.handleCommitmentPeriodChange = this.handleCommitmentPeriodChange.bind(this);\n this.handleApplyMortgageAlreadyCustomer = this.handleApplyMortgageAlreadyCustomer.bind(this);\n this.openModal = this.openModal.bind(this);\n this.closeModal = this.closeModal.bind(this);\n this.applyMortgage = this.applyMortgage.bind(this);\n this.addCompetitorData = this.addCompetitorData.bind(this);\n this.resetCompetitorData = this.resetCompetitorData.bind(this);\n this.openModalCompetitor = this.openModalCompetitor.bind(this);\n this.closeModalCompetitor = this.closeModalCompetitor.bind(this);\n this.toggleCompetitorData = this.toggleCompetitorData.bind(this);\n }\n\n openModal(){\n this.setState({modalApplyIsOpen: true, applyMortgageSendError:false, applyMortgageSendSuccess:false});\n }\n\n closeModal() {\n this.setState({modalApplyIsOpen: false, applyMortgageSendError:false, applyMortgageSendSuccess:false});\n }\n\n openModalCompetitor(){\n this.setState({modalCompetitorIsOpen: true});\n }\n\n closeModalCompetitor(){\n this.setState({modalCompetitorIsOpen: false});\n }\n\n handleTermChange(event){\n this.setState({term: event.target.value});\n this.getCalculation(event.target.value);\n event.preventDefault();\n }\n handleCommitmentPeriodChange(event){\n this.setState({competitorCommitmentPeriod: event.target.value});\n event.preventDefault();\n }\n\n handleSubmit(event) {\n this.getCalculation(this.state.term);\n event.preventDefault();\n }\n\n handleApplyMortgageAlreadyCustomer(event){\n this.setState({applyMortgageAlreadyCustomer: event.target.value});\n }\n\n getCompetitorCalculation(){\n var self = this;\n this.setState({isLoading: true});\n axios.get('https://func-py-mortgage-calculator.azurewebsites.net/api/competitor-calculation?purchasePrice=' + this.state.purchasePrice + '&applicantContribution=' + this.state.deposit + '&termRequested=' + (this.state.term * 12) + '&extendedRateStartMonth=' + (this.state.competitorCommitmentPeriod * 12) + '&initialRate=' + this.state.competitorInitialRate + '&extendedRate=' + this.state.competitorExtendedRate, {\n headers: {\n 'x-functions-key': window.mortgageCalculatorConfig.competitorCalculation.xFunctionsKey\n } \n })\n .then(function (response) {\n self.setState({hasResult: true, calcDataCompetitor: response.data.competitorData, competitorHasCalculation: true, isLoading: false});\n })\n .catch(function (error) {\n self.setState({isLoading: false, hasError: true, errorMsg: error});\n });\n }\n\n getCalculation(term){\n var self = this;\n this.setState({isLoading: true});\n var apiEndpoint = 'https://func-py-mortgage-calculator.azurewebsites.net/api/mortgage-calculation?purchasePrice=' + this.state.purchasePrice + '&applicantContribution=' + this.state.deposit + '&termRequested=' + (this.state.term * 12);\n if(this.state.isInternal){\n apiEndpoint += '&flexInterestRate=' + this.state.interestFlex + '&advantageInterestRate=' + this.state.interestRateFirst5Years + '&advantageExtendedRate=' + this.state.interestRateAfter5Years;\n }\n axios.get(apiEndpoint, {\n headers: {\n 'x-functions-key': window.mortgageCalculatorConfig.mortgageCalculation.xFunctionsKey\n } \n })\n .then(function (response) {\n self.setState({hasResult: true, hasError: false, calcData: response.data});\n self.setState({isLoading: false});\n if(self.state.competitorDisplay){\n self.getCompetitorCalculation();\n }\n \n })\n .catch(function (error) {\n self.setState({errorMsg: error.response.data[0], isLoading: false, hasError: true});\n });\n }\n\n applyMortgage(){\n var self = this;\n //Validation\n if(this.state.applyMortgageName === '' || this.state.applyMortgageEmail === '' || this.state.applyMortgagePhone === ''){\n this.setState({applyMortgageValidateError: true, applyMortgageMsg: 'Please fill required fields'}); \n return;\n }\n\n if(/\\S+@\\S+\\.\\S+/.test(this.state.applyMortgageEmail) === false){\n this.setState({applyMortgageValidateError: true, applyMortgageMsg: 'Please insert a valid email address'}); \n console.log('email');\n return;\n }\n this.setState({applyMortgageValidateError: false, applyMortgageMsg: ''});\n\n var data = {\n \"form[name]\": this.state.applyMortgageName,\n \"form[phone]\": this.state.applyMortgagePhone,\n \"form[email]\": this.state.applyMortgageEmail,\n \"form[address]\": this.state.applyMortgageAddress,\n \"form[city]\": this.state.applyMortgageCity,\n \"form[loanType]\": this.state.applyMortgageLoanType,\n \"form[loanAmount]\": this.state.purchasePrice - this.state.deposit,\n \"form[deposit]\": this.state.deposit,\n \"form[term]\": this.state.term,\n \"form[interestRate]\": this.state.interestRateFirst5Years,\n \"form[extendedInterestRate]\": this.state.interestRateAfter5Years,\n \"form[flexInterestRate]\": this.state.interestFlex,\n \"form[alreadyCustomer]\": this.state.applyMortgageAlreadyCustomer,\n 'form[formId]': '24', //Hardcoded for now\n \"form[secret]\": 'iZg4Tr3325!C',\n 'form[send]': 'Send' \n }\n const FD = new FormData();\n // Push our data into our FormData object\n for (const [name, value] of Object.entries(data)) {\n FD.append(name, value);\n }\n //Joomla csrf token\n if(document.querySelector('.joomla-script-options')){\n FD.append(JSON.parse(document.querySelector('.joomla-script-options').innerText)['csrf.token'], '1'); \n }\n \n axios({\n method: \"post\",\n url: document.location.href, //Post to current page - requeres form on page\n data: FD,\n headers: { \"Content-Type\": \"multipart/form-data\" },\n }).then(function (response) {\n self.setState({applyMortgageMsg: self.state.applyMortgageSuccessMsg, applyMortgageSendSuccess: true});\n })\n .catch(function (error) {\n self.setState({applyMortgageMsg: error.message, applyMortgageSendError: true});\n });\n }\n\n addCompetitorData(){\n this.getCalculation();\n this.setState({competitorDisplay: true});\n this.closeModalCompetitor();\n document.getElementById('MortgageCalculatorTable').scrollIntoView();\n }\n\n toggleCompetitorData(){\n this.setState({competitorDisplay: !this.state.competitorDisplay});\n }\n\n resetCompetitorData(){\n this.setState({\n competitorDisplay: false,\n competitorHasCalculation: false,\n competitorCommitmentPeriod: window.mortgageCalculatorConfig.competitorCommitmentPeriodDefault,\n competitorInitialRate: window.mortgageCalculatorConfig.competitorInitialRateDefault,\n competitorExtendedRate: window.mortgageCalculatorConfig.competitorExtendedRateDefault\n });\n \n this.getCalculation();\n this.closeModalCompetitor();\n }\n\n handleDepositChange(e){\n this.setState({ deposit: e })\n this.chartReference.data.datasets[0].data = [this.state.deposit, (this.state.purchasePrice - this.state.deposit)];\n this.chartReference.update();\n }\n\n handlePurchasePriceChange(e){\n this.setState({ purchasePrice: e })\n this.chartReference.data.datasets[0].data = [this.state.deposit, (this.state.purchasePrice - this.state.deposit)];\n this.chartReference.update();\n }\n\n componentDidMount() {\n //console.log(this.chartReference); // returns a Chart.js instance reference\n }\n\n createSelectItemsTerm() {\n let items = []; \n for (let i = window.mortgageCalculatorConfig.termMin; i <= window.mortgageCalculatorConfig.termMax; i++) { \n items.push(); \n //here I will be creating my options dynamically based on\n //what props are currently passed to the parent component\n }\n return items;\n } \n\n createSelectItemsCompetitorPeriod() {\n let items = []; \n for (let i = window.mortgageCalculatorConfig.competitorCommitmentPeriodMin; i <= window.mortgageCalculatorConfig.competitorCommitmentPeriodMax; i++) { \n items.push(); \n }\n return items;\n } \n\n\n render() {\n return ( \n
\n\n
\n
\n
\n
\n
\n \n
\n
\n \"House\n
\n \n
\n
\n
\n \n
\n
\n \"Coins\n
\n \n
\n
\n
\n \n
\n \n
\n
\n {this.state.isInternal === true && (\n \n
\n
\n \n
\n {\n this.setState({ interestFlex: e.target.value });\n this.value = this.state.interestFlex;\n }}> %\n
\n
\n
\n \n
\n {\n this.setState({ interestRateFirst5Years: e.target.value });\n this.value = this.state.interestRateFirst5Years;\n }}> %\n
\n
\n
\n \n
\n {\n this.setState({ interestRateAfter5Years: e.target.value });\n this.value = this.state.interestRateAfter5Years;\n }}\n > %\n
\n
\n
\n )}\n \n \n {this.state.isLoading === true && ()}\n\n {this.state.hasError > 0 && (\n
Oops! Something went wrong
{this.state.errorMsg}
\n )}\n \n \n
\n
\n this.chartReference = reference} data={this.chartdata } options={this.chartOptions} />\n
\n
\n \n {this.state.hasResult === true && (\n \n )}\n {this.state.hasResult === true && (\n \n )}\n {this.state.hasResult === true && (\n \n )}\n
\n {this.state.hasResult === true && (\n
\n
\n {this.state.isInternal === true && (\n
\n {this.state.competitorHasCalculation === false && (\n \n )}\n {this.state.competitorHasCalculation === true && (\n
\n Show competitor data\n \n
\n )}\n \n
\n )}\n
\n \n
\n
\n
\n )}\n\n \n
\n

Competitor data

\n
\n
\n
\n \n
\n \n
\n
\n
\n
\n \n
\n {\n this.setState({ competitorInitialRate: e.target.value });\n this.value = this.state.competitorInitialRate;\n }}> %\n
\n
\n
\n \n
\n {\n this.setState({ competitorExtendedRate: e.target.value });\n this.value = this.state.competitorExtendedRate;\n }}\n > %\n
\n
\n
\n
\n \n \n
\n
\n
\n\n \n
\n

Apply for mortgage

\n
\n \n
\n {\n this.setState({ applyMortgageName: e.target.value });\n this.value = this.state.applyMortgageName;\n }}>\n
\n
\n
\n \n
\n {\n this.setState({ applyMortgagePhone: e.target.value });\n this.value = this.state.applyMortgagePhone;\n }}>\n
\n
\n
\n \n
\n {\n this.setState({ applyMortgageEmail: e.target.value });\n this.value = this.state.applyMortgageEmail;\n }}>\n
\n
\n
\n \n
\n {\n this.setState({ applyMortgageAddress: e.target.value });\n this.value = this.state.applyMortgageAddress;\n }}>\n
\n
\n
\n \n
\n {\n this.setState({ applyMortgageCity: e.target.value });\n this.value = this.state.applyMortgageCity;\n }}>\n
\n
\n
\n \n \n
\n
\n \n
\n \n \n
\n
\n
\n {this.state.applyMortgageSendSuccess === true && (\n
\n \n
\n )}\n {this.state.applyMortgageValidateError === true && (\n
\n \n
\n )}\n {this.state.applyMortgageSendError === true && (\n
\n Oops! Something went wrong
{this.state.applyMortgageMsg} \n
\n )}\n {this.state.applyMortgageSendSuccess === false && this.state.applyMortgageSendError === false && (\n \n )}\n \n \n
\n \n
\n \n\n
\n\n \n \n \n\n );\n }\n}\n\nexport default Calculator;","import './styles/App.scss';\nimport Calculator from './Calculator';\n\nfunction App() {\n return (\n
\n \n
\n \n \n );\n}\n\nexport default App;\n","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\n\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"names":["module","exports","utils","require","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","transitionalDefaults","AxiosError","CanceledError","parseProtocol","config","Promise","resolve","reject","onCanceled","requestData","data","requestHeaders","headers","responseType","done","cancelToken","unsubscribe","signal","removeEventListener","isFormData","isStandardBrowserEnv","request","XMLHttpRequest","auth","username","password","unescape","encodeURIComponent","Authorization","btoa","fullPath","baseURL","url","onloadend","responseHeaders","getAllResponseHeaders","response","responseText","status","statusText","value","err","open","method","toUpperCase","params","paramsSerializer","timeout","onreadystatechange","readyState","responseURL","indexOf","setTimeout","onabort","ECONNABORTED","onerror","ERR_NETWORK","ontimeout","timeoutErrorMessage","transitional","clarifyTimeoutError","ETIMEDOUT","xsrfValue","withCredentials","xsrfCookieName","read","undefined","xsrfHeaderName","forEach","val","key","toLowerCase","setRequestHeader","isUndefined","onDownloadProgress","addEventListener","onUploadProgress","upload","cancel","type","abort","subscribe","aborted","protocol","ERR_BAD_REQUEST","send","bind","Axios","mergeConfig","axios","createInstance","defaultConfig","context","instance","prototype","extend","create","instanceConfig","CancelToken","isCancel","VERSION","toFormData","Cancel","all","promises","spread","isAxiosError","executor","TypeError","resolvePromise","this","promise","token","then","_listeners","i","l","length","onfulfilled","_resolve","message","reason","throwIfRequested","listener","push","index","splice","source","c","call","ERR_CANCELED","name","inherits","__CANCEL__","InterceptorManager","dispatchRequest","validator","validators","defaults","interceptors","configOrUrl","assertOptions","silentJSONParsing","boolean","forcedJSONParsing","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","unshift","fulfilled","rejected","responseInterceptorChain","chain","Array","apply","concat","shift","newConfig","onFulfilled","onRejected","error","getUri","generateHTTPMethod","isForm","code","Error","toJSON","description","number","fileName","lineNumber","columnNumber","stack","descriptors","Object","defineProperties","defineProperty","from","customProps","axiosError","toFlatObject","obj","assign","handlers","use","options","eject","id","fn","h","isAbsoluteURL","combineURLs","requestedURL","transformData","throwIfCancellationRequested","transformRequest","merge","common","adapter","transformResponse","config1","config2","getMergedValue","target","isPlainObject","isArray","slice","mergeDeepProperties","prop","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","keys","configValue","validateStatus","ERR_BAD_RESPONSE","Math","floor","fns","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","process","toString","getDefaultAdapter","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","isFileList","isObjectPayload","isObject","contentType","_FormData","env","FormData","rawValue","parser","encoder","isString","JSON","parse","trim","e","stringify","stringifySafely","strictJSONParsing","maxContentLength","maxBodyLength","thisArg","args","arguments","encode","replace","serializedParams","parts","v","isDate","toISOString","join","hashmarkIndex","relativeURL","write","expires","path","domain","secure","cookie","isNumber","Date","toGMTString","document","match","RegExp","decodeURIComponent","remove","now","test","payload","originURL","msie","navigator","userAgent","urlParsingNode","createElement","resolveURL","href","setAttribute","host","search","hash","hostname","port","pathname","charAt","window","location","requestURL","parsed","normalizedName","ignoreDuplicateOf","split","line","substr","exec","callback","arr","formData","convertValue","isTypedArray","Blob","Buffer","build","parentKey","fullKey","endsWith","toArray","el","append","pop","thing","deprecatedWarnings","version","formatMessage","opt","desc","opts","ERR_DEPRECATED","console","warn","schema","allowUnknown","ERR_BAD_OPTION_VALUE","result","ERR_BAD_OPTION","cache","kindOf","str","kindOfTest","getPrototypeOf","isFunction","hasOwnProperty","TypedArray","Uint8Array","constructor","pattern","ArrayBuffer","isView","pipe","product","assignValue","a","b","stripBOM","content","charCodeAt","superConstructor","props","sourceObj","destObj","filter","merged","getOwnPropertyNames","searchString","position","String","lastIndex","canUseDOM","ExecutionEnvironment","canUseWorkers","Worker","canUseEventListeners","attachEvent","canUseViewport","screen","define","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","toObject","test1","test2","fromCharCode","map","n","test3","letter","shouldUseNative","symbols","to","s","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","getShim","isRequired","ReactPropTypes","array","bigint","bool","func","object","string","symbol","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","aa","m","r","y","ba","Set","ca","da","ea","add","fa","ha","ia","ja","ka","B","d","f","g","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","D","oa","pa","qa","ma","isNaN","na","la","removeAttribute","setAttributeNS","xlinkHref","ra","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","sa","ta","ua","wa","xa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Symbol","for","E","Ma","Ka","iterator","La","Na","Oa","Pa","prepareStackTrace","set","Reflect","construct","k","displayName","Qa","tag","render","_render","Ra","$$typeof","_context","_payload","_init","Sa","Ta","nodeName","Va","_valueTracker","getOwnPropertyDescriptor","get","configurable","enumerable","getValue","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","body","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","$a","ab","bb","cb","ownerDocument","eb","children","Children","db","fb","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","hb","ib","jb","textContent","kb","lb","mb","nb","ob","namespaceURI","innerHTML","valueOf","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","pb","lastChild","nodeType","nodeValue","qb","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","rb","sb","tb","style","setProperty","substring","ub","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","track","wbr","vb","wb","is","xb","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Ob","Pb","Qb","Rb","onError","Sb","Tb","Ub","Vb","Wb","Xb","Zb","alternate","return","flags","$b","memoizedState","dehydrated","ac","cc","child","sibling","current","bc","dc","ec","fc","gc","hc","ic","jc","kc","lc","mc","nc","Map","oc","pc","qc","rc","blockedOn","domEventName","eventSystemFlags","nativeEvent","targetContainers","sc","delete","pointerId","tc","vc","wc","lanePriority","unstable_runWithPriority","priority","hydrate","containerInfo","xc","yc","zc","Ac","Bc","unstable_scheduleCallback","unstable_NormalPriority","Cc","Dc","Ec","animationend","animationiteration","animationstart","transitionend","Fc","Gc","Hc","animation","transition","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","unstable_now","F","Rc","Uc","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","Vc","entangledLanes","entanglements","Wc","Xc","Yc","Zc","$c","eventTimes","clz32","bd","cd","log","LN2","dd","unstable_UserBlockingPriority","ed","fd","gd","hd","uc","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","stopPropagation","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","repeat","locale","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","date","datetime","email","month","range","tel","text","time","week","me","ne","oe","event","listeners","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","De","Ee","Fe","He","Ie","Je","Ke","Le","offset","nextSibling","Me","contains","compareDocumentPosition","Ne","HTMLIFrameElement","contentWindow","Oe","contentEditable","Pe","Qe","Re","Se","Te","Ue","start","selectionStart","end","selectionEnd","anchorNode","defaultView","getSelection","anchorOffset","focusNode","focusOffset","Ve","We","Xe","Ye","Ze","Yb","G","$e","has","af","bf","random","cf","df","capture","passive","Nb","x","w","z","u","q","t","ef","ff","parentWindow","gf","hf","J","K","Q","L","je","char","ke","jf","kf","lf","mf","autoFocus","nf","__html","of","pf","clearTimeout","qf","rf","sf","previousSibling","tf","vf","wf","xf","yf","zf","Af","Bf","H","I","Cf","M","N","Df","Ef","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","childContextTypes","Gf","Hf","If","getChildContext","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","unstable_cancelCallback","Qf","unstable_shouldYield","Rf","unstable_requestPaint","Sf","Tf","unstable_getCurrentPriorityLevel","Uf","unstable_ImmediatePriority","Vf","Wf","Xf","unstable_LowPriority","Yf","unstable_IdlePriority","Zf","$f","ag","bg","cg","dg","O","eg","fg","gg","hg","ig","jg","kg","ReactCurrentBatchConfig","lg","defaultProps","mg","ng","og","pg","qg","rg","_currentValue","sg","childLanes","tg","dependencies","firstContext","lanes","ug","vg","observedBits","next","responders","wg","xg","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","yg","zg","eventTime","lane","Ag","Bg","Cg","A","p","C","Dg","Eg","Fg","Component","refs","Gg","Kg","isMounted","_reactInternals","enqueueSetState","Hg","Ig","Jg","enqueueReplaceState","enqueueForceUpdate","Lg","shouldComponentUpdate","isPureReactComponent","Mg","contextType","state","updater","Ng","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Og","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Pg","Qg","ref","_owner","_stringRef","Rg","Sg","lastEffect","nextEffect","firstEffect","Tg","Ug","mode","Vg","implementation","Wg","Xg","Yg","Zg","$g","ah","bh","ch","dh","eh","documentElement","tagName","fh","gh","hh","P","ih","memoizedProps","revealOrder","jh","kh","lh","mh","nh","oh","pendingProps","ph","qh","rh","sh","th","uh","_workInProgressVersionPrimary","vh","ReactCurrentDispatcher","wh","xh","R","S","T","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","baseQueue","queue","Ih","Jh","Kh","lastRenderedReducer","action","eagerReducer","eagerState","lastRenderedState","dispatch","Lh","Mh","_getVersion","_source","mutableReadLanes","Nh","U","useState","getSnapshot","useEffect","setSnapshot","Oh","Ph","Qh","Rh","destroy","deps","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","di","readContext","useCallback","useContext","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useDebugValue","useDeferredValue","useTransition","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","uf","ei","ReactCurrentOwner","fi","gi","hi","ii","ji","compare","ki","li","mi","baseLanes","ni","oi","pi","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","qi","getDerivedStateFromError","ri","pendingContext","Bi","Di","Ei","si","retryLane","ti","fallback","unstable_avoidThisFallback","ui","unstable_expectedLoadTime","vi","wi","xi","yi","zi","isBackwards","rendering","renderingStartTime","last","tail","tailMode","Ai","Fi","Gi","wasMultiple","multiple","onClick","onclick","size","createElementNS","createTextNode","V","Hi","Ii","W","Ji","Ki","Li","Mi","Ni","Oi","WeakMap","Pi","Qi","Ri","Si","componentDidCatch","Ti","componentStack","Ui","WeakSet","Vi","Wi","Xi","__reactInternalSnapshotBeforeUpdate","Yi","Zi","$i","focus","aj","display","bj","onCommitFiberUnmount","componentWillUnmount","cj","dj","ej","fj","gj","hj","insertBefore","_reactRootContainer","ij","jj","kj","lj","mj","nj","ceil","oj","pj","X","Y","qj","rj","sj","tj","uj","vj","Infinity","wj","ck","Z","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Sc","Kj","Lj","Mj","callbackNode","expirationTimes","callbackPriority","Tc","Nj","Oj","Pj","Qj","Rj","Sj","Tj","finishedWork","finishedLanes","Uj","timeoutHandle","Wj","Xj","pingCache","Yj","Zj","va","ak","bk","dk","rangeCount","focusedElem","selectionRange","ek","min","createRange","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","top","scrollTop","onCommitFiberRoot","fk","gk","ik","isReactComponent","pendingChildren","jk","mutableSourceEagerHydrationData","kk","lk","mk","nk","ok","qk","hydrationOptions","mutableSources","_internalRoot","rk","tk","hasAttribute","sk","uk","hk","_calculateChangedBits","unstable_observedBits","unmount","querySelectorAll","form","Vj","vk","Events","wk","findFiberByHostInstance","bundleType","rendererPackageName","xk","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","__REACT_DEVTOOLS_GLOBAL_HOOK__","yk","isDisabled","supportsFiber","inject","createPortal","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","checkDCE","setState","nextProps","prevState","nextState","prevProps","__reactInternalSnapshotFlag","__reactInternalSnapshot","polyfill","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","newApiName","maybeSnapshot","snapshot","__suppressDeprecationWarning","bodyOpenClassName","portalClassName","_extends","_createClass","descriptor","writable","Constructor","protoProps","staticProps","_react","_react2","_interopRequireDefault","_reactDom2","_propTypes2","_ModalPortal2","ariaAppHider","__esModule","newObj","default","_interopRequireWildcard","_safeHTMLElement","_safeHTMLElement2","_reactLifecyclesCompat","_classCallCheck","_possibleConstructorReturn","self","ReferenceError","isReact16","createHTMLElement","getCreatePortal","getParentElement","parentSelector","Modal","_Component","_ref","_temp","_this","_len","_key","__proto__","removePortal","parent","portalRef","portal","renderPortal","defaultStyles","subClass","superClass","setPrototypeOf","_inherits","className","prevParent","nextParent","_","_props","isOpen","closesAt","closeTimeoutMS","beforeClose","closeWithTimeout","setElement","propTypes","overlay","htmlOpenClassName","afterOpen","overlayClassName","appElement","SafeHTMLCollection","SafeNodeList","onAfterOpen","onRequestClose","ariaHideApp","shouldFocusAfterRender","shouldCloseOnOverlayClick","shouldReturnFocusAfterClose","preventScroll","aria","role","contentLabel","shouldCloseOnEsc","overlayRef","contentRef","overlayElement","contentElement","contentEl","right","bottom","backgroundColor","border","background","overflow","WebkitOverflowScrolling","borderRadius","outline","padding","_typeof","focusManager","_scopeTab2","classList","_portalOpenInstances2","CLASS_NAMES","ariaHiddenInstances","ModalPortal","setOverlayRef","setContentRef","afterClose","_this$props","getElementsByTagName","show","returnFocus","teardownScopedFocus","popWithoutFocus","onAfterClose","deregister","beforeOpen","closeTimer","setupScopedFocus","markForFocusLater","openAnimationFrame","requestAnimationFrame","overlayEl","close","closeWithoutTimeout","focusContent","contentHasFocus","handleKeyDown","requestClose","handleOverlayOnClick","shouldClose","ownerHandlesClose","handleContentOnMouseUp","handleOverlayOnMouseDown","handleContentOnClick","handleContentOnMouseDown","shouldBeClosed","buildClassName","additional","classNames","attributesFromObject","prefix","items","reduce","acc","moveFromContentToOverlay","cancelAnimationFrame","hide","register","_props2","contentStyles","overlayStyles","overlayProps","onMouseDown","contentProps","tabIndex","onKeyDown","onMouseUp","modal","testId","resetState","globalElement","assertNodeList","useElement","validateElement","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","documentNotReadyOrSSRTesting","_warning","_warning2","nodeList","selector","HTMLCollection","NodeList","_arr","before","after","_i","item","instances","_arr2","_i2","check","_portalOpenInstances","eventType","openInstances","cloneNode","parentElement","htmlElement","cls","htmlClassList","removeClass","_cls","docBodyClassList","at","classString","classListRef","poll","incrementReference","decrementReference","focusLaterElements","handleBlur","handleFocus","toFocus","modalElement","_tabbable","_tabbable2","needToFocus","portalOpenInstances","PortalOpenInstances","openInstance","emit","subscribers","subscriber","_exenv","EE","SafeHTMLElement","HTMLElement","tabbable","head","getActiveElement","checkSafari","shadowRoot","findTabbableDescendants","descendants","finished","tabbableNode","hidesContents","zeroSize","offsetWidth","offsetHeight","getComputedStyle","getPropertyValue","scrollWidth","scrollHeight","exception","focusable","isTabIndexNotNaN","rootNode","getRootNode","visible","getAttribute","isTabIndexNaN","_Modal","_Modal2","Fragment","__self","__source","jsx","jsxs","StrictMode","Profiler","Suspense","forceUpdate","escape","_status","_result","IsSomeRendererActing","count","only","PureComponent","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","createFactory","createRef","forwardRef","isValidElement","lazy","memo","performance","MessageChannel","unstable_forceFrameRate","port2","port1","onmessage","postMessage","sortIndex","startTime","expirationTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","delay","unstable_wrapCallback","warning","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","definition","o","chunkId","miniCssF","inProgress","dataWebpackPrefix","script","needAttach","scripts","charset","src","onScriptComplete","prev","onload","doneFns","toStringTag","installedChunks","j","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","_arrayLikeToArray","len","arr2","_unsupportedIterableToArray","minLen","_slicedToArray","_s","_e","_n","_d","_defineProperties","_assertThisInitialized","_setPrototypeOf","_getPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","sham","Proxy","Boolean","Super","NewTarget","__assign","__spreadArray","pack","ar","escapeRegExp","stringToGoIntoTheRegex","abbrMap","cleanValue","_a","_b","groupSeparator","_c","decimalSeparator","allowDecimals","decimalsLimit","_f","allowNegativeValue","_g","disableAbbreviations","_h","_j","transformedValue","abbreviations","isNegative","prefixWithValue","preValue","withoutSeparators","separator","reg","removeSeparators","withoutInvalidChars","validChars","chars","removeInvalidChars","valueOnly","digits","abbr","multiplier","Number","parseAbbrValue","includeNegative","includes","int","decimals","trimmedDecimals","getSuffix","suffixReg","suffixMatch","formatValue","_value","intlConfig","decimalScale","suffix","replaceDecimalSeparator","Intl","NumberFormat","currency","minimumFractionDigits","maximumFractionDigits","formatToParts","formatted","replaceParts","intlSuffix","includeDecimalSeparator","newValue","disableGroupSeparators","currencySymbol","CurrencyInput","customInput","userMaxLength","userValue","onValueChange","fixedDecimalLength","placeholder","step","max","_decimalSeparator","_groupSeparator","onChange","onFocus","onBlur","onKeyUp","transformRawValue","localeConfig","curr","getLocaleConfig","formatValueOptions","cleanValueOptions","formattedStateValue","stateValue","setStateValue","dirty","setDirty","cursor","setCursor","changeCount","setChangeCount","lastKeyStroke","setLastKeyStroke","inputRef","processChange","cursorPosition","modifiedValue","splitValue","repositionCursor","stringValue","float","numberValue","parseFloat","formattedValue","newCursor","setSelectionRange","inputProps","inputMode","fixedDecimals","fixedDecimalValue","padTrimValue","currentValue","fixedLength","toFixed","suffix_1","CustomInput","React","_defineProperty","ownKeys","enumerableOnly","sym","_objectSpread2","getOwnPropertyDescriptors","_superPropBase","property","_get","receiver","_createForOfIteratorHelper","allowArrayLike","it","normalCompletion","didErr","_e2","_toConsumableArray","iter","noop","uid","isNullOrUndef","isNumberFinite","isFinite","finiteOrDefault","valueOrDefault","toDimension","dimension","each","loopable","reverse","_elementsEqual","a0","a1","ilen","v0","v1","datasetIndex","clone$1","klen","isValidKey","_merger","tval","sval","sources","merger","mergeIf","_mergerIf","keyResolvers","resolveObjectKey","resolver","tmp","_splitKey","_getKeyResolver","_capitalize","defined","setsEqual","PI","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","sign","niceNum","roundedRange","round","almostEquals","niceRange","pow","fraction","epsilon","abs","_setMinAndMaxByKey","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","sqrt","angle","atan2","distance","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_isBetween","_lookup","table","cmp","mid","lo","_lookupByKey","_rlookupByKey","arrayEvents","unlistenArrayEvents","stub","_chartjs","_arrayUnique","requestAnimFrame","throttled","updateFn","updateArgs","ticking","rest","_toLeftRightCenter","align","_alignStartEnd","_getStartAndCountOfVisiblePoints","points","animationsDisabled","pointCount","_sorted","iScale","_parsed","axis","getUserBounds","minDefined","maxDefined","getPixelForValue","_scaleRangesChanged","xScale","yScale","_scaleRanges","newRanges","xmin","xmax","ymin","ymax","changed","atEdge","elasticIn","sin","elasticOut","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","easeInOutBounce","lim","p2b","n2b","b2n","n2p","map$1","hex","h1","h2","eq","hexString","isShort","alpha","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","rgb","rgb2hsl","hueValue","calln","hsl2rgb","hue","hueParse","p1","p2","hwb2rgb","hsv2rgb","names","names$1","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","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","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","nameParse","unpacked","tkeys","parseInt","unpack","transparent","RGB_RE","modHSL","ratio","clone","proto","fromObject","functionParse","rgbParse","Color","ret","hexParse","_rgb","_valid","hslString","weight","w2","c1","c2","w1","rgb1","rgb2","interpolate","deg","rotate","index_esm","isPatternOrGradient","getHoverColor","saturate","darken","overrides","getScope$1","root","scope","values","Defaults","_descriptors","borderColor","datasets","devicePixelRatio","chart","platform","getDevicePixelRatio","elements","events","font","family","hover","hoverBackgroundColor","ctx","hoverBorderColor","hoverColor","indexAxis","interaction","intersect","includeInvisible","maintainAspectRatio","onHover","parsing","plugins","responsive","scale","scales","showLine","drawActiveElementsOnTop","describe","targetScope","targetName","scopeObject","targetScopeObject","privateName","local","_scriptable","startsWith","_indexable","_fallback","_measureText","longest","textWidth","measureText","_longestText","arrayOfThings","garbageCollect","save","jlen","nestedThing","restore","gcLen","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","canvas","getContext","resetTransform","clearRect","drawPoint","drawPointLegend","xOffset","yOffset","cornerRadius","pointStyle","rotation","radius","rad","translate","drawImage","beginPath","ellipse","arc","closePath","moveTo","lineTo","SQRT1_2","rect","fill","borderWidth","stroke","_isPointInArea","point","margin","clipArea","clip","unclipArea","_steppedLineTo","previous","flip","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","renderText","lines","strokeColor","setRenderOpts","strokeStyle","lineWidth","strokeText","maxWidth","fillText","decorateText","translation","fillStyle","textAlign","textBaseline","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","decorationWidth","addRoundedRectPath","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","FONT_STYLE","toLineHeight","matches","_readValueToProps","objProps","toTRBL","toTRBLCorners","toPadding","toFont","toFontString","inputs","info","cacheable","parentContext","_createResolver","scopes","prefixes","rootScopes","getTarget","deleteProperty","_keys","_cached","_resolveWithPrefixes","_scopes","getKeysFromAllScopes","storage","_storage","_attachContext","proxy","subProxy","descriptorDefaults","_cacheable","_proxy","_subProxy","_stack","setContext","override","isScriptable","needsSubResolver","createSubResolver","_resolveScriptable","isIndexable","_resolveArray","_resolveWithContext","allKeys","scriptable","indexable","_allKeys","readKey","resolveFallback","getScope","addScopes","parentScopes","parentFallback","_rootScopes","allScopes","addScopesFromKey","_getTarget","subGetTarget","resolveKeysFromAllScopes","_parseObjectDataRadialScale","_parsing","EPSILON","getPoint","skip","getValueAxis","splineCurve","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","monotoneAdjust","deltaK","mK","alphaK","betaK","tauK","squaredMagnitude","pointCurrent","pointsLen","pointAfter","monotoneCompute","delta","pointBefore","valueAxis","iPixel","vPixel","capControlPoint","pt","_updateBezierControlPoints","loop","controlPoints","spanGaps","cubicInterpolationMode","slopeDelta","splineCurveMonotone","tension","capBezierPoints","inArea","inAreaPrev","inAreaNext","_isDomSupported","_getParentNode","domNode","parseMaxStyle","styleValue","parentProperty","valueInPixels","positions","getPositionedStyle","styles","pos","getRelativePosition","evt","borderBox","boxSizing","paddings","borders","offsetX","offsetY","box","useOffsetPos","getBoundingClientRect","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","readUsedSize","getStyle","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","intlCache","formatNumber","num","cacheKey","formatter","getNumberFormat","format","getRtlAdapter","rtl","rectX","setWidth","xPlus","leftForLtr","itemWidth","getRightToLeftAdapter","_itemWidth","overrideTextDirection","direction","original","getPropertyPriority","prevTextDirection","restoreTextDirection","propertyFn","between","normalize","normalizeSegment","_boundSegment","segment","bounds","prevValue","startBound","endBound","getSegment","inside","subStart","shouldStart","shouldStop","_boundSegments","segments","sub","splitByStyles","segmentOptions","chartContext","_chart","baseStyle","readStyle","_datasetIndex","prevStyle","addStyle","st","dir","styleChanged","p0","p0DataIndex","p1DataIndex","doSplitByStyles","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","Animator","_request","_charts","_running","_lastDate","anims","callbacks","numSteps","duration","initial","currentStep","_update","_refresh","remaining","running","draw","_active","_total","tick","_notify","charts","complete","progress","_getAnims","cur","_duration","animator","interpolators","factor","c0","valid","mix","Animation","cfg","_fn","_easing","easing","_start","_loop","_target","_prop","_from","_to","_promises","elapsed","remain","res","rej","resolved","animationOptions","colors","properties","numbers","active","resize","animations","Animations","_properties","configure","animatedProps","option","newOptions","$shared","$animations","resolveTargetOptions","_createAnimations","anim","wait","awaitAll","update","_animateOptions","scaleClip","allowedOverflow","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","applyStack","dsIndex","otherValue","singleMode","isStacked","stacked","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","getMatchingVisibleMetas","updateStacks","controller","_cachedMeta","_stacks","iAxis","vAxis","indexScale","valueScale","getStackKey","_top","_bottom","getFirstScaleId","clearStacks","isDirectUpdateMode","cloneIfNotShared","cached","DatasetController","_ctx","_cachedDataOpts","getMeta","_type","_data","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","supportsDecimation","$context","_syncList","initialize","linkScales","_stacked","addElements","dataset","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","iid","iAxisID","vid","vAxisID","getScaleForId","rScale","getDatasetMeta","scaleID","adata","convertObjectDataToArray","isExtensible","_dataCheck","datasetElementType","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","sorted","parseArrayData","parseObjectData","parsePrimitiveData","labels","getLabels","singleScale","xAxisKey","yAxisKey","parsedValue","NaN","canStack","otherScale","_getOtherScale","hidden","createStack","NEGATIVE_INFINITY","otherMin","otherMax","_skip","updateRangeFromParsed","getParsed","label","getLabelForValue","_clip","toClip","defaultClip","getMaxOverflow","chartArea","resolveDatasetElementOptions","resolveDataElementOptions","dataIndex","raw","createDataContext","createDatasetContext","_resolveElementOptions","dataElementType","sharing","datasetElementScopeKeys","resolveNamedOptions","freeze","datasetAnimationScopeKeys","sharedOptions","_animationsDisabled","firstOpts","previouslySharedOptions","getSharedOptions","includeOptions","updateSharedOptions","_resolveAnimations","_setStyle","arg1","arg2","numMeta","numData","_insertElements","_removeElements","move","updateElements","removed","_dataChanges","_sync","newCount","computeMinSampleSize","_cache","$bar","visibleMetas","getAllParsedValues","sort","getAllScaleValues","_length","updateMinAndPrev","ticks","getPixelForTick","parseValue","entry","startValue","endValue","barStart","barEnd","_custom","parseFloatBar","parseArrayOrPrimitive","isFloatBar","custom","setBorderSkipped","edge","borderSkipped","horizontal","borderProps","enableBorderRadius","parseEdge","orig","v2","startEnd","setInflateAmount","inflateAmount","BarController","iAxisKey","vAxisKey","bars","reset","getBasePixel","isHorizontal","ruler","_getRuler","_getSharedOptions","vpixels","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","center","updateElement","grouped","skipNull","_getStacks","pixels","barThickness","_startPixel","_endPixel","stackCount","_getStackCount","categoryPercentage","barPercentage","baseValue","minBarLength","actualBase","floating","getDataVisibility","barSign","startPixel","getPixelForDecimal","endPixel","halfGrid","getLineWidthForValue","maxBarThickness","percent","chunk","computeFlexCategoryTraits","thickness","computeFitCategoryTraits","stackIndex","_getStackIndex","rects","_index_","grid","_value_","beginAtZero","BubbleController","tooltip","title","DoughnutController","innerRadius","outerRadius","circumference","isDatasetVisible","_getRotation","_getCircumference","arcs","spacing","getMaxBorderWidth","getMaxOffset","maxSize","cutout","chartWeight","_getRingWeight","_getRotationExtents","ratioX","ratioY","startAngle","endAngle","startX","startY","endX","endY","calcMax","calcMin","maxX","maxY","minX","minY","getRatioAndOffset","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","total","calculateTotal","_getRingWeightOffset","animateRotate","calculateCircumference","animationOpts","centerX","centerY","animateScale","_circumference","metaData","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","legend","generateLabels","legendItem","toggleDataVisibility","tooltipItem","dataLabel","LineController","_dataset","_decimated","animated","maxGapLength","directUpdate","prevParsed","nullData","stop","lastPoint","updateControlPoints","PolarAreaController","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","angleLines","circular","pointLabels","PieController","RadarController","_fullLoop","pointPosition","getPointPositionForValue","Element","useFinalPosition","getProps","final","defaultRoutes","formatters","numeric","tickValue","notation","maxTick","calculateDelta","logDelta","numDecimal","logarithmic","Ticks","autoSkip","tickOpts","ticksLimit","maxTicksLimit","tickLength","_tickSize","maxScale","maxChart","_maxLength","determineMaxTicks","majorIndices","major","enabled","getMajorIndices","numMajorIndices","first","newTicks","skipMajors","evenMajorSpacing","diff","getEvenSpacing","factors","_factorize","calculateSpacing","avgMajorSpacing","majorStart","majorEnd","grace","drawBorder","drawOnChartArea","drawTicks","tickWidth","tickColor","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkipPadding","labelOffset","minor","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","route","offsetFromEdge","sample","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","lineValue","getTickMarkLength","getTitleHeight","titleAlign","reverseAlign","Scale","_margins","paddingTop","paddingBottom","paddingLeft","paddingRight","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_longestTextCache","_reversePixels","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","suggestedMin","suggestedMax","metas","getMinMax","xLabels","yLabels","beforeUpdate","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","minmax","change","keepZero","_addGrace","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","afterAutoSkip","beforeFit","fit","afterFit","afterUpdate","reversePixels","_alignToPixels","alignToPixels","notifyPlugins","_callHooks","beforeTickToLabelConversion","afterTickToLabelConversion","maxLabelDiagonal","numTicks","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","asin","titleOpts","gridOpts","titleHeight","tickPadding","angleRadians","labelHeight","labelWidth","_calculatePadding","_handleMargins","isRotated","labelsBelowTicks","offsetLeft","offsetRight","fullSize","generateTickLabels","_computeLabelSizes","tickFont","fontString","nestedLabel","caches","widths","heights","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","idx","decimal","getBaseValue","createTickContext","optionTicks","rot","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","ticksLength","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","positionAxisID","limit","optsAtIndex","lineColor","tickBorderDash","tickBorderDashOffset","lineCount","textOffset","tickAndPadding","hTickAndPadding","_getXAxisLabelAlignment","_getYAxisLabelAlignment","halfCount","tickTextAlign","backdrop","labelPadding","fillRect","findIndex","_computeGridLineItems","drawLine","setLineDash","lineDashOffset","lastLineWidth","_computeLabelArea","_computeLabelItems","titleX","titleY","titleArgs","drawBackground","drawGrid","drawTitle","drawLabels","tz","gz","getSortedVisibleDatasetMetas","axisID","fontSize","TypedRegistry","isPrototypeOf","parentScope","isIChartComponent","itemDefaults","routes","propertyParts","sourceName","sourceScope","routeDefaults","registerDefaults","Registry","controllers","_typedRegistries","_each","typedRegistry","arg","_getRegistryForType","isForType","_exec","itemReg","registry","component","camelMethod","ScatterController","getElement","abstract","DateAdapter","chartOptions","timestamp","amount","unit","weekday","members","adapters","_date","binarySearch","metaset","lookupMethod","getRange","evaluateInteractionItems","handler","getIntersectItems","isPointInArea","inRange","getNearestCartesianItems","distanceMetric","useX","useY","getDistanceMetricForAxis","minDistance","getCenterPoint","getNearestItems","getNearestRadialItems","getAxisItems","rangeMethod","intersectsItem","Interaction","modes","nearest","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","setLayoutDims","layouts","layout","wrap","stackWeight","placed","buildStacks","vBoxMaxWidth","hBoxMaxHeight","availableWidth","availableHeight","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","getPadding","newWidth","outerWidth","newHeight","outerHeight","widthChanged","heightChanged","same","other","getMargins","marginForPositions","fitBoxes","boxes","refit","refitBoxes","setBoxDims","placeBoxes","userPadding","autoPadding","_layers","layoutItem","minPadding","layoutBoxes","wrapBoxes","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","buildLayoutBoxes","verticalBoxes","horizontalBoxes","beforeLayout","visibleVerticalBoxCount","updatePos","handleMaxPadding","BasePlatform","BasicPlatform","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","eventListenerOptions","removeListener","nodeListContains","createAttachObserver","observer","MutationObserver","entries","trigger","addedNodes","removedNodes","observe","childList","subtree","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","createResizeObserver","ResizeObserver","contentRect","listenDevicePixelRatioChanges","releaseObserver","disconnect","unlistenDevicePixelRatioChanges","createProxyAndListen","native","fromNativeEvent","addListener","DomPlatform","renderHeight","renderWidth","displayWidth","displayHeight","initCanvas","proxies","$proxies","attach","detach","isConnected","PluginService","hook","_createDescriptors","plugin","_oldCache","_notifyStateChanges","localIds","getPlugin","allPlugins","getOpts","pluginOpts","createDescriptors","previousDescriptors","pluginScopeKeys","getIndexAxis","datasetDefaults","determineAxis","scaleOptions","initOptions","chartDefaults","configScales","chartIndexAxis","firstIDs","scaleConf","defaultId","getDefaultScaleIDFromAxis","defaultScaleOptions","defaultID","getAxisFromDefaultScaleID","mergeScaleConfig","initData","keyCache","keysCached","cachedKeys","generate","addIfFound","Config","_config","initConfig","_scopeCache","_resolverCache","clearCache","clear","datasetType","additionalOptionScopes","mainScope","resetCache","keyLists","_cachedScopes","getResolver","subPrefixes","needContext","subResolver","resolverCache","hasFunction","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","onComplete","onAnimationProgress","onProgress","getCanvas","getElementById","getChart","moveNumericKeys","intKey","Chart","userConfig","initialCanvas","existingChart","chartOptionScopes","OffscreenCanvas","_detectPlatform","updateConfig","acquireContext","_options","_aspectRatio","_metasets","_lastEvent","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","debounce","resizeDelay","listen","_initialize","bindEvents","_resizeBeforeDraw","_resize","newSize","newRatio","onResize","axisOptions","scaleOpts","updated","isRadial","dposition","dtype","scaleType","getScale","init","hasUpdated","_destroyDatasetMeta","newControllers","_removeUnreferencedMetasets","updateIndex","ControllerClass","getController","_updateMetasets","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","invalidate","buildOrUpdateControllers","buildOrUpdateElements","_minPadding","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","ensureScalesHaveIDs","buildOrUpdateScales","existingEvents","newEvents","unbindEvents","_getUniformDataChanges","datasetCount","makeSet","changeSet","noArea","_idx","_updateDataset","layers","_drawDatasets","_drawDataset","useClip","setDatasetVisibility","_updateVisibility","_destroy","_stop","releaseContext","toDataURL","bindUserEvents","bindResponsiveEvents","_add","detached","_remove","isAttached","activeElements","lastActive","notify","replay","hoverOptions","deactivated","activated","updateHoverStyle","inChartArea","eventFilter","_handleEvent","_getActiveElements","isClick","_isClickEvent","lastEvent","determineLastEvent","getElementsAtEventForMode","invalidatePlugins","clipArc","pixelMargin","angleMargin","parseBorderRadius$1","angleDelta","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","outerStart","outerEnd","innerStart","innerEnd","rThetaToXY","theta","pathArc","innerR","spacingOffset","avNogSpacingRadius","angleOffset","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","pCenter","p4","p8","outerStartX","outerStartY","outerEndX","outerEndY","inner","lineJoin","fullCircles","drawFullCircleBorders","unregister","ArcElement","chartX","chartY","rAdjust","betweenAngles","withinRadius","halfAngle","halfRadius","radiusOffset","drawArc","setStyle","lineCap","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","lineMethod","stepped","getLineMethod","fastPathSegment","prevX","lastY","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","usePath2D","Path2D","_path","strokePathWithCache","segmentMethod","strokePathDirect","LineElement","_points","_segments","_pointsUpdated","findStartAndEnd","solidSegments","_computeSegments","_interpolate","_getInterpolationMethod","interpolated","inRange$1","hitRadius","PointElement","mouseX","mouseY","hoverRadius","getBarBounds","bar","half","skipOrLimit","boundingRects","maxW","maxH","parseBorderWidth","maxR","enableBorder","parseBorderRadius","outer","skipX","skipY","addNormalRectPath","inflateRect","refRect","BarElement","addRectPath","getBoxSize","labelOpts","boxHeight","boxWidth","usePointStyle","pointStyleWidth","itemHeight","Legend","_added","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","labelFont","_computeTitleHeight","_fitRows","_fitCols","hitboxes","totalHeight","row","heightLimit","totalWidth","currentColWidth","currentColHeight","rtlHelper","hitbox","_draw","defaultColor","fontColor","halfFontSize","textDirection","lineDash","drawOptions","SQRT2","yBoxTop","xBoxLeft","drawLegendBox","_textX","titleFont","titlePadding","topPaddingPlusHalfFontSize","hitBox","onLeave","isListened","hoveredItem","_getLegendItemAt","sameItem","plugin_legend","_element","_args","adjustHitBoxes","afterEvent","handleEvent","positioners","average","hasValue","tooltipPosition","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","getLabelAndValue","getTooltipSize","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","beforeBody","afterBody","titleSpacing","titleMarginBottom","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineXAlign","yAlign","chartWidth","xAlign","caret","caretSize","caretPadding","doesNotFitWithAlign","determineAlignment","determineYAlign","getBackgroundPoint","alignment","paddingAndSize","alignX","alignY","getAlignedX","getBeforeAfterBodyLines","overrideCallbacks","Tooltip","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","tooltipItems","beforeTitle","afterTitle","bodyItems","scoped","beforeLabel","afterLabel","beforeFooter","afterFooter","itemSort","labelColor","labelPointStyle","labelTextColor","_createItems","getTitle","getBeforeBody","getBody","getAfterBody","getFooter","positionAndSize","backgroundPoint","external","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","titleColor","colorX","rtlColorX","yOffSet","colorY","multiKeyBackground","outerX","innerX","strokeRect","textColor","bodyAlign","bodyLineHeight","xLinePadding","fillLineOfText","bodyAlignForCalculation","bodyColor","_drawColorBox","footerAlign","footerColor","tooltipSize","drawCaret","quadraticCurveTo","animX","animY","_updateAnimationTarget","hasTooltipContent","globalAlpha","drawBody","drawFooter","positionChanged","_positionChanged","_ignoreReplayEvents","plugin_tooltip","afterInit","afterDraw","_willRender","labelCount","findOrAddLabel","addedLabels","addIfString","lastIndexOf","CategoryScale","_startValue","_valueRange","_addedLabels","added","getDecimalForPixel","generateTicks$1","generationOptions","dataRange","niceMin","niceMax","numSpaces","precision","maxTicks","maxDigits","includeBounds","maxSpaces","rmin","rmax","countDefined","minSpacing","rounded","almostWhole","decimalPlaces","relativeLabelSize","LinearScaleBase","_endValue","setMin","setMax","minSign","maxSign","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","stepSize","computeTickLimit","getTickLimit","_maxDigits","LinearScale","handleTickRangeOptions","isMajor","tickVal","LogarithmicScale","_zero","exp","endExp","endSignificand","significand","lastTick","generateTicks","getTickBackdropHeight","determineLimits","fitWithPointLabels","_padding","limits","valueCount","_pointLabels","pointLabelOpts","additionalAngle","centerPointLabels","getPointLabelContext","getPointPosition","drawingArea","plFont","textSize","updateLimits","setCenterPoint","_pointLabelItems","extra","outerDistance","pointLabelPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","buildPointLabelItems","hLimits","vLimits","pathRadiusLine","RadialLinearScale","leftMovement","rightMovement","topMovement","bottomMovement","scalingFactor","scaledDistance","pointLabel","createPointLabelContext","distanceFromCenter","backdropLeft","backdropTop","backdropWidth","backdropHeight","drawPointLabels","gridLineOpts","drawRadiusLine","animate","INTERVALS","millisecond","steps","second","minute","hour","day","quarter","year","UNITS","sorter","_adapter","_parseOpts","isoWeekday","startOf","determineUnitForAutoTicks","minUnit","capacity","interval","addTick","timestamps","ticksFromTimestamps","majorUnit","setMajorTicks","TimeScale","_unit","_majorUnit","_offsets","_normalized","displayFormats","formats","normalized","_applyBounds","_getLabelBounds","endOf","getLabelTimestamps","timeOpts","_generate","_filterBetween","_getLabelCapacity","determineUnitForFormatting","determineMajorUnit","initOffsets","offsetAfterAutoskip","getDecimalForValue","hasWeekday","getDataTimestamps","tooltipFormat","minorFormat","majorFormat","_tickFormatFunction","offsets","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","_getLabelSize","prevSource","nextSource","prevTarget","nextTarget","span","TimeSeriesScale","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","_objectWithoutProperties","excluded","sourceKeys","sourceSymbolKeys","defaultDatasetIdKey","reforwardRef","setLabels","currentData","nextLabels","setDatasets","nextDatasets","datasetIdKey","addedDatasets","nextDataset","currentDataset","find","cloneData","nextData","ChartComponent","redraw","fallbackContent","updateMode","canvasRef","chartRef","renderChart","ChartJS","destroyChart","nextOptions","createTypedChart","registerables","Line","Doughnut","ChartPayment","chartPaymentData","pointBorderWidth","pointRadius","chartPaymentOptions","competitorDisplay","competitorHasCalculation","calcData","flexAmortised","monthlyPayments","rowNumber","flexSerial","advantageAmortised","advantageSerial","calcDataCompetitor","buildDatasets","reference","ChartInterestRate","buildData","term","interestRateFirst5Years","interestRateAfter5Years","competitorCommitmentPeriod","interestRateInitialPeriod","interestRateExtendedPeriod","MortgageCalculationTable","toLocaleString","competitorCalc","interestComment","totalFees","LoadingSpinner","Toggle","toggle","checkbox","customStyles","marginRight","transform","Calculator","chartReference","isLoading","hasResult","isInternal","mortgageCalculatorConfig","purchasePrice","defaultPuchasePrice","deposit","defaultDeposit","termDefault","interestFlex","defaultFlexRate","defaultExtendedRate","defaultInterestRate","modalApplyIsOpen","applyMortgageName","applyMortgagePhone","applyMortgageEmail","applyMortgageAddress","applyMortgageCity","applyMortgageLoanType","applyMortgageAlreadyCustomer","applyMortgageMsg","applyMortgageSendSuccess","applyMortgageSendError","applyMortgageValidateError","modalCompetitorIsOpen","competitorCommitmentPeriodDefault","competitorInitialRate","competitorInitialRateDefault","competitorExtendedRate","competitorExtendedRateDefault","applyMortgageSuccessMsg","chartdata","sum","handleSubmit","handleDepositChange","handlePurchasePriceChange","handleTermChange","handleCommitmentPeriodChange","handleApplyMortgageAlreadyCustomer","openModal","closeModal","applyMortgage","addCompetitorData","resetCompetitorData","openModalCompetitor","closeModalCompetitor","toggleCompetitorData","getCalculation","competitorCalculation","xFunctionsKey","competitorData","catch","hasError","errorMsg","apiEndpoint","mortgageCalculation","getCompetitorCalculation","FD","querySelector","innerText","scrollIntoView","termMin","termMax","competitorCommitmentPeriodMin","competitorCommitmentPeriodMax","onSubmit","alt","createSelectItemsTerm","class","toggleReference","createSelectItemsCompetitorPeriod","afterOpenModal","htmlFor","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","reportWebVitals"],"sourceRoot":""}