2016-05-14 21:50:02 +02:00
/ * !
2016-04-10 10:05:50 +02:00
* Chart . js
* http : //chartjs.org/
2017-06-30 07:17:25 +02:00
* Version : 2.6 . 0
2016-04-10 10:05:50 +02:00
*
2017-04-22 07:04:39 +02:00
* Copyright 2017 Nick Downie
2016-04-10 10:05:50 +02:00
* Released under the MIT license
2016-05-14 21:50:02 +02:00
* https : //github.com/chartjs/Chart.js/blob/master/LICENSE.md
2016-04-10 10:05:50 +02:00
* /
2017-06-30 07:17:25 +02:00
! function ( t ) { if ( "object" == typeof exports && "undefined" != typeof module ) module . exports = t ( ) ; else if ( "function" == typeof define && define . amd ) define ( [ ] , t ) ; else { var e ; e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this , e . Chart = t ( ) } } ( function ( ) { var t ; return function t ( e , n , i ) { function a ( o , s ) { if ( ! n [ o ] ) { if ( ! e [ o ] ) { var l = "function" == typeof require && require ; if ( ! s && l ) return l ( o , ! 0 ) ; if ( r ) return r ( o , ! 0 ) ; var u = new Error ( "Cannot find module '" + o + "'" ) ; throw u . code = "MODULE_NOT_FOUND" , u } var d = n [ o ] = { exports : { } } ; e [ o ] [ 0 ] . call ( d . exports , function ( t ) { var n = e [ o ] [ 1 ] [ t ] ; return a ( n ? n : t ) } , d , d . exports , t , e , n , i ) } return n [ o ] . exports } for ( var r = "function" == typeof require && require , o = 0 ; o < i . length ; o ++ ) a ( i [ o ] ) ; return a } ( { 1 : [ function ( t , e , n ) { function i ( t ) { if ( t ) { var e = /^#([a-fA-F0-9]{3})$/ , n = /^#([a-fA-F0-9]{6})$/ , i = /^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/ , a = /^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/ , r = /(\w+)/ , o = [ 0 , 0 , 0 ] , s = 1 , l = t . match ( e ) ; if ( l ) { l = l [ 1 ] ; for ( var u = 0 ; u < o . length ; u ++ ) o [ u ] = parseInt ( l [ u ] + l [ u ] , 16 ) } else if ( l = t . match ( n ) ) { l = l [ 1 ] ; for ( var u = 0 ; u < o . length ; u ++ ) o [ u ] = parseInt ( l . slice ( 2 * u , 2 * u + 2 ) , 16 ) } else if ( l = t . match ( i ) ) { for ( var u = 0 ; u < o . length ; u ++ ) o [ u ] = parseInt ( l [ u + 1 ] ) ; s = parseFloat ( l [ 4 ] ) } else if ( l = t . match ( a ) ) { for ( var u = 0 ; u < o . length ; u ++ ) o [ u ] = Math . round ( 2.55 * parseFloat ( l [ u + 1 ] ) ) ; s = parseFloat ( l [ 4 ] ) } else if ( l = t . match ( r ) ) { if ( "transparent" == l [ 1 ] ) return [ 0 , 0 , 0 , 0 ] ; if ( o = x [ l [ 1 ] ] , ! o ) return } for ( var u = 0 ; u < o . length ; u ++ ) o [ u ] = y ( o [ u ] , 0 , 255 ) ; return s = s || 0 == s ? y ( s , 0 , 1 ) : 1 , o [ 3 ] = s , o } } function a ( t ) { if ( t ) { var e = /^hsla?\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/ , n = t . match ( e ) ; if ( n ) { var i = parseFloat ( n [ 4 ] ) , a = y ( parseInt ( n [ 1 ] ) , 0 , 360 ) , r = y ( parseFloat ( n [ 2 ] ) , 0 , 100 ) , o = y ( parseFloat ( n [ 3 ] ) , 0 , 100 ) , s = y ( isNaN ( i ) ? 1 : i , 0 , 1 ) ; return [ a , r , o , s ] } } } function r ( t ) { if ( t ) { var e = /^hwb\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/ , n = t . match ( e ) ; if ( n ) { var i = parseFloat ( n [ 4 ] ) , a = y ( parseInt ( n [ 1 ] ) , 0 , 360 ) , r = y ( parseFloat ( n [ 2 ] ) , 0 , 100 ) , o = y ( parseFloat ( n [ 3 ] ) , 0 , 100 ) , s = y ( isNaN ( i ) ? 1 : i , 0 , 1 ) ; return [ a , r , o , s ] } } } function o ( t ) { var e = i ( t ) ; return e && e . slice ( 0 , 3 ) } function s ( t ) { var e = a ( t ) ; return e && e . slice ( 0 , 3 ) } function l ( t ) { var e = i ( t ) ; return e ? e [ 3 ] : ( e = a ( t ) ) ? e [ 3 ] : ( e = r ( t ) ) ? e [ 3 ] : void 0 } function u ( t ) { return "#" + b ( t [ 0 ] ) + b ( t [ 1 ] ) + b ( t [ 2 ] ) } function d ( t , e ) { return e < 1 || t [ 3 ] && t [ 3 ] < 1 ? c ( t , e ) : "rgb(" + t [ 0 ] + ", " + t [ 1 ] + ", " + t [ 2 ] + ")" } function c ( t , e ) { return void 0 === e && ( e = void 0 !== t [ 3 ] ? t [ 3 ] : 1 ) , "rgba(" + t [ 0 ] + ", " + t [ 1 ] + ", " + t [ 2 ] + ", " + e + ")" } function h ( t , e ) { if ( e < 1 || t [ 3 ] && t [ 3 ] < 1 ) return f ( t , e ) ; var n = Math . round ( t [ 0 ] / 255 * 100 ) , i = Math . round ( t [ 1 ] / 255 * 100 ) , a = Math . round ( t [ 2 ] / 255 * 100 ) ; return "rgb(" + n + "%, " + i + "%, " + a + "%)" } function f ( t , e ) { var n = Math . round ( t [ 0 ] / 255 * 100 ) , i = Math . round ( t [ 1 ] / 255 * 100 ) , a = Math . round ( t [ 2 ] / 255 * 100 ) ; return "rgba(" + n + "%, " + i + "%, " + a + "%, " + ( e || t [ 3 ] || 1 ) + ")" } function g ( t , e ) { return e < 1 || t [ 3 ] && t [ 3 ] < 1 ? p ( t , e ) : "hsl(" + t [ 0 ] + ", " + t [ 1 ] + "%, " + t [ 2 ] + "%)" } function p ( t , e ) { return void 0 === e && ( e = void 0 !== t [ 3 ] ? t [ 3 ] : 1 ) , "hsla(" + t [ 0 ] + ", " + t [ 1 ] + "%, " + t [ 2 ] + "%, " + e + ")" } function m ( t , e ) { return void 0 === e && ( e = void 0 !== t [ 3 ] ? t [ 3 ] : 1 ) , "hwb(" + t [ 0 ] + ", " + t [ 1 ] + "%, " + t [ 2 ] + "%" + ( void 0 !== e && 1 !== e ? ", " + e : "" ) + ")" } function v ( t ) { return _ [ t . slice ( 0 , 3 ) ] } function y ( t , e , n ) { return Math . min ( Math . max ( e , t ) , n ) } function b ( t ) { var e = t . toString ( 16 ) . toUpperCase ( ) ; return e . length < 2 ? "0" + e : e } var x = t ( 5 ) ; e . exports = { getRgba : i , getHsla : a , getRgb : o , getHsl : s , getHwb : r , getAlpha : l , hexString : u , rgbString : d , rgbaString : c , percentString : h , percentaString : f , hslString : g , hslaString : p , hwbString : m , keyword : v } ; var _ = { } ; for ( var k in x ) _ [ x [ k ] ] = k } , { 5 : 5 } ] , 2 : [ function ( t , e , n ) { var i = t ( 4 ) , a = t ( 1 ) , r = function ( t ) { if ( t instanceof r ) return t ; if ( ! ( this instanceof r ) ) return new r ( t ) ; this . valid = ! 1 , this . values = { rgb : [ 0 , 0 , 0 ] , hsl : [ 0 , 0 , 0 ] , hsv : [ 0 , 0 , 0 ] , hwb : [ 0 , 0 , 0 ] , cmyk : [ 0 , 0 , 0 , 0 ] , alpha : 1 } ; var e ; "string" == typeof t ? ( e = a . getRgba ( t ) , e ? this . setValues ( "rgb" , e ) : ( e = a . getHsla ( t ) ) ? this . setValues ( "hsl" , e ) : ( e = a . getHwb ( t ) ) && this . setValues ( "hwb" , e ) ) : "object" == typeof t && ( e = t , void 0 !== e . r || void 0 !== e . red ? this . setValues ( "rgb" , e ) : v
! l ( e ) ) return t ; return n = Math . min ( t . date ( ) , ot ( t . year ( ) , e ) ) , t . _d [ "set" + ( t . _isUTC ? "UTC" : "" ) + "Month" ] ( e , n ) , t } function ht ( e ) { return null != e ? ( ct ( this , e ) , t . updateOffset ( this , ! 0 ) , this ) : H ( this , "Month" ) } function ft ( ) { return ot ( this . year ( ) , this . month ( ) ) } function gt ( t ) { return this . _monthsParseExact ? ( c ( this , "_monthsRegex" ) || mt . call ( this ) , t ? this . _monthsShortStrictRegex : this . _monthsShortRegex ) : ( c ( this , "_monthsShortRegex" ) || ( this . _monthsShortRegex = xa ) , this . _monthsShortStrictRegex && t ? this . _monthsShortStrictRegex : this . _monthsShortRegex ) } function pt ( t ) { return this . _monthsParseExact ? ( c ( this , "_monthsRegex" ) || mt . call ( this ) , t ? this . _monthsStrictRegex : this . _monthsRegex ) : ( c ( this , "_monthsRegex" ) || ( this . _monthsRegex = _a ) , this . _monthsStrictRegex && t ? this . _monthsStrictRegex : this . _monthsRegex ) } function mt ( ) { function t ( t , e ) { return e . length - t . length } var e , n , i = [ ] , a = [ ] , r = [ ] ; for ( e = 0 ; e < 12 ; e ++ ) n = f ( [ 2e3 , e ] ) , i . push ( this . monthsShort ( n , "" ) ) , a . push ( this . months ( n , "" ) ) , r . push ( this . months ( n , "" ) ) , r . push ( this . monthsShort ( n , "" ) ) ; for ( i . sort ( t ) , a . sort ( t ) , r . sort ( t ) , e = 0 ; e < 12 ; e ++ ) i [ e ] = nt ( i [ e ] ) , a [ e ] = nt ( a [ e ] ) ; for ( e = 0 ; e < 24 ; e ++ ) r [ e ] = nt ( r [ e ] ) ; this . _monthsRegex = new RegExp ( "^(" + r . join ( "|" ) + ")" , "i" ) , this . _monthsShortRegex = this . _monthsRegex , this . _monthsStrictRegex = new RegExp ( "^(" + a . join ( "|" ) + ")" , "i" ) , this . _monthsShortStrictRegex = new RegExp ( "^(" + i . join ( "|" ) + ")" , "i" ) } function vt ( t ) { return yt ( t ) ? 366 : 365 } function yt ( t ) { return t % 4 === 0 && t % 100 !== 0 || t % 400 === 0 } function bt ( ) { return yt ( this . year ( ) ) } function xt ( t , e , n , i , a , r , o ) { var s = new Date ( t , e , n , i , a , r , o ) ; return t < 100 && t >= 0 && isFinite ( s . getFullYear ( ) ) && s . setFullYear ( t ) , s } function _t ( t ) { var e = new Date ( Date . UTC . apply ( null , arguments ) ) ; return t < 100 && t >= 0 && isFinite ( e . getUTCFullYear ( ) ) && e . setUTCFullYear ( t ) , e } function kt ( t , e , n ) { var i = 7 + e - n , a = ( 7 + _t ( t , 0 , i ) . getUTCDay ( ) - e ) % 7 ; return - a + i - 1 } function wt ( t , e , n , i , a ) { var r , o , s = ( 7 + n - i ) % 7 , l = kt ( t , i , a ) , u = 1 + 7 * ( e - 1 ) + s + l ; return u <= 0 ? ( r = t - 1 , o = vt ( r ) + u ) : u > vt ( t ) ? ( r = t + 1 , o = u - vt ( t ) ) : ( r = t , o = u ) , { year : r , dayOfYear : o } } function Mt ( t , e , n ) { var i , a , r = kt ( t . year ( ) , e , n ) , o = Math . floor ( ( t . dayOfYear ( ) - r - 1 ) / 7 ) + 1 ; return o < 1 ? ( a = t . year ( ) - 1 , i = o + St ( a , e , n ) ) : o > St ( t . year ( ) , e , n ) ? ( i = o - St ( t . year ( ) , e , n ) , a = t . year ( ) + 1 ) : ( a = t . year ( ) , i = o ) , { week : i , year : a } } function St ( t , e , n ) { var i = kt ( t , e , n ) , a = kt ( t + 1 , e , n ) ; return ( vt ( t ) - i + a ) / 7 } function Dt ( t ) { return Mt ( t , this . _week . dow , this . _week . doy ) . week } function Ct ( ) { return this . _week . dow } function Pt ( ) { return this . _week . doy } function Tt ( t ) { var e = this . localeData ( ) . week ( this ) ; return null == t ? e : this . add ( 7 * ( t - e ) , "d" ) } function It ( t ) { var e = Mt ( this , 1 , 4 ) . week ; return null == t ? e : this . add ( 7 * ( t - e ) , "d" ) } function At ( t , e ) { return "string" != typeof t ? t : isNaN ( t ) ? ( t = e . weekdaysParse ( t ) , "number" == typeof t ? t : null ) : parseInt ( t , 10 ) } function Ft ( t , e ) { return "string" == typeof t ? e . weekdaysParse ( t ) % 7 || 7 : isNaN ( t ) ? null : t } function Ot ( t , e ) { return t ? a ( this . _weekdays ) ? this . _weekdays [ t . day ( ) ] : this . _weekdays [ this . _weekdays . isFormat . test ( e ) ? "format" : "standalone" ] [ t . day ( ) ] : a ( this . _weekdays ) ? this . _weekdays : this . _weekdays . standalone } function Rt ( t ) { return t ? this . _weekdaysShort [ t . day ( ) ] : this . _weekdaysShort } function Lt ( t ) { return t ? this . _weekdaysMin [ t . day ( ) ] : this . _weekdaysMin } function Vt ( t , e , n ) { var i , a , r , o = t . toLocaleLowerCase ( ) ; if ( ! this . _weekdaysParse ) for ( this . _weekdaysParse = [ ] , this . _shortWeekdaysParse = [ ] , this . _minWeekdaysParse = [ ] , i = 0 ; i < 7 ; ++ i ) r = f ( [ 2e3 , 1 ] ) . day ( i ) , this . _minWeekdaysParse [ i ] = this . weekdaysMin ( r , "" ) . toLocaleLowerCase ( ) , this . _shortWeekdaysParse [ i ] = this . weekdaysShort ( r , "" ) . toLocaleLowerCase ( ) , this . _weekdaysParse [ i ] = this . weekdays ( r , "" ) . toLocaleLowerCase ( ) ; return n ? "dddd" === e ? ( a = ma . call ( this . _weekdaysParse , o ) , a !== - 1 ? a : null ) : "ddd" === e ? ( a = ma . call ( this . _shortWeekdaysParse , o ) , a !== - 1 ? a : null ) : ( a = ma . call ( this . _minWeekdaysParse , o ) , a !== - 1 ? a : null ) : "dddd" === e ? ( a = ma . call ( this . _weekdaysParse , o ) , a !== - 1 ? a : ( a = ma . call ( this . _shortWeekdaysParse , o ) , a !== - 1 ? a : ( a = ma . call ( this . _minWeekdaysParse , o ) , a !== - 1 ? a : null ) ) ) : "ddd" === e ? ( a = ma . call ( this . _shortWeekdaysParse , o ) , a !== - 1 ? a : ( a = ma . call ( this . _weekdaysParse , o ) , a !== - 1 ? a : ( a = ma . call ( this . _minWeekdaysParse , o ) , a !== - 1 ? a : null ) ) ) : ( a = ma . call ( this . _minWeekdaysParse , o ) , a !== - 1 ? a : ( a = ma . call ( this . _weekdaysParse , o ) , a !== - 1 ? a : ( a = ma . call ( this . _shortWeekdaysParse , o ) , a !== - 1 ?
} ) , at ( [ "d" , "e" , "E" ] , function ( t , e , n , i ) { e [ i ] = k ( t ) } ) ; var Ma = "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday" . split ( "_" ) , Sa = "Sun_Mon_Tue_Wed_Thu_Fri_Sat" . split ( "_" ) , Da = "Su_Mo_Tu_We_Th_Fr_Sa" . split ( "_" ) , Ca = aa , Pa = aa , Ta = aa ; Z ( "H" , [ "HH" , 2 ] , 0 , "hour" ) , Z ( "h" , [ "hh" , 2 ] , 0 , Ut ) , Z ( "k" , [ "kk" , 2 ] , 0 , Gt ) , Z ( "hmm" , 0 , 0 , function ( ) { return "" + Ut . apply ( this ) + q ( this . minutes ( ) , 2 ) } ) , Z ( "hmmss" , 0 , 0 , function ( ) { return "" + Ut . apply ( this ) + q ( this . minutes ( ) , 2 ) + q ( this . seconds ( ) , 2 ) } ) , Z ( "Hmm" , 0 , 0 , function ( ) { return "" + this . hours ( ) + q ( this . minutes ( ) , 2 ) } ) , Z ( "Hmmss" , 0 , 0 , function ( ) { return "" + this . hours ( ) + q ( this . minutes ( ) , 2 ) + q ( this . seconds ( ) , 2 ) } ) , qt ( "a" , ! 0 ) , qt ( "A" , ! 1 ) , W ( "hour" , "h" ) , N ( "hour" , 13 ) , $ ( "a" , Zt ) , $ ( "A" , Zt ) , $ ( "H" , qi ) , $ ( "h" , qi ) , $ ( "k" , qi ) , $ ( "HH" , qi , Hi ) , $ ( "hh" , qi , Hi ) , $ ( "kk" , qi , Hi ) , $ ( "hmm" , Zi ) , $ ( "hmmss" , Xi ) , $ ( "Hmm" , Zi ) , $ ( "Hmmss" , Xi ) , it ( [ "H" , "HH" ] , da ) , it ( [ "k" , "kk" ] , function ( t , e , n ) { var i = k ( t ) ; e [ da ] = 24 === i ? 0 : i } ) , it ( [ "a" , "A" ] , function ( t , e , n ) { n . _isPm = n . _locale . isPM ( t ) , n . _meridiem = t } ) , it ( [ "h" , "hh" ] , function ( t , e , n ) { e [ da ] = k ( t ) , p ( n ) . bigHour = ! 0 } ) , it ( "hmm" , function ( t , e , n ) { var i = t . length - 2 ; e [ da ] = k ( t . substr ( 0 , i ) ) , e [ ca ] = k ( t . substr ( i ) ) , p ( n ) . bigHour = ! 0 } ) , it ( "hmmss" , function ( t , e , n ) { var i = t . length - 4 , a = t . length - 2 ; e [ da ] = k ( t . substr ( 0 , i ) ) , e [ ca ] = k ( t . substr ( i , 2 ) ) , e [ ha ] = k ( t . substr ( a ) ) , p ( n ) . bigHour = ! 0 } ) , it ( "Hmm" , function ( t , e , n ) { var i = t . length - 2 ; e [ da ] = k ( t . substr ( 0 , i ) ) , e [ ca ] = k ( t . substr ( i ) ) } ) , it ( "Hmmss" , function ( t , e , n ) { var i = t . length - 4 , a = t . length - 2 ; e [ da ] = k ( t . substr ( 0 , i ) ) , e [ ca ] = k ( t . substr ( i , 2 ) ) , e [ ha ] = k ( t . substr ( a ) ) } ) ; var Ia , Aa = /[ap]\.?m?\.?/i , Fa = E ( "Hours" , ! 0 ) , Oa = { calendar : Ii , longDateFormat : Ai , invalidDate : Fi , ordinal : Oi , dayOfMonthOrdinalParse : Ri , relativeTime : Li , months : ya , monthsShort : ba , week : wa , weekdays : Ma , weekdaysMin : Da , weekdaysShort : Sa , meridiemParse : Aa } , Ra = { } , La = { } , Va = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/ , Wa = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/ , Ya = /Z|[+-]\d\d(?::?\d\d)?/ , za = [ [ "YYYYYY-MM-DD" , /[+-]\d{6}-\d\d-\d\d/ ] , [ "YYYY-MM-DD" , /\d{4}-\d\d-\d\d/ ] , [ "GGGG-[W]WW-E" , /\d{4}-W\d\d-\d/ ] , [ "GGGG-[W]WW" , /\d{4}-W\d\d/ , ! 1 ] , [ "YYYY-DDD" , /\d{4}-\d{3}/ ] , [ "YYYY-MM" , /\d{4}-\d\d/ , ! 1 ] , [ "YYYYYYMMDD" , /[+-]\d{10}/ ] , [ "YYYYMMDD" , /\d{8}/ ] , [ "GGGG[W]WWE" , /\d{4}W\d{3}/ ] , [ "GGGG[W]WW" , /\d{4}W\d{2}/ , ! 1 ] , [ "YYYYDDD" , /\d{7}/ ] ] , Na = [ [ "HH:mm:ss.SSSS" , /\d\d:\d\d:\d\d\.\d+/ ] , [ "HH:mm:ss,SSSS" , /\d\d:\d\d:\d\d,\d+/ ] , [ "HH:mm:ss" , /\d\d:\d\d:\d\d/ ] , [ "HH:mm" , /\d\d:\d\d/ ] , [ "HHmmss.SSSS" , /\d\d\d\d\d\d\.\d+/ ] , [ "HHmmss,SSSS" , /\d\d\d\d\d\d,\d+/ ] , [ "HHmmss" , /\d\d\d\d\d\d/ ] , [ "HHmm" , /\d\d\d\d/ ] , [ "HH" , /\d\d/ ] ] , Ba = /^\/?Date\((\-?\d+)/i , Ea = /^((?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d?\d\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(?:\d\d)?\d\d\s)(\d\d:\d\d)(\:\d\d)?(\s(?:UT|GMT|[ECMP][SD]T|[A-IK-Za-ik-z]|[+-]\d{4}))$/ ; t . createFromInputFallback = S ( "value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info." , function ( t ) { t . _d = new Date ( t . _i + ( t . _useUTC ? " UTC" : "" ) ) } ) , t . ISO _8601 = function ( ) { } , t . RFC _2822 = function ( ) { } ; var Ha = S ( "moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/" , function ( ) { var t = _e . apply ( null , arguments ) ; return this . isValid ( ) && t . isValid ( ) ? t < this ? this : t : v ( ) } ) , ja = S ( "moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/" , function ( ) { var t = _e . apply ( null , arguments ) ; return this . isValid ( ) && t . isValid ( ) ? t > this ? this : t : v ( ) } ) , Ua = function ( ) { return Date . now ? Date . now ( ) : + new Date } , Ga = [ "year" , "quarter" , "month" , "week" , "day" , "hour" , "minute" , "second" , "millisecond" ] ; Ae ( "Z" , ":" ) , Ae ( "ZZ" , "" ) , $ ( "Z" , na ) , $ ( "ZZ" , na ) , it ( [ "Z" , "ZZ" ] , function ( t , e , n ) { n . _useUTC = ! 0 , n . _tzm = Fe ( na , t ) } ) ; var qa = /([\+\-]|\d\d)/gi ; t . updateOffset = function ( ) { } ; var Za = /^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/ , Xa =
return "" } , label : function ( t , e ) { return e . labels [ t . index ] + ": " + t . yLabel } } } } , t . controllers . polarArea = t . DatasetController . extend ( { dataElementType : t . elements . Arc , linkScales : e . noop , update : function ( t ) { var n = this , i = n . chart , a = i . chartArea , r = n . getMeta ( ) , o = i . options , s = o . elements . arc , l = Math . min ( a . right - a . left , a . bottom - a . top ) ; i . outerRadius = Math . max ( ( l - s . borderWidth / 2 ) / 2 , 0 ) , i . innerRadius = Math . max ( o . cutoutPercentage ? i . outerRadius / 100 * o . cutoutPercentage : 1 , 0 ) , i . radiusLength = ( i . outerRadius - i . innerRadius ) / i . getVisibleDatasetCount ( ) , n . outerRadius = i . outerRadius - i . radiusLength * n . index , n . innerRadius = n . outerRadius - i . radiusLength , r . count = n . countVisibleElements ( ) , e . each ( r . data , function ( e , i ) { n . updateElement ( e , i , t ) } ) } , updateElement : function ( t , n , i ) { for ( var a = this , r = a . chart , o = a . getDataset ( ) , s = r . options , l = s . animation , u = r . scale , d = e . getValueAtIndexOrDefault , c = r . data . labels , h = a . calculateCircumference ( o . data [ n ] ) , f = u . xCenter , g = u . yCenter , p = 0 , m = a . getMeta ( ) , v = 0 ; v < n ; ++ v ) isNaN ( o . data [ v ] ) || m . data [ v ] . hidden || ++ p ; var y = s . startAngle , b = t . hidden ? 0 : u . getDistanceFromCenterForValue ( o . data [ n ] ) , x = y + h * p , _ = x + ( t . hidden ? 0 : h ) , k = l . animateScale ? 0 : u . getDistanceFromCenterForValue ( o . data [ n ] ) ; e . extend ( t , { _datasetIndex : a . index , _index : n , _scale : u , _model : { x : f , y : g , innerRadius : 0 , outerRadius : i ? k : b , startAngle : i && l . animateRotate ? y : x , endAngle : i && l . animateRotate ? y : _ , label : d ( c , n , c [ n ] ) } } ) , a . removeHoverStyle ( t ) , t . pivot ( ) } , removeHoverStyle : function ( e ) { t . DatasetController . prototype . removeHoverStyle . call ( this , e , this . chart . options . elements . arc ) } , countVisibleElements : function ( ) { var t = this . getDataset ( ) , n = this . getMeta ( ) , i = 0 ; return e . each ( n . data , function ( e , n ) { isNaN ( t . data [ n ] ) || e . hidden || i ++ } ) , i } , calculateCircumference : function ( t ) { var e = this . getMeta ( ) . count ; return e > 0 && ! isNaN ( t ) ? 2 * Math . PI / e : 0 } } ) } } , { } ] , 20 : [ function ( t , e , n ) { "use strict" ; e . exports = function ( t ) { var e = t . helpers ; t . defaults . radar = { aspectRatio : 1 , scale : { type : "radialLinear" } , elements : { line : { tension : 0 } } } , t . controllers . radar = t . DatasetController . extend ( { datasetElementType : t . elements . Line , dataElementType : t . elements . Point , linkScales : e . noop , update : function ( t ) { var n = this , i = n . getMeta ( ) , a = i . dataset , r = i . data , o = a . custom || { } , s = n . getDataset ( ) , l = n . chart . options . elements . line , u = n . chart . scale ; void 0 !== s . tension && void 0 === s . lineTension && ( s . lineTension = s . tension ) , e . extend ( i . dataset , { _datasetIndex : n . index , _scale : u , _children : r , _loop : ! 0 , _model : { tension : o . tension ? o . tension : e . getValueOrDefault ( s . lineTension , l . tension ) , backgroundColor : o . backgroundColor ? o . backgroundColor : s . backgroundColor || l . backgroundColor , borderWidth : o . borderWidth ? o . borderWidth : s . borderWidth || l . borderWidth , borderColor : o . borderColor ? o . borderColor : s . borderColor || l . borderColor , fill : o . fill ? o . fill : void 0 !== s . fill ? s . fill : l . fill , borderCapStyle : o . borderCapStyle ? o . borderCapStyle : s . borderCapStyle || l . borderCapStyle , borderDash : o . borderDash ? o . borderDash : s . borderDash || l . borderDash , borderDashOffset : o . borderDashOffset ? o . borderDashOffset : s . borderDashOffset || l . borderDashOffset , borderJoinStyle : o . borderJoinStyle ? o . borderJoinStyle : s . borderJoinStyle || l . borderJoinStyle } } ) , i . dataset . pivot ( ) , e . each ( r , function ( e , i ) { n . updateElement ( e , i , t ) } , n ) , n . updateBezierControlPoints ( ) } , updateElement : function ( t , n , i ) { var a = this , r = t . custom || { } , o = a . getDataset ( ) , s = a . chart . scale , l = a . chart . options . elements . point , u = s . getPointPositionForValue ( n , o . data [ n ] ) ; void 0 !== o . radius && void 0 === o . pointRadius && ( o . pointRadius = o . radius ) , void 0 !== o . hitRadius && void 0 === o . pointHitRadius && ( o . pointHitRadius = o . hitRadius ) , e . extend ( t , { _datasetIndex : a . index , _index : n , _scale : s , _model : { x : i ? s . xCenter : u . x , y : i ? s . yCenter : u . y , tension : r . tension ? r . tension : e . getValueOrDefault ( o . lineTension , a . chart . options . elements . line . tension ) , radius : r . radius ? r . radius : e . getValueAtIndexOrDefault ( o . pointRadius , n , l . radius ) , backgroundColor : r . backgroundColor ? r . backgroundColor : e . getValueAtIndexOrDefault ( o . pointBackgroundColor , n , l . backgroundColor ) , borderColor : r . borderColor ? r . borderColor : e . getValueAtIndexOrDefault ( o . pointBorderColor , n , l . borderColor ) , borderWidth : r . borderWidth ? r . borderWidth : e . getValueAtIndexOrDefault ( o . pointBorderWidth , n , l . borderWidth ) , pointStyle : r . pointStyle ? r . pointStyle : e . getValueAtIndexOrDefault
return ( t /= . 5 ) < 1 ? . 5 * ( t * t * ( ( ( e *= 1.525 ) + 1 ) * t - e ) ) : . 5 * ( ( t -= 2 ) * t * ( ( ( e *= 1.525 ) + 1 ) * t + e ) + 2 ) } , easeInBounce : function ( t ) { return 1 - o . easeOutBounce ( 1 - t ) } , easeOutBounce : function ( t ) { return ( t /= 1 ) < 1 / 2.75 ? 1 * ( 7.5625 * t * t ) : t < 2 / 2.75 ? 1 * ( 7.5625 * ( t -= 1.5 / 2.75 ) * t + . 75 ) : t < 2.5 / 2.75 ? 1 * ( 7.5625 * ( t -= 2.25 / 2.75 ) * t + . 9375 ) : 1 * ( 7.5625 * ( t -= 2.625 / 2.75 ) * t + . 984375 ) } , easeInOutBounce : function ( t ) { return t < . 5 ? . 5 * o . easeInBounce ( 2 * t ) : . 5 * o . easeOutBounce ( 2 * t - 1 ) + . 5 } } ; r . requestAnimFrame = function ( ) { return "undefined" == typeof window ? function ( t ) { t ( ) } : window . requestAnimationFrame || window . webkitRequestAnimationFrame || window . mozRequestAnimationFrame || window . oRequestAnimationFrame || window . msRequestAnimationFrame || function ( t ) { return window . setTimeout ( t , 1e3 / 60 ) } } ( ) , r . getRelativePosition = function ( t , e ) { var n , i , a = t . originalEvent || t , o = t . currentTarget || t . srcElement , s = o . getBoundingClientRect ( ) , l = a . touches ; l && l . length > 0 ? ( n = l [ 0 ] . clientX , i = l [ 0 ] . clientY ) : ( n = a . clientX , i = a . clientY ) ; var u = parseFloat ( r . getStyle ( o , "padding-left" ) ) , d = parseFloat ( r . getStyle ( o , "padding-top" ) ) , c = parseFloat ( r . getStyle ( o , "padding-right" ) ) , h = parseFloat ( r . getStyle ( o , "padding-bottom" ) ) , f = s . right - s . left - u - c , g = s . bottom - s . top - d - h ; return n = Math . round ( ( n - s . left - u ) / f * o . width / e . currentDevicePixelRatio ) , i = Math . round ( ( i - s . top - d ) / g * o . height / e . currentDevicePixelRatio ) , { x : n , y : i } } , r . addEvent = function ( t , e , n ) { t . addEventListener ? t . addEventListener ( e , n ) : t . attachEvent ? t . attachEvent ( "on" + e , n ) : t [ "on" + e ] = n } , r . removeEvent = function ( t , e , n ) { t . removeEventListener ? t . removeEventListener ( e , n , ! 1 ) : t . detachEvent ? t . detachEvent ( "on" + e , n ) : t [ "on" + e ] = r . noop } , r . getConstraintWidth = function ( t ) { return a ( t , "max-width" , "clientWidth" ) } , r . getConstraintHeight = function ( t ) { return a ( t , "max-height" , "clientHeight" ) } , r . getMaximumWidth = function ( t ) { var e = t . parentNode , n = parseInt ( r . getStyle ( e , "padding-left" ) , 10 ) , i = parseInt ( r . getStyle ( e , "padding-right" ) , 10 ) , a = e . clientWidth - n - i , o = r . getConstraintWidth ( t ) ; return isNaN ( o ) ? a : Math . min ( a , o ) } , r . getMaximumHeight = function ( t ) { var e = t . parentNode , n = parseInt ( r . getStyle ( e , "padding-top" ) , 10 ) , i = parseInt ( r . getStyle ( e , "padding-bottom" ) , 10 ) , a = e . clientHeight - n - i , o = r . getConstraintHeight ( t ) ; return isNaN ( o ) ? a : Math . min ( a , o ) } , r . getStyle = function ( t , e ) { return t . currentStyle ? t . currentStyle [ e ] : document . defaultView . getComputedStyle ( t , null ) . getPropertyValue ( e ) } , r . retinaScale = function ( t ) { var e = t . currentDevicePixelRatio = window . devicePixelRatio || 1 ; if ( 1 !== e ) { var n = t . canvas , i = t . height , a = t . width ; n . height = i * e , n . width = a * e , t . ctx . scale ( e , e ) , n . style . height = i + "px" , n . style . width = a + "px" } } , r . clear = function ( t ) { t . ctx . clearRect ( 0 , 0 , t . width , t . height ) } , r . fontString = function ( t , e , n ) { return e + " " + t + "px " + n } , r . longestText = function ( t , e , n , i ) { i = i || { } ; var a = i . data = i . data || { } , o = i . garbageCollect = i . garbageCollect || [ ] ; i . font !== e && ( a = i . data = { } , o = i . garbageCollect = [ ] , i . font = e ) , t . font = e ; var s = 0 ; r . each ( n , function ( e ) { void 0 !== e && null !== e && r . isArray ( e ) !== ! 0 ? s = r . measureText ( t , a , o , s , e ) : r . isArray ( e ) && r . each ( e , function ( e ) { void 0 === e || null === e || r . isArray ( e ) || ( s = r . measureText ( t , a , o , s , e ) ) } ) } ) ; var l = o . length / 2 ; if ( l > n . length ) { for ( var u = 0 ; u < l ; u ++ ) delete a [ o [ u ] ] ; o . splice ( 0 , l ) } return s } , r . measureText = function ( t , e , n , i , a ) { var r = e [ a ] ; return r || ( r = e [ a ] = t . measureText ( a ) . width , n . push ( a ) ) , r > i && ( i = r ) , i } , r . numberOfLabelLines = function ( t ) { var e = 1 ; return r . each ( t , function ( t ) { r . isArray ( t ) && t . length > e && ( e = t . length ) } ) , e } , r . drawRoundedRectangle = function ( t , e , n , i , a , r ) { t . beginPath ( ) , t . moveTo ( e + r , n ) , t . lineTo ( e + i - r , n ) , t . quadraticCurveTo ( e + i , n , e + i , n + r ) , t . lineTo ( e + i , n + a - r ) , t . quadraticCurveTo ( e + i , n + a , e + i - r , n + a ) , t . lineTo ( e + r , n + a ) , t . quadraticCurveTo ( e , n + a , e , n + a - r ) , t . lineTo ( e , n + r ) , t . quadraticCurveTo ( e , n , e + r , n ) , t . closePath ( ) } , r . color = i ? function ( e ) { return e instanceof CanvasGradient && ( e = t . defaults . global . defaultColor ) , i ( e ) } : function ( t ) { return console . error ( "Color.js not found!" ) , t } , r . isArray = Array . isArray ? function ( t ) { return Array . isArray ( t ) } : function ( t ) { return "[object Array]" === Object . prototype . toString . call ( t ) } , r . arrayEquals = function ( t , e ) { var n , i , a , o ; if ( ! t || ! e || t . length !== e . length ) return ! 1 ; for ( n = 0 , i = t . length ; n < i ; ++ n ) if ( a = t [ n ] , o = e [ n ] , a instanceof Array && o instanceof Array ) { if ( ! r . arrayEquals ( a , o ) ) return ! 1 } else if ( a !== o ) return ! 1 ; return ! 0 } , r . c
"center" === s && "right" === o && this . drawCaret ( t , a ) , i . lineTo ( l + d , u + c - h ) , i . quadraticCurveTo ( l + d , u + c , l + d - h , u + c ) , "bottom" === s && this . drawCaret ( t , a ) , i . lineTo ( l + h , u + c ) , i . quadraticCurveTo ( l , u + c , l , u + c - h ) , "center" === s && "left" === o && this . drawCaret ( t , a ) , i . lineTo ( l , u + h ) , i . quadraticCurveTo ( l , u , l + h , u ) , i . closePath ( ) , i . fill ( ) , n . borderWidth > 0 && i . stroke ( ) } , draw : function ( ) { var t = this . _chart . ctx , e = this . _view ; if ( 0 !== e . opacity ) { var n = { width : e . width , height : e . height } , i = { x : e . x , y : e . y } , a = Math . abs ( e . opacity < . 001 ) ? 0 : e . opacity , r = e . title . length || e . beforeBody . length || e . body . length || e . afterBody . length || e . footer . length ; this . _options . enabled && r && ( this . drawBackground ( i , e , t , n , a ) , i . x += e . xPadding , i . y += e . yPadding , this . drawTitle ( i , e , t , a ) , this . drawBody ( i , e , t , a ) , this . drawFooter ( i , e , t , a ) ) } } , handleEvent : function ( t ) { var e = this , n = e . _options , i = ! 1 ; if ( e . _lastActive = e . _lastActive || [ ] , "mouseout" === t . type ? e . _active = [ ] : e . _active = e . _chart . getElementsAtEventForMode ( t , n . mode , n ) , i = ! l . arrayEquals ( e . _active , e . _lastActive ) , ! i ) return ! 1 ; if ( e . _lastActive = e . _active , n . enabled || n . custom ) { e . _eventPosition = { x : t . x , y : t . y } ; var a = e . _model ; e . update ( ! 0 ) , e . pivot ( ) , i |= a . x !== e . _model . x || a . y !== e . _model . y } return i } } ) , t . Tooltip . positioners = { average : function ( t ) { if ( ! t . length ) return ! 1 ; var e , n , i = 0 , a = 0 , r = 0 ; for ( e = 0 , n = t . length ; e < n ; ++ e ) { var o = t [ e ] ; if ( o && o . hasValue ( ) ) { var s = o . tooltipPosition ( ) ; i += s . x , a += s . y , ++ r } } return { x : Math . round ( i / r ) , y : Math . round ( a / r ) } } , nearest : function ( t , e ) { var n , i , a , r = e . x , o = e . y , s = Number . POSITIVE _INFINITY ; for ( i = 0 , a = t . length ; i < a ; ++ i ) { var u = t [ i ] ; if ( u && u . hasValue ( ) ) { var d = u . getCenterPoint ( ) , c = l . distanceBetweenPoints ( e , d ) ; c < s && ( s = c , n = u ) } } if ( n ) { var h = n . tooltipPosition ( ) ; r = h . x , o = h . y } return { x : r , y : o } } } } } , { } ] , 35 : [ function ( t , e , n ) { "use strict" ; e . exports = function ( t ) { var e = t . helpers , n = t . defaults . global ; n . elements . arc = { backgroundColor : n . defaultColor , borderColor : "#fff" , borderWidth : 2 } , t . elements . Arc = t . Element . extend ( { inLabelRange : function ( t ) { var e = this . _view ; return ! ! e && Math . pow ( t - e . x , 2 ) < Math . pow ( e . radius + e . hoverRadius , 2 ) } , inRange : function ( t , n ) { var i = this . _view ; if ( i ) { for ( var a = e . getAngleFromPoint ( i , { x : t , y : n } ) , r = a . angle , o = a . distance , s = i . startAngle , l = i . endAngle ; l < s ; ) l += 2 * Math . PI ; for ( ; r > l ; ) r -= 2 * Math . PI ; for ( ; r < s ; ) r += 2 * Math . PI ; var u = r >= s && r <= l , d = o >= i . innerRadius && o <= i . outerRadius ; return u && d } return ! 1 } , getCenterPoint : function ( ) { var t = this . _view , e = ( t . startAngle + t . endAngle ) / 2 , n = ( t . innerRadius + t . outerRadius ) / 2 ; return { x : t . x + Math . cos ( e ) * n , y : t . y + Math . sin ( e ) * n } } , getArea : function ( ) { var t = this . _view ; return Math . PI * ( ( t . endAngle - t . startAngle ) / ( 2 * Math . PI ) ) * ( Math . pow ( t . outerRadius , 2 ) - Math . pow ( t . innerRadius , 2 ) ) } , tooltipPosition : function ( ) { var t = this . _view , e = t . startAngle + ( t . endAngle - t . startAngle ) / 2 , n = ( t . outerRadius - t . innerRadius ) / 2 + t . innerRadius ; return { x : t . x + Math . cos ( e ) * n , y : t . y + Math . sin ( e ) * n } } , draw : function ( ) { var t = this . _chart . ctx , e = this . _view , n = e . startAngle , i = e . endAngle ; t . beginPath ( ) , t . arc ( e . x , e . y , e . outerRadius , n , i ) , t . arc ( e . x , e . y , e . innerRadius , i , n , ! 0 ) , t . closePath ( ) , t . strokeStyle = e . borderColor , t . lineWidth = e . borderWidth , t . fillStyle = e . backgroundColor , t . fill ( ) , t . lineJoin = "bevel" , e . borderWidth && t . stroke ( ) } } ) } } , { } ] , 36 : [ function ( t , e , n ) { "use strict" ; e . exports = function ( t ) { var e = t . helpers , n = t . defaults . global ; t . defaults . global . elements . line = { tension : . 4 , backgroundColor : n . defaultColor , borderWidth : 3 , borderColor : n . defaultColor , borderCapStyle : "butt" , borderDash : [ ] , borderDashOffset : 0 , borderJoinStyle : "miter" , capBezierPoints : ! 0 , fill : ! 0 } , t . elements . Line = t . Element . extend ( { draw : function ( ) { var t , i , a , r , o = this , s = o . _view , l = o . _chart . ctx , u = s . spanGaps , d = o . _children . slice ( ) , c = n . elements . line , h = - 1 ; for ( o . _loop && d . length && d . push ( d [ 0 ] ) , l . save ( ) , l . lineCap = s . borderCapStyle || c . borderCapStyle , l . setLineDash && l . setLineDash ( s . borderDash || c . borderDash ) , l . lineDashOffset = s . borderDashOffset || c . borderDashOffset , l . lineJoin = s . borderJoinStyle || c . borderJoinStyle , l . lineWidth = s . borderWidth || c . borderWidth , l . strokeStyle = s . borderColor || n . defaultColor , l . beginPath ( ) , h = - 1 , t = 0 ; t < d . length ; ++ t ) i = d [ t ] , a = e . previousItem ( d , t ) , r = i . _view , 0 === t ? r . skip || ( l . moveTo ( r . x , r . y ) , h = t ) : ( a = h === - 1 ? a : d [ h ] , r . skip || ( h !== t - 1 && ! u || h === - 1 ? l . moveTo ( r . x , r . y ) : e . canvas . lineTo ( l , a . _view , i . _view ) , h = t ) ) ; l . stroke ( ) , l . resto
r . closePath ( ) , r . stroke ( ) ; else { var o = e ( t ) ; if ( 0 === o ) return ; r . beginPath ( ) ; var s = t . getPointPosition ( 0 , i ) ; r . moveTo ( s . x , s . y ) ; for ( var l = 1 ; l < o ; l ++ ) s = t . getPointPosition ( l , i ) , r . lineTo ( s . x , s . y ) ; r . closePath ( ) , r . stroke ( ) } } function h ( t ) { return f . isNumber ( t ) ? t : 0 } var f = t . helpers , g = t . defaults . global , p = { display : ! 0 , animate : ! 0 , position : "chartArea" , angleLines : { display : ! 0 , color : "rgba(0, 0, 0, 0.1)" , lineWidth : 1 } , gridLines : { circular : ! 1 } , ticks : { showLabelBackdrop : ! 0 , backdropColor : "rgba(255,255,255,0.75)" , backdropPaddingY : 2 , backdropPaddingX : 2 , callback : t . Ticks . formatters . linear } , pointLabels : { display : ! 0 , fontSize : 10 , callback : function ( t ) { return t } } } , m = t . LinearScaleBase . extend ( { setDimensions : function ( ) { var t = this , e = t . options , n = e . ticks ; t . width = t . maxWidth , t . height = t . maxHeight , t . xCenter = Math . round ( t . width / 2 ) , t . yCenter = Math . round ( t . height / 2 ) ; var i = f . min ( [ t . height , t . width ] ) , a = f . getValueOrDefault ( n . fontSize , g . defaultFontSize ) ; t . drawingArea = e . display ? i / 2 - ( a / 2 + n . backdropPaddingY ) : i / 2 } , determineDataLimits : function ( ) { var t = this , e = t . chart , n = Number . POSITIVE _INFINITY , i = Number . NEGATIVE _INFINITY ; f . each ( e . data . datasets , function ( a , r ) { if ( e . isDatasetVisible ( r ) ) { var o = e . getDatasetMeta ( r ) ; f . each ( a . data , function ( e , a ) { var r = + t . getRightValue ( e ) ; isNaN ( r ) || o . data [ a ] . hidden || ( n = Math . min ( r , n ) , i = Math . max ( r , i ) ) } ) } } ) , t . min = n === Number . POSITIVE _INFINITY ? 0 : n , t . max = i === Number . NEGATIVE _INFINITY ? 0 : i , t . handleTickRangeOptions ( ) } , getTickLimit : function ( ) { var t = this . options . ticks , e = f . getValueOrDefault ( t . fontSize , g . defaultFontSize ) ; return Math . min ( t . maxTicksLimit ? t . maxTicksLimit : 11 , Math . ceil ( this . drawingArea / ( 1.5 * e ) ) ) } , convertTicksToLabels : function ( ) { var e = this ; t . LinearScaleBase . prototype . convertTicksToLabels . call ( e ) , e . pointLabels = e . chart . data . labels . map ( e . options . pointLabels . callback , e ) } , getLabelForIndex : function ( t , e ) { return + this . getRightValue ( this . chart . data . datasets [ e ] . data [ t ] ) } , fit : function ( ) { this . options . pointLabels . display ? r ( this ) : o ( this ) } , setReductions : function ( t , e , n ) { var i = this , a = e . l / Math . sin ( n . l ) , r = Math . max ( e . r - i . width , 0 ) / Math . sin ( n . r ) , o = - e . t / Math . cos ( n . t ) , s = - Math . max ( e . b - i . height , 0 ) / Math . cos ( n . b ) ; a = h ( a ) , r = h ( r ) , o = h ( o ) , s = h ( s ) , i . drawingArea = Math . min ( Math . round ( t - ( a + r ) / 2 ) , Math . round ( t - ( o + s ) / 2 ) ) , i . setCenterPoint ( a , r , o , s ) } , setCenterPoint : function ( t , e , n , i ) { var a = this , r = a . width - e - a . drawingArea , o = t + a . drawingArea , s = n + a . drawingArea , l = a . height - i - a . drawingArea ; a . xCenter = Math . round ( ( o + r ) / 2 + a . left ) , a . yCenter = Math . round ( ( s + l ) / 2 + a . top ) } , getIndexAngle : function ( t ) { var n = 2 * Math . PI / e ( this ) , i = this . chart . options && this . chart . options . startAngle ? this . chart . options . startAngle : 0 , a = i * Math . PI * 2 / 360 ; return t * n + a } , getDistanceFromCenterForValue : function ( t ) { var e = this ; if ( null === t ) return 0 ; var n = e . drawingArea / ( e . max - e . min ) ; return e . options . reverse ? ( e . max - t ) * n : ( t - e . min ) * n } , getPointPosition : function ( t , e ) { var n = this , i = n . getIndexAngle ( t ) - Math . PI / 2 ; return { x : Math . round ( Math . cos ( i ) * e ) + n . xCenter , y : Math . round ( Math . sin ( i ) * e ) + n . yCenter } } , getPointPositionForValue : function ( t , e ) { return this . getPointPosition ( t , this . getDistanceFromCenterForValue ( e ) ) } , getBasePosition : function ( ) { var t = this , e = t . min , n = t . max ; return t . getPointPositionForValue ( 0 , t . beginAtZero ? 0 : e < 0 && n < 0 ? n : e > 0 && n > 0 ? e : 0 ) } , draw : function ( ) { var t = this , e = t . options , n = e . gridLines , i = e . ticks , a = f . getValueOrDefault ; if ( e . display ) { var r = t . ctx , o = a ( i . fontSize , g . defaultFontSize ) , s = a ( i . fontStyle , g . defaultFontStyle ) , l = a ( i . fontFamily , g . defaultFontFamily ) , u = f . fontString ( o , s , l ) ; f . each ( t . ticks , function ( s , l ) { if ( l > 0 || e . reverse ) { var d = t . getDistanceFromCenterForValue ( t . ticksAsNumbers [ l ] ) , h = t . yCenter - d ; if ( n . display && 0 !== l && c ( t , n , d , l ) , i . display ) { var f = a ( i . fontColor , g . defaultFontColor ) ; if ( r . font = u , i . showLabelBackdrop ) { var p = r . measureText ( s ) . width ; r . fillStyle = i . backdropColor , r . fillRect ( t . xCenter - p / 2 - i . backdropPaddingX , h - o / 2 - i . backdropPaddingY , p + 2 * i . backdropPaddingX , o + 2 * i . backdropPaddingY ) } r . textAlign = "center" , r . textBaseline = "middle" , r . fillStyle = f , r . fillText ( s , t . xCenter , h ) } } } ) , ( e . angleLines . display || e . pointLabels . display ) && d ( t ) } } } ) ; t . scaleService . registerScaleType ( "radialLinear" , m , p ) } } , { } ] , 49 : [ function ( t , e , n ) { "use strict" ; var i = t ( 6 ) ; i = "function" == typeof i ? i : window . moment , e . exports = function ( t ) { function e ( t