2016-04-17 00:39:51 +02:00
! function t ( e , i , a ) { function s ( n , r ) { if ( ! i [ n ] ) { if ( ! e [ n ] ) { var h = "function" == typeof require && require ; if ( ! r && h ) return h ( n , ! 0 ) ; if ( o ) return o ( n , ! 0 ) ; var l = new Error ( "Cannot find module '" + n + "'" ) ; throw l . code = "MODULE_NOT_FOUND" , l } var c = i [ n ] = { exports : { } } ; e [ n ] [ 0 ] . call ( c . exports , function ( t ) { var i = e [ n ] [ 1 ] [ t ] ; return s ( i ? i : t ) } , c , c . exports , t , e , i , a ) } return i [ n ] . exports } for ( var o = "function" == typeof require && require , n = 0 ; n < a . length ; n ++ ) s ( a [ n ] ) ; return s } ( { 1 : [ function ( t , e , i ) { } , { } ] , 2 : [ function ( t , e , i ) { function a ( t ) { var e , i , a , s = t [ 0 ] / 255 , o = t [ 1 ] / 255 , n = t [ 2 ] / 255 , r = Math . min ( s , o , n ) , h = Math . max ( s , o , n ) , l = h - r ; return h == r ? e = 0 : s == h ? e = ( o - n ) / l : o == h ? e = 2 + ( n - s ) / l : n == h && ( e = 4 + ( s - o ) / l ) , e = Math . min ( 60 * e , 360 ) , 0 > e && ( e += 360 ) , a = ( r + h ) / 2 , i = h == r ? 0 : . 5 >= a ? l / ( h + r ) : l / ( 2 - h - r ) , [ e , 100 * i , 100 * a ] } function s ( t ) { var e , i , a , s = t [ 0 ] , o = t [ 1 ] , n = t [ 2 ] , r = Math . min ( s , o , n ) , h = Math . max ( s , o , n ) , l = h - r ; return i = 0 == h ? 0 : l / h * 1e3 / 10 , h == r ? e = 0 : s == h ? e = ( o - n ) / l : o == h ? e = 2 + ( n - s ) / l : n == h && ( e = 4 + ( s - o ) / l ) , e = Math . min ( 60 * e , 360 ) , 0 > e && ( e += 360 ) , a = h / 255 * 1e3 / 10 , [ e , i , a ] } function o ( t ) { var e = t [ 0 ] , i = t [ 1 ] , s = t [ 2 ] , o = a ( t ) [ 0 ] , n = 1 / 255 * Math . min ( e , Math . min ( i , s ) ) , s = 1 - 1 / 255 * Math . max ( e , Math . max ( i , s ) ) ; return [ o , 100 * n , 100 * s ] } function n ( t ) { var e , i , a , s , o = t [ 0 ] / 255 , n = t [ 1 ] / 255 , r = t [ 2 ] / 255 ; return s = Math . min ( 1 - o , 1 - n , 1 - r ) , e = ( 1 - o - s ) / ( 1 - s ) || 0 , i = ( 1 - n - s ) / ( 1 - s ) || 0 , a = ( 1 - r - s ) / ( 1 - s ) || 0 , [ 100 * e , 100 * i , 100 * a , 100 * s ] } function h ( t ) { return G [ JSON . stringify ( t ) ] } function l ( t ) { var e = t [ 0 ] / 255 , i = t [ 1 ] / 255 , a = t [ 2 ] / 255 ; e = e > . 04045 ? Math . pow ( ( e + . 055 ) / 1.055 , 2.4 ) : e / 12.92 , i = i > . 04045 ? Math . pow ( ( i + . 055 ) / 1.055 , 2.4 ) : i / 12.92 , a = a > . 04045 ? Math . pow ( ( a + . 055 ) / 1.055 , 2.4 ) : a / 12.92 ; var s = . 4124 * e + . 3576 * i + . 1805 * a , o = . 2126 * e + . 7152 * i + . 0722 * a , n = . 0193 * e + . 1192 * i + . 9505 * a ; return [ 100 * s , 100 * o , 100 * n ] } function c ( t ) { var e , i , a , s = l ( t ) , o = s [ 0 ] , n = s [ 1 ] , r = s [ 2 ] ; return o /= 95.047 , n /= 100 , r /= 108.883 , o = o > . 008856 ? Math . pow ( o , 1 / 3 ) : 7.787 * o + 16 / 116 , n = n > . 008856 ? Math . pow ( n , 1 / 3 ) : 7.787 * n + 16 / 116 , r = r > . 008856 ? Math . pow ( r , 1 / 3 ) : 7.787 * r + 16 / 116 , e = 116 * n - 16 , i = 500 * ( o - n ) , a = 200 * ( n - r ) , [ e , i , a ] } function d ( t ) { return W ( c ( t ) ) } function u ( t ) { var e , i , a , s , o , n = t [ 0 ] / 360 , r = t [ 1 ] / 100 , h = t [ 2 ] / 100 ; if ( 0 == r ) return o = 255 * h , [ o , o , o ] ; i = . 5 > h ? h * ( 1 + r ) : h + r - h * r , e = 2 * h - i , s = [ 0 , 0 , 0 ] ; for ( var l = 0 ; 3 > l ; l ++ ) a = n + 1 / 3 * - ( l - 1 ) , 0 > a && a ++ , a > 1 && a -- , o = 1 > 6 * a ? e + 6 * ( i - e ) * a : 1 > 2 * a ? i : 2 > 3 * a ? e + ( i - e ) * ( 2 / 3 - a ) * 6 : e , s [ l ] = 255 * o ; return s } function f ( t ) { var e , i , a = t [ 0 ] , s = t [ 1 ] / 100 , o = t [ 2 ] / 100 ; return 0 === o ? [ 0 , 0 , 0 ] : ( o *= 2 , s *= 1 >= o ? o : 2 - o , i = ( o + s ) / 2 , e = 2 * s / ( o + s ) , [ a , 100 * e , 100 * i ] ) } function m ( t ) { return o ( u ( t ) ) } function p ( t ) { return n ( u ( t ) ) } function x ( t ) { return h ( u ( t ) ) } function v ( t ) { var e = t [ 0 ] / 60 , i = t [ 1 ] / 100 , a = t [ 2 ] / 100 , s = Math . floor ( e ) % 6 , o = e - Math . floor ( e ) , n = 255 * a * ( 1 - i ) , r = 255 * a * ( 1 - i * o ) , h = 255 * a * ( 1 - i * ( 1 - o ) ) , a = 255 * a ; switch ( s ) { case 0 : return [ a , h , n ] ; case 1 : return [ r , a , n ] ; case 2 : return [ n , a , h ] ; case 3 : return [ n , r , a ] ; case 4 : return [ h , n , a ] ; case 5 : return [ a , n , r ] } } function y ( t ) { var e , i , a = t [ 0 ] , s = t [ 1 ] / 100 , o = t [ 2 ] / 100 ; return i = ( 2 - s ) * o , e = s * o , e /= 1 >= i ? i : 2 - i , e = e || 0 , i /= 2 , [ a , 100 * e , 100 * i ] } function k ( t ) { return o ( v ( t ) ) } function D ( t ) { return n ( v ( t ) ) } function S ( t ) { return h ( v ( t ) ) } function C ( t ) { var e , i , a , s , o = t [ 0 ] / 360 , n = t [ 1 ] / 100 , h = t [ 2 ] / 100 , l = n + h ; switch ( l > 1 && ( n /= l , h /= l ) , e = Math . floor ( 6 * o ) , i = 1 - h , a = 6 * o - e , 0 != ( 1 & e ) && ( a = 1 - a ) , s = n + a * ( i - n ) , e ) { default : case 6 : case 0 : r = i , g = s , b = n ; break ; case 1 : r = s , g = i , b = n ; break ; case 2 : r = n , g = i , b = s ; break ; case 3 : r = n , g = s , b = i ; break ; case 4 : r = s , g = n , b = i ; break ; case 5 : r = i , g = n , b = s } return [ 255 * r , 255 * g , 255 * b ] } function w ( t ) { return a ( C ( t ) ) } function _ ( t ) { return s ( C ( t ) ) } function A ( t ) { return n ( C ( t ) ) } function M ( t ) { return h ( C ( t ) ) } function I ( t ) { var e , i , a , s = t [ 0 ] / 100 , o = t [ 1 ] / 100 , n = t [ 2 ] / 100 , r = t [ 3 ] / 100 ; return e = 1 - Math . min ( 1 , s * ( 1 - r ) + r ) , i = 1 - Math . min ( 1 , o * ( 1 - r ) + r ) , a = 1 - Math . min ( 1 , n * ( 1 - r ) + r ) , [ 255 * e , 255 * i , 255 * a ] } function F ( t ) { return a ( I ( t ) ) } function P ( t ) { return s ( I ( t ) ) } function T ( t ) { return o ( I ( t ) ) } function V ( t ) { return h ( I ( t ) ) } function R ( t ) { var e , i , a , s = t [ 0 ] / 100 , o = t [ 1 ] / 100 , n = t [ 2 ] / 100 ; return e = 3.2406 * s + - 1.5372 * o + n * - . 4986 , i = s * - . 9689 + 1.8758 * o + . 0415 * n , a = . 0557 * s + o * - . 204 + 1.057 * n , e = e > . 0031308 ? 1.055 * Math . pow ( e , 1 / 2.4 ) - . 055 : e = 12.92 * e , i = i > . 0031308 ? 1.055 * Math . pow ( i , 1 / 2.4 ) - . 055 : i = 12.92 * i , a = a > . 0031308 ? 1.055 * Math . pow ( a , 1 / 2.4 ) - . 055 : a = 12.92 * a , e = Math . min ( Math . max ( 0 , e ) , 1 ) , i = Math . min ( Math . max ( 0 , i ) , 1 ) , a = Math . min ( Math . max ( 0 , a ) , 1 ) , [ 255 * e , 255 * i , 255 * a ] } function O ( t ) { var e , i , a , s = t [ 0 ] , o = t [ 1 ] , n = t [ 2 ] ; return s /= 95
2016-02-12 05:29:26 +01:00
* Chart . js
* http : //chartjs.org/
2016-04-17 00:39:51 +02:00
* Version : 2.0 . 2
2016-02-12 05:29:26 +01:00
*
* Copyright 2015 Nick Downie
* Released under the MIT license
* https : //github.com/nnnick/Chart.js/blob/master/LICENSE.md
* /
2016-04-17 00:39:51 +02:00
var a = t ( "./core/core.js" ) ( ) ; t ( "./core/core.helpers" ) ( a ) , t ( "./core/core.element" ) ( a ) , t ( "./core/core.animation" ) ( a ) , t ( "./core/core.controller" ) ( a ) , t ( "./core/core.datasetController" ) ( a ) , t ( "./core/core.layoutService" ) ( a ) , t ( "./core/core.legend" ) ( a ) , t ( "./core/core.scale" ) ( a ) , t ( "./core/core.scaleService" ) ( a ) , t ( "./core/core.title" ) ( a ) , t ( "./core/core.tooltip" ) ( a ) , t ( "./controllers/controller.bar" ) ( a ) , t ( "./controllers/controller.bubble" ) ( a ) , t ( "./controllers/controller.doughnut" ) ( a ) , t ( "./controllers/controller.line" ) ( a ) , t ( "./controllers/controller.polarArea" ) ( a ) , t ( "./controllers/controller.radar" ) ( a ) , t ( "./scales/scale.category" ) ( a ) , t ( "./scales/scale.linear" ) ( a ) , t ( "./scales/scale.logarithmic" ) ( a ) , t ( "./scales/scale.radialLinear" ) ( a ) , t ( "./scales/scale.time" ) ( a ) , t ( "./elements/element.arc" ) ( a ) , t ( "./elements/element.line" ) ( a ) , t ( "./elements/element.point" ) ( a ) , t ( "./elements/element.rectangle" ) ( a ) , t ( "./charts/Chart.Bar" ) ( a ) , t ( "./charts/Chart.Bubble" ) ( a ) , t ( "./charts/Chart.Doughnut" ) ( a ) , t ( "./charts/Chart.Line" ) ( a ) , t ( "./charts/Chart.PolarArea" ) ( a ) , t ( "./charts/Chart.Radar" ) ( a ) , t ( "./charts/Chart.Scatter" ) ( a ) , window . Chart = e . exports = a } , { "./charts/Chart.Bar" : 8 , "./charts/Chart.Bubble" : 9 , "./charts/Chart.Doughnut" : 10 , "./charts/Chart.Line" : 11 , "./charts/Chart.PolarArea" : 12 , "./charts/Chart.Radar" : 13 , "./charts/Chart.Scatter" : 14 , "./controllers/controller.bar" : 15 , "./controllers/controller.bubble" : 16 , "./controllers/controller.doughnut" : 17 , "./controllers/controller.line" : 18 , "./controllers/controller.polarArea" : 19 , "./controllers/controller.radar" : 20 , "./core/core.animation" : 21 , "./core/core.controller" : 22 , "./core/core.datasetController" : 23 , "./core/core.element" : 24 , "./core/core.helpers" : 25 , "./core/core.js" : 26 , "./core/core.layoutService" : 27 , "./core/core.legend" : 28 , "./core/core.scale" : 29 , "./core/core.scaleService" : 30 , "./core/core.title" : 31 , "./core/core.tooltip" : 32 , "./elements/element.arc" : 33 , "./elements/element.line" : 34 , "./elements/element.point" : 35 , "./elements/element.rectangle" : 36 , "./scales/scale.category" : 37 , "./scales/scale.linear" : 38 , "./scales/scale.logarithmic" : 39 , "./scales/scale.radialLinear" : 40 , "./scales/scale.time" : 41 } ] , 8 : [ function ( t , e , i ) { "use strict" ; e . exports = function ( t ) { t . Bar = function ( e , i ) { return i . type = "bar" , new t ( e , i ) } } } , { } ] , 9 : [ function ( t , e , i ) { "use strict" ; e . exports = function ( t ) { t . Bubble = function ( e , i ) { return i . type = "bubble" , new t ( e , i ) } } } , { } ] , 10 : [ function ( t , e , i ) { "use strict" ; e . exports = function ( t ) { t . Doughnut = function ( e , i ) { return i . type = "doughnut" , new t ( e , i ) } } } , { } ] , 11 : [ function ( t , e , i ) { "use strict" ; e . exports = function ( t ) { t . Line = function ( e , i ) { return i . type = "line" , new t ( e , i ) } } } , { } ] , 12 : [ function ( t , e , i ) { "use strict" ; e . exports = function ( t ) { t . PolarArea = function ( e , i ) { return i . type = "polarArea" , new t ( e , i ) } } } , { } ] , 13 : [ function ( t , e , i ) { "use strict" ; e . exports = function ( t ) { var e = t . helpers , i = { aspectRatio : 1 } ; t . Radar = function ( a , s ) { return s . options = e . configMerge ( i , s . options ) , s . type = "radar" , new t ( a , s ) } } } , { } ] , 14 : [ function ( t , e , i ) { "use strict" ; e . exports = function ( t ) { var e = { hover : { mode : "single" } , scales : { xAxes : [ { type : "linear" , position : "bottom" , id : "x-axis-1" } ] , yAxes : [ { type : "linear" , position : "left" , id : "y-axis-1" } ] } , tooltips : { callbacks : { title : function ( t , e ) { return "" } , label : function ( t , e ) { return "(" + t . xLabel + ", " + t . yLabel + ")" } } } } ; t . defaults . scatter = e , t . controllers . scatter = t . controllers . line , t . Scatter = function ( e , i ) { return i . type = "scatter" , new t ( e , i ) } } } , { } ] , 15 : [ function ( t , e , i ) { "use strict" ; e . exports = function ( t ) { var e = t . helpers ; t . defaults . bar = { hover : { mode : "label" } , scales : { xAxes : [ { type : "category" , categoryPercentage : . 8 , barPercentage : . 9 , gridLines : { offsetGridLines : ! 0 } } ] , yAxes : [ { type : "linear" } ] } } , t . controllers . bar = t . DatasetController . extend ( { initialize : function ( e , i ) { t . DatasetController . prototype . initialize . call ( this , e , i ) , this . getDataset ( ) . bar = ! 0 } , getBarCount : function ( ) { var t = 0 ; return e . each ( this . chart . data . datasets , function ( i ) { e . isDatasetVisible ( i ) && i . bar && ++ t } ) , t } , addElements : function ( ) { this . getDataset ( ) . metaData = this . getDataset ( ) . metaData || [ ] , e . each ( this . getDataset ( ) . data , function ( e , i ) { this . getDataset ( ) . metaData [ i ] = this . getDataset ( ) . metaData [ i ] || new t . elements . Rectangle ( { _chart : this . chart . chart , _da
var l = - . 5 * Math . PI + s * r , c = l + s , d = { x : o , y : n , innerRadius : 0 , outerRadius : this . chart . options . animateScale ? 0 : this . chart . scale . getDistanceFromCenterForValue ( this . getDataset ( ) . data [ i ] ) , startAngle : this . chart . options . animateRotate ? Math . PI * - . 5 : l , endAngle : this . chart . options . animateRotate ? Math . PI * - . 5 : c , backgroundColor : t . custom && t . custom . backgroundColor ? t . custom . backgroundColor : e . getValueAtIndexOrDefault ( this . getDataset ( ) . backgroundColor , i , this . chart . options . elements . arc . backgroundColor ) , borderWidth : t . custom && t . custom . borderWidth ? t . custom . borderWidth : e . getValueAtIndexOrDefault ( this . getDataset ( ) . borderWidth , i , this . chart . options . elements . arc . borderWidth ) , borderColor : t . custom && t . custom . borderColor ? t . custom . borderColor : e . getValueAtIndexOrDefault ( this . getDataset ( ) . borderColor , i , this . chart . options . elements . arc . borderColor ) , label : e . getValueAtIndexOrDefault ( this . chart . data . labels , i , this . chart . data . labels [ i ] ) } ; e . extend ( t , { _chart : this . chart . chart , _datasetIndex : this . index , _index : i , _scale : this . chart . scale , _model : a ? d : { x : o , y : n , innerRadius : 0 , outerRadius : this . chart . scale . getDistanceFromCenterForValue ( this . getDataset ( ) . data [ i ] ) , startAngle : l , endAngle : c , backgroundColor : t . custom && t . custom . backgroundColor ? t . custom . backgroundColor : e . getValueAtIndexOrDefault ( this . getDataset ( ) . backgroundColor , i , this . chart . options . elements . arc . backgroundColor ) , borderWidth : t . custom && t . custom . borderWidth ? t . custom . borderWidth : e . getValueAtIndexOrDefault ( this . getDataset ( ) . borderWidth , i , this . chart . options . elements . arc . borderWidth ) , borderColor : t . custom && t . custom . borderColor ? t . custom . borderColor : e . getValueAtIndexOrDefault ( this . getDataset ( ) . borderColor , i , this . chart . options . elements . arc . borderColor ) , label : e . getValueAtIndexOrDefault ( this . chart . data . labels , i , this . chart . data . labels [ i ] ) } } ) , t . pivot ( ) } , draw : function ( t ) { var i = t || 1 ; e . each ( this . getDataset ( ) . metaData , function ( t , e ) { t . transition ( i ) . draw ( ) } ) } , setHoverStyle : function ( t ) { var i = this . chart . data . datasets [ t . _datasetIndex ] , a = t . _index ; t . _model . backgroundColor = t . custom && t . custom . hoverBackgroundColor ? t . custom . hoverBackgroundColor : e . getValueAtIndexOrDefault ( i . hoverBackgroundColor , a , e . color ( t . _model . backgroundColor ) . saturate ( . 5 ) . darken ( . 1 ) . rgbString ( ) ) , t . _model . borderColor = t . custom && t . custom . hoverBorderColor ? t . custom . hoverBorderColor : e . getValueAtIndexOrDefault ( i . hoverBorderColor , a , e . color ( t . _model . borderColor ) . saturate ( . 5 ) . darken ( . 1 ) . rgbString ( ) ) , t . _model . borderWidth = t . custom && t . custom . hoverBorderWidth ? t . custom . hoverBorderWidth : e . getValueAtIndexOrDefault ( i . hoverBorderWidth , a , t . _model . borderWidth ) } , removeHoverStyle : function ( t ) { var i = ( this . chart . data . datasets [ t . _datasetIndex ] , t . _index ) ; t . _model . backgroundColor = t . custom && t . custom . backgroundColor ? t . custom . backgroundColor : e . getValueAtIndexOrDefault ( this . getDataset ( ) . backgroundColor , i , this . chart . options . elements . arc . backgroundColor ) , t . _model . borderColor = t . custom && t . custom . borderColor ? t . custom . borderColor : e . getValueAtIndexOrDefault ( this . getDataset ( ) . borderColor , i , this . chart . options . elements . arc . borderColor ) , t . _model . borderWidth = t . custom && t . custom . borderWidth ? t . custom . borderWidth : e . getValueAtIndexOrDefault ( this . getDataset ( ) . borderWidth , i , this . chart . options . elements . arc . borderWidth ) } , calculateCircumference : function ( t ) { if ( isNaN ( t ) ) return 0 ; var i = e . where ( this . getDataset ( ) . data , function ( t ) { return isNaN ( t ) } ) . length ; return 2 * Math . PI / ( this . getDataset ( ) . data . length - i ) } } ) } } , { } ] , 20 : [ function ( t , e , i ) { "use strict" ; e . exports = function ( t ) { var e = t . helpers ; t . defaults . radar = { scale : { type : "radialLinear" } , elements : { line : { tension : 0 } } } , t . controllers . radar = t . DatasetController . extend ( { linkScales : function ( ) { } , addElements : function ( ) { this . getDataset ( ) . metaData = this . getDataset ( ) . metaData || [ ] , this . getDataset ( ) . metaDataset = this . getDataset ( ) . metaDataset || new t . elements . Line ( { _chart : this . chart . chart , _datasetIndex : this . index , _points : this . getDataset ( ) . metaData , _loop : ! 0 } ) , e . each ( this . getDataset ( ) . data , function ( e , i ) { this . getDataset ( ) . metaData [ i ] = this . getDataset ( ) . metaData [ i ] || new t . elements . Point ( { _chart : this . chart . chart , _datasetIndex : this . index , _index : i , _model : { x : 0 , y : 0 } } ) } , this ) } , addElementAndReset : function ( e ) { this . getDataset ( ) . metaData = this
return window . setTimeout ( t , 1e3 / 60 ) } } ( ) , s . cancelAnimFrame = function ( ) { return window . cancelAnimationFrame || window . webkitCancelAnimationFrame || window . mozCancelAnimationFrame || window . oCancelAnimationFrame || window . msCancelAnimationFrame || function ( t ) { return window . clearTimeout ( t , 1e3 / 60 ) } } ( ) , s . getRelativePosition = function ( t , e ) { var i , a , o = t . originalEvent || t , n = t . currentTarget || t . srcElement , r = n . getBoundingClientRect ( ) ; o . touches && o . touches . length > 0 ? ( i = o . touches [ 0 ] . clientX , a = o . touches [ 0 ] . clientY ) : ( i = o . clientX , a = o . clientY ) ; var h = parseFloat ( s . getStyle ( n , "padding-left" ) ) , l = parseFloat ( s . getStyle ( n , "padding-top" ) ) , c = parseFloat ( s . getStyle ( n , "padding-right" ) ) , d = parseFloat ( s . getStyle ( n , "padding-bottom" ) ) , u = r . right - r . left - h - c , g = r . bottom - r . top - l - d ; return i = Math . round ( ( i - r . left - h ) / u * n . width / e . currentDevicePixelRatio ) , a = Math . round ( ( a - r . top - l ) / g * n . height / e . currentDevicePixelRatio ) , { x : i , y : a } } , s . addEvent = function ( t , e , i ) { t . addEventListener ? t . addEventListener ( e , i ) : t . attachEvent ? t . attachEvent ( "on" + e , i ) : t [ "on" + e ] = i } , s . removeEvent = function ( t , e , i ) { t . removeEventListener ? t . removeEventListener ( e , i , ! 1 ) : t . detachEvent ? t . detachEvent ( "on" + e , i ) : t [ "on" + e ] = s . noop } , s . bindEvents = function ( t , e , i ) { t . events || ( t . events = { } ) , s . each ( e , function ( e ) { t . events [ e ] = function ( ) { i . apply ( t , arguments ) } , s . addEvent ( t . chart . canvas , e , t . events [ e ] ) } ) } , s . unbindEvents = function ( t , e ) { s . each ( e , function ( e , i ) { s . removeEvent ( t . chart . canvas , i , e ) } ) } , s . getConstraintWidth = function ( t ) { return i ( t , "max-width" , "clientWidth" ) } , s . getConstraintHeight = function ( t ) { return i ( t , "max-height" , "clientHeight" ) } , s . getMaximumWidth = function ( t ) { var e = t . parentNode , i = parseInt ( s . getStyle ( e , "padding-left" ) ) + parseInt ( s . getStyle ( e , "padding-right" ) ) , a = e . clientWidth - i , o = s . getConstraintWidth ( t ) ; return void 0 !== o && ( a = Math . min ( a , o ) ) , a } , s . getMaximumHeight = function ( t ) { var e = t . parentNode , i = parseInt ( s . getStyle ( e , "padding-top" ) ) + parseInt ( s . getStyle ( e , "padding-bottom" ) ) , a = e . clientHeight - i , o = s . getConstraintHeight ( t ) ; return void 0 !== o && ( a = Math . min ( a , o ) ) , a } , s . getStyle = function ( t , e ) { return t . currentStyle ? t . currentStyle [ e ] : document . defaultView . getComputedStyle ( t , null ) . getPropertyValue ( e ) } , s . retinaScale = function ( t ) { var e = t . ctx , i = t . canvas . width , a = t . canvas . height , s = t . currentDevicePixelRatio = window . devicePixelRatio || 1 ; 1 !== s && ( e . canvas . height = a * s , e . canvas . width = i * s , e . scale ( s , s ) , t . originalDevicePixelRatio = t . originalDevicePixelRatio || s ) , e . canvas . style . width = i + "px" , e . canvas . style . height = a + "px" } , s . clear = function ( t ) { t . ctx . clearRect ( 0 , 0 , t . width , t . height ) } , s . fontString = function ( t , e , i ) { return e + " " + t + "px " + i } , s . longestText = function ( t , e , i , a ) { a = a || { } , a . data = a . data || { } , a . garbageCollect = a . garbageCollect || [ ] , a . font !== e && ( a . data = { } , a . garbageCollect = [ ] , a . font = e ) , t . font = e ; var o = 0 ; s . each ( i , function ( e ) { if ( void 0 !== e && null !== e ) { var i = a . data [ e ] ; i || ( i = a . data [ e ] = t . measureText ( e ) . width , a . garbageCollect . push ( e ) ) , i > o && ( o = i ) } } ) ; var n = a . garbageCollect . length / 2 ; if ( n > i . length ) { for ( var r = 0 ; n > r ; r ++ ) delete a . data [ a . garbageCollect [ r ] ] ; a . garbageCollect . splice ( 0 , n ) } return o } , s . drawRoundedRectangle = function ( t , e , i , a , s , o ) { t . beginPath ( ) , t . moveTo ( e + o , i ) , t . lineTo ( e + a - o , i ) , t . quadraticCurveTo ( e + a , i , e + a , i + o ) , t . lineTo ( e + a , i + s - o ) , t . quadraticCurveTo ( e + a , i + s , e + a - o , i + s ) , t . lineTo ( e + o , i + s ) , t . quadraticCurveTo ( e , i + s , e , i + s - o ) , t . lineTo ( e , i + o ) , t . quadraticCurveTo ( e , i , e + o , i ) , t . closePath ( ) } , s . color = function ( e ) { return a ? a ( e instanceof CanvasGradient ? t . defaults . global . defaultColor : e ) : ( console . log ( "Color.js not found!" ) , e ) } , s . addResizeListener = function ( t , e ) { var i = document . createElement ( "iframe" ) , a = "chartjs-hidden-iframe" ; i . classlist ? i . classlist . add ( a ) : i . setAttribute ( "class" , a ) , i . style . width = "100%" , i . style . display = "block" , i . style . border = 0 , i . style . height = 0 , i . style . margin = 0 , i . style . position = "absolute" , i . style . left = 0 , i . style . right = 0 , i . style . top = 0 , i . style . bottom = 0 , t . insertBefore ( i , t . firstChild ) , ( i . contentWindow || i ) . onresize = function ( ) { e && e ( ) } } , s . removeResizeListener = function ( t ) { var e = t . querySelector ( ".chartjs-hidden-iframe" ) ; e && e . parentNode . removeChild ( e ) } , s . isArray = function ( t ) { return Array . isArray ? Array . isArray ( t ) : "[object Array]" === Object . prototype . toString . call ( t ) } , s . pushAllIfDefined = function ( t , e ) { "undefined" != typ
_footerAlign : e . tooltips . footerAlign , footerSpacing : e . tooltips . footerSpacing , footerMarginTop : e . tooltips . footerMarginTop , caretSize : e . tooltips . caretSize , cornerRadius : e . tooltips . cornerRadius , backgroundColor : e . tooltips . backgroundColor , opacity : 0 , legendColorBackground : e . tooltips . multiKeyBackground } } ) } , getTitle : function ( ) { var t = this . _options . tooltips . callbacks . beforeTitle . apply ( this , arguments ) , i = this . _options . tooltips . callbacks . title . apply ( this , arguments ) , a = this . _options . tooltips . callbacks . afterTitle . apply ( this , arguments ) , s = [ ] ; return s = e ( s , t ) , s = e ( s , i ) , s = e ( s , a ) } , getBeforeBody : function ( ) { var t = this . _options . tooltips . callbacks . beforeBody . apply ( this , arguments ) ; return i . isArray ( t ) ? t : void 0 !== t ? [ t ] : [ ] } , getBody : function ( t , e ) { var a = [ ] ; return i . each ( t , function ( t ) { i . pushAllIfDefined ( this . _options . tooltips . callbacks . beforeLabel . call ( this , t , e ) , a ) , i . pushAllIfDefined ( this . _options . tooltips . callbacks . label . call ( this , t , e ) , a ) , i . pushAllIfDefined ( this . _options . tooltips . callbacks . afterLabel . call ( this , t , e ) , a ) } , this ) , a } , getAfterBody : function ( ) { var t = this . _options . tooltips . callbacks . afterBody . apply ( this , arguments ) ; return i . isArray ( t ) ? t : void 0 !== t ? [ t ] : [ ] } , getFooter : function ( ) { var t = this . _options . tooltips . callbacks . beforeFooter . apply ( this , arguments ) , i = this . _options . tooltips . callbacks . footer . apply ( this , arguments ) , a = this . _options . tooltips . callbacks . afterFooter . apply ( this , arguments ) , s = [ ] ; return s = e ( s , t ) , s = e ( s , i ) , s = e ( s , a ) } , getAveragePosition : function ( t ) { if ( ! t . length ) return ! 1 ; var e = [ ] , a = [ ] ; i . each ( t , function ( t ) { if ( t ) { var i = t . tooltipPosition ( ) ; e . push ( i . x ) , a . push ( i . y ) } } ) ; for ( var s = 0 , o = 0 , n = 0 ; n < e . length ; n ++ ) s += e [ n ] , o += a [ n ] ; return { x : Math . round ( s / e . length ) , y : Math . round ( o / e . length ) } } , update : function ( t ) { if ( this . _active . length ) { this . _model . opacity = 1 ; var e , a = this . _active [ 0 ] , s = [ ] , o = [ ] ; if ( "single" === this . _options . tooltips . mode ) { var n = a . _yScale || a . _scale ; o . push ( { xLabel : a . _xScale ? a . _xScale . getLabelForIndex ( a . _index , a . _datasetIndex ) : "" , yLabel : n ? n . getLabelForIndex ( a . _index , a . _datasetIndex ) : "" , index : a . _index , datasetIndex : a . _datasetIndex } ) , e = this . getAveragePosition ( this . _active ) } else i . each ( this . _data . datasets , function ( t , e ) { if ( i . isDatasetVisible ( t ) ) { var s = t . metaData [ a . _index ] ; if ( s ) { var n = a . _yScale || a . _scale ; o . push ( { xLabel : s . _xScale ? s . _xScale . getLabelForIndex ( s . _index , s . _datasetIndex ) : "" , yLabel : n ? n . getLabelForIndex ( s . _index , s . _datasetIndex ) : "" , index : a . _index , datasetIndex : e } ) } } } , null , a . _yScale . options . stacked ) , i . each ( this . _active , function ( t ) { t && s . push ( { borderColor : t . _view . borderColor , backgroundColor : t . _view . backgroundColor } ) } , null , a . _yScale . options . stacked ) , e = this . getAveragePosition ( this . _active ) , e . y = this . _active [ 0 ] . _yScale . getPixelForDecimal ( . 5 ) ; i . extend ( this . _model , { title : this . getTitle ( o , this . _data ) , beforeBody : this . getBeforeBody ( o , this . _data ) , body : this . getBody ( o , this . _data ) , afterBody : this . getAfterBody ( o , this . _data ) , footer : this . getFooter ( o , this . _data ) } ) , i . extend ( this . _model , { x : Math . round ( e . x ) , y : Math . round ( e . y ) , caretPadding : i . getValueOrDefault ( e . padding , 2 ) , labelColors : s } ) ; var r = this . getTooltipSize ( this . _model ) ; this . determineAlignment ( r ) , i . extend ( this . _model , this . getBackgroundPoint ( this . _model , r ) ) } else this . _model . opacity = 0 ; return t && this . _options . tooltips . custom && this . _options . tooltips . custom . call ( this , this . _model ) , this } , getTooltipSize : function ( t ) { var e = this . _chart . ctx , a = { height : 2 * t . yPadding , width : 0 } , s = t . body . length + t . beforeBody . length + t . afterBody . length ; return a . height += t . title . length * t . titleFontSize , a . height += ( t . title . length - 1 ) * t . titleSpacing , a . height += t . title . length ? t . titleMarginBottom : 0 , a . height += s * t . bodyFontSize , a . height += s ? ( s - 1 ) * t . bodySpacing : 0 , a . height += t . footer . length ? t . footerMarginTop : 0 , a . height += t . footer . length * t . footerFontSize , a . height += t . footer . length ? ( t . footer . length - 1 ) * t . footerSpacing : 0 , e . font = i . fontString ( t . titleFontSize , t . _titleFontStyle , t . _titleFontFamily ) , i . each ( t . title , function ( t ) { a . width = Math . max ( a . width , e . measureText ( t ) . width ) } ) , e . font = i . fontString ( t . bodyFontSize , t . _bodyFontStyle , t . _bodyFontFamily ) , i . each ( t . beforeBody . concat ( t . afterBody ) , function ( t ) { a . width = Math . max ( a . width , e . measureText ( t ) . width ) } ) , i . each ( t . body , function ( i ) { a . width = Math . max ( a . width , e . measur
} , { name : "day" , steps : [ 1 , 2 , 5 ] } , { name : "week" , maxStep : 4 } , { name : "month" , maxStep : 3 } , { name : "quarter" , maxStep : 4 } , { name : "year" , maxStep : ! 1 } ] } , s = { position : "bottom" , time : { parser : ! 1 , format : ! 1 , unit : ! 1 , round : ! 1 , displayFormat : ! 1 , displayFormats : { millisecond : "h:mm:ss.SSS a" , second : "h:mm:ss a" , minute : "h:mm:ss a" , hour : "MMM D, hA" , day : "ll" , week : "ll" , month : "MMM YYYY" , quarter : "[Q]Q - YYYY" , year : "YYYY" } } , ticks : { autoSkip : ! 1 } } , o = t . Scale . extend ( { initialize : function ( ) { if ( ! a ) throw new Error ( "Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com" ) ; t . Scale . prototype . initialize . call ( this ) } , getLabelMoment : function ( t , e ) { return this . labelMoments [ t ] [ e ] } , determineDataLimits : function ( ) { this . labelMoments = [ ] ; var t = [ ] ; this . chart . data . labels && this . chart . data . labels . length > 0 ? ( e . each ( this . chart . data . labels , function ( e , i ) { var a = this . parseTime ( e ) ; this . options . time . round && a . startOf ( this . options . time . round ) , t . push ( a ) } , this ) , this . firstTick = a . min . call ( this , t ) , this . lastTick = a . max . call ( this , t ) ) : ( this . firstTick = null , this . lastTick = null ) , e . each ( this . chart . data . datasets , function ( i , s ) { var o = [ ] ; "object" == typeof i . data [ 0 ] ? e . each ( i . data , function ( t , e ) { var i = this . parseTime ( this . getRightValue ( t ) ) ; this . options . time . round && i . startOf ( this . options . time . round ) , o . push ( i ) , this . firstTick = null !== this . firstTick ? a . min ( this . firstTick , i ) : i , this . lastTick = null !== this . lastTick ? a . max ( this . lastTick , i ) : i } , this ) : o = t , this . labelMoments . push ( o ) } , this ) , this . options . time . min && ( this . firstTick = this . parseTime ( this . options . time . min ) ) , this . options . time . max && ( this . lastTick = this . parseTime ( this . options . time . max ) ) , this . firstTick = ( this . firstTick || a ( ) ) . clone ( ) , this . lastTick = ( this . lastTick || a ( ) ) . clone ( ) } , buildTicks : function ( a ) { this . ctx . save ( ) ; var s = e . getValueOrDefault ( this . options . ticks . fontSize , t . defaults . global . defaultFontSize ) , o = e . getValueOrDefault ( this . options . ticks . fontStyle , t . defaults . global . defaultFontStyle ) , n = e . getValueOrDefault ( this . options . ticks . fontFamily , t . defaults . global . defaultFontFamily ) , r = e . fontString ( s , o , n ) ; if ( this . ctx . font = r , this . ticks = [ ] , this . unitScale = 1 , this . scaleSizeInUnits = 0 , this . options . time . unit ) this . tickUnit = this . options . time . unit || "day" , this . displayFormat = this . options . time . displayFormats [ this . tickUnit ] , this . scaleSizeInUnits = this . lastTick . diff ( this . firstTick , this . tickUnit , ! 0 ) , this . unitScale = e . getValueOrDefault ( this . options . time . unitStepSize , 1 ) ; else { var h = this . isHorizontal ( ) ? this . width - ( this . paddingLeft + this . paddingRight ) : this . height - ( this . paddingTop + this . paddingBottom ) , l = this . tickFormatFunction ( this . firstTick , 0 , [ ] ) , c = this . ctx . measureText ( l ) . width , d = Math . cos ( e . toRadians ( this . options . ticks . maxRotation ) ) , u = Math . sin ( e . toRadians ( this . options . ticks . maxRotation ) ) ; c = c * d + s * u ; var g = h / c ; this . tickUnit = "millisecond" , this . scaleSizeInUnits = this . lastTick . diff ( this . firstTick , this . tickUnit , ! 0 ) , this . displayFormat = this . options . time . displayFormats [ this . tickUnit ] ; for ( var f = 0 , m = i . units [ f ] ; f < i . units . length ; ) { if ( this . unitScale = 1 , e . isArray ( m . steps ) && Math . ceil ( this . scaleSizeInUnits / g ) < e . max ( m . steps ) ) { for ( var p = 0 ; p < m . steps . length ; ++ p ) if ( m . steps [ p ] >= Math . ceil ( this . scaleSizeInUnits / g ) ) { this . unitScale = e . getValueOrDefault ( this . options . time . unitStepSize , m . steps [ p ] ) ; break } break } if ( m . maxStep === ! 1 || Math . ceil ( this . scaleSizeInUnits / g ) < m . maxStep ) { this . unitScale = e . getValueOrDefault ( this . options . time . unitStepSize , Math . ceil ( this . scaleSizeInUnits / g ) ) ; break } ++ f , m = i . units [ f ] , this . tickUnit = m . name , this . scaleSizeInUnits = this . lastTick . diff ( this . firstTick , this . tickUnit , ! 0 ) , this . displayFormat = this . options . time . displayFormats [ m . name ] } } var b ; this . options . time . min ? b = this . firstTick . clone ( ) . startOf ( this . tickUnit ) : ( this . firstTick . startOf ( this . tickUnit ) , b = this . firstTick ) , this . options . time . max || this . lastTick . endOf ( this . tickUnit ) , this . smallestLabelSeparation = this . width , e . each ( this . chart . data . datasets , function ( t , e ) { for ( var i = 1 ; i < this . labelMoments [ e ] . length ; i ++ ) this . smallestLabelSeparation = Math . min ( this . smallestLabelSeparation , this . labelMoments [ e ] [ i ] . diff ( this . labelMoments [ e ] [ i - 1 ] , this . tickUnit , ! 0 ) ) } , this ) , this . options . time . displayFormat && ( this . displayFormat = this . options . time . d