@zenvor/hls.js 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/LICENSE +28 -0
  2. package/README.md +472 -0
  3. package/dist/hls-demo.js +26995 -0
  4. package/dist/hls-demo.js.map +1 -0
  5. package/dist/hls.d.mts +4204 -0
  6. package/dist/hls.d.ts +4204 -0
  7. package/dist/hls.js +40050 -0
  8. package/dist/hls.js.d.ts +4204 -0
  9. package/dist/hls.js.map +1 -0
  10. package/dist/hls.light.js +27145 -0
  11. package/dist/hls.light.js.map +1 -0
  12. package/dist/hls.light.min.js +2 -0
  13. package/dist/hls.light.min.js.map +1 -0
  14. package/dist/hls.light.mjs +26392 -0
  15. package/dist/hls.light.mjs.map +1 -0
  16. package/dist/hls.min.js +2 -0
  17. package/dist/hls.min.js.map +1 -0
  18. package/dist/hls.mjs +38956 -0
  19. package/dist/hls.mjs.map +1 -0
  20. package/dist/hls.worker.js +2 -0
  21. package/dist/hls.worker.js.map +1 -0
  22. package/package.json +143 -0
  23. package/src/config.ts +794 -0
  24. package/src/controller/abr-controller.ts +1019 -0
  25. package/src/controller/algo-data-controller.ts +794 -0
  26. package/src/controller/audio-stream-controller.ts +1099 -0
  27. package/src/controller/audio-track-controller.ts +454 -0
  28. package/src/controller/base-playlist-controller.ts +438 -0
  29. package/src/controller/base-stream-controller.ts +2526 -0
  30. package/src/controller/buffer-controller.ts +2015 -0
  31. package/src/controller/buffer-operation-queue.ts +159 -0
  32. package/src/controller/cap-level-controller.ts +367 -0
  33. package/src/controller/cmcd-controller.ts +422 -0
  34. package/src/controller/content-steering-controller.ts +622 -0
  35. package/src/controller/eme-controller.ts +1617 -0
  36. package/src/controller/error-controller.ts +627 -0
  37. package/src/controller/fps-controller.ts +146 -0
  38. package/src/controller/fragment-finders.ts +256 -0
  39. package/src/controller/fragment-tracker.ts +567 -0
  40. package/src/controller/gap-controller.ts +719 -0
  41. package/src/controller/id3-track-controller.ts +488 -0
  42. package/src/controller/interstitial-player.ts +302 -0
  43. package/src/controller/interstitials-controller.ts +2895 -0
  44. package/src/controller/interstitials-schedule.ts +698 -0
  45. package/src/controller/latency-controller.ts +294 -0
  46. package/src/controller/level-controller.ts +776 -0
  47. package/src/controller/stream-controller.ts +1597 -0
  48. package/src/controller/subtitle-stream-controller.ts +508 -0
  49. package/src/controller/subtitle-track-controller.ts +617 -0
  50. package/src/controller/timeline-controller.ts +677 -0
  51. package/src/crypt/aes-crypto.ts +36 -0
  52. package/src/crypt/aes-decryptor.ts +339 -0
  53. package/src/crypt/decrypter-aes-mode.ts +4 -0
  54. package/src/crypt/decrypter.ts +225 -0
  55. package/src/crypt/fast-aes-key.ts +39 -0
  56. package/src/define-plugin.d.ts +17 -0
  57. package/src/demux/audio/aacdemuxer.ts +126 -0
  58. package/src/demux/audio/ac3-demuxer.ts +170 -0
  59. package/src/demux/audio/adts.ts +249 -0
  60. package/src/demux/audio/base-audio-demuxer.ts +205 -0
  61. package/src/demux/audio/dolby.ts +21 -0
  62. package/src/demux/audio/mp3demuxer.ts +85 -0
  63. package/src/demux/audio/mpegaudio.ts +177 -0
  64. package/src/demux/chunk-cache.ts +42 -0
  65. package/src/demux/dummy-demuxed-track.ts +13 -0
  66. package/src/demux/inject-worker.ts +75 -0
  67. package/src/demux/mp4demuxer.ts +234 -0
  68. package/src/demux/sample-aes.ts +198 -0
  69. package/src/demux/transmuxer-interface.ts +449 -0
  70. package/src/demux/transmuxer-worker.ts +221 -0
  71. package/src/demux/transmuxer.ts +560 -0
  72. package/src/demux/tsdemuxer.ts +1256 -0
  73. package/src/demux/video/avc-video-parser.ts +401 -0
  74. package/src/demux/video/base-video-parser.ts +198 -0
  75. package/src/demux/video/exp-golomb.ts +153 -0
  76. package/src/demux/video/hevc-video-parser.ts +736 -0
  77. package/src/empty-es.js +5 -0
  78. package/src/empty.js +3 -0
  79. package/src/errors.ts +107 -0
  80. package/src/events.ts +548 -0
  81. package/src/exports-default.ts +3 -0
  82. package/src/exports-named.ts +81 -0
  83. package/src/hls.ts +1613 -0
  84. package/src/is-supported.ts +54 -0
  85. package/src/loader/date-range.ts +207 -0
  86. package/src/loader/fragment-loader.ts +403 -0
  87. package/src/loader/fragment.ts +487 -0
  88. package/src/loader/interstitial-asset-list.ts +162 -0
  89. package/src/loader/interstitial-event.ts +337 -0
  90. package/src/loader/key-loader.ts +439 -0
  91. package/src/loader/level-details.ts +203 -0
  92. package/src/loader/level-key.ts +259 -0
  93. package/src/loader/load-stats.ts +17 -0
  94. package/src/loader/m3u8-parser.ts +1072 -0
  95. package/src/loader/playlist-loader.ts +839 -0
  96. package/src/polyfills/number.ts +15 -0
  97. package/src/remux/aac-helper.ts +81 -0
  98. package/src/remux/mp4-generator.ts +1380 -0
  99. package/src/remux/mp4-remuxer.ts +1261 -0
  100. package/src/remux/passthrough-remuxer.ts +434 -0
  101. package/src/task-loop.ts +130 -0
  102. package/src/types/algo.ts +44 -0
  103. package/src/types/buffer.ts +105 -0
  104. package/src/types/component-api.ts +20 -0
  105. package/src/types/demuxer.ts +208 -0
  106. package/src/types/events.ts +574 -0
  107. package/src/types/fragment-tracker.ts +23 -0
  108. package/src/types/level.ts +268 -0
  109. package/src/types/loader.ts +198 -0
  110. package/src/types/media-playlist.ts +92 -0
  111. package/src/types/network-details.ts +3 -0
  112. package/src/types/remuxer.ts +104 -0
  113. package/src/types/track.ts +12 -0
  114. package/src/types/transmuxer.ts +46 -0
  115. package/src/types/tuples.ts +6 -0
  116. package/src/types/vtt.ts +11 -0
  117. package/src/utils/arrays.ts +22 -0
  118. package/src/utils/attr-list.ts +192 -0
  119. package/src/utils/binary-search.ts +46 -0
  120. package/src/utils/buffer-helper.ts +173 -0
  121. package/src/utils/cea-608-parser.ts +1413 -0
  122. package/src/utils/chunker.ts +41 -0
  123. package/src/utils/codecs.ts +314 -0
  124. package/src/utils/cues.ts +96 -0
  125. package/src/utils/discontinuities.ts +174 -0
  126. package/src/utils/encryption-methods-util.ts +21 -0
  127. package/src/utils/error-helper.ts +95 -0
  128. package/src/utils/event-listener-helper.ts +16 -0
  129. package/src/utils/ewma-bandwidth-estimator.ts +97 -0
  130. package/src/utils/ewma.ts +43 -0
  131. package/src/utils/fetch-loader.ts +331 -0
  132. package/src/utils/global.ts +2 -0
  133. package/src/utils/hash.ts +10 -0
  134. package/src/utils/hdr.ts +67 -0
  135. package/src/utils/hex.ts +32 -0
  136. package/src/utils/imsc1-ttml-parser.ts +261 -0
  137. package/src/utils/keysystem-util.ts +45 -0
  138. package/src/utils/level-helper.ts +629 -0
  139. package/src/utils/logger.ts +120 -0
  140. package/src/utils/media-option-attributes.ts +49 -0
  141. package/src/utils/mediacapabilities-helper.ts +301 -0
  142. package/src/utils/mediakeys-helper.ts +210 -0
  143. package/src/utils/mediasource-helper.ts +37 -0
  144. package/src/utils/mp4-tools.ts +1473 -0
  145. package/src/utils/number.ts +3 -0
  146. package/src/utils/numeric-encoding-utils.ts +26 -0
  147. package/src/utils/output-filter.ts +46 -0
  148. package/src/utils/rendition-helper.ts +505 -0
  149. package/src/utils/safe-json-stringify.ts +22 -0
  150. package/src/utils/texttrack-utils.ts +164 -0
  151. package/src/utils/time-ranges.ts +17 -0
  152. package/src/utils/timescale-conversion.ts +46 -0
  153. package/src/utils/utf8-utils.ts +18 -0
  154. package/src/utils/variable-substitution.ts +105 -0
  155. package/src/utils/vttcue.ts +384 -0
  156. package/src/utils/vttparser.ts +497 -0
  157. package/src/utils/webvtt-parser.ts +166 -0
  158. package/src/utils/xhr-loader.ts +337 -0
  159. package/src/version.ts +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hls-demo.js.map","sources":["src/polyfills/number.ts","tests/test-streams.js","node_modules/jsonpack/main.js","node_modules/promise-polyfill/src/finally.js","node_modules/promise-polyfill/src/allSettled.js","node_modules/promise-polyfill/src/any.js","node_modules/promise-polyfill/src/index.js","node_modules/promise-polyfill/src/polyfill.js","node_modules/@msgpack/msgpack/dist.es5+esm/utils/int.mjs","node_modules/@msgpack/msgpack/dist.es5+esm/utils/utf8.mjs","node_modules/@msgpack/msgpack/dist.es5+esm/ExtData.mjs","node_modules/@msgpack/msgpack/dist.es5+esm/DecodeError.mjs","node_modules/@msgpack/msgpack/dist.es5+esm/timestamp.mjs","node_modules/@msgpack/msgpack/dist.es5+esm/ExtensionCodec.mjs","node_modules/@msgpack/msgpack/dist.es5+esm/utils/typedArrays.mjs","node_modules/@msgpack/msgpack/dist.es5+esm/utils/prettyByte.mjs","node_modules/@msgpack/msgpack/dist.es5+esm/CachedKeyDecoder.mjs","node_modules/@msgpack/msgpack/dist.es5+esm/Decoder.mjs","node_modules/@msgpack/msgpack/dist.es5+esm/decode.mjs","demo/demo-utils.js","node_modules/moment/moment.js","node_modules/chart.js/dist/Chart.js","demo/chart/chartjs-horizontal-bar.ts","demo/chart/timeline-chart.ts","demo/main.js"],"sourcesContent":["// https://caniuse.com/mdn-javascript_builtins_number_isfinite\nexport const isFiniteNumber =\n Number.isFinite ||\n function (value) {\n return typeof value === 'number' && isFinite(value);\n };\n\n// https://caniuse.com/mdn-javascript_builtins_number_issafeinteger\nexport const isSafeInteger =\n Number.isSafeInteger ||\n function (value) {\n return typeof value === 'number' && Math.abs(value) <= MAX_SAFE_INTEGER;\n };\n\nexport const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\n","/**\n * Create test stream\n * @param {string} url\n * @param {string} description\n * @param {boolean} [live]\n * @param {boolean} [abr]\n * @param {string[]} [skip_ua]\n * @returns {{url: string, description: string, live: boolean, abr: boolean, skip_ua: string[]}}\n */\nfunction createTestStream(\n url,\n description,\n live = false,\n abr = true,\n skip_ua = [],\n) {\n return {\n url: url,\n description: description,\n live: live,\n abr: abr,\n skip_ua: skip_ua,\n };\n}\n\n/**\n * @param {Object} target\n * @param {Object} [config]\n * @returns {{url: string, description: string, live: boolean, abr: boolean, skip_ua: string[]}}\n */\nfunction createTestStreamWithConfig(target, config) {\n if (typeof target !== 'object') {\n throw new Error('target should be object');\n }\n\n const testStream = createTestStream(\n target.url,\n target.description,\n target.live,\n target.abr,\n target.skip_ua,\n );\n\n testStream.config = config;\n\n return testStream;\n}\n\nmodule.exports = {\n bbb: {\n url: 'https://test-streams.mux.dev/x36xhzz/x36xhzz.m3u8',\n description: 'Big Buck Bunny - adaptive qualities',\n abr: true,\n },\n fdr: {\n url: 'https://cdn.jwplayer.com/manifests/pZxWPRg4.m3u8',\n description: 'FDR - CDN packaged, 4s segments, 180p - 1080p',\n abr: true,\n },\n bigBuckBunny480p: {\n url: 'https://test-streams.mux.dev/x36xhzz/url_6/193039199_mp4_h264_aac_hq_7.m3u8',\n description: 'Big Buck Bunny - 480p only',\n abr: false,\n },\n arte: {\n url: 'https://test-streams.mux.dev/test_001/stream.m3u8',\n description: 'ARTE China,ABR',\n abr: true,\n },\n deltatreDAI: {\n url: 'https://test-streams.mux.dev/dai-discontinuity-deltatre/manifest.m3u8',\n description: 'Ad-insertion in event stream',\n abr: false,\n },\n issue666: {\n url: 'https://playertest.longtailvideo.com/adaptive/issue666/playlists/cisq0gim60007xzvi505emlxx.m3u8',\n description:\n 'Surveillance footage - https://github.com/video-dev/hls.js/issues/666',\n abr: false,\n },\n closedCaptions: {\n url: 'https://playertest.longtailvideo.com/adaptive/captions/playlist.m3u8',\n description: 'CNN special report, with CC',\n abr: false,\n },\n customIvBadDts: {\n url: 'https://playertest.longtailvideo.com/adaptive/customIV/prog_index.m3u8',\n description: 'Custom IV with bad PTS DTS',\n abr: false,\n },\n oceansAES: {\n url: 'https://playertest.longtailvideo.com/adaptive/oceans_aes/oceans_aes.m3u8',\n description: 'AES-128 encrypted, ABR',\n abr: true,\n },\n tracksWithAES: {\n url: 'https://playertest.longtailvideo.com/adaptive/aes-with-tracks/master.m3u8',\n description: 'AES-128 encrypted, TS main with AAC audio track',\n abr: false,\n },\n mp3Audio: {\n url: 'https://playertest.longtailvideo.com/adaptive/vod-with-mp3/manifest.m3u8',\n description: 'MP3 VOD demo',\n abr: false,\n },\n mpegAudioOnly: {\n url: 'https://pl.streamingvideoprovider.com/mp3-playlist/playlist.m3u8',\n description: 'MPEG Audio Only demo',\n abr: false,\n skip_ua: ['MicrosoftEdge', 'firefox'],\n },\n fmp4: {\n url: 'https://storage.googleapis.com/shaka-demo-assets/angel-one-hls/hls.m3u8',\n description: 'HLS fMP4 Angel-One multiple audio-tracks',\n abr: true,\n },\n fmp4Bitmovin: {\n url: 'https://bitdash-a.akamaihd.net/content/MI201109210084_1/m3u8s-fmp4/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8',\n description: 'HLS fMP4 by Bitmovin',\n abr: true,\n },\n fmp4BitmovinHevc: {\n url: 'https://bitmovin-a.akamaihd.net/content/dataset/multi-codec/hevc/stream_fmp4.m3u8',\n description:\n 'HLS HEVC fMP4 by Bitmovin (Safari and Edge? only as of 2020-08)',\n abr: true,\n skipFunctionalTests: true,\n },\n offset_pts: {\n url: 'https://test-streams.mux.dev/pts_shift/master.m3u8',\n description: 'DK Turntable, PTS shifted by 2.3s',\n abr: true,\n },\n angelOneShakaWidevine: createTestStreamWithConfig(\n {\n url: 'https://storage.googleapis.com/shaka-demo-assets/angel-one-widevine-hls/hls.m3u8',\n description:\n 'Shaka-packager Widevine DRM (EME) HLS-fMP4 - Angel One Demo',\n abr: true,\n skip_ua: [\n 'firefox',\n 'safari',\n { name: 'chrome', version: '75.0' },\n { name: 'chrome', version: '79.0' },\n ],\n },\n {\n widevineLicenseUrl: 'https://cwip-shaka-proxy.appspot.com/no_auth',\n emeEnabled: true,\n },\n ),\n audioOnlyMultipleLevels: {\n url: 'https://s3.amazonaws.com/qa.jwplayer.com/~alex/121628/new_master.m3u8',\n description: 'Multiple non-alternate audio levels',\n abr: true,\n },\n pdtDuplicate: {\n url: 'https://playertest.longtailvideo.com/adaptive/artbeats/manifest.m3u8',\n description: 'Duplicate sequential PDT values',\n abr: false,\n },\n pdtLargeGap: createTestStreamWithConfig(\n {\n url: 'https://playertest.longtailvideo.com/adaptive/boxee/playlist.m3u8',\n description: 'PDTs with large gaps following discontinuities',\n abr: false,\n },\n {\n // gaps are introduced by missing audio samples in the TS segments\n // silent audio insertion can only prepend missing back to the last appended time provided there is room\n // The discontinuities and starting offset of the timestamps do not allow prepending earlier than the start of the disco\n allowedBufferedRangesInSeekTest: 7,\n // Ignore \"should buffer up to maxBufferLength\" result\n avBufferOffset: 39,\n },\n ),\n pdtBadValues: {\n url: 'https://playertest.longtailvideo.com/adaptive/progdatime/playlist2.m3u8',\n description: 'PDTs with bad values',\n abr: false,\n },\n pdtOneValue: {\n url: 'https://playertest.longtailvideo.com/adaptive/aviion/manifest.m3u8',\n description: 'One PDT, no discontinuities',\n abr: false,\n },\n noTrackIntersection: createTestStreamWithConfig(\n {\n url: 'https://s3.amazonaws.com/qa.jwplayer.com/~alex/123633/new_master.m3u8',\n description:\n 'Audio/video track PTS values do not intersect; 10 second start gap',\n abr: false,\n },\n {\n avBufferOffset: 10.5,\n },\n ),\n altAudioAndTracks: {\n // url: 'https://wowzaec2demo.streamlock.net/vod-multitrack/_definst_/smil:ElephantsDream/elephantsdream2.smil/playlist.m3u',\n url: 'https://playertest.longtailvideo.com/adaptive/elephants_dream_v4/index.m3u8',\n description: 'Alternate audio tracks, and multiple VTT tracks',\n vendor: 'wowza',\n abr: true,\n },\n altAudioAudioOnly: createTestStreamWithConfig(\n {\n url: 'https://playertest.longtailvideo.com/adaptive/alt-audio-no-video/sintel/playlist.m3u8',\n description: 'Audio only with alternate audio track (Sintel)',\n abr: false,\n },\n {\n // the playlist segment durations are longer than the media. So much so, that when seeking near the end,\n // the timeline shifts roughly 10 seconds seconds back, and as a result buffering skips several segments\n // to adjust for the currentTime now being places at the very end of the stream.\n allowedBufferedRangesInSeekTest: 3,\n },\n ),\n altAudioMultiAudioOnly: {\n url: 'https://playertest.longtailvideo.com/adaptive/alt-audio-no-video/angel-one.m3u8',\n description: 'Audio only with multiple alternate audio tracks (Angel One)',\n abr: false,\n },\n muxedFmp4: {\n url: 'https://s3.amazonaws.com/qa.jwplayer.com/hlsjs/muxed-fmp4/hls.m3u8',\n description: 'Muxed av fmp4 - appended to \"audiovideo\" SourceBuffer',\n abr: false,\n },\n altAudioWithPdtAndStartGap: {\n url: 'https://playertest.longtailvideo.com/adaptive/hls-test-streams/test-audio-pdt/playlist.m3u8',\n description: 'PDT before each segment, 1.59s start gap',\n // Disable smooth switch on this stream. Test is flakey because of what looks like (auto)play issue. To be expected with this large a gap (for now).\n // abr: true,\n startSeek: true,\n },\n AppleAdvancedHevcAvcHls: {\n url: 'https://devstreaming-cdn.apple.com/videos/streaming/examples/bipbop_adv_example_hevc/master.m3u8',\n description:\n 'Advanced stream (HEVC/H.264, AC-3/AAC, WebVTT, fMP4 segments)',\n },\n MuxLowLatencyHls: {\n url: 'https://stream.mux.com/v69RSHhFelSm4701snP22dYz2jICy4E4FUyk02rW4gxRM.m3u8',\n description:\n 'Low-Latency HLS sample of Big Buck Bunny loop and a timer. Restarts every 12 hours. (fMP4 segments)',\n live: true,\n },\n // AppleLowLatencyHls: {\n // url: 'https://ll-hls-test.apple.com/master.m3u8',\n // description: 'Apple Low-Latency HLS sample (TS segments)',\n // live: true,\n // },\n // AppleLowLatencyCmafHls: {\n // url: 'https://ll-hls-test.apple.com/cmaf/master.m3u8',\n // description: 'Apple Low-Latency HLS sample (fMP4 segments)',\n // live: true,\n // },\n groupIds: {\n url: 'https://mtoczko.github.io/hls-test-streams/test-group/playlist.m3u8',\n description: 'Group-id: subtitle and audio',\n abr: true,\n skipFunctionalTests: true,\n },\n redundantLevelsWithTrackGroups: {\n url: 'https://playertest.longtailvideo.com/adaptive/elephants_dream_v4/redundant.m3u8',\n description: 'Redundant levels with subtitle and audio track groups',\n abr: true,\n skipFunctionalTests: true,\n },\n startDelimiterOverlappingBetweenPESPackets: {\n url: 'https://wistia.github.io/hlsjs-test-streams/assets/start-delimiter.m3u8',\n description: `A stream with the start delimiter overlapping between PES packets.\n Related to https://github.com/video-dev/hls.js/issues/3834, where Apple Silicon chips throw decoding errors if\n NAL units are not starting right at the beginning of the PES packet when using hardware accelerated decoding.`,\n abr: false,\n skipFunctionalTests: true,\n },\n aes256: {\n url: 'https://jvaryhlstests.blob.core.windows.net/hlstestdata/playlist_encrypted.m3u8',\n description: 'aes-256 and aes-256-ctr full segment encryption',\n abr: false,\n },\n mpegTsHevcHls: {\n url: 'https://devoldemar.github.io/streams/hls/bipbop/hevc.m3u8',\n description: 'Advanced stream (HEVC Main 10, MPEG-TS segments)',\n skipFunctionalTests: true,\n },\n mpegTsBitmovinHevc: {\n url: 'https://bitmovin-a.akamaihd.net/content/dataset/multi-codec/hevc/v720p_ts.m3u8',\n description:\n 'HLS M2TS by Bitmovin (HEVC Main, many NALUs overflowing PESes, video only)',\n abr: false,\n skipFunctionalTests: true,\n },\n};\n","/*\n Copyright (c) 2013, Rodrigo González, Sapienlab All Rights Reserved.\n Available via MIT LICENSE. See https://github.com/roro89/jsonpack/blob/master/LICENSE.md for details.\n */\n(function(define) {\n\n\tdefine([], function() {\n\n\t\tvar TOKEN_TRUE = -1;\n\t\tvar TOKEN_FALSE = -2;\n\t\tvar TOKEN_NULL = -3;\n\t\tvar TOKEN_EMPTY_STRING = -4;\n\t\tvar TOKEN_UNDEFINED = -5;\n\n\t\tvar pack = function(json, options) {\n\n\t\t\t// Canonizes the options\n\t\t\toptions = options || {};\n\n\t\t\t// A shorthand for debugging\n\t\t\tvar verbose = options.verbose || false;\n\n\t\t\tverbose && console.log('Normalize the JSON Object');\n\n\t\t\t// JSON as Javascript Object (Not string representation)\n\t\t\tjson = typeof json === 'string' ? this.JSON.parse(json) : json;\n\n\t\t\tverbose && console.log('Creating a empty dictionary');\n\n\t\t\t// The dictionary\n\t\t\tvar dictionary = {\n\t\t\t\tstrings : [],\n\t\t\t\tintegers : [],\n\t\t\t\tfloats : []\n\t\t\t};\n\n\t\t\tverbose && console.log('Creating the AST');\n\n\t\t\t// The AST\n\t\t\tvar ast = (function recursiveAstBuilder(item) {\n\n\t\t\t\tverbose && console.log('Calling recursiveAstBuilder with ' + this.JSON.stringify(item));\n\n\t\t\t\t// The type of the item\n\t\t\t\tvar type = typeof item;\n\n\t\t\t\t// Case 7: The item is null\n\t\t\t\tif (item === null) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype : 'null',\n\t\t\t\t\t\tindex : TOKEN_NULL\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t//add undefined \n\t\t\t\tif (typeof item === 'undefined') {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype : 'undefined',\n\t\t\t\t\t\tindex : TOKEN_UNDEFINED\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Case 1: The item is Array Object\n\t\t\t\tif ( item instanceof Array) {\n\n\t\t\t\t\t// Create a new sub-AST of type Array (@)\n\t\t\t\t\tvar ast = ['@'];\n\n\t\t\t\t\t// Add each items\n\t\t\t\t\tfor (var i in item) {\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (!item.hasOwnProperty(i)) continue;\n\n\t\t\t\t\t\tast.push(recursiveAstBuilder(item[i]));\n\t\t\t\t\t}\n\n\t\t\t\t\t// And return\n\t\t\t\t\treturn ast;\n\n\t\t\t\t}\n\n\t\t\t\t// Case 2: The item is Object\n\t\t\t\tif (type === 'object') {\n\n\t\t\t\t\t// Create a new sub-AST of type Object ($)\n\t\t\t\t\tvar ast = ['$'];\n\n\t\t\t\t\t// Add each items\n\t\t\t\t\tfor (var key in item) {\n\n\t\t\t\t\t\tif (!item.hasOwnProperty(key))\n\t\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t\tast.push(recursiveAstBuilder(key));\n\t\t\t\t\t\tast.push(recursiveAstBuilder(item[key]));\n\t\t\t\t\t}\n\n\t\t\t\t\t// And return\n\t\t\t\t\treturn ast;\n\n\t\t\t\t}\n\n\t\t\t\t// Case 3: The item empty string\n\t\t\t\tif (item === '') {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype : 'empty',\n\t\t\t\t\t\tindex : TOKEN_EMPTY_STRING\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Case 4: The item is String\n\t\t\t\tif (type === 'string') {\n\n\t\t\t\t\t// The index of that word in the dictionary\n\t\t\t\t\tvar index = _indexOf.call(dictionary.strings, item);\n\n\t\t\t\t\t// If not, add to the dictionary and actualize the index\n\t\t\t\t\tif (index == -1) {\n\t\t\t\t\t\tdictionary.strings.push(_encode(item));\n\t\t\t\t\t\tindex = dictionary.strings.length - 1;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Return the token\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype : 'strings',\n\t\t\t\t\t\tindex : index\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Case 5: The item is integer\n\t\t\t\tif (type === 'number' && item % 1 === 0) {\n\n\t\t\t\t\t// The index of that number in the dictionary\n\t\t\t\t\tvar index = _indexOf.call(dictionary.integers, item);\n\n\t\t\t\t\t// If not, add to the dictionary and actualize the index\n\t\t\t\t\tif (index == -1) {\n\t\t\t\t\t\tdictionary.integers.push(_base10To36(item));\n\t\t\t\t\t\tindex = dictionary.integers.length - 1;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Return the token\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype : 'integers',\n\t\t\t\t\t\tindex : index\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Case 6: The item is float\n\t\t\t\tif (type === 'number') {\n\t\t\t\t\t// The index of that number in the dictionary\n\t\t\t\t\tvar index = _indexOf.call(dictionary.floats, item);\n\n\t\t\t\t\t// If not, add to the dictionary and actualize the index\n\t\t\t\t\tif (index == -1) {\n\t\t\t\t\t\t// Float not use base 36\n\t\t\t\t\t\tdictionary.floats.push(item);\n\t\t\t\t\t\tindex = dictionary.floats.length - 1;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Return the token\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype : 'floats',\n\t\t\t\t\t\tindex : index\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Case 7: The item is boolean\n\t\t\t\tif (type === 'boolean') {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype : 'boolean',\n\t\t\t\t\t\tindex : item ? TOKEN_TRUE : TOKEN_FALSE\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Default\n\t\t\t\tthrow new Error('Unexpected argument of type ' + typeof (item));\n\n\t\t\t})(json);\n\n\t\t\t// A set of shorthands proxies for the length of the dictionaries\n\t\t\tvar stringLength = dictionary.strings.length;\n\t\t\tvar integerLength = dictionary.integers.length;\n\t\t\tvar floatLength = dictionary.floats.length;\n\n\t\t\tverbose && console.log('Parsing the dictionary');\n\n\t\t\t// Create a raw dictionary\n\t\t\tvar packed = dictionary.strings.join('|');\n\t\t\tpacked += '^' + dictionary.integers.join('|');\n\t\t\tpacked += '^' + dictionary.floats.join('|');\n\n\t\t\tverbose && console.log('Parsing the structure');\n\n\t\t\t// And add the structure\n\t\t\tpacked += '^' + (function recursiveParser(item) {\n\n\t\t\t\tverbose && console.log('Calling a recursiveParser with ' + this.JSON.stringify(item));\n\n\t\t\t\t// If the item is Array, then is a object of\n\t\t\t\t// type [object Object] or [object Array]\n\t\t\t\tif ( item instanceof Array) {\n\n\t\t\t\t\t// The packed resulting\n\t\t\t\t\tvar packed = item.shift();\n\n\t\t\t\t\tfor (var i in item) {\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (!item.hasOwnProperty(i)) \n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\n\t\t\t\t\t\tpacked += recursiveParser(item[i]) + '|';\n\t\t\t\t\t}\n\n\t\t\t\t\treturn (packed[packed.length - 1] === '|' ? packed.slice(0, -1) : packed) + ']';\n\n\t\t\t\t}\n\n\t\t\t\t// A shorthand proxies\n\t\t\t\tvar type = item.type, index = item.index;\n\n\t\t\t\tif (type === 'strings') {\n\t\t\t\t\t// Just return the base 36 of index\n\t\t\t\t\treturn _base10To36(index);\n\t\t\t\t}\n\n\t\t\t\tif (type === 'integers') {\n\t\t\t\t\t// Return a base 36 of index plus stringLength offset\n\t\t\t\t\treturn _base10To36(stringLength + index);\n\t\t\t\t}\n\n\t\t\t\tif (type === 'floats') {\n\t\t\t\t\t// Return a base 36 of index plus stringLength and integerLength offset\n\t\t\t\t\treturn _base10To36(stringLength + integerLength + index);\n\t\t\t\t}\n\n\t\t\t\tif (type === 'boolean') {\n\t\t\t\t\treturn item.index;\n\t\t\t\t}\n\n\t\t\t\tif (type === 'null') {\n\t\t\t\t\treturn TOKEN_NULL;\n\t\t\t\t}\n\n\t\t\t\tif (type === 'undefined') {\n\t\t\t\t\treturn TOKEN_UNDEFINED;\n\t\t\t\t}\n\n\t\t\t\tif (type === 'empty') {\n\t\t\t\t\treturn TOKEN_EMPTY_STRING;\n\t\t\t\t}\n\n\t\t\t\tthrow new TypeError('The item is alien!');\n\n\t\t\t})(ast);\n\n\t\t\tverbose && console.log('Ending parser');\n\n\t\t\t// If debug, return a internal representation of dictionary and stuff\n\t\t\tif (options.debug)\n\t\t\t\treturn {\n\t\t\t\t\tdictionary : dictionary,\n\t\t\t\t\tast : ast,\n\t\t\t\t\tpacked : packed\n\t\t\t\t};\n\n\t\t\treturn packed;\n\n\t\t};\n\n\t\tvar unpack = function(packed, options) {\n\n\t\t\t// Canonizes the options\n\t\t\toptions = options || {};\n\n\t\t\t// A raw buffer\n\t\t\tvar rawBuffers = packed.split('^');\n\n\t\t\t// Create a dictionary\n\t\t\toptions.verbose && console.log('Building dictionary');\n\t\t\tvar dictionary = [];\n\n\t\t\t// Add the strings values\n\t\t\tvar buffer = rawBuffers[0];\n\t\t\tif (buffer !== '') {\n\t\t\t\tbuffer = buffer.split('|');\n\t\t\t\toptions.verbose && console.log('Parse the strings dictionary');\n\t\t\t\tfor (var i=0, n=buffer.length; i<n; i++){\n\t\t\t\t\tdictionary.push(_decode(buffer[i]));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add the integers values\n\t\t\tbuffer = rawBuffers[1];\n\t\t\tif (buffer !== '') {\n\t\t\t\tbuffer = buffer.split('|');\n\t\t\t\toptions.verbose && console.log('Parse the integers dictionary');\n\t\t\t\tfor (var i=0, n=buffer.length; i<n; i++){\n\t\t\t\t\tdictionary.push(_base36To10(buffer[i]));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add the floats values\n\t\t\tbuffer = rawBuffers[2];\n\t\t\tif (buffer !== '') {\n\t\t\t\tbuffer = buffer.split('|')\n\t\t\t\toptions.verbose && console.log('Parse the floats dictionary');\n\t\t\t\tfor (var i=0, n=buffer.length; i<n; i++){\n\t\t\t\t\tdictionary.push(parseFloat(buffer[i]));\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Free memory\n\t\t\tbuffer = null;\n\n\t\t\toptions.verbose && console.log('Tokenizing the structure');\n\n\t\t\t// Tokenizer the structure\n\t\t\tvar number36 = '';\n\t\t\tvar tokens = [];\n\t\t\tvar len=rawBuffers[3].length;\n\t\t\tfor (var i = 0; i < len; i++) {\n\t\t\t\tvar symbol = rawBuffers[3].charAt(i);\n\t\t\t\tif (symbol === '|' || symbol === '$' || symbol === '@' || symbol === ']') {\n\t\t\t\t\tif (number36) {\n\t\t\t\t\t\ttokens.push(_base36To10(number36));\n\t\t\t\t\t\tnumber36 = '';\n\t\t\t\t\t}\n\t\t\t\t\tsymbol !== '|' && tokens.push(symbol);\n\t\t\t\t} else {\n\t\t\t\t\tnumber36 += symbol;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// A shorthand proxy for tokens.length\n\t\t\tvar tokensLength = tokens.length;\n\n\t\t\t// The index of the next token to read\n\t\t\tvar tokensIndex = 0;\n\n\t\t\toptions.verbose && console.log('Starting recursive parser');\n\n\t\t\treturn (function recursiveUnpackerParser() {\n\n\t\t\t\t// Maybe '$' (object) or '@' (array)\n\t\t\t\tvar type = tokens[tokensIndex++];\n\n\t\t\t\toptions.verbose && console.log('Reading collection type ' + (type === '$' ? 'object' : 'Array'));\n\n\t\t\t\t// Parse an array\n\t\t\t\tif (type === '@') {\n\n\t\t\t\t\tvar node = [];\n\n\t\t\t\t\tfor (; tokensIndex < tokensLength; tokensIndex++) {\n\t\t\t\t\t\tvar value = tokens[tokensIndex];\n\t\t\t\t\t\toptions.verbose && console.log('Read ' + value + ' symbol');\n\t\t\t\t\t\tif (value === ']')\n\t\t\t\t\t\t\treturn node;\n\t\t\t\t\t\tif (value === '@' || value === '$') {\n\t\t\t\t\t\t\tnode.push(recursiveUnpackerParser());\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tswitch(value) {\n\t\t\t\t\t\t\t\tcase TOKEN_TRUE:\n\t\t\t\t\t\t\t\t\tnode.push(true);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase TOKEN_FALSE:\n\t\t\t\t\t\t\t\t\tnode.push(false);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase TOKEN_NULL:\n\t\t\t\t\t\t\t\t\tnode.push(null);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase TOKEN_UNDEFINED:\n\t\t\t\t\t\t\t\t\tnode.push(undefined);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase TOKEN_EMPTY_STRING:\n\t\t\t\t\t\t\t\t\tnode.push('');\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\tnode.push(dictionary[value]);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\toptions.verbose && console.log('Parsed ' + this.JSON.stringify(node));\n\n\t\t\t\t\treturn node;\n\n\t\t\t\t}\n\n\t\t\t\t// Parse a object\n\t\t\t\tif (type === '$') {\n\t\t\t\t\tvar node = {};\n\n\t\t\t\t\tfor (; tokensIndex < tokensLength; tokensIndex++) {\n\n\t\t\t\t\t\tvar key = tokens[tokensIndex];\n\n\t\t\t\t\t\tif (key === ']')\n\t\t\t\t\t\t\treturn node;\n\n\t\t\t\t\t\tif (key === TOKEN_EMPTY_STRING)\n\t\t\t\t\t\t\tkey = '';\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tkey = dictionary[key];\n\n\t\t\t\t\t\tvar value = tokens[++tokensIndex];\n\n\t\t\t\t\t\tif (value === '@' || value === '$') {\n\t\t\t\t\t\t\tnode[key] = recursiveUnpackerParser();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tswitch(value) {\n\t\t\t\t\t\t\t\tcase TOKEN_TRUE:\n\t\t\t\t\t\t\t\t\tnode[key] = true;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase TOKEN_FALSE:\n\t\t\t\t\t\t\t\t\tnode[key] = false;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase TOKEN_NULL:\n\t\t\t\t\t\t\t\t\tnode[key] = null;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase TOKEN_UNDEFINED:\n\t\t\t\t\t\t\t\t\tnode[key] = undefined;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase TOKEN_EMPTY_STRING:\n\t\t\t\t\t\t\t\t\tnode[key] = '';\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\tnode[key] = dictionary[value];\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\toptions.verbose && console.log('Parsed ' + this.JSON.stringify(node));\n\n\t\t\t\t\treturn node;\n\t\t\t\t}\n\n\t\t\t\tthrow new TypeError('Bad token ' + type + ' isn\\'t a type');\n\n\t\t\t})();\n\n\t\t}\n\t\t/**\n\t\t * Get the index value of the dictionary\n\t\t * @param {Object} dictionary a object that have two array attributes: 'string' and 'number'\n\t\t * @param {Object} data\n\t\t */\n\t\tvar _indexOfDictionary = function(dictionary, value) {\n\n\t\t\t// The type of the value\n\t\t\tvar type = typeof value;\n\n\t\t\t// If is boolean, return a boolean token\n\t\t\tif (type === 'boolean')\n\t\t\t\treturn value ? TOKEN_TRUE : TOKEN_FALSE;\n\n\t\t\t// If is null, return a... yes! the null token\n\t\t\tif (value === null)\n\t\t\t\treturn TOKEN_NULL;\n\n\t\t\t//add undefined\n\t\t\tif (typeof value === 'undefined')\n\t\t\t\treturn TOKEN_UNDEFINED;\n\n\n\t\t\tif (value === '') {\n\t\t\t\treturn TOKEN_EMPTY_STRING;\n\t\t\t}\n\n\t\t\tif (type === 'string') {\n\t\t\t\tvalue = _encode(value);\n\t\t\t\tvar index = _indexOf.call(dictionary.strings, value);\n\t\t\t\tif (index === -1) {\n\t\t\t\t\tdictionary.strings.push(value);\n\t\t\t\t\tindex = dictionary.strings.length - 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If has an invalid JSON type (example a function)\n\t\t\tif (type !== 'string' && type !== 'number') {\n\t\t\t\tthrow new Error('The type is not a JSON type');\n\t\t\t};\n\n\t\t\tif (type === 'string') {// string\n\t\t\t\tvalue = _encode(value);\n\t\t\t} else if (value % 1 === 0) {// integer\n\t\t\t\tvalue = _base10To36(value);\n\t\t\t} else {// float\n\n\t\t\t}\n\n\t\t\t// If is number, \"serialize\" the value\n\t\t\tvalue = type === 'number' ? _base10To36(value) : _encode(value);\n\n\t\t\t// Retrieve the index of that value in the dictionary\n\t\t\tvar index = _indexOf.call(dictionary[type], value);\n\n\t\t\t// If that value is not in the dictionary\n\t\t\tif (index === -1) {\n\t\t\t\t// Push the value\n\t\t\t\tdictionary[type].push(value);\n\t\t\t\t// And return their index\n\t\t\t\tindex = dictionary[type].length - 1;\n\t\t\t}\n\n\t\t\t// If the type is a number, then add the '+' prefix character\n\t\t\t// to differentiate that they is a number index. If not, then\n\t\t\t// just return a 36-based representation of the index\n\t\t\treturn type === 'number' ? '+' + index : index;\n\n\t\t};\n\n\t\tvar _encode = function(str) {\n\t\t\tif ( typeof str !== 'string')\n\t\t\t\treturn str;\n\n\t\t\treturn str.replace(/[\\+ \\|\\^\\%]/g, function(a) {\n\t\t\t\treturn ({\n\t\t\t\t' ' : '+',\n\t\t\t\t'+' : '%2B',\n\t\t\t\t'|' : '%7C',\n\t\t\t\t'^' : '%5E',\n\t\t\t\t'%' : '%25'\n\t\t\t\t})[a]\n\t\t\t});\n\t\t};\n\n\t\tvar _decode = function(str) {\n\t\t\tif ( typeof str !== 'string')\n\t\t\t\treturn str;\n\n\t\t\treturn str.replace(/\\+|%2B|%7C|%5E|%25/g, function(a) {\n\t\t\t\treturn ({\n\t\t\t\t'+' : ' ',\n\t\t\t\t'%2B' : '+',\n\t\t\t\t'%7C' : '|',\n\t\t\t\t'%5E' : '^',\n\t\t\t\t'%25' : '%'\n\t\t\t\t})[a]\n\t\t\t})\n\t\t};\n\n\t\tvar _base10To36 = function(number) {\n\t\t\treturn Number.prototype.toString.call(number, 36).toUpperCase();\n\t\t};\n\n\t\tvar _base36To10 = function(number) {\n\t\t\treturn parseInt(number, 36);\n\t\t};\n\n\t\tvar _indexOf = Array.prototype.indexOf ||\n\t\tfunction(obj, start) {\n\t\t\tfor (var i = (start || 0), j = this.length; i < j; i++) {\n\t\t\t\tif (this[i] === obj) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -1;\n\t\t};\n\n\t\treturn {\n\t\t\tJSON : JSON,\n\t\t\tpack : pack,\n\t\t\tunpack : unpack\n\t\t};\n\n\t});\n\n})( typeof define == 'undefined' || !define.amd ? function(deps, factory) {\n\tvar jsonpack = factory();\n\tif ( typeof exports != 'undefined')\n\t\tfor (var key in jsonpack)\n\t\texports[key] = jsonpack[key];\n\telse\n\t\twindow.jsonpack = jsonpack;\n} : define);\n","/**\n * @this {Promise}\n */\nfunction finallyConstructor(callback) {\n var constructor = this.constructor;\n return this.then(\n function(value) {\n // @ts-ignore\n return constructor.resolve(callback()).then(function() {\n return value;\n });\n },\n function(reason) {\n // @ts-ignore\n return constructor.resolve(callback()).then(function() {\n // @ts-ignore\n return constructor.reject(reason);\n });\n }\n );\n}\n\nexport default finallyConstructor;\n","function allSettled(arr) {\n var P = this;\n return new P(function(resolve, reject) {\n if (!(arr && typeof arr.length !== 'undefined')) {\n return reject(\n new TypeError(\n typeof arr +\n ' ' +\n arr +\n ' is not iterable(cannot read property Symbol(Symbol.iterator))'\n )\n );\n }\n var args = Array.prototype.slice.call(arr);\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n\n function res(i, val) {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n var then = val.then;\n if (typeof then === 'function') {\n then.call(\n val,\n function(val) {\n res(i, val);\n },\n function(e) {\n args[i] = { status: 'rejected', reason: e };\n if (--remaining === 0) {\n resolve(args);\n }\n }\n );\n return;\n }\n }\n args[i] = { status: 'fulfilled', value: val };\n if (--remaining === 0) {\n resolve(args);\n }\n }\n\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n}\n\nexport default allSettled;\n","/**\n * @constructor\n */\nfunction AggregateError(errors, message) {\n (this.name = 'AggregateError'), (this.errors = errors);\n this.message = message || '';\n}\nAggregateError.prototype = Error.prototype;\n\nfunction any(arr) {\n var P = this;\n return new P(function(resolve, reject) {\n if (!(arr && typeof arr.length !== 'undefined')) {\n return reject(new TypeError('Promise.any accepts an array'));\n }\n\n var args = Array.prototype.slice.call(arr);\n if (args.length === 0) return reject();\n\n var rejectionReasons = [];\n for (var i = 0; i < args.length; i++) {\n try {\n P.resolve(args[i])\n .then(resolve)\n .catch(function(error) {\n rejectionReasons.push(error);\n if (rejectionReasons.length === args.length) {\n reject(\n new AggregateError(\n rejectionReasons,\n 'All promises were rejected'\n )\n );\n }\n });\n } catch (ex) {\n reject(ex);\n }\n }\n });\n}\n\nexport default any;\n","import promiseFinally from './finally';\nimport allSettled from './allSettled';\nimport any from './any';\n\n// Store setTimeout reference so promise-polyfill will be unaffected by\n// other code modifying setTimeout (like sinon.useFakeTimers())\nvar setTimeoutFunc = setTimeout;\n\nfunction isArray(x) {\n return Boolean(x && typeof x.length !== 'undefined');\n}\n\nfunction noop() {}\n\n// Polyfill for Function.prototype.bind\nfunction bind(fn, thisArg) {\n return function() {\n fn.apply(thisArg, arguments);\n };\n}\n\n/**\n * @constructor\n * @param {Function} fn\n */\nfunction Promise(fn) {\n if (!(this instanceof Promise))\n throw new TypeError('Promises must be constructed via new');\n if (typeof fn !== 'function') throw new TypeError('not a function');\n /** @type {!number} */\n this._state = 0;\n /** @type {!boolean} */\n this._handled = false;\n /** @type {Promise|undefined} */\n this._value = undefined;\n /** @type {!Array<!Function>} */\n this._deferreds = [];\n\n doResolve(fn, this);\n}\n\nfunction handle(self, deferred) {\n while (self._state === 3) {\n self = self._value;\n }\n if (self._state === 0) {\n self._deferreds.push(deferred);\n return;\n }\n self._handled = true;\n Promise._immediateFn(function() {\n var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n (self._state === 1 ? resolve : reject)(deferred.promise, self._value);\n return;\n }\n var ret;\n try {\n ret = cb(self._value);\n } catch (e) {\n reject(deferred.promise, e);\n return;\n }\n resolve(deferred.promise, ret);\n });\n}\n\nfunction resolve(self, newValue) {\n try {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self)\n throw new TypeError('A promise cannot be resolved with itself.');\n if (\n newValue &&\n (typeof newValue === 'object' || typeof newValue === 'function')\n ) {\n var then = newValue.then;\n if (newValue instanceof Promise) {\n self._state = 3;\n self._value = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(bind(then, newValue), self);\n return;\n }\n }\n self._state = 1;\n self._value = newValue;\n finale(self);\n } catch (e) {\n reject(self, e);\n }\n}\n\nfunction reject(self, newValue) {\n self._state = 2;\n self._value = newValue;\n finale(self);\n}\n\nfunction finale(self) {\n if (self._state === 2 && self._deferreds.length === 0) {\n Promise._immediateFn(function() {\n if (!self._handled) {\n Promise._unhandledRejectionFn(self._value);\n }\n });\n }\n\n for (var i = 0, len = self._deferreds.length; i < len; i++) {\n handle(self, self._deferreds[i]);\n }\n self._deferreds = null;\n}\n\n/**\n * @constructor\n */\nfunction Handler(onFulfilled, onRejected, promise) {\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, self) {\n var done = false;\n try {\n fn(\n function(value) {\n if (done) return;\n done = true;\n resolve(self, value);\n },\n function(reason) {\n if (done) return;\n done = true;\n reject(self, reason);\n }\n );\n } catch (ex) {\n if (done) return;\n done = true;\n reject(self, ex);\n }\n}\n\nPromise.prototype['catch'] = function(onRejected) {\n return this.then(null, onRejected);\n};\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n // @ts-ignore\n var prom = new this.constructor(noop);\n\n handle(this, new Handler(onFulfilled, onRejected, prom));\n return prom;\n};\n\nPromise.prototype['finally'] = promiseFinally;\n\nPromise.all = function(arr) {\n return new Promise(function(resolve, reject) {\n if (!isArray(arr)) {\n return reject(new TypeError('Promise.all accepts an array'));\n }\n\n var args = Array.prototype.slice.call(arr);\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n\n function res(i, val) {\n try {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n var then = val.then;\n if (typeof then === 'function') {\n then.call(\n val,\n function(val) {\n res(i, val);\n },\n reject\n );\n return;\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n } catch (ex) {\n reject(ex);\n }\n }\n\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\n\nPromise.any = any;\n\nPromise.allSettled = allSettled;\n\nPromise.resolve = function(value) {\n if (value && typeof value === 'object' && value.constructor === Promise) {\n return value;\n }\n\n return new Promise(function(resolve) {\n resolve(value);\n });\n};\n\nPromise.reject = function(value) {\n return new Promise(function(resolve, reject) {\n reject(value);\n });\n};\n\nPromise.race = function(arr) {\n return new Promise(function(resolve, reject) {\n if (!isArray(arr)) {\n return reject(new TypeError('Promise.race accepts an array'));\n }\n\n for (var i = 0, len = arr.length; i < len; i++) {\n Promise.resolve(arr[i]).then(resolve, reject);\n }\n });\n};\n\n// Use polyfill for setImmediate for performance gains\nPromise._immediateFn =\n // @ts-ignore\n (typeof setImmediate === 'function' &&\n function(fn) {\n // @ts-ignore\n setImmediate(fn);\n }) ||\n function(fn) {\n setTimeoutFunc(fn, 0);\n };\n\nPromise._unhandledRejectionFn = function _unhandledRejectionFn(err) {\n if (typeof console !== 'undefined' && console) {\n console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console\n }\n};\n\nexport default Promise;\n","import Promise from './index';\nimport promiseFinally from './finally';\nimport allSettled from './allSettled';\nimport any from './any';\n\n/** @suppress {undefinedVars} */\nvar globalNS = (function() {\n // the only reliable means to get the global object is\n // `Function('return this')()`\n // However, this causes CSP violations in Chrome apps.\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('unable to locate global object');\n})();\n\n// Expose the polyfill if Promise is undefined or set to a\n// non-function value. The latter can be due to a named HTMLElement\n// being exposed by browsers for legacy reasons.\n// https://github.com/taylorhakes/promise-polyfill/issues/114\nif (typeof globalNS['Promise'] !== 'function') {\n globalNS['Promise'] = Promise;\n} else {\n if (!globalNS.Promise.prototype['finally']) {\n globalNS.Promise.prototype['finally'] = promiseFinally;\n }\n if (!globalNS.Promise.allSettled) {\n globalNS.Promise.allSettled = allSettled;\n }\n if (!globalNS.Promise.any) {\n globalNS.Promise.any = any;\n }\n}\n","// Integer Utility\nexport var UINT32_MAX = 4294967295;\n// DataView extension to handle int64 / uint64,\n// where the actual range is 53-bits integer (a.k.a. safe integer)\nexport function setUint64(view, offset, value) {\n var high = value / 4294967296;\n var low = value; // high bits are truncated by DataView\n view.setUint32(offset, high);\n view.setUint32(offset + 4, low);\n}\nexport function setInt64(view, offset, value) {\n var high = Math.floor(value / 4294967296);\n var low = value; // high bits are truncated by DataView\n view.setUint32(offset, high);\n view.setUint32(offset + 4, low);\n}\nexport function getInt64(view, offset) {\n var high = view.getInt32(offset);\n var low = view.getUint32(offset + 4);\n return high * 4294967296 + low;\n}\nexport function getUint64(view, offset) {\n var high = view.getUint32(offset);\n var low = view.getUint32(offset + 4);\n return high * 4294967296 + low;\n}\n//# sourceMappingURL=int.mjs.map","var _a, _b, _c;\n/* eslint-disable @typescript-eslint/no-unnecessary-condition */\nimport { UINT32_MAX } from \"./int.mjs\";\nvar TEXT_ENCODING_AVAILABLE = (typeof process === \"undefined\" || ((_a = process === null || process === void 0 ? void 0 : process.env) === null || _a === void 0 ? void 0 : _a[\"TEXT_ENCODING\"]) !== \"never\") &&\n typeof TextEncoder !== \"undefined\" &&\n typeof TextDecoder !== \"undefined\";\nexport function utf8Count(str) {\n var strLength = str.length;\n var byteLength = 0;\n var pos = 0;\n while (pos < strLength) {\n var value = str.charCodeAt(pos++);\n if ((value & 0xffffff80) === 0) {\n // 1-byte\n byteLength++;\n continue;\n }\n else if ((value & 0xfffff800) === 0) {\n // 2-bytes\n byteLength += 2;\n }\n else {\n // handle surrogate pair\n if (value >= 0xd800 && value <= 0xdbff) {\n // high surrogate\n if (pos < strLength) {\n var extra = str.charCodeAt(pos);\n if ((extra & 0xfc00) === 0xdc00) {\n ++pos;\n value = ((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000;\n }\n }\n }\n if ((value & 0xffff0000) === 0) {\n // 3-byte\n byteLength += 3;\n }\n else {\n // 4-byte\n byteLength += 4;\n }\n }\n }\n return byteLength;\n}\nexport function utf8EncodeJs(str, output, outputOffset) {\n var strLength = str.length;\n var offset = outputOffset;\n var pos = 0;\n while (pos < strLength) {\n var value = str.charCodeAt(pos++);\n if ((value & 0xffffff80) === 0) {\n // 1-byte\n output[offset++] = value;\n continue;\n }\n else if ((value & 0xfffff800) === 0) {\n // 2-bytes\n output[offset++] = ((value >> 6) & 0x1f) | 0xc0;\n }\n else {\n // handle surrogate pair\n if (value >= 0xd800 && value <= 0xdbff) {\n // high surrogate\n if (pos < strLength) {\n var extra = str.charCodeAt(pos);\n if ((extra & 0xfc00) === 0xdc00) {\n ++pos;\n value = ((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000;\n }\n }\n }\n if ((value & 0xffff0000) === 0) {\n // 3-byte\n output[offset++] = ((value >> 12) & 0x0f) | 0xe0;\n output[offset++] = ((value >> 6) & 0x3f) | 0x80;\n }\n else {\n // 4-byte\n output[offset++] = ((value >> 18) & 0x07) | 0xf0;\n output[offset++] = ((value >> 12) & 0x3f) | 0x80;\n output[offset++] = ((value >> 6) & 0x3f) | 0x80;\n }\n }\n output[offset++] = (value & 0x3f) | 0x80;\n }\n}\nvar sharedTextEncoder = TEXT_ENCODING_AVAILABLE ? new TextEncoder() : undefined;\nexport var TEXT_ENCODER_THRESHOLD = !TEXT_ENCODING_AVAILABLE\n ? UINT32_MAX\n : typeof process !== \"undefined\" && ((_b = process === null || process === void 0 ? void 0 : process.env) === null || _b === void 0 ? void 0 : _b[\"TEXT_ENCODING\"]) !== \"force\"\n ? 200\n : 0;\nfunction utf8EncodeTEencode(str, output, outputOffset) {\n output.set(sharedTextEncoder.encode(str), outputOffset);\n}\nfunction utf8EncodeTEencodeInto(str, output, outputOffset) {\n sharedTextEncoder.encodeInto(str, output.subarray(outputOffset));\n}\nexport var utf8EncodeTE = (sharedTextEncoder === null || sharedTextEncoder === void 0 ? void 0 : sharedTextEncoder.encodeInto) ? utf8EncodeTEencodeInto : utf8EncodeTEencode;\nvar CHUNK_SIZE = 4096;\nexport function utf8DecodeJs(bytes, inputOffset, byteLength) {\n var offset = inputOffset;\n var end = offset + byteLength;\n var units = [];\n var result = \"\";\n while (offset < end) {\n var byte1 = bytes[offset++];\n if ((byte1 & 0x80) === 0) {\n // 1 byte\n units.push(byte1);\n }\n else if ((byte1 & 0xe0) === 0xc0) {\n // 2 bytes\n var byte2 = bytes[offset++] & 0x3f;\n units.push(((byte1 & 0x1f) << 6) | byte2);\n }\n else if ((byte1 & 0xf0) === 0xe0) {\n // 3 bytes\n var byte2 = bytes[offset++] & 0x3f;\n var byte3 = bytes[offset++] & 0x3f;\n units.push(((byte1 & 0x1f) << 12) | (byte2 << 6) | byte3);\n }\n else if ((byte1 & 0xf8) === 0xf0) {\n // 4 bytes\n var byte2 = bytes[offset++] & 0x3f;\n var byte3 = bytes[offset++] & 0x3f;\n var byte4 = bytes[offset++] & 0x3f;\n var unit = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0c) | (byte3 << 0x06) | byte4;\n if (unit > 0xffff) {\n unit -= 0x10000;\n units.push(((unit >>> 10) & 0x3ff) | 0xd800);\n unit = 0xdc00 | (unit & 0x3ff);\n }\n units.push(unit);\n }\n else {\n units.push(byte1);\n }\n if (units.length >= CHUNK_SIZE) {\n result += String.fromCharCode.apply(String, units);\n units.length = 0;\n }\n }\n if (units.length > 0) {\n result += String.fromCharCode.apply(String, units);\n }\n return result;\n}\nvar sharedTextDecoder = TEXT_ENCODING_AVAILABLE ? new TextDecoder() : null;\nexport var TEXT_DECODER_THRESHOLD = !TEXT_ENCODING_AVAILABLE\n ? UINT32_MAX\n : typeof process !== \"undefined\" && ((_c = process === null || process === void 0 ? void 0 : process.env) === null || _c === void 0 ? void 0 : _c[\"TEXT_DECODER\"]) !== \"force\"\n ? 200\n : 0;\nexport function utf8DecodeTD(bytes, inputOffset, byteLength) {\n var stringBytes = bytes.subarray(inputOffset, inputOffset + byteLength);\n return sharedTextDecoder.decode(stringBytes);\n}\n//# sourceMappingURL=utf8.mjs.map","/**\n * ExtData is used to handle Extension Types that are not registered to ExtensionCodec.\n */\nvar ExtData = /** @class */ (function () {\n function ExtData(type, data) {\n this.type = type;\n this.data = data;\n }\n return ExtData;\n}());\nexport { ExtData };\n//# sourceMappingURL=ExtData.mjs.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar DecodeError = /** @class */ (function (_super) {\n __extends(DecodeError, _super);\n function DecodeError(message) {\n var _this = _super.call(this, message) || this;\n // fix the prototype chain in a cross-platform way\n var proto = Object.create(DecodeError.prototype);\n Object.setPrototypeOf(_this, proto);\n Object.defineProperty(_this, \"name\", {\n configurable: true,\n enumerable: false,\n value: DecodeError.name,\n });\n return _this;\n }\n return DecodeError;\n}(Error));\nexport { DecodeError };\n//# sourceMappingURL=DecodeError.mjs.map","// https://github.com/msgpack/msgpack/blob/master/spec.md#timestamp-extension-type\nimport { DecodeError } from \"./DecodeError.mjs\";\nimport { getInt64, setInt64 } from \"./utils/int.mjs\";\nexport var EXT_TIMESTAMP = -1;\nvar TIMESTAMP32_MAX_SEC = 0x100000000 - 1; // 32-bit unsigned int\nvar TIMESTAMP64_MAX_SEC = 0x400000000 - 1; // 34-bit unsigned int\nexport function encodeTimeSpecToTimestamp(_a) {\n var sec = _a.sec, nsec = _a.nsec;\n if (sec >= 0 && nsec >= 0 && sec <= TIMESTAMP64_MAX_SEC) {\n // Here sec >= 0 && nsec >= 0\n if (nsec === 0 && sec <= TIMESTAMP32_MAX_SEC) {\n // timestamp 32 = { sec32 (unsigned) }\n var rv = new Uint8Array(4);\n var view = new DataView(rv.buffer);\n view.setUint32(0, sec);\n return rv;\n }\n else {\n // timestamp 64 = { nsec30 (unsigned), sec34 (unsigned) }\n var secHigh = sec / 0x100000000;\n var secLow = sec & 0xffffffff;\n var rv = new Uint8Array(8);\n var view = new DataView(rv.buffer);\n // nsec30 | secHigh2\n view.setUint32(0, (nsec << 2) | (secHigh & 0x3));\n // secLow32\n view.setUint32(4, secLow);\n return rv;\n }\n }\n else {\n // timestamp 96 = { nsec32 (unsigned), sec64 (signed) }\n var rv = new Uint8Array(12);\n var view = new DataView(rv.buffer);\n view.setUint32(0, nsec);\n setInt64(view, 4, sec);\n return rv;\n }\n}\nexport function encodeDateToTimeSpec(date) {\n var msec = date.getTime();\n var sec = Math.floor(msec / 1e3);\n var nsec = (msec - sec * 1e3) * 1e6;\n // Normalizes { sec, nsec } to ensure nsec is unsigned.\n var nsecInSec = Math.floor(nsec / 1e9);\n return {\n sec: sec + nsecInSec,\n nsec: nsec - nsecInSec * 1e9,\n };\n}\nexport function encodeTimestampExtension(object) {\n if (object instanceof Date) {\n var timeSpec = encodeDateToTimeSpec(object);\n return encodeTimeSpecToTimestamp(timeSpec);\n }\n else {\n return null;\n }\n}\nexport function decodeTimestampToTimeSpec(data) {\n var view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n // data may be 32, 64, or 96 bits\n switch (data.byteLength) {\n case 4: {\n // timestamp 32 = { sec32 }\n var sec = view.getUint32(0);\n var nsec = 0;\n return { sec: sec, nsec: nsec };\n }\n case 8: {\n // timestamp 64 = { nsec30, sec34 }\n var nsec30AndSecHigh2 = view.getUint32(0);\n var secLow32 = view.getUint32(4);\n var sec = (nsec30AndSecHigh2 & 0x3) * 0x100000000 + secLow32;\n var nsec = nsec30AndSecHigh2 >>> 2;\n return { sec: sec, nsec: nsec };\n }\n case 12: {\n // timestamp 96 = { nsec32 (unsigned), sec64 (signed) }\n var sec = getInt64(view, 4);\n var nsec = view.getUint32(0);\n return { sec: sec, nsec: nsec };\n }\n default:\n throw new DecodeError(\"Unrecognized data size for timestamp (expected 4, 8, or 12): \".concat(data.length));\n }\n}\nexport function decodeTimestampExtension(data) {\n var timeSpec = decodeTimestampToTimeSpec(data);\n return new Date(timeSpec.sec * 1e3 + timeSpec.nsec / 1e6);\n}\nexport var timestampExtension = {\n type: EXT_TIMESTAMP,\n encode: encodeTimestampExtension,\n decode: decodeTimestampExtension,\n};\n//# sourceMappingURL=timestamp.mjs.map","// ExtensionCodec to handle MessagePack extensions\nimport { ExtData } from \"./ExtData.mjs\";\nimport { timestampExtension } from \"./timestamp.mjs\";\nvar ExtensionCodec = /** @class */ (function () {\n function ExtensionCodec() {\n // built-in extensions\n this.builtInEncoders = [];\n this.builtInDecoders = [];\n // custom extensions\n this.encoders = [];\n this.decoders = [];\n this.register(timestampExtension);\n }\n ExtensionCodec.prototype.register = function (_a) {\n var type = _a.type, encode = _a.encode, decode = _a.decode;\n if (type >= 0) {\n // custom extensions\n this.encoders[type] = encode;\n this.decoders[type] = decode;\n }\n else {\n // built-in extensions\n var index = 1 + type;\n this.builtInEncoders[index] = encode;\n this.builtInDecoders[index] = decode;\n }\n };\n ExtensionCodec.prototype.tryToEncode = function (object, context) {\n // built-in extensions\n for (var i = 0; i < this.builtInEncoders.length; i++) {\n var encodeExt = this.builtInEncoders[i];\n if (encodeExt != null) {\n var data = encodeExt(object, context);\n if (data != null) {\n var type = -1 - i;\n return new ExtData(type, data);\n }\n }\n }\n // custom extensions\n for (var i = 0; i < this.encoders.length; i++) {\n var encodeExt = this.encoders[i];\n if (encodeExt != null) {\n var data = encodeExt(object, context);\n if (data != null) {\n var type = i;\n return new ExtData(type, data);\n }\n }\n }\n if (object instanceof ExtData) {\n // to keep ExtData as is\n return object;\n }\n return null;\n };\n ExtensionCodec.prototype.decode = function (data, type, context) {\n var decodeExt = type < 0 ? this.builtInDecoders[-1 - type] : this.decoders[type];\n if (decodeExt) {\n return decodeExt(data, type, context);\n }\n else {\n // decode() does not fail, returns ExtData instead.\n return new ExtData(type, data);\n }\n };\n ExtensionCodec.defaultCodec = new ExtensionCodec();\n return ExtensionCodec;\n}());\nexport { ExtensionCodec };\n//# sourceMappingURL=ExtensionCodec.mjs.map","export function ensureUint8Array(buffer) {\n if (buffer instanceof Uint8Array) {\n return buffer;\n }\n else if (ArrayBuffer.isView(buffer)) {\n return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n else if (buffer instanceof ArrayBuffer) {\n return new Uint8Array(buffer);\n }\n else {\n // ArrayLike<number>\n return Uint8Array.from(buffer);\n }\n}\nexport function createDataView(buffer) {\n if (buffer instanceof ArrayBuffer) {\n return new DataView(buffer);\n }\n var bufferView = ensureUint8Array(buffer);\n return new DataView(bufferView.buffer, bufferView.byteOffset, bufferView.byteLength);\n}\n//# sourceMappingURL=typedArrays.mjs.map","export function prettyByte(byte) {\n return \"\".concat(byte < 0 ? \"-\" : \"\", \"0x\").concat(Math.abs(byte).toString(16).padStart(2, \"0\"));\n}\n//# sourceMappingURL=prettyByte.mjs.map","import { utf8DecodeJs } from \"./utils/utf8.mjs\";\nvar DEFAULT_MAX_KEY_LENGTH = 16;\nvar DEFAULT_MAX_LENGTH_PER_KEY = 16;\nvar CachedKeyDecoder = /** @class */ (function () {\n function CachedKeyDecoder(maxKeyLength, maxLengthPerKey) {\n if (maxKeyLength === void 0) { maxKeyLength = DEFAULT_MAX_KEY_LENGTH; }\n if (maxLengthPerKey === void 0) { maxLengthPerKey = DEFAULT_MAX_LENGTH_PER_KEY; }\n this.maxKeyLength = maxKeyLength;\n this.maxLengthPerKey = maxLengthPerKey;\n this.hit = 0;\n this.miss = 0;\n // avoid `new Array(N)`, which makes a sparse array,\n // because a sparse array is typically slower than a non-sparse array.\n this.caches = [];\n for (var i = 0; i < this.maxKeyLength; i++) {\n this.caches.push([]);\n }\n }\n CachedKeyDecoder.prototype.canBeCached = function (byteLength) {\n return byteLength > 0 && byteLength <= this.maxKeyLength;\n };\n CachedKeyDecoder.prototype.find = function (bytes, inputOffset, byteLength) {\n var records = this.caches[byteLength - 1];\n FIND_CHUNK: for (var _i = 0, records_1 = records; _i < records_1.length; _i++) {\n var record = records_1[_i];\n var recordBytes = record.bytes;\n for (var j = 0; j < byteLength; j++) {\n if (recordBytes[j] !== bytes[inputOffset + j]) {\n continue FIND_CHUNK;\n }\n }\n return record.str;\n }\n return null;\n };\n CachedKeyDecoder.prototype.store = function (bytes, value) {\n var records = this.caches[bytes.length - 1];\n var record = { bytes: bytes, str: value };\n if (records.length >= this.maxLengthPerKey) {\n // `records` are full!\n // Set `record` to an arbitrary position.\n records[(Math.random() * records.length) | 0] = record;\n }\n else {\n records.push(record);\n }\n };\n CachedKeyDecoder.prototype.decode = function (bytes, inputOffset, byteLength) {\n var cachedValue = this.find(bytes, inputOffset, byteLength);\n if (cachedValue != null) {\n this.hit++;\n return cachedValue;\n }\n this.miss++;\n var str = utf8DecodeJs(bytes, inputOffset, byteLength);\n // Ensure to copy a slice of bytes because the byte may be NodeJS Buffer and Buffer#slice() returns a reference to its internal ArrayBuffer.\n var slicedCopyOfBytes = Uint8Array.prototype.slice.call(bytes, inputOffset, inputOffset + byteLength);\n this.store(slicedCopyOfBytes, str);\n return str;\n };\n return CachedKeyDecoder;\n}());\nexport { CachedKeyDecoder };\n//# sourceMappingURL=CachedKeyDecoder.mjs.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __asyncValues = (this && this.__asyncValues) || function (o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n};\nvar __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }\nvar __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n};\nimport { prettyByte } from \"./utils/prettyByte.mjs\";\nimport { ExtensionCodec } from \"./ExtensionCodec.mjs\";\nimport { getInt64, getUint64, UINT32_MAX } from \"./utils/int.mjs\";\nimport { utf8DecodeJs, TEXT_DECODER_THRESHOLD, utf8DecodeTD } from \"./utils/utf8.mjs\";\nimport { createDataView, ensureUint8Array } from \"./utils/typedArrays.mjs\";\nimport { CachedKeyDecoder } from \"./CachedKeyDecoder.mjs\";\nimport { DecodeError } from \"./DecodeError.mjs\";\nvar isValidMapKeyType = function (key) {\n var keyType = typeof key;\n return keyType === \"string\" || keyType === \"number\";\n};\nvar HEAD_BYTE_REQUIRED = -1;\nvar EMPTY_VIEW = new DataView(new ArrayBuffer(0));\nvar EMPTY_BYTES = new Uint8Array(EMPTY_VIEW.buffer);\n// IE11: Hack to support IE11.\n// IE11: Drop this hack and just use RangeError when IE11 is obsolete.\nexport var DataViewIndexOutOfBoundsError = (function () {\n try {\n // IE11: The spec says it should throw RangeError,\n // IE11: but in IE11 it throws TypeError.\n EMPTY_VIEW.getInt8(0);\n }\n catch (e) {\n return e.constructor;\n }\n throw new Error(\"never reached\");\n})();\nvar MORE_DATA = new DataViewIndexOutOfBoundsError(\"Insufficient data\");\nvar sharedCachedKeyDecoder = new CachedKeyDecoder();\nvar Decoder = /** @class */ (function () {\n function Decoder(extensionCodec, context, maxStrLength, maxBinLength, maxArrayLength, maxMapLength, maxExtLength, keyDecoder) {\n if (extensionCodec === void 0) { extensionCodec = ExtensionCodec.defaultCodec; }\n if (context === void 0) { context = undefined; }\n if (maxStrLength === void 0) { maxStrLength = UINT32_MAX; }\n if (maxBinLength === void 0) { maxBinLength = UINT32_MAX; }\n if (maxArrayLength === void 0) { maxArrayLength = UINT32_MAX; }\n if (maxMapLength === void 0) { maxMapLength = UINT32_MAX; }\n if (maxExtLength === void 0) { maxExtLength = UINT32_MAX; }\n if (keyDecoder === void 0) { keyDecoder = sharedCachedKeyDecoder; }\n this.extensionCodec = extensionCodec;\n this.context = context;\n this.maxStrLength = maxStrLength;\n this.maxBinLength = maxBinLength;\n this.maxArrayLength = maxArrayLength;\n this.maxMapLength = maxMapLength;\n this.maxExtLength = maxExtLength;\n this.keyDecoder = keyDecoder;\n this.totalPos = 0;\n this.pos = 0;\n this.view = EMPTY_VIEW;\n this.bytes = EMPTY_BYTES;\n this.headByte = HEAD_BYTE_REQUIRED;\n this.stack = [];\n }\n Decoder.prototype.reinitializeState = function () {\n this.totalPos = 0;\n this.headByte = HEAD_BYTE_REQUIRED;\n this.stack.length = 0;\n // view, bytes, and pos will be re-initialized in setBuffer()\n };\n Decoder.prototype.setBuffer = function (buffer) {\n this.bytes = ensureUint8Array(buffer);\n this.view = createDataView(this.bytes);\n this.pos = 0;\n };\n Decoder.prototype.appendBuffer = function (buffer) {\n if (this.headByte === HEAD_BYTE_REQUIRED && !this.hasRemaining(1)) {\n this.setBuffer(buffer);\n }\n else {\n var remainingData = this.bytes.subarray(this.pos);\n var newData = ensureUint8Array(buffer);\n // concat remainingData + newData\n var newBuffer = new Uint8Array(remainingData.length + newData.length);\n newBuffer.set(remainingData);\n newBuffer.set(newData, remainingData.length);\n this.setBuffer(newBuffer);\n }\n };\n Decoder.prototype.hasRemaining = function (size) {\n return this.view.byteLength - this.pos >= size;\n };\n Decoder.prototype.createExtraByteError = function (posToShow) {\n var _a = this, view = _a.view, pos = _a.pos;\n return new RangeError(\"Extra \".concat(view.byteLength - pos, \" of \").concat(view.byteLength, \" byte(s) found at buffer[\").concat(posToShow, \"]\"));\n };\n /**\n * @throws {@link DecodeError}\n * @throws {@link RangeError}\n */\n Decoder.prototype.decode = function (buffer) {\n this.reinitializeState();\n this.setBuffer(buffer);\n var object = this.doDecodeSync();\n if (this.hasRemaining(1)) {\n throw this.createExtraByteError(this.pos);\n }\n return object;\n };\n Decoder.prototype.decodeMulti = function (buffer) {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.reinitializeState();\n this.setBuffer(buffer);\n _a.label = 1;\n case 1:\n if (!this.hasRemaining(1)) return [3 /*break*/, 3];\n return [4 /*yield*/, this.doDecodeSync()];\n case 2:\n _a.sent();\n return [3 /*break*/, 1];\n case 3: return [2 /*return*/];\n }\n });\n };\n Decoder.prototype.decodeAsync = function (stream) {\n var stream_1, stream_1_1;\n var e_1, _a;\n return __awaiter(this, void 0, void 0, function () {\n var decoded, object, buffer, e_1_1, _b, headByte, pos, totalPos;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n decoded = false;\n _c.label = 1;\n case 1:\n _c.trys.push([1, 6, 7, 12]);\n stream_1 = __asyncValues(stream);\n _c.label = 2;\n case 2: return [4 /*yield*/, stream_1.next()];\n case 3:\n if (!(stream_1_1 = _c.sent(), !stream_1_1.done)) return [3 /*break*/, 5];\n buffer = stream_1_1.value;\n if (decoded) {\n throw this.createExtraByteError(this.totalPos);\n }\n this.appendBuffer(buffer);\n try {\n object = this.doDecodeSync();\n decoded = true;\n }\n catch (e) {\n if (!(e instanceof DataViewIndexOutOfBoundsError)) {\n throw e; // rethrow\n }\n // fallthrough\n }\n this.totalPos += this.pos;\n _c.label = 4;\n case 4: return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 12];\n case 6:\n e_1_1 = _c.sent();\n e_1 = { error: e_1_1 };\n return [3 /*break*/, 12];\n case 7:\n _c.trys.push([7, , 10, 11]);\n if (!(stream_1_1 && !stream_1_1.done && (_a = stream_1.return))) return [3 /*break*/, 9];\n return [4 /*yield*/, _a.call(stream_1)];\n case 8:\n _c.sent();\n _c.label = 9;\n case 9: return [3 /*break*/, 11];\n case 10:\n if (e_1) throw e_1.error;\n return [7 /*endfinally*/];\n case 11: return [7 /*endfinally*/];\n case 12:\n if (decoded) {\n if (this.hasRemaining(1)) {\n throw this.createExtraByteError(this.totalPos);\n }\n return [2 /*return*/, object];\n }\n _b = this, headByte = _b.headByte, pos = _b.pos, totalPos = _b.totalPos;\n throw new RangeError(\"Insufficient data in parsing \".concat(prettyByte(headByte), \" at \").concat(totalPos, \" (\").concat(pos, \" in the current buffer)\"));\n }\n });\n });\n };\n Decoder.prototype.decodeArrayStream = function (stream) {\n return this.decodeMultiAsync(stream, true);\n };\n Decoder.prototype.decodeStream = function (stream) {\n return this.decodeMultiAsync(stream, false);\n };\n Decoder.prototype.decodeMultiAsync = function (stream, isArray) {\n return __asyncGenerator(this, arguments, function decodeMultiAsync_1() {\n var isArrayHeaderRequired, arrayItemsLeft, stream_2, stream_2_1, buffer, e_2, e_3_1;\n var e_3, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n isArrayHeaderRequired = isArray;\n arrayItemsLeft = -1;\n _b.label = 1;\n case 1:\n _b.trys.push([1, 13, 14, 19]);\n stream_2 = __asyncValues(stream);\n _b.label = 2;\n case 2: return [4 /*yield*/, __await(stream_2.next())];\n case 3:\n if (!(stream_2_1 = _b.sent(), !stream_2_1.done)) return [3 /*break*/, 12];\n buffer = stream_2_1.value;\n if (isArray && arrayItemsLeft === 0) {\n throw this.createExtraByteError(this.totalPos);\n }\n this.appendBuffer(buffer);\n if (isArrayHeaderRequired) {\n arrayItemsLeft = this.readArraySize();\n isArrayHeaderRequired = false;\n this.complete();\n }\n _b.label = 4;\n case 4:\n _b.trys.push([4, 9, , 10]);\n _b.label = 5;\n case 5:\n if (!true) return [3 /*break*/, 8];\n return [4 /*yield*/, __await(this.doDecodeSync())];\n case 6: return [4 /*yield*/, _b.sent()];\n case 7:\n _b.sent();\n if (--arrayItemsLeft === 0) {\n return [3 /*break*/, 8];\n }\n return [3 /*break*/, 5];\n case 8: return [3 /*break*/, 10];\n case 9:\n e_2 = _b.sent();\n if (!(e_2 instanceof DataViewIndexOutOfBoundsError)) {\n throw e_2; // rethrow\n }\n return [3 /*break*/, 10];\n case 10:\n this.totalPos += this.pos;\n _b.label = 11;\n case 11: return [3 /*break*/, 2];\n case 12: return [3 /*break*/, 19];\n case 13:\n e_3_1 = _b.sent();\n e_3 = { error: e_3_1 };\n return [3 /*break*/, 19];\n case 14:\n _b.trys.push([14, , 17, 18]);\n if (!(stream_2_1 && !stream_2_1.done && (_a = stream_2.return))) return [3 /*break*/, 16];\n return [4 /*yield*/, __await(_a.call(stream_2))];\n case 15:\n _b.sent();\n _b.label = 16;\n case 16: return [3 /*break*/, 18];\n case 17:\n if (e_3) throw e_3.error;\n return [7 /*endfinally*/];\n case 18: return [7 /*endfinally*/];\n case 19: return [2 /*return*/];\n }\n });\n });\n };\n Decoder.prototype.doDecodeSync = function () {\n DECODE: while (true) {\n var headByte = this.readHeadByte();\n var object = void 0;\n if (headByte >= 0xe0) {\n // negative fixint (111x xxxx) 0xe0 - 0xff\n object = headByte - 0x100;\n }\n else if (headByte < 0xc0) {\n if (headByte < 0x80) {\n // positive fixint (0xxx xxxx) 0x00 - 0x7f\n object = headByte;\n }\n else if (headByte < 0x90) {\n // fixmap (1000 xxxx) 0x80 - 0x8f\n var size = headByte - 0x80;\n if (size !== 0) {\n this.pushMapState(size);\n this.complete();\n continue DECODE;\n }\n else {\n object = {};\n }\n }\n else if (headByte < 0xa0) {\n // fixarray (1001 xxxx) 0x90 - 0x9f\n var size = headByte - 0x90;\n if (size !== 0) {\n this.pushArrayState(size);\n this.complete();\n continue DECODE;\n }\n else {\n object = [];\n }\n }\n else {\n // fixstr (101x xxxx) 0xa0 - 0xbf\n var byteLength = headByte - 0xa0;\n object = this.decodeUtf8String(byteLength, 0);\n }\n }\n else if (headByte === 0xc0) {\n // nil\n object = null;\n }\n else if (headByte === 0xc2) {\n // false\n object = false;\n }\n else if (headByte === 0xc3) {\n // true\n object = true;\n }\n else if (headByte === 0xca) {\n // float 32\n object = this.readF32();\n }\n else if (headByte === 0xcb) {\n // float 64\n object = this.readF64();\n }\n else if (headByte === 0xcc) {\n // uint 8\n object = this.readU8();\n }\n else if (headByte === 0xcd) {\n // uint 16\n object = this.readU16();\n }\n else if (headByte === 0xce) {\n // uint 32\n object = this.readU32();\n }\n else if (headByte === 0xcf) {\n // uint 64\n object = this.readU64();\n }\n else if (headByte === 0xd0) {\n // int 8\n object = this.readI8();\n }\n else if (headByte === 0xd1) {\n // int 16\n object = this.readI16();\n }\n else if (headByte === 0xd2) {\n // int 32\n object = this.readI32();\n }\n else if (headByte === 0xd3) {\n // int 64\n object = this.readI64();\n }\n else if (headByte === 0xd9) {\n // str 8\n var byteLength = this.lookU8();\n object = this.decodeUtf8String(byteLength, 1);\n }\n else if (headByte === 0xda) {\n // str 16\n var byteLength = this.lookU16();\n object = this.decodeUtf8String(byteLength, 2);\n }\n else if (headByte === 0xdb) {\n // str 32\n var byteLength = this.lookU32();\n object = this.decodeUtf8String(byteLength, 4);\n }\n else if (headByte === 0xdc) {\n // array 16\n var size = this.readU16();\n if (size !== 0) {\n this.pushArrayState(size);\n this.complete();\n continue DECODE;\n }\n else {\n object = [];\n }\n }\n else if (headByte === 0xdd) {\n // array 32\n var size = this.readU32();\n if (size !== 0) {\n this.pushArrayState(size);\n this.complete();\n continue DECODE;\n }\n else {\n object = [];\n }\n }\n else if (headByte === 0xde) {\n // map 16\n var size = this.readU16();\n if (size !== 0) {\n this.pushMapState(size);\n this.complete();\n continue DECODE;\n }\n else {\n object = {};\n }\n }\n else if (headByte === 0xdf) {\n // map 32\n var size = this.readU32();\n if (size !== 0) {\n this.pushMapState(size);\n this.complete();\n continue DECODE;\n }\n else {\n object = {};\n }\n }\n else if (headByte === 0xc4) {\n // bin 8\n var size = this.lookU8();\n object = this.decodeBinary(size, 1);\n }\n else if (headByte === 0xc5) {\n // bin 16\n var size = this.lookU16();\n object = this.decodeBinary(size, 2);\n }\n else if (headByte === 0xc6) {\n // bin 32\n var size = this.lookU32();\n object = this.decodeBinary(size, 4);\n }\n else if (headByte === 0xd4) {\n // fixext 1\n object = this.decodeExtension(1, 0);\n }\n else if (headByte === 0xd5) {\n // fixext 2\n object = this.decodeExtension(2, 0);\n }\n else if (headByte === 0xd6) {\n // fixext 4\n object = this.decodeExtension(4, 0);\n }\n else if (headByte === 0xd7) {\n // fixext 8\n object = this.decodeExtension(8, 0);\n }\n else if (headByte === 0xd8) {\n // fixext 16\n object = this.decodeExtension(16, 0);\n }\n else if (headByte === 0xc7) {\n // ext 8\n var size = this.lookU8();\n object = this.decodeExtension(size, 1);\n }\n else if (headByte === 0xc8) {\n // ext 16\n var size = this.lookU16();\n object = this.decodeExtension(size, 2);\n }\n else if (headByte === 0xc9) {\n // ext 32\n var size = this.lookU32();\n object = this.decodeExtension(size, 4);\n }\n else {\n throw new DecodeError(\"Unrecognized type byte: \".concat(prettyByte(headByte)));\n }\n this.complete();\n var stack = this.stack;\n while (stack.length > 0) {\n // arrays and maps\n var state = stack[stack.length - 1];\n if (state.type === 0 /* State.ARRAY */) {\n state.array[state.position] = object;\n state.position++;\n if (state.position === state.size) {\n stack.pop();\n object = state.array;\n }\n else {\n continue DECODE;\n }\n }\n else if (state.type === 1 /* State.MAP_KEY */) {\n if (!isValidMapKeyType(object)) {\n throw new DecodeError(\"The type of key must be string or number but \" + typeof object);\n }\n if (object === \"__proto__\") {\n throw new DecodeError(\"The key __proto__ is not allowed\");\n }\n state.key = object;\n state.type = 2 /* State.MAP_VALUE */;\n continue DECODE;\n }\n else {\n // it must be `state.type === State.MAP_VALUE` here\n state.map[state.key] = object;\n state.readCount++;\n if (state.readCount === state.size) {\n stack.pop();\n object = state.map;\n }\n else {\n state.key = null;\n state.type = 1 /* State.MAP_KEY */;\n continue DECODE;\n }\n }\n }\n return object;\n }\n };\n Decoder.prototype.readHeadByte = function () {\n if (this.headByte === HEAD_BYTE_REQUIRED) {\n this.headByte = this.readU8();\n // console.log(\"headByte\", prettyByte(this.headByte));\n }\n return this.headByte;\n };\n Decoder.prototype.complete = function () {\n this.headByte = HEAD_BYTE_REQUIRED;\n };\n Decoder.prototype.readArraySize = function () {\n var headByte = this.readHeadByte();\n switch (headByte) {\n case 0xdc:\n return this.readU16();\n case 0xdd:\n return this.readU32();\n default: {\n if (headByte < 0xa0) {\n return headByte - 0x90;\n }\n else {\n throw new DecodeError(\"Unrecognized array type byte: \".concat(prettyByte(headByte)));\n }\n }\n }\n };\n Decoder.prototype.pushMapState = function (size) {\n if (size > this.maxMapLength) {\n throw new DecodeError(\"Max length exceeded: map length (\".concat(size, \") > maxMapLengthLength (\").concat(this.maxMapLength, \")\"));\n }\n this.stack.push({\n type: 1 /* State.MAP_KEY */,\n size: size,\n key: null,\n readCount: 0,\n map: {},\n });\n };\n Decoder.prototype.pushArrayState = function (size) {\n if (size > this.maxArrayLength) {\n throw new DecodeError(\"Max length exceeded: array length (\".concat(size, \") > maxArrayLength (\").concat(this.maxArrayLength, \")\"));\n }\n this.stack.push({\n type: 0 /* State.ARRAY */,\n size: size,\n array: new Array(size),\n position: 0,\n });\n };\n Decoder.prototype.decodeUtf8String = function (byteLength, headerOffset) {\n var _a;\n if (byteLength > this.maxStrLength) {\n throw new DecodeError(\"Max length exceeded: UTF-8 byte length (\".concat(byteLength, \") > maxStrLength (\").concat(this.maxStrLength, \")\"));\n }\n if (this.bytes.byteLength < this.pos + headerOffset + byteLength) {\n throw MORE_DATA;\n }\n var offset = this.pos + headerOffset;\n var object;\n if (this.stateIsMapKey() && ((_a = this.keyDecoder) === null || _a === void 0 ? void 0 : _a.canBeCached(byteLength))) {\n object = this.keyDecoder.decode(this.bytes, offset, byteLength);\n }\n else if (byteLength > TEXT_DECODER_THRESHOLD) {\n object = utf8DecodeTD(this.bytes, offset, byteLength);\n }\n else {\n object = utf8DecodeJs(this.bytes, offset, byteLength);\n }\n this.pos += headerOffset + byteLength;\n return object;\n };\n Decoder.prototype.stateIsMapKey = function () {\n if (this.stack.length > 0) {\n var state = this.stack[this.stack.length - 1];\n return state.type === 1 /* State.MAP_KEY */;\n }\n return false;\n };\n Decoder.prototype.decodeBinary = function (byteLength, headOffset) {\n if (byteLength > this.maxBinLength) {\n throw new DecodeError(\"Max length exceeded: bin length (\".concat(byteLength, \") > maxBinLength (\").concat(this.maxBinLength, \")\"));\n }\n if (!this.hasRemaining(byteLength + headOffset)) {\n throw MORE_DATA;\n }\n var offset = this.pos + headOffset;\n var object = this.bytes.subarray(offset, offset + byteLength);\n this.pos += headOffset + byteLength;\n return object;\n };\n Decoder.prototype.decodeExtension = function (size, headOffset) {\n if (size > this.maxExtLength) {\n throw new DecodeError(\"Max length exceeded: ext length (\".concat(size, \") > maxExtLength (\").concat(this.maxExtLength, \")\"));\n }\n var extType = this.view.getInt8(this.pos + headOffset);\n var data = this.decodeBinary(size, headOffset + 1 /* extType */);\n return this.extensionCodec.decode(data, extType, this.context);\n };\n Decoder.prototype.lookU8 = function () {\n return this.view.getUint8(this.pos);\n };\n Decoder.prototype.lookU16 = function () {\n return this.view.getUint16(this.pos);\n };\n Decoder.prototype.lookU32 = function () {\n return this.view.getUint32(this.pos);\n };\n Decoder.prototype.readU8 = function () {\n var value = this.view.getUint8(this.pos);\n this.pos++;\n return value;\n };\n Decoder.prototype.readI8 = function () {\n var value = this.view.getInt8(this.pos);\n this.pos++;\n return value;\n };\n Decoder.prototype.readU16 = function () {\n var value = this.view.getUint16(this.pos);\n this.pos += 2;\n return value;\n };\n Decoder.prototype.readI16 = function () {\n var value = this.view.getInt16(this.pos);\n this.pos += 2;\n return value;\n };\n Decoder.prototype.readU32 = function () {\n var value = this.view.getUint32(this.pos);\n this.pos += 4;\n return value;\n };\n Decoder.prototype.readI32 = function () {\n var value = this.view.getInt32(this.pos);\n this.pos += 4;\n return value;\n };\n Decoder.prototype.readU64 = function () {\n var value = getUint64(this.view, this.pos);\n this.pos += 8;\n return value;\n };\n Decoder.prototype.readI64 = function () {\n var value = getInt64(this.view, this.pos);\n this.pos += 8;\n return value;\n };\n Decoder.prototype.readF32 = function () {\n var value = this.view.getFloat32(this.pos);\n this.pos += 4;\n return value;\n };\n Decoder.prototype.readF64 = function () {\n var value = this.view.getFloat64(this.pos);\n this.pos += 8;\n return value;\n };\n return Decoder;\n}());\nexport { Decoder };\n//# sourceMappingURL=Decoder.mjs.map","import { Decoder } from \"./Decoder.mjs\";\nexport var defaultDecodeOptions = {};\n/**\n * It decodes a single MessagePack object in a buffer.\n *\n * This is a synchronous decoding function.\n * See other variants for asynchronous decoding: {@link decodeAsync()}, {@link decodeStream()}, or {@link decodeArrayStream()}.\n *\n * @throws {@link RangeError} if the buffer is incomplete, including the case where the buffer is empty.\n * @throws {@link DecodeError} if the buffer contains invalid data.\n */\nexport function decode(buffer, options) {\n if (options === void 0) { options = defaultDecodeOptions; }\n var decoder = new Decoder(options.extensionCodec, options.context, options.maxStrLength, options.maxBinLength, options.maxArrayLength, options.maxMapLength, options.maxExtLength);\n return decoder.decode(buffer);\n}\n/**\n * It decodes multiple MessagePack objects in a buffer.\n * This is corresponding to {@link decodeMultiStream()}.\n *\n * @throws {@link RangeError} if the buffer is incomplete, including the case where the buffer is empty.\n * @throws {@link DecodeError} if the buffer contains invalid data.\n */\nexport function decodeMulti(buffer, options) {\n if (options === void 0) { options = defaultDecodeOptions; }\n var decoder = new Decoder(options.extensionCodec, options.context, options.maxStrLength, options.maxBinLength, options.maxArrayLength, options.maxMapLength, options.maxExtLength);\n return decoder.decodeMulti(buffer);\n}\n//# sourceMappingURL=decode.mjs.map","export function sortObject(obj) {\n if (typeof obj !== 'object') {\n return obj;\n }\n let temp = {};\n let keys = [];\n for (let key in obj) {\n keys.push(key);\n }\n keys.sort();\n for (let index in keys) {\n temp[keys[index]] = sortObject(obj[keys[index]]);\n }\n return temp;\n}\n\nexport function copyTextToClipboard(text) {\n let textArea = document.createElement('textarea');\n textArea.value = text;\n document.body.appendChild(textArea);\n textArea.select();\n try {\n let successful = document.execCommand('copy');\n let msg = successful ? 'successful' : 'unsuccessful';\n console.log('Copying text command was ' + msg);\n } catch (err) {\n console.log('Oops, unable to copy');\n }\n document.body.removeChild(textArea);\n}\n","//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n return name.match('^[^/\\\\\\\\]*$') != null;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\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)?)?$/,\n basicIsoRegex =\n /^\\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)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.4';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n TIME: 'HH:mm', // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n MONTH: 'YYYY-MM', // <input type=\"month\" />\n };\n\n return hooks;\n\n})));\n","/*!\n * Chart.js v2.9.4\n * https://www.chartjs.org\n * (c) 2020 Chart.js Contributors\n * Released under the MIT License\n */\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(function() { try { return require('moment'); } catch(e) { } }()) :\ntypeof define === 'function' && define.amd ? define(['require'], function(require) { return factory(function() { try { return require('moment'); } catch(e) { } }()); }) :\n(global = global || self, global.Chart = factory(global.moment));\n}(this, (function (moment) { 'use strict';\n\nmoment = moment && moment.hasOwnProperty('default') ? moment['default'] : moment;\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nfunction getCjsExportFromNamespace (n) {\n\treturn n && n['default'] || n;\n}\n\nvar colorName = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\n\nvar conversions = createCommonjsModule(function (module) {\n/* MIT license */\n\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in colorName) {\n\tif (colorName.hasOwnProperty(key)) {\n\t\treverseKeywords[colorName[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in colorName) {\n\t\tif (colorName.hasOwnProperty(keyword)) {\n\t\t\tvar value = colorName[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn colorName[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n});\nvar conversions_1 = conversions.rgb;\nvar conversions_2 = conversions.hsl;\nvar conversions_3 = conversions.hsv;\nvar conversions_4 = conversions.hwb;\nvar conversions_5 = conversions.cmyk;\nvar conversions_6 = conversions.xyz;\nvar conversions_7 = conversions.lab;\nvar conversions_8 = conversions.lch;\nvar conversions_9 = conversions.hex;\nvar conversions_10 = conversions.keyword;\nvar conversions_11 = conversions.ansi16;\nvar conversions_12 = conversions.ansi256;\nvar conversions_13 = conversions.hcg;\nvar conversions_14 = conversions.apple;\nvar conversions_15 = conversions.gray;\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nvar route = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nvar colorConvert = convert;\n\nvar colorName$1 = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\n\n/* MIT license */\n\n\nvar colorString = {\n getRgba: getRgba,\n getHsla: getHsla,\n getRgb: getRgb,\n getHsl: getHsl,\n getHwb: getHwb,\n getAlpha: getAlpha,\n\n hexString: hexString,\n rgbString: rgbString,\n rgbaString: rgbaString,\n percentString: percentString,\n percentaString: percentaString,\n hslString: hslString,\n hslaString: hslaString,\n hwbString: hwbString,\n keyword: keyword\n};\n\nfunction getRgba(string) {\n if (!string) {\n return;\n }\n var abbr = /^#([a-fA-F0-9]{3,4})$/i,\n hex = /^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i,\n rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n keyword = /(\\w+)/;\n\n var rgb = [0, 0, 0],\n a = 1,\n match = string.match(abbr),\n hexAlpha = \"\";\n if (match) {\n match = match[1];\n hexAlpha = match[3];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i] + match[i], 16);\n }\n if (hexAlpha) {\n a = Math.round((parseInt(hexAlpha + hexAlpha, 16) / 255) * 100) / 100;\n }\n }\n else if (match = string.match(hex)) {\n hexAlpha = match[2];\n match = match[1];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match.slice(i * 2, i * 2 + 2), 16);\n }\n if (hexAlpha) {\n a = Math.round((parseInt(hexAlpha, 16) / 255) * 100) / 100;\n }\n }\n else if (match = string.match(rgba)) {\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i + 1]);\n }\n a = parseFloat(match[4]);\n }\n else if (match = string.match(per)) {\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n }\n a = parseFloat(match[4]);\n }\n else if (match = string.match(keyword)) {\n if (match[1] == \"transparent\") {\n return [0, 0, 0, 0];\n }\n rgb = colorName$1[match[1]];\n if (!rgb) {\n return;\n }\n }\n\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = scale(rgb[i], 0, 255);\n }\n if (!a && a != 0) {\n a = 1;\n }\n else {\n a = scale(a, 0, 1);\n }\n rgb[3] = a;\n return rgb;\n}\n\nfunction getHsla(string) {\n if (!string) {\n return;\n }\n var hsl = /^hsla?\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n var match = string.match(hsl);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = scale(parseInt(match[1]), 0, 360),\n s = scale(parseFloat(match[2]), 0, 100),\n l = scale(parseFloat(match[3]), 0, 100),\n a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, s, l, a];\n }\n}\n\nfunction getHwb(string) {\n if (!string) {\n return;\n }\n var hwb = /^hwb\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n var match = string.match(hwb);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = scale(parseInt(match[1]), 0, 360),\n w = scale(parseFloat(match[2]), 0, 100),\n b = scale(parseFloat(match[3]), 0, 100),\n a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, w, b, a];\n }\n}\n\nfunction getRgb(string) {\n var rgba = getRgba(string);\n return rgba && rgba.slice(0, 3);\n}\n\nfunction getHsl(string) {\n var hsla = getHsla(string);\n return hsla && hsla.slice(0, 3);\n}\n\nfunction getAlpha(string) {\n var vals = getRgba(string);\n if (vals) {\n return vals[3];\n }\n else if (vals = getHsla(string)) {\n return vals[3];\n }\n else if (vals = getHwb(string)) {\n return vals[3];\n }\n}\n\n// generators\nfunction hexString(rgba, a) {\n var a = (a !== undefined && rgba.length === 3) ? a : rgba[3];\n return \"#\" + hexDouble(rgba[0]) \n + hexDouble(rgba[1])\n + hexDouble(rgba[2])\n + (\n (a >= 0 && a < 1)\n ? hexDouble(Math.round(a * 255))\n : \"\"\n );\n}\n\nfunction rgbString(rgba, alpha) {\n if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n return rgbaString(rgba, alpha);\n }\n return \"rgb(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2] + \")\";\n}\n\nfunction rgbaString(rgba, alpha) {\n if (alpha === undefined) {\n alpha = (rgba[3] !== undefined ? rgba[3] : 1);\n }\n return \"rgba(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2]\n + \", \" + alpha + \")\";\n}\n\nfunction percentString(rgba, alpha) {\n if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n return percentaString(rgba, alpha);\n }\n var r = Math.round(rgba[0]/255 * 100),\n g = Math.round(rgba[1]/255 * 100),\n b = Math.round(rgba[2]/255 * 100);\n\n return \"rgb(\" + r + \"%, \" + g + \"%, \" + b + \"%)\";\n}\n\nfunction percentaString(rgba, alpha) {\n var r = Math.round(rgba[0]/255 * 100),\n g = Math.round(rgba[1]/255 * 100),\n b = Math.round(rgba[2]/255 * 100);\n return \"rgba(\" + r + \"%, \" + g + \"%, \" + b + \"%, \" + (alpha || rgba[3] || 1) + \")\";\n}\n\nfunction hslString(hsla, alpha) {\n if (alpha < 1 || (hsla[3] && hsla[3] < 1)) {\n return hslaString(hsla, alpha);\n }\n return \"hsl(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%)\";\n}\n\nfunction hslaString(hsla, alpha) {\n if (alpha === undefined) {\n alpha = (hsla[3] !== undefined ? hsla[3] : 1);\n }\n return \"hsla(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%, \"\n + alpha + \")\";\n}\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\nfunction hwbString(hwb, alpha) {\n if (alpha === undefined) {\n alpha = (hwb[3] !== undefined ? hwb[3] : 1);\n }\n return \"hwb(\" + hwb[0] + \", \" + hwb[1] + \"%, \" + hwb[2] + \"%\"\n + (alpha !== undefined && alpha !== 1 ? \", \" + alpha : \"\") + \")\";\n}\n\nfunction keyword(rgb) {\n return reverseNames[rgb.slice(0, 3)];\n}\n\n// helpers\nfunction scale(num, min, max) {\n return Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n var str = num.toString(16).toUpperCase();\n return (str.length < 2) ? \"0\" + str : str;\n}\n\n\n//create a list of reverse color names\nvar reverseNames = {};\nfor (var name in colorName$1) {\n reverseNames[colorName$1[name]] = name;\n}\n\n/* MIT license */\n\n\n\nvar Color = function (obj) {\n\tif (obj instanceof Color) {\n\t\treturn obj;\n\t}\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj);\n\t}\n\n\tthis.valid = false;\n\tthis.values = {\n\t\trgb: [0, 0, 0],\n\t\thsl: [0, 0, 0],\n\t\thsv: [0, 0, 0],\n\t\thwb: [0, 0, 0],\n\t\tcmyk: [0, 0, 0, 0],\n\t\talpha: 1\n\t};\n\n\t// parse Color() argument\n\tvar vals;\n\tif (typeof obj === 'string') {\n\t\tvals = colorString.getRgba(obj);\n\t\tif (vals) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals = colorString.getHsla(obj)) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals = colorString.getHwb(obj)) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t}\n\t} else if (typeof obj === 'object') {\n\t\tvals = obj;\n\t\tif (vals.r !== undefined || vals.red !== undefined) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals.l !== undefined || vals.lightness !== undefined) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals.v !== undefined || vals.value !== undefined) {\n\t\t\tthis.setValues('hsv', vals);\n\t\t} else if (vals.w !== undefined || vals.whiteness !== undefined) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t} else if (vals.c !== undefined || vals.cyan !== undefined) {\n\t\t\tthis.setValues('cmyk', vals);\n\t\t}\n\t}\n};\n\nColor.prototype = {\n\tisValid: function () {\n\t\treturn this.valid;\n\t},\n\trgb: function () {\n\t\treturn this.setSpace('rgb', arguments);\n\t},\n\thsl: function () {\n\t\treturn this.setSpace('hsl', arguments);\n\t},\n\thsv: function () {\n\t\treturn this.setSpace('hsv', arguments);\n\t},\n\thwb: function () {\n\t\treturn this.setSpace('hwb', arguments);\n\t},\n\tcmyk: function () {\n\t\treturn this.setSpace('cmyk', arguments);\n\t},\n\n\trgbArray: function () {\n\t\treturn this.values.rgb;\n\t},\n\thslArray: function () {\n\t\treturn this.values.hsl;\n\t},\n\thsvArray: function () {\n\t\treturn this.values.hsv;\n\t},\n\thwbArray: function () {\n\t\tvar values = this.values;\n\t\tif (values.alpha !== 1) {\n\t\t\treturn values.hwb.concat([values.alpha]);\n\t\t}\n\t\treturn values.hwb;\n\t},\n\tcmykArray: function () {\n\t\treturn this.values.cmyk;\n\t},\n\trgbaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.rgb.concat([values.alpha]);\n\t},\n\thslaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.hsl.concat([values.alpha]);\n\t},\n\talpha: function (val) {\n\t\tif (val === undefined) {\n\t\t\treturn this.values.alpha;\n\t\t}\n\t\tthis.setValues('alpha', val);\n\t\treturn this;\n\t},\n\n\tred: function (val) {\n\t\treturn this.setChannel('rgb', 0, val);\n\t},\n\tgreen: function (val) {\n\t\treturn this.setChannel('rgb', 1, val);\n\t},\n\tblue: function (val) {\n\t\treturn this.setChannel('rgb', 2, val);\n\t},\n\thue: function (val) {\n\t\tif (val) {\n\t\t\tval %= 360;\n\t\t\tval = val < 0 ? 360 + val : val;\n\t\t}\n\t\treturn this.setChannel('hsl', 0, val);\n\t},\n\tsaturation: function (val) {\n\t\treturn this.setChannel('hsl', 1, val);\n\t},\n\tlightness: function (val) {\n\t\treturn this.setChannel('hsl', 2, val);\n\t},\n\tsaturationv: function (val) {\n\t\treturn this.setChannel('hsv', 1, val);\n\t},\n\twhiteness: function (val) {\n\t\treturn this.setChannel('hwb', 1, val);\n\t},\n\tblackness: function (val) {\n\t\treturn this.setChannel('hwb', 2, val);\n\t},\n\tvalue: function (val) {\n\t\treturn this.setChannel('hsv', 2, val);\n\t},\n\tcyan: function (val) {\n\t\treturn this.setChannel('cmyk', 0, val);\n\t},\n\tmagenta: function (val) {\n\t\treturn this.setChannel('cmyk', 1, val);\n\t},\n\tyellow: function (val) {\n\t\treturn this.setChannel('cmyk', 2, val);\n\t},\n\tblack: function (val) {\n\t\treturn this.setChannel('cmyk', 3, val);\n\t},\n\n\thexString: function () {\n\t\treturn colorString.hexString(this.values.rgb);\n\t},\n\trgbString: function () {\n\t\treturn colorString.rgbString(this.values.rgb, this.values.alpha);\n\t},\n\trgbaString: function () {\n\t\treturn colorString.rgbaString(this.values.rgb, this.values.alpha);\n\t},\n\tpercentString: function () {\n\t\treturn colorString.percentString(this.values.rgb, this.values.alpha);\n\t},\n\thslString: function () {\n\t\treturn colorString.hslString(this.values.hsl, this.values.alpha);\n\t},\n\thslaString: function () {\n\t\treturn colorString.hslaString(this.values.hsl, this.values.alpha);\n\t},\n\thwbString: function () {\n\t\treturn colorString.hwbString(this.values.hwb, this.values.alpha);\n\t},\n\tkeyword: function () {\n\t\treturn colorString.keyword(this.values.rgb, this.values.alpha);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.values.rgb;\n\t\treturn (rgb[0] << 16) | (rgb[1] << 8) | rgb[2];\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.values.rgb;\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tdark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.values.rgb;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tlight: function () {\n\t\treturn !this.dark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = [];\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb[i] = 255 - this.values.rgb[i];\n\t\t}\n\t\tthis.setValues('rgb', rgb);\n\t\treturn this;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] += hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] -= hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] += hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] -= hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[1] += hwb[1] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[2] += hwb[2] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tgreyscale: function () {\n\t\tvar rgb = this.values.rgb;\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\tthis.setValues('rgb', [val, val, val]);\n\t\treturn this;\n\t},\n\n\tclearer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha - (alpha * ratio));\n\t\treturn this;\n\t},\n\n\topaquer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha + (alpha * ratio));\n\t\treturn this;\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.values.hsl;\n\t\tvar hue = (hsl[0] + degrees) % 360;\n\t\thsl[0] = hue < 0 ? 360 + hue : hue;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\t/**\n\t * Ported from sass implementation in C\n\t * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t */\n\tmix: function (mixinColor, weight) {\n\t\tvar color1 = this;\n\t\tvar color2 = mixinColor;\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn this\n\t\t\t.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue()\n\t\t\t)\n\t\t\t.alpha(color1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n\n\ttoJSON: function () {\n\t\treturn this.rgb();\n\t},\n\n\tclone: function () {\n\t\t// NOTE(SB): using node-clone creates a dependency to Buffer when using browserify,\n\t\t// making the final build way to big to embed in Chart.js. So let's do it manually,\n\t\t// assuming that values to clone are 1 dimension arrays containing only numbers,\n\t\t// except 'alpha' which is a number.\n\t\tvar result = new Color();\n\t\tvar source = this.values;\n\t\tvar target = result.values;\n\t\tvar value, type;\n\n\t\tfor (var prop in source) {\n\t\t\tif (source.hasOwnProperty(prop)) {\n\t\t\t\tvalue = source[prop];\n\t\t\t\ttype = ({}).toString.call(value);\n\t\t\t\tif (type === '[object Array]') {\n\t\t\t\t\ttarget[prop] = value.slice(0);\n\t\t\t\t} else if (type === '[object Number]') {\n\t\t\t\t\ttarget[prop] = value;\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('unexpected color value:', value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n};\n\nColor.prototype.spaces = {\n\trgb: ['red', 'green', 'blue'],\n\thsl: ['hue', 'saturation', 'lightness'],\n\thsv: ['hue', 'saturation', 'value'],\n\thwb: ['hue', 'whiteness', 'blackness'],\n\tcmyk: ['cyan', 'magenta', 'yellow', 'black']\n};\n\nColor.prototype.maxes = {\n\trgb: [255, 255, 255],\n\thsl: [360, 100, 100],\n\thsv: [360, 100, 100],\n\thwb: [360, 100, 100],\n\tcmyk: [100, 100, 100, 100]\n};\n\nColor.prototype.getValues = function (space) {\n\tvar values = this.values;\n\tvar vals = {};\n\n\tfor (var i = 0; i < space.length; i++) {\n\t\tvals[space.charAt(i)] = values[space][i];\n\t}\n\n\tif (values.alpha !== 1) {\n\t\tvals.a = values.alpha;\n\t}\n\n\t// {r: 255, g: 255, b: 255, a: 0.4}\n\treturn vals;\n};\n\nColor.prototype.setValues = function (space, vals) {\n\tvar values = this.values;\n\tvar spaces = this.spaces;\n\tvar maxes = this.maxes;\n\tvar alpha = 1;\n\tvar i;\n\n\tthis.valid = true;\n\n\tif (space === 'alpha') {\n\t\talpha = vals;\n\t} else if (vals.length) {\n\t\t// [10, 10, 10]\n\t\tvalues[space] = vals.slice(0, space.length);\n\t\talpha = vals[space.length];\n\t} else if (vals[space.charAt(0)] !== undefined) {\n\t\t// {r: 10, g: 10, b: 10}\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[space.charAt(i)];\n\t\t}\n\n\t\talpha = vals.a;\n\t} else if (vals[spaces[space][0]] !== undefined) {\n\t\t// {red: 10, green: 10, blue: 10}\n\t\tvar chans = spaces[space];\n\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[chans[i]];\n\t\t}\n\n\t\talpha = vals.alpha;\n\t}\n\n\tvalues.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha)));\n\n\tif (space === 'alpha') {\n\t\treturn false;\n\t}\n\n\tvar capped;\n\n\t// cap values of the space prior converting all values\n\tfor (i = 0; i < space.length; i++) {\n\t\tcapped = Math.max(0, Math.min(maxes[space][i], values[space][i]));\n\t\tvalues[space][i] = Math.round(capped);\n\t}\n\n\t// convert to all the other color spaces\n\tfor (var sname in spaces) {\n\t\tif (sname !== space) {\n\t\t\tvalues[sname] = colorConvert[space][sname](values[space]);\n\t\t}\n\t}\n\n\treturn true;\n};\n\nColor.prototype.setSpace = function (space, args) {\n\tvar vals = args[0];\n\n\tif (vals === undefined) {\n\t\t// color.rgb()\n\t\treturn this.getValues(space);\n\t}\n\n\t// color.rgb(10, 10, 10)\n\tif (typeof vals === 'number') {\n\t\tvals = Array.prototype.slice.call(args);\n\t}\n\n\tthis.setValues(space, vals);\n\treturn this;\n};\n\nColor.prototype.setChannel = function (space, index, val) {\n\tvar svalues = this.values[space];\n\tif (val === undefined) {\n\t\t// color.red()\n\t\treturn svalues[index];\n\t} else if (val === svalues[index]) {\n\t\t// color.red(color.red())\n\t\treturn this;\n\t}\n\n\t// color.red(100)\n\tsvalues[index] = val;\n\tthis.setValues(space, svalues);\n\n\treturn this;\n};\n\nif (typeof window !== 'undefined') {\n\twindow.Color = Color;\n}\n\nvar chartjsColor = Color;\n\nfunction isValidKey(key) {\r\n\treturn ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\r\n}\r\n\r\n/**\r\n * @namespace Chart.helpers\r\n */\r\nvar helpers = {\r\n\t/**\r\n\t * An empty function that can be used, for example, for optional callback.\r\n\t */\r\n\tnoop: function() {},\r\n\r\n\t/**\r\n\t * Returns a unique id, sequentially generated from a global variable.\r\n\t * @returns {number}\r\n\t * @function\r\n\t */\r\n\tuid: (function() {\r\n\t\tvar id = 0;\r\n\t\treturn function() {\r\n\t\t\treturn id++;\r\n\t\t};\r\n\t}()),\r\n\r\n\t/**\r\n\t * Returns true if `value` is neither null nor undefined, else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {boolean}\r\n\t * @since 2.7.0\r\n\t */\r\n\tisNullOrUndef: function(value) {\r\n\t\treturn value === null || typeof value === 'undefined';\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if `value` is an array (including typed arrays), else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {boolean}\r\n\t * @function\r\n\t */\r\n\tisArray: function(value) {\r\n\t\tif (Array.isArray && Array.isArray(value)) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar type = Object.prototype.toString.call(value);\r\n\t\tif (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if `value` is an object (excluding null), else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {boolean}\r\n\t * @since 2.7.0\r\n\t */\r\n\tisObject: function(value) {\r\n\t\treturn value !== null && Object.prototype.toString.call(value) === '[object Object]';\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if `value` is a finite number, else returns false\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {boolean}\r\n\t */\r\n\tisFinite: function(value) {\r\n\t\treturn (typeof value === 'number' || value instanceof Number) && isFinite(value);\r\n\t},\r\n\r\n\t/**\r\n\t * Returns `value` if defined, else returns `defaultValue`.\r\n\t * @param {*} value - The value to return if defined.\r\n\t * @param {*} defaultValue - The value to return if `value` is undefined.\r\n\t * @returns {*}\r\n\t */\r\n\tvalueOrDefault: function(value, defaultValue) {\r\n\t\treturn typeof value === 'undefined' ? defaultValue : value;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns value at the given `index` in array if defined, else returns `defaultValue`.\r\n\t * @param {Array} value - The array to lookup for value at `index`.\r\n\t * @param {number} index - The index in `value` to lookup for value.\r\n\t * @param {*} defaultValue - The value to return if `value[index]` is undefined.\r\n\t * @returns {*}\r\n\t */\r\n\tvalueAtIndexOrDefault: function(value, index, defaultValue) {\r\n\t\treturn helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue);\r\n\t},\r\n\r\n\t/**\r\n\t * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\r\n\t * value returned by `fn`. If `fn` is not a function, this method returns undefined.\r\n\t * @param {function} fn - The function to call.\r\n\t * @param {Array|undefined|null} args - The arguments with which `fn` should be called.\r\n\t * @param {object} [thisArg] - The value of `this` provided for the call to `fn`.\r\n\t * @returns {*}\r\n\t */\r\n\tcallback: function(fn, args, thisArg) {\r\n\t\tif (fn && typeof fn.call === 'function') {\r\n\t\t\treturn fn.apply(thisArg, args);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Note(SB) for performance sake, this method should only be used when loopable type\r\n\t * is unknown or in none intensive code (not called often and small loopable). Else\r\n\t * it's preferable to use a regular for() loop and save extra function calls.\r\n\t * @param {object|Array} loopable - The object or array to be iterated.\r\n\t * @param {function} fn - The function to call for each item.\r\n\t * @param {object} [thisArg] - The value of `this` provided for the call to `fn`.\r\n\t * @param {boolean} [reverse] - If true, iterates backward on the loopable.\r\n\t */\r\n\teach: function(loopable, fn, thisArg, reverse) {\r\n\t\tvar i, len, keys;\r\n\t\tif (helpers.isArray(loopable)) {\r\n\t\t\tlen = loopable.length;\r\n\t\t\tif (reverse) {\r\n\t\t\t\tfor (i = len - 1; i >= 0; i--) {\r\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tfor (i = 0; i < len; i++) {\r\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if (helpers.isObject(loopable)) {\r\n\t\t\tkeys = Object.keys(loopable);\r\n\t\t\tlen = keys.length;\r\n\t\t\tfor (i = 0; i < len; i++) {\r\n\t\t\t\tfn.call(thisArg, loopable[keys[i]], keys[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\r\n\t * @see https://stackoverflow.com/a/14853974\r\n\t * @param {Array} a0 - The array to compare\r\n\t * @param {Array} a1 - The array to compare\r\n\t * @returns {boolean}\r\n\t */\r\n\tarrayEquals: function(a0, a1) {\r\n\t\tvar i, ilen, v0, v1;\r\n\r\n\t\tif (!a0 || !a1 || a0.length !== a1.length) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = a0.length; i < ilen; ++i) {\r\n\t\t\tv0 = a0[i];\r\n\t\t\tv1 = a1[i];\r\n\r\n\t\t\tif (v0 instanceof Array && v1 instanceof Array) {\r\n\t\t\t\tif (!helpers.arrayEquals(v0, v1)) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t} else if (v0 !== v1) {\r\n\t\t\t\t// NOTE: two different object instances will never be equal: {x:20} != {x:20}\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns a deep copy of `source` without keeping references on objects and arrays.\r\n\t * @param {*} source - The value to clone.\r\n\t * @returns {*}\r\n\t */\r\n\tclone: function(source) {\r\n\t\tif (helpers.isArray(source)) {\r\n\t\t\treturn source.map(helpers.clone);\r\n\t\t}\r\n\r\n\t\tif (helpers.isObject(source)) {\r\n\t\t\tvar target = Object.create(source);\r\n\t\t\tvar keys = Object.keys(source);\r\n\t\t\tvar klen = keys.length;\r\n\t\t\tvar k = 0;\r\n\r\n\t\t\tfor (; k < klen; ++k) {\r\n\t\t\t\ttarget[keys[k]] = helpers.clone(source[keys[k]]);\r\n\t\t\t}\r\n\r\n\t\t\treturn target;\r\n\t\t}\r\n\r\n\t\treturn source;\r\n\t},\r\n\r\n\t/**\r\n\t * The default merger when Chart.helpers.merge is called without merger option.\r\n\t * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\r\n\t * @private\r\n\t */\r\n\t_merger: function(key, target, source, options) {\r\n\t\tif (!isValidKey(key)) {\r\n\t\t\t// We want to ensure we do not copy prototypes over\r\n\t\t\t// as this can pollute global namespaces\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar tval = target[key];\r\n\t\tvar sval = source[key];\r\n\r\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\r\n\t\t\thelpers.merge(tval, sval, options);\r\n\t\t} else {\r\n\t\t\ttarget[key] = helpers.clone(sval);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Merges source[key] in target[key] only if target[key] is undefined.\r\n\t * @private\r\n\t */\r\n\t_mergerIf: function(key, target, source) {\r\n\t\tif (!isValidKey(key)) {\r\n\t\t\t// We want to ensure we do not copy prototypes over\r\n\t\t\t// as this can pollute global namespaces\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar tval = target[key];\r\n\t\tvar sval = source[key];\r\n\r\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\r\n\t\t\thelpers.mergeIf(tval, sval);\r\n\t\t} else if (!target.hasOwnProperty(key)) {\r\n\t\t\ttarget[key] = helpers.clone(sval);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Recursively deep copies `source` properties into `target` with the given `options`.\r\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\r\n\t * @param {object} target - The target object in which all sources are merged into.\r\n\t * @param {object|object[]} source - Object(s) to merge into `target`.\r\n\t * @param {object} [options] - Merging options:\r\n\t * @param {function} [options.merger] - The merge method (key, target, source, options)\r\n\t * @returns {object} The `target` object.\r\n\t */\r\n\tmerge: function(target, source, options) {\r\n\t\tvar sources = helpers.isArray(source) ? source : [source];\r\n\t\tvar ilen = sources.length;\r\n\t\tvar merge, i, keys, klen, k;\r\n\r\n\t\tif (!helpers.isObject(target)) {\r\n\t\t\treturn target;\r\n\t\t}\r\n\r\n\t\toptions = options || {};\r\n\t\tmerge = options.merger || helpers._merger;\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\tsource = sources[i];\r\n\t\t\tif (!helpers.isObject(source)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tkeys = Object.keys(source);\r\n\t\t\tfor (k = 0, klen = keys.length; k < klen; ++k) {\r\n\t\t\t\tmerge(keys[k], target, source, options);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn target;\r\n\t},\r\n\r\n\t/**\r\n\t * Recursively deep copies `source` properties into `target` *only* if not defined in target.\r\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\r\n\t * @param {object} target - The target object in which all sources are merged into.\r\n\t * @param {object|object[]} source - Object(s) to merge into `target`.\r\n\t * @returns {object} The `target` object.\r\n\t */\r\n\tmergeIf: function(target, source) {\r\n\t\treturn helpers.merge(target, source, {merger: helpers._mergerIf});\r\n\t},\r\n\r\n\t/**\r\n\t * Applies the contents of two or more objects together into the first object.\r\n\t * @param {object} target - The target object in which all objects are merged into.\r\n\t * @param {object} arg1 - Object containing additional properties to merge in target.\r\n\t * @param {object} argN - Additional objects containing properties to merge in target.\r\n\t * @returns {object} The `target` object.\r\n\t */\r\n\textend: Object.assign || function(target) {\r\n\t\treturn helpers.merge(target, [].slice.call(arguments, 1), {\r\n\t\t\tmerger: function(key, dst, src) {\r\n\t\t\t\tdst[key] = src[key];\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * Basic javascript inheritance based on the model created in Backbone.js\r\n\t */\r\n\tinherits: function(extensions) {\r\n\t\tvar me = this;\r\n\t\tvar ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() {\r\n\t\t\treturn me.apply(this, arguments);\r\n\t\t};\r\n\r\n\t\tvar Surrogate = function() {\r\n\t\t\tthis.constructor = ChartElement;\r\n\t\t};\r\n\r\n\t\tSurrogate.prototype = me.prototype;\r\n\t\tChartElement.prototype = new Surrogate();\r\n\t\tChartElement.extend = helpers.inherits;\r\n\r\n\t\tif (extensions) {\r\n\t\t\thelpers.extend(ChartElement.prototype, extensions);\r\n\t\t}\r\n\r\n\t\tChartElement.__super__ = me.prototype;\r\n\t\treturn ChartElement;\r\n\t},\r\n\r\n\t_deprecated: function(scope, value, previous, current) {\r\n\t\tif (value !== undefined) {\r\n\t\t\tconsole.warn(scope + ': \"' + previous +\r\n\t\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\r\n\t\t}\r\n\t}\r\n};\r\n\r\nvar helpers_core = helpers;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.callback instead.\r\n * @function Chart.helpers.callCallback\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.callCallback = helpers.callback;\r\n\r\n/**\r\n * Provided for backward compatibility, use Array.prototype.indexOf instead.\r\n * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+\r\n * @function Chart.helpers.indexOf\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.indexOf = function(array, item, fromIndex) {\r\n\treturn Array.prototype.indexOf.call(array, item, fromIndex);\r\n};\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead.\r\n * @function Chart.helpers.getValueOrDefault\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.getValueOrDefault = helpers.valueOrDefault;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead.\r\n * @function Chart.helpers.getValueAtIndexOrDefault\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\n/**\r\n * Easing functions adapted from Robert Penner's easing equations.\r\n * @namespace Chart.helpers.easingEffects\r\n * @see http://www.robertpenner.com/easing/\r\n */\r\nvar effects = {\r\n\tlinear: function(t) {\r\n\t\treturn t;\r\n\t},\r\n\r\n\teaseInQuad: function(t) {\r\n\t\treturn t * t;\r\n\t},\r\n\r\n\teaseOutQuad: function(t) {\r\n\t\treturn -t * (t - 2);\r\n\t},\r\n\r\n\teaseInOutQuad: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t;\r\n\t\t}\r\n\t\treturn -0.5 * ((--t) * (t - 2) - 1);\r\n\t},\r\n\r\n\teaseInCubic: function(t) {\r\n\t\treturn t * t * t;\r\n\t},\r\n\r\n\teaseOutCubic: function(t) {\r\n\t\treturn (t = t - 1) * t * t + 1;\r\n\t},\r\n\r\n\teaseInOutCubic: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t;\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * t + 2);\r\n\t},\r\n\r\n\teaseInQuart: function(t) {\r\n\t\treturn t * t * t * t;\r\n\t},\r\n\r\n\teaseOutQuart: function(t) {\r\n\t\treturn -((t = t - 1) * t * t * t - 1);\r\n\t},\r\n\r\n\teaseInOutQuart: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t * t;\r\n\t\t}\r\n\t\treturn -0.5 * ((t -= 2) * t * t * t - 2);\r\n\t},\r\n\r\n\teaseInQuint: function(t) {\r\n\t\treturn t * t * t * t * t;\r\n\t},\r\n\r\n\teaseOutQuint: function(t) {\r\n\t\treturn (t = t - 1) * t * t * t * t + 1;\r\n\t},\r\n\r\n\teaseInOutQuint: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t * t * t;\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * t * t * t + 2);\r\n\t},\r\n\r\n\teaseInSine: function(t) {\r\n\t\treturn -Math.cos(t * (Math.PI / 2)) + 1;\r\n\t},\r\n\r\n\teaseOutSine: function(t) {\r\n\t\treturn Math.sin(t * (Math.PI / 2));\r\n\t},\r\n\r\n\teaseInOutSine: function(t) {\r\n\t\treturn -0.5 * (Math.cos(Math.PI * t) - 1);\r\n\t},\r\n\r\n\teaseInExpo: function(t) {\r\n\t\treturn (t === 0) ? 0 : Math.pow(2, 10 * (t - 1));\r\n\t},\r\n\r\n\teaseOutExpo: function(t) {\r\n\t\treturn (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1;\r\n\t},\r\n\r\n\teaseInOutExpo: function(t) {\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * Math.pow(2, 10 * (t - 1));\r\n\t\t}\r\n\t\treturn 0.5 * (-Math.pow(2, -10 * --t) + 2);\r\n\t},\r\n\r\n\teaseInCirc: function(t) {\r\n\t\tif (t >= 1) {\r\n\t\t\treturn t;\r\n\t\t}\r\n\t\treturn -(Math.sqrt(1 - t * t) - 1);\r\n\t},\r\n\r\n\teaseOutCirc: function(t) {\r\n\t\treturn Math.sqrt(1 - (t = t - 1) * t);\r\n\t},\r\n\r\n\teaseInOutCirc: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn -0.5 * (Math.sqrt(1 - t * t) - 1);\r\n\t\t}\r\n\t\treturn 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\r\n\t},\r\n\r\n\teaseInElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.3;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\treturn -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\r\n\t},\r\n\r\n\teaseOutElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.3;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\treturn a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1;\r\n\t},\r\n\r\n\teaseInOutElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif ((t /= 0.5) === 2) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.45;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\tif (t < 1) {\r\n\t\t\treturn -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\r\n\t\t}\r\n\t\treturn a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1;\r\n\t},\r\n\teaseInBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\treturn t * t * ((s + 1) * t - s);\r\n\t},\r\n\r\n\teaseOutBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\treturn (t = t - 1) * t * ((s + 1) * t + s) + 1;\r\n\t},\r\n\r\n\teaseInOutBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\r\n\t},\r\n\r\n\teaseInBounce: function(t) {\r\n\t\treturn 1 - effects.easeOutBounce(1 - t);\r\n\t},\r\n\r\n\teaseOutBounce: function(t) {\r\n\t\tif (t < (1 / 2.75)) {\r\n\t\t\treturn 7.5625 * t * t;\r\n\t\t}\r\n\t\tif (t < (2 / 2.75)) {\r\n\t\t\treturn 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75;\r\n\t\t}\r\n\t\tif (t < (2.5 / 2.75)) {\r\n\t\t\treturn 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375;\r\n\t\t}\r\n\t\treturn 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375;\r\n\t},\r\n\r\n\teaseInOutBounce: function(t) {\r\n\t\tif (t < 0.5) {\r\n\t\t\treturn effects.easeInBounce(t * 2) * 0.5;\r\n\t\t}\r\n\t\treturn effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5;\r\n\t}\r\n};\r\n\r\nvar helpers_easing = {\r\n\teffects: effects\r\n};\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.easing.effects instead.\r\n * @function Chart.helpers.easingEffects\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers_core.easingEffects = effects;\n\nvar PI = Math.PI;\r\nvar RAD_PER_DEG = PI / 180;\r\nvar DOUBLE_PI = PI * 2;\r\nvar HALF_PI = PI / 2;\r\nvar QUARTER_PI = PI / 4;\r\nvar TWO_THIRDS_PI = PI * 2 / 3;\r\n\r\n/**\r\n * @namespace Chart.helpers.canvas\r\n */\r\nvar exports$1 = {\r\n\t/**\r\n\t * Clears the entire canvas associated to the given `chart`.\r\n\t * @param {Chart} chart - The chart for which to clear the canvas.\r\n\t */\r\n\tclear: function(chart) {\r\n\t\tchart.ctx.clearRect(0, 0, chart.width, chart.height);\r\n\t},\r\n\r\n\t/**\r\n\t * Creates a \"path\" for a rectangle with rounded corners at position (x, y) with a\r\n\t * given size (width, height) and the same `radius` for all corners.\r\n\t * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context.\r\n\t * @param {number} x - The x axis of the coordinate for the rectangle starting point.\r\n\t * @param {number} y - The y axis of the coordinate for the rectangle starting point.\r\n\t * @param {number} width - The rectangle's width.\r\n\t * @param {number} height - The rectangle's height.\r\n\t * @param {number} radius - The rounded amount (in pixels) for the four corners.\r\n\t * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object?\r\n\t */\r\n\troundedRect: function(ctx, x, y, width, height, radius) {\r\n\t\tif (radius) {\r\n\t\t\tvar r = Math.min(radius, height / 2, width / 2);\r\n\t\t\tvar left = x + r;\r\n\t\t\tvar top = y + r;\r\n\t\t\tvar right = x + width - r;\r\n\t\t\tvar bottom = y + height - r;\r\n\r\n\t\t\tctx.moveTo(x, top);\r\n\t\t\tif (left < right && top < bottom) {\r\n\t\t\t\tctx.arc(left, top, r, -PI, -HALF_PI);\r\n\t\t\t\tctx.arc(right, top, r, -HALF_PI, 0);\r\n\t\t\t\tctx.arc(right, bottom, r, 0, HALF_PI);\r\n\t\t\t\tctx.arc(left, bottom, r, HALF_PI, PI);\r\n\t\t\t} else if (left < right) {\r\n\t\t\t\tctx.moveTo(left, y);\r\n\t\t\t\tctx.arc(right, top, r, -HALF_PI, HALF_PI);\r\n\t\t\t\tctx.arc(left, top, r, HALF_PI, PI + HALF_PI);\r\n\t\t\t} else if (top < bottom) {\r\n\t\t\t\tctx.arc(left, top, r, -PI, 0);\r\n\t\t\t\tctx.arc(left, bottom, r, 0, PI);\r\n\t\t\t} else {\r\n\t\t\t\tctx.arc(left, top, r, -PI, PI);\r\n\t\t\t}\r\n\t\t\tctx.closePath();\r\n\t\t\tctx.moveTo(x, y);\r\n\t\t} else {\r\n\t\t\tctx.rect(x, y, width, height);\r\n\t\t}\r\n\t},\r\n\r\n\tdrawPoint: function(ctx, style, radius, x, y, rotation) {\r\n\t\tvar type, xOffset, yOffset, size, cornerRadius;\r\n\t\tvar rad = (rotation || 0) * RAD_PER_DEG;\r\n\r\n\t\tif (style && typeof style === 'object') {\r\n\t\t\ttype = style.toString();\r\n\t\t\tif (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\r\n\t\t\t\tctx.save();\r\n\t\t\t\tctx.translate(x, y);\r\n\t\t\t\tctx.rotate(rad);\r\n\t\t\t\tctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\r\n\t\t\t\tctx.restore();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (isNaN(radius) || radius <= 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.beginPath();\r\n\r\n\t\tswitch (style) {\r\n\t\t// Default includes circle\r\n\t\tdefault:\r\n\t\t\tctx.arc(x, y, radius, 0, DOUBLE_PI);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'triangle':\r\n\t\t\tctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\r\n\t\t\trad += TWO_THIRDS_PI;\r\n\t\t\tctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\r\n\t\t\trad += TWO_THIRDS_PI;\r\n\t\t\tctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'rectRounded':\r\n\t\t\t// NOTE: the rounded rect implementation changed to use `arc` instead of\r\n\t\t\t// `quadraticCurveTo` since it generates better results when rect is\r\n\t\t\t// almost a circle. 0.516 (instead of 0.5) produces results with visually\r\n\t\t\t// closer proportion to the previous impl and it is inscribed in the\r\n\t\t\t// circle with `radius`. For more details, see the following PRs:\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5597\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5858\r\n\t\t\tcornerRadius = radius * 0.516;\r\n\t\t\tsize = radius - cornerRadius;\r\n\t\t\txOffset = Math.cos(rad + QUARTER_PI) * size;\r\n\t\t\tyOffset = Math.sin(rad + QUARTER_PI) * size;\r\n\t\t\tctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\r\n\t\t\tctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\r\n\t\t\tctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\r\n\t\t\tctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'rect':\r\n\t\t\tif (!rotation) {\r\n\t\t\t\tsize = Math.SQRT1_2 * radius;\r\n\t\t\t\tctx.rect(x - size, y - size, 2 * size, 2 * size);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\trad += QUARTER_PI;\r\n\t\t\t/* falls through */\r\n\t\tcase 'rectRot':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'crossRot':\r\n\t\t\trad += QUARTER_PI;\r\n\t\t\t/* falls through */\r\n\t\tcase 'cross':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'star':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\trad += QUARTER_PI;\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'line':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'dash':\r\n\t\t\tctx.moveTo(x, y);\r\n\t\t\tctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tctx.fill();\r\n\t\tctx.stroke();\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if the point is inside the rectangle\r\n\t * @param {object} point - The point to test\r\n\t * @param {object} area - The rectangle\r\n\t * @returns {boolean}\r\n\t * @private\r\n\t */\r\n\t_isPointInArea: function(point, area) {\r\n\t\tvar epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\r\n\r\n\t\treturn point.x > area.left - epsilon && point.x < area.right + epsilon &&\r\n\t\t\tpoint.y > area.top - epsilon && point.y < area.bottom + epsilon;\r\n\t},\r\n\r\n\tclipArea: function(ctx, area) {\r\n\t\tctx.save();\r\n\t\tctx.beginPath();\r\n\t\tctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\r\n\t\tctx.clip();\r\n\t},\r\n\r\n\tunclipArea: function(ctx) {\r\n\t\tctx.restore();\r\n\t},\r\n\r\n\tlineTo: function(ctx, previous, target, flip) {\r\n\t\tvar stepped = target.steppedLine;\r\n\t\tif (stepped) {\r\n\t\t\tif (stepped === 'middle') {\r\n\t\t\t\tvar midpoint = (previous.x + target.x) / 2.0;\r\n\t\t\t\tctx.lineTo(midpoint, flip ? target.y : previous.y);\r\n\t\t\t\tctx.lineTo(midpoint, flip ? previous.y : target.y);\r\n\t\t\t} else if ((stepped === 'after' && !flip) || (stepped !== 'after' && flip)) {\r\n\t\t\t\tctx.lineTo(previous.x, target.y);\r\n\t\t\t} else {\r\n\t\t\t\tctx.lineTo(target.x, previous.y);\r\n\t\t\t}\r\n\t\t\tctx.lineTo(target.x, target.y);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!target.tension) {\r\n\t\t\tctx.lineTo(target.x, target.y);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.bezierCurveTo(\r\n\t\t\tflip ? previous.controlPointPreviousX : previous.controlPointNextX,\r\n\t\t\tflip ? previous.controlPointPreviousY : previous.controlPointNextY,\r\n\t\t\tflip ? target.controlPointNextX : target.controlPointPreviousX,\r\n\t\t\tflip ? target.controlPointNextY : target.controlPointPreviousY,\r\n\t\t\ttarget.x,\r\n\t\t\ttarget.y);\r\n\t}\r\n};\r\n\r\nvar helpers_canvas = exports$1;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.canvas.clear instead.\r\n * @namespace Chart.helpers.clear\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers_core.clear = exports$1.clear;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead.\r\n * @namespace Chart.helpers.drawRoundedRectangle\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers_core.drawRoundedRectangle = function(ctx) {\r\n\tctx.beginPath();\r\n\texports$1.roundedRect.apply(exports$1, arguments);\r\n};\n\nvar defaults = {\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_set: function(scope, values) {\r\n\t\treturn helpers_core.merge(this[scope] || (this[scope] = {}), values);\r\n\t}\r\n};\r\n\r\n// TODO(v3): remove 'global' from namespace. all default are global and\r\n// there's inconsistency around which options are under 'global'\r\ndefaults._set('global', {\r\n\tdefaultColor: 'rgba(0,0,0,0.1)',\r\n\tdefaultFontColor: '#666',\r\n\tdefaultFontFamily: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\r\n\tdefaultFontSize: 12,\r\n\tdefaultFontStyle: 'normal',\r\n\tdefaultLineHeight: 1.2,\r\n\tshowLines: true\r\n});\r\n\r\nvar core_defaults = defaults;\n\nvar valueOrDefault = helpers_core.valueOrDefault;\r\n\r\n/**\r\n * Converts the given font object into a CSS font string.\r\n * @param {object} font - A font object.\r\n * @return {string} The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\r\n * @private\r\n */\r\nfunction toFontString(font) {\r\n\tif (!font || helpers_core.isNullOrUndef(font.size) || helpers_core.isNullOrUndef(font.family)) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\treturn (font.style ? font.style + ' ' : '')\r\n\t\t+ (font.weight ? font.weight + ' ' : '')\r\n\t\t+ font.size + 'px '\r\n\t\t+ font.family;\r\n}\r\n\r\n/**\r\n * @alias Chart.helpers.options\r\n * @namespace\r\n */\r\nvar helpers_options = {\r\n\t/**\r\n\t * Converts the given line height `value` in pixels for a specific font `size`.\r\n\t * @param {number|string} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\r\n\t * @param {number} size - The font size (in pixels) used to resolve relative `value`.\r\n\t * @returns {number} The effective line height in pixels (size * 1.2 if value is invalid).\r\n\t * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\r\n\t * @since 2.7.0\r\n\t */\r\n\ttoLineHeight: function(value, size) {\r\n\t\tvar matches = ('' + value).match(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\r\n\t\tif (!matches || matches[1] === 'normal') {\r\n\t\t\treturn size * 1.2;\r\n\t\t}\r\n\r\n\t\tvalue = +matches[2];\r\n\r\n\t\tswitch (matches[3]) {\r\n\t\tcase 'px':\r\n\t\t\treturn value;\r\n\t\tcase '%':\r\n\t\t\tvalue /= 100;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn size * value;\r\n\t},\r\n\r\n\t/**\r\n\t * Converts the given value into a padding object with pre-computed width/height.\r\n\t * @param {number|object} value - If a number, set the value to all TRBL component,\r\n\t * else, if and object, use defined properties and sets undefined ones to 0.\r\n\t * @returns {object} The padding values (top, right, bottom, left, width, height)\r\n\t * @since 2.7.0\r\n\t */\r\n\ttoPadding: function(value) {\r\n\t\tvar t, r, b, l;\r\n\r\n\t\tif (helpers_core.isObject(value)) {\r\n\t\t\tt = +value.top || 0;\r\n\t\t\tr = +value.right || 0;\r\n\t\t\tb = +value.bottom || 0;\r\n\t\t\tl = +value.left || 0;\r\n\t\t} else {\r\n\t\t\tt = r = b = l = +value || 0;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\ttop: t,\r\n\t\t\tright: r,\r\n\t\t\tbottom: b,\r\n\t\t\tleft: l,\r\n\t\t\theight: t + b,\r\n\t\t\twidth: l + r\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Parses font options and returns the font object.\r\n\t * @param {object} options - A object that contains font options to be parsed.\r\n\t * @return {object} The font object.\r\n\t * @todo Support font.* options and renamed to toFont().\r\n\t * @private\r\n\t */\r\n\t_parseFont: function(options) {\r\n\t\tvar globalDefaults = core_defaults.global;\r\n\t\tvar size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize);\r\n\t\tvar font = {\r\n\t\t\tfamily: valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily),\r\n\t\t\tlineHeight: helpers_core.options.toLineHeight(valueOrDefault(options.lineHeight, globalDefaults.defaultLineHeight), size),\r\n\t\t\tsize: size,\r\n\t\t\tstyle: valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle),\r\n\t\t\tweight: null,\r\n\t\t\tstring: ''\r\n\t\t};\r\n\r\n\t\tfont.string = toFontString(font);\r\n\t\treturn font;\r\n\t},\r\n\r\n\t/**\r\n\t * Evaluates the given `inputs` sequentially and returns the first defined value.\r\n\t * @param {Array} inputs - An array of values, falling back to the last value.\r\n\t * @param {object} [context] - If defined and the current value is a function, the value\r\n\t * is called with `context` as first argument and the result becomes the new input.\r\n\t * @param {number} [index] - If defined and the current value is an array, the value\r\n\t * at `index` become the new input.\r\n\t * @param {object} [info] - object to return information about resolution in\r\n\t * @param {boolean} [info.cacheable] - Will be set to `false` if option is not cacheable.\r\n\t * @since 2.7.0\r\n\t */\r\n\tresolve: function(inputs, context, index, info) {\r\n\t\tvar cacheable = true;\r\n\t\tvar i, ilen, value;\r\n\r\n\t\tfor (i = 0, ilen = inputs.length; i < ilen; ++i) {\r\n\t\t\tvalue = inputs[i];\r\n\t\t\tif (value === undefined) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (context !== undefined && typeof value === 'function') {\r\n\t\t\t\tvalue = value(context);\r\n\t\t\t\tcacheable = false;\r\n\t\t\t}\r\n\t\t\tif (index !== undefined && helpers_core.isArray(value)) {\r\n\t\t\t\tvalue = value[index];\r\n\t\t\t\tcacheable = false;\r\n\t\t\t}\r\n\t\t\tif (value !== undefined) {\r\n\t\t\t\tif (info && !cacheable) {\r\n\t\t\t\t\tinfo.cacheable = false;\r\n\t\t\t\t}\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\n\n/**\r\n * @alias Chart.helpers.math\r\n * @namespace\r\n */\r\nvar exports$2 = {\r\n\t/**\r\n\t * Returns an array of factors sorted from 1 to sqrt(value)\r\n\t * @private\r\n\t */\r\n\t_factorize: function(value) {\r\n\t\tvar result = [];\r\n\t\tvar sqrt = Math.sqrt(value);\r\n\t\tvar i;\r\n\r\n\t\tfor (i = 1; i < sqrt; i++) {\r\n\t\t\tif (value % i === 0) {\r\n\t\t\t\tresult.push(i);\r\n\t\t\t\tresult.push(value / i);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (sqrt === (sqrt | 0)) { // if value is a square number\r\n\t\t\tresult.push(sqrt);\r\n\t\t}\r\n\r\n\t\tresult.sort(function(a, b) {\r\n\t\t\treturn a - b;\r\n\t\t}).pop();\r\n\t\treturn result;\r\n\t},\r\n\r\n\tlog10: Math.log10 || function(x) {\r\n\t\tvar exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10.\r\n\t\t// Check for whole powers of 10,\r\n\t\t// which due to floating point rounding error should be corrected.\r\n\t\tvar powerOf10 = Math.round(exponent);\r\n\t\tvar isPowerOf10 = x === Math.pow(10, powerOf10);\r\n\r\n\t\treturn isPowerOf10 ? powerOf10 : exponent;\r\n\t}\r\n};\r\n\r\nvar helpers_math = exports$2;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.math.log10 instead.\r\n * @namespace Chart.helpers.log10\r\n * @deprecated since version 2.9.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers_core.log10 = exports$2.log10;\n\nvar getRtlAdapter = function(rectX, width) {\r\n\treturn {\r\n\t\tx: function(x) {\r\n\t\t\treturn rectX + rectX + width - x;\r\n\t\t},\r\n\t\tsetWidth: function(w) {\r\n\t\t\twidth = w;\r\n\t\t},\r\n\t\ttextAlign: function(align) {\r\n\t\t\tif (align === 'center') {\r\n\t\t\t\treturn align;\r\n\t\t\t}\r\n\t\t\treturn align === 'right' ? 'left' : 'right';\r\n\t\t},\r\n\t\txPlus: function(x, value) {\r\n\t\t\treturn x - value;\r\n\t\t},\r\n\t\tleftForLtr: function(x, itemWidth) {\r\n\t\t\treturn x - itemWidth;\r\n\t\t},\r\n\t};\r\n};\r\n\r\nvar getLtrAdapter = function() {\r\n\treturn {\r\n\t\tx: function(x) {\r\n\t\t\treturn x;\r\n\t\t},\r\n\t\tsetWidth: function(w) { // eslint-disable-line no-unused-vars\r\n\t\t},\r\n\t\ttextAlign: function(align) {\r\n\t\t\treturn align;\r\n\t\t},\r\n\t\txPlus: function(x, value) {\r\n\t\t\treturn x + value;\r\n\t\t},\r\n\t\tleftForLtr: function(x, _itemWidth) { // eslint-disable-line no-unused-vars\r\n\t\t\treturn x;\r\n\t\t},\r\n\t};\r\n};\r\n\r\nvar getAdapter = function(rtl, rectX, width) {\r\n\treturn rtl ? getRtlAdapter(rectX, width) : getLtrAdapter();\r\n};\r\n\r\nvar overrideTextDirection = function(ctx, direction) {\r\n\tvar style, original;\r\n\tif (direction === 'ltr' || direction === 'rtl') {\r\n\t\tstyle = ctx.canvas.style;\r\n\t\toriginal = [\r\n\t\t\tstyle.getPropertyValue('direction'),\r\n\t\t\tstyle.getPropertyPriority('direction'),\r\n\t\t];\r\n\r\n\t\tstyle.setProperty('direction', direction, 'important');\r\n\t\tctx.prevTextDirection = original;\r\n\t}\r\n};\r\n\r\nvar restoreTextDirection = function(ctx) {\r\n\tvar original = ctx.prevTextDirection;\r\n\tif (original !== undefined) {\r\n\t\tdelete ctx.prevTextDirection;\r\n\t\tctx.canvas.style.setProperty('direction', original[0], original[1]);\r\n\t}\r\n};\r\n\r\nvar helpers_rtl = {\r\n\tgetRtlAdapter: getAdapter,\r\n\toverrideTextDirection: overrideTextDirection,\r\n\trestoreTextDirection: restoreTextDirection,\r\n};\n\nvar helpers$1 = helpers_core;\r\nvar easing = helpers_easing;\r\nvar canvas = helpers_canvas;\r\nvar options = helpers_options;\r\nvar math = helpers_math;\r\nvar rtl = helpers_rtl;\nhelpers$1.easing = easing;\nhelpers$1.canvas = canvas;\nhelpers$1.options = options;\nhelpers$1.math = math;\nhelpers$1.rtl = rtl;\n\nfunction interpolate(start, view, model, ease) {\r\n\tvar keys = Object.keys(model);\r\n\tvar i, ilen, key, actual, origin, target, type, c0, c1;\r\n\r\n\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\r\n\t\tkey = keys[i];\r\n\r\n\t\ttarget = model[key];\r\n\r\n\t\t// if a value is added to the model after pivot() has been called, the view\r\n\t\t// doesn't contain it, so let's initialize the view to the target value.\r\n\t\tif (!view.hasOwnProperty(key)) {\r\n\t\t\tview[key] = target;\r\n\t\t}\r\n\r\n\t\tactual = view[key];\r\n\r\n\t\tif (actual === target || key[0] === '_') {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tif (!start.hasOwnProperty(key)) {\r\n\t\t\tstart[key] = actual;\r\n\t\t}\r\n\r\n\t\torigin = start[key];\r\n\r\n\t\ttype = typeof target;\r\n\r\n\t\tif (type === typeof origin) {\r\n\t\t\tif (type === 'string') {\r\n\t\t\t\tc0 = chartjsColor(origin);\r\n\t\t\t\tif (c0.valid) {\r\n\t\t\t\t\tc1 = chartjsColor(target);\r\n\t\t\t\t\tif (c1.valid) {\r\n\t\t\t\t\t\tview[key] = c1.mix(c0, ease).rgbString();\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (helpers$1.isFinite(origin) && helpers$1.isFinite(target)) {\r\n\t\t\t\tview[key] = origin + (target - origin) * ease;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tview[key] = target;\r\n\t}\r\n}\r\n\r\nvar Element = function(configuration) {\r\n\thelpers$1.extend(this, configuration);\r\n\tthis.initialize.apply(this, arguments);\r\n};\r\n\r\nhelpers$1.extend(Element.prototype, {\r\n\t_type: undefined,\r\n\r\n\tinitialize: function() {\r\n\t\tthis.hidden = false;\r\n\t},\r\n\r\n\tpivot: function() {\r\n\t\tvar me = this;\r\n\t\tif (!me._view) {\r\n\t\t\tme._view = helpers$1.extend({}, me._model);\r\n\t\t}\r\n\t\tme._start = {};\r\n\t\treturn me;\r\n\t},\r\n\r\n\ttransition: function(ease) {\r\n\t\tvar me = this;\r\n\t\tvar model = me._model;\r\n\t\tvar start = me._start;\r\n\t\tvar view = me._view;\r\n\r\n\t\t// No animation -> No Transition\r\n\t\tif (!model || ease === 1) {\r\n\t\t\tme._view = helpers$1.extend({}, model);\r\n\t\t\tme._start = null;\r\n\t\t\treturn me;\r\n\t\t}\r\n\r\n\t\tif (!view) {\r\n\t\t\tview = me._view = {};\r\n\t\t}\r\n\r\n\t\tif (!start) {\r\n\t\t\tstart = me._start = {};\r\n\t\t}\r\n\r\n\t\tinterpolate(start, view, model, ease);\r\n\r\n\t\treturn me;\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\treturn {\r\n\t\t\tx: this._model.x,\r\n\t\t\ty: this._model.y\r\n\t\t};\r\n\t},\r\n\r\n\thasValue: function() {\r\n\t\treturn helpers$1.isNumber(this._model.x) && helpers$1.isNumber(this._model.y);\r\n\t}\r\n});\r\n\r\nElement.extend = helpers$1.inherits;\r\n\r\nvar core_element = Element;\n\nvar exports$3 = core_element.extend({\r\n\tchart: null, // the animation associated chart instance\r\n\tcurrentStep: 0, // the current animation step\r\n\tnumSteps: 60, // default number of steps\r\n\teasing: '', // the easing to use for this animation\r\n\trender: null, // render function used by the animation service\r\n\r\n\tonAnimationProgress: null, // user specified callback to fire on each step of the animation\r\n\tonAnimationComplete: null, // user specified callback to fire when the animation finishes\r\n});\r\n\r\nvar core_animation = exports$3;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.Animation instead\r\n * @prop Chart.Animation#animationObject\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n */\r\nObject.defineProperty(exports$3.prototype, 'animationObject', {\r\n\tget: function() {\r\n\t\treturn this;\r\n\t}\r\n});\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.Animation#chart instead\r\n * @prop Chart.Animation#chartInstance\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n */\r\nObject.defineProperty(exports$3.prototype, 'chartInstance', {\r\n\tget: function() {\r\n\t\treturn this.chart;\r\n\t},\r\n\tset: function(value) {\r\n\t\tthis.chart = value;\r\n\t}\r\n});\n\ncore_defaults._set('global', {\r\n\tanimation: {\r\n\t\tduration: 1000,\r\n\t\teasing: 'easeOutQuart',\r\n\t\tonProgress: helpers$1.noop,\r\n\t\tonComplete: helpers$1.noop\r\n\t}\r\n});\r\n\r\nvar core_animations = {\r\n\tanimations: [],\r\n\trequest: null,\r\n\r\n\t/**\r\n\t * @param {Chart} chart - The chart to animate.\r\n\t * @param {Chart.Animation} animation - The animation that we will animate.\r\n\t * @param {number} duration - The animation duration in ms.\r\n\t * @param {boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions\r\n\t */\r\n\taddAnimation: function(chart, animation, duration, lazy) {\r\n\t\tvar animations = this.animations;\r\n\t\tvar i, ilen;\r\n\r\n\t\tanimation.chart = chart;\r\n\t\tanimation.startTime = Date.now();\r\n\t\tanimation.duration = duration;\r\n\r\n\t\tif (!lazy) {\r\n\t\t\tchart.animating = true;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = animations.length; i < ilen; ++i) {\r\n\t\t\tif (animations[i].chart === chart) {\r\n\t\t\t\tanimations[i] = animation;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tanimations.push(animation);\r\n\r\n\t\t// If there are no animations queued, manually kickstart a digest, for lack of a better word\r\n\t\tif (animations.length === 1) {\r\n\t\t\tthis.requestAnimationFrame();\r\n\t\t}\r\n\t},\r\n\r\n\tcancelAnimation: function(chart) {\r\n\t\tvar index = helpers$1.findIndex(this.animations, function(animation) {\r\n\t\t\treturn animation.chart === chart;\r\n\t\t});\r\n\r\n\t\tif (index !== -1) {\r\n\t\t\tthis.animations.splice(index, 1);\r\n\t\t\tchart.animating = false;\r\n\t\t}\r\n\t},\r\n\r\n\trequestAnimationFrame: function() {\r\n\t\tvar me = this;\r\n\t\tif (me.request === null) {\r\n\t\t\t// Skip animation frame requests until the active one is executed.\r\n\t\t\t// This can happen when processing mouse events, e.g. 'mousemove'\r\n\t\t\t// and 'mouseout' events will trigger multiple renders.\r\n\t\t\tme.request = helpers$1.requestAnimFrame.call(window, function() {\r\n\t\t\t\tme.request = null;\r\n\t\t\t\tme.startDigest();\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tstartDigest: function() {\r\n\t\tvar me = this;\r\n\r\n\t\tme.advance();\r\n\r\n\t\t// Do we have more stuff to animate?\r\n\t\tif (me.animations.length > 0) {\r\n\t\t\tme.requestAnimationFrame();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tadvance: function() {\r\n\t\tvar animations = this.animations;\r\n\t\tvar animation, chart, numSteps, nextStep;\r\n\t\tvar i = 0;\r\n\r\n\t\t// 1 animation per chart, so we are looping charts here\r\n\t\twhile (i < animations.length) {\r\n\t\t\tanimation = animations[i];\r\n\t\t\tchart = animation.chart;\r\n\t\t\tnumSteps = animation.numSteps;\r\n\r\n\t\t\t// Make sure that currentStep starts at 1\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/6104\r\n\t\t\tnextStep = Math.floor((Date.now() - animation.startTime) / animation.duration * numSteps) + 1;\r\n\t\t\tanimation.currentStep = Math.min(nextStep, numSteps);\r\n\r\n\t\t\thelpers$1.callback(animation.render, [chart, animation], chart);\r\n\t\t\thelpers$1.callback(animation.onAnimationProgress, [animation], chart);\r\n\r\n\t\t\tif (animation.currentStep >= numSteps) {\r\n\t\t\t\thelpers$1.callback(animation.onAnimationComplete, [animation], chart);\r\n\t\t\t\tchart.animating = false;\r\n\t\t\t\tanimations.splice(i, 1);\r\n\t\t\t} else {\r\n\t\t\t\t++i;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\n\nvar resolve = helpers$1.options.resolve;\r\n\r\nvar arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\r\n\r\n/**\r\n * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\r\n * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\r\n * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments.\r\n */\r\nfunction listenArrayEvents(array, listener) {\r\n\tif (array._chartjs) {\r\n\t\tarray._chartjs.listeners.push(listener);\r\n\t\treturn;\r\n\t}\r\n\r\n\tObject.defineProperty(array, '_chartjs', {\r\n\t\tconfigurable: true,\r\n\t\tenumerable: false,\r\n\t\tvalue: {\r\n\t\t\tlisteners: [listener]\r\n\t\t}\r\n\t});\r\n\r\n\tarrayEvents.forEach(function(key) {\r\n\t\tvar method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1);\r\n\t\tvar base = array[key];\r\n\r\n\t\tObject.defineProperty(array, key, {\r\n\t\t\tconfigurable: true,\r\n\t\t\tenumerable: false,\r\n\t\t\tvalue: function() {\r\n\t\t\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\t\t\tvar res = base.apply(this, args);\r\n\r\n\t\t\t\thelpers$1.each(array._chartjs.listeners, function(object) {\r\n\t\t\t\t\tif (typeof object[method] === 'function') {\r\n\t\t\t\t\t\tobject[method].apply(object, args);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn res;\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n}\r\n\r\n/**\r\n * Removes the given array event listener and cleanup extra attached properties (such as\r\n * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\r\n */\r\nfunction unlistenArrayEvents(array, listener) {\r\n\tvar stub = array._chartjs;\r\n\tif (!stub) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar listeners = stub.listeners;\r\n\tvar index = listeners.indexOf(listener);\r\n\tif (index !== -1) {\r\n\t\tlisteners.splice(index, 1);\r\n\t}\r\n\r\n\tif (listeners.length > 0) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tarrayEvents.forEach(function(key) {\r\n\t\tdelete array[key];\r\n\t});\r\n\r\n\tdelete array._chartjs;\r\n}\r\n\r\n// Base class for all dataset controllers (line, bar, etc)\r\nvar DatasetController = function(chart, datasetIndex) {\r\n\tthis.initialize(chart, datasetIndex);\r\n};\r\n\r\nhelpers$1.extend(DatasetController.prototype, {\r\n\r\n\t/**\r\n\t * Element type used to generate a meta dataset (e.g. Chart.element.Line).\r\n\t * @type {Chart.core.element}\r\n\t */\r\n\tdatasetElementType: null,\r\n\r\n\t/**\r\n\t * Element type used to generate a meta data (e.g. Chart.element.Point).\r\n\t * @type {Chart.core.element}\r\n\t */\r\n\tdataElementType: null,\r\n\r\n\t/**\r\n\t * Dataset element option keys to be resolved in _resolveDatasetElementOptions.\r\n\t * A derived controller may override this to resolve controller-specific options.\r\n\t * The keys defined here are for backward compatibility for legend styles.\r\n\t * @private\r\n\t */\r\n\t_datasetElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderCapStyle',\r\n\t\t'borderColor',\r\n\t\t'borderDash',\r\n\t\t'borderDashOffset',\r\n\t\t'borderJoinStyle',\r\n\t\t'borderWidth'\r\n\t],\r\n\r\n\t/**\r\n\t * Data element option keys to be resolved in _resolveDataElementOptions.\r\n\t * A derived controller may override this to resolve controller-specific options.\r\n\t * The keys defined here are for backward compatibility for legend styles.\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderWidth',\r\n\t\t'pointStyle'\r\n\t],\r\n\r\n\tinitialize: function(chart, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tme.chart = chart;\r\n\t\tme.index = datasetIndex;\r\n\t\tme.linkScales();\r\n\t\tme.addElements();\r\n\t\tme._type = me.getMeta().type;\r\n\t},\r\n\r\n\tupdateIndex: function(datasetIndex) {\r\n\t\tthis.index = datasetIndex;\r\n\t},\r\n\r\n\tlinkScales: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar chart = me.chart;\r\n\t\tvar scales = chart.scales;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar scalesOpts = chart.options.scales;\r\n\r\n\t\tif (meta.xAxisID === null || !(meta.xAxisID in scales) || dataset.xAxisID) {\r\n\t\t\tmeta.xAxisID = dataset.xAxisID || scalesOpts.xAxes[0].id;\r\n\t\t}\r\n\t\tif (meta.yAxisID === null || !(meta.yAxisID in scales) || dataset.yAxisID) {\r\n\t\t\tmeta.yAxisID = dataset.yAxisID || scalesOpts.yAxes[0].id;\r\n\t\t}\r\n\t},\r\n\r\n\tgetDataset: function() {\r\n\t\treturn this.chart.data.datasets[this.index];\r\n\t},\r\n\r\n\tgetMeta: function() {\r\n\t\treturn this.chart.getDatasetMeta(this.index);\r\n\t},\r\n\r\n\tgetScaleForId: function(scaleID) {\r\n\t\treturn this.chart.scales[scaleID];\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScaleId: function() {\r\n\t\treturn this.getMeta().yAxisID;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScaleId: function() {\r\n\t\treturn this.getMeta().xAxisID;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScale: function() {\r\n\t\treturn this.getScaleForId(this._getValueScaleId());\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScale: function() {\r\n\t\treturn this.getScaleForId(this._getIndexScaleId());\r\n\t},\r\n\r\n\treset: function() {\r\n\t\tthis._update(true);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tdestroy: function() {\r\n\t\tif (this._data) {\r\n\t\t\tunlistenArrayEvents(this._data, this);\r\n\t\t}\r\n\t},\r\n\r\n\tcreateMetaDataset: function() {\r\n\t\tvar me = this;\r\n\t\tvar type = me.datasetElementType;\r\n\t\treturn type && new type({\r\n\t\t\t_chart: me.chart,\r\n\t\t\t_datasetIndex: me.index\r\n\t\t});\r\n\t},\r\n\r\n\tcreateMetaData: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar type = me.dataElementType;\r\n\t\treturn type && new type({\r\n\t\t\t_chart: me.chart,\r\n\t\t\t_datasetIndex: me.index,\r\n\t\t\t_index: index\r\n\t\t});\r\n\t},\r\n\r\n\taddElements: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar data = me.getDataset().data || [];\r\n\t\tvar metaData = meta.data;\r\n\t\tvar i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = data.length; i < ilen; ++i) {\r\n\t\t\tmetaData[i] = metaData[i] || me.createMetaData(i);\r\n\t\t}\r\n\r\n\t\tmeta.dataset = meta.dataset || me.createMetaDataset();\r\n\t},\r\n\r\n\taddElementAndReset: function(index) {\r\n\t\tvar element = this.createMetaData(index);\r\n\t\tthis.getMeta().data.splice(index, 0, element);\r\n\t\tthis.updateElement(element, index, true);\r\n\t},\r\n\r\n\tbuildOrUpdateElements: function() {\r\n\t\tvar me = this;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar data = dataset.data || (dataset.data = []);\r\n\r\n\t\t// In order to correctly handle data addition/deletion animation (an thus simulate\r\n\t\t// real-time charts), we need to monitor these data modifications and synchronize\r\n\t\t// the internal meta data accordingly.\r\n\t\tif (me._data !== data) {\r\n\t\t\tif (me._data) {\r\n\t\t\t\t// This case happens when the user replaced the data array instance.\r\n\t\t\t\tunlistenArrayEvents(me._data, me);\r\n\t\t\t}\r\n\r\n\t\t\tif (data && Object.isExtensible(data)) {\r\n\t\t\t\tlistenArrayEvents(data, me);\r\n\t\t\t}\r\n\t\t\tme._data = data;\r\n\t\t}\r\n\r\n\t\t// Re-sync meta data in case the user replaced the data array or if we missed\r\n\t\t// any updates and so make sure that we handle number of datapoints changing.\r\n\t\tme.resyncElements();\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the merged user-supplied and default dataset-level options\r\n\t * @private\r\n\t */\r\n\t_configure: function() {\r\n\t\tvar me = this;\r\n\t\tme._config = helpers$1.merge(Object.create(null), [\r\n\t\t\tme.chart.options.datasets[me._type],\r\n\t\t\tme.getDataset(),\r\n\t\t], {\r\n\t\t\tmerger: function(key, target, source) {\r\n\t\t\t\tif (key !== '_meta' && key !== 'data') {\r\n\t\t\t\t\thelpers$1._merger(key, target, source);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\t_update: function(reset) {\r\n\t\tvar me = this;\r\n\t\tme._configure();\r\n\t\tme._cachedDataOpts = null;\r\n\t\tme.update(reset);\r\n\t},\r\n\r\n\tupdate: helpers$1.noop,\r\n\r\n\ttransition: function(easingValue) {\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar elements = meta.data || [];\r\n\t\tvar ilen = elements.length;\r\n\t\tvar i = 0;\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\telements[i].transition(easingValue);\r\n\t\t}\r\n\r\n\t\tif (meta.dataset) {\r\n\t\t\tmeta.dataset.transition(easingValue);\r\n\t\t}\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar elements = meta.data || [];\r\n\t\tvar ilen = elements.length;\r\n\t\tvar i = 0;\r\n\r\n\t\tif (meta.dataset) {\r\n\t\t\tmeta.dataset.draw();\r\n\t\t}\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\telements[i].draw();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Returns a set of predefined style properties that should be used to represent the dataset\r\n\t * or the data if the index is specified\r\n\t * @param {number} index - data index\r\n\t * @return {IStyleInterface} style object\r\n\t */\r\n\tgetStyle: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar dataset = meta.dataset;\r\n\t\tvar style;\r\n\r\n\t\tme._configure();\r\n\t\tif (dataset && index === undefined) {\r\n\t\t\tstyle = me._resolveDatasetElementOptions(dataset || {});\r\n\t\t} else {\r\n\t\t\tindex = index || 0;\r\n\t\t\tstyle = me._resolveDataElementOptions(meta.data[index] || {}, index);\r\n\t\t}\r\n\r\n\t\tif (style.fill === false || style.fill === null) {\r\n\t\t\tstyle.backgroundColor = style.borderColor;\r\n\t\t}\r\n\r\n\t\treturn style;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDatasetElementOptions: function(element, hover) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar datasetOpts = me._config;\r\n\t\tvar custom = element.custom || {};\r\n\t\tvar options = chart.options.elements[me.datasetElementType.prototype._type] || {};\r\n\t\tvar elementOptions = me._datasetElementOptions;\r\n\t\tvar values = {};\r\n\t\tvar i, ilen, key, readKey;\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: chart,\r\n\t\t\tdataset: me.getDataset(),\r\n\t\t\tdatasetIndex: me.index,\r\n\t\t\thover: hover\r\n\t\t};\r\n\r\n\t\tfor (i = 0, ilen = elementOptions.length; i < ilen; ++i) {\r\n\t\t\tkey = elementOptions[i];\r\n\t\t\treadKey = hover ? 'hover' + key.charAt(0).toUpperCase() + key.slice(1) : key;\r\n\t\t\tvalues[key] = resolve([\r\n\t\t\t\tcustom[readKey],\r\n\t\t\t\tdatasetOpts[readKey],\r\n\t\t\t\toptions[readKey]\r\n\t\t\t], context);\r\n\t\t}\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDataElementOptions: function(element, index) {\r\n\t\tvar me = this;\r\n\t\tvar custom = element && element.custom;\r\n\t\tvar cached = me._cachedDataOpts;\r\n\t\tif (cached && !custom) {\r\n\t\t\treturn cached;\r\n\t\t}\r\n\t\tvar chart = me.chart;\r\n\t\tvar datasetOpts = me._config;\r\n\t\tvar options = chart.options.elements[me.dataElementType.prototype._type] || {};\r\n\t\tvar elementOptions = me._dataElementOptions;\r\n\t\tvar values = {};\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: chart,\r\n\t\t\tdataIndex: index,\r\n\t\t\tdataset: me.getDataset(),\r\n\t\t\tdatasetIndex: me.index\r\n\t\t};\r\n\r\n\t\t// `resolve` sets cacheable to `false` if any option is indexed or scripted\r\n\t\tvar info = {cacheable: !custom};\r\n\r\n\t\tvar keys, i, ilen, key;\r\n\r\n\t\tcustom = custom || {};\r\n\r\n\t\tif (helpers$1.isArray(elementOptions)) {\r\n\t\t\tfor (i = 0, ilen = elementOptions.length; i < ilen; ++i) {\r\n\t\t\t\tkey = elementOptions[i];\r\n\t\t\t\tvalues[key] = resolve([\r\n\t\t\t\t\tcustom[key],\r\n\t\t\t\t\tdatasetOpts[key],\r\n\t\t\t\t\toptions[key]\r\n\t\t\t\t], context, index, info);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tkeys = Object.keys(elementOptions);\r\n\t\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\r\n\t\t\t\tkey = keys[i];\r\n\t\t\t\tvalues[key] = resolve([\r\n\t\t\t\t\tcustom[key],\r\n\t\t\t\t\tdatasetOpts[elementOptions[key]],\r\n\t\t\t\t\tdatasetOpts[key],\r\n\t\t\t\t\toptions[key]\r\n\t\t\t\t], context, index, info);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (info.cacheable) {\r\n\t\t\tme._cachedDataOpts = Object.freeze(values);\r\n\t\t}\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\tremoveHoverStyle: function(element) {\r\n\t\thelpers$1.merge(element._model, element.$previousStyle || {});\r\n\t\tdelete element.$previousStyle;\r\n\t},\r\n\r\n\tsetHoverStyle: function(element) {\r\n\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\r\n\t\tvar index = element._index;\r\n\t\tvar custom = element.custom || {};\r\n\t\tvar model = element._model;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\telement.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = resolve([custom.hoverBackgroundColor, dataset.hoverBackgroundColor, getHoverColor(model.backgroundColor)], undefined, index);\r\n\t\tmodel.borderColor = resolve([custom.hoverBorderColor, dataset.hoverBorderColor, getHoverColor(model.borderColor)], undefined, index);\r\n\t\tmodel.borderWidth = resolve([custom.hoverBorderWidth, dataset.hoverBorderWidth, model.borderWidth], undefined, index);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_removeDatasetHoverStyle: function() {\r\n\t\tvar element = this.getMeta().dataset;\r\n\r\n\t\tif (element) {\r\n\t\t\tthis.removeHoverStyle(element);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_setDatasetHoverStyle: function() {\r\n\t\tvar element = this.getMeta().dataset;\r\n\t\tvar prev = {};\r\n\t\tvar i, ilen, key, keys, hoverOptions, model;\r\n\r\n\t\tif (!element) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tmodel = element._model;\r\n\t\thoverOptions = this._resolveDatasetElementOptions(element, true);\r\n\r\n\t\tkeys = Object.keys(hoverOptions);\r\n\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\r\n\t\t\tkey = keys[i];\r\n\t\t\tprev[key] = model[key];\r\n\t\t\tmodel[key] = hoverOptions[key];\r\n\t\t}\r\n\r\n\t\telement.$previousStyle = prev;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tresyncElements: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar data = me.getDataset().data;\r\n\t\tvar numMeta = meta.data.length;\r\n\t\tvar numData = data.length;\r\n\r\n\t\tif (numData < numMeta) {\r\n\t\t\tmeta.data.splice(numData, numMeta - numData);\r\n\t\t} else if (numData > numMeta) {\r\n\t\t\tme.insertElements(numMeta, numData - numMeta);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tinsertElements: function(start, count) {\r\n\t\tfor (var i = 0; i < count; ++i) {\r\n\t\t\tthis.addElementAndReset(start + i);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataPush: function() {\r\n\t\tvar count = arguments.length;\r\n\t\tthis.insertElements(this.getDataset().data.length - count, count);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataPop: function() {\r\n\t\tthis.getMeta().data.pop();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataShift: function() {\r\n\t\tthis.getMeta().data.shift();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataSplice: function(start, count) {\r\n\t\tthis.getMeta().data.splice(start, count);\r\n\t\tthis.insertElements(start, arguments.length - 2);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataUnshift: function() {\r\n\t\tthis.insertElements(0, arguments.length);\r\n\t}\r\n});\r\n\r\nDatasetController.extend = helpers$1.inherits;\r\n\r\nvar core_datasetController = DatasetController;\n\nvar TAU = Math.PI * 2;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {\r\n\t\tarc: {\r\n\t\t\tbackgroundColor: core_defaults.global.defaultColor,\r\n\t\t\tborderColor: '#fff',\r\n\t\t\tborderWidth: 2,\r\n\t\t\tborderAlign: 'center'\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction clipArc(ctx, arc) {\r\n\tvar startAngle = arc.startAngle;\r\n\tvar endAngle = arc.endAngle;\r\n\tvar pixelMargin = arc.pixelMargin;\r\n\tvar angleMargin = pixelMargin / arc.outerRadius;\r\n\tvar x = arc.x;\r\n\tvar y = arc.y;\r\n\r\n\t// Draw an inner border by cliping the arc and drawing a double-width border\r\n\t// Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\r\n\tctx.beginPath();\r\n\tctx.arc(x, y, arc.outerRadius, startAngle - angleMargin, endAngle + angleMargin);\r\n\tif (arc.innerRadius > pixelMargin) {\r\n\t\tangleMargin = pixelMargin / arc.innerRadius;\r\n\t\tctx.arc(x, y, arc.innerRadius - pixelMargin, endAngle + angleMargin, startAngle - angleMargin, true);\r\n\t} else {\r\n\t\tctx.arc(x, y, pixelMargin, endAngle + Math.PI / 2, startAngle - Math.PI / 2);\r\n\t}\r\n\tctx.closePath();\r\n\tctx.clip();\r\n}\r\n\r\nfunction drawFullCircleBorders(ctx, vm, arc, inner) {\r\n\tvar endAngle = arc.endAngle;\r\n\tvar i;\r\n\r\n\tif (inner) {\r\n\t\tarc.endAngle = arc.startAngle + TAU;\r\n\t\tclipArc(ctx, arc);\r\n\t\tarc.endAngle = endAngle;\r\n\t\tif (arc.endAngle === arc.startAngle && arc.fullCircles) {\r\n\t\t\tarc.endAngle += TAU;\r\n\t\t\tarc.fullCircles--;\r\n\t\t}\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.startAngle + TAU, arc.startAngle, true);\r\n\tfor (i = 0; i < arc.fullCircles; ++i) {\r\n\t\tctx.stroke();\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\tctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.startAngle + TAU);\r\n\tfor (i = 0; i < arc.fullCircles; ++i) {\r\n\t\tctx.stroke();\r\n\t}\r\n}\r\n\r\nfunction drawBorder(ctx, vm, arc) {\r\n\tvar inner = vm.borderAlign === 'inner';\r\n\r\n\tif (inner) {\r\n\t\tctx.lineWidth = vm.borderWidth * 2;\r\n\t\tctx.lineJoin = 'round';\r\n\t} else {\r\n\t\tctx.lineWidth = vm.borderWidth;\r\n\t\tctx.lineJoin = 'bevel';\r\n\t}\r\n\r\n\tif (arc.fullCircles) {\r\n\t\tdrawFullCircleBorders(ctx, vm, arc, inner);\r\n\t}\r\n\r\n\tif (inner) {\r\n\t\tclipArc(ctx, arc);\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\tctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.endAngle);\r\n\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\r\n\tctx.closePath();\r\n\tctx.stroke();\r\n}\r\n\r\nvar element_arc = core_element.extend({\r\n\t_type: 'arc',\r\n\r\n\tinLabelRange: function(mouseX) {\r\n\t\tvar vm = this._view;\r\n\r\n\t\tif (vm) {\r\n\t\t\treturn (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2));\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\tinRange: function(chartX, chartY) {\r\n\t\tvar vm = this._view;\r\n\r\n\t\tif (vm) {\r\n\t\t\tvar pointRelativePosition = helpers$1.getAngleFromPoint(vm, {x: chartX, y: chartY});\r\n\t\t\tvar angle = pointRelativePosition.angle;\r\n\t\t\tvar distance = pointRelativePosition.distance;\r\n\r\n\t\t\t// Sanitise angle range\r\n\t\t\tvar startAngle = vm.startAngle;\r\n\t\t\tvar endAngle = vm.endAngle;\r\n\t\t\twhile (endAngle < startAngle) {\r\n\t\t\t\tendAngle += TAU;\r\n\t\t\t}\r\n\t\t\twhile (angle > endAngle) {\r\n\t\t\t\tangle -= TAU;\r\n\t\t\t}\r\n\t\t\twhile (angle < startAngle) {\r\n\t\t\t\tangle += TAU;\r\n\t\t\t}\r\n\r\n\t\t\t// Check if within the range of the open/close angle\r\n\t\t\tvar betweenAngles = (angle >= startAngle && angle <= endAngle);\r\n\t\t\tvar withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius);\r\n\r\n\t\t\treturn (betweenAngles && withinRadius);\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\tgetCenterPoint: function() {\r\n\t\tvar vm = this._view;\r\n\t\tvar halfAngle = (vm.startAngle + vm.endAngle) / 2;\r\n\t\tvar halfRadius = (vm.innerRadius + vm.outerRadius) / 2;\r\n\t\treturn {\r\n\t\t\tx: vm.x + Math.cos(halfAngle) * halfRadius,\r\n\t\t\ty: vm.y + Math.sin(halfAngle) * halfRadius\r\n\t\t};\r\n\t},\r\n\r\n\tgetArea: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2));\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\tvar vm = this._view;\r\n\t\tvar centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2);\r\n\t\tvar rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius;\r\n\r\n\t\treturn {\r\n\t\t\tx: vm.x + (Math.cos(centreAngle) * rangeFromCentre),\r\n\t\t\ty: vm.y + (Math.sin(centreAngle) * rangeFromCentre)\r\n\t\t};\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\t\tvar pixelMargin = (vm.borderAlign === 'inner') ? 0.33 : 0;\r\n\t\tvar arc = {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y,\r\n\t\t\tinnerRadius: vm.innerRadius,\r\n\t\t\touterRadius: Math.max(vm.outerRadius - pixelMargin, 0),\r\n\t\t\tpixelMargin: pixelMargin,\r\n\t\t\tstartAngle: vm.startAngle,\r\n\t\t\tendAngle: vm.endAngle,\r\n\t\t\tfullCircles: Math.floor(vm.circumference / TAU)\r\n\t\t};\r\n\t\tvar i;\r\n\r\n\t\tctx.save();\r\n\r\n\t\tctx.fillStyle = vm.backgroundColor;\r\n\t\tctx.strokeStyle = vm.borderColor;\r\n\r\n\t\tif (arc.fullCircles) {\r\n\t\t\tarc.endAngle = arc.startAngle + TAU;\r\n\t\t\tctx.beginPath();\r\n\t\t\tctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle);\r\n\t\t\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\r\n\t\t\tctx.closePath();\r\n\t\t\tfor (i = 0; i < arc.fullCircles; ++i) {\r\n\t\t\t\tctx.fill();\r\n\t\t\t}\r\n\t\t\tarc.endAngle = arc.startAngle + vm.circumference % TAU;\r\n\t\t}\r\n\r\n\t\tctx.beginPath();\r\n\t\tctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle);\r\n\t\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\r\n\t\tctx.closePath();\r\n\t\tctx.fill();\r\n\r\n\t\tif (vm.borderWidth) {\r\n\t\t\tdrawBorder(ctx, vm, arc);\r\n\t\t}\r\n\r\n\t\tctx.restore();\r\n\t}\r\n});\n\nvar valueOrDefault$1 = helpers$1.valueOrDefault;\r\n\r\nvar defaultColor = core_defaults.global.defaultColor;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {\r\n\t\tline: {\r\n\t\t\ttension: 0.4,\r\n\t\t\tbackgroundColor: defaultColor,\r\n\t\t\tborderWidth: 3,\r\n\t\t\tborderColor: defaultColor,\r\n\t\t\tborderCapStyle: 'butt',\r\n\t\t\tborderDash: [],\r\n\t\t\tborderDashOffset: 0.0,\r\n\t\t\tborderJoinStyle: 'miter',\r\n\t\t\tcapBezierPoints: true,\r\n\t\t\tfill: true, // do we fill in the area between the line and its base axis\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar element_line = core_element.extend({\r\n\t_type: 'line',\r\n\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar vm = me._view;\r\n\t\tvar ctx = me._chart.ctx;\r\n\t\tvar spanGaps = vm.spanGaps;\r\n\t\tvar points = me._children.slice(); // clone array\r\n\t\tvar globalDefaults = core_defaults.global;\r\n\t\tvar globalOptionLineElements = globalDefaults.elements.line;\r\n\t\tvar lastDrawnIndex = -1;\r\n\t\tvar closePath = me._loop;\r\n\t\tvar index, previous, currentVM;\r\n\r\n\t\tif (!points.length) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (me._loop) {\r\n\t\t\tfor (index = 0; index < points.length; ++index) {\r\n\t\t\t\tprevious = helpers$1.previousItem(points, index);\r\n\t\t\t\t// If the line has an open path, shift the point array\r\n\t\t\t\tif (!points[index]._view.skip && previous._view.skip) {\r\n\t\t\t\t\tpoints = points.slice(index).concat(points.slice(0, index));\r\n\t\t\t\t\tclosePath = spanGaps;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// If the line has a close path, add the first point again\r\n\t\t\tif (closePath) {\r\n\t\t\t\tpoints.push(points[0]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\r\n\t\t// Stroke Line Options\r\n\t\tctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle;\r\n\r\n\t\t// IE 9 and 10 do not support line dash\r\n\t\tif (ctx.setLineDash) {\r\n\t\t\tctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash);\r\n\t\t}\r\n\r\n\t\tctx.lineDashOffset = valueOrDefault$1(vm.borderDashOffset, globalOptionLineElements.borderDashOffset);\r\n\t\tctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle;\r\n\t\tctx.lineWidth = valueOrDefault$1(vm.borderWidth, globalOptionLineElements.borderWidth);\r\n\t\tctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor;\r\n\r\n\t\t// Stroke Line\r\n\t\tctx.beginPath();\r\n\r\n\t\t// First point moves to it's starting position no matter what\r\n\t\tcurrentVM = points[0]._view;\r\n\t\tif (!currentVM.skip) {\r\n\t\t\tctx.moveTo(currentVM.x, currentVM.y);\r\n\t\t\tlastDrawnIndex = 0;\r\n\t\t}\r\n\r\n\t\tfor (index = 1; index < points.length; ++index) {\r\n\t\t\tcurrentVM = points[index]._view;\r\n\t\t\tprevious = lastDrawnIndex === -1 ? helpers$1.previousItem(points, index) : points[lastDrawnIndex];\r\n\r\n\t\t\tif (!currentVM.skip) {\r\n\t\t\t\tif ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) {\r\n\t\t\t\t\t// There was a gap and this is the first point after the gap\r\n\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Line to next point\r\n\t\t\t\t\thelpers$1.canvas.lineTo(ctx, previous._view, currentVM);\r\n\t\t\t\t}\r\n\t\t\t\tlastDrawnIndex = index;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (closePath) {\r\n\t\t\tctx.closePath();\r\n\t\t}\r\n\r\n\t\tctx.stroke();\r\n\t\tctx.restore();\r\n\t}\r\n});\n\nvar valueOrDefault$2 = helpers$1.valueOrDefault;\r\n\r\nvar defaultColor$1 = core_defaults.global.defaultColor;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {\r\n\t\tpoint: {\r\n\t\t\tradius: 3,\r\n\t\t\tpointStyle: 'circle',\r\n\t\t\tbackgroundColor: defaultColor$1,\r\n\t\t\tborderColor: defaultColor$1,\r\n\t\t\tborderWidth: 1,\r\n\t\t\t// Hover\r\n\t\t\thitRadius: 1,\r\n\t\t\thoverRadius: 4,\r\n\t\t\thoverBorderWidth: 1\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction xRange(mouseX) {\r\n\tvar vm = this._view;\r\n\treturn vm ? (Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius) : false;\r\n}\r\n\r\nfunction yRange(mouseY) {\r\n\tvar vm = this._view;\r\n\treturn vm ? (Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius) : false;\r\n}\r\n\r\nvar element_point = core_element.extend({\r\n\t_type: 'point',\r\n\r\n\tinRange: function(mouseX, mouseY) {\r\n\t\tvar vm = this._view;\r\n\t\treturn vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false;\r\n\t},\r\n\r\n\tinLabelRange: xRange,\r\n\tinXRange: xRange,\r\n\tinYRange: yRange,\r\n\r\n\tgetCenterPoint: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y\r\n\t\t};\r\n\t},\r\n\r\n\tgetArea: function() {\r\n\t\treturn Math.PI * Math.pow(this._view.radius, 2);\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y,\r\n\t\t\tpadding: vm.radius + vm.borderWidth\r\n\t\t};\r\n\t},\r\n\r\n\tdraw: function(chartArea) {\r\n\t\tvar vm = this._view;\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar pointStyle = vm.pointStyle;\r\n\t\tvar rotation = vm.rotation;\r\n\t\tvar radius = vm.radius;\r\n\t\tvar x = vm.x;\r\n\t\tvar y = vm.y;\r\n\t\tvar globalDefaults = core_defaults.global;\r\n\t\tvar defaultColor = globalDefaults.defaultColor; // eslint-disable-line no-shadow\r\n\r\n\t\tif (vm.skip) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Clipping for Points.\r\n\t\tif (chartArea === undefined || helpers$1.canvas._isPointInArea(vm, chartArea)) {\r\n\t\t\tctx.strokeStyle = vm.borderColor || defaultColor;\r\n\t\t\tctx.lineWidth = valueOrDefault$2(vm.borderWidth, globalDefaults.elements.point.borderWidth);\r\n\t\t\tctx.fillStyle = vm.backgroundColor || defaultColor;\r\n\t\t\thelpers$1.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation);\r\n\t\t}\r\n\t}\r\n});\n\nvar defaultColor$2 = core_defaults.global.defaultColor;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {\r\n\t\trectangle: {\r\n\t\t\tbackgroundColor: defaultColor$2,\r\n\t\t\tborderColor: defaultColor$2,\r\n\t\t\tborderSkipped: 'bottom',\r\n\t\t\tborderWidth: 0\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction isVertical(vm) {\r\n\treturn vm && vm.width !== undefined;\r\n}\r\n\r\n/**\r\n * Helper function to get the bounds of the bar regardless of the orientation\r\n * @param bar {Chart.Element.Rectangle} the bar\r\n * @return {Bounds} bounds of the bar\r\n * @private\r\n */\r\nfunction getBarBounds(vm) {\r\n\tvar x1, x2, y1, y2, half;\r\n\r\n\tif (isVertical(vm)) {\r\n\t\thalf = vm.width / 2;\r\n\t\tx1 = vm.x - half;\r\n\t\tx2 = vm.x + half;\r\n\t\ty1 = Math.min(vm.y, vm.base);\r\n\t\ty2 = Math.max(vm.y, vm.base);\r\n\t} else {\r\n\t\thalf = vm.height / 2;\r\n\t\tx1 = Math.min(vm.x, vm.base);\r\n\t\tx2 = Math.max(vm.x, vm.base);\r\n\t\ty1 = vm.y - half;\r\n\t\ty2 = vm.y + half;\r\n\t}\r\n\r\n\treturn {\r\n\t\tleft: x1,\r\n\t\ttop: y1,\r\n\t\tright: x2,\r\n\t\tbottom: y2\r\n\t};\r\n}\r\n\r\nfunction swap(orig, v1, v2) {\r\n\treturn orig === v1 ? v2 : orig === v2 ? v1 : orig;\r\n}\r\n\r\nfunction parseBorderSkipped(vm) {\r\n\tvar edge = vm.borderSkipped;\r\n\tvar res = {};\r\n\r\n\tif (!edge) {\r\n\t\treturn res;\r\n\t}\r\n\r\n\tif (vm.horizontal) {\r\n\t\tif (vm.base > vm.x) {\r\n\t\t\tedge = swap(edge, 'left', 'right');\r\n\t\t}\r\n\t} else if (vm.base < vm.y) {\r\n\t\tedge = swap(edge, 'bottom', 'top');\r\n\t}\r\n\r\n\tres[edge] = true;\r\n\treturn res;\r\n}\r\n\r\nfunction parseBorderWidth(vm, maxW, maxH) {\r\n\tvar value = vm.borderWidth;\r\n\tvar skip = parseBorderSkipped(vm);\r\n\tvar t, r, b, l;\r\n\r\n\tif (helpers$1.isObject(value)) {\r\n\t\tt = +value.top || 0;\r\n\t\tr = +value.right || 0;\r\n\t\tb = +value.bottom || 0;\r\n\t\tl = +value.left || 0;\r\n\t} else {\r\n\t\tt = r = b = l = +value || 0;\r\n\t}\r\n\r\n\treturn {\r\n\t\tt: skip.top || (t < 0) ? 0 : t > maxH ? maxH : t,\r\n\t\tr: skip.right || (r < 0) ? 0 : r > maxW ? maxW : r,\r\n\t\tb: skip.bottom || (b < 0) ? 0 : b > maxH ? maxH : b,\r\n\t\tl: skip.left || (l < 0) ? 0 : l > maxW ? maxW : l\r\n\t};\r\n}\r\n\r\nfunction boundingRects(vm) {\r\n\tvar bounds = getBarBounds(vm);\r\n\tvar width = bounds.right - bounds.left;\r\n\tvar height = bounds.bottom - bounds.top;\r\n\tvar border = parseBorderWidth(vm, width / 2, height / 2);\r\n\r\n\treturn {\r\n\t\touter: {\r\n\t\t\tx: bounds.left,\r\n\t\t\ty: bounds.top,\r\n\t\t\tw: width,\r\n\t\t\th: height\r\n\t\t},\r\n\t\tinner: {\r\n\t\t\tx: bounds.left + border.l,\r\n\t\t\ty: bounds.top + border.t,\r\n\t\t\tw: width - border.l - border.r,\r\n\t\t\th: height - border.t - border.b\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction inRange(vm, x, y) {\r\n\tvar skipX = x === null;\r\n\tvar skipY = y === null;\r\n\tvar bounds = !vm || (skipX && skipY) ? false : getBarBounds(vm);\r\n\r\n\treturn bounds\r\n\t\t&& (skipX || x >= bounds.left && x <= bounds.right)\r\n\t\t&& (skipY || y >= bounds.top && y <= bounds.bottom);\r\n}\r\n\r\nvar element_rectangle = core_element.extend({\r\n\t_type: 'rectangle',\r\n\r\n\tdraw: function() {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\t\tvar rects = boundingRects(vm);\r\n\t\tvar outer = rects.outer;\r\n\t\tvar inner = rects.inner;\r\n\r\n\t\tctx.fillStyle = vm.backgroundColor;\r\n\t\tctx.fillRect(outer.x, outer.y, outer.w, outer.h);\r\n\r\n\t\tif (outer.w === inner.w && outer.h === inner.h) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\t\tctx.beginPath();\r\n\t\tctx.rect(outer.x, outer.y, outer.w, outer.h);\r\n\t\tctx.clip();\r\n\t\tctx.fillStyle = vm.borderColor;\r\n\t\tctx.rect(inner.x, inner.y, inner.w, inner.h);\r\n\t\tctx.fill('evenodd');\r\n\t\tctx.restore();\r\n\t},\r\n\r\n\theight: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn vm.base - vm.y;\r\n\t},\r\n\r\n\tinRange: function(mouseX, mouseY) {\r\n\t\treturn inRange(this._view, mouseX, mouseY);\r\n\t},\r\n\r\n\tinLabelRange: function(mouseX, mouseY) {\r\n\t\tvar vm = this._view;\r\n\t\treturn isVertical(vm)\r\n\t\t\t? inRange(vm, mouseX, null)\r\n\t\t\t: inRange(vm, null, mouseY);\r\n\t},\r\n\r\n\tinXRange: function(mouseX) {\r\n\t\treturn inRange(this._view, mouseX, null);\r\n\t},\r\n\r\n\tinYRange: function(mouseY) {\r\n\t\treturn inRange(this._view, null, mouseY);\r\n\t},\r\n\r\n\tgetCenterPoint: function() {\r\n\t\tvar vm = this._view;\r\n\t\tvar x, y;\r\n\t\tif (isVertical(vm)) {\r\n\t\t\tx = vm.x;\r\n\t\t\ty = (vm.y + vm.base) / 2;\r\n\t\t} else {\r\n\t\t\tx = (vm.x + vm.base) / 2;\r\n\t\t\ty = vm.y;\r\n\t\t}\r\n\r\n\t\treturn {x: x, y: y};\r\n\t},\r\n\r\n\tgetArea: function() {\r\n\t\tvar vm = this._view;\r\n\r\n\t\treturn isVertical(vm)\r\n\t\t\t? vm.width * Math.abs(vm.y - vm.base)\r\n\t\t\t: vm.height * Math.abs(vm.x - vm.base);\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y\r\n\t\t};\r\n\t}\r\n});\n\nvar elements = {};\r\nvar Arc = element_arc;\r\nvar Line = element_line;\r\nvar Point = element_point;\r\nvar Rectangle = element_rectangle;\nelements.Arc = Arc;\nelements.Line = Line;\nelements.Point = Point;\nelements.Rectangle = Rectangle;\n\nvar deprecated = helpers$1._deprecated;\r\nvar valueOrDefault$3 = helpers$1.valueOrDefault;\r\n\r\ncore_defaults._set('bar', {\r\n\thover: {\r\n\t\tmode: 'label'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'category',\r\n\t\t\toffset: true,\r\n\t\t\tgridLines: {\r\n\t\t\t\toffsetGridLines: true\r\n\t\t\t}\r\n\t\t}],\r\n\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'linear'\r\n\t\t}]\r\n\t}\r\n});\r\n\r\ncore_defaults._set('global', {\r\n\tdatasets: {\r\n\t\tbar: {\r\n\t\t\tcategoryPercentage: 0.8,\r\n\t\t\tbarPercentage: 0.9\r\n\t\t}\r\n\t}\r\n});\r\n\r\n/**\r\n * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\r\n * @private\r\n */\r\nfunction computeMinSampleSize(scale, pixels) {\r\n\tvar min = scale._length;\r\n\tvar prev, curr, i, ilen;\r\n\r\n\tfor (i = 1, ilen = pixels.length; i < ilen; ++i) {\r\n\t\tmin = Math.min(min, Math.abs(pixels[i] - pixels[i - 1]));\r\n\t}\r\n\r\n\tfor (i = 0, ilen = scale.getTicks().length; i < ilen; ++i) {\r\n\t\tcurr = scale.getPixelForTick(i);\r\n\t\tmin = i > 0 ? Math.min(min, Math.abs(curr - prev)) : min;\r\n\t\tprev = curr;\r\n\t}\r\n\r\n\treturn min;\r\n}\r\n\r\n/**\r\n * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\r\n * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\r\n * mode currently always generates bars equally sized (until we introduce scriptable options?).\r\n * @private\r\n */\r\nfunction computeFitCategoryTraits(index, ruler, options) {\r\n\tvar thickness = options.barThickness;\r\n\tvar count = ruler.stackCount;\r\n\tvar curr = ruler.pixels[index];\r\n\tvar min = helpers$1.isNullOrUndef(thickness)\r\n\t\t? computeMinSampleSize(ruler.scale, ruler.pixels)\r\n\t\t: -1;\r\n\tvar size, ratio;\r\n\r\n\tif (helpers$1.isNullOrUndef(thickness)) {\r\n\t\tsize = min * options.categoryPercentage;\r\n\t\tratio = options.barPercentage;\r\n\t} else {\r\n\t\t// When bar thickness is enforced, category and bar percentages are ignored.\r\n\t\t// Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\r\n\t\t// and deprecate barPercentage since this value is ignored when thickness is absolute.\r\n\t\tsize = thickness * count;\r\n\t\tratio = 1;\r\n\t}\r\n\r\n\treturn {\r\n\t\tchunk: size / count,\r\n\t\tratio: ratio,\r\n\t\tstart: curr - (size / 2)\r\n\t};\r\n}\r\n\r\n/**\r\n * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\r\n * percentage options are 1), based on the previous and following categories. This mode\r\n * generates bars with different widths when data are not evenly spaced.\r\n * @private\r\n */\r\nfunction computeFlexCategoryTraits(index, ruler, options) {\r\n\tvar pixels = ruler.pixels;\r\n\tvar curr = pixels[index];\r\n\tvar prev = index > 0 ? pixels[index - 1] : null;\r\n\tvar next = index < pixels.length - 1 ? pixels[index + 1] : null;\r\n\tvar percent = options.categoryPercentage;\r\n\tvar start, size;\r\n\r\n\tif (prev === null) {\r\n\t\t// first data: its size is double based on the next point or,\r\n\t\t// if it's also the last data, we use the scale size.\r\n\t\tprev = curr - (next === null ? ruler.end - ruler.start : next - curr);\r\n\t}\r\n\r\n\tif (next === null) {\r\n\t\t// last data: its size is also double based on the previous point.\r\n\t\tnext = curr + curr - prev;\r\n\t}\r\n\r\n\tstart = curr - (curr - Math.min(prev, next)) / 2 * percent;\r\n\tsize = Math.abs(next - prev) / 2 * percent;\r\n\r\n\treturn {\r\n\t\tchunk: size / ruler.stackCount,\r\n\t\tratio: options.barPercentage,\r\n\t\tstart: start\r\n\t};\r\n}\r\n\r\nvar controller_bar = core_datasetController.extend({\r\n\r\n\tdataElementType: elements.Rectangle,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderSkipped',\r\n\t\t'borderWidth',\r\n\t\t'barPercentage',\r\n\t\t'barThickness',\r\n\t\t'categoryPercentage',\r\n\t\t'maxBarThickness',\r\n\t\t'minBarLength'\r\n\t],\r\n\r\n\tinitialize: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta, scaleOpts;\r\n\r\n\t\tcore_datasetController.prototype.initialize.apply(me, arguments);\r\n\r\n\t\tmeta = me.getMeta();\r\n\t\tmeta.stack = me.getDataset().stack;\r\n\t\tmeta.bar = true;\r\n\r\n\t\tscaleOpts = me._getIndexScale().options;\r\n\t\tdeprecated('bar chart', scaleOpts.barPercentage, 'scales.[x/y]Axes.barPercentage', 'dataset.barPercentage');\r\n\t\tdeprecated('bar chart', scaleOpts.barThickness, 'scales.[x/y]Axes.barThickness', 'dataset.barThickness');\r\n\t\tdeprecated('bar chart', scaleOpts.categoryPercentage, 'scales.[x/y]Axes.categoryPercentage', 'dataset.categoryPercentage');\r\n\t\tdeprecated('bar chart', me._getValueScale().options.minBarLength, 'scales.[x/y]Axes.minBarLength', 'dataset.minBarLength');\r\n\t\tdeprecated('bar chart', scaleOpts.maxBarThickness, 'scales.[x/y]Axes.maxBarThickness', 'dataset.maxBarThickness');\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar rects = me.getMeta().data;\r\n\t\tvar i, ilen;\r\n\r\n\t\tme._ruler = me.getRuler();\r\n\r\n\t\tfor (i = 0, ilen = rects.length; i < ilen; ++i) {\r\n\t\t\tme.updateElement(rects[i], i, reset);\r\n\t\t}\r\n\t},\r\n\r\n\tupdateElement: function(rectangle, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar options = me._resolveDataElementOptions(rectangle, index);\r\n\r\n\t\trectangle._xScale = me.getScaleForId(meta.xAxisID);\r\n\t\trectangle._yScale = me.getScaleForId(meta.yAxisID);\r\n\t\trectangle._datasetIndex = me.index;\r\n\t\trectangle._index = index;\r\n\t\trectangle._model = {\r\n\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\tborderColor: options.borderColor,\r\n\t\t\tborderSkipped: options.borderSkipped,\r\n\t\t\tborderWidth: options.borderWidth,\r\n\t\t\tdatasetLabel: dataset.label,\r\n\t\t\tlabel: me.chart.data.labels[index]\r\n\t\t};\r\n\r\n\t\tif (helpers$1.isArray(dataset.data[index])) {\r\n\t\t\trectangle._model.borderSkipped = null;\r\n\t\t}\r\n\r\n\t\tme._updateElementGeometry(rectangle, index, reset, options);\r\n\r\n\t\trectangle.pivot();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_updateElementGeometry: function(rectangle, index, reset, options) {\r\n\t\tvar me = this;\r\n\t\tvar model = rectangle._model;\r\n\t\tvar vscale = me._getValueScale();\r\n\t\tvar base = vscale.getBasePixel();\r\n\t\tvar horizontal = vscale.isHorizontal();\r\n\t\tvar ruler = me._ruler || me.getRuler();\r\n\t\tvar vpixels = me.calculateBarValuePixels(me.index, index, options);\r\n\t\tvar ipixels = me.calculateBarIndexPixels(me.index, index, ruler, options);\r\n\r\n\t\tmodel.horizontal = horizontal;\r\n\t\tmodel.base = reset ? base : vpixels.base;\r\n\t\tmodel.x = horizontal ? reset ? base : vpixels.head : ipixels.center;\r\n\t\tmodel.y = horizontal ? ipixels.center : reset ? base : vpixels.head;\r\n\t\tmodel.height = horizontal ? ipixels.size : undefined;\r\n\t\tmodel.width = horizontal ? undefined : ipixels.size;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the stacks based on groups and bar visibility.\r\n\t * @param {number} [last] - The dataset index\r\n\t * @returns {string[]} The list of stack IDs\r\n\t * @private\r\n\t */\r\n\t_getStacks: function(last) {\r\n\t\tvar me = this;\r\n\t\tvar scale = me._getIndexScale();\r\n\t\tvar metasets = scale._getMatchingVisibleMetas(me._type);\r\n\t\tvar stacked = scale.options.stacked;\r\n\t\tvar ilen = metasets.length;\r\n\t\tvar stacks = [];\r\n\t\tvar i, meta;\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\tmeta = metasets[i];\r\n\t\t\t// stacked | meta.stack\r\n\t\t\t// | found | not found | undefined\r\n\t\t\t// false | x | x | x\r\n\t\t\t// true | | x |\r\n\t\t\t// undefined | | x | x\r\n\t\t\tif (stacked === false || stacks.indexOf(meta.stack) === -1 ||\r\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\r\n\t\t\t\tstacks.push(meta.stack);\r\n\t\t\t}\r\n\t\t\tif (meta.index === last) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn stacks;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the effective number of stacks based on groups and bar visibility.\r\n\t * @private\r\n\t */\r\n\tgetStackCount: function() {\r\n\t\treturn this._getStacks().length;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the stack index for the given dataset based on groups and bar visibility.\r\n\t * @param {number} [datasetIndex] - The dataset index\r\n\t * @param {string} [name] - The stack name to find\r\n\t * @returns {number} The stack index\r\n\t * @private\r\n\t */\r\n\tgetStackIndex: function(datasetIndex, name) {\r\n\t\tvar stacks = this._getStacks(datasetIndex);\r\n\t\tvar index = (name !== undefined)\r\n\t\t\t? stacks.indexOf(name)\r\n\t\t\t: -1; // indexOf returns -1 if element is not present\r\n\r\n\t\treturn (index === -1)\r\n\t\t\t? stacks.length - 1\r\n\t\t\t: index;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tgetRuler: function() {\r\n\t\tvar me = this;\r\n\t\tvar scale = me._getIndexScale();\r\n\t\tvar pixels = [];\r\n\t\tvar i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) {\r\n\t\t\tpixels.push(scale.getPixelForValue(null, i, me.index));\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tpixels: pixels,\r\n\t\t\tstart: scale._startPixel,\r\n\t\t\tend: scale._endPixel,\r\n\t\t\tstackCount: me.getStackCount(),\r\n\t\t\tscale: scale\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Note: pixel values are not clamped to the scale area.\r\n\t * @private\r\n\t */\r\n\tcalculateBarValuePixels: function(datasetIndex, index, options) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar scale = me._getValueScale();\r\n\t\tvar isHorizontal = scale.isHorizontal();\r\n\t\tvar datasets = chart.data.datasets;\r\n\t\tvar metasets = scale._getMatchingVisibleMetas(me._type);\r\n\t\tvar value = scale._parseValue(datasets[datasetIndex].data[index]);\r\n\t\tvar minBarLength = options.minBarLength;\r\n\t\tvar stacked = scale.options.stacked;\r\n\t\tvar stack = me.getMeta().stack;\r\n\t\tvar start = value.start === undefined ? 0 : value.max >= 0 && value.min >= 0 ? value.min : value.max;\r\n\t\tvar length = value.start === undefined ? value.end : value.max >= 0 && value.min >= 0 ? value.max - value.min : value.min - value.max;\r\n\t\tvar ilen = metasets.length;\r\n\t\tvar i, imeta, ivalue, base, head, size, stackLength;\r\n\r\n\t\tif (stacked || (stacked === undefined && stack !== undefined)) {\r\n\t\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\t\timeta = metasets[i];\r\n\r\n\t\t\t\tif (imeta.index === datasetIndex) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (imeta.stack === stack) {\r\n\t\t\t\t\tstackLength = scale._parseValue(datasets[imeta.index].data[index]);\r\n\t\t\t\t\tivalue = stackLength.start === undefined ? stackLength.end : stackLength.min >= 0 && stackLength.max >= 0 ? stackLength.max : stackLength.min;\r\n\r\n\t\t\t\t\tif ((value.min < 0 && ivalue < 0) || (value.max >= 0 && ivalue > 0)) {\r\n\t\t\t\t\t\tstart += ivalue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tbase = scale.getPixelForValue(start);\r\n\t\thead = scale.getPixelForValue(start + length);\r\n\t\tsize = head - base;\r\n\r\n\t\tif (minBarLength !== undefined && Math.abs(size) < minBarLength) {\r\n\t\t\tsize = minBarLength;\r\n\t\t\tif (length >= 0 && !isHorizontal || length < 0 && isHorizontal) {\r\n\t\t\t\thead = base - minBarLength;\r\n\t\t\t} else {\r\n\t\t\t\thead = base + minBarLength;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tsize: size,\r\n\t\t\tbase: base,\r\n\t\t\thead: head,\r\n\t\t\tcenter: head + size / 2\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tcalculateBarIndexPixels: function(datasetIndex, index, ruler, options) {\r\n\t\tvar me = this;\r\n\t\tvar range = options.barThickness === 'flex'\r\n\t\t\t? computeFlexCategoryTraits(index, ruler, options)\r\n\t\t\t: computeFitCategoryTraits(index, ruler, options);\r\n\r\n\t\tvar stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack);\r\n\t\tvar center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\r\n\t\tvar size = Math.min(\r\n\t\t\tvalueOrDefault$3(options.maxBarThickness, Infinity),\r\n\t\t\trange.chunk * range.ratio);\r\n\r\n\t\treturn {\r\n\t\t\tbase: center - size / 2,\r\n\t\t\thead: center + size / 2,\r\n\t\t\tcenter: center,\r\n\t\t\tsize: size\r\n\t\t};\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar scale = me._getValueScale();\r\n\t\tvar rects = me.getMeta().data;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar ilen = rects.length;\r\n\t\tvar i = 0;\r\n\r\n\t\thelpers$1.canvas.clipArea(chart.ctx, chart.chartArea);\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\tvar val = scale._parseValue(dataset.data[i]);\r\n\t\t\tif (!isNaN(val.min) && !isNaN(val.max)) {\r\n\t\t\t\trects[i].draw();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\thelpers$1.canvas.unclipArea(chart.ctx);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDataElementOptions: function() {\r\n\t\tvar me = this;\r\n\t\tvar values = helpers$1.extend({}, core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments));\r\n\t\tvar indexOpts = me._getIndexScale().options;\r\n\t\tvar valueOpts = me._getValueScale().options;\r\n\r\n\t\tvalues.barPercentage = valueOrDefault$3(indexOpts.barPercentage, values.barPercentage);\r\n\t\tvalues.barThickness = valueOrDefault$3(indexOpts.barThickness, values.barThickness);\r\n\t\tvalues.categoryPercentage = valueOrDefault$3(indexOpts.categoryPercentage, values.categoryPercentage);\r\n\t\tvalues.maxBarThickness = valueOrDefault$3(indexOpts.maxBarThickness, values.maxBarThickness);\r\n\t\tvalues.minBarLength = valueOrDefault$3(valueOpts.minBarLength, values.minBarLength);\r\n\r\n\t\treturn values;\r\n\t}\r\n\r\n});\n\nvar valueOrDefault$4 = helpers$1.valueOrDefault;\r\nvar resolve$1 = helpers$1.options.resolve;\r\n\r\ncore_defaults._set('bubble', {\r\n\thover: {\r\n\t\tmode: 'single'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'linear', // bubble should probably use a linear scale by default\r\n\t\t\tposition: 'bottom',\r\n\t\t\tid: 'x-axis-0' // need an ID so datasets can reference the scale\r\n\t\t}],\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'linear',\r\n\t\t\tposition: 'left',\r\n\t\t\tid: 'y-axis-0'\r\n\t\t}]\r\n\t},\r\n\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\t// Title doesn't make sense for scatter since we format the data as a point\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\tlabel: function(item, data) {\r\n\t\t\t\tvar datasetLabel = data.datasets[item.datasetIndex].label || '';\r\n\t\t\t\tvar dataPoint = data.datasets[item.datasetIndex].data[item.index];\r\n\t\t\t\treturn datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_bubble = core_datasetController.extend({\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tdataElementType: elements.Point,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderWidth',\r\n\t\t'hoverBackgroundColor',\r\n\t\t'hoverBorderColor',\r\n\t\t'hoverBorderWidth',\r\n\t\t'hoverRadius',\r\n\t\t'hitRadius',\r\n\t\t'pointStyle',\r\n\t\t'rotation'\r\n\t],\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar points = meta.data;\r\n\r\n\t\t// Update Points\r\n\t\thelpers$1.each(points, function(point, index) {\r\n\t\t\tme.updateElement(point, index, reset);\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tupdateElement: function(point, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar custom = point.custom || {};\r\n\t\tvar xScale = me.getScaleForId(meta.xAxisID);\r\n\t\tvar yScale = me.getScaleForId(meta.yAxisID);\r\n\t\tvar options = me._resolveDataElementOptions(point, index);\r\n\t\tvar data = me.getDataset().data[index];\r\n\t\tvar dsIndex = me.index;\r\n\r\n\t\tvar x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex);\r\n\t\tvar y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex);\r\n\r\n\t\tpoint._xScale = xScale;\r\n\t\tpoint._yScale = yScale;\r\n\t\tpoint._options = options;\r\n\t\tpoint._datasetIndex = dsIndex;\r\n\t\tpoint._index = index;\r\n\t\tpoint._model = {\r\n\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\tborderColor: options.borderColor,\r\n\t\t\tborderWidth: options.borderWidth,\r\n\t\t\thitRadius: options.hitRadius,\r\n\t\t\tpointStyle: options.pointStyle,\r\n\t\t\trotation: options.rotation,\r\n\t\t\tradius: reset ? 0 : options.radius,\r\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\r\n\t\t\tx: x,\r\n\t\t\ty: y,\r\n\t\t};\r\n\r\n\t\tpoint.pivot();\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tsetHoverStyle: function(point) {\r\n\t\tvar model = point._model;\r\n\t\tvar options = point._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\tpoint.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t\tradius: model.radius\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault$4(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault$4(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault$4(options.hoverBorderWidth, options.borderWidth);\r\n\t\tmodel.radius = options.radius + options.hoverRadius;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDataElementOptions: function(point, index) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar custom = point.custom || {};\r\n\t\tvar data = dataset.data[index] || {};\r\n\t\tvar values = core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments);\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: chart,\r\n\t\t\tdataIndex: index,\r\n\t\t\tdataset: dataset,\r\n\t\t\tdatasetIndex: me.index\r\n\t\t};\r\n\r\n\t\t// In case values were cached (and thus frozen), we need to clone the values\r\n\t\tif (me._cachedDataOpts === values) {\r\n\t\t\tvalues = helpers$1.extend({}, values);\r\n\t\t}\r\n\r\n\t\t// Custom radius resolution\r\n\t\tvalues.radius = resolve$1([\r\n\t\t\tcustom.radius,\r\n\t\t\tdata.r,\r\n\t\t\tme._config.radius,\r\n\t\t\tchart.options.elements.point.radius\r\n\t\t], context, index);\r\n\r\n\t\treturn values;\r\n\t}\r\n});\n\nvar valueOrDefault$5 = helpers$1.valueOrDefault;\r\n\r\nvar PI$1 = Math.PI;\r\nvar DOUBLE_PI$1 = PI$1 * 2;\r\nvar HALF_PI$1 = PI$1 / 2;\r\n\r\ncore_defaults._set('doughnut', {\r\n\tanimation: {\r\n\t\t// Boolean - Whether we animate the rotation of the Doughnut\r\n\t\tanimateRotate: true,\r\n\t\t// Boolean - Whether we animate scaling the Doughnut from the centre\r\n\t\tanimateScale: false\r\n\t},\r\n\thover: {\r\n\t\tmode: 'single'\r\n\t},\r\n\tlegendCallback: function(chart) {\r\n\t\tvar list = document.createElement('ul');\r\n\t\tvar data = chart.data;\r\n\t\tvar datasets = data.datasets;\r\n\t\tvar labels = data.labels;\r\n\t\tvar i, ilen, listItem, listItemSpan;\r\n\r\n\t\tlist.setAttribute('class', chart.id + '-legend');\r\n\t\tif (datasets.length) {\r\n\t\t\tfor (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) {\r\n\t\t\t\tlistItem = list.appendChild(document.createElement('li'));\r\n\t\t\t\tlistItemSpan = listItem.appendChild(document.createElement('span'));\r\n\t\t\t\tlistItemSpan.style.backgroundColor = datasets[0].backgroundColor[i];\r\n\t\t\t\tif (labels[i]) {\r\n\t\t\t\t\tlistItem.appendChild(document.createTextNode(labels[i]));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn list.outerHTML;\r\n\t},\r\n\tlegend: {\r\n\t\tlabels: {\r\n\t\t\tgenerateLabels: function(chart) {\r\n\t\t\t\tvar data = chart.data;\r\n\t\t\t\tif (data.labels.length && data.datasets.length) {\r\n\t\t\t\t\treturn data.labels.map(function(label, i) {\r\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\r\n\t\t\t\t\t\tvar style = meta.controller.getStyle(i);\r\n\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\ttext: label,\r\n\t\t\t\t\t\t\tfillStyle: style.backgroundColor,\r\n\t\t\t\t\t\t\tstrokeStyle: style.borderColor,\r\n\t\t\t\t\t\t\tlineWidth: style.borderWidth,\r\n\t\t\t\t\t\t\thidden: isNaN(data.datasets[0].data[i]) || meta.data[i].hidden,\r\n\r\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\r\n\t\t\t\t\t\t\tindex: i\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\treturn [];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tonClick: function(e, legendItem) {\r\n\t\t\tvar index = legendItem.index;\r\n\t\t\tvar chart = this.chart;\r\n\t\t\tvar i, ilen, meta;\r\n\r\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\t// toggle visibility of index if exists\r\n\t\t\t\tif (meta.data[index]) {\r\n\t\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tchart.update();\r\n\t\t}\r\n\t},\r\n\r\n\t// The percentage of the chart that we cut out of the middle.\r\n\tcutoutPercentage: 50,\r\n\r\n\t// The rotation of the chart, where the first data arc begins.\r\n\trotation: -HALF_PI$1,\r\n\r\n\t// The total circumference of the chart.\r\n\tcircumference: DOUBLE_PI$1,\r\n\r\n\t// Need to override these to give a nice default\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\tlabel: function(tooltipItem, data) {\r\n\t\t\t\tvar dataLabel = data.labels[tooltipItem.index];\r\n\t\t\t\tvar value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];\r\n\r\n\t\t\t\tif (helpers$1.isArray(dataLabel)) {\r\n\t\t\t\t\t// show value on first line of multiline label\r\n\t\t\t\t\t// need to clone because we are changing the value\r\n\t\t\t\t\tdataLabel = dataLabel.slice();\r\n\t\t\t\t\tdataLabel[0] += value;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdataLabel += value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn dataLabel;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_doughnut = core_datasetController.extend({\r\n\r\n\tdataElementType: elements.Arc,\r\n\r\n\tlinkScales: helpers$1.noop,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderWidth',\r\n\t\t'borderAlign',\r\n\t\t'hoverBackgroundColor',\r\n\t\t'hoverBorderColor',\r\n\t\t'hoverBorderWidth',\r\n\t],\r\n\r\n\t// Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly\r\n\tgetRingIndex: function(datasetIndex) {\r\n\t\tvar ringIndex = 0;\r\n\r\n\t\tfor (var j = 0; j < datasetIndex; ++j) {\r\n\t\t\tif (this.chart.isDatasetVisible(j)) {\r\n\t\t\t\t++ringIndex;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn ringIndex;\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar chartArea = chart.chartArea;\r\n\t\tvar opts = chart.options;\r\n\t\tvar ratioX = 1;\r\n\t\tvar ratioY = 1;\r\n\t\tvar offsetX = 0;\r\n\t\tvar offsetY = 0;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar arcs = meta.data;\r\n\t\tvar cutout = opts.cutoutPercentage / 100 || 0;\r\n\t\tvar circumference = opts.circumference;\r\n\t\tvar chartWeight = me._getRingWeight(me.index);\r\n\t\tvar maxWidth, maxHeight, i, ilen;\r\n\r\n\t\t// If the chart's circumference isn't a full circle, calculate size as a ratio of the width/height of the arc\r\n\t\tif (circumference < DOUBLE_PI$1) {\r\n\t\t\tvar startAngle = opts.rotation % DOUBLE_PI$1;\r\n\t\t\tstartAngle += startAngle >= PI$1 ? -DOUBLE_PI$1 : startAngle < -PI$1 ? DOUBLE_PI$1 : 0;\r\n\t\t\tvar endAngle = startAngle + circumference;\r\n\t\t\tvar startX = Math.cos(startAngle);\r\n\t\t\tvar startY = Math.sin(startAngle);\r\n\t\t\tvar endX = Math.cos(endAngle);\r\n\t\t\tvar endY = Math.sin(endAngle);\r\n\t\t\tvar contains0 = (startAngle <= 0 && endAngle >= 0) || endAngle >= DOUBLE_PI$1;\r\n\t\t\tvar contains90 = (startAngle <= HALF_PI$1 && endAngle >= HALF_PI$1) || endAngle >= DOUBLE_PI$1 + HALF_PI$1;\r\n\t\t\tvar contains180 = startAngle === -PI$1 || endAngle >= PI$1;\r\n\t\t\tvar contains270 = (startAngle <= -HALF_PI$1 && endAngle >= -HALF_PI$1) || endAngle >= PI$1 + HALF_PI$1;\r\n\t\t\tvar minX = contains180 ? -1 : Math.min(startX, startX * cutout, endX, endX * cutout);\r\n\t\t\tvar minY = contains270 ? -1 : Math.min(startY, startY * cutout, endY, endY * cutout);\r\n\t\t\tvar maxX = contains0 ? 1 : Math.max(startX, startX * cutout, endX, endX * cutout);\r\n\t\t\tvar maxY = contains90 ? 1 : Math.max(startY, startY * cutout, endY, endY * cutout);\r\n\t\t\tratioX = (maxX - minX) / 2;\r\n\t\t\tratioY = (maxY - minY) / 2;\r\n\t\t\toffsetX = -(maxX + minX) / 2;\r\n\t\t\toffsetY = -(maxY + minY) / 2;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\r\n\t\t\tarcs[i]._options = me._resolveDataElementOptions(arcs[i], i);\r\n\t\t}\r\n\r\n\t\tchart.borderWidth = me.getMaxBorderWidth();\r\n\t\tmaxWidth = (chartArea.right - chartArea.left - chart.borderWidth) / ratioX;\r\n\t\tmaxHeight = (chartArea.bottom - chartArea.top - chart.borderWidth) / ratioY;\r\n\t\tchart.outerRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\r\n\t\tchart.innerRadius = Math.max(chart.outerRadius * cutout, 0);\r\n\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / (me._getVisibleDatasetWeightTotal() || 1);\r\n\t\tchart.offsetX = offsetX * chart.outerRadius;\r\n\t\tchart.offsetY = offsetY * chart.outerRadius;\r\n\r\n\t\tmeta.total = me.calculateTotal();\r\n\r\n\t\tme.outerRadius = chart.outerRadius - chart.radiusLength * me._getRingWeightOffset(me.index);\r\n\t\tme.innerRadius = Math.max(me.outerRadius - chart.radiusLength * chartWeight, 0);\r\n\r\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\r\n\t\t\tme.updateElement(arcs[i], i, reset);\r\n\t\t}\r\n\t},\r\n\r\n\tupdateElement: function(arc, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar chartArea = chart.chartArea;\r\n\t\tvar opts = chart.options;\r\n\t\tvar animationOpts = opts.animation;\r\n\t\tvar centerX = (chartArea.left + chartArea.right) / 2;\r\n\t\tvar centerY = (chartArea.top + chartArea.bottom) / 2;\r\n\t\tvar startAngle = opts.rotation; // non reset case handled later\r\n\t\tvar endAngle = opts.rotation; // non reset case handled later\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / DOUBLE_PI$1);\r\n\t\tvar innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius;\r\n\t\tvar outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius;\r\n\t\tvar options = arc._options || {};\r\n\r\n\t\thelpers$1.extend(arc, {\r\n\t\t\t// Utility\r\n\t\t\t_datasetIndex: me.index,\r\n\t\t\t_index: index,\r\n\r\n\t\t\t// Desired view properties\r\n\t\t\t_model: {\r\n\t\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\t\tborderColor: options.borderColor,\r\n\t\t\t\tborderWidth: options.borderWidth,\r\n\t\t\t\tborderAlign: options.borderAlign,\r\n\t\t\t\tx: centerX + chart.offsetX,\r\n\t\t\t\ty: centerY + chart.offsetY,\r\n\t\t\t\tstartAngle: startAngle,\r\n\t\t\t\tendAngle: endAngle,\r\n\t\t\t\tcircumference: circumference,\r\n\t\t\t\touterRadius: outerRadius,\r\n\t\t\t\tinnerRadius: innerRadius,\r\n\t\t\t\tlabel: helpers$1.valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index])\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tvar model = arc._model;\r\n\r\n\t\t// Set correct angles if not resetting\r\n\t\tif (!reset || !animationOpts.animateRotate) {\r\n\t\t\tif (index === 0) {\r\n\t\t\t\tmodel.startAngle = opts.rotation;\r\n\t\t\t} else {\r\n\t\t\t\tmodel.startAngle = me.getMeta().data[index - 1]._model.endAngle;\r\n\t\t\t}\r\n\r\n\t\t\tmodel.endAngle = model.startAngle + model.circumference;\r\n\t\t}\r\n\r\n\t\tarc.pivot();\r\n\t},\r\n\r\n\tcalculateTotal: function() {\r\n\t\tvar dataset = this.getDataset();\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar total = 0;\r\n\t\tvar value;\r\n\r\n\t\thelpers$1.each(meta.data, function(element, index) {\r\n\t\t\tvalue = dataset.data[index];\r\n\t\t\tif (!isNaN(value) && !element.hidden) {\r\n\t\t\t\ttotal += Math.abs(value);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t/* if (total === 0) {\r\n\t\t\ttotal = NaN;\r\n\t\t}*/\r\n\r\n\t\treturn total;\r\n\t},\r\n\r\n\tcalculateCircumference: function(value) {\r\n\t\tvar total = this.getMeta().total;\r\n\t\tif (total > 0 && !isNaN(value)) {\r\n\t\t\treturn DOUBLE_PI$1 * (Math.abs(value) / total);\r\n\t\t}\r\n\t\treturn 0;\r\n\t},\r\n\r\n\t// gets the max border or hover width to properly scale pie charts\r\n\tgetMaxBorderWidth: function(arcs) {\r\n\t\tvar me = this;\r\n\t\tvar max = 0;\r\n\t\tvar chart = me.chart;\r\n\t\tvar i, ilen, meta, arc, controller, options, borderWidth, hoverWidth;\r\n\r\n\t\tif (!arcs) {\r\n\t\t\t// Find the outmost visible dataset\r\n\t\t\tfor (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\r\n\t\t\t\tif (chart.isDatasetVisible(i)) {\r\n\t\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\t\tarcs = meta.data;\r\n\t\t\t\t\tif (i !== me.index) {\r\n\t\t\t\t\t\tcontroller = meta.controller;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!arcs) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\r\n\t\t\tarc = arcs[i];\r\n\t\t\tif (controller) {\r\n\t\t\t\tcontroller._configure();\r\n\t\t\t\toptions = controller._resolveDataElementOptions(arc, i);\r\n\t\t\t} else {\r\n\t\t\t\toptions = arc._options;\r\n\t\t\t}\r\n\t\t\tif (options.borderAlign !== 'inner') {\r\n\t\t\t\tborderWidth = options.borderWidth;\r\n\t\t\t\thoverWidth = options.hoverBorderWidth;\r\n\r\n\t\t\t\tmax = borderWidth > max ? borderWidth : max;\r\n\t\t\t\tmax = hoverWidth > max ? hoverWidth : max;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn max;\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tsetHoverStyle: function(arc) {\r\n\t\tvar model = arc._model;\r\n\t\tvar options = arc._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\tarc.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault$5(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault$5(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault$5(options.hoverBorderWidth, options.borderWidth);\r\n\t},\r\n\r\n\t/**\r\n\t * Get radius length offset of the dataset in relation to the visible datasets weights. This allows determining the inner and outer radius correctly\r\n\t * @private\r\n\t */\r\n\t_getRingWeightOffset: function(datasetIndex) {\r\n\t\tvar ringWeightOffset = 0;\r\n\r\n\t\tfor (var i = 0; i < datasetIndex; ++i) {\r\n\t\t\tif (this.chart.isDatasetVisible(i)) {\r\n\t\t\t\tringWeightOffset += this._getRingWeight(i);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn ringWeightOffset;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getRingWeight: function(dataSetIndex) {\r\n\t\treturn Math.max(valueOrDefault$5(this.chart.data.datasets[dataSetIndex].weight, 1), 0);\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the sum of all visibile data set weights. This value can be 0.\r\n\t * @private\r\n\t */\r\n\t_getVisibleDatasetWeightTotal: function() {\r\n\t\treturn this._getRingWeightOffset(this.chart.data.datasets.length);\r\n\t}\r\n});\n\ncore_defaults._set('horizontalBar', {\r\n\thover: {\r\n\t\tmode: 'index',\r\n\t\taxis: 'y'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'linear',\r\n\t\t\tposition: 'bottom'\r\n\t\t}],\r\n\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'category',\r\n\t\t\tposition: 'left',\r\n\t\t\toffset: true,\r\n\t\t\tgridLines: {\r\n\t\t\t\toffsetGridLines: true\r\n\t\t\t}\r\n\t\t}]\r\n\t},\r\n\r\n\telements: {\r\n\t\trectangle: {\r\n\t\t\tborderSkipped: 'left'\r\n\t\t}\r\n\t},\r\n\r\n\ttooltips: {\r\n\t\tmode: 'index',\r\n\t\taxis: 'y'\r\n\t}\r\n});\r\n\r\ncore_defaults._set('global', {\r\n\tdatasets: {\r\n\t\thorizontalBar: {\r\n\t\t\tcategoryPercentage: 0.8,\r\n\t\t\tbarPercentage: 0.9\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_horizontalBar = controller_bar.extend({\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScaleId: function() {\r\n\t\treturn this.getMeta().xAxisID;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScaleId: function() {\r\n\t\treturn this.getMeta().yAxisID;\r\n\t}\r\n});\n\nvar valueOrDefault$6 = helpers$1.valueOrDefault;\r\nvar resolve$2 = helpers$1.options.resolve;\r\nvar isPointInArea = helpers$1.canvas._isPointInArea;\r\n\r\ncore_defaults._set('line', {\r\n\tshowLines: true,\r\n\tspanGaps: false,\r\n\r\n\thover: {\r\n\t\tmode: 'label'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'category',\r\n\t\t\tid: 'x-axis-0'\r\n\t\t}],\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'linear',\r\n\t\t\tid: 'y-axis-0'\r\n\t\t}]\r\n\t}\r\n});\r\n\r\nfunction scaleClip(scale, halfBorderWidth) {\r\n\tvar tickOpts = scale && scale.options.ticks || {};\r\n\tvar reverse = tickOpts.reverse;\r\n\tvar min = tickOpts.min === undefined ? halfBorderWidth : 0;\r\n\tvar max = tickOpts.max === undefined ? halfBorderWidth : 0;\r\n\treturn {\r\n\t\tstart: reverse ? max : min,\r\n\t\tend: reverse ? min : max\r\n\t};\r\n}\r\n\r\nfunction defaultClip(xScale, yScale, borderWidth) {\r\n\tvar halfBorderWidth = borderWidth / 2;\r\n\tvar x = scaleClip(xScale, halfBorderWidth);\r\n\tvar y = scaleClip(yScale, halfBorderWidth);\r\n\r\n\treturn {\r\n\t\ttop: y.end,\r\n\t\tright: x.end,\r\n\t\tbottom: y.start,\r\n\t\tleft: x.start\r\n\t};\r\n}\r\n\r\nfunction toClip(value) {\r\n\tvar t, r, b, l;\r\n\r\n\tif (helpers$1.isObject(value)) {\r\n\t\tt = value.top;\r\n\t\tr = value.right;\r\n\t\tb = value.bottom;\r\n\t\tl = value.left;\r\n\t} else {\r\n\t\tt = r = b = l = value;\r\n\t}\r\n\r\n\treturn {\r\n\t\ttop: t,\r\n\t\tright: r,\r\n\t\tbottom: b,\r\n\t\tleft: l\r\n\t};\r\n}\r\n\r\n\r\nvar controller_line = core_datasetController.extend({\r\n\r\n\tdatasetElementType: elements.Line,\r\n\r\n\tdataElementType: elements.Point,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_datasetElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderCapStyle',\r\n\t\t'borderColor',\r\n\t\t'borderDash',\r\n\t\t'borderDashOffset',\r\n\t\t'borderJoinStyle',\r\n\t\t'borderWidth',\r\n\t\t'cubicInterpolationMode',\r\n\t\t'fill'\r\n\t],\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: {\r\n\t\tbackgroundColor: 'pointBackgroundColor',\r\n\t\tborderColor: 'pointBorderColor',\r\n\t\tborderWidth: 'pointBorderWidth',\r\n\t\thitRadius: 'pointHitRadius',\r\n\t\thoverBackgroundColor: 'pointHoverBackgroundColor',\r\n\t\thoverBorderColor: 'pointHoverBorderColor',\r\n\t\thoverBorderWidth: 'pointHoverBorderWidth',\r\n\t\thoverRadius: 'pointHoverRadius',\r\n\t\tpointStyle: 'pointStyle',\r\n\t\tradius: 'pointRadius',\r\n\t\trotation: 'pointRotation'\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar line = meta.dataset;\r\n\t\tvar points = meta.data || [];\r\n\t\tvar options = me.chart.options;\r\n\t\tvar config = me._config;\r\n\t\tvar showLine = me._showLine = valueOrDefault$6(config.showLine, options.showLines);\r\n\t\tvar i, ilen;\r\n\r\n\t\tme._xScale = me.getScaleForId(meta.xAxisID);\r\n\t\tme._yScale = me.getScaleForId(meta.yAxisID);\r\n\r\n\t\t// Update Line\r\n\t\tif (showLine) {\r\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\r\n\t\t\tif (config.tension !== undefined && config.lineTension === undefined) {\r\n\t\t\t\tconfig.lineTension = config.tension;\r\n\t\t\t}\r\n\r\n\t\t\t// Utility\r\n\t\t\tline._scale = me._yScale;\r\n\t\t\tline._datasetIndex = me.index;\r\n\t\t\t// Data\r\n\t\t\tline._children = points;\r\n\t\t\t// Model\r\n\t\t\tline._model = me._resolveDatasetElementOptions(line);\r\n\r\n\t\t\tline.pivot();\r\n\t\t}\r\n\r\n\t\t// Update Points\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tme.updateElement(points[i], i, reset);\r\n\t\t}\r\n\r\n\t\tif (showLine && line._model.tension !== 0) {\r\n\t\t\tme.updateBezierControlPoints();\r\n\t\t}\r\n\r\n\t\t// Now pivot the point for animation\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tpoints[i].pivot();\r\n\t\t}\r\n\t},\r\n\r\n\tupdateElement: function(point, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar custom = point.custom || {};\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar datasetIndex = me.index;\r\n\t\tvar value = dataset.data[index];\r\n\t\tvar xScale = me._xScale;\r\n\t\tvar yScale = me._yScale;\r\n\t\tvar lineModel = meta.dataset._model;\r\n\t\tvar x, y;\r\n\r\n\t\tvar options = me._resolveDataElementOptions(point, index);\r\n\r\n\t\tx = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex);\r\n\t\ty = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex);\r\n\r\n\t\t// Utility\r\n\t\tpoint._xScale = xScale;\r\n\t\tpoint._yScale = yScale;\r\n\t\tpoint._options = options;\r\n\t\tpoint._datasetIndex = datasetIndex;\r\n\t\tpoint._index = index;\r\n\r\n\t\t// Desired view properties\r\n\t\tpoint._model = {\r\n\t\t\tx: x,\r\n\t\t\ty: y,\r\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\r\n\t\t\t// Appearance\r\n\t\t\tradius: options.radius,\r\n\t\t\tpointStyle: options.pointStyle,\r\n\t\t\trotation: options.rotation,\r\n\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\tborderColor: options.borderColor,\r\n\t\t\tborderWidth: options.borderWidth,\r\n\t\t\ttension: valueOrDefault$6(custom.tension, lineModel ? lineModel.tension : 0),\r\n\t\t\tsteppedLine: lineModel ? lineModel.steppedLine : false,\r\n\t\t\t// Tooltip\r\n\t\t\thitRadius: options.hitRadius\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDatasetElementOptions: function(element) {\r\n\t\tvar me = this;\r\n\t\tvar config = me._config;\r\n\t\tvar custom = element.custom || {};\r\n\t\tvar options = me.chart.options;\r\n\t\tvar lineOptions = options.elements.line;\r\n\t\tvar values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments);\r\n\r\n\t\t// The default behavior of lines is to break at null values, according\r\n\t\t// to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158\r\n\t\t// This option gives lines the ability to span gaps\r\n\t\tvalues.spanGaps = valueOrDefault$6(config.spanGaps, options.spanGaps);\r\n\t\tvalues.tension = valueOrDefault$6(config.lineTension, lineOptions.tension);\r\n\t\tvalues.steppedLine = resolve$2([custom.steppedLine, config.steppedLine, lineOptions.stepped]);\r\n\t\tvalues.clip = toClip(valueOrDefault$6(config.clip, defaultClip(me._xScale, me._yScale, values.borderWidth)));\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\tcalculatePointY: function(value, index, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar yScale = me._yScale;\r\n\t\tvar sumPos = 0;\r\n\t\tvar sumNeg = 0;\r\n\t\tvar i, ds, dsMeta, stackedRightValue, rightValue, metasets, ilen;\r\n\r\n\t\tif (yScale.options.stacked) {\r\n\t\t\trightValue = +yScale.getRightValue(value);\r\n\t\t\tmetasets = chart._getSortedVisibleDatasetMetas();\r\n\t\t\tilen = metasets.length;\r\n\r\n\t\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\t\tdsMeta = metasets[i];\r\n\t\t\t\tif (dsMeta.index === datasetIndex) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tds = chart.data.datasets[dsMeta.index];\r\n\t\t\t\tif (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id) {\r\n\t\t\t\t\tstackedRightValue = +yScale.getRightValue(ds.data[index]);\r\n\t\t\t\t\tif (stackedRightValue < 0) {\r\n\t\t\t\t\t\tsumNeg += stackedRightValue || 0;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsumPos += stackedRightValue || 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (rightValue < 0) {\r\n\t\t\t\treturn yScale.getPixelForValue(sumNeg + rightValue);\r\n\t\t\t}\r\n\t\t\treturn yScale.getPixelForValue(sumPos + rightValue);\r\n\t\t}\r\n\t\treturn yScale.getPixelForValue(value);\r\n\t},\r\n\r\n\tupdateBezierControlPoints: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar lineModel = meta.dataset._model;\r\n\t\tvar area = chart.chartArea;\r\n\t\tvar points = meta.data || [];\r\n\t\tvar i, ilen, model, controlPoints;\r\n\r\n\t\t// Only consider points that are drawn in case the spanGaps option is used\r\n\t\tif (lineModel.spanGaps) {\r\n\t\t\tpoints = points.filter(function(pt) {\r\n\t\t\t\treturn !pt._model.skip;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction capControlPoint(pt, min, max) {\r\n\t\t\treturn Math.max(Math.min(pt, max), min);\r\n\t\t}\r\n\r\n\t\tif (lineModel.cubicInterpolationMode === 'monotone') {\r\n\t\t\thelpers$1.splineCurveMonotone(points);\r\n\t\t} else {\r\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\t\tmodel = points[i]._model;\r\n\t\t\t\tcontrolPoints = helpers$1.splineCurve(\r\n\t\t\t\t\thelpers$1.previousItem(points, i)._model,\r\n\t\t\t\t\tmodel,\r\n\t\t\t\t\thelpers$1.nextItem(points, i)._model,\r\n\t\t\t\t\tlineModel.tension\r\n\t\t\t\t);\r\n\t\t\t\tmodel.controlPointPreviousX = controlPoints.previous.x;\r\n\t\t\t\tmodel.controlPointPreviousY = controlPoints.previous.y;\r\n\t\t\t\tmodel.controlPointNextX = controlPoints.next.x;\r\n\t\t\t\tmodel.controlPointNextY = controlPoints.next.y;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (chart.options.elements.line.capBezierPoints) {\r\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\t\tmodel = points[i]._model;\r\n\t\t\t\tif (isPointInArea(model, area)) {\r\n\t\t\t\t\tif (i > 0 && isPointInArea(points[i - 1]._model, area)) {\r\n\t\t\t\t\t\tmodel.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right);\r\n\t\t\t\t\t\tmodel.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (i < points.length - 1 && isPointInArea(points[i + 1]._model, area)) {\r\n\t\t\t\t\t\tmodel.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right);\r\n\t\t\t\t\t\tmodel.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar points = meta.data || [];\r\n\t\tvar area = chart.chartArea;\r\n\t\tvar canvas = chart.canvas;\r\n\t\tvar i = 0;\r\n\t\tvar ilen = points.length;\r\n\t\tvar clip;\r\n\r\n\t\tif (me._showLine) {\r\n\t\t\tclip = meta.dataset._model.clip;\r\n\r\n\t\t\thelpers$1.canvas.clipArea(chart.ctx, {\r\n\t\t\t\tleft: clip.left === false ? 0 : area.left - clip.left,\r\n\t\t\t\tright: clip.right === false ? canvas.width : area.right + clip.right,\r\n\t\t\t\ttop: clip.top === false ? 0 : area.top - clip.top,\r\n\t\t\t\tbottom: clip.bottom === false ? canvas.height : area.bottom + clip.bottom\r\n\t\t\t});\r\n\r\n\t\t\tmeta.dataset.draw();\r\n\r\n\t\t\thelpers$1.canvas.unclipArea(chart.ctx);\r\n\t\t}\r\n\r\n\t\t// Draw the points\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\tpoints[i].draw(area);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tsetHoverStyle: function(point) {\r\n\t\tvar model = point._model;\r\n\t\tvar options = point._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\tpoint.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t\tradius: model.radius\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault$6(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault$6(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault$6(options.hoverBorderWidth, options.borderWidth);\r\n\t\tmodel.radius = valueOrDefault$6(options.hoverRadius, options.radius);\r\n\t},\r\n});\n\nvar resolve$3 = helpers$1.options.resolve;\r\n\r\ncore_defaults._set('polarArea', {\r\n\tscale: {\r\n\t\ttype: 'radialLinear',\r\n\t\tangleLines: {\r\n\t\t\tdisplay: false\r\n\t\t},\r\n\t\tgridLines: {\r\n\t\t\tcircular: true\r\n\t\t},\r\n\t\tpointLabels: {\r\n\t\t\tdisplay: false\r\n\t\t},\r\n\t\tticks: {\r\n\t\t\tbeginAtZero: true\r\n\t\t}\r\n\t},\r\n\r\n\t// Boolean - Whether to animate the rotation of the chart\r\n\tanimation: {\r\n\t\tanimateRotate: true,\r\n\t\tanimateScale: true\r\n\t},\r\n\r\n\tstartAngle: -0.5 * Math.PI,\r\n\tlegendCallback: function(chart) {\r\n\t\tvar list = document.createElement('ul');\r\n\t\tvar data = chart.data;\r\n\t\tvar datasets = data.datasets;\r\n\t\tvar labels = data.labels;\r\n\t\tvar i, ilen, listItem, listItemSpan;\r\n\r\n\t\tlist.setAttribute('class', chart.id + '-legend');\r\n\t\tif (datasets.length) {\r\n\t\t\tfor (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) {\r\n\t\t\t\tlistItem = list.appendChild(document.createElement('li'));\r\n\t\t\t\tlistItemSpan = listItem.appendChild(document.createElement('span'));\r\n\t\t\t\tlistItemSpan.style.backgroundColor = datasets[0].backgroundColor[i];\r\n\t\t\t\tif (labels[i]) {\r\n\t\t\t\t\tlistItem.appendChild(document.createTextNode(labels[i]));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn list.outerHTML;\r\n\t},\r\n\tlegend: {\r\n\t\tlabels: {\r\n\t\t\tgenerateLabels: function(chart) {\r\n\t\t\t\tvar data = chart.data;\r\n\t\t\t\tif (data.labels.length && data.datasets.length) {\r\n\t\t\t\t\treturn data.labels.map(function(label, i) {\r\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\r\n\t\t\t\t\t\tvar style = meta.controller.getStyle(i);\r\n\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\ttext: label,\r\n\t\t\t\t\t\t\tfillStyle: style.backgroundColor,\r\n\t\t\t\t\t\t\tstrokeStyle: style.borderColor,\r\n\t\t\t\t\t\t\tlineWidth: style.borderWidth,\r\n\t\t\t\t\t\t\thidden: isNaN(data.datasets[0].data[i]) || meta.data[i].hidden,\r\n\r\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\r\n\t\t\t\t\t\t\tindex: i\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\treturn [];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tonClick: function(e, legendItem) {\r\n\t\t\tvar index = legendItem.index;\r\n\t\t\tvar chart = this.chart;\r\n\t\t\tvar i, ilen, meta;\r\n\r\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\r\n\t\t\t}\r\n\r\n\t\t\tchart.update();\r\n\t\t}\r\n\t},\r\n\r\n\t// Need to override these to give a nice default\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\tlabel: function(item, data) {\r\n\t\t\t\treturn data.labels[item.index] + ': ' + item.yLabel;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_polarArea = core_datasetController.extend({\r\n\r\n\tdataElementType: elements.Arc,\r\n\r\n\tlinkScales: helpers$1.noop,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderWidth',\r\n\t\t'borderAlign',\r\n\t\t'hoverBackgroundColor',\r\n\t\t'hoverBorderColor',\r\n\t\t'hoverBorderWidth',\r\n\t],\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScaleId: function() {\r\n\t\treturn this.chart.scale.id;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScaleId: function() {\r\n\t\treturn this.chart.scale.id;\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar start = me.chart.options.startAngle || 0;\r\n\t\tvar starts = me._starts = [];\r\n\t\tvar angles = me._angles = [];\r\n\t\tvar arcs = meta.data;\r\n\t\tvar i, ilen, angle;\r\n\r\n\t\tme._updateRadius();\r\n\r\n\t\tmeta.count = me.countVisibleElements();\r\n\r\n\t\tfor (i = 0, ilen = dataset.data.length; i < ilen; i++) {\r\n\t\t\tstarts[i] = start;\r\n\t\t\tangle = me._computeAngle(i);\r\n\t\t\tangles[i] = angle;\r\n\t\t\tstart += angle;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\r\n\t\t\tarcs[i]._options = me._resolveDataElementOptions(arcs[i], i);\r\n\t\t\tme.updateElement(arcs[i], i, reset);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_updateRadius: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar chartArea = chart.chartArea;\r\n\t\tvar opts = chart.options;\r\n\t\tvar minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\r\n\r\n\t\tchart.outerRadius = Math.max(minSize / 2, 0);\r\n\t\tchart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\r\n\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\r\n\r\n\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.index);\r\n\t\tme.innerRadius = me.outerRadius - chart.radiusLength;\r\n\t},\r\n\r\n\tupdateElement: function(arc, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar opts = chart.options;\r\n\t\tvar animationOpts = opts.animation;\r\n\t\tvar scale = chart.scale;\r\n\t\tvar labels = chart.data.labels;\r\n\r\n\t\tvar centerX = scale.xCenter;\r\n\t\tvar centerY = scale.yCenter;\r\n\r\n\t\t// var negHalfPI = -0.5 * Math.PI;\r\n\t\tvar datasetStartAngle = opts.startAngle;\r\n\t\tvar distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\r\n\t\tvar startAngle = me._starts[index];\r\n\t\tvar endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]);\r\n\r\n\t\tvar resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\r\n\t\tvar options = arc._options || {};\r\n\r\n\t\thelpers$1.extend(arc, {\r\n\t\t\t// Utility\r\n\t\t\t_datasetIndex: me.index,\r\n\t\t\t_index: index,\r\n\t\t\t_scale: scale,\r\n\r\n\t\t\t// Desired view properties\r\n\t\t\t_model: {\r\n\t\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\t\tborderColor: options.borderColor,\r\n\t\t\t\tborderWidth: options.borderWidth,\r\n\t\t\t\tborderAlign: options.borderAlign,\r\n\t\t\t\tx: centerX,\r\n\t\t\t\ty: centerY,\r\n\t\t\t\tinnerRadius: 0,\r\n\t\t\t\touterRadius: reset ? resetRadius : distance,\r\n\t\t\t\tstartAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle,\r\n\t\t\t\tendAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle,\r\n\t\t\t\tlabel: helpers$1.valueAtIndexOrDefault(labels, index, labels[index])\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tarc.pivot();\r\n\t},\r\n\r\n\tcountVisibleElements: function() {\r\n\t\tvar dataset = this.getDataset();\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar count = 0;\r\n\r\n\t\thelpers$1.each(meta.data, function(element, index) {\r\n\t\t\tif (!isNaN(dataset.data[index]) && !element.hidden) {\r\n\t\t\t\tcount++;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn count;\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tsetHoverStyle: function(arc) {\r\n\t\tvar model = arc._model;\r\n\t\tvar options = arc._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\t\tvar valueOrDefault = helpers$1.valueOrDefault;\r\n\r\n\t\tarc.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault(options.hoverBorderWidth, options.borderWidth);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_computeAngle: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar count = this.getMeta().count;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar meta = me.getMeta();\r\n\r\n\t\tif (isNaN(dataset.data[index]) || meta.data[index].hidden) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: me.chart,\r\n\t\t\tdataIndex: index,\r\n\t\t\tdataset: dataset,\r\n\t\t\tdatasetIndex: me.index\r\n\t\t};\r\n\r\n\t\treturn resolve$3([\r\n\t\t\tme.chart.options.elements.arc.angle,\r\n\t\t\t(2 * Math.PI) / count\r\n\t\t], context, index);\r\n\t}\r\n});\n\ncore_defaults._set('pie', helpers$1.clone(core_defaults.doughnut));\r\ncore_defaults._set('pie', {\r\n\tcutoutPercentage: 0\r\n});\r\n\r\n// Pie charts are Doughnut chart with different defaults\r\nvar controller_pie = controller_doughnut;\n\nvar valueOrDefault$7 = helpers$1.valueOrDefault;\r\n\r\ncore_defaults._set('radar', {\r\n\tspanGaps: false,\r\n\tscale: {\r\n\t\ttype: 'radialLinear'\r\n\t},\r\n\telements: {\r\n\t\tline: {\r\n\t\t\tfill: 'start',\r\n\t\t\ttension: 0 // no bezier in radar\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_radar = core_datasetController.extend({\r\n\tdatasetElementType: elements.Line,\r\n\r\n\tdataElementType: elements.Point,\r\n\r\n\tlinkScales: helpers$1.noop,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_datasetElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderWidth',\r\n\t\t'borderColor',\r\n\t\t'borderCapStyle',\r\n\t\t'borderDash',\r\n\t\t'borderDashOffset',\r\n\t\t'borderJoinStyle',\r\n\t\t'fill'\r\n\t],\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: {\r\n\t\tbackgroundColor: 'pointBackgroundColor',\r\n\t\tborderColor: 'pointBorderColor',\r\n\t\tborderWidth: 'pointBorderWidth',\r\n\t\thitRadius: 'pointHitRadius',\r\n\t\thoverBackgroundColor: 'pointHoverBackgroundColor',\r\n\t\thoverBorderColor: 'pointHoverBorderColor',\r\n\t\thoverBorderWidth: 'pointHoverBorderWidth',\r\n\t\thoverRadius: 'pointHoverRadius',\r\n\t\tpointStyle: 'pointStyle',\r\n\t\tradius: 'pointRadius',\r\n\t\trotation: 'pointRotation'\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScaleId: function() {\r\n\t\treturn this.chart.scale.id;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScaleId: function() {\r\n\t\treturn this.chart.scale.id;\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar line = meta.dataset;\r\n\t\tvar points = meta.data || [];\r\n\t\tvar scale = me.chart.scale;\r\n\t\tvar config = me._config;\r\n\t\tvar i, ilen;\r\n\r\n\t\t// Compatibility: If the properties are defined with only the old name, use those values\r\n\t\tif (config.tension !== undefined && config.lineTension === undefined) {\r\n\t\t\tconfig.lineTension = config.tension;\r\n\t\t}\r\n\r\n\t\t// Utility\r\n\t\tline._scale = scale;\r\n\t\tline._datasetIndex = me.index;\r\n\t\t// Data\r\n\t\tline._children = points;\r\n\t\tline._loop = true;\r\n\t\t// Model\r\n\t\tline._model = me._resolveDatasetElementOptions(line);\r\n\r\n\t\tline.pivot();\r\n\r\n\t\t// Update Points\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tme.updateElement(points[i], i, reset);\r\n\t\t}\r\n\r\n\t\t// Update bezier control points\r\n\t\tme.updateBezierControlPoints();\r\n\r\n\t\t// Now pivot the point for animation\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tpoints[i].pivot();\r\n\t\t}\r\n\t},\r\n\r\n\tupdateElement: function(point, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar custom = point.custom || {};\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar scale = me.chart.scale;\r\n\t\tvar pointPosition = scale.getPointPositionForValue(index, dataset.data[index]);\r\n\t\tvar options = me._resolveDataElementOptions(point, index);\r\n\t\tvar lineModel = me.getMeta().dataset._model;\r\n\t\tvar x = reset ? scale.xCenter : pointPosition.x;\r\n\t\tvar y = reset ? scale.yCenter : pointPosition.y;\r\n\r\n\t\t// Utility\r\n\t\tpoint._scale = scale;\r\n\t\tpoint._options = options;\r\n\t\tpoint._datasetIndex = me.index;\r\n\t\tpoint._index = index;\r\n\r\n\t\t// Desired view properties\r\n\t\tpoint._model = {\r\n\t\t\tx: x, // value not used in dataset scale, but we want a consistent API between scales\r\n\t\t\ty: y,\r\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\r\n\t\t\t// Appearance\r\n\t\t\tradius: options.radius,\r\n\t\t\tpointStyle: options.pointStyle,\r\n\t\t\trotation: options.rotation,\r\n\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\tborderColor: options.borderColor,\r\n\t\t\tborderWidth: options.borderWidth,\r\n\t\t\ttension: valueOrDefault$7(custom.tension, lineModel ? lineModel.tension : 0),\r\n\r\n\t\t\t// Tooltip\r\n\t\t\thitRadius: options.hitRadius\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDatasetElementOptions: function() {\r\n\t\tvar me = this;\r\n\t\tvar config = me._config;\r\n\t\tvar options = me.chart.options;\r\n\t\tvar values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments);\r\n\r\n\t\tvalues.spanGaps = valueOrDefault$7(config.spanGaps, options.spanGaps);\r\n\t\tvalues.tension = valueOrDefault$7(config.lineTension, options.elements.line.tension);\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\tupdateBezierControlPoints: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar area = me.chart.chartArea;\r\n\t\tvar points = meta.data || [];\r\n\t\tvar i, ilen, model, controlPoints;\r\n\r\n\t\t// Only consider points that are drawn in case the spanGaps option is used\r\n\t\tif (meta.dataset._model.spanGaps) {\r\n\t\t\tpoints = points.filter(function(pt) {\r\n\t\t\t\treturn !pt._model.skip;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction capControlPoint(pt, min, max) {\r\n\t\t\treturn Math.max(Math.min(pt, max), min);\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tmodel = points[i]._model;\r\n\t\t\tcontrolPoints = helpers$1.splineCurve(\r\n\t\t\t\thelpers$1.previousItem(points, i, true)._model,\r\n\t\t\t\tmodel,\r\n\t\t\t\thelpers$1.nextItem(points, i, true)._model,\r\n\t\t\t\tmodel.tension\r\n\t\t\t);\r\n\r\n\t\t\t// Prevent the bezier going outside of the bounds of the graph\r\n\t\t\tmodel.controlPointPreviousX = capControlPoint(controlPoints.previous.x, area.left, area.right);\r\n\t\t\tmodel.controlPointPreviousY = capControlPoint(controlPoints.previous.y, area.top, area.bottom);\r\n\t\t\tmodel.controlPointNextX = capControlPoint(controlPoints.next.x, area.left, area.right);\r\n\t\t\tmodel.controlPointNextY = capControlPoint(controlPoints.next.y, area.top, area.bottom);\r\n\t\t}\r\n\t},\r\n\r\n\tsetHoverStyle: function(point) {\r\n\t\tvar model = point._model;\r\n\t\tvar options = point._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\tpoint.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t\tradius: model.radius\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault$7(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault$7(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault$7(options.hoverBorderWidth, options.borderWidth);\r\n\t\tmodel.radius = valueOrDefault$7(options.hoverRadius, options.radius);\r\n\t}\r\n});\n\ncore_defaults._set('scatter', {\r\n\thover: {\r\n\t\tmode: 'single'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\tid: 'x-axis-1', // need an ID so datasets can reference the scale\r\n\t\t\ttype: 'linear', // scatter should not use a category axis\r\n\t\t\tposition: 'bottom'\r\n\t\t}],\r\n\t\tyAxes: [{\r\n\t\t\tid: 'y-axis-1',\r\n\t\t\ttype: 'linear',\r\n\t\t\tposition: 'left'\r\n\t\t}]\r\n\t},\r\n\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\treturn ''; // doesn't make sense for scatter since data are formatted as a point\r\n\t\t\t},\r\n\t\t\tlabel: function(item) {\r\n\t\t\t\treturn '(' + item.xLabel + ', ' + item.yLabel + ')';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\ncore_defaults._set('global', {\r\n\tdatasets: {\r\n\t\tscatter: {\r\n\t\t\tshowLine: false\r\n\t\t}\r\n\t}\r\n});\r\n\r\n// Scatter charts use line controllers\r\nvar controller_scatter = controller_line;\n\n// NOTE export a map in which the key represents the controller type, not\r\n// the class, and so must be CamelCase in order to be correctly retrieved\r\n// by the controller in core.controller.js (`controllers[meta.type]`).\r\n\r\nvar controllers = {\r\n\tbar: controller_bar,\r\n\tbubble: controller_bubble,\r\n\tdoughnut: controller_doughnut,\r\n\thorizontalBar: controller_horizontalBar,\r\n\tline: controller_line,\r\n\tpolarArea: controller_polarArea,\r\n\tpie: controller_pie,\r\n\tradar: controller_radar,\r\n\tscatter: controller_scatter\r\n};\n\n/**\r\n * Helper function to get relative position for an event\r\n * @param {Event|IEvent} event - The event to get the position for\r\n * @param {Chart} chart - The chart\r\n * @returns {object} the event position\r\n */\r\nfunction getRelativePosition(e, chart) {\r\n\tif (e.native) {\r\n\t\treturn {\r\n\t\t\tx: e.x,\r\n\t\t\ty: e.y\r\n\t\t};\r\n\t}\r\n\r\n\treturn helpers$1.getRelativePosition(e, chart);\r\n}\r\n\r\n/**\r\n * Helper function to traverse all of the visible elements in the chart\r\n * @param {Chart} chart - the chart\r\n * @param {function} handler - the callback to execute for each visible item\r\n */\r\nfunction parseVisibleItems(chart, handler) {\r\n\tvar metasets = chart._getSortedVisibleDatasetMetas();\r\n\tvar metadata, i, j, ilen, jlen, element;\r\n\r\n\tfor (i = 0, ilen = metasets.length; i < ilen; ++i) {\r\n\t\tmetadata = metasets[i].data;\r\n\t\tfor (j = 0, jlen = metadata.length; j < jlen; ++j) {\r\n\t\t\telement = metadata[j];\r\n\t\t\tif (!element._view.skip) {\r\n\t\t\t\thandler(element);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Helper function to get the items that intersect the event position\r\n * @param {ChartElement[]} items - elements to filter\r\n * @param {object} position - the point to be nearest to\r\n * @return {ChartElement[]} the nearest items\r\n */\r\nfunction getIntersectItems(chart, position) {\r\n\tvar elements = [];\r\n\r\n\tparseVisibleItems(chart, function(element) {\r\n\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\telements.push(element);\r\n\t\t}\r\n\t});\r\n\r\n\treturn elements;\r\n}\r\n\r\n/**\r\n * Helper function to get the items nearest to the event position considering all visible items in teh chart\r\n * @param {Chart} chart - the chart to look at elements from\r\n * @param {object} position - the point to be nearest to\r\n * @param {boolean} intersect - if true, only consider items that intersect the position\r\n * @param {function} distanceMetric - function to provide the distance between points\r\n * @return {ChartElement[]} the nearest items\r\n */\r\nfunction getNearestItems(chart, position, intersect, distanceMetric) {\r\n\tvar minDistance = Number.POSITIVE_INFINITY;\r\n\tvar nearestItems = [];\r\n\r\n\tparseVisibleItems(chart, function(element) {\r\n\t\tif (intersect && !element.inRange(position.x, position.y)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar center = element.getCenterPoint();\r\n\t\tvar distance = distanceMetric(position, center);\r\n\t\tif (distance < minDistance) {\r\n\t\t\tnearestItems = [element];\r\n\t\t\tminDistance = distance;\r\n\t\t} else if (distance === minDistance) {\r\n\t\t\t// Can have multiple items at the same distance in which case we sort by size\r\n\t\t\tnearestItems.push(element);\r\n\t\t}\r\n\t});\r\n\r\n\treturn nearestItems;\r\n}\r\n\r\n/**\r\n * Get a distance metric function for two points based on the\r\n * axis mode setting\r\n * @param {string} axis - the axis mode. x|y|xy\r\n */\r\nfunction getDistanceMetricForAxis(axis) {\r\n\tvar useX = axis.indexOf('x') !== -1;\r\n\tvar useY = axis.indexOf('y') !== -1;\r\n\r\n\treturn function(pt1, pt2) {\r\n\t\tvar deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\r\n\t\tvar deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\r\n\t\treturn Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\r\n\t};\r\n}\r\n\r\nfunction indexMode(chart, e, options) {\r\n\tvar position = getRelativePosition(e, chart);\r\n\t// Default axis for index mode is 'x' to match old behaviour\r\n\toptions.axis = options.axis || 'x';\r\n\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\r\n\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\r\n\tvar elements = [];\r\n\r\n\tif (!items.length) {\r\n\t\treturn [];\r\n\t}\r\n\r\n\tchart._getSortedVisibleDatasetMetas().forEach(function(meta) {\r\n\t\tvar element = meta.data[items[0]._index];\r\n\r\n\t\t// don't count items that are skipped (null data)\r\n\t\tif (element && !element._view.skip) {\r\n\t\t\telements.push(element);\r\n\t\t}\r\n\t});\r\n\r\n\treturn elements;\r\n}\r\n\r\n/**\r\n * @interface IInteractionOptions\r\n */\r\n/**\r\n * If true, only consider items that intersect the point\r\n * @name IInterfaceOptions#boolean\r\n * @type Boolean\r\n */\r\n\r\n/**\r\n * Contains interaction related functions\r\n * @namespace Chart.Interaction\r\n */\r\nvar core_interaction = {\r\n\t// Helper function for different modes\r\n\tmodes: {\r\n\t\tsingle: function(chart, e) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\tvar elements = [];\r\n\r\n\t\t\tparseVisibleItems(chart, function(element) {\r\n\t\t\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\t\t\telements.push(element);\r\n\t\t\t\t\treturn elements;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treturn elements.slice(0, 1);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @function Chart.Interaction.modes.label\r\n\t\t * @deprecated since version 2.4.0\r\n\t\t * @todo remove at version 3\r\n\t\t * @private\r\n\t\t */\r\n\t\tlabel: indexMode,\r\n\r\n\t\t/**\r\n\t\t * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\r\n\t\t * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\r\n\t\t * @function Chart.Interaction.modes.index\r\n\t\t * @since v2.4.0\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use during interaction\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tindex: indexMode,\r\n\r\n\t\t/**\r\n\t\t * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\r\n\t\t * If the options.intersect is false, we find the nearest item and return the items in that dataset\r\n\t\t * @function Chart.Interaction.modes.dataset\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use during interaction\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tdataset: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\toptions.axis = options.axis || 'xy';\r\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\r\n\t\t\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\r\n\r\n\t\t\tif (items.length > 0) {\r\n\t\t\t\titems = chart.getDatasetMeta(items[0]._datasetIndex).data;\r\n\t\t\t}\r\n\r\n\t\t\treturn items;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @function Chart.Interaction.modes.x-axis\r\n\t\t * @deprecated since version 2.4.0. Use index mode and intersect == true\r\n\t\t * @todo remove at version 3\r\n\t\t * @private\r\n\t\t */\r\n\t\t'x-axis': function(chart, e) {\r\n\t\t\treturn indexMode(chart, e, {intersect: false});\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Point mode returns all elements that hit test based on the event position\r\n\t\t * of the event\r\n\t\t * @function Chart.Interaction.modes.intersect\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tpoint: function(chart, e) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\treturn getIntersectItems(chart, position);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * nearest mode returns the element closest to the point\r\n\t\t * @function Chart.Interaction.modes.intersect\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tnearest: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\toptions.axis = options.axis || 'xy';\r\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\r\n\t\t\treturn getNearestItems(chart, position, options.intersect, distanceMetric);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * x mode returns the elements that hit-test at the current x coordinate\r\n\t\t * @function Chart.Interaction.modes.x\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tx: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\tvar items = [];\r\n\t\t\tvar intersectsItem = false;\r\n\r\n\t\t\tparseVisibleItems(chart, function(element) {\r\n\t\t\t\tif (element.inXRange(position.x)) {\r\n\t\t\t\t\titems.push(element);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\t\t\tintersectsItem = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// If we want to trigger on an intersect and we don't have any items\r\n\t\t\t// that intersect the position, return nothing\r\n\t\t\tif (options.intersect && !intersectsItem) {\r\n\t\t\t\titems = [];\r\n\t\t\t}\r\n\t\t\treturn items;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * y mode returns the elements that hit-test at the current y coordinate\r\n\t\t * @function Chart.Interaction.modes.y\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\ty: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\tvar items = [];\r\n\t\t\tvar intersectsItem = false;\r\n\r\n\t\t\tparseVisibleItems(chart, function(element) {\r\n\t\t\t\tif (element.inYRange(position.y)) {\r\n\t\t\t\t\titems.push(element);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\t\t\tintersectsItem = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// If we want to trigger on an intersect and we don't have any items\r\n\t\t\t// that intersect the position, return nothing\r\n\t\t\tif (options.intersect && !intersectsItem) {\r\n\t\t\t\titems = [];\r\n\t\t\t}\r\n\t\t\treturn items;\r\n\t\t}\r\n\t}\r\n};\n\nvar extend = helpers$1.extend;\r\n\r\nfunction filterByPosition(array, position) {\r\n\treturn helpers$1.where(array, function(v) {\r\n\t\treturn v.pos === position;\r\n\t});\r\n}\r\n\r\nfunction sortByWeight(array, reverse) {\r\n\treturn array.sort(function(a, b) {\r\n\t\tvar v0 = reverse ? b : a;\r\n\t\tvar v1 = reverse ? a : b;\r\n\t\treturn v0.weight === v1.weight ?\r\n\t\t\tv0.index - v1.index :\r\n\t\t\tv0.weight - v1.weight;\r\n\t});\r\n}\r\n\r\nfunction wrapBoxes(boxes) {\r\n\tvar layoutBoxes = [];\r\n\tvar i, ilen, box;\r\n\r\n\tfor (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\r\n\t\tbox = boxes[i];\r\n\t\tlayoutBoxes.push({\r\n\t\t\tindex: i,\r\n\t\t\tbox: box,\r\n\t\t\tpos: box.position,\r\n\t\t\thorizontal: box.isHorizontal(),\r\n\t\t\tweight: box.weight\r\n\t\t});\r\n\t}\r\n\treturn layoutBoxes;\r\n}\r\n\r\nfunction setLayoutDims(layouts, params) {\r\n\tvar i, ilen, layout;\r\n\tfor (i = 0, ilen = layouts.length; i < ilen; ++i) {\r\n\t\tlayout = layouts[i];\r\n\t\t// store width used instead of chartArea.w in fitBoxes\r\n\t\tlayout.width = layout.horizontal\r\n\t\t\t? layout.box.fullWidth && params.availableWidth\r\n\t\t\t: params.vBoxMaxWidth;\r\n\t\t// store height used instead of chartArea.h in fitBoxes\r\n\t\tlayout.height = layout.horizontal && params.hBoxMaxHeight;\r\n\t}\r\n}\r\n\r\nfunction buildLayoutBoxes(boxes) {\r\n\tvar layoutBoxes = wrapBoxes(boxes);\r\n\tvar left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\r\n\tvar right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\r\n\tvar top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\r\n\tvar bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\r\n\r\n\treturn {\r\n\t\tleftAndTop: left.concat(top),\r\n\t\trightAndBottom: right.concat(bottom),\r\n\t\tchartArea: filterByPosition(layoutBoxes, 'chartArea'),\r\n\t\tvertical: left.concat(right),\r\n\t\thorizontal: top.concat(bottom)\r\n\t};\r\n}\r\n\r\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\r\n\treturn Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\r\n}\r\n\r\nfunction updateDims(chartArea, params, layout) {\r\n\tvar box = layout.box;\r\n\tvar maxPadding = chartArea.maxPadding;\r\n\tvar newWidth, newHeight;\r\n\r\n\tif (layout.size) {\r\n\t\t// this layout was already counted for, lets first reduce old size\r\n\t\tchartArea[layout.pos] -= layout.size;\r\n\t}\r\n\tlayout.size = layout.horizontal ? box.height : box.width;\r\n\tchartArea[layout.pos] += layout.size;\r\n\r\n\tif (box.getPadding) {\r\n\t\tvar boxPadding = box.getPadding();\r\n\t\tmaxPadding.top = Math.max(maxPadding.top, boxPadding.top);\r\n\t\tmaxPadding.left = Math.max(maxPadding.left, boxPadding.left);\r\n\t\tmaxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\r\n\t\tmaxPadding.right = Math.max(maxPadding.right, boxPadding.right);\r\n\t}\r\n\r\n\tnewWidth = params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right');\r\n\tnewHeight = params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom');\r\n\r\n\tif (newWidth !== chartArea.w || newHeight !== chartArea.h) {\r\n\t\tchartArea.w = newWidth;\r\n\t\tchartArea.h = newHeight;\r\n\r\n\t\t// return true if chart area changed in layout's direction\r\n\t\tvar sizes = layout.horizontal ? [newWidth, chartArea.w] : [newHeight, chartArea.h];\r\n\t\treturn sizes[0] !== sizes[1] && (!isNaN(sizes[0]) || !isNaN(sizes[1]));\r\n\t}\r\n}\r\n\r\nfunction handleMaxPadding(chartArea) {\r\n\tvar maxPadding = chartArea.maxPadding;\r\n\r\n\tfunction updatePos(pos) {\r\n\t\tvar change = Math.max(maxPadding[pos] - chartArea[pos], 0);\r\n\t\tchartArea[pos] += change;\r\n\t\treturn change;\r\n\t}\r\n\tchartArea.y += updatePos('top');\r\n\tchartArea.x += updatePos('left');\r\n\tupdatePos('right');\r\n\tupdatePos('bottom');\r\n}\r\n\r\nfunction getMargins(horizontal, chartArea) {\r\n\tvar maxPadding = chartArea.maxPadding;\r\n\r\n\tfunction marginForPositions(positions) {\r\n\t\tvar margin = {left: 0, top: 0, right: 0, bottom: 0};\r\n\t\tpositions.forEach(function(pos) {\r\n\t\t\tmargin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\r\n\t\t});\r\n\t\treturn margin;\r\n\t}\r\n\r\n\treturn horizontal\r\n\t\t? marginForPositions(['left', 'right'])\r\n\t\t: marginForPositions(['top', 'bottom']);\r\n}\r\n\r\nfunction fitBoxes(boxes, chartArea, params) {\r\n\tvar refitBoxes = [];\r\n\tvar i, ilen, layout, box, refit, changed;\r\n\r\n\tfor (i = 0, ilen = boxes.length; i < ilen; ++i) {\r\n\t\tlayout = boxes[i];\r\n\t\tbox = layout.box;\r\n\r\n\t\tbox.update(\r\n\t\t\tlayout.width || chartArea.w,\r\n\t\t\tlayout.height || chartArea.h,\r\n\t\t\tgetMargins(layout.horizontal, chartArea)\r\n\t\t);\r\n\t\tif (updateDims(chartArea, params, layout)) {\r\n\t\t\tchanged = true;\r\n\t\t\tif (refitBoxes.length) {\r\n\t\t\t\t// Dimensions changed and there were non full width boxes before this\r\n\t\t\t\t// -> we have to refit those\r\n\t\t\t\trefit = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (!box.fullWidth) { // fullWidth boxes don't need to be re-fitted in any case\r\n\t\t\trefitBoxes.push(layout);\r\n\t\t}\r\n\t}\r\n\r\n\treturn refit ? fitBoxes(refitBoxes, chartArea, params) || changed : changed;\r\n}\r\n\r\nfunction placeBoxes(boxes, chartArea, params) {\r\n\tvar userPadding = params.padding;\r\n\tvar x = chartArea.x;\r\n\tvar y = chartArea.y;\r\n\tvar i, ilen, layout, box;\r\n\r\n\tfor (i = 0, ilen = boxes.length; i < ilen; ++i) {\r\n\t\tlayout = boxes[i];\r\n\t\tbox = layout.box;\r\n\t\tif (layout.horizontal) {\r\n\t\t\tbox.left = box.fullWidth ? userPadding.left : chartArea.left;\r\n\t\t\tbox.right = box.fullWidth ? params.outerWidth - userPadding.right : chartArea.left + chartArea.w;\r\n\t\t\tbox.top = y;\r\n\t\t\tbox.bottom = y + box.height;\r\n\t\t\tbox.width = box.right - box.left;\r\n\t\t\ty = box.bottom;\r\n\t\t} else {\r\n\t\t\tbox.left = x;\r\n\t\t\tbox.right = x + box.width;\r\n\t\t\tbox.top = chartArea.top;\r\n\t\t\tbox.bottom = chartArea.top + chartArea.h;\r\n\t\t\tbox.height = box.bottom - box.top;\r\n\t\t\tx = box.right;\r\n\t\t}\r\n\t}\r\n\r\n\tchartArea.x = x;\r\n\tchartArea.y = y;\r\n}\r\n\r\ncore_defaults._set('global', {\r\n\tlayout: {\r\n\t\tpadding: {\r\n\t\t\ttop: 0,\r\n\t\t\tright: 0,\r\n\t\t\tbottom: 0,\r\n\t\t\tleft: 0\r\n\t\t}\r\n\t}\r\n});\r\n\r\n/**\r\n * @interface ILayoutItem\r\n * @prop {string} position - The position of the item in the chart layout. Possible values are\r\n * 'left', 'top', 'right', 'bottom', and 'chartArea'\r\n * @prop {number} weight - The weight used to sort the item. Higher weights are further away from the chart area\r\n * @prop {boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down\r\n * @prop {function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\r\n * @prop {function} update - Takes two parameters: width and height. Returns size of item\r\n * @prop {function} getPadding - Returns an object with padding on the edges\r\n * @prop {number} width - Width of item. Must be valid after update()\r\n * @prop {number} height - Height of item. Must be valid after update()\r\n * @prop {number} left - Left edge of the item. Set by layout system and cannot be used in update\r\n * @prop {number} top - Top edge of the item. Set by layout system and cannot be used in update\r\n * @prop {number} right - Right edge of the item. Set by layout system and cannot be used in update\r\n * @prop {number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\r\n */\r\n\r\n// The layout service is very self explanatory. It's responsible for the layout within a chart.\r\n// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\r\n// It is this service's responsibility of carrying out that layout.\r\nvar core_layouts = {\r\n\tdefaults: {},\r\n\r\n\t/**\r\n\t * Register a box to a chart.\r\n\t * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\r\n\t * @param {Chart} chart - the chart to use\r\n\t * @param {ILayoutItem} item - the item to add to be layed out\r\n\t */\r\n\taddBox: function(chart, item) {\r\n\t\tif (!chart.boxes) {\r\n\t\t\tchart.boxes = [];\r\n\t\t}\r\n\r\n\t\t// initialize item with default values\r\n\t\titem.fullWidth = item.fullWidth || false;\r\n\t\titem.position = item.position || 'top';\r\n\t\titem.weight = item.weight || 0;\r\n\t\titem._layers = item._layers || function() {\r\n\t\t\treturn [{\r\n\t\t\t\tz: 0,\r\n\t\t\t\tdraw: function() {\r\n\t\t\t\t\titem.draw.apply(item, arguments);\r\n\t\t\t\t}\r\n\t\t\t}];\r\n\t\t};\r\n\r\n\t\tchart.boxes.push(item);\r\n\t},\r\n\r\n\t/**\r\n\t * Remove a layoutItem from a chart\r\n\t * @param {Chart} chart - the chart to remove the box from\r\n\t * @param {ILayoutItem} layoutItem - the item to remove from the layout\r\n\t */\r\n\tremoveBox: function(chart, layoutItem) {\r\n\t\tvar index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\r\n\t\tif (index !== -1) {\r\n\t\t\tchart.boxes.splice(index, 1);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Sets (or updates) options on the given `item`.\r\n\t * @param {Chart} chart - the chart in which the item lives (or will be added to)\r\n\t * @param {ILayoutItem} item - the item to configure with the given options\r\n\t * @param {object} options - the new item options.\r\n\t */\r\n\tconfigure: function(chart, item, options) {\r\n\t\tvar props = ['fullWidth', 'position', 'weight'];\r\n\t\tvar ilen = props.length;\r\n\t\tvar i = 0;\r\n\t\tvar prop;\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\tprop = props[i];\r\n\t\t\tif (options.hasOwnProperty(prop)) {\r\n\t\t\t\titem[prop] = options[prop];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Fits boxes of the given chart into the given size by having each box measure itself\r\n\t * then running a fitting algorithm\r\n\t * @param {Chart} chart - the chart\r\n\t * @param {number} width - the width to fit into\r\n\t * @param {number} height - the height to fit into\r\n\t */\r\n\tupdate: function(chart, width, height) {\r\n\t\tif (!chart) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar layoutOptions = chart.options.layout || {};\r\n\t\tvar padding = helpers$1.options.toPadding(layoutOptions.padding);\r\n\r\n\t\tvar availableWidth = width - padding.width;\r\n\t\tvar availableHeight = height - padding.height;\r\n\t\tvar boxes = buildLayoutBoxes(chart.boxes);\r\n\t\tvar verticalBoxes = boxes.vertical;\r\n\t\tvar horizontalBoxes = boxes.horizontal;\r\n\r\n\t\t// Essentially we now have any number of boxes on each of the 4 sides.\r\n\t\t// Our canvas looks like the following.\r\n\t\t// The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\r\n\t\t// B1 is the bottom axis\r\n\t\t// There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\r\n\t\t// These locations are single-box locations only, when trying to register a chartArea location that is already taken,\r\n\t\t// an error will be thrown.\r\n\t\t//\r\n\t\t// |----------------------------------------------------|\r\n\t\t// | T1 (Full Width) |\r\n\t\t// |----------------------------------------------------|\r\n\t\t// | | | T2 | |\r\n\t\t// | |----|-------------------------------------|----|\r\n\t\t// | | | C1 | | C2 | |\r\n\t\t// | | |----| |----| |\r\n\t\t// | | | | |\r\n\t\t// | L1 | L2 | ChartArea (C0) | R1 |\r\n\t\t// | | | | |\r\n\t\t// | | |----| |----| |\r\n\t\t// | | | C3 | | C4 | |\r\n\t\t// | |----|-------------------------------------|----|\r\n\t\t// | | | B1 | |\r\n\t\t// |----------------------------------------------------|\r\n\t\t// | B2 (Full Width) |\r\n\t\t// |----------------------------------------------------|\r\n\t\t//\r\n\r\n\t\tvar params = Object.freeze({\r\n\t\t\touterWidth: width,\r\n\t\t\touterHeight: height,\r\n\t\t\tpadding: padding,\r\n\t\t\tavailableWidth: availableWidth,\r\n\t\t\tvBoxMaxWidth: availableWidth / 2 / verticalBoxes.length,\r\n\t\t\thBoxMaxHeight: availableHeight / 2\r\n\t\t});\r\n\t\tvar chartArea = extend({\r\n\t\t\tmaxPadding: extend({}, padding),\r\n\t\t\tw: availableWidth,\r\n\t\t\th: availableHeight,\r\n\t\t\tx: padding.left,\r\n\t\t\ty: padding.top\r\n\t\t}, padding);\r\n\r\n\t\tsetLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\r\n\r\n\t\t// First fit vertical boxes\r\n\t\tfitBoxes(verticalBoxes, chartArea, params);\r\n\r\n\t\t// Then fit horizontal boxes\r\n\t\tif (fitBoxes(horizontalBoxes, chartArea, params)) {\r\n\t\t\t// if the area changed, re-fit vertical boxes\r\n\t\t\tfitBoxes(verticalBoxes, chartArea, params);\r\n\t\t}\r\n\r\n\t\thandleMaxPadding(chartArea);\r\n\r\n\t\t// Finally place the boxes to correct coordinates\r\n\t\tplaceBoxes(boxes.leftAndTop, chartArea, params);\r\n\r\n\t\t// Move to opposite side of chart\r\n\t\tchartArea.x += chartArea.w;\r\n\t\tchartArea.y += chartArea.h;\r\n\r\n\t\tplaceBoxes(boxes.rightAndBottom, chartArea, params);\r\n\r\n\t\tchart.chartArea = {\r\n\t\t\tleft: chartArea.left,\r\n\t\t\ttop: chartArea.top,\r\n\t\t\tright: chartArea.left + chartArea.w,\r\n\t\t\tbottom: chartArea.top + chartArea.h\r\n\t\t};\r\n\r\n\t\t// Finally update boxes in chartArea (radial scale for example)\r\n\t\thelpers$1.each(boxes.chartArea, function(layout) {\r\n\t\t\tvar box = layout.box;\r\n\t\t\textend(box, chart.chartArea);\r\n\t\t\tbox.update(chartArea.w, chartArea.h);\r\n\t\t});\r\n\t}\r\n};\n\n/**\r\n * Platform fallback implementation (minimal).\r\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\r\n */\r\n\r\nvar platform_basic = {\r\n\tacquireContext: function(item) {\r\n\t\tif (item && item.canvas) {\r\n\t\t\t// Support for any object associated to a canvas (including a context2d)\r\n\t\t\titem = item.canvas;\r\n\t\t}\r\n\r\n\t\treturn item && item.getContext('2d') || null;\r\n\t}\r\n};\n\nvar platform_dom = \"/*\\r\\n * DOM element rendering detection\\r\\n * https://davidwalsh.name/detect-node-insertion\\r\\n */\\r\\n@keyframes chartjs-render-animation {\\r\\n\\tfrom { opacity: 0.99; }\\r\\n\\tto { opacity: 1; }\\r\\n}\\r\\n\\r\\n.chartjs-render-monitor {\\r\\n\\tanimation: chartjs-render-animation 0.001s;\\r\\n}\\r\\n\\r\\n/*\\r\\n * DOM element resizing detection\\r\\n * https://github.com/marcj/css-element-queries\\r\\n */\\r\\n.chartjs-size-monitor,\\r\\n.chartjs-size-monitor-expand,\\r\\n.chartjs-size-monitor-shrink {\\r\\n\\tposition: absolute;\\r\\n\\tdirection: ltr;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n\\tright: 0;\\r\\n\\tbottom: 0;\\r\\n\\toverflow: hidden;\\r\\n\\tpointer-events: none;\\r\\n\\tvisibility: hidden;\\r\\n\\tz-index: -1;\\r\\n}\\r\\n\\r\\n.chartjs-size-monitor-expand > div {\\r\\n\\tposition: absolute;\\r\\n\\twidth: 1000000px;\\r\\n\\theight: 1000000px;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n}\\r\\n\\r\\n.chartjs-size-monitor-shrink > div {\\r\\n\\tposition: absolute;\\r\\n\\twidth: 200%;\\r\\n\\theight: 200%;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n}\\r\\n\";\n\nvar platform_dom$1 = /*#__PURE__*/Object.freeze({\n__proto__: null,\n'default': platform_dom\n});\n\nvar stylesheet = getCjsExportFromNamespace(platform_dom$1);\n\nvar EXPANDO_KEY = '$chartjs';\r\nvar CSS_PREFIX = 'chartjs-';\r\nvar CSS_SIZE_MONITOR = CSS_PREFIX + 'size-monitor';\r\nvar CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor';\r\nvar CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation';\r\nvar ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart'];\r\n\r\n/**\r\n * DOM event types -> Chart.js event types.\r\n * Note: only events with different types are mapped.\r\n * @see https://developer.mozilla.org/en-US/docs/Web/Events\r\n */\r\nvar EVENT_TYPES = {\r\n\ttouchstart: 'mousedown',\r\n\ttouchmove: 'mousemove',\r\n\ttouchend: 'mouseup',\r\n\tpointerenter: 'mouseenter',\r\n\tpointerdown: 'mousedown',\r\n\tpointermove: 'mousemove',\r\n\tpointerup: 'mouseup',\r\n\tpointerleave: 'mouseout',\r\n\tpointerout: 'mouseout'\r\n};\r\n\r\n/**\r\n * The \"used\" size is the final value of a dimension property after all calculations have\r\n * been performed. This method uses the computed style of `element` but returns undefined\r\n * if the computed style is not expressed in pixels. That can happen in some cases where\r\n * `element` has a size relative to its parent and this last one is not yet displayed,\r\n * for example because of `display: none` on a parent node.\r\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\r\n * @returns {number} Size in pixels or undefined if unknown.\r\n */\r\nfunction readUsedSize(element, property) {\r\n\tvar value = helpers$1.getStyle(element, property);\r\n\tvar matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\r\n\treturn matches ? Number(matches[1]) : undefined;\r\n}\r\n\r\n/**\r\n * Initializes the canvas style and render size without modifying the canvas display size,\r\n * since responsiveness is handled by the controller.resize() method. The config is used\r\n * to determine the aspect ratio to apply in case no explicit height has been specified.\r\n */\r\nfunction initCanvas(canvas, config) {\r\n\tvar style = canvas.style;\r\n\r\n\t// NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\r\n\t// returns null or '' if no explicit value has been set to the canvas attribute.\r\n\tvar renderHeight = canvas.getAttribute('height');\r\n\tvar renderWidth = canvas.getAttribute('width');\r\n\r\n\t// Chart.js modifies some canvas values that we want to restore on destroy\r\n\tcanvas[EXPANDO_KEY] = {\r\n\t\tinitial: {\r\n\t\t\theight: renderHeight,\r\n\t\t\twidth: renderWidth,\r\n\t\t\tstyle: {\r\n\t\t\t\tdisplay: style.display,\r\n\t\t\t\theight: style.height,\r\n\t\t\t\twidth: style.width\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Force canvas to display as block to avoid extra space caused by inline\r\n\t// elements, which would interfere with the responsive resize process.\r\n\t// https://github.com/chartjs/Chart.js/issues/2538\r\n\tstyle.display = style.display || 'block';\r\n\r\n\tif (renderWidth === null || renderWidth === '') {\r\n\t\tvar displayWidth = readUsedSize(canvas, 'width');\r\n\t\tif (displayWidth !== undefined) {\r\n\t\t\tcanvas.width = displayWidth;\r\n\t\t}\r\n\t}\r\n\r\n\tif (renderHeight === null || renderHeight === '') {\r\n\t\tif (canvas.style.height === '') {\r\n\t\t\t// If no explicit render height and style height, let's apply the aspect ratio,\r\n\t\t\t// which one can be specified by the user but also by charts as default option\r\n\t\t\t// (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\r\n\t\t\tcanvas.height = canvas.width / (config.options.aspectRatio || 2);\r\n\t\t} else {\r\n\t\t\tvar displayHeight = readUsedSize(canvas, 'height');\r\n\t\t\tif (displayWidth !== undefined) {\r\n\t\t\t\tcanvas.height = displayHeight;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn canvas;\r\n}\r\n\r\n/**\r\n * Detects support for options object argument in addEventListener.\r\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\r\n * @private\r\n */\r\nvar supportsEventListenerOptions = (function() {\r\n\tvar supports = false;\r\n\ttry {\r\n\t\tvar options = Object.defineProperty({}, 'passive', {\r\n\t\t\t// eslint-disable-next-line getter-return\r\n\t\t\tget: function() {\r\n\t\t\t\tsupports = true;\r\n\t\t\t}\r\n\t\t});\r\n\t\twindow.addEventListener('e', null, options);\r\n\t} catch (e) {\r\n\t\t// continue regardless of error\r\n\t}\r\n\treturn supports;\r\n}());\r\n\r\n// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\r\n// https://github.com/chartjs/Chart.js/issues/4287\r\nvar eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\r\n\r\nfunction addListener(node, type, listener) {\r\n\tnode.addEventListener(type, listener, eventListenerOptions);\r\n}\r\n\r\nfunction removeListener(node, type, listener) {\r\n\tnode.removeEventListener(type, listener, eventListenerOptions);\r\n}\r\n\r\nfunction createEvent(type, chart, x, y, nativeEvent) {\r\n\treturn {\r\n\t\ttype: type,\r\n\t\tchart: chart,\r\n\t\tnative: nativeEvent || null,\r\n\t\tx: x !== undefined ? x : null,\r\n\t\ty: y !== undefined ? y : null,\r\n\t};\r\n}\r\n\r\nfunction fromNativeEvent(event, chart) {\r\n\tvar type = EVENT_TYPES[event.type] || event.type;\r\n\tvar pos = helpers$1.getRelativePosition(event, chart);\r\n\treturn createEvent(type, chart, pos.x, pos.y, event);\r\n}\r\n\r\nfunction throttled(fn, thisArg) {\r\n\tvar ticking = false;\r\n\tvar args = [];\r\n\r\n\treturn function() {\r\n\t\targs = Array.prototype.slice.call(arguments);\r\n\t\tthisArg = thisArg || this;\r\n\r\n\t\tif (!ticking) {\r\n\t\t\tticking = true;\r\n\t\t\thelpers$1.requestAnimFrame.call(window, function() {\r\n\t\t\t\tticking = false;\r\n\t\t\t\tfn.apply(thisArg, args);\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction createDiv(cls) {\r\n\tvar el = document.createElement('div');\r\n\tel.className = cls || '';\r\n\treturn el;\r\n}\r\n\r\n// Implementation based on https://github.com/marcj/css-element-queries\r\nfunction createResizer(handler) {\r\n\tvar maxSize = 1000000;\r\n\r\n\t// NOTE(SB) Don't use innerHTML because it could be considered unsafe.\r\n\t// https://github.com/chartjs/Chart.js/issues/5902\r\n\tvar resizer = createDiv(CSS_SIZE_MONITOR);\r\n\tvar expand = createDiv(CSS_SIZE_MONITOR + '-expand');\r\n\tvar shrink = createDiv(CSS_SIZE_MONITOR + '-shrink');\r\n\r\n\texpand.appendChild(createDiv());\r\n\tshrink.appendChild(createDiv());\r\n\r\n\tresizer.appendChild(expand);\r\n\tresizer.appendChild(shrink);\r\n\tresizer._reset = function() {\r\n\t\texpand.scrollLeft = maxSize;\r\n\t\texpand.scrollTop = maxSize;\r\n\t\tshrink.scrollLeft = maxSize;\r\n\t\tshrink.scrollTop = maxSize;\r\n\t};\r\n\r\n\tvar onScroll = function() {\r\n\t\tresizer._reset();\r\n\t\thandler();\r\n\t};\r\n\r\n\taddListener(expand, 'scroll', onScroll.bind(expand, 'expand'));\r\n\taddListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink'));\r\n\r\n\treturn resizer;\r\n}\r\n\r\n// https://davidwalsh.name/detect-node-insertion\r\nfunction watchForRender(node, handler) {\r\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\r\n\tvar proxy = expando.renderProxy = function(e) {\r\n\t\tif (e.animationName === CSS_RENDER_ANIMATION) {\r\n\t\t\thandler();\r\n\t\t}\r\n\t};\r\n\r\n\thelpers$1.each(ANIMATION_START_EVENTS, function(type) {\r\n\t\taddListener(node, type, proxy);\r\n\t});\r\n\r\n\t// #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class\r\n\t// is removed then added back immediately (same animation frame?). Accessing the\r\n\t// `offsetParent` property will force a reflow and re-evaluate the CSS animation.\r\n\t// https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics\r\n\t// https://github.com/chartjs/Chart.js/issues/4737\r\n\texpando.reflow = !!node.offsetParent;\r\n\r\n\tnode.classList.add(CSS_RENDER_MONITOR);\r\n}\r\n\r\nfunction unwatchForRender(node) {\r\n\tvar expando = node[EXPANDO_KEY] || {};\r\n\tvar proxy = expando.renderProxy;\r\n\r\n\tif (proxy) {\r\n\t\thelpers$1.each(ANIMATION_START_EVENTS, function(type) {\r\n\t\t\tremoveListener(node, type, proxy);\r\n\t\t});\r\n\r\n\t\tdelete expando.renderProxy;\r\n\t}\r\n\r\n\tnode.classList.remove(CSS_RENDER_MONITOR);\r\n}\r\n\r\nfunction addResizeListener(node, listener, chart) {\r\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\r\n\r\n\t// Let's keep track of this added resizer and thus avoid DOM query when removing it.\r\n\tvar resizer = expando.resizer = createResizer(throttled(function() {\r\n\t\tif (expando.resizer) {\r\n\t\t\tvar container = chart.options.maintainAspectRatio && node.parentNode;\r\n\t\t\tvar w = container ? container.clientWidth : 0;\r\n\t\t\tlistener(createEvent('resize', chart));\r\n\t\t\tif (container && container.clientWidth < w && chart.canvas) {\r\n\t\t\t\t// If the container size shrank during chart resize, let's assume\r\n\t\t\t\t// scrollbar appeared. So we resize again with the scrollbar visible -\r\n\t\t\t\t// effectively making chart smaller and the scrollbar hidden again.\r\n\t\t\t\t// Because we are inside `throttled`, and currently `ticking`, scroll\r\n\t\t\t\t// events are ignored during this whole 2 resize process.\r\n\t\t\t\t// If we assumed wrong and something else happened, we are resizing\r\n\t\t\t\t// twice in a frame (potential performance issue)\r\n\t\t\t\tlistener(createEvent('resize', chart));\r\n\t\t\t}\r\n\t\t}\r\n\t}));\r\n\r\n\t// The resizer needs to be attached to the node parent, so we first need to be\r\n\t// sure that `node` is attached to the DOM before injecting the resizer element.\r\n\twatchForRender(node, function() {\r\n\t\tif (expando.resizer) {\r\n\t\t\tvar container = node.parentNode;\r\n\t\t\tif (container && container !== resizer.parentNode) {\r\n\t\t\t\tcontainer.insertBefore(resizer, container.firstChild);\r\n\t\t\t}\r\n\r\n\t\t\t// The container size might have changed, let's reset the resizer state.\r\n\t\t\tresizer._reset();\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction removeResizeListener(node) {\r\n\tvar expando = node[EXPANDO_KEY] || {};\r\n\tvar resizer = expando.resizer;\r\n\r\n\tdelete expando.resizer;\r\n\tunwatchForRender(node);\r\n\r\n\tif (resizer && resizer.parentNode) {\r\n\t\tresizer.parentNode.removeChild(resizer);\r\n\t}\r\n}\r\n\r\n/**\r\n * Injects CSS styles inline if the styles are not already present.\r\n * @param {HTMLDocument|ShadowRoot} rootNode - the node to contain the <style>.\r\n * @param {string} css - the CSS to be injected.\r\n */\r\nfunction injectCSS(rootNode, css) {\r\n\t// https://stackoverflow.com/q/3922139\r\n\tvar expando = rootNode[EXPANDO_KEY] || (rootNode[EXPANDO_KEY] = {});\r\n\tif (!expando.containsStyles) {\r\n\t\texpando.containsStyles = true;\r\n\t\tcss = '/* Chart.js */\\n' + css;\r\n\t\tvar style = document.createElement('style');\r\n\t\tstyle.setAttribute('type', 'text/css');\r\n\t\tstyle.appendChild(document.createTextNode(css));\r\n\t\trootNode.appendChild(style);\r\n\t}\r\n}\r\n\r\nvar platform_dom$2 = {\r\n\t/**\r\n\t * When `true`, prevents the automatic injection of the stylesheet required to\r\n\t * correctly detect when the chart is added to the DOM and then resized. This\r\n\t * switch has been added to allow external stylesheet (`dist/Chart(.min)?.js`)\r\n\t * to be manually imported to make this library compatible with any CSP.\r\n\t * See https://github.com/chartjs/Chart.js/issues/5208\r\n\t */\r\n\tdisableCSSInjection: false,\r\n\r\n\t/**\r\n\t * This property holds whether this platform is enabled for the current environment.\r\n\t * Currently used by platform.js to select the proper implementation.\r\n\t * @private\r\n\t */\r\n\t_enabled: typeof window !== 'undefined' && typeof document !== 'undefined',\r\n\r\n\t/**\r\n\t * Initializes resources that depend on platform options.\r\n\t * @param {HTMLCanvasElement} canvas - The Canvas element.\r\n\t * @private\r\n\t */\r\n\t_ensureLoaded: function(canvas) {\r\n\t\tif (!this.disableCSSInjection) {\r\n\t\t\t// If the canvas is in a shadow DOM, then the styles must also be inserted\r\n\t\t\t// into the same shadow DOM.\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5763\r\n\t\t\tvar root = canvas.getRootNode ? canvas.getRootNode() : document;\r\n\t\t\tvar targetNode = root.host ? root : document.head;\r\n\t\t\tinjectCSS(targetNode, stylesheet);\r\n\t\t}\r\n\t},\r\n\r\n\tacquireContext: function(item, config) {\r\n\t\tif (typeof item === 'string') {\r\n\t\t\titem = document.getElementById(item);\r\n\t\t} else if (item.length) {\r\n\t\t\t// Support for array based queries (such as jQuery)\r\n\t\t\titem = item[0];\r\n\t\t}\r\n\r\n\t\tif (item && item.canvas) {\r\n\t\t\t// Support for any object associated to a canvas (including a context2d)\r\n\t\t\titem = item.canvas;\r\n\t\t}\r\n\r\n\t\t// To prevent canvas fingerprinting, some add-ons undefine the getContext\r\n\t\t// method, for example: https://github.com/kkapsner/CanvasBlocker\r\n\t\t// https://github.com/chartjs/Chart.js/issues/2807\r\n\t\tvar context = item && item.getContext && item.getContext('2d');\r\n\r\n\t\t// `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the item is\r\n\t\t// inside an iframe or when running in a protected environment. We could guess the\r\n\t\t// types from their toString() value but let's keep things flexible and assume it's\r\n\t\t// a sufficient condition if the item has a context2D which has item as `canvas`.\r\n\t\t// https://github.com/chartjs/Chart.js/issues/3887\r\n\t\t// https://github.com/chartjs/Chart.js/issues/4102\r\n\t\t// https://github.com/chartjs/Chart.js/issues/4152\r\n\t\tif (context && context.canvas === item) {\r\n\t\t\t// Load platform resources on first chart creation, to make it possible to\r\n\t\t\t// import the library before setting platform options.\r\n\t\t\tthis._ensureLoaded(item);\r\n\t\t\tinitCanvas(item, config);\r\n\t\t\treturn context;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t},\r\n\r\n\treleaseContext: function(context) {\r\n\t\tvar canvas = context.canvas;\r\n\t\tif (!canvas[EXPANDO_KEY]) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar initial = canvas[EXPANDO_KEY].initial;\r\n\t\t['height', 'width'].forEach(function(prop) {\r\n\t\t\tvar value = initial[prop];\r\n\t\t\tif (helpers$1.isNullOrUndef(value)) {\r\n\t\t\t\tcanvas.removeAttribute(prop);\r\n\t\t\t} else {\r\n\t\t\t\tcanvas.setAttribute(prop, value);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\thelpers$1.each(initial.style || {}, function(value, key) {\r\n\t\t\tcanvas.style[key] = value;\r\n\t\t});\r\n\r\n\t\t// The canvas render size might have been changed (and thus the state stack discarded),\r\n\t\t// we can't use save() and restore() to restore the initial state. So make sure that at\r\n\t\t// least the canvas context is reset to the default state by setting the canvas width.\r\n\t\t// https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html\r\n\t\t// eslint-disable-next-line no-self-assign\r\n\t\tcanvas.width = canvas.width;\r\n\r\n\t\tdelete canvas[EXPANDO_KEY];\r\n\t},\r\n\r\n\taddEventListener: function(chart, type, listener) {\r\n\t\tvar canvas = chart.canvas;\r\n\t\tif (type === 'resize') {\r\n\t\t\t// Note: the resize event is not supported on all browsers.\r\n\t\t\taddResizeListener(canvas, listener, chart);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar expando = listener[EXPANDO_KEY] || (listener[EXPANDO_KEY] = {});\r\n\t\tvar proxies = expando.proxies || (expando.proxies = {});\r\n\t\tvar proxy = proxies[chart.id + '_' + type] = function(event) {\r\n\t\t\tlistener(fromNativeEvent(event, chart));\r\n\t\t};\r\n\r\n\t\taddListener(canvas, type, proxy);\r\n\t},\r\n\r\n\tremoveEventListener: function(chart, type, listener) {\r\n\t\tvar canvas = chart.canvas;\r\n\t\tif (type === 'resize') {\r\n\t\t\t// Note: the resize event is not supported on all browsers.\r\n\t\t\tremoveResizeListener(canvas);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar expando = listener[EXPANDO_KEY] || {};\r\n\t\tvar proxies = expando.proxies || {};\r\n\t\tvar proxy = proxies[chart.id + '_' + type];\r\n\t\tif (!proxy) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tremoveListener(canvas, type, proxy);\r\n\t}\r\n};\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use EventTarget.addEventListener instead.\r\n * EventTarget.addEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\r\n * @function Chart.helpers.addEvent\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers$1.addEvent = addListener;\r\n\r\n/**\r\n * Provided for backward compatibility, use EventTarget.removeEventListener instead.\r\n * EventTarget.removeEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener\r\n * @function Chart.helpers.removeEvent\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers$1.removeEvent = removeListener;\n\n// @TODO Make possible to select another platform at build time.\r\nvar implementation = platform_dom$2._enabled ? platform_dom$2 : platform_basic;\r\n\r\n/**\r\n * @namespace Chart.platform\r\n * @see https://chartjs.gitbooks.io/proposals/content/Platform.html\r\n * @since 2.4.0\r\n */\r\nvar platform = helpers$1.extend({\r\n\t/**\r\n\t * @since 2.7.0\r\n\t */\r\n\tinitialize: function() {},\r\n\r\n\t/**\r\n\t * Called at chart construction time, returns a context2d instance implementing\r\n\t * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}.\r\n\t * @param {*} item - The native item from which to acquire context (platform specific)\r\n\t * @param {object} options - The chart options\r\n\t * @returns {CanvasRenderingContext2D} context2d instance\r\n\t */\r\n\tacquireContext: function() {},\r\n\r\n\t/**\r\n\t * Called at chart destruction time, releases any resources associated to the context\r\n\t * previously returned by the acquireContext() method.\r\n\t * @param {CanvasRenderingContext2D} context - The context2d instance\r\n\t * @returns {boolean} true if the method succeeded, else false\r\n\t */\r\n\treleaseContext: function() {},\r\n\r\n\t/**\r\n\t * Registers the specified listener on the given chart.\r\n\t * @param {Chart} chart - Chart from which to listen for event\r\n\t * @param {string} type - The ({@link IEvent}) type to listen for\r\n\t * @param {function} listener - Receives a notification (an object that implements\r\n\t * the {@link IEvent} interface) when an event of the specified type occurs.\r\n\t */\r\n\taddEventListener: function() {},\r\n\r\n\t/**\r\n\t * Removes the specified listener previously registered with addEventListener.\r\n\t * @param {Chart} chart - Chart from which to remove the listener\r\n\t * @param {string} type - The ({@link IEvent}) type to remove\r\n\t * @param {function} listener - The listener function to remove from the event target.\r\n\t */\r\n\tremoveEventListener: function() {}\r\n\r\n}, implementation);\n\ncore_defaults._set('global', {\r\n\tplugins: {}\r\n});\r\n\r\n/**\r\n * The plugin service singleton\r\n * @namespace Chart.plugins\r\n * @since 2.1.0\r\n */\r\nvar core_plugins = {\r\n\t/**\r\n\t * Globally registered plugins.\r\n\t * @private\r\n\t */\r\n\t_plugins: [],\r\n\r\n\t/**\r\n\t * This identifier is used to invalidate the descriptors cache attached to each chart\r\n\t * when a global plugin is registered or unregistered. In this case, the cache ID is\r\n\t * incremented and descriptors are regenerated during following API calls.\r\n\t * @private\r\n\t */\r\n\t_cacheId: 0,\r\n\r\n\t/**\r\n\t * Registers the given plugin(s) if not already registered.\r\n\t * @param {IPlugin[]|IPlugin} plugins plugin instance(s).\r\n\t */\r\n\tregister: function(plugins) {\r\n\t\tvar p = this._plugins;\r\n\t\t([]).concat(plugins).forEach(function(plugin) {\r\n\t\t\tif (p.indexOf(plugin) === -1) {\r\n\t\t\t\tp.push(plugin);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._cacheId++;\r\n\t},\r\n\r\n\t/**\r\n\t * Unregisters the given plugin(s) only if registered.\r\n\t * @param {IPlugin[]|IPlugin} plugins plugin instance(s).\r\n\t */\r\n\tunregister: function(plugins) {\r\n\t\tvar p = this._plugins;\r\n\t\t([]).concat(plugins).forEach(function(plugin) {\r\n\t\t\tvar idx = p.indexOf(plugin);\r\n\t\t\tif (idx !== -1) {\r\n\t\t\t\tp.splice(idx, 1);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._cacheId++;\r\n\t},\r\n\r\n\t/**\r\n\t * Remove all registered plugins.\r\n\t * @since 2.1.5\r\n\t */\r\n\tclear: function() {\r\n\t\tthis._plugins = [];\r\n\t\tthis._cacheId++;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the number of registered plugins?\r\n\t * @returns {number}\r\n\t * @since 2.1.5\r\n\t */\r\n\tcount: function() {\r\n\t\treturn this._plugins.length;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns all registered plugin instances.\r\n\t * @returns {IPlugin[]} array of plugin objects.\r\n\t * @since 2.1.5\r\n\t */\r\n\tgetAll: function() {\r\n\t\treturn this._plugins;\r\n\t},\r\n\r\n\t/**\r\n\t * Calls enabled plugins for `chart` on the specified hook and with the given args.\r\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\r\n\t * returned value can be used, for instance, to interrupt the current action.\r\n\t * @param {Chart} chart - The chart instance for which plugins should be called.\r\n\t * @param {string} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\r\n\t * @param {Array} [args] - Extra arguments to apply to the hook call.\r\n\t * @returns {boolean} false if any of the plugins return false, else returns true.\r\n\t */\r\n\tnotify: function(chart, hook, args) {\r\n\t\tvar descriptors = this.descriptors(chart);\r\n\t\tvar ilen = descriptors.length;\r\n\t\tvar i, descriptor, plugin, params, method;\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\tdescriptor = descriptors[i];\r\n\t\t\tplugin = descriptor.plugin;\r\n\t\t\tmethod = plugin[hook];\r\n\t\t\tif (typeof method === 'function') {\r\n\t\t\t\tparams = [chart].concat(args || []);\r\n\t\t\t\tparams.push(descriptor.options);\r\n\t\t\t\tif (method.apply(plugin, params) === false) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns descriptors of enabled plugins for the given chart.\r\n\t * @returns {object[]} [{ plugin, options }]\r\n\t * @private\r\n\t */\r\n\tdescriptors: function(chart) {\r\n\t\tvar cache = chart.$plugins || (chart.$plugins = {});\r\n\t\tif (cache.id === this._cacheId) {\r\n\t\t\treturn cache.descriptors;\r\n\t\t}\r\n\r\n\t\tvar plugins = [];\r\n\t\tvar descriptors = [];\r\n\t\tvar config = (chart && chart.config) || {};\r\n\t\tvar options = (config.options && config.options.plugins) || {};\r\n\r\n\t\tthis._plugins.concat(config.plugins || []).forEach(function(plugin) {\r\n\t\t\tvar idx = plugins.indexOf(plugin);\r\n\t\t\tif (idx !== -1) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar id = plugin.id;\r\n\t\t\tvar opts = options[id];\r\n\t\t\tif (opts === false) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (opts === true) {\r\n\t\t\t\topts = helpers$1.clone(core_defaults.global.plugins[id]);\r\n\t\t\t}\r\n\r\n\t\t\tplugins.push(plugin);\r\n\t\t\tdescriptors.push({\r\n\t\t\t\tplugin: plugin,\r\n\t\t\t\toptions: opts || {}\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tcache.descriptors = descriptors;\r\n\t\tcache.id = this._cacheId;\r\n\t\treturn descriptors;\r\n\t},\r\n\r\n\t/**\r\n\t * Invalidates cache for the given chart: descriptors hold a reference on plugin option,\r\n\t * but in some cases, this reference can be changed by the user when updating options.\r\n\t * https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\r\n\t * @private\r\n\t */\r\n\t_invalidate: function(chart) {\r\n\t\tdelete chart.$plugins;\r\n\t}\r\n};\n\nvar core_scaleService = {\r\n\t// Scale registration object. Extensions can register new scale types (such as log or DB scales) and then\r\n\t// use the new chart options to grab the correct scale\r\n\tconstructors: {},\r\n\t// Use a registration function so that we can move to an ES6 map when we no longer need to support\r\n\t// old browsers\r\n\r\n\t// Scale config defaults\r\n\tdefaults: {},\r\n\tregisterScaleType: function(type, scaleConstructor, scaleDefaults) {\r\n\t\tthis.constructors[type] = scaleConstructor;\r\n\t\tthis.defaults[type] = helpers$1.clone(scaleDefaults);\r\n\t},\r\n\tgetScaleConstructor: function(type) {\r\n\t\treturn this.constructors.hasOwnProperty(type) ? this.constructors[type] : undefined;\r\n\t},\r\n\tgetScaleDefaults: function(type) {\r\n\t\t// Return the scale defaults merged with the global settings so that we always use the latest ones\r\n\t\treturn this.defaults.hasOwnProperty(type) ? helpers$1.merge(Object.create(null), [core_defaults.scale, this.defaults[type]]) : {};\r\n\t},\r\n\tupdateScaleDefaults: function(type, additions) {\r\n\t\tvar me = this;\r\n\t\tif (me.defaults.hasOwnProperty(type)) {\r\n\t\t\tme.defaults[type] = helpers$1.extend(me.defaults[type], additions);\r\n\t\t}\r\n\t},\r\n\taddScalesToLayout: function(chart) {\r\n\t\t// Adds each scale to the chart.boxes array to be sized accordingly\r\n\t\thelpers$1.each(chart.scales, function(scale) {\r\n\t\t\t// Set ILayoutItem parameters for backwards compatibility\r\n\t\t\tscale.fullWidth = scale.options.fullWidth;\r\n\t\t\tscale.position = scale.options.position;\r\n\t\t\tscale.weight = scale.options.weight;\r\n\t\t\tcore_layouts.addBox(chart, scale);\r\n\t\t});\r\n\t}\r\n};\n\nvar valueOrDefault$8 = helpers$1.valueOrDefault;\r\nvar getRtlHelper = helpers$1.rtl.getRtlAdapter;\r\n\r\ncore_defaults._set('global', {\r\n\ttooltips: {\r\n\t\tenabled: true,\r\n\t\tcustom: null,\r\n\t\tmode: 'nearest',\r\n\t\tposition: 'average',\r\n\t\tintersect: true,\r\n\t\tbackgroundColor: 'rgba(0,0,0,0.8)',\r\n\t\ttitleFontStyle: 'bold',\r\n\t\ttitleSpacing: 2,\r\n\t\ttitleMarginBottom: 6,\r\n\t\ttitleFontColor: '#fff',\r\n\t\ttitleAlign: 'left',\r\n\t\tbodySpacing: 2,\r\n\t\tbodyFontColor: '#fff',\r\n\t\tbodyAlign: 'left',\r\n\t\tfooterFontStyle: 'bold',\r\n\t\tfooterSpacing: 2,\r\n\t\tfooterMarginTop: 6,\r\n\t\tfooterFontColor: '#fff',\r\n\t\tfooterAlign: 'left',\r\n\t\tyPadding: 6,\r\n\t\txPadding: 6,\r\n\t\tcaretPadding: 2,\r\n\t\tcaretSize: 5,\r\n\t\tcornerRadius: 6,\r\n\t\tmultiKeyBackground: '#fff',\r\n\t\tdisplayColors: true,\r\n\t\tborderColor: 'rgba(0,0,0,0)',\r\n\t\tborderWidth: 0,\r\n\t\tcallbacks: {\r\n\t\t\t// Args are: (tooltipItems, data)\r\n\t\t\tbeforeTitle: helpers$1.noop,\r\n\t\t\ttitle: function(tooltipItems, data) {\r\n\t\t\t\tvar title = '';\r\n\t\t\t\tvar labels = data.labels;\r\n\t\t\t\tvar labelCount = labels ? labels.length : 0;\r\n\r\n\t\t\t\tif (tooltipItems.length > 0) {\r\n\t\t\t\t\tvar item = tooltipItems[0];\r\n\t\t\t\t\tif (item.label) {\r\n\t\t\t\t\t\ttitle = item.label;\r\n\t\t\t\t\t} else if (item.xLabel) {\r\n\t\t\t\t\t\ttitle = item.xLabel;\r\n\t\t\t\t\t} else if (labelCount > 0 && item.index < labelCount) {\r\n\t\t\t\t\t\ttitle = labels[item.index];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn title;\r\n\t\t\t},\r\n\t\t\tafterTitle: helpers$1.noop,\r\n\r\n\t\t\t// Args are: (tooltipItems, data)\r\n\t\t\tbeforeBody: helpers$1.noop,\r\n\r\n\t\t\t// Args are: (tooltipItem, data)\r\n\t\t\tbeforeLabel: helpers$1.noop,\r\n\t\t\tlabel: function(tooltipItem, data) {\r\n\t\t\t\tvar label = data.datasets[tooltipItem.datasetIndex].label || '';\r\n\r\n\t\t\t\tif (label) {\r\n\t\t\t\t\tlabel += ': ';\r\n\t\t\t\t}\r\n\t\t\t\tif (!helpers$1.isNullOrUndef(tooltipItem.value)) {\r\n\t\t\t\t\tlabel += tooltipItem.value;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlabel += tooltipItem.yLabel;\r\n\t\t\t\t}\r\n\t\t\t\treturn label;\r\n\t\t\t},\r\n\t\t\tlabelColor: function(tooltipItem, chart) {\r\n\t\t\t\tvar meta = chart.getDatasetMeta(tooltipItem.datasetIndex);\r\n\t\t\t\tvar activeElement = meta.data[tooltipItem.index];\r\n\t\t\t\tvar view = activeElement._view;\r\n\t\t\t\treturn {\r\n\t\t\t\t\tborderColor: view.borderColor,\r\n\t\t\t\t\tbackgroundColor: view.backgroundColor\r\n\t\t\t\t};\r\n\t\t\t},\r\n\t\t\tlabelTextColor: function() {\r\n\t\t\t\treturn this._options.bodyFontColor;\r\n\t\t\t},\r\n\t\t\tafterLabel: helpers$1.noop,\r\n\r\n\t\t\t// Args are: (tooltipItems, data)\r\n\t\t\tafterBody: helpers$1.noop,\r\n\r\n\t\t\t// Args are: (tooltipItems, data)\r\n\t\t\tbeforeFooter: helpers$1.noop,\r\n\t\t\tfooter: helpers$1.noop,\r\n\t\t\tafterFooter: helpers$1.noop\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar positioners = {\r\n\t/**\r\n\t * Average mode places the tooltip at the average position of the elements shown\r\n\t * @function Chart.Tooltip.positioners.average\r\n\t * @param elements {ChartElement[]} the elements being displayed in the tooltip\r\n\t * @returns {object} tooltip position\r\n\t */\r\n\taverage: function(elements) {\r\n\t\tif (!elements.length) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tvar i, len;\r\n\t\tvar x = 0;\r\n\t\tvar y = 0;\r\n\t\tvar count = 0;\r\n\r\n\t\tfor (i = 0, len = elements.length; i < len; ++i) {\r\n\t\t\tvar el = elements[i];\r\n\t\t\tif (el && el.hasValue()) {\r\n\t\t\t\tvar pos = el.tooltipPosition();\r\n\t\t\t\tx += pos.x;\r\n\t\t\t\ty += pos.y;\r\n\t\t\t\t++count;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tx: x / count,\r\n\t\t\ty: y / count\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Gets the tooltip position nearest of the item nearest to the event position\r\n\t * @function Chart.Tooltip.positioners.nearest\r\n\t * @param elements {Chart.Element[]} the tooltip elements\r\n\t * @param eventPosition {object} the position of the event in canvas coordinates\r\n\t * @returns {object} the tooltip position\r\n\t */\r\n\tnearest: function(elements, eventPosition) {\r\n\t\tvar x = eventPosition.x;\r\n\t\tvar y = eventPosition.y;\r\n\t\tvar minDistance = Number.POSITIVE_INFINITY;\r\n\t\tvar i, len, nearestElement;\r\n\r\n\t\tfor (i = 0, len = elements.length; i < len; ++i) {\r\n\t\t\tvar el = elements[i];\r\n\t\t\tif (el && el.hasValue()) {\r\n\t\t\t\tvar center = el.getCenterPoint();\r\n\t\t\t\tvar d = helpers$1.distanceBetweenPoints(eventPosition, center);\r\n\r\n\t\t\t\tif (d < minDistance) {\r\n\t\t\t\t\tminDistance = d;\r\n\t\t\t\t\tnearestElement = el;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (nearestElement) {\r\n\t\t\tvar tp = nearestElement.tooltipPosition();\r\n\t\t\tx = tp.x;\r\n\t\t\ty = tp.y;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tx: x,\r\n\t\t\ty: y\r\n\t\t};\r\n\t}\r\n};\r\n\r\n// Helper to push or concat based on if the 2nd parameter is an array or not\r\nfunction pushOrConcat(base, toPush) {\r\n\tif (toPush) {\r\n\t\tif (helpers$1.isArray(toPush)) {\r\n\t\t\t// base = base.concat(toPush);\r\n\t\t\tArray.prototype.push.apply(base, toPush);\r\n\t\t} else {\r\n\t\t\tbase.push(toPush);\r\n\t\t}\r\n\t}\r\n\r\n\treturn base;\r\n}\r\n\r\n/**\r\n * Returns array of strings split by newline\r\n * @param {string} value - The value to split by newline.\r\n * @returns {string[]} value if newline present - Returned from String split() method\r\n * @function\r\n */\r\nfunction splitNewlines(str) {\r\n\tif ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\r\n\t\treturn str.split('\\n');\r\n\t}\r\n\treturn str;\r\n}\r\n\r\n\r\n/**\r\n * Private helper to create a tooltip item model\r\n * @param element - the chart element (point, arc, bar) to create the tooltip item for\r\n * @return new tooltip item\r\n */\r\nfunction createTooltipItem(element) {\r\n\tvar xScale = element._xScale;\r\n\tvar yScale = element._yScale || element._scale; // handle radar || polarArea charts\r\n\tvar index = element._index;\r\n\tvar datasetIndex = element._datasetIndex;\r\n\tvar controller = element._chart.getDatasetMeta(datasetIndex).controller;\r\n\tvar indexScale = controller._getIndexScale();\r\n\tvar valueScale = controller._getValueScale();\r\n\r\n\treturn {\r\n\t\txLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '',\r\n\t\tyLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '',\r\n\t\tlabel: indexScale ? '' + indexScale.getLabelForIndex(index, datasetIndex) : '',\r\n\t\tvalue: valueScale ? '' + valueScale.getLabelForIndex(index, datasetIndex) : '',\r\n\t\tindex: index,\r\n\t\tdatasetIndex: datasetIndex,\r\n\t\tx: element._model.x,\r\n\t\ty: element._model.y\r\n\t};\r\n}\r\n\r\n/**\r\n * Helper to get the reset model for the tooltip\r\n * @param tooltipOpts {object} the tooltip options\r\n */\r\nfunction getBaseModel(tooltipOpts) {\r\n\tvar globalDefaults = core_defaults.global;\r\n\r\n\treturn {\r\n\t\t// Positioning\r\n\t\txPadding: tooltipOpts.xPadding,\r\n\t\tyPadding: tooltipOpts.yPadding,\r\n\t\txAlign: tooltipOpts.xAlign,\r\n\t\tyAlign: tooltipOpts.yAlign,\r\n\r\n\t\t// Drawing direction and text direction\r\n\t\trtl: tooltipOpts.rtl,\r\n\t\ttextDirection: tooltipOpts.textDirection,\r\n\r\n\t\t// Body\r\n\t\tbodyFontColor: tooltipOpts.bodyFontColor,\r\n\t\t_bodyFontFamily: valueOrDefault$8(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily),\r\n\t\t_bodyFontStyle: valueOrDefault$8(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle),\r\n\t\t_bodyAlign: tooltipOpts.bodyAlign,\r\n\t\tbodyFontSize: valueOrDefault$8(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize),\r\n\t\tbodySpacing: tooltipOpts.bodySpacing,\r\n\r\n\t\t// Title\r\n\t\ttitleFontColor: tooltipOpts.titleFontColor,\r\n\t\t_titleFontFamily: valueOrDefault$8(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily),\r\n\t\t_titleFontStyle: valueOrDefault$8(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle),\r\n\t\ttitleFontSize: valueOrDefault$8(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize),\r\n\t\t_titleAlign: tooltipOpts.titleAlign,\r\n\t\ttitleSpacing: tooltipOpts.titleSpacing,\r\n\t\ttitleMarginBottom: tooltipOpts.titleMarginBottom,\r\n\r\n\t\t// Footer\r\n\t\tfooterFontColor: tooltipOpts.footerFontColor,\r\n\t\t_footerFontFamily: valueOrDefault$8(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily),\r\n\t\t_footerFontStyle: valueOrDefault$8(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle),\r\n\t\tfooterFontSize: valueOrDefault$8(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize),\r\n\t\t_footerAlign: tooltipOpts.footerAlign,\r\n\t\tfooterSpacing: tooltipOpts.footerSpacing,\r\n\t\tfooterMarginTop: tooltipOpts.footerMarginTop,\r\n\r\n\t\t// Appearance\r\n\t\tcaretSize: tooltipOpts.caretSize,\r\n\t\tcornerRadius: tooltipOpts.cornerRadius,\r\n\t\tbackgroundColor: tooltipOpts.backgroundColor,\r\n\t\topacity: 0,\r\n\t\tlegendColorBackground: tooltipOpts.multiKeyBackground,\r\n\t\tdisplayColors: tooltipOpts.displayColors,\r\n\t\tborderColor: tooltipOpts.borderColor,\r\n\t\tborderWidth: tooltipOpts.borderWidth\r\n\t};\r\n}\r\n\r\n/**\r\n * Get the size of the tooltip\r\n */\r\nfunction getTooltipSize(tooltip, model) {\r\n\tvar ctx = tooltip._chart.ctx;\r\n\r\n\tvar height = model.yPadding * 2; // Tooltip Padding\r\n\tvar width = 0;\r\n\r\n\t// Count of all lines in the body\r\n\tvar body = model.body;\r\n\tvar combinedBodyLength = body.reduce(function(count, bodyItem) {\r\n\t\treturn count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length;\r\n\t}, 0);\r\n\tcombinedBodyLength += model.beforeBody.length + model.afterBody.length;\r\n\r\n\tvar titleLineCount = model.title.length;\r\n\tvar footerLineCount = model.footer.length;\r\n\tvar titleFontSize = model.titleFontSize;\r\n\tvar bodyFontSize = model.bodyFontSize;\r\n\tvar footerFontSize = model.footerFontSize;\r\n\r\n\theight += titleLineCount * titleFontSize; // Title Lines\r\n\theight += titleLineCount ? (titleLineCount - 1) * model.titleSpacing : 0; // Title Line Spacing\r\n\theight += titleLineCount ? model.titleMarginBottom : 0; // Title's bottom Margin\r\n\theight += combinedBodyLength * bodyFontSize; // Body Lines\r\n\theight += combinedBodyLength ? (combinedBodyLength - 1) * model.bodySpacing : 0; // Body Line Spacing\r\n\theight += footerLineCount ? model.footerMarginTop : 0; // Footer Margin\r\n\theight += footerLineCount * (footerFontSize); // Footer Lines\r\n\theight += footerLineCount ? (footerLineCount - 1) * model.footerSpacing : 0; // Footer Line Spacing\r\n\r\n\t// Title width\r\n\tvar widthPadding = 0;\r\n\tvar maxLineWidth = function(line) {\r\n\t\twidth = Math.max(width, ctx.measureText(line).width + widthPadding);\r\n\t};\r\n\r\n\tctx.font = helpers$1.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily);\r\n\thelpers$1.each(model.title, maxLineWidth);\r\n\r\n\t// Body width\r\n\tctx.font = helpers$1.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily);\r\n\thelpers$1.each(model.beforeBody.concat(model.afterBody), maxLineWidth);\r\n\r\n\t// Body lines may include some extra width due to the color box\r\n\twidthPadding = model.displayColors ? (bodyFontSize + 2) : 0;\r\n\thelpers$1.each(body, function(bodyItem) {\r\n\t\thelpers$1.each(bodyItem.before, maxLineWidth);\r\n\t\thelpers$1.each(bodyItem.lines, maxLineWidth);\r\n\t\thelpers$1.each(bodyItem.after, maxLineWidth);\r\n\t});\r\n\r\n\t// Reset back to 0\r\n\twidthPadding = 0;\r\n\r\n\t// Footer width\r\n\tctx.font = helpers$1.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily);\r\n\thelpers$1.each(model.footer, maxLineWidth);\r\n\r\n\t// Add padding\r\n\twidth += 2 * model.xPadding;\r\n\r\n\treturn {\r\n\t\twidth: width,\r\n\t\theight: height\r\n\t};\r\n}\r\n\r\n/**\r\n * Helper to get the alignment of a tooltip given the size\r\n */\r\nfunction determineAlignment(tooltip, size) {\r\n\tvar model = tooltip._model;\r\n\tvar chart = tooltip._chart;\r\n\tvar chartArea = tooltip._chart.chartArea;\r\n\tvar xAlign = 'center';\r\n\tvar yAlign = 'center';\r\n\r\n\tif (model.y < size.height) {\r\n\t\tyAlign = 'top';\r\n\t} else if (model.y > (chart.height - size.height)) {\r\n\t\tyAlign = 'bottom';\r\n\t}\r\n\r\n\tvar lf, rf; // functions to determine left, right alignment\r\n\tvar olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart\r\n\tvar yf; // function to get the y alignment if the tooltip goes outside of the left or right edges\r\n\tvar midX = (chartArea.left + chartArea.right) / 2;\r\n\tvar midY = (chartArea.top + chartArea.bottom) / 2;\r\n\r\n\tif (yAlign === 'center') {\r\n\t\tlf = function(x) {\r\n\t\t\treturn x <= midX;\r\n\t\t};\r\n\t\trf = function(x) {\r\n\t\t\treturn x > midX;\r\n\t\t};\r\n\t} else {\r\n\t\tlf = function(x) {\r\n\t\t\treturn x <= (size.width / 2);\r\n\t\t};\r\n\t\trf = function(x) {\r\n\t\t\treturn x >= (chart.width - (size.width / 2));\r\n\t\t};\r\n\t}\r\n\r\n\tolf = function(x) {\r\n\t\treturn x + size.width + model.caretSize + model.caretPadding > chart.width;\r\n\t};\r\n\torf = function(x) {\r\n\t\treturn x - size.width - model.caretSize - model.caretPadding < 0;\r\n\t};\r\n\tyf = function(y) {\r\n\t\treturn y <= midY ? 'top' : 'bottom';\r\n\t};\r\n\r\n\tif (lf(model.x)) {\r\n\t\txAlign = 'left';\r\n\r\n\t\t// Is tooltip too wide and goes over the right side of the chart.?\r\n\t\tif (olf(model.x)) {\r\n\t\t\txAlign = 'center';\r\n\t\t\tyAlign = yf(model.y);\r\n\t\t}\r\n\t} else if (rf(model.x)) {\r\n\t\txAlign = 'right';\r\n\r\n\t\t// Is tooltip too wide and goes outside left edge of canvas?\r\n\t\tif (orf(model.x)) {\r\n\t\t\txAlign = 'center';\r\n\t\t\tyAlign = yf(model.y);\r\n\t\t}\r\n\t}\r\n\r\n\tvar opts = tooltip._options;\r\n\treturn {\r\n\t\txAlign: opts.xAlign ? opts.xAlign : xAlign,\r\n\t\tyAlign: opts.yAlign ? opts.yAlign : yAlign\r\n\t};\r\n}\r\n\r\n/**\r\n * Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment\r\n */\r\nfunction getBackgroundPoint(vm, size, alignment, chart) {\r\n\t// Background Position\r\n\tvar x = vm.x;\r\n\tvar y = vm.y;\r\n\r\n\tvar caretSize = vm.caretSize;\r\n\tvar caretPadding = vm.caretPadding;\r\n\tvar cornerRadius = vm.cornerRadius;\r\n\tvar xAlign = alignment.xAlign;\r\n\tvar yAlign = alignment.yAlign;\r\n\tvar paddingAndSize = caretSize + caretPadding;\r\n\tvar radiusAndPadding = cornerRadius + caretPadding;\r\n\r\n\tif (xAlign === 'right') {\r\n\t\tx -= size.width;\r\n\t} else if (xAlign === 'center') {\r\n\t\tx -= (size.width / 2);\r\n\t\tif (x + size.width > chart.width) {\r\n\t\t\tx = chart.width - size.width;\r\n\t\t}\r\n\t\tif (x < 0) {\r\n\t\t\tx = 0;\r\n\t\t}\r\n\t}\r\n\r\n\tif (yAlign === 'top') {\r\n\t\ty += paddingAndSize;\r\n\t} else if (yAlign === 'bottom') {\r\n\t\ty -= size.height + paddingAndSize;\r\n\t} else {\r\n\t\ty -= (size.height / 2);\r\n\t}\r\n\r\n\tif (yAlign === 'center') {\r\n\t\tif (xAlign === 'left') {\r\n\t\t\tx += paddingAndSize;\r\n\t\t} else if (xAlign === 'right') {\r\n\t\t\tx -= paddingAndSize;\r\n\t\t}\r\n\t} else if (xAlign === 'left') {\r\n\t\tx -= radiusAndPadding;\r\n\t} else if (xAlign === 'right') {\r\n\t\tx += radiusAndPadding;\r\n\t}\r\n\r\n\treturn {\r\n\t\tx: x,\r\n\t\ty: y\r\n\t};\r\n}\r\n\r\nfunction getAlignedX(vm, align) {\r\n\treturn align === 'center'\r\n\t\t? vm.x + vm.width / 2\r\n\t\t: align === 'right'\r\n\t\t\t? vm.x + vm.width - vm.xPadding\r\n\t\t\t: vm.x + vm.xPadding;\r\n}\r\n\r\n/**\r\n * Helper to build before and after body lines\r\n */\r\nfunction getBeforeAfterBodyLines(callback) {\r\n\treturn pushOrConcat([], splitNewlines(callback));\r\n}\r\n\r\nvar exports$4 = core_element.extend({\r\n\tinitialize: function() {\r\n\t\tthis._model = getBaseModel(this._options);\r\n\t\tthis._lastActive = [];\r\n\t},\r\n\r\n\t// Get the title\r\n\t// Args are: (tooltipItem, data)\r\n\tgetTitle: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me._options;\r\n\t\tvar callbacks = opts.callbacks;\r\n\r\n\t\tvar beforeTitle = callbacks.beforeTitle.apply(me, arguments);\r\n\t\tvar title = callbacks.title.apply(me, arguments);\r\n\t\tvar afterTitle = callbacks.afterTitle.apply(me, arguments);\r\n\r\n\t\tvar lines = [];\r\n\t\tlines = pushOrConcat(lines, splitNewlines(beforeTitle));\r\n\t\tlines = pushOrConcat(lines, splitNewlines(title));\r\n\t\tlines = pushOrConcat(lines, splitNewlines(afterTitle));\r\n\r\n\t\treturn lines;\r\n\t},\r\n\r\n\t// Args are: (tooltipItem, data)\r\n\tgetBeforeBody: function() {\r\n\t\treturn getBeforeAfterBodyLines(this._options.callbacks.beforeBody.apply(this, arguments));\r\n\t},\r\n\r\n\t// Args are: (tooltipItem, data)\r\n\tgetBody: function(tooltipItems, data) {\r\n\t\tvar me = this;\r\n\t\tvar callbacks = me._options.callbacks;\r\n\t\tvar bodyItems = [];\r\n\r\n\t\thelpers$1.each(tooltipItems, function(tooltipItem) {\r\n\t\t\tvar bodyItem = {\r\n\t\t\t\tbefore: [],\r\n\t\t\t\tlines: [],\r\n\t\t\t\tafter: []\r\n\t\t\t};\r\n\t\t\tpushOrConcat(bodyItem.before, splitNewlines(callbacks.beforeLabel.call(me, tooltipItem, data)));\r\n\t\t\tpushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data));\r\n\t\t\tpushOrConcat(bodyItem.after, splitNewlines(callbacks.afterLabel.call(me, tooltipItem, data)));\r\n\r\n\t\t\tbodyItems.push(bodyItem);\r\n\t\t});\r\n\r\n\t\treturn bodyItems;\r\n\t},\r\n\r\n\t// Args are: (tooltipItem, data)\r\n\tgetAfterBody: function() {\r\n\t\treturn getBeforeAfterBodyLines(this._options.callbacks.afterBody.apply(this, arguments));\r\n\t},\r\n\r\n\t// Get the footer and beforeFooter and afterFooter lines\r\n\t// Args are: (tooltipItem, data)\r\n\tgetFooter: function() {\r\n\t\tvar me = this;\r\n\t\tvar callbacks = me._options.callbacks;\r\n\r\n\t\tvar beforeFooter = callbacks.beforeFooter.apply(me, arguments);\r\n\t\tvar footer = callbacks.footer.apply(me, arguments);\r\n\t\tvar afterFooter = callbacks.afterFooter.apply(me, arguments);\r\n\r\n\t\tvar lines = [];\r\n\t\tlines = pushOrConcat(lines, splitNewlines(beforeFooter));\r\n\t\tlines = pushOrConcat(lines, splitNewlines(footer));\r\n\t\tlines = pushOrConcat(lines, splitNewlines(afterFooter));\r\n\r\n\t\treturn lines;\r\n\t},\r\n\r\n\tupdate: function(changed) {\r\n\t\tvar me = this;\r\n\t\tvar opts = me._options;\r\n\r\n\t\t// Need to regenerate the model because its faster than using extend and it is necessary due to the optimization in Chart.Element.transition\r\n\t\t// that does _view = _model if ease === 1. This causes the 2nd tooltip update to set properties in both the view and model at the same time\r\n\t\t// which breaks any animations.\r\n\t\tvar existingModel = me._model;\r\n\t\tvar model = me._model = getBaseModel(opts);\r\n\t\tvar active = me._active;\r\n\r\n\t\tvar data = me._data;\r\n\r\n\t\t// In the case where active.length === 0 we need to keep these at existing values for good animations\r\n\t\tvar alignment = {\r\n\t\t\txAlign: existingModel.xAlign,\r\n\t\t\tyAlign: existingModel.yAlign\r\n\t\t};\r\n\t\tvar backgroundPoint = {\r\n\t\t\tx: existingModel.x,\r\n\t\t\ty: existingModel.y\r\n\t\t};\r\n\t\tvar tooltipSize = {\r\n\t\t\twidth: existingModel.width,\r\n\t\t\theight: existingModel.height\r\n\t\t};\r\n\t\tvar tooltipPosition = {\r\n\t\t\tx: existingModel.caretX,\r\n\t\t\ty: existingModel.caretY\r\n\t\t};\r\n\r\n\t\tvar i, len;\r\n\r\n\t\tif (active.length) {\r\n\t\t\tmodel.opacity = 1;\r\n\r\n\t\t\tvar labelColors = [];\r\n\t\t\tvar labelTextColors = [];\r\n\t\t\ttooltipPosition = positioners[opts.position].call(me, active, me._eventPosition);\r\n\r\n\t\t\tvar tooltipItems = [];\r\n\t\t\tfor (i = 0, len = active.length; i < len; ++i) {\r\n\t\t\t\ttooltipItems.push(createTooltipItem(active[i]));\r\n\t\t\t}\r\n\r\n\t\t\t// If the user provided a filter function, use it to modify the tooltip items\r\n\t\t\tif (opts.filter) {\r\n\t\t\t\ttooltipItems = tooltipItems.filter(function(a) {\r\n\t\t\t\t\treturn opts.filter(a, data);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// If the user provided a sorting function, use it to modify the tooltip items\r\n\t\t\tif (opts.itemSort) {\r\n\t\t\t\ttooltipItems = tooltipItems.sort(function(a, b) {\r\n\t\t\t\t\treturn opts.itemSort(a, b, data);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// Determine colors for boxes\r\n\t\t\thelpers$1.each(tooltipItems, function(tooltipItem) {\r\n\t\t\t\tlabelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, me._chart));\r\n\t\t\t\tlabelTextColors.push(opts.callbacks.labelTextColor.call(me, tooltipItem, me._chart));\r\n\t\t\t});\r\n\r\n\r\n\t\t\t// Build the Text Lines\r\n\t\t\tmodel.title = me.getTitle(tooltipItems, data);\r\n\t\t\tmodel.beforeBody = me.getBeforeBody(tooltipItems, data);\r\n\t\t\tmodel.body = me.getBody(tooltipItems, data);\r\n\t\t\tmodel.afterBody = me.getAfterBody(tooltipItems, data);\r\n\t\t\tmodel.footer = me.getFooter(tooltipItems, data);\r\n\r\n\t\t\t// Initial positioning and colors\r\n\t\t\tmodel.x = tooltipPosition.x;\r\n\t\t\tmodel.y = tooltipPosition.y;\r\n\t\t\tmodel.caretPadding = opts.caretPadding;\r\n\t\t\tmodel.labelColors = labelColors;\r\n\t\t\tmodel.labelTextColors = labelTextColors;\r\n\r\n\t\t\t// data points\r\n\t\t\tmodel.dataPoints = tooltipItems;\r\n\r\n\t\t\t// We need to determine alignment of the tooltip\r\n\t\t\ttooltipSize = getTooltipSize(this, model);\r\n\t\t\talignment = determineAlignment(this, tooltipSize);\r\n\t\t\t// Final Size and Position\r\n\t\t\tbackgroundPoint = getBackgroundPoint(model, tooltipSize, alignment, me._chart);\r\n\t\t} else {\r\n\t\t\tmodel.opacity = 0;\r\n\t\t}\r\n\r\n\t\tmodel.xAlign = alignment.xAlign;\r\n\t\tmodel.yAlign = alignment.yAlign;\r\n\t\tmodel.x = backgroundPoint.x;\r\n\t\tmodel.y = backgroundPoint.y;\r\n\t\tmodel.width = tooltipSize.width;\r\n\t\tmodel.height = tooltipSize.height;\r\n\r\n\t\t// Point where the caret on the tooltip points to\r\n\t\tmodel.caretX = tooltipPosition.x;\r\n\t\tmodel.caretY = tooltipPosition.y;\r\n\r\n\t\tme._model = model;\r\n\r\n\t\tif (changed && opts.custom) {\r\n\t\t\topts.custom.call(me, model);\r\n\t\t}\r\n\r\n\t\treturn me;\r\n\t},\r\n\r\n\tdrawCaret: function(tooltipPoint, size) {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\t\tvar caretPosition = this.getCaretPosition(tooltipPoint, size, vm);\r\n\r\n\t\tctx.lineTo(caretPosition.x1, caretPosition.y1);\r\n\t\tctx.lineTo(caretPosition.x2, caretPosition.y2);\r\n\t\tctx.lineTo(caretPosition.x3, caretPosition.y3);\r\n\t},\r\n\tgetCaretPosition: function(tooltipPoint, size, vm) {\r\n\t\tvar x1, x2, x3, y1, y2, y3;\r\n\t\tvar caretSize = vm.caretSize;\r\n\t\tvar cornerRadius = vm.cornerRadius;\r\n\t\tvar xAlign = vm.xAlign;\r\n\t\tvar yAlign = vm.yAlign;\r\n\t\tvar ptX = tooltipPoint.x;\r\n\t\tvar ptY = tooltipPoint.y;\r\n\t\tvar width = size.width;\r\n\t\tvar height = size.height;\r\n\r\n\t\tif (yAlign === 'center') {\r\n\t\t\ty2 = ptY + (height / 2);\r\n\r\n\t\t\tif (xAlign === 'left') {\r\n\t\t\t\tx1 = ptX;\r\n\t\t\t\tx2 = x1 - caretSize;\r\n\t\t\t\tx3 = x1;\r\n\r\n\t\t\t\ty1 = y2 + caretSize;\r\n\t\t\t\ty3 = y2 - caretSize;\r\n\t\t\t} else {\r\n\t\t\t\tx1 = ptX + width;\r\n\t\t\t\tx2 = x1 + caretSize;\r\n\t\t\t\tx3 = x1;\r\n\r\n\t\t\t\ty1 = y2 - caretSize;\r\n\t\t\t\ty3 = y2 + caretSize;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (xAlign === 'left') {\r\n\t\t\t\tx2 = ptX + cornerRadius + (caretSize);\r\n\t\t\t\tx1 = x2 - caretSize;\r\n\t\t\t\tx3 = x2 + caretSize;\r\n\t\t\t} else if (xAlign === 'right') {\r\n\t\t\t\tx2 = ptX + width - cornerRadius - caretSize;\r\n\t\t\t\tx1 = x2 - caretSize;\r\n\t\t\t\tx3 = x2 + caretSize;\r\n\t\t\t} else {\r\n\t\t\t\tx2 = vm.caretX;\r\n\t\t\t\tx1 = x2 - caretSize;\r\n\t\t\t\tx3 = x2 + caretSize;\r\n\t\t\t}\r\n\t\t\tif (yAlign === 'top') {\r\n\t\t\t\ty1 = ptY;\r\n\t\t\t\ty2 = y1 - caretSize;\r\n\t\t\t\ty3 = y1;\r\n\t\t\t} else {\r\n\t\t\t\ty1 = ptY + height;\r\n\t\t\t\ty2 = y1 + caretSize;\r\n\t\t\t\ty3 = y1;\r\n\t\t\t\t// invert drawing order\r\n\t\t\t\tvar tmp = x3;\r\n\t\t\t\tx3 = x1;\r\n\t\t\t\tx1 = tmp;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn {x1: x1, x2: x2, x3: x3, y1: y1, y2: y2, y3: y3};\r\n\t},\r\n\r\n\tdrawTitle: function(pt, vm, ctx) {\r\n\t\tvar title = vm.title;\r\n\t\tvar length = title.length;\r\n\t\tvar titleFontSize, titleSpacing, i;\r\n\r\n\t\tif (length) {\r\n\t\t\tvar rtlHelper = getRtlHelper(vm.rtl, vm.x, vm.width);\r\n\r\n\t\t\tpt.x = getAlignedX(vm, vm._titleAlign);\r\n\r\n\t\t\tctx.textAlign = rtlHelper.textAlign(vm._titleAlign);\r\n\t\t\tctx.textBaseline = 'middle';\r\n\r\n\t\t\ttitleFontSize = vm.titleFontSize;\r\n\t\t\ttitleSpacing = vm.titleSpacing;\r\n\r\n\t\t\tctx.fillStyle = vm.titleFontColor;\r\n\t\t\tctx.font = helpers$1.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily);\r\n\r\n\t\t\tfor (i = 0; i < length; ++i) {\r\n\t\t\t\tctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFontSize / 2);\r\n\t\t\t\tpt.y += titleFontSize + titleSpacing; // Line Height and spacing\r\n\r\n\t\t\t\tif (i + 1 === length) {\r\n\t\t\t\t\tpt.y += vm.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tdrawBody: function(pt, vm, ctx) {\r\n\t\tvar bodyFontSize = vm.bodyFontSize;\r\n\t\tvar bodySpacing = vm.bodySpacing;\r\n\t\tvar bodyAlign = vm._bodyAlign;\r\n\t\tvar body = vm.body;\r\n\t\tvar drawColorBoxes = vm.displayColors;\r\n\t\tvar xLinePadding = 0;\r\n\t\tvar colorX = drawColorBoxes ? getAlignedX(vm, 'left') : 0;\r\n\r\n\t\tvar rtlHelper = getRtlHelper(vm.rtl, vm.x, vm.width);\r\n\r\n\t\tvar fillLineOfText = function(line) {\r\n\t\t\tctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyFontSize / 2);\r\n\t\t\tpt.y += bodyFontSize + bodySpacing;\r\n\t\t};\r\n\r\n\t\tvar bodyItem, textColor, labelColors, lines, i, j, ilen, jlen;\r\n\t\tvar bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\r\n\r\n\t\tctx.textAlign = bodyAlign;\r\n\t\tctx.textBaseline = 'middle';\r\n\t\tctx.font = helpers$1.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily);\r\n\r\n\t\tpt.x = getAlignedX(vm, bodyAlignForCalculation);\r\n\r\n\t\t// Before body lines\r\n\t\tctx.fillStyle = vm.bodyFontColor;\r\n\t\thelpers$1.each(vm.beforeBody, fillLineOfText);\r\n\r\n\t\txLinePadding = drawColorBoxes && bodyAlignForCalculation !== 'right'\r\n\t\t\t? bodyAlign === 'center' ? (bodyFontSize / 2 + 1) : (bodyFontSize + 2)\r\n\t\t\t: 0;\r\n\r\n\t\t// Draw body lines now\r\n\t\tfor (i = 0, ilen = body.length; i < ilen; ++i) {\r\n\t\t\tbodyItem = body[i];\r\n\t\t\ttextColor = vm.labelTextColors[i];\r\n\t\t\tlabelColors = vm.labelColors[i];\r\n\r\n\t\t\tctx.fillStyle = textColor;\r\n\t\t\thelpers$1.each(bodyItem.before, fillLineOfText);\r\n\r\n\t\t\tlines = bodyItem.lines;\r\n\t\t\tfor (j = 0, jlen = lines.length; j < jlen; ++j) {\r\n\t\t\t\t// Draw Legend-like boxes if needed\r\n\t\t\t\tif (drawColorBoxes) {\r\n\t\t\t\t\tvar rtlColorX = rtlHelper.x(colorX);\r\n\r\n\t\t\t\t\t// Fill a white rect so that colours merge nicely if the opacity is < 1\r\n\t\t\t\t\tctx.fillStyle = vm.legendColorBackground;\r\n\t\t\t\t\tctx.fillRect(rtlHelper.leftForLtr(rtlColorX, bodyFontSize), pt.y, bodyFontSize, bodyFontSize);\r\n\r\n\t\t\t\t\t// Border\r\n\t\t\t\t\tctx.lineWidth = 1;\r\n\t\t\t\t\tctx.strokeStyle = labelColors.borderColor;\r\n\t\t\t\t\tctx.strokeRect(rtlHelper.leftForLtr(rtlColorX, bodyFontSize), pt.y, bodyFontSize, bodyFontSize);\r\n\r\n\t\t\t\t\t// Inner square\r\n\t\t\t\t\tctx.fillStyle = labelColors.backgroundColor;\r\n\t\t\t\t\tctx.fillRect(rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), bodyFontSize - 2), pt.y + 1, bodyFontSize - 2, bodyFontSize - 2);\r\n\t\t\t\t\tctx.fillStyle = textColor;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfillLineOfText(lines[j]);\r\n\t\t\t}\r\n\r\n\t\t\thelpers$1.each(bodyItem.after, fillLineOfText);\r\n\t\t}\r\n\r\n\t\t// Reset back to 0 for after body\r\n\t\txLinePadding = 0;\r\n\r\n\t\t// After body lines\r\n\t\thelpers$1.each(vm.afterBody, fillLineOfText);\r\n\t\tpt.y -= bodySpacing; // Remove last body spacing\r\n\t},\r\n\r\n\tdrawFooter: function(pt, vm, ctx) {\r\n\t\tvar footer = vm.footer;\r\n\t\tvar length = footer.length;\r\n\t\tvar footerFontSize, i;\r\n\r\n\t\tif (length) {\r\n\t\t\tvar rtlHelper = getRtlHelper(vm.rtl, vm.x, vm.width);\r\n\r\n\t\t\tpt.x = getAlignedX(vm, vm._footerAlign);\r\n\t\t\tpt.y += vm.footerMarginTop;\r\n\r\n\t\t\tctx.textAlign = rtlHelper.textAlign(vm._footerAlign);\r\n\t\t\tctx.textBaseline = 'middle';\r\n\r\n\t\t\tfooterFontSize = vm.footerFontSize;\r\n\r\n\t\t\tctx.fillStyle = vm.footerFontColor;\r\n\t\t\tctx.font = helpers$1.fontString(footerFontSize, vm._footerFontStyle, vm._footerFontFamily);\r\n\r\n\t\t\tfor (i = 0; i < length; ++i) {\r\n\t\t\t\tctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFontSize / 2);\r\n\t\t\t\tpt.y += footerFontSize + vm.footerSpacing;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tdrawBackground: function(pt, vm, ctx, tooltipSize) {\r\n\t\tctx.fillStyle = vm.backgroundColor;\r\n\t\tctx.strokeStyle = vm.borderColor;\r\n\t\tctx.lineWidth = vm.borderWidth;\r\n\t\tvar xAlign = vm.xAlign;\r\n\t\tvar yAlign = vm.yAlign;\r\n\t\tvar x = pt.x;\r\n\t\tvar y = pt.y;\r\n\t\tvar width = tooltipSize.width;\r\n\t\tvar height = tooltipSize.height;\r\n\t\tvar radius = vm.cornerRadius;\r\n\r\n\t\tctx.beginPath();\r\n\t\tctx.moveTo(x + radius, y);\r\n\t\tif (yAlign === 'top') {\r\n\t\t\tthis.drawCaret(pt, tooltipSize);\r\n\t\t}\r\n\t\tctx.lineTo(x + width - radius, y);\r\n\t\tctx.quadraticCurveTo(x + width, y, x + width, y + radius);\r\n\t\tif (yAlign === 'center' && xAlign === 'right') {\r\n\t\t\tthis.drawCaret(pt, tooltipSize);\r\n\t\t}\r\n\t\tctx.lineTo(x + width, y + height - radius);\r\n\t\tctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\r\n\t\tif (yAlign === 'bottom') {\r\n\t\t\tthis.drawCaret(pt, tooltipSize);\r\n\t\t}\r\n\t\tctx.lineTo(x + radius, y + height);\r\n\t\tctx.quadraticCurveTo(x, y + height, x, y + height - radius);\r\n\t\tif (yAlign === 'center' && xAlign === 'left') {\r\n\t\t\tthis.drawCaret(pt, tooltipSize);\r\n\t\t}\r\n\t\tctx.lineTo(x, y + radius);\r\n\t\tctx.quadraticCurveTo(x, y, x + radius, y);\r\n\t\tctx.closePath();\r\n\r\n\t\tctx.fill();\r\n\r\n\t\tif (vm.borderWidth > 0) {\r\n\t\t\tctx.stroke();\r\n\t\t}\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\r\n\t\tif (vm.opacity === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar tooltipSize = {\r\n\t\t\twidth: vm.width,\r\n\t\t\theight: vm.height\r\n\t\t};\r\n\t\tvar pt = {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y\r\n\t\t};\r\n\r\n\t\t// IE11/Edge does not like very small opacities, so snap to 0\r\n\t\tvar opacity = Math.abs(vm.opacity < 1e-3) ? 0 : vm.opacity;\r\n\r\n\t\t// Truthy/falsey value for empty tooltip\r\n\t\tvar hasTooltipContent = vm.title.length || vm.beforeBody.length || vm.body.length || vm.afterBody.length || vm.footer.length;\r\n\r\n\t\tif (this._options.enabled && hasTooltipContent) {\r\n\t\t\tctx.save();\r\n\t\t\tctx.globalAlpha = opacity;\r\n\r\n\t\t\t// Draw Background\r\n\t\t\tthis.drawBackground(pt, vm, ctx, tooltipSize);\r\n\r\n\t\t\t// Draw Title, Body, and Footer\r\n\t\t\tpt.y += vm.yPadding;\r\n\r\n\t\t\thelpers$1.rtl.overrideTextDirection(ctx, vm.textDirection);\r\n\r\n\t\t\t// Titles\r\n\t\t\tthis.drawTitle(pt, vm, ctx);\r\n\r\n\t\t\t// Body\r\n\t\t\tthis.drawBody(pt, vm, ctx);\r\n\r\n\t\t\t// Footer\r\n\t\t\tthis.drawFooter(pt, vm, ctx);\r\n\r\n\t\t\thelpers$1.rtl.restoreTextDirection(ctx, vm.textDirection);\r\n\r\n\t\t\tctx.restore();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Handle an event\r\n\t * @private\r\n\t * @param {IEvent} event - The event to handle\r\n\t * @returns {boolean} true if the tooltip changed\r\n\t */\r\n\thandleEvent: function(e) {\r\n\t\tvar me = this;\r\n\t\tvar options = me._options;\r\n\t\tvar changed = false;\r\n\r\n\t\tme._lastActive = me._lastActive || [];\r\n\r\n\t\t// Find Active Elements for tooltips\r\n\t\tif (e.type === 'mouseout') {\r\n\t\t\tme._active = [];\r\n\t\t} else {\r\n\t\t\tme._active = me._chart.getElementsAtEventForMode(e, options.mode, options);\r\n\t\t\tif (options.reverse) {\r\n\t\t\t\tme._active.reverse();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Remember Last Actives\r\n\t\tchanged = !helpers$1.arrayEquals(me._active, me._lastActive);\r\n\r\n\t\t// Only handle target event on tooltip change\r\n\t\tif (changed) {\r\n\t\t\tme._lastActive = me._active;\r\n\r\n\t\t\tif (options.enabled || options.custom) {\r\n\t\t\t\tme._eventPosition = {\r\n\t\t\t\t\tx: e.x,\r\n\t\t\t\t\ty: e.y\r\n\t\t\t\t};\r\n\r\n\t\t\t\tme.update(true);\r\n\t\t\t\tme.pivot();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn changed;\r\n\t}\r\n});\r\n\r\n/**\r\n * @namespace Chart.Tooltip.positioners\r\n */\r\nvar positioners_1 = positioners;\r\n\r\nvar core_tooltip = exports$4;\ncore_tooltip.positioners = positioners_1;\n\nvar valueOrDefault$9 = helpers$1.valueOrDefault;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {},\r\n\tevents: [\r\n\t\t'mousemove',\r\n\t\t'mouseout',\r\n\t\t'click',\r\n\t\t'touchstart',\r\n\t\t'touchmove'\r\n\t],\r\n\thover: {\r\n\t\tonHover: null,\r\n\t\tmode: 'nearest',\r\n\t\tintersect: true,\r\n\t\tanimationDuration: 400\r\n\t},\r\n\tonClick: null,\r\n\tmaintainAspectRatio: true,\r\n\tresponsive: true,\r\n\tresponsiveAnimationDuration: 0\r\n});\r\n\r\n/**\r\n * Recursively merge the given config objects representing the `scales` option\r\n * by incorporating scale defaults in `xAxes` and `yAxes` array items, then\r\n * returns a deep copy of the result, thus doesn't alter inputs.\r\n */\r\nfunction mergeScaleConfig(/* config objects ... */) {\r\n\treturn helpers$1.merge(Object.create(null), [].slice.call(arguments), {\r\n\t\tmerger: function(key, target, source, options) {\r\n\t\t\tif (key === 'xAxes' || key === 'yAxes') {\r\n\t\t\t\tvar slen = source[key].length;\r\n\t\t\t\tvar i, type, scale;\r\n\r\n\t\t\t\tif (!target[key]) {\r\n\t\t\t\t\ttarget[key] = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (i = 0; i < slen; ++i) {\r\n\t\t\t\t\tscale = source[key][i];\r\n\t\t\t\t\ttype = valueOrDefault$9(scale.type, key === 'xAxes' ? 'category' : 'linear');\r\n\r\n\t\t\t\t\tif (i >= target[key].length) {\r\n\t\t\t\t\t\ttarget[key].push({});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (!target[key][i].type || (scale.type && scale.type !== target[key][i].type)) {\r\n\t\t\t\t\t\t// new/untyped scale or type changed: let's apply the new defaults\r\n\t\t\t\t\t\t// then merge source scale to correctly overwrite the defaults.\r\n\t\t\t\t\t\thelpers$1.merge(target[key][i], [core_scaleService.getScaleDefaults(type), scale]);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// scales type are the same\r\n\t\t\t\t\t\thelpers$1.merge(target[key][i], scale);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\thelpers$1._merger(key, target, source, options);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n}\r\n\r\n/**\r\n * Recursively merge the given config objects as the root options by handling\r\n * default scale options for the `scales` and `scale` properties, then returns\r\n * a deep copy of the result, thus doesn't alter inputs.\r\n */\r\nfunction mergeConfig(/* config objects ... */) {\r\n\treturn helpers$1.merge(Object.create(null), [].slice.call(arguments), {\r\n\t\tmerger: function(key, target, source, options) {\r\n\t\t\tvar tval = target[key] || Object.create(null);\r\n\t\t\tvar sval = source[key];\r\n\r\n\t\t\tif (key === 'scales') {\r\n\t\t\t\t// scale config merging is complex. Add our own function here for that\r\n\t\t\t\ttarget[key] = mergeScaleConfig(tval, sval);\r\n\t\t\t} else if (key === 'scale') {\r\n\t\t\t\t// used in polar area & radar charts since there is only one scale\r\n\t\t\t\ttarget[key] = helpers$1.merge(tval, [core_scaleService.getScaleDefaults(sval.type), sval]);\r\n\t\t\t} else {\r\n\t\t\t\thelpers$1._merger(key, target, source, options);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction initConfig(config) {\r\n\tconfig = config || Object.create(null);\r\n\r\n\t// Do NOT use mergeConfig for the data object because this method merges arrays\r\n\t// and so would change references to labels and datasets, preventing data updates.\r\n\tvar data = config.data = config.data || {};\r\n\tdata.datasets = data.datasets || [];\r\n\tdata.labels = data.labels || [];\r\n\r\n\tconfig.options = mergeConfig(\r\n\t\tcore_defaults.global,\r\n\t\tcore_defaults[config.type],\r\n\t\tconfig.options || {});\r\n\r\n\treturn config;\r\n}\r\n\r\nfunction updateConfig(chart) {\r\n\tvar newOptions = chart.options;\r\n\r\n\thelpers$1.each(chart.scales, function(scale) {\r\n\t\tcore_layouts.removeBox(chart, scale);\r\n\t});\r\n\r\n\tnewOptions = mergeConfig(\r\n\t\tcore_defaults.global,\r\n\t\tcore_defaults[chart.config.type],\r\n\t\tnewOptions);\r\n\r\n\tchart.options = chart.config.options = newOptions;\r\n\tchart.ensureScalesHaveIDs();\r\n\tchart.buildOrUpdateScales();\r\n\r\n\t// Tooltip\r\n\tchart.tooltip._options = newOptions.tooltips;\r\n\tchart.tooltip.initialize();\r\n}\r\n\r\nfunction nextAvailableScaleId(axesOpts, prefix, index) {\r\n\tvar id;\r\n\tvar hasId = function(obj) {\r\n\t\treturn obj.id === id;\r\n\t};\r\n\r\n\tdo {\r\n\t\tid = prefix + index++;\r\n\t} while (helpers$1.findIndex(axesOpts, hasId) >= 0);\r\n\r\n\treturn id;\r\n}\r\n\r\nfunction positionIsHorizontal(position) {\r\n\treturn position === 'top' || position === 'bottom';\r\n}\r\n\r\nfunction compare2Level(l1, l2) {\r\n\treturn function(a, b) {\r\n\t\treturn a[l1] === b[l1]\r\n\t\t\t? a[l2] - b[l2]\r\n\t\t\t: a[l1] - b[l1];\r\n\t};\r\n}\r\n\r\nvar Chart = function(item, config) {\r\n\tthis.construct(item, config);\r\n\treturn this;\r\n};\r\n\r\nhelpers$1.extend(Chart.prototype, /** @lends Chart */ {\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tconstruct: function(item, config) {\r\n\t\tvar me = this;\r\n\r\n\t\tconfig = initConfig(config);\r\n\r\n\t\tvar context = platform.acquireContext(item, config);\r\n\t\tvar canvas = context && context.canvas;\r\n\t\tvar height = canvas && canvas.height;\r\n\t\tvar width = canvas && canvas.width;\r\n\r\n\t\tme.id = helpers$1.uid();\r\n\t\tme.ctx = context;\r\n\t\tme.canvas = canvas;\r\n\t\tme.config = config;\r\n\t\tme.width = width;\r\n\t\tme.height = height;\r\n\t\tme.aspectRatio = height ? width / height : null;\r\n\t\tme.options = config.options;\r\n\t\tme._bufferedRender = false;\r\n\t\tme._layers = [];\r\n\r\n\t\t/**\r\n\t\t * Provided for backward compatibility, Chart and Chart.Controller have been merged,\r\n\t\t * the \"instance\" still need to be defined since it might be called from plugins.\r\n\t\t * @prop Chart#chart\r\n\t\t * @deprecated since version 2.6.0\r\n\t\t * @todo remove at version 3\r\n\t\t * @private\r\n\t\t */\r\n\t\tme.chart = me;\r\n\t\tme.controller = me; // chart.chart.controller #inception\r\n\r\n\t\t// Add the chart instance to the global namespace\r\n\t\tChart.instances[me.id] = me;\r\n\r\n\t\t// Define alias to the config data: `chart.data === chart.config.data`\r\n\t\tObject.defineProperty(me, 'data', {\r\n\t\t\tget: function() {\r\n\t\t\t\treturn me.config.data;\r\n\t\t\t},\r\n\t\t\tset: function(value) {\r\n\t\t\t\tme.config.data = value;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (!context || !canvas) {\r\n\t\t\t// The given item is not a compatible context2d element, let's return before finalizing\r\n\t\t\t// the chart initialization but after setting basic chart / controller properties that\r\n\t\t\t// can help to figure out that the chart is not valid (e.g chart.canvas !== null);\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/2807\r\n\t\t\tconsole.error(\"Failed to create chart: can't acquire context from the given item\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tme.initialize();\r\n\t\tme.update();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tinitialize: function() {\r\n\t\tvar me = this;\r\n\r\n\t\t// Before init plugin notification\r\n\t\tcore_plugins.notify(me, 'beforeInit');\r\n\r\n\t\thelpers$1.retinaScale(me, me.options.devicePixelRatio);\r\n\r\n\t\tme.bindEvents();\r\n\r\n\t\tif (me.options.responsive) {\r\n\t\t\t// Initial resize before chart draws (must be silent to preserve initial animations).\r\n\t\t\tme.resize(true);\r\n\t\t}\r\n\r\n\t\tme.initToolTip();\r\n\r\n\t\t// After init plugin notification\r\n\t\tcore_plugins.notify(me, 'afterInit');\r\n\r\n\t\treturn me;\r\n\t},\r\n\r\n\tclear: function() {\r\n\t\thelpers$1.canvas.clear(this);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tstop: function() {\r\n\t\t// Stops any current animation loop occurring\r\n\t\tcore_animations.cancelAnimation(this);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tresize: function(silent) {\r\n\t\tvar me = this;\r\n\t\tvar options = me.options;\r\n\t\tvar canvas = me.canvas;\r\n\t\tvar aspectRatio = (options.maintainAspectRatio && me.aspectRatio) || null;\r\n\r\n\t\t// the canvas render width and height will be casted to integers so make sure that\r\n\t\t// the canvas display style uses the same integer values to avoid blurring effect.\r\n\r\n\t\t// Set to 0 instead of canvas.size because the size defaults to 300x150 if the element is collapsed\r\n\t\tvar newWidth = Math.max(0, Math.floor(helpers$1.getMaximumWidth(canvas)));\r\n\t\tvar newHeight = Math.max(0, Math.floor(aspectRatio ? newWidth / aspectRatio : helpers$1.getMaximumHeight(canvas)));\r\n\r\n\t\tif (me.width === newWidth && me.height === newHeight) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tcanvas.width = me.width = newWidth;\r\n\t\tcanvas.height = me.height = newHeight;\r\n\t\tcanvas.style.width = newWidth + 'px';\r\n\t\tcanvas.style.height = newHeight + 'px';\r\n\r\n\t\thelpers$1.retinaScale(me, options.devicePixelRatio);\r\n\r\n\t\tif (!silent) {\r\n\t\t\t// Notify any plugins about the resize\r\n\t\t\tvar newSize = {width: newWidth, height: newHeight};\r\n\t\t\tcore_plugins.notify(me, 'resize', [newSize]);\r\n\r\n\t\t\t// Notify of resize\r\n\t\t\tif (options.onResize) {\r\n\t\t\t\toptions.onResize(me, newSize);\r\n\t\t\t}\r\n\r\n\t\t\tme.stop();\r\n\t\t\tme.update({\r\n\t\t\t\tduration: options.responsiveAnimationDuration\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\tensureScalesHaveIDs: function() {\r\n\t\tvar options = this.options;\r\n\t\tvar scalesOptions = options.scales || {};\r\n\t\tvar scaleOptions = options.scale;\r\n\r\n\t\thelpers$1.each(scalesOptions.xAxes, function(xAxisOptions, index) {\r\n\t\t\tif (!xAxisOptions.id) {\r\n\t\t\t\txAxisOptions.id = nextAvailableScaleId(scalesOptions.xAxes, 'x-axis-', index);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\thelpers$1.each(scalesOptions.yAxes, function(yAxisOptions, index) {\r\n\t\t\tif (!yAxisOptions.id) {\r\n\t\t\t\tyAxisOptions.id = nextAvailableScaleId(scalesOptions.yAxes, 'y-axis-', index);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (scaleOptions) {\r\n\t\t\tscaleOptions.id = scaleOptions.id || 'scale';\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Builds a map of scale ID to scale object for future lookup.\r\n\t */\r\n\tbuildOrUpdateScales: function() {\r\n\t\tvar me = this;\r\n\t\tvar options = me.options;\r\n\t\tvar scales = me.scales || {};\r\n\t\tvar items = [];\r\n\t\tvar updated = Object.keys(scales).reduce(function(obj, id) {\r\n\t\t\tobj[id] = false;\r\n\t\t\treturn obj;\r\n\t\t}, {});\r\n\r\n\t\tif (options.scales) {\r\n\t\t\titems = items.concat(\r\n\t\t\t\t(options.scales.xAxes || []).map(function(xAxisOptions) {\r\n\t\t\t\t\treturn {options: xAxisOptions, dtype: 'category', dposition: 'bottom'};\r\n\t\t\t\t}),\r\n\t\t\t\t(options.scales.yAxes || []).map(function(yAxisOptions) {\r\n\t\t\t\t\treturn {options: yAxisOptions, dtype: 'linear', dposition: 'left'};\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tif (options.scale) {\r\n\t\t\titems.push({\r\n\t\t\t\toptions: options.scale,\r\n\t\t\t\tdtype: 'radialLinear',\r\n\t\t\t\tisDefault: true,\r\n\t\t\t\tdposition: 'chartArea'\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\thelpers$1.each(items, function(item) {\r\n\t\t\tvar scaleOptions = item.options;\r\n\t\t\tvar id = scaleOptions.id;\r\n\t\t\tvar scaleType = valueOrDefault$9(scaleOptions.type, item.dtype);\r\n\r\n\t\t\tif (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) {\r\n\t\t\t\tscaleOptions.position = item.dposition;\r\n\t\t\t}\r\n\r\n\t\t\tupdated[id] = true;\r\n\t\t\tvar scale = null;\r\n\t\t\tif (id in scales && scales[id].type === scaleType) {\r\n\t\t\t\tscale = scales[id];\r\n\t\t\t\tscale.options = scaleOptions;\r\n\t\t\t\tscale.ctx = me.ctx;\r\n\t\t\t\tscale.chart = me;\r\n\t\t\t} else {\r\n\t\t\t\tvar scaleClass = core_scaleService.getScaleConstructor(scaleType);\r\n\t\t\t\tif (!scaleClass) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tscale = new scaleClass({\r\n\t\t\t\t\tid: id,\r\n\t\t\t\t\ttype: scaleType,\r\n\t\t\t\t\toptions: scaleOptions,\r\n\t\t\t\t\tctx: me.ctx,\r\n\t\t\t\t\tchart: me\r\n\t\t\t\t});\r\n\t\t\t\tscales[scale.id] = scale;\r\n\t\t\t}\r\n\r\n\t\t\tscale.mergeTicksOptions();\r\n\r\n\t\t\t// TODO(SB): I think we should be able to remove this custom case (options.scale)\r\n\t\t\t// and consider it as a regular scale part of the \"scales\"\" map only! This would\r\n\t\t\t// make the logic easier and remove some useless? custom code.\r\n\t\t\tif (item.isDefault) {\r\n\t\t\t\tme.scale = scale;\r\n\t\t\t}\r\n\t\t});\r\n\t\t// clear up discarded scales\r\n\t\thelpers$1.each(updated, function(hasUpdated, id) {\r\n\t\t\tif (!hasUpdated) {\r\n\t\t\t\tdelete scales[id];\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tme.scales = scales;\r\n\r\n\t\tcore_scaleService.addScalesToLayout(this);\r\n\t},\r\n\r\n\tbuildOrUpdateControllers: function() {\r\n\t\tvar me = this;\r\n\t\tvar newControllers = [];\r\n\t\tvar datasets = me.data.datasets;\r\n\t\tvar i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = datasets.length; i < ilen; i++) {\r\n\t\t\tvar dataset = datasets[i];\r\n\t\t\tvar meta = me.getDatasetMeta(i);\r\n\t\t\tvar type = dataset.type || me.config.type;\r\n\r\n\t\t\tif (meta.type && meta.type !== type) {\r\n\t\t\t\tme.destroyDatasetMeta(i);\r\n\t\t\t\tmeta = me.getDatasetMeta(i);\r\n\t\t\t}\r\n\t\t\tmeta.type = type;\r\n\t\t\tmeta.order = dataset.order || 0;\r\n\t\t\tmeta.index = i;\r\n\r\n\t\t\tif (meta.controller) {\r\n\t\t\t\tmeta.controller.updateIndex(i);\r\n\t\t\t\tmeta.controller.linkScales();\r\n\t\t\t} else {\r\n\t\t\t\tvar ControllerClass = controllers[meta.type];\r\n\t\t\t\tif (ControllerClass === undefined) {\r\n\t\t\t\t\tthrow new Error('\"' + meta.type + '\" is not a chart type.');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tmeta.controller = new ControllerClass(me, i);\r\n\t\t\t\tnewControllers.push(meta.controller);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn newControllers;\r\n\t},\r\n\r\n\t/**\r\n\t * Reset the elements of all datasets\r\n\t * @private\r\n\t */\r\n\tresetElements: function() {\r\n\t\tvar me = this;\r\n\t\thelpers$1.each(me.data.datasets, function(dataset, datasetIndex) {\r\n\t\t\tme.getDatasetMeta(datasetIndex).controller.reset();\r\n\t\t}, me);\r\n\t},\r\n\r\n\t/**\r\n\t* Resets the chart back to it's state before the initial animation\r\n\t*/\r\n\treset: function() {\r\n\t\tthis.resetElements();\r\n\t\tthis.tooltip.initialize();\r\n\t},\r\n\r\n\tupdate: function(config) {\r\n\t\tvar me = this;\r\n\t\tvar i, ilen;\r\n\r\n\t\tif (!config || typeof config !== 'object') {\r\n\t\t\t// backwards compatibility\r\n\t\t\tconfig = {\r\n\t\t\t\tduration: config,\r\n\t\t\t\tlazy: arguments[1]\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tupdateConfig(me);\r\n\r\n\t\t// plugins options references might have change, let's invalidate the cache\r\n\t\t// https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\r\n\t\tcore_plugins._invalidate(me);\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeUpdate') === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// In case the entire data object changed\r\n\t\tme.tooltip._data = me.data;\r\n\r\n\t\t// Make sure dataset controllers are updated and new controllers are reset\r\n\t\tvar newControllers = me.buildOrUpdateControllers();\r\n\r\n\t\t// Make sure all dataset controllers have correct meta data counts\r\n\t\tfor (i = 0, ilen = me.data.datasets.length; i < ilen; i++) {\r\n\t\t\tme.getDatasetMeta(i).controller.buildOrUpdateElements();\r\n\t\t}\r\n\r\n\t\tme.updateLayout();\r\n\r\n\t\t// Can only reset the new controllers after the scales have been updated\r\n\t\tif (me.options.animation && me.options.animation.duration) {\r\n\t\t\thelpers$1.each(newControllers, function(controller) {\r\n\t\t\t\tcontroller.reset();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tme.updateDatasets();\r\n\r\n\t\t// Need to reset tooltip in case it is displayed with elements that are removed\r\n\t\t// after update.\r\n\t\tme.tooltip.initialize();\r\n\r\n\t\t// Last active contains items that were previously in the tooltip.\r\n\t\t// When we reset the tooltip, we need to clear it\r\n\t\tme.lastActive = [];\r\n\r\n\t\t// Do this before render so that any plugins that need final scale updates can use it\r\n\t\tcore_plugins.notify(me, 'afterUpdate');\r\n\r\n\t\tme._layers.sort(compare2Level('z', '_idx'));\r\n\r\n\t\tif (me._bufferedRender) {\r\n\t\t\tme._bufferedRequest = {\r\n\t\t\t\tduration: config.duration,\r\n\t\t\t\teasing: config.easing,\r\n\t\t\t\tlazy: config.lazy\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\tme.render(config);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Updates the chart layout unless a plugin returns `false` to the `beforeLayout`\r\n\t * hook, in which case, plugins will not be called on `afterLayout`.\r\n\t * @private\r\n\t */\r\n\tupdateLayout: function() {\r\n\t\tvar me = this;\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeLayout') === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tcore_layouts.update(this, this.width, this.height);\r\n\r\n\t\tme._layers = [];\r\n\t\thelpers$1.each(me.boxes, function(box) {\r\n\t\t\t// _configure is called twice, once in core.scale.update and once here.\r\n\t\t\t// Here the boxes are fully updated and at their final positions.\r\n\t\t\tif (box._configure) {\r\n\t\t\t\tbox._configure();\r\n\t\t\t}\r\n\t\t\tme._layers.push.apply(me._layers, box._layers());\r\n\t\t}, me);\r\n\r\n\t\tme._layers.forEach(function(item, index) {\r\n\t\t\titem._idx = index;\r\n\t\t});\r\n\r\n\t\t/**\r\n\t\t * Provided for backward compatibility, use `afterLayout` instead.\r\n\t\t * @method IPlugin#afterScaleUpdate\r\n\t\t * @deprecated since version 2.5.0\r\n\t\t * @todo remove at version 3\r\n\t\t * @private\r\n\t\t */\r\n\t\tcore_plugins.notify(me, 'afterScaleUpdate');\r\n\t\tcore_plugins.notify(me, 'afterLayout');\r\n\t},\r\n\r\n\t/**\r\n\t * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate`\r\n\t * hook, in which case, plugins will not be called on `afterDatasetsUpdate`.\r\n\t * @private\r\n\t */\r\n\tupdateDatasets: function() {\r\n\t\tvar me = this;\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeDatasetsUpdate') === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tfor (var i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\r\n\t\t\tme.updateDataset(i);\r\n\t\t}\r\n\r\n\t\tcore_plugins.notify(me, 'afterDatasetsUpdate');\r\n\t},\r\n\r\n\t/**\r\n\t * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate`\r\n\t * hook, in which case, plugins will not be called on `afterDatasetUpdate`.\r\n\t * @private\r\n\t */\r\n\tupdateDataset: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getDatasetMeta(index);\r\n\t\tvar args = {\r\n\t\t\tmeta: meta,\r\n\t\t\tindex: index\r\n\t\t};\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeDatasetUpdate', [args]) === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tmeta.controller._update();\r\n\r\n\t\tcore_plugins.notify(me, 'afterDatasetUpdate', [args]);\r\n\t},\r\n\r\n\trender: function(config) {\r\n\t\tvar me = this;\r\n\r\n\t\tif (!config || typeof config !== 'object') {\r\n\t\t\t// backwards compatibility\r\n\t\t\tconfig = {\r\n\t\t\t\tduration: config,\r\n\t\t\t\tlazy: arguments[1]\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tvar animationOptions = me.options.animation;\r\n\t\tvar duration = valueOrDefault$9(config.duration, animationOptions && animationOptions.duration);\r\n\t\tvar lazy = config.lazy;\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeRender') === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar onComplete = function(animation) {\r\n\t\t\tcore_plugins.notify(me, 'afterRender');\r\n\t\t\thelpers$1.callback(animationOptions && animationOptions.onComplete, [animation], me);\r\n\t\t};\r\n\r\n\t\tif (animationOptions && duration) {\r\n\t\t\tvar animation = new core_animation({\r\n\t\t\t\tnumSteps: duration / 16.66, // 60 fps\r\n\t\t\t\teasing: config.easing || animationOptions.easing,\r\n\r\n\t\t\t\trender: function(chart, animationObject) {\r\n\t\t\t\t\tvar easingFunction = helpers$1.easing.effects[animationObject.easing];\r\n\t\t\t\t\tvar currentStep = animationObject.currentStep;\r\n\t\t\t\t\tvar stepDecimal = currentStep / animationObject.numSteps;\r\n\r\n\t\t\t\t\tchart.draw(easingFunction(stepDecimal), stepDecimal, currentStep);\r\n\t\t\t\t},\r\n\r\n\t\t\t\tonAnimationProgress: animationOptions.onProgress,\r\n\t\t\t\tonAnimationComplete: onComplete\r\n\t\t\t});\r\n\r\n\t\t\tcore_animations.addAnimation(me, animation, duration, lazy);\r\n\t\t} else {\r\n\t\t\tme.draw();\r\n\r\n\t\t\t// See https://github.com/chartjs/Chart.js/issues/3781\r\n\t\t\tonComplete(new core_animation({numSteps: 0, chart: me}));\r\n\t\t}\r\n\r\n\t\treturn me;\r\n\t},\r\n\r\n\tdraw: function(easingValue) {\r\n\t\tvar me = this;\r\n\t\tvar i, layers;\r\n\r\n\t\tme.clear();\r\n\r\n\t\tif (helpers$1.isNullOrUndef(easingValue)) {\r\n\t\t\teasingValue = 1;\r\n\t\t}\r\n\r\n\t\tme.transition(easingValue);\r\n\r\n\t\tif (me.width <= 0 || me.height <= 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeDraw', [easingValue]) === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Because of plugin hooks (before/afterDatasetsDraw), datasets can't\r\n\t\t// currently be part of layers. Instead, we draw\r\n\t\t// layers <= 0 before(default, backward compat), and the rest after\r\n\t\tlayers = me._layers;\r\n\t\tfor (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\r\n\t\t\tlayers[i].draw(me.chartArea);\r\n\t\t}\r\n\r\n\t\tme.drawDatasets(easingValue);\r\n\r\n\t\t// Rest of layers\r\n\t\tfor (; i < layers.length; ++i) {\r\n\t\t\tlayers[i].draw(me.chartArea);\r\n\t\t}\r\n\r\n\t\tme._drawTooltip(easingValue);\r\n\r\n\t\tcore_plugins.notify(me, 'afterDraw', [easingValue]);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\ttransition: function(easingValue) {\r\n\t\tvar me = this;\r\n\r\n\t\tfor (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\tif (me.isDatasetVisible(i)) {\r\n\t\t\t\tme.getDatasetMeta(i).controller.transition(easingValue);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme.tooltip.transition(easingValue);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getSortedDatasetMetas: function(filterVisible) {\r\n\t\tvar me = this;\r\n\t\tvar datasets = me.data.datasets || [];\r\n\t\tvar result = [];\r\n\t\tvar i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = datasets.length; i < ilen; ++i) {\r\n\t\t\tif (!filterVisible || me.isDatasetVisible(i)) {\r\n\t\t\t\tresult.push(me.getDatasetMeta(i));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tresult.sort(compare2Level('order', 'index'));\r\n\r\n\t\treturn result;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getSortedVisibleDatasetMetas: function() {\r\n\t\treturn this._getSortedDatasetMetas(true);\r\n\t},\r\n\r\n\t/**\r\n\t * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw`\r\n\t * hook, in which case, plugins will not be called on `afterDatasetsDraw`.\r\n\t * @private\r\n\t */\r\n\tdrawDatasets: function(easingValue) {\r\n\t\tvar me = this;\r\n\t\tvar metasets, i;\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeDatasetsDraw', [easingValue]) === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tmetasets = me._getSortedVisibleDatasetMetas();\r\n\t\tfor (i = metasets.length - 1; i >= 0; --i) {\r\n\t\t\tme.drawDataset(metasets[i], easingValue);\r\n\t\t}\r\n\r\n\t\tcore_plugins.notify(me, 'afterDatasetsDraw', [easingValue]);\r\n\t},\r\n\r\n\t/**\r\n\t * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw`\r\n\t * hook, in which case, plugins will not be called on `afterDatasetDraw`.\r\n\t * @private\r\n\t */\r\n\tdrawDataset: function(meta, easingValue) {\r\n\t\tvar me = this;\r\n\t\tvar args = {\r\n\t\t\tmeta: meta,\r\n\t\t\tindex: meta.index,\r\n\t\t\teasingValue: easingValue\r\n\t\t};\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeDatasetDraw', [args]) === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tmeta.controller.draw(easingValue);\r\n\r\n\t\tcore_plugins.notify(me, 'afterDatasetDraw', [args]);\r\n\t},\r\n\r\n\t/**\r\n\t * Draws tooltip unless a plugin returns `false` to the `beforeTooltipDraw`\r\n\t * hook, in which case, plugins will not be called on `afterTooltipDraw`.\r\n\t * @private\r\n\t */\r\n\t_drawTooltip: function(easingValue) {\r\n\t\tvar me = this;\r\n\t\tvar tooltip = me.tooltip;\r\n\t\tvar args = {\r\n\t\t\ttooltip: tooltip,\r\n\t\t\teasingValue: easingValue\r\n\t\t};\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeTooltipDraw', [args]) === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\ttooltip.draw();\r\n\r\n\t\tcore_plugins.notify(me, 'afterTooltipDraw', [args]);\r\n\t},\r\n\r\n\t/**\r\n\t * Get the single element that was clicked on\r\n\t * @return An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw\r\n\t */\r\n\tgetElementAtEvent: function(e) {\r\n\t\treturn core_interaction.modes.single(this, e);\r\n\t},\r\n\r\n\tgetElementsAtEvent: function(e) {\r\n\t\treturn core_interaction.modes.label(this, e, {intersect: true});\r\n\t},\r\n\r\n\tgetElementsAtXAxis: function(e) {\r\n\t\treturn core_interaction.modes['x-axis'](this, e, {intersect: true});\r\n\t},\r\n\r\n\tgetElementsAtEventForMode: function(e, mode, options) {\r\n\t\tvar method = core_interaction.modes[mode];\r\n\t\tif (typeof method === 'function') {\r\n\t\t\treturn method(this, e, options);\r\n\t\t}\r\n\r\n\t\treturn [];\r\n\t},\r\n\r\n\tgetDatasetAtEvent: function(e) {\r\n\t\treturn core_interaction.modes.dataset(this, e, {intersect: true});\r\n\t},\r\n\r\n\tgetDatasetMeta: function(datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tvar dataset = me.data.datasets[datasetIndex];\r\n\t\tif (!dataset._meta) {\r\n\t\t\tdataset._meta = {};\r\n\t\t}\r\n\r\n\t\tvar meta = dataset._meta[me.id];\r\n\t\tif (!meta) {\r\n\t\t\tmeta = dataset._meta[me.id] = {\r\n\t\t\t\ttype: null,\r\n\t\t\t\tdata: [],\r\n\t\t\t\tdataset: null,\r\n\t\t\t\tcontroller: null,\r\n\t\t\t\thidden: null,\t\t\t// See isDatasetVisible() comment\r\n\t\t\t\txAxisID: null,\r\n\t\t\t\tyAxisID: null,\r\n\t\t\t\torder: dataset.order || 0,\r\n\t\t\t\tindex: datasetIndex\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn meta;\r\n\t},\r\n\r\n\tgetVisibleDatasetCount: function() {\r\n\t\tvar count = 0;\r\n\t\tfor (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\r\n\t\t\tif (this.isDatasetVisible(i)) {\r\n\t\t\t\tcount++;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn count;\r\n\t},\r\n\r\n\tisDatasetVisible: function(datasetIndex) {\r\n\t\tvar meta = this.getDatasetMeta(datasetIndex);\r\n\r\n\t\t// meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,\r\n\t\t// the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.\r\n\t\treturn typeof meta.hidden === 'boolean' ? !meta.hidden : !this.data.datasets[datasetIndex].hidden;\r\n\t},\r\n\r\n\tgenerateLegend: function() {\r\n\t\treturn this.options.legendCallback(this);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tdestroyDatasetMeta: function(datasetIndex) {\r\n\t\tvar id = this.id;\r\n\t\tvar dataset = this.data.datasets[datasetIndex];\r\n\t\tvar meta = dataset._meta && dataset._meta[id];\r\n\r\n\t\tif (meta) {\r\n\t\t\tmeta.controller.destroy();\r\n\t\t\tdelete dataset._meta[id];\r\n\t\t}\r\n\t},\r\n\r\n\tdestroy: function() {\r\n\t\tvar me = this;\r\n\t\tvar canvas = me.canvas;\r\n\t\tvar i, ilen;\r\n\r\n\t\tme.stop();\r\n\r\n\t\t// dataset controllers need to cleanup associated data\r\n\t\tfor (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\r\n\t\t\tme.destroyDatasetMeta(i);\r\n\t\t}\r\n\r\n\t\tif (canvas) {\r\n\t\t\tme.unbindEvents();\r\n\t\t\thelpers$1.canvas.clear(me);\r\n\t\t\tplatform.releaseContext(me.ctx);\r\n\t\t\tme.canvas = null;\r\n\t\t\tme.ctx = null;\r\n\t\t}\r\n\r\n\t\tcore_plugins.notify(me, 'destroy');\r\n\r\n\t\tdelete Chart.instances[me.id];\r\n\t},\r\n\r\n\ttoBase64Image: function() {\r\n\t\treturn this.canvas.toDataURL.apply(this.canvas, arguments);\r\n\t},\r\n\r\n\tinitToolTip: function() {\r\n\t\tvar me = this;\r\n\t\tme.tooltip = new core_tooltip({\r\n\t\t\t_chart: me,\r\n\t\t\t_chartInstance: me, // deprecated, backward compatibility\r\n\t\t\t_data: me.data,\r\n\t\t\t_options: me.options.tooltips\r\n\t\t}, me);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tbindEvents: function() {\r\n\t\tvar me = this;\r\n\t\tvar listeners = me._listeners = {};\r\n\t\tvar listener = function() {\r\n\t\t\tme.eventHandler.apply(me, arguments);\r\n\t\t};\r\n\r\n\t\thelpers$1.each(me.options.events, function(type) {\r\n\t\t\tplatform.addEventListener(me, type, listener);\r\n\t\t\tlisteners[type] = listener;\r\n\t\t});\r\n\r\n\t\t// Elements used to detect size change should not be injected for non responsive charts.\r\n\t\t// See https://github.com/chartjs/Chart.js/issues/2210\r\n\t\tif (me.options.responsive) {\r\n\t\t\tlistener = function() {\r\n\t\t\t\tme.resize();\r\n\t\t\t};\r\n\r\n\t\t\tplatform.addEventListener(me, 'resize', listener);\r\n\t\t\tlisteners.resize = listener;\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tunbindEvents: function() {\r\n\t\tvar me = this;\r\n\t\tvar listeners = me._listeners;\r\n\t\tif (!listeners) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tdelete me._listeners;\r\n\t\thelpers$1.each(listeners, function(listener, type) {\r\n\t\t\tplatform.removeEventListener(me, type, listener);\r\n\t\t});\r\n\t},\r\n\r\n\tupdateHoverStyle: function(elements, mode, enabled) {\r\n\t\tvar prefix = enabled ? 'set' : 'remove';\r\n\t\tvar element, i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = elements.length; i < ilen; ++i) {\r\n\t\t\telement = elements[i];\r\n\t\t\tif (element) {\r\n\t\t\t\tthis.getDatasetMeta(element._datasetIndex).controller[prefix + 'HoverStyle'](element);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (mode === 'dataset') {\r\n\t\t\tthis.getDatasetMeta(elements[0]._datasetIndex).controller['_' + prefix + 'DatasetHoverStyle']();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\teventHandler: function(e) {\r\n\t\tvar me = this;\r\n\t\tvar tooltip = me.tooltip;\r\n\r\n\t\tif (core_plugins.notify(me, 'beforeEvent', [e]) === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Buffer any update calls so that renders do not occur\r\n\t\tme._bufferedRender = true;\r\n\t\tme._bufferedRequest = null;\r\n\r\n\t\tvar changed = me.handleEvent(e);\r\n\t\t// for smooth tooltip animations issue #4989\r\n\t\t// the tooltip should be the source of change\r\n\t\t// Animation check workaround:\r\n\t\t// tooltip._start will be null when tooltip isn't animating\r\n\t\tif (tooltip) {\r\n\t\t\tchanged = tooltip._start\r\n\t\t\t\t? tooltip.handleEvent(e)\r\n\t\t\t\t: changed | tooltip.handleEvent(e);\r\n\t\t}\r\n\r\n\t\tcore_plugins.notify(me, 'afterEvent', [e]);\r\n\r\n\t\tvar bufferedRequest = me._bufferedRequest;\r\n\t\tif (bufferedRequest) {\r\n\t\t\t// If we have an update that was triggered, we need to do a normal render\r\n\t\t\tme.render(bufferedRequest);\r\n\t\t} else if (changed && !me.animating) {\r\n\t\t\t// If entering, leaving, or changing elements, animate the change via pivot\r\n\t\t\tme.stop();\r\n\r\n\t\t\t// We only need to render at this point. Updating will cause scales to be\r\n\t\t\t// recomputed generating flicker & using more memory than necessary.\r\n\t\t\tme.render({\r\n\t\t\t\tduration: me.options.hover.animationDuration,\r\n\t\t\t\tlazy: true\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tme._bufferedRender = false;\r\n\t\tme._bufferedRequest = null;\r\n\r\n\t\treturn me;\r\n\t},\r\n\r\n\t/**\r\n\t * Handle an event\r\n\t * @private\r\n\t * @param {IEvent} event the event to handle\r\n\t * @return {boolean} true if the chart needs to re-render\r\n\t */\r\n\thandleEvent: function(e) {\r\n\t\tvar me = this;\r\n\t\tvar options = me.options || {};\r\n\t\tvar hoverOptions = options.hover;\r\n\t\tvar changed = false;\r\n\r\n\t\tme.lastActive = me.lastActive || [];\r\n\r\n\t\t// Find Active Elements for hover and tooltips\r\n\t\tif (e.type === 'mouseout') {\r\n\t\t\tme.active = [];\r\n\t\t} else {\r\n\t\t\tme.active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions);\r\n\t\t}\r\n\r\n\t\t// Invoke onHover hook\r\n\t\t// Need to call with native event here to not break backwards compatibility\r\n\t\thelpers$1.callback(options.onHover || options.hover.onHover, [e.native, me.active], me);\r\n\r\n\t\tif (e.type === 'mouseup' || e.type === 'click') {\r\n\t\t\tif (options.onClick) {\r\n\t\t\t\t// Use e.native here for backwards compatibility\r\n\t\t\t\toptions.onClick.call(me, e.native, me.active);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Remove styling for last active (even if it may still be active)\r\n\t\tif (me.lastActive.length) {\r\n\t\t\tme.updateHoverStyle(me.lastActive, hoverOptions.mode, false);\r\n\t\t}\r\n\r\n\t\t// Built in hover styling\r\n\t\tif (me.active.length && hoverOptions.mode) {\r\n\t\t\tme.updateHoverStyle(me.active, hoverOptions.mode, true);\r\n\t\t}\r\n\r\n\t\tchanged = !helpers$1.arrayEquals(me.active, me.lastActive);\r\n\r\n\t\t// Remember Last Actives\r\n\t\tme.lastActive = me.active;\r\n\r\n\t\treturn changed;\r\n\t}\r\n});\r\n\r\n/**\r\n * NOTE(SB) We actually don't use this container anymore but we need to keep it\r\n * for backward compatibility. Though, it can still be useful for plugins that\r\n * would need to work on multiple charts?!\r\n */\r\nChart.instances = {};\r\n\r\nvar core_controller = Chart;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart instead.\r\n * @class Chart.Controller\r\n * @deprecated since version 2.6\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nChart.Controller = Chart;\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore.\r\n * @namespace Chart\r\n * @deprecated since version 2.8\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nChart.types = {};\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore.\r\n * @namespace Chart.helpers.configMerge\r\n * @deprecated since version 2.8.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers$1.configMerge = mergeConfig;\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore.\r\n * @namespace Chart.helpers.scaleMerge\r\n * @deprecated since version 2.8.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers$1.scaleMerge = mergeScaleConfig;\n\nvar core_helpers = function() {\r\n\r\n\t// -- Basic js utility methods\r\n\r\n\thelpers$1.where = function(collection, filterCallback) {\r\n\t\tif (helpers$1.isArray(collection) && Array.prototype.filter) {\r\n\t\t\treturn collection.filter(filterCallback);\r\n\t\t}\r\n\t\tvar filtered = [];\r\n\r\n\t\thelpers$1.each(collection, function(item) {\r\n\t\t\tif (filterCallback(item)) {\r\n\t\t\t\tfiltered.push(item);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn filtered;\r\n\t};\r\n\thelpers$1.findIndex = Array.prototype.findIndex ?\r\n\t\tfunction(array, callback, scope) {\r\n\t\t\treturn array.findIndex(callback, scope);\r\n\t\t} :\r\n\t\tfunction(array, callback, scope) {\r\n\t\t\tscope = scope === undefined ? array : scope;\r\n\t\t\tfor (var i = 0, ilen = array.length; i < ilen; ++i) {\r\n\t\t\t\tif (callback.call(scope, array[i], i, array)) {\r\n\t\t\t\t\treturn i;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn -1;\r\n\t\t};\r\n\thelpers$1.findNextWhere = function(arrayToSearch, filterCallback, startIndex) {\r\n\t\t// Default to start of the array\r\n\t\tif (helpers$1.isNullOrUndef(startIndex)) {\r\n\t\t\tstartIndex = -1;\r\n\t\t}\r\n\t\tfor (var i = startIndex + 1; i < arrayToSearch.length; i++) {\r\n\t\t\tvar currentItem = arrayToSearch[i];\r\n\t\t\tif (filterCallback(currentItem)) {\r\n\t\t\t\treturn currentItem;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\thelpers$1.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex) {\r\n\t\t// Default to end of the array\r\n\t\tif (helpers$1.isNullOrUndef(startIndex)) {\r\n\t\t\tstartIndex = arrayToSearch.length;\r\n\t\t}\r\n\t\tfor (var i = startIndex - 1; i >= 0; i--) {\r\n\t\t\tvar currentItem = arrayToSearch[i];\r\n\t\t\tif (filterCallback(currentItem)) {\r\n\t\t\t\treturn currentItem;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// -- Math methods\r\n\thelpers$1.isNumber = function(n) {\r\n\t\treturn !isNaN(parseFloat(n)) && isFinite(n);\r\n\t};\r\n\thelpers$1.almostEquals = function(x, y, epsilon) {\r\n\t\treturn Math.abs(x - y) < epsilon;\r\n\t};\r\n\thelpers$1.almostWhole = function(x, epsilon) {\r\n\t\tvar rounded = Math.round(x);\r\n\t\treturn ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\r\n\t};\r\n\thelpers$1.max = function(array) {\r\n\t\treturn array.reduce(function(max, value) {\r\n\t\t\tif (!isNaN(value)) {\r\n\t\t\t\treturn Math.max(max, value);\r\n\t\t\t}\r\n\t\t\treturn max;\r\n\t\t}, Number.NEGATIVE_INFINITY);\r\n\t};\r\n\thelpers$1.min = function(array) {\r\n\t\treturn array.reduce(function(min, value) {\r\n\t\t\tif (!isNaN(value)) {\r\n\t\t\t\treturn Math.min(min, value);\r\n\t\t\t}\r\n\t\t\treturn min;\r\n\t\t}, Number.POSITIVE_INFINITY);\r\n\t};\r\n\thelpers$1.sign = Math.sign ?\r\n\t\tfunction(x) {\r\n\t\t\treturn Math.sign(x);\r\n\t\t} :\r\n\t\tfunction(x) {\r\n\t\t\tx = +x; // convert to a number\r\n\t\t\tif (x === 0 || isNaN(x)) {\r\n\t\t\t\treturn x;\r\n\t\t\t}\r\n\t\t\treturn x > 0 ? 1 : -1;\r\n\t\t};\r\n\thelpers$1.toRadians = function(degrees) {\r\n\t\treturn degrees * (Math.PI / 180);\r\n\t};\r\n\thelpers$1.toDegrees = function(radians) {\r\n\t\treturn radians * (180 / Math.PI);\r\n\t};\r\n\r\n\t/**\r\n\t * Returns the number of decimal places\r\n\t * i.e. the number of digits after the decimal point, of the value of this Number.\r\n\t * @param {number} x - A number.\r\n\t * @returns {number} The number of decimal places.\r\n\t * @private\r\n\t */\r\n\thelpers$1._decimalPlaces = function(x) {\r\n\t\tif (!helpers$1.isFinite(x)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar e = 1;\r\n\t\tvar p = 0;\r\n\t\twhile (Math.round(x * e) / e !== x) {\r\n\t\t\te *= 10;\r\n\t\t\tp++;\r\n\t\t}\r\n\t\treturn p;\r\n\t};\r\n\r\n\t// Gets the angle from vertical upright to the point about a centre.\r\n\thelpers$1.getAngleFromPoint = function(centrePoint, anglePoint) {\r\n\t\tvar distanceFromXCenter = anglePoint.x - centrePoint.x;\r\n\t\tvar distanceFromYCenter = anglePoint.y - centrePoint.y;\r\n\t\tvar radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\r\n\r\n\t\tvar angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\r\n\r\n\t\tif (angle < (-0.5 * Math.PI)) {\r\n\t\t\tangle += 2.0 * Math.PI; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tangle: angle,\r\n\t\t\tdistance: radialDistanceFromCenter\r\n\t\t};\r\n\t};\r\n\thelpers$1.distanceBetweenPoints = function(pt1, pt2) {\r\n\t\treturn Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\r\n\t};\r\n\r\n\t/**\r\n\t * Provided for backward compatibility, not available anymore\r\n\t * @function Chart.helpers.aliasPixel\r\n\t * @deprecated since version 2.8.0\r\n\t * @todo remove at version 3\r\n\t */\r\n\thelpers$1.aliasPixel = function(pixelWidth) {\r\n\t\treturn (pixelWidth % 2 === 0) ? 0 : 0.5;\r\n\t};\r\n\r\n\t/**\r\n\t * Returns the aligned pixel value to avoid anti-aliasing blur\r\n\t * @param {Chart} chart - The chart instance.\r\n\t * @param {number} pixel - A pixel value.\r\n\t * @param {number} width - The width of the element.\r\n\t * @returns {number} The aligned pixel value.\r\n\t * @private\r\n\t */\r\n\thelpers$1._alignPixel = function(chart, pixel, width) {\r\n\t\tvar devicePixelRatio = chart.currentDevicePixelRatio;\r\n\t\tvar halfWidth = width / 2;\r\n\t\treturn Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\r\n\t};\r\n\r\n\thelpers$1.splineCurve = function(firstPoint, middlePoint, afterPoint, t) {\r\n\t\t// Props to Rob Spencer at scaled innovation for his post on splining between points\r\n\t\t// http://scaledinnovation.com/analytics/splines/aboutSplines.html\r\n\r\n\t\t// This function must also respect \"skipped\" points\r\n\r\n\t\tvar previous = firstPoint.skip ? middlePoint : firstPoint;\r\n\t\tvar current = middlePoint;\r\n\t\tvar next = afterPoint.skip ? middlePoint : afterPoint;\r\n\r\n\t\tvar d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2));\r\n\t\tvar d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2));\r\n\r\n\t\tvar s01 = d01 / (d01 + d12);\r\n\t\tvar s12 = d12 / (d01 + d12);\r\n\r\n\t\t// If all points are the same, s01 & s02 will be inf\r\n\t\ts01 = isNaN(s01) ? 0 : s01;\r\n\t\ts12 = isNaN(s12) ? 0 : s12;\r\n\r\n\t\tvar fa = t * s01; // scaling factor for triangle Ta\r\n\t\tvar fb = t * s12;\r\n\r\n\t\treturn {\r\n\t\t\tprevious: {\r\n\t\t\t\tx: current.x - fa * (next.x - previous.x),\r\n\t\t\t\ty: current.y - fa * (next.y - previous.y)\r\n\t\t\t},\r\n\t\t\tnext: {\r\n\t\t\t\tx: current.x + fb * (next.x - previous.x),\r\n\t\t\t\ty: current.y + fb * (next.y - previous.y)\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n\thelpers$1.EPSILON = Number.EPSILON || 1e-14;\r\n\thelpers$1.splineCurveMonotone = function(points) {\r\n\t\t// This function calculates Bézier control points in a similar way than |splineCurve|,\r\n\t\t// but preserves monotonicity of the provided data and ensures no local extremums are added\r\n\t\t// between the dataset discrete points due to the interpolation.\r\n\t\t// See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\r\n\r\n\t\tvar pointsWithTangents = (points || []).map(function(point) {\r\n\t\t\treturn {\r\n\t\t\t\tmodel: point._model,\r\n\t\t\t\tdeltaK: 0,\r\n\t\t\t\tmK: 0\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\t// Calculate slopes (deltaK) and initialize tangents (mK)\r\n\t\tvar pointsLen = pointsWithTangents.length;\r\n\t\tvar i, pointBefore, pointCurrent, pointAfter;\r\n\t\tfor (i = 0; i < pointsLen; ++i) {\r\n\t\t\tpointCurrent = pointsWithTangents[i];\r\n\t\t\tif (pointCurrent.model.skip) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\r\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\r\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\r\n\t\t\t\tvar slopeDeltaX = (pointAfter.model.x - pointCurrent.model.x);\r\n\r\n\t\t\t\t// In the case of two points that appear at the same x pixel, slopeDeltaX is 0\r\n\t\t\t\tpointCurrent.deltaK = slopeDeltaX !== 0 ? (pointAfter.model.y - pointCurrent.model.y) / slopeDeltaX : 0;\r\n\t\t\t}\r\n\r\n\t\t\tif (!pointBefore || pointBefore.model.skip) {\r\n\t\t\t\tpointCurrent.mK = pointCurrent.deltaK;\r\n\t\t\t} else if (!pointAfter || pointAfter.model.skip) {\r\n\t\t\t\tpointCurrent.mK = pointBefore.deltaK;\r\n\t\t\t} else if (this.sign(pointBefore.deltaK) !== this.sign(pointCurrent.deltaK)) {\r\n\t\t\t\tpointCurrent.mK = 0;\r\n\t\t\t} else {\r\n\t\t\t\tpointCurrent.mK = (pointBefore.deltaK + pointCurrent.deltaK) / 2;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Adjust tangents to ensure monotonic properties\r\n\t\tvar alphaK, betaK, tauK, squaredMagnitude;\r\n\t\tfor (i = 0; i < pointsLen - 1; ++i) {\r\n\t\t\tpointCurrent = pointsWithTangents[i];\r\n\t\t\tpointAfter = pointsWithTangents[i + 1];\r\n\t\t\tif (pointCurrent.model.skip || pointAfter.model.skip) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (helpers$1.almostEquals(pointCurrent.deltaK, 0, this.EPSILON)) {\r\n\t\t\t\tpointCurrent.mK = pointAfter.mK = 0;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\talphaK = pointCurrent.mK / pointCurrent.deltaK;\r\n\t\t\tbetaK = pointAfter.mK / pointCurrent.deltaK;\r\n\t\t\tsquaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\r\n\t\t\tif (squaredMagnitude <= 9) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\ttauK = 3 / Math.sqrt(squaredMagnitude);\r\n\t\t\tpointCurrent.mK = alphaK * tauK * pointCurrent.deltaK;\r\n\t\t\tpointAfter.mK = betaK * tauK * pointCurrent.deltaK;\r\n\t\t}\r\n\r\n\t\t// Compute control points\r\n\t\tvar deltaX;\r\n\t\tfor (i = 0; i < pointsLen; ++i) {\r\n\t\t\tpointCurrent = pointsWithTangents[i];\r\n\t\t\tif (pointCurrent.model.skip) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\r\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\r\n\t\t\tif (pointBefore && !pointBefore.model.skip) {\r\n\t\t\t\tdeltaX = (pointCurrent.model.x - pointBefore.model.x) / 3;\r\n\t\t\t\tpointCurrent.model.controlPointPreviousX = pointCurrent.model.x - deltaX;\r\n\t\t\t\tpointCurrent.model.controlPointPreviousY = pointCurrent.model.y - deltaX * pointCurrent.mK;\r\n\t\t\t}\r\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\r\n\t\t\t\tdeltaX = (pointAfter.model.x - pointCurrent.model.x) / 3;\r\n\t\t\t\tpointCurrent.model.controlPointNextX = pointCurrent.model.x + deltaX;\r\n\t\t\t\tpointCurrent.model.controlPointNextY = pointCurrent.model.y + deltaX * pointCurrent.mK;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\thelpers$1.nextItem = function(collection, index, loop) {\r\n\t\tif (loop) {\r\n\t\t\treturn index >= collection.length - 1 ? collection[0] : collection[index + 1];\r\n\t\t}\r\n\t\treturn index >= collection.length - 1 ? collection[collection.length - 1] : collection[index + 1];\r\n\t};\r\n\thelpers$1.previousItem = function(collection, index, loop) {\r\n\t\tif (loop) {\r\n\t\t\treturn index <= 0 ? collection[collection.length - 1] : collection[index - 1];\r\n\t\t}\r\n\t\treturn index <= 0 ? collection[0] : collection[index - 1];\r\n\t};\r\n\t// Implementation of the nice number algorithm used in determining where axis labels will go\r\n\thelpers$1.niceNum = function(range, round) {\r\n\t\tvar exponent = Math.floor(helpers$1.log10(range));\r\n\t\tvar fraction = range / Math.pow(10, exponent);\r\n\t\tvar niceFraction;\r\n\r\n\t\tif (round) {\r\n\t\t\tif (fraction < 1.5) {\r\n\t\t\t\tniceFraction = 1;\r\n\t\t\t} else if (fraction < 3) {\r\n\t\t\t\tniceFraction = 2;\r\n\t\t\t} else if (fraction < 7) {\r\n\t\t\t\tniceFraction = 5;\r\n\t\t\t} else {\r\n\t\t\t\tniceFraction = 10;\r\n\t\t\t}\r\n\t\t} else if (fraction <= 1.0) {\r\n\t\t\tniceFraction = 1;\r\n\t\t} else if (fraction <= 2) {\r\n\t\t\tniceFraction = 2;\r\n\t\t} else if (fraction <= 5) {\r\n\t\t\tniceFraction = 5;\r\n\t\t} else {\r\n\t\t\tniceFraction = 10;\r\n\t\t}\r\n\r\n\t\treturn niceFraction * Math.pow(10, exponent);\r\n\t};\r\n\t// Request animation polyfill - https://www.paulirish.com/2011/requestanimationframe-for-smart-animating/\r\n\thelpers$1.requestAnimFrame = (function() {\r\n\t\tif (typeof window === 'undefined') {\r\n\t\t\treturn function(callback) {\r\n\t\t\t\tcallback();\r\n\t\t\t};\r\n\t\t}\r\n\t\treturn window.requestAnimationFrame ||\r\n\t\t\twindow.webkitRequestAnimationFrame ||\r\n\t\t\twindow.mozRequestAnimationFrame ||\r\n\t\t\twindow.oRequestAnimationFrame ||\r\n\t\t\twindow.msRequestAnimationFrame ||\r\n\t\t\tfunction(callback) {\r\n\t\t\t\treturn window.setTimeout(callback, 1000 / 60);\r\n\t\t\t};\r\n\t}());\r\n\t// -- DOM methods\r\n\thelpers$1.getRelativePosition = function(evt, chart) {\r\n\t\tvar mouseX, mouseY;\r\n\t\tvar e = evt.originalEvent || evt;\r\n\t\tvar canvas = evt.target || evt.srcElement;\r\n\t\tvar boundingRect = canvas.getBoundingClientRect();\r\n\r\n\t\tvar touches = e.touches;\r\n\t\tif (touches && touches.length > 0) {\r\n\t\t\tmouseX = touches[0].clientX;\r\n\t\t\tmouseY = touches[0].clientY;\r\n\r\n\t\t} else {\r\n\t\t\tmouseX = e.clientX;\r\n\t\t\tmouseY = e.clientY;\r\n\t\t}\r\n\r\n\t\t// Scale mouse coordinates into canvas coordinates\r\n\t\t// by following the pattern laid out by 'jerryj' in the comments of\r\n\t\t// https://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/\r\n\t\tvar paddingLeft = parseFloat(helpers$1.getStyle(canvas, 'padding-left'));\r\n\t\tvar paddingTop = parseFloat(helpers$1.getStyle(canvas, 'padding-top'));\r\n\t\tvar paddingRight = parseFloat(helpers$1.getStyle(canvas, 'padding-right'));\r\n\t\tvar paddingBottom = parseFloat(helpers$1.getStyle(canvas, 'padding-bottom'));\r\n\t\tvar width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight;\r\n\t\tvar height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom;\r\n\r\n\t\t// We divide by the current device pixel ratio, because the canvas is scaled up by that amount in each direction. However\r\n\t\t// the backend model is in unscaled coordinates. Since we are going to deal with our model coordinates, we go back here\r\n\t\tmouseX = Math.round((mouseX - boundingRect.left - paddingLeft) / (width) * canvas.width / chart.currentDevicePixelRatio);\r\n\t\tmouseY = Math.round((mouseY - boundingRect.top - paddingTop) / (height) * canvas.height / chart.currentDevicePixelRatio);\r\n\r\n\t\treturn {\r\n\t\t\tx: mouseX,\r\n\t\t\ty: mouseY\r\n\t\t};\r\n\r\n\t};\r\n\r\n\t// Private helper function to convert max-width/max-height values that may be percentages into a number\r\n\tfunction parseMaxStyle(styleValue, node, parentProperty) {\r\n\t\tvar valueInPixels;\r\n\t\tif (typeof styleValue === 'string') {\r\n\t\t\tvalueInPixels = parseInt(styleValue, 10);\r\n\r\n\t\t\tif (styleValue.indexOf('%') !== -1) {\r\n\t\t\t\t// percentage * size in dimension\r\n\t\t\t\tvalueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvalueInPixels = styleValue;\r\n\t\t}\r\n\r\n\t\treturn valueInPixels;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns if the given value contains an effective constraint.\r\n\t * @private\r\n\t */\r\n\tfunction isConstrainedValue(value) {\r\n\t\treturn value !== undefined && value !== null && value !== 'none';\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the max width or height of the given DOM node in a cross-browser compatible fashion\r\n\t * @param {HTMLElement} domNode - the node to check the constraint on\r\n\t * @param {string} maxStyle - the style that defines the maximum for the direction we are using ('max-width' / 'max-height')\r\n\t * @param {string} percentageProperty - property of parent to use when calculating width as a percentage\r\n\t * @see {@link https://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser}\r\n\t */\r\n\tfunction getConstraintDimension(domNode, maxStyle, percentageProperty) {\r\n\t\tvar view = document.defaultView;\r\n\t\tvar parentNode = helpers$1._getParentNode(domNode);\r\n\t\tvar constrainedNode = view.getComputedStyle(domNode)[maxStyle];\r\n\t\tvar constrainedContainer = view.getComputedStyle(parentNode)[maxStyle];\r\n\t\tvar hasCNode = isConstrainedValue(constrainedNode);\r\n\t\tvar hasCContainer = isConstrainedValue(constrainedContainer);\r\n\t\tvar infinity = Number.POSITIVE_INFINITY;\r\n\r\n\t\tif (hasCNode || hasCContainer) {\r\n\t\t\treturn Math.min(\r\n\t\t\t\thasCNode ? parseMaxStyle(constrainedNode, domNode, percentageProperty) : infinity,\r\n\t\t\t\thasCContainer ? parseMaxStyle(constrainedContainer, parentNode, percentageProperty) : infinity);\r\n\t\t}\r\n\r\n\t\treturn 'none';\r\n\t}\r\n\t// returns Number or undefined if no constraint\r\n\thelpers$1.getConstraintWidth = function(domNode) {\r\n\t\treturn getConstraintDimension(domNode, 'max-width', 'clientWidth');\r\n\t};\r\n\t// returns Number or undefined if no constraint\r\n\thelpers$1.getConstraintHeight = function(domNode) {\r\n\t\treturn getConstraintDimension(domNode, 'max-height', 'clientHeight');\r\n\t};\r\n\t/**\r\n\t * @private\r\n \t */\r\n\thelpers$1._calculatePadding = function(container, padding, parentDimension) {\r\n\t\tpadding = helpers$1.getStyle(container, padding);\r\n\r\n\t\treturn padding.indexOf('%') > -1 ? parentDimension * parseInt(padding, 10) / 100 : parseInt(padding, 10);\r\n\t};\r\n\t/**\r\n\t * @private\r\n\t */\r\n\thelpers$1._getParentNode = function(domNode) {\r\n\t\tvar parent = domNode.parentNode;\r\n\t\tif (parent && parent.toString() === '[object ShadowRoot]') {\r\n\t\t\tparent = parent.host;\r\n\t\t}\r\n\t\treturn parent;\r\n\t};\r\n\thelpers$1.getMaximumWidth = function(domNode) {\r\n\t\tvar container = helpers$1._getParentNode(domNode);\r\n\t\tif (!container) {\r\n\t\t\treturn domNode.clientWidth;\r\n\t\t}\r\n\r\n\t\tvar clientWidth = container.clientWidth;\r\n\t\tvar paddingLeft = helpers$1._calculatePadding(container, 'padding-left', clientWidth);\r\n\t\tvar paddingRight = helpers$1._calculatePadding(container, 'padding-right', clientWidth);\r\n\r\n\t\tvar w = clientWidth - paddingLeft - paddingRight;\r\n\t\tvar cw = helpers$1.getConstraintWidth(domNode);\r\n\t\treturn isNaN(cw) ? w : Math.min(w, cw);\r\n\t};\r\n\thelpers$1.getMaximumHeight = function(domNode) {\r\n\t\tvar container = helpers$1._getParentNode(domNode);\r\n\t\tif (!container) {\r\n\t\t\treturn domNode.clientHeight;\r\n\t\t}\r\n\r\n\t\tvar clientHeight = container.clientHeight;\r\n\t\tvar paddingTop = helpers$1._calculatePadding(container, 'padding-top', clientHeight);\r\n\t\tvar paddingBottom = helpers$1._calculatePadding(container, 'padding-bottom', clientHeight);\r\n\r\n\t\tvar h = clientHeight - paddingTop - paddingBottom;\r\n\t\tvar ch = helpers$1.getConstraintHeight(domNode);\r\n\t\treturn isNaN(ch) ? h : Math.min(h, ch);\r\n\t};\r\n\thelpers$1.getStyle = function(el, property) {\r\n\t\treturn el.currentStyle ?\r\n\t\t\tel.currentStyle[property] :\r\n\t\t\tdocument.defaultView.getComputedStyle(el, null).getPropertyValue(property);\r\n\t};\r\n\thelpers$1.retinaScale = function(chart, forceRatio) {\r\n\t\tvar pixelRatio = chart.currentDevicePixelRatio = forceRatio || (typeof window !== 'undefined' && window.devicePixelRatio) || 1;\r\n\t\tif (pixelRatio === 1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar canvas = chart.canvas;\r\n\t\tvar height = chart.height;\r\n\t\tvar width = chart.width;\r\n\r\n\t\tcanvas.height = height * pixelRatio;\r\n\t\tcanvas.width = width * pixelRatio;\r\n\t\tchart.ctx.scale(pixelRatio, pixelRatio);\r\n\r\n\t\t// If no style has been set on the canvas, the render size is used as display size,\r\n\t\t// making the chart visually bigger, so let's enforce it to the \"correct\" values.\r\n\t\t// See https://github.com/chartjs/Chart.js/issues/3575\r\n\t\tif (!canvas.style.height && !canvas.style.width) {\r\n\t\t\tcanvas.style.height = height + 'px';\r\n\t\t\tcanvas.style.width = width + 'px';\r\n\t\t}\r\n\t};\r\n\t// -- Canvas methods\r\n\thelpers$1.fontString = function(pixelSize, fontStyle, fontFamily) {\r\n\t\treturn fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\r\n\t};\r\n\thelpers$1.longestText = function(ctx, font, arrayOfThings, cache) {\r\n\t\tcache = cache || {};\r\n\t\tvar data = cache.data = cache.data || {};\r\n\t\tvar gc = cache.garbageCollect = cache.garbageCollect || [];\r\n\r\n\t\tif (cache.font !== font) {\r\n\t\t\tdata = cache.data = {};\r\n\t\t\tgc = cache.garbageCollect = [];\r\n\t\t\tcache.font = font;\r\n\t\t}\r\n\r\n\t\tctx.font = font;\r\n\t\tvar longest = 0;\r\n\t\tvar ilen = arrayOfThings.length;\r\n\t\tvar i, j, jlen, thing, nestedThing;\r\n\t\tfor (i = 0; i < ilen; i++) {\r\n\t\t\tthing = arrayOfThings[i];\r\n\r\n\t\t\t// Undefined strings and arrays should not be measured\r\n\t\t\tif (thing !== undefined && thing !== null && helpers$1.isArray(thing) !== true) {\r\n\t\t\t\tlongest = helpers$1.measureText(ctx, data, gc, longest, thing);\r\n\t\t\t} else if (helpers$1.isArray(thing)) {\r\n\t\t\t\t// if it is an array lets measure each element\r\n\t\t\t\t// to do maybe simplify this function a bit so we can do this more recursively?\r\n\t\t\t\tfor (j = 0, jlen = thing.length; j < jlen; j++) {\r\n\t\t\t\t\tnestedThing = thing[j];\r\n\t\t\t\t\t// Undefined strings and arrays should not be measured\r\n\t\t\t\t\tif (nestedThing !== undefined && nestedThing !== null && !helpers$1.isArray(nestedThing)) {\r\n\t\t\t\t\t\tlongest = helpers$1.measureText(ctx, data, gc, longest, nestedThing);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar gcLen = gc.length / 2;\r\n\t\tif (gcLen > arrayOfThings.length) {\r\n\t\t\tfor (i = 0; i < gcLen; i++) {\r\n\t\t\t\tdelete data[gc[i]];\r\n\t\t\t}\r\n\t\t\tgc.splice(0, gcLen);\r\n\t\t}\r\n\t\treturn longest;\r\n\t};\r\n\thelpers$1.measureText = function(ctx, data, gc, longest, string) {\r\n\t\tvar textWidth = data[string];\r\n\t\tif (!textWidth) {\r\n\t\t\ttextWidth = data[string] = ctx.measureText(string).width;\r\n\t\t\tgc.push(string);\r\n\t\t}\r\n\t\tif (textWidth > longest) {\r\n\t\t\tlongest = textWidth;\r\n\t\t}\r\n\t\treturn longest;\r\n\t};\r\n\r\n\t/**\r\n\t * @deprecated\r\n\t */\r\n\thelpers$1.numberOfLabelLines = function(arrayOfThings) {\r\n\t\tvar numberOfLines = 1;\r\n\t\thelpers$1.each(arrayOfThings, function(thing) {\r\n\t\t\tif (helpers$1.isArray(thing)) {\r\n\t\t\t\tif (thing.length > numberOfLines) {\r\n\t\t\t\t\tnumberOfLines = thing.length;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn numberOfLines;\r\n\t};\r\n\r\n\thelpers$1.color = !chartjsColor ?\r\n\t\tfunction(value) {\r\n\t\t\tconsole.error('Color.js not found!');\r\n\t\t\treturn value;\r\n\t\t} :\r\n\t\tfunction(value) {\r\n\t\t\t/* global CanvasGradient */\r\n\t\t\tif (value instanceof CanvasGradient) {\r\n\t\t\t\tvalue = core_defaults.global.defaultColor;\r\n\t\t\t}\r\n\r\n\t\t\treturn chartjsColor(value);\r\n\t\t};\r\n\r\n\thelpers$1.getHoverColor = function(colorValue) {\r\n\t\t/* global CanvasPattern */\r\n\t\treturn (colorValue instanceof CanvasPattern || colorValue instanceof CanvasGradient) ?\r\n\t\t\tcolorValue :\r\n\t\t\thelpers$1.color(colorValue).saturate(0.5).darken(0.1).rgbString();\r\n\t};\r\n};\n\nfunction abstract() {\r\n\tthrow new Error(\r\n\t\t'This method is not implemented: either no adapter can ' +\r\n\t\t'be found or an incomplete integration was provided.'\r\n\t);\r\n}\r\n\r\n/**\r\n * Date adapter (current used by the time scale)\r\n * @namespace Chart._adapters._date\r\n * @memberof Chart._adapters\r\n * @private\r\n */\r\n\r\n/**\r\n * Currently supported unit string values.\r\n * @typedef {('millisecond'|'second'|'minute'|'hour'|'day'|'week'|'month'|'quarter'|'year')}\r\n * @memberof Chart._adapters._date\r\n * @name Unit\r\n */\r\n\r\n/**\r\n * @class\r\n */\r\nfunction DateAdapter(options) {\r\n\tthis.options = options || {};\r\n}\r\n\r\nhelpers$1.extend(DateAdapter.prototype, /** @lends DateAdapter */ {\r\n\t/**\r\n\t * Returns a map of time formats for the supported formatting units defined\r\n\t * in Unit as well as 'datetime' representing a detailed date/time string.\r\n\t * @returns {{string: string}}\r\n\t */\r\n\tformats: abstract,\r\n\r\n\t/**\r\n\t * Parses the given `value` and return the associated timestamp.\r\n\t * @param {any} value - the value to parse (usually comes from the data)\r\n\t * @param {string} [format] - the expected data format\r\n\t * @returns {(number|null)}\r\n\t * @function\r\n\t */\r\n\tparse: abstract,\r\n\r\n\t/**\r\n\t * Returns the formatted date in the specified `format` for a given `timestamp`.\r\n\t * @param {number} timestamp - the timestamp to format\r\n\t * @param {string} format - the date/time token\r\n\t * @return {string}\r\n\t * @function\r\n\t */\r\n\tformat: abstract,\r\n\r\n\t/**\r\n\t * Adds the specified `amount` of `unit` to the given `timestamp`.\r\n\t * @param {number} timestamp - the input timestamp\r\n\t * @param {number} amount - the amount to add\r\n\t * @param {Unit} unit - the unit as string\r\n\t * @return {number}\r\n\t * @function\r\n\t */\r\n\tadd: abstract,\r\n\r\n\t/**\r\n\t * Returns the number of `unit` between the given timestamps.\r\n\t * @param {number} max - the input timestamp (reference)\r\n\t * @param {number} min - the timestamp to substract\r\n\t * @param {Unit} unit - the unit as string\r\n\t * @return {number}\r\n\t * @function\r\n\t */\r\n\tdiff: abstract,\r\n\r\n\t/**\r\n\t * Returns start of `unit` for the given `timestamp`.\r\n\t * @param {number} timestamp - the input timestamp\r\n\t * @param {Unit} unit - the unit as string\r\n\t * @param {number} [weekday] - the ISO day of the week with 1 being Monday\r\n\t * and 7 being Sunday (only needed if param *unit* is `isoWeek`).\r\n\t * @function\r\n\t */\r\n\tstartOf: abstract,\r\n\r\n\t/**\r\n\t * Returns end of `unit` for the given `timestamp`.\r\n\t * @param {number} timestamp - the input timestamp\r\n\t * @param {Unit} unit - the unit as string\r\n\t * @function\r\n\t */\r\n\tendOf: abstract,\r\n\r\n\t// DEPRECATIONS\r\n\r\n\t/**\r\n\t * Provided for backward compatibility for scale.getValueForPixel(),\r\n\t * this method should be overridden only by the moment adapter.\r\n\t * @deprecated since version 2.8.0\r\n\t * @todo remove at version 3\r\n\t * @private\r\n\t */\r\n\t_create: function(value) {\r\n\t\treturn value;\r\n\t}\r\n});\r\n\r\nDateAdapter.override = function(members) {\r\n\thelpers$1.extend(DateAdapter.prototype, members);\r\n};\r\n\r\nvar _date = DateAdapter;\n\nvar core_adapters = {\n\t_date: _date\n};\n\n/**\r\n * Namespace to hold static tick generation functions\r\n * @namespace Chart.Ticks\r\n */\r\nvar core_ticks = {\r\n\t/**\r\n\t * Namespace to hold formatters for different types of ticks\r\n\t * @namespace Chart.Ticks.formatters\r\n\t */\r\n\tformatters: {\r\n\t\t/**\r\n\t\t * Formatter for value labels\r\n\t\t * @method Chart.Ticks.formatters.values\r\n\t\t * @param value the value to display\r\n\t\t * @return {string|string[]} the label to display\r\n\t\t */\r\n\t\tvalues: function(value) {\r\n\t\t\treturn helpers$1.isArray(value) ? value : '' + value;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Formatter for linear numeric ticks\r\n\t\t * @method Chart.Ticks.formatters.linear\r\n\t\t * @param tickValue {number} the value to be formatted\r\n\t\t * @param index {number} the position of the tickValue parameter in the ticks array\r\n\t\t * @param ticks {number[]} the list of ticks being converted\r\n\t\t * @return {string} string representation of the tickValue parameter\r\n\t\t */\r\n\t\tlinear: function(tickValue, index, ticks) {\r\n\t\t\t// If we have lots of ticks, don't use the ones\r\n\t\t\tvar delta = ticks.length > 3 ? ticks[2] - ticks[1] : ticks[1] - ticks[0];\r\n\r\n\t\t\t// If we have a number like 2.5 as the delta, figure out how many decimal places we need\r\n\t\t\tif (Math.abs(delta) > 1) {\r\n\t\t\t\tif (tickValue !== Math.floor(tickValue)) {\r\n\t\t\t\t\t// not an integer\r\n\t\t\t\t\tdelta = tickValue - Math.floor(tickValue);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar logDelta = helpers$1.log10(Math.abs(delta));\r\n\t\t\tvar tickString = '';\r\n\r\n\t\t\tif (tickValue !== 0) {\r\n\t\t\t\tvar maxTick = Math.max(Math.abs(ticks[0]), Math.abs(ticks[ticks.length - 1]));\r\n\t\t\t\tif (maxTick < 1e-4) { // all ticks are small numbers; use scientific notation\r\n\t\t\t\t\tvar logTick = helpers$1.log10(Math.abs(tickValue));\r\n\t\t\t\t\tvar numExponential = Math.floor(logTick) - Math.floor(logDelta);\r\n\t\t\t\t\tnumExponential = Math.max(Math.min(numExponential, 20), 0);\r\n\t\t\t\t\ttickString = tickValue.toExponential(numExponential);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar numDecimal = -1 * Math.floor(logDelta);\r\n\t\t\t\t\tnumDecimal = Math.max(Math.min(numDecimal, 20), 0); // toFixed has a max of 20 decimal places\r\n\t\t\t\t\ttickString = tickValue.toFixed(numDecimal);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\ttickString = '0'; // never show decimal places for 0\r\n\t\t\t}\r\n\r\n\t\t\treturn tickString;\r\n\t\t},\r\n\r\n\t\tlogarithmic: function(tickValue, index, ticks) {\r\n\t\t\tvar remain = tickValue / (Math.pow(10, Math.floor(helpers$1.log10(tickValue))));\r\n\r\n\t\t\tif (tickValue === 0) {\r\n\t\t\t\treturn '0';\r\n\t\t\t} else if (remain === 1 || remain === 2 || remain === 5 || index === 0 || index === ticks.length - 1) {\r\n\t\t\t\treturn tickValue.toExponential();\r\n\t\t\t}\r\n\t\t\treturn '';\r\n\t\t}\r\n\t}\r\n};\n\nvar isArray = helpers$1.isArray;\r\nvar isNullOrUndef = helpers$1.isNullOrUndef;\r\nvar valueOrDefault$a = helpers$1.valueOrDefault;\r\nvar valueAtIndexOrDefault = helpers$1.valueAtIndexOrDefault;\r\n\r\ncore_defaults._set('scale', {\r\n\tdisplay: true,\r\n\tposition: 'left',\r\n\toffset: false,\r\n\r\n\t// grid line settings\r\n\tgridLines: {\r\n\t\tdisplay: true,\r\n\t\tcolor: 'rgba(0,0,0,0.1)',\r\n\t\tlineWidth: 1,\r\n\t\tdrawBorder: true,\r\n\t\tdrawOnChartArea: true,\r\n\t\tdrawTicks: true,\r\n\t\ttickMarkLength: 10,\r\n\t\tzeroLineWidth: 1,\r\n\t\tzeroLineColor: 'rgba(0,0,0,0.25)',\r\n\t\tzeroLineBorderDash: [],\r\n\t\tzeroLineBorderDashOffset: 0.0,\r\n\t\toffsetGridLines: false,\r\n\t\tborderDash: [],\r\n\t\tborderDashOffset: 0.0\r\n\t},\r\n\r\n\t// scale label\r\n\tscaleLabel: {\r\n\t\t// display property\r\n\t\tdisplay: false,\r\n\r\n\t\t// actual label\r\n\t\tlabelString: '',\r\n\r\n\t\t// top/bottom padding\r\n\t\tpadding: {\r\n\t\t\ttop: 4,\r\n\t\t\tbottom: 4\r\n\t\t}\r\n\t},\r\n\r\n\t// label settings\r\n\tticks: {\r\n\t\tbeginAtZero: false,\r\n\t\tminRotation: 0,\r\n\t\tmaxRotation: 50,\r\n\t\tmirror: false,\r\n\t\tpadding: 0,\r\n\t\treverse: false,\r\n\t\tdisplay: true,\r\n\t\tautoSkip: true,\r\n\t\tautoSkipPadding: 0,\r\n\t\tlabelOffset: 0,\r\n\t\t// We pass through arrays to be rendered as multiline labels, we convert Others to strings here.\r\n\t\tcallback: core_ticks.formatters.values,\r\n\t\tminor: {},\r\n\t\tmajor: {}\r\n\t}\r\n});\r\n\r\n/** Returns a new array containing numItems from arr */\r\nfunction sample(arr, numItems) {\r\n\tvar result = [];\r\n\tvar increment = arr.length / numItems;\r\n\tvar i = 0;\r\n\tvar len = arr.length;\r\n\r\n\tfor (; i < len; i += increment) {\r\n\t\tresult.push(arr[Math.floor(i)]);\r\n\t}\r\n\treturn result;\r\n}\r\n\r\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\r\n\tvar length = scale.getTicks().length;\r\n\tvar validIndex = Math.min(index, length - 1);\r\n\tvar lineValue = scale.getPixelForTick(validIndex);\r\n\tvar start = scale._startPixel;\r\n\tvar end = scale._endPixel;\r\n\tvar epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\r\n\tvar offset;\r\n\r\n\tif (offsetGridLines) {\r\n\t\tif (length === 1) {\r\n\t\t\toffset = Math.max(lineValue - start, end - lineValue);\r\n\t\t} else if (index === 0) {\r\n\t\t\toffset = (scale.getPixelForTick(1) - lineValue) / 2;\r\n\t\t} else {\r\n\t\t\toffset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\r\n\t\t}\r\n\t\tlineValue += validIndex < index ? offset : -offset;\r\n\r\n\t\t// Return undefined if the pixel is out of the range\r\n\t\tif (lineValue < start - epsilon || lineValue > end + epsilon) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\treturn lineValue;\r\n}\r\n\r\nfunction garbageCollect(caches, length) {\r\n\thelpers$1.each(caches, function(cache) {\r\n\t\tvar gc = cache.gc;\r\n\t\tvar gcLen = gc.length / 2;\r\n\t\tvar i;\r\n\t\tif (gcLen > length) {\r\n\t\t\tfor (i = 0; i < gcLen; ++i) {\r\n\t\t\t\tdelete cache.data[gc[i]];\r\n\t\t\t}\r\n\t\t\tgc.splice(0, gcLen);\r\n\t\t}\r\n\t});\r\n}\r\n\r\n/**\r\n * Returns {width, height, offset} objects for the first, last, widest, highest tick\r\n * labels where offset indicates the anchor point offset from the top in pixels.\r\n */\r\nfunction computeLabelSizes(ctx, tickFonts, ticks, caches) {\r\n\tvar length = ticks.length;\r\n\tvar widths = [];\r\n\tvar heights = [];\r\n\tvar offsets = [];\r\n\tvar widestLabelSize = 0;\r\n\tvar highestLabelSize = 0;\r\n\tvar i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel, widest, highest;\r\n\r\n\tfor (i = 0; i < length; ++i) {\r\n\t\tlabel = ticks[i].label;\r\n\t\ttickFont = ticks[i].major ? tickFonts.major : tickFonts.minor;\r\n\t\tctx.font = fontString = tickFont.string;\r\n\t\tcache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\r\n\t\tlineHeight = tickFont.lineHeight;\r\n\t\twidth = height = 0;\r\n\t\t// Undefined labels and arrays should not be measured\r\n\t\tif (!isNullOrUndef(label) && !isArray(label)) {\r\n\t\t\twidth = helpers$1.measureText(ctx, cache.data, cache.gc, width, label);\r\n\t\t\theight = lineHeight;\r\n\t\t} else if (isArray(label)) {\r\n\t\t\t// if it is an array let's measure each element\r\n\t\t\tfor (j = 0, jlen = label.length; j < jlen; ++j) {\r\n\t\t\t\tnestedLabel = label[j];\r\n\t\t\t\t// Undefined labels and arrays should not be measured\r\n\t\t\t\tif (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\r\n\t\t\t\t\twidth = helpers$1.measureText(ctx, cache.data, cache.gc, width, nestedLabel);\r\n\t\t\t\t\theight += lineHeight;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\twidths.push(width);\r\n\t\theights.push(height);\r\n\t\toffsets.push(lineHeight / 2);\r\n\t\twidestLabelSize = Math.max(width, widestLabelSize);\r\n\t\thighestLabelSize = Math.max(height, highestLabelSize);\r\n\t}\r\n\tgarbageCollect(caches, length);\r\n\r\n\twidest = widths.indexOf(widestLabelSize);\r\n\thighest = heights.indexOf(highestLabelSize);\r\n\r\n\tfunction valueAt(idx) {\r\n\t\treturn {\r\n\t\t\twidth: widths[idx] || 0,\r\n\t\t\theight: heights[idx] || 0,\r\n\t\t\toffset: offsets[idx] || 0\r\n\t\t};\r\n\t}\r\n\r\n\treturn {\r\n\t\tfirst: valueAt(0),\r\n\t\tlast: valueAt(length - 1),\r\n\t\twidest: valueAt(widest),\r\n\t\thighest: valueAt(highest)\r\n\t};\r\n}\r\n\r\nfunction getTickMarkLength(options) {\r\n\treturn options.drawTicks ? options.tickMarkLength : 0;\r\n}\r\n\r\nfunction getScaleLabelHeight(options) {\r\n\tvar font, padding;\r\n\r\n\tif (!options.display) {\r\n\t\treturn 0;\r\n\t}\r\n\r\n\tfont = helpers$1.options._parseFont(options);\r\n\tpadding = helpers$1.options.toPadding(options.padding);\r\n\r\n\treturn font.lineHeight + padding.height;\r\n}\r\n\r\nfunction parseFontOptions(options, nestedOpts) {\r\n\treturn helpers$1.extend(helpers$1.options._parseFont({\r\n\t\tfontFamily: valueOrDefault$a(nestedOpts.fontFamily, options.fontFamily),\r\n\t\tfontSize: valueOrDefault$a(nestedOpts.fontSize, options.fontSize),\r\n\t\tfontStyle: valueOrDefault$a(nestedOpts.fontStyle, options.fontStyle),\r\n\t\tlineHeight: valueOrDefault$a(nestedOpts.lineHeight, options.lineHeight)\r\n\t}), {\r\n\t\tcolor: helpers$1.options.resolve([nestedOpts.fontColor, options.fontColor, core_defaults.global.defaultFontColor])\r\n\t});\r\n}\r\n\r\nfunction parseTickFontOptions(options) {\r\n\tvar minor = parseFontOptions(options, options.minor);\r\n\tvar major = options.major.enabled ? parseFontOptions(options, options.major) : minor;\r\n\r\n\treturn {minor: minor, major: major};\r\n}\r\n\r\nfunction nonSkipped(ticksToFilter) {\r\n\tvar filtered = [];\r\n\tvar item, index, len;\r\n\tfor (index = 0, len = ticksToFilter.length; index < len; ++index) {\r\n\t\titem = ticksToFilter[index];\r\n\t\tif (typeof item._index !== 'undefined') {\r\n\t\t\tfiltered.push(item);\r\n\t\t}\r\n\t}\r\n\treturn filtered;\r\n}\r\n\r\nfunction getEvenSpacing(arr) {\r\n\tvar len = arr.length;\r\n\tvar i, diff;\r\n\r\n\tif (len < 2) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfor (diff = arr[0], i = 1; i < len; ++i) {\r\n\t\tif (arr[i] - arr[i - 1] !== diff) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\treturn diff;\r\n}\r\n\r\nfunction calculateSpacing(majorIndices, ticks, axisLength, ticksLimit) {\r\n\tvar evenMajorSpacing = getEvenSpacing(majorIndices);\r\n\tvar spacing = (ticks.length - 1) / ticksLimit;\r\n\tvar factors, factor, i, ilen;\r\n\r\n\t// If the major ticks are evenly spaced apart, place the minor ticks\r\n\t// so that they divide the major ticks into even chunks\r\n\tif (!evenMajorSpacing) {\r\n\t\treturn Math.max(spacing, 1);\r\n\t}\r\n\r\n\tfactors = helpers$1.math._factorize(evenMajorSpacing);\r\n\tfor (i = 0, ilen = factors.length - 1; i < ilen; i++) {\r\n\t\tfactor = factors[i];\r\n\t\tif (factor > spacing) {\r\n\t\t\treturn factor;\r\n\t\t}\r\n\t}\r\n\treturn Math.max(spacing, 1);\r\n}\r\n\r\nfunction getMajorIndices(ticks) {\r\n\tvar result = [];\r\n\tvar i, ilen;\r\n\tfor (i = 0, ilen = ticks.length; i < ilen; i++) {\r\n\t\tif (ticks[i].major) {\r\n\t\t\tresult.push(i);\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n}\r\n\r\nfunction skipMajors(ticks, majorIndices, spacing) {\r\n\tvar count = 0;\r\n\tvar next = majorIndices[0];\r\n\tvar i, tick;\r\n\r\n\tspacing = Math.ceil(spacing);\r\n\tfor (i = 0; i < ticks.length; i++) {\r\n\t\ttick = ticks[i];\r\n\t\tif (i === next) {\r\n\t\t\ttick._index = i;\r\n\t\t\tcount++;\r\n\t\t\tnext = majorIndices[count * spacing];\r\n\t\t} else {\r\n\t\t\tdelete tick.label;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction skip(ticks, spacing, majorStart, majorEnd) {\r\n\tvar start = valueOrDefault$a(majorStart, 0);\r\n\tvar end = Math.min(valueOrDefault$a(majorEnd, ticks.length), ticks.length);\r\n\tvar count = 0;\r\n\tvar length, i, tick, next;\r\n\r\n\tspacing = Math.ceil(spacing);\r\n\tif (majorEnd) {\r\n\t\tlength = majorEnd - majorStart;\r\n\t\tspacing = length / Math.floor(length / spacing);\r\n\t}\r\n\r\n\tnext = start;\r\n\r\n\twhile (next < 0) {\r\n\t\tcount++;\r\n\t\tnext = Math.round(start + count * spacing);\r\n\t}\r\n\r\n\tfor (i = Math.max(start, 0); i < end; i++) {\r\n\t\ttick = ticks[i];\r\n\t\tif (i === next) {\r\n\t\t\ttick._index = i;\r\n\t\t\tcount++;\r\n\t\t\tnext = Math.round(start + count * spacing);\r\n\t\t} else {\r\n\t\t\tdelete tick.label;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nvar Scale = core_element.extend({\r\n\r\n\tzeroLineIndex: 0,\r\n\r\n\t/**\r\n\t * Get the padding needed for the scale\r\n\t * @method getPadding\r\n\t * @private\r\n\t * @returns {Padding} the necessary padding\r\n\t */\r\n\tgetPadding: function() {\r\n\t\tvar me = this;\r\n\t\treturn {\r\n\t\t\tleft: me.paddingLeft || 0,\r\n\t\t\ttop: me.paddingTop || 0,\r\n\t\t\tright: me.paddingRight || 0,\r\n\t\t\tbottom: me.paddingBottom || 0\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the scale tick objects ({label, major})\r\n\t * @since 2.7\r\n\t */\r\n\tgetTicks: function() {\r\n\t\treturn this._ticks;\r\n\t},\r\n\r\n\t/**\r\n\t* @private\r\n\t*/\r\n\t_getLabels: function() {\r\n\t\tvar data = this.chart.data;\r\n\t\treturn this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\r\n\t},\r\n\r\n\t// These methods are ordered by lifecyle. Utilities then follow.\r\n\t// Any function defined here is inherited by all scale types.\r\n\t// Any function can be extended by the scale type\r\n\r\n\t/**\r\n\t * Provided for backward compatibility, not available anymore\r\n\t * @function Chart.Scale.mergeTicksOptions\r\n\t * @deprecated since version 2.8.0\r\n\t * @todo remove at version 3\r\n\t */\r\n\tmergeTicksOptions: function() {\r\n\t\t// noop\r\n\t},\r\n\r\n\tbeforeUpdate: function() {\r\n\t\thelpers$1.callback(this.options.beforeUpdate, [this]);\r\n\t},\r\n\r\n\t/**\r\n\t * @param {number} maxWidth - the max width in pixels\r\n\t * @param {number} maxHeight - the max height in pixels\r\n\t * @param {object} margins - the space between the edge of the other scales and edge of the chart\r\n\t * This space comes from two sources:\r\n\t * - padding - space that's required to show the labels at the edges of the scale\r\n\t * - thickness of scales or legends in another orientation\r\n\t */\r\n\tupdate: function(maxWidth, maxHeight, margins) {\r\n\t\tvar me = this;\r\n\t\tvar tickOpts = me.options.ticks;\r\n\t\tvar sampleSize = tickOpts.sampleSize;\r\n\t\tvar i, ilen, labels, ticks, samplingEnabled;\r\n\r\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\r\n\t\tme.beforeUpdate();\r\n\r\n\t\t// Absorb the master measurements\r\n\t\tme.maxWidth = maxWidth;\r\n\t\tme.maxHeight = maxHeight;\r\n\t\tme.margins = helpers$1.extend({\r\n\t\t\tleft: 0,\r\n\t\t\tright: 0,\r\n\t\t\ttop: 0,\r\n\t\t\tbottom: 0\r\n\t\t}, margins);\r\n\r\n\t\tme._ticks = null;\r\n\t\tme.ticks = null;\r\n\t\tme._labelSizes = null;\r\n\t\tme._maxLabelLines = 0;\r\n\t\tme.longestLabelWidth = 0;\r\n\t\tme.longestTextCache = me.longestTextCache || {};\r\n\t\tme._gridLineItems = null;\r\n\t\tme._labelItems = null;\r\n\r\n\t\t// Dimensions\r\n\t\tme.beforeSetDimensions();\r\n\t\tme.setDimensions();\r\n\t\tme.afterSetDimensions();\r\n\r\n\t\t// Data min/max\r\n\t\tme.beforeDataLimits();\r\n\t\tme.determineDataLimits();\r\n\t\tme.afterDataLimits();\r\n\r\n\t\t// Ticks - `this.ticks` is now DEPRECATED!\r\n\t\t// Internal ticks are now stored as objects in the PRIVATE `this._ticks` member\r\n\t\t// and must not be accessed directly from outside this class. `this.ticks` being\r\n\t\t// around for long time and not marked as private, we can't change its structure\r\n\t\t// without unexpected breaking changes. If you need to access the scale ticks,\r\n\t\t// use scale.getTicks() instead.\r\n\r\n\t\tme.beforeBuildTicks();\r\n\r\n\t\t// New implementations should return an array of objects but for BACKWARD COMPAT,\r\n\t\t// we still support no return (`this.ticks` internally set by calling this method).\r\n\t\tticks = me.buildTicks() || [];\r\n\r\n\t\t// Allow modification of ticks in callback.\r\n\t\tticks = me.afterBuildTicks(ticks) || ticks;\r\n\r\n\t\t// Ensure ticks contains ticks in new tick format\r\n\t\tif ((!ticks || !ticks.length) && me.ticks) {\r\n\t\t\tticks = [];\r\n\t\t\tfor (i = 0, ilen = me.ticks.length; i < ilen; ++i) {\r\n\t\t\t\tticks.push({\r\n\t\t\t\t\tvalue: me.ticks[i],\r\n\t\t\t\t\tmajor: false\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme._ticks = ticks;\r\n\r\n\t\t// Compute tick rotation and fit using a sampled subset of labels\r\n\t\t// We generally don't need to compute the size of every single label for determining scale size\r\n\t\tsamplingEnabled = sampleSize < ticks.length;\r\n\t\tlabels = me._convertTicksToLabels(samplingEnabled ? sample(ticks, sampleSize) : ticks);\r\n\r\n\t\t// _configure is called twice, once here, once from core.controller.updateLayout.\r\n\t\t// Here we haven't been positioned yet, but dimensions are correct.\r\n\t\t// Variables set in _configure are needed for calculateTickRotation, and\r\n\t\t// it's ok that coordinates are not correct there, only dimensions matter.\r\n\t\tme._configure();\r\n\r\n\t\t// Tick Rotation\r\n\t\tme.beforeCalculateTickRotation();\r\n\t\tme.calculateTickRotation();\r\n\t\tme.afterCalculateTickRotation();\r\n\r\n\t\tme.beforeFit();\r\n\t\tme.fit();\r\n\t\tme.afterFit();\r\n\r\n\t\t// Auto-skip\r\n\t\tme._ticksToDraw = tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto') ? me._autoSkip(ticks) : ticks;\r\n\r\n\t\tif (samplingEnabled) {\r\n\t\t\t// Generate labels using all non-skipped ticks\r\n\t\t\tlabels = me._convertTicksToLabels(me._ticksToDraw);\r\n\t\t}\r\n\r\n\t\tme.ticks = labels; // BACKWARD COMPATIBILITY\r\n\r\n\t\t// IMPORTANT: after this point, we consider that `this.ticks` will NEVER change!\r\n\r\n\t\tme.afterUpdate();\r\n\r\n\t\t// TODO(v3): remove minSize as a public property and return value from all layout boxes. It is unused\r\n\t\t// make maxWidth and maxHeight private\r\n\t\treturn me.minSize;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_configure: function() {\r\n\t\tvar me = this;\r\n\t\tvar reversePixels = me.options.ticks.reverse;\r\n\t\tvar startPixel, endPixel;\r\n\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\tstartPixel = me.left;\r\n\t\t\tendPixel = me.right;\r\n\t\t} else {\r\n\t\t\tstartPixel = me.top;\r\n\t\t\tendPixel = me.bottom;\r\n\t\t\t// by default vertical scales are from bottom to top, so pixels are reversed\r\n\t\t\treversePixels = !reversePixels;\r\n\t\t}\r\n\t\tme._startPixel = startPixel;\r\n\t\tme._endPixel = endPixel;\r\n\t\tme._reversePixels = reversePixels;\r\n\t\tme._length = endPixel - startPixel;\r\n\t},\r\n\r\n\tafterUpdate: function() {\r\n\t\thelpers$1.callback(this.options.afterUpdate, [this]);\r\n\t},\r\n\r\n\t//\r\n\r\n\tbeforeSetDimensions: function() {\r\n\t\thelpers$1.callback(this.options.beforeSetDimensions, [this]);\r\n\t},\r\n\tsetDimensions: function() {\r\n\t\tvar me = this;\r\n\t\t// Set the unconstrained dimension before label rotation\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.width = me.maxWidth;\r\n\t\t\tme.left = 0;\r\n\t\t\tme.right = me.width;\r\n\t\t} else {\r\n\t\t\tme.height = me.maxHeight;\r\n\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.top = 0;\r\n\t\t\tme.bottom = me.height;\r\n\t\t}\r\n\r\n\t\t// Reset padding\r\n\t\tme.paddingLeft = 0;\r\n\t\tme.paddingTop = 0;\r\n\t\tme.paddingRight = 0;\r\n\t\tme.paddingBottom = 0;\r\n\t},\r\n\tafterSetDimensions: function() {\r\n\t\thelpers$1.callback(this.options.afterSetDimensions, [this]);\r\n\t},\r\n\r\n\t// Data limits\r\n\tbeforeDataLimits: function() {\r\n\t\thelpers$1.callback(this.options.beforeDataLimits, [this]);\r\n\t},\r\n\tdetermineDataLimits: helpers$1.noop,\r\n\tafterDataLimits: function() {\r\n\t\thelpers$1.callback(this.options.afterDataLimits, [this]);\r\n\t},\r\n\r\n\t//\r\n\tbeforeBuildTicks: function() {\r\n\t\thelpers$1.callback(this.options.beforeBuildTicks, [this]);\r\n\t},\r\n\tbuildTicks: helpers$1.noop,\r\n\tafterBuildTicks: function(ticks) {\r\n\t\tvar me = this;\r\n\t\t// ticks is empty for old axis implementations here\r\n\t\tif (isArray(ticks) && ticks.length) {\r\n\t\t\treturn helpers$1.callback(me.options.afterBuildTicks, [me, ticks]);\r\n\t\t}\r\n\t\t// Support old implementations (that modified `this.ticks` directly in buildTicks)\r\n\t\tme.ticks = helpers$1.callback(me.options.afterBuildTicks, [me, me.ticks]) || me.ticks;\r\n\t\treturn ticks;\r\n\t},\r\n\r\n\tbeforeTickToLabelConversion: function() {\r\n\t\thelpers$1.callback(this.options.beforeTickToLabelConversion, [this]);\r\n\t},\r\n\tconvertTicksToLabels: function() {\r\n\t\tvar me = this;\r\n\t\t// Convert ticks to strings\r\n\t\tvar tickOpts = me.options.ticks;\r\n\t\tme.ticks = me.ticks.map(tickOpts.userCallback || tickOpts.callback, this);\r\n\t},\r\n\tafterTickToLabelConversion: function() {\r\n\t\thelpers$1.callback(this.options.afterTickToLabelConversion, [this]);\r\n\t},\r\n\r\n\t//\r\n\r\n\tbeforeCalculateTickRotation: function() {\r\n\t\thelpers$1.callback(this.options.beforeCalculateTickRotation, [this]);\r\n\t},\r\n\tcalculateTickRotation: function() {\r\n\t\tvar me = this;\r\n\t\tvar options = me.options;\r\n\t\tvar tickOpts = options.ticks;\r\n\t\tvar numTicks = me.getTicks().length;\r\n\t\tvar minRotation = tickOpts.minRotation || 0;\r\n\t\tvar maxRotation = tickOpts.maxRotation;\r\n\t\tvar labelRotation = minRotation;\r\n\t\tvar labelSizes, maxLabelWidth, maxLabelHeight, maxWidth, tickWidth, maxHeight, maxLabelDiagonal;\r\n\r\n\t\tif (!me._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !me.isHorizontal()) {\r\n\t\t\tme.labelRotation = minRotation;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlabelSizes = me._getLabelSizes();\r\n\t\tmaxLabelWidth = labelSizes.widest.width;\r\n\t\tmaxLabelHeight = labelSizes.highest.height - labelSizes.highest.offset;\r\n\r\n\t\t// Estimate the width of each grid based on the canvas width, the maximum\r\n\t\t// label width and the number of tick intervals\r\n\t\tmaxWidth = Math.min(me.maxWidth, me.chart.width - maxLabelWidth);\r\n\t\ttickWidth = options.offset ? me.maxWidth / numTicks : maxWidth / (numTicks - 1);\r\n\r\n\t\t// Allow 3 pixels x2 padding either side for label readability\r\n\t\tif (maxLabelWidth + 6 > tickWidth) {\r\n\t\t\ttickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\r\n\t\t\tmaxHeight = me.maxHeight - getTickMarkLength(options.gridLines)\r\n\t\t\t\t- tickOpts.padding - getScaleLabelHeight(options.scaleLabel);\r\n\t\t\tmaxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\r\n\t\t\tlabelRotation = helpers$1.toDegrees(Math.min(\r\n\t\t\t\tMath.asin(Math.min((labelSizes.highest.height + 6) / tickWidth, 1)),\r\n\t\t\t\tMath.asin(Math.min(maxHeight / maxLabelDiagonal, 1)) - Math.asin(maxLabelHeight / maxLabelDiagonal)\r\n\t\t\t));\r\n\t\t\tlabelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\r\n\t\t}\r\n\r\n\t\tme.labelRotation = labelRotation;\r\n\t},\r\n\tafterCalculateTickRotation: function() {\r\n\t\thelpers$1.callback(this.options.afterCalculateTickRotation, [this]);\r\n\t},\r\n\r\n\t//\r\n\r\n\tbeforeFit: function() {\r\n\t\thelpers$1.callback(this.options.beforeFit, [this]);\r\n\t},\r\n\tfit: function() {\r\n\t\tvar me = this;\r\n\t\t// Reset\r\n\t\tvar minSize = me.minSize = {\r\n\t\t\twidth: 0,\r\n\t\t\theight: 0\r\n\t\t};\r\n\r\n\t\tvar chart = me.chart;\r\n\t\tvar opts = me.options;\r\n\t\tvar tickOpts = opts.ticks;\r\n\t\tvar scaleLabelOpts = opts.scaleLabel;\r\n\t\tvar gridLineOpts = opts.gridLines;\r\n\t\tvar display = me._isVisible();\r\n\t\tvar isBottom = opts.position === 'bottom';\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\r\n\t\t// Width\r\n\t\tif (isHorizontal) {\r\n\t\t\tminSize.width = me.maxWidth;\r\n\t\t} else if (display) {\r\n\t\t\tminSize.width = getTickMarkLength(gridLineOpts) + getScaleLabelHeight(scaleLabelOpts);\r\n\t\t}\r\n\r\n\t\t// height\r\n\t\tif (!isHorizontal) {\r\n\t\t\tminSize.height = me.maxHeight; // fill all the height\r\n\t\t} else if (display) {\r\n\t\t\tminSize.height = getTickMarkLength(gridLineOpts) + getScaleLabelHeight(scaleLabelOpts);\r\n\t\t}\r\n\r\n\t\t// Don't bother fitting the ticks if we are not showing the labels\r\n\t\tif (tickOpts.display && display) {\r\n\t\t\tvar tickFonts = parseTickFontOptions(tickOpts);\r\n\t\t\tvar labelSizes = me._getLabelSizes();\r\n\t\t\tvar firstLabelSize = labelSizes.first;\r\n\t\t\tvar lastLabelSize = labelSizes.last;\r\n\t\t\tvar widestLabelSize = labelSizes.widest;\r\n\t\t\tvar highestLabelSize = labelSizes.highest;\r\n\t\t\tvar lineSpace = tickFonts.minor.lineHeight * 0.4;\r\n\t\t\tvar tickPadding = tickOpts.padding;\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\t// A horizontal axis is more constrained by the height.\r\n\t\t\t\tvar isRotated = me.labelRotation !== 0;\r\n\t\t\t\tvar angleRadians = helpers$1.toRadians(me.labelRotation);\r\n\t\t\t\tvar cosRotation = Math.cos(angleRadians);\r\n\t\t\t\tvar sinRotation = Math.sin(angleRadians);\r\n\r\n\t\t\t\tvar labelHeight = sinRotation * widestLabelSize.width\r\n\t\t\t\t\t+ cosRotation * (highestLabelSize.height - (isRotated ? highestLabelSize.offset : 0))\r\n\t\t\t\t\t+ (isRotated ? 0 : lineSpace); // padding\r\n\r\n\t\t\t\tminSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding);\r\n\r\n\t\t\t\tvar offsetLeft = me.getPixelForTick(0) - me.left;\r\n\t\t\t\tvar offsetRight = me.right - me.getPixelForTick(me.getTicks().length - 1);\r\n\t\t\t\tvar paddingLeft, paddingRight;\r\n\r\n\t\t\t\t// Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned\r\n\t\t\t\t// which means that the right padding is dominated by the font height\r\n\t\t\t\tif (isRotated) {\r\n\t\t\t\t\tpaddingLeft = isBottom ?\r\n\t\t\t\t\t\tcosRotation * firstLabelSize.width + sinRotation * firstLabelSize.offset :\r\n\t\t\t\t\t\tsinRotation * (firstLabelSize.height - firstLabelSize.offset);\r\n\t\t\t\t\tpaddingRight = isBottom ?\r\n\t\t\t\t\t\tsinRotation * (lastLabelSize.height - lastLabelSize.offset) :\r\n\t\t\t\t\t\tcosRotation * lastLabelSize.width + sinRotation * lastLabelSize.offset;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tpaddingLeft = firstLabelSize.width / 2;\r\n\t\t\t\t\tpaddingRight = lastLabelSize.width / 2;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Adjust padding taking into account changes in offsets\r\n\t\t\t\t// and add 3 px to move away from canvas edges\r\n\t\t\t\tme.paddingLeft = Math.max((paddingLeft - offsetLeft) * me.width / (me.width - offsetLeft), 0) + 3;\r\n\t\t\t\tme.paddingRight = Math.max((paddingRight - offsetRight) * me.width / (me.width - offsetRight), 0) + 3;\r\n\t\t\t} else {\r\n\t\t\t\t// A vertical axis is more constrained by the width. Labels are the\r\n\t\t\t\t// dominant factor here, so get that length first and account for padding\r\n\t\t\t\tvar labelWidth = tickOpts.mirror ? 0 :\r\n\t\t\t\t\t// use lineSpace for consistency with horizontal axis\r\n\t\t\t\t\t// tickPadding is not implemented for horizontal\r\n\t\t\t\t\twidestLabelSize.width + tickPadding + lineSpace;\r\n\r\n\t\t\t\tminSize.width = Math.min(me.maxWidth, minSize.width + labelWidth);\r\n\r\n\t\t\t\tme.paddingTop = firstLabelSize.height / 2;\r\n\t\t\t\tme.paddingBottom = lastLabelSize.height / 2;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme.handleMargins();\r\n\r\n\t\tif (isHorizontal) {\r\n\t\t\tme.width = me._length = chart.width - me.margins.left - me.margins.right;\r\n\t\t\tme.height = minSize.height;\r\n\t\t} else {\r\n\t\t\tme.width = minSize.width;\r\n\t\t\tme.height = me._length = chart.height - me.margins.top - me.margins.bottom;\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Handle margins and padding interactions\r\n\t * @private\r\n\t */\r\n\thandleMargins: function() {\r\n\t\tvar me = this;\r\n\t\tif (me.margins) {\r\n\t\t\tme.margins.left = Math.max(me.paddingLeft, me.margins.left);\r\n\t\t\tme.margins.top = Math.max(me.paddingTop, me.margins.top);\r\n\t\t\tme.margins.right = Math.max(me.paddingRight, me.margins.right);\r\n\t\t\tme.margins.bottom = Math.max(me.paddingBottom, me.margins.bottom);\r\n\t\t}\r\n\t},\r\n\r\n\tafterFit: function() {\r\n\t\thelpers$1.callback(this.options.afterFit, [this]);\r\n\t},\r\n\r\n\t// Shared Methods\r\n\tisHorizontal: function() {\r\n\t\tvar pos = this.options.position;\r\n\t\treturn pos === 'top' || pos === 'bottom';\r\n\t},\r\n\tisFullWidth: function() {\r\n\t\treturn this.options.fullWidth;\r\n\t},\r\n\r\n\t// Get the correct value. NaN bad inputs, If the value type is object get the x or y based on whether we are horizontal or not\r\n\tgetRightValue: function(rawValue) {\r\n\t\t// Null and undefined values first\r\n\t\tif (isNullOrUndef(rawValue)) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\t// isNaN(object) returns true, so make sure NaN is checking for a number; Discard Infinite values\r\n\t\tif ((typeof rawValue === 'number' || rawValue instanceof Number) && !isFinite(rawValue)) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\t// If it is in fact an object, dive in one more level\r\n\t\tif (rawValue) {\r\n\t\t\tif (this.isHorizontal()) {\r\n\t\t\t\tif (rawValue.x !== undefined) {\r\n\t\t\t\t\treturn this.getRightValue(rawValue.x);\r\n\t\t\t\t}\r\n\t\t\t} else if (rawValue.y !== undefined) {\r\n\t\t\t\treturn this.getRightValue(rawValue.y);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Value is good, return it\r\n\t\treturn rawValue;\r\n\t},\r\n\r\n\t_convertTicksToLabels: function(ticks) {\r\n\t\tvar me = this;\r\n\t\tvar labels, i, ilen;\r\n\r\n\t\tme.ticks = ticks.map(function(tick) {\r\n\t\t\treturn tick.value;\r\n\t\t});\r\n\r\n\t\tme.beforeTickToLabelConversion();\r\n\r\n\t\t// New implementations should return the formatted tick labels but for BACKWARD\r\n\t\t// COMPAT, we still support no return (`this.ticks` internally changed by calling\r\n\t\t// this method and supposed to contain only string values).\r\n\t\tlabels = me.convertTicksToLabels(ticks) || me.ticks;\r\n\r\n\t\tme.afterTickToLabelConversion();\r\n\r\n\t\t// BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`)\r\n\t\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\r\n\t\t\tticks[i].label = labels[i];\r\n\t\t}\r\n\r\n\t\treturn labels;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getLabelSizes: function() {\r\n\t\tvar me = this;\r\n\t\tvar labelSizes = me._labelSizes;\r\n\r\n\t\tif (!labelSizes) {\r\n\t\t\tme._labelSizes = labelSizes = computeLabelSizes(me.ctx, parseTickFontOptions(me.options.ticks), me.getTicks(), me.longestTextCache);\r\n\t\t\tme.longestLabelWidth = labelSizes.widest.width;\r\n\t\t}\r\n\r\n\t\treturn labelSizes;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_parseValue: function(value) {\r\n\t\tvar start, end, min, max;\r\n\r\n\t\tif (isArray(value)) {\r\n\t\t\tstart = +this.getRightValue(value[0]);\r\n\t\t\tend = +this.getRightValue(value[1]);\r\n\t\t\tmin = Math.min(start, end);\r\n\t\t\tmax = Math.max(start, end);\r\n\t\t} else {\r\n\t\t\tvalue = +this.getRightValue(value);\r\n\t\t\tstart = undefined;\r\n\t\t\tend = value;\r\n\t\t\tmin = value;\r\n\t\t\tmax = value;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tmin: min,\r\n\t\t\tmax: max,\r\n\t\t\tstart: start,\r\n\t\t\tend: end\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t* @private\r\n\t*/\r\n\t_getScaleLabel: function(rawValue) {\r\n\t\tvar v = this._parseValue(rawValue);\r\n\t\tif (v.start !== undefined) {\r\n\t\t\treturn '[' + v.start + ', ' + v.end + ']';\r\n\t\t}\r\n\r\n\t\treturn +this.getRightValue(rawValue);\r\n\t},\r\n\r\n\t/**\r\n\t * Used to get the value to display in the tooltip for the data at the given index\r\n\t * @param index\r\n\t * @param datasetIndex\r\n\t */\r\n\tgetLabelForIndex: helpers$1.noop,\r\n\r\n\t/**\r\n\t * Returns the location of the given data point. Value can either be an index or a numerical value\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t * @param value\r\n\t * @param index\r\n\t * @param datasetIndex\r\n\t */\r\n\tgetPixelForValue: helpers$1.noop,\r\n\r\n\t/**\r\n\t * Used to get the data value from a given pixel. This is the inverse of getPixelForValue\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t * @param pixel\r\n\t */\r\n\tgetValueForPixel: helpers$1.noop,\r\n\r\n\t/**\r\n\t * Returns the location of the tick at the given index\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t */\r\n\tgetPixelForTick: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar offset = me.options.offset;\r\n\t\tvar numTicks = me._ticks.length;\r\n\t\tvar tickWidth = 1 / Math.max(numTicks - (offset ? 0 : 1), 1);\r\n\r\n\t\treturn index < 0 || index > numTicks - 1\r\n\t\t\t? null\r\n\t\t\t: me.getPixelForDecimal(index * tickWidth + (offset ? tickWidth / 2 : 0));\r\n\t},\r\n\r\n\t/**\r\n\t * Utility for getting the pixel location of a percentage of scale\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t */\r\n\tgetPixelForDecimal: function(decimal) {\r\n\t\tvar me = this;\r\n\r\n\t\tif (me._reversePixels) {\r\n\t\t\tdecimal = 1 - decimal;\r\n\t\t}\r\n\r\n\t\treturn me._startPixel + decimal * me._length;\r\n\t},\r\n\r\n\tgetDecimalForPixel: function(pixel) {\r\n\t\tvar decimal = (pixel - this._startPixel) / this._length;\r\n\t\treturn this._reversePixels ? 1 - decimal : decimal;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the pixel for the minimum chart value\r\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\r\n\t */\r\n\tgetBasePixel: function() {\r\n\t\treturn this.getPixelForValue(this.getBaseValue());\r\n\t},\r\n\r\n\tgetBaseValue: function() {\r\n\t\tvar me = this;\r\n\t\tvar min = me.min;\r\n\t\tvar max = me.max;\r\n\r\n\t\treturn me.beginAtZero ? 0 :\r\n\t\t\tmin < 0 && max < 0 ? max :\r\n\t\t\tmin > 0 && max > 0 ? min :\r\n\t\t\t0;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns a subset of ticks to be plotted to avoid overlapping labels.\r\n\t * @private\r\n\t */\r\n\t_autoSkip: function(ticks) {\r\n\t\tvar me = this;\r\n\t\tvar tickOpts = me.options.ticks;\r\n\t\tvar axisLength = me._length;\r\n\t\tvar ticksLimit = tickOpts.maxTicksLimit || axisLength / me._tickSize() + 1;\r\n\t\tvar majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\r\n\t\tvar numMajorIndices = majorIndices.length;\r\n\t\tvar first = majorIndices[0];\r\n\t\tvar last = majorIndices[numMajorIndices - 1];\r\n\t\tvar i, ilen, spacing, avgMajorSpacing;\r\n\r\n\t\t// If there are too many major ticks to display them all\r\n\t\tif (numMajorIndices > ticksLimit) {\r\n\t\t\tskipMajors(ticks, majorIndices, numMajorIndices / ticksLimit);\r\n\t\t\treturn nonSkipped(ticks);\r\n\t\t}\r\n\r\n\t\tspacing = calculateSpacing(majorIndices, ticks, axisLength, ticksLimit);\r\n\r\n\t\tif (numMajorIndices > 0) {\r\n\t\t\tfor (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\r\n\t\t\t\tskip(ticks, spacing, majorIndices[i], majorIndices[i + 1]);\r\n\t\t\t}\r\n\t\t\tavgMajorSpacing = numMajorIndices > 1 ? (last - first) / (numMajorIndices - 1) : null;\r\n\t\t\tskip(ticks, spacing, helpers$1.isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\r\n\t\t\tskip(ticks, spacing, last, helpers$1.isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\r\n\t\t\treturn nonSkipped(ticks);\r\n\t\t}\r\n\t\tskip(ticks, spacing);\r\n\t\treturn nonSkipped(ticks);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_tickSize: function() {\r\n\t\tvar me = this;\r\n\t\tvar optionTicks = me.options.ticks;\r\n\r\n\t\t// Calculate space needed by label in axis direction.\r\n\t\tvar rot = helpers$1.toRadians(me.labelRotation);\r\n\t\tvar cos = Math.abs(Math.cos(rot));\r\n\t\tvar sin = Math.abs(Math.sin(rot));\r\n\r\n\t\tvar labelSizes = me._getLabelSizes();\r\n\t\tvar padding = optionTicks.autoSkipPadding || 0;\r\n\t\tvar w = labelSizes ? labelSizes.widest.width + padding : 0;\r\n\t\tvar h = labelSizes ? labelSizes.highest.height + padding : 0;\r\n\r\n\t\t// Calculate space needed for 1 tick in axis direction.\r\n\t\treturn me.isHorizontal()\r\n\t\t\t? h * cos > w * sin ? w / cos : h / sin\r\n\t\t\t: h * sin < w * cos ? h / cos : w / sin;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_isVisible: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar display = me.options.display;\r\n\t\tvar i, ilen, meta;\r\n\r\n\t\tif (display !== 'auto') {\r\n\t\t\treturn !!display;\r\n\t\t}\r\n\r\n\t\t// When 'auto', the scale is visible if at least one associated dataset is visible.\r\n\t\tfor (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\r\n\t\t\tif (chart.isDatasetVisible(i)) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\tif (meta.xAxisID === me.id || meta.yAxisID === me.id) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_computeGridLineItems: function(chartArea) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar options = me.options;\r\n\t\tvar gridLines = options.gridLines;\r\n\t\tvar position = options.position;\r\n\t\tvar offsetGridLines = gridLines.offsetGridLines;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\t\tvar ticks = me._ticksToDraw;\r\n\t\tvar ticksLength = ticks.length + (offsetGridLines ? 1 : 0);\r\n\r\n\t\tvar tl = getTickMarkLength(gridLines);\r\n\t\tvar items = [];\r\n\t\tvar axisWidth = gridLines.drawBorder ? valueAtIndexOrDefault(gridLines.lineWidth, 0, 0) : 0;\r\n\t\tvar axisHalfWidth = axisWidth / 2;\r\n\t\tvar alignPixel = helpers$1._alignPixel;\r\n\t\tvar alignBorderValue = function(pixel) {\r\n\t\t\treturn alignPixel(chart, pixel, axisWidth);\r\n\t\t};\r\n\t\tvar borderValue, i, tick, lineValue, alignedLineValue;\r\n\t\tvar tx1, ty1, tx2, ty2, x1, y1, x2, y2, lineWidth, lineColor, borderDash, borderDashOffset;\r\n\r\n\t\tif (position === 'top') {\r\n\t\t\tborderValue = alignBorderValue(me.bottom);\r\n\t\t\tty1 = me.bottom - tl;\r\n\t\t\tty2 = borderValue - axisHalfWidth;\r\n\t\t\ty1 = alignBorderValue(chartArea.top) + axisHalfWidth;\r\n\t\t\ty2 = chartArea.bottom;\r\n\t\t} else if (position === 'bottom') {\r\n\t\t\tborderValue = alignBorderValue(me.top);\r\n\t\t\ty1 = chartArea.top;\r\n\t\t\ty2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\r\n\t\t\tty1 = borderValue + axisHalfWidth;\r\n\t\t\tty2 = me.top + tl;\r\n\t\t} else if (position === 'left') {\r\n\t\t\tborderValue = alignBorderValue(me.right);\r\n\t\t\ttx1 = me.right - tl;\r\n\t\t\ttx2 = borderValue - axisHalfWidth;\r\n\t\t\tx1 = alignBorderValue(chartArea.left) + axisHalfWidth;\r\n\t\t\tx2 = chartArea.right;\r\n\t\t} else {\r\n\t\t\tborderValue = alignBorderValue(me.left);\r\n\t\t\tx1 = chartArea.left;\r\n\t\t\tx2 = alignBorderValue(chartArea.right) - axisHalfWidth;\r\n\t\t\ttx1 = borderValue + axisHalfWidth;\r\n\t\t\ttx2 = me.left + tl;\r\n\t\t}\r\n\r\n\t\tfor (i = 0; i < ticksLength; ++i) {\r\n\t\t\ttick = ticks[i] || {};\r\n\r\n\t\t\t// autoskipper skipped this tick (#4635)\r\n\t\t\tif (isNullOrUndef(tick.label) && i < ticks.length) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (i === me.zeroLineIndex && options.offset === offsetGridLines) {\r\n\t\t\t\t// Draw the first index specially\r\n\t\t\t\tlineWidth = gridLines.zeroLineWidth;\r\n\t\t\t\tlineColor = gridLines.zeroLineColor;\r\n\t\t\t\tborderDash = gridLines.zeroLineBorderDash || [];\r\n\t\t\t\tborderDashOffset = gridLines.zeroLineBorderDashOffset || 0.0;\r\n\t\t\t} else {\r\n\t\t\t\tlineWidth = valueAtIndexOrDefault(gridLines.lineWidth, i, 1);\r\n\t\t\t\tlineColor = valueAtIndexOrDefault(gridLines.color, i, 'rgba(0,0,0,0.1)');\r\n\t\t\t\tborderDash = gridLines.borderDash || [];\r\n\t\t\t\tborderDashOffset = gridLines.borderDashOffset || 0.0;\r\n\t\t\t}\r\n\r\n\t\t\tlineValue = getPixelForGridLine(me, tick._index || i, offsetGridLines);\r\n\r\n\t\t\t// Skip if the pixel is out of the range\r\n\t\t\tif (lineValue === undefined) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\talignedLineValue = alignPixel(chart, lineValue, lineWidth);\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\ttx1 = tx2 = x1 = x2 = alignedLineValue;\r\n\t\t\t} else {\r\n\t\t\t\tty1 = ty2 = y1 = y2 = alignedLineValue;\r\n\t\t\t}\r\n\r\n\t\t\titems.push({\r\n\t\t\t\ttx1: tx1,\r\n\t\t\t\tty1: ty1,\r\n\t\t\t\ttx2: tx2,\r\n\t\t\t\tty2: ty2,\r\n\t\t\t\tx1: x1,\r\n\t\t\t\ty1: y1,\r\n\t\t\t\tx2: x2,\r\n\t\t\t\ty2: y2,\r\n\t\t\t\twidth: lineWidth,\r\n\t\t\t\tcolor: lineColor,\r\n\t\t\t\tborderDash: borderDash,\r\n\t\t\t\tborderDashOffset: borderDashOffset,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\titems.ticksLength = ticksLength;\r\n\t\titems.borderValue = borderValue;\r\n\r\n\t\treturn items;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_computeLabelItems: function() {\r\n\t\tvar me = this;\r\n\t\tvar options = me.options;\r\n\t\tvar optionTicks = options.ticks;\r\n\t\tvar position = options.position;\r\n\t\tvar isMirrored = optionTicks.mirror;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\t\tvar ticks = me._ticksToDraw;\r\n\t\tvar fonts = parseTickFontOptions(optionTicks);\r\n\t\tvar tickPadding = optionTicks.padding;\r\n\t\tvar tl = getTickMarkLength(options.gridLines);\r\n\t\tvar rotation = -helpers$1.toRadians(me.labelRotation);\r\n\t\tvar items = [];\r\n\t\tvar i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\r\n\r\n\t\tif (position === 'top') {\r\n\t\t\ty = me.bottom - tl - tickPadding;\r\n\t\t\ttextAlign = !rotation ? 'center' : 'left';\r\n\t\t} else if (position === 'bottom') {\r\n\t\t\ty = me.top + tl + tickPadding;\r\n\t\t\ttextAlign = !rotation ? 'center' : 'right';\r\n\t\t} else if (position === 'left') {\r\n\t\t\tx = me.right - (isMirrored ? 0 : tl) - tickPadding;\r\n\t\t\ttextAlign = isMirrored ? 'left' : 'right';\r\n\t\t} else {\r\n\t\t\tx = me.left + (isMirrored ? 0 : tl) + tickPadding;\r\n\t\t\ttextAlign = isMirrored ? 'right' : 'left';\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\r\n\t\t\ttick = ticks[i];\r\n\t\t\tlabel = tick.label;\r\n\r\n\t\t\t// autoskipper skipped this tick (#4635)\r\n\t\t\tif (isNullOrUndef(label)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tpixel = me.getPixelForTick(tick._index || i) + optionTicks.labelOffset;\r\n\t\t\tfont = tick.major ? fonts.major : fonts.minor;\r\n\t\t\tlineHeight = font.lineHeight;\r\n\t\t\tlineCount = isArray(label) ? label.length : 1;\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\tx = pixel;\r\n\t\t\t\ttextOffset = position === 'top'\r\n\t\t\t\t\t? ((!rotation ? 0.5 : 1) - lineCount) * lineHeight\r\n\t\t\t\t\t: (!rotation ? 0.5 : 0) * lineHeight;\r\n\t\t\t} else {\r\n\t\t\t\ty = pixel;\r\n\t\t\t\ttextOffset = (1 - lineCount) * lineHeight / 2;\r\n\t\t\t}\r\n\r\n\t\t\titems.push({\r\n\t\t\t\tx: x,\r\n\t\t\t\ty: y,\r\n\t\t\t\trotation: rotation,\r\n\t\t\t\tlabel: label,\r\n\t\t\t\tfont: font,\r\n\t\t\t\ttextOffset: textOffset,\r\n\t\t\t\ttextAlign: textAlign\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn items;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_drawGrid: function(chartArea) {\r\n\t\tvar me = this;\r\n\t\tvar gridLines = me.options.gridLines;\r\n\r\n\t\tif (!gridLines.display) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar chart = me.chart;\r\n\t\tvar alignPixel = helpers$1._alignPixel;\r\n\t\tvar axisWidth = gridLines.drawBorder ? valueAtIndexOrDefault(gridLines.lineWidth, 0, 0) : 0;\r\n\t\tvar items = me._gridLineItems || (me._gridLineItems = me._computeGridLineItems(chartArea));\r\n\t\tvar width, color, i, ilen, item;\r\n\r\n\t\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\r\n\t\t\titem = items[i];\r\n\t\t\twidth = item.width;\r\n\t\t\tcolor = item.color;\r\n\r\n\t\t\tif (width && color) {\r\n\t\t\t\tctx.save();\r\n\t\t\t\tctx.lineWidth = width;\r\n\t\t\t\tctx.strokeStyle = color;\r\n\t\t\t\tif (ctx.setLineDash) {\r\n\t\t\t\t\tctx.setLineDash(item.borderDash);\r\n\t\t\t\t\tctx.lineDashOffset = item.borderDashOffset;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tctx.beginPath();\r\n\r\n\t\t\t\tif (gridLines.drawTicks) {\r\n\t\t\t\t\tctx.moveTo(item.tx1, item.ty1);\r\n\t\t\t\t\tctx.lineTo(item.tx2, item.ty2);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (gridLines.drawOnChartArea) {\r\n\t\t\t\t\tctx.moveTo(item.x1, item.y1);\r\n\t\t\t\t\tctx.lineTo(item.x2, item.y2);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tctx.stroke();\r\n\t\t\t\tctx.restore();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (axisWidth) {\r\n\t\t\t// Draw the line at the edge of the axis\r\n\t\t\tvar firstLineWidth = axisWidth;\r\n\t\t\tvar lastLineWidth = valueAtIndexOrDefault(gridLines.lineWidth, items.ticksLength - 1, 1);\r\n\t\t\tvar borderValue = items.borderValue;\r\n\t\t\tvar x1, x2, y1, y2;\r\n\r\n\t\t\tif (me.isHorizontal()) {\r\n\t\t\t\tx1 = alignPixel(chart, me.left, firstLineWidth) - firstLineWidth / 2;\r\n\t\t\t\tx2 = alignPixel(chart, me.right, lastLineWidth) + lastLineWidth / 2;\r\n\t\t\t\ty1 = y2 = borderValue;\r\n\t\t\t} else {\r\n\t\t\t\ty1 = alignPixel(chart, me.top, firstLineWidth) - firstLineWidth / 2;\r\n\t\t\t\ty2 = alignPixel(chart, me.bottom, lastLineWidth) + lastLineWidth / 2;\r\n\t\t\t\tx1 = x2 = borderValue;\r\n\t\t\t}\r\n\r\n\t\t\tctx.lineWidth = axisWidth;\r\n\t\t\tctx.strokeStyle = valueAtIndexOrDefault(gridLines.color, 0);\r\n\t\t\tctx.beginPath();\r\n\t\t\tctx.moveTo(x1, y1);\r\n\t\t\tctx.lineTo(x2, y2);\r\n\t\t\tctx.stroke();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_drawLabels: function() {\r\n\t\tvar me = this;\r\n\t\tvar optionTicks = me.options.ticks;\r\n\r\n\t\tif (!optionTicks.display) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar items = me._labelItems || (me._labelItems = me._computeLabelItems());\r\n\t\tvar i, j, ilen, jlen, item, tickFont, label, y;\r\n\r\n\t\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\r\n\t\t\titem = items[i];\r\n\t\t\ttickFont = item.font;\r\n\r\n\t\t\t// Make sure we draw text in the correct color and font\r\n\t\t\tctx.save();\r\n\t\t\tctx.translate(item.x, item.y);\r\n\t\t\tctx.rotate(item.rotation);\r\n\t\t\tctx.font = tickFont.string;\r\n\t\t\tctx.fillStyle = tickFont.color;\r\n\t\t\tctx.textBaseline = 'middle';\r\n\t\t\tctx.textAlign = item.textAlign;\r\n\r\n\t\t\tlabel = item.label;\r\n\t\t\ty = item.textOffset;\r\n\t\t\tif (isArray(label)) {\r\n\t\t\t\tfor (j = 0, jlen = label.length; j < jlen; ++j) {\r\n\t\t\t\t\t// We just make sure the multiline element is a string here..\r\n\t\t\t\t\tctx.fillText('' + label[j], 0, y);\r\n\t\t\t\t\ty += tickFont.lineHeight;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tctx.fillText(label, 0, y);\r\n\t\t\t}\r\n\t\t\tctx.restore();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_drawTitle: function() {\r\n\t\tvar me = this;\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar options = me.options;\r\n\t\tvar scaleLabel = options.scaleLabel;\r\n\r\n\t\tif (!scaleLabel.display) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar scaleLabelFontColor = valueOrDefault$a(scaleLabel.fontColor, core_defaults.global.defaultFontColor);\r\n\t\tvar scaleLabelFont = helpers$1.options._parseFont(scaleLabel);\r\n\t\tvar scaleLabelPadding = helpers$1.options.toPadding(scaleLabel.padding);\r\n\t\tvar halfLineHeight = scaleLabelFont.lineHeight / 2;\r\n\t\tvar position = options.position;\r\n\t\tvar rotation = 0;\r\n\t\tvar scaleLabelX, scaleLabelY;\r\n\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\tscaleLabelX = me.left + me.width / 2; // midpoint of the width\r\n\t\t\tscaleLabelY = position === 'bottom'\r\n\t\t\t\t? me.bottom - halfLineHeight - scaleLabelPadding.bottom\r\n\t\t\t\t: me.top + halfLineHeight + scaleLabelPadding.top;\r\n\t\t} else {\r\n\t\t\tvar isLeft = position === 'left';\r\n\t\t\tscaleLabelX = isLeft\r\n\t\t\t\t? me.left + halfLineHeight + scaleLabelPadding.top\r\n\t\t\t\t: me.right - halfLineHeight - scaleLabelPadding.top;\r\n\t\t\tscaleLabelY = me.top + me.height / 2;\r\n\t\t\trotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI;\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\t\tctx.translate(scaleLabelX, scaleLabelY);\r\n\t\tctx.rotate(rotation);\r\n\t\tctx.textAlign = 'center';\r\n\t\tctx.textBaseline = 'middle';\r\n\t\tctx.fillStyle = scaleLabelFontColor; // render in correct colour\r\n\t\tctx.font = scaleLabelFont.string;\r\n\t\tctx.fillText(scaleLabel.labelString, 0, 0);\r\n\t\tctx.restore();\r\n\t},\r\n\r\n\tdraw: function(chartArea) {\r\n\t\tvar me = this;\r\n\r\n\t\tif (!me._isVisible()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tme._drawGrid(chartArea);\r\n\t\tme._drawTitle();\r\n\t\tme._drawLabels();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_layers: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar tz = opts.ticks && opts.ticks.z || 0;\r\n\t\tvar gz = opts.gridLines && opts.gridLines.z || 0;\r\n\r\n\t\tif (!me._isVisible() || tz === gz || me.draw !== me._draw) {\r\n\t\t\t// backward compatibility: draw has been overridden by custom scale\r\n\t\t\treturn [{\r\n\t\t\t\tz: tz,\r\n\t\t\t\tdraw: function() {\r\n\t\t\t\t\tme.draw.apply(me, arguments);\r\n\t\t\t\t}\r\n\t\t\t}];\r\n\t\t}\r\n\r\n\t\treturn [{\r\n\t\t\tz: gz,\r\n\t\t\tdraw: function() {\r\n\t\t\t\tme._drawGrid.apply(me, arguments);\r\n\t\t\t\tme._drawTitle.apply(me, arguments);\r\n\t\t\t}\r\n\t\t}, {\r\n\t\t\tz: tz,\r\n\t\t\tdraw: function() {\r\n\t\t\t\tme._drawLabels.apply(me, arguments);\r\n\t\t\t}\r\n\t\t}];\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getMatchingVisibleMetas: function(type) {\r\n\t\tvar me = this;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\t\treturn me.chart._getSortedVisibleDatasetMetas()\r\n\t\t\t.filter(function(meta) {\r\n\t\t\t\treturn (!type || meta.type === type)\r\n\t\t\t\t\t&& (isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id);\r\n\t\t\t});\r\n\t}\r\n});\r\n\r\nScale.prototype._draw = Scale.prototype.draw;\r\n\r\nvar core_scale = Scale;\n\nvar isNullOrUndef$1 = helpers$1.isNullOrUndef;\r\n\r\nvar defaultConfig = {\r\n\tposition: 'bottom'\r\n};\r\n\r\nvar scale_category = core_scale.extend({\r\n\tdetermineDataLimits: function() {\r\n\t\tvar me = this;\r\n\t\tvar labels = me._getLabels();\r\n\t\tvar ticksOpts = me.options.ticks;\r\n\t\tvar min = ticksOpts.min;\r\n\t\tvar max = ticksOpts.max;\r\n\t\tvar minIndex = 0;\r\n\t\tvar maxIndex = labels.length - 1;\r\n\t\tvar findIndex;\r\n\r\n\t\tif (min !== undefined) {\r\n\t\t\t// user specified min value\r\n\t\t\tfindIndex = labels.indexOf(min);\r\n\t\t\tif (findIndex >= 0) {\r\n\t\t\t\tminIndex = findIndex;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (max !== undefined) {\r\n\t\t\t// user specified max value\r\n\t\t\tfindIndex = labels.indexOf(max);\r\n\t\t\tif (findIndex >= 0) {\r\n\t\t\t\tmaxIndex = findIndex;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme.minIndex = minIndex;\r\n\t\tme.maxIndex = maxIndex;\r\n\t\tme.min = labels[minIndex];\r\n\t\tme.max = labels[maxIndex];\r\n\t},\r\n\r\n\tbuildTicks: function() {\r\n\t\tvar me = this;\r\n\t\tvar labels = me._getLabels();\r\n\t\tvar minIndex = me.minIndex;\r\n\t\tvar maxIndex = me.maxIndex;\r\n\r\n\t\t// If we are viewing some subset of labels, slice the original array\r\n\t\tme.ticks = (minIndex === 0 && maxIndex === labels.length - 1) ? labels : labels.slice(minIndex, maxIndex + 1);\r\n\t},\r\n\r\n\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\r\n\t\tif (chart.getDatasetMeta(datasetIndex).controller._getValueScaleId() === me.id) {\r\n\t\t\treturn me.getRightValue(chart.data.datasets[datasetIndex].data[index]);\r\n\t\t}\r\n\r\n\t\treturn me._getLabels()[index];\r\n\t},\r\n\r\n\t_configure: function() {\r\n\t\tvar me = this;\r\n\t\tvar offset = me.options.offset;\r\n\t\tvar ticks = me.ticks;\r\n\r\n\t\tcore_scale.prototype._configure.call(me);\r\n\r\n\t\tif (!me.isHorizontal()) {\r\n\t\t\t// For backward compatibility, vertical category scale reverse is inverted.\r\n\t\t\tme._reversePixels = !me._reversePixels;\r\n\t\t}\r\n\r\n\t\tif (!ticks) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tme._startValue = me.minIndex - (offset ? 0.5 : 0);\r\n\t\tme._valueRange = Math.max(ticks.length - (offset ? 0 : 1), 1);\r\n\t},\r\n\r\n\t// Used to get data value locations. Value can either be an index or a numerical value\r\n\tgetPixelForValue: function(value, index, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tvar valueCategory, labels, idx;\r\n\r\n\t\tif (!isNullOrUndef$1(index) && !isNullOrUndef$1(datasetIndex)) {\r\n\t\t\tvalue = me.chart.data.datasets[datasetIndex].data[index];\r\n\t\t}\r\n\r\n\t\t// If value is a data object, then index is the index in the data array,\r\n\t\t// not the index of the scale. We need to change that.\r\n\t\tif (!isNullOrUndef$1(value)) {\r\n\t\t\tvalueCategory = me.isHorizontal() ? value.x : value.y;\r\n\t\t}\r\n\t\tif (valueCategory !== undefined || (value !== undefined && isNaN(index))) {\r\n\t\t\tlabels = me._getLabels();\r\n\t\t\tvalue = helpers$1.valueOrDefault(valueCategory, value);\r\n\t\t\tidx = labels.indexOf(value);\r\n\t\t\tindex = idx !== -1 ? idx : index;\r\n\t\t\tif (isNaN(index)) {\r\n\t\t\t\tindex = value;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn me.getPixelForDecimal((index - me._startValue) / me._valueRange);\r\n\t},\r\n\r\n\tgetPixelForTick: function(index) {\r\n\t\tvar ticks = this.ticks;\r\n\t\treturn index < 0 || index > ticks.length - 1\r\n\t\t\t? null\r\n\t\t\t: this.getPixelForValue(ticks[index], index + this.minIndex);\r\n\t},\r\n\r\n\tgetValueForPixel: function(pixel) {\r\n\t\tvar me = this;\r\n\t\tvar value = Math.round(me._startValue + me.getDecimalForPixel(pixel) * me._valueRange);\r\n\t\treturn Math.min(Math.max(value, 0), me.ticks.length - 1);\r\n\t},\r\n\r\n\tgetBasePixel: function() {\r\n\t\treturn this.bottom;\r\n\t}\r\n});\r\n\r\n// INTERNAL: static default options, registered in src/index.js\r\nvar _defaults = defaultConfig;\nscale_category._defaults = _defaults;\n\nvar noop = helpers$1.noop;\r\nvar isNullOrUndef$2 = helpers$1.isNullOrUndef;\r\n\r\n/**\r\n * Generate a set of linear ticks\r\n * @param generationOptions the options used to generate the ticks\r\n * @param dataRange the range of the data\r\n * @returns {number[]} array of tick values\r\n */\r\nfunction generateTicks(generationOptions, dataRange) {\r\n\tvar ticks = [];\r\n\t// To get a \"nice\" value for the tick spacing, we will use the appropriately named\r\n\t// \"nice number\" algorithm. See https://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks\r\n\t// for details.\r\n\r\n\tvar MIN_SPACING = 1e-14;\r\n\tvar stepSize = generationOptions.stepSize;\r\n\tvar unit = stepSize || 1;\r\n\tvar maxNumSpaces = generationOptions.maxTicks - 1;\r\n\tvar min = generationOptions.min;\r\n\tvar max = generationOptions.max;\r\n\tvar precision = generationOptions.precision;\r\n\tvar rmin = dataRange.min;\r\n\tvar rmax = dataRange.max;\r\n\tvar spacing = helpers$1.niceNum((rmax - rmin) / maxNumSpaces / unit) * unit;\r\n\tvar factor, niceMin, niceMax, numSpaces;\r\n\r\n\t// Beyond MIN_SPACING floating point numbers being to lose precision\r\n\t// such that we can't do the math necessary to generate ticks\r\n\tif (spacing < MIN_SPACING && isNullOrUndef$2(min) && isNullOrUndef$2(max)) {\r\n\t\treturn [rmin, rmax];\r\n\t}\r\n\r\n\tnumSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\r\n\tif (numSpaces > maxNumSpaces) {\r\n\t\t// If the calculated num of spaces exceeds maxNumSpaces, recalculate it\r\n\t\tspacing = helpers$1.niceNum(numSpaces * spacing / maxNumSpaces / unit) * unit;\r\n\t}\r\n\r\n\tif (stepSize || isNullOrUndef$2(precision)) {\r\n\t\t// If a precision is not specified, calculate factor based on spacing\r\n\t\tfactor = Math.pow(10, helpers$1._decimalPlaces(spacing));\r\n\t} else {\r\n\t\t// If the user specified a precision, round to that number of decimal places\r\n\t\tfactor = Math.pow(10, precision);\r\n\t\tspacing = Math.ceil(spacing * factor) / factor;\r\n\t}\r\n\r\n\tniceMin = Math.floor(rmin / spacing) * spacing;\r\n\tniceMax = Math.ceil(rmax / spacing) * spacing;\r\n\r\n\t// If min, max and stepSize is set and they make an evenly spaced scale use it.\r\n\tif (stepSize) {\r\n\t\t// If very close to our whole number, use it.\r\n\t\tif (!isNullOrUndef$2(min) && helpers$1.almostWhole(min / spacing, spacing / 1000)) {\r\n\t\t\tniceMin = min;\r\n\t\t}\r\n\t\tif (!isNullOrUndef$2(max) && helpers$1.almostWhole(max / spacing, spacing / 1000)) {\r\n\t\t\tniceMax = max;\r\n\t\t}\r\n\t}\r\n\r\n\tnumSpaces = (niceMax - niceMin) / spacing;\r\n\t// If very close to our rounded value, use it.\r\n\tif (helpers$1.almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\r\n\t\tnumSpaces = Math.round(numSpaces);\r\n\t} else {\r\n\t\tnumSpaces = Math.ceil(numSpaces);\r\n\t}\r\n\r\n\tniceMin = Math.round(niceMin * factor) / factor;\r\n\tniceMax = Math.round(niceMax * factor) / factor;\r\n\tticks.push(isNullOrUndef$2(min) ? niceMin : min);\r\n\tfor (var j = 1; j < numSpaces; ++j) {\r\n\t\tticks.push(Math.round((niceMin + j * spacing) * factor) / factor);\r\n\t}\r\n\tticks.push(isNullOrUndef$2(max) ? niceMax : max);\r\n\r\n\treturn ticks;\r\n}\r\n\r\nvar scale_linearbase = core_scale.extend({\r\n\tgetRightValue: function(value) {\r\n\t\tif (typeof value === 'string') {\r\n\t\t\treturn +value;\r\n\t\t}\r\n\t\treturn core_scale.prototype.getRightValue.call(this, value);\r\n\t},\r\n\r\n\thandleTickRangeOptions: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar tickOpts = opts.ticks;\r\n\r\n\t\t// If we are forcing it to begin at 0, but 0 will already be rendered on the chart,\r\n\t\t// do nothing since that would make the chart weird. If the user really wants a weird chart\r\n\t\t// axis, they can manually override it\r\n\t\tif (tickOpts.beginAtZero) {\r\n\t\t\tvar minSign = helpers$1.sign(me.min);\r\n\t\t\tvar maxSign = helpers$1.sign(me.max);\r\n\r\n\t\t\tif (minSign < 0 && maxSign < 0) {\r\n\t\t\t\t// move the top up to 0\r\n\t\t\t\tme.max = 0;\r\n\t\t\t} else if (minSign > 0 && maxSign > 0) {\r\n\t\t\t\t// move the bottom down to 0\r\n\t\t\t\tme.min = 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar setMin = tickOpts.min !== undefined || tickOpts.suggestedMin !== undefined;\r\n\t\tvar setMax = tickOpts.max !== undefined || tickOpts.suggestedMax !== undefined;\r\n\r\n\t\tif (tickOpts.min !== undefined) {\r\n\t\t\tme.min = tickOpts.min;\r\n\t\t} else if (tickOpts.suggestedMin !== undefined) {\r\n\t\t\tif (me.min === null) {\r\n\t\t\t\tme.min = tickOpts.suggestedMin;\r\n\t\t\t} else {\r\n\t\t\t\tme.min = Math.min(me.min, tickOpts.suggestedMin);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (tickOpts.max !== undefined) {\r\n\t\t\tme.max = tickOpts.max;\r\n\t\t} else if (tickOpts.suggestedMax !== undefined) {\r\n\t\t\tif (me.max === null) {\r\n\t\t\t\tme.max = tickOpts.suggestedMax;\r\n\t\t\t} else {\r\n\t\t\t\tme.max = Math.max(me.max, tickOpts.suggestedMax);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (setMin !== setMax) {\r\n\t\t\t// We set the min or the max but not both.\r\n\t\t\t// So ensure that our range is good\r\n\t\t\t// Inverted or 0 length range can happen when\r\n\t\t\t// ticks.min is set, and no datasets are visible\r\n\t\t\tif (me.min >= me.max) {\r\n\t\t\t\tif (setMin) {\r\n\t\t\t\t\tme.max = me.min + 1;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tme.min = me.max - 1;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (me.min === me.max) {\r\n\t\t\tme.max++;\r\n\r\n\t\t\tif (!tickOpts.beginAtZero) {\r\n\t\t\t\tme.min--;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tgetTickLimit: function() {\r\n\t\tvar me = this;\r\n\t\tvar tickOpts = me.options.ticks;\r\n\t\tvar stepSize = tickOpts.stepSize;\r\n\t\tvar maxTicksLimit = tickOpts.maxTicksLimit;\r\n\t\tvar maxTicks;\r\n\r\n\t\tif (stepSize) {\r\n\t\t\tmaxTicks = Math.ceil(me.max / stepSize) - Math.floor(me.min / stepSize) + 1;\r\n\t\t} else {\r\n\t\t\tmaxTicks = me._computeTickLimit();\r\n\t\t\tmaxTicksLimit = maxTicksLimit || 11;\r\n\t\t}\r\n\r\n\t\tif (maxTicksLimit) {\r\n\t\t\tmaxTicks = Math.min(maxTicksLimit, maxTicks);\r\n\t\t}\r\n\r\n\t\treturn maxTicks;\r\n\t},\r\n\r\n\t_computeTickLimit: function() {\r\n\t\treturn Number.POSITIVE_INFINITY;\r\n\t},\r\n\r\n\thandleDirectionalChanges: noop,\r\n\r\n\tbuildTicks: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar tickOpts = opts.ticks;\r\n\r\n\t\t// Figure out what the max number of ticks we can support it is based on the size of\r\n\t\t// the axis area. For now, we say that the minimum tick spacing in pixels must be 40\r\n\t\t// We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\r\n\t\t// the graph. Make sure we always have at least 2 ticks\r\n\t\tvar maxTicks = me.getTickLimit();\r\n\t\tmaxTicks = Math.max(2, maxTicks);\r\n\r\n\t\tvar numericGeneratorOptions = {\r\n\t\t\tmaxTicks: maxTicks,\r\n\t\t\tmin: tickOpts.min,\r\n\t\t\tmax: tickOpts.max,\r\n\t\t\tprecision: tickOpts.precision,\r\n\t\t\tstepSize: helpers$1.valueOrDefault(tickOpts.fixedStepSize, tickOpts.stepSize)\r\n\t\t};\r\n\t\tvar ticks = me.ticks = generateTicks(numericGeneratorOptions, me);\r\n\r\n\t\tme.handleDirectionalChanges();\r\n\r\n\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\r\n\t\t// range of the scale\r\n\t\tme.max = helpers$1.max(ticks);\r\n\t\tme.min = helpers$1.min(ticks);\r\n\r\n\t\tif (tickOpts.reverse) {\r\n\t\t\tticks.reverse();\r\n\r\n\t\t\tme.start = me.max;\r\n\t\t\tme.end = me.min;\r\n\t\t} else {\r\n\t\t\tme.start = me.min;\r\n\t\t\tme.end = me.max;\r\n\t\t}\r\n\t},\r\n\r\n\tconvertTicksToLabels: function() {\r\n\t\tvar me = this;\r\n\t\tme.ticksAsNumbers = me.ticks.slice();\r\n\t\tme.zeroLineIndex = me.ticks.indexOf(0);\r\n\r\n\t\tcore_scale.prototype.convertTicksToLabels.call(me);\r\n\t},\r\n\r\n\t_configure: function() {\r\n\t\tvar me = this;\r\n\t\tvar ticks = me.getTicks();\r\n\t\tvar start = me.min;\r\n\t\tvar end = me.max;\r\n\t\tvar offset;\r\n\r\n\t\tcore_scale.prototype._configure.call(me);\r\n\r\n\t\tif (me.options.offset && ticks.length) {\r\n\t\t\toffset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\r\n\t\t\tstart -= offset;\r\n\t\t\tend += offset;\r\n\t\t}\r\n\t\tme._startValue = start;\r\n\t\tme._endValue = end;\r\n\t\tme._valueRange = end - start;\r\n\t}\r\n});\n\nvar defaultConfig$1 = {\r\n\tposition: 'left',\r\n\tticks: {\r\n\t\tcallback: core_ticks.formatters.linear\r\n\t}\r\n};\r\n\r\nvar DEFAULT_MIN = 0;\r\nvar DEFAULT_MAX = 1;\r\n\r\nfunction getOrCreateStack(stacks, stacked, meta) {\r\n\tvar key = [\r\n\t\tmeta.type,\r\n\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\r\n\t\tstacked === undefined && meta.stack === undefined ? meta.index : '',\r\n\t\tmeta.stack\r\n\t].join('.');\r\n\r\n\tif (stacks[key] === undefined) {\r\n\t\tstacks[key] = {\r\n\t\t\tpos: [],\r\n\t\t\tneg: []\r\n\t\t};\r\n\t}\r\n\r\n\treturn stacks[key];\r\n}\r\n\r\nfunction stackData(scale, stacks, meta, data) {\r\n\tvar opts = scale.options;\r\n\tvar stacked = opts.stacked;\r\n\tvar stack = getOrCreateStack(stacks, stacked, meta);\r\n\tvar pos = stack.pos;\r\n\tvar neg = stack.neg;\r\n\tvar ilen = data.length;\r\n\tvar i, value;\r\n\r\n\tfor (i = 0; i < ilen; ++i) {\r\n\t\tvalue = scale._parseValue(data[i]);\r\n\t\tif (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tpos[i] = pos[i] || 0;\r\n\t\tneg[i] = neg[i] || 0;\r\n\r\n\t\tif (opts.relativePoints) {\r\n\t\t\tpos[i] = 100;\r\n\t\t} else if (value.min < 0 || value.max < 0) {\r\n\t\t\tneg[i] += value.min;\r\n\t\t} else {\r\n\t\t\tpos[i] += value.max;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction updateMinMax(scale, meta, data) {\r\n\tvar ilen = data.length;\r\n\tvar i, value;\r\n\r\n\tfor (i = 0; i < ilen; ++i) {\r\n\t\tvalue = scale._parseValue(data[i]);\r\n\t\tif (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tscale.min = Math.min(scale.min, value.min);\r\n\t\tscale.max = Math.max(scale.max, value.max);\r\n\t}\r\n}\r\n\r\nvar scale_linear = scale_linearbase.extend({\r\n\tdetermineDataLimits: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar chart = me.chart;\r\n\t\tvar datasets = chart.data.datasets;\r\n\t\tvar metasets = me._getMatchingVisibleMetas();\r\n\t\tvar hasStacks = opts.stacked;\r\n\t\tvar stacks = {};\r\n\t\tvar ilen = metasets.length;\r\n\t\tvar i, meta, data, values;\r\n\r\n\t\tme.min = Number.POSITIVE_INFINITY;\r\n\t\tme.max = Number.NEGATIVE_INFINITY;\r\n\r\n\t\tif (hasStacks === undefined) {\r\n\t\t\tfor (i = 0; !hasStacks && i < ilen; ++i) {\r\n\t\t\t\tmeta = metasets[i];\r\n\t\t\t\thasStacks = meta.stack !== undefined;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\tmeta = metasets[i];\r\n\t\t\tdata = datasets[meta.index].data;\r\n\t\t\tif (hasStacks) {\r\n\t\t\t\tstackData(me, stacks, meta, data);\r\n\t\t\t} else {\r\n\t\t\t\tupdateMinMax(me, meta, data);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\thelpers$1.each(stacks, function(stackValues) {\r\n\t\t\tvalues = stackValues.pos.concat(stackValues.neg);\r\n\t\t\tme.min = Math.min(me.min, helpers$1.min(values));\r\n\t\t\tme.max = Math.max(me.max, helpers$1.max(values));\r\n\t\t});\r\n\r\n\t\tme.min = helpers$1.isFinite(me.min) && !isNaN(me.min) ? me.min : DEFAULT_MIN;\r\n\t\tme.max = helpers$1.isFinite(me.max) && !isNaN(me.max) ? me.max : DEFAULT_MAX;\r\n\r\n\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\r\n\t\tme.handleTickRangeOptions();\r\n\t},\r\n\r\n\t// Returns the maximum number of ticks based on the scale dimension\r\n\t_computeTickLimit: function() {\r\n\t\tvar me = this;\r\n\t\tvar tickFont;\r\n\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\treturn Math.ceil(me.width / 40);\r\n\t\t}\r\n\t\ttickFont = helpers$1.options._parseFont(me.options.ticks);\r\n\t\treturn Math.ceil(me.height / tickFont.lineHeight);\r\n\t},\r\n\r\n\t// Called after the ticks are built. We need\r\n\thandleDirectionalChanges: function() {\r\n\t\tif (!this.isHorizontal()) {\r\n\t\t\t// We are in a vertical orientation. The top value is the highest. So reverse the array\r\n\t\t\tthis.ticks.reverse();\r\n\t\t}\r\n\t},\r\n\r\n\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\treturn this._getScaleLabel(this.chart.data.datasets[datasetIndex].data[index]);\r\n\t},\r\n\r\n\t// Utils\r\n\tgetPixelForValue: function(value) {\r\n\t\tvar me = this;\r\n\t\treturn me.getPixelForDecimal((+me.getRightValue(value) - me._startValue) / me._valueRange);\r\n\t},\r\n\r\n\tgetValueForPixel: function(pixel) {\r\n\t\treturn this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\r\n\t},\r\n\r\n\tgetPixelForTick: function(index) {\r\n\t\tvar ticks = this.ticksAsNumbers;\r\n\t\tif (index < 0 || index > ticks.length - 1) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn this.getPixelForValue(ticks[index]);\r\n\t}\r\n});\r\n\r\n// INTERNAL: static default options, registered in src/index.js\r\nvar _defaults$1 = defaultConfig$1;\nscale_linear._defaults = _defaults$1;\n\nvar valueOrDefault$b = helpers$1.valueOrDefault;\r\nvar log10 = helpers$1.math.log10;\r\n\r\n/**\r\n * Generate a set of logarithmic ticks\r\n * @param generationOptions the options used to generate the ticks\r\n * @param dataRange the range of the data\r\n * @returns {number[]} array of tick values\r\n */\r\nfunction generateTicks$1(generationOptions, dataRange) {\r\n\tvar ticks = [];\r\n\r\n\tvar tickVal = valueOrDefault$b(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\r\n\r\n\tvar endExp = Math.floor(log10(dataRange.max));\r\n\tvar endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\r\n\tvar exp, significand;\r\n\r\n\tif (tickVal === 0) {\r\n\t\texp = Math.floor(log10(dataRange.minNotZero));\r\n\t\tsignificand = Math.floor(dataRange.minNotZero / Math.pow(10, exp));\r\n\r\n\t\tticks.push(tickVal);\r\n\t\ttickVal = significand * Math.pow(10, exp);\r\n\t} else {\r\n\t\texp = Math.floor(log10(tickVal));\r\n\t\tsignificand = Math.floor(tickVal / Math.pow(10, exp));\r\n\t}\r\n\tvar precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\r\n\r\n\tdo {\r\n\t\tticks.push(tickVal);\r\n\r\n\t\t++significand;\r\n\t\tif (significand === 10) {\r\n\t\t\tsignificand = 1;\r\n\t\t\t++exp;\r\n\t\t\tprecision = exp >= 0 ? 1 : precision;\r\n\t\t}\r\n\r\n\t\ttickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\r\n\t} while (exp < endExp || (exp === endExp && significand < endSignificand));\r\n\r\n\tvar lastTick = valueOrDefault$b(generationOptions.max, tickVal);\r\n\tticks.push(lastTick);\r\n\r\n\treturn ticks;\r\n}\r\n\r\nvar defaultConfig$2 = {\r\n\tposition: 'left',\r\n\r\n\t// label settings\r\n\tticks: {\r\n\t\tcallback: core_ticks.formatters.logarithmic\r\n\t}\r\n};\r\n\r\n// TODO(v3): change this to positiveOrDefault\r\nfunction nonNegativeOrDefault(value, defaultValue) {\r\n\treturn helpers$1.isFinite(value) && value >= 0 ? value : defaultValue;\r\n}\r\n\r\nvar scale_logarithmic = core_scale.extend({\r\n\tdetermineDataLimits: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar chart = me.chart;\r\n\t\tvar datasets = chart.data.datasets;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\t\tfunction IDMatches(meta) {\r\n\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\r\n\t\t}\r\n\t\tvar datasetIndex, meta, value, data, i, ilen;\r\n\r\n\t\t// Calculate Range\r\n\t\tme.min = Number.POSITIVE_INFINITY;\r\n\t\tme.max = Number.NEGATIVE_INFINITY;\r\n\t\tme.minNotZero = Number.POSITIVE_INFINITY;\r\n\r\n\t\tvar hasStacks = opts.stacked;\r\n\t\tif (hasStacks === undefined) {\r\n\t\t\tfor (datasetIndex = 0; datasetIndex < datasets.length; datasetIndex++) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\r\n\t\t\t\t\tmeta.stack !== undefined) {\r\n\t\t\t\t\thasStacks = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (opts.stacked || hasStacks) {\r\n\t\t\tvar valuesPerStack = {};\r\n\r\n\t\t\tfor (datasetIndex = 0; datasetIndex < datasets.length; datasetIndex++) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\tvar key = [\r\n\t\t\t\t\tmeta.type,\r\n\t\t\t\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\r\n\t\t\t\t\t((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\r\n\t\t\t\t\tmeta.stack\r\n\t\t\t\t].join('.');\r\n\r\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\r\n\t\t\t\t\tif (valuesPerStack[key] === undefined) {\r\n\t\t\t\t\t\tvaluesPerStack[key] = [];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdata = datasets[datasetIndex].data;\r\n\t\t\t\t\tfor (i = 0, ilen = data.length; i < ilen; i++) {\r\n\t\t\t\t\t\tvar values = valuesPerStack[key];\r\n\t\t\t\t\t\tvalue = me._parseValue(data[i]);\r\n\t\t\t\t\t\t// invalid, hidden and negative values are ignored\r\n\t\t\t\t\t\tif (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden || value.min < 0 || value.max < 0) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tvalues[i] = values[i] || 0;\r\n\t\t\t\t\t\tvalues[i] += value.max;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\thelpers$1.each(valuesPerStack, function(valuesForType) {\r\n\t\t\t\tif (valuesForType.length > 0) {\r\n\t\t\t\t\tvar minVal = helpers$1.min(valuesForType);\r\n\t\t\t\t\tvar maxVal = helpers$1.max(valuesForType);\r\n\t\t\t\t\tme.min = Math.min(me.min, minVal);\r\n\t\t\t\t\tme.max = Math.max(me.max, maxVal);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t} else {\r\n\t\t\tfor (datasetIndex = 0; datasetIndex < datasets.length; datasetIndex++) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(datasetIndex);\r\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\r\n\t\t\t\t\tdata = datasets[datasetIndex].data;\r\n\t\t\t\t\tfor (i = 0, ilen = data.length; i < ilen; i++) {\r\n\t\t\t\t\t\tvalue = me._parseValue(data[i]);\r\n\t\t\t\t\t\t// invalid, hidden and negative values are ignored\r\n\t\t\t\t\t\tif (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden || value.min < 0 || value.max < 0) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tme.min = Math.min(value.min, me.min);\r\n\t\t\t\t\t\tme.max = Math.max(value.max, me.max);\r\n\r\n\t\t\t\t\t\tif (value.min !== 0) {\r\n\t\t\t\t\t\t\tme.minNotZero = Math.min(value.min, me.minNotZero);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme.min = helpers$1.isFinite(me.min) ? me.min : null;\r\n\t\tme.max = helpers$1.isFinite(me.max) ? me.max : null;\r\n\t\tme.minNotZero = helpers$1.isFinite(me.minNotZero) ? me.minNotZero : null;\r\n\r\n\t\t// Common base implementation to handle ticks.min, ticks.max\r\n\t\tthis.handleTickRangeOptions();\r\n\t},\r\n\r\n\thandleTickRangeOptions: function() {\r\n\t\tvar me = this;\r\n\t\tvar tickOpts = me.options.ticks;\r\n\t\tvar DEFAULT_MIN = 1;\r\n\t\tvar DEFAULT_MAX = 10;\r\n\r\n\t\tme.min = nonNegativeOrDefault(tickOpts.min, me.min);\r\n\t\tme.max = nonNegativeOrDefault(tickOpts.max, me.max);\r\n\r\n\t\tif (me.min === me.max) {\r\n\t\t\tif (me.min !== 0 && me.min !== null) {\r\n\t\t\t\tme.min = Math.pow(10, Math.floor(log10(me.min)) - 1);\r\n\t\t\t\tme.max = Math.pow(10, Math.floor(log10(me.max)) + 1);\r\n\t\t\t} else {\r\n\t\t\t\tme.min = DEFAULT_MIN;\r\n\t\t\t\tme.max = DEFAULT_MAX;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (me.min === null) {\r\n\t\t\tme.min = Math.pow(10, Math.floor(log10(me.max)) - 1);\r\n\t\t}\r\n\t\tif (me.max === null) {\r\n\t\t\tme.max = me.min !== 0\r\n\t\t\t\t? Math.pow(10, Math.floor(log10(me.min)) + 1)\r\n\t\t\t\t: DEFAULT_MAX;\r\n\t\t}\r\n\t\tif (me.minNotZero === null) {\r\n\t\t\tif (me.min > 0) {\r\n\t\t\t\tme.minNotZero = me.min;\r\n\t\t\t} else if (me.max < 1) {\r\n\t\t\t\tme.minNotZero = Math.pow(10, Math.floor(log10(me.max)));\r\n\t\t\t} else {\r\n\t\t\t\tme.minNotZero = DEFAULT_MIN;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tbuildTicks: function() {\r\n\t\tvar me = this;\r\n\t\tvar tickOpts = me.options.ticks;\r\n\t\tvar reverse = !me.isHorizontal();\r\n\r\n\t\tvar generationOptions = {\r\n\t\t\tmin: nonNegativeOrDefault(tickOpts.min),\r\n\t\t\tmax: nonNegativeOrDefault(tickOpts.max)\r\n\t\t};\r\n\t\tvar ticks = me.ticks = generateTicks$1(generationOptions, me);\r\n\r\n\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\r\n\t\t// range of the scale\r\n\t\tme.max = helpers$1.max(ticks);\r\n\t\tme.min = helpers$1.min(ticks);\r\n\r\n\t\tif (tickOpts.reverse) {\r\n\t\t\treverse = !reverse;\r\n\t\t\tme.start = me.max;\r\n\t\t\tme.end = me.min;\r\n\t\t} else {\r\n\t\t\tme.start = me.min;\r\n\t\t\tme.end = me.max;\r\n\t\t}\r\n\t\tif (reverse) {\r\n\t\t\tticks.reverse();\r\n\t\t}\r\n\t},\r\n\r\n\tconvertTicksToLabels: function() {\r\n\t\tthis.tickValues = this.ticks.slice();\r\n\r\n\t\tcore_scale.prototype.convertTicksToLabels.call(this);\r\n\t},\r\n\r\n\t// Get the correct tooltip label\r\n\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\treturn this._getScaleLabel(this.chart.data.datasets[datasetIndex].data[index]);\r\n\t},\r\n\r\n\tgetPixelForTick: function(index) {\r\n\t\tvar ticks = this.tickValues;\r\n\t\tif (index < 0 || index > ticks.length - 1) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn this.getPixelForValue(ticks[index]);\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the value of the first tick.\r\n\t * @param {number} value - The minimum not zero value.\r\n\t * @return {number} The first tick value.\r\n\t * @private\r\n\t */\r\n\t_getFirstTickValue: function(value) {\r\n\t\tvar exp = Math.floor(log10(value));\r\n\t\tvar significand = Math.floor(value / Math.pow(10, exp));\r\n\r\n\t\treturn significand * Math.pow(10, exp);\r\n\t},\r\n\r\n\t_configure: function() {\r\n\t\tvar me = this;\r\n\t\tvar start = me.min;\r\n\t\tvar offset = 0;\r\n\r\n\t\tcore_scale.prototype._configure.call(me);\r\n\r\n\t\tif (start === 0) {\r\n\t\t\tstart = me._getFirstTickValue(me.minNotZero);\r\n\t\t\toffset = valueOrDefault$b(me.options.ticks.fontSize, core_defaults.global.defaultFontSize) / me._length;\r\n\t\t}\r\n\r\n\t\tme._startValue = log10(start);\r\n\t\tme._valueOffset = offset;\r\n\t\tme._valueRange = (log10(me.max) - log10(start)) / (1 - offset);\r\n\t},\r\n\r\n\tgetPixelForValue: function(value) {\r\n\t\tvar me = this;\r\n\t\tvar decimal = 0;\r\n\r\n\t\tvalue = +me.getRightValue(value);\r\n\r\n\t\tif (value > me.min && value > 0) {\r\n\t\t\tdecimal = (log10(value) - me._startValue) / me._valueRange + me._valueOffset;\r\n\t\t}\r\n\t\treturn me.getPixelForDecimal(decimal);\r\n\t},\r\n\r\n\tgetValueForPixel: function(pixel) {\r\n\t\tvar me = this;\r\n\t\tvar decimal = me.getDecimalForPixel(pixel);\r\n\t\treturn decimal === 0 && me.min === 0\r\n\t\t\t? 0\r\n\t\t\t: Math.pow(10, me._startValue + (decimal - me._valueOffset) * me._valueRange);\r\n\t}\r\n});\r\n\r\n// INTERNAL: static default options, registered in src/index.js\r\nvar _defaults$2 = defaultConfig$2;\nscale_logarithmic._defaults = _defaults$2;\n\nvar valueOrDefault$c = helpers$1.valueOrDefault;\r\nvar valueAtIndexOrDefault$1 = helpers$1.valueAtIndexOrDefault;\r\nvar resolve$4 = helpers$1.options.resolve;\r\n\r\nvar defaultConfig$3 = {\r\n\tdisplay: true,\r\n\r\n\t// Boolean - Whether to animate scaling the chart from the centre\r\n\tanimate: true,\r\n\tposition: 'chartArea',\r\n\r\n\tangleLines: {\r\n\t\tdisplay: true,\r\n\t\tcolor: 'rgba(0,0,0,0.1)',\r\n\t\tlineWidth: 1,\r\n\t\tborderDash: [],\r\n\t\tborderDashOffset: 0.0\r\n\t},\r\n\r\n\tgridLines: {\r\n\t\tcircular: false\r\n\t},\r\n\r\n\t// label settings\r\n\tticks: {\r\n\t\t// Boolean - Show a backdrop to the scale label\r\n\t\tshowLabelBackdrop: true,\r\n\r\n\t\t// String - The colour of the label backdrop\r\n\t\tbackdropColor: 'rgba(255,255,255,0.75)',\r\n\r\n\t\t// Number - The backdrop padding above & below the label in pixels\r\n\t\tbackdropPaddingY: 2,\r\n\r\n\t\t// Number - The backdrop padding to the side of the label in pixels\r\n\t\tbackdropPaddingX: 2,\r\n\r\n\t\tcallback: core_ticks.formatters.linear\r\n\t},\r\n\r\n\tpointLabels: {\r\n\t\t// Boolean - if true, show point labels\r\n\t\tdisplay: true,\r\n\r\n\t\t// Number - Point label font size in pixels\r\n\t\tfontSize: 10,\r\n\r\n\t\t// Function - Used to convert point labels\r\n\t\tcallback: function(label) {\r\n\t\t\treturn label;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nfunction getTickBackdropHeight(opts) {\r\n\tvar tickOpts = opts.ticks;\r\n\r\n\tif (tickOpts.display && opts.display) {\r\n\t\treturn valueOrDefault$c(tickOpts.fontSize, core_defaults.global.defaultFontSize) + tickOpts.backdropPaddingY * 2;\r\n\t}\r\n\treturn 0;\r\n}\r\n\r\nfunction measureLabelSize(ctx, lineHeight, label) {\r\n\tif (helpers$1.isArray(label)) {\r\n\t\treturn {\r\n\t\t\tw: helpers$1.longestText(ctx, ctx.font, label),\r\n\t\t\th: label.length * lineHeight\r\n\t\t};\r\n\t}\r\n\r\n\treturn {\r\n\t\tw: ctx.measureText(label).width,\r\n\t\th: lineHeight\r\n\t};\r\n}\r\n\r\nfunction determineLimits(angle, pos, size, min, max) {\r\n\tif (angle === min || angle === max) {\r\n\t\treturn {\r\n\t\t\tstart: pos - (size / 2),\r\n\t\t\tend: pos + (size / 2)\r\n\t\t};\r\n\t} else if (angle < min || angle > max) {\r\n\t\treturn {\r\n\t\t\tstart: pos - size,\r\n\t\t\tend: pos\r\n\t\t};\r\n\t}\r\n\r\n\treturn {\r\n\t\tstart: pos,\r\n\t\tend: pos + size\r\n\t};\r\n}\r\n\r\n/**\r\n * Helper function to fit a radial linear scale with point labels\r\n */\r\nfunction fitWithPointLabels(scale) {\r\n\r\n\t// Right, this is really confusing and there is a lot of maths going on here\r\n\t// The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9\r\n\t//\r\n\t// Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif\r\n\t//\r\n\t// Solution:\r\n\t//\r\n\t// We assume the radius of the polygon is half the size of the canvas at first\r\n\t// at each index we check if the text overlaps.\r\n\t//\r\n\t// Where it does, we store that angle and that index.\r\n\t//\r\n\t// After finding the largest index and angle we calculate how much we need to remove\r\n\t// from the shape radius to move the point inwards by that x.\r\n\t//\r\n\t// We average the left and right distances to get the maximum shape radius that can fit in the box\r\n\t// along with labels.\r\n\t//\r\n\t// Once we have that, we can find the centre point for the chart, by taking the x text protrusion\r\n\t// on each side, removing that from the size, halving it and adding the left x protrusion width.\r\n\t//\r\n\t// This will mean we have a shape fitted to the canvas, as large as it can be with the labels\r\n\t// and position it in the most space efficient manner\r\n\t//\r\n\t// https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif\r\n\r\n\tvar plFont = helpers$1.options._parseFont(scale.options.pointLabels);\r\n\r\n\t// Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.\r\n\t// Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points\r\n\tvar furthestLimits = {\r\n\t\tl: 0,\r\n\t\tr: scale.width,\r\n\t\tt: 0,\r\n\t\tb: scale.height - scale.paddingTop\r\n\t};\r\n\tvar furthestAngles = {};\r\n\tvar i, textSize, pointPosition;\r\n\r\n\tscale.ctx.font = plFont.string;\r\n\tscale._pointLabelSizes = [];\r\n\r\n\tvar valueCount = scale.chart.data.labels.length;\r\n\tfor (i = 0; i < valueCount; i++) {\r\n\t\tpointPosition = scale.getPointPosition(i, scale.drawingArea + 5);\r\n\t\ttextSize = measureLabelSize(scale.ctx, plFont.lineHeight, scale.pointLabels[i]);\r\n\t\tscale._pointLabelSizes[i] = textSize;\r\n\r\n\t\t// Add quarter circle to make degree 0 mean top of circle\r\n\t\tvar angleRadians = scale.getIndexAngle(i);\r\n\t\tvar angle = helpers$1.toDegrees(angleRadians) % 360;\r\n\t\tvar hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\r\n\t\tvar vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\r\n\r\n\t\tif (hLimits.start < furthestLimits.l) {\r\n\t\t\tfurthestLimits.l = hLimits.start;\r\n\t\t\tfurthestAngles.l = angleRadians;\r\n\t\t}\r\n\r\n\t\tif (hLimits.end > furthestLimits.r) {\r\n\t\t\tfurthestLimits.r = hLimits.end;\r\n\t\t\tfurthestAngles.r = angleRadians;\r\n\t\t}\r\n\r\n\t\tif (vLimits.start < furthestLimits.t) {\r\n\t\t\tfurthestLimits.t = vLimits.start;\r\n\t\t\tfurthestAngles.t = angleRadians;\r\n\t\t}\r\n\r\n\t\tif (vLimits.end > furthestLimits.b) {\r\n\t\t\tfurthestLimits.b = vLimits.end;\r\n\t\t\tfurthestAngles.b = angleRadians;\r\n\t\t}\r\n\t}\r\n\r\n\tscale.setReductions(scale.drawingArea, furthestLimits, furthestAngles);\r\n}\r\n\r\nfunction getTextAlignForAngle(angle) {\r\n\tif (angle === 0 || angle === 180) {\r\n\t\treturn 'center';\r\n\t} else if (angle < 180) {\r\n\t\treturn 'left';\r\n\t}\r\n\r\n\treturn 'right';\r\n}\r\n\r\nfunction fillText(ctx, text, position, lineHeight) {\r\n\tvar y = position.y + lineHeight / 2;\r\n\tvar i, ilen;\r\n\r\n\tif (helpers$1.isArray(text)) {\r\n\t\tfor (i = 0, ilen = text.length; i < ilen; ++i) {\r\n\t\t\tctx.fillText(text[i], position.x, y);\r\n\t\t\ty += lineHeight;\r\n\t\t}\r\n\t} else {\r\n\t\tctx.fillText(text, position.x, y);\r\n\t}\r\n}\r\n\r\nfunction adjustPointPositionForLabelHeight(angle, textSize, position) {\r\n\tif (angle === 90 || angle === 270) {\r\n\t\tposition.y -= (textSize.h / 2);\r\n\t} else if (angle > 270 || angle < 90) {\r\n\t\tposition.y -= textSize.h;\r\n\t}\r\n}\r\n\r\nfunction drawPointLabels(scale) {\r\n\tvar ctx = scale.ctx;\r\n\tvar opts = scale.options;\r\n\tvar pointLabelOpts = opts.pointLabels;\r\n\tvar tickBackdropHeight = getTickBackdropHeight(opts);\r\n\tvar outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max);\r\n\tvar plFont = helpers$1.options._parseFont(pointLabelOpts);\r\n\r\n\tctx.save();\r\n\r\n\tctx.font = plFont.string;\r\n\tctx.textBaseline = 'middle';\r\n\r\n\tfor (var i = scale.chart.data.labels.length - 1; i >= 0; i--) {\r\n\t\t// Extra pixels out for some label spacing\r\n\t\tvar extra = (i === 0 ? tickBackdropHeight / 2 : 0);\r\n\t\tvar pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + 5);\r\n\r\n\t\t// Keep this in loop since we may support array properties here\r\n\t\tvar pointLabelFontColor = valueAtIndexOrDefault$1(pointLabelOpts.fontColor, i, core_defaults.global.defaultFontColor);\r\n\t\tctx.fillStyle = pointLabelFontColor;\r\n\r\n\t\tvar angleRadians = scale.getIndexAngle(i);\r\n\t\tvar angle = helpers$1.toDegrees(angleRadians);\r\n\t\tctx.textAlign = getTextAlignForAngle(angle);\r\n\t\tadjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition);\r\n\t\tfillText(ctx, scale.pointLabels[i], pointLabelPosition, plFont.lineHeight);\r\n\t}\r\n\tctx.restore();\r\n}\r\n\r\nfunction drawRadiusLine(scale, gridLineOpts, radius, index) {\r\n\tvar ctx = scale.ctx;\r\n\tvar circular = gridLineOpts.circular;\r\n\tvar valueCount = scale.chart.data.labels.length;\r\n\tvar lineColor = valueAtIndexOrDefault$1(gridLineOpts.color, index - 1);\r\n\tvar lineWidth = valueAtIndexOrDefault$1(gridLineOpts.lineWidth, index - 1);\r\n\tvar pointPosition;\r\n\r\n\tif ((!circular && !valueCount) || !lineColor || !lineWidth) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tctx.save();\r\n\tctx.strokeStyle = lineColor;\r\n\tctx.lineWidth = lineWidth;\r\n\tif (ctx.setLineDash) {\r\n\t\tctx.setLineDash(gridLineOpts.borderDash || []);\r\n\t\tctx.lineDashOffset = gridLineOpts.borderDashOffset || 0.0;\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\tif (circular) {\r\n\t\t// Draw circular arcs between the points\r\n\t\tctx.arc(scale.xCenter, scale.yCenter, radius, 0, Math.PI * 2);\r\n\t} else {\r\n\t\t// Draw straight lines connecting each index\r\n\t\tpointPosition = scale.getPointPosition(0, radius);\r\n\t\tctx.moveTo(pointPosition.x, pointPosition.y);\r\n\r\n\t\tfor (var i = 1; i < valueCount; i++) {\r\n\t\t\tpointPosition = scale.getPointPosition(i, radius);\r\n\t\t\tctx.lineTo(pointPosition.x, pointPosition.y);\r\n\t\t}\r\n\t}\r\n\tctx.closePath();\r\n\tctx.stroke();\r\n\tctx.restore();\r\n}\r\n\r\nfunction numberOrZero(param) {\r\n\treturn helpers$1.isNumber(param) ? param : 0;\r\n}\r\n\r\nvar scale_radialLinear = scale_linearbase.extend({\r\n\tsetDimensions: function() {\r\n\t\tvar me = this;\r\n\r\n\t\t// Set the unconstrained dimension before label rotation\r\n\t\tme.width = me.maxWidth;\r\n\t\tme.height = me.maxHeight;\r\n\t\tme.paddingTop = getTickBackdropHeight(me.options) / 2;\r\n\t\tme.xCenter = Math.floor(me.width / 2);\r\n\t\tme.yCenter = Math.floor((me.height - me.paddingTop) / 2);\r\n\t\tme.drawingArea = Math.min(me.height - me.paddingTop, me.width) / 2;\r\n\t},\r\n\r\n\tdetermineDataLimits: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar min = Number.POSITIVE_INFINITY;\r\n\t\tvar max = Number.NEGATIVE_INFINITY;\r\n\r\n\t\thelpers$1.each(chart.data.datasets, function(dataset, datasetIndex) {\r\n\t\t\tif (chart.isDatasetVisible(datasetIndex)) {\r\n\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\r\n\r\n\t\t\t\thelpers$1.each(dataset.data, function(rawValue, index) {\r\n\t\t\t\t\tvar value = +me.getRightValue(rawValue);\r\n\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tmin = Math.min(value, min);\r\n\t\t\t\t\tmax = Math.max(value, max);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tme.min = (min === Number.POSITIVE_INFINITY ? 0 : min);\r\n\t\tme.max = (max === Number.NEGATIVE_INFINITY ? 0 : max);\r\n\r\n\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\r\n\t\tme.handleTickRangeOptions();\r\n\t},\r\n\r\n\t// Returns the maximum number of ticks based on the scale dimension\r\n\t_computeTickLimit: function() {\r\n\t\treturn Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\r\n\t},\r\n\r\n\tconvertTicksToLabels: function() {\r\n\t\tvar me = this;\r\n\r\n\t\tscale_linearbase.prototype.convertTicksToLabels.call(me);\r\n\r\n\t\t// Point labels\r\n\t\tme.pointLabels = me.chart.data.labels.map(function() {\r\n\t\t\tvar label = helpers$1.callback(me.options.pointLabels.callback, arguments, me);\r\n\t\t\treturn label || label === 0 ? label : '';\r\n\t\t});\r\n\t},\r\n\r\n\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\r\n\t},\r\n\r\n\tfit: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\r\n\t\tif (opts.display && opts.pointLabels.display) {\r\n\t\t\tfitWithPointLabels(me);\r\n\t\t} else {\r\n\t\t\tme.setCenterPoint(0, 0, 0, 0);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Set radius reductions and determine new radius and center point\r\n\t * @private\r\n\t */\r\n\tsetReductions: function(largestPossibleRadius, furthestLimits, furthestAngles) {\r\n\t\tvar me = this;\r\n\t\tvar radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l);\r\n\t\tvar radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r);\r\n\t\tvar radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t);\r\n\t\tvar radiusReductionBottom = -Math.max(furthestLimits.b - (me.height - me.paddingTop), 0) / Math.cos(furthestAngles.b);\r\n\r\n\t\tradiusReductionLeft = numberOrZero(radiusReductionLeft);\r\n\t\tradiusReductionRight = numberOrZero(radiusReductionRight);\r\n\t\tradiusReductionTop = numberOrZero(radiusReductionTop);\r\n\t\tradiusReductionBottom = numberOrZero(radiusReductionBottom);\r\n\r\n\t\tme.drawingArea = Math.min(\r\n\t\t\tMath.floor(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2),\r\n\t\t\tMath.floor(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2));\r\n\t\tme.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom);\r\n\t},\r\n\r\n\tsetCenterPoint: function(leftMovement, rightMovement, topMovement, bottomMovement) {\r\n\t\tvar me = this;\r\n\t\tvar maxRight = me.width - rightMovement - me.drawingArea;\r\n\t\tvar maxLeft = leftMovement + me.drawingArea;\r\n\t\tvar maxTop = topMovement + me.drawingArea;\r\n\t\tvar maxBottom = (me.height - me.paddingTop) - bottomMovement - me.drawingArea;\r\n\r\n\t\tme.xCenter = Math.floor(((maxLeft + maxRight) / 2) + me.left);\r\n\t\tme.yCenter = Math.floor(((maxTop + maxBottom) / 2) + me.top + me.paddingTop);\r\n\t},\r\n\r\n\tgetIndexAngle: function(index) {\r\n\t\tvar chart = this.chart;\r\n\t\tvar angleMultiplier = 360 / chart.data.labels.length;\r\n\t\tvar options = chart.options || {};\r\n\t\tvar startAngle = options.startAngle || 0;\r\n\r\n\t\t// Start from the top instead of right, so remove a quarter of the circle\r\n\t\tvar angle = (index * angleMultiplier + startAngle) % 360;\r\n\r\n\t\treturn (angle < 0 ? angle + 360 : angle) * Math.PI * 2 / 360;\r\n\t},\r\n\r\n\tgetDistanceFromCenterForValue: function(value) {\r\n\t\tvar me = this;\r\n\r\n\t\tif (helpers$1.isNullOrUndef(value)) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\t// Take into account half font size + the yPadding of the top value\r\n\t\tvar scalingFactor = me.drawingArea / (me.max - me.min);\r\n\t\tif (me.options.ticks.reverse) {\r\n\t\t\treturn (me.max - value) * scalingFactor;\r\n\t\t}\r\n\t\treturn (value - me.min) * scalingFactor;\r\n\t},\r\n\r\n\tgetPointPosition: function(index, distanceFromCenter) {\r\n\t\tvar me = this;\r\n\t\tvar thisAngle = me.getIndexAngle(index) - (Math.PI / 2);\r\n\t\treturn {\r\n\t\t\tx: Math.cos(thisAngle) * distanceFromCenter + me.xCenter,\r\n\t\t\ty: Math.sin(thisAngle) * distanceFromCenter + me.yCenter\r\n\t\t};\r\n\t},\r\n\r\n\tgetPointPositionForValue: function(index, value) {\r\n\t\treturn this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\r\n\t},\r\n\r\n\tgetBasePosition: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar min = me.min;\r\n\t\tvar max = me.max;\r\n\r\n\t\treturn me.getPointPositionForValue(index || 0,\r\n\t\t\tme.beginAtZero ? 0 :\r\n\t\t\tmin < 0 && max < 0 ? max :\r\n\t\t\tmin > 0 && max > 0 ? min :\r\n\t\t\t0);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_drawGrid: function() {\r\n\t\tvar me = this;\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar opts = me.options;\r\n\t\tvar gridLineOpts = opts.gridLines;\r\n\t\tvar angleLineOpts = opts.angleLines;\r\n\t\tvar lineWidth = valueOrDefault$c(angleLineOpts.lineWidth, gridLineOpts.lineWidth);\r\n\t\tvar lineColor = valueOrDefault$c(angleLineOpts.color, gridLineOpts.color);\r\n\t\tvar i, offset, position;\r\n\r\n\t\tif (opts.pointLabels.display) {\r\n\t\t\tdrawPointLabels(me);\r\n\t\t}\r\n\r\n\t\tif (gridLineOpts.display) {\r\n\t\t\thelpers$1.each(me.ticks, function(label, index) {\r\n\t\t\t\tif (index !== 0) {\r\n\t\t\t\t\toffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]);\r\n\t\t\t\t\tdrawRadiusLine(me, gridLineOpts, offset, index);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (angleLineOpts.display && lineWidth && lineColor) {\r\n\t\t\tctx.save();\r\n\t\t\tctx.lineWidth = lineWidth;\r\n\t\t\tctx.strokeStyle = lineColor;\r\n\t\t\tif (ctx.setLineDash) {\r\n\t\t\t\tctx.setLineDash(resolve$4([angleLineOpts.borderDash, gridLineOpts.borderDash, []]));\r\n\t\t\t\tctx.lineDashOffset = resolve$4([angleLineOpts.borderDashOffset, gridLineOpts.borderDashOffset, 0.0]);\r\n\t\t\t}\r\n\r\n\t\t\tfor (i = me.chart.data.labels.length - 1; i >= 0; i--) {\r\n\t\t\t\toffset = me.getDistanceFromCenterForValue(opts.ticks.reverse ? me.min : me.max);\r\n\t\t\t\tposition = me.getPointPosition(i, offset);\r\n\t\t\t\tctx.beginPath();\r\n\t\t\t\tctx.moveTo(me.xCenter, me.yCenter);\r\n\t\t\t\tctx.lineTo(position.x, position.y);\r\n\t\t\t\tctx.stroke();\r\n\t\t\t}\r\n\r\n\t\t\tctx.restore();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_drawLabels: function() {\r\n\t\tvar me = this;\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar opts = me.options;\r\n\t\tvar tickOpts = opts.ticks;\r\n\r\n\t\tif (!tickOpts.display) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar startAngle = me.getIndexAngle(0);\r\n\t\tvar tickFont = helpers$1.options._parseFont(tickOpts);\r\n\t\tvar tickFontColor = valueOrDefault$c(tickOpts.fontColor, core_defaults.global.defaultFontColor);\r\n\t\tvar offset, width;\r\n\r\n\t\tctx.save();\r\n\t\tctx.font = tickFont.string;\r\n\t\tctx.translate(me.xCenter, me.yCenter);\r\n\t\tctx.rotate(startAngle);\r\n\t\tctx.textAlign = 'center';\r\n\t\tctx.textBaseline = 'middle';\r\n\r\n\t\thelpers$1.each(me.ticks, function(label, index) {\r\n\t\t\tif (index === 0 && !tickOpts.reverse) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\toffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]);\r\n\r\n\t\t\tif (tickOpts.showLabelBackdrop) {\r\n\t\t\t\twidth = ctx.measureText(label).width;\r\n\t\t\t\tctx.fillStyle = tickOpts.backdropColor;\r\n\r\n\t\t\t\tctx.fillRect(\r\n\t\t\t\t\t-width / 2 - tickOpts.backdropPaddingX,\r\n\t\t\t\t\t-offset - tickFont.size / 2 - tickOpts.backdropPaddingY,\r\n\t\t\t\t\twidth + tickOpts.backdropPaddingX * 2,\r\n\t\t\t\t\ttickFont.size + tickOpts.backdropPaddingY * 2\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tctx.fillStyle = tickFontColor;\r\n\t\t\tctx.fillText(label, 0, -offset);\r\n\t\t});\r\n\r\n\t\tctx.restore();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_drawTitle: helpers$1.noop\r\n});\r\n\r\n// INTERNAL: static default options, registered in src/index.js\r\nvar _defaults$3 = defaultConfig$3;\nscale_radialLinear._defaults = _defaults$3;\n\nvar deprecated$1 = helpers$1._deprecated;\r\nvar resolve$5 = helpers$1.options.resolve;\r\nvar valueOrDefault$d = helpers$1.valueOrDefault;\r\n\r\n// Integer constants are from the ES6 spec.\r\nvar MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;\r\nvar MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\r\n\r\nvar INTERVALS = {\r\n\tmillisecond: {\r\n\t\tcommon: true,\r\n\t\tsize: 1,\r\n\t\tsteps: 1000\r\n\t},\r\n\tsecond: {\r\n\t\tcommon: true,\r\n\t\tsize: 1000,\r\n\t\tsteps: 60\r\n\t},\r\n\tminute: {\r\n\t\tcommon: true,\r\n\t\tsize: 60000,\r\n\t\tsteps: 60\r\n\t},\r\n\thour: {\r\n\t\tcommon: true,\r\n\t\tsize: 3600000,\r\n\t\tsteps: 24\r\n\t},\r\n\tday: {\r\n\t\tcommon: true,\r\n\t\tsize: 86400000,\r\n\t\tsteps: 30\r\n\t},\r\n\tweek: {\r\n\t\tcommon: false,\r\n\t\tsize: 604800000,\r\n\t\tsteps: 4\r\n\t},\r\n\tmonth: {\r\n\t\tcommon: true,\r\n\t\tsize: 2.628e9,\r\n\t\tsteps: 12\r\n\t},\r\n\tquarter: {\r\n\t\tcommon: false,\r\n\t\tsize: 7.884e9,\r\n\t\tsteps: 4\r\n\t},\r\n\tyear: {\r\n\t\tcommon: true,\r\n\t\tsize: 3.154e10\r\n\t}\r\n};\r\n\r\nvar UNITS = Object.keys(INTERVALS);\r\n\r\nfunction sorter(a, b) {\r\n\treturn a - b;\r\n}\r\n\r\nfunction arrayUnique(items) {\r\n\tvar hash = {};\r\n\tvar out = [];\r\n\tvar i, ilen, item;\r\n\r\n\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\r\n\t\titem = items[i];\r\n\t\tif (!hash[item]) {\r\n\t\t\thash[item] = true;\r\n\t\t\tout.push(item);\r\n\t\t}\r\n\t}\r\n\r\n\treturn out;\r\n}\r\n\r\nfunction getMin(options) {\r\n\treturn helpers$1.valueOrDefault(options.time.min, options.ticks.min);\r\n}\r\n\r\nfunction getMax(options) {\r\n\treturn helpers$1.valueOrDefault(options.time.max, options.ticks.max);\r\n}\r\n\r\n/**\r\n * Returns an array of {time, pos} objects used to interpolate a specific `time` or position\r\n * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is\r\n * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other\r\n * extremity (left + width or top + height). Note that it would be more optimized to directly\r\n * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need\r\n * to create the lookup table. The table ALWAYS contains at least two items: min and max.\r\n *\r\n * @param {number[]} timestamps - timestamps sorted from lowest to highest.\r\n * @param {string} distribution - If 'linear', timestamps will be spread linearly along the min\r\n * and max range, so basically, the table will contains only two items: {min, 0} and {max, 1}.\r\n * If 'series', timestamps will be positioned at the same distance from each other. In this\r\n * case, only timestamps that break the time linearity are registered, meaning that in the\r\n * best case, all timestamps are linear, the table contains only min and max.\r\n */\r\nfunction buildLookupTable(timestamps, min, max, distribution) {\r\n\tif (distribution === 'linear' || !timestamps.length) {\r\n\t\treturn [\r\n\t\t\t{time: min, pos: 0},\r\n\t\t\t{time: max, pos: 1}\r\n\t\t];\r\n\t}\r\n\r\n\tvar table = [];\r\n\tvar items = [min];\r\n\tvar i, ilen, prev, curr, next;\r\n\r\n\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\r\n\t\tcurr = timestamps[i];\r\n\t\tif (curr > min && curr < max) {\r\n\t\t\titems.push(curr);\r\n\t\t}\r\n\t}\r\n\r\n\titems.push(max);\r\n\r\n\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\r\n\t\tnext = items[i + 1];\r\n\t\tprev = items[i - 1];\r\n\t\tcurr = items[i];\r\n\r\n\t\t// only add points that breaks the scale linearity\r\n\t\tif (prev === undefined || next === undefined || Math.round((next + prev) / 2) !== curr) {\r\n\t\t\ttable.push({time: curr, pos: i / (ilen - 1)});\r\n\t\t}\r\n\t}\r\n\r\n\treturn table;\r\n}\r\n\r\n// @see adapted from https://www.anujgakhar.com/2014/03/01/binary-search-in-javascript/\r\nfunction lookup(table, key, value) {\r\n\tvar lo = 0;\r\n\tvar hi = table.length - 1;\r\n\tvar mid, i0, i1;\r\n\r\n\twhile (lo >= 0 && lo <= hi) {\r\n\t\tmid = (lo + hi) >> 1;\r\n\t\ti0 = table[mid - 1] || null;\r\n\t\ti1 = table[mid];\r\n\r\n\t\tif (!i0) {\r\n\t\t\t// given value is outside table (before first item)\r\n\t\t\treturn {lo: null, hi: i1};\r\n\t\t} else if (i1[key] < value) {\r\n\t\t\tlo = mid + 1;\r\n\t\t} else if (i0[key] > value) {\r\n\t\t\thi = mid - 1;\r\n\t\t} else {\r\n\t\t\treturn {lo: i0, hi: i1};\r\n\t\t}\r\n\t}\r\n\r\n\t// given value is outside table (after last item)\r\n\treturn {lo: i1, hi: null};\r\n}\r\n\r\n/**\r\n * Linearly interpolates the given source `value` using the table items `skey` values and\r\n * returns the associated `tkey` value. For example, interpolate(table, 'time', 42, 'pos')\r\n * returns the position for a timestamp equal to 42. If value is out of bounds, values at\r\n * index [0, 1] or [n - 1, n] are used for the interpolation.\r\n */\r\nfunction interpolate$1(table, skey, sval, tkey) {\r\n\tvar range = lookup(table, skey, sval);\r\n\r\n\t// Note: the lookup table ALWAYS contains at least 2 items (min and max)\r\n\tvar prev = !range.lo ? table[0] : !range.hi ? table[table.length - 2] : range.lo;\r\n\tvar next = !range.lo ? table[1] : !range.hi ? table[table.length - 1] : range.hi;\r\n\r\n\tvar span = next[skey] - prev[skey];\r\n\tvar ratio = span ? (sval - prev[skey]) / span : 0;\r\n\tvar offset = (next[tkey] - prev[tkey]) * ratio;\r\n\r\n\treturn prev[tkey] + offset;\r\n}\r\n\r\nfunction toTimestamp(scale, input) {\r\n\tvar adapter = scale._adapter;\r\n\tvar options = scale.options.time;\r\n\tvar parser = options.parser;\r\n\tvar format = parser || options.format;\r\n\tvar value = input;\r\n\r\n\tif (typeof parser === 'function') {\r\n\t\tvalue = parser(value);\r\n\t}\r\n\r\n\t// Only parse if its not a timestamp already\r\n\tif (!helpers$1.isFinite(value)) {\r\n\t\tvalue = typeof format === 'string'\r\n\t\t\t? adapter.parse(value, format)\r\n\t\t\t: adapter.parse(value);\r\n\t}\r\n\r\n\tif (value !== null) {\r\n\t\treturn +value;\r\n\t}\r\n\r\n\t// Labels are in an incompatible format and no `parser` has been provided.\r\n\t// The user might still use the deprecated `format` option for parsing.\r\n\tif (!parser && typeof format === 'function') {\r\n\t\tvalue = format(input);\r\n\r\n\t\t// `format` could return something else than a timestamp, if so, parse it\r\n\t\tif (!helpers$1.isFinite(value)) {\r\n\t\t\tvalue = adapter.parse(value);\r\n\t\t}\r\n\t}\r\n\r\n\treturn value;\r\n}\r\n\r\nfunction parse(scale, input) {\r\n\tif (helpers$1.isNullOrUndef(input)) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tvar options = scale.options.time;\r\n\tvar value = toTimestamp(scale, scale.getRightValue(input));\r\n\tif (value === null) {\r\n\t\treturn value;\r\n\t}\r\n\r\n\tif (options.round) {\r\n\t\tvalue = +scale._adapter.startOf(value, options.round);\r\n\t}\r\n\r\n\treturn value;\r\n}\r\n\r\n/**\r\n * Figures out what unit results in an appropriate number of auto-generated ticks\r\n */\r\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\r\n\tvar ilen = UNITS.length;\r\n\tvar i, interval, factor;\r\n\r\n\tfor (i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\r\n\t\tinterval = INTERVALS[UNITS[i]];\r\n\t\tfactor = interval.steps ? interval.steps : MAX_INTEGER;\r\n\r\n\t\tif (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\r\n\t\t\treturn UNITS[i];\r\n\t\t}\r\n\t}\r\n\r\n\treturn UNITS[ilen - 1];\r\n}\r\n\r\n/**\r\n * Figures out what unit to format a set of ticks with\r\n */\r\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\r\n\tvar i, unit;\r\n\r\n\tfor (i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\r\n\t\tunit = UNITS[i];\r\n\t\tif (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\r\n\t\t\treturn unit;\r\n\t\t}\r\n\t}\r\n\r\n\treturn UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\r\n}\r\n\r\nfunction determineMajorUnit(unit) {\r\n\tfor (var i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\r\n\t\tif (INTERVALS[UNITS[i]].common) {\r\n\t\t\treturn UNITS[i];\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Generates a maximum of `capacity` timestamps between min and max, rounded to the\r\n * `minor` unit using the given scale time `options`.\r\n * Important: this method can return ticks outside the min and max range, it's the\r\n * responsibility of the calling code to clamp values if needed.\r\n */\r\nfunction generate(scale, min, max, capacity) {\r\n\tvar adapter = scale._adapter;\r\n\tvar options = scale.options;\r\n\tvar timeOpts = options.time;\r\n\tvar minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, capacity);\r\n\tvar stepSize = resolve$5([timeOpts.stepSize, timeOpts.unitStepSize, 1]);\r\n\tvar weekday = minor === 'week' ? timeOpts.isoWeekday : false;\r\n\tvar first = min;\r\n\tvar ticks = [];\r\n\tvar time;\r\n\r\n\t// For 'week' unit, handle the first day of week option\r\n\tif (weekday) {\r\n\t\tfirst = +adapter.startOf(first, 'isoWeek', weekday);\r\n\t}\r\n\r\n\t// Align first ticks on unit\r\n\tfirst = +adapter.startOf(first, weekday ? 'day' : minor);\r\n\r\n\t// Prevent browser from freezing in case user options request millions of milliseconds\r\n\tif (adapter.diff(max, min, minor) > 100000 * stepSize) {\r\n\t\tthrow min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor;\r\n\t}\r\n\r\n\tfor (time = first; time < max; time = +adapter.add(time, stepSize, minor)) {\r\n\t\tticks.push(time);\r\n\t}\r\n\r\n\tif (time === max || options.bounds === 'ticks') {\r\n\t\tticks.push(time);\r\n\t}\r\n\r\n\treturn ticks;\r\n}\r\n\r\n/**\r\n * Returns the start and end offsets from edges in the form of {start, end}\r\n * where each value is a relative width to the scale and ranges between 0 and 1.\r\n * They add extra margins on the both sides by scaling down the original scale.\r\n * Offsets are added when the `offset` option is true.\r\n */\r\nfunction computeOffsets(table, ticks, min, max, options) {\r\n\tvar start = 0;\r\n\tvar end = 0;\r\n\tvar first, last;\r\n\r\n\tif (options.offset && ticks.length) {\r\n\t\tfirst = interpolate$1(table, 'time', ticks[0], 'pos');\r\n\t\tif (ticks.length === 1) {\r\n\t\t\tstart = 1 - first;\r\n\t\t} else {\r\n\t\t\tstart = (interpolate$1(table, 'time', ticks[1], 'pos') - first) / 2;\r\n\t\t}\r\n\t\tlast = interpolate$1(table, 'time', ticks[ticks.length - 1], 'pos');\r\n\t\tif (ticks.length === 1) {\r\n\t\t\tend = last;\r\n\t\t} else {\r\n\t\t\tend = (last - interpolate$1(table, 'time', ticks[ticks.length - 2], 'pos')) / 2;\r\n\t\t}\r\n\t}\r\n\r\n\treturn {start: start, end: end, factor: 1 / (start + 1 + end)};\r\n}\r\n\r\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\r\n\tvar adapter = scale._adapter;\r\n\tvar first = +adapter.startOf(ticks[0].value, majorUnit);\r\n\tvar last = ticks[ticks.length - 1].value;\r\n\tvar major, index;\r\n\r\n\tfor (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\r\n\t\tindex = map[major];\r\n\t\tif (index >= 0) {\r\n\t\t\tticks[index].major = true;\r\n\t\t}\r\n\t}\r\n\treturn ticks;\r\n}\r\n\r\nfunction ticksFromTimestamps(scale, values, majorUnit) {\r\n\tvar ticks = [];\r\n\tvar map = {};\r\n\tvar ilen = values.length;\r\n\tvar i, value;\r\n\r\n\tfor (i = 0; i < ilen; ++i) {\r\n\t\tvalue = values[i];\r\n\t\tmap[value] = i;\r\n\r\n\t\tticks.push({\r\n\t\t\tvalue: value,\r\n\t\t\tmajor: false\r\n\t\t});\r\n\t}\r\n\r\n\t// We set the major ticks separately from the above loop because calling startOf for every tick\r\n\t// is expensive when there is a large number of ticks\r\n\treturn (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\r\n}\r\n\r\nvar defaultConfig$4 = {\r\n\tposition: 'bottom',\r\n\r\n\t/**\r\n\t * Data distribution along the scale:\r\n\t * - 'linear': data are spread according to their time (distances can vary),\r\n\t * - 'series': data are spread at the same distance from each other.\r\n\t * @see https://github.com/chartjs/Chart.js/pull/4507\r\n\t * @since 2.7.0\r\n\t */\r\n\tdistribution: 'linear',\r\n\r\n\t/**\r\n\t * Scale boundary strategy (bypassed by min/max time options)\r\n\t * - `data`: make sure data are fully visible, ticks outside are removed\r\n\t * - `ticks`: make sure ticks are fully visible, data outside are truncated\r\n\t * @see https://github.com/chartjs/Chart.js/pull/4556\r\n\t * @since 2.7.0\r\n\t */\r\n\tbounds: 'data',\r\n\r\n\tadapters: {},\r\n\ttime: {\r\n\t\tparser: false, // false == a pattern string from https://momentjs.com/docs/#/parsing/string-format/ or a custom callback that converts its argument to a moment\r\n\t\tunit: false, // false == automatic or override with week, month, year, etc.\r\n\t\tround: false, // none, or override with week, month, year, etc.\r\n\t\tdisplayFormat: false, // DEPRECATED\r\n\t\tisoWeekday: false, // override week start day - see https://momentjs.com/docs/#/get-set/iso-weekday/\r\n\t\tminUnit: 'millisecond',\r\n\t\tdisplayFormats: {}\r\n\t},\r\n\tticks: {\r\n\t\tautoSkip: false,\r\n\r\n\t\t/**\r\n\t\t * Ticks generation input values:\r\n\t\t * - 'auto': generates \"optimal\" ticks based on scale size and time options.\r\n\t\t * - 'data': generates ticks from data (including labels from data {t|x|y} objects).\r\n\t\t * - 'labels': generates ticks from user given `data.labels` values ONLY.\r\n\t\t * @see https://github.com/chartjs/Chart.js/pull/4507\r\n\t\t * @since 2.7.0\r\n\t\t */\r\n\t\tsource: 'auto',\r\n\r\n\t\tmajor: {\r\n\t\t\tenabled: false\r\n\t\t}\r\n\t}\r\n};\r\n\r\nvar scale_time = core_scale.extend({\r\n\tinitialize: function() {\r\n\t\tthis.mergeTicksOptions();\r\n\t\tcore_scale.prototype.initialize.call(this);\r\n\t},\r\n\r\n\tupdate: function() {\r\n\t\tvar me = this;\r\n\t\tvar options = me.options;\r\n\t\tvar time = options.time || (options.time = {});\r\n\t\tvar adapter = me._adapter = new core_adapters._date(options.adapters.date);\r\n\r\n\t\t// DEPRECATIONS: output a message only one time per update\r\n\t\tdeprecated$1('time scale', time.format, 'time.format', 'time.parser');\r\n\t\tdeprecated$1('time scale', time.min, 'time.min', 'ticks.min');\r\n\t\tdeprecated$1('time scale', time.max, 'time.max', 'ticks.max');\r\n\r\n\t\t// Backward compatibility: before introducing adapter, `displayFormats` was\r\n\t\t// supposed to contain *all* unit/string pairs but this can't be resolved\r\n\t\t// when loading the scale (adapters are loaded afterward), so let's populate\r\n\t\t// missing formats on update\r\n\t\thelpers$1.mergeIf(time.displayFormats, adapter.formats());\r\n\r\n\t\treturn core_scale.prototype.update.apply(me, arguments);\r\n\t},\r\n\r\n\t/**\r\n\t * Allows data to be referenced via 't' attribute\r\n\t */\r\n\tgetRightValue: function(rawValue) {\r\n\t\tif (rawValue && rawValue.t !== undefined) {\r\n\t\t\trawValue = rawValue.t;\r\n\t\t}\r\n\t\treturn core_scale.prototype.getRightValue.call(this, rawValue);\r\n\t},\r\n\r\n\tdetermineDataLimits: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar adapter = me._adapter;\r\n\t\tvar options = me.options;\r\n\t\tvar unit = options.time.unit || 'day';\r\n\t\tvar min = MAX_INTEGER;\r\n\t\tvar max = MIN_INTEGER;\r\n\t\tvar timestamps = [];\r\n\t\tvar datasets = [];\r\n\t\tvar labels = [];\r\n\t\tvar i, j, ilen, jlen, data, timestamp, labelsAdded;\r\n\t\tvar dataLabels = me._getLabels();\r\n\r\n\t\tfor (i = 0, ilen = dataLabels.length; i < ilen; ++i) {\r\n\t\t\tlabels.push(parse(me, dataLabels[i]));\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\tif (chart.isDatasetVisible(i)) {\r\n\t\t\t\tdata = chart.data.datasets[i].data;\r\n\r\n\t\t\t\t// Let's consider that all data have the same format.\r\n\t\t\t\tif (helpers$1.isObject(data[0])) {\r\n\t\t\t\t\tdatasets[i] = [];\r\n\r\n\t\t\t\t\tfor (j = 0, jlen = data.length; j < jlen; ++j) {\r\n\t\t\t\t\t\ttimestamp = parse(me, data[j]);\r\n\t\t\t\t\t\ttimestamps.push(timestamp);\r\n\t\t\t\t\t\tdatasets[i][j] = timestamp;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdatasets[i] = labels.slice(0);\r\n\t\t\t\t\tif (!labelsAdded) {\r\n\t\t\t\t\t\ttimestamps = timestamps.concat(labels);\r\n\t\t\t\t\t\tlabelsAdded = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tdatasets[i] = [];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (labels.length) {\r\n\t\t\tmin = Math.min(min, labels[0]);\r\n\t\t\tmax = Math.max(max, labels[labels.length - 1]);\r\n\t\t}\r\n\r\n\t\tif (timestamps.length) {\r\n\t\t\ttimestamps = ilen > 1 ? arrayUnique(timestamps).sort(sorter) : timestamps.sort(sorter);\r\n\t\t\tmin = Math.min(min, timestamps[0]);\r\n\t\t\tmax = Math.max(max, timestamps[timestamps.length - 1]);\r\n\t\t}\r\n\r\n\t\tmin = parse(me, getMin(options)) || min;\r\n\t\tmax = parse(me, getMax(options)) || max;\r\n\r\n\t\t// In case there is no valid min/max, set limits based on unit time option\r\n\t\tmin = min === MAX_INTEGER ? +adapter.startOf(Date.now(), unit) : min;\r\n\t\tmax = max === MIN_INTEGER ? +adapter.endOf(Date.now(), unit) + 1 : max;\r\n\r\n\t\t// Make sure that max is strictly higher than min (required by the lookup table)\r\n\t\tme.min = Math.min(min, max);\r\n\t\tme.max = Math.max(min + 1, max);\r\n\r\n\t\t// PRIVATE\r\n\t\tme._table = [];\r\n\t\tme._timestamps = {\r\n\t\t\tdata: timestamps,\r\n\t\t\tdatasets: datasets,\r\n\t\t\tlabels: labels\r\n\t\t};\r\n\t},\r\n\r\n\tbuildTicks: function() {\r\n\t\tvar me = this;\r\n\t\tvar min = me.min;\r\n\t\tvar max = me.max;\r\n\t\tvar options = me.options;\r\n\t\tvar tickOpts = options.ticks;\r\n\t\tvar timeOpts = options.time;\r\n\t\tvar timestamps = me._timestamps;\r\n\t\tvar ticks = [];\r\n\t\tvar capacity = me.getLabelCapacity(min);\r\n\t\tvar source = tickOpts.source;\r\n\t\tvar distribution = options.distribution;\r\n\t\tvar i, ilen, timestamp;\r\n\r\n\t\tif (source === 'data' || (source === 'auto' && distribution === 'series')) {\r\n\t\t\ttimestamps = timestamps.data;\r\n\t\t} else if (source === 'labels') {\r\n\t\t\ttimestamps = timestamps.labels;\r\n\t\t} else {\r\n\t\t\ttimestamps = generate(me, min, max, capacity);\r\n\t\t}\r\n\r\n\t\tif (options.bounds === 'ticks' && timestamps.length) {\r\n\t\t\tmin = timestamps[0];\r\n\t\t\tmax = timestamps[timestamps.length - 1];\r\n\t\t}\r\n\r\n\t\t// Enforce limits with user min/max options\r\n\t\tmin = parse(me, getMin(options)) || min;\r\n\t\tmax = parse(me, getMax(options)) || max;\r\n\r\n\t\t// Remove ticks outside the min/max range\r\n\t\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\r\n\t\t\ttimestamp = timestamps[i];\r\n\t\t\tif (timestamp >= min && timestamp <= max) {\r\n\t\t\t\tticks.push(timestamp);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tme.min = min;\r\n\t\tme.max = max;\r\n\r\n\t\t// PRIVATE\r\n\t\t// determineUnitForFormatting relies on the number of ticks so we don't use it when\r\n\t\t// autoSkip is enabled because we don't yet know what the final number of ticks will be\r\n\t\tme._unit = timeOpts.unit || (tickOpts.autoSkip\r\n\t\t\t? determineUnitForAutoTicks(timeOpts.minUnit, me.min, me.max, capacity)\r\n\t\t\t: determineUnitForFormatting(me, ticks.length, timeOpts.minUnit, me.min, me.max));\r\n\t\tme._majorUnit = !tickOpts.major.enabled || me._unit === 'year' ? undefined\r\n\t\t\t: determineMajorUnit(me._unit);\r\n\t\tme._table = buildLookupTable(me._timestamps.data, min, max, distribution);\r\n\t\tme._offsets = computeOffsets(me._table, ticks, min, max, options);\r\n\r\n\t\tif (tickOpts.reverse) {\r\n\t\t\tticks.reverse();\r\n\t\t}\r\n\r\n\t\treturn ticksFromTimestamps(me, ticks, me._majorUnit);\r\n\t},\r\n\r\n\tgetLabelForIndex: function(index, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tvar adapter = me._adapter;\r\n\t\tvar data = me.chart.data;\r\n\t\tvar timeOpts = me.options.time;\r\n\t\tvar label = data.labels && index < data.labels.length ? data.labels[index] : '';\r\n\t\tvar value = data.datasets[datasetIndex].data[index];\r\n\r\n\t\tif (helpers$1.isObject(value)) {\r\n\t\t\tlabel = me.getRightValue(value);\r\n\t\t}\r\n\t\tif (timeOpts.tooltipFormat) {\r\n\t\t\treturn adapter.format(toTimestamp(me, label), timeOpts.tooltipFormat);\r\n\t\t}\r\n\t\tif (typeof label === 'string') {\r\n\t\t\treturn label;\r\n\t\t}\r\n\t\treturn adapter.format(toTimestamp(me, label), timeOpts.displayFormats.datetime);\r\n\t},\r\n\r\n\t/**\r\n\t * Function to format an individual tick mark\r\n\t * @private\r\n\t */\r\n\ttickFormatFunction: function(time, index, ticks, format) {\r\n\t\tvar me = this;\r\n\t\tvar adapter = me._adapter;\r\n\t\tvar options = me.options;\r\n\t\tvar formats = options.time.displayFormats;\r\n\t\tvar minorFormat = formats[me._unit];\r\n\t\tvar majorUnit = me._majorUnit;\r\n\t\tvar majorFormat = formats[majorUnit];\r\n\t\tvar tick = ticks[index];\r\n\t\tvar tickOpts = options.ticks;\r\n\t\tvar major = majorUnit && majorFormat && tick && tick.major;\r\n\t\tvar label = adapter.format(time, format ? format : major ? majorFormat : minorFormat);\r\n\t\tvar nestedTickOpts = major ? tickOpts.major : tickOpts.minor;\r\n\t\tvar formatter = resolve$5([\r\n\t\t\tnestedTickOpts.callback,\r\n\t\t\tnestedTickOpts.userCallback,\r\n\t\t\ttickOpts.callback,\r\n\t\t\ttickOpts.userCallback\r\n\t\t]);\r\n\r\n\t\treturn formatter ? formatter(label, index, ticks) : label;\r\n\t},\r\n\r\n\tconvertTicksToLabels: function(ticks) {\r\n\t\tvar labels = [];\r\n\t\tvar i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\r\n\t\t\tlabels.push(this.tickFormatFunction(ticks[i].value, i, ticks));\r\n\t\t}\r\n\r\n\t\treturn labels;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tgetPixelForOffset: function(time) {\r\n\t\tvar me = this;\r\n\t\tvar offsets = me._offsets;\r\n\t\tvar pos = interpolate$1(me._table, 'time', time, 'pos');\r\n\t\treturn me.getPixelForDecimal((offsets.start + pos) * offsets.factor);\r\n\t},\r\n\r\n\tgetPixelForValue: function(value, index, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tvar time = null;\r\n\r\n\t\tif (index !== undefined && datasetIndex !== undefined) {\r\n\t\t\ttime = me._timestamps.datasets[datasetIndex][index];\r\n\t\t}\r\n\r\n\t\tif (time === null) {\r\n\t\t\ttime = parse(me, value);\r\n\t\t}\r\n\r\n\t\tif (time !== null) {\r\n\t\t\treturn me.getPixelForOffset(time);\r\n\t\t}\r\n\t},\r\n\r\n\tgetPixelForTick: function(index) {\r\n\t\tvar ticks = this.getTicks();\r\n\t\treturn index >= 0 && index < ticks.length ?\r\n\t\t\tthis.getPixelForOffset(ticks[index].value) :\r\n\t\t\tnull;\r\n\t},\r\n\r\n\tgetValueForPixel: function(pixel) {\r\n\t\tvar me = this;\r\n\t\tvar offsets = me._offsets;\r\n\t\tvar pos = me.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\r\n\t\tvar time = interpolate$1(me._table, 'pos', pos, 'time');\r\n\r\n\t\t// DEPRECATION, we should return time directly\r\n\t\treturn me._adapter._create(time);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getLabelSize: function(label) {\r\n\t\tvar me = this;\r\n\t\tvar ticksOpts = me.options.ticks;\r\n\t\tvar tickLabelWidth = me.ctx.measureText(label).width;\r\n\t\tvar angle = helpers$1.toRadians(me.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\r\n\t\tvar cosRotation = Math.cos(angle);\r\n\t\tvar sinRotation = Math.sin(angle);\r\n\t\tvar tickFontSize = valueOrDefault$d(ticksOpts.fontSize, core_defaults.global.defaultFontSize);\r\n\r\n\t\treturn {\r\n\t\t\tw: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\r\n\t\t\th: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Crude approximation of what the label width might be\r\n\t * @private\r\n\t */\r\n\tgetLabelWidth: function(label) {\r\n\t\treturn this._getLabelSize(label).w;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tgetLabelCapacity: function(exampleTime) {\r\n\t\tvar me = this;\r\n\t\tvar timeOpts = me.options.time;\r\n\t\tvar displayFormats = timeOpts.displayFormats;\r\n\r\n\t\t// pick the longest format (milliseconds) for guestimation\r\n\t\tvar format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\r\n\t\tvar exampleLabel = me.tickFormatFunction(exampleTime, 0, ticksFromTimestamps(me, [exampleTime], me._majorUnit), format);\r\n\t\tvar size = me._getLabelSize(exampleLabel);\r\n\t\tvar capacity = Math.floor(me.isHorizontal() ? me.width / size.w : me.height / size.h);\r\n\r\n\t\tif (me.options.offset) {\r\n\t\t\tcapacity--;\r\n\t\t}\r\n\r\n\t\treturn capacity > 0 ? capacity : 1;\r\n\t}\r\n});\r\n\r\n// INTERNAL: static default options, registered in src/index.js\r\nvar _defaults$4 = defaultConfig$4;\nscale_time._defaults = _defaults$4;\n\nvar scales = {\r\n\tcategory: scale_category,\r\n\tlinear: scale_linear,\r\n\tlogarithmic: scale_logarithmic,\r\n\tradialLinear: scale_radialLinear,\r\n\ttime: scale_time\r\n};\n\nvar FORMATS = {\r\n\tdatetime: 'MMM D, YYYY, h:mm:ss a',\r\n\tmillisecond: 'h:mm:ss.SSS a',\r\n\tsecond: 'h:mm:ss a',\r\n\tminute: 'h:mm a',\r\n\thour: 'hA',\r\n\tday: 'MMM D',\r\n\tweek: 'll',\r\n\tmonth: 'MMM YYYY',\r\n\tquarter: '[Q]Q - YYYY',\r\n\tyear: 'YYYY'\r\n};\r\n\r\ncore_adapters._date.override(typeof moment === 'function' ? {\r\n\t_id: 'moment', // DEBUG ONLY\r\n\r\n\tformats: function() {\r\n\t\treturn FORMATS;\r\n\t},\r\n\r\n\tparse: function(value, format) {\r\n\t\tif (typeof value === 'string' && typeof format === 'string') {\r\n\t\t\tvalue = moment(value, format);\r\n\t\t} else if (!(value instanceof moment)) {\r\n\t\t\tvalue = moment(value);\r\n\t\t}\r\n\t\treturn value.isValid() ? value.valueOf() : null;\r\n\t},\r\n\r\n\tformat: function(time, format) {\r\n\t\treturn moment(time).format(format);\r\n\t},\r\n\r\n\tadd: function(time, amount, unit) {\r\n\t\treturn moment(time).add(amount, unit).valueOf();\r\n\t},\r\n\r\n\tdiff: function(max, min, unit) {\r\n\t\treturn moment(max).diff(moment(min), unit);\r\n\t},\r\n\r\n\tstartOf: function(time, unit, weekday) {\r\n\t\ttime = moment(time);\r\n\t\tif (unit === 'isoWeek') {\r\n\t\t\treturn time.isoWeekday(weekday).valueOf();\r\n\t\t}\r\n\t\treturn time.startOf(unit).valueOf();\r\n\t},\r\n\r\n\tendOf: function(time, unit) {\r\n\t\treturn moment(time).endOf(unit).valueOf();\r\n\t},\r\n\r\n\t// DEPRECATIONS\r\n\r\n\t/**\r\n\t * Provided for backward compatibility with scale.getValueForPixel().\r\n\t * @deprecated since version 2.8.0\r\n\t * @todo remove at version 3\r\n\t * @private\r\n\t */\r\n\t_create: function(time) {\r\n\t\treturn moment(time);\r\n\t},\r\n} : {});\n\ncore_defaults._set('global', {\r\n\tplugins: {\r\n\t\tfiller: {\r\n\t\t\tpropagate: true\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar mappers = {\r\n\tdataset: function(source) {\r\n\t\tvar index = source.fill;\r\n\t\tvar chart = source.chart;\r\n\t\tvar meta = chart.getDatasetMeta(index);\r\n\t\tvar visible = meta && chart.isDatasetVisible(index);\r\n\t\tvar points = (visible && meta.dataset._children) || [];\r\n\t\tvar length = points.length || 0;\r\n\r\n\t\treturn !length ? null : function(point, i) {\r\n\t\t\treturn (i < length && points[i]._view) || null;\r\n\t\t};\r\n\t},\r\n\r\n\tboundary: function(source) {\r\n\t\tvar boundary = source.boundary;\r\n\t\tvar x = boundary ? boundary.x : null;\r\n\t\tvar y = boundary ? boundary.y : null;\r\n\r\n\t\tif (helpers$1.isArray(boundary)) {\r\n\t\t\treturn function(point, i) {\r\n\t\t\t\treturn boundary[i];\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn function(point) {\r\n\t\t\treturn {\r\n\t\t\t\tx: x === null ? point.x : x,\r\n\t\t\t\ty: y === null ? point.y : y,\r\n\t\t\t};\r\n\t\t};\r\n\t}\r\n};\r\n\r\n// @todo if (fill[0] === '#')\r\nfunction decodeFill(el, index, count) {\r\n\tvar model = el._model || {};\r\n\tvar fill = model.fill;\r\n\tvar target;\r\n\r\n\tif (fill === undefined) {\r\n\t\tfill = !!model.backgroundColor;\r\n\t}\r\n\r\n\tif (fill === false || fill === null) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tif (fill === true) {\r\n\t\treturn 'origin';\r\n\t}\r\n\r\n\ttarget = parseFloat(fill, 10);\r\n\tif (isFinite(target) && Math.floor(target) === target) {\r\n\t\tif (fill[0] === '-' || fill[0] === '+') {\r\n\t\t\ttarget = index + target;\r\n\t\t}\r\n\r\n\t\tif (target === index || target < 0 || target >= count) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn target;\r\n\t}\r\n\r\n\tswitch (fill) {\r\n\t// compatibility\r\n\tcase 'bottom':\r\n\t\treturn 'start';\r\n\tcase 'top':\r\n\t\treturn 'end';\r\n\tcase 'zero':\r\n\t\treturn 'origin';\r\n\t// supported boundaries\r\n\tcase 'origin':\r\n\tcase 'start':\r\n\tcase 'end':\r\n\t\treturn fill;\r\n\t// invalid fill values\r\n\tdefault:\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nfunction computeLinearBoundary(source) {\r\n\tvar model = source.el._model || {};\r\n\tvar scale = source.el._scale || {};\r\n\tvar fill = source.fill;\r\n\tvar target = null;\r\n\tvar horizontal;\r\n\r\n\tif (isFinite(fill)) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\t// Backward compatibility: until v3, we still need to support boundary values set on\r\n\t// the model (scaleTop, scaleBottom and scaleZero) because some external plugins and\r\n\t// controllers might still use it (e.g. the Smith chart).\r\n\r\n\tif (fill === 'start') {\r\n\t\ttarget = model.scaleBottom === undefined ? scale.bottom : model.scaleBottom;\r\n\t} else if (fill === 'end') {\r\n\t\ttarget = model.scaleTop === undefined ? scale.top : model.scaleTop;\r\n\t} else if (model.scaleZero !== undefined) {\r\n\t\ttarget = model.scaleZero;\r\n\t} else if (scale.getBasePixel) {\r\n\t\ttarget = scale.getBasePixel();\r\n\t}\r\n\r\n\tif (target !== undefined && target !== null) {\r\n\t\tif (target.x !== undefined && target.y !== undefined) {\r\n\t\t\treturn target;\r\n\t\t}\r\n\r\n\t\tif (helpers$1.isFinite(target)) {\r\n\t\t\thorizontal = scale.isHorizontal();\r\n\t\t\treturn {\r\n\t\t\t\tx: horizontal ? target : null,\r\n\t\t\t\ty: horizontal ? null : target\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\treturn null;\r\n}\r\n\r\nfunction computeCircularBoundary(source) {\r\n\tvar scale = source.el._scale;\r\n\tvar options = scale.options;\r\n\tvar length = scale.chart.data.labels.length;\r\n\tvar fill = source.fill;\r\n\tvar target = [];\r\n\tvar start, end, center, i, point;\r\n\r\n\tif (!length) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tstart = options.ticks.reverse ? scale.max : scale.min;\r\n\tend = options.ticks.reverse ? scale.min : scale.max;\r\n\tcenter = scale.getPointPositionForValue(0, start);\r\n\tfor (i = 0; i < length; ++i) {\r\n\t\tpoint = fill === 'start' || fill === 'end'\r\n\t\t\t? scale.getPointPositionForValue(i, fill === 'start' ? start : end)\r\n\t\t\t: scale.getBasePosition(i);\r\n\t\tif (options.gridLines.circular) {\r\n\t\t\tpoint.cx = center.x;\r\n\t\t\tpoint.cy = center.y;\r\n\t\t\tpoint.angle = scale.getIndexAngle(i) - Math.PI / 2;\r\n\t\t}\r\n\t\ttarget.push(point);\r\n\t}\r\n\treturn target;\r\n}\r\n\r\nfunction computeBoundary(source) {\r\n\tvar scale = source.el._scale || {};\r\n\r\n\tif (scale.getPointPositionForValue) {\r\n\t\treturn computeCircularBoundary(source);\r\n\t}\r\n\treturn computeLinearBoundary(source);\r\n}\r\n\r\nfunction resolveTarget(sources, index, propagate) {\r\n\tvar source = sources[index];\r\n\tvar fill = source.fill;\r\n\tvar visited = [index];\r\n\tvar target;\r\n\r\n\tif (!propagate) {\r\n\t\treturn fill;\r\n\t}\r\n\r\n\twhile (fill !== false && visited.indexOf(fill) === -1) {\r\n\t\tif (!isFinite(fill)) {\r\n\t\t\treturn fill;\r\n\t\t}\r\n\r\n\t\ttarget = sources[fill];\r\n\t\tif (!target) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (target.visible) {\r\n\t\t\treturn fill;\r\n\t\t}\r\n\r\n\t\tvisited.push(fill);\r\n\t\tfill = target.fill;\r\n\t}\r\n\r\n\treturn false;\r\n}\r\n\r\nfunction createMapper(source) {\r\n\tvar fill = source.fill;\r\n\tvar type = 'dataset';\r\n\r\n\tif (fill === false) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tif (!isFinite(fill)) {\r\n\t\ttype = 'boundary';\r\n\t}\r\n\r\n\treturn mappers[type](source);\r\n}\r\n\r\nfunction isDrawable(point) {\r\n\treturn point && !point.skip;\r\n}\r\n\r\nfunction drawArea(ctx, curve0, curve1, len0, len1) {\r\n\tvar i, cx, cy, r;\r\n\r\n\tif (!len0 || !len1) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t// building first area curve (normal)\r\n\tctx.moveTo(curve0[0].x, curve0[0].y);\r\n\tfor (i = 1; i < len0; ++i) {\r\n\t\thelpers$1.canvas.lineTo(ctx, curve0[i - 1], curve0[i]);\r\n\t}\r\n\r\n\tif (curve1[0].angle !== undefined) {\r\n\t\tcx = curve1[0].cx;\r\n\t\tcy = curve1[0].cy;\r\n\t\tr = Math.sqrt(Math.pow(curve1[0].x - cx, 2) + Math.pow(curve1[0].y - cy, 2));\r\n\t\tfor (i = len1 - 1; i > 0; --i) {\r\n\t\t\tctx.arc(cx, cy, r, curve1[i].angle, curve1[i - 1].angle, true);\r\n\t\t}\r\n\t\treturn;\r\n\t}\r\n\r\n\t// joining the two area curves\r\n\tctx.lineTo(curve1[len1 - 1].x, curve1[len1 - 1].y);\r\n\r\n\t// building opposite area curve (reverse)\r\n\tfor (i = len1 - 1; i > 0; --i) {\r\n\t\thelpers$1.canvas.lineTo(ctx, curve1[i], curve1[i - 1], true);\r\n\t}\r\n}\r\n\r\nfunction doFill(ctx, points, mapper, view, color, loop) {\r\n\tvar count = points.length;\r\n\tvar span = view.spanGaps;\r\n\tvar curve0 = [];\r\n\tvar curve1 = [];\r\n\tvar len0 = 0;\r\n\tvar len1 = 0;\r\n\tvar i, ilen, index, p0, p1, d0, d1, loopOffset;\r\n\r\n\tctx.beginPath();\r\n\r\n\tfor (i = 0, ilen = count; i < ilen; ++i) {\r\n\t\tindex = i % count;\r\n\t\tp0 = points[index]._view;\r\n\t\tp1 = mapper(p0, index, view);\r\n\t\td0 = isDrawable(p0);\r\n\t\td1 = isDrawable(p1);\r\n\r\n\t\tif (loop && loopOffset === undefined && d0) {\r\n\t\t\tloopOffset = i + 1;\r\n\t\t\tilen = count + loopOffset;\r\n\t\t}\r\n\r\n\t\tif (d0 && d1) {\r\n\t\t\tlen0 = curve0.push(p0);\r\n\t\t\tlen1 = curve1.push(p1);\r\n\t\t} else if (len0 && len1) {\r\n\t\t\tif (!span) {\r\n\t\t\t\tdrawArea(ctx, curve0, curve1, len0, len1);\r\n\t\t\t\tlen0 = len1 = 0;\r\n\t\t\t\tcurve0 = [];\r\n\t\t\t\tcurve1 = [];\r\n\t\t\t} else {\r\n\t\t\t\tif (d0) {\r\n\t\t\t\t\tcurve0.push(p0);\r\n\t\t\t\t}\r\n\t\t\t\tif (d1) {\r\n\t\t\t\t\tcurve1.push(p1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tdrawArea(ctx, curve0, curve1, len0, len1);\r\n\r\n\tctx.closePath();\r\n\tctx.fillStyle = color;\r\n\tctx.fill();\r\n}\r\n\r\nvar plugin_filler = {\r\n\tid: 'filler',\r\n\r\n\tafterDatasetsUpdate: function(chart, options) {\r\n\t\tvar count = (chart.data.datasets || []).length;\r\n\t\tvar propagate = options.propagate;\r\n\t\tvar sources = [];\r\n\t\tvar meta, i, el, source;\r\n\r\n\t\tfor (i = 0; i < count; ++i) {\r\n\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\tel = meta.dataset;\r\n\t\t\tsource = null;\r\n\r\n\t\t\tif (el && el._model && el instanceof elements.Line) {\r\n\t\t\t\tsource = {\r\n\t\t\t\t\tvisible: chart.isDatasetVisible(i),\r\n\t\t\t\t\tfill: decodeFill(el, i, count),\r\n\t\t\t\t\tchart: chart,\r\n\t\t\t\t\tel: el\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tmeta.$filler = source;\r\n\t\t\tsources.push(source);\r\n\t\t}\r\n\r\n\t\tfor (i = 0; i < count; ++i) {\r\n\t\t\tsource = sources[i];\r\n\t\t\tif (!source) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tsource.fill = resolveTarget(sources, i, propagate);\r\n\t\t\tsource.boundary = computeBoundary(source);\r\n\t\t\tsource.mapper = createMapper(source);\r\n\t\t}\r\n\t},\r\n\r\n\tbeforeDatasetsDraw: function(chart) {\r\n\t\tvar metasets = chart._getSortedVisibleDatasetMetas();\r\n\t\tvar ctx = chart.ctx;\r\n\t\tvar meta, i, el, view, points, mapper, color;\r\n\r\n\t\tfor (i = metasets.length - 1; i >= 0; --i) {\r\n\t\t\tmeta = metasets[i].$filler;\r\n\r\n\t\t\tif (!meta || !meta.visible) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tel = meta.el;\r\n\t\t\tview = el._view;\r\n\t\t\tpoints = el._children || [];\r\n\t\t\tmapper = meta.mapper;\r\n\t\t\tcolor = view.backgroundColor || core_defaults.global.defaultColor;\r\n\r\n\t\t\tif (mapper && color && points.length) {\r\n\t\t\t\thelpers$1.canvas.clipArea(ctx, chart.chartArea);\r\n\t\t\t\tdoFill(ctx, points, mapper, view, color, el._loop);\r\n\t\t\t\thelpers$1.canvas.unclipArea(ctx);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\n\nvar getRtlHelper$1 = helpers$1.rtl.getRtlAdapter;\r\nvar noop$1 = helpers$1.noop;\r\nvar valueOrDefault$e = helpers$1.valueOrDefault;\r\n\r\ncore_defaults._set('global', {\r\n\tlegend: {\r\n\t\tdisplay: true,\r\n\t\tposition: 'top',\r\n\t\talign: 'center',\r\n\t\tfullWidth: true,\r\n\t\treverse: false,\r\n\t\tweight: 1000,\r\n\r\n\t\t// a callback that will handle\r\n\t\tonClick: function(e, legendItem) {\r\n\t\t\tvar index = legendItem.datasetIndex;\r\n\t\t\tvar ci = this.chart;\r\n\t\t\tvar meta = ci.getDatasetMeta(index);\r\n\r\n\t\t\t// See controller.isDatasetVisible comment\r\n\t\t\tmeta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null;\r\n\r\n\t\t\t// We hid a dataset ... rerender the chart\r\n\t\t\tci.update();\r\n\t\t},\r\n\r\n\t\tonHover: null,\r\n\t\tonLeave: null,\r\n\r\n\t\tlabels: {\r\n\t\t\tboxWidth: 40,\r\n\t\t\tpadding: 10,\r\n\t\t\t// Generates labels shown in the legend\r\n\t\t\t// Valid properties to return:\r\n\t\t\t// text : text to display\r\n\t\t\t// fillStyle : fill of coloured box\r\n\t\t\t// strokeStyle: stroke of coloured box\r\n\t\t\t// hidden : if this legend item refers to a hidden item\r\n\t\t\t// lineCap : cap style for line\r\n\t\t\t// lineDash\r\n\t\t\t// lineDashOffset :\r\n\t\t\t// lineJoin :\r\n\t\t\t// lineWidth :\r\n\t\t\tgenerateLabels: function(chart) {\r\n\t\t\t\tvar datasets = chart.data.datasets;\r\n\t\t\t\tvar options = chart.options.legend || {};\r\n\t\t\t\tvar usePointStyle = options.labels && options.labels.usePointStyle;\r\n\r\n\t\t\t\treturn chart._getSortedDatasetMetas().map(function(meta) {\r\n\t\t\t\t\tvar style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\r\n\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\ttext: datasets[meta.index].label,\r\n\t\t\t\t\t\tfillStyle: style.backgroundColor,\r\n\t\t\t\t\t\thidden: !chart.isDatasetVisible(meta.index),\r\n\t\t\t\t\t\tlineCap: style.borderCapStyle,\r\n\t\t\t\t\t\tlineDash: style.borderDash,\r\n\t\t\t\t\t\tlineDashOffset: style.borderDashOffset,\r\n\t\t\t\t\t\tlineJoin: style.borderJoinStyle,\r\n\t\t\t\t\t\tlineWidth: style.borderWidth,\r\n\t\t\t\t\t\tstrokeStyle: style.borderColor,\r\n\t\t\t\t\t\tpointStyle: style.pointStyle,\r\n\t\t\t\t\t\trotation: style.rotation,\r\n\r\n\t\t\t\t\t\t// Below is extra data used for toggling the datasets\r\n\t\t\t\t\t\tdatasetIndex: meta.index\r\n\t\t\t\t\t};\r\n\t\t\t\t}, this);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tlegendCallback: function(chart) {\r\n\t\tvar list = document.createElement('ul');\r\n\t\tvar datasets = chart.data.datasets;\r\n\t\tvar i, ilen, listItem, listItemSpan;\r\n\r\n\t\tlist.setAttribute('class', chart.id + '-legend');\r\n\r\n\t\tfor (i = 0, ilen = datasets.length; i < ilen; i++) {\r\n\t\t\tlistItem = list.appendChild(document.createElement('li'));\r\n\t\t\tlistItemSpan = listItem.appendChild(document.createElement('span'));\r\n\t\t\tlistItemSpan.style.backgroundColor = datasets[i].backgroundColor;\r\n\t\t\tif (datasets[i].label) {\r\n\t\t\t\tlistItem.appendChild(document.createTextNode(datasets[i].label));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn list.outerHTML;\r\n\t}\r\n});\r\n\r\n/**\r\n * Helper function to get the box width based on the usePointStyle option\r\n * @param {object} labelopts - the label options on the legend\r\n * @param {number} fontSize - the label font size\r\n * @return {number} width of the color box area\r\n */\r\nfunction getBoxWidth(labelOpts, fontSize) {\r\n\treturn labelOpts.usePointStyle && labelOpts.boxWidth > fontSize ?\r\n\t\tfontSize :\r\n\t\tlabelOpts.boxWidth;\r\n}\r\n\r\n/**\r\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\r\n */\r\nvar Legend = core_element.extend({\r\n\r\n\tinitialize: function(config) {\r\n\t\tvar me = this;\r\n\t\thelpers$1.extend(me, config);\r\n\r\n\t\t// Contains hit boxes for each dataset (in dataset order)\r\n\t\tme.legendHitBoxes = [];\r\n\r\n\t\t/**\r\n \t\t * @private\r\n \t\t */\r\n\t\tme._hoveredItem = null;\r\n\r\n\t\t// Are we in doughnut mode which has a different data type\r\n\t\tme.doughnutMode = false;\r\n\t},\r\n\r\n\t// These methods are ordered by lifecycle. Utilities then follow.\r\n\t// Any function defined here is inherited by all legend types.\r\n\t// Any function can be extended by the legend type\r\n\r\n\tbeforeUpdate: noop$1,\r\n\tupdate: function(maxWidth, maxHeight, margins) {\r\n\t\tvar me = this;\r\n\r\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\r\n\t\tme.beforeUpdate();\r\n\r\n\t\t// Absorb the master measurements\r\n\t\tme.maxWidth = maxWidth;\r\n\t\tme.maxHeight = maxHeight;\r\n\t\tme.margins = margins;\r\n\r\n\t\t// Dimensions\r\n\t\tme.beforeSetDimensions();\r\n\t\tme.setDimensions();\r\n\t\tme.afterSetDimensions();\r\n\t\t// Labels\r\n\t\tme.beforeBuildLabels();\r\n\t\tme.buildLabels();\r\n\t\tme.afterBuildLabels();\r\n\r\n\t\t// Fit\r\n\t\tme.beforeFit();\r\n\t\tme.fit();\r\n\t\tme.afterFit();\r\n\t\t//\r\n\t\tme.afterUpdate();\r\n\r\n\t\treturn me.minSize;\r\n\t},\r\n\tafterUpdate: noop$1,\r\n\r\n\t//\r\n\r\n\tbeforeSetDimensions: noop$1,\r\n\tsetDimensions: function() {\r\n\t\tvar me = this;\r\n\t\t// Set the unconstrained dimension before label rotation\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.width = me.maxWidth;\r\n\t\t\tme.left = 0;\r\n\t\t\tme.right = me.width;\r\n\t\t} else {\r\n\t\t\tme.height = me.maxHeight;\r\n\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.top = 0;\r\n\t\t\tme.bottom = me.height;\r\n\t\t}\r\n\r\n\t\t// Reset padding\r\n\t\tme.paddingLeft = 0;\r\n\t\tme.paddingTop = 0;\r\n\t\tme.paddingRight = 0;\r\n\t\tme.paddingBottom = 0;\r\n\r\n\t\t// Reset minSize\r\n\t\tme.minSize = {\r\n\t\t\twidth: 0,\r\n\t\t\theight: 0\r\n\t\t};\r\n\t},\r\n\tafterSetDimensions: noop$1,\r\n\r\n\t//\r\n\r\n\tbeforeBuildLabels: noop$1,\r\n\tbuildLabels: function() {\r\n\t\tvar me = this;\r\n\t\tvar labelOpts = me.options.labels || {};\r\n\t\tvar legendItems = helpers$1.callback(labelOpts.generateLabels, [me.chart], me) || [];\r\n\r\n\t\tif (labelOpts.filter) {\r\n\t\t\tlegendItems = legendItems.filter(function(item) {\r\n\t\t\t\treturn labelOpts.filter(item, me.chart.data);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (me.options.reverse) {\r\n\t\t\tlegendItems.reverse();\r\n\t\t}\r\n\r\n\t\tme.legendItems = legendItems;\r\n\t},\r\n\tafterBuildLabels: noop$1,\r\n\r\n\t//\r\n\r\n\tbeforeFit: noop$1,\r\n\tfit: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar labelOpts = opts.labels;\r\n\t\tvar display = opts.display;\r\n\r\n\t\tvar ctx = me.ctx;\r\n\r\n\t\tvar labelFont = helpers$1.options._parseFont(labelOpts);\r\n\t\tvar fontSize = labelFont.size;\r\n\r\n\t\t// Reset hit boxes\r\n\t\tvar hitboxes = me.legendHitBoxes = [];\r\n\r\n\t\tvar minSize = me.minSize;\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\r\n\t\tif (isHorizontal) {\r\n\t\t\tminSize.width = me.maxWidth; // fill all the width\r\n\t\t\tminSize.height = display ? 10 : 0;\r\n\t\t} else {\r\n\t\t\tminSize.width = display ? 10 : 0;\r\n\t\t\tminSize.height = me.maxHeight; // fill all the height\r\n\t\t}\r\n\r\n\t\t// Increase sizes here\r\n\t\tif (!display) {\r\n\t\t\tme.width = minSize.width = me.height = minSize.height = 0;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tctx.font = labelFont.string;\r\n\r\n\t\tif (isHorizontal) {\r\n\t\t\t// Labels\r\n\r\n\t\t\t// Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one\r\n\t\t\tvar lineWidths = me.lineWidths = [0];\r\n\t\t\tvar totalHeight = 0;\r\n\r\n\t\t\tctx.textAlign = 'left';\r\n\t\t\tctx.textBaseline = 'middle';\r\n\r\n\t\t\thelpers$1.each(me.legendItems, function(legendItem, i) {\r\n\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\r\n\t\t\t\tvar width = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\r\n\r\n\t\t\t\tif (i === 0 || lineWidths[lineWidths.length - 1] + width + 2 * labelOpts.padding > minSize.width) {\r\n\t\t\t\t\ttotalHeight += fontSize + labelOpts.padding;\r\n\t\t\t\t\tlineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\r\n\t\t\t\thitboxes[i] = {\r\n\t\t\t\t\tleft: 0,\r\n\t\t\t\t\ttop: 0,\r\n\t\t\t\t\twidth: width,\r\n\t\t\t\t\theight: fontSize\r\n\t\t\t\t};\r\n\r\n\t\t\t\tlineWidths[lineWidths.length - 1] += width + labelOpts.padding;\r\n\t\t\t});\r\n\r\n\t\t\tminSize.height += totalHeight;\r\n\r\n\t\t} else {\r\n\t\t\tvar vPadding = labelOpts.padding;\r\n\t\t\tvar columnWidths = me.columnWidths = [];\r\n\t\t\tvar columnHeights = me.columnHeights = [];\r\n\t\t\tvar totalWidth = labelOpts.padding;\r\n\t\t\tvar currentColWidth = 0;\r\n\t\t\tvar currentColHeight = 0;\r\n\r\n\t\t\thelpers$1.each(me.legendItems, function(legendItem, i) {\r\n\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\r\n\t\t\t\tvar itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\r\n\r\n\t\t\t\t// If too tall, go to new column\r\n\t\t\t\tif (i > 0 && currentColHeight + fontSize + 2 * vPadding > minSize.height) {\r\n\t\t\t\t\ttotalWidth += currentColWidth + labelOpts.padding;\r\n\t\t\t\t\tcolumnWidths.push(currentColWidth); // previous column width\r\n\t\t\t\t\tcolumnHeights.push(currentColHeight);\r\n\t\t\t\t\tcurrentColWidth = 0;\r\n\t\t\t\t\tcurrentColHeight = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Get max width\r\n\t\t\t\tcurrentColWidth = Math.max(currentColWidth, itemWidth);\r\n\t\t\t\tcurrentColHeight += fontSize + vPadding;\r\n\r\n\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\r\n\t\t\t\thitboxes[i] = {\r\n\t\t\t\t\tleft: 0,\r\n\t\t\t\t\ttop: 0,\r\n\t\t\t\t\twidth: itemWidth,\r\n\t\t\t\t\theight: fontSize\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\ttotalWidth += currentColWidth;\r\n\t\t\tcolumnWidths.push(currentColWidth);\r\n\t\t\tcolumnHeights.push(currentColHeight);\r\n\t\t\tminSize.width += totalWidth;\r\n\t\t}\r\n\r\n\t\tme.width = minSize.width;\r\n\t\tme.height = minSize.height;\r\n\t},\r\n\tafterFit: noop$1,\r\n\r\n\t// Shared Methods\r\n\tisHorizontal: function() {\r\n\t\treturn this.options.position === 'top' || this.options.position === 'bottom';\r\n\t},\r\n\r\n\t// Actually draw the legend on the canvas\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar labelOpts = opts.labels;\r\n\t\tvar globalDefaults = core_defaults.global;\r\n\t\tvar defaultColor = globalDefaults.defaultColor;\r\n\t\tvar lineDefault = globalDefaults.elements.line;\r\n\t\tvar legendHeight = me.height;\r\n\t\tvar columnHeights = me.columnHeights;\r\n\t\tvar legendWidth = me.width;\r\n\t\tvar lineWidths = me.lineWidths;\r\n\r\n\t\tif (!opts.display) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar rtlHelper = getRtlHelper$1(opts.rtl, me.left, me.minSize.width);\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar fontColor = valueOrDefault$e(labelOpts.fontColor, globalDefaults.defaultFontColor);\r\n\t\tvar labelFont = helpers$1.options._parseFont(labelOpts);\r\n\t\tvar fontSize = labelFont.size;\r\n\t\tvar cursor;\r\n\r\n\t\t// Canvas setup\r\n\t\tctx.textAlign = rtlHelper.textAlign('left');\r\n\t\tctx.textBaseline = 'middle';\r\n\t\tctx.lineWidth = 0.5;\r\n\t\tctx.strokeStyle = fontColor; // for strikethrough effect\r\n\t\tctx.fillStyle = fontColor; // render in correct colour\r\n\t\tctx.font = labelFont.string;\r\n\r\n\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\r\n\t\tvar hitboxes = me.legendHitBoxes;\r\n\r\n\t\t// current position\r\n\t\tvar drawLegendBox = function(x, y, legendItem) {\r\n\t\t\tif (isNaN(boxWidth) || boxWidth <= 0) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Set the ctx for the box\r\n\t\t\tctx.save();\r\n\r\n\t\t\tvar lineWidth = valueOrDefault$e(legendItem.lineWidth, lineDefault.borderWidth);\r\n\t\t\tctx.fillStyle = valueOrDefault$e(legendItem.fillStyle, defaultColor);\r\n\t\t\tctx.lineCap = valueOrDefault$e(legendItem.lineCap, lineDefault.borderCapStyle);\r\n\t\t\tctx.lineDashOffset = valueOrDefault$e(legendItem.lineDashOffset, lineDefault.borderDashOffset);\r\n\t\t\tctx.lineJoin = valueOrDefault$e(legendItem.lineJoin, lineDefault.borderJoinStyle);\r\n\t\t\tctx.lineWidth = lineWidth;\r\n\t\t\tctx.strokeStyle = valueOrDefault$e(legendItem.strokeStyle, defaultColor);\r\n\r\n\t\t\tif (ctx.setLineDash) {\r\n\t\t\t\t// IE 9 and 10 do not support line dash\r\n\t\t\t\tctx.setLineDash(valueOrDefault$e(legendItem.lineDash, lineDefault.borderDash));\r\n\t\t\t}\r\n\r\n\t\t\tif (labelOpts && labelOpts.usePointStyle) {\r\n\t\t\t\t// Recalculate x and y for drawPoint() because its expecting\r\n\t\t\t\t// x and y to be center of figure (instead of top left)\r\n\t\t\t\tvar radius = boxWidth * Math.SQRT2 / 2;\r\n\t\t\t\tvar centerX = rtlHelper.xPlus(x, boxWidth / 2);\r\n\t\t\t\tvar centerY = y + fontSize / 2;\r\n\r\n\t\t\t\t// Draw pointStyle as legend symbol\r\n\t\t\t\thelpers$1.canvas.drawPoint(ctx, legendItem.pointStyle, radius, centerX, centerY, legendItem.rotation);\r\n\t\t\t} else {\r\n\t\t\t\t// Draw box as legend symbol\r\n\t\t\t\tctx.fillRect(rtlHelper.leftForLtr(x, boxWidth), y, boxWidth, fontSize);\r\n\t\t\t\tif (lineWidth !== 0) {\r\n\t\t\t\t\tctx.strokeRect(rtlHelper.leftForLtr(x, boxWidth), y, boxWidth, fontSize);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tctx.restore();\r\n\t\t};\r\n\r\n\t\tvar fillText = function(x, y, legendItem, textWidth) {\r\n\t\t\tvar halfFontSize = fontSize / 2;\r\n\t\t\tvar xLeft = rtlHelper.xPlus(x, boxWidth + halfFontSize);\r\n\t\t\tvar yMiddle = y + halfFontSize;\r\n\r\n\t\t\tctx.fillText(legendItem.text, xLeft, yMiddle);\r\n\r\n\t\t\tif (legendItem.hidden) {\r\n\t\t\t\t// Strikethrough the text if hidden\r\n\t\t\t\tctx.beginPath();\r\n\t\t\t\tctx.lineWidth = 2;\r\n\t\t\t\tctx.moveTo(xLeft, yMiddle);\r\n\t\t\t\tctx.lineTo(rtlHelper.xPlus(xLeft, textWidth), yMiddle);\r\n\t\t\t\tctx.stroke();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar alignmentOffset = function(dimension, blockSize) {\r\n\t\t\tswitch (opts.align) {\r\n\t\t\tcase 'start':\r\n\t\t\t\treturn labelOpts.padding;\r\n\t\t\tcase 'end':\r\n\t\t\t\treturn dimension - blockSize;\r\n\t\t\tdefault: // center\r\n\t\t\t\treturn (dimension - blockSize + labelOpts.padding) / 2;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Horizontal\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\t\tif (isHorizontal) {\r\n\t\t\tcursor = {\r\n\t\t\t\tx: me.left + alignmentOffset(legendWidth, lineWidths[0]),\r\n\t\t\t\ty: me.top + labelOpts.padding,\r\n\t\t\t\tline: 0\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\tcursor = {\r\n\t\t\t\tx: me.left + labelOpts.padding,\r\n\t\t\t\ty: me.top + alignmentOffset(legendHeight, columnHeights[0]),\r\n\t\t\t\tline: 0\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\thelpers$1.rtl.overrideTextDirection(me.ctx, opts.textDirection);\r\n\r\n\t\tvar itemHeight = fontSize + labelOpts.padding;\r\n\t\thelpers$1.each(me.legendItems, function(legendItem, i) {\r\n\t\t\tvar textWidth = ctx.measureText(legendItem.text).width;\r\n\t\t\tvar width = boxWidth + (fontSize / 2) + textWidth;\r\n\t\t\tvar x = cursor.x;\r\n\t\t\tvar y = cursor.y;\r\n\r\n\t\t\trtlHelper.setWidth(me.minSize.width);\r\n\r\n\t\t\t// Use (me.left + me.minSize.width) and (me.top + me.minSize.height)\r\n\t\t\t// instead of me.right and me.bottom because me.width and me.height\r\n\t\t\t// may have been changed since me.minSize was calculated\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\tif (i > 0 && x + width + labelOpts.padding > me.left + me.minSize.width) {\r\n\t\t\t\t\ty = cursor.y += itemHeight;\r\n\t\t\t\t\tcursor.line++;\r\n\t\t\t\t\tx = cursor.x = me.left + alignmentOffset(legendWidth, lineWidths[cursor.line]);\r\n\t\t\t\t}\r\n\t\t\t} else if (i > 0 && y + itemHeight > me.top + me.minSize.height) {\r\n\t\t\t\tx = cursor.x = x + me.columnWidths[cursor.line] + labelOpts.padding;\r\n\t\t\t\tcursor.line++;\r\n\t\t\t\ty = cursor.y = me.top + alignmentOffset(legendHeight, columnHeights[cursor.line]);\r\n\t\t\t}\r\n\r\n\t\t\tvar realX = rtlHelper.x(x);\r\n\r\n\t\t\tdrawLegendBox(realX, y, legendItem);\r\n\r\n\t\t\thitboxes[i].left = rtlHelper.leftForLtr(realX, hitboxes[i].width);\r\n\t\t\thitboxes[i].top = y;\r\n\r\n\t\t\t// Fill the actual label\r\n\t\t\tfillText(realX, y, legendItem, textWidth);\r\n\r\n\t\t\tif (isHorizontal) {\r\n\t\t\t\tcursor.x += width + labelOpts.padding;\r\n\t\t\t} else {\r\n\t\t\t\tcursor.y += itemHeight;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\thelpers$1.rtl.restoreTextDirection(me.ctx, opts.textDirection);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getLegendItemAt: function(x, y) {\r\n\t\tvar me = this;\r\n\t\tvar i, hitBox, lh;\r\n\r\n\t\tif (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) {\r\n\t\t\t// See if we are touching one of the dataset boxes\r\n\t\t\tlh = me.legendHitBoxes;\r\n\t\t\tfor (i = 0; i < lh.length; ++i) {\r\n\t\t\t\thitBox = lh[i];\r\n\r\n\t\t\t\tif (x >= hitBox.left && x <= hitBox.left + hitBox.width && y >= hitBox.top && y <= hitBox.top + hitBox.height) {\r\n\t\t\t\t\t// Touching an element\r\n\t\t\t\t\treturn me.legendItems[i];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t},\r\n\r\n\t/**\r\n\t * Handle an event\r\n\t * @private\r\n\t * @param {IEvent} event - The event to handle\r\n\t */\r\n\thandleEvent: function(e) {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar type = e.type === 'mouseup' ? 'click' : e.type;\r\n\t\tvar hoveredItem;\r\n\r\n\t\tif (type === 'mousemove') {\r\n\t\t\tif (!opts.onHover && !opts.onLeave) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t} else if (type === 'click') {\r\n\t\t\tif (!opts.onClick) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Chart event already has relative position in it\r\n\t\thoveredItem = me._getLegendItemAt(e.x, e.y);\r\n\r\n\t\tif (type === 'click') {\r\n\t\t\tif (hoveredItem && opts.onClick) {\r\n\t\t\t\t// use e.native for backwards compatibility\r\n\t\t\t\topts.onClick.call(me, e.native, hoveredItem);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (opts.onLeave && hoveredItem !== me._hoveredItem) {\r\n\t\t\t\tif (me._hoveredItem) {\r\n\t\t\t\t\topts.onLeave.call(me, e.native, me._hoveredItem);\r\n\t\t\t\t}\r\n\t\t\t\tme._hoveredItem = hoveredItem;\r\n\t\t\t}\r\n\r\n\t\t\tif (opts.onHover && hoveredItem) {\r\n\t\t\t\t// use e.native for backwards compatibility\r\n\t\t\t\topts.onHover.call(me, e.native, hoveredItem);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction createNewLegendAndAttach(chart, legendOpts) {\r\n\tvar legend = new Legend({\r\n\t\tctx: chart.ctx,\r\n\t\toptions: legendOpts,\r\n\t\tchart: chart\r\n\t});\r\n\r\n\tcore_layouts.configure(chart, legend, legendOpts);\r\n\tcore_layouts.addBox(chart, legend);\r\n\tchart.legend = legend;\r\n}\r\n\r\nvar plugin_legend = {\r\n\tid: 'legend',\r\n\r\n\t/**\r\n\t * Backward compatibility: since 2.1.5, the legend is registered as a plugin, making\r\n\t * Chart.Legend obsolete. To avoid a breaking change, we export the Legend as part of\r\n\t * the plugin, which one will be re-exposed in the chart.js file.\r\n\t * https://github.com/chartjs/Chart.js/pull/2640\r\n\t * @private\r\n\t */\r\n\t_element: Legend,\r\n\r\n\tbeforeInit: function(chart) {\r\n\t\tvar legendOpts = chart.options.legend;\r\n\r\n\t\tif (legendOpts) {\r\n\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\r\n\t\t}\r\n\t},\r\n\r\n\tbeforeUpdate: function(chart) {\r\n\t\tvar legendOpts = chart.options.legend;\r\n\t\tvar legend = chart.legend;\r\n\r\n\t\tif (legendOpts) {\r\n\t\t\thelpers$1.mergeIf(legendOpts, core_defaults.global.legend);\r\n\r\n\t\t\tif (legend) {\r\n\t\t\t\tcore_layouts.configure(chart, legend, legendOpts);\r\n\t\t\t\tlegend.options = legendOpts;\r\n\t\t\t} else {\r\n\t\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\r\n\t\t\t}\r\n\t\t} else if (legend) {\r\n\t\t\tcore_layouts.removeBox(chart, legend);\r\n\t\t\tdelete chart.legend;\r\n\t\t}\r\n\t},\r\n\r\n\tafterEvent: function(chart, e) {\r\n\t\tvar legend = chart.legend;\r\n\t\tif (legend) {\r\n\t\t\tlegend.handleEvent(e);\r\n\t\t}\r\n\t}\r\n};\n\nvar noop$2 = helpers$1.noop;\r\n\r\ncore_defaults._set('global', {\r\n\ttitle: {\r\n\t\tdisplay: false,\r\n\t\tfontStyle: 'bold',\r\n\t\tfullWidth: true,\r\n\t\tpadding: 10,\r\n\t\tposition: 'top',\r\n\t\ttext: '',\r\n\t\tweight: 2000 // by default greater than legend (1000) to be above\r\n\t}\r\n});\r\n\r\n/**\r\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\r\n */\r\nvar Title = core_element.extend({\r\n\tinitialize: function(config) {\r\n\t\tvar me = this;\r\n\t\thelpers$1.extend(me, config);\r\n\r\n\t\t// Contains hit boxes for each dataset (in dataset order)\r\n\t\tme.legendHitBoxes = [];\r\n\t},\r\n\r\n\t// These methods are ordered by lifecycle. Utilities then follow.\r\n\r\n\tbeforeUpdate: noop$2,\r\n\tupdate: function(maxWidth, maxHeight, margins) {\r\n\t\tvar me = this;\r\n\r\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\r\n\t\tme.beforeUpdate();\r\n\r\n\t\t// Absorb the master measurements\r\n\t\tme.maxWidth = maxWidth;\r\n\t\tme.maxHeight = maxHeight;\r\n\t\tme.margins = margins;\r\n\r\n\t\t// Dimensions\r\n\t\tme.beforeSetDimensions();\r\n\t\tme.setDimensions();\r\n\t\tme.afterSetDimensions();\r\n\t\t// Labels\r\n\t\tme.beforeBuildLabels();\r\n\t\tme.buildLabels();\r\n\t\tme.afterBuildLabels();\r\n\r\n\t\t// Fit\r\n\t\tme.beforeFit();\r\n\t\tme.fit();\r\n\t\tme.afterFit();\r\n\t\t//\r\n\t\tme.afterUpdate();\r\n\r\n\t\treturn me.minSize;\r\n\r\n\t},\r\n\tafterUpdate: noop$2,\r\n\r\n\t//\r\n\r\n\tbeforeSetDimensions: noop$2,\r\n\tsetDimensions: function() {\r\n\t\tvar me = this;\r\n\t\t// Set the unconstrained dimension before label rotation\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.width = me.maxWidth;\r\n\t\t\tme.left = 0;\r\n\t\t\tme.right = me.width;\r\n\t\t} else {\r\n\t\t\tme.height = me.maxHeight;\r\n\r\n\t\t\t// Reset position before calculating rotation\r\n\t\t\tme.top = 0;\r\n\t\t\tme.bottom = me.height;\r\n\t\t}\r\n\r\n\t\t// Reset padding\r\n\t\tme.paddingLeft = 0;\r\n\t\tme.paddingTop = 0;\r\n\t\tme.paddingRight = 0;\r\n\t\tme.paddingBottom = 0;\r\n\r\n\t\t// Reset minSize\r\n\t\tme.minSize = {\r\n\t\t\twidth: 0,\r\n\t\t\theight: 0\r\n\t\t};\r\n\t},\r\n\tafterSetDimensions: noop$2,\r\n\r\n\t//\r\n\r\n\tbeforeBuildLabels: noop$2,\r\n\tbuildLabels: noop$2,\r\n\tafterBuildLabels: noop$2,\r\n\r\n\t//\r\n\r\n\tbeforeFit: noop$2,\r\n\tfit: function() {\r\n\t\tvar me = this;\r\n\t\tvar opts = me.options;\r\n\t\tvar minSize = me.minSize = {};\r\n\t\tvar isHorizontal = me.isHorizontal();\r\n\t\tvar lineCount, textSize;\r\n\r\n\t\tif (!opts.display) {\r\n\t\t\tme.width = minSize.width = me.height = minSize.height = 0;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlineCount = helpers$1.isArray(opts.text) ? opts.text.length : 1;\r\n\t\ttextSize = lineCount * helpers$1.options._parseFont(opts).lineHeight + opts.padding * 2;\r\n\r\n\t\tme.width = minSize.width = isHorizontal ? me.maxWidth : textSize;\r\n\t\tme.height = minSize.height = isHorizontal ? textSize : me.maxHeight;\r\n\t},\r\n\tafterFit: noop$2,\r\n\r\n\t// Shared Methods\r\n\tisHorizontal: function() {\r\n\t\tvar pos = this.options.position;\r\n\t\treturn pos === 'top' || pos === 'bottom';\r\n\t},\r\n\r\n\t// Actually draw the title block on the canvas\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar ctx = me.ctx;\r\n\t\tvar opts = me.options;\r\n\r\n\t\tif (!opts.display) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar fontOpts = helpers$1.options._parseFont(opts);\r\n\t\tvar lineHeight = fontOpts.lineHeight;\r\n\t\tvar offset = lineHeight / 2 + opts.padding;\r\n\t\tvar rotation = 0;\r\n\t\tvar top = me.top;\r\n\t\tvar left = me.left;\r\n\t\tvar bottom = me.bottom;\r\n\t\tvar right = me.right;\r\n\t\tvar maxWidth, titleX, titleY;\r\n\r\n\t\tctx.fillStyle = helpers$1.valueOrDefault(opts.fontColor, core_defaults.global.defaultFontColor); // render in correct colour\r\n\t\tctx.font = fontOpts.string;\r\n\r\n\t\t// Horizontal\r\n\t\tif (me.isHorizontal()) {\r\n\t\t\ttitleX = left + ((right - left) / 2); // midpoint of the width\r\n\t\t\ttitleY = top + offset;\r\n\t\t\tmaxWidth = right - left;\r\n\t\t} else {\r\n\t\t\ttitleX = opts.position === 'left' ? left + offset : right - offset;\r\n\t\t\ttitleY = top + ((bottom - top) / 2);\r\n\t\t\tmaxWidth = bottom - top;\r\n\t\t\trotation = Math.PI * (opts.position === 'left' ? -0.5 : 0.5);\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\t\tctx.translate(titleX, titleY);\r\n\t\tctx.rotate(rotation);\r\n\t\tctx.textAlign = 'center';\r\n\t\tctx.textBaseline = 'middle';\r\n\r\n\t\tvar text = opts.text;\r\n\t\tif (helpers$1.isArray(text)) {\r\n\t\t\tvar y = 0;\r\n\t\t\tfor (var i = 0; i < text.length; ++i) {\r\n\t\t\t\tctx.fillText(text[i], 0, y, maxWidth);\r\n\t\t\t\ty += lineHeight;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tctx.fillText(text, 0, 0, maxWidth);\r\n\t\t}\r\n\r\n\t\tctx.restore();\r\n\t}\r\n});\r\n\r\nfunction createNewTitleBlockAndAttach(chart, titleOpts) {\r\n\tvar title = new Title({\r\n\t\tctx: chart.ctx,\r\n\t\toptions: titleOpts,\r\n\t\tchart: chart\r\n\t});\r\n\r\n\tcore_layouts.configure(chart, title, titleOpts);\r\n\tcore_layouts.addBox(chart, title);\r\n\tchart.titleBlock = title;\r\n}\r\n\r\nvar plugin_title = {\r\n\tid: 'title',\r\n\r\n\t/**\r\n\t * Backward compatibility: since 2.1.5, the title is registered as a plugin, making\r\n\t * Chart.Title obsolete. To avoid a breaking change, we export the Title as part of\r\n\t * the plugin, which one will be re-exposed in the chart.js file.\r\n\t * https://github.com/chartjs/Chart.js/pull/2640\r\n\t * @private\r\n\t */\r\n\t_element: Title,\r\n\r\n\tbeforeInit: function(chart) {\r\n\t\tvar titleOpts = chart.options.title;\r\n\r\n\t\tif (titleOpts) {\r\n\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\r\n\t\t}\r\n\t},\r\n\r\n\tbeforeUpdate: function(chart) {\r\n\t\tvar titleOpts = chart.options.title;\r\n\t\tvar titleBlock = chart.titleBlock;\r\n\r\n\t\tif (titleOpts) {\r\n\t\t\thelpers$1.mergeIf(titleOpts, core_defaults.global.title);\r\n\r\n\t\t\tif (titleBlock) {\r\n\t\t\t\tcore_layouts.configure(chart, titleBlock, titleOpts);\r\n\t\t\t\ttitleBlock.options = titleOpts;\r\n\t\t\t} else {\r\n\t\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\r\n\t\t\t}\r\n\t\t} else if (titleBlock) {\r\n\t\t\tcore_layouts.removeBox(chart, titleBlock);\r\n\t\t\tdelete chart.titleBlock;\r\n\t\t}\r\n\t}\r\n};\n\nvar plugins = {};\r\nvar filler = plugin_filler;\r\nvar legend = plugin_legend;\r\nvar title = plugin_title;\nplugins.filler = filler;\nplugins.legend = legend;\nplugins.title = title;\n\n/**\r\n * @namespace Chart\r\n */\r\n\r\n\r\ncore_controller.helpers = helpers$1;\r\n\r\n// @todo dispatch these helpers into appropriated helpers/helpers.* file and write unit tests!\r\ncore_helpers();\r\n\r\ncore_controller._adapters = core_adapters;\r\ncore_controller.Animation = core_animation;\r\ncore_controller.animationService = core_animations;\r\ncore_controller.controllers = controllers;\r\ncore_controller.DatasetController = core_datasetController;\r\ncore_controller.defaults = core_defaults;\r\ncore_controller.Element = core_element;\r\ncore_controller.elements = elements;\r\ncore_controller.Interaction = core_interaction;\r\ncore_controller.layouts = core_layouts;\r\ncore_controller.platform = platform;\r\ncore_controller.plugins = core_plugins;\r\ncore_controller.Scale = core_scale;\r\ncore_controller.scaleService = core_scaleService;\r\ncore_controller.Ticks = core_ticks;\r\ncore_controller.Tooltip = core_tooltip;\r\n\r\n// Register built-in scales\r\n\r\ncore_controller.helpers.each(scales, function(scale, type) {\r\n\tcore_controller.scaleService.registerScaleType(type, scale, scale._defaults);\r\n});\r\n\r\n// Load to register built-in adapters (as side effects)\r\n\r\n\r\n// Loading built-in plugins\r\n\r\nfor (var k in plugins) {\r\n\tif (plugins.hasOwnProperty(k)) {\r\n\t\tcore_controller.plugins.register(plugins[k]);\r\n\t}\r\n}\r\n\r\ncore_controller.platform.initialize();\r\n\r\nvar src = core_controller;\r\nif (typeof window !== 'undefined') {\r\n\twindow.Chart = core_controller;\r\n}\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore\r\n * @namespace Chart.Chart\r\n * @deprecated since version 2.8.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\ncore_controller.Chart = core_controller;\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore\r\n * @namespace Chart.Legend\r\n * @deprecated since version 2.1.5\r\n * @todo remove at version 3\r\n * @private\r\n */\r\ncore_controller.Legend = plugins.legend._element;\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore\r\n * @namespace Chart.Title\r\n * @deprecated since version 2.1.5\r\n * @todo remove at version 3\r\n * @private\r\n */\r\ncore_controller.Title = plugins.title._element;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.plugins instead\r\n * @namespace Chart.pluginService\r\n * @deprecated since version 2.1.5\r\n * @todo remove at version 3\r\n * @private\r\n */\r\ncore_controller.pluginService = core_controller.plugins;\r\n\r\n/**\r\n * Provided for backward compatibility, inheriting from Chart.PlugingBase has no\r\n * effect, instead simply create/register plugins via plain JavaScript objects.\r\n * @interface Chart.PluginBase\r\n * @deprecated since version 2.5.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\ncore_controller.PluginBase = core_controller.Element.extend({});\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.canvas instead.\r\n * @namespace Chart.canvasHelpers\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\ncore_controller.canvasHelpers = core_controller.helpers.canvas;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.layouts instead.\r\n * @namespace Chart.layoutService\r\n * @deprecated since version 2.7.3\r\n * @todo remove at version 3\r\n * @private\r\n */\r\ncore_controller.layoutService = core_controller.layouts;\r\n\r\n/**\r\n * Provided for backward compatibility, not available anymore.\r\n * @namespace Chart.LinearScaleBase\r\n * @deprecated since version 2.8\r\n * @todo remove at version 3\r\n * @private\r\n */\r\ncore_controller.LinearScaleBase = scale_linearbase;\r\n\r\n/**\r\n * Provided for backward compatibility, instead we should create a new Chart\r\n * by setting the type in the config (`new Chart(id, {type: '{chart-type}'}`).\r\n * @deprecated since version 2.8.0\r\n * @todo remove at version 3\r\n */\r\ncore_controller.helpers.each(\r\n\t[\r\n\t\t'Bar',\r\n\t\t'Bubble',\r\n\t\t'Doughnut',\r\n\t\t'Line',\r\n\t\t'PolarArea',\r\n\t\t'Radar',\r\n\t\t'Scatter'\r\n\t],\r\n\tfunction(klass) {\r\n\t\tcore_controller[klass] = function(ctx, cfg) {\r\n\t\t\treturn new core_controller(ctx, core_controller.helpers.merge(cfg || {}, {\r\n\t\t\t\ttype: klass.charAt(0).toLowerCase() + klass.slice(1)\r\n\t\t\t}));\r\n\t\t};\r\n\t}\r\n);\n\nreturn src;\n\n})));\n","import Chart from 'chart.js';\n\n// Modify horizontalBar so that each dataset (fragments, timeRanges) draws on the same row (level, track or buffer)\nChart.controllers.horizontalBar.prototype.calculateBarValuePixels = function (\n datasetIndex,\n index,\n options\n) {\n const chart = this.chart;\n const scale = this._getValueScale();\n const datasets = chart.data.datasets;\n if (!datasets) {\n throw new Error(`Chart datasets are ${datasets}`);\n }\n scale._parseValue = scaleParseValue;\n const obj = datasets[datasetIndex].data[index];\n const value = scale._parseValue(obj);\n const start =\n value.start === undefined\n ? 0\n : value.max >= 0 && value.min >= 0\n ? value.min\n : value.max;\n const length =\n value.start === undefined\n ? value.end\n : value.max >= 0 && value.min >= 0\n ? value.max - value.min\n : value.min - value.max;\n const base = scale.getPixelForValue(start);\n const head = scale.getPixelForValue(start + length);\n const size = head - base;\n\n return {\n size: size,\n base: base,\n head: head,\n center: head + size / 2,\n };\n};\n\nChart.controllers.horizontalBar.prototype.calculateBarIndexPixels = function (\n datasetIndex,\n index,\n ruler,\n options\n) {\n const rowHeight = options.barThickness;\n const size = rowHeight * options.categoryPercentage;\n const center = ruler.start + (datasetIndex * rowHeight + rowHeight / 2);\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size,\n };\n};\n\nChart.controllers.horizontalBar.prototype.draw = function () {\n const rects = this.getMeta().data;\n const len = rects.length;\n const dataset = this.getDataset();\n if (len !== dataset.data.length) {\n // View does not match dataset (wait for redraw)\n return;\n }\n const chart = this.chart;\n const scale = this._getValueScale();\n scale._parseValue = scaleParseValue;\n const ctx: CanvasRenderingContext2D = chart.ctx;\n const chartArea: { left; top; right; bottom } = chart.chartArea;\n Chart.helpers.canvas.clipArea(ctx, chartArea);\n if (!this.lineHeight) {\n this.lineHeight =\n Math.ceil(ctx.measureText('0').actualBoundingBoxAscent) + 2;\n }\n const lineHeight = this.lineHeight;\n let range = 0;\n for (let i = 0; i < len; ++i) {\n const rect = rects[i];\n const view = rect._view;\n if (!intersects(view.base, view.x, chartArea.left, chartArea.right)) {\n // Do not draw elements outside of the chart's viewport\n continue;\n }\n const obj = dataset.data[i];\n const val = scale._parseValue(obj);\n if (!isNaN(val.min) && !isNaN(val.max)) {\n const { dataType } = obj;\n let { stats } = obj;\n const isPart = dataType === 'part';\n const isFragmentHint = dataType === 'fragmentHint';\n const isFragment = dataType === 'fragment' || isPart || isFragmentHint;\n const isCue = dataType === 'cue';\n if (isCue) {\n view.y += view.height * 0.5 * (i % 2) - view.height * 0.25;\n } else if (isPart) {\n view.height -= 22;\n }\n const bounds = boundingRects(view);\n const drawText = bounds.w > lineHeight * 1.5 && !isFragmentHint;\n if (isFragment || isCue) {\n if (drawText) {\n view.borderWidth = 1;\n if (i === 0) {\n view.borderSkipped = false;\n }\n } else {\n range =\n range ||\n scale.getValueForPixel(chartArea.right) -\n scale.getValueForPixel(chartArea.left);\n if (range > 300 || isCue) {\n view.borderWidth = 0;\n }\n }\n if (isFragmentHint) {\n view.borderWidth = 0;\n view.backgroundColor = 'rgba(0, 0, 0, 0.1)';\n } else {\n view.backgroundColor = `rgba(0, 0, 0, ${0.05 + (i % 2) / 12})`;\n }\n }\n rect.draw();\n if (isFragment) {\n if (!stats) {\n stats = {};\n }\n if (isPart) {\n ctx.fillStyle = 'rgba(255, 255, 255, 0.5)';\n ctx.fillRect(bounds.x, bounds.y, bounds.w, bounds.h);\n }\n if (stats.aborted) {\n ctx.fillStyle = 'rgba(100, 0, 0, 0.3)';\n ctx.fillRect(bounds.x, bounds.y, bounds.w, bounds.h);\n }\n if (stats.loaded && stats.total) {\n ctx.fillStyle = 'rgba(50, 20, 100, 0.3)';\n ctx.fillRect(\n bounds.x,\n bounds.y,\n (bounds.w * stats.loaded) / stats.total,\n bounds.h\n );\n }\n } else if (isCue) {\n if (obj.active) {\n ctx.fillStyle = 'rgba(100, 100, 10, 0.4)';\n ctx.fillRect(bounds.x, bounds.y, bounds.w, bounds.h);\n }\n }\n if (drawText) {\n const start = val.start; // obj.start;\n ctx.fillStyle = 'rgb(0, 0, 0)';\n if (stats) {\n const snBounds = Object.assign({}, bounds);\n if (obj.cc) {\n const ccLabel = `cc:${obj.cc}`;\n const ccWidth = Math.min(\n ctx.measureText(ccLabel).width + 2,\n snBounds.w / 2 - 2\n );\n if (ccWidth) {\n ctx.fillText(\n ccLabel,\n snBounds.x + 2,\n snBounds.y + lineHeight,\n snBounds.w / 2 - 4\n );\n snBounds.x += ccWidth;\n snBounds.w -= ccWidth;\n }\n }\n const snLabel = isPart ? `part: ${obj.index}` : `sn: ${obj.sn}`;\n const textWidth = Math.min(\n ctx.measureText(snLabel).width + 2,\n snBounds.w - 2\n );\n ctx.fillText(\n snLabel,\n snBounds.x + snBounds.w - textWidth,\n snBounds.y + lineHeight,\n snBounds.w - 4\n );\n }\n if (isCue) {\n const strLength = Math.min(\n 30,\n Math.ceil(bounds.w / (lineHeight / 3))\n );\n ctx.fillText(\n ('' + obj.content).slice(0, strLength),\n bounds.x + 2,\n bounds.y + bounds.h - 3,\n bounds.w - 5\n );\n } else if (!isPart) {\n const float = start !== (start | 0);\n const fixedDigits = float\n ? Math.min(5, Math.max(1, Math.floor(bounds.w / 10 - 1)))\n : 0;\n const startString = hhmmss(start, fixedDigits);\n ctx.fillText(\n startString,\n bounds.x + 2,\n bounds.y + bounds.h - 3,\n bounds.w - 5\n );\n }\n }\n }\n }\n\n Chart.helpers.canvas.unclipArea(chart.ctx);\n};\n\nexport function applyChartInstanceOverrides(chart) {\n Object.keys(chart.scales).forEach((axis) => {\n const scale = chart.scales![axis];\n scale._parseValue = scaleParseValue;\n });\n}\n\nfunction scaleParseValue(value: number[] | any) {\n if (value === undefined) {\n console.warn('Chart values undefined (update chart)');\n return {};\n }\n\n let start;\n let end;\n let min;\n let max;\n\n if (Array.isArray(value)) {\n start = +this.getRightValue(value[0]);\n end = +this.getRightValue(value[1]);\n min = Math.min(start, end);\n max = Math.max(start, end);\n } else {\n start = +this.getRightValue(value.start);\n if ('end' in value) {\n end = +this.getRightValue(value.end);\n } else {\n end = +this.getRightValue(value.start + value.duration);\n }\n min = Math.min(start, end);\n max = Math.max(start, end);\n }\n\n return {\n min,\n max,\n start,\n end,\n };\n}\n\nfunction intersects(x1, x2, x3, x4) {\n return x2 > x3 && x1 < x4;\n}\n\nfunction boundingRects(vm) {\n const half = vm.height / 2;\n const left = Math.min(vm.x, vm.base);\n const right = Math.max(vm.x, vm.base);\n const top = vm.y - half;\n const bottom = vm.y + half;\n return {\n x: left,\n y: top,\n w: right - left,\n h: bottom - top,\n };\n}\n\nexport function hhmmss(value, fixedDigits) {\n const h = (value / 3600) | 0;\n const m = ((value / 60) | 0) % 60;\n const s = value % 60;\n return `${h}:${pad(m, 2)}:${pad(\n s.toFixed(fixedDigits),\n fixedDigits ? fixedDigits + 3 : 2\n )}`.replace(/^(?:0+:?)*(\\d.*?)(?:\\.0*)?$/, '$1');\n}\n\nfunction pad(str, length) {\n str = '' + str;\n while (str.length < length) {\n str = '0' + str;\n }\n return str;\n}\n","import Chart from 'chart.js';\nimport { applyChartInstanceOverrides, hhmmss } from './chartjs-horizontal-bar';\nimport { Fragment } from '../../src/loader/fragment';\nimport type { Level } from '../../src/types/level';\nimport type { TrackSet } from '../../src/types/track';\nimport type { MediaPlaylist } from '../../src/types/media-playlist';\nimport type { LevelDetails } from '../../src/loader/level-details';\nimport {\n FragChangedData,\n FragLoadedData,\n FragParsedData,\n} from '../../src/types/events';\n\ndeclare global {\n interface Window {\n Hls: any;\n hls: any;\n chart: any;\n }\n}\n\nconst X_AXIS_SECONDS = 'x-axis-seconds';\n\ninterface ChartScale {\n width: number;\n height: number;\n min: number;\n max: number;\n options: any;\n determineDataLimits: () => void;\n buildTicks: () => void;\n getLabelForIndex: (index: number, datasetIndex: number) => string;\n getPixelForTick: (index: number) => number;\n getPixelForValue: (\n value: number,\n index?: number,\n datasetIndex?: number\n ) => number;\n getValueForPixel: (pixel: number) => number;\n}\n\nexport class TimelineChart {\n private readonly chart: Chart;\n private rafDebounceRequestId: number = -1;\n private imageDataBuffer: ImageData | null = null;\n private media: HTMLMediaElement | null = null;\n private tracksChangeHandler?: (e) => void;\n private cuesChangeHandler?: (e) => void;\n private hidden: boolean = true;\n private zoom100: number = 60;\n\n constructor(canvas: HTMLCanvasElement, chartJsOptions?: any) {\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n throw new Error(\n `Could not get CanvasRenderingContext2D from canvas: ${canvas}`\n );\n }\n const chart =\n (this.chart =\n self.chart =\n new Chart(ctx, {\n type: 'horizontalBar',\n data: {\n labels: [],\n datasets: [],\n },\n options: Object.assign(getChartOptions(), chartJsOptions),\n plugins: [\n {\n afterRender: (chart) => {\n this.imageDataBuffer = null;\n this.drawCurrentTime();\n },\n },\n ],\n }));\n\n applyChartInstanceOverrides(chart);\n\n canvas.ondblclick = (event: MouseEvent) => {\n const chart = this.chart;\n const chartArea: { left; top; right; bottom } = chart.chartArea;\n const element = chart.getElementAtEvent(event);\n const pos = Chart.helpers.getRelativePosition(event, chart);\n const scale = this.chartScales[X_AXIS_SECONDS];\n // zoom in when double clicking near elements in chart area\n if (element.length || pos.x > chartArea.left) {\n const amount = event.getModifierState('Shift') ? -1.0 : 0.5;\n this.zoom(scale, pos, amount);\n } else {\n scale.options.ticks.min = 0;\n scale.options.ticks.max = this.zoom100;\n }\n this.update();\n };\n\n canvas.onwheel = (event: WheelEvent) => {\n if (event.deltaMode) {\n // exit if wheel is in page or line scrolling mode\n return;\n }\n const chart = this.chart;\n const chartArea: { left; top; right; bottom } = chart.chartArea;\n const pos = Chart.helpers.getRelativePosition(event, chart);\n // zoom when scrolling over chart elements\n if (pos.x > chartArea.left - 11) {\n const scale = this.chartScales[X_AXIS_SECONDS];\n if (event.deltaY) {\n const direction = -event.deltaY / Math.abs(event.deltaY);\n const normal = Math.min(333, Math.abs(event.deltaY)) / 1000;\n const ease = 1 - (1 - normal) * (1 - normal);\n this.zoom(scale, pos, ease * direction);\n } else if (event.deltaX) {\n this.pan(scale, event.deltaX / 10, scale.min, scale.max);\n }\n event.preventDefault();\n }\n };\n\n let moved = false;\n let gestureScale = 1;\n canvas.onpointerdown = (downEvent: PointerEvent) => {\n if (!downEvent.isPrimary || gestureScale !== 1) {\n return;\n }\n const chart = this.chart;\n const chartArea: { left; top; right; bottom } = chart.chartArea;\n const pos = Chart.helpers.getRelativePosition(downEvent, chart);\n // pan when dragging over chart elements\n if (pos.x > chartArea.left) {\n const scale = this.chartScales[X_AXIS_SECONDS];\n const startX = downEvent.clientX;\n const { min, max } = scale;\n const xToVal = (max - min) / scale.width;\n moved = false;\n canvas.setPointerCapture(downEvent.pointerId);\n canvas.onpointermove = (moveEvent: PointerEvent) => {\n if (!downEvent.isPrimary || gestureScale !== 1) {\n return;\n }\n const movedX = startX - moveEvent.clientX;\n const movedValue = movedX * xToVal;\n moved = moved || Math.abs(movedX) > 8;\n this.pan(scale, movedValue, min, max);\n };\n }\n };\n\n canvas.onpointerup = canvas.onpointercancel = (upEvent: PointerEvent) => {\n if (canvas.onpointermove) {\n canvas.onpointermove = null;\n canvas.releasePointerCapture(upEvent.pointerId);\n }\n if (!moved && upEvent.isPrimary) {\n this.click(upEvent);\n }\n };\n\n // Gesture events are for iOS and easier to implement than pinch-zoom with multiple pointers for all browsers\n // @ts-ignore\n canvas.ongesturestart = (event) => {\n gestureScale = 1;\n event.preventDefault();\n };\n\n // @ts-ignore\n canvas.ongestureend = (event) => {\n gestureScale = 1;\n };\n\n // @ts-ignore\n canvas.ongesturechange = (event) => {\n const chart = this.chart;\n const chartArea: { left; top; right; bottom } = chart.chartArea;\n const pos = Chart.helpers.getRelativePosition(event, chart);\n // zoom when scrolling over chart elements\n if (pos.x > chartArea.left) {\n const scale = this.chartScales[X_AXIS_SECONDS];\n const amount = event.scale - gestureScale;\n this.zoom(scale, pos, amount);\n gestureScale = event.scale;\n }\n };\n }\n\n private click(event: MouseEvent) {\n // Log object on click and seek to position\n const chart = this.chart;\n const element = chart.getElementAtEvent(event);\n if (element.length && chart.data.datasets) {\n const dataset = chart.data.datasets[(element[0] as any)._datasetIndex];\n const obj = dataset.data![(element[0] as any)._index];\n // eslint-disable-next-line no-console\n console.log(obj);\n if (self.hls?.media) {\n const scale = this.chartScales[X_AXIS_SECONDS];\n const pos = Chart.helpers.getRelativePosition(event, chart);\n self.hls.media.currentTime = scale.getValueForPixel(pos.x);\n }\n }\n }\n\n private pan(scale: ChartScale, amount: number, min: number, max: number) {\n if (amount === 0) {\n return;\n }\n let pan = amount;\n if (amount > 0) {\n pan = Math.min(this.zoom100 + 10 - max, amount);\n } else {\n pan = Math.max(-10 - min, amount);\n }\n scale.options.ticks.min = min + pan;\n scale.options.ticks.max = max + pan;\n this.updateOnRepaint();\n }\n\n private zoom(scale: ChartScale, pos: any, amount: number) {\n const range = scale.max - scale.min;\n const diff = range * amount;\n const minPercent = (scale.getValueForPixel(pos.x) - scale.min) / range;\n const maxPercent = 1 - minPercent;\n const minDelta = diff * minPercent;\n const maxDelta = diff * maxPercent;\n scale.options.ticks.min = Math.max(-10, scale.min + minDelta);\n scale.options.ticks.max = Math.min(this.zoom100 + 10, scale.max - maxDelta);\n this.updateOnRepaint();\n }\n\n get chartScales(): { 'x-axis-seconds': ChartScale } {\n return (this.chart as any).scales;\n }\n\n reset() {\n const scale = this.chartScales[X_AXIS_SECONDS];\n scale.options.ticks.min = 0;\n scale.options.ticks.max = 60;\n const { labels, datasets } = this.chart.data;\n if (labels && datasets) {\n labels.length = 0;\n datasets.length = 0;\n this.resize(datasets);\n }\n }\n\n update() {\n if (this.hidden || !this.chart.ctx?.canvas.width) {\n return;\n }\n self.cancelAnimationFrame(this.rafDebounceRequestId);\n this.chart.update({\n duration: 0,\n lazy: true,\n });\n }\n\n updateOnRepaint() {\n if (this.hidden) {\n return;\n }\n self.cancelAnimationFrame(this.rafDebounceRequestId);\n this.rafDebounceRequestId = self.requestAnimationFrame(() => this.update());\n }\n\n resize(datasets?) {\n if (this.hidden) {\n return;\n }\n if (datasets?.length) {\n const scale = this.chartScales[X_AXIS_SECONDS];\n const { top } = this.chart.chartArea;\n const height =\n top +\n datasets.reduce((val, dataset) => val + dataset.barThickness, 0) +\n scale.height +\n 5;\n const container = this.chart.canvas?.parentElement;\n if (container) {\n container.style.height = `${height}px`;\n }\n }\n self.cancelAnimationFrame(this.rafDebounceRequestId);\n this.rafDebounceRequestId = self.requestAnimationFrame(() => {\n this.chart.resize();\n });\n }\n\n show() {\n this.hidden = false;\n }\n\n hide() {\n this.hidden = true;\n }\n\n updateLevels(levels: Level[], levelSwitched) {\n const { labels, datasets } = this.chart.data;\n if (!labels || !datasets) {\n return;\n }\n const { loadLevel, nextLoadLevel, nextAutoLevel } = self.hls;\n // eslint-disable-next-line no-undefined\n const currentLevel =\n levelSwitched !== undefined ? levelSwitched : self.hls.currentLevel;\n levels.forEach((level, i) => {\n const index = level.id || i;\n labels.push(getLevelName(level, index));\n let borderColor: string | null = null;\n if (currentLevel === i) {\n borderColor = 'rgba(32, 32, 240, 1.0)';\n } else if (loadLevel === i) {\n borderColor = 'rgba(255, 128, 0, 1.0)';\n } else if (nextLoadLevel === i) {\n borderColor = 'rgba(200, 200, 64, 1.0)';\n } else if (nextAutoLevel === i) {\n borderColor = 'rgba(160, 0, 160, 1.0)';\n }\n datasets.push(\n datasetWithDefaults({\n url: Array.isArray(level.url)\n ? level.url[level.urlId || 0]\n : level.url,\n trackType: 'level',\n borderColor,\n level: index,\n })\n );\n if (level.details) {\n this.updateLevelOrTrack(level.details);\n }\n });\n this.resize(datasets);\n }\n\n updateAudioTracks(audioTracks: MediaPlaylist[]) {\n const { labels, datasets } = this.chart.data;\n if (!labels || !datasets) {\n return;\n }\n const { audioTrack } = self.hls;\n audioTracks.forEach((track: MediaPlaylist, i) => {\n labels.push(getAudioTrackName(track, i));\n datasets.push(\n datasetWithDefaults({\n url: track.url,\n trackType: 'audioTrack',\n borderColor: audioTrack === i ? 'rgba(32, 32, 240, 1.0)' : null,\n audioTrack: i,\n })\n );\n if (track.details) {\n this.updateLevelOrTrack(track.details);\n }\n });\n this.resize(datasets);\n }\n\n updateSubtitleTracks(subtitles: MediaPlaylist[]) {\n const { labels, datasets } = this.chart.data;\n if (!labels || !datasets) {\n return;\n }\n const { subtitleTrack } = self.hls;\n subtitles.forEach((track, i) => {\n labels.push(getSubtitlesName(track, i));\n datasets.push(\n datasetWithDefaults({\n url: track.url,\n trackType: 'subtitleTrack',\n borderColor: subtitleTrack === i ? 'rgba(32, 32, 240, 1.0)' : null,\n subtitleTrack: i,\n })\n );\n if (track.details) {\n this.updateLevelOrTrack(track.details);\n }\n });\n this.resize(datasets);\n }\n\n removeType(\n trackType: 'level' | 'audioTrack' | 'subtitleTrack' | 'textTrack'\n ) {\n const { labels, datasets } = this.chart.data;\n if (!labels || !datasets) {\n return;\n }\n let i = datasets.length;\n while (i--) {\n if ((datasets[i] as any).trackType === trackType) {\n datasets.splice(i, 1);\n labels.splice(i, 1);\n }\n }\n }\n\n updateLevelOrTrack(details: LevelDetails) {\n const { targetduration, totalduration, url } = details;\n const { datasets } = this.chart.data;\n let levelDataSet = arrayFind(\n datasets,\n (dataset) =>\n stripDeliveryDirectives(url) ===\n stripDeliveryDirectives(dataset.url || '')\n );\n if (!levelDataSet) {\n levelDataSet = arrayFind(\n datasets,\n (dataset) => details.fragments[0]?.level === dataset.level\n );\n }\n if (!levelDataSet) {\n return;\n }\n const data = levelDataSet.data;\n data.length = 0;\n if (details.fragments) {\n details.fragments.forEach((fragment) => {\n // TODO: keep track of initial playlist start and duration so that we can show drift and pts offset\n // (Make that a feature of hls.js v1.0.0 fragments)\n const chartFragment = Object.assign(\n {\n dataType: 'fragment',\n },\n fragment,\n // Remove loader references for GC\n { loader: null }\n );\n data.push(chartFragment);\n });\n }\n if (details.partList) {\n details.partList.forEach((part) => {\n const chartPart = Object.assign(\n {\n dataType: 'part',\n start: part.fragment.start + part.fragOffset,\n },\n part,\n {\n fragment: Object.assign({}, part.fragment, { loader: null }),\n }\n );\n data.push(chartPart);\n });\n if (details.fragmentHint) {\n const chartFragment = Object.assign(\n {\n dataType: 'fragmentHint',\n },\n details.fragmentHint,\n // Remove loader references for GC\n { loader: null }\n );\n data.push(chartFragment);\n }\n }\n const start = getPlaylistStart(details);\n this.maxZoom = this.zoom100 = Math.max(\n start + totalduration + targetduration * 3,\n this.zoom100\n );\n this.updateOnRepaint();\n }\n\n // @ts-ignore\n get minZoom(): number {\n const scale = this.chartScales[X_AXIS_SECONDS];\n if (scale) {\n return scale.options.ticks.min;\n }\n return 1;\n }\n\n // @ts-ignore\n get maxZoom(): number {\n const scale = this.chartScales[X_AXIS_SECONDS];\n if (scale) {\n return scale.options.ticks.max;\n }\n return this.zoom100;\n }\n\n // @ts-ignore\n set maxZoom(x: number) {\n const currentZoom = this.maxZoom;\n const newZoom = Math.max(x, currentZoom);\n if (currentZoom === 60 && newZoom !== currentZoom) {\n const scale = this.chartScales[X_AXIS_SECONDS];\n scale.options.ticks.max = newZoom;\n }\n }\n\n updateFragment(data: FragLoadedData | FragParsedData | FragChangedData) {\n const { datasets } = this.chart.data;\n const frag: Fragment = data.frag;\n let levelDataSet = arrayFind(\n datasets,\n (dataset) => frag.baseurl === dataset.url\n );\n if (!levelDataSet) {\n levelDataSet = arrayFind(\n datasets,\n (dataset) => frag.level === dataset.level\n );\n }\n if (!levelDataSet) {\n return;\n }\n // eslint-disable-next-line no-restricted-properties\n const fragData = arrayFind(\n levelDataSet.data,\n (fragData) => fragData.relurl === frag.relurl && fragData.sn === frag.sn\n );\n if (fragData && fragData !== frag) {\n Object.assign(fragData, frag);\n }\n this.updateOnRepaint();\n }\n\n updateSourceBuffers(tracks: TrackSet, media: HTMLMediaElement) {\n const { labels, datasets } = this.chart.data;\n if (!labels || !datasets) {\n return;\n }\n const trackTypes = Object.keys(tracks).sort((type) =>\n type === 'video' ? 1 : -1\n );\n const mediaBufferData = [];\n\n this.removeSourceBuffers();\n\n this.media = media;\n\n trackTypes.forEach((type) => {\n const track = tracks[type];\n const data = [];\n const sourceBuffer = track.buffer;\n const backgroundColor = {\n video: 'rgba(0, 0, 255, 0.2)',\n audio: 'rgba(128, 128, 0, 0.2)',\n audiovideo: 'rgba(128, 128, 255, 0.2)',\n }[type];\n labels.unshift(`${type} buffer (${track.id})`);\n datasets.unshift(\n datasetWithDefaults({\n data,\n categoryPercentage: 0.5,\n backgroundColor,\n sourceBuffer,\n })\n );\n sourceBuffer.addEventListener('update', () => {\n try {\n replaceTimeRangeTuples(sourceBuffer.buffered, data);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.warn(error);\n return;\n }\n replaceTimeRangeTuples(media.buffered, mediaBufferData);\n this.update();\n });\n });\n\n if (trackTypes.length === 0) {\n media.onprogress = () => {\n replaceTimeRangeTuples(media.buffered, mediaBufferData);\n this.update();\n };\n }\n\n labels.unshift('media buffer');\n datasets.unshift(\n datasetWithDefaults({\n data: mediaBufferData,\n categoryPercentage: 0.5,\n backgroundColor: 'rgba(0, 255, 0, 0.2)',\n media,\n })\n );\n\n media.ontimeupdate = () => this.drawCurrentTime();\n\n // TextTrackList\n const { textTracks } = media;\n this.tracksChangeHandler =\n this.tracksChangeHandler || ((e) => this.setTextTracks(e.currentTarget));\n textTracks.removeEventListener('addtrack', this.tracksChangeHandler);\n textTracks.removeEventListener('removetrack', this.tracksChangeHandler);\n textTracks.removeEventListener('change', this.tracksChangeHandler);\n textTracks.addEventListener('addtrack', this.tracksChangeHandler);\n textTracks.addEventListener('removetrack', this.tracksChangeHandler);\n textTracks.addEventListener('change', this.tracksChangeHandler);\n this.setTextTracks(textTracks);\n this.resize(datasets);\n }\n\n removeSourceBuffers() {\n const { labels, datasets } = this.chart.data;\n if (!labels || !datasets) {\n return;\n }\n let i = datasets.length;\n while (i--) {\n if ((labels[0] || '').toString().indexOf('buffer') > -1) {\n datasets.splice(i, 1);\n labels.splice(i, 1);\n }\n }\n }\n\n setTextTracks(textTracks) {\n const { labels, datasets } = this.chart.data;\n if (!labels || !datasets) {\n return;\n }\n this.removeType('textTrack');\n [].forEach.call(textTracks, (textTrack, i) => {\n // Uncomment to disable rending of subtitle/caption cues in the timeline\n // if (textTrack.kind === 'subtitles' || textTrack.kind === 'captions') {\n // return;\n // }\n const data = [];\n labels.push(\n `${textTrack.name || textTrack.label} ${textTrack.kind} (${\n textTrack.mode\n })`\n );\n datasets.push(\n datasetWithDefaults({\n data,\n categoryPercentage: 0.5,\n url: '',\n trackType: 'textTrack',\n borderColor:\n (textTrack.mode !== 'hidden') === i\n ? 'rgba(32, 32, 240, 1.0)'\n : null,\n textTrack: i,\n })\n );\n this.cuesChangeHandler =\n this.cuesChangeHandler ||\n ((e) => this.updateTextTrackCues(e.currentTarget));\n textTrack._data = data;\n textTrack.removeEventListener('cuechange', this.cuesChangeHandler);\n textTrack.addEventListener('cuechange', this.cuesChangeHandler);\n this.updateTextTrackCues(textTrack);\n });\n this.resize(datasets);\n }\n\n updateTextTrackCues(textTrack) {\n const data = textTrack._data;\n if (!data) {\n return;\n }\n const { activeCues, cues } = textTrack;\n data.length = 0;\n if (!cues) {\n return;\n }\n const length = cues.length;\n\n let activeLength = 0;\n let activeMin = Infinity;\n let activeMax = 0;\n if (activeCues) {\n activeLength = activeCues.length;\n for (let i = 0; i < activeLength; i++) {\n let cue = activeCues[i];\n if (!cue && activeCues.item) {\n cue = activeCues.item(i);\n }\n if (cue) {\n activeMin = Math.min(activeMin, cue.startTime);\n activeMax = cue.endTime\n ? Math.max(activeMax, cue.endTime)\n : activeMax;\n } else {\n activeLength--;\n }\n }\n }\n for (let i = 0; i < length; i++) {\n let cue = cues[i];\n if (!cue && cues.item) {\n cue = cues.item(i);\n }\n if (!cue) {\n continue;\n }\n const start = cue.startTime;\n const end = cue.endTime;\n const content = getCueLabel(cue);\n let active = false;\n if (activeLength && end >= activeMin && start <= activeMax) {\n active = [].some.call(activeCues, (activeCue) =>\n cuesMatch(activeCue, cue)\n );\n }\n data.push({\n start,\n end,\n content,\n active,\n dataType: 'cue',\n });\n }\n this.updateOnRepaint();\n }\n\n drawCurrentTime() {\n const chart = this.chart;\n if (self.hls?.media && chart.data.datasets!.length) {\n const currentTime = self.hls.media.currentTime;\n const scale = this.chartScales[X_AXIS_SECONDS];\n const ctx = chart.ctx;\n if (this.hidden || !ctx || !ctx.canvas.width) {\n return;\n }\n const chartArea: { left; top; right; bottom } = chart.chartArea;\n const x = scale.getPixelForValue(currentTime);\n ctx.restore();\n ctx.save();\n this.drawLineX(ctx, x, chartArea);\n if (x > chartArea.left && x < chartArea.right) {\n ctx.fillStyle = this.getCurrentTimeColor(self.hls.media);\n const y = chartArea.top + chart.data.datasets![0].barThickness + 1;\n ctx.fillText(hhmmss(currentTime, 5), x + 2, y, 100);\n }\n ctx.restore();\n }\n }\n\n getCurrentTimeColor(video: HTMLMediaElement): string {\n if (!video.readyState || video.ended) {\n return 'rgba(0, 0, 0, 0.9)';\n }\n if (video.seeking || video.readyState < 3) {\n return 'rgba(255, 128, 0, 0.9)';\n }\n if (video.paused) {\n return 'rgba(128, 0, 255, 0.9)';\n }\n return 'rgba(0, 0, 255, 0.9)';\n }\n\n drawLineX(ctx, x: number, chartArea) {\n if (!this.imageDataBuffer) {\n const devicePixelRatio = self.devicePixelRatio || 1;\n this.imageDataBuffer = ctx.getImageData(\n 0,\n 0,\n chartArea.right * devicePixelRatio,\n chartArea.bottom * devicePixelRatio\n );\n } else {\n ctx.fillStyle = '#ffffff';\n ctx.fillRect(0, 0, chartArea.right, chartArea.bottom);\n ctx.putImageData(this.imageDataBuffer, 0, 0);\n }\n if (x > chartArea.left && x < chartArea.right) {\n ctx.lineWidth = 1;\n ctx.strokeStyle = this.getCurrentTimeColor(self.hls.media); // alpha '0.5'\n ctx.beginPath();\n ctx.moveTo(x, chartArea.top);\n ctx.lineTo(x, chartArea.bottom);\n ctx.stroke();\n }\n }\n}\n\nfunction stripDeliveryDirectives(url: string): string {\n if (url === '') {\n return url;\n }\n try {\n const webUrl: URL = new self.URL(url);\n webUrl.searchParams.delete('_HLS_msn');\n webUrl.searchParams.delete('_HLS_part');\n webUrl.searchParams.delete('_HLS_skip');\n webUrl.searchParams.sort();\n return webUrl.href;\n } catch (e) {\n return url.replace(/[?&]_HLS_(?:msn|part|skip)=[^?&]+/g, '');\n }\n}\n\nfunction datasetWithDefaults(options) {\n return Object.assign(\n {\n data: [],\n xAxisID: X_AXIS_SECONDS,\n barThickness: 35,\n categoryPercentage: 1,\n },\n options\n );\n}\n\nfunction getPlaylistStart(details: LevelDetails): number {\n return details.fragments?.length ? details.fragments[0].start : 0;\n}\n\nfunction getLevelName(level: Level, index: number) {\n let label = '(main playlist)';\n if (level.attrs?.BANDWIDTH) {\n label = `${getMainLevelAttribute(level)}@${level.attrs.BANDWIDTH}`;\n if (level.name) {\n label = `${label} (${level.name})`;\n }\n } else if (level.name) {\n label = level.name;\n }\n return `${label} L-${index}`;\n}\n\nfunction getMainLevelAttribute(level: Level) {\n return level.attrs.RESOLUTION || level.attrs.CODECS || level.attrs.AUDIO;\n}\n\nfunction getAudioTrackName(track: MediaPlaylist, index: number) {\n const label = track.lang ? `${track.name}/${track.lang}` : track.name;\n return `${label} (${track.groupId || track.attrs['GROUP-ID']}) A-${index}`;\n}\n\nfunction getSubtitlesName(track: MediaPlaylist, index: number) {\n const label = track.lang ? `${track.name}/${track.lang}` : track.name;\n return `${label} (${track.groupId || track.attrs['GROUP-ID']}) S-${index}`;\n}\n\nfunction replaceTimeRangeTuples(timeRanges, data) {\n data.length = 0;\n const { length } = timeRanges;\n for (let i = 0; i < length; i++) {\n data.push([timeRanges.start(i), timeRanges.end(i)]);\n }\n}\n\nfunction cuesMatch(cue1, cue2) {\n return (\n cue1.startTime === cue2.startTime &&\n cue1.endTime === cue2.endTime &&\n cue1.text === cue2.text &&\n cue1.data === cue2.data &&\n JSON.stringify(cue1.value) === JSON.stringify(cue2.value)\n );\n}\n\nfunction getCueLabel(cue) {\n if (cue.text) {\n return cue.text;\n }\n const result = parseDataCue(cue);\n return JSON.stringify(result);\n}\n\nfunction parseDataCue(cue) {\n const data = {};\n const { value } = cue;\n if (value) {\n if (value.info) {\n let collection = data[value.key];\n if (collection !== Object(collection)) {\n collection = {};\n data[value.key] = collection;\n }\n collection[value.info] = value.data;\n } else {\n data[value.key] = value.data;\n }\n }\n return data;\n}\n\nfunction getChartOptions() {\n return {\n animation: {\n duration: 0,\n },\n elements: {\n rectangle: {\n borderWidth: 1,\n borderColor: 'rgba(20, 20, 20, 1)',\n },\n },\n events: ['click', 'touchstart'],\n hover: {\n mode: null,\n animationDuration: 0,\n },\n legend: {\n display: false,\n },\n maintainAspectRatio: false,\n\n responsiveAnimationDuration: 0,\n scales: {\n // TODO: additional xAxes for PTS and PDT\n xAxes: [\n {\n id: X_AXIS_SECONDS,\n ticks: {\n beginAtZero: true,\n sampleSize: 0,\n maxRotation: 0,\n callback: (tickValue, i, ticks) => {\n if (i === 0 || i === ticks.length - 1) {\n return tickValue ? '' : '0';\n } else {\n return hhmmss(tickValue, 2);\n }\n },\n },\n },\n ],\n yAxes: [\n {\n gridLines: {\n display: false,\n },\n },\n ],\n },\n tooltips: {\n enabled: false,\n },\n };\n}\n\nfunction arrayFind(array, predicate) {\n const len = array.length >>> 0;\n if (typeof predicate !== 'function') {\n throw TypeError('predicate must be a function');\n }\n const thisArg = arguments[2];\n let k = 0;\n while (k < len) {\n const kValue = array[k];\n if (predicate.call(thisArg, kValue, k, array)) {\n return kValue;\n }\n k++;\n }\n // eslint-disable-next-line no-undefined\n return undefined;\n}\n","/* global $, Hls, __CLOUDFLARE_PAGES__ */\n/* eslint camelcase: 0 */\n\nimport { pack } from 'jsonpack';\nimport 'promise-polyfill/src/polyfill';\nimport { decodeMulti } from '@msgpack/msgpack';\nimport { sortObject, copyTextToClipboard } from './demo-utils';\nimport { TimelineChart } from './chart/timeline-chart';\n\nconst CLOUDFLARE_PAGES = __CLOUDFLARE_PAGES__; // replaced in build\n\nconst STORAGE_KEYS = {\n Editor_Persistence: 'hlsjs:config-editor-persist',\n Hls_Config: 'hlsjs:config',\n volume: 'hlsjs:volume',\n demo_tabs: 'hlsjs:demo-tabs',\n};\n\nconst testStreams = require('../tests/test-streams');\nconst defaultTestStreamUrl = testStreams[Object.keys(testStreams)[0]].url;\nconst sourceURL = decodeURIComponent(getURLParam('src', defaultTestStreamUrl));\n\nlet demoConfig = {};\nconst demoConfigParam = getURLParam('demoConfig', null);\nif (demoConfigParam) {\n try {\n demoConfig = JSON.parse(atob(demoConfigParam));\n } catch (error) {\n console.warn('Failed to parse demoConfig:', error);\n }\n}\n\nconst hlsjsDefaults = {\n debug: true,\n enableWorker: true,\n lowLatencyMode: true,\n backBufferLength: 60 * 1.5,\n // 中文注释:启用算法分片解析,并在解析阶段跳过算法分片\n algoDataEnabled: true,\n algoSegmentPattern: '_dat\\\\.ts($|[?#])',\n algoPreloadCount: 2,\n algoCacheSize: 10,\n};\n\nconst hlsjsConfigParam = getURLParam('hlsjsConfig', null);\nlet hlsjsConfig = hlsjsDefaults;\nlet hlsjsConfigLoadedFromUrl = false;\nif (hlsjsConfigParam) {\n try {\n hlsjsConfig = JSON.parse(atob(hlsjsConfigParam));\n hlsjsConfigLoadedFromUrl = true;\n } catch (error) {\n console.warn('Failed to parse hlsjsConfig:', error);\n }\n}\n\nlet enableStreaming = getDemoConfigPropOrDefault('enableStreaming', true);\nlet autoRecoverError = getDemoConfigPropOrDefault('autoRecoverError', true);\nlet levelCapping = getDemoConfigPropOrDefault('levelCapping', -1);\nlet limitMetrics = getDemoConfigPropOrDefault('limitMetrics', -1);\nlet dumpfMP4 = getDemoConfigPropOrDefault('dumpfMP4', false);\nlet stopOnStall = getDemoConfigPropOrDefault('stopOnStall', false);\n\nlet bufferingIdx = -1;\nlet selectedTestStream = null;\n\nconst video = document.querySelector('#video');\nconst startTime = Date.now();\n\nlet lastSeekingIdx;\nlet lastStartPosition;\nlet lastDuration;\nlet lastAudioTrackSwitchingIdx;\nlet hls;\nlet url;\nlet events;\nlet stats;\nlet tracks;\nlet fmp4Data;\nlet configPersistenceEnabled = false;\nlet configEditor = null;\nlet chart;\nlet resizeAsyncCallbackId = -1;\nconst algoChunkKeys = new Set();\n\nconst requestAnimationFrame = self.requestAnimationFrame || self.setTimeout;\nconst cancelAnimationFrame = self.cancelAnimationFrame || self.clearTimeout;\nconst resizeHandlers = [];\nconst resize = () => {\n cancelAnimationFrame(resizeAsyncCallbackId);\n resizeAsyncCallbackId = requestAnimationFrame(() => {\n resizeHandlers.forEach((handler) => {\n handler();\n });\n });\n};\n\nconst summarizeAlgoMsgpack = (value, depth = 0) => {\n if (depth > 3) return '[MaxDepth]';\n if (value == null) return value;\n if (\n typeof value === 'number' ||\n typeof value === 'string' ||\n typeof value === 'boolean'\n ) {\n return value;\n }\n if (value instanceof Uint8Array) {\n return { __type: 'Uint8Array', length: value.length };\n }\n if (Array.isArray(value)) {\n const head = value\n .slice(0, 20)\n .map((v) => summarizeAlgoMsgpack(v, depth + 1));\n return value.length > 20\n ? { __type: 'Array', length: value.length, head }\n : head;\n }\n if (typeof value === 'object') {\n const obj = {};\n Object.keys(value)\n .slice(0, 50)\n .forEach((k) => {\n obj[k] = summarizeAlgoMsgpack(value[k], depth + 1);\n });\n return obj;\n }\n return String(value);\n};\n\nconst extractAlgoRoot = (items) => {\n if (!Array.isArray(items)) return null;\n\n // 处理新格式:[[version, chunkIndex, ...frames]]\n if (items.length === 1 && Array.isArray(items[0])) {\n const root = items[0];\n // 如果长度不是 4,说明是新的扁平化变体或者其他变体\n if (root.length !== 4 && root.length >= 2) {\n return {\n version: root[0],\n chunkIndex: root[1],\n frameSize: root.length - 2,\n frames: root.slice(2),\n };\n }\n // 如果长度是 4,可能是之前定义的 [v, ci, size, frames] 包装在数组里\n if (root.length === 4) {\n const [version, chunkIndex, frameSize, frames] = root;\n return { version, chunkIndex, frameSize, frames };\n }\n // 或者是对象\n if (root && typeof root === 'object' && !Array.isArray(root)) {\n return {\n version: root.version,\n chunkIndex: root.chunkIndex,\n frameSize: root.frameSize,\n frames: root.frames,\n };\n }\n }\n\n // 处理旧格式:v1, v2, v3, v4 依次打包\n if (items.length === 4) {\n const [version, chunkIndex, frameSize, frames] = items;\n return { version, chunkIndex, frameSize, frames };\n }\n\n return null;\n};\n\nself.onresize = resize;\nif (self.screen && self.screen.orientation) {\n self.screen.orientation.onchange = resize;\n}\n\nconst playerResize = () => {\n const bounds = video.getBoundingClientRect();\n $('#currentSize').html(\n `${Math.round(bounds.width * 10) / 10} x ${\n Math.round(bounds.height * 10) / 10\n }`\n );\n if (video.videoWidth && video.videoHeight) {\n $('#currentResolution').html(`${video.videoWidth} x ${video.videoHeight}`);\n }\n};\nresizeHandlers.push(playerResize);\n\n$(document).ready(function () {\n setupConfigEditor();\n\n chart = setupTimelineChart();\n\n Object.keys(testStreams).forEach((key, index) => {\n const stream = testStreams[key];\n const option = new Option(stream.description, key);\n $('#streamSelect').append(option);\n if (stream.url === sourceURL) {\n document.querySelector('#streamSelect').selectedIndex = index + 1;\n }\n });\n\n const videoWidth = video.style.width;\n if (videoWidth) {\n $('#videoSize option').each(function (i, option) {\n if (option.value === videoWidth) {\n document.querySelector('#videoSize').selectedIndex = i;\n $('#bufferedCanvas').width(videoWidth);\n resize();\n return false;\n }\n });\n }\n\n $('#streamSelect').change(function () {\n const key = $('#streamSelect').val() || Object.keys(testStreams)[0];\n selectedTestStream = testStreams[key];\n const streamUrl = selectedTestStream.url;\n $('#streamURL').val(streamUrl);\n loadSelectedStream();\n });\n\n $('#streamURL').change(function () {\n selectedTestStream = null;\n loadSelectedStream();\n });\n\n $('#videoSize').change(function () {\n $('#video').width($('#videoSize').val());\n $('#bufferedCanvas').width($('#videoSize').val());\n checkBuffer();\n resize();\n });\n\n $('#enableStreaming').click(function () {\n enableStreaming = this.checked;\n loadSelectedStream();\n });\n\n $('#autoRecoverError').click(function () {\n autoRecoverError = this.checked;\n onDemoConfigChanged();\n });\n\n $('#stopOnStall').click(function () {\n stopOnStall = this.checked;\n onDemoConfigChanged();\n });\n\n $('#dumpfMP4').click(function () {\n dumpfMP4 = this.checked;\n $('.btn-dump').toggle(dumpfMP4);\n onDemoConfigChanged();\n });\n\n $('#limitMetrics').change(function () {\n limitMetrics = this.value;\n onDemoConfigChanged();\n });\n\n $('#levelCapping').change(function () {\n levelCapping = this.value;\n onDemoConfigChanged();\n });\n\n $('#limitMetrics').val(limitMetrics);\n $('#enableStreaming').prop('checked', enableStreaming);\n $('#autoRecoverError').prop('checked', autoRecoverError);\n $('#stopOnStall').prop('checked', stopOnStall);\n $('#dumpfMP4').prop('checked', dumpfMP4);\n $('#levelCapping').val(levelCapping);\n\n // If cloudflare pages build link to branch\n // If not a stable tag link to npm\n // otherwise link to github tag\n function getVersionLink(version) {\n const noneStable = version.includes('-');\n if (CLOUDFLARE_PAGES) {\n return `https://github.com/video-dev/hls.js/tree/${encodeURIComponent(\n CLOUDFLARE_PAGES.branch\n )}`;\n } else if (noneStable) {\n return `https://www.npmjs.com/package/hls.js/v/${encodeURIComponent(\n version\n )}`;\n } else {\n return `https://github.com/video-dev/hls.js/releases/tag/v${encodeURIComponent(\n version\n )}`;\n }\n }\n\n const version = Hls.version;\n if (version) {\n const $a = $('<a />')\n .attr('target', '_blank')\n .attr('rel', 'noopener noreferrer')\n .attr('href', getVersionLink(version))\n .text('v' + version);\n $('.title').append(' ').append($a);\n }\n\n $('#streamURL').val(sourceURL);\n\n const volumeSettings = JSON.parse(\n localStorage.getItem(STORAGE_KEYS.volume)\n ) || {\n volume: 0.05,\n muted: false,\n };\n video.volume = volumeSettings.volume;\n video.muted = volumeSettings.muted;\n\n $('.btn-dump').toggle(dumpfMP4);\n $('#toggleButtons').show();\n\n $('#metricsButtonWindow').toggle(self.windowSliding);\n $('#metricsButtonFixed').toggle(!self.windowSliding);\n\n addVideoEventListeners(video);\n loadSelectedStream();\n\n let tabIndexesCSV = localStorage.getItem(STORAGE_KEYS.demo_tabs);\n if (tabIndexesCSV === null) {\n tabIndexesCSV = '0,1,2';\n }\n if (tabIndexesCSV) {\n tabIndexesCSV.split(',').forEach((indexString) => {\n toggleTab($('.demo-tab-btn')[parseInt(indexString) || 0], true);\n });\n }\n $(self).on('popstate', function () {\n self.location.reload();\n });\n});\n\nfunction setupGlobals() {\n self.events = events = {\n url: url,\n t0: self.performance.now(),\n load: [],\n buffer: [],\n video: [],\n level: [],\n bitrate: [],\n };\n lastAudioTrackSwitchingIdx = undefined;\n lastSeekingIdx = undefined;\n bufferingIdx = -1;\n\n // actual values, only on window\n self.recoverDecodingErrorDate = null;\n self.recoverSwapAudioCodecDate = null;\n self.fmp4Data = fmp4Data = {\n audio: [],\n video: [],\n };\n self.onClickBufferedRange = onClickBufferedRange;\n self.updateLevelInfo = updateLevelInfo;\n self.onDemoConfigChanged = onDemoConfigChanged;\n self.createfMP4 = createfMP4;\n self.goToMetricsPermaLink = goToMetricsPermaLink;\n self.toggleTab = toggleTab;\n self.toggleTabClick = toggleTabClick;\n self.applyConfigEditorValue = applyConfigEditorValue;\n}\n\nfunction trimArray(target, limit) {\n if (limit < 0) {\n return;\n }\n\n while (target.length > limit) {\n target.shift();\n }\n}\n\nfunction trimEventHistory() {\n const x = limitMetrics;\n\n if (x < 0) {\n return;\n }\n\n trimArray(events.load, x);\n trimArray(events.buffer, x);\n trimArray(events.video, x);\n trimArray(events.level, x);\n trimArray(events.bitrate, x);\n}\n\nfunction loadSelectedStream() {\n $('#statusOut,#errorOut,#algoDataOut').empty();\n resetAlgoDataOutput();\n\n if (!Hls.isSupported()) {\n handleUnsupported();\n return;\n }\n\n url = $('#streamURL').val();\n\n // Check if the URL is valid to avoid XSS issue.\n if (url) {\n try {\n new URL(url);\n } catch (error) {\n $('#streamURL').val('');\n alert('Invalid URL');\n return false;\n }\n }\n\n setupGlobals();\n hideCanvas();\n\n if (hls) {\n hls.destroy();\n clearInterval(hls.bufferTimer);\n hls = null;\n }\n\n if (!enableStreaming) {\n logStatus('Streaming disabled');\n return;\n }\n\n logStatus('Loading ' + url);\n\n // Extending both a demo-specific config and the user config which can override all\n const hlsConfig = $.extend(\n {},\n hlsjsDefaults,\n getEditorValue({ parse: true })\n );\n\n if (selectedTestStream && selectedTestStream.config) {\n console.info(\n '[loadSelectedStream] extending hls config with stream-specific config: ',\n selectedTestStream.config\n );\n $.extend(hlsConfig, selectedTestStream.config);\n updateConfigEditorValue(hlsConfig);\n }\n\n onDemoConfigChanged(true);\n console.log('Using Hls.js config:', hlsConfig);\n\n self.hls = hls = new Hls(hlsConfig);\n\n logStatus('Loading manifest and attaching video element...');\n\n addChartEventListeners(hls);\n\n hls.loadSource(url);\n hls.autoLevelCapping = levelCapping;\n hls.attachMedia(video);\n\n hls.on(Hls.Events.MEDIA_ATTACHED, function () {\n logStatus('Media element attached');\n bufferingIdx = -1;\n events.video.push({\n time: self.performance.now() - events.t0,\n type: 'Media attached',\n });\n trimEventHistory();\n });\n\n hls.on(Hls.Events.MEDIA_DETACHED, function () {\n logStatus('Media element detached');\n clearInterval(hls.bufferTimer);\n bufferingIdx = -1;\n tracks = [];\n events.video.push({\n time: self.performance.now() - events.t0,\n type: 'Media detached',\n });\n trimEventHistory();\n });\n\n hls.on(Hls.Events.DESTROYING, function () {\n clearInterval(hls.bufferTimer);\n });\n hls.on(Hls.Events.BUFFER_RESET, function () {\n clearInterval(hls.bufferTimer);\n });\n\n hls.on(Hls.Events.FRAG_PARSING_INIT_SEGMENT, function (eventName, data) {\n showCanvas();\n events.video.push({\n time: self.performance.now() - events.t0,\n type: data.id + ' init segment',\n });\n trimEventHistory();\n });\n\n hls.on(Hls.Events.FRAG_PARSING_METADATA, function (eventName, data) {\n // console.log(\"Id3 samples \", data.samples);\n });\n\n hls.on(Hls.Events.LEVEL_SWITCHING, function (eventName, data) {\n events.level.push({\n time: self.performance.now() - events.t0,\n id: data.level,\n bitrate: Math.round(hls.levels[data.level].bitrate / 1000),\n });\n trimEventHistory();\n updateLevelInfo();\n });\n\n hls.on(Hls.Events.MANIFEST_PARSED, function (eventName, data) {\n events.load.push({\n type: 'manifest',\n name: '',\n start: 0,\n end: data.levels.length,\n time: data.stats.loading.start - events.t0,\n latency: data.stats.loading.first - data.stats.loading.start,\n load: data.stats.loading.end - data.stats.loading.first,\n duration: data.stats.loading.end - data.stats.loading.first,\n });\n trimEventHistory();\n self.refreshCanvas();\n });\n\n hls.on(Hls.Events.MANIFEST_PARSED, function (eventName, data) {\n logStatus(`${hls.levels.length} quality levels found`);\n logStatus('Manifest successfully loaded');\n stats = {\n levelNb: data.levels.length,\n levelParsed: 0,\n };\n trimEventHistory();\n updateLevelInfo();\n });\n\n hls.on(Hls.Events.AUDIO_TRACKS_UPDATED, function (eventName, data) {\n logStatus('No of audio tracks found: ' + data.audioTracks.length);\n updateAudioTrackInfo();\n });\n\n hls.on(Hls.Events.AUDIO_TRACK_SWITCHING, function (eventName, data) {\n logStatus('Audio track switching...');\n updateAudioTrackInfo();\n events.video.push({\n time: self.performance.now() - events.t0,\n type: 'audio switching',\n name: '@' + data.id,\n });\n trimEventHistory();\n lastAudioTrackSwitchingIdx = events.video.length - 1;\n });\n\n hls.on(Hls.Events.AUDIO_TRACK_SWITCHED, function (eventName, data) {\n logStatus('Audio track switched');\n updateAudioTrackInfo();\n const event = {\n time: self.performance.now() - events.t0,\n type: 'audio switched',\n name: '@' + data.id,\n };\n if (lastAudioTrackSwitchingIdx !== undefined) {\n events.video[lastAudioTrackSwitchingIdx].duration =\n event.time - events.video[lastAudioTrackSwitchingIdx].time;\n lastAudioTrackSwitchingIdx = undefined;\n }\n events.video.push(event);\n trimEventHistory();\n });\n\n hls.on(Hls.Events.LEVEL_LOADED, function (eventName, data) {\n events.isLive = data.details.live;\n const event = {\n type: 'level',\n id: data.level,\n start: data.details.startSN,\n end: data.details.endSN,\n time: data.stats.loading.start - events.t0,\n latency: data.stats.loading.first - data.stats.loading.start,\n load: data.stats.loading.end - data.stats.loading.first,\n parsing: data.stats.parsing.end - data.stats.loading.end,\n duration: data.stats.loading.end - data.stats.loading.first,\n };\n\n const parsingDuration = data.stats.parsing.end - data.stats.loading.end;\n if (stats.levelParsed) {\n this.sumLevelParsingMs += parsingDuration;\n } else {\n this.sumLevelParsingMs = parsingDuration;\n }\n\n stats.levelParsed++;\n stats.levelParsingUs = Math.round(\n (1000 * this.sumLevelParsingMs) / stats.levelParsed\n );\n\n // console.log('parsing level duration :' + stats.levelParsingUs + 'us,count:' + stats.levelParsed);\n\n events.load.push(event);\n trimEventHistory();\n self.refreshCanvas();\n });\n\n hls.on(Hls.Events.AUDIO_TRACK_LOADED, function (eventName, data) {\n events.isLive = data.details.live;\n const event = {\n type: 'audio track',\n id: data.id,\n start: data.details.startSN,\n end: data.details.endSN,\n time: data.stats.loading.start - events.t0,\n latency: data.stats.loading.first - data.stats.loading.start,\n load: data.stats.loading.end - data.stats.loading.first,\n parsing: data.stats.parsing.end - data.stats.loading.end,\n duration: data.stats.loading.end - data.stats.loading.first,\n };\n events.load.push(event);\n trimEventHistory();\n self.refreshCanvas();\n });\n\n hls.on(Hls.Events.FRAG_BUFFERED, function (eventName, data) {\n const stats =\n data.part && data.part.stats && data.part.stats.loaded\n ? data.part.stats\n : data.frag.stats;\n if (data.stats.aborted) {\n console.assert('Aborted request being buffered.', data);\n return;\n }\n\n const event = {\n type: data.frag.type + (data.part ? ' part' : ' fragment'),\n id: data.frag.level,\n id2: data.frag.sn,\n id3: data.part ? data.part.index : undefined,\n time: data.stats.loading.start - events.t0,\n latency: data.stats.loading.first - data.stats.loading.start,\n load: data.stats.loading.end - data.stats.loading.first,\n parsing: data.stats.parsing.end - data.stats.loading.end,\n buffer: data.stats.buffering.end - data.stats.parsing.end,\n duration: data.stats.buffering.end - data.stats.loading.first,\n bw: Math.round(\n (8 * data.stats.total) /\n (data.stats.buffering.end - data.stats.loading.start)\n ), // bandwidth of this fragment\n ewma: Math.round(hls.bandwidthEstimate / 1000), // estimated bandwidth\n size: data.stats.total,\n };\n events.load.push(event);\n events.bitrate.push({\n time: self.performance.now() - events.t0,\n bitrate: event.bw,\n ewma: event.ewma,\n duration: data.frag.duration,\n level: event.id,\n });\n if (events.buffer.length === 0) {\n events.buffer.push({\n time: 0,\n buffer: 0,\n pos: 0,\n });\n }\n clearInterval(hls.bufferTimer);\n hls.bufferTimer = self.setInterval(checkBuffer, 100);\n trimEventHistory();\n self.refreshCanvas();\n updateLevelInfo();\n\n const latency = data.stats.loading.first - data.stats.loading.start;\n const parsing = data.stats.parsing.end - data.stats.loading.end;\n const process = data.stats.buffering.end - data.stats.loading.start;\n const bitrate = Math.round(\n (8 * data.stats.total) /\n (data.stats.buffering.end - data.stats.loading.first)\n );\n\n if (stats.fragBuffered) {\n stats.fragMinLatency = Math.min(stats.fragMinLatency, latency);\n stats.fragMaxLatency = Math.max(stats.fragMaxLatency, latency);\n stats.fragMinProcess = Math.min(stats.fragMinProcess, process);\n stats.fragMaxProcess = Math.max(stats.fragMaxProcess, process);\n stats.fragMinKbps = Math.min(stats.fragMinKbps, bitrate);\n stats.fragMaxKbps = Math.max(stats.fragMaxKbps, bitrate);\n stats.autoLevelCappingMin = Math.min(\n stats.autoLevelCappingMin,\n hls.autoLevelCapping\n );\n stats.autoLevelCappingMax = Math.max(\n stats.autoLevelCappingMax,\n hls.autoLevelCapping\n );\n stats.fragBuffered++;\n } else {\n stats.fragMinLatency = stats.fragMaxLatency = latency;\n stats.fragMinProcess = stats.fragMaxProcess = process;\n stats.fragMinKbps = stats.fragMaxKbps = bitrate;\n stats.fragBuffered = 1;\n stats.fragBufferedBytes = 0;\n stats.autoLevelCappingMin = stats.autoLevelCappingMax =\n hls.autoLevelCapping;\n this.sumLatency = 0;\n this.sumKbps = 0;\n this.sumProcess = 0;\n this.sumParsing = 0;\n }\n stats.fraglastLatency = latency;\n this.sumLatency += latency;\n stats.fragAvgLatency = Math.round(this.sumLatency / stats.fragBuffered);\n stats.fragLastProcess = process;\n this.sumProcess += process;\n this.sumParsing += parsing;\n stats.fragAvgProcess = Math.round(this.sumProcess / stats.fragBuffered);\n stats.fragLastKbps = bitrate;\n this.sumKbps += bitrate;\n stats.fragAvgKbps = Math.round(this.sumKbps / stats.fragBuffered);\n stats.fragBufferedBytes += data.stats.total;\n stats.fragparsingKbps = Math.round(\n (8 * stats.fragBufferedBytes) / this.sumParsing\n );\n stats.fragparsingMs = Math.round(this.sumParsing);\n stats.autoLevelCappingLast = hls.autoLevelCapping;\n });\n\n hls.on(Hls.Events.LEVEL_SWITCHED, function (eventName, data) {\n const event = {\n time: self.performance.now() - events.t0,\n type: 'level switched',\n name: data.level,\n };\n events.video.push(event);\n trimEventHistory();\n self.refreshCanvas();\n updateLevelInfo();\n });\n\n hls.on(Hls.Events.FRAG_CHANGED, function (eventName, data) {\n const event = {\n time: self.performance.now() - events.t0,\n type: 'frag changed',\n name: data.frag.sn + ' @ ' + data.frag.level,\n };\n events.video.push(event);\n trimEventHistory();\n self.refreshCanvas();\n updateLevelInfo();\n stats.tagList = data.frag.tagList;\n\n const level = data.frag.level;\n const autoLevel = hls.autoLevelEnabled;\n if (stats.levelStart === undefined) {\n stats.levelStart = level;\n }\n\n stats.fragProgramDateTime = data.frag.programDateTime;\n stats.fragStart = data.frag.start;\n\n if (autoLevel) {\n if (stats.fragChangedAuto) {\n stats.autoLevelMin = Math.min(stats.autoLevelMin, level);\n stats.autoLevelMax = Math.max(stats.autoLevelMax, level);\n stats.fragChangedAuto++;\n if (this.levelLastAuto && level !== stats.autoLevelLast) {\n stats.autoLevelSwitch++;\n }\n } else {\n stats.autoLevelMin = stats.autoLevelMax = level;\n stats.autoLevelSwitch = 0;\n stats.fragChangedAuto = 1;\n this.sumAutoLevel = 0;\n }\n this.sumAutoLevel += level;\n stats.autoLevelAvg =\n Math.round((1000 * this.sumAutoLevel) / stats.fragChangedAuto) / 1000;\n stats.autoLevelLast = level;\n } else {\n if (stats.fragChangedManual) {\n stats.manualLevelMin = Math.min(stats.manualLevelMin, level);\n stats.manualLevelMax = Math.max(stats.manualLevelMax, level);\n stats.fragChangedManual++;\n if (!this.levelLastAuto && level !== stats.manualLevelLast) {\n stats.manualLevelSwitch++;\n }\n } else {\n stats.manualLevelMin = stats.manualLevelMax = level;\n stats.manualLevelSwitch = 0;\n stats.fragChangedManual = 1;\n }\n stats.manualLevelLast = level;\n }\n this.levelLastAuto = autoLevel;\n });\n\n hls.on(Hls.Events.ALGO_DATA_LOADED, function (eventName, data) {\n const chunk = data.chunk;\n if (!chunk || !Array.isArray(chunk.frames)) {\n return;\n }\n const chunkKey = `${chunk.fragSn}:${chunk.chunkIndex}:${chunk.startFrameIndex}`;\n if (algoChunkKeys.has(chunkKey)) {\n return;\n }\n algoChunkKeys.add(chunkKey);\n\n const lines = chunk.frames.map((frame) => {\n const camera = frame.autoCameras || {};\n const x = Number.isFinite(camera.x) ? Math.round(camera.x) : 0;\n const y = Number.isFinite(camera.y) ? Math.round(camera.y) : 0;\n const focus = Number.isFinite(camera.focus)\n ? Math.round(camera.focus)\n : 0;\n return `${frame.frameIdx},${x},${y},${focus}`;\n });\n appendAlgoDataLines(lines);\n });\n\n hls.on(Hls.Events.ALGO_DATA_LOADING, function (_eventName, data) {\n const algoUrl = data && data.url;\n if (!algoUrl) return;\n fetch(algoUrl)\n .then((res) => {\n const contentType = res.headers.get('content-type');\n return res.arrayBuffer().then((buf) => ({\n buf,\n status: res.status,\n ok: res.ok,\n contentType,\n }));\n })\n .then(({ buf, status, ok, contentType }) => {\n const bytes = new Uint8Array(buf);\n const head = Array.from(bytes.slice(0, 16))\n .map((b) => b.toString(16).padStart(2, '0'))\n .join(' ');\n const looksLikeTs = bytes.length > 0 && bytes[0] === 0x47;\n\n console.log('[AlgoData][raw fetch]', {\n url: algoUrl,\n ok,\n status,\n contentType,\n byteLength: buf.byteLength,\n headHex: head,\n looksLikeMpegTs: looksLikeTs,\n });\n\n try {\n const items = Array.from(decodeMulti(bytes));\n console.log('[AlgoData][raw msgpack decoded]', {\n url: algoUrl,\n items: summarizeAlgoMsgpack(items),\n });\n\n const root = extractAlgoRoot(items);\n if (!root) {\n console.warn('[AlgoData][raw root extract failed]', {\n url: algoUrl,\n items: summarizeAlgoMsgpack(items),\n });\n return;\n }\n console.log('[AlgoData][raw root]', {\n url: algoUrl,\n version: root.version,\n chunkIndex: root.chunkIndex,\n frameSize: root.frameSize,\n framesType:\n root.frames instanceof Uint8Array\n ? 'Uint8Array'\n : Array.isArray(root.frames)\n ? 'Array'\n : typeof root.frames,\n framesSummary: summarizeAlgoMsgpack(root.frames),\n });\n\n // Print only one frame in its raw format\n let firstFrameRaw = null;\n if (Array.isArray(root.frames)) {\n firstFrameRaw = root.frames[0] ?? null;\n } else if (root.frames instanceof Uint8Array) {\n const frameItems = Array.from(decodeMulti(root.frames));\n firstFrameRaw = frameItems[0] ?? null;\n }\n if (firstFrameRaw != null) {\n console.log('[AlgoData][raw first frame]', {\n url: algoUrl,\n frame: summarizeAlgoMsgpack(firstFrameRaw),\n });\n } else {\n console.warn('[AlgoData][raw first frame missing]', {\n url: algoUrl,\n framesType:\n root.frames instanceof Uint8Array\n ? 'Uint8Array'\n : Array.isArray(root.frames)\n ? 'Array'\n : typeof root.frames,\n });\n }\n } catch (err) {\n console.warn('[AlgoData][raw msgpack decode failed]', algoUrl, err);\n }\n })\n .catch((err) => {\n console.warn('[AlgoData][raw fetch failed]', algoUrl, err);\n });\n });\n\n hls.on(Hls.Events.ALGO_DATA_ERROR, function (_eventName, data) {\n console.warn('[AlgoData][error]', {\n url: data && data.url,\n reason: data && data.reason,\n error: data && data.error,\n frag: data && data.frag,\n });\n });\n\n hls.on(Hls.Events.FRAG_LOAD_EMERGENCY_ABORTED, function (eventName, data) {\n if (stats) {\n if (stats.fragLoadEmergencyAborted === undefined) {\n stats.fragLoadEmergencyAborted = 1;\n } else {\n stats.fragLoadEmergencyAborted++;\n }\n }\n });\n\n hls.on(Hls.Events.FRAG_DECRYPTED, function (eventName, data) {\n if (!stats.fragDecrypted) {\n stats.fragDecrypted = 0;\n this.totalDecryptTime = 0;\n stats.fragAvgDecryptTime = 0;\n }\n stats.fragDecrypted++;\n this.totalDecryptTime += data.stats.tdecrypt - data.stats.tstart;\n stats.fragAvgDecryptTime = this.totalDecryptTime / stats.fragDecrypted;\n });\n\n hls.on(Hls.Events.ERROR, function (eventName, data) {\n console.warn('Error event:', data);\n switch (data.details) {\n case Hls.ErrorDetails.MANIFEST_LOAD_ERROR:\n try {\n $('#errorOut').html(\n 'Cannot load <a href=\"' +\n data.context.url +\n '\">' +\n url +\n '</a><br>HTTP response code:' +\n data.response.code +\n ' <br>' +\n data.response.text\n );\n if (data.response.code === 0) {\n $('#errorOut').append(\n 'This might be a CORS issue, consider installing <a href=\"https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi\">Allow-Control-Allow-Origin</a> Chrome Extension'\n );\n }\n } catch (err) {\n $('#errorOut').html(\n 'Cannot load <a href=\"' +\n data.context.url +\n '\">' +\n url +\n '</a><br>Response body: ' +\n data.response.text\n );\n }\n break;\n case Hls.ErrorDetails.MANIFEST_LOAD_TIMEOUT:\n logError('Timeout while loading manifest');\n break;\n case Hls.ErrorDetails.MANIFEST_PARSING_ERROR:\n logError('Error while parsing manifest:' + data.reason);\n break;\n case Hls.ErrorDetails.LEVEL_EMPTY_ERROR:\n logError(\n 'Loaded level contains no fragments ' + data.level + ' ' + data.url\n );\n // handleLevelError demonstrates how to remove a level that errors followed by a downswitch\n // handleLevelError(data);\n break;\n case Hls.ErrorDetails.LEVEL_LOAD_ERROR:\n logError(\n 'Error while loading level playlist ' +\n data.context.level +\n ' ' +\n data.url\n );\n // handleLevelError demonstrates how to remove a level that errors followed by a downswitch\n // handleLevelError(data);\n break;\n case Hls.ErrorDetails.LEVEL_LOAD_TIMEOUT:\n logError(\n 'Timeout while loading level playlist ' +\n data.context.level +\n ' ' +\n data.url\n );\n // handleLevelError demonstrates how to remove a level that errors followed by a downswitch\n // handleLevelError(data);\n break;\n case Hls.ErrorDetails.LEVEL_SWITCH_ERROR:\n logError('Error while trying to switch to level ' + data.level);\n break;\n case Hls.ErrorDetails.FRAG_LOAD_ERROR:\n logError('Error while loading fragment ' + data.frag.url);\n break;\n case Hls.ErrorDetails.FRAG_LOAD_TIMEOUT:\n logError('Timeout while loading fragment ' + data.frag.url);\n break;\n case Hls.ErrorDetails.FRAG_LOOP_LOADING_ERROR:\n logError('Fragment-loop loading error');\n break;\n case Hls.ErrorDetails.FRAG_DECRYPT_ERROR:\n logError('Decrypting error:' + data.reason);\n break;\n case Hls.ErrorDetails.FRAG_PARSING_ERROR:\n logError('Parsing error:' + data.reason);\n break;\n case Hls.ErrorDetails.KEY_LOAD_ERROR:\n logError('Error while loading key ' + data.frag.decryptdata.uri);\n break;\n case Hls.ErrorDetails.KEY_LOAD_TIMEOUT:\n logError('Timeout while loading key ' + data.frag.decryptdata.uri);\n break;\n case Hls.ErrorDetails.BUFFER_APPEND_ERROR:\n logError('Buffer append error');\n break;\n case Hls.ErrorDetails.BUFFER_ADD_CODEC_ERROR:\n logError(\n 'Buffer add codec error for ' +\n data.mimeType +\n ':' +\n data.error.message\n );\n break;\n case Hls.ErrorDetails.BUFFER_APPENDING_ERROR:\n logError('Buffer appending error');\n break;\n case Hls.ErrorDetails.BUFFER_STALLED_ERROR:\n logError('Buffer stalled error');\n if (stopOnStall) {\n hls.stopLoad();\n video.pause();\n }\n break;\n default:\n break;\n }\n\n if (data.fatal) {\n console.error(`Fatal error : ${data.details}`);\n switch (data.type) {\n case Hls.ErrorTypes.MEDIA_ERROR:\n logError(`A media error occurred: ${data.details}`);\n handleMediaError();\n break;\n case Hls.ErrorTypes.NETWORK_ERROR:\n logError(`A network error occurred: ${data.details}`);\n break;\n default:\n logError(`An unrecoverable error occurred: ${data.details}`);\n hls.destroy();\n break;\n }\n }\n if (!stats) {\n stats = {};\n }\n\n // track all errors independently\n if (stats[data.details] === undefined) {\n stats[data.details] = 1;\n } else {\n stats[data.details] += 1;\n }\n\n // track fatal error\n if (data.fatal) {\n if (stats.fatalError === undefined) {\n stats.fatalError = 1;\n } else {\n stats.fatalError += 1;\n }\n }\n $('#statisticsOut').text(JSON.stringify(sortObject(stats), null, '\\t'));\n });\n\n hls.on(Hls.Events.BUFFER_CREATED, function (eventName, data) {\n tracks = data.tracks;\n });\n\n hls.on(Hls.Events.BUFFER_APPENDING, function (eventName, data) {\n if (dumpfMP4) {\n fmp4Data[data.type].push(data.data);\n }\n });\n\n hls.on(Hls.Events.FPS_DROP, function (eventName, data) {\n const event = {\n time: self.performance.now() - events.t0,\n type: 'frame drop',\n name: data.currentDropped + '/' + data.currentDecoded,\n };\n events.video.push(event);\n trimEventHistory();\n if (stats) {\n if (stats.fpsDropEvent === undefined) {\n stats.fpsDropEvent = 1;\n } else {\n stats.fpsDropEvent++;\n }\n\n stats.fpsTotalDroppedFrames = data.totalDroppedFrames;\n }\n });\n}\n\nfunction addVideoEventListeners(video) {\n video.removeEventListener('resize', handleVideoEvent);\n video.removeEventListener('seeking', handleVideoEvent);\n video.removeEventListener('seeked', handleVideoEvent);\n video.removeEventListener('pause', handleVideoEvent);\n video.removeEventListener('play', handleVideoEvent);\n video.removeEventListener('canplay', handleVideoEvent);\n video.removeEventListener('canplaythrough', handleVideoEvent);\n video.removeEventListener('ended', handleVideoEvent);\n video.removeEventListener('playing', handleVideoEvent);\n video.removeEventListener('error', handleVideoEvent);\n video.removeEventListener('loadedmetadata', handleVideoEvent);\n video.removeEventListener('loadeddata', handleVideoEvent);\n video.removeEventListener('durationchange', handleVideoEvent);\n video.removeEventListener('volumechange', handleVolumeEvent);\n video.addEventListener('resize', handleVideoEvent);\n video.addEventListener('seeking', handleVideoEvent);\n video.addEventListener('seeked', handleVideoEvent);\n video.addEventListener('pause', handleVideoEvent);\n video.addEventListener('play', handleVideoEvent);\n video.addEventListener('canplay', handleVideoEvent);\n video.addEventListener('canplaythrough', handleVideoEvent);\n video.addEventListener('ended', handleVideoEvent);\n video.addEventListener('playing', handleVideoEvent);\n video.addEventListener('error', handleVideoEvent);\n video.addEventListener('loadedmetadata', handleVideoEvent);\n video.addEventListener('loadeddata', handleVideoEvent);\n video.addEventListener('durationchange', handleVideoEvent);\n video.addEventListener('volumechange', handleVolumeEvent);\n}\n\nfunction handleUnsupported() {\n if (navigator.userAgent.toLowerCase().indexOf('firefox') !== -1) {\n logStatus(\n 'You are using Firefox, it looks like MediaSource is not enabled,<br>please ensure the following keys are set appropriately in <b>about:config</b><br>media.mediasource.enabled=true<br>media.mediasource.mp4.enabled=true<br><b>media.mediasource.whitelist=false</b>'\n );\n } else {\n logStatus(\n 'Your Browser does not support MediaSourceExtension / MP4 mediasource'\n );\n }\n}\n\nfunction handleVideoEvent(evt) {\n let data = '';\n switch (evt.type) {\n case 'durationchange':\n if (evt.target.duration - lastDuration <= 0.5) {\n // some browsers report several duration change events with almost the same value ... avoid spamming video events\n return;\n }\n lastDuration = evt.target.duration;\n data = Math.round(evt.target.duration * 1000);\n break;\n case 'resize':\n data = evt.target.videoWidth + '/' + evt.target.videoHeight;\n playerResize();\n break;\n case 'loadedmetadata':\n case 'loadeddata':\n case 'canplay':\n case 'canplaythrough':\n case 'ended':\n case 'seeking':\n case 'seeked':\n case 'play':\n case 'playing':\n lastStartPosition = evt.target.currentTime;\n case 'pause':\n case 'waiting':\n case 'stalled':\n case 'error':\n data = Math.round(evt.target.currentTime * 1000);\n if (evt.type === 'error') {\n let errorTxt;\n const mediaError = evt.currentTarget.error;\n switch (mediaError.code) {\n case mediaError.MEDIA_ERR_ABORTED:\n errorTxt = 'You aborted the video playback';\n break;\n case mediaError.MEDIA_ERR_DECODE:\n errorTxt =\n 'The video playback was aborted due to a corruption problem or because the video used features your browser did not support';\n handleMediaError();\n break;\n case mediaError.MEDIA_ERR_NETWORK:\n errorTxt =\n 'A network error caused the video download to fail part-way';\n break;\n case mediaError.MEDIA_ERR_SRC_NOT_SUPPORTED:\n errorTxt =\n 'The video could not be loaded, either because the server or network failed or because the format is not supported';\n break;\n }\n\n if (mediaError.message) {\n errorTxt += ' - ' + mediaError.message;\n }\n\n logStatus(errorTxt);\n console.error(errorTxt);\n }\n break;\n default:\n break;\n }\n\n const event = {\n time: self.performance.now() - events.t0,\n type: evt.type,\n name: data,\n };\n\n events.video.push(event);\n if (evt.type === 'seeking') {\n lastSeekingIdx = events.video.length - 1;\n }\n\n if (evt.type === 'seeked') {\n events.video[lastSeekingIdx].duration =\n event.time - events.video[lastSeekingIdx].time;\n }\n\n trimEventHistory();\n}\n\nfunction handleVolumeEvent() {\n localStorage.setItem(\n STORAGE_KEYS.volume,\n JSON.stringify({\n muted: video.muted,\n volume: video.volume,\n })\n );\n}\n\nfunction handleLevelError(data) {\n const levelObj = data.context || data;\n hls.removeLevel(levelObj.level, levelObj.urlId || 0);\n if (!hls.levels.length) {\n logError('All levels have been removed');\n hls.destroy();\n return;\n }\n // Trigger an immediate downswitch to the first level\n // This is to handle the case where we start at an empty level, where switching to auto causes hlsjs to stall\n hls.currentLevel = 0;\n // Set the quality back to auto so that we return to optimal quality\n hls.currentLevel = -1;\n}\n\nfunction handleMediaError() {\n if (autoRecoverError) {\n const now = self.performance.now();\n if (\n !self.recoverDecodingErrorDate ||\n now - self.recoverDecodingErrorDate > 3000\n ) {\n self.recoverDecodingErrorDate = self.performance.now();\n $('#statusOut').append(', trying to recover media error.');\n hls.recoverMediaError();\n } else {\n if (\n !self.recoverSwapAudioCodecDate ||\n now - self.recoverSwapAudioCodecDate > 3000\n ) {\n self.recoverSwapAudioCodecDate = self.performance.now();\n $('#statusOut').append(\n ', trying to swap audio codec and recover media error.'\n );\n hls.swapAudioCodec();\n hls.recoverMediaError();\n } else {\n $('#statusOut').append(\n ', cannot recover. Last media error recovery failed.'\n );\n }\n }\n }\n}\n\nfunction timeRangesToString(r) {\n let log = '';\n for (let i = 0; i < r.length; i++) {\n log += '[' + r.start(i) + ', ' + r.end(i) + ']';\n log += ' ';\n }\n return log;\n}\n\nfunction checkBuffer() {\n const canvas = document.querySelector('#bufferedCanvas');\n const ctx = canvas.getContext('2d');\n const r = video.buffered;\n const seekableEnd = getSeekableEnd();\n let bufferingDuration;\n if (r) {\n ctx.fillStyle = 'black';\n if (!canvas.width || canvas.width !== video.clientWidth) {\n canvas.width = video.clientWidth;\n }\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n const pos = video.currentTime;\n let bufferLen = 0;\n ctx.fillStyle = 'gray';\n for (let i = 0; i < r.length; i++) {\n const start = (r.start(i) / seekableEnd) * canvas.width;\n const end = (r.end(i) / seekableEnd) * canvas.width;\n ctx.fillRect(start, 2, Math.max(2, end - start), 11);\n if (pos >= r.start(i) && pos < r.end(i)) {\n // play position is inside this buffer TimeRange, retrieve end of buffer position and buffer length\n bufferLen = r.end(i) - pos;\n }\n }\n // check if we are in buffering / or playback ended state\n if (\n bufferLen <= 0.1 &&\n video.paused === false &&\n pos - lastStartPosition > 0.5\n ) {\n if (lastDuration - pos <= 0.5 && events.isLive === false) {\n // don't create buffering event if we are at the end of the playlist, don't report ended for live playlist\n } else {\n // we are not at the end of the playlist ... real buffering\n if (bufferingIdx !== -1) {\n bufferingDuration =\n self.performance.now() -\n events.t0 -\n events.video[bufferingIdx].time;\n events.video[bufferingIdx].duration = bufferingDuration;\n events.video[bufferingIdx].name = bufferingDuration;\n } else {\n events.video.push({\n type: 'buffering',\n time: self.performance.now() - events.t0,\n });\n trimEventHistory();\n // we are in buffering state\n bufferingIdx = events.video.length - 1;\n }\n }\n }\n\n if (bufferLen > 0.1 && bufferingIdx !== -1) {\n bufferingDuration =\n self.performance.now() - events.t0 - events.video[bufferingIdx].time;\n events.video[bufferingIdx].duration = bufferingDuration;\n events.video[bufferingIdx].name = bufferingDuration;\n // we are out of buffering state\n bufferingIdx = -1;\n }\n\n // update buffer/position for current Time\n const event = {\n time: self.performance.now() - events.t0,\n buffer: Math.round(bufferLen * 1000),\n pos: Math.round(pos * 1000),\n };\n const bufEvents = events.buffer;\n const bufEventLen = bufEvents.length;\n if (bufEventLen > 1) {\n const event0 = bufEvents[bufEventLen - 2];\n const event1 = bufEvents[bufEventLen - 1];\n const slopeBuf0 =\n (event0.buffer - event1.buffer) / (event0.time - event1.time);\n const slopeBuf1 =\n (event1.buffer - event.buffer) / (event1.time - event.time);\n\n const slopePos0 = (event0.pos - event1.pos) / (event0.time - event1.time);\n const slopePos1 = (event1.pos - event.pos) / (event1.time - event.time);\n // compute slopes. if less than 30% difference, remove event1\n if (\n (slopeBuf0 === slopeBuf1 ||\n Math.abs(slopeBuf0 / slopeBuf1 - 1) <= 0.3) &&\n (slopePos0 === slopePos1 || Math.abs(slopePos0 / slopePos1 - 1) <= 0.3)\n ) {\n bufEvents.pop();\n }\n }\n events.buffer.push(event);\n trimEventHistory();\n self.refreshCanvas();\n\n if ($('#statsDisplayTab').is(':visible')) {\n let log = `Duration: ${video.duration}\\nBuffered: ${timeRangesToString(\n video.buffered\n )}\\nSeekable: ${timeRangesToString(\n video.seekable\n )}\\nPlayed: ${timeRangesToString(video.played)}\\n`;\n if (hls.media) {\n for (const type in tracks) {\n log += `Buffer for ${type} contains:${timeRangesToString(\n tracks[type].buffer.buffered\n )}\\n`;\n }\n const videoPlaybackQuality = video.getVideoPlaybackQuality;\n if (\n videoPlaybackQuality &&\n typeof videoPlaybackQuality === typeof Function\n ) {\n log += `Dropped frames: ${\n video.getVideoPlaybackQuality().droppedVideoFrames\n }\\n`;\n log += `Corrupted frames: ${\n video.getVideoPlaybackQuality().corruptedVideoFrames\n }\\n`;\n } else if (video.webkitDroppedFrameCount) {\n log += `Dropped frames: ${video.webkitDroppedFrameCount}\\n`;\n }\n }\n log += `TTFB Estimate: ${hls.ttfbEstimate.toFixed(3)}\\n`;\n log += `Bandwidth Estimate: ${hls.bandwidthEstimate.toFixed(3)}\\n`;\n if (events.isLive) {\n log +=\n 'Live Stats:\\n' +\n ` Max Latency: ${hls.maxLatency}\\n` +\n ` Target Latency: ${hls.targetLatency.toFixed(3)}\\n` +\n ` Latency: ${hls.latency.toFixed(3)}\\n` +\n ` Drift: ${hls.drift.toFixed(3)} (edge advance rate)\\n` +\n ` Edge Stall: ${hls.latencyController.edgeStalled.toFixed(\n 3\n )} (playlist refresh over target duration/part)\\n` +\n ` Playback rate: ${video.playbackRate.toFixed(2)}\\n`;\n if (stats.fragProgramDateTime) {\n const currentPDT =\n stats.fragProgramDateTime +\n (video.currentTime - stats.fragStart) * 1000;\n log += ` Program Date Time: ${new Date(currentPDT).toISOString()}`;\n const pdtLatency = (Date.now() - currentPDT) / 1000;\n if (pdtLatency > 0) {\n log += ` (${pdtLatency.toFixed(3)} seconds ago)`;\n }\n }\n }\n\n $('#bufferedOut').text(log);\n $('#statisticsOut').text(JSON.stringify(sortObject(stats), null, '\\t'));\n }\n\n ctx.fillStyle = 'blue';\n const x = (video.currentTime / seekableEnd) * canvas.width;\n ctx.fillRect(x, 0, 2, 15);\n } else if (ctx.fillStyle !== 'black') {\n ctx.fillStyle = 'black';\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n }\n}\n\nfunction showCanvas() {\n self.showMetrics();\n $('#bufferedOut').show();\n $('#bufferedCanvas').show();\n}\n\nfunction hideCanvas() {\n self.hideMetrics();\n $('#bufferedOut').hide();\n $('#bufferedCanvas').hide();\n}\n\nfunction getMetrics() {\n const json = JSON.stringify(events);\n const jsonpacked = pack(json);\n // console.log('packing JSON from ' + json.length + ' to ' + jsonpacked.length + ' bytes');\n return btoa(jsonpacked);\n}\n\nself.copyMetricsToClipBoard = function () {\n copyTextToClipboard(getMetrics());\n};\n\nself.goToMetrics = function () {\n let url = document.URL;\n url = url.slice(0, url.lastIndexOf('/') + 1) + 'metrics.html';\n self.open(url, '_blank');\n};\n\nfunction goToMetricsPermaLink() {\n let url = document.URL;\n const b64 = getMetrics();\n url = url.slice(0, url.lastIndexOf('/') + 1) + 'metrics.html#data=' + b64;\n self.open(url, '_blank');\n}\n\nfunction onClickBufferedRange(event) {\n const canvas = document.querySelector('#bufferedCanvas');\n const target =\n ((event.clientX - canvas.offsetLeft) / canvas.width) * getSeekableEnd();\n video.currentTime = target;\n}\n\nfunction getSeekableEnd() {\n if (isFinite(video.duration)) {\n return video.duration;\n }\n if (video.seekable.length) {\n return video.seekable.end(video.seekable.length - 1);\n }\n return 0;\n}\n\nfunction getLevelButtonHtml(key, levels, onclickReplace, autoEnabled) {\n const onclickAuto = `${key}=-1`.replace(/^(\\w+)=([^=]+)$/, onclickReplace);\n const codecs = levels.reduce((uniqueCodecs, level) => {\n const levelCodecs = codecs2label(level.attrs.CODECS);\n if (levelCodecs && uniqueCodecs.indexOf(levelCodecs) === -1) {\n uniqueCodecs.push(levelCodecs);\n }\n return uniqueCodecs;\n }, []);\n return (\n `<button type=\"button\" class=\"btn btn-sm ${\n autoEnabled ? 'btn-primary' : 'btn-success'\n }\" onclick=\"${onclickAuto}\">auto</button>` +\n levels\n .map((level, i) => {\n const enabled = hls[key] === i;\n const onclick = `${key}=${i}`.replace(/^(\\w+)=(\\w+)$/, onclickReplace);\n const label = level2label(levels[i], i, codecs);\n return `<button type=\"button\" class=\"btn btn-sm ${\n enabled ? 'btn-primary' : 'btn-success'\n }\" onclick=\"${onclick}\">${label}</button>`;\n })\n .join('')\n );\n}\n\nfunction updateLevelInfo() {\n const levels = hls.levels;\n if (!levels) {\n return;\n }\n\n const htmlCurrentLevel = getLevelButtonHtml(\n 'currentLevel',\n levels,\n 'hls.$1=$2',\n hls.autoLevelEnabled\n );\n const htmlNextLevel = getLevelButtonHtml(\n 'nextLevel',\n levels,\n 'hls.$1=$2',\n hls.autoLevelEnabled\n );\n const htmlLoadLevel = getLevelButtonHtml(\n 'loadLevel',\n levels,\n 'hls.$1=$2',\n hls.autoLevelEnabled\n );\n const htmlCapLevel = getLevelButtonHtml(\n 'autoLevelCapping',\n levels,\n 'levelCapping=hls.$1=$2;updateLevelInfo();onDemoConfigChanged();',\n hls.autoLevelCapping === -1\n );\n\n if ($('#currentLevelControl').html() !== htmlCurrentLevel) {\n $('#currentLevelControl').html(htmlCurrentLevel);\n }\n\n if ($('#nextLevelControl').html() !== htmlNextLevel) {\n $('#nextLevelControl').html(htmlNextLevel);\n }\n\n if ($('#loadLevelControl').html() !== htmlLoadLevel) {\n $('#loadLevelControl').html(htmlLoadLevel);\n }\n\n if ($('#levelCappingControl').html() !== htmlCapLevel) {\n $('#levelCappingControl').html(htmlCapLevel);\n }\n}\n\nfunction updateAudioTrackInfo() {\n const buttonTemplate = '<button type=\"button\" class=\"btn btn-sm ';\n const buttonEnabled = 'btn-primary\" ';\n const buttonDisabled = 'btn-success\" ';\n let html1 = '';\n let html2 = '';\n const audioTrackId = hls.audioTrack;\n const nextAudioTrackId = hls.nextAudioTrack;\n const len = hls.audioTracks.length;\n const track = hls.audioTracks[audioTrackId];\n const nextTrack = hls.audioTracks[nextAudioTrackId];\n\n for (let i = 0; i < len; i++) {\n html1 += buttonTemplate;\n if (audioTrackId === i) {\n html1 += buttonEnabled;\n } else {\n html1 += buttonDisabled;\n }\n\n html1 +=\n 'onclick=\"hls.audioTrack=' +\n i +\n '\">' +\n hls.audioTracks[i].name +\n '</button>';\n }\n\n for (let i = 0; i < len; i++) {\n html2 += buttonTemplate;\n if (nextAudioTrackId === i) {\n html2 += buttonEnabled;\n } else {\n html2 += buttonDisabled;\n }\n\n html2 +=\n 'onclick=\"hls.nextAudioTrack=' +\n i +\n '\">' +\n hls.audioTracks[i].name +\n '</button>';\n }\n\n $('#audioTrackLabel').text(\n track ? track.lang || track.name : 'None selected'\n );\n $('#audioTrackControl').html(html1);\n $('#audioTrackLabel').text(\n nextTrack ? nextTrack.lang || nextTrack.name : 'None selected'\n );\n $('#nextAudioTrackControl').html(html2);\n}\n\nfunction codecs2label(levelCodecs) {\n if (levelCodecs) {\n return levelCodecs\n .replace(/([ah]vc.)[^,;]+/, '$1')\n .replace('mp4a.40.2', 'mp4a');\n }\n return '';\n}\n\nfunction level2label(level, i, manifestCodecs) {\n const levelCodecs = codecs2label(level.attrs.CODECS);\n const levelNameInfo = level.name ? `\"${level.name}\": ` : '';\n const codecInfo =\n levelCodecs && manifestCodecs.length > 1 ? ` / ${levelCodecs}` : '';\n if (level.height) {\n return `${i} (${levelNameInfo}${level.height}p / ${Math.round(\n level.bitrate / 1024\n )}kb${codecInfo})`;\n }\n if (level.bitrate) {\n return `${i} (${levelNameInfo}${Math.round(\n level.bitrate / 1024\n )}kb${codecInfo})`;\n }\n if (codecInfo) {\n return `${i} (${levelNameInfo}${levelCodecs})`;\n }\n if (level.name) {\n return `${i} (${level.name})`;\n }\n return `${i}`;\n}\n\nfunction getDemoConfigPropOrDefault(propName, defaultVal) {\n return typeof demoConfig[propName] !== 'undefined'\n ? demoConfig[propName]\n : defaultVal;\n}\n\nfunction getURLParam(sParam, defaultValue) {\n const sPageURL = self.location.search.substring(1);\n const sURLVariables = sPageURL.split('&');\n for (let i = 0; i < sURLVariables.length; i++) {\n const sParameterName = sURLVariables[i].split('=');\n if (sParameterName[0] === sParam) {\n return sParameterName[1] === 'undefined'\n ? undefined\n : sParameterName[1] === 'false'\n ? false\n : sParameterName[1];\n }\n }\n return defaultValue;\n}\n\nfunction onDemoConfigChanged(firstLoad) {\n demoConfig = {\n enableStreaming,\n autoRecoverError,\n stopOnStall,\n dumpfMP4,\n levelCapping,\n limitMetrics,\n };\n\n if (configPersistenceEnabled) {\n persistEditorValue();\n }\n\n updatePermalink(firstLoad);\n}\n\nfunction updatePermalink(firstLoad) {\n const serializedDemoConfig = btoa(JSON.stringify(demoConfig));\n const serializedHlsjsConfig = btoa(JSON.stringify(hlsjsConfig));\n const baseURL = document.URL.split('?')[0];\n const streamURL = $('#streamURL').val();\n const permalinkURL = `${baseURL}?src=${encodeURIComponent(\n streamURL\n )}&demoConfig=${serializedDemoConfig}&hlsjsConfig=${serializedHlsjsConfig}`;\n\n $('#StreamPermalink').html(`<a href=\"${permalinkURL}\">${permalinkURL}</a>`);\n if (!firstLoad && self.location.href !== permalinkURL) {\n self.history.pushState(null, null, permalinkURL);\n }\n}\n\nfunction onConfigPersistenceChanged(event) {\n configPersistenceEnabled = event.target.checked;\n localStorage.setItem(\n STORAGE_KEYS.Editor_Persistence,\n JSON.stringify(configPersistenceEnabled)\n );\n\n if (configPersistenceEnabled) {\n persistEditorValue();\n } else {\n localStorage.removeItem(STORAGE_KEYS.Hls_Config);\n }\n}\n\nfunction getEditorValue(options) {\n options = $.extend({ parse: false }, options || {});\n let value = configEditor.session.getValue();\n\n if (options.parse) {\n try {\n value = JSON.parse(value);\n } catch (e) {\n console.warn('[getEditorValue] could not parse editor value', e);\n value = {};\n }\n }\n\n return value;\n}\n\nfunction getPersistedHlsConfig() {\n let value = localStorage.getItem(STORAGE_KEYS.Hls_Config);\n if (value === null) {\n return value;\n }\n\n try {\n value = JSON.parse(value);\n } catch (e) {\n console.warn('[getPersistedHlsConfig] could not hls config json', e);\n value = {};\n }\n\n return value;\n}\n\nfunction persistEditorValue() {\n localStorage.setItem(STORAGE_KEYS.Hls_Config, getEditorValue());\n}\n\nfunction setupConfigEditor() {\n configEditor = self.ace.edit('config-editor');\n configEditor.setTheme('ace/theme/github');\n configEditor.session.setMode('ace/mode/json');\n\n const contents = hlsjsConfig;\n const shouldRestorePersisted =\n !hlsjsConfigLoadedFromUrl &&\n JSON.parse(localStorage.getItem(STORAGE_KEYS.Editor_Persistence)) === true;\n\n if (shouldRestorePersisted) {\n $.extend(contents, getPersistedHlsConfig());\n }\n\n const elPersistence = document.querySelector('#config-persistence');\n elPersistence.addEventListener('change', onConfigPersistenceChanged);\n elPersistence.checked = shouldRestorePersisted;\n configPersistenceEnabled = shouldRestorePersisted;\n\n updateConfigEditorValue(contents);\n}\n\nfunction setupTimelineChart() {\n const canvas = document.querySelector('#timeline-chart');\n const chart = new TimelineChart(canvas, {\n responsive: false,\n });\n\n resizeHandlers.push(() => {\n chart.resize();\n });\n\n chart.resize();\n\n return chart;\n}\n\nfunction addChartEventListeners(hls) {\n const updateLevelOrTrack = (eventName, data) => {\n chart.updateLevelOrTrack(data.details);\n };\n const updateFragment = (eventName, data) => {\n if (data.stats) {\n // Convert 0.x stats to partial v1 stats\n const { retry, loaded, total, trequest, tfirst, tload } = data.stats;\n if (trequest && tload) {\n data.frag.stats = {\n loaded,\n retry,\n total,\n loading: {\n start: trequest,\n first: tfirst,\n end: tload,\n },\n };\n }\n }\n chart.updateFragment(data);\n };\n const updateChart = () => {\n chart.update();\n };\n hls.on(\n Hls.Events.MANIFEST_LOADING,\n () => {\n chart.reset();\n },\n chart\n );\n hls.on(\n Hls.Events.MANIFEST_PARSED,\n (eventName, data) => {\n const { levels } = data;\n chart.removeType('level');\n chart.removeType('audioTrack');\n chart.removeType('subtitleTrack');\n chart.updateLevels(levels);\n },\n chart\n );\n hls.on(\n Hls.Events.BUFFER_CREATED,\n (eventName, { tracks }) => {\n chart.updateSourceBuffers(tracks, hls.media);\n },\n chart\n );\n hls.on(\n Hls.Events.BUFFER_RESET,\n () => {\n chart.removeSourceBuffers();\n },\n chart\n );\n hls.on(Hls.Events.LEVELS_UPDATED, (eventName, { levels }) => {\n chart.removeType('level');\n chart.updateLevels(levels);\n });\n hls.on(\n Hls.Events.LEVEL_SWITCHED,\n (eventName, { level }) => {\n chart.removeType('level');\n chart.updateLevels(hls.levels, level);\n },\n chart\n );\n hls.on(\n Hls.Events.LEVEL_LOADING,\n () => {\n // TODO: mutate level datasets\n // Update loadLevel\n chart.removeType('level');\n chart.updateLevels(hls.levels);\n },\n chart\n );\n hls.on(\n Hls.Events.LEVEL_UPDATED,\n (eventName, { details }) => {\n chart.updateLevelOrTrack(details);\n },\n chart\n );\n\n hls.on(\n Hls.Events.AUDIO_TRACKS_UPDATED,\n (eventName, { audioTracks }) => {\n chart.removeType('audioTrack');\n chart.updateAudioTracks(audioTracks);\n },\n chart\n );\n hls.on(\n Hls.Events.SUBTITLE_TRACKS_UPDATED,\n (eventName, { subtitleTracks }) => {\n chart.removeType('subtitleTrack');\n chart.updateSubtitleTracks(subtitleTracks);\n },\n chart\n );\n\n hls.on(\n Hls.Events.AUDIO_TRACK_SWITCHED,\n (eventName) => {\n // TODO: mutate level datasets\n chart.removeType('audioTrack');\n chart.updateAudioTracks(hls.audioTracks);\n },\n chart\n );\n hls.on(\n Hls.Events.SUBTITLE_TRACK_SWITCH,\n (eventName) => {\n // TODO: mutate level datasets\n chart.removeType('subtitleTrack');\n chart.updateSubtitleTracks(hls.subtitleTracks);\n },\n chart\n );\n hls.on(Hls.Events.AUDIO_TRACK_LOADED, updateLevelOrTrack, chart);\n hls.on(Hls.Events.SUBTITLE_TRACK_LOADED, updateLevelOrTrack, chart);\n hls.on(Hls.Events.LEVEL_PTS_UPDATED, updateLevelOrTrack, chart);\n hls.on(Hls.Events.FRAG_LOADED, updateFragment, chart);\n hls.on(Hls.Events.FRAG_PARSED, updateFragment, chart);\n hls.on(Hls.Events.FRAG_CHANGED, updateFragment, chart);\n hls.on(Hls.Events.BUFFER_APPENDING, updateChart, chart);\n hls.on(Hls.Events.BUFFER_APPENDED, updateChart, chart);\n hls.on(Hls.Events.BUFFER_FLUSHED, updateChart, chart);\n}\n\nfunction updateConfigEditorValue(obj) {\n const json = JSON.stringify(obj, null, 2);\n configEditor.session.setValue(json);\n}\n\nfunction applyConfigEditorValue() {\n onDemoConfigChanged();\n hlsjsConfig = getEditorValue({ parse: true });\n updatePermalink(false);\n loadSelectedStream();\n}\n\nfunction createfMP4(type) {\n if (fmp4Data[type].length) {\n const blob = new Blob([arrayConcat(fmp4Data[type])], {\n type: 'application/octet-stream',\n });\n const filename = type + '-' + new Date().toISOString() + '.mp4';\n self.saveAs(blob, filename);\n // $('body').append('<a download=\"hlsjs-' + filename + '\" href=\"' + self.URL.createObjectURL(blob) + '\">Download ' + filename + ' track</a><br>');\n } else if (!dumpfMP4) {\n console.error(\n 'Check \"Dump transmuxed fMP4 data\" first to make appended media available for saving.'\n );\n }\n}\n\nfunction arrayConcat(inputArray) {\n const totalLength = inputArray.reduce(function (prev, cur) {\n return prev + cur.length;\n }, 0);\n const result = new Uint8Array(totalLength);\n let offset = 0;\n inputArray.forEach(function (element) {\n result.set(element, offset);\n offset += element.length;\n });\n return result;\n}\n\nfunction hideAllTabs() {\n $('.demo-tab-btn').css('background-color', '');\n $('.demo-tab').hide();\n}\n\nfunction toggleTabClick(btn) {\n toggleTab(btn);\n const tabIndexes = $('.demo-tab-btn')\n .toArray()\n .map((el, i) => ($('#' + $(el).data('tab')).is(':visible') ? i : null))\n .filter((i) => i !== null);\n localStorage.setItem(STORAGE_KEYS.demo_tabs, tabIndexes.join(','));\n}\n\nfunction toggleTab(btn, dontHideOpenTabs) {\n const tabElId = $(btn).data('tab');\n // eslint-disable-next-line no-restricted-globals\n const modifierPressed =\n dontHideOpenTabs ||\n (self.event && (self.event.metaKey || self.event.shiftKey));\n if (!modifierPressed) {\n hideAllTabs();\n }\n if (modifierPressed) {\n $(`#${tabElId}`).toggle();\n } else {\n $(`#${tabElId}`).show();\n }\n $(btn).css(\n 'background-color',\n $(`#${tabElId}`).is(':visible') ? 'orange' : ''\n );\n if (!$('#statsDisplayTab').is(':visible')) {\n self.hideMetrics();\n }\n if (hls) {\n if ($('#timelineTab').is(':visible')) {\n chart.show();\n chart.resize(chart.chart.data ? chart.chart.data.datasets : null);\n } else {\n chart.hide();\n }\n }\n}\n\nfunction appendLog(textElId, message) {\n const el = $('#' + textElId);\n let logText = el.text();\n if (logText.length) {\n logText += '\\n';\n }\n const timestamp = (Date.now() - startTime) / 1000;\n const newMessage = timestamp + ' | ' + message;\n logText += newMessage;\n // update\n el.text(logText);\n const element = el[0];\n element.scrollTop = element.scrollHeight - element.clientHeight;\n}\n\nfunction resetAlgoDataOutput() {\n algoChunkKeys.clear();\n $('#algoDataOut').text('');\n}\n\nfunction appendAlgoDataLines(lines) {\n if (!lines || !lines.length) {\n return;\n }\n const el = $('#algoDataOut');\n const current = el.text();\n const nextText = current\n ? `${current}\\n${lines.join('\\n')}`\n : lines.join('\\n');\n el.text(nextText);\n const element = el[0];\n element.scrollTop = element.scrollHeight - element.clientHeight;\n}\n\nfunction logStatus(message) {\n appendLog('statusOut', message);\n}\n\nfunction logError(message) {\n appendLog('errorOut', message);\n}\n"],"names":["isFiniteNumber","Number","isFinite","value","createTestStream","url","description","live","abr","skip_ua","createTestStreamWithConfig","target","config","Error","testStream","testStreams","bbb","fdr","bigBuckBunny480p","arte","deltatreDAI","issue666","closedCaptions","customIvBadDts","oceansAES","tracksWithAES","mp3Audio","mpegAudioOnly","fmp4","fmp4Bitmovin","fmp4BitmovinHevc","skipFunctionalTests","offset_pts","angelOneShakaWidevine","name","version","widevineLicenseUrl","emeEnabled","audioOnlyMultipleLevels","pdtDuplicate","pdtLargeGap","allowedBufferedRangesInSeekTest","avBufferOffset","pdtBadValues","pdtOneValue","noTrackIntersection","altAudioAndTracks","vendor","altAudioAudioOnly","altAudioMultiAudioOnly","muxedFmp4","altAudioWithPdtAndStartGap","startSeek","AppleAdvancedHevcAvcHls","MuxLowLatencyHls","groupIds","redundantLevelsWithTrackGroups","startDelimiterOverlappingBetweenPESPackets","aes256","mpegTsHevcHls","mpegTsBitmovinHevc","Promise","promiseFinally","this","sortObject","obj","temp","keys","key","push","sort","index","copyTextToClipboard","text","textArea","document","createElement","body","appendChild","select","successful","execCommand","msg","console","log","err","removeChild","require","require$$0","Chart","controllers","horizontalBar","prototype","calculateBarValuePixels","datasetIndex","options","chart","scale","_getValueScale","datasets","data","_parseValue","scaleParseValue","start","undefined","max","min","length","end","base","getPixelForValue","head","size","center","calculateBarIndexPixels","ruler","rowHeight","barThickness","categoryPercentage","draw","rects","getMeta","len","dataset","getDataset","ctx","chartArea","helpers","canvas","clipArea","lineHeight","Math","ceil","measureText","actualBoundingBoxAscent","range","i","rect","view","_view","intersects","x","left","right","val","isNaN","dataType","stats","isPart","isFragmentHint","isFragment","isCue","y","height","bounds","boundingRects","drawText","w","borderWidth","borderSkipped","getValueForPixel","backgroundColor","fillStyle","fillRect","h","aborted","loaded","total","active","snBounds","_extends","cc","ccLabel","ccWidth","width","fillText","snLabel","sn","textWidth","strLength","content","slice","float","fixedDigits","floor","startString","hhmmss","unclipArea","applyChartInstanceOverrides","Object","scales","forEach","axis","warn","Array","isArray","getRightValue","duration","x1","x2","x3","x4","vm","half","top","bottom","m","s","pad","toFixed","replace","str","X_AXIS_SECONDS","TimelineChart","chartJsOptions","_this","rafDebounceRequestId","imageDataBuffer","media","tracksChangeHandler","cuesChangeHandler","hidden","zoom100","getContext","self","type","labels","getChartOptions","plugins","afterRender","drawCurrentTime","ondblclick","event","element","getElementAtEvent","pos","getRelativePosition","chartScales","amount","getModifierState","zoom","ticks","update","onwheel","deltaMode","deltaY","direction","abs","normal","ease","deltaX","pan","preventDefault","moved","gestureScale","onpointerdown","downEvent","isPrimary","startX","clientX","xToVal","setPointerCapture","pointerId","onpointermove","moveEvent","movedX","movedValue","onpointerup","onpointercancel","upEvent","releasePointerCapture","click","ongesturestart","ongestureend","ongesturechange","_proto","_self$hls","_datasetIndex","_index","hls","currentTime","updateOnRepaint","diff","minPercent","maxPercent","minDelta","maxDelta","reset","_this$chart$data","resize","_this$chart$ctx","cancelAnimationFrame","lazy","_this2","requestAnimationFrame","_this3","_this$chart$canvas","reduce","container","parentElement","style","show","hide","updateLevels","levels","levelSwitched","_this4","_this$chart$data2","_self$hls2","loadLevel","nextLoadLevel","nextAutoLevel","currentLevel","level","id","getLevelName","borderColor","datasetWithDefaults","urlId","trackType","details","updateLevelOrTrack","updateAudioTracks","audioTracks","_this5","_this$chart$data3","audioTrack","track","getAudioTrackName","updateSubtitleTracks","subtitles","_this6","_this$chart$data4","subtitleTrack","getSubtitlesName","removeType","_this$chart$data5","splice","targetduration","totalduration","levelDataSet","arrayFind","stripDeliveryDirectives","_details$fragments$","fragments","fragment","chartFragment","loader","partList","part","chartPart","fragOffset","fragmentHint","getPlaylistStart","maxZoom","updateFragment","frag","baseurl","fragData","relurl","updateSourceBuffers","tracks","_this7","_this$chart$data6","trackTypes","mediaBufferData","removeSourceBuffers","sourceBuffer","buffer","video","audio","audiovideo","unshift","addEventListener","replaceTimeRangeTuples","buffered","error","onprogress","ontimeupdate","textTracks","e","setTextTracks","currentTarget","removeEventListener","_this$chart$data7","toString","indexOf","_this8","_this$chart$data8","call","textTrack","label","kind","mode","updateTextTrackCues","_data","activeCues","cues","activeLength","activeMin","Infinity","activeMax","cue","item","startTime","endTime","_loop","getCueLabel","some","activeCue","cuesMatch","_self$hls3","restore","save","drawLineX","getCurrentTimeColor","readyState","ended","seeking","paused","devicePixelRatio","getImageData","putImageData","lineWidth","strokeStyle","beginPath","moveTo","lineTo","stroke","_createClass","get","set","currentZoom","newZoom","webUrl","URL","searchParams","delete","href","xAxisID","_details$fragments","_level$attrs","attrs","BANDWIDTH","getMainLevelAttribute","RESOLUTION","CODECS","AUDIO","lang","groupId","timeRanges","cue1","cue2","JSON","stringify","result","parseDataCue","info","collection","animation","elements","rectangle","events","hover","animationDuration","legend","display","maintainAspectRatio","responsiveAnimationDuration","xAxes","beginAtZero","sampleSize","maxRotation","callback","tickValue","yAxes","gridLines","tooltips","enabled","array","predicate","TypeError","thisArg","arguments","k","kValue","STORAGE_KEYS","Editor_Persistence","Hls_Config","volume","demo_tabs","defaultTestStreamUrl","sourceURL","decodeURIComponent","getURLParam","demoConfig","demoConfigParam","parse","atob","hlsjsDefaults","debug","enableWorker","lowLatencyMode","backBufferLength","algoDataEnabled","algoSegmentPattern","algoPreloadCount","algoCacheSize","hlsjsConfigParam","hlsjsConfig","hlsjsConfigLoadedFromUrl","enableStreaming","getDemoConfigPropOrDefault","autoRecoverError","levelCapping","limitMetrics","dumpfMP4","stopOnStall","bufferingIdx","selectedTestStream","querySelector","Date","now","lastSeekingIdx","lastStartPosition","lastDuration","lastAudioTrackSwitchingIdx","fmp4Data","configPersistenceEnabled","configEditor","resizeAsyncCallbackId","algoChunkKeys","Set","setTimeout","clearTimeout","resizeHandlers","handler","summarizeAlgoMsgpack","depth","Uint8Array","__type","map","v","String","extractAlgoRoot","items","root","chunkIndex","frameSize","frames","onresize","screen","orientation","onchange","playerResize","getBoundingClientRect","$","html","round","videoWidth","videoHeight","ready","setupConfigEditor","setupTimelineChart","stream","option","Option","append","selectedIndex","each","change","streamUrl","loadSelectedStream","checkBuffer","checked","onDemoConfigChanged","toggle","prop","getVersionLink","noneStable","includes","encodeURIComponent","Hls","$a","attr","volumeSettings","localStorage","getItem","muted","windowSliding","addVideoEventListeners","tabIndexesCSV","split","indexString","toggleTab","parseInt","on","location","reload","setupGlobals","t0","performance","load","bitrate","recoverDecodingErrorDate","recoverSwapAudioCodecDate","onClickBufferedRange","updateLevelInfo","createfMP4","goToMetricsPermaLink","toggleTabClick","applyConfigEditorValue","trimArray","limit","shift","trimEventHistory","empty","resetAlgoDataOutput","isSupported","handleUnsupported","alert","hideCanvas","destroy","clearInterval","bufferTimer","logStatus","hlsConfig","extend","getEditorValue","updateConfigEditorValue","addChartEventListeners","loadSource","autoLevelCapping","attachMedia","Events","MEDIA_ATTACHED","time","MEDIA_DETACHED","DESTROYING","BUFFER_RESET","FRAG_PARSING_INIT_SEGMENT","eventName","showCanvas","FRAG_PARSING_METADATA","LEVEL_SWITCHING","MANIFEST_PARSED","loading","latency","first","refreshCanvas","levelNb","levelParsed","AUDIO_TRACKS_UPDATED","updateAudioTrackInfo","AUDIO_TRACK_SWITCHING","AUDIO_TRACK_SWITCHED","LEVEL_LOADED","isLive","startSN","endSN","parsing","parsingDuration","sumLevelParsingMs","levelParsingUs","AUDIO_TRACK_LOADED","FRAG_BUFFERED","assert","id2","id3","buffering","bw","ewma","bandwidthEstimate","setInterval","process","fragBuffered","fragMinLatency","fragMaxLatency","fragMinProcess","fragMaxProcess","fragMinKbps","fragMaxKbps","autoLevelCappingMin","autoLevelCappingMax","fragBufferedBytes","sumLatency","sumKbps","sumProcess","sumParsing","fraglastLatency","fragAvgLatency","fragLastProcess","fragAvgProcess","fragLastKbps","fragAvgKbps","fragparsingKbps","fragparsingMs","autoLevelCappingLast","LEVEL_SWITCHED","FRAG_CHANGED","tagList","autoLevel","autoLevelEnabled","levelStart","fragProgramDateTime","programDateTime","fragStart","fragChangedAuto","autoLevelMin","autoLevelMax","levelLastAuto","autoLevelLast","autoLevelSwitch","sumAutoLevel","autoLevelAvg","fragChangedManual","manualLevelMin","manualLevelMax","manualLevelLast","manualLevelSwitch","ALGO_DATA_LOADED","chunk","chunkKey","fragSn","startFrameIndex","has","add","lines","frame","camera","autoCameras","_isFiniteNumber","_isFiniteNumber2","focus","_isFiniteNumber3","frameIdx","appendAlgoDataLines","ALGO_DATA_LOADING","_eventName","algoUrl","fetch","then","res","contentType","headers","arrayBuffer","buf","status","ok","_ref","bytes","from","b","padStart","join","looksLikeTs","byteLength","headHex","looksLikeMpegTs","decodeMulti","framesType","framesSummary","firstFrameRaw","_root$frames$","_frameItems$","frameItems","catch","ALGO_DATA_ERROR","reason","FRAG_LOAD_EMERGENCY_ABORTED","fragLoadEmergencyAborted","FRAG_DECRYPTED","fragDecrypted","totalDecryptTime","fragAvgDecryptTime","tdecrypt","tstart","ERROR","ErrorDetails","MANIFEST_LOAD_ERROR","context","response","code","MANIFEST_LOAD_TIMEOUT","logError","MANIFEST_PARSING_ERROR","LEVEL_EMPTY_ERROR","LEVEL_LOAD_ERROR","LEVEL_LOAD_TIMEOUT","LEVEL_SWITCH_ERROR","FRAG_LOAD_ERROR","FRAG_LOAD_TIMEOUT","FRAG_LOOP_LOADING_ERROR","FRAG_DECRYPT_ERROR","FRAG_PARSING_ERROR","KEY_LOAD_ERROR","decryptdata","uri","KEY_LOAD_TIMEOUT","BUFFER_APPEND_ERROR","BUFFER_ADD_CODEC_ERROR","mimeType","message","BUFFER_APPENDING_ERROR","BUFFER_STALLED_ERROR","stopLoad","pause","fatal","ErrorTypes","MEDIA_ERROR","handleMediaError","NETWORK_ERROR","fatalError","BUFFER_CREATED","BUFFER_APPENDING","FPS_DROP","currentDropped","currentDecoded","fpsDropEvent","fpsTotalDroppedFrames","totalDroppedFrames","handleVideoEvent","handleVolumeEvent","navigator","userAgent","toLowerCase","evt","errorTxt","mediaError","MEDIA_ERR_ABORTED","MEDIA_ERR_DECODE","MEDIA_ERR_NETWORK","MEDIA_ERR_SRC_NOT_SUPPORTED","setItem","recoverMediaError","swapAudioCodec","timeRangesToString","r","seekableEnd","getSeekableEnd","bufferingDuration","clientWidth","bufferLen","bufEvents","bufEventLen","event0","event1","slopeBuf0","slopeBuf1","slopePos0","slopePos1","pop","is","seekable","played","videoPlaybackQuality","getVideoPlaybackQuality","Function","droppedVideoFrames","corruptedVideoFrames","webkitDroppedFrameCount","ttfbEstimate","maxLatency","targetLatency","drift","latencyController","edgeStalled","playbackRate","currentPDT","toISOString","pdtLatency","showMetrics","hideMetrics","getMetrics","json","jsonpacked","pack","btoa","copyMetricsToClipBoard","goToMetrics","lastIndexOf","open","b64","offsetLeft","getLevelButtonHtml","onclickReplace","autoEnabled","onclickAuto","codecs","uniqueCodecs","levelCodecs","codecs2label","onclick","level2label","htmlCurrentLevel","htmlNextLevel","htmlLoadLevel","htmlCapLevel","buttonTemplate","buttonEnabled","buttonDisabled","html1","html2","audioTrackId","nextAudioTrackId","nextAudioTrack","nextTrack","manifestCodecs","levelNameInfo","codecInfo","propName","defaultVal","sParam","defaultValue","sPageURL","search","substring","sURLVariables","sParameterName","firstLoad","persistEditorValue","updatePermalink","serializedDemoConfig","serializedHlsjsConfig","baseURL","streamURL","permalinkURL","history","pushState","onConfigPersistenceChanged","removeItem","session","getValue","getPersistedHlsConfig","ace","edit","setTheme","setMode","contents","shouldRestorePersisted","elPersistence","responsive","_data$stats","retry","trequest","tfirst","tload","updateChart","MANIFEST_LOADING","_ref2","LEVELS_UPDATED","_ref3","_ref4","LEVEL_LOADING","LEVEL_UPDATED","_ref5","_ref6","SUBTITLE_TRACKS_UPDATED","_ref7","subtitleTracks","SUBTITLE_TRACK_SWITCH","SUBTITLE_TRACK_LOADED","LEVEL_PTS_UPDATED","FRAG_LOADED","FRAG_PARSED","BUFFER_APPENDED","BUFFER_FLUSHED","setValue","blob","Blob","arrayConcat","filename","saveAs","inputArray","totalLength","prev","cur","offset","hideAllTabs","css","btn","tabIndexes","toArray","el","filter","dontHideOpenTabs","tabElId","modifierPressed","metaKey","shiftKey","appendLog","textElId","logText","timestamp","newMessage","scrollTop","scrollHeight","clientHeight","clear","current","nextText"],"mappings":"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","x_google_ignoreList":[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,21]}