{"version":3,"sources":["webpack:///./node_modules/chart.js/src/helpers/helpers.options.js","webpack:///./node_modules/chart.js/src/elements/element.point.js","webpack:///./node_modules/chart.js/src/helpers/index.js","webpack:///./node_modules/chart.js/src/helpers/helpers.canvas.js","webpack:///./node_modules/chart.js/src/helpers/helpers.core.js","webpack:///./node_modules/chart.js/src/elements/element.line.js","webpack:///./node_modules/chart.js/src/elements/element.arc.js","webpack:///./node_modules/chart.js/src/helpers/helpers.easing.js","webpack:///./node_modules/chart.js/src/elements/index.js","webpack:///./node_modules/chart.js/src/elements/element.rectangle.js"],"names":["helpers","__webpack_require__","module","exports","toLineHeight","value","size","matches","match","toPadding","t","r","b","l","isObject","top","right","bottom","left","height","width","resolve","inputs","context","index","i","ilen","length","undefined","isArray","defaults","Element","defaultColor","global","xRange","mouseX","vm","this","_view","Math","abs","x","radius","hitRadius","yRange","mouseY","y","_set","elements","point","pointStyle","backgroundColor","borderColor","borderWidth","hoverRadius","hoverBorderWidth","extend","inRange","pow","inLabelRange","inXRange","inYRange","getCenterPoint","getArea","PI","tooltipPosition","padding","draw","chartArea","model","_model","ctx","_chart","color","errMargin","ratio","skip","strokeStyle","lineWidth","valueOrDefault","fillStyle","round","alpha","rgbString","canvas","drawPoint","easing","options","clear","chart","clearRect","roundedRect","rx","min","ry","moveTo","lineTo","quadraticCurveTo","rect","style","type","edgeLength","xOffset","yOffset","toString","drawImage","isNaN","beginPath","arc","closePath","fill","sqrt","SQRT2","fillRect","strokeRect","offset","leftX","topY","sideSize","cos","sin","stroke","clipArea","area","save","clip","unclipArea","restore","previous","target","flip","steppedLine","tension","bezierCurveTo","controlPointPreviousX","controlPointNextX","controlPointPreviousY","controlPointNextY","drawRoundedRectangle","apply","arguments","noop","uid","id","isNullOrUndef","Array","Object","prototype","call","defaultValue","valueAtIndexOrDefault","callback","fn","args","thisArg","each","loopable","reverse","len","keys","arrayEquals","a0","a1","v0","v1","clone","source","map","klen","k","_merger","key","tval","sval","merge","_mergerIf","mergeIf","hasOwnProperty","sources","merger","setFn","inherits","extensions","me","ChartElement","constructor","Surrogate","__super__","callCallback","indexOf","array","item","fromIndex","getValueOrDefault","getValueAtIndexOrDefault","globalDefaults","line","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","capBezierPoints","current","currentVM","spanGaps","points","_children","slice","globalOptionLineElements","lastDrawnIndex","_loop","push","lineCap","setLineDash","lineDashOffset","lineJoin","previousItem","chartX","chartY","pointRelativePosition","getAngleFromPoint","angle","distance","startAngle","endAngle","betweenAngles","withinRadius","innerRadius","outerRadius","halfAngle","halfRadius","centreAngle","rangeFromCentre","sA","eA","effects","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","s","p","a","asin","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","easingEffects","Arc","Line","Point","Rectangle","isVertical","bar","getBarBounds","x1","x2","y1","y2","halfWidth","base","max","halfHeight","rectangle","borderSkipped","signX","signY","horizontal","barSize","halfStroke","borderLeft","borderRight","borderTop","borderBottom","corners","borders","startCorner","cornerAt","corner","bounds"],"mappings":"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","file":"js/chunk-vendors~320ef163.a1d7ae57.js","sourcesContent":["'use strict';\n\nvar helpers = require('./helpers.core');\n\n/**\n * @alias Chart.helpers.options\n * @namespace\n */\nmodule.exports = {\n\t/**\n\t * Converts the given line height `value` in pixels for a specific font `size`.\n\t * @param {Number|String} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n\t * @param {Number} size - The font size (in pixels) used to resolve relative `value`.\n\t * @returns {Number} The effective line height in pixels (size * 1.2 if value is invalid).\n\t * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n\t * @since 2.7.0\n\t */\n\ttoLineHeight: function(value, size) {\n\t\tvar matches = ('' + value).match(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\n\t\tif (!matches || matches[1] === 'normal') {\n\t\t\treturn size * 1.2;\n\t\t}\n\n\t\tvalue = +matches[2];\n\n\t\tswitch (matches[3]) {\n\t\tcase 'px':\n\t\t\treturn value;\n\t\tcase '%':\n\t\t\tvalue /= 100;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t\t}\n\n\t\treturn size * value;\n\t},\n\n\t/**\n\t * Converts the given value into a padding object with pre-computed width/height.\n\t * @param {Number|Object} value - If a number, set the value to all TRBL component,\n\t * else, if and object, use defined properties and sets undefined ones to 0.\n\t * @returns {Object} The padding values (top, right, bottom, left, width, height)\n\t * @since 2.7.0\n\t */\n\ttoPadding: function(value) {\n\t\tvar t, r, b, l;\n\n\t\tif (helpers.isObject(value)) {\n\t\t\tt = +value.top || 0;\n\t\t\tr = +value.right || 0;\n\t\t\tb = +value.bottom || 0;\n\t\t\tl = +value.left || 0;\n\t\t} else {\n\t\t\tt = r = b = l = +value || 0;\n\t\t}\n\n\t\treturn {\n\t\t\ttop: t,\n\t\t\tright: r,\n\t\t\tbottom: b,\n\t\t\tleft: l,\n\t\t\theight: t + b,\n\t\t\twidth: l + r\n\t\t};\n\t},\n\n\t/**\n\t * Evaluates the given `inputs` sequentially and returns the first defined value.\n\t * @param {Array[]} inputs - An array of values, falling back to the last value.\n\t * @param {Object} [context] - If defined and the current value is a function, the value\n\t * is called with `context` as first argument and the result becomes the new input.\n\t * @param {Number} [index] - If defined and the current value is an array, the value\n\t * at `index` become the new input.\n\t * @since 2.7.0\n\t */\n\tresolve: function(inputs, context, index) {\n\t\tvar i, ilen, value;\n\n\t\tfor (i = 0, ilen = inputs.length; i < ilen; ++i) {\n\t\t\tvalue = inputs[i];\n\t\t\tif (value === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (context !== undefined && typeof value === 'function') {\n\t\t\t\tvalue = value(context);\n\t\t\t}\n\t\t\tif (index !== undefined && helpers.isArray(value)) {\n\t\t\t\tvalue = value[index];\n\t\t\t}\n\t\t\tif (value !== undefined) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t}\n};\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar Element = require('../core/core.element');\nvar helpers = require('../helpers/index');\n\nvar defaultColor = defaults.global.defaultColor;\n\ndefaults._set('global', {\n\telements: {\n\t\tpoint: {\n\t\t\tradius: 3,\n\t\t\tpointStyle: 'circle',\n\t\t\tbackgroundColor: defaultColor,\n\t\t\tborderColor: defaultColor,\n\t\t\tborderWidth: 1,\n\t\t\t// Hover\n\t\t\thitRadius: 1,\n\t\t\thoverRadius: 4,\n\t\t\thoverBorderWidth: 1\n\t\t}\n\t}\n});\n\nfunction xRange(mouseX) {\n\tvar vm = this._view;\n\treturn vm ? (Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius) : false;\n}\n\nfunction yRange(mouseY) {\n\tvar vm = this._view;\n\treturn vm ? (Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius) : false;\n}\n\nmodule.exports = Element.extend({\n\tinRange: function(mouseX, mouseY) {\n\t\tvar vm = this._view;\n\t\treturn vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false;\n\t},\n\n\tinLabelRange: xRange,\n\tinXRange: xRange,\n\tinYRange: yRange,\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y\n\t\t};\n\t},\n\n\tgetArea: function() {\n\t\treturn Math.PI * Math.pow(this._view.radius, 2);\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y,\n\t\t\tpadding: vm.radius + vm.borderWidth\n\t\t};\n\t},\n\n\tdraw: function(chartArea) {\n\t\tvar vm = this._view;\n\t\tvar model = this._model;\n\t\tvar ctx = this._chart.ctx;\n\t\tvar pointStyle = vm.pointStyle;\n\t\tvar radius = vm.radius;\n\t\tvar x = vm.x;\n\t\tvar y = vm.y;\n\t\tvar color = helpers.color;\n\t\tvar errMargin = 1.01; // 1.01 is margin for Accumulated error. (Especially Edge, IE.)\n\t\tvar ratio = 0;\n\n\t\tif (vm.skip) {\n\t\t\treturn;\n\t\t}\n\n\t\tctx.strokeStyle = vm.borderColor || defaultColor;\n\t\tctx.lineWidth = helpers.valueOrDefault(vm.borderWidth, defaults.global.elements.point.borderWidth);\n\t\tctx.fillStyle = vm.backgroundColor || defaultColor;\n\n\t\t// Cliping for Points.\n\t\t// going out from inner charArea?\n\t\tif ((chartArea !== undefined) && ((model.x < chartArea.left) || (chartArea.right * errMargin < model.x) || (model.y < chartArea.top) || (chartArea.bottom * errMargin < model.y))) {\n\t\t\t// Point fade out\n\t\t\tif (model.x < chartArea.left) {\n\t\t\t\tratio = (x - model.x) / (chartArea.left - model.x);\n\t\t\t} else if (chartArea.right * errMargin < model.x) {\n\t\t\t\tratio = (model.x - x) / (model.x - chartArea.right);\n\t\t\t} else if (model.y < chartArea.top) {\n\t\t\t\tratio = (y - model.y) / (chartArea.top - model.y);\n\t\t\t} else if (chartArea.bottom * errMargin < model.y) {\n\t\t\t\tratio = (model.y - y) / (model.y - chartArea.bottom);\n\t\t\t}\n\t\t\tratio = Math.round(ratio * 100) / 100;\n\t\t\tctx.strokeStyle = color(ctx.strokeStyle).alpha(ratio).rgbString();\n\t\t\tctx.fillStyle = color(ctx.fillStyle).alpha(ratio).rgbString();\n\t\t}\n\n\t\thelpers.canvas.drawPoint(ctx, pointStyle, radius, x, y);\n\t}\n});\n","'use strict';\n\nmodule.exports = require('./helpers.core');\nmodule.exports.easing = require('./helpers.easing');\nmodule.exports.canvas = require('./helpers.canvas');\nmodule.exports.options = require('./helpers.options');\n","'use strict';\n\nvar helpers = require('./helpers.core');\n\n/**\n * @namespace Chart.helpers.canvas\n */\nvar exports = module.exports = {\n\t/**\n\t * Clears the entire canvas associated to the given `chart`.\n\t * @param {Chart} chart - The chart for which to clear the canvas.\n\t */\n\tclear: function(chart) {\n\t\tchart.ctx.clearRect(0, 0, chart.width, chart.height);\n\t},\n\n\t/**\n\t * Creates a \"path\" for a rectangle with rounded corners at position (x, y) with a\n\t * given size (width, height) and the same `radius` for all corners.\n\t * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context.\n\t * @param {Number} x - The x axis of the coordinate for the rectangle starting point.\n\t * @param {Number} y - The y axis of the coordinate for the rectangle starting point.\n\t * @param {Number} width - The rectangle's width.\n\t * @param {Number} height - The rectangle's height.\n\t * @param {Number} radius - The rounded amount (in pixels) for the four corners.\n\t * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object?\n\t */\n\troundedRect: function(ctx, x, y, width, height, radius) {\n\t\tif (radius) {\n\t\t\tvar rx = Math.min(radius, width / 2);\n\t\t\tvar ry = Math.min(radius, height / 2);\n\n\t\t\tctx.moveTo(x + rx, y);\n\t\t\tctx.lineTo(x + width - rx, y);\n\t\t\tctx.quadraticCurveTo(x + width, y, x + width, y + ry);\n\t\t\tctx.lineTo(x + width, y + height - ry);\n\t\t\tctx.quadraticCurveTo(x + width, y + height, x + width - rx, y + height);\n\t\t\tctx.lineTo(x + rx, y + height);\n\t\t\tctx.quadraticCurveTo(x, y + height, x, y + height - ry);\n\t\t\tctx.lineTo(x, y + ry);\n\t\t\tctx.quadraticCurveTo(x, y, x + rx, y);\n\t\t} else {\n\t\t\tctx.rect(x, y, width, height);\n\t\t}\n\t},\n\n\tdrawPoint: function(ctx, style, radius, x, y) {\n\t\tvar type, edgeLength, xOffset, yOffset, height, size;\n\n\t\tif (style && typeof style === 'object') {\n\t\t\ttype = style.toString();\n\t\t\tif (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n\t\t\t\tctx.drawImage(style, x - style.width / 2, y - style.height / 2, style.width, style.height);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (isNaN(radius) || radius <= 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tswitch (style) {\n\t\t// Default includes circle\n\t\tdefault:\n\t\t\tctx.beginPath();\n\t\t\tctx.arc(x, y, radius, 0, Math.PI * 2);\n\t\t\tctx.closePath();\n\t\t\tctx.fill();\n\t\t\tbreak;\n\t\tcase 'triangle':\n\t\t\tctx.beginPath();\n\t\t\tedgeLength = 3 * radius / Math.sqrt(3);\n\t\t\theight = edgeLength * Math.sqrt(3) / 2;\n\t\t\tctx.moveTo(x - edgeLength / 2, y + height / 3);\n\t\t\tctx.lineTo(x + edgeLength / 2, y + height / 3);\n\t\t\tctx.lineTo(x, y - 2 * height / 3);\n\t\t\tctx.closePath();\n\t\t\tctx.fill();\n\t\t\tbreak;\n\t\tcase 'rect':\n\t\t\tsize = 1 / Math.SQRT2 * radius;\n\t\t\tctx.beginPath();\n\t\t\tctx.fillRect(x - size, y - size, 2 * size, 2 * size);\n\t\t\tctx.strokeRect(x - size, y - size, 2 * size, 2 * size);\n\t\t\tbreak;\n\t\tcase 'rectRounded':\n\t\t\tvar offset = radius / Math.SQRT2;\n\t\t\tvar leftX = x - offset;\n\t\t\tvar topY = y - offset;\n\t\t\tvar sideSize = Math.SQRT2 * radius;\n\t\t\tctx.beginPath();\n\t\t\tthis.roundedRect(ctx, leftX, topY, sideSize, sideSize, radius / 2);\n\t\t\tctx.closePath();\n\t\t\tctx.fill();\n\t\t\tbreak;\n\t\tcase 'rectRot':\n\t\t\tsize = 1 / Math.SQRT2 * radius;\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(x - size, y);\n\t\t\tctx.lineTo(x, y + size);\n\t\t\tctx.lineTo(x + size, y);\n\t\t\tctx.lineTo(x, y - size);\n\t\t\tctx.closePath();\n\t\t\tctx.fill();\n\t\t\tbreak;\n\t\tcase 'cross':\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(x, y + radius);\n\t\t\tctx.lineTo(x, y - radius);\n\t\t\tctx.moveTo(x - radius, y);\n\t\t\tctx.lineTo(x + radius, y);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'crossRot':\n\t\t\tctx.beginPath();\n\t\t\txOffset = Math.cos(Math.PI / 4) * radius;\n\t\t\tyOffset = Math.sin(Math.PI / 4) * radius;\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\n\t\t\tctx.moveTo(x - xOffset, y + yOffset);\n\t\t\tctx.lineTo(x + xOffset, y - yOffset);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'star':\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(x, y + radius);\n\t\t\tctx.lineTo(x, y - radius);\n\t\t\tctx.moveTo(x - radius, y);\n\t\t\tctx.lineTo(x + radius, y);\n\t\t\txOffset = Math.cos(Math.PI / 4) * radius;\n\t\t\tyOffset = Math.sin(Math.PI / 4) * radius;\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\n\t\t\tctx.moveTo(x - xOffset, y + yOffset);\n\t\t\tctx.lineTo(x + xOffset, y - yOffset);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'line':\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(x - radius, y);\n\t\t\tctx.lineTo(x + radius, y);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'dash':\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(x, y);\n\t\t\tctx.lineTo(x + radius, y);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\t}\n\n\t\tctx.stroke();\n\t},\n\n\tclipArea: function(ctx, area) {\n\t\tctx.save();\n\t\tctx.beginPath();\n\t\tctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n\t\tctx.clip();\n\t},\n\n\tunclipArea: function(ctx) {\n\t\tctx.restore();\n\t},\n\n\tlineTo: function(ctx, previous, target, flip) {\n\t\tif (target.steppedLine) {\n\t\t\tif ((target.steppedLine === 'after' && !flip) || (target.steppedLine !== 'after' && flip)) {\n\t\t\t\tctx.lineTo(previous.x, target.y);\n\t\t\t} else {\n\t\t\t\tctx.lineTo(target.x, previous.y);\n\t\t\t}\n\t\t\tctx.lineTo(target.x, target.y);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!target.tension) {\n\t\t\tctx.lineTo(target.x, target.y);\n\t\t\treturn;\n\t\t}\n\n\t\tctx.bezierCurveTo(\n\t\t\tflip ? previous.controlPointPreviousX : previous.controlPointNextX,\n\t\t\tflip ? previous.controlPointPreviousY : previous.controlPointNextY,\n\t\t\tflip ? target.controlPointNextX : target.controlPointPreviousX,\n\t\t\tflip ? target.controlPointNextY : target.controlPointPreviousY,\n\t\t\ttarget.x,\n\t\t\ttarget.y);\n\t}\n};\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.canvas.clear instead.\n * @namespace Chart.helpers.clear\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.clear = exports.clear;\n\n/**\n * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead.\n * @namespace Chart.helpers.drawRoundedRectangle\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.drawRoundedRectangle = function(ctx) {\n\tctx.beginPath();\n\texports.roundedRect.apply(exports, arguments);\n\tctx.closePath();\n};\n","'use strict';\n\n/**\n * @namespace Chart.helpers\n */\nvar helpers = {\n\t/**\n\t * An empty function that can be used, for example, for optional callback.\n\t */\n\tnoop: function() {},\n\n\t/**\n\t * Returns a unique id, sequentially generated from a global variable.\n\t * @returns {Number}\n\t * @function\n\t */\n\tuid: (function() {\n\t\tvar id = 0;\n\t\treturn function() {\n\t\t\treturn id++;\n\t\t};\n\t}()),\n\n\t/**\n\t * Returns true if `value` is neither null nor undefined, else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {Boolean}\n\t * @since 2.7.0\n\t */\n\tisNullOrUndef: function(value) {\n\t\treturn value === null || typeof value === 'undefined';\n\t},\n\n\t/**\n\t * Returns true if `value` is an array, else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {Boolean}\n\t * @function\n\t */\n\tisArray: Array.isArray ? Array.isArray : function(value) {\n\t\treturn Object.prototype.toString.call(value) === '[object Array]';\n\t},\n\n\t/**\n\t * Returns true if `value` is an object (excluding null), else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {Boolean}\n\t * @since 2.7.0\n\t */\n\tisObject: function(value) {\n\t\treturn value !== null && Object.prototype.toString.call(value) === '[object Object]';\n\t},\n\n\t/**\n\t * Returns `value` if defined, else returns `defaultValue`.\n\t * @param {*} value - The value to return if defined.\n\t * @param {*} defaultValue - The value to return if `value` is undefined.\n\t * @returns {*}\n\t */\n\tvalueOrDefault: function(value, defaultValue) {\n\t\treturn typeof value === 'undefined' ? defaultValue : value;\n\t},\n\n\t/**\n\t * Returns value at the given `index` in array if defined, else returns `defaultValue`.\n\t * @param {Array} value - The array to lookup for value at `index`.\n\t * @param {Number} index - The index in `value` to lookup for value.\n\t * @param {*} defaultValue - The value to return if `value[index]` is undefined.\n\t * @returns {*}\n\t */\n\tvalueAtIndexOrDefault: function(value, index, defaultValue) {\n\t\treturn helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue);\n\t},\n\n\t/**\n\t * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n\t * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n\t * @param {Function} fn - The function to call.\n\t * @param {Array|undefined|null} args - The arguments with which `fn` should be called.\n\t * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`.\n\t * @returns {*}\n\t */\n\tcallback: function(fn, args, thisArg) {\n\t\tif (fn && typeof fn.call === 'function') {\n\t\t\treturn fn.apply(thisArg, args);\n\t\t}\n\t},\n\n\t/**\n\t * Note(SB) for performance sake, this method should only be used when loopable type\n\t * is unknown or in none intensive code (not called often and small loopable). Else\n\t * it's preferable to use a regular for() loop and save extra function calls.\n\t * @param {Object|Array} loopable - The object or array to be iterated.\n\t * @param {Function} fn - The function to call for each item.\n\t * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`.\n\t * @param {Boolean} [reverse] - If true, iterates backward on the loopable.\n\t */\n\teach: function(loopable, fn, thisArg, reverse) {\n\t\tvar i, len, keys;\n\t\tif (helpers.isArray(loopable)) {\n\t\t\tlen = loopable.length;\n\t\t\tif (reverse) {\n\t\t\t\tfor (i = len - 1; i >= 0; i--) {\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (helpers.isObject(loopable)) {\n\t\t\tkeys = Object.keys(loopable);\n\t\t\tlen = keys.length;\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tfn.call(thisArg, loopable[keys[i]], keys[i]);\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n\t * @see http://stackoverflow.com/a/14853974\n\t * @param {Array} a0 - The array to compare\n\t * @param {Array} a1 - The array to compare\n\t * @returns {Boolean}\n\t */\n\tarrayEquals: function(a0, a1) {\n\t\tvar i, ilen, v0, v1;\n\n\t\tif (!a0 || !a1 || a0.length !== a1.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor (i = 0, ilen = a0.length; i < ilen; ++i) {\n\t\t\tv0 = a0[i];\n\t\t\tv1 = a1[i];\n\n\t\t\tif (v0 instanceof Array && v1 instanceof Array) {\n\t\t\t\tif (!helpers.arrayEquals(v0, v1)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else if (v0 !== v1) {\n\t\t\t\t// NOTE: two different object instances will never be equal: {x:20} != {x:20}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t/**\n\t * Returns a deep copy of `source` without keeping references on objects and arrays.\n\t * @param {*} source - The value to clone.\n\t * @returns {*}\n\t */\n\tclone: function(source) {\n\t\tif (helpers.isArray(source)) {\n\t\t\treturn source.map(helpers.clone);\n\t\t}\n\n\t\tif (helpers.isObject(source)) {\n\t\t\tvar target = {};\n\t\t\tvar keys = Object.keys(source);\n\t\t\tvar klen = keys.length;\n\t\t\tvar k = 0;\n\n\t\t\tfor (; k < klen; ++k) {\n\t\t\t\ttarget[keys[k]] = helpers.clone(source[keys[k]]);\n\t\t\t}\n\n\t\t\treturn target;\n\t\t}\n\n\t\treturn source;\n\t},\n\n\t/**\n\t * The default merger when Chart.helpers.merge is called without merger option.\n\t * Note(SB): this method is also used by configMerge and scaleMerge as fallback.\n\t * @private\n\t */\n\t_merger: function(key, target, source, options) {\n\t\tvar tval = target[key];\n\t\tvar sval = source[key];\n\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\n\t\t\thelpers.merge(tval, sval, options);\n\t\t} else {\n\t\t\ttarget[key] = helpers.clone(sval);\n\t\t}\n\t},\n\n\t/**\n\t * Merges source[key] in target[key] only if target[key] is undefined.\n\t * @private\n\t */\n\t_mergerIf: function(key, target, source) {\n\t\tvar tval = target[key];\n\t\tvar sval = source[key];\n\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\n\t\t\thelpers.mergeIf(tval, sval);\n\t\t} else if (!target.hasOwnProperty(key)) {\n\t\t\ttarget[key] = helpers.clone(sval);\n\t\t}\n\t},\n\n\t/**\n\t * Recursively deep copies `source` properties into `target` with the given `options`.\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n\t * @param {Object} target - The target object in which all sources are merged into.\n\t * @param {Object|Array(Object)} source - Object(s) to merge into `target`.\n\t * @param {Object} [options] - Merging options:\n\t * @param {Function} [options.merger] - The merge method (key, target, source, options)\n\t * @returns {Object} The `target` object.\n\t */\n\tmerge: function(target, source, options) {\n\t\tvar sources = helpers.isArray(source) ? source : [source];\n\t\tvar ilen = sources.length;\n\t\tvar merge, i, keys, klen, k;\n\n\t\tif (!helpers.isObject(target)) {\n\t\t\treturn target;\n\t\t}\n\n\t\toptions = options || {};\n\t\tmerge = options.merger || helpers._merger;\n\n\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\tsource = sources[i];\n\t\t\tif (!helpers.isObject(source)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tkeys = Object.keys(source);\n\t\t\tfor (k = 0, klen = keys.length; k < klen; ++k) {\n\t\t\t\tmerge(keys[k], target, source, options);\n\t\t\t}\n\t\t}\n\n\t\treturn target;\n\t},\n\n\t/**\n\t * Recursively deep copies `source` properties into `target` *only* if not defined in target.\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n\t * @param {Object} target - The target object in which all sources are merged into.\n\t * @param {Object|Array(Object)} source - Object(s) to merge into `target`.\n\t * @returns {Object} The `target` object.\n\t */\n\tmergeIf: function(target, source) {\n\t\treturn helpers.merge(target, source, {merger: helpers._mergerIf});\n\t},\n\n\t/**\n\t * Applies the contents of two or more objects together into the first object.\n\t * @param {Object} target - The target object in which all objects are merged into.\n\t * @param {Object} arg1 - Object containing additional properties to merge in target.\n\t * @param {Object} argN - Additional objects containing properties to merge in target.\n\t * @returns {Object} The `target` object.\n\t */\n\textend: function(target) {\n\t\tvar setFn = function(value, key) {\n\t\t\ttarget[key] = value;\n\t\t};\n\t\tfor (var i = 1, ilen = arguments.length; i < ilen; ++i) {\n\t\t\thelpers.each(arguments[i], setFn);\n\t\t}\n\t\treturn target;\n\t},\n\n\t/**\n\t * Basic javascript inheritance based on the model created in Backbone.js\n\t */\n\tinherits: function(extensions) {\n\t\tvar me = this;\n\t\tvar ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() {\n\t\t\treturn me.apply(this, arguments);\n\t\t};\n\n\t\tvar Surrogate = function() {\n\t\t\tthis.constructor = ChartElement;\n\t\t};\n\n\t\tSurrogate.prototype = me.prototype;\n\t\tChartElement.prototype = new Surrogate();\n\t\tChartElement.extend = helpers.inherits;\n\n\t\tif (extensions) {\n\t\t\thelpers.extend(ChartElement.prototype, extensions);\n\t\t}\n\n\t\tChartElement.__super__ = me.prototype;\n\t\treturn ChartElement;\n\t}\n};\n\nmodule.exports = helpers;\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.callback instead.\n * @function Chart.helpers.callCallback\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n * @private\n */\nhelpers.callCallback = helpers.callback;\n\n/**\n * Provided for backward compatibility, use Array.prototype.indexOf instead.\n * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+\n * @function Chart.helpers.indexOf\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.indexOf = function(array, item, fromIndex) {\n\treturn Array.prototype.indexOf.call(array, item, fromIndex);\n};\n\n/**\n * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead.\n * @function Chart.helpers.getValueOrDefault\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.getValueOrDefault = helpers.valueOrDefault;\n\n/**\n * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead.\n * @function Chart.helpers.getValueAtIndexOrDefault\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar Element = require('../core/core.element');\nvar helpers = require('../helpers/index');\n\nvar globalDefaults = defaults.global;\n\ndefaults._set('global', {\n\telements: {\n\t\tline: {\n\t\t\ttension: 0.4,\n\t\t\tbackgroundColor: globalDefaults.defaultColor,\n\t\t\tborderWidth: 3,\n\t\t\tborderColor: globalDefaults.defaultColor,\n\t\t\tborderCapStyle: 'butt',\n\t\t\tborderDash: [],\n\t\t\tborderDashOffset: 0.0,\n\t\t\tborderJoinStyle: 'miter',\n\t\t\tcapBezierPoints: true,\n\t\t\tfill: true, // do we fill in the area between the line and its base axis\n\t\t}\n\t}\n});\n\nmodule.exports = Element.extend({\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar vm = me._view;\n\t\tvar ctx = me._chart.ctx;\n\t\tvar spanGaps = vm.spanGaps;\n\t\tvar points = me._children.slice(); // clone array\n\t\tvar globalOptionLineElements = globalDefaults.elements.line;\n\t\tvar lastDrawnIndex = -1;\n\t\tvar index, current, previous, currentVM;\n\n\t\t// If we are looping, adding the first point again\n\t\tif (me._loop && points.length) {\n\t\t\tpoints.push(points[0]);\n\t\t}\n\n\t\tctx.save();\n\n\t\t// Stroke Line Options\n\t\tctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle;\n\n\t\t// IE 9 and 10 do not support line dash\n\t\tif (ctx.setLineDash) {\n\t\t\tctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash);\n\t\t}\n\n\t\tctx.lineDashOffset = vm.borderDashOffset || globalOptionLineElements.borderDashOffset;\n\t\tctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle;\n\t\tctx.lineWidth = vm.borderWidth || globalOptionLineElements.borderWidth;\n\t\tctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor;\n\n\t\t// Stroke Line\n\t\tctx.beginPath();\n\t\tlastDrawnIndex = -1;\n\n\t\tfor (index = 0; index < points.length; ++index) {\n\t\t\tcurrent = points[index];\n\t\t\tprevious = helpers.previousItem(points, index);\n\t\t\tcurrentVM = current._view;\n\n\t\t\t// First point moves to it's starting position no matter what\n\t\t\tif (index === 0) {\n\t\t\t\tif (!currentVM.skip) {\n\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\n\t\t\t\t\tlastDrawnIndex = index;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tprevious = lastDrawnIndex === -1 ? previous : points[lastDrawnIndex];\n\n\t\t\t\tif (!currentVM.skip) {\n\t\t\t\t\tif ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) {\n\t\t\t\t\t\t// There was a gap and this is the first point after the gap\n\t\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Line to next point\n\t\t\t\t\t\thelpers.canvas.lineTo(ctx, previous._view, current._view);\n\t\t\t\t\t}\n\t\t\t\t\tlastDrawnIndex = index;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tctx.stroke();\n\t\tctx.restore();\n\t}\n});\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar Element = require('../core/core.element');\nvar helpers = require('../helpers/index');\n\ndefaults._set('global', {\n\telements: {\n\t\tarc: {\n\t\t\tbackgroundColor: defaults.global.defaultColor,\n\t\t\tborderColor: '#fff',\n\t\t\tborderWidth: 2\n\t\t}\n\t}\n});\n\nmodule.exports = Element.extend({\n\tinLabelRange: function(mouseX) {\n\t\tvar vm = this._view;\n\n\t\tif (vm) {\n\t\t\treturn (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2));\n\t\t}\n\t\treturn false;\n\t},\n\n\tinRange: function(chartX, chartY) {\n\t\tvar vm = this._view;\n\n\t\tif (vm) {\n\t\t\tvar pointRelativePosition = helpers.getAngleFromPoint(vm, {x: chartX, y: chartY});\n\t\t\tvar\tangle = pointRelativePosition.angle;\n\t\t\tvar distance = pointRelativePosition.distance;\n\n\t\t\t// Sanitise angle range\n\t\t\tvar startAngle = vm.startAngle;\n\t\t\tvar endAngle = vm.endAngle;\n\t\t\twhile (endAngle < startAngle) {\n\t\t\t\tendAngle += 2.0 * Math.PI;\n\t\t\t}\n\t\t\twhile (angle > endAngle) {\n\t\t\t\tangle -= 2.0 * Math.PI;\n\t\t\t}\n\t\t\twhile (angle < startAngle) {\n\t\t\t\tangle += 2.0 * Math.PI;\n\t\t\t}\n\n\t\t\t// Check if within the range of the open/close angle\n\t\t\tvar betweenAngles = (angle >= startAngle && angle <= endAngle);\n\t\t\tvar withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius);\n\n\t\t\treturn (betweenAngles && withinRadius);\n\t\t}\n\t\treturn false;\n\t},\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\tvar halfAngle = (vm.startAngle + vm.endAngle) / 2;\n\t\tvar halfRadius = (vm.innerRadius + vm.outerRadius) / 2;\n\t\treturn {\n\t\t\tx: vm.x + Math.cos(halfAngle) * halfRadius,\n\t\t\ty: vm.y + Math.sin(halfAngle) * halfRadius\n\t\t};\n\t},\n\n\tgetArea: function() {\n\t\tvar vm = this._view;\n\t\treturn Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2));\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\tvar centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2);\n\t\tvar rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius;\n\n\t\treturn {\n\t\t\tx: vm.x + (Math.cos(centreAngle) * rangeFromCentre),\n\t\t\ty: vm.y + (Math.sin(centreAngle) * rangeFromCentre)\n\t\t};\n\t},\n\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar sA = vm.startAngle;\n\t\tvar eA = vm.endAngle;\n\n\t\tctx.beginPath();\n\n\t\tctx.arc(vm.x, vm.y, vm.outerRadius, sA, eA);\n\t\tctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true);\n\n\t\tctx.closePath();\n\t\tctx.strokeStyle = vm.borderColor;\n\t\tctx.lineWidth = vm.borderWidth;\n\n\t\tctx.fillStyle = vm.backgroundColor;\n\n\t\tctx.fill();\n\t\tctx.lineJoin = 'bevel';\n\n\t\tif (vm.borderWidth) {\n\t\t\tctx.stroke();\n\t\t}\n\t}\n});\n","'use strict';\n\nvar helpers = require('./helpers.core');\n\n/**\n * Easing functions adapted from Robert Penner's easing equations.\n * @namespace Chart.helpers.easingEffects\n * @see http://www.robertpenner.com/easing/\n */\nvar effects = {\n\tlinear: function(t) {\n\t\treturn t;\n\t},\n\n\teaseInQuad: function(t) {\n\t\treturn t * t;\n\t},\n\n\teaseOutQuad: function(t) {\n\t\treturn -t * (t - 2);\n\t},\n\n\teaseInOutQuad: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t;\n\t\t}\n\t\treturn -0.5 * ((--t) * (t - 2) - 1);\n\t},\n\n\teaseInCubic: function(t) {\n\t\treturn t * t * t;\n\t},\n\n\teaseOutCubic: function(t) {\n\t\treturn (t = t - 1) * t * t + 1;\n\t},\n\n\teaseInOutCubic: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t;\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * t + 2);\n\t},\n\n\teaseInQuart: function(t) {\n\t\treturn t * t * t * t;\n\t},\n\n\teaseOutQuart: function(t) {\n\t\treturn -((t = t - 1) * t * t * t - 1);\n\t},\n\n\teaseInOutQuart: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t * t;\n\t\t}\n\t\treturn -0.5 * ((t -= 2) * t * t * t - 2);\n\t},\n\n\teaseInQuint: function(t) {\n\t\treturn t * t * t * t * t;\n\t},\n\n\teaseOutQuint: function(t) {\n\t\treturn (t = t - 1) * t * t * t * t + 1;\n\t},\n\n\teaseInOutQuint: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t * t * t;\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * t * t * t + 2);\n\t},\n\n\teaseInSine: function(t) {\n\t\treturn -Math.cos(t * (Math.PI / 2)) + 1;\n\t},\n\n\teaseOutSine: function(t) {\n\t\treturn Math.sin(t * (Math.PI / 2));\n\t},\n\n\teaseInOutSine: function(t) {\n\t\treturn -0.5 * (Math.cos(Math.PI * t) - 1);\n\t},\n\n\teaseInExpo: function(t) {\n\t\treturn (t === 0) ? 0 : Math.pow(2, 10 * (t - 1));\n\t},\n\n\teaseOutExpo: function(t) {\n\t\treturn (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1;\n\t},\n\n\teaseInOutExpo: function(t) {\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * Math.pow(2, 10 * (t - 1));\n\t\t}\n\t\treturn 0.5 * (-Math.pow(2, -10 * --t) + 2);\n\t},\n\n\teaseInCirc: function(t) {\n\t\tif (t >= 1) {\n\t\t\treturn t;\n\t\t}\n\t\treturn -(Math.sqrt(1 - t * t) - 1);\n\t},\n\n\teaseOutCirc: function(t) {\n\t\treturn Math.sqrt(1 - (t = t - 1) * t);\n\t},\n\n\teaseInOutCirc: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn -0.5 * (Math.sqrt(1 - t * t) - 1);\n\t\t}\n\t\treturn 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n\t},\n\n\teaseInElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.3;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\treturn -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\n\t},\n\n\teaseOutElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.3;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\treturn a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1;\n\t},\n\n\teaseInOutElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif ((t /= 0.5) === 2) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.45;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\tif (t < 1) {\n\t\t\treturn -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\n\t\t}\n\t\treturn a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1;\n\t},\n\teaseInBack: function(t) {\n\t\tvar s = 1.70158;\n\t\treturn t * t * ((s + 1) * t - s);\n\t},\n\n\teaseOutBack: function(t) {\n\t\tvar s = 1.70158;\n\t\treturn (t = t - 1) * t * ((s + 1) * t + s) + 1;\n\t},\n\n\teaseInOutBack: function(t) {\n\t\tvar s = 1.70158;\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n\t},\n\n\teaseInBounce: function(t) {\n\t\treturn 1 - effects.easeOutBounce(1 - t);\n\t},\n\n\teaseOutBounce: function(t) {\n\t\tif (t < (1 / 2.75)) {\n\t\t\treturn 7.5625 * t * t;\n\t\t}\n\t\tif (t < (2 / 2.75)) {\n\t\t\treturn 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75;\n\t\t}\n\t\tif (t < (2.5 / 2.75)) {\n\t\t\treturn 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375;\n\t\t}\n\t\treturn 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375;\n\t},\n\n\teaseInOutBounce: function(t) {\n\t\tif (t < 0.5) {\n\t\t\treturn effects.easeInBounce(t * 2) * 0.5;\n\t\t}\n\t\treturn effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5;\n\t}\n};\n\nmodule.exports = {\n\teffects: effects\n};\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.easing.effects instead.\n * @function Chart.helpers.easingEffects\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.easingEffects = effects;\n","'use strict';\n\nmodule.exports = {};\nmodule.exports.Arc = require('./element.arc');\nmodule.exports.Line = require('./element.line');\nmodule.exports.Point = require('./element.point');\nmodule.exports.Rectangle = require('./element.rectangle');\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar Element = require('../core/core.element');\n\ndefaults._set('global', {\n\telements: {\n\t\trectangle: {\n\t\t\tbackgroundColor: defaults.global.defaultColor,\n\t\t\tborderColor: defaults.global.defaultColor,\n\t\t\tborderSkipped: 'bottom',\n\t\t\tborderWidth: 0\n\t\t}\n\t}\n});\n\nfunction isVertical(bar) {\n\treturn bar._view.width !== undefined;\n}\n\n/**\n * Helper function to get the bounds of the bar regardless of the orientation\n * @param bar {Chart.Element.Rectangle} the bar\n * @return {Bounds} bounds of the bar\n * @private\n */\nfunction getBarBounds(bar) {\n\tvar vm = bar._view;\n\tvar x1, x2, y1, y2;\n\n\tif (isVertical(bar)) {\n\t\t// vertical\n\t\tvar halfWidth = vm.width / 2;\n\t\tx1 = vm.x - halfWidth;\n\t\tx2 = vm.x + halfWidth;\n\t\ty1 = Math.min(vm.y, vm.base);\n\t\ty2 = Math.max(vm.y, vm.base);\n\t} else {\n\t\t// horizontal bar\n\t\tvar halfHeight = vm.height / 2;\n\t\tx1 = Math.min(vm.x, vm.base);\n\t\tx2 = Math.max(vm.x, vm.base);\n\t\ty1 = vm.y - halfHeight;\n\t\ty2 = vm.y + halfHeight;\n\t}\n\n\treturn {\n\t\tleft: x1,\n\t\ttop: y1,\n\t\tright: x2,\n\t\tbottom: y2\n\t};\n}\n\nmodule.exports = Element.extend({\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar left, right, top, bottom, signX, signY, borderSkipped;\n\t\tvar borderWidth = vm.borderWidth;\n\n\t\tif (!vm.horizontal) {\n\t\t\t// bar\n\t\t\tleft = vm.x - vm.width / 2;\n\t\t\tright = vm.x + vm.width / 2;\n\t\t\ttop = vm.y;\n\t\t\tbottom = vm.base;\n\t\t\tsignX = 1;\n\t\t\tsignY = bottom > top ? 1 : -1;\n\t\t\tborderSkipped = vm.borderSkipped || 'bottom';\n\t\t} else {\n\t\t\t// horizontal bar\n\t\t\tleft = vm.base;\n\t\t\tright = vm.x;\n\t\t\ttop = vm.y - vm.height / 2;\n\t\t\tbottom = vm.y + vm.height / 2;\n\t\t\tsignX = right > left ? 1 : -1;\n\t\t\tsignY = 1;\n\t\t\tborderSkipped = vm.borderSkipped || 'left';\n\t\t}\n\n\t\t// Canvas doesn't allow us to stroke inside the width so we can\n\t\t// adjust the sizes to fit if we're setting a stroke on the line\n\t\tif (borderWidth) {\n\t\t\t// borderWidth shold be less than bar width and bar height.\n\t\t\tvar barSize = Math.min(Math.abs(left - right), Math.abs(top - bottom));\n\t\t\tborderWidth = borderWidth > barSize ? barSize : borderWidth;\n\t\t\tvar halfStroke = borderWidth / 2;\n\t\t\t// Adjust borderWidth when bar top position is near vm.base(zero).\n\t\t\tvar borderLeft = left + (borderSkipped !== 'left' ? halfStroke * signX : 0);\n\t\t\tvar borderRight = right + (borderSkipped !== 'right' ? -halfStroke * signX : 0);\n\t\t\tvar borderTop = top + (borderSkipped !== 'top' ? halfStroke * signY : 0);\n\t\t\tvar borderBottom = bottom + (borderSkipped !== 'bottom' ? -halfStroke * signY : 0);\n\t\t\t// not become a vertical line?\n\t\t\tif (borderLeft !== borderRight) {\n\t\t\t\ttop = borderTop;\n\t\t\t\tbottom = borderBottom;\n\t\t\t}\n\t\t\t// not become a horizontal line?\n\t\t\tif (borderTop !== borderBottom) {\n\t\t\t\tleft = borderLeft;\n\t\t\t\tright = borderRight;\n\t\t\t}\n\t\t}\n\n\t\tctx.beginPath();\n\t\tctx.fillStyle = vm.backgroundColor;\n\t\tctx.strokeStyle = vm.borderColor;\n\t\tctx.lineWidth = borderWidth;\n\n\t\t// Corner points, from bottom-left to bottom-right clockwise\n\t\t// | 1 2 |\n\t\t// | 0 3 |\n\t\tvar corners = [\n\t\t\t[left, bottom],\n\t\t\t[left, top],\n\t\t\t[right, top],\n\t\t\t[right, bottom]\n\t\t];\n\n\t\t// Find first (starting) corner with fallback to 'bottom'\n\t\tvar borders = ['bottom', 'left', 'top', 'right'];\n\t\tvar startCorner = borders.indexOf(borderSkipped, 0);\n\t\tif (startCorner === -1) {\n\t\t\tstartCorner = 0;\n\t\t}\n\n\t\tfunction cornerAt(index) {\n\t\t\treturn corners[(startCorner + index) % 4];\n\t\t}\n\n\t\t// Draw rectangle from 'startCorner'\n\t\tvar corner = cornerAt(0);\n\t\tctx.moveTo(corner[0], corner[1]);\n\n\t\tfor (var i = 1; i < 4; i++) {\n\t\t\tcorner = cornerAt(i);\n\t\t\tctx.lineTo(corner[0], corner[1]);\n\t\t}\n\n\t\tctx.fill();\n\t\tif (borderWidth) {\n\t\t\tctx.stroke();\n\t\t}\n\t},\n\n\theight: function() {\n\t\tvar vm = this._view;\n\t\treturn vm.base - vm.y;\n\t},\n\n\tinRange: function(mouseX, mouseY) {\n\t\tvar inRange = false;\n\n\t\tif (this._view) {\n\t\t\tvar bounds = getBarBounds(this);\n\t\t\tinRange = mouseX >= bounds.left && mouseX <= bounds.right && mouseY >= bounds.top && mouseY <= bounds.bottom;\n\t\t}\n\n\t\treturn inRange;\n\t},\n\n\tinLabelRange: function(mouseX, mouseY) {\n\t\tvar me = this;\n\t\tif (!me._view) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar inRange = false;\n\t\tvar bounds = getBarBounds(me);\n\n\t\tif (isVertical(me)) {\n\t\t\tinRange = mouseX >= bounds.left && mouseX <= bounds.right;\n\t\t} else {\n\t\t\tinRange = mouseY >= bounds.top && mouseY <= bounds.bottom;\n\t\t}\n\n\t\treturn inRange;\n\t},\n\n\tinXRange: function(mouseX) {\n\t\tvar bounds = getBarBounds(this);\n\t\treturn mouseX >= bounds.left && mouseX <= bounds.right;\n\t},\n\n\tinYRange: function(mouseY) {\n\t\tvar bounds = getBarBounds(this);\n\t\treturn mouseY >= bounds.top && mouseY <= bounds.bottom;\n\t},\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\tvar x, y;\n\t\tif (isVertical(this)) {\n\t\t\tx = vm.x;\n\t\t\ty = (vm.y + vm.base) / 2;\n\t\t} else {\n\t\t\tx = (vm.x + vm.base) / 2;\n\t\t\ty = vm.y;\n\t\t}\n\n\t\treturn {x: x, y: y};\n\t},\n\n\tgetArea: function() {\n\t\tvar vm = this._view;\n\t\treturn vm.width * Math.abs(vm.y - vm.base);\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y\n\t\t};\n\t}\n});\n"],"sourceRoot":""}