diff --git a/.gitignore b/.gitignore index 5cbbca274f5b..7d9ac415d93c 100644 --- a/.gitignore +++ b/.gitignore @@ -7,5 +7,6 @@ _site .ruby-version .tweet-cache Gemfile.lock +assets/libs/ node_modules/ vendor \ No newline at end of file diff --git a/.prettierignore b/.prettierignore index f917ab0212d1..805707935438 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,6 +1,8 @@ +**/*.map **/*.min.css **/*.min.js assets/css/main.scss +assets/js/distillpub/template.v2.js assets/plotly/demo.html lighthouse_results/** _posts/2015-10-20-math.md diff --git a/Gemfile b/Gemfile index be5458541018..46ff643db862 100644 --- a/Gemfile +++ b/Gemfile @@ -21,6 +21,7 @@ group :jekyll_plugins do gem 'webrick' end group :other_plugins do + gem 'css_parser' gem 'feedjira' gem 'httparty' end diff --git a/_config.yml b/_config.yml index 011a6751981d..cf8ea4d8d6a1 100644 --- a/_config.yml +++ b/_config.yml @@ -395,72 +395,164 @@ enable_progressbar: true # enables a horizontal progress bar linked to the verti # Library versions # ----------------------------------------------------------------------------- -bootstrap-table: - version: "1.22.1" -chartjs: - version: "4.4.1" -d3: - version: "7.8.5" - integrity: "sha256-1rA678n2xEx7x4cTZ5x4wpUCj6kUMZEZ5cxLSVSFWxw=" -diff2html: - version: "3.4.47" - integrity: - css: "sha256-IMBK4VNZp0ivwefSn51bswdsrhk0HoMTLc2GqFHFBXg=" - js: "sha256-eU2TVHX633T1o/bTQp6iIJByYJEtZThhF9bKz/DcbbY=" -echarts: - version: "5.4.3" - integrity: - library: "sha256-EVZCmhajjLhgTcxlGMGUBtQiYULZCPjt0uNTFEPFTRk=" - dark_theme: "sha256-UmFIP/4VvOqBDIl2QWl1HBuAJ1XWs/iFZxT5yJRZOKo=" -highlightjs: - version: "11.9.0" - integrity: - css: - light: "sha256-Oppd74ucMR5a5Dq96FxjEzGF7tTw2fZ/6ksAqDCM8GY=" - dark: "sha256-nyCNAiECsdDHrr/s2OQsp5l9XeY2ZJ0rMepjCT2AkBk=" -imagesloaded: - version: "5.0.0" - integrity: "sha256-htrLFfZJ6v5udOG+3kNLINIKh2gvoKqwEhHYfTTMICc=" -img-comparison-slider: - version: "8.0.6" -jquery: - version: "3.6.0" - integrity: "sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" -leaflet: - version: "1.9.4" - integrity: - css: "sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=" - js: "sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo=" -mathjax: - version: "3.2.0" -masonry: - version: "4.2.2" - integrity: "sha256-Nn1q/fx0H7SNLZMQ5Hw5JLaTRZp0yILA/FRexe19VdI=" -mdb: - version: "4.20.0" - integrity: - css: "sha256-jpjYvU3G3N6nrrBwXJoVEYI/0zw8htfFnhT9ljN3JJw=" - js: "sha256-NdbiivsvWt7VYCt6hYNT3h/th9vSTL4EDWeGs5SN3DA=" -medium_zoom: - version: "1.1.0" - integrity: "sha256-ZgMyDAIYDYGxbcpJcfUnYwNevG/xi9OHKaR/8GK+jWc=" -mermaid: - version: "10.7.0" - integrity: "sha256-TtLOdUA8mstPoO6sGvHIGx2ceXrrX4KgIItO06XOn8A=" -swiper: - version: "11.0.5" - integrity: - css: "sha256-yUoNxsvX+Vo8Trj3lZ/Y5ZBf8HlBFsB6Xwm7rH75/9E=" - js: "sha256-BPrwikijIybg9OQC5SYFFqhBjERYOn97tCureFgYH1E=" -vega: - version: "5.27.0" - integrity: "sha256-Yot/cfgMMMpFwkp/5azR20Tfkt24PFqQ6IQS+80HIZs=" -vega-embed: - version: "6.24.0" - integrity: "sha256-FPCJ9JYCC9AZSpvC/t/wHBX7ybueZhIqOMjpWqfl3DU=" -vega-lite: - version: "5.16.3" - integrity: "sha256-TvBvIS5jUN4BSy009usRjNzjI1qRrHPYv7xVLJyjUyw=" +# Add the url, version and integrity hash of the libraries you use in your site. +third_party_libraries: + download: false # if true, download the versions of the libraries specified below and use the downloaded files + bootstrap-table: + integrity: + css: "sha256-uRX+PiRTR4ysKFRCykT8HLuRCub26LgXJZym3Yeom1c=" + js: "sha256-4rppopQE9POKfukn2kEvhJ9Um25Cf6+IDVkARD0xh78=" + url: + css: "https://cdn.jsdelivr.net/npm/bootstrap-table@{{version}}/dist/bootstrap-table.min.css" + js: "https://cdn.jsdelivr.net/npm/bootstrap-table@{{version}}/dist/bootstrap-table.min.js" + version: "1.22.4" + chartjs: + url: + js: "https://cdn.jsdelivr.net/npm/chart.js@{{version}}/dist/chart.umd.min.js" + version: "4.4.1" + d3: + integrity: + js: "sha256-1rA678n2xEx7x4cTZ5x4wpUCj6kUMZEZ5cxLSVSFWxw=" + url: + js: "https://cdn.jsdelivr.net/npm/d3@{{version}}/dist/d3.min.js" + version: "7.8.5" + diff2html: + integrity: + css: "sha256-IMBK4VNZp0ivwefSn51bswdsrhk0HoMTLc2GqFHFBXg=" + js: "sha256-eU2TVHX633T1o/bTQp6iIJByYJEtZThhF9bKz/DcbbY=" + url: + css: "https://cdn.jsdelivr.net/npm/diff2html@{{version}}/bundles/css/diff2html.min.css" + js: "https://cdn.jsdelivr.net/npm/diff2html@{{version}}/bundles/js/diff2html-ui.min.js" + version: "3.4.47" + echarts: + integrity: + js: + library: "sha256-QvgynZibb2U53SsVu98NggJXYqwRL7tg3FeyfXvPOUY=" + dark_theme: "sha256-sm6Ui9w41++ZCWmIWDLC18a6ki72FQpWDiYTDxEPXwU=" + url: + js: + library: "https://cdn.jsdelivr.net/npm/echarts@{{version}}/dist/echarts.min.js" + dark_theme: "https://cdn.jsdelivr.net/npm/echarts@{{version}}/theme/dark-fresh-cut.js" + version: "5.5.0" + google_fonts: + url: + fonts: "https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Roboto+Slab:100,300,400,500,700|Material+Icons&display=swap" + highlightjs: + integrity: + css: + light: "sha256-Oppd74ucMR5a5Dq96FxjEzGF7tTw2fZ/6ksAqDCM8GY=" + dark: "sha256-nyCNAiECsdDHrr/s2OQsp5l9XeY2ZJ0rMepjCT2AkBk=" + url: + css: + light: "https://cdn.jsdelivr.net/npm/highlight.js@{{version}}/styles/github.min.css" + dark: "https://cdn.jsdelivr.net/npm/highlight.js@{{version}}/styles/github-dark.min.css" + version: "11.9.0" + imagesloaded: + integrity: + js: "sha256-htrLFfZJ6v5udOG+3kNLINIKh2gvoKqwEhHYfTTMICc=" + url: + js: https://cdn.jsdelivr.net/npm/imagesloaded@{{version}}/imagesloaded.pkgd.min.js + version: "5.0.0" + img-comparison-slider: + url: + css: "https://cdn.jsdelivr.net/npm/img-comparison-slider@{{version}}/dist/styles.min.css" + js: "https://cdn.jsdelivr.net/npm/img-comparison-slider@{{version}}/dist/index.min.js" + version: "8.0.6" + jquery: + integrity: + js: "sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" + url: + js: "https://cdn.jsdelivr.net/npm/jquery@{{version}}/dist/jquery.min.js" + version: "3.6.0" + leaflet: + integrity: + css: "sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=" + js: "sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo=" + js_map: "sha256-YAoQ3FzREN4GmVENMir8vgHHypC0xfSK3CAxTHCqx1M=" + url: + css: "https://cdn.jsdelivr.net/npm/leaflet@{{version}}/dist/leaflet.css" + js: "https://cdn.jsdelivr.net/npm/leaflet@{{version}}/dist/leaflet.js" + js_map: "https://cdn.jsdelivr.net/npm/leaflet@{{version}}/dist/leaflet.js.map" + version: "1.9.4" + mathjax: + local: + fonts: "output/chtml/fonts/woff-v2/" + url: + fonts: "https://cdn.jsdelivr.net/npm/mathjax@{{version}}/es5/output/chtml/fonts/woff-v2/" + js: "https://cdn.jsdelivr.net/npm/mathjax@{{version}}/es5/tex-mml-chtml.js" + version: "3.2.0" + masonry: + integrity: + js: "sha256-Nn1q/fx0H7SNLZMQ5Hw5JLaTRZp0yILA/FRexe19VdI=" + url: + js: "https://cdn.jsdelivr.net/npm/masonry-layout@{{version}}/dist/masonry.pkgd.min.js" + version: "4.2.2" + mdb: + integrity: + css: "sha256-jpjYvU3G3N6nrrBwXJoVEYI/0zw8htfFnhT9ljN3JJw=" + css_map: "sha256-iYYMNfsJdVZjvsebJulg09miBXM4/GMTJgv1u5EZFFM=" + js: "sha256-NdbiivsvWt7VYCt6hYNT3h/th9vSTL4EDWeGs5SN3DA=" + js_map: "sha256-UPgyn4YNsT0khkBK5553QwhnlbTlU0aa+igyc6qP1bE=" + url: + css: "https://cdn.jsdelivr.net/npm/mdbootstrap@{{version}}/css/mdb.min.css" + css_map: "https://cdn.jsdelivr.net/npm/mdbootstrap@{{version}}/css/mdb.min.css.map" + js: "https://cdn.jsdelivr.net/npm/mdbootstrap@{{version}}/js/mdb.min.js" + js_map: "https://cdn.jsdelivr.net/npm/mdbootstrap@{{version}}/js/mdb.min.js.map" + version: "4.20.0" + medium_zoom: + integrity: + js: "sha256-ZgMyDAIYDYGxbcpJcfUnYwNevG/xi9OHKaR/8GK+jWc=" + url: + js: "https://cdn.jsdelivr.net/npm/medium-zoom@{{version}}/dist/medium-zoom.min.js" + version: "1.1.0" + mermaid: + integrity: + js: "sha256-TtLOdUA8mstPoO6sGvHIGx2ceXrrX4KgIItO06XOn8A=" + url: + js: "https://cdn.jsdelivr.net/npm/mermaid@{{version}}/dist/mermaid.min.js" + version: "10.7.0" + polyfill: + url: + js: "https://cdnjs.cloudflare.com/polyfill/v{{version}}/polyfill.min.js?features=es6" + version: "3" + swiper: + integrity: + css: "sha256-yUoNxsvX+Vo8Trj3lZ/Y5ZBf8HlBFsB6Xwm7rH75/9E=" + js: "sha256-BPrwikijIybg9OQC5SYFFqhBjERYOn97tCureFgYH1E=" + url: + css: "https://cdn.jsdelivr.net/npm/swiper@{{version}}/swiper-bundle.min.css" + js: "https://cdn.jsdelivr.net/npm/swiper@{{version}}/swiper-element-bundle.min.js" + version: "11.0.5" + swiper-map: + integrity: + js: "sha256-hlZaH8ySXX97bZaetnrtYlKuhx3oEXFz/s2IXchu6vk=" + url: + js: "https://cdn.jsdelivr.net/npm/swiper@11.1.0/swiper-element-bundle.min.js.map" + version: "11.0.5" + vega: + integrity: + js: "sha256-Yot/cfgMMMpFwkp/5azR20Tfkt24PFqQ6IQS+80HIZs=" + js_map: "sha256-z0x9ICA65dPkZ0JVa9wTImfF6n7AJsKc6WlFE96/wNA=" + url: + js: "https://cdn.jsdelivr.net/npm/vega@{{version}}/build/vega.min.js" + js_map: "https://cdn.jsdelivr.net/npm/vega@{{version}}/build/vega.min.js.map" + version: "5.27.0" + vega-embed: + integrity: + js: "sha256-FPCJ9JYCC9AZSpvC/t/wHBX7ybueZhIqOMjpWqfl3DU=" + js_map: "sha256-VBbfSEFYSMdX/rTdGrONEHNP6BprCB7H/LpMMNt/cPA=" + url: + js: "https://cdn.jsdelivr.net/npm/vega-embed@{{version}}/build/vega-embed.min.js" + js_map: "https://cdn.jsdelivr.net/npm/vega-embed@{{version}}/build/vega-embed.min.js.map" + version: "6.24.0" + vega-lite: + integrity: + js: "sha256-TvBvIS5jUN4BSy009usRjNzjI1qRrHPYv7xVLJyjUyw=" + js_map: "sha256-l2I4D5JC23Ulsu6e3sKVe5AJ+r+DFkzkKnZS8nUGz28=" + url: + js: "https://cdn.jsdelivr.net/npm/vega-lite@{{version}}/build/vega-lite.min.js" + js_map: "https://cdn.jsdelivr.net/npm/vega-lite@{{version}}/build/vega-lite.min.js.map" + version: "5.16.3" # ----------------------------------------------------------------------------- # Get external JSON data diff --git a/_includes/head.liquid b/_includes/head.liquid index d64c37ab7816..da9e98ede746 100644 --- a/_includes/head.liquid +++ b/_includes/head.liquid @@ -3,17 +3,22 @@ - {% if page.pretty_table %} - + {% endif %} @@ -22,7 +27,7 @@ defer rel="stylesheet" type="text/css" - href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Roboto+Slab:100,300,400,500,700|Material+Icons&display=swap" + href="{{ site.third_party_libraries.google_fonts.url.fonts }}" > @@ -71,9 +76,9 @@ {% endif %} @@ -82,24 +87,24 @@ {% endif %} @@ -110,7 +115,7 @@ {% endif %} @@ -118,8 +123,8 @@ {% endif %} diff --git a/_includes/scripts/bootstrap.liquid b/_includes/scripts/bootstrap.liquid index 647aaf1a0d52..2573e77c5091 100644 --- a/_includes/scripts/bootstrap.liquid +++ b/_includes/scripts/bootstrap.liquid @@ -2,7 +2,7 @@ diff --git a/_includes/scripts/chartjs.liquid b/_includes/scripts/chartjs.liquid index 8574f749ec7f..c64bdd3dcf68 100644 --- a/_includes/scripts/chartjs.liquid +++ b/_includes/scripts/chartjs.liquid @@ -1,5 +1,5 @@ {% if page.chart and page.chart.chartjs %} - + {% if site.enable_darkmode %} {% endif %} diff --git a/_includes/scripts/imageLayouts.liquid b/_includes/scripts/imageLayouts.liquid index bb8c5a2c744b..27c4f21538d1 100644 --- a/_includes/scripts/imageLayouts.liquid +++ b/_includes/scripts/imageLayouts.liquid @@ -1,12 +1,12 @@ {% if page.images %} {% if page.images.compare %} - + {% endif %} {% if page.images.slider %} {% endif %} diff --git a/_includes/scripts/jquery.liquid b/_includes/scripts/jquery.liquid index 628f8730112e..66635305cdc5 100644 --- a/_includes/scripts/jquery.liquid +++ b/_includes/scripts/jquery.liquid @@ -1,6 +1,6 @@ diff --git a/_includes/scripts/leaflet.liquid b/_includes/scripts/leaflet.liquid index 13b2bda64b41..d27962c73ebb 100644 --- a/_includes/scripts/leaflet.liquid +++ b/_includes/scripts/leaflet.liquid @@ -1,8 +1,7 @@ {% if page.map %} diff --git a/_includes/scripts/mathjax.liquid b/_includes/scripts/mathjax.liquid index 7a454835721a..a2ad064914ba 100644 --- a/_includes/scripts/mathjax.liquid +++ b/_includes/scripts/mathjax.liquid @@ -11,7 +11,7 @@ defer type="text/javascript" id="MathJax-script" - src="https://cdn.jsdelivr.net/npm/mathjax@{{ site.mathjax.version }}/es5/tex-mml-chtml.js" + src="{{ site.third_party_libraries.mathjax.url.js }}" > - + {% endif %} diff --git a/_includes/scripts/mermaid.liquid b/_includes/scripts/mermaid.liquid index 2bfd3ed5c9b6..4a22fa589080 100644 --- a/_includes/scripts/mermaid.liquid +++ b/_includes/scripts/mermaid.liquid @@ -1,15 +1,15 @@ {% if page.mermaid and page.mermaid.enabled %} {% if page.mermaid.zoomable %} {% endif %} diff --git a/_includes/scripts/misc.liquid b/_includes/scripts/misc.liquid index 07b117e46990..56d68f52498b 100644 --- a/_includes/scripts/misc.liquid +++ b/_includes/scripts/misc.liquid @@ -10,8 +10,8 @@ @@ -24,7 +24,12 @@ {% if page.pretty_table %} - + {% endif %} @@ -34,3 +39,5 @@ + +{% assign site.test-library.url = site.test-library.url | append: 'teste' %} diff --git a/_includes/scripts/vega.liquid b/_includes/scripts/vega.liquid index 0e574f1ee97f..c3c13755224f 100644 --- a/_includes/scripts/vega.liquid +++ b/_includes/scripts/vega.liquid @@ -1,20 +1,20 @@ {% if page.chart and page.chart.vega_lite %} diff --git a/_layouts/distill.liquid b/_layouts/distill.liquid index 45eeccc121df..d2324005a3d3 100644 --- a/_layouts/distill.liquid +++ b/_layouts/distill.liquid @@ -6,8 +6,8 @@ diff --git a/_plugins/cache-bust.rb b/_plugins/cache-bust.rb index f7efb23ae8af..94d82d20b0a3 100644 --- a/_plugins/cache-bust.rb +++ b/_plugins/cache-bust.rb @@ -1,51 +1,51 @@ # based on https://distresssignal.org/busting-css-cache-with-jekyll-md5-hash # https://gist.github.com/BryanSchuetz/2ee8c115096d7dd98f294362f6a667db module Jekyll - module CacheBust - class CacheDigester - require 'digest/md5' - require 'pathname' - - attr_accessor :file_name, :directory - - def initialize(file_name:, directory: nil) - self.file_name = file_name - self.directory = directory - end - - def digest! - [file_name, '?', Digest::MD5.hexdigest(file_contents)].join - end - - private - - def directory_files_content - target_path = File.join(directory, '**', '*') - Dir[target_path].map{|f| File.read(f) unless File.directory?(f) }.join - end - - def file_content - local_file_name = file_name.slice((file_name.index('assets/')..-1)) - File.read(local_file_name) - end - - def file_contents - is_directory? ? file_content : directory_files_content - end - - def is_directory? - directory.nil? - end - end - - def bust_file_cache(file_name) - CacheDigester.new(file_name: file_name, directory: nil).digest! - end - - def bust_css_cache(file_name) - CacheDigester.new(file_name: file_name, directory: 'assets/_sass').digest! - end + module CacheBust + class CacheDigester + require 'digest/md5' + require 'pathname' + + attr_accessor :file_name, :directory + + def initialize(file_name:, directory: nil) + self.file_name = file_name + self.directory = directory + end + + def digest! + [file_name, '?', Digest::MD5.hexdigest(file_contents)].join + end + + private + + def directory_files_content + target_path = File.join(directory, '**', '*') + Dir[target_path].map{|f| File.read(f) unless File.directory?(f) }.join + end + + def file_content + local_file_name = file_name.slice((file_name.index('assets/')..-1)) + File.read(local_file_name) + end + + def file_contents + is_directory? ? file_content : directory_files_content + end + + def is_directory? + directory.nil? + end + end + + def bust_file_cache(file_name) + CacheDigester.new(file_name: file_name, directory: nil).digest! + end + + def bust_css_cache(file_name) + CacheDigester.new(file_name: file_name, directory: 'assets/_sass').digest! end + end end Liquid::Template.register_filter(Jekyll::CacheBust) \ No newline at end of file diff --git a/_plugins/details.rb b/_plugins/details.rb index fa12bf26d3c8..3b9055e4c941 100644 --- a/_plugins/details.rb +++ b/_plugins/details.rb @@ -1,24 +1,23 @@ # Code from http://movb.de/jekyll-details-support.html module Jekyll - module Tags - class DetailsTag < Liquid::Block - - def initialize(tag_name, markup, tokens) - super - @caption = markup - end - - def render(context) - site = context.registers[:site] - converter = site.find_converter_instance(::Jekyll::Converters::Markdown) - caption = converter.convert(@caption).gsub(/<\/?p[^>]*>/, '').chomp - body = converter.convert(super(context)) - "
#{caption}#{body}
" - end - + module Tags + class DetailsTag < Liquid::Block + def initialize(tag_name, markup, tokens) + super + @caption = markup end + + def render(context) + site = context.registers[:site] + converter = site.find_converter_instance(::Jekyll::Converters::Markdown) + caption = converter.convert(@caption).gsub(/<\/?p[^>]*>/, '').chomp + body = converter.convert(super(context)) + "
#{caption}#{body}
" + end + end end - - Liquid::Template.register_tag('details', Jekyll::Tags::DetailsTag) \ No newline at end of file +end + +Liquid::Template.register_tag('details', Jekyll::Tags::DetailsTag) \ No newline at end of file diff --git a/_plugins/download-3rd-party.rb b/_plugins/download-3rd-party.rb new file mode 100644 index 000000000000..a3abbd37ac68 --- /dev/null +++ b/_plugins/download-3rd-party.rb @@ -0,0 +1,199 @@ +Jekyll::Hooks.register :site, :after_init do |site| + require 'css_parser' + require 'digest' + require 'fileutils' + require 'nokogiri' + require 'open-uri' + require 'uri' + + def download_file(url, dest) + # create the directory if it doesn't exist + dir = File.dirname(dest) + unless File.directory?(dir) + FileUtils.mkdir_p(dir) + end + + # download the file if it doesn't exist + unless File.file?(dest) + puts "Downloading #{url} to #{dest}" + File.open(dest, "wb") do |saved_file| + URI.open(url, "rb") do |read_file| + saved_file.write(read_file.read) + end + end + + # check if the file was downloaded successfully + unless File.file?(dest) + raise "Failed to download #{url} to #{dest}" + end + end + end + + def download_fonts(url, dest) + # only download fonts if the directory doesn't exist or is empty + unless File.directory?(dest) && !Dir.empty?(dest) + puts "Downloading fonts from #{url} to #{dest}" + # get available fonts from the url + doc = Nokogiri::HTML(URI.open(url, "User-Agent" => "Ruby/#{RUBY_VERSION}")) + doc.css('a').each do |link| + # get the file name from the url + file_name = link['href'].split('/').last.split('?').first + + # verify if the file is a font file + if file_name.end_with?('.woff', '.woff2', '.ttf', '.otf') + # download the file and change the url to the local file + download_file(URI.join(url, link['href']).to_s, File.join(dest, file_name)) + end + end + end + end + + def download_fonts_from_css(config, url, dest) + # get the file name from the url + file_name = url.split('/').last.split('?').first + + if file_name == 'css' + file_name = 'google-fonts.css' + end + + # only download the css file if it doesn't exist + unless File.file?(File.join(dest, file_name)) + puts "Downloading fonts from #{url} to #{dest}" + # download the css file with a fake user agent to force downloading woff2 fonts instead of ttf + # user agent from https://www.whatismybrowser.com/guides/the-latest-user-agent/chrome + doc = Nokogiri::HTML(URI.open(url, "User-Agent" => "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36")) + css = CssParser::Parser.new + css.load_string! doc.document.text + + # get the font-face rules + css.each_rule_set do |rule_set| + # check if the rule set has a url + if rule_set['src'].include?('url(') + # get the font file url + font_url = rule_set['src'].split('url(').last.split(')').first + + # remove quotes from the url + if font_url.start_with?('"') || font_url.start_with?("'") + font_url = font_url[1..-2] + end + + font_file_name = font_url.split('/').last.split('?').first + + # verify if the file is a font file + if font_file_name.end_with?('.woff', '.woff2', '.ttf', '.otf') + # fix the font url if it is not an absolute url + unless font_url.start_with?('https://') + font_url = URI.join(url, font_url).to_s + end + + # download the file + download_file(font_url, File.join(dest, 'fonts', font_file_name)) + + # change the font url to the local file, considering baseurl + if config['baseurl'] + # add rest of the src attribute if it exists + if rule_set['src'].split(' ').length > 1 + rule_set['src'] = "url(#{File.join(config['baseurl'], 'assets', 'libs', 'fonts', font_file_name)}) #{rule_set['src'].split(' ').last}" + else + rule_set['src'] = "url(#{File.join(config['baseurl'], 'assets', 'libs', 'fonts', font_file_name)})" + end + else + # add rest of the src attribute if it exists + if rule_set['src'].split(' ').length > 1 + rule_set['src'] = "url(#{File.join('/assets', 'libs', 'fonts', font_file_name)}) #{rule_set['src'].split(' ').last}" + else + rule_set['src'] = "url(#{File.join('/assets', 'libs', 'fonts', font_file_name)})" + end + end + end + end + end + + # save the modified css file + File.write(File.join(dest, file_name), css.to_s) + end + + return file_name + end + + # replace {{version}} with the version number in all 3rd party libraries urls + site.config['third_party_libraries'].each do |key, value| + if key != 'download' + value['url'].each do |type, url| + # check if url is a dictionary + if url.is_a?(Hash) + url.each do |type2, url2| + # replace {{version}} with the version number if it exists + if url2.include?('{{version}}') + site.config['third_party_libraries'][key]['url'][type][type2] = url2.gsub('{{version}}', site.config['third_party_libraries'][key]['version']) + end + end + else + # replace {{version}} with the version number if it exists + if url.include?('{{version}}') + site.config['third_party_libraries'][key]['url'][type] = url.gsub('{{version}}', site.config['third_party_libraries'][key]['version']) + end + end + end + end + end + + # download 3rd party libraries if required + if site.config['third_party_libraries']['download'] + site.config['third_party_libraries'].each do |key, value| + if key != 'download' + value['url'].each do |type, url| + # check if url is a dictionary + if url.is_a?(Hash) + url.each do |type2, url2| + # get the file name from the url + file_name = url2.split('/').last.split('?').first + # download the file and change the url to the local file + dest = File.join(site.source, 'assets', 'libs', file_name) + download_file(url2, dest) + # change the url to the local file, considering baseurl + if site.config['baseurl'] + site.config['third_party_libraries'][key]['url'][type][type2] = File.join(site.config['baseurl'], 'assets', 'libs', file_name) + else + site.config['third_party_libraries'][key]['url'][type][type2] = File.join('/assets', 'libs', file_name) + end + end + + else + if type == 'fonts' + # get the file name from the url + file_name = url.split('/').last.split('?').first + + if file_name.end_with?('css') + # if the file is a css file, download the css file, the fonts from it, and change information on the css file + file_name = download_fonts_from_css(site.config, url, File.join(site.source, 'assets', 'libs')) + # change the url to the local file, considering baseurl + if site.config['baseurl'] + site.config['third_party_libraries'][key]['url'][type] = File.join(site.config['baseurl'], 'assets', 'libs', file_name) + else + site.config['third_party_libraries'][key]['url'][type] = File.join('/assets', 'libs', file_name) + end + else + # download the font files and change the url to the local file + download_fonts(url, File.join(site.source, 'assets', 'libs', site.config['third_party_libraries'][key]['local']['fonts'])) + end + + else + # get the file name from the url + file_name = url.split('/').last.split('?').first + # download the file and change the url to the local file + dest = File.join(site.source, 'assets', 'libs', file_name) + download_file(url, dest) + # change the url to the local file, considering baseurl + if site.config['baseurl'] + site.config['third_party_libraries'][key]['url'][type] = File.join(site.config['baseurl'], 'assets', 'libs', file_name) + else + site.config['third_party_libraries'][key]['url'][type] = File.join('/assets', 'libs', file_name) + end + end + end + end + end + end + end +end diff --git a/_plugins/external-posts.rb b/_plugins/external-posts.rb index e4fd5eb69517..76b6243ffce9 100644 --- a/_plugins/external-posts.rb +++ b/_plugins/external-posts.rb @@ -32,5 +32,4 @@ def generate(site) end end end - end diff --git a/_plugins/file-exists.rb b/_plugins/file-exists.rb index 30480caa4f2c..e0cf11c0f267 100644 --- a/_plugins/file-exists.rb +++ b/_plugins/file-exists.rb @@ -1,23 +1,22 @@ module Jekyll - class FileExistsTag < Liquid::Tag - - def initialize(tag_name, path, tokens) - super - @path = path - end + class FileExistsTag < Liquid::Tag + def initialize(tag_name, path, tokens) + super + @path = path + end - def render(context) - # Pipe parameter through Liquid to make additional replacements possible - url = Liquid::Template.parse(@path).render context + def render(context) + # Pipe parameter through Liquid to make additional replacements possible + url = Liquid::Template.parse(@path).render context - # Adds the site source, so that it also works with a custom one - site_source = context.registers[:site].config['source'] - file_path = site_source + '/' + url + # Adds the site source, so that it also works with a custom one + site_source = context.registers[:site].config['source'] + file_path = site_source + '/' + url - # Check if file exists (returns true or false) - "#{File.exist?(file_path.strip!)}" - end + # Check if file exists (returns true or false) + "#{File.exist?(file_path.strip!)}" end + end end Liquid::Template.register_tag('file_exists', Jekyll::FileExistsTag) \ No newline at end of file diff --git a/_plugins/google-scholar-citations.rb b/_plugins/google-scholar-citations.rb index b87e346c4f5b..12566318990a 100644 --- a/_plugins/google-scholar-citations.rb +++ b/_plugins/google-scholar-citations.rb @@ -3,76 +3,76 @@ require 'open-uri' module Helpers - extend ActiveSupport::NumberHelper + extend ActiveSupport::NumberHelper end module Jekyll - class GoogleScholarCitationsTag < Liquid::Tag - Citations = { } - - def initialize(tag_name, params, tokens) - super - splitted = params.split(" ").map(&:strip) - @scholar_id = splitted[0] - @article_id = splitted[1] - end + class GoogleScholarCitationsTag < Liquid::Tag + Citations = { } + + def initialize(tag_name, params, tokens) + super + splitted = params.split(" ").map(&:strip) + @scholar_id = splitted[0] + @article_id = splitted[1] + end - def render(context) - article_id = context[@article_id.strip] - scholar_id = context[@scholar_id.strip] - article_url = "https://scholar.google.com/citations?view_op=view_citation&hl=en&user=#{scholar_id}&citation_for_view=#{scholar_id}:#{article_id}" + def render(context) + article_id = context[@article_id.strip] + scholar_id = context[@scholar_id.strip] + article_url = "https://scholar.google.com/citations?view_op=view_citation&hl=en&user=#{scholar_id}&citation_for_view=#{scholar_id}:#{article_id}" - begin - # If the citation count has already been fetched, return it - if GoogleScholarCitationsTag::Citations[article_id] - return GoogleScholarCitationsTag::Citations[article_id] - end + begin + # If the citation count has already been fetched, return it + if GoogleScholarCitationsTag::Citations[article_id] + return GoogleScholarCitationsTag::Citations[article_id] + end - # Sleep for a random amount of time to avoid being blocked - sleep(rand(1.5..3.5)) + # Sleep for a random amount of time to avoid being blocked + sleep(rand(1.5..3.5)) - # Fetch the article page - doc = Nokogiri::HTML(URI.open(article_url, "User-Agent" => "Ruby/#{RUBY_VERSION}")) + # Fetch the article page + doc = Nokogiri::HTML(URI.open(article_url, "User-Agent" => "Ruby/#{RUBY_VERSION}")) - # Attempt to extract the "Cited by n" string from the meta tags - citation_count = 0 + # Attempt to extract the "Cited by n" string from the meta tags + citation_count = 0 - # Look for meta tags with "name" attribute set to "description" - description_meta = doc.css('meta[name="description"]') - og_description_meta = doc.css('meta[property="og:description"]') + # Look for meta tags with "name" attribute set to "description" + description_meta = doc.css('meta[name="description"]') + og_description_meta = doc.css('meta[property="og:description"]') - if !description_meta.empty? - cited_by_text = description_meta[0]['content'] - matches = cited_by_text.match(/Cited by (\d+[,\d]*)/) + if !description_meta.empty? + cited_by_text = description_meta[0]['content'] + matches = cited_by_text.match(/Cited by (\d+[,\d]*)/) - if matches - citation_count = matches[1].sub(",", "").to_i - end + if matches + citation_count = matches[1].sub(",", "").to_i + end - elsif !og_description_meta.empty? - cited_by_text = og_description_meta[0]['content'] - matches = cited_by_text.match(/Cited by (\d+[,\d]*)/) + elsif !og_description_meta.empty? + cited_by_text = og_description_meta[0]['content'] + matches = cited_by_text.match(/Cited by (\d+[,\d]*)/) - if matches - citation_count = matches[1].sub(",", "").to_i - end - end + if matches + citation_count = matches[1].sub(",", "").to_i + end + end - citation_count = Helpers.number_to_human(citation_count, :format => '%n%u', :precision => 2, :units => { :thousand => 'K', :million => 'M', :billion => 'B' }) + citation_count = Helpers.number_to_human(citation_count, :format => '%n%u', :precision => 2, :units => { :thousand => 'K', :million => 'M', :billion => 'B' }) - rescue Exception => e - # Handle any errors that may occur during fetching - citation_count = "N/A" + rescue Exception => e + # Handle any errors that may occur during fetching + citation_count = "N/A" - # Print the error message including the exception class and message - puts "Error fetching citation count for #{article_id}: #{e.class} - #{e.message}" - end + # Print the error message including the exception class and message + puts "Error fetching citation count for #{article_id}: #{e.class} - #{e.message}" + end - GoogleScholarCitationsTag::Citations[article_id] = citation_count - return "#{citation_count}" - end + GoogleScholarCitationsTag::Citations[article_id] = citation_count + return "#{citation_count}" end + end end Liquid::Template.register_tag('google_scholar_citations', Jekyll::GoogleScholarCitationsTag) diff --git a/_plugins/hide-custom-bibtex.rb b/_plugins/hide-custom-bibtex.rb new file mode 100644 index 000000000000..6325b28882e1 --- /dev/null +++ b/_plugins/hide-custom-bibtex.rb @@ -0,0 +1,15 @@ +module Jekyll + module HideCustomBibtex + def hideCustomBibtex(input) + keywords = @context.registers[:site].config['filtered_bibtex_keywords'] + + keywords.each do |keyword| + input = input.gsub(/^.*\b#{keyword}\b *= *\{.*$\n/, '') + end + + return input + end + end +end + +Liquid::Template.register_filter(Jekyll::HideCustomBibtex) diff --git a/_plugins/hideCustomBibtex.rb b/_plugins/hideCustomBibtex.rb deleted file mode 100644 index ac12ab0f3c5c..000000000000 --- a/_plugins/hideCustomBibtex.rb +++ /dev/null @@ -1,15 +0,0 @@ - module Jekyll - module HideCustomBibtex - def hideCustomBibtex(input) - keywords = @context.registers[:site].config['filtered_bibtex_keywords'] - - keywords.each do |keyword| - input = input.gsub(/^.*\b#{keyword}\b *= *\{.*$\n/, '') - end - - return input - end - end -end - -Liquid::Template.register_filter(Jekyll::HideCustomBibtex) diff --git a/_plugins/remove-accents.rb b/_plugins/remove-accents.rb index 2dd40a4016ac..2c1a805a0752 100644 --- a/_plugins/remove-accents.rb +++ b/_plugins/remove-accents.rb @@ -1,32 +1,32 @@ # based on https://distresssignal.org/busting-css-cache-with-jekyll-md5-hash # https://gist.github.com/BryanSchuetz/2ee8c115096d7dd98f294362f6a667db module Jekyll - module CleanString - class RemoveAccents - require 'i18n' - I18n.config.available_locales = :en + module CleanString + class RemoveAccents + require 'i18n' + I18n.config.available_locales = :en - attr_accessor :string + attr_accessor :string - def initialize(string:) - self.string = string - end + def initialize(string:) + self.string = string + end - def digest! - remove_accents - end + def digest! + remove_accents + end - private + private - def remove_accents - I18n.transliterate(string) - end - end + def remove_accents + I18n.transliterate(string) + end + end - def remove_accents(string) - RemoveAccents.new(string: string).digest! - end + def remove_accents(string) + RemoveAccents.new(string: string).digest! end + end end Liquid::Template.register_filter(Jekyll::CleanString) \ No newline at end of file diff --git a/assets/js/mdb.min.js b/assets/js/mdb.min.js deleted file mode 100644 index 18f7dfb038ea..000000000000 --- a/assets/js/mdb.min.js +++ /dev/null @@ -1,20 +0,0 @@ -/*! - * MDB5 - * Version: FREE 6.4.0 - * - * - * Copyright: Material Design for Bootstrap - * https://mdbootstrap.com/ - * - * Read the license: https://mdbootstrap.com/general/license/ - * - * - * Documentation: https://mdbootstrap.com/docs/standard/ - * - * Support: https://mdbootstrap.com/support/ - * - * Contact: contact@mdbootstrap.com - * - */ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("mdb",[],e):"object"==typeof exports?exports.mdb=e():t.mdb=e()}(this,function(){return n=[function(t,e,n){"use strict";var i=n(16),o=n(68),r=n(44),s=n(25),a=n(11).f,c=n(110),l=n(113),u=n(24),n=n(8),h="Array Iterator",d=s.set,f=s.getterFor(h),s=(t.exports=c(Array,"Array",function(t,e){d(this,{type:h,target:i(t),index:0,kind:e})},function(){var t=f(this),e=t.target,n=t.kind,i=t.index++;return!e||i>=e.length?(t.target=void 0,l(void 0,!0)):l("keys"==n?i:"values"==n?e[i]:[i,e[i]],!1)},"values"),r.Arguments=r.Array);if(o("keys"),o("values"),o("entries"),!u&&n&&"values"!==s.name)try{a(s,"name",{value:"values"})}catch(t){}},function(t,e,n){function i(e,t){if(e){if(e[u]!==d)try{l(e,u,d)}catch(t){e[u]=d}if(e[h]||l(e,h,t),s[t])for(var n in c)if(e[n]!==c[n])try{l(e,n,c[n])}catch(t){e[n]=c[n]}}}var o,r=n(6),s=n(114),a=n(115),c=n(0),l=n(15),n=n(7),u=n("iterator"),h=n("toStringTag"),d=c.values;for(o in s)i(r[o]&&r[o].prototype,o);i(a,"DOMTokenList")},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){var n=n(47),i=n.all;t.exports=n.IS_HTMLDDA?function(t){return"function"==typeof t||t===i}:function(t){return"function"==typeof t}},function(t,e,n){var n=n(30),i=Function.prototype,o=i.call,i=n&&i.bind.bind(o,o);t.exports=n?i:function(t){return function(){return o.apply(t,arguments)}}},function(t,e,n){"use strict";var i=n(22),n=n(43);i({target:"RegExp",proto:!0,forced:/./.exec!==n},{exec:n})},function(n,t,e){!function(t){function e(t){return t&&t.Math==Math&&t}n.exports=e("object"==typeof globalThis&&globalThis)||e("object"==typeof window&&window)||e("object"==typeof self&&self)||e("object"==typeof t&&t)||function(){return this}()||this||Function("return this")()}.call(this,e(72))},function(t,e,n){var i=n(6),o=n(34),r=n(9),s=n(53),a=n(50),n=n(49),c=i.Symbol,l=o("wks"),u=n?c.for||c:c&&c.withoutSetter||s;t.exports=function(t){return r(l,t)||(l[t]=a&&r(c,t)?c[t]:u("Symbol."+t)),l[t]}},function(t,e,n){n=n(2);t.exports=!n(function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})},function(t,e,n){var i=n(4),o=n(37),r=i({}.hasOwnProperty);t.exports=Object.hasOwn||function(t,e){return r(o(t),e)}},function(t,e,n){"use strict";var i=n(22),o=n(59).includes,r=n(2),n=n(68);i({target:"Array",proto:!0,forced:r(function(){return!Array(1).includes()})},{includes:function(t){return o(this,t,1")})||!n||h)},function(t,e,n){var l=n(6),u=n(45).f,h=n(15),d=n(19),f=n(36),p=n(82),g=n(61);t.exports=function(t,e){var n,i,o,r=t.target,s=t.global,a=t.stat,c=s?l:a?l[r]||f(r,{}):(l[r]||{}).prototype;if(c)for(n in e){if(i=e[n],o=t.dontCallGetSet?(o=u(c,n))&&o.value:c[n],!g(s?n:r+(a?".":"#")+n,t.forced)&&void 0!==o){if(typeof i==typeof o)continue;p(i,o)}(t.sham||o&&o.sham)&&h(i,"sham",!0),d(c,n,i,t)}}},function(t,e,n){var i=n(6),o=n(3);t.exports=function(t,e){return arguments.length<2?(n=i[t],o(n)?n:void 0):i[t]&&i[t][e];var n}},function(t,e){t.exports=!1},function(t,e,n){var i,o,r,s,a=n(81),c=n(6),l=n(13),u=n(15),h=n(9),d=n(35),f=n(40),n=n(41),p="Object already initialized",g=c.TypeError,c=c.WeakMap,m=a||d.state?((r=d.state||(d.state=new c)).get=r.get,r.has=r.has,r.set=r.set,i=function(t,e){if(r.has(t))throw g(p);return e.facade=t,r.set(t,e),e},o=function(t){return r.get(t)||{}},function(t){return r.has(t)}):(n[s=f("state")]=!0,i=function(t,e){if(h(t,s))throw g(p);return e.facade=t,u(t,s,e),e},o=function(t){return h(t,s)?t[s]:{}},function(t){return h(t,s)});t.exports={set:i,get:o,has:m,enforce:function(t){return m(t)?o(t):i(t,{})},getterFor:function(e){return function(t){if(l(t)&&(t=o(t)).type===e)return t;throw g("Incompatible receiver, "+e+" required")}}}},function(t,e,n){var i=n(85);t.exports=function(t){t=+t;return t!=t||0==t?0:i(t)}},function(t,e,n){function i(){}function o(t){t.write(g("")),t.close();var e=t.parentWindow.Object;return t=null,e}var r,s=n(14),a=n(90),c=n(42),l=n(41),u=n(92),h=n(38),n=n(40),d="prototype",f="script",p=n("IE_PROTO"),g=function(t){return"<"+f+">"+t+""},m=function(){try{r=new ActiveXObject("htmlfile")}catch(t){}m="undefined"==typeof document||document.domain&&r?o(r):(t=h("iframe"),e="java"+f+":",t.style.display="none",u.appendChild(t),t.src=String(e),(e=t.contentWindow.document).open(),e.write(g("document.F=Object")),e.close(),e.F);for(var t,e,n=c.length;n--;)delete m[d][c[n]];return m()};l[p]=!0,t.exports=Object.create||function(t,e){var n;return null!==t?(i[d]=s(t),n=new i,i[d]=null,n[p]=t):n=m(),void 0===e?n:a.f(n,e)}},function(t,e,n){"use strict";var i=n(22),o=n(93).trim;i({target:"String",proto:!0,forced:n(94)("trim")},{trim:function(){return o(this)}})},function(N,R,t){var e=t(8),n=t(6),i=t(4),o=t(61),l=t(95),u=t(15),r=t(57).f,h=t(33),d=t(98),f=t(20),p=t(99),s=t(63),a=t(100),c=t(19),g=t(2),m=t(9),_=t(25).enforce,v=t(101),b=t(7),y=t(64),w=t(65),E=b("match"),x=n.RegExp,C=x.prototype,A=n.SyntaxError,T=i(C.exec),O=i("".charAt),L=i("".replace),S=i("".indexOf),H=i("".slice),B=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,I=/a/g,k=/a/g,t=new x(I)!==I,D=s.MISSED_STICKY,W=s.UNSUPPORTED_Y,b=e&&(!t||D||y||w||g(function(){return k[E]=!1,x(I)!=I||x(k)==k||"/a/i"!=x(I,"i")}));if(o("RegExp",b)){function j(t,e){var n,i,o=h(C,this),r=d(t),s=void 0===e,a=[],c=t;if(!o&&r&&s&&t.constructor===j)return t;if((r||h(C,t))&&(t=t.source,s)&&(e=p(c)),t=void 0===t?"":f(t),e=void 0===e?"":f(e),c=t,r=e=y&&"dotAll"in I&&(n=!!e&&-1"===e&&c:if(""===u||m(s,u))throw new A("Invalid capture group name");s[u]=!0,c=!(r[r.length]=[u,l]),u="";continue}c?u+=e:o+=e}return[o,r]}(t))[0],a=s[1]),s=l(x(t,e),o?this:C,j),(n||i||a.length)&&(e=_(s),n&&(e.dotAll=!0,e.raw=j(function(t){for(var e,n=t.length,i=0,o="",r=!1;i<=n;i++)"\\"===(e=O(t,i))?o+=e+O(t,++i):r||"."!==e?("["===e?r=!0:"]"===e&&(r=!1),o+=e):o+="[\\s\\S]";return o}(t),r)),i&&(e.sticky=!0),a.length)&&(e.groups=a),t!==c)try{u(s,"source",""===c?"(?:)":c)}catch(t){}return s}for(var M=r(x),P=0;M.length>P;)a(j,x,M[P++]);(C.constructor=j).prototype=C,c(n,"RegExp",j,{constructor:!0})}v("RegExp")},function(t,e,n){n=n(2);t.exports=!n(function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")})},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e){t.exports=function(t){return null==t}},function(t,e,n){n=n(4);t.exports=n({}.isPrototypeOf)},function(t,e,n){var i=n(24),o=n(35);(t.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.30.2",mode:i?"pure":"global",copyright:"© 2014-2023 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.30.2/LICENSE",source:"https://github.com/zloirock/core-js"})},function(t,e,n){var i=n(6),n=n(36),o="__core-js_shared__",i=i[o]||n(o,{});t.exports=i},function(t,e,n){var i=n(6),o=Object.defineProperty;t.exports=function(e,n){try{o(i,e,{value:n,configurable:!0,writable:!0})}catch(t){i[e]=n}return n}},function(t,e,n){var i=n(18),o=Object;t.exports=function(t){return o(i(t))}},function(t,e,n){var i=n(6),n=n(13),o=i.document,r=n(o)&&n(o.createElement);t.exports=function(t){return r?o.createElement(t):{}}},function(t,e,n){var i=n(8),n=n(9),o=Function.prototype,r=i&&Object.getOwnPropertyDescriptor,n=n(o,"name"),s=n&&"something"===function(){}.name,i=n&&(!i||r(o,"name").configurable);t.exports={EXISTS:n,PROPER:s,CONFIGURABLE:i}},function(t,e,n){var i=n(34),o=n(53),r=i("keys");t.exports=function(t){return r[t]||(r[t]=o(t))}},function(t,e){t.exports={}},function(t,e){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(t,e,n){"use strict";var p=n(12),i=n(4),g=n(20),m=n(62),o=n(63),r=n(34),_=n(27),v=n(25).get,s=n(64),n=n(65),b=r("native-string-replace",String.prototype.replace),y=RegExp.prototype.exec,w=y,E=i("".charAt),x=i("".indexOf),C=i("".replace),A=i("".slice),T=(r=/b*/g,p(y,i=/a/,"a"),p(y,r,"a"),0!==i.lastIndex||0!==r.lastIndex),O=o.BROKEN_CARET,L=void 0!==/()??/.exec("")[1];(T||L||O||s||n)&&(w=function(t){var e,n,i,o,r,s,a=this,c=v(a),t=g(t),l=c.raw;if(l)return l.lastIndex=a.lastIndex,h=p(w,l,t),a.lastIndex=l.lastIndex,h;var u=c.groups,l=O&&a.sticky,h=p(m,a),c=a.source,d=0,f=t;if(l&&(h=C(h,"y",""),-1===x(h,"g")&&(h+="g"),f=A(t,a.lastIndex),0o;)!s(i,n=e[o++])||~c(r,n)||u(r,n);return r}},function(t,e,n){function i(a){return function(t,e,n){var i,o=c(t),r=u(o),s=l(n,r);if(a&&e!=e){for(;sb)","g");return"b"!==t.exec("b").groups.a||"bc"!=="b".replace(t,"$c")})},function(t,e){t.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},function(t,e,n){var o=n(96),r=n(14),s=n(97);t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var n,i=!1,t={};try{(n=o(Object.prototype,"__proto__","set"))(t,[]),i=t instanceof Array}catch(t){}return function(t,e){return r(t),s(e),i?n(t,e):t.__proto__=e,t}}():void 0)},function(t,e,n){var i=n(7),o=n(27),n=n(11).f,r=i("unscopables"),s=Array.prototype;null==s[r]&&n(s,r,{configurable:!0,value:o(null)}),t.exports=function(t){s[r][t]=!0}},function(t,e,n){"use strict";var i,o,r=n(2),s=n(3),a=n(13),c=n(27),l=n(70),u=n(19),h=n(7),n=n(24),d=h("iterator"),h=!1;[].keys&&("next"in(o=[].keys())?(l=l(l(o)))!==Object.prototype&&(i=l):h=!0),!a(i)||r(function(){var t={};return i[d].call(t)!==t})?i={}:n&&(i=c(i)),s(i[d])||u(i,d,function(){return this}),t.exports={IteratorPrototype:i,BUGGY_SAFARI_ITERATORS:h}},function(t,e,n){var i=n(9),o=n(3),r=n(37),s=n(40),n=n(112),a=s("IE_PROTO"),c=Object,l=c.prototype;t.exports=n?c.getPrototypeOf:function(t){var e,t=r(t);return i(t,a)?t[a]:(e=t.constructor,o(e)&&t instanceof e?e.prototype:t instanceof c?l:null)}},function(t,e,n){var i=n(11).f,o=n(9),r=n(7)("toStringTag");t.exports=function(t,e,n){(t=t&&!n?t.prototype:t)&&!o(t,r)&&i(t,r,{configurable:!0,value:e})}},function(t,e){var n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){"use strict";var i={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,r=o&&!i.call({1:2},1);e.f=r?function(t){t=o(this,t);return!!t&&t.enumerable}:i},function(t,e,n){var i=n(4),o=n(2),r=n(17),s=Object,a=i("".split);t.exports=o(function(){return!s("z").propertyIsEnumerable(0)})?function(t){return"String"==r(t)?a(t,""):s(t)}:s},function(t,e,n){var i=n(12),o=n(13),r=n(48),s=n(51),a=n(79),n=n(7),c=TypeError,l=n("toPrimitive");t.exports=function(t,e){if(!o(t)||r(t))return t;var n=s(t,l);if(n){if(n=i(n,t,e=void 0===e?"default":e),!o(n)||r(n))return n;throw c("Can't convert object to primitive value")}return a(t,e=void 0===e?"number":e)}},function(t,e,n){var i,o,r=n(6),n=n(77),s=r.process,r=r.Deno,s=s&&s.versions||r&&r.version,r=s&&s.v8;!(o=r?0<(i=r.split("."))[0]&&i[0]<4?1:+(i[0]+i[1]):o)&&n&&(!(i=n.match(/Edge\/(\d+)/))||74<=i[1])&&(i=n.match(/Chrome\/(\d+)/))&&(o=+i[1]),t.exports=o},function(t,e){t.exports="undefined"!=typeof navigator&&String(navigator.userAgent)||""},function(t,e){var n=String;t.exports=function(t){try{return n(t)}catch(t){return"Object"}}},function(t,e,n){var o=n(12),r=n(3),s=n(13),a=TypeError;t.exports=function(t,e){var n,i;if("string"===e&&r(n=t.toString)&&!s(i=o(n,t)))return i;if(r(n=t.valueOf)&&!s(i=o(n,t)))return i;if("string"!==e&&r(n=t.toString)&&!s(i=o(n,t)))return i;throw a("Can't convert object to primitive value")}},function(t,e,n){var i=n(4),o=n(3),n=n(35),r=i(Function.toString);o(n.inspectSource)||(n.inspectSource=function(t){return r(t)}),t.exports=n.inspectSource},function(t,e,n){var i=n(6),n=n(3),i=i.WeakMap;t.exports=n(i)&&/native code/.test(String(i))},function(t,e,n){var c=n(9),l=n(83),u=n(45),h=n(11);t.exports=function(t,e,n){for(var i=l(e),o=h.f,r=u.f,s=0;s]*>)/g,_=/\$([$&'`]|\d{1,2})/g;t.exports=function(r,s,a,c,l,t){var u=a+r.length,h=c.length,e=_;return void 0!==l&&(l=o(l),e=m),p(t,e,function(t,e){var n;switch(f(e,0)){case"$":return"$";case"&":return r;case"`":return g(s,0,a);case"'":return g(s,u);case"<":n=l[g(e,1,-1)];break;default:var i,o=+e;if(0==o)return t;if(h{"use strict";n.d(e,{Z:()=>i});e=n(645),n=n.n(e)()(function(t){return t[1]});n.push([t.id,"INPUT:-webkit-autofill,SELECT:-webkit-autofill,TEXTAREA:-webkit-autofill{animation-name:onautofillstart}INPUT:not(:-webkit-autofill),SELECT:not(:-webkit-autofill),TEXTAREA:not(:-webkit-autofill){animation-name:onautofillcancel}@keyframes onautofillstart{}@keyframes onautofillcancel{}",""]);const i=n},645:t=>{"use strict";t.exports=function(n){var c=[];return c.toString=function(){return this.map(function(t){var e=n(t);return t[2]?"@media ".concat(t[2]," {").concat(e,"}"):e}).join("")},c.i=function(t,e,n){"string"==typeof t&&(t=[[null,t,""]]);var i={};if(n)for(var o=0;o{if("undefined"!=typeof window)try{var t=new window.CustomEvent("test",{cancelable:!0});if(t.preventDefault(),!0!==t.defaultPrevented)throw new Error("Could not prevent default")}catch(t){function e(t,e){var n,i;return(e=e||{}).bubbles=!!e.bubbles,e.cancelable=!!e.cancelable,(n=document.createEvent("CustomEvent")).initCustomEvent(t,e.bubbles,e.cancelable,e.detail),i=n.preventDefault,n.preventDefault=function(){i.call(this);try{Object.defineProperty(this,"defaultPrevented",{get:function(){return!0}})}catch(t){this.defaultPrevented=!0}},n}e.prototype=window.Event.prototype,window.CustomEvent=e}},379:(t,e,o)=>{"use strict";i={};var n,i,r=function(t){if(void 0===i[t]){var e=document.querySelector(t);if(window.HTMLIFrameElement&&e instanceof window.HTMLIFrameElement)try{e=e.contentDocument.head}catch(t){e=null}i[t]=e}return i[t]},l=[];function u(t){for(var e=-1,n=0;n{var e=t&&t.__esModule?()=>t.default:()=>t;return o.d(e,{a:e}),e},o.d=(t,e)=>{for(var n in e)o.o(e,n)&&!o.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},o.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),(()=>{"use strict";var t=o(379),t=o.n(t),e=o(454);function n(t){var e;t.hasAttribute("autocompleted")||(t.setAttribute("autocompleted",""),e=new window.CustomEvent("onautocomplete",{bubbles:!0,cancelable:!0,detail:null}),t.dispatchEvent(e))||(t.value="")}function i(t){t.hasAttribute("autocompleted")&&(t.removeAttribute("autocompleted"),t.dispatchEvent(new window.CustomEvent("onautocomplete",{bubbles:!0,cancelable:!1,detail:null})))}t()(e.Z,{insert:"head",singleton:!1}),e.Z.locals,o(810),document.addEventListener("animationstart",function(t){("onautofillstart"===t.animationName?n:i)(t.target)},!0),document.addEventListener("input",function(t){("insertReplacementText"!==t.inputType&&"data"in t?i:n)(t.target)},!0)})()},,,function(N,t,e){"use strict";e.r(t),e.d(t,"Alert",function(){return Be}),e.d(t,"Button",function(){return ne}),e.d(t,"Carousel",function(){return vn}),e.d(t,"Collapse",function(){return ls}),e.d(t,"Offcanvas",function(){return De}),e.d(t,"Dropdown",function(){return zs}),e.d(t,"Input",function(){return Yr}),e.d(t,"Modal",function(){return Nn}),e.d(t,"Popover",function(){return Io}),e.d(t,"Ripple",function(){return ea}),e.d(t,"ScrollSpy",function(){return Uo}),e.d(t,"Tab",function(){return fr}),e.d(t,"Toast",function(){return Mr}),e.d(t,"Tooltip",function(){return _r}),e.d(t,"Range",function(){return ca});var n={};e.r(n),e.d(n,"top",function(){return O}),e.d(n,"bottom",function(){return L}),e.d(n,"right",function(){return S}),e.d(n,"left",function(){return I}),e.d(n,"auto",function(){return Rn}),e.d(n,"basePlacements",function(){return Hn}),e.d(n,"start",function(){return Bn}),e.d(n,"end",function(){return Wn}),e.d(n,"clippingParents",function(){return Fn}),e.d(n,"viewport",function(){return qn}),e.d(n,"popper",function(){return zn}),e.d(n,"reference",function(){return Qn}),e.d(n,"variationPlacements",function(){return Vn}),e.d(n,"placements",function(){return Un}),e.d(n,"beforeRead",function(){return Yn}),e.d(n,"read",function(){return Xn}),e.d(n,"afterRead",function(){return Kn}),e.d(n,"beforeMain",function(){return $n}),e.d(n,"main",function(){return Gn}),e.d(n,"afterMain",function(){return Zn}),e.d(n,"beforeWrite",function(){return Jn}),e.d(n,"write",function(){return ti}),e.d(n,"afterWrite",function(){return ei}),e.d(n,"modifierPhases",function(){return ni}),e.d(n,"applyStyles",function(){return ri}),e.d(n,"arrow",function(){return xi}),e.d(n,"computeStyles",function(){return Oi}),e.d(n,"eventListeners",function(){return Si}),e.d(n,"flip",function(){return zi}),e.d(n,"hide",function(){return Ui}),e.d(n,"offset",function(){return Yi}),e.d(n,"popperOffsets",function(){return Xi}),e.d(n,"preventOverflow",function(){return Ki}),e.d(n,"popperGenerator",function(){return to}),e.d(n,"detectOverflow",function(){return qi}),e.d(n,"createPopperBase",function(){return eo}),e.d(n,"createPopper",function(){return no}),e.d(n,"createPopperLite",function(){return io}),e(5),e(28),e(29);const R=t=>{let e=t.getAttribute("data-mdb-target");return e&&"#"!==e||(t=t.getAttribute("href"),e=t&&"#"!==t?t.trim():null),e},H=t=>{t=R(t);return t&&document.querySelector(t)?t:null},B=t=>{t=R(t);return t?document.querySelector(t):null};const W=(o,r,s)=>{Object.keys(s).forEach(t=>{var e,n=s[t],i=r[t],i=i&&((e=i)[0]||e).nodeType?"element":null==(e=i)?"".concat(e):{}.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(n).test(i))throw new Error("".concat(o.toUpperCase(),": ")+'Option "'.concat(t,'" provided type "').concat(i,'" ')+'but expected type "'.concat(n,'".'))})};const i=()=>{var t=window["jQuery"];return t&&!document.body.hasAttribute("data-mdb-no-jquery")?t:null},o=t=>{"loading"===document.readyState?document.addEventListener("DOMContentLoaded",t):t()};document.documentElement.dir;const F=t=>document.createElement(t);const q=(()=>{const i={};let o=1;return{set(t,e,n){void 0===t[e]&&(t[e]={key:e,id:o},o++),i[t[e].id]=n},get(t,e){return t&&void 0!==t[e]&&(t=t[e]).key===e?i[t.id]:null},delete(t,e){var n;void 0!==t[e]&&(n=t[e]).key===e&&(delete i[n.id],delete t[e])}}})();var r={setData(t,e,n){q.set(t,e,n)},getData(t,e){return q.get(t,e)},removeData(t,e){q.delete(t,e)}};e(21),e(0),e(1);const z=i(),Q=/[^.]*(?=\..*)\.|.*/,V=/\..*/,U=/::\d+$/,Y={};let X=1;const K={mouseenter:"mouseover",mouseleave:"mouseout"},$=["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"];function G(t,e){return e&&"".concat(e,"::").concat(X++)||t.uidEvent||X++}function Z(t){var e=G(t);return t.uidEvent=e,Y[e]=Y[e]||{},Y[e]}function J(n,i,t){var o=2{it.on(i,"".concat(t.name,".bs.").concat(o),e=>{const n={};t.parametersToCopy&&t.parametersToCopy.forEach(t=>{n[t]=e[t]}),it.trigger(i,"".concat(t.name,".mdb.").concat(o),n)})})},off(s,a,t,e){if("string"==typeof a&&s){const[n,i,o]=tt(a,t,e),r=o!==a,c=Z(s);e="."===a.charAt(0);if(void 0!==i)return c&&c[o]?void nt(s,c,o,i,n?t:null):void 0;e&&Object.keys(c).forEach(t=>{{var e=s,n=c,i=t,o=a.slice(1);const r=n[i]||{};Object.keys(r).forEach(t=>{-1{var e=t.replace(U,"");(!r||-1{Object.defineProperty(u,t,{get(){return n[t]}})}),l&&u.preventDefault(),c&&t.dispatchEvent(u),u.defaultPrevented&&void 0!==s&&s.preventDefault(),u}};var s=it;function ot(t){return"true"===t||"false"!==t&&(t===Number(t).toString()?Number(t):""===t||"null"===t?null:t)}function rt(t){return t.replace(/[A-Z]/g,t=>"-".concat(t.toLowerCase()))}var c={setDataAttribute(t,e,n){t.setAttribute("data-mdb-".concat(rt(e)),n)},removeDataAttribute(t,e){t.removeAttribute("data-mdb-".concat(rt(e)))},getDataAttributes(t){if(!t)return{};const n={...t.dataset};return Object.keys(n).filter(t=>t.startsWith("mdb")).forEach(t=>{let e=t.replace(/^mdb/,"");e=e.charAt(0).toLowerCase()+e.slice(1,e.length),n[e]=ot(n[t])}),n},getDataAttribute(t,e){return ot(t.getAttribute("data-mdb-".concat(rt(e))))},offset(t){t=t.getBoundingClientRect();return{top:t.top+document.body.scrollTop,left:t.left+document.body.scrollLeft}},position(t){return{top:t.offsetTop,left:t.offsetLeft}},style(t,e){Object.assign(t.style,e)},toggleClass(t,e){t&&(t.classList.contains(e)?t.classList.remove(e):t.classList.add(e))},addClass(t,e){t.classList.contains(e)||t.classList.add(e)},addStyle(e,n){Object.keys(n).forEach(t=>{e.style[t]=n[t]})},removeClass(t,e){t.classList.contains(e)&&t.classList.remove(e)},hasClass(t,e){return t.classList.contains(e)}};var a={closest(t,e){return t.closest(e)},matches(t,e){return t.matches(e)},find(t){var e=1t.matches(e))},parents(t,e){var n=[];let i=t.parentNode;for(;i&&i.nodeType===Node.ELEMENT_NODE&&3!==i.nodeType;)this.matches(i,e)&&n.push(i),i=i.parentNode;return n},prev(t,e){let n=t.previousElementSibling;for(;n;){if(n.matches(e))return[n];n=n.previousElementSibling}return[]},next(t,e){let n=t.nextElementSibling;for(;n;){if(this.matches(n,e))return[n];n=n.nextElementSibling}return[]}};e(10);const st=1e3,at="transitionend",ct=e=>{let n=e.getAttribute("data-mdb-target");if(!n||"#"===n){let t=e.getAttribute("href");if(!t||!t.includes("#")&&!t.startsWith("."))return null;t.includes("#")&&!t.startsWith("#")&&(t="#".concat(t.split("#")[1])),n=t&&"#"!==t?t.trim():null}return n},lt=t=>{t=ct(t);return t&&document.querySelector(t)?t:null},l=t=>{t=ct(t);return t?document.querySelector(t):null},ut=t=>{t.dispatchEvent(new Event(at))},u=t=>!(!t||"object"!=typeof t)&&void 0!==(t=void 0!==t.jquery?t[0]:t).nodeType,ht=t=>u(t)?t.jquery?t[0]:t:"string"==typeof t&&0{if(!u(t)||0===t.getClientRects().length)return!1;var e="visible"===getComputedStyle(t).getPropertyValue("visibility"),n=t.closest("details:not([open])");if(n&&n!==t){t=t.closest("summary");if(t&&t.parentNode!==n)return!1;if(null===t)return!1}return e},ft=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),pt=t=>{var e;return document.documentElement.attachShadow?"function"==typeof t.getRootNode?(e=t.getRootNode())instanceof ShadowRoot?e:null:t instanceof ShadowRoot?t:t.parentNode?pt(t.parentNode):null:null},gt=()=>{},mt=t=>{t.offsetHeight},_t=()=>window.jQuery&&!document.body.hasAttribute("data-mdb-no-jquery")?window.jQuery:null,vt=[],h=()=>"rtl"===document.documentElement.dir;t=i=>{var t;t=()=>{const t=_t();if(t){const e=i.NAME,n=t.fn[e];t.fn[e]=i.jQueryInterface,t.fn[e].Constructor=i,t.fn[e].noConflict=()=>(t.fn[e]=n,i.jQueryInterface)}},"loading"===document.readyState?(vt.length||document.addEventListener("DOMContentLoaded",()=>{for(const t of vt)t()}),vt.push(t)):t()};function bt(n,i){if(!(2{if(!t)return 0;let{transitionDuration:e,transitionDelay:n}=window.getComputedStyle(t);var t=Number.parseFloat(e),i=Number.parseFloat(n);return t||i?(e=e.split(",")[0],n=n.split(",")[0],(Number.parseFloat(e)+Number.parseFloat(n))*st):0})(i)+5;let e=!1;const o=t=>{t=t.target;t===i&&(e=!0,i.removeEventListener(at,o),d(n))};i.addEventListener(at,o),setTimeout(()=>{e||ut(i)},t)}else d(n)}const d=t=>{"function"==typeof t&&t()},yt=(t,e,n,i)=>{var o=t.length;let r=t.indexOf(e);return-1===r?!n&&i?t[o-1]:t[0]:(r+=n?1:-1,i&&(r=(r+o)%o),t[Math.max(0,Math.min(r,o-1))])},wt=/[^.]*(?=\..*)\.|.*/,Et=/\..*/,xt=/::\d+$/,Ct={};let At=1;const Tt={mouseenter:"mouseover",mouseleave:"mouseout"},Ot=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function Lt(t,e){return e&&"".concat(e,"::").concat(At++)||t.uidEvent||At++}function St(t){var e=Lt(t);return t.uidEvent=e,Ct[e]=Ct[e]||{},Ct[e]}function It(t,e,n){let i=2t.callable===e&&t.delegationSelector===i)}function kt(t,e,n){var i="string"==typeof e,e=!i&&e||n;let o=Mt(t);return[i,e,o=Ot.has(o)?o:t]}function Dt(i,o,r,s,a){if("string"==typeof o&&i){let[t,e,n]=kt(o,r,s);o in Tt&&(e=(c=e,function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return c.call(this,t)}));var c,l,u,h,d,f,s=St(i),s=s[n]||(s[n]={}),p=It(s,e,t?r:null);p?p.oneOff=p.oneOff&&a:(p=Lt(e,o.replace(wt,"")),(o=t?(h=i,d=r,f=e,function e(n){var i=h.querySelectorAll(d);for(let t=n["target"];t&&t!==this;t=t.parentNode)for(const o of i)if(o===t)return Nt(n,{delegateTarget:t}),e.oneOff&&Pt.off(h,n.type,d,f),f.apply(t,[n])}):(l=i,u=e,function t(e){return Nt(e,{delegateTarget:l}),t.oneOff&&Pt.off(l,e.type,u),u.apply(l,[e])})).delegationSelector=t?r:null,o.callable=e,o.oneOff=a,s[o.uidEvent=p]=o,i.addEventListener(n,o,t))}}function jt(t,e,n,i,o){i=It(e[n],i,o);i&&(t.removeEventListener(n,i,Boolean(o)),delete e[n][i.uidEvent])}function Mt(t){return t=t.replace(Et,""),Tt[t]||t}const Pt={on(t,e,n,i){Dt(t,e,n,i,!1)},one(t,e,n,i){Dt(t,e,n,i,!0)},off(t,e,n,i){if("string"==typeof e&&t){var[i,o,r]=kt(e,n,i),s=r!==e,a=St(t),c=a[r]||{},l=e.startsWith(".");if(void 0!==o)return Object.keys(c).length?void jt(t,a,r,o,i?n:null):void 0;if(l)for(const _ of Object.keys(a)){u=g=p=f=d=h=void 0;var u,h=t,d=a,f=_,p=e.slice(1),g=d[f]||{};for(const v of Object.keys(g))v.includes(p)&&jt(h,d,f,(u=g[v]).callable,u.delegationSelector)}for(const b of Object.keys(c)){var m=b.replace(xt,"");s&&!e.includes(m)||jt(t,a,r,(m=c[b]).callable,m.delegationSelector)}}},trigger(t,e,n){if("string"!=typeof e||!t)return null;var i=_t();let o=null,r=!0,s=!0,a=!1;e!==Mt(e)&&i&&(o=i.Event(e,n),i(t).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());i=Nt(i=new Event(e,{bubbles:r,cancelable:!0}),n);return a&&i.preventDefault(),s&&t.dispatchEvent(i),i.defaultPrevented&&o&&o.preventDefault(),i}};function Nt(e,t){for(const[n,i]of Object.entries(t||{}))try{e[n]=i}catch(t){Object.defineProperty(e,n,{configurable:!0,get(){return i}})}return e}var f=Pt;const Rt=new Map;var Ht=function(t,e,n){Rt.has(t)||Rt.set(t,new Map);t=Rt.get(t);t.has(e)||0===t.size?t.set(e,n):console.error("Bootstrap doesn't allow more than one instance per element. Bound instance: ".concat(Array.from(t.keys())[0],"."))},Bt=function(t,e){return Rt.has(t)&&Rt.get(t).get(e)||null},Wt=function(t,e){var n;Rt.has(t)&&((n=Rt.get(t)).delete(e),0===n.size)&&Rt.delete(t)};function Ft(e){if("true"===e)return!0;if("false"===e)return!1;if(e===Number(e).toString())return Number(e);if(""===e||"null"===e)return null;if("string"!=typeof e)return e;try{return JSON.parse(decodeURIComponent(e))}catch(t){return e}}function qt(t){return t.replace(/[A-Z]/g,t=>"-".concat(t.toLowerCase()))}var p={setDataAttribute(t,e,n){t.setAttribute("data-mdb-".concat(qt(e)),n)},removeDataAttribute(t,e){t.removeAttribute("data-mdb-".concat(qt(e)))},getDataAttributes(e){if(!e)return{};var n={};for(const i of Object.keys(e.dataset).filter(t=>t.startsWith("mdb")&&!t.startsWith("mdbConfig"))){let t=i.replace(/^mdb/,"");n[t=t.charAt(0).toLowerCase()+t.slice(1,t.length)]=Ft(e.dataset[i])}return n},getDataAttribute(t,e){return Ft(t.getAttribute("data-mdb-".concat(qt(e))))}};var g=class{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){var n=u(e)?p.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...u(e)?p.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t){var e=1{t.preventDefault();t=t.target.closest(zt);Qt.getOrCreateInstance(t).toggle()}),t(Qt);_=Qt;const Vt="button",Ut="mdb.".concat(Vt);var v=".".concat(Ut);const Yt="click".concat(v),Xt="transitionend",Kt="mouseenter",$t="mouseleave",Gt="hide".concat(v),Zt="hidden".concat(v),Jt="show".concat(v),te="shown".concat(v),ee="fixed-action-btn";class b extends _{constructor(t){super(t),this._fn={},this._element&&(r.setData(this._element,Ut,this),this._init())}static get NAME(){return Vt}static jQueryInterface(n,i){return this.each(function(){let t=r.getData(this,Ut);var e="object"==typeof n&&n;if((t||!/dispose/.test(n))&&(t=t||new b(this,e),"string"==typeof n)){if(void 0===t[n])throw new TypeError('No method named "'.concat(n,'"'));t[n](i)}})}get _actionButton(){return a.findOne(".fixed-action-btn:not(.smooth-scroll) > .btn-floating",this._element)}get _buttonListElements(){return a.find("ul .btn",this._element)}get _buttonList(){return a.findOne("ul",this._element)}get _isTouchDevice(){return"ontouchstart"in document.documentElement}show(){c.hasClass(this._element,ee)&&(s.off(this._buttonList,Xt),s.trigger(this._element,Jt),this._bindListOpenTransitionEnd(),c.addStyle(this._element,{height:"".concat(this._fullContainerHeight,"px")}),this._toggleVisibility(!0))}hide(){c.hasClass(this._element,ee)&&(s.off(this._buttonList,Xt),s.trigger(this._element,Gt),this._bindListHideTransitionEnd(),this._toggleVisibility(!1))}dispose(){c.hasClass(this._element,ee)&&(s.off(this._actionButton,Yt),this._actionButton.removeEventListener(Kt,this._fn.mouseenter),this._element.removeEventListener($t,this._fn.mouseleave)),super.dispose()}_init(){c.hasClass(this._element,ee)&&(this._saveInitialHeights(),this._setInitialStyles(),this._bindInitialEvents())}_bindMouseEnter(){this._actionButton.addEventListener(Kt,this._fn.mouseenter=()=>{this._isTouchDevice||this.show()})}_bindMouseLeave(){this._element.addEventListener($t,this._fn.mouseleave=()=>{this.hide()})}_bindClick(){s.on(this._actionButton,Yt,()=>{c.hasClass(this._element,"active")?this.hide():this.show()})}_bindListHideTransitionEnd(){s.on(this._buttonList,Xt,t=>{"transform"===t.propertyName&&(s.off(this._buttonList,Xt),this._element.style.height="".concat(this._initialContainerHeight,"px"),s.trigger(this._element,Zt))})}_bindListOpenTransitionEnd(){s.on(this._buttonList,Xt,t=>{"transform"===t.propertyName&&(s.off(this._buttonList,Xt),s.trigger(this._element,te))})}_toggleVisibility(t){const e=t?"addClass":"removeClass";t=t?"translate(0)":"translateY(".concat(this._fullContainerHeight,"px)");c.addStyle(this._buttonList,{transform:t}),this._buttonListElements&&this._buttonListElements.forEach(t=>c[e](t,"shown")),c[e](this._element,"active")}_getHeight(t){t=window.getComputedStyle(t);return parseFloat(t.getPropertyValue("height"))}_saveInitialHeights(){this._initialContainerHeight=this._getHeight(this._element),this._initialListHeight=this._getHeight(this._buttonList),this._fullContainerHeight=this._initialContainerHeight+this._initialListHeight}_bindInitialEvents(){this._bindClick(),this._bindMouseEnter(),this._bindMouseLeave()}_setInitialStyles(){this._buttonList.style.marginBottom="".concat(this._initialContainerHeight,"px"),this._buttonList.style.transform="translateY(".concat(this._fullContainerHeight,"px)"),this._element.style.height="".concat(this._initialContainerHeight,"px")}}a.find(".fixed-action-btn").forEach(t=>{let e=b.getInstance(t);return e=e||new b(t)}),a.find('[data-mdb-toggle="button"]').forEach(t=>{let e=b.getInstance(t);return e=e||new b(t)}),o(()=>{const t=i();if(t){const e=t.fn[Vt];t.fn[Vt]=b.jQueryInterface,t.fn[Vt].Constructor=b,t.fn[Vt].noConflict=()=>(t.fn[Vt]=e,b.jQueryInterface)}});var ne=b,y={find(t){var e=1t.matches(e))},parents(t,e){var n=[];let i=t.parentNode.closest(e);for(;i;)n.push(i),i=i.parentNode.closest(e);return n},prev(t,e){let n=t.previousElementSibling;for(;n;){if(n.matches(e))return[n];n=n.previousElementSibling}return[]},next(t,e){let n=t.nextElementSibling;for(;n;){if(n.matches(e))return[n];n=n.nextElementSibling}return[]},focusableChildren(t){var e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(t=>"".concat(t,':not([tabindex^="-"])')).join(",");return this.find(e,t).filter(t=>!ft(t)&&dt(t))}};const ie=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",oe=".sticky-top",re="padding-right",se="margin-right";var ae=class{constructor(){this._element=document.body}getWidth(){var t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const e=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,re,t=>t+e),this._setElementAttributes(ie,re,t=>t+e),this._setElementAttributes(oe,se,t=>t-e)}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,re),this._resetElementAttributes(ie,re),this._resetElementAttributes(oe,se)}isOverflowing(){return 0{var e;t!==this._element&&window.innerWidth>t.clientWidth+o||(this._saveInitialAttribute(t,n),e=window.getComputedStyle(t).getPropertyValue(n),t.style.setProperty(n,"".concat(i(Number.parseFloat(e)),"px")))})}_saveInitialAttribute(t,e){var n=t.style.getPropertyValue(e);n&&p.setDataAttribute(t,e,n)}_resetElementAttributes(t,n){this._applyManipulationCallback(t,t=>{var e=p.getDataAttribute(t,n);null===e?t.style.removeProperty(n):(p.removeDataAttribute(t,n),t.style.setProperty(n,e))})}_applyManipulationCallback(t,e){if(u(t))e(t);else for(const n of y.find(t,this._element))e(n)}};const ce="backdrop",le="mousedown.bs.".concat(ce),ue={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},he={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};var de=class extends g{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return ue}static get DefaultType(){return he}static get NAME(){return ce}show(t){var e;this._config.isVisible?(this._append(),e=this._getElement(),this._config.isAnimated&&mt(e),e.classList.add("show"),this._emulateAnimation(()=>{d(t)})):d(t)}hide(t){this._config.isVisible?(this._getElement().classList.remove("show"),this._emulateAnimation(()=>{this.dispose(),d(t)})):d(t)}dispose(){this._isAppended&&(f.off(this._element,le),this._element.remove(),this._isAppended=!1)}_getElement(){var t;return this._element||((t=document.createElement("div")).className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t),this._element}_configAfterMerge(t){return t.rootElement=ht(t.rootElement),t}_append(){var t;this._isAppended||(t=this._getElement(),this._config.rootElement.append(t),f.on(t,le,()=>{d(this._config.clickCallback)}),this._isAppended=!0)}_emulateAnimation(t){bt(t,this._getElement(),this._config.isAnimated)}};const fe=".".concat("bs.focustrap"),pe="focusin".concat(fe),ge="keydown.tab".concat(fe),me="backward",_e={autofocus:!0,trapElement:null},ve={autofocus:"boolean",trapElement:"element"};function be(e){let n=1this._handleFocusin(t)),f.on(document,ge,t=>this._handleKeydown(t)),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,f.off(document,fe))}_handleFocusin(t){var e=this._config["trapElement"];t.target===document||t.target===e||e.contains(t.target)||(0===(t=y.focusableChildren(e)).length?e:this._lastTabNavDirection===me?t[t.length-1]:t[0]).focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?me:"forward")}};var v=".".concat("bs.offcanvas"),_=".data-api",w="load".concat(v).concat(_);const we="showing",Ee=".offcanvas.show",xe="show".concat(v),Ce="shown".concat(v),Ae="hide".concat(v),Te="hidePrevented".concat(v),Oe="hidden".concat(v);var E="resize".concat(v),_="click".concat(v).concat(_);const Le="keydown.dismiss".concat(v);const Se={backdrop:!0,keyboard:!0,scroll:!1},Ie={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class ke extends m{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return Se}static get DefaultType(){return Ie}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||f.trigger(this._element,xe,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new ae).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(we),this._queueCallback(()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add("show"),this._element.classList.remove(we),f.trigger(this._element,Ce,{relatedTarget:t})},this._element,!0))}hide(){this._isShown&&!f.trigger(this._element,Ae).defaultPrevented&&(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add("hiding"),this._backdrop.hide(),this._queueCallback(()=>{this._element.classList.remove("show","hiding"),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new ae).reset(),f.trigger(this._element,Oe)},this._element,!0))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){var t=Boolean(this._config.backdrop);return new de({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"===this._config.backdrop?f.trigger(this._element,Te):this.hide()}:null})}_initializeFocusTrap(){return new ye({trapElement:this._element})}_addEventListeners(){f.on(this._element,Le,t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():f.trigger(this._element,Te))})}static jQueryInterface(e){return this.each(function(){var t=ke.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError('No method named "'.concat(e,'"'));t[e](this)}})}}f.on(document,_,'[data-mdb-toggle="offcanvas"]',function(t){var e=l(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),ft(this)||(f.one(e,Oe,()=>{dt(this)&&this.focus()}),(t=y.findOne(Ee))&&t!==e&&ke.getInstance(t).hide(),ke.getOrCreateInstance(e).toggle(this))}),f.on(window,w,()=>{for(const t of y.find(Ee))ke.getOrCreateInstance(t).show()}),f.on(window,E,()=>{for(const t of y.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&ke.getOrCreateInstance(t).hide()}),be(ke),t(ke);var De=ke;v=".".concat("bs.alert");const je="close".concat(v),Me="closed".concat(v);class Pe extends m{static get NAME(){return"alert"}close(){var t;f.trigger(this._element,je).defaultPrevented||(this._element.classList.remove("show"),t=this._element.classList.contains("fade"),this._queueCallback(()=>this._destroyElement(),this._element,t))}_destroyElement(){this._element.remove(),f.trigger(this._element,Me),this.dispose()}static jQueryInterface(e){return this.each(function(){var t=Pe.getOrCreateInstance(this);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError('No method named "'.concat(e,'"'));t[e](this)}})}}be(Pe,"close"),t(Pe);_=Pe;const Ne="alert",Re=[{name:"close"},{name:"closed"}];class He extends _{constructor(t){super(t,1{var e=He.getInstance(t);e||new He(t)}),o(()=>{const t=i();if(t){const e=t.fn[Ne];t.fn[Ne]=He.jQueryInterface,t.fn[Ne].Constructor=He,t.fn[Ne].noConflict=()=>(t.fn[Ne]=e,He.jQueryInterface)}});var Be=He;const We=".bs.swipe",Fe="touchstart".concat(We),qe="touchmove".concat(We),ze="touchend".concat(We),Qe="pointerdown".concat(We),Ve="pointerup".concat(We),Ue={endCallback:null,leftCallback:null,rightCallback:null},Ye={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class Xe extends g{constructor(t,e){super(),(this._element=t)&&Xe.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return Ue}static get DefaultType(){return Ye}static get NAME(){return"swipe"}dispose(){f.off(this._element,We)}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),d(this._config.endCallback)}_move(t){this._deltaX=t.touches&&1this._start(t)),f.on(this._element,Ve,t=>this._end(t)),this._element.classList.add("pointer-event")):(f.on(this._element,Fe,t=>this._start(t)),f.on(this._element,qe,t=>this._move(t)),f.on(this._element,ze,t=>this._end(t)))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||0this.nextWhenVisible(),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?f.one(this._element,en,()=>this.cycle()):this.cycle())}to(t){var e,n=this._getItems();t>n.length-1||t<0||(this._isSliding?f.one(this._element,en,()=>this.to(t)):(e=this._getItemIndex(this._getActive()))!==t&&(e=ethis._keydown(t)),"hover"===this._config.pause&&(f.on(this._element,on,()=>this.pause()),f.on(this._element,rn,()=>this._maybeEnableCycle())),this._config.touch&&Ke.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of y.find(".carousel-item img",this._element))f.on(t,sn,t=>t.preventDefault());this._swipeHelper=new Ke(this._element,{leftCallback:()=>this._slide(this._directionToOrder(Ze)),rightCallback:()=>this._slide(this._directionToOrder(Je)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(()=>this._maybeEnableCycle(),500+this._config.interval))}})}_keydown(t){var e;/input|textarea/i.test(t.target.tagName)||(e=hn[t.key])&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){var e;this._indicatorsElement&&((e=y.findOne(ln,this._indicatorsElement)).classList.remove(cn),e.removeAttribute("aria-current"),e=y.findOne('[data-mdb-slide-to="'.concat(t,'"]'),this._indicatorsElement))&&(e.classList.add(cn),e.setAttribute("aria-current","true"))}_updateInterval(){var t=this._activeElement||this._getActive();t&&(t=Number.parseInt(t.getAttribute("data-mdb-interval"),10),this._config.interval=t||this._config.defaultInterval)}_slide(e){var t=1f.trigger(this._element,t,{relatedTarget:o,direction:this._orderToDirection(e),from:this._getItemIndex(i),to:r});t=s(tn);if(!t.defaultPrevented&&i&&o){t=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(r),this._activeElement=o;const a=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";o.classList.add(c),mt(o),i.classList.add(a),o.classList.add(a);this._queueCallback(()=>{o.classList.remove(a,c),o.classList.add(cn),i.classList.remove(cn,c,a),this._isSliding=!1,s(en)},i,this._isAnimated()),t&&this.cycle()}}}}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return y.findOne(".active.carousel-item",this._element)}_getItems(){return y.find(un,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return h()?t===Ze?Ge:$e:t===Ze?$e:Ge}_orderToDirection(t){return h()?t===Ge?Ze:Je:t===Ge?Je:Ze}static jQueryInterface(e){return this.each(function(){var t=pn.getOrCreateInstance(this,e);if("number"==typeof e)t.to(e);else if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError('No method named "'.concat(e,'"'));t[e]()}})}}f.on(document,_,"[data-mdb-slide], [data-mdb-slide-to]",function(t){var e=l(this);e&&e.classList.contains(an)&&(t.preventDefault(),t=pn.getOrCreateInstance(e),(e=this.getAttribute("data-mdb-slide-to"))?t.to(e):"next"===p.getDataAttribute(this,"slide")?t.next():t.prev(),t._maybeEnableCycle())}),f.on(window,v,()=>{for(const t of y.find('[data-mdb-ride="carousel"]'))pn.getOrCreateInstance(t)}),t(pn);w=pn;const gn="carousel",mn=[{name:"slide",parametersToCopy:["relatedTarget","direction","from","to"]},{name:"slid",parametersToCopy:["relatedTarget","direction","from","to"]}];class _n extends w{constructor(t,e){super(t,e),this._init()}dispose(){s.off(this._element,"slide.bs.carousel"),s.off(this._element,"slid.bs.carousel"),super.dispose()}static get NAME(){return gn}_init(){this._bindMdbEvents()}_bindMdbEvents(){s.extend(this._element,mn,gn)}}a.find('[data-mdb-ride="carousel"]').forEach(t=>{var e=_n.getInstance(t);e||new _n(t,c.getDataAttributes(t))}),o(()=>{const t=i();if(t){const e=t.fn[gn];t.fn[gn]=_n.jQueryInterface,t.fn[gn].Constructor=_n,t.fn[gn].noConflict=()=>(t.fn[gn]=e,_n.jQueryInterface)}});var vn=_n;const x=".".concat("bs.modal");const bn="hide".concat(x),yn="hidePrevented".concat(x),wn="hidden".concat(x),En="show".concat(x),xn="shown".concat(x),Cn="resize".concat(x),An="click.dismiss".concat(x),Tn="mousedown.dismiss".concat(x),On="keydown.dismiss".concat(x);E="click".concat(x).concat(".data-api");const Ln="modal-open",Sn="modal-static";const In={backdrop:!0,focus:!0,keyboard:!0},kn={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class Dn extends m{constructor(t,e){super(t,e),this._dialog=y.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new ae,this._addEventListeners()}static get Default(){return In}static get DefaultType(){return kn}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||f.trigger(this._element,En,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(Ln),this._adjustDialog(),this._backdrop.show(()=>this._showElement(t)))}hide(){!this._isShown||this._isTransitioning||f.trigger(this._element,bn).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove("show"),this._queueCallback(()=>this._hideModal(),this._element,this._isAnimated()))}dispose(){for(const t of[window,this._dialog])f.off(t,x);this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new de({isVisible:Boolean(this._config.backdrop)&&Boolean(!this._config.modalNonInvasive),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new ye({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;var e=y.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),mt(this._element),this._element.classList.add("show");this._queueCallback(()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,f.trigger(this._element,xn,{relatedTarget:t})},this._dialog,this._isAnimated())}_addEventListeners(){f.on(this._element,On,t=>{"Escape"===t.key&&(this._config.keyboard?(t.preventDefault(),this.hide()):this._triggerBackdropTransition())}),f.on(window,Cn,()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()}),f.on(this._element,Tn,e=>{f.one(this._element,An,t=>{this._element===e.target&&this._element===t.target&&("static"===this._config.backdrop?this._triggerBackdropTransition():this._config.backdrop&&this.hide())})})}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove(Ln),this._resetAdjustments(),this._scrollBar.reset(),f.trigger(this._element,wn)})}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){var t=f.trigger(this._element,yn);if(!t.defaultPrevented){t=this._element.scrollHeight>document.documentElement.clientHeight;const e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(Sn)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(Sn),this._queueCallback(()=>{this._element.classList.remove(Sn),this._queueCallback(()=>{this._element.style.overflowY=e},this._dialog)},this._dialog),this._element.focus())}}_adjustDialog(){var t,e=this._element.scrollHeight>document.documentElement.clientHeight,n=this._scrollBar.getWidth(),i=0{t.defaultPrevented||f.one(e,wn,()=>{dt(this)&&this.focus()})}),y.find(".modal.show").forEach(t=>{t.classList.contains("modal-non-invasive-show")||Dn.getInstance(t).hide()}),Dn.getOrCreateInstance(e).toggle(this)}),be(Dn),t(Dn);_=Dn;const jn="modal",Mn=[{name:"show",parametersToCopy:["relatedTarget"]},{name:"shown",parametersToCopy:["relatedTarget"]},{name:"hide"},{name:"hidePrevented"},{name:"hidden"}];class Pn extends _{constructor(t,e){super(t,e),this._init()}dispose(){s.off(this._element,"show.bs.modal"),s.off(this._element,"shown.bs.modal"),s.off(this._element,"hide.bs.modal"),s.off(this._element,"hidden.bs.modal"),s.off(this._element,"hidePrevented.bs.modal"),super.dispose()}static get NAME(){return jn}_init(){this._bindMdbEvents()}_bindMdbEvents(){s.extend(this._element,Mn,jn)}}a.find('[data-mdb-toggle="modal"]').forEach(t=>{var t=H(t),t=a.findOne(t),e=Pn.getInstance(t);e||new Pn(t)}),o(()=>{const t=i();if(t){const e=t.fn[jn];t.fn[jn]=Pn.jQueryInterface,t.fn[jn].Constructor=Pn,t.fn[jn].noConflict=()=>(t.fn[jn]=e,Pn.jQueryInterface)}});var Nn=Pn,O="top",L="bottom",S="right",I="left",Rn="auto",Hn=[O,L,S,I],Bn="start",Wn="end",Fn="clippingParents",qn="viewport",zn="popper",Qn="reference",Vn=Hn.reduce(function(t,e){return t.concat([e+"-"+Bn,e+"-"+Wn])},[]),Un=[].concat(Hn,[Rn]).reduce(function(t,e){return t.concat([e,e+"-"+Bn,e+"-"+Wn])},[]),Yn="beforeRead",Xn="read",Kn="afterRead",$n="beforeMain",Gn="main",Zn="afterMain",Jn="beforeWrite",ti="write",ei="afterWrite",ni=[Yn,Xn,Kn,$n,Gn,Zn,Jn,ti,ei];function C(t){return t?(t.nodeName||"").toLowerCase():null}function A(t){var e;return null==t?window:"[object Window]"!==t.toString()?(e=t.ownerDocument)&&e.defaultView||window:t}function ii(t){return t instanceof A(t).Element||t instanceof Element}function T(t){return t instanceof A(t).HTMLElement||t instanceof HTMLElement}function oi(t){return"undefined"!=typeof ShadowRoot&&(t instanceof A(t).ShadowRoot||t instanceof ShadowRoot)}var ri={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var o=t.state;Object.keys(o.elements).forEach(function(t){var e=o.styles[t]||{},n=o.attributes[t]||{},i=o.elements[t];T(i)&&C(i)&&(Object.assign(i.style,e),Object.keys(n).forEach(function(t){var e=n[t];!1===e?i.removeAttribute(t):i.setAttribute(t,!0===e?"":e)}))})},effect:function(t){var i=t.state,o={popper:{position:i.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(i.elements.popper.style,o.popper),i.styles=o,i.elements.arrow&&Object.assign(i.elements.arrow.style,o.arrow),function(){Object.keys(i.elements).forEach(function(t){var e=i.elements[t],n=i.attributes[t]||{},t=Object.keys((i.styles.hasOwnProperty(t)?i.styles:o)[t]).reduce(function(t,e){return t[e]="",t},{});T(e)&&C(e)&&(Object.assign(e.style,t),Object.keys(n).forEach(function(t){e.removeAttribute(t)}))})}},requires:["computeStyles"]};function k(t){return t.split("-")[0]}var si=Math.max,ai=Math.min,ci=Math.round;function li(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map(function(t){return t.brand+"/"+t.version}).join(" "):navigator.userAgent}function ui(){return!/^((?!chrome|android).)*safari/i.test(li())}function hi(t,e,n){void 0===e&&(e=!1),void 0===n&&(n=!1);var i=t.getBoundingClientRect(),o=1,r=1;e&&T(t)&&(o=0l[C]&&(x=ki(x)),ki(x)),C=[];if(i&&C.push(A[w]<=0),o&&C.push(A[x]<=0,A[E]<=0),C.every(function(t){return t})){v=y,_=!1;break}u.set(y,C)}if(_)for(var T=g?3:1;0{const n=t.nodeName.toLowerCase();return e.includes(n)?!oo.has(n)||Boolean(ro.test(t.nodeValue)||so.test(t.nodeValue)):e.filter(t=>t instanceof RegExp).some(t=>t.test(n))})(a,r)||s.removeAttribute(a.nodeName)}else s.remove()}return n.body.innerHTML}const co={allowList:v,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},lo={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},uo={entry:"(string|element|function|null)",selector:"(string|element)"};var ho=class extends g{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return co}static get DefaultType(){return lo}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map(t=>this._resolvePossibleFunction(t)).filter(Boolean)}hasContent(){return 0
',title:"",trigger:"hover focus"},Eo={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class xo extends m{constructor(t,e){if(void 0===n)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return wo}static get DefaultType(){return Eo}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),f.off(this._element.closest(mo),_o,this._hideModalHandler),this._element.getAttribute("data-mdb-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-mdb-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(this._isWithContent()&&this._isEnabled){var t=f.trigger(this._element,this.constructor.eventName("show")),e=(pt(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(!t.defaultPrevented&&e){this._disposePopper();t=this._getTipElement(),e=(this._element.setAttribute("aria-describedby",t.getAttribute("id")),this._config)["container"];if(this._element.ownerDocument.documentElement.contains(this.tip)||(e.append(t),f.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(t),t.classList.add(go),"ontouchstart"in document.documentElement)for(const n of[].concat(...document.body.children))f.on(n,"mouseover",gt);this._queueCallback(()=>{f.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1},this.tip,this._isAnimated())}}}hide(){if(this._isShown()){var t=f.trigger(this._element,this.constructor.eventName("hide"));if(!t.defaultPrevented){if(this._getTipElement().classList.remove(go),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))f.off(e,"mouseover",gt);this._activeTrigger.click=!1,this._activeTrigger[bo]=!1,this._activeTrigger[vo]=!1,this._isHovered=null;this._queueCallback(()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),f.trigger(this._element,this.constructor.eventName("hidden")))},this.tip,this._isAnimated())}}}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){t=this._getTemplateFactory(t).toHtml();if(!t)return null;t.classList.remove(po,go),t.classList.add("bs-".concat(this.constructor.NAME,"-auto"));var e=(t=>{for(;t+=Math.floor(1e6*Math.random()),document.getElementById(t););return t})(this.constructor.NAME).toString();return t.setAttribute("id",e),this._isAnimated()&&t.classList.add(po),t}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new ho({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-mdb-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(po)}_isShown(){return this.tip&&this.tip.classList.contains(go)}_createPopper(t){var e="function"==typeof this._config.placement?this._config.placement.call(this,t,this._element):this._config.placement,e=yo[e.toUpperCase()];return no(this._element,t,this._getPopperConfig(e))}_getOffset(){const e=this._config["offset"];return"string"==typeof e?e.split(",").map(t=>Number.parseInt(t,10)):"function"==typeof e?t=>e(t,this._element):e}_resolvePossibleFunction(t){return"function"==typeof t?t.call(this._element):t}_getPopperConfig(t){t={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:".".concat(this.constructor.NAME,"-arrow")}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_setListeners(){var t,e;for(const n of this._config.trigger.split(" "))"click"===n?f.on(this._element,this.constructor.eventName("click"),this._config.selector,t=>{this._initializeOnDelegatedTarget(t).toggle()}):"manual"!==n&&(t=n===vo?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),e=n===vo?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout"),f.on(this._element,t,this._config.selector,t=>{var e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?bo:vo]=!0,e._enter()}),f.on(this._element,e,this._config.selector,t=>{var e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?bo:vo]=e._element.contains(t.relatedTarget),e._leave()}));this._hideModalHandler=()=>{this._element&&this.hide()},f.on(this._element.closest(mo),_o,this._hideModalHandler)}_fixTitle(){var t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-mdb-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout(()=>{this._isHovered&&this.show()},this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout(()=>{this._isHovered||this.hide()},this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){var e=p.getDataAttributes(this._element);for(const n of Object.keys(e))fo.has(n)&&delete e[n];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:ht(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){var t={};for(const e in this._config)this.constructor.Default[e]!==this._config[e]&&(t[e]=this._config[e]);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(e){return this.each(function(){var t=xo.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError('No method named "'.concat(e,'"'));t[e]()}})}}t(xo);w=xo;const Co={...w.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},Ao={...w.DefaultType,content:"(null|string|element|function)"};class To extends w{static get Default(){return Co}static get DefaultType(){return Ao}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(e){return this.each(function(){var t=To.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError('No method named "'.concat(e,'"'));t[e]()}})}}t(To);E=To;const Oo="popover",Lo=[{name:"show"},{name:"shown"},{name:"hide"},{name:"hidden"},{name:"inserted"}];class So extends E{constructor(t,e){super(t,e),this._init()}dispose(){s.off(this.element,"show.bs.popover"),s.off(this.element,"shown.bs.popover"),s.off(this.element,"hide.bs.popover"),s.off(this.element,"hidden.bs.popover"),s.off(this.element,"inserted.bs.popover"),super.dispose()}static get NAME(){return Oo}_init(){this._bindMdbEvents()}_bindMdbEvents(){s.extend(this._element,Lo,Oo)}}a.find('[data-mdb-toggle="popover"]').forEach(t=>{var e=So.getInstance(t);e||new So(t)}),o(()=>{const t=i();if(t){const e=t.fn[Oo];t.fn[Oo]=So.jQueryInterface,t.fn[Oo].Constructor=So,t.fn[Oo].noConflict=()=>(t.fn[Oo]=e,So.jQueryInterface)}});var Io=So;_=".".concat("bs.scrollspy");const ko="activate".concat(_),Do="click".concat(_);"load".concat(_).concat(".data-api");const jo="active";const Mo="[href]";g=".nav-link";const Po="".concat(g,", ").concat(".nav-item"," > ").concat(g,", ").concat(".list-group-item"),No={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},Ro={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class Ho extends m{constructor(t,e){super(t,e),this._config.target&&(this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh())}static get Default(){return No}static get DefaultType(){return Ro}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer&&this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=ht(t.target)||document.body,t.rootMargin=t.offset?"".concat(t.offset,"px 0px -30%"):t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map(t=>Number.parseFloat(t))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(f.off(this._config.target,Do),f.on(this._config.target,Do,Mo,t=>{var e=this._observableSections.get(t.target.hash);e&&(t.preventDefault(),t=this._rootElement||window,e=e.offsetTop-this._element.offsetTop,t.scrollTo?t.scrollTo({top:e,behavior:"smooth"}):t.scrollTop=e)}))}_getNewObserver(){var t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver(t=>this._observerCallback(t),t)}_observerCallback(t){const e=t=>this._targetLinks.get("#".concat(t.target.id));var n=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},i=(this._rootElement||document.documentElement).scrollTop,o=i>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=i;for(const s of t)if(s.isIntersecting){var r=s.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(o&&r){if(n(s),i)continue;return}o||r||n(s)}else this._activeTarget=null,this._clearActiveClass(e(s))}_initializeTargetsAndObservables(){var t;this._targetLinks=new Map,this._observableSections=new Map;for(const e of y.find(Mo,this._config.target))e.hash&&!ft(e)&&(t=y.findOne(e.hash,this._element),dt(t))&&(this._targetLinks.set(e.hash,e),this._observableSections.set(e.hash,t))}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),(this._activeTarget=t).classList.add(jo),this._activateParents(t),f.trigger(this._element,ko,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))y.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(jo);else for(const e of y.parents(t,".nav, .list-group"))for(const n of y.prev(e,Po))n.classList.add(jo)}_clearActiveClass(t){t.classList.remove(jo);for(const e of y.find("".concat(Mo,".").concat(jo),t))e.classList.remove(jo)}static jQueryInterface(e){return this.each(function(){var t=Ho.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError('No method named "'.concat(e,'"'));t[e]()}})}}t(Ho);v=Ho;const Bo="scrollspy";E="mdb.".concat(Bo),_=".".concat(E);const Wo="activate.bs.scrollspy",Fo="activate".concat(_);g="load".concat(_).concat(".data-api");const qo="collapsible-scrollspy";const zo=".".concat("active"),Qo=".".concat(qo);class Vo extends v{constructor(t,e){super(t,e),this._collapsibles=[],this._init()}dispose(){s.off(this._scrollElement,Wo),super.dispose()}static get NAME(){return Bo}_init(){this._bindActivateEvent(),this._getCollapsibles(),0!==this._collapsibles.length&&(this._showSubsection(),this._hideSubsection())}_getHeight(t){return t.offsetHeight}_hide(t){t=a.findOne("ul",t.parentNode);t.style.overflow="hidden",t.style.height="".concat(0,"px")}_show(t,e){t.style.height=e}_getCollapsibles(){var t=a.find(Qo);t&&t.forEach(t=>{var e=t.parentNode,e=a.findOne("ul",e),n=e.offsetHeight;this._collapsibles.push({element:e,relatedTarget:t.getAttribute("href"),height:"".concat(n,"px")})})}_showSubsection(){a.find(zo).filter(t=>c.hasClass(t,qo)).forEach(e=>{var t=a.findOne("ul",e.parentNode),n=this._collapsibles.find(t=>t.relatedTarget=e.getAttribute("href")).height;this._show(t,n)})}_hideSubsection(){a.find(Qo).filter(t=>!1===c.hasClass(t,"active")).forEach(t=>{this._hide(t)})}_bindActivateEvent(){s.on(this._element,Wo,t=>{this._showSubsection(),this._hideSubsection(),s.trigger(this._element,Fo,{relatedTarget:t.relatedTarget})})}}s.on(window,g,()=>{a.find('[data-mdb-spy="scroll"]').forEach(t=>{var e=Vo.getInstance(t);e||new Vo(t,c.getDataAttributes(t))})}),o(()=>{const t=i();if(t){const e=t.fn[Bo];t.fn[Bo]=Vo.jQueryInterface,t.fn[Bo].Constructor=Vo,t.fn[Bo].noConflict=()=>(t.fn[Bo]=e,Vo.jQueryInterface)}});var Uo=Vo;E=".".concat("bs.tab");const Yo="hide".concat(E),Xo="hidden".concat(E),Ko="show".concat(E),$o="shown".concat(E);_="click".concat(E);const Go="keydown".concat(E);v="load".concat(E);const Zo="ArrowRight",Jo="ArrowDown",tr="active",er="show";g=":not(.dropdown-toggle)";E=".nav-link".concat(g,", .list-group-item").concat(g,', [role="tab"]').concat(g),g='[data-mdb-toggle="tab"], [data-mdb-toggle="pill"], [data-mdb-toggle="list"]';const nr="".concat(E,", ").concat(g),ir=".".concat(tr,'[data-mdb-toggle="tab"], .').concat(tr,'[data-mdb-toggle="pill"], .').concat(tr,'[data-mdb-toggle="list"]');class or extends m{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),f.on(this._element,Go,t=>this._keydown(t)))}static get NAME(){return"tab"}show(){var t,e,n=this._element;this._elemIsActive(n)||(e=(t=this._getActiveElem())?f.trigger(t,Yo,{relatedTarget:n}):null,f.trigger(n,Ko,{relatedTarget:t}).defaultPrevented)||e&&e.defaultPrevented||(this._deactivate(t,n),this._activate(n,t))}_activate(t,e){t&&(t.classList.add(tr),this._activate(l(t)),this._queueCallback(()=>{"tab"!==t.getAttribute("role")?t.classList.add(er):(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),f.trigger(t,$o,{relatedTarget:e}))},t,t.classList.contains("fade")))}_deactivate(t,e){t&&(t.classList.remove(tr),t.blur(),this._deactivate(l(t)),this._queueCallback(()=>{"tab"!==t.getAttribute("role")?t.classList.remove(er):(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),f.trigger(t,Xo,{relatedTarget:e}))},t,t.classList.contains("fade")))}_keydown(t){var e;["ArrowLeft",Zo,"ArrowUp",Jo].includes(t.key)&&(t.stopPropagation(),t.preventDefault(),e=[Zo,Jo].includes(t.key),t=yt(this._getChildren().filter(t=>!ft(t)),t.target,e,!0))&&(t.focus({preventScroll:!0}),or.getOrCreateInstance(t).show())}_getChildren(){return y.find(nr,this._parent)}_getActiveElem(){return this._getChildren().find(t=>this._elemIsActive(t))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const n of e)this._setInitialAttributesOnChild(n)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);var e=this._elemIsActive(t),n=this._getOuterElement(t);t.setAttribute("aria-selected",e),n!==t&&this._setAttributeIfNotExists(n,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){var e=l(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id)&&this._setAttributeIfNotExists(e,"aria-labelledby","#".concat(t.id))}_toggleDropDown(t,n){const i=this._getOuterElement(t);i.classList.contains("dropdown")&&((t=(t,e)=>{t=y.findOne(t,i);t&&t.classList.toggle(e,n)})(".dropdown-toggle",tr),t(".dropdown-menu",er),i.setAttribute("aria-expanded",n))}_setAttributeIfNotExists(t,e,n){t.hasAttribute(e)||t.setAttribute(e,n)}_elemIsActive(t){return t.classList.contains(tr)}_getInnerElement(t){return t.matches(nr)?t:y.findOne(nr,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(e){return this.each(function(){var t=or.getOrCreateInstance(this);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError('No method named "'.concat(e,'"'));t[e]()}})}}f.on(document,_,g,function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),ft(this)||or.getOrCreateInstance(this).show()}),f.on(window,v,()=>{for(const t of y.find(ir))or.getOrCreateInstance(t)}),t(or);E=or;const rr="tab";_="mdb.".concat(rr),g=".".concat(_);const sr="show.bs.tab",ar="shown.bs.tab",cr="show".concat(g),lr="shown".concat(g),ur="hide".concat(g),hr="hidden".concat(g);class dr extends E{dispose(){s.off(this._element,sr),s.off(this._element,ar),super.dispose()}static get NAME(){return rr}show(){var n=this._element;if(!this._elemIsActive(n)){var i=this._getActiveElem();let t=null,e=null;i&&(t=s.trigger(i,"hide.bs.tab",{relatedTarget:n}),e=s.trigger(i,ur,{relatedTarget:n}));var o=s.trigger(n,sr,{relatedTarget:i}),r=s.trigger(n,cr,{relatedTarget:i});o.defaultPrevented&&r.defaultPrevented||t&&t.defaultPrevented&&e&&e.defaultPrevented||(this._deactivate(i,n),this._activate(n,i))}}_activate(t,e){t&&(t.classList.add("active"),this._activate(B(t)),this._queueCallback(()=>{"tab"!==t.getAttribute("role")?t.classList.add("show"):(t.focus(),t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),s.trigger(t,ar,{relatedTarget:e}),s.trigger(t,lr,{relatedTarget:e}))},t,t.classList.contains("fade")))}_deactivate(t,e){t&&(t.classList.remove("active"),t.blur(),this._deactivate(B(t)),this._queueCallback(()=>{"tab"!==t.getAttribute("role")?t.classList.remove("show"):(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),s.trigger(t,"hidden.bs.tab",{relatedTarget:e}),s.trigger(t,hr,{relatedTarget:e}))},t,t.classList.contains("fade")))}}a.find('[data-mdb-toggle="tab"], [data-mdb-toggle="pill"], [data-mdb-toggle="list"]').forEach(t=>{var e=dr.getInstance(t);e||new dr(t)}),o(()=>{const t=i();if(t){const e=t.fn.tab;t.fn.tab=dr.jQueryInterface,t.fn.tab.Constructor=dr,t.fn.tab.noConflict=()=>(t.fn.tab=e,dr.jQueryInterface)}});var fr=dr;const pr="tooltip",gr=[{name:"show"},{name:"shown"},{name:"hide"},{name:"hidden"},{name:"inserted"}];class mr extends w{constructor(t,e){super(t,e),this._init()}dispose(){s.off(this._element,"show.bs.tooltip"),s.off(this._element,"shown.bs.tooltip"),s.off(this._element,"hide.bs.tooltip"),s.off(this._element,"hidden.bs.tooltip"),s.off(this._element,"inserted.bs.tooltip"),super.dispose()}static get NAME(){return pr}_init(){this._bindMdbEvents()}_bindMdbEvents(){s.extend(this._element,gr,pr)}}a.find('[data-mdb-toggle="tooltip"]').forEach(t=>{var e=mr.getInstance(t);e||new mr(t)}),o(()=>{const t=i();if(t){const e=t.fn[pr];t.fn[pr]=mr.jQueryInterface,t.fn[pr].Constructor=mr,t.fn[pr].noConflict=()=>(t.fn[pr]=e,mr.jQueryInterface)}});var _r=mr;v=".".concat("bs.toast");const vr="mouseover".concat(v),br="mouseout".concat(v),yr="focusin".concat(v),wr="focusout".concat(v),Er="hide".concat(v),xr="hidden".concat(v),Cr="show".concat(v),Ar="shown".concat(v),Tr="show",Or="showing",Lr={animation:"boolean",autohide:"boolean",delay:"number"},Sr={animation:!0,autohide:!0,delay:5e3};class Ir extends m{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return Sr}static get DefaultType(){return Lr}static get NAME(){return"toast"}show(){f.trigger(this._element,Cr).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove("hide"),mt(this._element),this._element.classList.add(Tr,Or),this._queueCallback(()=>{this._element.classList.remove(Or),f.trigger(this._element,Ar),this._maybeScheduleHide()},this._element,this._config.animation))}hide(){this.isShown()&&!f.trigger(this._element,Er).defaultPrevented&&(this._element.classList.add(Or),this._queueCallback(()=>{this._element.classList.add("hide"),this._element.classList.remove(Or,Tr),f.trigger(this._element,xr)},this._element,this._config.animation))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(Tr),super.dispose()}isShown(){return this._element.classList.contains(Tr)}_maybeScheduleHide(){!this._config.autohide||this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}e?this._clearTimeout():(t=t.relatedTarget,this._element===t||this._element.contains(t)||this._maybeScheduleHide())}_setListeners(){f.on(this._element,vr,t=>this._onInteraction(t,!0)),f.on(this._element,br,t=>this._onInteraction(t,!1)),f.on(this._element,yr,t=>this._onInteraction(t,!0)),f.on(this._element,wr,t=>this._onInteraction(t,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(e){return this.each(function(){var t=Ir.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError('No method named "'.concat(e,'"'));t[e](this)}})}}be(Ir),t(Ir);_=Ir;const kr="toast",Dr=[{name:"show"},{name:"shown"},{name:"hide"},{name:"hidden"}];class jr extends _{constructor(t,e){super(t,e),this._init()}dispose(){s.off(this._element,"show.bs.toast"),s.off(this._element,"shown.bs.toast"),s.off(this._element,"hide.bs.toast"),s.off(this._element,"hidden.bs.toast"),super.dispose()}static get NAME(){return kr}_init(){this._bindMdbEvents()}_bindMdbEvents(){s.extend(this._element,Dr,kr)}}a.find(".toast").forEach(t=>{var e=jr.getInstance(t);e||new jr(t)}),o(()=>{const t=i();if(t){const e=t.fn[kr];t.fn[kr]=jr.jQueryInterface,t.fn[kr].Constructor=jr,t.fn[kr].noConflict=()=>(t.fn[kr]=e,jr.jQueryInterface)}});var Mr=jr;e(116);const Pr="input",Nr="mdb.input";g="form-outline";const Rr="active",Hr="form-notch",Br="form-notch-leading",Wr="form-notch-middle";const Fr=".".concat(g," input"),qr=".".concat(g," textarea"),zr=".".concat(Hr),Qr=".".concat(Br),Vr=".".concat(Wr),Ur=".".concat("form-helper");class j{constructor(t){this._element=t,this._label=null,this._labelWidth=0,this._labelMarginLeft=0,this._notchLeading=null,this._notchMiddle=null,this._notchTrailing=null,this._initiated=!1,this._helper=null,this._counter=!1,this._counterElement=null,this._maxLength=0,this._leadingIcon=null,this._element&&(r.setData(t,Nr,this),this.init())}static get NAME(){return Pr}get input(){return a.findOne("input",this._element)||a.findOne("textarea",this._element)}init(){this._initiated||(this._getLabelData(),this._applyDivs(),this._applyNotch(),this._activate(),this._getHelper(),this._getCounter(),this._initiated=!0)}update(){this._getLabelData(),this._getNotchData(),this._applyNotch(),this._activate(),this._getHelper(),this._getCounter()}forceActive(){c.addClass(this.input,Rr)}forceInactive(){c.removeClass(this.input,Rr)}dispose(){this._removeBorder(),r.removeData(this._element,Nr),this._element=null}_getLabelData(){this._label=a.findOne("label",this._element),null===this._label?this._showPlaceholder():(this._getLabelWidth(),this._getLabelPositionInInputGroup(),this._toggleDefaultDatePlaceholder())}_getHelper(){this._helper=a.findOne(Ur,this._element)}_getCounter(){this._counter=c.getDataAttribute(this.input,"showcounter"),this._counter&&(this._maxLength=this.input.maxLength,this._showCounter())}_showCounter(){var t;0{var t=this.input.value.length;this._counterElement.innerHTML="".concat(t," / ").concat(this._maxLength)})}_toggleDefaultDatePlaceholder(){var t=0{this._getElements(e);var t=e?e.target:this.input;""!==t.value&&c.addClass(t,Rr),this._toggleDefaultDatePlaceholder(t)})}_getElements(t){var e;t&&(this._element=t.target.parentNode,this._label=a.findOne("label",this._element)),t&&this._label&&(e=this._labelWidth,this._getLabelData(),e!==this._labelWidth)&&(this._notchMiddle=a.findOne(".form-notch-middle",t.target.parentNode),this._notchLeading=a.findOne(Qr,t.target.parentNode),this._applyNotch())}_deactivate(t){t=t?t.target:this.input;""===t.value&&t.classList.remove(Rr),this._toggleDefaultDatePlaceholder(t)}static activate(e){return function(t){e._activate(t)}}static deactivate(e){return function(t){e._deactivate(t)}}static jQueryInterface(n,i){return this.each(function(){let t=r.getData(this,Nr);var e="object"==typeof n&&n;if((t||!/dispose/.test(n))&&(t=t||new j(this,e),"string"==typeof n)){if(void 0===t[n])throw new TypeError('No method named "'.concat(n,'"'));t[n](i)}})}static getInstance(t){return r.getData(t,Nr)}static getOrCreateInstance(t){var e=1{a.find(Fr,t.target).forEach(t=>{t=j.getInstance(t.parentNode);t&&t.update()}),a.find(qr,t.target).forEach(t=>{t=j.getInstance(t.parentNode);t&&t.update()})}),s.on(window,"shown.bs.dropdown",t=>{t=t.target.parentNode.querySelector(".dropdown-menu");t&&(a.find(Fr,t).forEach(t=>{t=j.getInstance(t.parentNode);t&&t.update()}),a.find(qr,t).forEach(t=>{t=j.getInstance(t.parentNode);t&&t.update()}))}),s.on(window,"shown.bs.tab",t=>{let e;e=(t.target.href||c.getDataAttribute(t.target,"target")).split("#")[1];t=a.findOne("#".concat(e));a.find(Fr,t).forEach(t=>{t=j.getInstance(t.parentNode);t&&t.update()}),a.find(qr,t).forEach(t=>{t=j.getInstance(t.parentNode);t&&t.update()})}),a.find(".".concat(g)).map(t=>new j(t)),s.on(window,"reset",t=>{a.find(Fr,t.target).forEach(t=>{t=j.getInstance(t.parentNode);t&&t.forceInactive()}),a.find(qr,t.target).forEach(t=>{t=j.getInstance(t.parentNode);t&&t.forceInactive()})}),s.on(window,"onautocomplete",t=>{var e=j.getInstance(t.target.parentNode);e&&t.cancelable&&e.forceActive()}),o(()=>{const t=i();if(t){const e=t.fn[Pr];t.fn[Pr]=j.jQueryInterface,t.fn[Pr].Constructor=j,t.fn[Pr].noConflict=()=>(t.fn[Pr]=e,j.jQueryInterface)}});var Yr=j;E=".".concat("bs.collapse");const Xr="show".concat(E),Kr="shown".concat(E),$r="hide".concat(E),Gr="hidden".concat(E);w="click".concat(E).concat(".data-api");const Zr="show",Jr="collapse",ts="collapsing",es=":scope .".concat(Jr," .").concat(Jr),ns='[data-mdb-toggle="collapse"]',is={parent:null,toggle:!0},os={parent:"(null|element)",toggle:"boolean"};class rs extends m{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];for(const o of y.find(ns)){var n=lt(o),i=y.find(n).filter(t=>t===this._element);null!==n&&i.length&&this._triggerArray.push(o)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return is}static get DefaultType(){return os}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(!this._isTransitioning&&!this._isShown()){let t=[];if(!(t=this._config.parent?this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter(t=>t!==this._element).map(t=>rs.getOrCreateInstance(t,{toggle:!1})):t).length||!t[0]._isTransitioning){var e=f.trigger(this._element,Xr);if(!e.defaultPrevented){for(const i of t)i.hide();const n=this._getDimension();this._element.classList.remove(Jr),this._element.classList.add(ts),this._element.style[n]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;e=n[0].toUpperCase()+n.slice(1),e="scroll".concat(e);this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove(ts),this._element.classList.add(Jr,Zr),this._element.style[n]="",f.trigger(this._element,Kr)},this._element,!0),this._element.style[n]="".concat(this._element[e],"px")}}}}hide(){if(!this._isTransitioning&&this._isShown()){var t=f.trigger(this._element,$r);if(!t.defaultPrevented){t=this._getDimension();this._element.style[t]="".concat(this._element.getBoundingClientRect()[t],"px"),mt(this._element),this._element.classList.add(ts),this._element.classList.remove(Jr,Zr);for(const n of this._triggerArray){var e=l(n);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([n],!1)}this._isTransitioning=!0;this._element.style[t]="",this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove(ts),this._element.classList.add(Jr),f.trigger(this._element,Gr)},this._element,!0)}}}_isShown(){return(0!e.includes(t))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const n of t)n.classList.toggle("collapsed",!e),n.setAttribute("aria-expanded",e)}static jQueryInterface(e){const n={};return"string"==typeof e&&/show|hide/.test(e)&&(n.toggle=!1),this.each(function(){var t=rs.getOrCreateInstance(this,n);if("string"==typeof e){if(void 0===t[e])throw new TypeError('No method named "'.concat(e,'"'));t[e]()}})}}f.on(document,w,ns,function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();t=lt(this);for(const e of y.find(t))rs.getOrCreateInstance(e,{toggle:!1}).toggle()}),t(rs);v=rs;const ss="collapse",as=[{name:"show"},{name:"shown"},{name:"hide"},{name:"hidden"}];class cs extends v{constructor(t){super(t,1{t=H(t);a.find(t).forEach(t=>{cs.getOrCreateInstance(t,{toggle:!1})})}),o(()=>{const t=i();if(t){const e=t.fn[ss];t.fn[ss]=cs.jQueryInterface,t.fn[ss].Constructor=cs,t.fn[ss].noConflict=()=>(t.fn[ss]=e,cs.jQueryInterface)}});var ls=cs;const us="dropdown";_=".".concat("bs.dropdown"),e=".data-api";const hs="ArrowDown",ds="hide".concat(_),fs="hidden".concat(_),ps="show".concat(_),gs="shown".concat(_);g="click".concat(_).concat(e),E="keydown".concat(_).concat(e),w="keyup".concat(_).concat(e);const ms="show",_s='[data-mdb-toggle="dropdown"]:not(.disabled):not(:disabled)',vs="".concat(_s,".").concat(ms),bs=".dropdown-menu",ys=h()?"top-end":"top-start",ws=h()?"top-start":"top-end",Es=h()?"bottom-end":"bottom-start",xs=h()?"bottom-start":"bottom-end",Cs=h()?"left-start":"right-start",As=h()?"right-start":"left-start",Ts={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},Os={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class M extends m{constructor(t,e){super(t,e),this._popper=null,this._parent=this._element.parentNode,this._menu=y.next(this._element,bs)[0]||y.prev(this._element,bs)[0]||y.findOne(bs,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return Ts}static get DefaultType(){return Os}static get NAME(){return us}toggle(){return this._isShown()?this.hide():this.show()}show(){if(!ft(this._element)&&!this._isShown()){var t={relatedTarget:this._element},e=f.trigger(this._element,ps,t);if(!e.defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const n of[].concat(...document.body.children))f.on(n,"mouseover",gt);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(ms),this._element.classList.add(ms),f.trigger(this._element,gs,t)}}}hide(){var t;!ft(this._element)&&this._isShown()&&(t={relatedTarget:this._element},this._completeHide(t))}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){var e=f.trigger(this._element,ds,t);if(!e.defaultPrevented){if("ontouchstart"in document.documentElement)for(const n of[].concat(...document.body.children))f.off(n,"mouseover",gt);this._popper&&this._popper.destroy(),this._menu.classList.remove(ms),this._element.classList.remove(ms),this._element.setAttribute("aria-expanded","false"),p.removeDataAttribute(this._menu,"popper"),f.trigger(this._element,fs,t)}}_getConfig(t){if("object"!=typeof(t=super._getConfig(t)).reference||u(t.reference)||"function"==typeof t.reference.getBoundingClientRect)return t;throw new TypeError("".concat(us.toUpperCase(),': Option "reference" provided type "object" without a required "getBoundingClientRect" method.'))}_createPopper(){if(void 0===n)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let t=this._element;"parent"===this._config.reference?t=this._parent:u(this._config.reference)?t=ht(this._config.reference):"object"==typeof this._config.reference&&(t=this._config.reference);var e=this._getPopperConfig();this._popper=no(t,this._menu,e)}_isShown(){return this._menu.classList.contains(ms)}_getPlacement(){var t,e=this._parent;return e.classList.contains("dropend")?Cs:e.classList.contains("dropstart")?As:e.classList.contains("dropup-center")?"top":e.classList.contains("dropdown-center")?"bottom":(t="end"===getComputedStyle(this._menu).getPropertyValue("--mdb-position").trim(),e.classList.contains("dropup")?t?ws:ys:t?xs:Es)}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const e=this._config["offset"];return"string"==typeof e?e.split(",").map(t=>Number.parseInt(t,10)):"function"==typeof e?t=>e(t,this._element):e}_getPopperConfig(){var t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return!this._inNavbar&&"static"!==this._config.display||(p.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_selectMenuItem(t){var{key:t,target:e}=t,n=y.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter(t=>dt(t));n.length&&yt(n,e,t===hs,!n.includes(e)).focus()}static jQueryInterface(e){return this.each(function(){var t=M.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError('No method named "'.concat(e,'"'));t[e]()}})}static clearMenus(t){if(2!==t.button&&("keyup"!==t.type||"Tab"===t.key))for(const o of y.find(vs)){var e,n,i=M.getInstance(o);i&&!1!==i._config.autoClose&&(e=(n=t.composedPath()).includes(i._menu),n.includes(i._element)||"inside"===i._config.autoClose&&!e||"outside"===i._config.autoClose&&e||i._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName))||(n={relatedTarget:i._element},"click"===t.type&&(n.clickEvent=t),i._completeHide(n)))}}static dataApiKeydownHandler(t){var e=/input|textarea/i.test(t.target.tagName),n="Escape"===t.key,i=["ArrowUp",hs].includes(t.key);!i&&!n||e&&!n||(t.preventDefault(),e=this.matches(_s)?this:y.prev(this,_s)[0]||y.next(this,_s)[0]||y.findOne(_s,t.delegateTarget.parentNode),n=M.getOrCreateInstance(e),i?(t.stopPropagation(),n.show(),n._selectMenuItem(t)):n._isShown()&&(t.stopPropagation(),n.hide(),e.focus()))}}f.on(document,E,_s,M.dataApiKeydownHandler),f.on(document,E,bs,M.dataApiKeydownHandler),f.on(document,g,M.clearMenus),f.on(document,w,M.clearMenus),f.on(document,g,_s,function(t){t.preventDefault(),M.getOrCreateInstance(this).toggle()}),t(M);v=M;const Ls="dropdown";_="mdb.".concat(Ls),e=".".concat(_);const Ss={offset:[0,2],flip:!0,boundary:"clippingParents",reference:"toggle",display:"dynamic",popperConfig:null,dropdownAnimation:"on"},Is={offset:"(array|string|function)",flip:"boolean",boundary:"(string|element)",reference:"(string|element|object)",display:"string",popperConfig:"(null|object|function)",dropdownAnimation:"string"},ks="hide.bs.dropdown",Ds="hidden.bs.dropdown",js="show.bs.dropdown",Ms="shown.bs.dropdown",Ps="hide".concat(e),Ns="hidden".concat(e),Rs="show".concat(e),Hs="shown".concat(e),Bs="animation",Ws="fade-in",Fs="fade-out";class qs extends v{constructor(t,e){super(t,e),this._config=this._getConfig(e),this._menuStyle="",this._popperPlacement="",this._mdbPopperConfig="";t=window.matchMedia("(prefers-reduced-motion: reduce)").matches;"on"!==this._config.dropdownAnimation||t||this._init()}dispose(){s.off(this._element,js),s.off(this._parent,Ms),s.off(this._parent,ks),s.off(this._parent,Ds),super.dispose()}static get NAME(){return Ls}_init(){this._bindShowEvent(),this._bindShownEvent(),this._bindHideEvent(),this._bindHiddenEvent()}_getConfig(t){t={...Ss,...c.getDataAttributes(this._element),...t};return W(Ls,t,Is),t}_getOffset(){const e=this._config["offset"];return"string"==typeof e?e.split(",").map(t=>Number.parseInt(t,10)):"function"==typeof e?t=>e(t,this._element):e}_getPopperConfig(){var t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{altBoundary:this._config.flip,boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return"static"===this._config.display&&(c.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_bindShowEvent(){s.on(this._element,js,t=>{s.trigger(this._element,Rs,{relatedTarget:t.relatedTarget}).defaultPrevented?t.preventDefault():this._dropdownAnimationStart("show")})}_bindShownEvent(){s.on(this._parent,Ms,t=>{s.trigger(this._parent,Hs,{relatedTarget:t.relatedTarget}).defaultPrevented&&t.preventDefault()})}_bindHideEvent(){s.on(this._parent,ks,t=>{s.trigger(this._parent,Ps,{relatedTarget:t.relatedTarget}).defaultPrevented?t.preventDefault():(this._menuStyle=this._menu.style.cssText,this._popperPlacement=this._menu.getAttribute("data-popper-placement"),this._mdbPopperConfig=this._menu.getAttribute("data-mdb-popper"))})}_bindHiddenEvent(){s.on(this._parent,Ds,t=>{s.trigger(this._parent,Ns,{relatedTarget:t.relatedTarget}).defaultPrevented?t.preventDefault():("static"!==this._config.display&&""!==this._menuStyle&&(this._menu.style.cssText=this._menuStyle),this._menu.setAttribute("data-popper-placement",this._popperPlacement),this._menu.setAttribute("data-mdb-popper",this._mdbPopperConfig),this._dropdownAnimationStart("hide"))})}_dropdownAnimationStart(t){"show"===t?(this._menu.classList.add(Bs,Ws),this._menu.classList.remove(Fs)):(this._menu.classList.add(Bs,Fs),this._menu.classList.remove(Ws)),this._bindAnimationEnd()}_bindAnimationEnd(){s.one(this._menu,"animationend",()=>{this._menu.classList.remove(Bs,Fs,Ws)})}}a.find('[data-mdb-toggle="dropdown"]').forEach(t=>{var e=qs.getInstance(t);e||new qs(t)}),o(()=>{const t=i();if(t){const e=t.fn[Ls];t.fn[Ls]=qs.jQueryInterface,t.fn[Ls].Constructor=qs,t.fn[Ls].noConflict=()=>(t.fn[Ls]=e,qs.jQueryInterface)}});var zs=qs;const Qs="ripple",Vs="mdb.ripple",P="ripple-surface",Us="ripple-wave",Ys="input-wrapper",Xs=[".btn",".ripple"],Ks="ripple-surface-unbound",$s=[0,0,0],Gs=["primary","secondary","success","danger","warning","info","light","dark"],Zs={rippleCentered:!1,rippleColor:"",rippleDuration:"500ms",rippleRadius:0,rippleUnbound:!1},Js={rippleCentered:"boolean",rippleColor:"string",rippleDuration:"string",rippleRadius:"number",rippleUnbound:"boolean"};class ta{constructor(t,e){this._element=t,this._options=this._getConfig(e),this._element&&(r.setData(t,Vs,this),c.addClass(this._element,P)),this._clickHandler=this._createRipple.bind(this),this._rippleTimer=null,this._isMinWidthSet=!1,this._rippleInSpan=!1,this.init()}static get NAME(){return Qs}init(){this._addClickEvent(this._element)}dispose(){r.removeData(this._element,Vs),s.off(this._element,"click",this._clickHandler),this._element=null,this._options=null}_autoInit(e){if(Xs.forEach(t=>{a.closest(e.target,t)&&(this._element=a.closest(e.target,t))}),this._options=this._getConfig(),"input"===this._element.tagName.toLowerCase()){var t=this._element.parentNode;if(this._rippleInSpan=!0,"span"===t.tagName.toLowerCase()&&t.classList.contains(P))this._element=t;else{var n=getComputedStyle(this._element).boxShadow;const o=this._element;var i=document.createElement("span");o.classList.contains("btn-block")&&(i.style.display="block"),s.one(i,"mouseup",t=>{0===t.button&&o.click()}),i.classList.add(P,Ys),c.addStyle(i,{border:0,"box-shadow":n}),t.replaceChild(i,this._element),i.appendChild(this._element),this._element=i}this._element.focus()}this._element.style.minWidth||(c.style(this._element,{"min-width":"".concat(getComputedStyle(this._element).width)}),this._isMinWidthSet=!0),c.addClass(this._element,P),this._createRipple(e)}_addClickEvent(t){s.on(t,"mousedown",this._clickHandler)}_getEventLayer(t){return{layerX:Math.round(t.clientX-t.target.getBoundingClientRect().x),layerY:Math.round(t.clientY-t.target.getBoundingClientRect().y)}}_createRipple(t){var e,n,i,o,r,s,a;null!==this._element&&(c.hasClass(this._element,P)||c.addClass(this._element,P),{layerX:t,layerY:e}=this._getEventLayer(t),t=t,e=e,n=this._element.offsetHeight,a=this._element.offsetWidth,i=this._durationToMsNumber(this._options.rippleDuration),o={offsetX:this._options.rippleCentered?n/2:t,offsetY:this._options.rippleCentered?a/2:e,height:n,width:a},o=this._getDiameter(o),r=this._options.rippleRadius||o/2,s={delay:.5*i,duration:i-.5*i},a={left:this._options.rippleCentered?"".concat(a/2-r,"px"):"".concat(t-r,"px"),top:this._options.rippleCentered?"".concat(n/2-r,"px"):"".concat(e-r,"px"),height:"".concat(2*this._options.rippleRadius||o,"px"),width:"".concat(2*this._options.rippleRadius||o,"px"),transitionDelay:"0s, ".concat(s.delay,"ms"),transitionDuration:"".concat(i,"ms, ").concat(s.duration,"ms")},t=F("div"),this._createHTMLRipple({wrapper:this._element,ripple:t,styles:a}),this._removeHTMLRipple({ripple:t,duration:i}))}_createHTMLRipple(t){let{wrapper:e,ripple:n,styles:i}=t;Object.keys(i).forEach(t=>n.style[t]=i[t]),n.classList.add(Us),""!==this._options.rippleColor&&(this._removeOldColorClasses(e),this._addColor(n,e)),this._toggleUnbound(e),this._appendRipple(n,e)}_removeHTMLRipple(t){let{ripple:e,duration:n}=t;this._rippleTimer&&(clearTimeout(this._rippleTimer),this._rippleTimer=null),this._rippleTimer=setTimeout(()=>{e&&(e.remove(),this._element)&&(a.find(".".concat(Us),this._element).forEach(t=>{t.remove()}),this._isMinWidthSet&&(c.style(this._element,{"min-width":""}),this._isMinWidthSet=!1),this._rippleInSpan&&this._element.classList.contains(Ys)?this._removeWrapperSpan():c.removeClass(this._element,P))},n)}_removeWrapperSpan(){var t=this._element.firstChild;this._element.replaceWith(t),this._element=t,this._element.focus(),this._rippleInSpan=!1}_durationToMsNumber(t){return Number(t.replace("ms","").replace("s","000"))}_getConfig(){var t=0Math.sqrt(t**2+e**2),a=e===n/2&&t===i/2;const c=!0==o&&!1==r,l=!0==o&&!0==r,u=!1==o&&!0==r,h=!1==o&&!1==r;o={topLeft:s(t,e),topRight:s(i-t,e),bottomLeft:s(t,n-e),bottomRight:s(i-t,n-e)};let d=0;return a||h?d=o.topLeft:u?d=o.topRight:l?d=o.bottomRight:c&&(d=o.bottomLeft),2*d}_appendRipple(t,e){e.appendChild(t),setTimeout(()=>{c.addClass(t,"active")},50)}_toggleUnbound(t){!0===this._options.rippleUnbound?c.addClass(t,Ks):t.classList.remove(Ks)}_addColor(t,e){Gs.find(t=>t===this._options.rippleColor.toLowerCase())?c.addClass(e,"".concat(P,"-").concat(this._options.rippleColor.toLowerCase())):(e=this._colorToRGB(this._options.rippleColor).join(","),e="rgba({{color}}, 0.2) 0, rgba({{color}}, 0.3) 40%, rgba({{color}}, 0.4) 50%, rgba({{color}}, 0.5) 60%, rgba({{color}}, 0) 70%".split("{{color}}").join("".concat(e)),t.style.backgroundImage="radial-gradient(circle, ".concat(e,")"))}_removeOldColorClasses(e){var t=new RegExp("".concat(P,"-[a-z]+"),"gi");(e.classList.value.match(t)||[]).forEach(t=>{e.classList.remove(t)})}_colorToRGB(t){var e,n,i;return"transparent"===t.toLowerCase()?$s:"#"===t[0]?((e=t).length<7&&(e="#".concat(e[1]).concat(e[1]).concat(e[2]).concat(e[2]).concat(e[3]).concat(e[3])),[parseInt(e.substr(1,2),16),parseInt(e.substr(3,2),16),parseInt(e.substr(5,2),16)]):(-1===t.indexOf("rgb")&&(e=t,n=document.body.appendChild(document.createElement("fictum")),i="rgb(1, 2, 3)",n.style.color=i,t=n.style.color!==i||(n.style.color=e,n.style.color===i)||""===n.style.color?$s:(e=getComputedStyle(n).color,document.body.removeChild(n),e)),0===t.indexOf("rgb")?((i=(i=t).match(/[.\d]+/g).map(t=>+Number(t))).length=3,i):$s)}static autoInitial(e){return function(t){e._autoInit(t)}}static jQueryInterface(t){return this.each(function(){return r.getData(this,Vs)?null:new ta(this,t)})}static getInstance(t){return r.getData(t,Vs)}static getOrCreateInstance(t){var e=1{s.one(document,"mousedown",t,ta.autoInitial(new ta))}),o(()=>{const t=i();if(t){const e=t.fn[Qs];t.fn[Qs]=ta.jQueryInterface,t.fn[Qs].Constructor=ta,t.fn[Qs].noConflict=()=>(t.fn[Qs]=e,ta.jQueryInterface)}});var ea=ta;const na="range",ia="mdb.range";const oa="thumb-active";const ra=".".concat("thumb-value"),sa=".".concat("thumb");m=".".concat("range");class aa{constructor(t){this._element=t,this._initiated=!1,this._thumb=null,this._element&&(r.setData(t,ia,this),this.init())}static get NAME(){return na}get rangeInput(){return a.findOne("input[type=range]",this._element)}init(){this._initiated||(this._addThumb(),this._thumbUpdate(),this._handleEvents(),this._initiated=!0)}dispose(){this._disposeEvents(),r.removeData(this._element,ia),this._element=null,this._thumb=null}_addThumb(){var t=F("span");c.addClass(t,"thumb"),t.innerHTML='',this._element.append(t),this._thumb=a.findOne(sa,this._element)}_handleEvents(){s.on(this.rangeInput,"mousedown",()=>this._showThumb()),s.on(this.rangeInput,"mouseup",()=>this._hideThumb()),s.on(this.rangeInput,"touchstart",()=>this._showThumb()),s.on(this.rangeInput,"touchend",()=>this._hideThumb()),s.on(this.rangeInput,"input",()=>this._thumbUpdate())}_disposeEvents(){s.off(this.rangeInput,"mousedown",this._showThumb),s.off(this.rangeInput,"mouseup",this._hideThumb),s.off(this.rangeInput,"touchstart",this._showThumb),s.off(this.rangeInput,"touchend",this._hideThumb),s.off(this.rangeInput,"input",this._thumbUpdate)}_showThumb(){c.addClass(this._thumb,oa)}_hideThumb(){c.removeClass(this._thumb,oa)}_thumbUpdate(){var t=this.rangeInput,e=t.value,n=t.min||0,t=t.max||100,e=(a.findOne(ra,this._thumb).textContent=e,Number(100*(e-n)/(t-n)));c.style(this._thumb,{left:"calc(".concat(e,"% + (").concat(8-.15*e,"px))")})}static getInstance(t){return r.getData(t,ia)}static getOrCreateInstance(t){var e=1new aa(t)),o(()=>{const t=i();if(t){const e=t.fn[na];t.fn[na]=aa.jQueryInterface,t.fn[na].Constructor=aa,t.fn[na].noConflict=()=>(t.fn[na]=e,aa.jQueryInterface)}});var ca=aa}],i={},o.m=n,o.c=i,o.d=function(t,e,n){o.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},o.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)o.d(n,i,function(t){return e[t]}.bind(null,i));return n},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,"a",e),e},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.p="",o(o.s=119);function o(t){var e;return(i[t]||(e=i[t]={i:t,l:!1,exports:{}},n[t].call(e.exports,e,e.exports,o),e.l=!0,e)).exports}var n,i}); -//# sourceMappingURL=mdb.min.js.map \ No newline at end of file diff --git a/assets/js/mdb.min.js.map b/assets/js/mdb.min.js.map deleted file mode 100644 index 7d974c78f0c5..000000000000 --- a/assets/js/mdb.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/core-js/internals/global.js","webpack:///./node_modules/core-js/internals/fails.js","webpack:///./node_modules/core-js/internals/well-known-symbol.js","webpack:///./node_modules/core-js/internals/export.js","webpack:///./node_modules/core-js/internals/has.js","webpack:///./node_modules/core-js/internals/is-object.js","webpack:///./node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///./node_modules/core-js/internals/an-object.js","webpack:///./node_modules/core-js/internals/object-define-property.js","webpack:///./node_modules/core-js/internals/descriptors.js","webpack:///./node_modules/core-js/internals/to-indexed-object.js","webpack:///./node_modules/core-js/internals/to-length.js","webpack:///./node_modules/core-js/internals/to-integer.js","webpack:///./node_modules/core-js/internals/require-object-coercible.js","webpack:///./node_modules/core-js/internals/redefine.js","webpack:///./node_modules/core-js/internals/shared.js","webpack:///./node_modules/core-js/internals/to-object.js","webpack:///./node_modules/core-js/internals/create-property-descriptor.js","webpack:///./node_modules/core-js/internals/classof-raw.js","webpack:///./node_modules/core-js/internals/to-primitive.js","webpack:///./node_modules/core-js/internals/hidden-keys.js","webpack:///./node_modules/core-js/internals/internal-state.js","webpack:///./node_modules/core-js/internals/shared-key.js","webpack:///./node_modules/core-js/internals/array-iteration.js","webpack:///./node_modules/core-js/internals/is-pure.js","webpack:///./node_modules/core-js/internals/set-global.js","webpack:///./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names.js","webpack:///./node_modules/core-js/internals/uid.js","webpack:///./node_modules/core-js/internals/is-array.js","webpack:///./node_modules/core-js/internals/enum-bug-keys.js","webpack:///./node_modules/core-js/internals/indexed-object.js","webpack:///./node_modules/core-js/internals/to-absolute-index.js","webpack:///./node_modules/core-js/internals/array-method-has-species-support.js","webpack:///./node_modules/core-js/internals/object-create.js","webpack:///./node_modules/core-js/internals/get-built-in.js","webpack:///./node_modules/core-js/internals/ie8-dom-define.js","webpack:///./node_modules/core-js/internals/function-to-string.js","webpack:///./node_modules/core-js/internals/document-create-element.js","webpack:///./node_modules/core-js/internals/object-keys-internal.js","webpack:///./node_modules/core-js/internals/iterators.js","webpack:///./node_modules/core-js/internals/array-includes.js","webpack:///./node_modules/core-js/internals/set-to-string-tag.js","webpack:///./node_modules/core-js/internals/array-species-create.js","webpack:///./node_modules/core-js/internals/sloppy-array-method.js","webpack:///./node_modules/core-js/internals/regexp-exec.js","webpack:///./node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///./node_modules/core-js/internals/copy-constructor-properties.js","webpack:///./node_modules/core-js/internals/path.js","webpack:///./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///./node_modules/core-js/internals/native-symbol.js","webpack:///./node_modules/core-js/internals/is-forced.js","webpack:///./node_modules/core-js/internals/object-keys.js","webpack:///./node_modules/core-js/internals/a-function.js","webpack:///./node_modules/core-js/modules/es.array.iterator.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./node_modules/core-js/internals/array-buffer-view-core.js","webpack:///./node_modules/core-js/internals/create-property.js","webpack:///./node_modules/core-js/internals/add-to-unscopables.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/core-js/internals/object-get-prototype-of.js","webpack:///./node_modules/core-js/internals/shared-store.js","webpack:///./node_modules/core-js/internals/native-weak-map.js","webpack:///./node_modules/core-js/internals/own-keys.js","webpack:///./node_modules/core-js/internals/wrapped-well-known-symbol.js","webpack:///./node_modules/core-js/internals/define-well-known-symbol.js","webpack:///./node_modules/core-js/internals/define-iterator.js","webpack:///./node_modules/core-js/internals/iterators-core.js","webpack:///./node_modules/core-js/internals/regexp-flags.js","webpack:///./node_modules/core-js/internals/string-multibyte.js","webpack:///./node_modules/core-js/internals/object-set-prototype-of.js","webpack:///./node_modules/core-js/modules/es.object.to-string.js","webpack:///./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack:///./node_modules/core-js/internals/regexp-exec-abstract.js","webpack:///./node_modules/core-js/internals/whitespaces.js","webpack:///./node_modules/core-js/internals/bind-context.js","webpack:///./node_modules/core-js/internals/classof.js","webpack:///./node_modules/core-js/internals/advance-string-index.js","webpack:///./node_modules/core-js/modules/es.symbol.js","webpack:///./node_modules/core-js/internals/object-define-properties.js","webpack:///./node_modules/core-js/internals/html.js","webpack:///./node_modules/core-js/modules/es.symbol.description.js","webpack:///./node_modules/core-js/modules/es.symbol.iterator.js","webpack:///./node_modules/core-js/modules/es.regexp.exec.js","webpack:///./node_modules/core-js/modules/es.string.iterator.js","webpack:///./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack:///./node_modules/core-js/internals/dom-iterables.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///./node_modules/core-js/internals/a-possible-prototype.js","webpack:///./node_modules/core-js/internals/object-to-string.js","webpack:///./node_modules/core-js/internals/string-trim.js","webpack:///./node_modules/core-js/modules/es.array.index-of.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names-external.js","webpack:///./node_modules/core-js/internals/create-iterator-constructor.js","webpack:///./node_modules/core-js/internals/correct-prototype-getter.js","webpack:///./node_modules/core-js/modules/es.array.map.js","webpack:///./node_modules/core-js/modules/es.array.slice.js","webpack:///./node_modules/core-js/modules/es.array.splice.js","webpack:///./node_modules/core-js/modules/es.string.replace.js","webpack:///./node_modules/core-js/modules/es.array.filter.js","webpack:///./node_modules/core-js/modules/es.array.find.js","webpack:///./node_modules/core-js/modules/es.array.join.js","webpack:///./node_modules/core-js/modules/es.array.concat.js","webpack:///./node_modules/core-js/internals/species-constructor.js","webpack:///./node_modules/core-js/modules/es.date.to-string.js","webpack:///./node_modules/core-js/modules/es.parse-float.js","webpack:///./node_modules/core-js/modules/es.regexp.to-string.js","webpack:///./node_modules/core-js/internals/array-reduce.js","webpack:///./node_modules/core-js/internals/parse-float.js","webpack:///./node_modules/core-js/modules/es.string.split.js","webpack:///./node_modules/core-js/internals/is-regexp.js","webpack:///./node_modules/core-js/internals/array-for-each.js","webpack:///./node_modules/core-js/internals/inherit-if-required.js","webpack:///./node_modules/core-js/modules/es.string.match.js","webpack:///./node_modules/core-js/modules/es.number.to-fixed.js","webpack:///./node_modules/core-js/internals/this-number-value.js","webpack:///./node_modules/core-js/internals/string-repeat.js","webpack:///./node_modules/core-js/modules/es.array.for-each.js","webpack:///./node_modules/core-js/modules/es.array.reduce.js","webpack:///./node_modules/core-js/modules/es.array.reverse.js","webpack:///./node_modules/core-js/modules/es.array.sort.js","webpack:///./node_modules/core-js/modules/es.number.constructor.js","webpack:///./node_modules/core-js/modules/es.parse-int.js","webpack:///./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack:///./node_modules/core-js/internals/set-species.js","webpack:///./node_modules/core-js/modules/es.function.name.js","webpack:///./node_modules/core-js/internals/parse-int.js","webpack:///./node_modules/core-js/modules/es.regexp.constructor.js","webpack:///./node_modules/core-js/internals/array-last-index-of.js","webpack:///./node_modules/core-js/internals/array-fill.js","webpack:///./src/js/free/forms-free.js","webpack:///./src/js/free/scrolling-navbar.js","webpack:///./src/js/free/treeview.js","webpack:///./src/js/free/wow.js","webpack:///./node_modules/core-js/modules/es.array.fill.js","webpack:///./node_modules/core-js/modules/es.number.max-safe-integer.js","webpack:///./node_modules/core-js/modules/es.number.min-safe-integer.js","webpack:///./node_modules/core-js/modules/es.object.keys.js","webpack:///./node_modules/core-js/internals/array-buffer.js","webpack:///./node_modules/core-js/internals/an-instance.js","webpack:///./node_modules/core-js/internals/to-index.js","webpack:///./node_modules/core-js/internals/to-offset.js","webpack:///./src/js/index-free.js","webpack:///./src/js/vendor/free/bs-custom-file-input.js","webpack:///./src/js/vendor/free/chart.js","webpack:///./node_modules/core-js/modules/es.array.find-index.js","webpack:///./node_modules/core-js/modules/es.math.log10.js","webpack:///./node_modules/core-js/modules/es.math.sign.js","webpack:///./node_modules/core-js/internals/math-sign.js","webpack:///./node_modules/core-js/modules/es.number.epsilon.js","webpack:///./src/js/vendor/free/chartjs-datalabels.js","webpack:///./node_modules/core-js/modules/es.string.anchor.js","webpack:///./node_modules/core-js/internals/create-html.js","webpack:///./node_modules/core-js/internals/forced-string-html-method.js","webpack:///external \"chart\"","webpack:///./src/js/vendor/free/enhanced-modals.js","webpack:///./src/js/vendor/free/jquery.easing.js","webpack:///./src/js/vendor/free/velocity.js","webpack:///./node_modules/core-js/modules/es.array-buffer.slice.js","webpack:///./node_modules/core-js/internals/redefine-all.js","webpack:///./node_modules/core-js/modules/es.typed-array.float32-array.js","webpack:///./node_modules/core-js/internals/typed-array-constructor.js","webpack:///./node_modules/core-js/internals/typed-arrays-constructors-requires-wrappers.js","webpack:///./node_modules/core-js/internals/check-correctness-of-iteration.js","webpack:///./node_modules/core-js/internals/to-positive-integer.js","webpack:///./node_modules/core-js/internals/typed-array-from.js","webpack:///./node_modules/core-js/internals/get-iterator-method.js","webpack:///./node_modules/core-js/internals/is-array-iterator-method.js","webpack:///./node_modules/core-js/modules/es.typed-array.copy-within.js","webpack:///./node_modules/core-js/internals/array-copy-within.js","webpack:///./node_modules/core-js/modules/es.typed-array.every.js","webpack:///./node_modules/core-js/modules/es.typed-array.fill.js","webpack:///./node_modules/core-js/modules/es.typed-array.filter.js","webpack:///./node_modules/core-js/modules/es.typed-array.find.js","webpack:///./node_modules/core-js/modules/es.typed-array.find-index.js","webpack:///./node_modules/core-js/modules/es.typed-array.for-each.js","webpack:///./node_modules/core-js/modules/es.typed-array.includes.js","webpack:///./node_modules/core-js/modules/es.typed-array.index-of.js","webpack:///./node_modules/core-js/modules/es.typed-array.iterator.js","webpack:///./node_modules/core-js/modules/es.typed-array.join.js","webpack:///./node_modules/core-js/modules/es.typed-array.last-index-of.js","webpack:///./node_modules/core-js/modules/es.typed-array.map.js","webpack:///./node_modules/core-js/modules/es.typed-array.reduce.js","webpack:///./node_modules/core-js/modules/es.typed-array.reduce-right.js","webpack:///./node_modules/core-js/modules/es.typed-array.reverse.js","webpack:///./node_modules/core-js/modules/es.typed-array.set.js","webpack:///./node_modules/core-js/modules/es.typed-array.slice.js","webpack:///./node_modules/core-js/modules/es.typed-array.some.js","webpack:///./node_modules/core-js/modules/es.typed-array.sort.js","webpack:///./node_modules/core-js/modules/es.typed-array.subarray.js","webpack:///./node_modules/core-js/modules/es.typed-array.to-locale-string.js","webpack:///./node_modules/core-js/modules/es.typed-array.to-string.js","webpack:///./src/js/vendor/free/waves.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","it","Math","check","globalThis","window","self","global","Function","exec","error","shared","uid","NATIVE_SYMBOL","store","getOwnPropertyDescriptor","f","createNonEnumerableProperty","redefine","setGlobal","copyConstructorProperties","isForced","options","source","target","targetProperty","sourceProperty","descriptor","TARGET","GLOBAL","STATIC","stat","noTargetGet","forced","undefined","sham","DESCRIPTORS","definePropertyModule","createPropertyDescriptor","isObject","TypeError","String","IE8_DOM_DEFINE","anObject","toPrimitive","nativeDefineProperty","O","P","Attributes","fails","a","IndexedObject","requireObjectCoercible","toInteger","min","argument","ceil","floor","isNaN","has","nativeFunctionToString","InternalStateModule","getInternalState","enforceInternalState","enforce","TEMPLATE","split","unsafe","simple","join","this","IS_PURE","push","version","copyright","bitmap","configurable","writable","toString","slice","input","PREFERRED_STRING","fn","val","valueOf","set","NATIVE_WEAK_MAP","objectHas","sharedKey","hiddenKeys","WeakMap","wmget","wmhas","wmset","metadata","STATE","getterFor","TYPE","state","type","keys","toObject","toLength","arraySpeciesCreate","createMethod","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","$this","callbackfn","that","specificCreate","result","boundFunction","length","index","forEach","map","filter","some","every","find","findIndex","propertyIsEnumerableModule","toIndexedObject","nativeGetOwnPropertyDescriptor","internalObjectKeys","concat","getOwnPropertyNames","id","postfix","random","classof","Array","isArray","arg","propertyIsEnumerable","max","integer","SPECIES","wellKnownSymbol","METHOD_NAME","array","constructor","foo","Boolean","defineProperties","enumBugKeys","html","documentCreateElement","IE_PROTO","Empty","createDict","iframeDocument","iframe","style","display","appendChild","src","contentWindow","document","open","write","lt","close","F","Properties","path","aFunction","variable","namespace","method","arguments","createElement","EXISTS","indexOf","names","toAbsoluteIndex","IS_INCLUDES","el","fromIndex","includes","TO_STRING_TAG","TAG","originalArray","C","re1","re2","regexpFlags","nativeExec","RegExp","nativeReplace","replace","patchedExec","UPDATES_LAST_INDEX_WRONG","lastIndex","NPCG_INCLUDED","str","reCopy","match","re","nativePropertyIsEnumerable","NASHORN_BUG","1","V","ownKeys","getOwnPropertyDescriptorModule","getOwnPropertySymbols","replacement","feature","detection","data","normalize","POLYFILL","NATIVE","string","toLowerCase","addToUnscopables","Iterators","defineIterator","setInternalState","iterated","kind","done","Arguments","__webpack_amd_options__","NAME","getPrototypeOf","setPrototypeOf","DataView","DataViewPrototype","Int8Array","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","ObjectPrototype","isPrototypeOf","TYPED_ARRAY_TAG","NATIVE_ARRAY_BUFFER","ArrayBuffer","NATIVE_ARRAY_BUFFER_VIEWS","opera","TYPED_ARRAY_TAG_REQIRED","TypedArrayConstructorsList","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","isTypedArray","aTypedArray","aTypedArrayConstructor","ARRAY","TypedArrayConstructor","exportProto","KEY","exportStatic","isView","klass","propertyKey","UNSCOPABLES","ArrayPrototype","g","e","CORRECT_PROTOTYPE_GETTER","test","getBuiltIn","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","wrappedWellKnownSymbolModule","$","createIteratorConstructor","setToStringTag","IteratorsCore","IteratorPrototype","BUGGY_SAFARI_ITERATORS","ITERATOR","returnThis","Iterable","IteratorConstructor","next","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","methods","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","entries","values","proto","PrototypeOfArrayIteratorPrototype","arrayIterator","ignoreCase","multiline","dotAll","unicode","sticky","CONVERT_TO_STRING","pos","first","second","S","position","size","charCodeAt","charAt","codeAt","aPossiblePrototype","setter","CORRECT_SETTER","__proto__","regexpExec","REPLACE_SUPPORTS_NAMED_GROUPS","groups","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","apply","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","nativeMethod","regexp","arg2","forceStringMethod","stringMethod","regexMethod","R","b","classofRaw","CORRECT_ARGUMENTS","tag","tryGet","callee","nativeObjectCreate","objectKeys","getOwnPropertyNamesExternal","defineWellKnownSymbol","$forEach","HIDDEN","TO_PRIMITIVE","$Symbol","JSON","nativeJSONStringify","stringify","nativeGetOwnPropertyNames","AllSymbols","ObjectPrototypeSymbols","StringToSymbolRegistry","SymbolToStringRegistry","WellKnownSymbolsStore","QObject","USE_SETTER","findChild","setSymbolDescriptor","ObjectPrototypeDescriptor","wrap","description","symbol","isSymbol","iterator","$defineProperty","$defineProperties","properties","$getOwnPropertySymbols","$propertyIsEnumerable","$getOwnPropertyDescriptor","$getOwnPropertyNames","IS_OBJECT_PROTOTYPE","keyFor","sym","useSetter","useSimple","replacer","$replacer","args","NativeSymbol","EmptyStringDescriptionStore","SymbolWrapper","symbolPrototype","symbolToString","native","desc","point","DOMIterables","ArrayIteratorMethods","ArrayValues","COLLECTION_NAME","Collection","CollectionPrototype","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","originalModule","webpackPolyfill","children","whitespace","ltrim","rtrim","start","end","trim","$indexOf","sloppyArrayMethod","nativeIndexOf","NEGATIVE_ZERO","SLOPPY_METHOD","searchElement","windowNames","getWindowNames","$map","arrayMethodHasSpeciesSupport","createProperty","nativeSlice","Constructor","k","fin","splice","deleteCount","insertCount","actualDeleteCount","A","from","to","len","actualStart","argumentsLength","fixRegExpWellKnownSymbolLogic","advanceStringIndex","regExpExec","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","REPLACE","maybeCallNative","searchValue","replaceValue","res","rx","functionalReplace","fullUnicode","results","accumulatedResult","nextSourcePosition","matched","captures","j","namedCaptures","replacerArgs","getSubstitution","tailPos","symbols","ch","capture","$filter","$find","SKIPS_HOLES","nativeJoin","ES3_STRINGS","separator","IS_CONCAT_SPREADABLE","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","isConcatSpreadable","spreadable","E","defaultConstructor","DatePrototype","Date","nativeDateToString","getTime","NaN","parseFloatImplementation","parseFloat","flags","RegExpPrototype","nativeToString","NOT_GENERIC","INCORRECT_NAME","rf","IS_RIGHT","memo","left","right","whitespaces","nativeParseFloat","Infinity","trimmedString","isRegExp","speciesConstructor","callRegExpExec","arrayPush","SUPPORTS_Y","SPLIT","nativeSplit","internalSplit","limit","lim","lastLength","output","lastLastIndex","separatorCopy","splitter","unicodeMatching","q","z","MATCH","dummy","Wrapper","NewTarget","NewTargetPrototype","nativeMatch","matcher","matchStr","thisNumberValue","repeat","nativeToFixed","toFixed","pow","x","acc","fractionDigits","number","fractDigits","sign","multiply","c2","divide","dataToString","RangeError","x2","log","count","$reduce","reduce","nativeReverse","reverse","nativeSort","sort","FAILS_ON_UNDEFINED","FAILS_ON_NULL","comparefn","inheritIfRequired","NativeNumber","NumberPrototype","BROKEN_CLASSOF","toNumber","third","radix","maxCode","digits","code","parseInt","NumberWrapper","parseIntImplementation","CONSTRUCTOR_NAME","FunctionPrototype","FunctionPrototypeToString","nameRE","nativeParseInt","hex","getFlags","setSpecies","NativeRegExp","CORRECT_NEW","RegExpWrapper","pattern","thisIsRegExp","patternIsRegExp","flagsAreUndefined","proxy","nativeLastIndexOf","lastIndexOf","endPos","jQuery","inputSelector","selector","textAreaSelector","$text","$body","$document","observe","attachEvent","element","event","handler","addEventListener","each","resize","height","scrollHeight","delayedResize","setTimeout","isNotValid","validity","badInput","updateTextFields","toggleActiveClass","addOnFocusEvent","addOnBlurEvent","addOnChangeEvent","addOnResetEvent","appendHiddenDiv","makeActiveAutofocus","textAreaAutoResize","on","action","selectors","parent","hasClass","siblings","attr","css","noValue","isValid","noPlaceholder","removeClass","validateField","$formReset","is","noDefaultValue","select","$select","$visibleInput","defaultValue","$hiddenDiv","append","$input","hasValue","hasPlaceholder","addOrRemove","hasActiveLabel","hasLabel","valid","Number","addClass","$textarea","fontFamily","fontSize","text","content","width","init","$navbar","offset","top","mdbTreeview","off","toggleClass","treeviewToggle","$elements","$closed","hide","$target","$pointer","slideUp","slideDown","treeviewAnimated","$header","$pointerPlus","$pointerMinus","treeviewColorful","WOW","wow","MDBWow","$wowElement","customization","animated","assignElementCustomization","scroll","mdbWow","appear","animationName","iteration","fallback","or","duration","delay","shouldElementBeVisible","countRemoveTime","visibility","thisElementOffset","getOffset","thisElementHeight","documentHeight","windowHeight","innerHeight","scrollY","isElementTopVisible","isElementBottomVisible","isScrolledToTop","isScrolledToBottom","isDocumentHeightEqual","isOffsetHigherThanDocument","isElementBottomHidden","isScrolledOverTop","isNotScrolledToTop","isScrolledOverElement","defaultAnimationTime","removeTime","checkOptionsStringFormat","valueToReturn","console","box","getBoundingClientRect","body","docEl","documentElement","scrollTop","pageYOffset","clientTop","round","_value","fill","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","nativeKeys","redefineAll","anInstance","toIndex","arrayFill","NativeArrayBuffer","$ArrayBuffer","$DataView","abs","LN2","packIEEE754","mantissaLength","bytes","exponent","mantissa","buffer","exponentLength","eMax","eBias","rt","unpackIEEE754","nBits","unpackInt32","packInt8","packInt16","packInt32","packFloat32","packFloat64","addGetter","view","isLittleEndian","intIndex","byteLength","byteOffset","pack","conversion","ArrayBufferPrototype","testView","nativeSetInt8","setInt8","getInt8","setUint8","bufferLength","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","toPositiveInteger","BYTES","factory","Selector","CUSTOMFILE","CUSTOMFILELABEL","FORM","INPUT","getDefaultText","defaultText","label","parentNode","querySelector","innerHTML","findFirstChildNode","childNodes","node","nodeType","restoreDefaultText","bsCustomFileInput","fileApi","File","getSelectedFiles","hasAttribute","files","file","splittedValue","handleInputChange","inputValue","handleFormReset","customFileList","querySelectorAll","Event","formSelector","customFileInputList","formList","_i","_len","destroy","form","removeEventListener","_i2","_len2","define","Chart","require","u","Error","2","colorNames","getRgba","rgb","scale","getHsla","alpha","getHwb","rgbaString","rgba","percentaString","hslaString","hsla","num","hexDouble","toUpperCase","getRgb","getHsl","getAlpha","vals","hexString","rgbString","percentString","hslString","hwbString","hwb","keyword","reverseNames","3","convert","Color","obj","hsl","hsv","cmyk","setValues","red","lightness","v","w","whiteness","cyan","setSpace","rgbArray","hslArray","hsvArray","hwbArray","cmykArray","rgbaArray","hslaArray","setChannel","green","blue","hue","saturation","saturationv","blackness","magenta","yellow","black","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","level","contrastRatio","dark","light","negate","lighten","ratio","darken","saturate","desaturate","whiten","blacken","greyscale","clearer","opaquer","rotate","degrees","mix","mixinColor","weight","w1","w2","toJSON","clone","prop","spaces","maxes","getValues","space","capped","chans","sname","svalues","4","rgb2hsl","h","delta","rgb2hsv","rgb2hwb","rgb2cmyk","rgb2keyword","reverseKeywords","rgb2xyz","rgb2lab","xyz","y","hsl2rgb","t1","t2","t3","hsv2rgb","hi","hwb2rgb","wh","bl","cmyk2rgb","xyz2rgb","xyz2lab","lab2xyz","lab","y2","lab2lch","atan2","PI","sqrt","lab2rgb","lch2lab","lch","hr","cos","sin","keyword2rgb","cssKeywords","rgb2lch","hsl2hsv","hsl2hwb","hsl2cmyk","hsl2keyword","hsv2hsl","sl","hsv2hwb","hsv2cmyk","hsv2keyword","hwb2hsl","hwb2hsv","hwb2cmyk","hwb2keyword","cmyk2hsl","cmyk2hsv","cmyk2hwb","cmyk2keyword","keyword2hsl","keyword2hsv","keyword2hwb","keyword2cmyk","keyword2lab","keyword2xyz","xyz2lch","lch2xyz","lch2rgb","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellowgreen","5","conversions","Converter","func","pair","convs","routeSpace","fspace","6","7","helpers","Animation","animationService","defaults","Element","elements","Interaction","layouts","platform","plugins","Scale","scaleService","Ticks","Tooltip","register","initialize","Legend","legend","_element","Title","title","pluginService","PluginBase","extend","canvasHelpers","canvas","layoutService","8","Bar","context","config","9","Bubble","10","Doughnut","11","Line","12","PolarArea","13","Radar","14","Scatter","15","_set","hover","scales","xAxes","categoryPercentage","barPercentage","gridLines","offsetGridLines","yAxes","axis","rectangle","borderSkipped","tooltips","callbacks","item","yLabel","labels","datasets","datasetIndex","xLabel","controllers","bar","DatasetController","dataElementType","Rectangle","meta","me","getMeta","stack","getDataset","update","reset","ilen","rects","_ruler","getRuler","updateElement","chart","dataset","custom","rectangleOptions","_xScale","getScaleForId","xAxisID","_yScale","yAxisID","_datasetIndex","_index","_model","datasetLabel","backgroundColor","valueAtIndexOrDefault","borderColor","borderWidth","updateElementGeometry","pivot","model","vscale","getValueScale","base","getBasePixel","horizontal","isHorizontal","ruler","vpixels","calculateBarValuePixels","ipixels","calculateBarIndexPixels","head","center","getValueScaleId","getIndexScaleId","getIndexScale","_getStacks","last","stacked","stacks","getDatasetMeta","isDatasetVisible","getStackCount","getStackIndex","stackCount","pixels","getPixelForValue","isNullOrUndef","barThickness","prev","curr","ticks","getTicks","getPixelForTick","computeMinSampleSize","imeta","ivalue","getRightValue","controller","range","percent","chunk","computeFlexCategoryTraits","thickness","computeFitCategoryTraits","stackIndex","valueOrDefault","maxBarThickness","draw","clipArea","ctx","chartArea","unclipArea","horizontalBar","16","dataPoint","bubble","Point","points","xScale","yScale","_resolveElementOptions","dsIndex","getPixelForDecimal","_options","hitRadius","pointStyle","rotation","radius","skip","setHoverStyle","$previousStyle","hoverBackgroundColor","getHoverColor","hoverBorderColor","hoverBorderWidth","hoverRadius","resolve","dataIndex","17","animation","animateRotate","animateScale","legendCallback","generateLabels","ds","arc","arcOpts","fillStyle","strokeStyle","lineWidth","hidden","onClick","legendItem","cutoutPercentage","circumference","tooltipItem","dataLabel","doughnut","pie","Arc","linkScales","noop","getRingIndex","ringIndex","opts","availableWidth","availableHeight","bottom","minSize","startAngle","endAngle","contains0","contains90","contains180","contains270","cutout","getMaxBorderWidth","outerRadius","innerRadius","radiusLength","getVisibleDatasetCount","offsetX","offsetY","total","calculateTotal","animationOpts","centerX","centerY","calculateCircumference","elementOpts","arcs","hoverWidth","_chart","18","showLines","spanGaps","lineEnabled","showLine","line","datasetElementType","lineElementOptions","tension","lineTension","_scale","_children","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","steppedLine","stepped","cubicInterpolationMode","updateBezierControlPoints","getPointBackgroundColor","pointBackgroundColor","getPointBorderColor","pointBorderColor","getPointBorderWidth","pointBorderWidth","getPointRotation","pointRotation","pointOptions","pointRadius","pointHitRadius","calculatePointY","dsMeta","sumPos","sumNeg","stackedRightValue","rightValue","controlPoints","area","capControlPoint","pt","splineCurveMonotone","splineCurve","previousItem","nextItem","controlPointPreviousX","previous","controlPointPreviousY","controlPointNextX","controlPointNextY","capBezierPoints","halfBorderWidth","pointHoverBackgroundColor","pointHoverBorderColor","pointHoverBorderWidth","pointHoverRadius","19","angleLines","circular","pointLabels","beginAtZero","polarArea","angle","starts","_starts","angles","_angles","_updateRadius","countVisibleElements","_computeAngle","xCenter","yCenter","datasetStartAngle","distance","getDistanceFromCenterForValue","resetRadius","20","radar","_loop","pointElementOptions","pointPosition","getPointPositionForValue","21","scatter","22","currentStep","numSteps","easing","render","onAnimationProgress","onAnimationComplete","23","onProgress","onComplete","frameDuration","animations","dropFrames","request","addAnimation","lazy","animating","requestAnimationFrame","cancelAnimation","requestAnimFrame","startDigest","startTime","now","framesToDrop","advance","endTime","callback","24","updateConfig","newOptions","removeBox","configMerge","ensureScalesHaveIDs","buildOrUpdateScales","tooltip","positionIsHorizontal","types","instances","construct","initConfig","acquireContext","aspectRatio","_bufferedRender","notify","retinaScale","devicePixelRatio","bindEvents","responsive","initToolTip","clear","stop","silent","maintainAspectRatio","newWidth","getMaximumWidth","newHeight","getMaximumHeight","newSize","onResize","responsiveAnimationDuration","scalesOptions","scaleOptions","xAxisOptions","yAxisOptions","items","updated","dtype","dposition","isDefault","scaleType","scaleClass","getScaleConstructor","mergeTicksOptions","hasUpdated","addScalesToLayout","buildOrUpdateControllers","newControllers","destroyDatasetMeta","updateIndex","ControllerClass","resetElements","_invalidate","_data","buildOrUpdateElements","updateLayout","updateDatasets","lastActive","_bufferedRequest","updateDataset","animationOptions","animationObject","easingFunction","effects","stepDecimal","easingValue","transition","boxes","drawDatasets","_drawTooltip","drawDataset","getElementAtEvent","modes","single","getElementsAtEvent","intersect","getElementsAtXAxis","getElementsAtEventForMode","getDatasetAtEvent","_meta","generateLegend","unbindEvents","releaseContext","toBase64Image","toDataURL","_chartInstance","listeners","_listeners","listener","eventHandler","events","updateHoverStyle","enabled","changed","handleEvent","_start","bufferedRequest","animationDuration","hoverOptions","active","onHover","arrayEquals","Controller","25","arrayEvents","unlistenArrayEvents","stub","_chartjs","addElements","scaleID","createMetaDataset","createMetaData","metaData","addElementAndReset","resyncElements","removeHoverStyle","merge","numMeta","numData","insertElements","onDataPush","onDataPop","pop","onDataShift","shift","onDataSplice","onDataUnshift","inherits","26","scope","27","color","configuration","_view","ease","actual","origin","c0","c1","isFinite","interpolate","tooltipPosition","isNumber","28","parseMaxStyle","styleValue","parentProperty","valueInPixels","isConstrainedValue","getConstraintDimension","domNode","maxStyle","percentageProperty","defaultView","_getParentNode","constrainedNode","getComputedStyle","constrainedContainer","hasCNode","hasCContainer","infinity","POSITIVE_INFINITY","merger","tval","sval","scaleMerge","getScaleDefaults","_merger","slen","where","collection","filterCallback","filtered","findNextWhere","arrayToSearch","startIndex","currentItem","findPreviousWhere","almostEquals","epsilon","almostWhole","rounded","NEGATIVE_INFINITY","log10","LOG10E","powerOf10","toRadians","toDegrees","radians","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","distanceBetweenPoints","pt1","pt2","aliasPixel","pixelWidth","firstPoint","middlePoint","afterPoint","current","d01","d12","s01","s12","fa","fb","EPSILON","pointBefore","pointCurrent","pointAfter","alphaK","betaK","tauK","squaredMagnitude","deltaX","pointsWithTangents","deltaK","mK","pointsLen","slopeDeltaX","loop","niceNum","fraction","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","getRelativePosition","evt","mouseX","mouseY","originalEvent","srcElement","boundingRect","touches","clientX","clientY","paddingLeft","getStyle","paddingTop","paddingRight","paddingBottom","currentDevicePixelRatio","getConstraintWidth","getConstraintHeight","_calculatePadding","container","padding","parentDimension","host","clientWidth","cw","clientHeight","currentStyle","getPropertyValue","forceRatio","pixelRatio","fontString","pixelSize","fontStyle","longestText","font","arrayOfThings","cache","gc","garbageCollect","longest","thing","measureText","nestedThing","gcLen","textWidth","numberOfLabelLines","numberOfLines","CanvasGradient","defaultColor","colorValue","CanvasPattern","29","parseVisibleItems","jlen","getIntersectItems","inRange","getNearestItems","distanceMetric","minDistance","nearestItems","getCenterPoint","getDistanceMetricForAxis","useX","useY","deltaY","indexMode","nearest","ret","getArea","intersectsItem","inXRange","inYRange","30","defaultFontColor","defaultFontFamily","defaultFontSize","defaultFontStyle","layout","31","filterByPosition","sortByWeight","_tmpIndex_","v0","v1","addBox","fullWidth","layoutItem","configure","props","layoutOptions","toPadding","leftPadding","rightPadding","topPadding","bottomPadding","leftBoxes","rightBoxes","topBoxes","bottomBoxes","chartAreaBoxes","chartWidth","chartHeight","chartAreaHeight","verticalBoxWidth","horizontalBoxHeight","maxChartAreaWidth","maxChartAreaHeight","minBoxSizes","maxHorizontalLeftPadding","maxHorizontalRightPadding","maxVerticalTopPadding","maxVerticalBottomPadding","horizontalBox","getPadding","boxPadding","verticalBox","totalLeftBoxesWidth","totalRightBoxesWidth","totalTopBoxesHeight","totalBottomBoxesHeight","fitBox","minBoxSize","scaleMargin","leftPaddingAddition","topPaddingAddition","newMaxChartAreaHeight","newMaxChartAreaWidth","placeBox","minBox","32","_plugins","_cacheId","plugin","unregister","idx","getAll","hook","params","descriptors","$plugins","33","labelsFromTicks","getLineValue","lineValue","computeTextSize","tick","parseFontOptions","globalDefaults","family","parseLineHeight","toLineHeight","lineHeight","drawBorder","drawOnChartArea","drawTicks","tickMarkLength","zeroLineWidth","zeroLineColor","zeroLineBorderDash","zeroLineBorderDashOffset","scaleLabel","labelString","minRotation","maxRotation","mirror","autoSkip","autoSkipPadding","labelOffset","formatters","minor","major","_ticks","beforeUpdate","maxWidth","maxHeight","margins","longestTextCache","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","beforeBuildTicks","buildTicks","afterBuildTicks","beforeTickToLabelConversion","convertTicksToLabels","afterTickToLabelConversion","beforeCalculateTickRotation","calculateTickRotation","afterCalculateTickRotation","beforeFit","fit","afterFit","afterUpdate","tickOpts","userCallback","tickFont","labelRotation","cosRotation","originalLabelWidth","labelWidth","tickWidth","angleRadians","scaleLabelOpts","gridLineOpts","isFullWidth","deltaHeight","largestTextWidth","tallestLabelHeightInLines","lineSpace","tickPadding","longestLabelWidth","labelHeight","firstLabelWidth","lastLabelWidth","handleMargins","rawValue","getLabelForIndex","getValueForPixel","pixel","finalVal","decimal","valueOffset","getBaseValue","_autoSkip","skipRatio","maxTicks","optionTicks","tickCount","labelRotationRadians","longestRotatedLabel","maxTicksLimit","optionMajorTicks","isRotated","tickFontColor","fontColor","majorTickFontColor","majorTickFont","tl","scaleLabelFontColor","scaleLabelFont","scaleLabelPadding","itemsToDraw","axisWidth","xTickStart","xTickEnd","yTickStart","yTickEnd","lineColor","tx1","ty1","tx2","ty2","x1","y1","labelX","labelY","zeroLineIndex","textAlign","textBaseline","labelYOffset","xLineValue","labelXOffset","isLeft","yLineValue","glWidth","glColor","glBorderDash","glBorderDashOffset","itemToDraw","save","setLineDash","lineDashOffset","beginPath","moveTo","lineTo","stroke","restore","translate","lineCount","fillText","scaleLabelX","scaleLabelY","halfLineHeight","34","constructors","registerScaleType","scaleConstructor","scaleDefaults","updateScaleDefaults","additions","35","linear","tickValue","logDelta","tickString","logTick","toExponential","numDecimal","logarithmic","remain","36","titleFontStyle","titleSpacing","titleMarginBottom","titleFontColor","titleAlign","bodySpacing","bodyFontColor","bodyAlign","footerFontStyle","footerSpacing","footerMarginTop","footerFontColor","footerAlign","yPadding","xPadding","caretPadding","caretSize","cornerRadius","multiKeyBackground","displayColors","beforeTitle","tooltipItems","labelCount","afterTitle","beforeBody","beforeLabel","labelColor","labelTextColor","afterLabel","afterBody","beforeFooter","footer","afterFooter","positioners","average","eventPosition","nearestElement","tp","mergeOpacity","colorString","opacity","pushOrConcat","toPush","splitNewlines","getBaseModel","tooltipOpts","xAlign","yAlign","_bodyFontFamily","bodyFontFamily","_bodyFontStyle","bodyFontStyle","_bodyAlign","bodyFontSize","_titleFontFamily","titleFontFamily","_titleFontStyle","titleFontSize","_titleAlign","_footerFontFamily","footerFontFamily","_footerFontStyle","footerFontSize","_footerAlign","legendColorBackground","getBeforeAfterBodyLines","_lastActive","getTitle","lines","getBeforeBody","getBody","bodyItems","bodyItem","before","after","getAfterBody","getFooter","existingModel","_active","alignment","backgroundPoint","tooltipSize","caretX","caretY","labelColors","labelTextColors","_eventPosition","itemSort","dataPoints","combinedBodyLength","titleLineCount","footerLineCount","widthPadding","maxLineWidth","getTooltipSize","vm","paddingAndSize","radiusAndPadding","getBackgroundPoint","lf","olf","orf","yf","midX","midY","determineAlignment","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","tmp","drawTitle","drawBody","xLinePadding","fillLineOfText","drawColorBoxes","textColor","fillRect","strokeRect","drawFooter","drawBackground","quadraticCurveTo","closePath","hasTooltipContent","37","inLabelRange","chartX","chartY","pointRelativePosition","betweenAngles","withinRadius","halfAngle","halfRadius","centreAngle","rangeFromCentre","sA","eA","lineJoin","38","currentVM","globalOptionLineElements","lastDrawnIndex","lineCap","39","xRange","drawPoint","40","isVertical","getBarBounds","halfWidth","halfHeight","signX","signY","barSize","halfStroke","borderLeft","borderRight","borderTop","borderBottom","corners","startCorner","cornerAt","corner","bounds","41","42","clearRect","roundedRect","arcTo","rect","edgeLength","xOffset","yOffset","SQRT2","leftX","topY","sideSize","drawImage","clip","flip","bezierCurveTo","drawRoundedRectangle","43","thisArg","loopable","a0","a1","klen","_mergerIf","mergeIf","sources","setFn","extensions","ChartElement","Surrogate","__super__","callCallback","getValueOrDefault","getValueAtIndexOrDefault","44","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","asin","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","easingEffects","45","matches","inputs","46","47","getContext","48","EXPANDO_KEY","CSS_PREFIX","CSS_RENDER_MONITOR","CSS_RENDER_ANIMATION","ANIMATION_START_EVENTS","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","readUsedSize","eventListenerOptions","supports","passive","createEvent","nativeEvent","addResizeListener","ticking","expando","resizer","cls","cssText","className","expand","shrink","_reset","scrollLeft","onScroll","createResizer","renderProxy","reflow","offsetParent","classList","add","watchForRender","insertBefore","firstChild","removeResizeListener","remove","unwatchForRender","removeChild","_enabled","keyframes","_style","setAttribute","getElementsByTagName","createTextNode","getElementById","renderHeight","getAttribute","renderWidth","initial","displayWidth","displayHeight","initCanvas","removeAttribute","proxies","fromNativeEvent","addEvent","removeEvent","49","basic","dom","implementation","50","filler","51","propagate","mappers","boundary","decodeFill","computeBoundary","scaleBottom","scaleTop","scaleZero","getBasePosition","resolveTarget","visited","visible","createMapper","isDrawable","drawArea","curve0","curve1","len0","len1","afterDatasetsUpdate","$filler","mapper","beforeDatasetDraw","p0","p1","d0","d1","span","doFill","52","getBoxWidth","labelOpts","usePointStyle","boxWidth","ci","lineDash","legendHitBoxes","doughnutMode","beforeBuildLabels","buildLabels","afterBuildLabels","legendItems","globalDefault","labelFont","hitboxes","lineWidths","totalHeight","vPadding","columnWidths","totalWidth","currentColWidth","currentColHeight","itemHeight","itemWidth","lineDefault","legendWidth","cursor","isLineWidthZero","offSet","drawLegendBox","halfFontSize","xLeft","yMiddle","lh","hitBox","createNewLegendAndAttach","legendOpts","beforeInit","afterEvent","53","textSize","titleX","titleY","titleFont","createNewTitleBlockAndAttach","titleOpts","titleBlock","54","DatasetScale","getLabels","xLabels","yLabels","minIndex","maxIndex","valueCategory","offsetAmt","valueWidth","widthOffset","valueHeight","heightOffset","horz","valueDimension","55","defaultConfig","LinearScale","LinearScaleBase","IDMatches","hasStacks","valuesPerStack","positiveValues","negativeValues","relativePoints","valuesForType","minVal","maxVal","handleTickRangeOptions","getTickLimit","tickFontSize","handleDirectionalChanges","innerDimension","ticksAsNumbers","56","minSign","maxSign","setMin","suggestedMin","setMax","suggestedMax","numericGeneratorOptions","precision","stepSize","fixedStepSize","generationOptions","dataRange","factor","spacing","niceRange","niceMin","niceMax","numSpaces","generateTicks","57","LogarithmicScale","minNotZero","exp","significand","tickVal","endExp","endSignificand","lastTick","tickValues","_getFirstTickValue","firstTickValue","58","animate","showLabelBackdrop","backdropColor","backdropPaddingY","backdropPaddingX","getValueCount","getPointLabelFontOptions","pointLabelOptions","determineLimits","getTextAlignForAngle","adjustPointPositionForLabelHeight","numberOrZero","param","LinearRadialScale","drawingArea","largestPossibleRadius","plFont","furthestLimits","furthestAngles","_pointLabelSizes","valueCount","getPointPosition","getIndexAngle","hLimits","vLimits","setReductions","fitWithPointLabels","setCenterPoint","radiusReductionLeft","radiusReductionRight","radiusReductionTop","radiusReductionBottom","leftMovement","rightMovement","topMovement","bottomMovement","maxRight","maxLeft","maxTop","maxBottom","scalingFactor","distanceFromCenter","thisAngle","tickFontStyle","tickFontFamily","tickLabelFont","yCenterOffset","drawRadiusLine","angleLineOpts","pointLabelOpts","outerDistance","outerPosition","pointLabelPosition","pointLabelFontColor","drawPointLabels","59","moment","MIN_INTEGER","MAX_INTEGER","INTERVALS","millisecond","common","steps","minute","hour","day","week","month","quarter","year","UNITS","sorter","arrayUnique","hash","out","table","skey","tkey","mid","i0","i1","lo","lookup","momentify","parser","format","parse","time","startOf","determineMajorUnit","unit","generate","capacity","timeOpts","minUnit","interval","determineUnitForAutoTicks","unitStepSize","weekday","isoWeekday","majorTicksEnabled","milliseconds","determineStepSize","TimeScale","warn","timestamp","timestamps","endOf","_horizontal","_table","_timestamps","getLabelCapacity","_unit","diff","as","determineUnitForFormatting","_majorUnit","distribution","buildLookupTable","_offsets","upper","lower","computeOffsets","_labelFormat","momentDate","hasTime","determineLabelFormat","majorUnit","ticksFromTimestamps","tooltipFormat","tickFormatFunction","formatOverride","formats","displayFormats","minorFormat","majorFormat","majorTime","majorTickOpts","formatter","getPixelForOffset","getLabelWidth","ticksOpts","tickLabelWidth","sinRotation","exampleTime","exampleLabel","innerWidth","displayFormat","$findIndex","screen","deviceXDPI","logicalXDPI","utils","toTextLines","unshift","toFontString","parseFont","bound","arrayDiff","updates","rasterize","orient","x0","y0","dx","dy","ln","R_INSIDE","R_LEFT","R_RIGHT","R_BOTTOM","R_TOP","region","compute","anchor","segment","clamp","r0","r1","clipped","vx","vy","align","aligned","ry","sx","sy","helpers$1","getScaleOrigin","drawTextLine","cfg","shadow","shadowBlur","stroked","strokeText","filled","Label","_config","_rects","_ctx","_el","_modelize","borderRadius","positioner","textShadowBlur","textShadowColor","textStrokeColor","textStrokeWidth","th","tw","tx","ty","frame","boundingRects","geometry","globalAlpha","bgColor","drawFrame","strokeColor","strokeWidth","textGeometry","shadowColor","drawText","helpers$2","rotated","cx","cy","projected","dp","toAxis","HitBox","_rotation","_rect","coordinates","vs","contains","margin","intersects","other","pr0","pr1","_points","axes","prepare","$layout","_box","_hidable","_visible","_idx","sa","sb","dirty","collider","s0","s1","collide","h0","h1","compute$1","helpers$3","helpers$4","DEFAULT_KEY","dispatchEvent","$context","$groups","_key","_dirty","handleMoveEvents","enter","leave","_labels","_hovered","dispatchMoveEvents","datalabels","_actives","_listened","_datasets","afterDatasetUpdate","override","configs","afterDatasetsDraw","beforeEvent","handlers","click","handleClickEvents","actives","invalidate","ChartDataLabels","createHTML","forcedStringHTMLMethod","quot","attribute","$modal_dialog","def","swing","Velocity","isWindow","isPlainObject","uuid","removeData","queue","dequeue","pageXOffset","clientLeft","nodeName","marginTop","marginLeft","borderTopWidth","borderLeftWidth","Utilities","isWrapped","isNode","getControlPoints","T","isString","Easings","State","calls","setPropertyValue","endValue","startValue","currentValue","Hooks","registered","H","getRoot","N","rootPropertyValueCache","rootPropertyValue","L","unitType","scrollData","Normalizations","mobileHA","transformCache","translate3d","flushTransformCache","progress","isTicking","isAnimating","Lists","transforms3D","Values","complete","tweensContainer","documentMode","isFunction","isNodeList","jquery","Zepto","zepto","isZ","isSVG","SVGElement","isEmptyObject","isMobile","navigator","userAgent","isAndroid","isGingerbread","isChrome","chrome","isFirefox","prefixElement","prefixMatches","scrollAnchor","scrollPropertyLeft","scrollPropertyTop","CSS","Redirects","Promise","begin","_cacheValues","computedStyle","mock","patch","debug","friction","dv","spring","RegEx","isHex","valueUnwrap","wrappedValueAlreadyExtracted","valueSplit","colors","transformsBase","templates","textShadow","boxShadow","backgroundPosition","transformOrigin","perspectiveOrigin","cleanRootPropertyValue","isCSSNullValue","extractValue","injectValue","blur","zoom","substr","hexToRgb","Names","camelCase","SVGAttribute","prefixCheck","getUnitType","getDisplayType","tagName","offsetHeight","offsetWidth","getBBox","direction","scrollTo","alternateValue","skewX","skewY","promise","myParent","lastPosition","lastParent","lastFontSize","emToPx","lastEmToPx","percentToPxWidth","lastPercentToPxWidth","percentToPxHeight","lastPercentToPxHeight","createElementNS","remToPx","vwToPx","vhToPx","M","I","B","W","G","Y","D","Q","resolver","velocityQueueEntryFlag","delayTimer","rejecter","clearTimeout","backwards","stagger","drag","velocity","marginBottom","overflow","ArrayBufferModule","nativeArrayBufferSlice","viewSource","viewTarget","typedArrayConstructor","TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS","ArrayBufferViewCore","toOffset","typedArrayFrom","fromList","list","isArrayBuffer","isTypedArrayIndex","wrappedGetOwnPropertyDescriptor","wrappedDefineProperty","wrapper","CLAMPED","GETTER","SETTER","NativeTypedArrayConstructor","TypedArrayConstructorPrototype","exported","addElement","typedArrayOffset","$length","$len","checkCorrectnessOfIteration","iterable","SAFE_CLOSING","called","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","getIteratorMethod","isArrayIteratorMethod","step","mapfn","mapping","iteratorMethod","$copyWithin","copyWithin","inc","$every","$fill","predicate","$includes","ArrayIterators","arrayValues","arrayKeys","arrayEntries","nativeTypedArrayIterator","CORRECT_ITER_NAME","typedArrayValues","$join","$lastIndexOf","$reduceRight","middle","arrayLike","$slice","$some","$sort","beginIndex","BYTES_PER_ELEMENT","$toLocaleString","toLocaleString","TO_LOCALE_STRING_BUG","Uint8ArrayPrototype","arrayToString","arrayJoin","Waves","$$","isTouchAvailable","getWavesElements","nodes","stringRepr","elem","docElem","win","doc","ownerDocument","getWindow","convertStyle","styleObj","Effect","show","button","ripple","relativeY","relativeX","pageY","pageX","rippleStyle","transform","ripples","getElementsByClassName","removeRipple","TagWrapper","replaceChild","img","TouchHandler","allowEvent","allow","registerEvent","eType","showEffect","parentElement","getWavesEffectElement","disabled","timer","hideEffect","hideEvent","removeListeners","touchMove","moveEvent","attach","classes","elementsLen","wait","centre","mousedown","hideRipple","mouseup","calm","displayEffect","ready"],"mappings":"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","file":"js/mdb.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 152);\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line no-undef\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func\n Function('return this')();\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nvar Symbol = global.Symbol;\nvar store = shared('wks');\n\nmodule.exports = function (name) {\n return store[name] || (store[name] = NATIVE_SYMBOL && Symbol[name]\n || (NATIVE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var fails = require('../internals/fails');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar nativeFunctionToString = require('../internals/function-to-string');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(nativeFunctionToString).split('toString');\n\nshared('inspectSource', function (it) {\n return nativeFunctionToString.call(it);\n});\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);\n enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || nativeFunctionToString.call(this);\n});\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.3.2',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","module.exports = {};\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = new WeakMap();\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var bind = require('../internals/bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6)\n};\n","module.exports = false;\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.github.io/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(length, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n return !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar PROTOTYPE = 'prototype';\nvar Empty = function () { /* empty */ };\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var length = enumBugKeys.length;\n var lt = '<';\n var script = 'script';\n var gt = '>';\n var js = 'java' + script + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n iframe.src = String(js);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]];\n return createDict();\n};\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n\nhiddenKeys[IE_PROTO] = true;\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var shared = require('../internals/shared');\n\nmodule.exports = shared('native-function-to-string', Function.toString);\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","module.exports = {};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !method || !fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","'use strict';\nvar regexpFlags = require('./regexp-flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","module.exports = require('../internals/global');\n","exports.f = Object.getOwnPropertySymbols;\n","var fails = require('../internals/fails');\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.github.io/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\n\nvar DataView = global.DataView;\nvar DataViewPrototype = DataView && DataView.prototype;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar isPrototypeOf = ObjectPrototype.isPrototypeOf;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar NATIVE_ARRAY_BUFFER = !!(global.ArrayBuffer && DataView);\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQIRED = false;\nvar NAME;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar isView = function isView(it) {\n var klass = classof(it);\n return klass === 'DataView' || has(TypedArrayConstructorsList, klass);\n};\n\nvar isTypedArray = function (it) {\n return isObject(it) && has(TypedArrayConstructorsList, classof(it));\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (setPrototypeOf) {\n if (isPrototypeOf.call(TypedArray, C)) return C;\n } else for (var ARRAY in TypedArrayConstructorsList) if (has(TypedArrayConstructorsList, NAME)) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (C === TypedArrayConstructor || isPrototypeOf.call(TypedArrayConstructor, C))) {\n return C;\n }\n } throw TypeError('Target is not a typed array constructor');\n};\n\nvar exportProto = function (KEY, property, forced) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor.prototype, KEY)) {\n delete TypedArrayConstructor.prototype[KEY];\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n redefine(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property);\n }\n};\n\nvar exportStatic = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor, KEY)) {\n delete TypedArrayConstructor[KEY];\n }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8Array[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n redefine(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n if (!global[NAME]) NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || typeof TypedArray != 'function' || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow\n TypedArray = function TypedArray() {\n throw TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !has(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQIRED = true;\n defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n } });\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\n// WebKit bug - the same parent prototype for typed arrays and data view\nif (NATIVE_ARRAY_BUFFER && setPrototypeOf && getPrototypeOf(DataViewPrototype) !== ObjectPrototype) {\n setPrototypeOf(DataViewPrototype, ObjectPrototype);\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER: NATIVE_ARRAY_BUFFER,\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportProto: exportProto,\n exportStatic: exportStatic,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n createNonEnumerableProperty(ArrayPrototype, UNSCOPABLES, create(null));\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var global = require('../internals/global');\nvar nativeFunctionToString = require('../internals/function-to-string');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(nativeFunctionToString.call(WeakMap));\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","exports.f = require('../internals/well-known-symbol');\n","var path = require('../internals/path');\nvar has = require('../internals/has');\nvar wrappedWellKnownSymbolModule = require('../internals/wrapped-well-known-symbol');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n","'use strict';\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","var anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\nvar ObjectPrototype = Object.prototype;\n\n// `Object.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nif (toString !== ObjectPrototype.toString) {\n redefine(ObjectPrototype, 'toString', toString, { unsafe: true });\n}\n","'use strict';\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar regexpExec = require('../internals/regexp-exec');\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$
') !== '7';\n});\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n });\n var stringMethod = methods[0];\n var regexMethod = methods[1];\n\n redefine(String.prototype, KEY, stringMethod);\n redefine(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return regexMethod.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return regexMethod.call(string, this); }\n );\n if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n }\n};\n","var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n","// a string of all valid unicode whitespaces\n// eslint-disable-next-line max-len\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/wrapped-well-known-symbol');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar JSON = global.JSON;\nvar nativeJSONStringify = JSON && JSON.stringify;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar isSymbol = NATIVE_SYMBOL && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return Object(it) instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPrimitive(P, true);\n anObject(Attributes);\n if (has(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPrimitive(V, true);\n var enumerable = nativePropertyIsEnumerable.call(this, P);\n if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPrimitive(P, true);\n if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n result.push(AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.github.io/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n // `Symbol.for` method\n // https://tc39.github.io/ecma262/#sec-symbol.for\n 'for': function (key) {\n var string = String(key);\n if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = $Symbol(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n },\n // `Symbol.keyFor` method\n // https://tc39.github.io/ecma262/#sec-symbol.keyfor\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n },\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.github.io/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.github.io/ecma262/#sec-json.stringify\nJSON && $({ target: 'JSON', stat: true, forced: !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n return nativeJSONStringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || nativeJSONStringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || nativeJSONStringify(Object(symbol)) != '{}';\n}) }, {\n stringify: function stringify(it) {\n var args = [it];\n var index = 1;\n var replacer, $replacer;\n while (arguments.length > index) args.push(arguments[index++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return nativeJSONStringify.apply(JSON, args);\n }\n});\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","// `Symbol.prototype.description` getter\n// https://tc39.github.io/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar has = require('../internals/has');\nvar isObject = require('../internals/is-object');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\n\nif (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n var result = this instanceof SymbolWrapper\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n symbolPrototype.constructor = SymbolWrapper;\n\n var symbolToString = symbolPrototype.toString;\n var native = String(NativeSymbol('test')) == 'Symbol(test)';\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n defineProperty(symbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = isObject(this) ? this.valueOf() : this;\n var string = symbolToString.call(symbol);\n if (has(EmptyStringDescriptionStore, symbol)) return '';\n var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n}\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","'use strict';\nvar classof = require('../internals/classof');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\n// `Object.prototype.toString` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nmodule.exports = String(test) !== '[object z]' ? function toString() {\n return '[object ' + classof(this) + ']';\n} : test.toString;\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = String(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar SLOPPY_METHOD = sloppyArrayMethod('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || SLOPPY_METHOD }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? nativeIndexOf.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return nativeGetOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]'\n ? getWindowNames(it)\n : nativeGetOwnPropertyNames(toIndexedObject(it));\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\n// `Array.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('map') }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('slice') }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('splice') }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative) {\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return nativeReplace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\n// `Array.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('filter') }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","'use strict';\nvar $ = require('../internals/export');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar SLOPPY_METHOD = sloppyArrayMethod('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || SLOPPY_METHOD }, {\n join: function join(separator) {\n return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\nvar IS_CONCAT_SPREADABLE_SUPPORT = !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n concat: function concat(arg) { // eslint-disable-line no-unused-vars\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.github.io/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n","var redefine = require('../internals/redefine');\n\nvar DatePrototype = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar nativeDateToString = DatePrototype[TO_STRING];\nvar getTime = DatePrototype.getTime;\n\n// `Date.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-date.prototype.tostring\nif (new Date(NaN) + '' != INVALID_DATE) {\n redefine(DatePrototype, TO_STRING, function toString() {\n var value = getTime.call(this);\n // eslint-disable-next-line no-self-compare\n return value === value ? nativeDateToString.call(this) : INVALID_DATE;\n });\n}\n","var $ = require('../internals/export');\nvar parseFloatImplementation = require('../internals/parse-float');\n\n// `parseFloat` method\n// https://tc39.github.io/ecma262/#sec-parsefloat-string\n$({ global: true, forced: parseFloat != parseFloatImplementation }, {\n parseFloat: parseFloatImplementation\n});\n","'use strict';\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\nvar flags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = String(R.source);\n var rf = R.flags;\n var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n","var aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar nativeParseFloat = global.parseFloat;\nvar FORCED = 1 / nativeParseFloat(whitespaces + '-0') !== -Infinity;\n\n// `parseFloat` method\n// https://tc39.github.io/ecma262/#sec-parsefloat-string\nmodule.exports = FORCED ? function parseFloat(string) {\n var trimmedString = trim(String(string));\n var result = nativeParseFloat(trimmedString);\n return result === 0 && trimmedString.charAt(0) == '-' ? -0 : result;\n} : nativeParseFloat;\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\n\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output.length > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, !SUPPORTS_Y);\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.github.io/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\nmodule.exports = sloppyArrayMethod('forEach') ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n} : [].forEach;\n","var isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n typeof (NewTarget = dummy.constructor) == 'function' &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = regexp == undefined ? undefined : regexp[MATCH];\n return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative(nativeMatch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toInteger = require('../internals/to-integer');\nvar thisNumberValue = require('../internals/this-number-value');\nvar repeat = require('../internals/string-repeat');\nvar fails = require('../internals/fails');\n\nvar nativeToFixed = 1.0.toFixed;\nvar floor = Math.floor;\n\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\nvar FORCED = nativeToFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !fails(function () {\n // V8 ~ Android 4.3-\n nativeToFixed.call({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.github.io/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n // eslint-disable-next-line max-statements\n toFixed: function toFixed(fractionDigits) {\n var number = thisNumberValue(this);\n var fractDigits = toInteger(fractionDigits);\n var data = [0, 0, 0, 0, 0, 0];\n var sign = '';\n var result = '0';\n var e, z, j, k;\n\n var multiply = function (n, c) {\n var index = -1;\n var c2 = c;\n while (++index < 6) {\n c2 += n * data[index];\n data[index] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n };\n\n var divide = function (n) {\n var index = 6;\n var c = 0;\n while (--index >= 0) {\n c += data[index];\n data[index] = floor(c / n);\n c = (c % n) * 1e7;\n }\n };\n\n var dataToString = function () {\n var index = 6;\n var s = '';\n while (--index >= 0) {\n if (s !== '' || index === 0 || data[index] !== 0) {\n var t = String(data[index]);\n s = s === '' ? t : s + repeat.call('0', 7 - t.length) + t;\n }\n } return s;\n };\n\n if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits');\n // eslint-disable-next-line no-self-compare\n if (number != number) return 'NaN';\n if (number <= -1e21 || number >= 1e21) return String(number);\n if (number < 0) {\n sign = '-';\n number = -number;\n }\n if (number > 1e-21) {\n e = log(number * pow(2, 69, 1)) - 69;\n z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = fractDigits;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n result = dataToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n result = dataToString() + repeat.call('0', fractDigits);\n }\n }\n if (fractDigits > 0) {\n k = result.length;\n result = sign + (k <= fractDigits\n ? '0.' + repeat.call('0', fractDigits - k) + result\n : result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits));\n } else {\n result = sign + result;\n } return result;\n }\n});\n","var classof = require('../internals/classof-raw');\n\n// `thisNumberValue` abstract operation\n// https://tc39.github.io/ecma262/#sec-thisnumbervalue\nmodule.exports = function (value) {\n if (typeof value != 'number' && classof(value) != 'Number') {\n throw TypeError('Incorrect invocation');\n }\n return +value;\n};\n","'use strict';\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.repeat` method implementation\n// https://tc39.github.io/ecma262/#sec-string.prototype.repeat\nmodule.exports = ''.repeat || function repeat(count) {\n var str = String(requireObjectCoercible(this));\n var result = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n forEach: forEach\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\n// `Array.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: sloppyArrayMethod('reduce') }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\nvar nativeReverse = [].reverse;\nvar test = [1, 2];\n\n// `Array.prototype.reverse` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reverse\n// fix for Safari 12.0 bug\n// https://bugs.webkit.org/show_bug.cgi?id=188794\n$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {\n reverse: function reverse() {\n if (isArray(this)) this.length = this.length;\n return nativeReverse.call(this);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar nativeSort = [].sort;\nvar test = [1, 2, 3];\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar SLOPPY_METHOD = sloppyArrayMethod('sort');\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || SLOPPY_METHOD;\n\n// `Array.prototype.sort` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? nativeSort.call(toObject(this))\n : nativeSort.call(toObject(this), aFunction(comparefn));\n }\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof-raw');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar create = require('../internals/object-create');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\n\n// Opera ~12 has broken Object#toString\nvar BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;\n\n// `ToNumber` abstract operation\n// https://tc39.github.io/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n var first, third, radix, maxCode, digits, length, index, code;\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = it.charCodeAt(0);\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = it.slice(2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = digits.charCodeAt(index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.github.io/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var dummy = this;\n return dummy instanceof NumberWrapper\n // check on 1..constructor(foo) case\n && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER)\n ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n redefine(global, NUMBER, NumberWrapper);\n}\n","var $ = require('../internals/export');\nvar parseIntImplementation = require('../internals/parse-int');\n\n// `parseInt` method\n// https://tc39.github.io/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt != parseIntImplementation }, {\n parseInt: parseIntImplementation\n});\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n}\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.github.io/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return FunctionPrototypeToString.call(this).match(nameRE)[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar nativeParseInt = global.parseInt;\nvar hex = /^[+-]?0[Xx]/;\nvar FORCED = nativeParseInt(whitespaces + '08') !== 8 || nativeParseInt(whitespaces + '0x16') !== 22;\n\n// `parseInt` method\n// https://tc39.github.io/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n var S = trim(String(string));\n return nativeParseInt(S, (radix >>> 0) || (hex.test(S) ? 16 : 10));\n} : nativeParseInt;\n","var DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar isRegExp = require('../internals/is-regexp');\nvar getFlags = require('../internals/regexp-flags');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar setSpecies = require('../internals/set-species');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar FORCED = DESCRIPTORS && isForced('RegExp', (!CORRECT_NEW || fails(function () {\n re2[MATCH] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\n})));\n\n// `RegExp` constructor\n// https://tc39.github.io/ecma262/#sec-regexp-constructor\nif (FORCED) {\n var RegExpWrapper = function RegExp(pattern, flags) {\n var thisIsRegExp = this instanceof RegExpWrapper;\n var patternIsRegExp = isRegExp(pattern);\n var flagsAreUndefined = flags === undefined;\n return !thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined ? pattern\n : inheritIfRequired(CORRECT_NEW\n ? new NativeRegExp(patternIsRegExp && !flagsAreUndefined ? pattern.source : pattern, flags)\n : NativeRegExp((patternIsRegExp = pattern instanceof RegExpWrapper)\n ? pattern.source\n : pattern, patternIsRegExp && flagsAreUndefined ? getFlags.call(pattern) : flags)\n , thisIsRegExp ? this : RegExpPrototype, RegExpWrapper);\n };\n var proxy = function (key) {\n key in RegExpWrapper || defineProperty(RegExpWrapper, key, {\n configurable: true,\n get: function () { return NativeRegExp[key]; },\n set: function (it) { NativeRegExp[key] = it; }\n });\n };\n var keys = getOwnPropertyNames(NativeRegExp);\n var index = 0;\n while (keys.length > index) proxy(keys[index++]);\n RegExpPrototype.constructor = RegExpWrapper;\n RegExpWrapper.prototype = RegExpPrototype;\n redefine(global, 'RegExp', RegExpWrapper);\n}\n\n// https://tc39.github.io/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar sloppyArrayMethod = require('../internals/sloppy-array-method');\n\nvar min = Math.min;\nvar nativeLastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!nativeLastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar SLOPPY_METHOD = sloppyArrayMethod('lastIndexOf');\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = (NEGATIVE_ZERO || SLOPPY_METHOD) ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return nativeLastIndexOf.apply(this, arguments) || 0;\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n return -1;\n} : nativeLastIndexOf;\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","jQuery(($) => {\n\n class Forms {\n\n constructor() {\n this.inputSelector = `${['text', 'password', 'email', 'url', 'tel', 'number', 'search', 'search-md', 'date']\n .map((selector) => `input[type=${selector}]`)\n .join(', ')}, textarea`;\n this.textAreaSelector = '.materialize-textarea';\n this.$text = $('.md-textarea-auto');\n this.$body = $('body');\n this.$document = $(document);\n }\n\n init() {\n\n if (this.$text.length) {\n let observe;\n\n if (window.attachEvent) {\n observe = function (element, event, handler) {\n element.attachEvent(`on${event}`, handler);\n };\n } else {\n observe = function (element, event, handler) {\n element.addEventListener(event, handler, false);\n };\n }\n\n this.$text.each(function () {\n const self = this;\n\n function resize() {\n self.style.height = 'auto';\n self.style.height = `${self.scrollHeight}px`;\n }\n\n function delayedResize() {\n window.setTimeout(resize, 0);\n }\n\n observe(self, 'change', resize);\n observe(self, 'cut', delayedResize);\n observe(self, 'paste', delayedResize);\n observe(self, 'drop', delayedResize);\n observe(self, 'keydown', delayedResize);\n\n resize();\n });\n }\n\n $(this.inputSelector).each((index, input) => {\n const $this = $(input);\n const isNotValid = input.validity.badInput;\n this.updateTextFields($this);\n\n if (isNotValid) {\n this.toggleActiveClass($this, 'add');\n }\n });\n\n this.addOnFocusEvent();\n this.addOnBlurEvent();\n this.addOnChangeEvent();\n this.addOnResetEvent();\n this.appendHiddenDiv();\n this.makeActiveAutofocus();\n\n $(this.textAreaSelector).each(this.textAreaAutoResize);\n this.$body.on('keyup keydown', this.textAreaSelector, this.textAreaAutoResize);\n }\n\n makeActiveAutofocus() {\n\n this.toggleActiveClass($('input[autofocus]'), 'add');\n }\n\n toggleActiveClass($this, action) {\n let selectors;\n action = `${action}Class`;\n\n if ($this.parent().hasClass('timepicker')) {\n selectors = 'label';\n } else {\n selectors = 'label, i, .input-prefix';\n }\n $this.siblings(selectors)[action]('active');\n }\n\n addOnFocusEvent() {\n this.$document.on('focus', this.inputSelector, (e) => {\n this.toggleActiveClass($(e.target), 'add');\n\n if($(e.target).attr(\"type\") == \"date\") {\n $(e.target).css(\"color\", \"#495057\");\n }\n });\n }\n\n addOnBlurEvent() {\n this.$document.on('blur', this.inputSelector, (e) => {\n const $this = $(e.target);\n const noValue = !$this.val();\n const isValid = !e.target.validity.badInput;\n const noPlaceholder = $this.attr('placeholder') === undefined;\n\n if (noValue && isValid && noPlaceholder) {\n this.toggleActiveClass($this, 'remove');\n if($this.attr(\"type\") == \"date\") {\n $this.css(\"color\", \"transparent\");\n }\n }\n\n if (!noValue && isValid && noPlaceholder) {\n $this.siblings('i, .input-prefix').removeClass('active');\n\n if($this.attr(\"type\") == \"date\") {\n $this.css(\"color\", \"#495057\");\n }\n }\n\n this.validateField($this);\n });\n }\n\n addOnChangeEvent() {\n this.$document.on('change', this.inputSelector, (e) => {\n const $this = $(e.target);\n\n this.updateTextFields($this);\n this.validateField($this);\n });\n }\n\n addOnResetEvent() {\n this.$document.on('reset', (e) => {\n const $formReset = $(e.target);\n\n if ($formReset.is('form')) {\n const $formInputs = $formReset.find(this.inputSelector);\n\n $formInputs\n .removeClass('valid invalid')\n .each((index, input) => {\n const $this = $(input);\n const noDefaultValue = !$this.val();\n const noPlaceholder = !$this.attr('placeholder');\n\n if (noDefaultValue && noPlaceholder) {\n this.toggleActiveClass($this, 'remove');\n }\n });\n\n $formReset.find('select.initialized').each((index, select) => {\n const $select = $(select);\n const $visibleInput = $select.siblings('input.select-dropdown');\n const defaultValue = $select.children('[selected]').val();\n\n $select.val(defaultValue);\n $visibleInput.val(defaultValue);\n });\n }\n });\n }\n\n appendHiddenDiv() {\n if (!$('.hiddendiv').first().length) {\n const $hiddenDiv = $('
');\n this.$body.append($hiddenDiv);\n }\n }\n\n updateTextFields($input) {\n const hasValue = Boolean($input.val());\n const hasPlaceholder = Boolean($input.attr('placeholder'));\n const addOrRemove = hasValue || hasPlaceholder ? 'add' : 'remove';\n const hasActiveLabel = $input.siblings('label').hasClass('active');\n const hasLabel = Boolean($input.siblings('label')[0])\n\n if($input.attr(\"type\") !== \"date\") {\n this.toggleActiveClass($input, addOrRemove);\n }\n\n if($input.attr(\"type\") == \"date\" && !hasActiveLabel && hasLabel) {\n $input.css(\"color\", \"transparent\");\n\n } else if($input.attr(\"type\") == \"date\" && hasValue) {\n this.toggleActiveClass($input, addOrRemove);\n }\n }\n\n validateField($input) {\n if ($input.hasClass('validate')) {\n const value = $input.val();\n const noValue = !value.length;\n const isValid = !$input[0].validity.badInput;\n\n if (noValue && isValid) {\n $input.removeClass('valid').removeClass('invalid');\n } else {\n const valid = $input[0].validity.valid;\n const length = Number($input.attr('length')) || 0;\n\n if (valid && (!length || length > value.length)) {\n $input.removeClass('invalid').addClass('valid');\n } else {\n $input.removeClass('valid').addClass('invalid');\n }\n }\n }\n }\n\n textAreaAutoResize() {\n const $textarea = $(this);\n\n if ($textarea.val().length) {\n const $hiddenDiv = $('.hiddendiv');\n const fontFamily = $textarea.css('font-family');\n const fontSize = $textarea.css('font-size');\n\n if (fontSize) {\n $hiddenDiv.css('font-size', fontSize);\n }\n\n if (fontFamily) {\n $hiddenDiv.css('font-family', fontFamily);\n }\n\n if ($textarea.attr('wrap') === 'off') {\n $hiddenDiv.css('overflow-wrap', 'normal').css('white-space', 'pre');\n }\n\n $hiddenDiv.text(`${$textarea.val()}\\n`);\n const content = $hiddenDiv.html().replace(/\\n/g, '
');\n $hiddenDiv.html(content);\n\n // When textarea is hidden, width goes crazy.\n // Approximate with half of window size\n $hiddenDiv.css('width', $textarea.is(':visible') ? $textarea.width() : $(window).width() / 2);\n $textarea.css('height', $hiddenDiv.height());\n }\n }\n }\n\n //auto init Forms\n const forms = new Forms();\n forms.init();\n\n});\n","jQuery(function ($) {\n\n const SCROLLING_NAVBAR_OFFSET_TOP = 50;\n\n $(window).on('scroll', () => {\n\n const $navbar = $('.navbar');\n \n if (!$navbar.length) return;\n\n $('.scrolling-navbar')[$navbar.offset().top > SCROLLING_NAVBAR_OFFSET_TOP ? 'addClass' : 'removeClass']('top-nav-collapse');\n });\n});\n","jQuery(($) => {\n $.fn.mdbTreeview = function () {\n\n const $this = $(this);\n\n if ($this.hasClass('treeview')) {\n treeviewToggle($this);\n }\n\n if ($this.hasClass('treeview-animated')) {\n treeviewAnimated($this);\n }\n\n if ($this.hasClass('treeview-colorful')) {\n treeviewColorful($this);\n }\n };\n\n function treeviewToggle($this) {\n const $toggler = $this.find('.rotate');\n\n $toggler.each(function () {\n const $this = $(this);\n\n $this.off('click');\n $this.on('click', function () {\n const $this = $(this);\n\n $this.siblings('.nested').toggleClass('active');\n $this.toggleClass('down');\n });\n });\n }\n\n function treeviewAnimated($this) {\n const $elements = $this.find('.treeview-animated-element');\n const $closed = $this.find('.closed');\n\n $this.find('.nested').hide();\n\n $closed.off('click');\n $closed.on('click', function () {\n const $this = $(this);\n const $target = $this.siblings('.nested');\n const $pointer = $this.children('.fa-angle-right');\n\n $this.toggleClass('open');\n $pointer.toggleClass('down');\n\n if (!$target.hasClass('active')) {\n $target.addClass('active').slideDown();\n } else {\n $target.removeClass('active').slideUp();\n }\n });\n\n $elements.off('click');\n $elements.on('click', function () {\n const $this = $(this);\n\n if ($this.hasClass('opened')) {\n $this.removeClass('opened');\n } else {\n $elements.removeClass('opened');\n $this.addClass('opened');\n }\n });\n }\n\n function treeviewColorful($this) {\n const $elements = $this.find('.treeview-colorful-element');\n const $header = $this.find('.treeview-colorful-items-header');\n\n $this.find('.nested').hide();\n\n $header.off('click');\n $header.on('click', function () {\n const $this = $(this);\n const $target = $this.siblings('.nested');\n const $pointerPlus = $this.children('.fa-plus-circle');\n const $pointerMinus = $this.children('.fa-minus-circle');\n\n $this.toggleClass('open');\n $pointerPlus.removeClass('fa-plus-circle');\n $pointerPlus.addClass('fa-minus-circle');\n $pointerMinus.removeClass('fa-minus-circle');\n $pointerMinus.addClass('fa-plus-circle');\n\n if (!$target.hasClass('active')) {\n $target.addClass('active').slideDown();\n } else {\n $target.removeClass('active').slideUp();\n }\n });\n\n $elements.off('click');\n $elements.on('click', function () {\n const $this = $(this);\n\n if ($this.hasClass('opened')) {\n $elements.removeClass('opened');\n } else {\n $elements.removeClass('opened');\n $this.addClass('opened');\n }\n });\n }\n});\n","jQuery($ => {\n\n class WOW {\n init() {\n $('.wow').wow();\n }\n }\n\n class MDBWow {\n constructor($wowElement, customization) {\n this.$wowElement = $wowElement;\n this.customization = customization;\n this.animated = true;\n this.options = this.assignElementCustomization();\n }\n\n init() {\n $(window).scroll(() => {\n if (this.animated) {\n this.hide();\n } else {\n this.mdbWow();\n }\n });\n\n this.appear();\n }\n\n assignElementCustomization() {\n return {\n animationName: this.$wowElement.css('animation-name'),\n offset: 100,\n iteration: this.fallback()\n .or(this.$wowElement.data('wow-iteration'))\n .or(1)\n .value(),\n duration: this.fallback()\n .or(this.$wowElement.data('wow-duration'))\n .or(1000)\n .value(),\n delay: this.fallback()\n .or(this.$wowElement.data('wow-delay'))\n .or(0)\n .value()\n };\n }\n\n mdbWow() {\n if (this.$wowElement.css('visibility') === 'visible') {\n return;\n }\n\n if (this.shouldElementBeVisible(true)) {\n setTimeout(() => this.$wowElement.removeClass('animated'), this.countRemoveTime());\n this.appear();\n }\n }\n\n appear() {\n this.$wowElement.addClass('animated');\n this.$wowElement.css({\n visibility: 'visible',\n 'animation-name': this.options.animationName,\n 'animation-iteration-count': this.options.iteration,\n 'animation-duration': this.options.duration,\n 'animation-delay': this.options.delay\n });\n }\n\n hide() {\n if (this.shouldElementBeVisible(false)) {\n this.$wowElement.removeClass('animated');\n this.$wowElement.css({\n 'animation-name': 'none',\n visibility: 'hidden'\n });\n } else {\n setTimeout(() => {\n this.$wowElement.removeClass('animated');\n }, this.countRemoveTime());\n }\n this.mdbWow();\n this.animated = !this.animated;\n }\n\n shouldElementBeVisible(state) {\n const thisElementOffset = this.getOffset(this.$wowElement[0]);\n const thisElementHeight = this.$wowElement.height();\n const documentHeight = $(document).height();\n const windowHeight = window.innerHeight;\n const scroll = window.scrollY;\n\n const isElementTopVisible = windowHeight + scroll - this.options.offset > thisElementOffset;\n const isElementBottomVisible = windowHeight + scroll - this.options.offset > thisElementOffset + thisElementHeight;\n const isScrolledToTop = scroll < thisElementOffset;\n const isScrolledToBottom = scroll < thisElementOffset + thisElementHeight;\n const isDocumentHeightEqual = windowHeight + scroll === documentHeight;\n const isOffsetHigherThanDocument = thisElementOffset + this.options.offset > documentHeight;\n const isElementBottomHidden = windowHeight + scroll - this.options.offset < thisElementOffset;\n const isScrolledOverTop = scroll > thisElementOffset + this.options.offset;\n const isNotScrolledToTop = scroll < thisElementOffset + this.options.offset;\n const isScrolledOverElement = thisElementOffset + thisElementHeight > documentHeight - this.options.offset;\n\n let returnLogic = false;\n\n if (state) {\n returnLogic = isElementTopVisible && isScrolledToTop ||\n isElementBottomVisible && isScrolledToBottom ||\n isDocumentHeightEqual && isOffsetHigherThanDocument;\n } else {\n returnLogic = isElementTopVisible && isScrolledOverTop ||\n isElementBottomHidden && isNotScrolledToTop ||\n isScrolledOverElement;\n }\n return returnLogic;\n }\n\n countRemoveTime() {\n const defaultAnimationTime = this.$wowElement.css('animation-duration').slice(0, -1) * 1000;\n let removeTime = 0;\n\n if (this.options.duration) {\n removeTime = defaultAnimationTime + this.checkOptionsStringFormat(this.options.duration);\n }\n if (this.options.delay) {\n removeTime += this.checkOptionsStringFormat(this.options.delay);\n }\n return removeTime;\n }\n\n checkOptionsStringFormat(element) {\n let valueToReturn;\n\n if (element.toString().slice(-1) === 's') {\n valueToReturn = element.toString().slice(0, -1);\n } else if (!isNaN(element.toString().slice(-1))) {\n valueToReturn = element;\n } else {\n return console.log('Not supported animation customization format.');\n }\n\n return valueToReturn;\n }\n\n getOffset(element) {\n const box = element.getBoundingClientRect();\n const body = document.body;\n const docEl = document.documentElement;\n const scrollTop = window.pageYOffset || docEl.scrollTop || body.scrollTop;\n const clientTop = docEl.clientTop || body.clientTop || 0;\n const top = box.top + scrollTop - clientTop;\n\n return Math.round(top);\n }\n\n fallback() {\n return {\n _value: undefined,\n or(value) {\n if (typeof value !== 'undefined' && typeof this._value === 'undefined') {\n this._value = value;\n }\n return this;\n },\n value() {\n return this._value;\n }\n };\n }\n }\n\n $.fn.wow = function (options) {\n this.each(function () {\n const mdbWow = new MDBWow($(this), options);\n mdbWow.init();\n });\n };\n\n window.WOW = WOW;\n\n});\n","var $ = require('../internals/export');\nvar fill = require('../internals/array-fill');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.fill` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n fill: fill\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n","var $ = require('../internals/export');\n\n// `Number.MAX_SAFE_INTEGER` constant\n// https://tc39.github.io/ecma262/#sec-number.max_safe_integer\n$({ target: 'Number', stat: true }, {\n MAX_SAFE_INTEGER: 0x1FFFFFFFFFFFFF\n});\n","var $ = require('../internals/export');\n\n// `Number.MIN_SAFE_INTEGER` constant\n// https://tc39.github.io/ecma262/#sec-number.min_safe_integer\n$({ target: 'Number', stat: true }, {\n MIN_SAFE_INTEGER: -0x1FFFFFFFFFFFFF\n});\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","'use strict';\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefineAll = require('../internals/redefine-all');\nvar fails = require('../internals/fails');\nvar anInstance = require('../internals/an-instance');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar arrayFill = require('../internals/array-fill');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar $DataView = global[DATA_VIEW];\nvar Math = global.Math;\nvar RangeError = global.RangeError;\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = 1 / 0;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nvar packIEEE754 = function (number, mantissaLength, bytes) {\n var buffer = new Array(bytes);\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n var index = 0;\n var exponent, mantissa, c;\n number = abs(number);\n // eslint-disable-next-line no-self-compare\n if (number != number || number === Infinity) {\n // eslint-disable-next-line no-self-compare\n mantissa = number != number ? 1 : 0;\n exponent = eMax;\n } else {\n exponent = floor(log(number) / LN2);\n if (number * (c = pow(2, -exponent)) < 1) {\n exponent--;\n c *= 2;\n }\n if (exponent + eBias >= 1) {\n number += rt / c;\n } else {\n number += rt * pow(2, 1 - eBias);\n }\n if (number * c >= 2) {\n exponent++;\n c /= 2;\n }\n if (exponent + eBias >= eMax) {\n mantissa = 0;\n exponent = eMax;\n } else if (exponent + eBias >= 1) {\n mantissa = (number * c - 1) * pow(2, mantissaLength);\n exponent = exponent + eBias;\n } else {\n mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n exponent = 0;\n }\n }\n for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8);\n exponent = exponent << mantissaLength | mantissa;\n exponentLength += mantissaLength;\n for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8);\n buffer[--index] |= sign * 128;\n return buffer;\n};\n\nvar unpackIEEE754 = function (buffer, mantissaLength) {\n var bytes = buffer.length;\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var nBits = exponentLength - 7;\n var index = bytes - 1;\n var sign = buffer[index--];\n var exponent = sign & 127;\n var mantissa;\n sign >>= 7;\n for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8);\n mantissa = exponent & (1 << -nBits) - 1;\n exponent >>= -nBits;\n nBits += mantissaLength;\n for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8);\n if (exponent === 0) {\n exponent = 1 - eBias;\n } else if (exponent === eMax) {\n return mantissa ? NaN : sign ? -Infinity : Infinity;\n } else {\n mantissa = mantissa + pow(2, mantissaLength);\n exponent = exponent - eBias;\n } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nvar unpackInt32 = function (buffer) {\n return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packInt8 = function (number) {\n return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar packFloat32 = function (number) {\n return packIEEE754(number, 23, 4);\n};\n\nvar packFloat64 = function (number) {\n return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key) {\n defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = bytes.slice(start, start + count);\n return isLittleEndian ? pack : pack.reverse();\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = conversion(+value);\n for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n setInternalState(this, {\n bytes: arrayFill.call(new Array(byteLength), 0),\n byteLength: byteLength\n });\n if (!DESCRIPTORS) this.byteLength = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = getInternalState(buffer).byteLength;\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n setInternalState(this, {\n buffer: buffer,\n byteLength: byteLength,\n byteOffset: offset\n });\n if (!DESCRIPTORS) {\n this.buffer = buffer;\n this.byteLength = byteLength;\n this.byteOffset = offset;\n }\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, 'byteLength');\n addGetter($DataView, 'buffer');\n addGetter($DataView, 'byteLength');\n addGetter($DataView, 'byteOffset');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);\n }\n });\n} else {\n if (!fails(function () {\n NativeArrayBuffer(1);\n }) || !fails(function () {\n new NativeArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new NativeArrayBuffer(); // eslint-disable-line no-new\n new NativeArrayBuffer(1.5); // eslint-disable-line no-new\n new NativeArrayBuffer(NaN); // eslint-disable-line no-new\n return NativeArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new NativeArrayBuffer(toIndex(length));\n };\n var ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE] = NativeArrayBuffer[PROTOTYPE];\n for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) {\n createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n }\n }\n ArrayBufferPrototype.constructor = $ArrayBuffer;\n }\n // iOS Safari 7.x bug\n var testView = new $DataView(new $ArrayBuffer(2));\n var nativeSetInt8 = $DataView[PROTOTYPE].setInt8;\n testView.setInt8(0, 2147483648);\n testView.setInt8(1, 2147483649);\n if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n setInt8: function setInt8(byteOffset, value) {\n nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n ArrayBuffer: $ArrayBuffer,\n DataView: $DataView\n};\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","var toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\n\n// `ToIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length or index');\n return length;\n};\n","var toPositiveInteger = require('../internals/to-positive-integer');\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw RangeError('Wrong offset');\n return offset;\n};\n","// JS VENDOR FREE\nimport './vendor/free/bs-custom-file-input'\nimport './vendor/free/chart'\nimport './vendor/free/chartjs-datalabels'\nimport './vendor/free/enhanced-modals'\nimport './vendor/free/jquery.easing'\nimport './vendor/free/velocity'\nimport './vendor/free/waves'\n\n// JS FREE\nimport './free/forms-free'\nimport './free/scrolling-navbar'\nimport './free/treeview'\nimport './free/wow'\n","/*!\n * bsCustomFileInput v1.3.2 (https://github.com/Johann-S/bs-custom-file-input)\n * Copyright 2018 - 2019 Johann-S \n * Licensed under MIT (https://github.com/Johann-S/bs-custom-file-input/blob/master/LICENSE)\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 = global || self, global.bsCustomFileInput = factory());\n}(this, function () {\n 'use strict';\n\n var Selector = {\n CUSTOMFILE: '.custom-file input[type=\"file\"]',\n CUSTOMFILELABEL: '.custom-file-label',\n FORM: 'form',\n INPUT: 'input'\n };\n\n var textNodeType = 3;\n\n var getDefaultText = function getDefaultText(input) {\n var defaultText = '';\n var label = input.parentNode.querySelector(Selector.CUSTOMFILELABEL);\n\n if (label) {\n defaultText = label.innerHTML;\n }\n\n return defaultText;\n };\n\n var findFirstChildNode = function findFirstChildNode(element) {\n if (element.childNodes.length > 0) {\n var childNodes = [].slice.call(element.childNodes);\n\n for (var i = 0; i < childNodes.length; i++) {\n var node = childNodes[i];\n\n if (node.nodeType !== textNodeType) {\n return node;\n }\n }\n }\n\n return element;\n };\n\n var restoreDefaultText = function restoreDefaultText(input) {\n var defaultText = input.bsCustomFileInput.defaultText;\n var label = input.parentNode.querySelector(Selector.CUSTOMFILELABEL);\n\n if (label) {\n var element = findFirstChildNode(label);\n element.innerHTML = defaultText;\n }\n };\n\n var fileApi = !!window.File;\n var FAKE_PATH = 'fakepath';\n var FAKE_PATH_SEPARATOR = '\\\\';\n\n var getSelectedFiles = function getSelectedFiles(input) {\n if (input.hasAttribute('multiple') && fileApi) {\n return [].slice.call(input.files).map(function (file) {\n return file.name;\n }).join(', ');\n }\n\n if (input.value.indexOf(FAKE_PATH) !== -1) {\n var splittedValue = input.value.split(FAKE_PATH_SEPARATOR);\n return splittedValue[splittedValue.length - 1];\n }\n\n return input.value;\n };\n\n function handleInputChange() {\n var label = this.parentNode.querySelector(Selector.CUSTOMFILELABEL);\n\n if (label) {\n var element = findFirstChildNode(label);\n var inputValue = getSelectedFiles(this);\n\n if (inputValue.length) {\n element.innerHTML = inputValue;\n } else {\n restoreDefaultText(this);\n }\n }\n }\n\n function handleFormReset() {\n var customFileList = [].slice.call(this.querySelectorAll(Selector.INPUT)).filter(function (input) {\n return !!input.bsCustomFileInput;\n });\n\n for (var i = 0, len = customFileList.length; i < len; i++) {\n restoreDefaultText(customFileList[i]);\n }\n }\n\n var customProperty = 'bsCustomFileInput';\n var Event = {\n FORMRESET: 'reset',\n INPUTCHANGE: 'change'\n };\n var bsCustomFileInput = {\n init: function init(inputSelector, formSelector) {\n if (inputSelector === void 0) {\n inputSelector = Selector.CUSTOMFILE;\n }\n\n if (formSelector === void 0) {\n formSelector = Selector.FORM;\n }\n\n var customFileInputList = [].slice.call(document.querySelectorAll(inputSelector));\n var formList = [].slice.call(document.querySelectorAll(formSelector));\n\n for (var i = 0, len = customFileInputList.length; i < len; i++) {\n var input = customFileInputList[i];\n Object.defineProperty(input, customProperty, {\n value: {\n defaultText: getDefaultText(input)\n },\n writable: true\n });\n handleInputChange.call(input);\n input.addEventListener(Event.INPUTCHANGE, handleInputChange);\n }\n\n for (var _i = 0, _len = formList.length; _i < _len; _i++) {\n formList[_i].addEventListener(Event.FORMRESET, handleFormReset);\n\n Object.defineProperty(formList[_i], customProperty, {\n value: true,\n writable: true\n });\n }\n },\n destroy: function destroy() {\n var formList = [].slice.call(document.querySelectorAll(Selector.FORM)).filter(function (form) {\n return !!form.bsCustomFileInput;\n });\n var customFileInputList = [].slice.call(document.querySelectorAll(Selector.INPUT)).filter(function (input) {\n return !!input.bsCustomFileInput;\n });\n\n for (var i = 0, len = customFileInputList.length; i < len; i++) {\n var input = customFileInputList[i];\n restoreDefaultText(input);\n input[customProperty] = undefined;\n input.removeEventListener(Event.INPUTCHANGE, handleInputChange);\n }\n\n for (var _i2 = 0, _len2 = formList.length; _i2 < _len2; _i2++) {\n formList[_i2].removeEventListener(Event.FORMRESET, handleFormReset);\n\n formList[_i2][customProperty] = undefined;\n }\n }\n };\n\n return bsCustomFileInput;\n\n}));\n//# sourceMappingURL=bs-custom-file-input.js.map\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n\n bsCustomFileInput.init()\n});\n","/*!\n * Chart.js\n * http://chartjs.org/\n * Version: 2.7.3\n *\n * Copyright 2018 Chart.js Contributors\n * Released under the MIT license\n * https://github.com/chartjs/Chart.js/blob/master/LICENSE.md\n */\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.Chart = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i 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] = convert[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\nmodule.exports = Color;\n\n},{\"2\":2,\"5\":5}],4:[function(require,module,exports){\n/* MIT license */\n\nmodule.exports = {\n rgb2hsl: rgb2hsl,\n rgb2hsv: rgb2hsv,\n rgb2hwb: rgb2hwb,\n rgb2cmyk: rgb2cmyk,\n rgb2keyword: rgb2keyword,\n rgb2xyz: rgb2xyz,\n rgb2lab: rgb2lab,\n rgb2lch: rgb2lch,\n\n hsl2rgb: hsl2rgb,\n hsl2hsv: hsl2hsv,\n hsl2hwb: hsl2hwb,\n hsl2cmyk: hsl2cmyk,\n hsl2keyword: hsl2keyword,\n\n hsv2rgb: hsv2rgb,\n hsv2hsl: hsv2hsl,\n hsv2hwb: hsv2hwb,\n hsv2cmyk: hsv2cmyk,\n hsv2keyword: hsv2keyword,\n\n hwb2rgb: hwb2rgb,\n hwb2hsl: hwb2hsl,\n hwb2hsv: hwb2hsv,\n hwb2cmyk: hwb2cmyk,\n hwb2keyword: hwb2keyword,\n\n cmyk2rgb: cmyk2rgb,\n cmyk2hsl: cmyk2hsl,\n cmyk2hsv: cmyk2hsv,\n cmyk2hwb: cmyk2hwb,\n cmyk2keyword: cmyk2keyword,\n\n keyword2rgb: keyword2rgb,\n keyword2hsl: keyword2hsl,\n keyword2hsv: keyword2hsv,\n keyword2hwb: keyword2hwb,\n keyword2cmyk: keyword2cmyk,\n keyword2lab: keyword2lab,\n keyword2xyz: keyword2xyz,\n\n xyz2rgb: xyz2rgb,\n xyz2lab: xyz2lab,\n xyz2lch: xyz2lch,\n\n lab2xyz: lab2xyz,\n lab2rgb: lab2rgb,\n lab2lch: lab2lch,\n\n lch2lab: lch2lab,\n lch2xyz: lch2xyz,\n lch2rgb: lch2rgb\n}\n\n\nfunction rgb2hsl(rgb) {\n var r = rgb[0]/255,\n g = rgb[1]/255,\n b = rgb[2]/255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n delta = max - min,\n h, s, l;\n\n if (max == min)\n h = 0;\n else if (r == max)\n h = (g - b) / delta;\n else if (g == max)\n h = 2 + (b - r) / delta;\n else if (b == max)\n h = 4 + (r - g)/ delta;\n\n h = Math.min(h * 60, 360);\n\n if (h < 0)\n h += 360;\n\n l = (min + max) / 2;\n\n if (max == min)\n s = 0;\n else if (l <= 0.5)\n s = delta / (max + min);\n else\n s = delta / (2 - max - min);\n\n return [h, s * 100, l * 100];\n}\n\nfunction rgb2hsv(rgb) {\n var r = rgb[0],\n g = rgb[1],\n b = rgb[2],\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n delta = max - min,\n h, s, v;\n\n if (max == 0)\n s = 0;\n else\n s = (delta/max * 1000)/10;\n\n if (max == min)\n h = 0;\n else if (r == max)\n h = (g - b) / delta;\n else if (g == max)\n h = 2 + (b - r) / delta;\n else if (b == max)\n h = 4 + (r - g) / delta;\n\n h = Math.min(h * 60, 360);\n\n if (h < 0)\n h += 360;\n\n v = ((max / 255) * 1000) / 10;\n\n return [h, s, v];\n}\n\nfunction rgb2hwb(rgb) {\n var r = rgb[0],\n g = rgb[1],\n b = rgb[2],\n h = rgb2hsl(rgb)[0],\n w = 1/255 * Math.min(r, Math.min(g, b)),\n b = 1 - 1/255 * Math.max(r, Math.max(g, b));\n\n return [h, w * 100, b * 100];\n}\n\nfunction rgb2cmyk(rgb) {\n var r = rgb[0] / 255,\n g = rgb[1] / 255,\n b = rgb[2] / 255,\n c, m, y, k;\n\n k = Math.min(1 - r, 1 - g, 1 - b);\n c = (1 - r - k) / (1 - k) || 0;\n m = (1 - g - k) / (1 - k) || 0;\n y = (1 - b - k) / (1 - k) || 0;\n return [c * 100, m * 100, y * 100, k * 100];\n}\n\nfunction rgb2keyword(rgb) {\n return reverseKeywords[JSON.stringify(rgb)];\n}\n\nfunction rgb2xyz(rgb) {\n var r = rgb[0] / 255,\n g = rgb[1] / 255,\n b = rgb[2] / 255;\n\n // assume sRGB\n r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n return [x * 100, y *100, z * 100];\n}\n\nfunction rgb2lab(rgb) {\n var xyz = rgb2xyz(rgb),\n x = xyz[0],\n y = xyz[1],\n z = xyz[2],\n l, a, b;\n\n x /= 95.047;\n y /= 100;\n z /= 108.883;\n\n x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);\n y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);\n z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);\n\n l = (116 * y) - 16;\n a = 500 * (x - y);\n b = 200 * (y - z);\n\n return [l, a, b];\n}\n\nfunction rgb2lch(args) {\n return lab2lch(rgb2lab(args));\n}\n\nfunction hsl2rgb(hsl) {\n var h = hsl[0] / 360,\n s = hsl[1] / 100,\n l = hsl[2] / 100,\n t1, t2, t3, rgb, val;\n\n if (s == 0) {\n val = l * 255;\n return [val, val, val];\n }\n\n if (l < 0.5)\n t2 = l * (1 + s);\n else\n t2 = l + s - l * s;\n t1 = 2 * l - t2;\n\n rgb = [0, 0, 0];\n for (var i = 0; i < 3; i++) {\n t3 = h + 1 / 3 * - (i - 1);\n t3 < 0 && t3++;\n t3 > 1 && t3--;\n\n if (6 * t3 < 1)\n val = t1 + (t2 - t1) * 6 * t3;\n else if (2 * t3 < 1)\n val = t2;\n else if (3 * t3 < 2)\n val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n else\n val = t1;\n\n rgb[i] = val * 255;\n }\n\n return rgb;\n}\n\nfunction hsl2hsv(hsl) {\n var h = hsl[0],\n s = hsl[1] / 100,\n l = hsl[2] / 100,\n sv, v;\n\n if(l === 0) {\n // no need to do calc on black\n // also avoids divide by 0 error\n return [0, 0, 0];\n }\n\n l *= 2;\n s *= (l <= 1) ? l : 2 - l;\n v = (l + s) / 2;\n sv = (2 * s) / (l + s);\n return [h, sv * 100, v * 100];\n}\n\nfunction hsl2hwb(args) {\n return rgb2hwb(hsl2rgb(args));\n}\n\nfunction hsl2cmyk(args) {\n return rgb2cmyk(hsl2rgb(args));\n}\n\nfunction hsl2keyword(args) {\n return rgb2keyword(hsl2rgb(args));\n}\n\n\nfunction hsv2rgb(hsv) {\n var h = hsv[0] / 60,\n s = hsv[1] / 100,\n v = hsv[2] / 100,\n hi = Math.floor(h) % 6;\n\n var f = h - Math.floor(h),\n p = 255 * v * (1 - s),\n q = 255 * v * (1 - (s * f)),\n t = 255 * v * (1 - (s * (1 - f))),\n v = 255 * v;\n\n switch(hi) {\n case 0:\n return [v, t, p];\n case 1:\n return [q, v, p];\n case 2:\n return [p, v, t];\n case 3:\n return [p, q, v];\n case 4:\n return [t, p, v];\n case 5:\n return [v, p, q];\n }\n}\n\nfunction hsv2hsl(hsv) {\n var h = hsv[0],\n s = hsv[1] / 100,\n v = hsv[2] / 100,\n sl, l;\n\n l = (2 - s) * v;\n sl = s * v;\n sl /= (l <= 1) ? l : 2 - l;\n sl = sl || 0;\n l /= 2;\n return [h, sl * 100, l * 100];\n}\n\nfunction hsv2hwb(args) {\n return rgb2hwb(hsv2rgb(args))\n}\n\nfunction hsv2cmyk(args) {\n return rgb2cmyk(hsv2rgb(args));\n}\n\nfunction hsv2keyword(args) {\n return rgb2keyword(hsv2rgb(args));\n}\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nfunction hwb2rgb(hwb) {\n var h = hwb[0] / 360,\n wh = hwb[1] / 100,\n bl = hwb[2] / 100,\n ratio = wh + bl,\n i, v, f, n;\n\n // wh + bl cant be > 1\n if (ratio > 1) {\n wh /= ratio;\n bl /= ratio;\n }\n\n i = Math.floor(6 * h);\n v = 1 - bl;\n f = 6 * h - i;\n if ((i & 0x01) != 0) {\n f = 1 - f;\n }\n n = wh + f * (v - wh); // linear interpolation\n\n switch (i) {\n default:\n case 6:\n case 0: r = v; g = n; b = wh; break;\n case 1: r = n; g = v; b = wh; break;\n case 2: r = wh; g = v; b = n; break;\n case 3: r = wh; g = n; b = v; break;\n case 4: r = n; g = wh; b = v; break;\n case 5: r = v; g = wh; b = n; break;\n }\n\n return [r * 255, g * 255, b * 255];\n}\n\nfunction hwb2hsl(args) {\n return rgb2hsl(hwb2rgb(args));\n}\n\nfunction hwb2hsv(args) {\n return rgb2hsv(hwb2rgb(args));\n}\n\nfunction hwb2cmyk(args) {\n return rgb2cmyk(hwb2rgb(args));\n}\n\nfunction hwb2keyword(args) {\n return rgb2keyword(hwb2rgb(args));\n}\n\nfunction cmyk2rgb(cmyk) {\n var c = cmyk[0] / 100,\n m = cmyk[1] / 100,\n y = cmyk[2] / 100,\n k = cmyk[3] / 100,\n r, g, b;\n\n r = 1 - Math.min(1, c * (1 - k) + k);\n g = 1 - Math.min(1, m * (1 - k) + k);\n b = 1 - Math.min(1, y * (1 - k) + k);\n return [r * 255, g * 255, b * 255];\n}\n\nfunction cmyk2hsl(args) {\n return rgb2hsl(cmyk2rgb(args));\n}\n\nfunction cmyk2hsv(args) {\n return rgb2hsv(cmyk2rgb(args));\n}\n\nfunction cmyk2hwb(args) {\n return rgb2hwb(cmyk2rgb(args));\n}\n\nfunction cmyk2keyword(args) {\n return rgb2keyword(cmyk2rgb(args));\n}\n\n\nfunction xyz2rgb(xyz) {\n var x = xyz[0] / 100,\n y = xyz[1] / 100,\n z = xyz[2] / 100,\n r, g, b;\n\n r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n // assume sRGB\n r = r > 0.0031308 ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n : r = (r * 12.92);\n\n g = g > 0.0031308 ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n : g = (g * 12.92);\n\n b = b > 0.0031308 ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n : b = (b * 12.92);\n\n r = Math.min(Math.max(0, r), 1);\n g = Math.min(Math.max(0, g), 1);\n b = Math.min(Math.max(0, b), 1);\n\n return [r * 255, g * 255, b * 255];\n}\n\nfunction xyz2lab(xyz) {\n var x = xyz[0],\n y = xyz[1],\n z = xyz[2],\n l, a, b;\n\n x /= 95.047;\n y /= 100;\n z /= 108.883;\n\n x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);\n y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);\n z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);\n\n l = (116 * y) - 16;\n a = 500 * (x - y);\n b = 200 * (y - z);\n\n return [l, a, b];\n}\n\nfunction xyz2lch(args) {\n return lab2lch(xyz2lab(args));\n}\n\nfunction lab2xyz(lab) {\n var l = lab[0],\n a = lab[1],\n b = lab[2],\n x, y, z, y2;\n\n if (l <= 8) {\n y = (l * 100) / 903.3;\n y2 = (7.787 * (y / 100)) + (16 / 116);\n } else {\n y = 100 * Math.pow((l + 16) / 116, 3);\n y2 = Math.pow(y / 100, 1/3);\n }\n\n x = x / 95.047 <= 0.008856 ? x = (95.047 * ((a / 500) + y2 - (16 / 116))) / 7.787 : 95.047 * Math.pow((a / 500) + y2, 3);\n\n z = z / 108.883 <= 0.008859 ? z = (108.883 * (y2 - (b / 200) - (16 / 116))) / 7.787 : 108.883 * Math.pow(y2 - (b / 200), 3);\n\n return [x, y, z];\n}\n\nfunction lab2lch(lab) {\n var l = lab[0],\n a = lab[1],\n b = lab[2],\n hr, h, c;\n\n hr = Math.atan2(b, a);\n h = hr * 360 / 2 / Math.PI;\n if (h < 0) {\n h += 360;\n }\n c = Math.sqrt(a * a + b * b);\n return [l, c, h];\n}\n\nfunction lab2rgb(args) {\n return xyz2rgb(lab2xyz(args));\n}\n\nfunction lch2lab(lch) {\n var l = lch[0],\n c = lch[1],\n h = lch[2],\n a, b, hr;\n\n hr = h / 360 * 2 * Math.PI;\n a = c * Math.cos(hr);\n b = c * Math.sin(hr);\n return [l, a, b];\n}\n\nfunction lch2xyz(args) {\n return lab2xyz(lch2lab(args));\n}\n\nfunction lch2rgb(args) {\n return lab2rgb(lch2lab(args));\n}\n\nfunction keyword2rgb(keyword) {\n return cssKeywords[keyword];\n}\n\nfunction keyword2hsl(args) {\n return rgb2hsl(keyword2rgb(args));\n}\n\nfunction keyword2hsv(args) {\n return rgb2hsv(keyword2rgb(args));\n}\n\nfunction keyword2hwb(args) {\n return rgb2hwb(keyword2rgb(args));\n}\n\nfunction keyword2cmyk(args) {\n return rgb2cmyk(keyword2rgb(args));\n}\n\nfunction keyword2lab(args) {\n return rgb2lab(keyword2rgb(args));\n}\n\nfunction keyword2xyz(args) {\n return rgb2xyz(keyword2rgb(args));\n}\n\nvar cssKeywords = {\n aliceblue: [240,248,255],\n antiquewhite: [250,235,215],\n aqua: [0,255,255],\n aquamarine: [127,255,212],\n azure: [240,255,255],\n beige: [245,245,220],\n bisque: [255,228,196],\n black: [0,0,0],\n blanchedalmond: [255,235,205],\n blue: [0,0,255],\n blueviolet: [138,43,226],\n brown: [165,42,42],\n burlywood: [222,184,135],\n cadetblue: [95,158,160],\n chartreuse: [127,255,0],\n chocolate: [210,105,30],\n coral: [255,127,80],\n cornflowerblue: [100,149,237],\n cornsilk: [255,248,220],\n crimson: [220,20,60],\n cyan: [0,255,255],\n darkblue: [0,0,139],\n darkcyan: [0,139,139],\n darkgoldenrod: [184,134,11],\n darkgray: [169,169,169],\n darkgreen: [0,100,0],\n darkgrey: [169,169,169],\n darkkhaki: [189,183,107],\n darkmagenta: [139,0,139],\n darkolivegreen: [85,107,47],\n darkorange: [255,140,0],\n darkorchid: [153,50,204],\n darkred: [139,0,0],\n darksalmon: [233,150,122],\n darkseagreen: [143,188,143],\n darkslateblue: [72,61,139],\n darkslategray: [47,79,79],\n darkslategrey: [47,79,79],\n darkturquoise: [0,206,209],\n darkviolet: [148,0,211],\n deeppink: [255,20,147],\n deepskyblue: [0,191,255],\n dimgray: [105,105,105],\n dimgrey: [105,105,105],\n dodgerblue: [30,144,255],\n firebrick: [178,34,34],\n floralwhite: [255,250,240],\n forestgreen: [34,139,34],\n fuchsia: [255,0,255],\n gainsboro: [220,220,220],\n ghostwhite: [248,248,255],\n gold: [255,215,0],\n goldenrod: [218,165,32],\n gray: [128,128,128],\n green: [0,128,0],\n greenyellow: [173,255,47],\n grey: [128,128,128],\n honeydew: [240,255,240],\n hotpink: [255,105,180],\n indianred: [205,92,92],\n indigo: [75,0,130],\n ivory: [255,255,240],\n khaki: [240,230,140],\n lavender: [230,230,250],\n lavenderblush: [255,240,245],\n lawngreen: [124,252,0],\n lemonchiffon: [255,250,205],\n lightblue: [173,216,230],\n lightcoral: [240,128,128],\n lightcyan: [224,255,255],\n lightgoldenrodyellow: [250,250,210],\n lightgray: [211,211,211],\n lightgreen: [144,238,144],\n lightgrey: [211,211,211],\n lightpink: [255,182,193],\n lightsalmon: [255,160,122],\n lightseagreen: [32,178,170],\n lightskyblue: [135,206,250],\n lightslategray: [119,136,153],\n lightslategrey: [119,136,153],\n lightsteelblue: [176,196,222],\n lightyellow: [255,255,224],\n lime: [0,255,0],\n limegreen: [50,205,50],\n linen: [250,240,230],\n magenta: [255,0,255],\n maroon: [128,0,0],\n mediumaquamarine: [102,205,170],\n mediumblue: [0,0,205],\n mediumorchid: [186,85,211],\n mediumpurple: [147,112,219],\n mediumseagreen: [60,179,113],\n mediumslateblue: [123,104,238],\n mediumspringgreen: [0,250,154],\n mediumturquoise: [72,209,204],\n mediumvioletred: [199,21,133],\n midnightblue: [25,25,112],\n mintcream: [245,255,250],\n mistyrose: [255,228,225],\n moccasin: [255,228,181],\n navajowhite: [255,222,173],\n navy: [0,0,128],\n oldlace: [253,245,230],\n olive: [128,128,0],\n olivedrab: [107,142,35],\n orange: [255,165,0],\n orangered: [255,69,0],\n orchid: [218,112,214],\n palegoldenrod: [238,232,170],\n palegreen: [152,251,152],\n paleturquoise: [175,238,238],\n palevioletred: [219,112,147],\n papayawhip: [255,239,213],\n peachpuff: [255,218,185],\n peru: [205,133,63],\n pink: [255,192,203],\n plum: [221,160,221],\n powderblue: [176,224,230],\n purple: [128,0,128],\n rebeccapurple: [102, 51, 153],\n red: [255,0,0],\n rosybrown: [188,143,143],\n royalblue: [65,105,225],\n saddlebrown: [139,69,19],\n salmon: [250,128,114],\n sandybrown: [244,164,96],\n seagreen: [46,139,87],\n seashell: [255,245,238],\n sienna: [160,82,45],\n silver: [192,192,192],\n skyblue: [135,206,235],\n slateblue: [106,90,205],\n slategray: [112,128,144],\n slategrey: [112,128,144],\n snow: [255,250,250],\n springgreen: [0,255,127],\n steelblue: [70,130,180],\n tan: [210,180,140],\n teal: [0,128,128],\n thistle: [216,191,216],\n tomato: [255,99,71],\n turquoise: [64,224,208],\n violet: [238,130,238],\n wheat: [245,222,179],\n white: [255,255,255],\n whitesmoke: [245,245,245],\n yellow: [255,255,0],\n yellowgreen: [154,205,50]\n};\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n reverseKeywords[JSON.stringify(cssKeywords[key])] = key;\n}\n\n},{}],5:[function(require,module,exports){\nvar conversions = require(4);\n\nvar convert = function() {\n return new Converter();\n}\n\nfor (var func in conversions) {\n // export Raw versions\n convert[func + \"Raw\"] = (function(func) {\n // accept array or plain args\n return function(arg) {\n if (typeof arg == \"number\")\n arg = Array.prototype.slice.call(arguments);\n return conversions[func](arg);\n }\n })(func);\n\n var pair = /(\\w+)2(\\w+)/.exec(func),\n from = pair[1],\n to = pair[2];\n\n // export rgb2hsl and [\"rgb\"][\"hsl\"]\n convert[from] = convert[from] || {};\n\n convert[from][to] = convert[func] = (function(func) {\n return function(arg) {\n if (typeof arg == \"number\")\n arg = Array.prototype.slice.call(arguments);\n\n var val = conversions[func](arg);\n if (typeof val == \"string\" || val === undefined)\n return val; // keyword\n\n for (var i = 0; i < val.length; i++)\n val[i] = Math.round(val[i]);\n return val;\n }\n })(func);\n}\n\n\n/* Converter does lazy conversion and caching */\nvar Converter = function() {\n this.convs = {};\n};\n\n/* Either get the values for a space or\n set the values for a space, depending on args */\nConverter.prototype.routeSpace = function(space, args) {\n var values = args[0];\n if (values === undefined) {\n // color.rgb()\n return this.getValues(space);\n }\n // color.rgb(10, 10, 10)\n if (typeof values == \"number\") {\n values = Array.prototype.slice.call(args);\n }\n\n return this.setValues(space, values);\n};\n\n/* Set the values for a space, invalidating cache */\nConverter.prototype.setValues = function(space, values) {\n this.space = space;\n this.convs = {};\n this.convs[space] = values;\n return this;\n};\n\n/* Get the values for a space. If there's already\n a conversion for the space, fetch it, otherwise\n compute it */\nConverter.prototype.getValues = function(space) {\n var vals = this.convs[space];\n if (!vals) {\n var fspace = this.space,\n from = this.convs[fspace];\n vals = convert[fspace][space](from);\n\n this.convs[space] = vals;\n }\n return vals;\n};\n\n[\"rgb\", \"hsl\", \"hsv\", \"cmyk\", \"keyword\"].forEach(function(space) {\n Converter.prototype[space] = function(vals) {\n return this.routeSpace(space, arguments);\n }\n});\n\nmodule.exports = convert;\n},{\"4\":4}],6:[function(require,module,exports){\n'use strict'\n\nmodule.exports = {\n\t\"aliceblue\": [240, 248, 255],\n\t\"antiquewhite\": [250, 235, 215],\n\t\"aqua\": [0, 255, 255],\n\t\"aquamarine\": [127, 255, 212],\n\t\"azure\": [240, 255, 255],\n\t\"beige\": [245, 245, 220],\n\t\"bisque\": [255, 228, 196],\n\t\"black\": [0, 0, 0],\n\t\"blanchedalmond\": [255, 235, 205],\n\t\"blue\": [0, 0, 255],\n\t\"blueviolet\": [138, 43, 226],\n\t\"brown\": [165, 42, 42],\n\t\"burlywood\": [222, 184, 135],\n\t\"cadetblue\": [95, 158, 160],\n\t\"chartreuse\": [127, 255, 0],\n\t\"chocolate\": [210, 105, 30],\n\t\"coral\": [255, 127, 80],\n\t\"cornflowerblue\": [100, 149, 237],\n\t\"cornsilk\": [255, 248, 220],\n\t\"crimson\": [220, 20, 60],\n\t\"cyan\": [0, 255, 255],\n\t\"darkblue\": [0, 0, 139],\n\t\"darkcyan\": [0, 139, 139],\n\t\"darkgoldenrod\": [184, 134, 11],\n\t\"darkgray\": [169, 169, 169],\n\t\"darkgreen\": [0, 100, 0],\n\t\"darkgrey\": [169, 169, 169],\n\t\"darkkhaki\": [189, 183, 107],\n\t\"darkmagenta\": [139, 0, 139],\n\t\"darkolivegreen\": [85, 107, 47],\n\t\"darkorange\": [255, 140, 0],\n\t\"darkorchid\": [153, 50, 204],\n\t\"darkred\": [139, 0, 0],\n\t\"darksalmon\": [233, 150, 122],\n\t\"darkseagreen\": [143, 188, 143],\n\t\"darkslateblue\": [72, 61, 139],\n\t\"darkslategray\": [47, 79, 79],\n\t\"darkslategrey\": [47, 79, 79],\n\t\"darkturquoise\": [0, 206, 209],\n\t\"darkviolet\": [148, 0, 211],\n\t\"deeppink\": [255, 20, 147],\n\t\"deepskyblue\": [0, 191, 255],\n\t\"dimgray\": [105, 105, 105],\n\t\"dimgrey\": [105, 105, 105],\n\t\"dodgerblue\": [30, 144, 255],\n\t\"firebrick\": [178, 34, 34],\n\t\"floralwhite\": [255, 250, 240],\n\t\"forestgreen\": [34, 139, 34],\n\t\"fuchsia\": [255, 0, 255],\n\t\"gainsboro\": [220, 220, 220],\n\t\"ghostwhite\": [248, 248, 255],\n\t\"gold\": [255, 215, 0],\n\t\"goldenrod\": [218, 165, 32],\n\t\"gray\": [128, 128, 128],\n\t\"green\": [0, 128, 0],\n\t\"greenyellow\": [173, 255, 47],\n\t\"grey\": [128, 128, 128],\n\t\"honeydew\": [240, 255, 240],\n\t\"hotpink\": [255, 105, 180],\n\t\"indianred\": [205, 92, 92],\n\t\"indigo\": [75, 0, 130],\n\t\"ivory\": [255, 255, 240],\n\t\"khaki\": [240, 230, 140],\n\t\"lavender\": [230, 230, 250],\n\t\"lavenderblush\": [255, 240, 245],\n\t\"lawngreen\": [124, 252, 0],\n\t\"lemonchiffon\": [255, 250, 205],\n\t\"lightblue\": [173, 216, 230],\n\t\"lightcoral\": [240, 128, 128],\n\t\"lightcyan\": [224, 255, 255],\n\t\"lightgoldenrodyellow\": [250, 250, 210],\n\t\"lightgray\": [211, 211, 211],\n\t\"lightgreen\": [144, 238, 144],\n\t\"lightgrey\": [211, 211, 211],\n\t\"lightpink\": [255, 182, 193],\n\t\"lightsalmon\": [255, 160, 122],\n\t\"lightseagreen\": [32, 178, 170],\n\t\"lightskyblue\": [135, 206, 250],\n\t\"lightslategray\": [119, 136, 153],\n\t\"lightslategrey\": [119, 136, 153],\n\t\"lightsteelblue\": [176, 196, 222],\n\t\"lightyellow\": [255, 255, 224],\n\t\"lime\": [0, 255, 0],\n\t\"limegreen\": [50, 205, 50],\n\t\"linen\": [250, 240, 230],\n\t\"magenta\": [255, 0, 255],\n\t\"maroon\": [128, 0, 0],\n\t\"mediumaquamarine\": [102, 205, 170],\n\t\"mediumblue\": [0, 0, 205],\n\t\"mediumorchid\": [186, 85, 211],\n\t\"mediumpurple\": [147, 112, 219],\n\t\"mediumseagreen\": [60, 179, 113],\n\t\"mediumslateblue\": [123, 104, 238],\n\t\"mediumspringgreen\": [0, 250, 154],\n\t\"mediumturquoise\": [72, 209, 204],\n\t\"mediumvioletred\": [199, 21, 133],\n\t\"midnightblue\": [25, 25, 112],\n\t\"mintcream\": [245, 255, 250],\n\t\"mistyrose\": [255, 228, 225],\n\t\"moccasin\": [255, 228, 181],\n\t\"navajowhite\": [255, 222, 173],\n\t\"navy\": [0, 0, 128],\n\t\"oldlace\": [253, 245, 230],\n\t\"olive\": [128, 128, 0],\n\t\"olivedrab\": [107, 142, 35],\n\t\"orange\": [255, 165, 0],\n\t\"orangered\": [255, 69, 0],\n\t\"orchid\": [218, 112, 214],\n\t\"palegoldenrod\": [238, 232, 170],\n\t\"palegreen\": [152, 251, 152],\n\t\"paleturquoise\": [175, 238, 238],\n\t\"palevioletred\": [219, 112, 147],\n\t\"papayawhip\": [255, 239, 213],\n\t\"peachpuff\": [255, 218, 185],\n\t\"peru\": [205, 133, 63],\n\t\"pink\": [255, 192, 203],\n\t\"plum\": [221, 160, 221],\n\t\"powderblue\": [176, 224, 230],\n\t\"purple\": [128, 0, 128],\n\t\"rebeccapurple\": [102, 51, 153],\n\t\"red\": [255, 0, 0],\n\t\"rosybrown\": [188, 143, 143],\n\t\"royalblue\": [65, 105, 225],\n\t\"saddlebrown\": [139, 69, 19],\n\t\"salmon\": [250, 128, 114],\n\t\"sandybrown\": [244, 164, 96],\n\t\"seagreen\": [46, 139, 87],\n\t\"seashell\": [255, 245, 238],\n\t\"sienna\": [160, 82, 45],\n\t\"silver\": [192, 192, 192],\n\t\"skyblue\": [135, 206, 235],\n\t\"slateblue\": [106, 90, 205],\n\t\"slategray\": [112, 128, 144],\n\t\"slategrey\": [112, 128, 144],\n\t\"snow\": [255, 250, 250],\n\t\"springgreen\": [0, 255, 127],\n\t\"steelblue\": [70, 130, 180],\n\t\"tan\": [210, 180, 140],\n\t\"teal\": [0, 128, 128],\n\t\"thistle\": [216, 191, 216],\n\t\"tomato\": [255, 99, 71],\n\t\"turquoise\": [64, 224, 208],\n\t\"violet\": [238, 130, 238],\n\t\"wheat\": [245, 222, 179],\n\t\"white\": [255, 255, 255],\n\t\"whitesmoke\": [245, 245, 245],\n\t\"yellow\": [255, 255, 0],\n\t\"yellowgreen\": [154, 205, 50]\n};\n\n},{}],7:[function(require,module,exports){\n/**\n * @namespace Chart\n */\nvar Chart = require(30)();\n\nChart.helpers = require(46);\n\n// @todo dispatch these helpers into appropriated helpers/helpers.* file and write unit tests!\nrequire(28)(Chart);\n\nChart.Animation = require(22);\nChart.animationService = require(23);\nChart.defaults = require(26);\nChart.Element = require(27);\nChart.elements = require(41);\nChart.Interaction = require(29);\nChart.layouts = require(31);\nChart.platform = require(49);\nChart.plugins = require(32);\nChart.Scale = require(33);\nChart.scaleService = require(34);\nChart.Ticks = require(35);\nChart.Tooltip = require(36);\n\nrequire(24)(Chart);\nrequire(25)(Chart);\n\nrequire(56)(Chart);\nrequire(54)(Chart);\nrequire(55)(Chart);\nrequire(57)(Chart);\nrequire(58)(Chart);\nrequire(59)(Chart);\n\n// Controllers must be loaded after elements\n// See Chart.core.datasetController.dataElementType\nrequire(15)(Chart);\nrequire(16)(Chart);\nrequire(17)(Chart);\nrequire(18)(Chart);\nrequire(19)(Chart);\nrequire(20)(Chart);\nrequire(21)(Chart);\n\nrequire(8)(Chart);\nrequire(9)(Chart);\nrequire(10)(Chart);\nrequire(11)(Chart);\nrequire(12)(Chart);\nrequire(13)(Chart);\nrequire(14)(Chart);\n\n// Loading built-in plugins\nvar plugins = require(50);\nfor (var k in plugins) {\n\tif (plugins.hasOwnProperty(k)) {\n\t\tChart.plugins.register(plugins[k]);\n\t}\n}\n\nChart.platform.initialize();\n\nmodule.exports = Chart;\nif (typeof window !== 'undefined') {\n\twindow.Chart = Chart;\n}\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, not available anymore\n * @namespace Chart.Legend\n * @deprecated since version 2.1.5\n * @todo remove at version 3\n * @private\n */\nChart.Legend = plugins.legend._element;\n\n/**\n * Provided for backward compatibility, not available anymore\n * @namespace Chart.Title\n * @deprecated since version 2.1.5\n * @todo remove at version 3\n * @private\n */\nChart.Title = plugins.title._element;\n\n/**\n * Provided for backward compatibility, use Chart.plugins instead\n * @namespace Chart.pluginService\n * @deprecated since version 2.1.5\n * @todo remove at version 3\n * @private\n */\nChart.pluginService = Chart.plugins;\n\n/**\n * Provided for backward compatibility, inheriting from Chart.PlugingBase has no\n * effect, instead simply create/register plugins via plain JavaScript objects.\n * @interface Chart.PluginBase\n * @deprecated since version 2.5.0\n * @todo remove at version 3\n * @private\n */\nChart.PluginBase = Chart.Element.extend({});\n\n/**\n * Provided for backward compatibility, use Chart.helpers.canvas instead.\n * @namespace Chart.canvasHelpers\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n * @private\n */\nChart.canvasHelpers = Chart.helpers.canvas;\n\n/**\n * Provided for backward compatibility, use Chart.layouts instead.\n * @namespace Chart.layoutService\n * @deprecated since version 2.8.0\n * @todo remove at version 3\n * @private\n */\nChart.layoutService = Chart.layouts;\n\n},{\"10\":10,\"11\":11,\"12\":12,\"13\":13,\"14\":14,\"15\":15,\"16\":16,\"17\":17,\"18\":18,\"19\":19,\"20\":20,\"21\":21,\"22\":22,\"23\":23,\"24\":24,\"25\":25,\"26\":26,\"27\":27,\"28\":28,\"29\":29,\"30\":30,\"31\":31,\"32\":32,\"33\":33,\"34\":34,\"35\":35,\"36\":36,\"41\":41,\"46\":46,\"49\":49,\"50\":50,\"54\":54,\"55\":55,\"56\":56,\"57\":57,\"58\":58,\"59\":59,\"8\":8,\"9\":9}],8:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Bar = function(context, config) {\n\t\tconfig.type = 'bar';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n\n},{}],9:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Bubble = function(context, config) {\n\t\tconfig.type = 'bubble';\n\t\treturn new Chart(context, config);\n\t};\n\n};\n\n},{}],10:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Doughnut = function(context, config) {\n\t\tconfig.type = 'doughnut';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n\n},{}],11:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Line = function(context, config) {\n\t\tconfig.type = 'line';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n\n},{}],12:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.PolarArea = function(context, config) {\n\t\tconfig.type = 'polarArea';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n\n},{}],13:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Radar = function(context, config) {\n\t\tconfig.type = 'radar';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n\n},{}],14:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function(Chart) {\n\tChart.Scatter = function(context, config) {\n\t\tconfig.type = 'scatter';\n\t\treturn new Chart(context, config);\n\t};\n};\n\n},{}],15:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar elements = require(41);\nvar helpers = require(46);\n\ndefaults._set('bar', {\n\thover: {\n\t\tmode: 'label'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'category',\n\n\t\t\t// Specific to Bar Controller\n\t\t\tcategoryPercentage: 0.8,\n\t\t\tbarPercentage: 0.9,\n\n\t\t\t// offset settings\n\t\t\toffset: true,\n\n\t\t\t// grid line settings\n\t\t\tgridLines: {\n\t\t\t\toffsetGridLines: true\n\t\t\t}\n\t\t}],\n\n\t\tyAxes: [{\n\t\t\ttype: 'linear'\n\t\t}]\n\t}\n});\n\ndefaults._set('horizontalBar', {\n\thover: {\n\t\tmode: 'index',\n\t\taxis: 'y'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'linear',\n\t\t\tposition: 'bottom'\n\t\t}],\n\n\t\tyAxes: [{\n\t\t\tposition: 'left',\n\t\t\ttype: 'category',\n\n\t\t\t// Specific to Horizontal Bar Controller\n\t\t\tcategoryPercentage: 0.8,\n\t\t\tbarPercentage: 0.9,\n\n\t\t\t// offset settings\n\t\t\toffset: true,\n\n\t\t\t// grid line settings\n\t\t\tgridLines: {\n\t\t\t\toffsetGridLines: true\n\t\t\t}\n\t\t}]\n\t},\n\n\telements: {\n\t\trectangle: {\n\t\t\tborderSkipped: 'left'\n\t\t}\n\t},\n\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function(item, data) {\n\t\t\t\t// Pick first xLabel for now\n\t\t\t\tvar title = '';\n\n\t\t\t\tif (item.length > 0) {\n\t\t\t\t\tif (item[0].yLabel) {\n\t\t\t\t\t\ttitle = item[0].yLabel;\n\t\t\t\t\t} else if (data.labels.length > 0 && item[0].index < data.labels.length) {\n\t\t\t\t\t\ttitle = data.labels[item[0].index];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn title;\n\t\t\t},\n\n\t\t\tlabel: function(item, data) {\n\t\t\t\tvar datasetLabel = data.datasets[item.datasetIndex].label || '';\n\t\t\t\treturn datasetLabel + ': ' + item.xLabel;\n\t\t\t}\n\t\t},\n\t\tmode: 'index',\n\t\taxis: 'y'\n\t}\n});\n\n/**\n * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\n * @private\n */\nfunction computeMinSampleSize(scale, pixels) {\n\tvar min = scale.isHorizontal() ? scale.width : scale.height;\n\tvar ticks = scale.getTicks();\n\tvar prev, curr, i, ilen;\n\n\tfor (i = 1, ilen = pixels.length; i < ilen; ++i) {\n\t\tmin = Math.min(min, pixels[i] - pixels[i - 1]);\n\t}\n\n\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\n\t\tcurr = scale.getPixelForTick(i);\n\t\tmin = i > 0 ? Math.min(min, curr - prev) : min;\n\t\tprev = curr;\n\t}\n\n\treturn min;\n}\n\n/**\n * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\n * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\n * mode currently always generates bars equally sized (until we introduce scriptable options?).\n * @private\n */\nfunction computeFitCategoryTraits(index, ruler, options) {\n\tvar thickness = options.barThickness;\n\tvar count = ruler.stackCount;\n\tvar curr = ruler.pixels[index];\n\tvar size, ratio;\n\n\tif (helpers.isNullOrUndef(thickness)) {\n\t\tsize = ruler.min * options.categoryPercentage;\n\t\tratio = options.barPercentage;\n\t} else {\n\t\t// When bar thickness is enforced, category and bar percentages are ignored.\n\t\t// Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\n\t\t// and deprecate barPercentage since this value is ignored when thickness is absolute.\n\t\tsize = thickness * count;\n\t\tratio = 1;\n\t}\n\n\treturn {\n\t\tchunk: size / count,\n\t\tratio: ratio,\n\t\tstart: curr - (size / 2)\n\t};\n}\n\n/**\n * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\n * percentage options are 1), based on the previous and following categories. This mode\n * generates bars with different widths when data are not evenly spaced.\n * @private\n */\nfunction computeFlexCategoryTraits(index, ruler, options) {\n\tvar pixels = ruler.pixels;\n\tvar curr = pixels[index];\n\tvar prev = index > 0 ? pixels[index - 1] : null;\n\tvar next = index < pixels.length - 1 ? pixels[index + 1] : null;\n\tvar percent = options.categoryPercentage;\n\tvar start, size;\n\n\tif (prev === null) {\n\t\t// first data: its size is double based on the next point or,\n\t\t// if it's also the last data, we use the scale end extremity.\n\t\tprev = curr - (next === null ? ruler.end - curr : next - curr);\n\t}\n\n\tif (next === null) {\n\t\t// last data: its size is also double based on the previous point.\n\t\tnext = curr + curr - prev;\n\t}\n\n\tstart = curr - ((curr - prev) / 2) * percent;\n\tsize = ((next - prev) / 2) * percent;\n\n\treturn {\n\t\tchunk: size / ruler.stackCount,\n\t\tratio: options.barPercentage,\n\t\tstart: start\n\t};\n}\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.bar = Chart.DatasetController.extend({\n\n\t\tdataElementType: elements.Rectangle,\n\n\t\tinitialize: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta;\n\n\t\t\tChart.DatasetController.prototype.initialize.apply(me, arguments);\n\n\t\t\tmeta = me.getMeta();\n\t\t\tmeta.stack = me.getDataset().stack;\n\t\t\tmeta.bar = true;\n\t\t},\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar rects = me.getMeta().data;\n\t\t\tvar i, ilen;\n\n\t\t\tme._ruler = me.getRuler();\n\n\t\t\tfor (i = 0, ilen = rects.length; i < ilen; ++i) {\n\t\t\t\tme.updateElement(rects[i], i, reset);\n\t\t\t}\n\t\t},\n\n\t\tupdateElement: function(rectangle, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar custom = rectangle.custom || {};\n\t\t\tvar rectangleOptions = chart.options.elements.rectangle;\n\n\t\t\trectangle._xScale = me.getScaleForId(meta.xAxisID);\n\t\t\trectangle._yScale = me.getScaleForId(meta.yAxisID);\n\t\t\trectangle._datasetIndex = me.index;\n\t\t\trectangle._index = index;\n\n\t\t\trectangle._model = {\n\t\t\t\tdatasetLabel: dataset.label,\n\t\t\t\tlabel: chart.data.labels[index],\n\t\t\t\tborderSkipped: custom.borderSkipped ? custom.borderSkipped : rectangleOptions.borderSkipped,\n\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.backgroundColor, index, rectangleOptions.backgroundColor),\n\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.borderColor, index, rectangleOptions.borderColor),\n\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.borderWidth, index, rectangleOptions.borderWidth)\n\t\t\t};\n\n\t\t\tme.updateElementGeometry(rectangle, index, reset);\n\n\t\t\trectangle.pivot();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tupdateElementGeometry: function(rectangle, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar model = rectangle._model;\n\t\t\tvar vscale = me.getValueScale();\n\t\t\tvar base = vscale.getBasePixel();\n\t\t\tvar horizontal = vscale.isHorizontal();\n\t\t\tvar ruler = me._ruler || me.getRuler();\n\t\t\tvar vpixels = me.calculateBarValuePixels(me.index, index);\n\t\t\tvar ipixels = me.calculateBarIndexPixels(me.index, index, ruler);\n\n\t\t\tmodel.horizontal = horizontal;\n\t\t\tmodel.base = reset ? base : vpixels.base;\n\t\t\tmodel.x = horizontal ? reset ? base : vpixels.head : ipixels.center;\n\t\t\tmodel.y = horizontal ? ipixels.center : reset ? base : vpixels.head;\n\t\t\tmodel.height = horizontal ? ipixels.size : undefined;\n\t\t\tmodel.width = horizontal ? undefined : ipixels.size;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetValueScaleId: function() {\n\t\t\treturn this.getMeta().yAxisID;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetIndexScaleId: function() {\n\t\t\treturn this.getMeta().xAxisID;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetValueScale: function() {\n\t\t\treturn this.getScaleForId(this.getValueScaleId());\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetIndexScale: function() {\n\t\t\treturn this.getScaleForId(this.getIndexScaleId());\n\t\t},\n\n\t\t/**\n\t\t * Returns the stacks based on groups and bar visibility.\n\t\t * @param {Number} [last] - The dataset index\n\t\t * @returns {Array} The stack list\n\t\t * @private\n\t\t */\n\t\t_getStacks: function(last) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar scale = me.getIndexScale();\n\t\t\tvar stacked = scale.options.stacked;\n\t\t\tvar ilen = last === undefined ? chart.data.datasets.length : last + 1;\n\t\t\tvar stacks = [];\n\t\t\tvar i, meta;\n\n\t\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\tif (meta.bar && chart.isDatasetVisible(i) &&\n\t\t\t\t\t(stacked === false ||\n\t\t\t\t\t(stacked === true && stacks.indexOf(meta.stack) === -1) ||\n\t\t\t\t\t(stacked === undefined && (meta.stack === undefined || stacks.indexOf(meta.stack) === -1)))) {\n\t\t\t\t\tstacks.push(meta.stack);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn stacks;\n\t\t},\n\n\t\t/**\n\t\t * Returns the effective number of stacks based on groups and bar visibility.\n\t\t * @private\n\t\t */\n\t\tgetStackCount: function() {\n\t\t\treturn this._getStacks().length;\n\t\t},\n\n\t\t/**\n\t\t * Returns the stack index for the given dataset based on groups and bar visibility.\n\t\t * @param {Number} [datasetIndex] - The dataset index\n\t\t * @param {String} [name] - The stack name to find\n\t\t * @returns {Number} The stack index\n\t\t * @private\n\t\t */\n\t\tgetStackIndex: function(datasetIndex, name) {\n\t\t\tvar stacks = this._getStacks(datasetIndex);\n\t\t\tvar index = (name !== undefined)\n\t\t\t\t? stacks.indexOf(name)\n\t\t\t\t: -1; // indexOf returns -1 if element is not present\n\n\t\t\treturn (index === -1)\n\t\t\t\t? stacks.length - 1\n\t\t\t\t: index;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetRuler: function() {\n\t\t\tvar me = this;\n\t\t\tvar scale = me.getIndexScale();\n\t\t\tvar stackCount = me.getStackCount();\n\t\t\tvar datasetIndex = me.index;\n\t\t\tvar isHorizontal = scale.isHorizontal();\n\t\t\tvar start = isHorizontal ? scale.left : scale.top;\n\t\t\tvar end = start + (isHorizontal ? scale.width : scale.height);\n\t\t\tvar pixels = [];\n\t\t\tvar i, ilen, min;\n\n\t\t\tfor (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) {\n\t\t\t\tpixels.push(scale.getPixelForValue(null, i, datasetIndex));\n\t\t\t}\n\n\t\t\tmin = helpers.isNullOrUndef(scale.options.barThickness)\n\t\t\t\t? computeMinSampleSize(scale, pixels)\n\t\t\t\t: -1;\n\n\t\t\treturn {\n\t\t\t\tmin: min,\n\t\t\t\tpixels: pixels,\n\t\t\t\tstart: start,\n\t\t\t\tend: end,\n\t\t\t\tstackCount: stackCount,\n\t\t\t\tscale: scale\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * Note: pixel values are not clamped to the scale area.\n\t\t * @private\n\t\t */\n\t\tcalculateBarValuePixels: function(datasetIndex, index) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar scale = me.getValueScale();\n\t\t\tvar datasets = chart.data.datasets;\n\t\t\tvar value = scale.getRightValue(datasets[datasetIndex].data[index]);\n\t\t\tvar stacked = scale.options.stacked;\n\t\t\tvar stack = meta.stack;\n\t\t\tvar start = 0;\n\t\t\tvar i, imeta, ivalue, base, head, size;\n\n\t\t\tif (stacked || (stacked === undefined && stack !== undefined)) {\n\t\t\t\tfor (i = 0; i < datasetIndex; ++i) {\n\t\t\t\t\timeta = chart.getDatasetMeta(i);\n\n\t\t\t\t\tif (imeta.bar &&\n\t\t\t\t\t\timeta.stack === stack &&\n\t\t\t\t\t\timeta.controller.getValueScaleId() === scale.id &&\n\t\t\t\t\t\tchart.isDatasetVisible(i)) {\n\n\t\t\t\t\t\tivalue = scale.getRightValue(datasets[i].data[index]);\n\t\t\t\t\t\tif ((value < 0 && ivalue < 0) || (value >= 0 && ivalue > 0)) {\n\t\t\t\t\t\t\tstart += ivalue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbase = scale.getPixelForValue(start);\n\t\t\thead = scale.getPixelForValue(start + value);\n\t\t\tsize = (head - base) / 2;\n\n\t\t\treturn {\n\t\t\t\tsize: size,\n\t\t\t\tbase: base,\n\t\t\t\thead: head,\n\t\t\t\tcenter: head + size / 2\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tcalculateBarIndexPixels: function(datasetIndex, index, ruler) {\n\t\t\tvar me = this;\n\t\t\tvar options = ruler.scale.options;\n\t\t\tvar range = options.barThickness === 'flex'\n\t\t\t\t? computeFlexCategoryTraits(index, ruler, options)\n\t\t\t\t: computeFitCategoryTraits(index, ruler, options);\n\n\t\t\tvar stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack);\n\t\t\tvar center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n\t\t\tvar size = Math.min(\n\t\t\t\thelpers.valueOrDefault(options.maxBarThickness, Infinity),\n\t\t\t\trange.chunk * range.ratio);\n\n\t\t\treturn {\n\t\t\t\tbase: center - size / 2,\n\t\t\t\thead: center + size / 2,\n\t\t\t\tcenter: center,\n\t\t\t\tsize: size\n\t\t\t};\n\t\t},\n\n\t\tdraw: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar scale = me.getValueScale();\n\t\t\tvar rects = me.getMeta().data;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar ilen = rects.length;\n\t\t\tvar i = 0;\n\n\t\t\thelpers.canvas.clipArea(chart.ctx, chart.chartArea);\n\n\t\t\tfor (; i < ilen; ++i) {\n\t\t\t\tif (!isNaN(scale.getRightValue(dataset.data[i]))) {\n\t\t\t\t\trects[i].draw();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\thelpers.canvas.unclipArea(chart.ctx);\n\t\t},\n\t});\n\n\tChart.controllers.horizontalBar = Chart.controllers.bar.extend({\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetValueScaleId: function() {\n\t\t\treturn this.getMeta().xAxisID;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetIndexScaleId: function() {\n\t\t\treturn this.getMeta().yAxisID;\n\t\t}\n\t});\n};\n\n},{\"26\":26,\"41\":41,\"46\":46}],16:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar elements = require(41);\nvar helpers = require(46);\n\ndefaults._set('bubble', {\n\thover: {\n\t\tmode: 'single'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'linear', // bubble should probably use a linear scale by default\n\t\t\tposition: 'bottom',\n\t\t\tid: 'x-axis-0' // need an ID so datasets can reference the scale\n\t\t}],\n\t\tyAxes: [{\n\t\t\ttype: 'linear',\n\t\t\tposition: 'left',\n\t\t\tid: 'y-axis-0'\n\t\t}]\n\t},\n\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\t// Title doesn't make sense for scatter since we format the data as a point\n\t\t\t\treturn '';\n\t\t\t},\n\t\t\tlabel: function(item, data) {\n\t\t\t\tvar datasetLabel = data.datasets[item.datasetIndex].label || '';\n\t\t\t\tvar dataPoint = data.datasets[item.datasetIndex].data[item.index];\n\t\t\t\treturn datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')';\n\t\t\t}\n\t\t}\n\t}\n});\n\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.bubble = Chart.DatasetController.extend({\n\t\t/**\n\t\t * @protected\n\t\t */\n\t\tdataElementType: elements.Point,\n\n\t\t/**\n\t\t * @protected\n\t\t */\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar points = meta.data;\n\n\t\t\t// Update Points\n\t\t\thelpers.each(points, function(point, index) {\n\t\t\t\tme.updateElement(point, index, reset);\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * @protected\n\t\t */\n\t\tupdateElement: function(point, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar options = me._resolveElementOptions(point, index);\n\t\t\tvar data = me.getDataset().data[index];\n\t\t\tvar dsIndex = me.index;\n\n\t\t\tvar x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex);\n\t\t\tvar y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex);\n\n\t\t\tpoint._xScale = xScale;\n\t\t\tpoint._yScale = yScale;\n\t\t\tpoint._options = options;\n\t\t\tpoint._datasetIndex = dsIndex;\n\t\t\tpoint._index = index;\n\t\t\tpoint._model = {\n\t\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\t\tborderColor: options.borderColor,\n\t\t\t\tborderWidth: options.borderWidth,\n\t\t\t\thitRadius: options.hitRadius,\n\t\t\t\tpointStyle: options.pointStyle,\n\t\t\t\trotation: options.rotation,\n\t\t\t\tradius: reset ? 0 : options.radius,\n\t\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\n\t\t\t\tx: x,\n\t\t\t\ty: y,\n\t\t\t};\n\n\t\t\tpoint.pivot();\n\t\t},\n\n\t\t/**\n\t\t * @protected\n\t\t */\n\t\tsetHoverStyle: function(point) {\n\t\t\tvar model = point._model;\n\t\t\tvar options = point._options;\n\t\t\tpoint.$previousStyle = {\n\t\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\t\tborderColor: model.borderColor,\n\t\t\t\tborderWidth: model.borderWidth,\n\t\t\t\tradius: model.radius\n\t\t\t};\n\t\t\tmodel.backgroundColor = helpers.valueOrDefault(options.hoverBackgroundColor, helpers.getHoverColor(options.backgroundColor));\n\t\t\tmodel.borderColor = helpers.valueOrDefault(options.hoverBorderColor, helpers.getHoverColor(options.borderColor));\n\t\t\tmodel.borderWidth = helpers.valueOrDefault(options.hoverBorderWidth, options.borderWidth);\n\t\t\tmodel.radius = options.radius + options.hoverRadius;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\t_resolveElementOptions: function(point, index) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar datasets = chart.data.datasets;\n\t\t\tvar dataset = datasets[me.index];\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar options = chart.options.elements.point;\n\t\t\tvar resolve = helpers.options.resolve;\n\t\t\tvar data = dataset.data[index];\n\t\t\tvar values = {};\n\t\t\tvar i, ilen, key;\n\n\t\t\t// Scriptable options\n\t\t\tvar context = {\n\t\t\t\tchart: chart,\n\t\t\t\tdataIndex: index,\n\t\t\t\tdataset: dataset,\n\t\t\t\tdatasetIndex: me.index\n\t\t\t};\n\n\t\t\tvar keys = [\n\t\t\t\t'backgroundColor',\n\t\t\t\t'borderColor',\n\t\t\t\t'borderWidth',\n\t\t\t\t'hoverBackgroundColor',\n\t\t\t\t'hoverBorderColor',\n\t\t\t\t'hoverBorderWidth',\n\t\t\t\t'hoverRadius',\n\t\t\t\t'hitRadius',\n\t\t\t\t'pointStyle',\n\t\t\t\t'rotation'\n\t\t\t];\n\n\t\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\t\t\tkey = keys[i];\n\t\t\t\tvalues[key] = resolve([\n\t\t\t\t\tcustom[key],\n\t\t\t\t\tdataset[key],\n\t\t\t\t\toptions[key]\n\t\t\t\t], context, index);\n\t\t\t}\n\n\t\t\t// Custom radius resolution\n\t\t\tvalues.radius = resolve([\n\t\t\t\tcustom.radius,\n\t\t\t\tdata ? data.r : undefined,\n\t\t\t\tdataset.radius,\n\t\t\t\toptions.radius\n\t\t\t], context, index);\n\t\t\treturn values;\n\t\t}\n\t});\n};\n\n},{\"26\":26,\"41\":41,\"46\":46}],17:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar elements = require(41);\nvar helpers = require(46);\n\ndefaults._set('doughnut', {\n\tanimation: {\n\t\t// Boolean - Whether we animate the rotation of the Doughnut\n\t\tanimateRotate: true,\n\t\t// Boolean - Whether we animate scaling the Doughnut from the centre\n\t\tanimateScale: false\n\t},\n\thover: {\n\t\tmode: 'single'\n\t},\n\tlegendCallback: function(chart) {\n\t\tvar text = [];\n\t\ttext.push('
    ');\n\n\t\tvar data = chart.data;\n\t\tvar datasets = data.datasets;\n\t\tvar labels = data.labels;\n\n\t\tif (datasets.length) {\n\t\t\tfor (var i = 0; i < datasets[0].data.length; ++i) {\n\t\t\t\ttext.push('
  • ');\n\t\t\t\tif (labels[i]) {\n\t\t\t\t\ttext.push(labels[i]);\n\t\t\t\t}\n\t\t\t\ttext.push('
  • ');\n\t\t\t}\n\t\t}\n\n\t\ttext.push('
');\n\t\treturn text.join('');\n\t},\n\tlegend: {\n\t\tlabels: {\n\t\t\tgenerateLabels: function(chart) {\n\t\t\t\tvar data = chart.data;\n\t\t\t\tif (data.labels.length && data.datasets.length) {\n\t\t\t\t\treturn data.labels.map(function(label, i) {\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\n\t\t\t\t\t\tvar ds = data.datasets[0];\n\t\t\t\t\t\tvar arc = meta.data[i];\n\t\t\t\t\t\tvar custom = arc && arc.custom || {};\n\t\t\t\t\t\tvar valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\t\t\t\tvar arcOpts = chart.options.elements.arc;\n\t\t\t\t\t\tvar fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);\n\t\t\t\t\t\tvar stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);\n\t\t\t\t\t\tvar bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttext: label,\n\t\t\t\t\t\t\tfillStyle: fill,\n\t\t\t\t\t\t\tstrokeStyle: stroke,\n\t\t\t\t\t\t\tlineWidth: bw,\n\t\t\t\t\t\t\thidden: isNaN(ds.data[i]) || meta.data[i].hidden,\n\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\n\t\t\t\t\t\t\tindex: i\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\n\t\tonClick: function(e, legendItem) {\n\t\t\tvar index = legendItem.index;\n\t\t\tvar chart = this.chart;\n\t\t\tvar i, ilen, meta;\n\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\t// toggle visibility of index if exists\n\t\t\t\tif (meta.data[index]) {\n\t\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tchart.update();\n\t\t}\n\t},\n\n\t// The percentage of the chart that we cut out of the middle.\n\tcutoutPercentage: 50,\n\n\t// The rotation of the chart, where the first data arc begins.\n\trotation: Math.PI * -0.5,\n\n\t// The total circumference of the chart.\n\tcircumference: Math.PI * 2.0,\n\n\t// Need to override these to give a nice default\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\treturn '';\n\t\t\t},\n\t\t\tlabel: function(tooltipItem, data) {\n\t\t\t\tvar dataLabel = data.labels[tooltipItem.index];\n\t\t\t\tvar value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];\n\n\t\t\t\tif (helpers.isArray(dataLabel)) {\n\t\t\t\t\t// show value on first line of multiline label\n\t\t\t\t\t// need to clone because we are changing the value\n\t\t\t\t\tdataLabel = dataLabel.slice();\n\t\t\t\t\tdataLabel[0] += value;\n\t\t\t\t} else {\n\t\t\t\t\tdataLabel += value;\n\t\t\t\t}\n\n\t\t\t\treturn dataLabel;\n\t\t\t}\n\t\t}\n\t}\n});\n\ndefaults._set('pie', helpers.clone(defaults.doughnut));\ndefaults._set('pie', {\n\tcutoutPercentage: 0\n});\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.doughnut = Chart.controllers.pie = Chart.DatasetController.extend({\n\n\t\tdataElementType: elements.Arc,\n\n\t\tlinkScales: helpers.noop,\n\n\t\t// Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly\n\t\tgetRingIndex: function(datasetIndex) {\n\t\t\tvar ringIndex = 0;\n\n\t\t\tfor (var j = 0; j < datasetIndex; ++j) {\n\t\t\t\tif (this.chart.isDatasetVisible(j)) {\n\t\t\t\t\t++ringIndex;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ringIndex;\n\t\t},\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar chartArea = chart.chartArea;\n\t\t\tvar opts = chart.options;\n\t\t\tvar arcOpts = opts.elements.arc;\n\t\t\tvar availableWidth = chartArea.right - chartArea.left - arcOpts.borderWidth;\n\t\t\tvar availableHeight = chartArea.bottom - chartArea.top - arcOpts.borderWidth;\n\t\t\tvar minSize = Math.min(availableWidth, availableHeight);\n\t\t\tvar offset = {x: 0, y: 0};\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar cutoutPercentage = opts.cutoutPercentage;\n\t\t\tvar circumference = opts.circumference;\n\n\t\t\t// If the chart's circumference isn't a full circle, calculate minSize as a ratio of the width/height of the arc\n\t\t\tif (circumference < Math.PI * 2.0) {\n\t\t\t\tvar startAngle = opts.rotation % (Math.PI * 2.0);\n\t\t\t\tstartAngle += Math.PI * 2.0 * (startAngle >= Math.PI ? -1 : startAngle < -Math.PI ? 1 : 0);\n\t\t\t\tvar endAngle = startAngle + circumference;\n\t\t\t\tvar start = {x: Math.cos(startAngle), y: Math.sin(startAngle)};\n\t\t\t\tvar end = {x: Math.cos(endAngle), y: Math.sin(endAngle)};\n\t\t\t\tvar contains0 = (startAngle <= 0 && endAngle >= 0) || (startAngle <= Math.PI * 2.0 && Math.PI * 2.0 <= endAngle);\n\t\t\t\tvar contains90 = (startAngle <= Math.PI * 0.5 && Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 2.5 && Math.PI * 2.5 <= endAngle);\n\t\t\t\tvar contains180 = (startAngle <= -Math.PI && -Math.PI <= endAngle) || (startAngle <= Math.PI && Math.PI <= endAngle);\n\t\t\t\tvar contains270 = (startAngle <= -Math.PI * 0.5 && -Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 1.5 && Math.PI * 1.5 <= endAngle);\n\t\t\t\tvar cutout = cutoutPercentage / 100.0;\n\t\t\t\tvar min = {x: contains180 ? -1 : Math.min(start.x * (start.x < 0 ? 1 : cutout), end.x * (end.x < 0 ? 1 : cutout)), y: contains270 ? -1 : Math.min(start.y * (start.y < 0 ? 1 : cutout), end.y * (end.y < 0 ? 1 : cutout))};\n\t\t\t\tvar max = {x: contains0 ? 1 : Math.max(start.x * (start.x > 0 ? 1 : cutout), end.x * (end.x > 0 ? 1 : cutout)), y: contains90 ? 1 : Math.max(start.y * (start.y > 0 ? 1 : cutout), end.y * (end.y > 0 ? 1 : cutout))};\n\t\t\t\tvar size = {width: (max.x - min.x) * 0.5, height: (max.y - min.y) * 0.5};\n\t\t\t\tminSize = Math.min(availableWidth / size.width, availableHeight / size.height);\n\t\t\t\toffset = {x: (max.x + min.x) * -0.5, y: (max.y + min.y) * -0.5};\n\t\t\t}\n\n\t\t\tchart.borderWidth = me.getMaxBorderWidth(meta.data);\n\t\t\tchart.outerRadius = Math.max((minSize - chart.borderWidth) / 2, 0);\n\t\t\tchart.innerRadius = Math.max(cutoutPercentage ? (chart.outerRadius / 100) * (cutoutPercentage) : 0, 0);\n\t\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\n\t\t\tchart.offsetX = offset.x * chart.outerRadius;\n\t\t\tchart.offsetY = offset.y * chart.outerRadius;\n\n\t\t\tmeta.total = me.calculateTotal();\n\n\t\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.getRingIndex(me.index));\n\t\t\tme.innerRadius = Math.max(me.outerRadius - chart.radiusLength, 0);\n\n\t\t\thelpers.each(meta.data, function(arc, index) {\n\t\t\t\tme.updateElement(arc, index, reset);\n\t\t\t});\n\t\t},\n\n\t\tupdateElement: function(arc, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar chartArea = chart.chartArea;\n\t\t\tvar opts = chart.options;\n\t\t\tvar animationOpts = opts.animation;\n\t\t\tvar centerX = (chartArea.left + chartArea.right) / 2;\n\t\t\tvar centerY = (chartArea.top + chartArea.bottom) / 2;\n\t\t\tvar startAngle = opts.rotation; // non reset case handled later\n\t\t\tvar endAngle = opts.rotation; // non reset case handled later\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / (2.0 * Math.PI));\n\t\t\tvar innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius;\n\t\t\tvar outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius;\n\t\t\tvar valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\n\t\t\thelpers.extend(arc, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index,\n\n\t\t\t\t// Desired view properties\n\t\t\t\t_model: {\n\t\t\t\t\tx: centerX + chart.offsetX,\n\t\t\t\t\ty: centerY + chart.offsetY,\n\t\t\t\t\tstartAngle: startAngle,\n\t\t\t\t\tendAngle: endAngle,\n\t\t\t\t\tcircumference: circumference,\n\t\t\t\t\touterRadius: outerRadius,\n\t\t\t\t\tinnerRadius: innerRadius,\n\t\t\t\t\tlabel: valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index])\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tvar model = arc._model;\n\n\t\t\t// Resets the visual styles\n\t\t\tvar custom = arc.custom || {};\n\t\t\tvar valueOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\tvar elementOpts = this.chart.options.elements.arc;\n\t\t\tmodel.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor);\n\t\t\tmodel.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor);\n\t\t\tmodel.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth);\n\n\t\t\t// Set correct angles if not resetting\n\t\t\tif (!reset || !animationOpts.animateRotate) {\n\t\t\t\tif (index === 0) {\n\t\t\t\t\tmodel.startAngle = opts.rotation;\n\t\t\t\t} else {\n\t\t\t\t\tmodel.startAngle = me.getMeta().data[index - 1]._model.endAngle;\n\t\t\t\t}\n\n\t\t\t\tmodel.endAngle = model.startAngle + model.circumference;\n\t\t\t}\n\n\t\t\tarc.pivot();\n\t\t},\n\n\t\tcalculateTotal: function() {\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar total = 0;\n\t\t\tvar value;\n\n\t\t\thelpers.each(meta.data, function(element, index) {\n\t\t\t\tvalue = dataset.data[index];\n\t\t\t\tif (!isNaN(value) && !element.hidden) {\n\t\t\t\t\ttotal += Math.abs(value);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t/* if (total === 0) {\n\t\t\t\ttotal = NaN;\n\t\t\t}*/\n\n\t\t\treturn total;\n\t\t},\n\n\t\tcalculateCircumference: function(value) {\n\t\t\tvar total = this.getMeta().total;\n\t\t\tif (total > 0 && !isNaN(value)) {\n\t\t\t\treturn (Math.PI * 2.0) * (Math.abs(value) / total);\n\t\t\t}\n\t\t\treturn 0;\n\t\t},\n\n\t\t// gets the max border or hover width to properly scale pie charts\n\t\tgetMaxBorderWidth: function(arcs) {\n\t\t\tvar max = 0;\n\t\t\tvar index = this.index;\n\t\t\tvar length = arcs.length;\n\t\t\tvar borderWidth;\n\t\t\tvar hoverWidth;\n\n\t\t\tfor (var i = 0; i < length; i++) {\n\t\t\t\tborderWidth = arcs[i]._model ? arcs[i]._model.borderWidth : 0;\n\t\t\t\thoverWidth = arcs[i]._chart ? arcs[i]._chart.config.data.datasets[index].hoverBorderWidth : 0;\n\n\t\t\t\tmax = borderWidth > max ? borderWidth : max;\n\t\t\t\tmax = hoverWidth > max ? hoverWidth : max;\n\t\t\t}\n\t\t\treturn max;\n\t\t}\n\t});\n};\n\n},{\"26\":26,\"41\":41,\"46\":46}],18:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar elements = require(41);\nvar helpers = require(46);\n\ndefaults._set('line', {\n\tshowLines: true,\n\tspanGaps: false,\n\n\thover: {\n\t\tmode: 'label'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'category',\n\t\t\tid: 'x-axis-0'\n\t\t}],\n\t\tyAxes: [{\n\t\t\ttype: 'linear',\n\t\t\tid: 'y-axis-0'\n\t\t}]\n\t}\n});\n\nmodule.exports = function(Chart) {\n\n\tfunction lineEnabled(dataset, options) {\n\t\treturn helpers.valueOrDefault(dataset.showLine, options.showLines);\n\t}\n\n\tChart.controllers.line = Chart.DatasetController.extend({\n\n\t\tdatasetElementType: elements.Line,\n\n\t\tdataElementType: elements.Point,\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar line = meta.dataset;\n\t\t\tvar points = meta.data || [];\n\t\t\tvar options = me.chart.options;\n\t\t\tvar lineElementOptions = options.elements.line;\n\t\t\tvar scale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar i, ilen, custom;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar showLine = lineEnabled(dataset, options);\n\n\t\t\t// Update Line\n\t\t\tif (showLine) {\n\t\t\t\tcustom = line.custom || {};\n\n\t\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\t\tif ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) {\n\t\t\t\t\tdataset.lineTension = dataset.tension;\n\t\t\t\t}\n\n\t\t\t\t// Utility\n\t\t\t\tline._scale = scale;\n\t\t\t\tline._datasetIndex = me.index;\n\t\t\t\t// Data\n\t\t\t\tline._children = points;\n\t\t\t\t// Model\n\t\t\t\tline._model = {\n\t\t\t\t\t// Appearance\n\t\t\t\t\t// The default behavior of lines is to break at null values, according\n\t\t\t\t\t// to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158\n\t\t\t\t\t// This option gives lines the ability to span gaps\n\t\t\t\t\tspanGaps: dataset.spanGaps ? dataset.spanGaps : options.spanGaps,\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension),\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor),\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth),\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor),\n\t\t\t\t\tborderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle),\n\t\t\t\t\tborderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash),\n\t\t\t\t\tborderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset),\n\t\t\t\t\tborderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle),\n\t\t\t\t\tfill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill),\n\t\t\t\t\tsteppedLine: custom.steppedLine ? custom.steppedLine : helpers.valueOrDefault(dataset.steppedLine, lineElementOptions.stepped),\n\t\t\t\t\tcubicInterpolationMode: custom.cubicInterpolationMode ? custom.cubicInterpolationMode : helpers.valueOrDefault(dataset.cubicInterpolationMode, lineElementOptions.cubicInterpolationMode),\n\t\t\t\t};\n\n\t\t\t\tline.pivot();\n\t\t\t}\n\n\t\t\t// Update Points\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\tme.updateElement(points[i], i, reset);\n\t\t\t}\n\n\t\t\tif (showLine && line._model.tension !== 0) {\n\t\t\t\tme.updateBezierControlPoints();\n\t\t\t}\n\n\t\t\t// Now pivot the point for animation\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\tpoints[i].pivot();\n\t\t\t}\n\t\t},\n\n\t\tgetPointBackgroundColor: function(point, index) {\n\t\t\tvar backgroundColor = this.chart.options.elements.point.backgroundColor;\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar custom = point.custom || {};\n\n\t\t\tif (custom.backgroundColor) {\n\t\t\t\tbackgroundColor = custom.backgroundColor;\n\t\t\t} else if (dataset.pointBackgroundColor) {\n\t\t\t\tbackgroundColor = helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, backgroundColor);\n\t\t\t} else if (dataset.backgroundColor) {\n\t\t\t\tbackgroundColor = dataset.backgroundColor;\n\t\t\t}\n\n\t\t\treturn backgroundColor;\n\t\t},\n\n\t\tgetPointBorderColor: function(point, index) {\n\t\t\tvar borderColor = this.chart.options.elements.point.borderColor;\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar custom = point.custom || {};\n\n\t\t\tif (custom.borderColor) {\n\t\t\t\tborderColor = custom.borderColor;\n\t\t\t} else if (dataset.pointBorderColor) {\n\t\t\t\tborderColor = helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, borderColor);\n\t\t\t} else if (dataset.borderColor) {\n\t\t\t\tborderColor = dataset.borderColor;\n\t\t\t}\n\n\t\t\treturn borderColor;\n\t\t},\n\n\t\tgetPointBorderWidth: function(point, index) {\n\t\t\tvar borderWidth = this.chart.options.elements.point.borderWidth;\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar custom = point.custom || {};\n\n\t\t\tif (!isNaN(custom.borderWidth)) {\n\t\t\t\tborderWidth = custom.borderWidth;\n\t\t\t} else if (!isNaN(dataset.pointBorderWidth) || helpers.isArray(dataset.pointBorderWidth)) {\n\t\t\t\tborderWidth = helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, borderWidth);\n\t\t\t} else if (!isNaN(dataset.borderWidth)) {\n\t\t\t\tborderWidth = dataset.borderWidth;\n\t\t\t}\n\n\t\t\treturn borderWidth;\n\t\t},\n\n\t\tgetPointRotation: function(point, index) {\n\t\t\tvar pointRotation = this.chart.options.elements.point.rotation;\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar custom = point.custom || {};\n\n\t\t\tif (!isNaN(custom.rotation)) {\n\t\t\t\tpointRotation = custom.rotation;\n\t\t\t} else if (!isNaN(dataset.pointRotation) || helpers.isArray(dataset.pointRotation)) {\n\t\t\t\tpointRotation = helpers.valueAtIndexOrDefault(dataset.pointRotation, index, pointRotation);\n\t\t\t}\n\t\t\treturn pointRotation;\n\t\t},\n\n\t\tupdateElement: function(point, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar datasetIndex = me.index;\n\t\t\tvar value = dataset.data[index];\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\t\tvar pointOptions = me.chart.options.elements.point;\n\t\t\tvar x, y;\n\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\tif ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) {\n\t\t\t\tdataset.pointRadius = dataset.radius;\n\t\t\t}\n\t\t\tif ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) {\n\t\t\t\tdataset.pointHitRadius = dataset.hitRadius;\n\t\t\t}\n\n\t\t\tx = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex);\n\t\t\ty = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex);\n\n\t\t\t// Utility\n\t\t\tpoint._xScale = xScale;\n\t\t\tpoint._yScale = yScale;\n\t\t\tpoint._datasetIndex = datasetIndex;\n\t\t\tpoint._index = index;\n\n\t\t\t// Desired view properties\n\t\t\tpoint._model = {\n\t\t\t\tx: x,\n\t\t\t\ty: y,\n\t\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\n\t\t\t\t// Appearance\n\t\t\t\tradius: custom.radius || helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointOptions.radius),\n\t\t\t\tpointStyle: custom.pointStyle || helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointOptions.pointStyle),\n\t\t\t\trotation: me.getPointRotation(point, index),\n\t\t\t\tbackgroundColor: me.getPointBackgroundColor(point, index),\n\t\t\t\tborderColor: me.getPointBorderColor(point, index),\n\t\t\t\tborderWidth: me.getPointBorderWidth(point, index),\n\t\t\t\ttension: meta.dataset._model ? meta.dataset._model.tension : 0,\n\t\t\t\tsteppedLine: meta.dataset._model ? meta.dataset._model.steppedLine : false,\n\t\t\t\t// Tooltip\n\t\t\t\thitRadius: custom.hitRadius || helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointOptions.hitRadius)\n\t\t\t};\n\t\t},\n\n\t\tcalculatePointY: function(value, index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar sumPos = 0;\n\t\t\tvar sumNeg = 0;\n\t\t\tvar i, ds, dsMeta;\n\n\t\t\tif (yScale.options.stacked) {\n\t\t\t\tfor (i = 0; i < datasetIndex; i++) {\n\t\t\t\t\tds = chart.data.datasets[i];\n\t\t\t\t\tdsMeta = chart.getDatasetMeta(i);\n\t\t\t\t\tif (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id && chart.isDatasetVisible(i)) {\n\t\t\t\t\t\tvar stackedRightValue = Number(yScale.getRightValue(ds.data[index]));\n\t\t\t\t\t\tif (stackedRightValue < 0) {\n\t\t\t\t\t\t\tsumNeg += stackedRightValue || 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsumPos += stackedRightValue || 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar rightValue = Number(yScale.getRightValue(value));\n\t\t\t\tif (rightValue < 0) {\n\t\t\t\t\treturn yScale.getPixelForValue(sumNeg + rightValue);\n\t\t\t\t}\n\t\t\t\treturn yScale.getPixelForValue(sumPos + rightValue);\n\t\t\t}\n\n\t\t\treturn yScale.getPixelForValue(value);\n\t\t},\n\n\t\tupdateBezierControlPoints: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar area = me.chart.chartArea;\n\t\t\tvar points = (meta.data || []);\n\t\t\tvar i, ilen, point, model, controlPoints;\n\n\t\t\t// Only consider points that are drawn in case the spanGaps option is used\n\t\t\tif (meta.dataset._model.spanGaps) {\n\t\t\t\tpoints = points.filter(function(pt) {\n\t\t\t\t\treturn !pt._model.skip;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfunction capControlPoint(pt, min, max) {\n\t\t\t\treturn Math.max(Math.min(pt, max), min);\n\t\t\t}\n\n\t\t\tif (meta.dataset._model.cubicInterpolationMode === 'monotone') {\n\t\t\t\thelpers.splineCurveMonotone(points);\n\t\t\t} else {\n\t\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\t\tpoint = points[i];\n\t\t\t\t\tmodel = point._model;\n\t\t\t\t\tcontrolPoints = helpers.splineCurve(\n\t\t\t\t\t\thelpers.previousItem(points, i)._model,\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\thelpers.nextItem(points, i)._model,\n\t\t\t\t\t\tmeta.dataset._model.tension\n\t\t\t\t\t);\n\t\t\t\t\tmodel.controlPointPreviousX = controlPoints.previous.x;\n\t\t\t\t\tmodel.controlPointPreviousY = controlPoints.previous.y;\n\t\t\t\t\tmodel.controlPointNextX = controlPoints.next.x;\n\t\t\t\t\tmodel.controlPointNextY = controlPoints.next.y;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (me.chart.options.elements.line.capBezierPoints) {\n\t\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\t\tmodel = points[i]._model;\n\t\t\t\t\tmodel.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right);\n\t\t\t\t\tmodel.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom);\n\t\t\t\t\tmodel.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right);\n\t\t\t\t\tmodel.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tdraw: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar points = meta.data || [];\n\t\t\tvar area = chart.chartArea;\n\t\t\tvar ilen = points.length;\n\t\t\tvar halfBorderWidth;\n\t\t\tvar i = 0;\n\n\t\t\tif (lineEnabled(me.getDataset(), chart.options)) {\n\t\t\t\thalfBorderWidth = (meta.dataset._model.borderWidth || 0) / 2;\n\n\t\t\t\thelpers.canvas.clipArea(chart.ctx, {\n\t\t\t\t\tleft: area.left,\n\t\t\t\t\tright: area.right,\n\t\t\t\t\ttop: area.top - halfBorderWidth,\n\t\t\t\t\tbottom: area.bottom + halfBorderWidth\n\t\t\t\t});\n\n\t\t\t\tmeta.dataset.draw();\n\n\t\t\t\thelpers.canvas.unclipArea(chart.ctx);\n\t\t\t}\n\n\t\t\t// Draw the points\n\t\t\tfor (; i < ilen; ++i) {\n\t\t\t\tpoints[i].draw(area);\n\t\t\t}\n\t\t},\n\n\t\tsetHoverStyle: function(element) {\n\t\t\t// Point\n\t\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\n\t\t\tvar index = element._index;\n\t\t\tvar custom = element.custom || {};\n\t\t\tvar model = element._model;\n\n\t\t\telement.$previousStyle = {\n\t\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\t\tborderColor: model.borderColor,\n\t\t\t\tborderWidth: model.borderWidth,\n\t\t\t\tradius: model.radius\n\t\t\t};\n\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));\n\t\t\tmodel.borderColor = custom.hoverBorderColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor));\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth);\n\t\t\tmodel.radius = custom.hoverRadius || helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius);\n\t\t},\n\t});\n};\n\n},{\"26\":26,\"41\":41,\"46\":46}],19:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar elements = require(41);\nvar helpers = require(46);\n\ndefaults._set('polarArea', {\n\tscale: {\n\t\ttype: 'radialLinear',\n\t\tangleLines: {\n\t\t\tdisplay: false\n\t\t},\n\t\tgridLines: {\n\t\t\tcircular: true\n\t\t},\n\t\tpointLabels: {\n\t\t\tdisplay: false\n\t\t},\n\t\tticks: {\n\t\t\tbeginAtZero: true\n\t\t}\n\t},\n\n\t// Boolean - Whether to animate the rotation of the chart\n\tanimation: {\n\t\tanimateRotate: true,\n\t\tanimateScale: true\n\t},\n\n\tstartAngle: -0.5 * Math.PI,\n\tlegendCallback: function(chart) {\n\t\tvar text = [];\n\t\ttext.push('
    ');\n\n\t\tvar data = chart.data;\n\t\tvar datasets = data.datasets;\n\t\tvar labels = data.labels;\n\n\t\tif (datasets.length) {\n\t\t\tfor (var i = 0; i < datasets[0].data.length; ++i) {\n\t\t\t\ttext.push('
  • ');\n\t\t\t\tif (labels[i]) {\n\t\t\t\t\ttext.push(labels[i]);\n\t\t\t\t}\n\t\t\t\ttext.push('
  • ');\n\t\t\t}\n\t\t}\n\n\t\ttext.push('
');\n\t\treturn text.join('');\n\t},\n\tlegend: {\n\t\tlabels: {\n\t\t\tgenerateLabels: function(chart) {\n\t\t\t\tvar data = chart.data;\n\t\t\t\tif (data.labels.length && data.datasets.length) {\n\t\t\t\t\treturn data.labels.map(function(label, i) {\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\n\t\t\t\t\t\tvar ds = data.datasets[0];\n\t\t\t\t\t\tvar arc = meta.data[i];\n\t\t\t\t\t\tvar custom = arc.custom || {};\n\t\t\t\t\t\tvar valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\t\t\t\tvar arcOpts = chart.options.elements.arc;\n\t\t\t\t\t\tvar fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);\n\t\t\t\t\t\tvar stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);\n\t\t\t\t\t\tvar bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttext: label,\n\t\t\t\t\t\t\tfillStyle: fill,\n\t\t\t\t\t\t\tstrokeStyle: stroke,\n\t\t\t\t\t\t\tlineWidth: bw,\n\t\t\t\t\t\t\thidden: isNaN(ds.data[i]) || meta.data[i].hidden,\n\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\n\t\t\t\t\t\t\tindex: i\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\n\t\tonClick: function(e, legendItem) {\n\t\t\tvar index = legendItem.index;\n\t\t\tvar chart = this.chart;\n\t\t\tvar i, ilen, meta;\n\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\n\t\t\t}\n\n\t\t\tchart.update();\n\t\t}\n\t},\n\n\t// Need to override these to give a nice default\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\treturn '';\n\t\t\t},\n\t\t\tlabel: function(item, data) {\n\t\t\t\treturn data.labels[item.index] + ': ' + item.yLabel;\n\t\t\t}\n\t\t}\n\t}\n});\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.polarArea = Chart.DatasetController.extend({\n\n\t\tdataElementType: elements.Arc,\n\n\t\tlinkScales: helpers.noop,\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar start = me.chart.options.startAngle || 0;\n\t\t\tvar starts = me._starts = [];\n\t\t\tvar angles = me._angles = [];\n\t\t\tvar i, ilen, angle;\n\n\t\t\tme._updateRadius();\n\n\t\t\tmeta.count = me.countVisibleElements();\n\n\t\t\tfor (i = 0, ilen = dataset.data.length; i < ilen; i++) {\n\t\t\t\tstarts[i] = start;\n\t\t\t\tangle = me._computeAngle(i);\n\t\t\t\tangles[i] = angle;\n\t\t\t\tstart += angle;\n\t\t\t}\n\n\t\t\thelpers.each(meta.data, function(arc, index) {\n\t\t\t\tme.updateElement(arc, index, reset);\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\t_updateRadius: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar chartArea = chart.chartArea;\n\t\t\tvar opts = chart.options;\n\t\t\tvar arcOpts = opts.elements.arc;\n\t\t\tvar minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n\n\t\t\tchart.outerRadius = Math.max((minSize - arcOpts.borderWidth / 2) / 2, 0);\n\t\t\tchart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n\t\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\n\n\t\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.index);\n\t\t\tme.innerRadius = me.outerRadius - chart.radiusLength;\n\t\t},\n\n\t\tupdateElement: function(arc, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar opts = chart.options;\n\t\t\tvar animationOpts = opts.animation;\n\t\t\tvar scale = chart.scale;\n\t\t\tvar labels = chart.data.labels;\n\n\t\t\tvar centerX = scale.xCenter;\n\t\t\tvar centerY = scale.yCenter;\n\n\t\t\t// var negHalfPI = -0.5 * Math.PI;\n\t\t\tvar datasetStartAngle = opts.startAngle;\n\t\t\tvar distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n\t\t\tvar startAngle = me._starts[index];\n\t\t\tvar endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]);\n\n\t\t\tvar resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n\n\t\t\thelpers.extend(arc, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index,\n\t\t\t\t_scale: scale,\n\n\t\t\t\t// Desired view properties\n\t\t\t\t_model: {\n\t\t\t\t\tx: centerX,\n\t\t\t\t\ty: centerY,\n\t\t\t\t\tinnerRadius: 0,\n\t\t\t\t\touterRadius: reset ? resetRadius : distance,\n\t\t\t\t\tstartAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle,\n\t\t\t\t\tendAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle,\n\t\t\t\t\tlabel: helpers.valueAtIndexOrDefault(labels, index, labels[index])\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Apply border and fill style\n\t\t\tvar elementOpts = this.chart.options.elements.arc;\n\t\t\tvar custom = arc.custom || {};\n\t\t\tvar valueOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\tvar model = arc._model;\n\n\t\t\tmodel.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor);\n\t\t\tmodel.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor);\n\t\t\tmodel.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth);\n\n\t\t\tarc.pivot();\n\t\t},\n\n\t\tcountVisibleElements: function() {\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar count = 0;\n\n\t\t\thelpers.each(meta.data, function(element, index) {\n\t\t\t\tif (!isNaN(dataset.data[index]) && !element.hidden) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn count;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\t_computeAngle: function(index) {\n\t\t\tvar me = this;\n\t\t\tvar count = this.getMeta().count;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar meta = me.getMeta();\n\n\t\t\tif (isNaN(dataset.data[index]) || meta.data[index].hidden) {\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\t// Scriptable options\n\t\t\tvar context = {\n\t\t\t\tchart: me.chart,\n\t\t\t\tdataIndex: index,\n\t\t\t\tdataset: dataset,\n\t\t\t\tdatasetIndex: me.index\n\t\t\t};\n\n\t\t\treturn helpers.options.resolve([\n\t\t\t\tme.chart.options.elements.arc.angle,\n\t\t\t\t(2 * Math.PI) / count\n\t\t\t], context, index);\n\t\t}\n\t});\n};\n\n},{\"26\":26,\"41\":41,\"46\":46}],20:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar elements = require(41);\nvar helpers = require(46);\n\ndefaults._set('radar', {\n\tscale: {\n\t\ttype: 'radialLinear'\n\t},\n\telements: {\n\t\tline: {\n\t\t\ttension: 0 // no bezier in radar\n\t\t}\n\t}\n});\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.radar = Chart.DatasetController.extend({\n\n\t\tdatasetElementType: elements.Line,\n\n\t\tdataElementType: elements.Point,\n\n\t\tlinkScales: helpers.noop,\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar line = meta.dataset;\n\t\t\tvar points = meta.data;\n\t\t\tvar custom = line.custom || {};\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar lineElementOptions = me.chart.options.elements.line;\n\t\t\tvar scale = me.chart.scale;\n\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\tif ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) {\n\t\t\t\tdataset.lineTension = dataset.tension;\n\t\t\t}\n\n\t\t\thelpers.extend(meta.dataset, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_scale: scale,\n\t\t\t\t// Data\n\t\t\t\t_children: points,\n\t\t\t\t_loop: true,\n\t\t\t\t// Model\n\t\t\t\t_model: {\n\t\t\t\t\t// Appearance\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension),\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor),\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth),\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor),\n\t\t\t\t\tfill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill),\n\t\t\t\t\tborderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle),\n\t\t\t\t\tborderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash),\n\t\t\t\t\tborderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset),\n\t\t\t\t\tborderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle),\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tmeta.dataset.pivot();\n\n\t\t\t// Update Points\n\t\t\thelpers.each(points, function(point, index) {\n\t\t\t\tme.updateElement(point, index, reset);\n\t\t\t}, me);\n\n\t\t\t// Update bezier control points\n\t\t\tme.updateBezierControlPoints();\n\t\t},\n\t\tupdateElement: function(point, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar scale = me.chart.scale;\n\t\t\tvar pointElementOptions = me.chart.options.elements.point;\n\t\t\tvar pointPosition = scale.getPointPositionForValue(index, dataset.data[index]);\n\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\tif ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) {\n\t\t\t\tdataset.pointRadius = dataset.radius;\n\t\t\t}\n\t\t\tif ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) {\n\t\t\t\tdataset.pointHitRadius = dataset.hitRadius;\n\t\t\t}\n\n\t\t\thelpers.extend(point, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index,\n\t\t\t\t_scale: scale,\n\n\t\t\t\t// Desired view properties\n\t\t\t\t_model: {\n\t\t\t\t\tx: reset ? scale.xCenter : pointPosition.x, // value not used in dataset scale, but we want a consistent API between scales\n\t\t\t\t\ty: reset ? scale.yCenter : pointPosition.y,\n\n\t\t\t\t\t// Appearance\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, me.chart.options.elements.line.tension),\n\t\t\t\t\tradius: custom.radius ? custom.radius : helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointElementOptions.radius),\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor),\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor),\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth),\n\t\t\t\t\tpointStyle: custom.pointStyle ? custom.pointStyle : helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointElementOptions.pointStyle),\n\t\t\t\t\trotation: custom.rotation ? custom.rotation : helpers.valueAtIndexOrDefault(dataset.pointRotation, index, pointElementOptions.rotation),\n\n\t\t\t\t\t// Tooltip\n\t\t\t\t\thitRadius: custom.hitRadius ? custom.hitRadius : helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointElementOptions.hitRadius)\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tpoint._model.skip = custom.skip ? custom.skip : (isNaN(point._model.x) || isNaN(point._model.y));\n\t\t},\n\t\tupdateBezierControlPoints: function() {\n\t\t\tvar chartArea = this.chart.chartArea;\n\t\t\tvar meta = this.getMeta();\n\n\t\t\thelpers.each(meta.data, function(point, index) {\n\t\t\t\tvar model = point._model;\n\t\t\t\tvar controlPoints = helpers.splineCurve(\n\t\t\t\t\thelpers.previousItem(meta.data, index, true)._model,\n\t\t\t\t\tmodel,\n\t\t\t\t\thelpers.nextItem(meta.data, index, true)._model,\n\t\t\t\t\tmodel.tension\n\t\t\t\t);\n\n\t\t\t\t// Prevent the bezier going outside of the bounds of the graph\n\t\t\t\tmodel.controlPointPreviousX = Math.max(Math.min(controlPoints.previous.x, chartArea.right), chartArea.left);\n\t\t\t\tmodel.controlPointPreviousY = Math.max(Math.min(controlPoints.previous.y, chartArea.bottom), chartArea.top);\n\n\t\t\t\tmodel.controlPointNextX = Math.max(Math.min(controlPoints.next.x, chartArea.right), chartArea.left);\n\t\t\t\tmodel.controlPointNextY = Math.max(Math.min(controlPoints.next.y, chartArea.bottom), chartArea.top);\n\n\t\t\t\t// Now pivot the point for animation\n\t\t\t\tpoint.pivot();\n\t\t\t});\n\t\t},\n\n\t\tsetHoverStyle: function(point) {\n\t\t\t// Point\n\t\t\tvar dataset = this.chart.data.datasets[point._datasetIndex];\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar index = point._index;\n\t\t\tvar model = point._model;\n\n\t\t\tpoint.$previousStyle = {\n\t\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\t\tborderColor: model.borderColor,\n\t\t\t\tborderWidth: model.borderWidth,\n\t\t\t\tradius: model.radius\n\t\t\t};\n\n\t\t\tmodel.radius = custom.hoverRadius ? custom.hoverRadius : helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius);\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));\n\t\t\tmodel.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor));\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth);\n\t\t},\n\t});\n};\n\n},{\"26\":26,\"41\":41,\"46\":46}],21:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\n\ndefaults._set('scatter', {\n\thover: {\n\t\tmode: 'single'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\tid: 'x-axis-1', // need an ID so datasets can reference the scale\n\t\t\ttype: 'linear', // scatter should not use a category axis\n\t\t\tposition: 'bottom'\n\t\t}],\n\t\tyAxes: [{\n\t\t\tid: 'y-axis-1',\n\t\t\ttype: 'linear',\n\t\t\tposition: 'left'\n\t\t}]\n\t},\n\n\tshowLines: false,\n\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\treturn ''; // doesn't make sense for scatter since data are formatted as a point\n\t\t\t},\n\t\t\tlabel: function(item) {\n\t\t\t\treturn '(' + item.xLabel + ', ' + item.yLabel + ')';\n\t\t\t}\n\t\t}\n\t}\n});\n\nmodule.exports = function(Chart) {\n\n\t// Scatter charts use line controllers\n\tChart.controllers.scatter = Chart.controllers.line;\n\n};\n\n},{\"26\":26}],22:[function(require,module,exports){\n'use strict';\n\nvar Element = require(27);\n\nvar exports = module.exports = Element.extend({\n\tchart: null, // the animation associated chart instance\n\tcurrentStep: 0, // the current animation step\n\tnumSteps: 60, // default number of steps\n\teasing: '', // the easing to use for this animation\n\trender: null, // render function used by the animation service\n\n\tonAnimationProgress: null, // user specified callback to fire on each step of the animation\n\tonAnimationComplete: null, // user specified callback to fire when the animation finishes\n});\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.Animation instead\n * @prop Chart.Animation#animationObject\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n */\nObject.defineProperty(exports.prototype, 'animationObject', {\n\tget: function() {\n\t\treturn this;\n\t}\n});\n\n/**\n * Provided for backward compatibility, use Chart.Animation#chart instead\n * @prop Chart.Animation#chartInstance\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n */\nObject.defineProperty(exports.prototype, 'chartInstance', {\n\tget: function() {\n\t\treturn this.chart;\n\t},\n\tset: function(value) {\n\t\tthis.chart = value;\n\t}\n});\n\n},{\"27\":27}],23:[function(require,module,exports){\n/* global window: false */\n'use strict';\n\nvar defaults = require(26);\nvar helpers = require(46);\n\ndefaults._set('global', {\n\tanimation: {\n\t\tduration: 1000,\n\t\teasing: 'easeOutQuart',\n\t\tonProgress: helpers.noop,\n\t\tonComplete: helpers.noop\n\t}\n});\n\nmodule.exports = {\n\tframeDuration: 17,\n\tanimations: [],\n\tdropFrames: 0,\n\trequest: null,\n\n\t/**\n\t * @param {Chart} chart - The chart to animate.\n\t * @param {Chart.Animation} animation - The animation that we will animate.\n\t * @param {Number} duration - The animation duration in ms.\n\t * @param {Boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions\n\t */\n\taddAnimation: function(chart, animation, duration, lazy) {\n\t\tvar animations = this.animations;\n\t\tvar i, ilen;\n\n\t\tanimation.chart = chart;\n\n\t\tif (!lazy) {\n\t\t\tchart.animating = true;\n\t\t}\n\n\t\tfor (i = 0, ilen = animations.length; i < ilen; ++i) {\n\t\t\tif (animations[i].chart === chart) {\n\t\t\t\tanimations[i] = animation;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tanimations.push(animation);\n\n\t\t// If there are no animations queued, manually kickstart a digest, for lack of a better word\n\t\tif (animations.length === 1) {\n\t\t\tthis.requestAnimationFrame();\n\t\t}\n\t},\n\n\tcancelAnimation: function(chart) {\n\t\tvar index = helpers.findIndex(this.animations, function(animation) {\n\t\t\treturn animation.chart === chart;\n\t\t});\n\n\t\tif (index !== -1) {\n\t\t\tthis.animations.splice(index, 1);\n\t\t\tchart.animating = false;\n\t\t}\n\t},\n\n\trequestAnimationFrame: function() {\n\t\tvar me = this;\n\t\tif (me.request === null) {\n\t\t\t// Skip animation frame requests until the active one is executed.\n\t\t\t// This can happen when processing mouse events, e.g. 'mousemove'\n\t\t\t// and 'mouseout' events will trigger multiple renders.\n\t\t\tme.request = helpers.requestAnimFrame.call(window, function() {\n\t\t\t\tme.request = null;\n\t\t\t\tme.startDigest();\n\t\t\t});\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tstartDigest: function() {\n\t\tvar me = this;\n\t\tvar startTime = Date.now();\n\t\tvar framesToDrop = 0;\n\n\t\tif (me.dropFrames > 1) {\n\t\t\tframesToDrop = Math.floor(me.dropFrames);\n\t\t\tme.dropFrames = me.dropFrames % 1;\n\t\t}\n\n\t\tme.advance(1 + framesToDrop);\n\n\t\tvar endTime = Date.now();\n\n\t\tme.dropFrames += (endTime - startTime) / me.frameDuration;\n\n\t\t// Do we have more stuff to animate?\n\t\tif (me.animations.length > 0) {\n\t\t\tme.requestAnimationFrame();\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tadvance: function(count) {\n\t\tvar animations = this.animations;\n\t\tvar animation, chart;\n\t\tvar i = 0;\n\n\t\twhile (i < animations.length) {\n\t\t\tanimation = animations[i];\n\t\t\tchart = animation.chart;\n\n\t\t\tanimation.currentStep = (animation.currentStep || 0) + count;\n\t\t\tanimation.currentStep = Math.min(animation.currentStep, animation.numSteps);\n\n\t\t\thelpers.callback(animation.render, [chart, animation], chart);\n\t\t\thelpers.callback(animation.onAnimationProgress, [animation], chart);\n\n\t\t\tif (animation.currentStep >= animation.numSteps) {\n\t\t\t\thelpers.callback(animation.onAnimationComplete, [animation], chart);\n\t\t\t\tchart.animating = false;\n\t\t\t\tanimations.splice(i, 1);\n\t\t\t} else {\n\t\t\t\t++i;\n\t\t\t}\n\t\t}\n\t}\n};\n\n},{\"26\":26,\"46\":46}],24:[function(require,module,exports){\n'use strict';\n\nvar Animation = require(22);\nvar animations = require(23);\nvar defaults = require(26);\nvar helpers = require(46);\nvar Interaction = require(29);\nvar layouts = require(31);\nvar platform = require(49);\nvar plugins = require(32);\nvar scaleService = require(34);\nvar Tooltip = require(36);\n\nmodule.exports = function(Chart) {\n\n\t// Create a dictionary of chart types, to allow for extension of existing types\n\tChart.types = {};\n\n\t// Store a reference to each instance - allowing us to globally resize chart instances on window resize.\n\t// Destroy method on the chart will remove the instance of the chart from this reference.\n\tChart.instances = {};\n\n\t// Controllers available for dataset visualization eg. bar, line, slice, etc.\n\tChart.controllers = {};\n\n\t/**\n\t * Initializes the given config with global and chart default values.\n\t */\n\tfunction initConfig(config) {\n\t\tconfig = config || {};\n\n\t\t// Do NOT use configMerge() for the data object because this method merges arrays\n\t\t// and so would change references to labels and datasets, preventing data updates.\n\t\tvar data = config.data = config.data || {};\n\t\tdata.datasets = data.datasets || [];\n\t\tdata.labels = data.labels || [];\n\n\t\tconfig.options = helpers.configMerge(\n\t\t\tdefaults.global,\n\t\t\tdefaults[config.type],\n\t\t\tconfig.options || {});\n\n\t\treturn config;\n\t}\n\n\t/**\n\t * Updates the config of the chart\n\t * @param chart {Chart} chart to update the options for\n\t */\n\tfunction updateConfig(chart) {\n\t\tvar newOptions = chart.options;\n\n\t\thelpers.each(chart.scales, function(scale) {\n\t\t\tlayouts.removeBox(chart, scale);\n\t\t});\n\n\t\tnewOptions = helpers.configMerge(\n\t\t\tChart.defaults.global,\n\t\t\tChart.defaults[chart.config.type],\n\t\t\tnewOptions);\n\n\t\tchart.options = chart.config.options = newOptions;\n\t\tchart.ensureScalesHaveIDs();\n\t\tchart.buildOrUpdateScales();\n\t\t// Tooltip\n\t\tchart.tooltip._options = newOptions.tooltips;\n\t\tchart.tooltip.initialize();\n\t}\n\n\tfunction positionIsHorizontal(position) {\n\t\treturn position === 'top' || position === 'bottom';\n\t}\n\n\thelpers.extend(Chart.prototype, /** @lends Chart */ {\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tconstruct: function(item, config) {\n\t\t\tvar me = this;\n\n\t\t\tconfig = initConfig(config);\n\n\t\t\tvar context = platform.acquireContext(item, config);\n\t\t\tvar canvas = context && context.canvas;\n\t\t\tvar height = canvas && canvas.height;\n\t\t\tvar width = canvas && canvas.width;\n\n\t\t\tme.id = helpers.uid();\n\t\t\tme.ctx = context;\n\t\t\tme.canvas = canvas;\n\t\t\tme.config = config;\n\t\t\tme.width = width;\n\t\t\tme.height = height;\n\t\t\tme.aspectRatio = height ? width / height : null;\n\t\t\tme.options = config.options;\n\t\t\tme._bufferedRender = false;\n\n\t\t\t/**\n\t\t\t * Provided for backward compatibility, Chart and Chart.Controller have been merged,\n\t\t\t * the \"instance\" still need to be defined since it might be called from plugins.\n\t\t\t * @prop Chart#chart\n\t\t\t * @deprecated since version 2.6.0\n\t\t\t * @todo remove at version 3\n\t\t\t * @private\n\t\t\t */\n\t\t\tme.chart = me;\n\t\t\tme.controller = me; // chart.chart.controller #inception\n\n\t\t\t// Add the chart instance to the global namespace\n\t\t\tChart.instances[me.id] = me;\n\n\t\t\t// Define alias to the config data: `chart.data === chart.config.data`\n\t\t\tObject.defineProperty(me, 'data', {\n\t\t\t\tget: function() {\n\t\t\t\t\treturn me.config.data;\n\t\t\t\t},\n\t\t\t\tset: function(value) {\n\t\t\t\t\tme.config.data = value;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (!context || !canvas) {\n\t\t\t\t// The given item is not a compatible context2d element, let's return before finalizing\n\t\t\t\t// the chart initialization but after setting basic chart / controller properties that\n\t\t\t\t// can help to figure out that the chart is not valid (e.g chart.canvas !== null);\n\t\t\t\t// https://github.com/chartjs/Chart.js/issues/2807\n\t\t\t\tconsole.error(\"Failed to create chart: can't acquire context from the given item\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tme.initialize();\n\t\t\tme.update();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tinitialize: function() {\n\t\t\tvar me = this;\n\n\t\t\t// Before init plugin notification\n\t\t\tplugins.notify(me, 'beforeInit');\n\n\t\t\thelpers.retinaScale(me, me.options.devicePixelRatio);\n\n\t\t\tme.bindEvents();\n\n\t\t\tif (me.options.responsive) {\n\t\t\t\t// Initial resize before chart draws (must be silent to preserve initial animations).\n\t\t\t\tme.resize(true);\n\t\t\t}\n\n\t\t\t// Make sure scales have IDs and are built before we build any controllers.\n\t\t\tme.ensureScalesHaveIDs();\n\t\t\tme.buildOrUpdateScales();\n\t\t\tme.initToolTip();\n\n\t\t\t// After init plugin notification\n\t\t\tplugins.notify(me, 'afterInit');\n\n\t\t\treturn me;\n\t\t},\n\n\t\tclear: function() {\n\t\t\thelpers.canvas.clear(this);\n\t\t\treturn this;\n\t\t},\n\n\t\tstop: function() {\n\t\t\t// Stops any current animation loop occurring\n\t\t\tanimations.cancelAnimation(this);\n\t\t\treturn this;\n\t\t},\n\n\t\tresize: function(silent) {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\t\t\tvar canvas = me.canvas;\n\t\t\tvar aspectRatio = (options.maintainAspectRatio && me.aspectRatio) || null;\n\n\t\t\t// the canvas render width and height will be casted to integers so make sure that\n\t\t\t// the canvas display style uses the same integer values to avoid blurring effect.\n\n\t\t\t// Set to 0 instead of canvas.size because the size defaults to 300x150 if the element is collapsed\n\t\t\tvar newWidth = Math.max(0, Math.floor(helpers.getMaximumWidth(canvas)));\n\t\t\tvar newHeight = Math.max(0, Math.floor(aspectRatio ? newWidth / aspectRatio : helpers.getMaximumHeight(canvas)));\n\n\t\t\tif (me.width === newWidth && me.height === newHeight) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcanvas.width = me.width = newWidth;\n\t\t\tcanvas.height = me.height = newHeight;\n\t\t\tcanvas.style.width = newWidth + 'px';\n\t\t\tcanvas.style.height = newHeight + 'px';\n\n\t\t\thelpers.retinaScale(me, options.devicePixelRatio);\n\n\t\t\tif (!silent) {\n\t\t\t\t// Notify any plugins about the resize\n\t\t\t\tvar newSize = {width: newWidth, height: newHeight};\n\t\t\t\tplugins.notify(me, 'resize', [newSize]);\n\n\t\t\t\t// Notify of resize\n\t\t\t\tif (me.options.onResize) {\n\t\t\t\t\tme.options.onResize(me, newSize);\n\t\t\t\t}\n\n\t\t\t\tme.stop();\n\t\t\t\tme.update({\n\t\t\t\t\tduration: me.options.responsiveAnimationDuration\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\tensureScalesHaveIDs: function() {\n\t\t\tvar options = this.options;\n\t\t\tvar scalesOptions = options.scales || {};\n\t\t\tvar scaleOptions = options.scale;\n\n\t\t\thelpers.each(scalesOptions.xAxes, function(xAxisOptions, index) {\n\t\t\t\txAxisOptions.id = xAxisOptions.id || ('x-axis-' + index);\n\t\t\t});\n\n\t\t\thelpers.each(scalesOptions.yAxes, function(yAxisOptions, index) {\n\t\t\t\tyAxisOptions.id = yAxisOptions.id || ('y-axis-' + index);\n\t\t\t});\n\n\t\t\tif (scaleOptions) {\n\t\t\t\tscaleOptions.id = scaleOptions.id || 'scale';\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Builds a map of scale ID to scale object for future lookup.\n\t\t */\n\t\tbuildOrUpdateScales: function() {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\t\t\tvar scales = me.scales || {};\n\t\t\tvar items = [];\n\t\t\tvar updated = Object.keys(scales).reduce(function(obj, id) {\n\t\t\t\tobj[id] = false;\n\t\t\t\treturn obj;\n\t\t\t}, {});\n\n\t\t\tif (options.scales) {\n\t\t\t\titems = items.concat(\n\t\t\t\t\t(options.scales.xAxes || []).map(function(xAxisOptions) {\n\t\t\t\t\t\treturn {options: xAxisOptions, dtype: 'category', dposition: 'bottom'};\n\t\t\t\t\t}),\n\t\t\t\t\t(options.scales.yAxes || []).map(function(yAxisOptions) {\n\t\t\t\t\t\treturn {options: yAxisOptions, dtype: 'linear', dposition: 'left'};\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (options.scale) {\n\t\t\t\titems.push({\n\t\t\t\t\toptions: options.scale,\n\t\t\t\t\tdtype: 'radialLinear',\n\t\t\t\t\tisDefault: true,\n\t\t\t\t\tdposition: 'chartArea'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\thelpers.each(items, function(item) {\n\t\t\t\tvar scaleOptions = item.options;\n\t\t\t\tvar id = scaleOptions.id;\n\t\t\t\tvar scaleType = helpers.valueOrDefault(scaleOptions.type, item.dtype);\n\n\t\t\t\tif (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) {\n\t\t\t\t\tscaleOptions.position = item.dposition;\n\t\t\t\t}\n\n\t\t\t\tupdated[id] = true;\n\t\t\t\tvar scale = null;\n\t\t\t\tif (id in scales && scales[id].type === scaleType) {\n\t\t\t\t\tscale = scales[id];\n\t\t\t\t\tscale.options = scaleOptions;\n\t\t\t\t\tscale.ctx = me.ctx;\n\t\t\t\t\tscale.chart = me;\n\t\t\t\t} else {\n\t\t\t\t\tvar scaleClass = scaleService.getScaleConstructor(scaleType);\n\t\t\t\t\tif (!scaleClass) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tscale = new scaleClass({\n\t\t\t\t\t\tid: id,\n\t\t\t\t\t\ttype: scaleType,\n\t\t\t\t\t\toptions: scaleOptions,\n\t\t\t\t\t\tctx: me.ctx,\n\t\t\t\t\t\tchart: me\n\t\t\t\t\t});\n\t\t\t\t\tscales[scale.id] = scale;\n\t\t\t\t}\n\n\t\t\t\tscale.mergeTicksOptions();\n\n\t\t\t\t// TODO(SB): I think we should be able to remove this custom case (options.scale)\n\t\t\t\t// and consider it as a regular scale part of the \"scales\"\" map only! This would\n\t\t\t\t// make the logic easier and remove some useless? custom code.\n\t\t\t\tif (item.isDefault) {\n\t\t\t\t\tme.scale = scale;\n\t\t\t\t}\n\t\t\t});\n\t\t\t// clear up discarded scales\n\t\t\thelpers.each(updated, function(hasUpdated, id) {\n\t\t\t\tif (!hasUpdated) {\n\t\t\t\t\tdelete scales[id];\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tme.scales = scales;\n\n\t\t\tscaleService.addScalesToLayout(this);\n\t\t},\n\n\t\tbuildOrUpdateControllers: function() {\n\t\t\tvar me = this;\n\t\t\tvar types = [];\n\t\t\tvar newControllers = [];\n\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tvar meta = me.getDatasetMeta(datasetIndex);\n\t\t\t\tvar type = dataset.type || me.config.type;\n\n\t\t\t\tif (meta.type && meta.type !== type) {\n\t\t\t\t\tme.destroyDatasetMeta(datasetIndex);\n\t\t\t\t\tmeta = me.getDatasetMeta(datasetIndex);\n\t\t\t\t}\n\t\t\t\tmeta.type = type;\n\n\t\t\t\ttypes.push(meta.type);\n\n\t\t\t\tif (meta.controller) {\n\t\t\t\t\tmeta.controller.updateIndex(datasetIndex);\n\t\t\t\t\tmeta.controller.linkScales();\n\t\t\t\t} else {\n\t\t\t\t\tvar ControllerClass = Chart.controllers[meta.type];\n\t\t\t\t\tif (ControllerClass === undefined) {\n\t\t\t\t\t\tthrow new Error('\"' + meta.type + '\" is not a chart type.');\n\t\t\t\t\t}\n\n\t\t\t\t\tmeta.controller = new ControllerClass(me, datasetIndex);\n\t\t\t\t\tnewControllers.push(meta.controller);\n\t\t\t\t}\n\t\t\t}, me);\n\n\t\t\treturn newControllers;\n\t\t},\n\n\t\t/**\n\t\t * Reset the elements of all datasets\n\t\t * @private\n\t\t */\n\t\tresetElements: function() {\n\t\t\tvar me = this;\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tme.getDatasetMeta(datasetIndex).controller.reset();\n\t\t\t}, me);\n\t\t},\n\n\t\t/**\n\t\t* Resets the chart back to it's state before the initial animation\n\t\t*/\n\t\treset: function() {\n\t\t\tthis.resetElements();\n\t\t\tthis.tooltip.initialize();\n\t\t},\n\n\t\tupdate: function(config) {\n\t\t\tvar me = this;\n\n\t\t\tif (!config || typeof config !== 'object') {\n\t\t\t\t// backwards compatibility\n\t\t\t\tconfig = {\n\t\t\t\t\tduration: config,\n\t\t\t\t\tlazy: arguments[1]\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tupdateConfig(me);\n\n\t\t\t// plugins options references might have change, let's invalidate the cache\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\n\t\t\tplugins._invalidate(me);\n\n\t\t\tif (plugins.notify(me, 'beforeUpdate') === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// In case the entire data object changed\n\t\t\tme.tooltip._data = me.data;\n\n\t\t\t// Make sure dataset controllers are updated and new controllers are reset\n\t\t\tvar newControllers = me.buildOrUpdateControllers();\n\n\t\t\t// Make sure all dataset controllers have correct meta data counts\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tme.getDatasetMeta(datasetIndex).controller.buildOrUpdateElements();\n\t\t\t}, me);\n\n\t\t\tme.updateLayout();\n\n\t\t\t// Can only reset the new controllers after the scales have been updated\n\t\t\tif (me.options.animation && me.options.animation.duration) {\n\t\t\t\thelpers.each(newControllers, function(controller) {\n\t\t\t\t\tcontroller.reset();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tme.updateDatasets();\n\n\t\t\t// Need to reset tooltip in case it is displayed with elements that are removed\n\t\t\t// after update.\n\t\t\tme.tooltip.initialize();\n\n\t\t\t// Last active contains items that were previously in the tooltip.\n\t\t\t// When we reset the tooltip, we need to clear it\n\t\t\tme.lastActive = [];\n\n\t\t\t// Do this before render so that any plugins that need final scale updates can use it\n\t\t\tplugins.notify(me, 'afterUpdate');\n\n\t\t\tif (me._bufferedRender) {\n\t\t\t\tme._bufferedRequest = {\n\t\t\t\t\tduration: config.duration,\n\t\t\t\t\teasing: config.easing,\n\t\t\t\t\tlazy: config.lazy\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tme.render(config);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Updates the chart layout unless a plugin returns `false` to the `beforeLayout`\n\t\t * hook, in which case, plugins will not be called on `afterLayout`.\n\t\t * @private\n\t\t */\n\t\tupdateLayout: function() {\n\t\t\tvar me = this;\n\n\t\t\tif (plugins.notify(me, 'beforeLayout') === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlayouts.update(this, this.width, this.height);\n\n\t\t\t/**\n\t\t\t * Provided for backward compatibility, use `afterLayout` instead.\n\t\t\t * @method IPlugin#afterScaleUpdate\n\t\t\t * @deprecated since version 2.5.0\n\t\t\t * @todo remove at version 3\n\t\t\t * @private\n\t\t\t */\n\t\t\tplugins.notify(me, 'afterScaleUpdate');\n\t\t\tplugins.notify(me, 'afterLayout');\n\t\t},\n\n\t\t/**\n\t\t * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate`\n\t\t * hook, in which case, plugins will not be called on `afterDatasetsUpdate`.\n\t\t * @private\n\t\t */\n\t\tupdateDatasets: function() {\n\t\t\tvar me = this;\n\n\t\t\tif (plugins.notify(me, 'beforeDatasetsUpdate') === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n\t\t\t\tme.updateDataset(i);\n\t\t\t}\n\n\t\t\tplugins.notify(me, 'afterDatasetsUpdate');\n\t\t},\n\n\t\t/**\n\t\t * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate`\n\t\t * hook, in which case, plugins will not be called on `afterDatasetUpdate`.\n\t\t * @private\n\t\t */\n\t\tupdateDataset: function(index) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getDatasetMeta(index);\n\t\t\tvar args = {\n\t\t\t\tmeta: meta,\n\t\t\t\tindex: index\n\t\t\t};\n\n\t\t\tif (plugins.notify(me, 'beforeDatasetUpdate', [args]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmeta.controller.update();\n\n\t\t\tplugins.notify(me, 'afterDatasetUpdate', [args]);\n\t\t},\n\n\t\trender: function(config) {\n\t\t\tvar me = this;\n\n\t\t\tif (!config || typeof config !== 'object') {\n\t\t\t\t// backwards compatibility\n\t\t\t\tconfig = {\n\t\t\t\t\tduration: config,\n\t\t\t\t\tlazy: arguments[1]\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tvar duration = config.duration;\n\t\t\tvar lazy = config.lazy;\n\n\t\t\tif (plugins.notify(me, 'beforeRender') === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar animationOptions = me.options.animation;\n\t\t\tvar onComplete = function(animation) {\n\t\t\t\tplugins.notify(me, 'afterRender');\n\t\t\t\thelpers.callback(animationOptions && animationOptions.onComplete, [animation], me);\n\t\t\t};\n\n\t\t\tif (animationOptions && ((typeof duration !== 'undefined' && duration !== 0) || (typeof duration === 'undefined' && animationOptions.duration !== 0))) {\n\t\t\t\tvar animation = new Animation({\n\t\t\t\t\tnumSteps: (duration || animationOptions.duration) / 16.66, // 60 fps\n\t\t\t\t\teasing: config.easing || animationOptions.easing,\n\n\t\t\t\t\trender: function(chart, animationObject) {\n\t\t\t\t\t\tvar easingFunction = helpers.easing.effects[animationObject.easing];\n\t\t\t\t\t\tvar currentStep = animationObject.currentStep;\n\t\t\t\t\t\tvar stepDecimal = currentStep / animationObject.numSteps;\n\n\t\t\t\t\t\tchart.draw(easingFunction(stepDecimal), stepDecimal, currentStep);\n\t\t\t\t\t},\n\n\t\t\t\t\tonAnimationProgress: animationOptions.onProgress,\n\t\t\t\t\tonAnimationComplete: onComplete\n\t\t\t\t});\n\n\t\t\t\tanimations.addAnimation(me, animation, duration, lazy);\n\t\t\t} else {\n\t\t\t\tme.draw();\n\n\t\t\t\t// See https://github.com/chartjs/Chart.js/issues/3781\n\t\t\t\tonComplete(new Animation({numSteps: 0, chart: me}));\n\t\t\t}\n\n\t\t\treturn me;\n\t\t},\n\n\t\tdraw: function(easingValue) {\n\t\t\tvar me = this;\n\n\t\t\tme.clear();\n\n\t\t\tif (helpers.isNullOrUndef(easingValue)) {\n\t\t\t\teasingValue = 1;\n\t\t\t}\n\n\t\t\tme.transition(easingValue);\n\n\t\t\tif (me.width <= 0 || me.height <= 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (plugins.notify(me, 'beforeDraw', [easingValue]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Draw all the scales\n\t\t\thelpers.each(me.boxes, function(box) {\n\t\t\t\tbox.draw(me.chartArea);\n\t\t\t}, me);\n\n\t\t\tif (me.scale) {\n\t\t\t\tme.scale.draw();\n\t\t\t}\n\n\t\t\tme.drawDatasets(easingValue);\n\t\t\tme._drawTooltip(easingValue);\n\n\t\t\tplugins.notify(me, 'afterDraw', [easingValue]);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\ttransition: function(easingValue) {\n\t\t\tvar me = this;\n\n\t\t\tfor (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tif (me.isDatasetVisible(i)) {\n\t\t\t\t\tme.getDatasetMeta(i).controller.transition(easingValue);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tme.tooltip.transition(easingValue);\n\t\t},\n\n\t\t/**\n\t\t * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw`\n\t\t * hook, in which case, plugins will not be called on `afterDatasetsDraw`.\n\t\t * @private\n\t\t */\n\t\tdrawDatasets: function(easingValue) {\n\t\t\tvar me = this;\n\n\t\t\tif (plugins.notify(me, 'beforeDatasetsDraw', [easingValue]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Draw datasets reversed to support proper line stacking\n\t\t\tfor (var i = (me.data.datasets || []).length - 1; i >= 0; --i) {\n\t\t\t\tif (me.isDatasetVisible(i)) {\n\t\t\t\t\tme.drawDataset(i, easingValue);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tplugins.notify(me, 'afterDatasetsDraw', [easingValue]);\n\t\t},\n\n\t\t/**\n\t\t * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw`\n\t\t * hook, in which case, plugins will not be called on `afterDatasetDraw`.\n\t\t * @private\n\t\t */\n\t\tdrawDataset: function(index, easingValue) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getDatasetMeta(index);\n\t\t\tvar args = {\n\t\t\t\tmeta: meta,\n\t\t\t\tindex: index,\n\t\t\t\teasingValue: easingValue\n\t\t\t};\n\n\t\t\tif (plugins.notify(me, 'beforeDatasetDraw', [args]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmeta.controller.draw(easingValue);\n\n\t\t\tplugins.notify(me, 'afterDatasetDraw', [args]);\n\t\t},\n\n\t\t/**\n\t\t * Draws tooltip unless a plugin returns `false` to the `beforeTooltipDraw`\n\t\t * hook, in which case, plugins will not be called on `afterTooltipDraw`.\n\t\t * @private\n\t\t */\n\t\t_drawTooltip: function(easingValue) {\n\t\t\tvar me = this;\n\t\t\tvar tooltip = me.tooltip;\n\t\t\tvar args = {\n\t\t\t\ttooltip: tooltip,\n\t\t\t\teasingValue: easingValue\n\t\t\t};\n\n\t\t\tif (plugins.notify(me, 'beforeTooltipDraw', [args]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttooltip.draw();\n\n\t\t\tplugins.notify(me, 'afterTooltipDraw', [args]);\n\t\t},\n\n\t\t// Get the single element that was clicked on\n\t\t// @return : An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw\n\t\tgetElementAtEvent: function(e) {\n\t\t\treturn Interaction.modes.single(this, e);\n\t\t},\n\n\t\tgetElementsAtEvent: function(e) {\n\t\t\treturn Interaction.modes.label(this, e, {intersect: true});\n\t\t},\n\n\t\tgetElementsAtXAxis: function(e) {\n\t\t\treturn Interaction.modes['x-axis'](this, e, {intersect: true});\n\t\t},\n\n\t\tgetElementsAtEventForMode: function(e, mode, options) {\n\t\t\tvar method = Interaction.modes[mode];\n\t\t\tif (typeof method === 'function') {\n\t\t\t\treturn method(this, e, options);\n\t\t\t}\n\n\t\t\treturn [];\n\t\t},\n\n\t\tgetDatasetAtEvent: function(e) {\n\t\t\treturn Interaction.modes.dataset(this, e, {intersect: true});\n\t\t},\n\n\t\tgetDatasetMeta: function(datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar dataset = me.data.datasets[datasetIndex];\n\t\t\tif (!dataset._meta) {\n\t\t\t\tdataset._meta = {};\n\t\t\t}\n\n\t\t\tvar meta = dataset._meta[me.id];\n\t\t\tif (!meta) {\n\t\t\t\tmeta = dataset._meta[me.id] = {\n\t\t\t\t\ttype: null,\n\t\t\t\t\tdata: [],\n\t\t\t\t\tdataset: null,\n\t\t\t\t\tcontroller: null,\n\t\t\t\t\thidden: null,\t\t\t// See isDatasetVisible() comment\n\t\t\t\t\txAxisID: null,\n\t\t\t\t\tyAxisID: null\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn meta;\n\t\t},\n\n\t\tgetVisibleDatasetCount: function() {\n\t\t\tvar count = 0;\n\t\t\tfor (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n\t\t\t\tif (this.isDatasetVisible(i)) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\n\t\tisDatasetVisible: function(datasetIndex) {\n\t\t\tvar meta = this.getDatasetMeta(datasetIndex);\n\n\t\t\t// meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,\n\t\t\t// the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.\n\t\t\treturn typeof meta.hidden === 'boolean' ? !meta.hidden : !this.data.datasets[datasetIndex].hidden;\n\t\t},\n\n\t\tgenerateLegend: function() {\n\t\t\treturn this.options.legendCallback(this);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tdestroyDatasetMeta: function(datasetIndex) {\n\t\t\tvar id = this.id;\n\t\t\tvar dataset = this.data.datasets[datasetIndex];\n\t\t\tvar meta = dataset._meta && dataset._meta[id];\n\n\t\t\tif (meta) {\n\t\t\t\tmeta.controller.destroy();\n\t\t\t\tdelete dataset._meta[id];\n\t\t\t}\n\t\t},\n\n\t\tdestroy: function() {\n\t\t\tvar me = this;\n\t\t\tvar canvas = me.canvas;\n\t\t\tvar i, ilen;\n\n\t\t\tme.stop();\n\n\t\t\t// dataset controllers need to cleanup associated data\n\t\t\tfor (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n\t\t\t\tme.destroyDatasetMeta(i);\n\t\t\t}\n\n\t\t\tif (canvas) {\n\t\t\t\tme.unbindEvents();\n\t\t\t\thelpers.canvas.clear(me);\n\t\t\t\tplatform.releaseContext(me.ctx);\n\t\t\t\tme.canvas = null;\n\t\t\t\tme.ctx = null;\n\t\t\t}\n\n\t\t\tplugins.notify(me, 'destroy');\n\n\t\t\tdelete Chart.instances[me.id];\n\t\t},\n\n\t\ttoBase64Image: function() {\n\t\t\treturn this.canvas.toDataURL.apply(this.canvas, arguments);\n\t\t},\n\n\t\tinitToolTip: function() {\n\t\t\tvar me = this;\n\t\t\tme.tooltip = new Tooltip({\n\t\t\t\t_chart: me,\n\t\t\t\t_chartInstance: me, // deprecated, backward compatibility\n\t\t\t\t_data: me.data,\n\t\t\t\t_options: me.options.tooltips\n\t\t\t}, me);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tbindEvents: function() {\n\t\t\tvar me = this;\n\t\t\tvar listeners = me._listeners = {};\n\t\t\tvar listener = function() {\n\t\t\t\tme.eventHandler.apply(me, arguments);\n\t\t\t};\n\n\t\t\thelpers.each(me.options.events, function(type) {\n\t\t\t\tplatform.addEventListener(me, type, listener);\n\t\t\t\tlisteners[type] = listener;\n\t\t\t});\n\n\t\t\t// Elements used to detect size change should not be injected for non responsive charts.\n\t\t\t// See https://github.com/chartjs/Chart.js/issues/2210\n\t\t\tif (me.options.responsive) {\n\t\t\t\tlistener = function() {\n\t\t\t\t\tme.resize();\n\t\t\t\t};\n\n\t\t\t\tplatform.addEventListener(me, 'resize', listener);\n\t\t\t\tlisteners.resize = listener;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tunbindEvents: function() {\n\t\t\tvar me = this;\n\t\t\tvar listeners = me._listeners;\n\t\t\tif (!listeners) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdelete me._listeners;\n\t\t\thelpers.each(listeners, function(listener, type) {\n\t\t\t\tplatform.removeEventListener(me, type, listener);\n\t\t\t});\n\t\t},\n\n\t\tupdateHoverStyle: function(elements, mode, enabled) {\n\t\t\tvar method = enabled ? 'setHoverStyle' : 'removeHoverStyle';\n\t\t\tvar element, i, ilen;\n\n\t\t\tfor (i = 0, ilen = elements.length; i < ilen; ++i) {\n\t\t\t\telement = elements[i];\n\t\t\t\tif (element) {\n\t\t\t\t\tthis.getDatasetMeta(element._datasetIndex).controller[method](element);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\teventHandler: function(e) {\n\t\t\tvar me = this;\n\t\t\tvar tooltip = me.tooltip;\n\n\t\t\tif (plugins.notify(me, 'beforeEvent', [e]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Buffer any update calls so that renders do not occur\n\t\t\tme._bufferedRender = true;\n\t\t\tme._bufferedRequest = null;\n\n\t\t\tvar changed = me.handleEvent(e);\n\t\t\t// for smooth tooltip animations issue #4989\n\t\t\t// the tooltip should be the source of change\n\t\t\t// Animation check workaround:\n\t\t\t// tooltip._start will be null when tooltip isn't animating\n\t\t\tif (tooltip) {\n\t\t\t\tchanged = tooltip._start\n\t\t\t\t\t? tooltip.handleEvent(e)\n\t\t\t\t\t: changed | tooltip.handleEvent(e);\n\t\t\t}\n\n\t\t\tplugins.notify(me, 'afterEvent', [e]);\n\n\t\t\tvar bufferedRequest = me._bufferedRequest;\n\t\t\tif (bufferedRequest) {\n\t\t\t\t// If we have an update that was triggered, we need to do a normal render\n\t\t\t\tme.render(bufferedRequest);\n\t\t\t} else if (changed && !me.animating) {\n\t\t\t\t// If entering, leaving, or changing elements, animate the change via pivot\n\t\t\t\tme.stop();\n\n\t\t\t\t// We only need to render at this point. Updating will cause scales to be\n\t\t\t\t// recomputed generating flicker & using more memory than necessary.\n\t\t\t\tme.render({\n\t\t\t\t\tduration: me.options.hover.animationDuration,\n\t\t\t\t\tlazy: true\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tme._bufferedRender = false;\n\t\t\tme._bufferedRequest = null;\n\n\t\t\treturn me;\n\t\t},\n\n\t\t/**\n\t\t * Handle an event\n\t\t * @private\n\t\t * @param {IEvent} event the event to handle\n\t\t * @return {Boolean} true if the chart needs to re-render\n\t\t */\n\t\thandleEvent: function(e) {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options || {};\n\t\t\tvar hoverOptions = options.hover;\n\t\t\tvar changed = false;\n\n\t\t\tme.lastActive = me.lastActive || [];\n\n\t\t\t// Find Active Elements for hover and tooltips\n\t\t\tif (e.type === 'mouseout') {\n\t\t\t\tme.active = [];\n\t\t\t} else {\n\t\t\t\tme.active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions);\n\t\t\t}\n\n\t\t\t// Invoke onHover hook\n\t\t\t// Need to call with native event here to not break backwards compatibility\n\t\t\thelpers.callback(options.onHover || options.hover.onHover, [e.native, me.active], me);\n\n\t\t\tif (e.type === 'mouseup' || e.type === 'click') {\n\t\t\t\tif (options.onClick) {\n\t\t\t\t\t// Use e.native here for backwards compatibility\n\t\t\t\t\toptions.onClick.call(me, e.native, me.active);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove styling for last active (even if it may still be active)\n\t\t\tif (me.lastActive.length) {\n\t\t\t\tme.updateHoverStyle(me.lastActive, hoverOptions.mode, false);\n\t\t\t}\n\n\t\t\t// Built in hover styling\n\t\t\tif (me.active.length && hoverOptions.mode) {\n\t\t\t\tme.updateHoverStyle(me.active, hoverOptions.mode, true);\n\t\t\t}\n\n\t\t\tchanged = !helpers.arrayEquals(me.active, me.lastActive);\n\n\t\t\t// Remember Last Actives\n\t\t\tme.lastActive = me.active;\n\n\t\t\treturn changed;\n\t\t}\n\t});\n\n\t/**\n\t * Provided for backward compatibility, use Chart instead.\n\t * @class Chart.Controller\n\t * @deprecated since version 2.6.0\n\t * @todo remove at version 3\n\t * @private\n\t */\n\tChart.Controller = Chart;\n};\n\n},{\"22\":22,\"23\":23,\"26\":26,\"29\":29,\"31\":31,\"32\":32,\"34\":34,\"36\":36,\"46\":46,\"49\":49}],25:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(46);\n\nmodule.exports = function(Chart) {\n\n\tvar arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\n\n\t/**\n\t * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\n\t * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\n\t * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments.\n\t */\n\tfunction listenArrayEvents(array, listener) {\n\t\tif (array._chartjs) {\n\t\t\tarray._chartjs.listeners.push(listener);\n\t\t\treturn;\n\t\t}\n\n\t\tObject.defineProperty(array, '_chartjs', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: {\n\t\t\t\tlisteners: [listener]\n\t\t\t}\n\t\t});\n\n\t\tarrayEvents.forEach(function(key) {\n\t\t\tvar method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1);\n\t\t\tvar base = array[key];\n\n\t\t\tObject.defineProperty(array, key, {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: false,\n\t\t\t\tvalue: function() {\n\t\t\t\t\tvar args = Array.prototype.slice.call(arguments);\n\t\t\t\t\tvar res = base.apply(this, args);\n\n\t\t\t\t\thelpers.each(array._chartjs.listeners, function(object) {\n\t\t\t\t\t\tif (typeof object[method] === 'function') {\n\t\t\t\t\t\t\tobject[method].apply(object, args);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\treturn res;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Removes the given array event listener and cleanup extra attached properties (such as\n\t * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\n\t */\n\tfunction unlistenArrayEvents(array, listener) {\n\t\tvar stub = array._chartjs;\n\t\tif (!stub) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar listeners = stub.listeners;\n\t\tvar index = listeners.indexOf(listener);\n\t\tif (index !== -1) {\n\t\t\tlisteners.splice(index, 1);\n\t\t}\n\n\t\tif (listeners.length > 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tarrayEvents.forEach(function(key) {\n\t\t\tdelete array[key];\n\t\t});\n\n\t\tdelete array._chartjs;\n\t}\n\n\t// Base class for all dataset controllers (line, bar, etc)\n\tChart.DatasetController = function(chart, datasetIndex) {\n\t\tthis.initialize(chart, datasetIndex);\n\t};\n\n\thelpers.extend(Chart.DatasetController.prototype, {\n\n\t\t/**\n\t\t * Element type used to generate a meta dataset (e.g. Chart.element.Line).\n\t\t * @type {Chart.core.element}\n\t\t */\n\t\tdatasetElementType: null,\n\n\t\t/**\n\t\t * Element type used to generate a meta data (e.g. Chart.element.Point).\n\t\t * @type {Chart.core.element}\n\t\t */\n\t\tdataElementType: null,\n\n\t\tinitialize: function(chart, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tme.chart = chart;\n\t\t\tme.index = datasetIndex;\n\t\t\tme.linkScales();\n\t\t\tme.addElements();\n\t\t},\n\n\t\tupdateIndex: function(datasetIndex) {\n\t\t\tthis.index = datasetIndex;\n\t\t},\n\n\t\tlinkScales: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar dataset = me.getDataset();\n\n\t\t\tif (meta.xAxisID === null || !(meta.xAxisID in me.chart.scales)) {\n\t\t\t\tmeta.xAxisID = dataset.xAxisID || me.chart.options.scales.xAxes[0].id;\n\t\t\t}\n\t\t\tif (meta.yAxisID === null || !(meta.yAxisID in me.chart.scales)) {\n\t\t\t\tmeta.yAxisID = dataset.yAxisID || me.chart.options.scales.yAxes[0].id;\n\t\t\t}\n\t\t},\n\n\t\tgetDataset: function() {\n\t\t\treturn this.chart.data.datasets[this.index];\n\t\t},\n\n\t\tgetMeta: function() {\n\t\t\treturn this.chart.getDatasetMeta(this.index);\n\t\t},\n\n\t\tgetScaleForId: function(scaleID) {\n\t\t\treturn this.chart.scales[scaleID];\n\t\t},\n\n\t\treset: function() {\n\t\t\tthis.update(true);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tdestroy: function() {\n\t\t\tif (this._data) {\n\t\t\t\tunlistenArrayEvents(this._data, this);\n\t\t\t}\n\t\t},\n\n\t\tcreateMetaDataset: function() {\n\t\t\tvar me = this;\n\t\t\tvar type = me.datasetElementType;\n\t\t\treturn type && new type({\n\t\t\t\t_chart: me.chart,\n\t\t\t\t_datasetIndex: me.index\n\t\t\t});\n\t\t},\n\n\t\tcreateMetaData: function(index) {\n\t\t\tvar me = this;\n\t\t\tvar type = me.dataElementType;\n\t\t\treturn type && new type({\n\t\t\t\t_chart: me.chart,\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index\n\t\t\t});\n\t\t},\n\n\t\taddElements: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar data = me.getDataset().data || [];\n\t\t\tvar metaData = meta.data;\n\t\t\tvar i, ilen;\n\n\t\t\tfor (i = 0, ilen = data.length; i < ilen; ++i) {\n\t\t\t\tmetaData[i] = metaData[i] || me.createMetaData(i);\n\t\t\t}\n\n\t\t\tmeta.dataset = meta.dataset || me.createMetaDataset();\n\t\t},\n\n\t\taddElementAndReset: function(index) {\n\t\t\tvar element = this.createMetaData(index);\n\t\t\tthis.getMeta().data.splice(index, 0, element);\n\t\t\tthis.updateElement(element, index, true);\n\t\t},\n\n\t\tbuildOrUpdateElements: function() {\n\t\t\tvar me = this;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar data = dataset.data || (dataset.data = []);\n\n\t\t\t// In order to correctly handle data addition/deletion animation (an thus simulate\n\t\t\t// real-time charts), we need to monitor these data modifications and synchronize\n\t\t\t// the internal meta data accordingly.\n\t\t\tif (me._data !== data) {\n\t\t\t\tif (me._data) {\n\t\t\t\t\t// This case happens when the user replaced the data array instance.\n\t\t\t\t\tunlistenArrayEvents(me._data, me);\n\t\t\t\t}\n\n\t\t\t\tlistenArrayEvents(data, me);\n\t\t\t\tme._data = data;\n\t\t\t}\n\n\t\t\t// Re-sync meta data in case the user replaced the data array or if we missed\n\t\t\t// any updates and so make sure that we handle number of datapoints changing.\n\t\t\tme.resyncElements();\n\t\t},\n\n\t\tupdate: helpers.noop,\n\n\t\ttransition: function(easingValue) {\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar elements = meta.data || [];\n\t\t\tvar ilen = elements.length;\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < ilen; ++i) {\n\t\t\t\telements[i].transition(easingValue);\n\t\t\t}\n\n\t\t\tif (meta.dataset) {\n\t\t\t\tmeta.dataset.transition(easingValue);\n\t\t\t}\n\t\t},\n\n\t\tdraw: function() {\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar elements = meta.data || [];\n\t\t\tvar ilen = elements.length;\n\t\t\tvar i = 0;\n\n\t\t\tif (meta.dataset) {\n\t\t\t\tmeta.dataset.draw();\n\t\t\t}\n\n\t\t\tfor (; i < ilen; ++i) {\n\t\t\t\telements[i].draw();\n\t\t\t}\n\t\t},\n\n\t\tremoveHoverStyle: function(element) {\n\t\t\thelpers.merge(element._model, element.$previousStyle || {});\n\t\t\tdelete element.$previousStyle;\n\t\t},\n\n\t\tsetHoverStyle: function(element) {\n\t\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\n\t\t\tvar index = element._index;\n\t\t\tvar custom = element.custom || {};\n\t\t\tvar valueOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\tvar getHoverColor = helpers.getHoverColor;\n\t\t\tvar model = element._model;\n\n\t\t\telement.$previousStyle = {\n\t\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\t\tborderColor: model.borderColor,\n\t\t\t\tborderWidth: model.borderWidth\n\t\t\t};\n\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : valueOrDefault(dataset.hoverBackgroundColor, index, getHoverColor(model.backgroundColor));\n\t\t\tmodel.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : valueOrDefault(dataset.hoverBorderColor, index, getHoverColor(model.borderColor));\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : valueOrDefault(dataset.hoverBorderWidth, index, model.borderWidth);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tresyncElements: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar data = me.getDataset().data;\n\t\t\tvar numMeta = meta.data.length;\n\t\t\tvar numData = data.length;\n\n\t\t\tif (numData < numMeta) {\n\t\t\t\tmeta.data.splice(numData, numMeta - numData);\n\t\t\t} else if (numData > numMeta) {\n\t\t\t\tme.insertElements(numMeta, numData - numMeta);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tinsertElements: function(start, count) {\n\t\t\tfor (var i = 0; i < count; ++i) {\n\t\t\t\tthis.addElementAndReset(start + i);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataPush: function() {\n\t\t\tthis.insertElements(this.getDataset().data.length - 1, arguments.length);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataPop: function() {\n\t\t\tthis.getMeta().data.pop();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataShift: function() {\n\t\t\tthis.getMeta().data.shift();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataSplice: function(start, count) {\n\t\t\tthis.getMeta().data.splice(start, count);\n\t\t\tthis.insertElements(start, arguments.length - 2);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataUnshift: function() {\n\t\t\tthis.insertElements(0, arguments.length);\n\t\t}\n\t});\n\n\tChart.DatasetController.extend = helpers.inherits;\n};\n\n},{\"46\":46}],26:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(46);\n\nmodule.exports = {\n\t/**\n\t * @private\n\t */\n\t_set: function(scope, values) {\n\t\treturn helpers.merge(this[scope] || (this[scope] = {}), values);\n\t}\n};\n\n},{\"46\":46}],27:[function(require,module,exports){\n'use strict';\n\nvar color = require(3);\nvar helpers = require(46);\n\nfunction interpolate(start, view, model, ease) {\n\tvar keys = Object.keys(model);\n\tvar i, ilen, key, actual, origin, target, type, c0, c1;\n\n\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\tkey = keys[i];\n\n\t\ttarget = model[key];\n\n\t\t// if a value is added to the model after pivot() has been called, the view\n\t\t// doesn't contain it, so let's initialize the view to the target value.\n\t\tif (!view.hasOwnProperty(key)) {\n\t\t\tview[key] = target;\n\t\t}\n\n\t\tactual = view[key];\n\n\t\tif (actual === target || key[0] === '_') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!start.hasOwnProperty(key)) {\n\t\t\tstart[key] = actual;\n\t\t}\n\n\t\torigin = start[key];\n\n\t\ttype = typeof target;\n\n\t\tif (type === typeof origin) {\n\t\t\tif (type === 'string') {\n\t\t\t\tc0 = color(origin);\n\t\t\t\tif (c0.valid) {\n\t\t\t\t\tc1 = color(target);\n\t\t\t\t\tif (c1.valid) {\n\t\t\t\t\t\tview[key] = c1.mix(c0, ease).rgbString();\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (type === 'number' && isFinite(origin) && isFinite(target)) {\n\t\t\t\tview[key] = origin + (target - origin) * ease;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tview[key] = target;\n\t}\n}\n\nvar Element = function(configuration) {\n\thelpers.extend(this, configuration);\n\tthis.initialize.apply(this, arguments);\n};\n\nhelpers.extend(Element.prototype, {\n\n\tinitialize: function() {\n\t\tthis.hidden = false;\n\t},\n\n\tpivot: function() {\n\t\tvar me = this;\n\t\tif (!me._view) {\n\t\t\tme._view = helpers.clone(me._model);\n\t\t}\n\t\tme._start = {};\n\t\treturn me;\n\t},\n\n\ttransition: function(ease) {\n\t\tvar me = this;\n\t\tvar model = me._model;\n\t\tvar start = me._start;\n\t\tvar view = me._view;\n\n\t\t// No animation -> No Transition\n\t\tif (!model || ease === 1) {\n\t\t\tme._view = model;\n\t\t\tme._start = null;\n\t\t\treturn me;\n\t\t}\n\n\t\tif (!view) {\n\t\t\tview = me._view = {};\n\t\t}\n\n\t\tif (!start) {\n\t\t\tstart = me._start = {};\n\t\t}\n\n\t\tinterpolate(start, view, model, ease);\n\n\t\treturn me;\n\t},\n\n\ttooltipPosition: function() {\n\t\treturn {\n\t\t\tx: this._model.x,\n\t\t\ty: this._model.y\n\t\t};\n\t},\n\n\thasValue: function() {\n\t\treturn helpers.isNumber(this._model.x) && helpers.isNumber(this._model.y);\n\t}\n});\n\nElement.extend = helpers.inherits;\n\nmodule.exports = Element;\n\n},{\"3\":3,\"46\":46}],28:[function(require,module,exports){\n/* global window: false */\n/* global document: false */\n'use strict';\n\nvar color = require(3);\nvar defaults = require(26);\nvar helpers = require(46);\nvar scaleService = require(34);\n\nmodule.exports = function() {\n\n\t// -- Basic js utility methods\n\n\thelpers.configMerge = function(/* objects ... */) {\n\t\treturn helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), {\n\t\t\tmerger: function(key, target, source, options) {\n\t\t\t\tvar tval = target[key] || {};\n\t\t\t\tvar sval = source[key];\n\n\t\t\t\tif (key === 'scales') {\n\t\t\t\t\t// scale config merging is complex. Add our own function here for that\n\t\t\t\t\ttarget[key] = helpers.scaleMerge(tval, sval);\n\t\t\t\t} else if (key === 'scale') {\n\t\t\t\t\t// used in polar area & radar charts since there is only one scale\n\t\t\t\t\ttarget[key] = helpers.merge(tval, [scaleService.getScaleDefaults(sval.type), sval]);\n\t\t\t\t} else {\n\t\t\t\t\thelpers._merger(key, target, source, options);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\n\thelpers.scaleMerge = function(/* objects ... */) {\n\t\treturn helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), {\n\t\t\tmerger: function(key, target, source, options) {\n\t\t\t\tif (key === 'xAxes' || key === 'yAxes') {\n\t\t\t\t\tvar slen = source[key].length;\n\t\t\t\t\tvar i, type, scale;\n\n\t\t\t\t\tif (!target[key]) {\n\t\t\t\t\t\ttarget[key] = [];\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (i = 0; i < slen; ++i) {\n\t\t\t\t\t\tscale = source[key][i];\n\t\t\t\t\t\ttype = helpers.valueOrDefault(scale.type, key === 'xAxes' ? 'category' : 'linear');\n\n\t\t\t\t\t\tif (i >= target[key].length) {\n\t\t\t\t\t\t\ttarget[key].push({});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!target[key][i].type || (scale.type && scale.type !== target[key][i].type)) {\n\t\t\t\t\t\t\t// new/untyped scale or type changed: let's apply the new defaults\n\t\t\t\t\t\t\t// then merge source scale to correctly overwrite the defaults.\n\t\t\t\t\t\t\thelpers.merge(target[key][i], [scaleService.getScaleDefaults(type), scale]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// scales type are the same\n\t\t\t\t\t\t\thelpers.merge(target[key][i], scale);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\thelpers._merger(key, target, source, options);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\n\thelpers.where = function(collection, filterCallback) {\n\t\tif (helpers.isArray(collection) && Array.prototype.filter) {\n\t\t\treturn collection.filter(filterCallback);\n\t\t}\n\t\tvar filtered = [];\n\n\t\thelpers.each(collection, function(item) {\n\t\t\tif (filterCallback(item)) {\n\t\t\t\tfiltered.push(item);\n\t\t\t}\n\t\t});\n\n\t\treturn filtered;\n\t};\n\thelpers.findIndex = Array.prototype.findIndex ?\n\t\tfunction(array, callback, scope) {\n\t\t\treturn array.findIndex(callback, scope);\n\t\t} :\n\t\tfunction(array, callback, scope) {\n\t\t\tscope = scope === undefined ? array : scope;\n\t\t\tfor (var i = 0, ilen = array.length; i < ilen; ++i) {\n\t\t\t\tif (callback.call(scope, array[i], i, array)) {\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\thelpers.findNextWhere = function(arrayToSearch, filterCallback, startIndex) {\n\t\t// Default to start of the array\n\t\tif (helpers.isNullOrUndef(startIndex)) {\n\t\t\tstartIndex = -1;\n\t\t}\n\t\tfor (var i = startIndex + 1; i < arrayToSearch.length; i++) {\n\t\t\tvar currentItem = arrayToSearch[i];\n\t\t\tif (filterCallback(currentItem)) {\n\t\t\t\treturn currentItem;\n\t\t\t}\n\t\t}\n\t};\n\thelpers.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex) {\n\t\t// Default to end of the array\n\t\tif (helpers.isNullOrUndef(startIndex)) {\n\t\t\tstartIndex = arrayToSearch.length;\n\t\t}\n\t\tfor (var i = startIndex - 1; i >= 0; i--) {\n\t\t\tvar currentItem = arrayToSearch[i];\n\t\t\tif (filterCallback(currentItem)) {\n\t\t\t\treturn currentItem;\n\t\t\t}\n\t\t}\n\t};\n\n\t// -- Math methods\n\thelpers.isNumber = function(n) {\n\t\treturn !isNaN(parseFloat(n)) && isFinite(n);\n\t};\n\thelpers.almostEquals = function(x, y, epsilon) {\n\t\treturn Math.abs(x - y) < epsilon;\n\t};\n\thelpers.almostWhole = function(x, epsilon) {\n\t\tvar rounded = Math.round(x);\n\t\treturn (((rounded - epsilon) < x) && ((rounded + epsilon) > x));\n\t};\n\thelpers.max = function(array) {\n\t\treturn array.reduce(function(max, value) {\n\t\t\tif (!isNaN(value)) {\n\t\t\t\treturn Math.max(max, value);\n\t\t\t}\n\t\t\treturn max;\n\t\t}, Number.NEGATIVE_INFINITY);\n\t};\n\thelpers.min = function(array) {\n\t\treturn array.reduce(function(min, value) {\n\t\t\tif (!isNaN(value)) {\n\t\t\t\treturn Math.min(min, value);\n\t\t\t}\n\t\t\treturn min;\n\t\t}, Number.POSITIVE_INFINITY);\n\t};\n\thelpers.sign = Math.sign ?\n\t\tfunction(x) {\n\t\t\treturn Math.sign(x);\n\t\t} :\n\t\tfunction(x) {\n\t\t\tx = +x; // convert to a number\n\t\t\tif (x === 0 || isNaN(x)) {\n\t\t\t\treturn x;\n\t\t\t}\n\t\t\treturn x > 0 ? 1 : -1;\n\t\t};\n\thelpers.log10 = Math.log10 ?\n\t\tfunction(x) {\n\t\t\treturn Math.log10(x);\n\t\t} :\n\t\tfunction(x) {\n\t\t\tvar exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10.\n\t\t\t// Check for whole powers of 10,\n\t\t\t// which due to floating point rounding error should be corrected.\n\t\t\tvar powerOf10 = Math.round(exponent);\n\t\t\tvar isPowerOf10 = x === Math.pow(10, powerOf10);\n\n\t\t\treturn isPowerOf10 ? powerOf10 : exponent;\n\t\t};\n\thelpers.toRadians = function(degrees) {\n\t\treturn degrees * (Math.PI / 180);\n\t};\n\thelpers.toDegrees = function(radians) {\n\t\treturn radians * (180 / Math.PI);\n\t};\n\t// Gets the angle from vertical upright to the point about a centre.\n\thelpers.getAngleFromPoint = function(centrePoint, anglePoint) {\n\t\tvar distanceFromXCenter = anglePoint.x - centrePoint.x;\n\t\tvar distanceFromYCenter = anglePoint.y - centrePoint.y;\n\t\tvar radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n\n\t\tvar angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n\n\t\tif (angle < (-0.5 * Math.PI)) {\n\t\t\tangle += 2.0 * Math.PI; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n\t\t}\n\n\t\treturn {\n\t\t\tangle: angle,\n\t\t\tdistance: radialDistanceFromCenter\n\t\t};\n\t};\n\thelpers.distanceBetweenPoints = function(pt1, pt2) {\n\t\treturn Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n\t};\n\thelpers.aliasPixel = function(pixelWidth) {\n\t\treturn (pixelWidth % 2 === 0) ? 0 : 0.5;\n\t};\n\thelpers.splineCurve = function(firstPoint, middlePoint, afterPoint, t) {\n\t\t// Props to Rob Spencer at scaled innovation for his post on splining between points\n\t\t// http://scaledinnovation.com/analytics/splines/aboutSplines.html\n\n\t\t// This function must also respect \"skipped\" points\n\n\t\tvar previous = firstPoint.skip ? middlePoint : firstPoint;\n\t\tvar current = middlePoint;\n\t\tvar next = afterPoint.skip ? middlePoint : afterPoint;\n\n\t\tvar d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2));\n\t\tvar d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2));\n\n\t\tvar s01 = d01 / (d01 + d12);\n\t\tvar s12 = d12 / (d01 + d12);\n\n\t\t// If all points are the same, s01 & s02 will be inf\n\t\ts01 = isNaN(s01) ? 0 : s01;\n\t\ts12 = isNaN(s12) ? 0 : s12;\n\n\t\tvar fa = t * s01; // scaling factor for triangle Ta\n\t\tvar fb = t * s12;\n\n\t\treturn {\n\t\t\tprevious: {\n\t\t\t\tx: current.x - fa * (next.x - previous.x),\n\t\t\t\ty: current.y - fa * (next.y - previous.y)\n\t\t\t},\n\t\t\tnext: {\n\t\t\t\tx: current.x + fb * (next.x - previous.x),\n\t\t\t\ty: current.y + fb * (next.y - previous.y)\n\t\t\t}\n\t\t};\n\t};\n\thelpers.EPSILON = Number.EPSILON || 1e-14;\n\thelpers.splineCurveMonotone = function(points) {\n\t\t// This function calculates Bézier control points in a similar way than |splineCurve|,\n\t\t// but preserves monotonicity of the provided data and ensures no local extremums are added\n\t\t// between the dataset discrete points due to the interpolation.\n\t\t// See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n\n\t\tvar pointsWithTangents = (points || []).map(function(point) {\n\t\t\treturn {\n\t\t\t\tmodel: point._model,\n\t\t\t\tdeltaK: 0,\n\t\t\t\tmK: 0\n\t\t\t};\n\t\t});\n\n\t\t// Calculate slopes (deltaK) and initialize tangents (mK)\n\t\tvar pointsLen = pointsWithTangents.length;\n\t\tvar i, pointBefore, pointCurrent, pointAfter;\n\t\tfor (i = 0; i < pointsLen; ++i) {\n\t\t\tpointCurrent = pointsWithTangents[i];\n\t\t\tif (pointCurrent.model.skip) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\n\t\t\t\tvar slopeDeltaX = (pointAfter.model.x - pointCurrent.model.x);\n\n\t\t\t\t// In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n\t\t\t\tpointCurrent.deltaK = slopeDeltaX !== 0 ? (pointAfter.model.y - pointCurrent.model.y) / slopeDeltaX : 0;\n\t\t\t}\n\n\t\t\tif (!pointBefore || pointBefore.model.skip) {\n\t\t\t\tpointCurrent.mK = pointCurrent.deltaK;\n\t\t\t} else if (!pointAfter || pointAfter.model.skip) {\n\t\t\t\tpointCurrent.mK = pointBefore.deltaK;\n\t\t\t} else if (this.sign(pointBefore.deltaK) !== this.sign(pointCurrent.deltaK)) {\n\t\t\t\tpointCurrent.mK = 0;\n\t\t\t} else {\n\t\t\t\tpointCurrent.mK = (pointBefore.deltaK + pointCurrent.deltaK) / 2;\n\t\t\t}\n\t\t}\n\n\t\t// Adjust tangents to ensure monotonic properties\n\t\tvar alphaK, betaK, tauK, squaredMagnitude;\n\t\tfor (i = 0; i < pointsLen - 1; ++i) {\n\t\t\tpointCurrent = pointsWithTangents[i];\n\t\t\tpointAfter = pointsWithTangents[i + 1];\n\t\t\tif (pointCurrent.model.skip || pointAfter.model.skip) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (helpers.almostEquals(pointCurrent.deltaK, 0, this.EPSILON)) {\n\t\t\t\tpointCurrent.mK = pointAfter.mK = 0;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\talphaK = pointCurrent.mK / pointCurrent.deltaK;\n\t\t\tbetaK = pointAfter.mK / pointCurrent.deltaK;\n\t\t\tsquaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n\t\t\tif (squaredMagnitude <= 9) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\ttauK = 3 / Math.sqrt(squaredMagnitude);\n\t\t\tpointCurrent.mK = alphaK * tauK * pointCurrent.deltaK;\n\t\t\tpointAfter.mK = betaK * tauK * pointCurrent.deltaK;\n\t\t}\n\n\t\t// Compute control points\n\t\tvar deltaX;\n\t\tfor (i = 0; i < pointsLen; ++i) {\n\t\t\tpointCurrent = pointsWithTangents[i];\n\t\t\tif (pointCurrent.model.skip) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\n\t\t\tif (pointBefore && !pointBefore.model.skip) {\n\t\t\t\tdeltaX = (pointCurrent.model.x - pointBefore.model.x) / 3;\n\t\t\t\tpointCurrent.model.controlPointPreviousX = pointCurrent.model.x - deltaX;\n\t\t\t\tpointCurrent.model.controlPointPreviousY = pointCurrent.model.y - deltaX * pointCurrent.mK;\n\t\t\t}\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\n\t\t\t\tdeltaX = (pointAfter.model.x - pointCurrent.model.x) / 3;\n\t\t\t\tpointCurrent.model.controlPointNextX = pointCurrent.model.x + deltaX;\n\t\t\t\tpointCurrent.model.controlPointNextY = pointCurrent.model.y + deltaX * pointCurrent.mK;\n\t\t\t}\n\t\t}\n\t};\n\thelpers.nextItem = function(collection, index, loop) {\n\t\tif (loop) {\n\t\t\treturn index >= collection.length - 1 ? collection[0] : collection[index + 1];\n\t\t}\n\t\treturn index >= collection.length - 1 ? collection[collection.length - 1] : collection[index + 1];\n\t};\n\thelpers.previousItem = function(collection, index, loop) {\n\t\tif (loop) {\n\t\t\treturn index <= 0 ? collection[collection.length - 1] : collection[index - 1];\n\t\t}\n\t\treturn index <= 0 ? collection[0] : collection[index - 1];\n\t};\n\t// Implementation of the nice number algorithm used in determining where axis labels will go\n\thelpers.niceNum = function(range, round) {\n\t\tvar exponent = Math.floor(helpers.log10(range));\n\t\tvar fraction = range / Math.pow(10, exponent);\n\t\tvar niceFraction;\n\n\t\tif (round) {\n\t\t\tif (fraction < 1.5) {\n\t\t\t\tniceFraction = 1;\n\t\t\t} else if (fraction < 3) {\n\t\t\t\tniceFraction = 2;\n\t\t\t} else if (fraction < 7) {\n\t\t\t\tniceFraction = 5;\n\t\t\t} else {\n\t\t\t\tniceFraction = 10;\n\t\t\t}\n\t\t} else if (fraction <= 1.0) {\n\t\t\tniceFraction = 1;\n\t\t} else if (fraction <= 2) {\n\t\t\tniceFraction = 2;\n\t\t} else if (fraction <= 5) {\n\t\t\tniceFraction = 5;\n\t\t} else {\n\t\t\tniceFraction = 10;\n\t\t}\n\n\t\treturn niceFraction * Math.pow(10, exponent);\n\t};\n\t// Request animation polyfill - http://www.paulirish.com/2011/requestanimationframe-for-smart-animating/\n\thelpers.requestAnimFrame = (function() {\n\t\tif (typeof window === 'undefined') {\n\t\t\treturn function(callback) {\n\t\t\t\tcallback();\n\t\t\t};\n\t\t}\n\t\treturn window.requestAnimationFrame ||\n\t\t\twindow.webkitRequestAnimationFrame ||\n\t\t\twindow.mozRequestAnimationFrame ||\n\t\t\twindow.oRequestAnimationFrame ||\n\t\t\twindow.msRequestAnimationFrame ||\n\t\t\tfunction(callback) {\n\t\t\t\treturn window.setTimeout(callback, 1000 / 60);\n\t\t\t};\n\t}());\n\t// -- DOM methods\n\thelpers.getRelativePosition = function(evt, chart) {\n\t\tvar mouseX, mouseY;\n\t\tvar e = evt.originalEvent || evt;\n\t\tvar canvas = evt.target || evt.srcElement;\n\t\tvar boundingRect = canvas.getBoundingClientRect();\n\n\t\tvar touches = e.touches;\n\t\tif (touches && touches.length > 0) {\n\t\t\tmouseX = touches[0].clientX;\n\t\t\tmouseY = touches[0].clientY;\n\n\t\t} else {\n\t\t\tmouseX = e.clientX;\n\t\t\tmouseY = e.clientY;\n\t\t}\n\n\t\t// Scale mouse coordinates into canvas coordinates\n\t\t// by following the pattern laid out by 'jerryj' in the comments of\n\t\t// http://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/\n\t\tvar paddingLeft = parseFloat(helpers.getStyle(canvas, 'padding-left'));\n\t\tvar paddingTop = parseFloat(helpers.getStyle(canvas, 'padding-top'));\n\t\tvar paddingRight = parseFloat(helpers.getStyle(canvas, 'padding-right'));\n\t\tvar paddingBottom = parseFloat(helpers.getStyle(canvas, 'padding-bottom'));\n\t\tvar width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight;\n\t\tvar height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom;\n\n\t\t// We divide by the current device pixel ratio, because the canvas is scaled up by that amount in each direction. However\n\t\t// the backend model is in unscaled coordinates. Since we are going to deal with our model coordinates, we go back here\n\t\tmouseX = Math.round((mouseX - boundingRect.left - paddingLeft) / (width) * canvas.width / chart.currentDevicePixelRatio);\n\t\tmouseY = Math.round((mouseY - boundingRect.top - paddingTop) / (height) * canvas.height / chart.currentDevicePixelRatio);\n\n\t\treturn {\n\t\t\tx: mouseX,\n\t\t\ty: mouseY\n\t\t};\n\n\t};\n\n\t// Private helper function to convert max-width/max-height values that may be percentages into a number\n\tfunction parseMaxStyle(styleValue, node, parentProperty) {\n\t\tvar valueInPixels;\n\t\tif (typeof styleValue === 'string') {\n\t\t\tvalueInPixels = parseInt(styleValue, 10);\n\n\t\t\tif (styleValue.indexOf('%') !== -1) {\n\t\t\t\t// percentage * size in dimension\n\t\t\t\tvalueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n\t\t\t}\n\t\t} else {\n\t\t\tvalueInPixels = styleValue;\n\t\t}\n\n\t\treturn valueInPixels;\n\t}\n\n\t/**\n\t * Returns if the given value contains an effective constraint.\n\t * @private\n\t */\n\tfunction isConstrainedValue(value) {\n\t\treturn value !== undefined && value !== null && value !== 'none';\n\t}\n\n\t// Private helper to get a constraint dimension\n\t// @param domNode : the node to check the constraint on\n\t// @param maxStyle : the style that defines the maximum for the direction we are using (maxWidth / maxHeight)\n\t// @param percentageProperty : property of parent to use when calculating width as a percentage\n\t// @see http://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser\n\tfunction getConstraintDimension(domNode, maxStyle, percentageProperty) {\n\t\tvar view = document.defaultView;\n\t\tvar parentNode = helpers._getParentNode(domNode);\n\t\tvar constrainedNode = view.getComputedStyle(domNode)[maxStyle];\n\t\tvar constrainedContainer = view.getComputedStyle(parentNode)[maxStyle];\n\t\tvar hasCNode = isConstrainedValue(constrainedNode);\n\t\tvar hasCContainer = isConstrainedValue(constrainedContainer);\n\t\tvar infinity = Number.POSITIVE_INFINITY;\n\n\t\tif (hasCNode || hasCContainer) {\n\t\t\treturn Math.min(\n\t\t\t\thasCNode ? parseMaxStyle(constrainedNode, domNode, percentageProperty) : infinity,\n\t\t\t\thasCContainer ? parseMaxStyle(constrainedContainer, parentNode, percentageProperty) : infinity);\n\t\t}\n\n\t\treturn 'none';\n\t}\n\t// returns Number or undefined if no constraint\n\thelpers.getConstraintWidth = function(domNode) {\n\t\treturn getConstraintDimension(domNode, 'max-width', 'clientWidth');\n\t};\n\t// returns Number or undefined if no constraint\n\thelpers.getConstraintHeight = function(domNode) {\n\t\treturn getConstraintDimension(domNode, 'max-height', 'clientHeight');\n\t};\n\t/**\n\t * @private\n \t */\n\thelpers._calculatePadding = function(container, padding, parentDimension) {\n\t\tpadding = helpers.getStyle(container, padding);\n\n\t\treturn padding.indexOf('%') > -1 ? parentDimension / parseInt(padding, 10) : parseInt(padding, 10);\n\t};\n\t/**\n\t * @private\n\t */\n\thelpers._getParentNode = function(domNode) {\n\t\tvar parent = domNode.parentNode;\n\t\tif (parent && parent.host) {\n\t\t\tparent = parent.host;\n\t\t}\n\t\treturn parent;\n\t};\n\thelpers.getMaximumWidth = function(domNode) {\n\t\tvar container = helpers._getParentNode(domNode);\n\t\tif (!container) {\n\t\t\treturn domNode.clientWidth;\n\t\t}\n\n\t\tvar clientWidth = container.clientWidth;\n\t\tvar paddingLeft = helpers._calculatePadding(container, 'padding-left', clientWidth);\n\t\tvar paddingRight = helpers._calculatePadding(container, 'padding-right', clientWidth);\n\n\t\tvar w = clientWidth - paddingLeft - paddingRight;\n\t\tvar cw = helpers.getConstraintWidth(domNode);\n\t\treturn isNaN(cw) ? w : Math.min(w, cw);\n\t};\n\thelpers.getMaximumHeight = function(domNode) {\n\t\tvar container = helpers._getParentNode(domNode);\n\t\tif (!container) {\n\t\t\treturn domNode.clientHeight;\n\t\t}\n\n\t\tvar clientHeight = container.clientHeight;\n\t\tvar paddingTop = helpers._calculatePadding(container, 'padding-top', clientHeight);\n\t\tvar paddingBottom = helpers._calculatePadding(container, 'padding-bottom', clientHeight);\n\n\t\tvar h = clientHeight - paddingTop - paddingBottom;\n\t\tvar ch = helpers.getConstraintHeight(domNode);\n\t\treturn isNaN(ch) ? h : Math.min(h, ch);\n\t};\n\thelpers.getStyle = function(el, property) {\n\t\treturn el.currentStyle ?\n\t\t\tel.currentStyle[property] :\n\t\t\tdocument.defaultView.getComputedStyle(el, null).getPropertyValue(property);\n\t};\n\thelpers.retinaScale = function(chart, forceRatio) {\n\t\tvar pixelRatio = chart.currentDevicePixelRatio = forceRatio || (typeof window !== 'undefined' && window.devicePixelRatio) || 1;\n\t\tif (pixelRatio === 1) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar canvas = chart.canvas;\n\t\tvar height = chart.height;\n\t\tvar width = chart.width;\n\n\t\tcanvas.height = height * pixelRatio;\n\t\tcanvas.width = width * pixelRatio;\n\t\tchart.ctx.scale(pixelRatio, pixelRatio);\n\n\t\t// If no style has been set on the canvas, the render size is used as display size,\n\t\t// making the chart visually bigger, so let's enforce it to the \"correct\" values.\n\t\t// See https://github.com/chartjs/Chart.js/issues/3575\n\t\tif (!canvas.style.height && !canvas.style.width) {\n\t\t\tcanvas.style.height = height + 'px';\n\t\t\tcanvas.style.width = width + 'px';\n\t\t}\n\t};\n\t// -- Canvas methods\n\thelpers.fontString = function(pixelSize, fontStyle, fontFamily) {\n\t\treturn fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n\t};\n\thelpers.longestText = function(ctx, font, arrayOfThings, cache) {\n\t\tcache = cache || {};\n\t\tvar data = cache.data = cache.data || {};\n\t\tvar gc = cache.garbageCollect = cache.garbageCollect || [];\n\n\t\tif (cache.font !== font) {\n\t\t\tdata = cache.data = {};\n\t\t\tgc = cache.garbageCollect = [];\n\t\t\tcache.font = font;\n\t\t}\n\n\t\tctx.font = font;\n\t\tvar longest = 0;\n\t\thelpers.each(arrayOfThings, function(thing) {\n\t\t\t// Undefined strings and arrays should not be measured\n\t\t\tif (thing !== undefined && thing !== null && helpers.isArray(thing) !== true) {\n\t\t\t\tlongest = helpers.measureText(ctx, data, gc, longest, thing);\n\t\t\t} else if (helpers.isArray(thing)) {\n\t\t\t\t// if it is an array lets measure each element\n\t\t\t\t// to do maybe simplify this function a bit so we can do this more recursively?\n\t\t\t\thelpers.each(thing, function(nestedThing) {\n\t\t\t\t\t// Undefined strings and arrays should not be measured\n\t\t\t\t\tif (nestedThing !== undefined && nestedThing !== null && !helpers.isArray(nestedThing)) {\n\t\t\t\t\t\tlongest = helpers.measureText(ctx, data, gc, longest, nestedThing);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tvar gcLen = gc.length / 2;\n\t\tif (gcLen > arrayOfThings.length) {\n\t\t\tfor (var i = 0; i < gcLen; i++) {\n\t\t\t\tdelete data[gc[i]];\n\t\t\t}\n\t\t\tgc.splice(0, gcLen);\n\t\t}\n\t\treturn longest;\n\t};\n\thelpers.measureText = function(ctx, data, gc, longest, string) {\n\t\tvar textWidth = data[string];\n\t\tif (!textWidth) {\n\t\t\ttextWidth = data[string] = ctx.measureText(string).width;\n\t\t\tgc.push(string);\n\t\t}\n\t\tif (textWidth > longest) {\n\t\t\tlongest = textWidth;\n\t\t}\n\t\treturn longest;\n\t};\n\thelpers.numberOfLabelLines = function(arrayOfThings) {\n\t\tvar numberOfLines = 1;\n\t\thelpers.each(arrayOfThings, function(thing) {\n\t\t\tif (helpers.isArray(thing)) {\n\t\t\t\tif (thing.length > numberOfLines) {\n\t\t\t\t\tnumberOfLines = thing.length;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn numberOfLines;\n\t};\n\n\thelpers.color = !color ?\n\t\tfunction(value) {\n\t\t\tconsole.error('Color.js not found!');\n\t\t\treturn value;\n\t\t} :\n\t\tfunction(value) {\n\t\t\t/* global CanvasGradient */\n\t\t\tif (value instanceof CanvasGradient) {\n\t\t\t\tvalue = defaults.global.defaultColor;\n\t\t\t}\n\n\t\t\treturn color(value);\n\t\t};\n\n\thelpers.getHoverColor = function(colorValue) {\n\t\t/* global CanvasPattern */\n\t\treturn (colorValue instanceof CanvasPattern) ?\n\t\t\tcolorValue :\n\t\t\thelpers.color(colorValue).saturate(0.5).darken(0.1).rgbString();\n\t};\n};\n\n},{\"26\":26,\"3\":3,\"34\":34,\"46\":46}],29:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(46);\n\n/**\n * Helper function to get relative position for an event\n * @param {Event|IEvent} event - The event to get the position for\n * @param {Chart} chart - The chart\n * @returns {Point} the event position\n */\nfunction getRelativePosition(e, chart) {\n\tif (e.native) {\n\t\treturn {\n\t\t\tx: e.x,\n\t\t\ty: e.y\n\t\t};\n\t}\n\n\treturn helpers.getRelativePosition(e, chart);\n}\n\n/**\n * Helper function to traverse all of the visible elements in the chart\n * @param chart {chart} the chart\n * @param handler {Function} the callback to execute for each visible item\n */\nfunction parseVisibleItems(chart, handler) {\n\tvar datasets = chart.data.datasets;\n\tvar meta, i, j, ilen, jlen;\n\n\tfor (i = 0, ilen = datasets.length; i < ilen; ++i) {\n\t\tif (!chart.isDatasetVisible(i)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tmeta = chart.getDatasetMeta(i);\n\t\tfor (j = 0, jlen = meta.data.length; j < jlen; ++j) {\n\t\t\tvar element = meta.data[j];\n\t\t\tif (!element._view.skip) {\n\t\t\t\thandler(element);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Helper function to get the items that intersect the event position\n * @param items {ChartElement[]} elements to filter\n * @param position {Point} the point to be nearest to\n * @return {ChartElement[]} the nearest items\n */\nfunction getIntersectItems(chart, position) {\n\tvar elements = [];\n\n\tparseVisibleItems(chart, function(element) {\n\t\tif (element.inRange(position.x, position.y)) {\n\t\t\telements.push(element);\n\t\t}\n\t});\n\n\treturn elements;\n}\n\n/**\n * Helper function to get the items nearest to the event position considering all visible items in teh chart\n * @param chart {Chart} the chart to look at elements from\n * @param position {Point} the point to be nearest to\n * @param intersect {Boolean} if true, only consider items that intersect the position\n * @param distanceMetric {Function} function to provide the distance between points\n * @return {ChartElement[]} the nearest items\n */\nfunction getNearestItems(chart, position, intersect, distanceMetric) {\n\tvar minDistance = Number.POSITIVE_INFINITY;\n\tvar nearestItems = [];\n\n\tparseVisibleItems(chart, function(element) {\n\t\tif (intersect && !element.inRange(position.x, position.y)) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar center = element.getCenterPoint();\n\t\tvar distance = distanceMetric(position, center);\n\n\t\tif (distance < minDistance) {\n\t\t\tnearestItems = [element];\n\t\t\tminDistance = distance;\n\t\t} else if (distance === minDistance) {\n\t\t\t// Can have multiple items at the same distance in which case we sort by size\n\t\t\tnearestItems.push(element);\n\t\t}\n\t});\n\n\treturn nearestItems;\n}\n\n/**\n * Get a distance metric function for two points based on the\n * axis mode setting\n * @param {String} axis the axis mode. x|y|xy\n */\nfunction getDistanceMetricForAxis(axis) {\n\tvar useX = axis.indexOf('x') !== -1;\n\tvar useY = axis.indexOf('y') !== -1;\n\n\treturn function(pt1, pt2) {\n\t\tvar deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n\t\tvar deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n\t\treturn Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n\t};\n}\n\nfunction indexMode(chart, e, options) {\n\tvar position = getRelativePosition(e, chart);\n\t// Default axis for index mode is 'x' to match old behaviour\n\toptions.axis = options.axis || 'x';\n\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\n\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\n\tvar elements = [];\n\n\tif (!items.length) {\n\t\treturn [];\n\t}\n\n\tchart.data.datasets.forEach(function(dataset, datasetIndex) {\n\t\tif (chart.isDatasetVisible(datasetIndex)) {\n\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\tvar element = meta.data[items[0]._index];\n\n\t\t\t// don't count items that are skipped (null data)\n\t\t\tif (element && !element._view.skip) {\n\t\t\t\telements.push(element);\n\t\t\t}\n\t\t}\n\t});\n\n\treturn elements;\n}\n\n/**\n * @interface IInteractionOptions\n */\n/**\n * If true, only consider items that intersect the point\n * @name IInterfaceOptions#boolean\n * @type Boolean\n */\n\n/**\n * Contains interaction related functions\n * @namespace Chart.Interaction\n */\nmodule.exports = {\n\t// Helper function for different modes\n\tmodes: {\n\t\tsingle: function(chart, e) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\tvar elements = [];\n\n\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\telements.push(element);\n\t\t\t\t\treturn elements;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn elements.slice(0, 1);\n\t\t},\n\n\t\t/**\n\t\t * @function Chart.Interaction.modes.label\n\t\t * @deprecated since version 2.4.0\n\t\t * @todo remove at version 3\n\t\t * @private\n\t\t */\n\t\tlabel: indexMode,\n\n\t\t/**\n\t\t * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\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\n\t\t * @function Chart.Interaction.modes.index\n\t\t * @since v2.4.0\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use during interaction\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tindex: indexMode,\n\n\t\t/**\n\t\t * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect is false, we find the nearest item and return the items in that dataset\n\t\t * @function Chart.Interaction.modes.dataset\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use during interaction\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tdataset: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\toptions.axis = options.axis || 'xy';\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\n\t\t\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\n\n\t\t\tif (items.length > 0) {\n\t\t\t\titems = chart.getDatasetMeta(items[0]._datasetIndex).data;\n\t\t\t}\n\n\t\t\treturn items;\n\t\t},\n\n\t\t/**\n\t\t * @function Chart.Interaction.modes.x-axis\n\t\t * @deprecated since version 2.4.0. Use index mode and intersect == true\n\t\t * @todo remove at version 3\n\t\t * @private\n\t\t */\n\t\t'x-axis': function(chart, e) {\n\t\t\treturn indexMode(chart, e, {intersect: false});\n\t\t},\n\n\t\t/**\n\t\t * Point mode returns all elements that hit test based on the event position\n\t\t * of the event\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tpoint: function(chart, e) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\treturn getIntersectItems(chart, position);\n\t\t},\n\n\t\t/**\n\t\t * nearest mode returns the element closest to the point\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tnearest: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\toptions.axis = options.axis || 'xy';\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\n\t\t\tvar nearestItems = getNearestItems(chart, position, options.intersect, distanceMetric);\n\n\t\t\t// We have multiple items at the same distance from the event. Now sort by smallest\n\t\t\tif (nearestItems.length > 1) {\n\t\t\t\tnearestItems.sort(function(a, b) {\n\t\t\t\t\tvar sizeA = a.getArea();\n\t\t\t\t\tvar sizeB = b.getArea();\n\t\t\t\t\tvar ret = sizeA - sizeB;\n\n\t\t\t\t\tif (ret === 0) {\n\t\t\t\t\t\t// if equal sort by dataset index\n\t\t\t\t\t\tret = a._datasetIndex - b._datasetIndex;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn ret;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Return only 1 item\n\t\t\treturn nearestItems.slice(0, 1);\n\t\t},\n\n\t\t/**\n\t\t * x mode returns the elements that hit-test at the current x coordinate\n\t\t * @function Chart.Interaction.modes.x\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tx: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\tvar items = [];\n\t\t\tvar intersectsItem = false;\n\n\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\tif (element.inXRange(position.x)) {\n\t\t\t\t\titems.push(element);\n\t\t\t\t}\n\n\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\tintersectsItem = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// If we want to trigger on an intersect and we don't have any items\n\t\t\t// that intersect the position, return nothing\n\t\t\tif (options.intersect && !intersectsItem) {\n\t\t\t\titems = [];\n\t\t\t}\n\t\t\treturn items;\n\t\t},\n\n\t\t/**\n\t\t * y mode returns the elements that hit-test at the current y coordinate\n\t\t * @function Chart.Interaction.modes.y\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\ty: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\tvar items = [];\n\t\t\tvar intersectsItem = false;\n\n\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\tif (element.inYRange(position.y)) {\n\t\t\t\t\titems.push(element);\n\t\t\t\t}\n\n\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\tintersectsItem = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// If we want to trigger on an intersect and we don't have any items\n\t\t\t// that intersect the position, return nothing\n\t\t\tif (options.intersect && !intersectsItem) {\n\t\t\t\titems = [];\n\t\t\t}\n\t\t\treturn items;\n\t\t}\n\t}\n};\n\n},{\"46\":46}],30:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\n\ndefaults._set('global', {\n\tresponsive: true,\n\tresponsiveAnimationDuration: 0,\n\tmaintainAspectRatio: true,\n\tevents: ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove'],\n\thover: {\n\t\tonHover: null,\n\t\tmode: 'nearest',\n\t\tintersect: true,\n\t\tanimationDuration: 400\n\t},\n\tonClick: null,\n\tdefaultColor: 'rgba(0,0,0,0.1)',\n\tdefaultFontColor: '#666',\n\tdefaultFontFamily: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n\tdefaultFontSize: 12,\n\tdefaultFontStyle: 'normal',\n\tshowLines: true,\n\n\t// Element defaults defined in element extensions\n\telements: {},\n\n\t// Layout options such as padding\n\tlayout: {\n\t\tpadding: {\n\t\t\ttop: 0,\n\t\t\tright: 0,\n\t\t\tbottom: 0,\n\t\t\tleft: 0\n\t\t}\n\t}\n});\n\nmodule.exports = function() {\n\n\t// Occupy the global variable of Chart, and create a simple base class\n\tvar Chart = function(item, config) {\n\t\tthis.construct(item, config);\n\t\treturn this;\n\t};\n\n\tChart.Chart = Chart;\n\n\treturn Chart;\n};\n\n},{\"26\":26}],31:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(46);\n\nfunction filterByPosition(array, position) {\n\treturn helpers.where(array, function(v) {\n\t\treturn v.position === position;\n\t});\n}\n\nfunction sortByWeight(array, reverse) {\n\tarray.forEach(function(v, i) {\n\t\tv._tmpIndex_ = i;\n\t\treturn v;\n\t});\n\tarray.sort(function(a, b) {\n\t\tvar v0 = reverse ? b : a;\n\t\tvar v1 = reverse ? a : b;\n\t\treturn v0.weight === v1.weight ?\n\t\t\tv0._tmpIndex_ - v1._tmpIndex_ :\n\t\t\tv0.weight - v1.weight;\n\t});\n\tarray.forEach(function(v) {\n\t\tdelete v._tmpIndex_;\n\t});\n}\n\n/**\n * @interface ILayoutItem\n * @prop {String} position - The position of the item in the chart layout. Possible values are\n * 'left', 'top', 'right', 'bottom', and 'chartArea'\n * @prop {Number} weight - The weight used to sort the item. Higher weights are further away from the chart area\n * @prop {Boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down\n * @prop {Function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\n * @prop {Function} update - Takes two parameters: width and height. Returns size of item\n * @prop {Function} getPadding - Returns an object with padding on the edges\n * @prop {Number} width - Width of item. Must be valid after update()\n * @prop {Number} height - Height of item. Must be valid after update()\n * @prop {Number} left - Left edge of the item. Set by layout system and cannot be used in update\n * @prop {Number} top - Top edge of the item. Set by layout system and cannot be used in update\n * @prop {Number} right - Right edge of the item. Set by layout system and cannot be used in update\n * @prop {Number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\n */\n\n// The layout service is very self explanatory. It's responsible for the layout within a chart.\n// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\n// It is this service's responsibility of carrying out that layout.\nmodule.exports = {\n\tdefaults: {},\n\n\t/**\n\t * Register a box to a chart.\n\t * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\n\t * @param {Chart} chart - the chart to use\n\t * @param {ILayoutItem} item - the item to add to be layed out\n\t */\n\taddBox: function(chart, item) {\n\t\tif (!chart.boxes) {\n\t\t\tchart.boxes = [];\n\t\t}\n\n\t\t// initialize item with default values\n\t\titem.fullWidth = item.fullWidth || false;\n\t\titem.position = item.position || 'top';\n\t\titem.weight = item.weight || 0;\n\n\t\tchart.boxes.push(item);\n\t},\n\n\t/**\n\t * Remove a layoutItem from a chart\n\t * @param {Chart} chart - the chart to remove the box from\n\t * @param {Object} layoutItem - the item to remove from the layout\n\t */\n\tremoveBox: function(chart, layoutItem) {\n\t\tvar index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n\t\tif (index !== -1) {\n\t\t\tchart.boxes.splice(index, 1);\n\t\t}\n\t},\n\n\t/**\n\t * Sets (or updates) options on the given `item`.\n\t * @param {Chart} chart - the chart in which the item lives (or will be added to)\n\t * @param {Object} item - the item to configure with the given options\n\t * @param {Object} options - the new item options.\n\t */\n\tconfigure: function(chart, item, options) {\n\t\tvar props = ['fullWidth', 'position', 'weight'];\n\t\tvar ilen = props.length;\n\t\tvar i = 0;\n\t\tvar prop;\n\n\t\tfor (; i < ilen; ++i) {\n\t\t\tprop = props[i];\n\t\t\tif (options.hasOwnProperty(prop)) {\n\t\t\t\titem[prop] = options[prop];\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Fits boxes of the given chart into the given size by having each box measure itself\n\t * then running a fitting algorithm\n\t * @param {Chart} chart - the chart\n\t * @param {Number} width - the width to fit into\n\t * @param {Number} height - the height to fit into\n\t */\n\tupdate: function(chart, width, height) {\n\t\tif (!chart) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar layoutOptions = chart.options.layout || {};\n\t\tvar padding = helpers.options.toPadding(layoutOptions.padding);\n\t\tvar leftPadding = padding.left;\n\t\tvar rightPadding = padding.right;\n\t\tvar topPadding = padding.top;\n\t\tvar bottomPadding = padding.bottom;\n\n\t\tvar leftBoxes = filterByPosition(chart.boxes, 'left');\n\t\tvar rightBoxes = filterByPosition(chart.boxes, 'right');\n\t\tvar topBoxes = filterByPosition(chart.boxes, 'top');\n\t\tvar bottomBoxes = filterByPosition(chart.boxes, 'bottom');\n\t\tvar chartAreaBoxes = filterByPosition(chart.boxes, 'chartArea');\n\n\t\t// Sort boxes by weight. A higher weight is further away from the chart area\n\t\tsortByWeight(leftBoxes, true);\n\t\tsortByWeight(rightBoxes, false);\n\t\tsortByWeight(topBoxes, true);\n\t\tsortByWeight(bottomBoxes, false);\n\n\t\t// Essentially we now have any number of boxes on each of the 4 sides.\n\t\t// Our canvas looks like the following.\n\t\t// The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\n\t\t// B1 is the bottom axis\n\t\t// There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\n\t\t// These locations are single-box locations only, when trying to register a chartArea location that is already taken,\n\t\t// an error will be thrown.\n\t\t//\n\t\t// |----------------------------------------------------|\n\t\t// | T1 (Full Width) |\n\t\t// |----------------------------------------------------|\n\t\t// | | | T2 | |\n\t\t// | |----|-------------------------------------|----|\n\t\t// | | | C1 | | C2 | |\n\t\t// | | |----| |----| |\n\t\t// | | | | |\n\t\t// | L1 | L2 | ChartArea (C0) | R1 |\n\t\t// | | | | |\n\t\t// | | |----| |----| |\n\t\t// | | | C3 | | C4 | |\n\t\t// | |----|-------------------------------------|----|\n\t\t// | | | B1 | |\n\t\t// |----------------------------------------------------|\n\t\t// | B2 (Full Width) |\n\t\t// |----------------------------------------------------|\n\t\t//\n\t\t// What we do to find the best sizing, we do the following\n\t\t// 1. Determine the minimum size of the chart area.\n\t\t// 2. Split the remaining width equally between each vertical axis\n\t\t// 3. Split the remaining height equally between each horizontal axis\n\t\t// 4. Give each layout the maximum size it can be. The layout will return it's minimum size\n\t\t// 5. Adjust the sizes of each axis based on it's minimum reported size.\n\t\t// 6. Refit each axis\n\t\t// 7. Position each axis in the final location\n\t\t// 8. Tell the chart the final location of the chart area\n\t\t// 9. Tell any axes that overlay the chart area the positions of the chart area\n\n\t\t// Step 1\n\t\tvar chartWidth = width - leftPadding - rightPadding;\n\t\tvar chartHeight = height - topPadding - bottomPadding;\n\t\tvar chartAreaWidth = chartWidth / 2; // min 50%\n\t\tvar chartAreaHeight = chartHeight / 2; // min 50%\n\n\t\t// Step 2\n\t\tvar verticalBoxWidth = (width - chartAreaWidth) / (leftBoxes.length + rightBoxes.length);\n\n\t\t// Step 3\n\t\tvar horizontalBoxHeight = (height - chartAreaHeight) / (topBoxes.length + bottomBoxes.length);\n\n\t\t// Step 4\n\t\tvar maxChartAreaWidth = chartWidth;\n\t\tvar maxChartAreaHeight = chartHeight;\n\t\tvar minBoxSizes = [];\n\n\t\tfunction getMinimumBoxSize(box) {\n\t\t\tvar minSize;\n\t\t\tvar isHorizontal = box.isHorizontal();\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tminSize = box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, horizontalBoxHeight);\n\t\t\t\tmaxChartAreaHeight -= minSize.height;\n\t\t\t} else {\n\t\t\t\tminSize = box.update(verticalBoxWidth, maxChartAreaHeight);\n\t\t\t\tmaxChartAreaWidth -= minSize.width;\n\t\t\t}\n\n\t\t\tminBoxSizes.push({\n\t\t\t\thorizontal: isHorizontal,\n\t\t\t\tminSize: minSize,\n\t\t\t\tbox: box,\n\t\t\t});\n\t\t}\n\n\t\thelpers.each(leftBoxes.concat(rightBoxes, topBoxes, bottomBoxes), getMinimumBoxSize);\n\n\t\t// If a horizontal box has padding, we move the left boxes over to avoid ugly charts (see issue #2478)\n\t\tvar maxHorizontalLeftPadding = 0;\n\t\tvar maxHorizontalRightPadding = 0;\n\t\tvar maxVerticalTopPadding = 0;\n\t\tvar maxVerticalBottomPadding = 0;\n\n\t\thelpers.each(topBoxes.concat(bottomBoxes), function(horizontalBox) {\n\t\t\tif (horizontalBox.getPadding) {\n\t\t\t\tvar boxPadding = horizontalBox.getPadding();\n\t\t\t\tmaxHorizontalLeftPadding = Math.max(maxHorizontalLeftPadding, boxPadding.left);\n\t\t\t\tmaxHorizontalRightPadding = Math.max(maxHorizontalRightPadding, boxPadding.right);\n\t\t\t}\n\t\t});\n\n\t\thelpers.each(leftBoxes.concat(rightBoxes), function(verticalBox) {\n\t\t\tif (verticalBox.getPadding) {\n\t\t\t\tvar boxPadding = verticalBox.getPadding();\n\t\t\t\tmaxVerticalTopPadding = Math.max(maxVerticalTopPadding, boxPadding.top);\n\t\t\t\tmaxVerticalBottomPadding = Math.max(maxVerticalBottomPadding, boxPadding.bottom);\n\t\t\t}\n\t\t});\n\n\t\t// At this point, maxChartAreaHeight and maxChartAreaWidth are the size the chart area could\n\t\t// be if the axes are drawn at their minimum sizes.\n\t\t// Steps 5 & 6\n\t\tvar totalLeftBoxesWidth = leftPadding;\n\t\tvar totalRightBoxesWidth = rightPadding;\n\t\tvar totalTopBoxesHeight = topPadding;\n\t\tvar totalBottomBoxesHeight = bottomPadding;\n\n\t\t// Function to fit a box\n\t\tfunction fitBox(box) {\n\t\t\tvar minBoxSize = helpers.findNextWhere(minBoxSizes, function(minBox) {\n\t\t\t\treturn minBox.box === box;\n\t\t\t});\n\n\t\t\tif (minBoxSize) {\n\t\t\t\tif (box.isHorizontal()) {\n\t\t\t\t\tvar scaleMargin = {\n\t\t\t\t\t\tleft: Math.max(totalLeftBoxesWidth, maxHorizontalLeftPadding),\n\t\t\t\t\t\tright: Math.max(totalRightBoxesWidth, maxHorizontalRightPadding),\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tbottom: 0\n\t\t\t\t\t};\n\n\t\t\t\t\t// Don't use min size here because of label rotation. When the labels are rotated, their rotation highly depends\n\t\t\t\t\t// on the margin. Sometimes they need to increase in size slightly\n\t\t\t\t\tbox.update(box.fullWidth ? chartWidth : maxChartAreaWidth, chartHeight / 2, scaleMargin);\n\t\t\t\t} else {\n\t\t\t\t\tbox.update(minBoxSize.minSize.width, maxChartAreaHeight);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Update, and calculate the left and right margins for the horizontal boxes\n\t\thelpers.each(leftBoxes.concat(rightBoxes), fitBox);\n\n\t\thelpers.each(leftBoxes, function(box) {\n\t\t\ttotalLeftBoxesWidth += box.width;\n\t\t});\n\n\t\thelpers.each(rightBoxes, function(box) {\n\t\t\ttotalRightBoxesWidth += box.width;\n\t\t});\n\n\t\t// Set the Left and Right margins for the horizontal boxes\n\t\thelpers.each(topBoxes.concat(bottomBoxes), fitBox);\n\n\t\t// Figure out how much margin is on the top and bottom of the vertical boxes\n\t\thelpers.each(topBoxes, function(box) {\n\t\t\ttotalTopBoxesHeight += box.height;\n\t\t});\n\n\t\thelpers.each(bottomBoxes, function(box) {\n\t\t\ttotalBottomBoxesHeight += box.height;\n\t\t});\n\n\t\tfunction finalFitVerticalBox(box) {\n\t\t\tvar minBoxSize = helpers.findNextWhere(minBoxSizes, function(minSize) {\n\t\t\t\treturn minSize.box === box;\n\t\t\t});\n\n\t\t\tvar scaleMargin = {\n\t\t\t\tleft: 0,\n\t\t\t\tright: 0,\n\t\t\t\ttop: totalTopBoxesHeight,\n\t\t\t\tbottom: totalBottomBoxesHeight\n\t\t\t};\n\n\t\t\tif (minBoxSize) {\n\t\t\t\tbox.update(minBoxSize.minSize.width, maxChartAreaHeight, scaleMargin);\n\t\t\t}\n\t\t}\n\n\t\t// Let the left layout know the final margin\n\t\thelpers.each(leftBoxes.concat(rightBoxes), finalFitVerticalBox);\n\n\t\t// Recalculate because the size of each layout might have changed slightly due to the margins (label rotation for instance)\n\t\ttotalLeftBoxesWidth = leftPadding;\n\t\ttotalRightBoxesWidth = rightPadding;\n\t\ttotalTopBoxesHeight = topPadding;\n\t\ttotalBottomBoxesHeight = bottomPadding;\n\n\t\thelpers.each(leftBoxes, function(box) {\n\t\t\ttotalLeftBoxesWidth += box.width;\n\t\t});\n\n\t\thelpers.each(rightBoxes, function(box) {\n\t\t\ttotalRightBoxesWidth += box.width;\n\t\t});\n\n\t\thelpers.each(topBoxes, function(box) {\n\t\t\ttotalTopBoxesHeight += box.height;\n\t\t});\n\t\thelpers.each(bottomBoxes, function(box) {\n\t\t\ttotalBottomBoxesHeight += box.height;\n\t\t});\n\n\t\t// We may be adding some padding to account for rotated x axis labels\n\t\tvar leftPaddingAddition = Math.max(maxHorizontalLeftPadding - totalLeftBoxesWidth, 0);\n\t\ttotalLeftBoxesWidth += leftPaddingAddition;\n\t\ttotalRightBoxesWidth += Math.max(maxHorizontalRightPadding - totalRightBoxesWidth, 0);\n\n\t\tvar topPaddingAddition = Math.max(maxVerticalTopPadding - totalTopBoxesHeight, 0);\n\t\ttotalTopBoxesHeight += topPaddingAddition;\n\t\ttotalBottomBoxesHeight += Math.max(maxVerticalBottomPadding - totalBottomBoxesHeight, 0);\n\n\t\t// Figure out if our chart area changed. This would occur if the dataset layout label rotation\n\t\t// changed due to the application of the margins in step 6. Since we can only get bigger, this is safe to do\n\t\t// without calling `fit` again\n\t\tvar newMaxChartAreaHeight = height - totalTopBoxesHeight - totalBottomBoxesHeight;\n\t\tvar newMaxChartAreaWidth = width - totalLeftBoxesWidth - totalRightBoxesWidth;\n\n\t\tif (newMaxChartAreaWidth !== maxChartAreaWidth || newMaxChartAreaHeight !== maxChartAreaHeight) {\n\t\t\thelpers.each(leftBoxes, function(box) {\n\t\t\t\tbox.height = newMaxChartAreaHeight;\n\t\t\t});\n\n\t\t\thelpers.each(rightBoxes, function(box) {\n\t\t\t\tbox.height = newMaxChartAreaHeight;\n\t\t\t});\n\n\t\t\thelpers.each(topBoxes, function(box) {\n\t\t\t\tif (!box.fullWidth) {\n\t\t\t\t\tbox.width = newMaxChartAreaWidth;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\thelpers.each(bottomBoxes, function(box) {\n\t\t\t\tif (!box.fullWidth) {\n\t\t\t\t\tbox.width = newMaxChartAreaWidth;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tmaxChartAreaHeight = newMaxChartAreaHeight;\n\t\t\tmaxChartAreaWidth = newMaxChartAreaWidth;\n\t\t}\n\n\t\t// Step 7 - Position the boxes\n\t\tvar left = leftPadding + leftPaddingAddition;\n\t\tvar top = topPadding + topPaddingAddition;\n\n\t\tfunction placeBox(box) {\n\t\t\tif (box.isHorizontal()) {\n\t\t\t\tbox.left = box.fullWidth ? leftPadding : totalLeftBoxesWidth;\n\t\t\t\tbox.right = box.fullWidth ? width - rightPadding : totalLeftBoxesWidth + maxChartAreaWidth;\n\t\t\t\tbox.top = top;\n\t\t\t\tbox.bottom = top + box.height;\n\n\t\t\t\t// Move to next point\n\t\t\t\ttop = box.bottom;\n\n\t\t\t} else {\n\n\t\t\t\tbox.left = left;\n\t\t\t\tbox.right = left + box.width;\n\t\t\t\tbox.top = totalTopBoxesHeight;\n\t\t\t\tbox.bottom = totalTopBoxesHeight + maxChartAreaHeight;\n\n\t\t\t\t// Move to next point\n\t\t\t\tleft = box.right;\n\t\t\t}\n\t\t}\n\n\t\thelpers.each(leftBoxes.concat(topBoxes), placeBox);\n\n\t\t// Account for chart width and height\n\t\tleft += maxChartAreaWidth;\n\t\ttop += maxChartAreaHeight;\n\n\t\thelpers.each(rightBoxes, placeBox);\n\t\thelpers.each(bottomBoxes, placeBox);\n\n\t\t// Step 8\n\t\tchart.chartArea = {\n\t\t\tleft: totalLeftBoxesWidth,\n\t\t\ttop: totalTopBoxesHeight,\n\t\t\tright: totalLeftBoxesWidth + maxChartAreaWidth,\n\t\t\tbottom: totalTopBoxesHeight + maxChartAreaHeight\n\t\t};\n\n\t\t// Step 9\n\t\thelpers.each(chartAreaBoxes, function(box) {\n\t\t\tbox.left = chart.chartArea.left;\n\t\t\tbox.top = chart.chartArea.top;\n\t\t\tbox.right = chart.chartArea.right;\n\t\t\tbox.bottom = chart.chartArea.bottom;\n\n\t\t\tbox.update(maxChartAreaWidth, maxChartAreaHeight);\n\t\t});\n\t}\n};\n\n},{\"46\":46}],32:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar helpers = require(46);\n\ndefaults._set('global', {\n\tplugins: {}\n});\n\n/**\n * The plugin service singleton\n * @namespace Chart.plugins\n * @since 2.1.0\n */\nmodule.exports = {\n\t/**\n\t * Globally registered plugins.\n\t * @private\n\t */\n\t_plugins: [],\n\n\t/**\n\t * This identifier is used to invalidate the descriptors cache attached to each chart\n\t * when a global plugin is registered or unregistered. In this case, the cache ID is\n\t * incremented and descriptors are regenerated during following API calls.\n\t * @private\n\t */\n\t_cacheId: 0,\n\n\t/**\n\t * Registers the given plugin(s) if not already registered.\n\t * @param {Array|Object} plugins plugin instance(s).\n\t */\n\tregister: function(plugins) {\n\t\tvar p = this._plugins;\n\t\t([]).concat(plugins).forEach(function(plugin) {\n\t\t\tif (p.indexOf(plugin) === -1) {\n\t\t\t\tp.push(plugin);\n\t\t\t}\n\t\t});\n\n\t\tthis._cacheId++;\n\t},\n\n\t/**\n\t * Unregisters the given plugin(s) only if registered.\n\t * @param {Array|Object} plugins plugin instance(s).\n\t */\n\tunregister: function(plugins) {\n\t\tvar p = this._plugins;\n\t\t([]).concat(plugins).forEach(function(plugin) {\n\t\t\tvar idx = p.indexOf(plugin);\n\t\t\tif (idx !== -1) {\n\t\t\t\tp.splice(idx, 1);\n\t\t\t}\n\t\t});\n\n\t\tthis._cacheId++;\n\t},\n\n\t/**\n\t * Remove all registered plugins.\n\t * @since 2.1.5\n\t */\n\tclear: function() {\n\t\tthis._plugins = [];\n\t\tthis._cacheId++;\n\t},\n\n\t/**\n\t * Returns the number of registered plugins?\n\t * @returns {Number}\n\t * @since 2.1.5\n\t */\n\tcount: function() {\n\t\treturn this._plugins.length;\n\t},\n\n\t/**\n\t * Returns all registered plugin instances.\n\t * @returns {Array} array of plugin objects.\n\t * @since 2.1.5\n\t */\n\tgetAll: function() {\n\t\treturn this._plugins;\n\t},\n\n\t/**\n\t * Calls enabled plugins for `chart` on the specified hook and with the given args.\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\n\t * returned value can be used, for instance, to interrupt the current action.\n\t * @param {Object} chart - The chart instance for which plugins should be called.\n\t * @param {String} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\n\t * @param {Array} [args] - Extra arguments to apply to the hook call.\n\t * @returns {Boolean} false if any of the plugins return false, else returns true.\n\t */\n\tnotify: function(chart, hook, args) {\n\t\tvar descriptors = this.descriptors(chart);\n\t\tvar ilen = descriptors.length;\n\t\tvar i, descriptor, plugin, params, method;\n\n\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\tdescriptor = descriptors[i];\n\t\t\tplugin = descriptor.plugin;\n\t\t\tmethod = plugin[hook];\n\t\t\tif (typeof method === 'function') {\n\t\t\t\tparams = [chart].concat(args || []);\n\t\t\t\tparams.push(descriptor.options);\n\t\t\t\tif (method.apply(plugin, params) === false) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t/**\n\t * Returns descriptors of enabled plugins for the given chart.\n\t * @returns {Array} [{ plugin, options }]\n\t * @private\n\t */\n\tdescriptors: function(chart) {\n\t\tvar cache = chart.$plugins || (chart.$plugins = {});\n\t\tif (cache.id === this._cacheId) {\n\t\t\treturn cache.descriptors;\n\t\t}\n\n\t\tvar plugins = [];\n\t\tvar descriptors = [];\n\t\tvar config = (chart && chart.config) || {};\n\t\tvar options = (config.options && config.options.plugins) || {};\n\n\t\tthis._plugins.concat(config.plugins || []).forEach(function(plugin) {\n\t\t\tvar idx = plugins.indexOf(plugin);\n\t\t\tif (idx !== -1) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar id = plugin.id;\n\t\t\tvar opts = options[id];\n\t\t\tif (opts === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (opts === true) {\n\t\t\t\topts = helpers.clone(defaults.global.plugins[id]);\n\t\t\t}\n\n\t\t\tplugins.push(plugin);\n\t\t\tdescriptors.push({\n\t\t\t\tplugin: plugin,\n\t\t\t\toptions: opts || {}\n\t\t\t});\n\t\t});\n\n\t\tcache.descriptors = descriptors;\n\t\tcache.id = this._cacheId;\n\t\treturn descriptors;\n\t},\n\n\t/**\n\t * Invalidates cache for the given chart: descriptors hold a reference on plugin option,\n\t * but in some cases, this reference can be changed by the user when updating options.\n\t * https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\n\t * @private\n\t */\n\t_invalidate: function(chart) {\n\t\tdelete chart.$plugins;\n\t}\n};\n\n/**\n * Plugin extension hooks.\n * @interface IPlugin\n * @since 2.1.0\n */\n/**\n * @method IPlugin#beforeInit\n * @desc Called before initializing `chart`.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#afterInit\n * @desc Called after `chart` has been initialized and before the first update.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeUpdate\n * @desc Called before updating `chart`. If any plugin returns `false`, the update\n * is cancelled (and thus subsequent render(s)) until another `update` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart update.\n */\n/**\n * @method IPlugin#afterUpdate\n * @desc Called after `chart` has been updated and before rendering. Note that this\n * hook will not be called if the chart update has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeDatasetsUpdate\n * @desc Called before updating the `chart` datasets. If any plugin returns `false`,\n * the datasets update is cancelled until another `update` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} false to cancel the datasets update.\n * @since version 2.1.5\n*/\n/**\n * @method IPlugin#afterDatasetsUpdate\n * @desc Called after the `chart` datasets have been updated. Note that this hook\n * will not be called if the datasets update has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @since version 2.1.5\n */\n/**\n * @method IPlugin#beforeDatasetUpdate\n * @desc Called before updating the `chart` dataset at the given `args.index`. If any plugin\n * returns `false`, the datasets update is cancelled until another `update` is triggered.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Number} args.index - The dataset index.\n * @param {Object} args.meta - The dataset metadata.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart datasets drawing.\n */\n/**\n * @method IPlugin#afterDatasetUpdate\n * @desc Called after the `chart` datasets at the given `args.index` has been updated. Note\n * that this hook will not be called if the datasets update has been previously cancelled.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Number} args.index - The dataset index.\n * @param {Object} args.meta - The dataset metadata.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeLayout\n * @desc Called before laying out `chart`. If any plugin returns `false`,\n * the layout update is cancelled until another `update` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart layout.\n */\n/**\n * @method IPlugin#afterLayout\n * @desc Called after the `chart` has been layed out. Note that this hook will not\n * be called if the layout update has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeRender\n * @desc Called before rendering `chart`. If any plugin returns `false`,\n * the rendering is cancelled until another `render` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart rendering.\n */\n/**\n * @method IPlugin#afterRender\n * @desc Called after the `chart` has been fully rendered (and animation completed). Note\n * that this hook will not be called if the rendering has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeDraw\n * @desc Called before drawing `chart` at every animation frame specified by the given\n * easing value. If any plugin returns `false`, the frame drawing is cancelled until\n * another `render` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart drawing.\n */\n/**\n * @method IPlugin#afterDraw\n * @desc Called after the `chart` has been drawn for the specific easing value. Note\n * that this hook will not be called if the drawing has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeDatasetsDraw\n * @desc Called before drawing the `chart` datasets. If any plugin returns `false`,\n * the datasets drawing is cancelled until another `render` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart datasets drawing.\n */\n/**\n * @method IPlugin#afterDatasetsDraw\n * @desc Called after the `chart` datasets have been drawn. Note that this hook\n * will not be called if the datasets drawing has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeDatasetDraw\n * @desc Called before drawing the `chart` dataset at the given `args.index` (datasets\n * are drawn in the reverse order). If any plugin returns `false`, the datasets drawing\n * is cancelled until another `render` is triggered.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Number} args.index - The dataset index.\n * @param {Object} args.meta - The dataset metadata.\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart datasets drawing.\n */\n/**\n * @method IPlugin#afterDatasetDraw\n * @desc Called after the `chart` datasets at the given `args.index` have been drawn\n * (datasets are drawn in the reverse order). Note that this hook will not be called\n * if the datasets drawing has been previously cancelled.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Number} args.index - The dataset index.\n * @param {Object} args.meta - The dataset metadata.\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeTooltipDraw\n * @desc Called before drawing the `tooltip`. If any plugin returns `false`,\n * the tooltip drawing is cancelled until another `render` is triggered.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Object} args.tooltip - The tooltip.\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart tooltip drawing.\n */\n/**\n * @method IPlugin#afterTooltipDraw\n * @desc Called after drawing the `tooltip`. Note that this hook will not\n * be called if the tooltip drawing has been previously cancelled.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Object} args.tooltip - The tooltip.\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeEvent\n * @desc Called before processing the specified `event`. If any plugin returns `false`,\n * the event will be discarded.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {IEvent} event - The event object.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#afterEvent\n * @desc Called after the `event` has been consumed. Note that this hook\n * will not be called if the `event` has been previously discarded.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {IEvent} event - The event object.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#resize\n * @desc Called after the chart as been resized.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} size - The new canvas display size (eq. canvas.style width & height).\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#destroy\n * @desc Called after the chart as been destroyed.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n\n},{\"26\":26,\"46\":46}],33:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar Element = require(27);\nvar helpers = require(46);\nvar Ticks = require(35);\n\ndefaults._set('scale', {\n\tdisplay: true,\n\tposition: 'left',\n\toffset: false,\n\n\t// grid line settings\n\tgridLines: {\n\t\tdisplay: true,\n\t\tcolor: 'rgba(0, 0, 0, 0.1)',\n\t\tlineWidth: 1,\n\t\tdrawBorder: true,\n\t\tdrawOnChartArea: true,\n\t\tdrawTicks: true,\n\t\ttickMarkLength: 10,\n\t\tzeroLineWidth: 1,\n\t\tzeroLineColor: 'rgba(0,0,0,0.25)',\n\t\tzeroLineBorderDash: [],\n\t\tzeroLineBorderDashOffset: 0.0,\n\t\toffsetGridLines: false,\n\t\tborderDash: [],\n\t\tborderDashOffset: 0.0\n\t},\n\n\t// scale label\n\tscaleLabel: {\n\t\t// display property\n\t\tdisplay: false,\n\n\t\t// actual label\n\t\tlabelString: '',\n\n\t\t// line height\n\t\tlineHeight: 1.2,\n\n\t\t// top/bottom padding\n\t\tpadding: {\n\t\t\ttop: 4,\n\t\t\tbottom: 4\n\t\t}\n\t},\n\n\t// label settings\n\tticks: {\n\t\tbeginAtZero: false,\n\t\tminRotation: 0,\n\t\tmaxRotation: 50,\n\t\tmirror: false,\n\t\tpadding: 0,\n\t\treverse: false,\n\t\tdisplay: true,\n\t\tautoSkip: true,\n\t\tautoSkipPadding: 0,\n\t\tlabelOffset: 0,\n\t\t// We pass through arrays to be rendered as multiline labels, we convert Others to strings here.\n\t\tcallback: Ticks.formatters.values,\n\t\tminor: {},\n\t\tmajor: {}\n\t}\n});\n\nfunction labelsFromTicks(ticks) {\n\tvar labels = [];\n\tvar i, ilen;\n\n\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\n\t\tlabels.push(ticks[i].label);\n\t}\n\n\treturn labels;\n}\n\nfunction getLineValue(scale, index, offsetGridLines) {\n\tvar lineValue = scale.getPixelForTick(index);\n\n\tif (offsetGridLines) {\n\t\tif (index === 0) {\n\t\t\tlineValue -= (scale.getPixelForTick(1) - lineValue) / 2;\n\t\t} else {\n\t\t\tlineValue -= (lineValue - scale.getPixelForTick(index - 1)) / 2;\n\t\t}\n\t}\n\treturn lineValue;\n}\n\nfunction computeTextSize(context, tick, font) {\n\treturn helpers.isArray(tick) ?\n\t\thelpers.longestText(context, font, tick) :\n\t\tcontext.measureText(tick).width;\n}\n\nfunction parseFontOptions(options) {\n\tvar valueOrDefault = helpers.valueOrDefault;\n\tvar globalDefaults = defaults.global;\n\tvar size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize);\n\tvar style = valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle);\n\tvar family = valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily);\n\n\treturn {\n\t\tsize: size,\n\t\tstyle: style,\n\t\tfamily: family,\n\t\tfont: helpers.fontString(size, style, family)\n\t};\n}\n\nfunction parseLineHeight(options) {\n\treturn helpers.options.toLineHeight(\n\t\thelpers.valueOrDefault(options.lineHeight, 1.2),\n\t\thelpers.valueOrDefault(options.fontSize, defaults.global.defaultFontSize));\n}\n\nmodule.exports = Element.extend({\n\t/**\n\t * Get the padding needed for the scale\n\t * @method getPadding\n\t * @private\n\t * @returns {Padding} the necessary padding\n\t */\n\tgetPadding: function() {\n\t\tvar me = this;\n\t\treturn {\n\t\t\tleft: me.paddingLeft || 0,\n\t\t\ttop: me.paddingTop || 0,\n\t\t\tright: me.paddingRight || 0,\n\t\t\tbottom: me.paddingBottom || 0\n\t\t};\n\t},\n\n\t/**\n\t * Returns the scale tick objects ({label, major})\n\t * @since 2.7\n\t */\n\tgetTicks: function() {\n\t\treturn this._ticks;\n\t},\n\n\t// These methods are ordered by lifecyle. Utilities then follow.\n\t// Any function defined here is inherited by all scale types.\n\t// Any function can be extended by the scale type\n\n\tmergeTicksOptions: function() {\n\t\tvar ticks = this.options.ticks;\n\t\tif (ticks.minor === false) {\n\t\t\tticks.minor = {\n\t\t\t\tdisplay: false\n\t\t\t};\n\t\t}\n\t\tif (ticks.major === false) {\n\t\t\tticks.major = {\n\t\t\t\tdisplay: false\n\t\t\t};\n\t\t}\n\t\tfor (var key in ticks) {\n\t\t\tif (key !== 'major' && key !== 'minor') {\n\t\t\t\tif (typeof ticks.minor[key] === 'undefined') {\n\t\t\t\t\tticks.minor[key] = ticks[key];\n\t\t\t\t}\n\t\t\t\tif (typeof ticks.major[key] === 'undefined') {\n\t\t\t\t\tticks.major[key] = ticks[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tbeforeUpdate: function() {\n\t\thelpers.callback(this.options.beforeUpdate, [this]);\n\t},\n\n\tupdate: function(maxWidth, maxHeight, margins) {\n\t\tvar me = this;\n\t\tvar i, ilen, labels, label, ticks, tick;\n\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\tme.beforeUpdate();\n\n\t\t// Absorb the master measurements\n\t\tme.maxWidth = maxWidth;\n\t\tme.maxHeight = maxHeight;\n\t\tme.margins = helpers.extend({\n\t\t\tleft: 0,\n\t\t\tright: 0,\n\t\t\ttop: 0,\n\t\t\tbottom: 0\n\t\t}, margins);\n\t\tme.longestTextCache = me.longestTextCache || {};\n\n\t\t// Dimensions\n\t\tme.beforeSetDimensions();\n\t\tme.setDimensions();\n\t\tme.afterSetDimensions();\n\n\t\t// Data min/max\n\t\tme.beforeDataLimits();\n\t\tme.determineDataLimits();\n\t\tme.afterDataLimits();\n\n\t\t// Ticks - `this.ticks` is now DEPRECATED!\n\t\t// Internal ticks are now stored as objects in the PRIVATE `this._ticks` member\n\t\t// and must not be accessed directly from outside this class. `this.ticks` being\n\t\t// around for long time and not marked as private, we can't change its structure\n\t\t// without unexpected breaking changes. If you need to access the scale ticks,\n\t\t// use scale.getTicks() instead.\n\n\t\tme.beforeBuildTicks();\n\n\t\t// New implementations should return an array of objects but for BACKWARD COMPAT,\n\t\t// we still support no return (`this.ticks` internally set by calling this method).\n\t\tticks = me.buildTicks() || [];\n\n\t\tme.afterBuildTicks();\n\n\t\tme.beforeTickToLabelConversion();\n\n\t\t// New implementations should return the formatted tick labels but for BACKWARD\n\t\t// COMPAT, we still support no return (`this.ticks` internally changed by calling\n\t\t// this method and supposed to contain only string values).\n\t\tlabels = me.convertTicksToLabels(ticks) || me.ticks;\n\n\t\tme.afterTickToLabelConversion();\n\n\t\tme.ticks = labels; // BACKWARD COMPATIBILITY\n\n\t\t// IMPORTANT: from this point, we consider that `this.ticks` will NEVER change!\n\n\t\t// BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`)\n\t\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\n\t\t\tlabel = labels[i];\n\t\t\ttick = ticks[i];\n\t\t\tif (!tick) {\n\t\t\t\tticks.push(tick = {\n\t\t\t\t\tlabel: label,\n\t\t\t\t\tmajor: false\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\ttick.label = label;\n\t\t\t}\n\t\t}\n\n\t\tme._ticks = ticks;\n\n\t\t// Tick Rotation\n\t\tme.beforeCalculateTickRotation();\n\t\tme.calculateTickRotation();\n\t\tme.afterCalculateTickRotation();\n\t\t// Fit\n\t\tme.beforeFit();\n\t\tme.fit();\n\t\tme.afterFit();\n\t\t//\n\t\tme.afterUpdate();\n\n\t\treturn me.minSize;\n\n\t},\n\tafterUpdate: function() {\n\t\thelpers.callback(this.options.afterUpdate, [this]);\n\t},\n\n\t//\n\n\tbeforeSetDimensions: function() {\n\t\thelpers.callback(this.options.beforeSetDimensions, [this]);\n\t},\n\tsetDimensions: function() {\n\t\tvar me = this;\n\t\t// Set the unconstrained dimension before label rotation\n\t\tif (me.isHorizontal()) {\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.left = 0;\n\t\t\tme.right = me.width;\n\t\t} else {\n\t\t\tme.height = me.maxHeight;\n\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.top = 0;\n\t\t\tme.bottom = me.height;\n\t\t}\n\n\t\t// Reset padding\n\t\tme.paddingLeft = 0;\n\t\tme.paddingTop = 0;\n\t\tme.paddingRight = 0;\n\t\tme.paddingBottom = 0;\n\t},\n\tafterSetDimensions: function() {\n\t\thelpers.callback(this.options.afterSetDimensions, [this]);\n\t},\n\n\t// Data limits\n\tbeforeDataLimits: function() {\n\t\thelpers.callback(this.options.beforeDataLimits, [this]);\n\t},\n\tdetermineDataLimits: helpers.noop,\n\tafterDataLimits: function() {\n\t\thelpers.callback(this.options.afterDataLimits, [this]);\n\t},\n\n\t//\n\tbeforeBuildTicks: function() {\n\t\thelpers.callback(this.options.beforeBuildTicks, [this]);\n\t},\n\tbuildTicks: helpers.noop,\n\tafterBuildTicks: function() {\n\t\thelpers.callback(this.options.afterBuildTicks, [this]);\n\t},\n\n\tbeforeTickToLabelConversion: function() {\n\t\thelpers.callback(this.options.beforeTickToLabelConversion, [this]);\n\t},\n\tconvertTicksToLabels: function() {\n\t\tvar me = this;\n\t\t// Convert ticks to strings\n\t\tvar tickOpts = me.options.ticks;\n\t\tme.ticks = me.ticks.map(tickOpts.userCallback || tickOpts.callback, this);\n\t},\n\tafterTickToLabelConversion: function() {\n\t\thelpers.callback(this.options.afterTickToLabelConversion, [this]);\n\t},\n\n\t//\n\n\tbeforeCalculateTickRotation: function() {\n\t\thelpers.callback(this.options.beforeCalculateTickRotation, [this]);\n\t},\n\tcalculateTickRotation: function() {\n\t\tvar me = this;\n\t\tvar context = me.ctx;\n\t\tvar tickOpts = me.options.ticks;\n\t\tvar labels = labelsFromTicks(me._ticks);\n\n\t\t// Get the width of each grid by calculating the difference\n\t\t// between x offsets between 0 and 1.\n\t\tvar tickFont = parseFontOptions(tickOpts);\n\t\tcontext.font = tickFont.font;\n\n\t\tvar labelRotation = tickOpts.minRotation || 0;\n\n\t\tif (labels.length && me.options.display && me.isHorizontal()) {\n\t\t\tvar originalLabelWidth = helpers.longestText(context, tickFont.font, labels, me.longestTextCache);\n\t\t\tvar labelWidth = originalLabelWidth;\n\t\t\tvar cosRotation, sinRotation;\n\n\t\t\t// Allow 3 pixels x2 padding either side for label readability\n\t\t\tvar tickWidth = me.getPixelForTick(1) - me.getPixelForTick(0) - 6;\n\n\t\t\t// Max label rotation can be set or default to 90 - also act as a loop counter\n\t\t\twhile (labelWidth > tickWidth && labelRotation < tickOpts.maxRotation) {\n\t\t\t\tvar angleRadians = helpers.toRadians(labelRotation);\n\t\t\t\tcosRotation = Math.cos(angleRadians);\n\t\t\t\tsinRotation = Math.sin(angleRadians);\n\n\t\t\t\tif (sinRotation * originalLabelWidth > me.maxHeight) {\n\t\t\t\t\t// go back one step\n\t\t\t\t\tlabelRotation--;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tlabelRotation++;\n\t\t\t\tlabelWidth = cosRotation * originalLabelWidth;\n\t\t\t}\n\t\t}\n\n\t\tme.labelRotation = labelRotation;\n\t},\n\tafterCalculateTickRotation: function() {\n\t\thelpers.callback(this.options.afterCalculateTickRotation, [this]);\n\t},\n\n\t//\n\n\tbeforeFit: function() {\n\t\thelpers.callback(this.options.beforeFit, [this]);\n\t},\n\tfit: function() {\n\t\tvar me = this;\n\t\t// Reset\n\t\tvar minSize = me.minSize = {\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\n\t\tvar labels = labelsFromTicks(me._ticks);\n\n\t\tvar opts = me.options;\n\t\tvar tickOpts = opts.ticks;\n\t\tvar scaleLabelOpts = opts.scaleLabel;\n\t\tvar gridLineOpts = opts.gridLines;\n\t\tvar display = opts.display;\n\t\tvar isHorizontal = me.isHorizontal();\n\n\t\tvar tickFont = parseFontOptions(tickOpts);\n\t\tvar tickMarkLength = opts.gridLines.tickMarkLength;\n\n\t\t// Width\n\t\tif (isHorizontal) {\n\t\t\t// subtract the margins to line up with the chartArea if we are a full width scale\n\t\t\tminSize.width = me.isFullWidth() ? me.maxWidth - me.margins.left - me.margins.right : me.maxWidth;\n\t\t} else {\n\t\t\tminSize.width = display && gridLineOpts.drawTicks ? tickMarkLength : 0;\n\t\t}\n\n\t\t// height\n\t\tif (isHorizontal) {\n\t\t\tminSize.height = display && gridLineOpts.drawTicks ? tickMarkLength : 0;\n\t\t} else {\n\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t}\n\n\t\t// Are we showing a title for the scale?\n\t\tif (scaleLabelOpts.display && display) {\n\t\t\tvar scaleLabelLineHeight = parseLineHeight(scaleLabelOpts);\n\t\t\tvar scaleLabelPadding = helpers.options.toPadding(scaleLabelOpts.padding);\n\t\t\tvar deltaHeight = scaleLabelLineHeight + scaleLabelPadding.height;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tminSize.height += deltaHeight;\n\t\t\t} else {\n\t\t\t\tminSize.width += deltaHeight;\n\t\t\t}\n\t\t}\n\n\t\t// Don't bother fitting the ticks if we are not showing them\n\t\tif (tickOpts.display && display) {\n\t\t\tvar largestTextWidth = helpers.longestText(me.ctx, tickFont.font, labels, me.longestTextCache);\n\t\t\tvar tallestLabelHeightInLines = helpers.numberOfLabelLines(labels);\n\t\t\tvar lineSpace = tickFont.size * 0.5;\n\t\t\tvar tickPadding = me.options.ticks.padding;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\t// A horizontal axis is more constrained by the height.\n\t\t\t\tme.longestLabelWidth = largestTextWidth;\n\n\t\t\t\tvar angleRadians = helpers.toRadians(me.labelRotation);\n\t\t\t\tvar cosRotation = Math.cos(angleRadians);\n\t\t\t\tvar sinRotation = Math.sin(angleRadians);\n\n\t\t\t\t// TODO - improve this calculation\n\t\t\t\tvar labelHeight = (sinRotation * largestTextWidth)\n\t\t\t\t\t+ (tickFont.size * tallestLabelHeightInLines)\n\t\t\t\t\t+ (lineSpace * (tallestLabelHeightInLines - 1))\n\t\t\t\t\t+ lineSpace; // padding\n\n\t\t\t\tminSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding);\n\n\t\t\t\tme.ctx.font = tickFont.font;\n\t\t\t\tvar firstLabelWidth = computeTextSize(me.ctx, labels[0], tickFont.font);\n\t\t\t\tvar lastLabelWidth = computeTextSize(me.ctx, labels[labels.length - 1], tickFont.font);\n\n\t\t\t\t// Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned\n\t\t\t\t// which means that the right padding is dominated by the font height\n\t\t\t\tif (me.labelRotation !== 0) {\n\t\t\t\t\tme.paddingLeft = opts.position === 'bottom' ? (cosRotation * firstLabelWidth) + 3 : (cosRotation * lineSpace) + 3; // add 3 px to move away from canvas edges\n\t\t\t\t\tme.paddingRight = opts.position === 'bottom' ? (cosRotation * lineSpace) + 3 : (cosRotation * lastLabelWidth) + 3;\n\t\t\t\t} else {\n\t\t\t\t\tme.paddingLeft = firstLabelWidth / 2 + 3; // add 3 px to move away from canvas edges\n\t\t\t\t\tme.paddingRight = lastLabelWidth / 2 + 3;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// A vertical axis is more constrained by the width. Labels are the\n\t\t\t\t// dominant factor here, so get that length first and account for padding\n\t\t\t\tif (tickOpts.mirror) {\n\t\t\t\t\tlargestTextWidth = 0;\n\t\t\t\t} else {\n\t\t\t\t\t// use lineSpace for consistency with horizontal axis\n\t\t\t\t\t// tickPadding is not implemented for horizontal\n\t\t\t\t\tlargestTextWidth += tickPadding + lineSpace;\n\t\t\t\t}\n\n\t\t\t\tminSize.width = Math.min(me.maxWidth, minSize.width + largestTextWidth);\n\n\t\t\t\tme.paddingTop = tickFont.size / 2;\n\t\t\t\tme.paddingBottom = tickFont.size / 2;\n\t\t\t}\n\t\t}\n\n\t\tme.handleMargins();\n\n\t\tme.width = minSize.width;\n\t\tme.height = minSize.height;\n\t},\n\n\t/**\n\t * Handle margins and padding interactions\n\t * @private\n\t */\n\thandleMargins: function() {\n\t\tvar me = this;\n\t\tif (me.margins) {\n\t\t\tme.paddingLeft = Math.max(me.paddingLeft - me.margins.left, 0);\n\t\t\tme.paddingTop = Math.max(me.paddingTop - me.margins.top, 0);\n\t\t\tme.paddingRight = Math.max(me.paddingRight - me.margins.right, 0);\n\t\t\tme.paddingBottom = Math.max(me.paddingBottom - me.margins.bottom, 0);\n\t\t}\n\t},\n\n\tafterFit: function() {\n\t\thelpers.callback(this.options.afterFit, [this]);\n\t},\n\n\t// Shared Methods\n\tisHorizontal: function() {\n\t\treturn this.options.position === 'top' || this.options.position === 'bottom';\n\t},\n\tisFullWidth: function() {\n\t\treturn (this.options.fullWidth);\n\t},\n\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\n\tgetRightValue: function(rawValue) {\n\t\t// Null and undefined values first\n\t\tif (helpers.isNullOrUndef(rawValue)) {\n\t\t\treturn NaN;\n\t\t}\n\t\t// isNaN(object) returns true, so make sure NaN is checking for a number; Discard Infinite values\n\t\tif (typeof rawValue === 'number' && !isFinite(rawValue)) {\n\t\t\treturn NaN;\n\t\t}\n\t\t// If it is in fact an object, dive in one more level\n\t\tif (rawValue) {\n\t\t\tif (this.isHorizontal()) {\n\t\t\t\tif (rawValue.x !== undefined) {\n\t\t\t\t\treturn this.getRightValue(rawValue.x);\n\t\t\t\t}\n\t\t\t} else if (rawValue.y !== undefined) {\n\t\t\t\treturn this.getRightValue(rawValue.y);\n\t\t\t}\n\t\t}\n\n\t\t// Value is good, return it\n\t\treturn rawValue;\n\t},\n\n\t/**\n\t * Used to get the value to display in the tooltip for the data at the given index\n\t * @param index\n\t * @param datasetIndex\n\t */\n\tgetLabelForIndex: helpers.noop,\n\n\t/**\n\t * Returns the location of the given data point. Value can either be an index or a numerical value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param value\n\t * @param index\n\t * @param datasetIndex\n\t */\n\tgetPixelForValue: helpers.noop,\n\n\t/**\n\t * Used to get the data value from a given pixel. This is the inverse of getPixelForValue\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param pixel\n\t */\n\tgetValueForPixel: helpers.noop,\n\n\t/**\n\t * Returns the location of the tick at the given index\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t */\n\tgetPixelForTick: function(index) {\n\t\tvar me = this;\n\t\tvar offset = me.options.offset;\n\t\tif (me.isHorizontal()) {\n\t\t\tvar innerWidth = me.width - (me.paddingLeft + me.paddingRight);\n\t\t\tvar tickWidth = innerWidth / Math.max((me._ticks.length - (offset ? 0 : 1)), 1);\n\t\t\tvar pixel = (tickWidth * index) + me.paddingLeft;\n\n\t\t\tif (offset) {\n\t\t\t\tpixel += tickWidth / 2;\n\t\t\t}\n\n\t\t\tvar finalVal = me.left + Math.round(pixel);\n\t\t\tfinalVal += me.isFullWidth() ? me.margins.left : 0;\n\t\t\treturn finalVal;\n\t\t}\n\t\tvar innerHeight = me.height - (me.paddingTop + me.paddingBottom);\n\t\treturn me.top + (index * (innerHeight / (me._ticks.length - 1)));\n\t},\n\n\t/**\n\t * Utility for getting the pixel location of a percentage of scale\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t */\n\tgetPixelForDecimal: function(decimal) {\n\t\tvar me = this;\n\t\tif (me.isHorizontal()) {\n\t\t\tvar innerWidth = me.width - (me.paddingLeft + me.paddingRight);\n\t\t\tvar valueOffset = (innerWidth * decimal) + me.paddingLeft;\n\n\t\t\tvar finalVal = me.left + Math.round(valueOffset);\n\t\t\tfinalVal += me.isFullWidth() ? me.margins.left : 0;\n\t\t\treturn finalVal;\n\t\t}\n\t\treturn me.top + (decimal * me.height);\n\t},\n\n\t/**\n\t * Returns the pixel for the minimum chart value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t */\n\tgetBasePixel: function() {\n\t\treturn this.getPixelForValue(this.getBaseValue());\n\t},\n\n\tgetBaseValue: function() {\n\t\tvar me = this;\n\t\tvar min = me.min;\n\t\tvar max = me.max;\n\n\t\treturn me.beginAtZero ? 0 :\n\t\t\tmin < 0 && max < 0 ? max :\n\t\t\tmin > 0 && max > 0 ? min :\n\t\t\t0;\n\t},\n\n\t/**\n\t * Returns a subset of ticks to be plotted to avoid overlapping labels.\n\t * @private\n\t */\n\t_autoSkip: function(ticks) {\n\t\tvar skipRatio;\n\t\tvar me = this;\n\t\tvar isHorizontal = me.isHorizontal();\n\t\tvar optionTicks = me.options.ticks.minor;\n\t\tvar tickCount = ticks.length;\n\t\tvar labelRotationRadians = helpers.toRadians(me.labelRotation);\n\t\tvar cosRotation = Math.cos(labelRotationRadians);\n\t\tvar longestRotatedLabel = me.longestLabelWidth * cosRotation;\n\t\tvar result = [];\n\t\tvar i, tick, shouldSkip;\n\n\t\t// figure out the maximum number of gridlines to show\n\t\tvar maxTicks;\n\t\tif (optionTicks.maxTicksLimit) {\n\t\t\tmaxTicks = optionTicks.maxTicksLimit;\n\t\t}\n\n\t\tif (isHorizontal) {\n\t\t\tskipRatio = false;\n\n\t\t\tif ((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount > (me.width - (me.paddingLeft + me.paddingRight))) {\n\t\t\t\tskipRatio = 1 + Math.floor(((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount) / (me.width - (me.paddingLeft + me.paddingRight)));\n\t\t\t}\n\n\t\t\t// if they defined a max number of optionTicks,\n\t\t\t// increase skipRatio until that number is met\n\t\t\tif (maxTicks && tickCount > maxTicks) {\n\t\t\t\tskipRatio = Math.max(skipRatio, Math.floor(tickCount / maxTicks));\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0; i < tickCount; i++) {\n\t\t\ttick = ticks[i];\n\n\t\t\t// Since we always show the last tick,we need may need to hide the last shown one before\n\t\t\tshouldSkip = (skipRatio > 1 && i % skipRatio > 0) || (i % skipRatio === 0 && i + skipRatio >= tickCount);\n\t\t\tif (shouldSkip && i !== tickCount - 1) {\n\t\t\t\t// leave tick in place but make sure it's not displayed (#4635)\n\t\t\t\tdelete tick.label;\n\t\t\t}\n\t\t\tresult.push(tick);\n\t\t}\n\t\treturn result;\n\t},\n\n\t// Actually draw the scale on the canvas\n\t// @param {rectangle} chartArea : the area of the chart to draw full grid lines on\n\tdraw: function(chartArea) {\n\t\tvar me = this;\n\t\tvar options = me.options;\n\t\tif (!options.display) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar context = me.ctx;\n\t\tvar globalDefaults = defaults.global;\n\t\tvar optionTicks = options.ticks.minor;\n\t\tvar optionMajorTicks = options.ticks.major || optionTicks;\n\t\tvar gridLines = options.gridLines;\n\t\tvar scaleLabel = options.scaleLabel;\n\n\t\tvar isRotated = me.labelRotation !== 0;\n\t\tvar isHorizontal = me.isHorizontal();\n\n\t\tvar ticks = optionTicks.autoSkip ? me._autoSkip(me.getTicks()) : me.getTicks();\n\t\tvar tickFontColor = helpers.valueOrDefault(optionTicks.fontColor, globalDefaults.defaultFontColor);\n\t\tvar tickFont = parseFontOptions(optionTicks);\n\t\tvar majorTickFontColor = helpers.valueOrDefault(optionMajorTicks.fontColor, globalDefaults.defaultFontColor);\n\t\tvar majorTickFont = parseFontOptions(optionMajorTicks);\n\n\t\tvar tl = gridLines.drawTicks ? gridLines.tickMarkLength : 0;\n\n\t\tvar scaleLabelFontColor = helpers.valueOrDefault(scaleLabel.fontColor, globalDefaults.defaultFontColor);\n\t\tvar scaleLabelFont = parseFontOptions(scaleLabel);\n\t\tvar scaleLabelPadding = helpers.options.toPadding(scaleLabel.padding);\n\t\tvar labelRotationRadians = helpers.toRadians(me.labelRotation);\n\n\t\tvar itemsToDraw = [];\n\n\t\tvar axisWidth = me.options.gridLines.lineWidth;\n\t\tvar xTickStart = options.position === 'right' ? me.left : me.right - axisWidth - tl;\n\t\tvar xTickEnd = options.position === 'right' ? me.left + tl : me.right;\n\t\tvar yTickStart = options.position === 'bottom' ? me.top + axisWidth : me.bottom - tl - axisWidth;\n\t\tvar yTickEnd = options.position === 'bottom' ? me.top + axisWidth + tl : me.bottom + axisWidth;\n\n\t\thelpers.each(ticks, function(tick, index) {\n\t\t\t// autoskipper skipped this tick (#4635)\n\t\t\tif (helpers.isNullOrUndef(tick.label)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar label = tick.label;\n\t\t\tvar lineWidth, lineColor, borderDash, borderDashOffset;\n\t\t\tif (index === me.zeroLineIndex && options.offset === gridLines.offsetGridLines) {\n\t\t\t\t// Draw the first index specially\n\t\t\t\tlineWidth = gridLines.zeroLineWidth;\n\t\t\t\tlineColor = gridLines.zeroLineColor;\n\t\t\t\tborderDash = gridLines.zeroLineBorderDash;\n\t\t\t\tborderDashOffset = gridLines.zeroLineBorderDashOffset;\n\t\t\t} else {\n\t\t\t\tlineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, index);\n\t\t\t\tlineColor = helpers.valueAtIndexOrDefault(gridLines.color, index);\n\t\t\t\tborderDash = helpers.valueOrDefault(gridLines.borderDash, globalDefaults.borderDash);\n\t\t\t\tborderDashOffset = helpers.valueOrDefault(gridLines.borderDashOffset, globalDefaults.borderDashOffset);\n\t\t\t}\n\n\t\t\t// Common properties\n\t\t\tvar tx1, ty1, tx2, ty2, x1, y1, x2, y2, labelX, labelY;\n\t\t\tvar textAlign = 'middle';\n\t\t\tvar textBaseline = 'middle';\n\t\t\tvar tickPadding = optionTicks.padding;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tvar labelYOffset = tl + tickPadding;\n\n\t\t\t\tif (options.position === 'bottom') {\n\t\t\t\t\t// bottom\n\t\t\t\t\ttextBaseline = !isRotated ? 'top' : 'middle';\n\t\t\t\t\ttextAlign = !isRotated ? 'center' : 'right';\n\t\t\t\t\tlabelY = me.top + labelYOffset;\n\t\t\t\t} else {\n\t\t\t\t\t// top\n\t\t\t\t\ttextBaseline = !isRotated ? 'bottom' : 'middle';\n\t\t\t\t\ttextAlign = !isRotated ? 'center' : 'left';\n\t\t\t\t\tlabelY = me.bottom - labelYOffset;\n\t\t\t\t}\n\n\t\t\t\tvar xLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1);\n\t\t\t\tif (xLineValue < me.left) {\n\t\t\t\t\tlineColor = 'rgba(0,0,0,0)';\n\t\t\t\t}\n\t\t\t\txLineValue += helpers.aliasPixel(lineWidth);\n\n\t\t\t\tlabelX = me.getPixelForTick(index) + optionTicks.labelOffset; // x values for optionTicks (need to consider offsetLabel option)\n\n\t\t\t\ttx1 = tx2 = x1 = x2 = xLineValue;\n\t\t\t\tty1 = yTickStart;\n\t\t\t\tty2 = yTickEnd;\n\t\t\t\ty1 = chartArea.top;\n\t\t\t\ty2 = chartArea.bottom + axisWidth;\n\t\t\t} else {\n\t\t\t\tvar isLeft = options.position === 'left';\n\t\t\t\tvar labelXOffset;\n\n\t\t\t\tif (optionTicks.mirror) {\n\t\t\t\t\ttextAlign = isLeft ? 'left' : 'right';\n\t\t\t\t\tlabelXOffset = tickPadding;\n\t\t\t\t} else {\n\t\t\t\t\ttextAlign = isLeft ? 'right' : 'left';\n\t\t\t\t\tlabelXOffset = tl + tickPadding;\n\t\t\t\t}\n\n\t\t\t\tlabelX = isLeft ? me.right - labelXOffset : me.left + labelXOffset;\n\n\t\t\t\tvar yLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1);\n\t\t\t\tif (yLineValue < me.top) {\n\t\t\t\t\tlineColor = 'rgba(0,0,0,0)';\n\t\t\t\t}\n\t\t\t\tyLineValue += helpers.aliasPixel(lineWidth);\n\n\t\t\t\tlabelY = me.getPixelForTick(index) + optionTicks.labelOffset;\n\n\t\t\t\ttx1 = xTickStart;\n\t\t\t\ttx2 = xTickEnd;\n\t\t\t\tx1 = chartArea.left;\n\t\t\t\tx2 = chartArea.right + axisWidth;\n\t\t\t\tty1 = ty2 = y1 = y2 = yLineValue;\n\t\t\t}\n\n\t\t\titemsToDraw.push({\n\t\t\t\ttx1: tx1,\n\t\t\t\tty1: ty1,\n\t\t\t\ttx2: tx2,\n\t\t\t\tty2: ty2,\n\t\t\t\tx1: x1,\n\t\t\t\ty1: y1,\n\t\t\t\tx2: x2,\n\t\t\t\ty2: y2,\n\t\t\t\tlabelX: labelX,\n\t\t\t\tlabelY: labelY,\n\t\t\t\tglWidth: lineWidth,\n\t\t\t\tglColor: lineColor,\n\t\t\t\tglBorderDash: borderDash,\n\t\t\t\tglBorderDashOffset: borderDashOffset,\n\t\t\t\trotation: -1 * labelRotationRadians,\n\t\t\t\tlabel: label,\n\t\t\t\tmajor: tick.major,\n\t\t\t\ttextBaseline: textBaseline,\n\t\t\t\ttextAlign: textAlign\n\t\t\t});\n\t\t});\n\n\t\t// Draw all of the tick labels, tick marks, and grid lines at the correct places\n\t\thelpers.each(itemsToDraw, function(itemToDraw) {\n\t\t\tif (gridLines.display) {\n\t\t\t\tcontext.save();\n\t\t\t\tcontext.lineWidth = itemToDraw.glWidth;\n\t\t\t\tcontext.strokeStyle = itemToDraw.glColor;\n\t\t\t\tif (context.setLineDash) {\n\t\t\t\t\tcontext.setLineDash(itemToDraw.glBorderDash);\n\t\t\t\t\tcontext.lineDashOffset = itemToDraw.glBorderDashOffset;\n\t\t\t\t}\n\n\t\t\t\tcontext.beginPath();\n\n\t\t\t\tif (gridLines.drawTicks) {\n\t\t\t\t\tcontext.moveTo(itemToDraw.tx1, itemToDraw.ty1);\n\t\t\t\t\tcontext.lineTo(itemToDraw.tx2, itemToDraw.ty2);\n\t\t\t\t}\n\n\t\t\t\tif (gridLines.drawOnChartArea) {\n\t\t\t\t\tcontext.moveTo(itemToDraw.x1, itemToDraw.y1);\n\t\t\t\t\tcontext.lineTo(itemToDraw.x2, itemToDraw.y2);\n\t\t\t\t}\n\n\t\t\t\tcontext.stroke();\n\t\t\t\tcontext.restore();\n\t\t\t}\n\n\t\t\tif (optionTicks.display) {\n\t\t\t\t// Make sure we draw text in the correct color and font\n\t\t\t\tcontext.save();\n\t\t\t\tcontext.translate(itemToDraw.labelX, itemToDraw.labelY);\n\t\t\t\tcontext.rotate(itemToDraw.rotation);\n\t\t\t\tcontext.font = itemToDraw.major ? majorTickFont.font : tickFont.font;\n\t\t\t\tcontext.fillStyle = itemToDraw.major ? majorTickFontColor : tickFontColor;\n\t\t\t\tcontext.textBaseline = itemToDraw.textBaseline;\n\t\t\t\tcontext.textAlign = itemToDraw.textAlign;\n\n\t\t\t\tvar label = itemToDraw.label;\n\t\t\t\tif (helpers.isArray(label)) {\n\t\t\t\t\tvar lineCount = label.length;\n\t\t\t\t\tvar lineHeight = tickFont.size * 1.5;\n\t\t\t\t\tvar y = me.isHorizontal() ? 0 : -lineHeight * (lineCount - 1) / 2;\n\n\t\t\t\t\tfor (var i = 0; i < lineCount; ++i) {\n\t\t\t\t\t\t// We just make sure the multiline element is a string here..\n\t\t\t\t\t\tcontext.fillText('' + label[i], 0, y);\n\t\t\t\t\t\t// apply same lineSpacing as calculated @ L#320\n\t\t\t\t\t\ty += lineHeight;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcontext.fillText(label, 0, 0);\n\t\t\t\t}\n\t\t\t\tcontext.restore();\n\t\t\t}\n\t\t});\n\n\t\tif (scaleLabel.display) {\n\t\t\t// Draw the scale label\n\t\t\tvar scaleLabelX;\n\t\t\tvar scaleLabelY;\n\t\t\tvar rotation = 0;\n\t\t\tvar halfLineHeight = parseLineHeight(scaleLabel) / 2;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tscaleLabelX = me.left + ((me.right - me.left) / 2); // midpoint of the width\n\t\t\t\tscaleLabelY = options.position === 'bottom'\n\t\t\t\t\t? me.bottom - halfLineHeight - scaleLabelPadding.bottom\n\t\t\t\t\t: me.top + halfLineHeight + scaleLabelPadding.top;\n\t\t\t} else {\n\t\t\t\tvar isLeft = options.position === 'left';\n\t\t\t\tscaleLabelX = isLeft\n\t\t\t\t\t? me.left + halfLineHeight + scaleLabelPadding.top\n\t\t\t\t\t: me.right - halfLineHeight - scaleLabelPadding.top;\n\t\t\t\tscaleLabelY = me.top + ((me.bottom - me.top) / 2);\n\t\t\t\trotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI;\n\t\t\t}\n\n\t\t\tcontext.save();\n\t\t\tcontext.translate(scaleLabelX, scaleLabelY);\n\t\t\tcontext.rotate(rotation);\n\t\t\tcontext.textAlign = 'center';\n\t\t\tcontext.textBaseline = 'middle';\n\t\t\tcontext.fillStyle = scaleLabelFontColor; // render in correct colour\n\t\t\tcontext.font = scaleLabelFont.font;\n\t\t\tcontext.fillText(scaleLabel.labelString, 0, 0);\n\t\t\tcontext.restore();\n\t\t}\n\n\t\tif (gridLines.drawBorder) {\n\t\t\t// Draw the line at the edge of the axis\n\t\t\tcontext.lineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, 0);\n\t\t\tcontext.strokeStyle = helpers.valueAtIndexOrDefault(gridLines.color, 0);\n\t\t\tvar x1 = me.left;\n\t\t\tvar x2 = me.right + axisWidth;\n\t\t\tvar y1 = me.top;\n\t\t\tvar y2 = me.bottom + axisWidth;\n\n\t\t\tvar aliasPixel = helpers.aliasPixel(context.lineWidth);\n\t\t\tif (isHorizontal) {\n\t\t\t\ty1 = y2 = options.position === 'top' ? me.bottom : me.top;\n\t\t\t\ty1 += aliasPixel;\n\t\t\t\ty2 += aliasPixel;\n\t\t\t} else {\n\t\t\t\tx1 = x2 = options.position === 'left' ? me.right : me.left;\n\t\t\t\tx1 += aliasPixel;\n\t\t\t\tx2 += aliasPixel;\n\t\t\t}\n\n\t\t\tcontext.beginPath();\n\t\t\tcontext.moveTo(x1, y1);\n\t\t\tcontext.lineTo(x2, y2);\n\t\t\tcontext.stroke();\n\t\t}\n\t}\n});\n\n},{\"26\":26,\"27\":27,\"35\":35,\"46\":46}],34:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar helpers = require(46);\nvar layouts = require(31);\n\nmodule.exports = {\n\t// Scale registration object. Extensions can register new scale types (such as log or DB scales) and then\n\t// use the new chart options to grab the correct scale\n\tconstructors: {},\n\t// Use a registration function so that we can move to an ES6 map when we no longer need to support\n\t// old browsers\n\n\t// Scale config defaults\n\tdefaults: {},\n\tregisterScaleType: function(type, scaleConstructor, scaleDefaults) {\n\t\tthis.constructors[type] = scaleConstructor;\n\t\tthis.defaults[type] = helpers.clone(scaleDefaults);\n\t},\n\tgetScaleConstructor: function(type) {\n\t\treturn this.constructors.hasOwnProperty(type) ? this.constructors[type] : undefined;\n\t},\n\tgetScaleDefaults: function(type) {\n\t\t// Return the scale defaults merged with the global settings so that we always use the latest ones\n\t\treturn this.defaults.hasOwnProperty(type) ? helpers.merge({}, [defaults.scale, this.defaults[type]]) : {};\n\t},\n\tupdateScaleDefaults: function(type, additions) {\n\t\tvar me = this;\n\t\tif (me.defaults.hasOwnProperty(type)) {\n\t\t\tme.defaults[type] = helpers.extend(me.defaults[type], additions);\n\t\t}\n\t},\n\taddScalesToLayout: function(chart) {\n\t\t// Adds each scale to the chart.boxes array to be sized accordingly\n\t\thelpers.each(chart.scales, function(scale) {\n\t\t\t// Set ILayoutItem parameters for backwards compatibility\n\t\t\tscale.fullWidth = scale.options.fullWidth;\n\t\t\tscale.position = scale.options.position;\n\t\t\tscale.weight = scale.options.weight;\n\t\t\tlayouts.addBox(chart, scale);\n\t\t});\n\t}\n};\n\n},{\"26\":26,\"31\":31,\"46\":46}],35:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(46);\n\n/**\n * Namespace to hold static tick generation functions\n * @namespace Chart.Ticks\n */\nmodule.exports = {\n\t/**\n\t * Namespace to hold formatters for different types of ticks\n\t * @namespace Chart.Ticks.formatters\n\t */\n\tformatters: {\n\t\t/**\n\t\t * Formatter for value labels\n\t\t * @method Chart.Ticks.formatters.values\n\t\t * @param value the value to display\n\t\t * @return {String|Array} the label to display\n\t\t */\n\t\tvalues: function(value) {\n\t\t\treturn helpers.isArray(value) ? value : '' + value;\n\t\t},\n\n\t\t/**\n\t\t * Formatter for linear numeric ticks\n\t\t * @method Chart.Ticks.formatters.linear\n\t\t * @param tickValue {Number} the value to be formatted\n\t\t * @param index {Number} the position of the tickValue parameter in the ticks array\n\t\t * @param ticks {Array} the list of ticks being converted\n\t\t * @return {String} string representation of the tickValue parameter\n\t\t */\n\t\tlinear: function(tickValue, index, ticks) {\n\t\t\t// If we have lots of ticks, don't use the ones\n\t\t\tvar delta = ticks.length > 3 ? ticks[2] - ticks[1] : ticks[1] - ticks[0];\n\n\t\t\t// If we have a number like 2.5 as the delta, figure out how many decimal places we need\n\t\t\tif (Math.abs(delta) > 1) {\n\t\t\t\tif (tickValue !== Math.floor(tickValue)) {\n\t\t\t\t\t// not an integer\n\t\t\t\t\tdelta = tickValue - Math.floor(tickValue);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar logDelta = helpers.log10(Math.abs(delta));\n\t\t\tvar tickString = '';\n\n\t\t\tif (tickValue !== 0) {\n\t\t\t\tvar maxTick = Math.max(Math.abs(ticks[0]), Math.abs(ticks[ticks.length - 1]));\n\t\t\t\tif (maxTick < 1e-4) { // all ticks are small numbers; use scientific notation\n\t\t\t\t\tvar logTick = helpers.log10(Math.abs(tickValue));\n\t\t\t\t\ttickString = tickValue.toExponential(Math.floor(logTick) - Math.floor(logDelta));\n\t\t\t\t} else {\n\t\t\t\t\tvar numDecimal = -1 * Math.floor(logDelta);\n\t\t\t\t\tnumDecimal = Math.max(Math.min(numDecimal, 20), 0); // toFixed has a max of 20 decimal places\n\t\t\t\t\ttickString = tickValue.toFixed(numDecimal);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttickString = '0'; // never show decimal places for 0\n\t\t\t}\n\n\t\t\treturn tickString;\n\t\t},\n\n\t\tlogarithmic: function(tickValue, index, ticks) {\n\t\t\tvar remain = tickValue / (Math.pow(10, Math.floor(helpers.log10(tickValue))));\n\n\t\t\tif (tickValue === 0) {\n\t\t\t\treturn '0';\n\t\t\t} else if (remain === 1 || remain === 2 || remain === 5 || index === 0 || index === ticks.length - 1) {\n\t\t\t\treturn tickValue.toExponential();\n\t\t\t}\n\t\t\treturn '';\n\t\t}\n\t}\n};\n\n},{\"46\":46}],36:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar Element = require(27);\nvar helpers = require(46);\n\ndefaults._set('global', {\n\ttooltips: {\n\t\tenabled: true,\n\t\tcustom: null,\n\t\tmode: 'nearest',\n\t\tposition: 'average',\n\t\tintersect: true,\n\t\tbackgroundColor: 'rgba(0,0,0,0.8)',\n\t\ttitleFontStyle: 'bold',\n\t\ttitleSpacing: 2,\n\t\ttitleMarginBottom: 6,\n\t\ttitleFontColor: '#fff',\n\t\ttitleAlign: 'left',\n\t\tbodySpacing: 2,\n\t\tbodyFontColor: '#fff',\n\t\tbodyAlign: 'left',\n\t\tfooterFontStyle: 'bold',\n\t\tfooterSpacing: 2,\n\t\tfooterMarginTop: 6,\n\t\tfooterFontColor: '#fff',\n\t\tfooterAlign: 'left',\n\t\tyPadding: 6,\n\t\txPadding: 6,\n\t\tcaretPadding: 2,\n\t\tcaretSize: 5,\n\t\tcornerRadius: 6,\n\t\tmultiKeyBackground: '#fff',\n\t\tdisplayColors: true,\n\t\tborderColor: 'rgba(0,0,0,0)',\n\t\tborderWidth: 0,\n\t\tcallbacks: {\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeTitle: helpers.noop,\n\t\t\ttitle: function(tooltipItems, data) {\n\t\t\t\t// Pick first xLabel for now\n\t\t\t\tvar title = '';\n\t\t\t\tvar labels = data.labels;\n\t\t\t\tvar labelCount = labels ? labels.length : 0;\n\n\t\t\t\tif (tooltipItems.length > 0) {\n\t\t\t\t\tvar item = tooltipItems[0];\n\n\t\t\t\t\tif (item.xLabel) {\n\t\t\t\t\t\ttitle = item.xLabel;\n\t\t\t\t\t} else if (labelCount > 0 && item.index < labelCount) {\n\t\t\t\t\t\ttitle = labels[item.index];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn title;\n\t\t\t},\n\t\t\tafterTitle: helpers.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeBody: helpers.noop,\n\n\t\t\t// Args are: (tooltipItem, data)\n\t\t\tbeforeLabel: helpers.noop,\n\t\t\tlabel: function(tooltipItem, data) {\n\t\t\t\tvar label = data.datasets[tooltipItem.datasetIndex].label || '';\n\n\t\t\t\tif (label) {\n\t\t\t\t\tlabel += ': ';\n\t\t\t\t}\n\t\t\t\tlabel += tooltipItem.yLabel;\n\t\t\t\treturn label;\n\t\t\t},\n\t\t\tlabelColor: function(tooltipItem, chart) {\n\t\t\t\tvar meta = chart.getDatasetMeta(tooltipItem.datasetIndex);\n\t\t\t\tvar activeElement = meta.data[tooltipItem.index];\n\t\t\t\tvar view = activeElement._view;\n\t\t\t\treturn {\n\t\t\t\t\tborderColor: view.borderColor,\n\t\t\t\t\tbackgroundColor: view.backgroundColor\n\t\t\t\t};\n\t\t\t},\n\t\t\tlabelTextColor: function() {\n\t\t\t\treturn this._options.bodyFontColor;\n\t\t\t},\n\t\t\tafterLabel: helpers.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tafterBody: helpers.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeFooter: helpers.noop,\n\t\t\tfooter: helpers.noop,\n\t\t\tafterFooter: helpers.noop\n\t\t}\n\t}\n});\n\nvar positioners = {\n\t/**\n\t * Average mode places the tooltip at the average position of the elements shown\n\t * @function Chart.Tooltip.positioners.average\n\t * @param elements {ChartElement[]} the elements being displayed in the tooltip\n\t * @returns {Point} tooltip position\n\t */\n\taverage: function(elements) {\n\t\tif (!elements.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar i, len;\n\t\tvar x = 0;\n\t\tvar y = 0;\n\t\tvar count = 0;\n\n\t\tfor (i = 0, len = elements.length; i < len; ++i) {\n\t\t\tvar el = elements[i];\n\t\t\tif (el && el.hasValue()) {\n\t\t\t\tvar pos = el.tooltipPosition();\n\t\t\t\tx += pos.x;\n\t\t\t\ty += pos.y;\n\t\t\t\t++count;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tx: Math.round(x / count),\n\t\t\ty: Math.round(y / count)\n\t\t};\n\t},\n\n\t/**\n\t * Gets the tooltip position nearest of the item nearest to the event position\n\t * @function Chart.Tooltip.positioners.nearest\n\t * @param elements {Chart.Element[]} the tooltip elements\n\t * @param eventPosition {Point} the position of the event in canvas coordinates\n\t * @returns {Point} the tooltip position\n\t */\n\tnearest: function(elements, eventPosition) {\n\t\tvar x = eventPosition.x;\n\t\tvar y = eventPosition.y;\n\t\tvar minDistance = Number.POSITIVE_INFINITY;\n\t\tvar i, len, nearestElement;\n\n\t\tfor (i = 0, len = elements.length; i < len; ++i) {\n\t\t\tvar el = elements[i];\n\t\t\tif (el && el.hasValue()) {\n\t\t\t\tvar center = el.getCenterPoint();\n\t\t\t\tvar d = helpers.distanceBetweenPoints(eventPosition, center);\n\n\t\t\t\tif (d < minDistance) {\n\t\t\t\t\tminDistance = d;\n\t\t\t\t\tnearestElement = el;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (nearestElement) {\n\t\t\tvar tp = nearestElement.tooltipPosition();\n\t\t\tx = tp.x;\n\t\t\ty = tp.y;\n\t\t}\n\n\t\treturn {\n\t\t\tx: x,\n\t\t\ty: y\n\t\t};\n\t}\n};\n\n/**\n * Helper method to merge the opacity into a color\n */\nfunction mergeOpacity(colorString, opacity) {\n\tvar color = helpers.color(colorString);\n\treturn color.alpha(opacity * color.alpha()).rgbaString();\n}\n\n// Helper to push or concat based on if the 2nd parameter is an array or not\nfunction pushOrConcat(base, toPush) {\n\tif (toPush) {\n\t\tif (helpers.isArray(toPush)) {\n\t\t\t// base = base.concat(toPush);\n\t\t\tArray.prototype.push.apply(base, toPush);\n\t\t} else {\n\t\t\tbase.push(toPush);\n\t\t}\n\t}\n\n\treturn base;\n}\n\n/**\n * Returns array of strings split by newline\n * @param {String} value - The value to split by newline.\n * @returns {Array} value if newline present - Returned from String split() method\n * @function\n */\nfunction splitNewlines(str) {\n\tif ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n\t\treturn str.split('\\n');\n\t}\n\treturn str;\n}\n\n\n// Private helper to create a tooltip item model\n// @param element : the chart element (point, arc, bar) to create the tooltip item for\n// @return : new tooltip item\nfunction createTooltipItem(element) {\n\tvar xScale = element._xScale;\n\tvar yScale = element._yScale || element._scale; // handle radar || polarArea charts\n\tvar index = element._index;\n\tvar datasetIndex = element._datasetIndex;\n\n\treturn {\n\t\txLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '',\n\t\tyLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '',\n\t\tindex: index,\n\t\tdatasetIndex: datasetIndex,\n\t\tx: element._model.x,\n\t\ty: element._model.y\n\t};\n}\n\n/**\n * Helper to get the reset model for the tooltip\n * @param tooltipOpts {Object} the tooltip options\n */\nfunction getBaseModel(tooltipOpts) {\n\tvar globalDefaults = defaults.global;\n\tvar valueOrDefault = helpers.valueOrDefault;\n\n\treturn {\n\t\t// Positioning\n\t\txPadding: tooltipOpts.xPadding,\n\t\tyPadding: tooltipOpts.yPadding,\n\t\txAlign: tooltipOpts.xAlign,\n\t\tyAlign: tooltipOpts.yAlign,\n\n\t\t// Body\n\t\tbodyFontColor: tooltipOpts.bodyFontColor,\n\t\t_bodyFontFamily: valueOrDefault(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily),\n\t\t_bodyFontStyle: valueOrDefault(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle),\n\t\t_bodyAlign: tooltipOpts.bodyAlign,\n\t\tbodyFontSize: valueOrDefault(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize),\n\t\tbodySpacing: tooltipOpts.bodySpacing,\n\n\t\t// Title\n\t\ttitleFontColor: tooltipOpts.titleFontColor,\n\t\t_titleFontFamily: valueOrDefault(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily),\n\t\t_titleFontStyle: valueOrDefault(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle),\n\t\ttitleFontSize: valueOrDefault(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize),\n\t\t_titleAlign: tooltipOpts.titleAlign,\n\t\ttitleSpacing: tooltipOpts.titleSpacing,\n\t\ttitleMarginBottom: tooltipOpts.titleMarginBottom,\n\n\t\t// Footer\n\t\tfooterFontColor: tooltipOpts.footerFontColor,\n\t\t_footerFontFamily: valueOrDefault(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily),\n\t\t_footerFontStyle: valueOrDefault(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle),\n\t\tfooterFontSize: valueOrDefault(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize),\n\t\t_footerAlign: tooltipOpts.footerAlign,\n\t\tfooterSpacing: tooltipOpts.footerSpacing,\n\t\tfooterMarginTop: tooltipOpts.footerMarginTop,\n\n\t\t// Appearance\n\t\tcaretSize: tooltipOpts.caretSize,\n\t\tcornerRadius: tooltipOpts.cornerRadius,\n\t\tbackgroundColor: tooltipOpts.backgroundColor,\n\t\topacity: 0,\n\t\tlegendColorBackground: tooltipOpts.multiKeyBackground,\n\t\tdisplayColors: tooltipOpts.displayColors,\n\t\tborderColor: tooltipOpts.borderColor,\n\t\tborderWidth: tooltipOpts.borderWidth\n\t};\n}\n\n/**\n * Get the size of the tooltip\n */\nfunction getTooltipSize(tooltip, model) {\n\tvar ctx = tooltip._chart.ctx;\n\n\tvar height = model.yPadding * 2; // Tooltip Padding\n\tvar width = 0;\n\n\t// Count of all lines in the body\n\tvar body = model.body;\n\tvar combinedBodyLength = body.reduce(function(count, bodyItem) {\n\t\treturn count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length;\n\t}, 0);\n\tcombinedBodyLength += model.beforeBody.length + model.afterBody.length;\n\n\tvar titleLineCount = model.title.length;\n\tvar footerLineCount = model.footer.length;\n\tvar titleFontSize = model.titleFontSize;\n\tvar bodyFontSize = model.bodyFontSize;\n\tvar footerFontSize = model.footerFontSize;\n\n\theight += titleLineCount * titleFontSize; // Title Lines\n\theight += titleLineCount ? (titleLineCount - 1) * model.titleSpacing : 0; // Title Line Spacing\n\theight += titleLineCount ? model.titleMarginBottom : 0; // Title's bottom Margin\n\theight += combinedBodyLength * bodyFontSize; // Body Lines\n\theight += combinedBodyLength ? (combinedBodyLength - 1) * model.bodySpacing : 0; // Body Line Spacing\n\theight += footerLineCount ? model.footerMarginTop : 0; // Footer Margin\n\theight += footerLineCount * (footerFontSize); // Footer Lines\n\theight += footerLineCount ? (footerLineCount - 1) * model.footerSpacing : 0; // Footer Line Spacing\n\n\t// Title width\n\tvar widthPadding = 0;\n\tvar maxLineWidth = function(line) {\n\t\twidth = Math.max(width, ctx.measureText(line).width + widthPadding);\n\t};\n\n\tctx.font = helpers.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily);\n\thelpers.each(model.title, maxLineWidth);\n\n\t// Body width\n\tctx.font = helpers.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily);\n\thelpers.each(model.beforeBody.concat(model.afterBody), maxLineWidth);\n\n\t// Body lines may include some extra width due to the color box\n\twidthPadding = model.displayColors ? (bodyFontSize + 2) : 0;\n\thelpers.each(body, function(bodyItem) {\n\t\thelpers.each(bodyItem.before, maxLineWidth);\n\t\thelpers.each(bodyItem.lines, maxLineWidth);\n\t\thelpers.each(bodyItem.after, maxLineWidth);\n\t});\n\n\t// Reset back to 0\n\twidthPadding = 0;\n\n\t// Footer width\n\tctx.font = helpers.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily);\n\thelpers.each(model.footer, maxLineWidth);\n\n\t// Add padding\n\twidth += 2 * model.xPadding;\n\n\treturn {\n\t\twidth: width,\n\t\theight: height\n\t};\n}\n\n/**\n * Helper to get the alignment of a tooltip given the size\n */\nfunction determineAlignment(tooltip, size) {\n\tvar model = tooltip._model;\n\tvar chart = tooltip._chart;\n\tvar chartArea = tooltip._chart.chartArea;\n\tvar xAlign = 'center';\n\tvar yAlign = 'center';\n\n\tif (model.y < size.height) {\n\t\tyAlign = 'top';\n\t} else if (model.y > (chart.height - size.height)) {\n\t\tyAlign = 'bottom';\n\t}\n\n\tvar lf, rf; // functions to determine left, right alignment\n\tvar olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart\n\tvar yf; // function to get the y alignment if the tooltip goes outside of the left or right edges\n\tvar midX = (chartArea.left + chartArea.right) / 2;\n\tvar midY = (chartArea.top + chartArea.bottom) / 2;\n\n\tif (yAlign === 'center') {\n\t\tlf = function(x) {\n\t\t\treturn x <= midX;\n\t\t};\n\t\trf = function(x) {\n\t\t\treturn x > midX;\n\t\t};\n\t} else {\n\t\tlf = function(x) {\n\t\t\treturn x <= (size.width / 2);\n\t\t};\n\t\trf = function(x) {\n\t\t\treturn x >= (chart.width - (size.width / 2));\n\t\t};\n\t}\n\n\tolf = function(x) {\n\t\treturn x + size.width + model.caretSize + model.caretPadding > chart.width;\n\t};\n\torf = function(x) {\n\t\treturn x - size.width - model.caretSize - model.caretPadding < 0;\n\t};\n\tyf = function(y) {\n\t\treturn y <= midY ? 'top' : 'bottom';\n\t};\n\n\tif (lf(model.x)) {\n\t\txAlign = 'left';\n\n\t\t// Is tooltip too wide and goes over the right side of the chart.?\n\t\tif (olf(model.x)) {\n\t\t\txAlign = 'center';\n\t\t\tyAlign = yf(model.y);\n\t\t}\n\t} else if (rf(model.x)) {\n\t\txAlign = 'right';\n\n\t\t// Is tooltip too wide and goes outside left edge of canvas?\n\t\tif (orf(model.x)) {\n\t\t\txAlign = 'center';\n\t\t\tyAlign = yf(model.y);\n\t\t}\n\t}\n\n\tvar opts = tooltip._options;\n\treturn {\n\t\txAlign: opts.xAlign ? opts.xAlign : xAlign,\n\t\tyAlign: opts.yAlign ? opts.yAlign : yAlign\n\t};\n}\n\n/**\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\n */\nfunction getBackgroundPoint(vm, size, alignment, chart) {\n\t// Background Position\n\tvar x = vm.x;\n\tvar y = vm.y;\n\n\tvar caretSize = vm.caretSize;\n\tvar caretPadding = vm.caretPadding;\n\tvar cornerRadius = vm.cornerRadius;\n\tvar xAlign = alignment.xAlign;\n\tvar yAlign = alignment.yAlign;\n\tvar paddingAndSize = caretSize + caretPadding;\n\tvar radiusAndPadding = cornerRadius + caretPadding;\n\n\tif (xAlign === 'right') {\n\t\tx -= size.width;\n\t} else if (xAlign === 'center') {\n\t\tx -= (size.width / 2);\n\t\tif (x + size.width > chart.width) {\n\t\t\tx = chart.width - size.width;\n\t\t}\n\t\tif (x < 0) {\n\t\t\tx = 0;\n\t\t}\n\t}\n\n\tif (yAlign === 'top') {\n\t\ty += paddingAndSize;\n\t} else if (yAlign === 'bottom') {\n\t\ty -= size.height + paddingAndSize;\n\t} else {\n\t\ty -= (size.height / 2);\n\t}\n\n\tif (yAlign === 'center') {\n\t\tif (xAlign === 'left') {\n\t\t\tx += paddingAndSize;\n\t\t} else if (xAlign === 'right') {\n\t\t\tx -= paddingAndSize;\n\t\t}\n\t} else if (xAlign === 'left') {\n\t\tx -= radiusAndPadding;\n\t} else if (xAlign === 'right') {\n\t\tx += radiusAndPadding;\n\t}\n\n\treturn {\n\t\tx: x,\n\t\ty: y\n\t};\n}\n\n/**\n * Helper to build before and after body lines\n */\nfunction getBeforeAfterBodyLines(callback) {\n\treturn pushOrConcat([], splitNewlines(callback));\n}\n\nvar exports = module.exports = Element.extend({\n\tinitialize: function() {\n\t\tthis._model = getBaseModel(this._options);\n\t\tthis._lastActive = [];\n\t},\n\n\t// Get the title\n\t// Args are: (tooltipItem, data)\n\tgetTitle: function() {\n\t\tvar me = this;\n\t\tvar opts = me._options;\n\t\tvar callbacks = opts.callbacks;\n\n\t\tvar beforeTitle = callbacks.beforeTitle.apply(me, arguments);\n\t\tvar title = callbacks.title.apply(me, arguments);\n\t\tvar afterTitle = callbacks.afterTitle.apply(me, arguments);\n\n\t\tvar lines = [];\n\t\tlines = pushOrConcat(lines, splitNewlines(beforeTitle));\n\t\tlines = pushOrConcat(lines, splitNewlines(title));\n\t\tlines = pushOrConcat(lines, splitNewlines(afterTitle));\n\n\t\treturn lines;\n\t},\n\n\t// Args are: (tooltipItem, data)\n\tgetBeforeBody: function() {\n\t\treturn getBeforeAfterBodyLines(this._options.callbacks.beforeBody.apply(this, arguments));\n\t},\n\n\t// Args are: (tooltipItem, data)\n\tgetBody: function(tooltipItems, data) {\n\t\tvar me = this;\n\t\tvar callbacks = me._options.callbacks;\n\t\tvar bodyItems = [];\n\n\t\thelpers.each(tooltipItems, function(tooltipItem) {\n\t\t\tvar bodyItem = {\n\t\t\t\tbefore: [],\n\t\t\t\tlines: [],\n\t\t\t\tafter: []\n\t\t\t};\n\t\t\tpushOrConcat(bodyItem.before, splitNewlines(callbacks.beforeLabel.call(me, tooltipItem, data)));\n\t\t\tpushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data));\n\t\t\tpushOrConcat(bodyItem.after, splitNewlines(callbacks.afterLabel.call(me, tooltipItem, data)));\n\n\t\t\tbodyItems.push(bodyItem);\n\t\t});\n\n\t\treturn bodyItems;\n\t},\n\n\t// Args are: (tooltipItem, data)\n\tgetAfterBody: function() {\n\t\treturn getBeforeAfterBodyLines(this._options.callbacks.afterBody.apply(this, arguments));\n\t},\n\n\t// Get the footer and beforeFooter and afterFooter lines\n\t// Args are: (tooltipItem, data)\n\tgetFooter: function() {\n\t\tvar me = this;\n\t\tvar callbacks = me._options.callbacks;\n\n\t\tvar beforeFooter = callbacks.beforeFooter.apply(me, arguments);\n\t\tvar footer = callbacks.footer.apply(me, arguments);\n\t\tvar afterFooter = callbacks.afterFooter.apply(me, arguments);\n\n\t\tvar lines = [];\n\t\tlines = pushOrConcat(lines, splitNewlines(beforeFooter));\n\t\tlines = pushOrConcat(lines, splitNewlines(footer));\n\t\tlines = pushOrConcat(lines, splitNewlines(afterFooter));\n\n\t\treturn lines;\n\t},\n\n\tupdate: function(changed) {\n\t\tvar me = this;\n\t\tvar opts = me._options;\n\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\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\n\t\t// which breaks any animations.\n\t\tvar existingModel = me._model;\n\t\tvar model = me._model = getBaseModel(opts);\n\t\tvar active = me._active;\n\n\t\tvar data = me._data;\n\n\t\t// In the case where active.length === 0 we need to keep these at existing values for good animations\n\t\tvar alignment = {\n\t\t\txAlign: existingModel.xAlign,\n\t\t\tyAlign: existingModel.yAlign\n\t\t};\n\t\tvar backgroundPoint = {\n\t\t\tx: existingModel.x,\n\t\t\ty: existingModel.y\n\t\t};\n\t\tvar tooltipSize = {\n\t\t\twidth: existingModel.width,\n\t\t\theight: existingModel.height\n\t\t};\n\t\tvar tooltipPosition = {\n\t\t\tx: existingModel.caretX,\n\t\t\ty: existingModel.caretY\n\t\t};\n\n\t\tvar i, len;\n\n\t\tif (active.length) {\n\t\t\tmodel.opacity = 1;\n\n\t\t\tvar labelColors = [];\n\t\t\tvar labelTextColors = [];\n\t\t\ttooltipPosition = positioners[opts.position].call(me, active, me._eventPosition);\n\n\t\t\tvar tooltipItems = [];\n\t\t\tfor (i = 0, len = active.length; i < len; ++i) {\n\t\t\t\ttooltipItems.push(createTooltipItem(active[i]));\n\t\t\t}\n\n\t\t\t// If the user provided a filter function, use it to modify the tooltip items\n\t\t\tif (opts.filter) {\n\t\t\t\ttooltipItems = tooltipItems.filter(function(a) {\n\t\t\t\t\treturn opts.filter(a, data);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// If the user provided a sorting function, use it to modify the tooltip items\n\t\t\tif (opts.itemSort) {\n\t\t\t\ttooltipItems = tooltipItems.sort(function(a, b) {\n\t\t\t\t\treturn opts.itemSort(a, b, data);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Determine colors for boxes\n\t\t\thelpers.each(tooltipItems, function(tooltipItem) {\n\t\t\t\tlabelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, me._chart));\n\t\t\t\tlabelTextColors.push(opts.callbacks.labelTextColor.call(me, tooltipItem, me._chart));\n\t\t\t});\n\n\n\t\t\t// Build the Text Lines\n\t\t\tmodel.title = me.getTitle(tooltipItems, data);\n\t\t\tmodel.beforeBody = me.getBeforeBody(tooltipItems, data);\n\t\t\tmodel.body = me.getBody(tooltipItems, data);\n\t\t\tmodel.afterBody = me.getAfterBody(tooltipItems, data);\n\t\t\tmodel.footer = me.getFooter(tooltipItems, data);\n\n\t\t\t// Initial positioning and colors\n\t\t\tmodel.x = Math.round(tooltipPosition.x);\n\t\t\tmodel.y = Math.round(tooltipPosition.y);\n\t\t\tmodel.caretPadding = opts.caretPadding;\n\t\t\tmodel.labelColors = labelColors;\n\t\t\tmodel.labelTextColors = labelTextColors;\n\n\t\t\t// data points\n\t\t\tmodel.dataPoints = tooltipItems;\n\n\t\t\t// We need to determine alignment of the tooltip\n\t\t\ttooltipSize = getTooltipSize(this, model);\n\t\t\talignment = determineAlignment(this, tooltipSize);\n\t\t\t// Final Size and Position\n\t\t\tbackgroundPoint = getBackgroundPoint(model, tooltipSize, alignment, me._chart);\n\t\t} else {\n\t\t\tmodel.opacity = 0;\n\t\t}\n\n\t\tmodel.xAlign = alignment.xAlign;\n\t\tmodel.yAlign = alignment.yAlign;\n\t\tmodel.x = backgroundPoint.x;\n\t\tmodel.y = backgroundPoint.y;\n\t\tmodel.width = tooltipSize.width;\n\t\tmodel.height = tooltipSize.height;\n\n\t\t// Point where the caret on the tooltip points to\n\t\tmodel.caretX = tooltipPosition.x;\n\t\tmodel.caretY = tooltipPosition.y;\n\n\t\tme._model = model;\n\n\t\tif (changed && opts.custom) {\n\t\t\topts.custom.call(me, model);\n\t\t}\n\n\t\treturn me;\n\t},\n\n\tdrawCaret: function(tooltipPoint, size) {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar caretPosition = this.getCaretPosition(tooltipPoint, size, vm);\n\n\t\tctx.lineTo(caretPosition.x1, caretPosition.y1);\n\t\tctx.lineTo(caretPosition.x2, caretPosition.y2);\n\t\tctx.lineTo(caretPosition.x3, caretPosition.y3);\n\t},\n\tgetCaretPosition: function(tooltipPoint, size, vm) {\n\t\tvar x1, x2, x3, y1, y2, y3;\n\t\tvar caretSize = vm.caretSize;\n\t\tvar cornerRadius = vm.cornerRadius;\n\t\tvar xAlign = vm.xAlign;\n\t\tvar yAlign = vm.yAlign;\n\t\tvar ptX = tooltipPoint.x;\n\t\tvar ptY = tooltipPoint.y;\n\t\tvar width = size.width;\n\t\tvar height = size.height;\n\n\t\tif (yAlign === 'center') {\n\t\t\ty2 = ptY + (height / 2);\n\n\t\t\tif (xAlign === 'left') {\n\t\t\t\tx1 = ptX;\n\t\t\t\tx2 = x1 - caretSize;\n\t\t\t\tx3 = x1;\n\n\t\t\t\ty1 = y2 + caretSize;\n\t\t\t\ty3 = y2 - caretSize;\n\t\t\t} else {\n\t\t\t\tx1 = ptX + width;\n\t\t\t\tx2 = x1 + caretSize;\n\t\t\t\tx3 = x1;\n\n\t\t\t\ty1 = y2 - caretSize;\n\t\t\t\ty3 = y2 + caretSize;\n\t\t\t}\n\t\t} else {\n\t\t\tif (xAlign === 'left') {\n\t\t\t\tx2 = ptX + cornerRadius + (caretSize);\n\t\t\t\tx1 = x2 - caretSize;\n\t\t\t\tx3 = x2 + caretSize;\n\t\t\t} else if (xAlign === 'right') {\n\t\t\t\tx2 = ptX + width - cornerRadius - caretSize;\n\t\t\t\tx1 = x2 - caretSize;\n\t\t\t\tx3 = x2 + caretSize;\n\t\t\t} else {\n\t\t\t\tx2 = vm.caretX;\n\t\t\t\tx1 = x2 - caretSize;\n\t\t\t\tx3 = x2 + caretSize;\n\t\t\t}\n\t\t\tif (yAlign === 'top') {\n\t\t\t\ty1 = ptY;\n\t\t\t\ty2 = y1 - caretSize;\n\t\t\t\ty3 = y1;\n\t\t\t} else {\n\t\t\t\ty1 = ptY + height;\n\t\t\t\ty2 = y1 + caretSize;\n\t\t\t\ty3 = y1;\n\t\t\t\t// invert drawing order\n\t\t\t\tvar tmp = x3;\n\t\t\t\tx3 = x1;\n\t\t\t\tx1 = tmp;\n\t\t\t}\n\t\t}\n\t\treturn {x1: x1, x2: x2, x3: x3, y1: y1, y2: y2, y3: y3};\n\t},\n\n\tdrawTitle: function(pt, vm, ctx, opacity) {\n\t\tvar title = vm.title;\n\n\t\tif (title.length) {\n\t\t\tctx.textAlign = vm._titleAlign;\n\t\t\tctx.textBaseline = 'top';\n\n\t\t\tvar titleFontSize = vm.titleFontSize;\n\t\t\tvar titleSpacing = vm.titleSpacing;\n\n\t\t\tctx.fillStyle = mergeOpacity(vm.titleFontColor, opacity);\n\t\t\tctx.font = helpers.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily);\n\n\t\t\tvar i, len;\n\t\t\tfor (i = 0, len = title.length; i < len; ++i) {\n\t\t\t\tctx.fillText(title[i], pt.x, pt.y);\n\t\t\t\tpt.y += titleFontSize + titleSpacing; // Line Height and spacing\n\n\t\t\t\tif (i + 1 === title.length) {\n\t\t\t\t\tpt.y += vm.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tdrawBody: function(pt, vm, ctx, opacity) {\n\t\tvar bodyFontSize = vm.bodyFontSize;\n\t\tvar bodySpacing = vm.bodySpacing;\n\t\tvar body = vm.body;\n\n\t\tctx.textAlign = vm._bodyAlign;\n\t\tctx.textBaseline = 'top';\n\t\tctx.font = helpers.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily);\n\n\t\t// Before Body\n\t\tvar xLinePadding = 0;\n\t\tvar fillLineOfText = function(line) {\n\t\t\tctx.fillText(line, pt.x + xLinePadding, pt.y);\n\t\t\tpt.y += bodyFontSize + bodySpacing;\n\t\t};\n\n\t\t// Before body lines\n\t\tctx.fillStyle = mergeOpacity(vm.bodyFontColor, opacity);\n\t\thelpers.each(vm.beforeBody, fillLineOfText);\n\n\t\tvar drawColorBoxes = vm.displayColors;\n\t\txLinePadding = drawColorBoxes ? (bodyFontSize + 2) : 0;\n\n\t\t// Draw body lines now\n\t\thelpers.each(body, function(bodyItem, i) {\n\t\t\tvar textColor = mergeOpacity(vm.labelTextColors[i], opacity);\n\t\t\tctx.fillStyle = textColor;\n\t\t\thelpers.each(bodyItem.before, fillLineOfText);\n\n\t\t\thelpers.each(bodyItem.lines, function(line) {\n\t\t\t\t// Draw Legend-like boxes if needed\n\t\t\t\tif (drawColorBoxes) {\n\t\t\t\t\t// Fill a white rect so that colours merge nicely if the opacity is < 1\n\t\t\t\t\tctx.fillStyle = mergeOpacity(vm.legendColorBackground, opacity);\n\t\t\t\t\tctx.fillRect(pt.x, pt.y, bodyFontSize, bodyFontSize);\n\n\t\t\t\t\t// Border\n\t\t\t\t\tctx.lineWidth = 1;\n\t\t\t\t\tctx.strokeStyle = mergeOpacity(vm.labelColors[i].borderColor, opacity);\n\t\t\t\t\tctx.strokeRect(pt.x, pt.y, bodyFontSize, bodyFontSize);\n\n\t\t\t\t\t// Inner square\n\t\t\t\t\tctx.fillStyle = mergeOpacity(vm.labelColors[i].backgroundColor, opacity);\n\t\t\t\t\tctx.fillRect(pt.x + 1, pt.y + 1, bodyFontSize - 2, bodyFontSize - 2);\n\t\t\t\t\tctx.fillStyle = textColor;\n\t\t\t\t}\n\n\t\t\t\tfillLineOfText(line);\n\t\t\t});\n\n\t\t\thelpers.each(bodyItem.after, fillLineOfText);\n\t\t});\n\n\t\t// Reset back to 0 for after body\n\t\txLinePadding = 0;\n\n\t\t// After body lines\n\t\thelpers.each(vm.afterBody, fillLineOfText);\n\t\tpt.y -= bodySpacing; // Remove last body spacing\n\t},\n\n\tdrawFooter: function(pt, vm, ctx, opacity) {\n\t\tvar footer = vm.footer;\n\n\t\tif (footer.length) {\n\t\t\tpt.y += vm.footerMarginTop;\n\n\t\t\tctx.textAlign = vm._footerAlign;\n\t\t\tctx.textBaseline = 'top';\n\n\t\t\tctx.fillStyle = mergeOpacity(vm.footerFontColor, opacity);\n\t\t\tctx.font = helpers.fontString(vm.footerFontSize, vm._footerFontStyle, vm._footerFontFamily);\n\n\t\t\thelpers.each(footer, function(line) {\n\t\t\t\tctx.fillText(line, pt.x, pt.y);\n\t\t\t\tpt.y += vm.footerFontSize + vm.footerSpacing;\n\t\t\t});\n\t\t}\n\t},\n\n\tdrawBackground: function(pt, vm, ctx, tooltipSize, opacity) {\n\t\tctx.fillStyle = mergeOpacity(vm.backgroundColor, opacity);\n\t\tctx.strokeStyle = mergeOpacity(vm.borderColor, opacity);\n\t\tctx.lineWidth = vm.borderWidth;\n\t\tvar xAlign = vm.xAlign;\n\t\tvar yAlign = vm.yAlign;\n\t\tvar x = pt.x;\n\t\tvar y = pt.y;\n\t\tvar width = tooltipSize.width;\n\t\tvar height = tooltipSize.height;\n\t\tvar radius = vm.cornerRadius;\n\n\t\tctx.beginPath();\n\t\tctx.moveTo(x + radius, y);\n\t\tif (yAlign === 'top') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x + width - radius, y);\n\t\tctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n\t\tif (yAlign === 'center' && xAlign === 'right') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x + width, y + height - radius);\n\t\tctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\n\t\tif (yAlign === 'bottom') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x + radius, y + height);\n\t\tctx.quadraticCurveTo(x, y + height, x, y + height - radius);\n\t\tif (yAlign === 'center' && xAlign === 'left') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x, y + radius);\n\t\tctx.quadraticCurveTo(x, y, x + radius, y);\n\t\tctx.closePath();\n\n\t\tctx.fill();\n\n\t\tif (vm.borderWidth > 0) {\n\t\t\tctx.stroke();\n\t\t}\n\t},\n\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\n\t\tif (vm.opacity === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar tooltipSize = {\n\t\t\twidth: vm.width,\n\t\t\theight: vm.height\n\t\t};\n\t\tvar pt = {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y\n\t\t};\n\n\t\t// IE11/Edge does not like very small opacities, so snap to 0\n\t\tvar opacity = Math.abs(vm.opacity < 1e-3) ? 0 : vm.opacity;\n\n\t\t// Truthy/falsey value for empty tooltip\n\t\tvar hasTooltipContent = vm.title.length || vm.beforeBody.length || vm.body.length || vm.afterBody.length || vm.footer.length;\n\n\t\tif (this._options.enabled && hasTooltipContent) {\n\t\t\t// Draw Background\n\t\t\tthis.drawBackground(pt, vm, ctx, tooltipSize, opacity);\n\n\t\t\t// Draw Title, Body, and Footer\n\t\t\tpt.x += vm.xPadding;\n\t\t\tpt.y += vm.yPadding;\n\n\t\t\t// Titles\n\t\t\tthis.drawTitle(pt, vm, ctx, opacity);\n\n\t\t\t// Body\n\t\t\tthis.drawBody(pt, vm, ctx, opacity);\n\n\t\t\t// Footer\n\t\t\tthis.drawFooter(pt, vm, ctx, opacity);\n\t\t}\n\t},\n\n\t/**\n\t * Handle an event\n\t * @private\n\t * @param {IEvent} event - The event to handle\n\t * @returns {Boolean} true if the tooltip changed\n\t */\n\thandleEvent: function(e) {\n\t\tvar me = this;\n\t\tvar options = me._options;\n\t\tvar changed = false;\n\n\t\tme._lastActive = me._lastActive || [];\n\n\t\t// Find Active Elements for tooltips\n\t\tif (e.type === 'mouseout') {\n\t\t\tme._active = [];\n\t\t} else {\n\t\t\tme._active = me._chart.getElementsAtEventForMode(e, options.mode, options);\n\t\t}\n\n\t\t// Remember Last Actives\n\t\tchanged = !helpers.arrayEquals(me._active, me._lastActive);\n\n\t\t// Only handle target event on tooltip change\n\t\tif (changed) {\n\t\t\tme._lastActive = me._active;\n\n\t\t\tif (options.enabled || options.custom) {\n\t\t\t\tme._eventPosition = {\n\t\t\t\t\tx: e.x,\n\t\t\t\t\ty: e.y\n\t\t\t\t};\n\n\t\t\t\tme.update(true);\n\t\t\t\tme.pivot();\n\t\t\t}\n\t\t}\n\n\t\treturn changed;\n\t}\n});\n\n/**\n * @namespace Chart.Tooltip.positioners\n */\nexports.positioners = positioners;\n\n\n},{\"26\":26,\"27\":27,\"46\":46}],37:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar Element = require(27);\nvar helpers = require(46);\n\ndefaults._set('global', {\n\telements: {\n\t\tarc: {\n\t\t\tbackgroundColor: defaults.global.defaultColor,\n\t\t\tborderColor: '#fff',\n\t\t\tborderWidth: 2\n\t\t}\n\t}\n});\n\nmodule.exports = Element.extend({\n\tinLabelRange: function(mouseX) {\n\t\tvar vm = this._view;\n\n\t\tif (vm) {\n\t\t\treturn (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2));\n\t\t}\n\t\treturn false;\n\t},\n\n\tinRange: function(chartX, chartY) {\n\t\tvar vm = this._view;\n\n\t\tif (vm) {\n\t\t\tvar pointRelativePosition = helpers.getAngleFromPoint(vm, {x: chartX, y: chartY});\n\t\t\tvar\tangle = pointRelativePosition.angle;\n\t\t\tvar distance = pointRelativePosition.distance;\n\n\t\t\t// Sanitise angle range\n\t\t\tvar startAngle = vm.startAngle;\n\t\t\tvar endAngle = vm.endAngle;\n\t\t\twhile (endAngle < startAngle) {\n\t\t\t\tendAngle += 2.0 * Math.PI;\n\t\t\t}\n\t\t\twhile (angle > endAngle) {\n\t\t\t\tangle -= 2.0 * Math.PI;\n\t\t\t}\n\t\t\twhile (angle < startAngle) {\n\t\t\t\tangle += 2.0 * Math.PI;\n\t\t\t}\n\n\t\t\t// Check if within the range of the open/close angle\n\t\t\tvar betweenAngles = (angle >= startAngle && angle <= endAngle);\n\t\t\tvar withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius);\n\n\t\t\treturn (betweenAngles && withinRadius);\n\t\t}\n\t\treturn false;\n\t},\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\tvar halfAngle = (vm.startAngle + vm.endAngle) / 2;\n\t\tvar halfRadius = (vm.innerRadius + vm.outerRadius) / 2;\n\t\treturn {\n\t\t\tx: vm.x + Math.cos(halfAngle) * halfRadius,\n\t\t\ty: vm.y + Math.sin(halfAngle) * halfRadius\n\t\t};\n\t},\n\n\tgetArea: function() {\n\t\tvar vm = this._view;\n\t\treturn Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2));\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\tvar centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2);\n\t\tvar rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius;\n\n\t\treturn {\n\t\t\tx: vm.x + (Math.cos(centreAngle) * rangeFromCentre),\n\t\t\ty: vm.y + (Math.sin(centreAngle) * rangeFromCentre)\n\t\t};\n\t},\n\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar sA = vm.startAngle;\n\t\tvar eA = vm.endAngle;\n\n\t\tctx.beginPath();\n\n\t\tctx.arc(vm.x, vm.y, vm.outerRadius, sA, eA);\n\t\tctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true);\n\n\t\tctx.closePath();\n\t\tctx.strokeStyle = vm.borderColor;\n\t\tctx.lineWidth = vm.borderWidth;\n\n\t\tctx.fillStyle = vm.backgroundColor;\n\n\t\tctx.fill();\n\t\tctx.lineJoin = 'bevel';\n\n\t\tif (vm.borderWidth) {\n\t\t\tctx.stroke();\n\t\t}\n\t}\n});\n\n},{\"26\":26,\"27\":27,\"46\":46}],38:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar Element = require(27);\nvar helpers = require(46);\n\nvar globalDefaults = defaults.global;\n\ndefaults._set('global', {\n\telements: {\n\t\tline: {\n\t\t\ttension: 0.4,\n\t\t\tbackgroundColor: globalDefaults.defaultColor,\n\t\t\tborderWidth: 3,\n\t\t\tborderColor: globalDefaults.defaultColor,\n\t\t\tborderCapStyle: 'butt',\n\t\t\tborderDash: [],\n\t\t\tborderDashOffset: 0.0,\n\t\t\tborderJoinStyle: 'miter',\n\t\t\tcapBezierPoints: true,\n\t\t\tfill: true, // do we fill in the area between the line and its base axis\n\t\t}\n\t}\n});\n\nmodule.exports = Element.extend({\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar vm = me._view;\n\t\tvar ctx = me._chart.ctx;\n\t\tvar spanGaps = vm.spanGaps;\n\t\tvar points = me._children.slice(); // clone array\n\t\tvar globalOptionLineElements = globalDefaults.elements.line;\n\t\tvar lastDrawnIndex = -1;\n\t\tvar index, current, previous, currentVM;\n\n\t\t// If we are looping, adding the first point again\n\t\tif (me._loop && points.length) {\n\t\t\tpoints.push(points[0]);\n\t\t}\n\n\t\tctx.save();\n\n\t\t// Stroke Line Options\n\t\tctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle;\n\n\t\t// IE 9 and 10 do not support line dash\n\t\tif (ctx.setLineDash) {\n\t\t\tctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash);\n\t\t}\n\n\t\tctx.lineDashOffset = vm.borderDashOffset || globalOptionLineElements.borderDashOffset;\n\t\tctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle;\n\t\tctx.lineWidth = vm.borderWidth || globalOptionLineElements.borderWidth;\n\t\tctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor;\n\n\t\t// Stroke Line\n\t\tctx.beginPath();\n\t\tlastDrawnIndex = -1;\n\n\t\tfor (index = 0; index < points.length; ++index) {\n\t\t\tcurrent = points[index];\n\t\t\tprevious = helpers.previousItem(points, index);\n\t\t\tcurrentVM = current._view;\n\n\t\t\t// First point moves to it's starting position no matter what\n\t\t\tif (index === 0) {\n\t\t\t\tif (!currentVM.skip) {\n\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\n\t\t\t\t\tlastDrawnIndex = index;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tprevious = lastDrawnIndex === -1 ? previous : points[lastDrawnIndex];\n\n\t\t\t\tif (!currentVM.skip) {\n\t\t\t\t\tif ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) {\n\t\t\t\t\t\t// There was a gap and this is the first point after the gap\n\t\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Line to next point\n\t\t\t\t\t\thelpers.canvas.lineTo(ctx, previous._view, current._view);\n\t\t\t\t\t}\n\t\t\t\t\tlastDrawnIndex = index;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tctx.stroke();\n\t\tctx.restore();\n\t}\n});\n\n},{\"26\":26,\"27\":27,\"46\":46}],39:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar Element = require(27);\nvar helpers = require(46);\n\nvar defaultColor = defaults.global.defaultColor;\n\ndefaults._set('global', {\n\telements: {\n\t\tpoint: {\n\t\t\tradius: 3,\n\t\t\tpointStyle: 'circle',\n\t\t\tbackgroundColor: defaultColor,\n\t\t\tborderColor: defaultColor,\n\t\t\tborderWidth: 1,\n\t\t\t// Hover\n\t\t\thitRadius: 1,\n\t\t\thoverRadius: 4,\n\t\t\thoverBorderWidth: 1\n\t\t}\n\t}\n});\n\nfunction xRange(mouseX) {\n\tvar vm = this._view;\n\treturn vm ? (Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius) : false;\n}\n\nfunction yRange(mouseY) {\n\tvar vm = this._view;\n\treturn vm ? (Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius) : false;\n}\n\nmodule.exports = Element.extend({\n\tinRange: function(mouseX, mouseY) {\n\t\tvar vm = this._view;\n\t\treturn vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false;\n\t},\n\n\tinLabelRange: xRange,\n\tinXRange: xRange,\n\tinYRange: yRange,\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y\n\t\t};\n\t},\n\n\tgetArea: function() {\n\t\treturn Math.PI * Math.pow(this._view.radius, 2);\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y,\n\t\t\tpadding: vm.radius + vm.borderWidth\n\t\t};\n\t},\n\n\tdraw: function(chartArea) {\n\t\tvar vm = this._view;\n\t\tvar model = this._model;\n\t\tvar ctx = this._chart.ctx;\n\t\tvar pointStyle = vm.pointStyle;\n\t\tvar rotation = vm.rotation;\n\t\tvar radius = vm.radius;\n\t\tvar x = vm.x;\n\t\tvar y = vm.y;\n\t\tvar errMargin = 1.01; // 1.01 is margin for Accumulated error. (Especially Edge, IE.)\n\n\t\tif (vm.skip) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Clipping for Points.\n\t\tif (chartArea === undefined || (model.x >= chartArea.left && chartArea.right * errMargin >= model.x && model.y >= chartArea.top && chartArea.bottom * errMargin >= model.y)) {\n\t\t\tctx.strokeStyle = vm.borderColor || defaultColor;\n\t\t\tctx.lineWidth = helpers.valueOrDefault(vm.borderWidth, defaults.global.elements.point.borderWidth);\n\t\t\tctx.fillStyle = vm.backgroundColor || defaultColor;\n\t\t\thelpers.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation);\n\t\t}\n\t}\n});\n\n},{\"26\":26,\"27\":27,\"46\":46}],40:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar Element = require(27);\n\ndefaults._set('global', {\n\telements: {\n\t\trectangle: {\n\t\t\tbackgroundColor: defaults.global.defaultColor,\n\t\t\tborderColor: defaults.global.defaultColor,\n\t\t\tborderSkipped: 'bottom',\n\t\t\tborderWidth: 0\n\t\t}\n\t}\n});\n\nfunction isVertical(bar) {\n\treturn bar._view.width !== undefined;\n}\n\n/**\n * Helper function to get the bounds of the bar regardless of the orientation\n * @param bar {Chart.Element.Rectangle} the bar\n * @return {Bounds} bounds of the bar\n * @private\n */\nfunction getBarBounds(bar) {\n\tvar vm = bar._view;\n\tvar x1, x2, y1, y2;\n\n\tif (isVertical(bar)) {\n\t\t// vertical\n\t\tvar halfWidth = vm.width / 2;\n\t\tx1 = vm.x - halfWidth;\n\t\tx2 = vm.x + halfWidth;\n\t\ty1 = Math.min(vm.y, vm.base);\n\t\ty2 = Math.max(vm.y, vm.base);\n\t} else {\n\t\t// horizontal bar\n\t\tvar halfHeight = vm.height / 2;\n\t\tx1 = Math.min(vm.x, vm.base);\n\t\tx2 = Math.max(vm.x, vm.base);\n\t\ty1 = vm.y - halfHeight;\n\t\ty2 = vm.y + halfHeight;\n\t}\n\n\treturn {\n\t\tleft: x1,\n\t\ttop: y1,\n\t\tright: x2,\n\t\tbottom: y2\n\t};\n}\n\nmodule.exports = Element.extend({\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar left, right, top, bottom, signX, signY, borderSkipped;\n\t\tvar borderWidth = vm.borderWidth;\n\n\t\tif (!vm.horizontal) {\n\t\t\t// bar\n\t\t\tleft = vm.x - vm.width / 2;\n\t\t\tright = vm.x + vm.width / 2;\n\t\t\ttop = vm.y;\n\t\t\tbottom = vm.base;\n\t\t\tsignX = 1;\n\t\t\tsignY = bottom > top ? 1 : -1;\n\t\t\tborderSkipped = vm.borderSkipped || 'bottom';\n\t\t} else {\n\t\t\t// horizontal bar\n\t\t\tleft = vm.base;\n\t\t\tright = vm.x;\n\t\t\ttop = vm.y - vm.height / 2;\n\t\t\tbottom = vm.y + vm.height / 2;\n\t\t\tsignX = right > left ? 1 : -1;\n\t\t\tsignY = 1;\n\t\t\tborderSkipped = vm.borderSkipped || 'left';\n\t\t}\n\n\t\t// Canvas doesn't allow us to stroke inside the width so we can\n\t\t// adjust the sizes to fit if we're setting a stroke on the line\n\t\tif (borderWidth) {\n\t\t\t// borderWidth shold be less than bar width and bar height.\n\t\t\tvar barSize = Math.min(Math.abs(left - right), Math.abs(top - bottom));\n\t\t\tborderWidth = borderWidth > barSize ? barSize : borderWidth;\n\t\t\tvar halfStroke = borderWidth / 2;\n\t\t\t// Adjust borderWidth when bar top position is near vm.base(zero).\n\t\t\tvar borderLeft = left + (borderSkipped !== 'left' ? halfStroke * signX : 0);\n\t\t\tvar borderRight = right + (borderSkipped !== 'right' ? -halfStroke * signX : 0);\n\t\t\tvar borderTop = top + (borderSkipped !== 'top' ? halfStroke * signY : 0);\n\t\t\tvar borderBottom = bottom + (borderSkipped !== 'bottom' ? -halfStroke * signY : 0);\n\t\t\t// not become a vertical line?\n\t\t\tif (borderLeft !== borderRight) {\n\t\t\t\ttop = borderTop;\n\t\t\t\tbottom = borderBottom;\n\t\t\t}\n\t\t\t// not become a horizontal line?\n\t\t\tif (borderTop !== borderBottom) {\n\t\t\t\tleft = borderLeft;\n\t\t\t\tright = borderRight;\n\t\t\t}\n\t\t}\n\n\t\tctx.beginPath();\n\t\tctx.fillStyle = vm.backgroundColor;\n\t\tctx.strokeStyle = vm.borderColor;\n\t\tctx.lineWidth = borderWidth;\n\n\t\t// Corner points, from bottom-left to bottom-right clockwise\n\t\t// | 1 2 |\n\t\t// | 0 3 |\n\t\tvar corners = [\n\t\t\t[left, bottom],\n\t\t\t[left, top],\n\t\t\t[right, top],\n\t\t\t[right, bottom]\n\t\t];\n\n\t\t// Find first (starting) corner with fallback to 'bottom'\n\t\tvar borders = ['bottom', 'left', 'top', 'right'];\n\t\tvar startCorner = borders.indexOf(borderSkipped, 0);\n\t\tif (startCorner === -1) {\n\t\t\tstartCorner = 0;\n\t\t}\n\n\t\tfunction cornerAt(index) {\n\t\t\treturn corners[(startCorner + index) % 4];\n\t\t}\n\n\t\t// Draw rectangle from 'startCorner'\n\t\tvar corner = cornerAt(0);\n\t\tctx.moveTo(corner[0], corner[1]);\n\n\t\tfor (var i = 1; i < 4; i++) {\n\t\t\tcorner = cornerAt(i);\n\t\t\tctx.lineTo(corner[0], corner[1]);\n\t\t}\n\n\t\tctx.fill();\n\t\tif (borderWidth) {\n\t\t\tctx.stroke();\n\t\t}\n\t},\n\n\theight: function() {\n\t\tvar vm = this._view;\n\t\treturn vm.base - vm.y;\n\t},\n\n\tinRange: function(mouseX, mouseY) {\n\t\tvar inRange = false;\n\n\t\tif (this._view) {\n\t\t\tvar bounds = getBarBounds(this);\n\t\t\tinRange = mouseX >= bounds.left && mouseX <= bounds.right && mouseY >= bounds.top && mouseY <= bounds.bottom;\n\t\t}\n\n\t\treturn inRange;\n\t},\n\n\tinLabelRange: function(mouseX, mouseY) {\n\t\tvar me = this;\n\t\tif (!me._view) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar inRange = false;\n\t\tvar bounds = getBarBounds(me);\n\n\t\tif (isVertical(me)) {\n\t\t\tinRange = mouseX >= bounds.left && mouseX <= bounds.right;\n\t\t} else {\n\t\t\tinRange = mouseY >= bounds.top && mouseY <= bounds.bottom;\n\t\t}\n\n\t\treturn inRange;\n\t},\n\n\tinXRange: function(mouseX) {\n\t\tvar bounds = getBarBounds(this);\n\t\treturn mouseX >= bounds.left && mouseX <= bounds.right;\n\t},\n\n\tinYRange: function(mouseY) {\n\t\tvar bounds = getBarBounds(this);\n\t\treturn mouseY >= bounds.top && mouseY <= bounds.bottom;\n\t},\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\tvar x, y;\n\t\tif (isVertical(this)) {\n\t\t\tx = vm.x;\n\t\t\ty = (vm.y + vm.base) / 2;\n\t\t} else {\n\t\t\tx = (vm.x + vm.base) / 2;\n\t\t\ty = vm.y;\n\t\t}\n\n\t\treturn {x: x, y: y};\n\t},\n\n\tgetArea: function() {\n\t\tvar vm = this._view;\n\t\treturn vm.width * Math.abs(vm.y - vm.base);\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y\n\t\t};\n\t}\n});\n\n},{\"26\":26,\"27\":27}],41:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {};\nmodule.exports.Arc = require(37);\nmodule.exports.Line = require(38);\nmodule.exports.Point = require(39);\nmodule.exports.Rectangle = require(40);\n\n},{\"37\":37,\"38\":38,\"39\":39,\"40\":40}],42:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(43);\n\n/**\n * @namespace Chart.helpers.canvas\n */\nvar exports = module.exports = {\n\t/**\n\t * Clears the entire canvas associated to the given `chart`.\n\t * @param {Chart} chart - The chart for which to clear the canvas.\n\t */\n\tclear: function(chart) {\n\t\tchart.ctx.clearRect(0, 0, chart.width, chart.height);\n\t},\n\n\t/**\n\t * Creates a \"path\" for a rectangle with rounded corners at position (x, y) with a\n\t * given size (width, height) and the same `radius` for all corners.\n\t * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context.\n\t * @param {Number} x - The x axis of the coordinate for the rectangle starting point.\n\t * @param {Number} y - The y axis of the coordinate for the rectangle starting point.\n\t * @param {Number} width - The rectangle's width.\n\t * @param {Number} height - The rectangle's height.\n\t * @param {Number} radius - The rounded amount (in pixels) for the four corners.\n\t * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object?\n\t */\n\troundedRect: function(ctx, x, y, width, height, radius) {\n\t\tif (radius) {\n\t\t\t// NOTE(SB) `epsilon` helps to prevent minor artifacts appearing\n\t\t\t// on Chrome when `r` is exactly half the height or the width.\n\t\t\tvar epsilon = 0.0000001;\n\t\t\tvar r = Math.min(radius, (height / 2) - epsilon, (width / 2) - epsilon);\n\n\t\t\tctx.moveTo(x + r, y);\n\t\t\tctx.lineTo(x + width - r, y);\n\t\t\tctx.arcTo(x + width, y, x + width, y + r, r);\n\t\t\tctx.lineTo(x + width, y + height - r);\n\t\t\tctx.arcTo(x + width, y + height, x + width - r, y + height, r);\n\t\t\tctx.lineTo(x + r, y + height);\n\t\t\tctx.arcTo(x, y + height, x, y + height - r, r);\n\t\t\tctx.lineTo(x, y + r);\n\t\t\tctx.arcTo(x, y, x + r, y, r);\n\t\t\tctx.closePath();\n\t\t\tctx.moveTo(x, y);\n\t\t} else {\n\t\t\tctx.rect(x, y, width, height);\n\t\t}\n\t},\n\n\tdrawPoint: function(ctx, style, radius, x, y, rotation) {\n\t\tvar type, edgeLength, xOffset, yOffset, height, size;\n\t\trotation = rotation || 0;\n\n\t\tif (style && typeof style === 'object') {\n\t\t\ttype = style.toString();\n\t\t\tif (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n\t\t\t\tctx.drawImage(style, x - style.width / 2, y - style.height / 2, style.width, style.height);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (isNaN(radius) || radius <= 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tctx.save();\n\t\tctx.translate(x, y);\n\t\tctx.rotate(rotation * Math.PI / 180);\n\t\tctx.beginPath();\n\n\t\tswitch (style) {\n\t\t// Default includes circle\n\t\tdefault:\n\t\t\tctx.arc(0, 0, radius, 0, Math.PI * 2);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'triangle':\n\t\t\tedgeLength = 3 * radius / Math.sqrt(3);\n\t\t\theight = edgeLength * Math.sqrt(3) / 2;\n\t\t\tctx.moveTo(-edgeLength / 2, height / 3);\n\t\t\tctx.lineTo(edgeLength / 2, height / 3);\n\t\t\tctx.lineTo(0, -2 * height / 3);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'rect':\n\t\t\tsize = 1 / Math.SQRT2 * radius;\n\t\t\tctx.rect(-size, -size, 2 * size, 2 * size);\n\t\t\tbreak;\n\t\tcase 'rectRounded':\n\t\t\tvar offset = radius / Math.SQRT2;\n\t\t\tvar leftX = -offset;\n\t\t\tvar topY = -offset;\n\t\t\tvar sideSize = Math.SQRT2 * radius;\n\n\t\t\t// NOTE(SB) the rounded rect implementation changed to use `arcTo`\n\t\t\t// instead of `quadraticCurveTo` since it generates better results\n\t\t\t// when rect is almost a circle. 0.425 (instead of 0.5) produces\n\t\t\t// results visually closer to the previous impl.\n\t\t\tthis.roundedRect(ctx, leftX, topY, sideSize, sideSize, radius * 0.425);\n\t\t\tbreak;\n\t\tcase 'rectRot':\n\t\t\tsize = 1 / Math.SQRT2 * radius;\n\t\t\tctx.moveTo(-size, 0);\n\t\t\tctx.lineTo(0, size);\n\t\t\tctx.lineTo(size, 0);\n\t\t\tctx.lineTo(0, -size);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'cross':\n\t\t\tctx.moveTo(0, radius);\n\t\t\tctx.lineTo(0, -radius);\n\t\t\tctx.moveTo(-radius, 0);\n\t\t\tctx.lineTo(radius, 0);\n\t\t\tbreak;\n\t\tcase 'crossRot':\n\t\t\txOffset = Math.cos(Math.PI / 4) * radius;\n\t\t\tyOffset = Math.sin(Math.PI / 4) * radius;\n\t\t\tctx.moveTo(-xOffset, -yOffset);\n\t\t\tctx.lineTo(xOffset, yOffset);\n\t\t\tctx.moveTo(-xOffset, yOffset);\n\t\t\tctx.lineTo(xOffset, -yOffset);\n\t\t\tbreak;\n\t\tcase 'star':\n\t\t\tctx.moveTo(0, radius);\n\t\t\tctx.lineTo(0, -radius);\n\t\t\tctx.moveTo(-radius, 0);\n\t\t\tctx.lineTo(radius, 0);\n\t\t\txOffset = Math.cos(Math.PI / 4) * radius;\n\t\t\tyOffset = Math.sin(Math.PI / 4) * radius;\n\t\t\tctx.moveTo(-xOffset, -yOffset);\n\t\t\tctx.lineTo(xOffset, yOffset);\n\t\t\tctx.moveTo(-xOffset, yOffset);\n\t\t\tctx.lineTo(xOffset, -yOffset);\n\t\t\tbreak;\n\t\tcase 'line':\n\t\t\tctx.moveTo(-radius, 0);\n\t\t\tctx.lineTo(radius, 0);\n\t\t\tbreak;\n\t\tcase 'dash':\n\t\t\tctx.moveTo(0, 0);\n\t\t\tctx.lineTo(radius, 0);\n\t\t\tbreak;\n\t\t}\n\n\t\tctx.fill();\n\t\tctx.stroke();\n\t\tctx.restore();\n\t},\n\n\tclipArea: function(ctx, area) {\n\t\tctx.save();\n\t\tctx.beginPath();\n\t\tctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n\t\tctx.clip();\n\t},\n\n\tunclipArea: function(ctx) {\n\t\tctx.restore();\n\t},\n\n\tlineTo: function(ctx, previous, target, flip) {\n\t\tif (target.steppedLine) {\n\t\t\tif ((target.steppedLine === 'after' && !flip) || (target.steppedLine !== 'after' && flip)) {\n\t\t\t\tctx.lineTo(previous.x, target.y);\n\t\t\t} else {\n\t\t\t\tctx.lineTo(target.x, previous.y);\n\t\t\t}\n\t\t\tctx.lineTo(target.x, target.y);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!target.tension) {\n\t\t\tctx.lineTo(target.x, target.y);\n\t\t\treturn;\n\t\t}\n\n\t\tctx.bezierCurveTo(\n\t\t\tflip ? previous.controlPointPreviousX : previous.controlPointNextX,\n\t\t\tflip ? previous.controlPointPreviousY : previous.controlPointNextY,\n\t\t\tflip ? target.controlPointNextX : target.controlPointPreviousX,\n\t\t\tflip ? target.controlPointNextY : target.controlPointPreviousY,\n\t\t\ttarget.x,\n\t\t\ttarget.y);\n\t}\n};\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.canvas.clear instead.\n * @namespace Chart.helpers.clear\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.clear = exports.clear;\n\n/**\n * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead.\n * @namespace Chart.helpers.drawRoundedRectangle\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.drawRoundedRectangle = function(ctx) {\n\tctx.beginPath();\n\texports.roundedRect.apply(exports, arguments);\n};\n\n},{\"43\":43}],43:[function(require,module,exports){\n'use strict';\n\n/**\n * @namespace Chart.helpers\n */\nvar helpers = {\n\t/**\n\t * An empty function that can be used, for example, for optional callback.\n\t */\n\tnoop: function() {},\n\n\t/**\n\t * Returns a unique id, sequentially generated from a global variable.\n\t * @returns {Number}\n\t * @function\n\t */\n\tuid: (function() {\n\t\tvar id = 0;\n\t\treturn function() {\n\t\t\treturn id++;\n\t\t};\n\t}()),\n\n\t/**\n\t * Returns true if `value` is neither null nor undefined, else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {Boolean}\n\t * @since 2.7.0\n\t */\n\tisNullOrUndef: function(value) {\n\t\treturn value === null || typeof value === 'undefined';\n\t},\n\n\t/**\n\t * Returns true if `value` is an array, else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {Boolean}\n\t * @function\n\t */\n\tisArray: Array.isArray ? Array.isArray : function(value) {\n\t\treturn Object.prototype.toString.call(value) === '[object Array]';\n\t},\n\n\t/**\n\t * Returns true if `value` is an object (excluding null), else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {Boolean}\n\t * @since 2.7.0\n\t */\n\tisObject: function(value) {\n\t\treturn value !== null && Object.prototype.toString.call(value) === '[object Object]';\n\t},\n\n\t/**\n\t * Returns `value` if defined, else returns `defaultValue`.\n\t * @param {*} value - The value to return if defined.\n\t * @param {*} defaultValue - The value to return if `value` is undefined.\n\t * @returns {*}\n\t */\n\tvalueOrDefault: function(value, defaultValue) {\n\t\treturn typeof value === 'undefined' ? defaultValue : value;\n\t},\n\n\t/**\n\t * Returns value at the given `index` in array if defined, else returns `defaultValue`.\n\t * @param {Array} value - The array to lookup for value at `index`.\n\t * @param {Number} index - The index in `value` to lookup for value.\n\t * @param {*} defaultValue - The value to return if `value[index]` is undefined.\n\t * @returns {*}\n\t */\n\tvalueAtIndexOrDefault: function(value, index, defaultValue) {\n\t\treturn helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue);\n\t},\n\n\t/**\n\t * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n\t * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n\t * @param {Function} fn - The function to call.\n\t * @param {Array|undefined|null} args - The arguments with which `fn` should be called.\n\t * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`.\n\t * @returns {*}\n\t */\n\tcallback: function(fn, args, thisArg) {\n\t\tif (fn && typeof fn.call === 'function') {\n\t\t\treturn fn.apply(thisArg, args);\n\t\t}\n\t},\n\n\t/**\n\t * Note(SB) for performance sake, this method should only be used when loopable type\n\t * is unknown or in none intensive code (not called often and small loopable). Else\n\t * it's preferable to use a regular for() loop and save extra function calls.\n\t * @param {Object|Array} loopable - The object or array to be iterated.\n\t * @param {Function} fn - The function to call for each item.\n\t * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`.\n\t * @param {Boolean} [reverse] - If true, iterates backward on the loopable.\n\t */\n\teach: function(loopable, fn, thisArg, reverse) {\n\t\tvar i, len, keys;\n\t\tif (helpers.isArray(loopable)) {\n\t\t\tlen = loopable.length;\n\t\t\tif (reverse) {\n\t\t\t\tfor (i = len - 1; i >= 0; i--) {\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (helpers.isObject(loopable)) {\n\t\t\tkeys = Object.keys(loopable);\n\t\t\tlen = keys.length;\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tfn.call(thisArg, loopable[keys[i]], keys[i]);\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n\t * @see http://stackoverflow.com/a/14853974\n\t * @param {Array} a0 - The array to compare\n\t * @param {Array} a1 - The array to compare\n\t * @returns {Boolean}\n\t */\n\tarrayEquals: function(a0, a1) {\n\t\tvar i, ilen, v0, v1;\n\n\t\tif (!a0 || !a1 || a0.length !== a1.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor (i = 0, ilen = a0.length; i < ilen; ++i) {\n\t\t\tv0 = a0[i];\n\t\t\tv1 = a1[i];\n\n\t\t\tif (v0 instanceof Array && v1 instanceof Array) {\n\t\t\t\tif (!helpers.arrayEquals(v0, v1)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else if (v0 !== v1) {\n\t\t\t\t// NOTE: two different object instances will never be equal: {x:20} != {x:20}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t/**\n\t * Returns a deep copy of `source` without keeping references on objects and arrays.\n\t * @param {*} source - The value to clone.\n\t * @returns {*}\n\t */\n\tclone: function(source) {\n\t\tif (helpers.isArray(source)) {\n\t\t\treturn source.map(helpers.clone);\n\t\t}\n\n\t\tif (helpers.isObject(source)) {\n\t\t\tvar target = {};\n\t\t\tvar keys = Object.keys(source);\n\t\t\tvar klen = keys.length;\n\t\t\tvar k = 0;\n\n\t\t\tfor (; k < klen; ++k) {\n\t\t\t\ttarget[keys[k]] = helpers.clone(source[keys[k]]);\n\t\t\t}\n\n\t\t\treturn target;\n\t\t}\n\n\t\treturn source;\n\t},\n\n\t/**\n\t * The default merger when Chart.helpers.merge is called without merger option.\n\t * Note(SB): this method is also used by configMerge and scaleMerge as fallback.\n\t * @private\n\t */\n\t_merger: function(key, target, source, options) {\n\t\tvar tval = target[key];\n\t\tvar sval = source[key];\n\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\n\t\t\thelpers.merge(tval, sval, options);\n\t\t} else {\n\t\t\ttarget[key] = helpers.clone(sval);\n\t\t}\n\t},\n\n\t/**\n\t * Merges source[key] in target[key] only if target[key] is undefined.\n\t * @private\n\t */\n\t_mergerIf: function(key, target, source) {\n\t\tvar tval = target[key];\n\t\tvar sval = source[key];\n\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\n\t\t\thelpers.mergeIf(tval, sval);\n\t\t} else if (!target.hasOwnProperty(key)) {\n\t\t\ttarget[key] = helpers.clone(sval);\n\t\t}\n\t},\n\n\t/**\n\t * Recursively deep copies `source` properties into `target` with the given `options`.\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n\t * @param {Object} target - The target object in which all sources are merged into.\n\t * @param {Object|Array(Object)} source - Object(s) to merge into `target`.\n\t * @param {Object} [options] - Merging options:\n\t * @param {Function} [options.merger] - The merge method (key, target, source, options)\n\t * @returns {Object} The `target` object.\n\t */\n\tmerge: function(target, source, options) {\n\t\tvar sources = helpers.isArray(source) ? source : [source];\n\t\tvar ilen = sources.length;\n\t\tvar merge, i, keys, klen, k;\n\n\t\tif (!helpers.isObject(target)) {\n\t\t\treturn target;\n\t\t}\n\n\t\toptions = options || {};\n\t\tmerge = options.merger || helpers._merger;\n\n\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\tsource = sources[i];\n\t\t\tif (!helpers.isObject(source)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tkeys = Object.keys(source);\n\t\t\tfor (k = 0, klen = keys.length; k < klen; ++k) {\n\t\t\t\tmerge(keys[k], target, source, options);\n\t\t\t}\n\t\t}\n\n\t\treturn target;\n\t},\n\n\t/**\n\t * Recursively deep copies `source` properties into `target` *only* if not defined in target.\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n\t * @param {Object} target - The target object in which all sources are merged into.\n\t * @param {Object|Array(Object)} source - Object(s) to merge into `target`.\n\t * @returns {Object} The `target` object.\n\t */\n\tmergeIf: function(target, source) {\n\t\treturn helpers.merge(target, source, {merger: helpers._mergerIf});\n\t},\n\n\t/**\n\t * Applies the contents of two or more objects together into the first object.\n\t * @param {Object} target - The target object in which all objects are merged into.\n\t * @param {Object} arg1 - Object containing additional properties to merge in target.\n\t * @param {Object} argN - Additional objects containing properties to merge in target.\n\t * @returns {Object} The `target` object.\n\t */\n\textend: function(target) {\n\t\tvar setFn = function(value, key) {\n\t\t\ttarget[key] = value;\n\t\t};\n\t\tfor (var i = 1, ilen = arguments.length; i < ilen; ++i) {\n\t\t\thelpers.each(arguments[i], setFn);\n\t\t}\n\t\treturn target;\n\t},\n\n\t/**\n\t * Basic javascript inheritance based on the model created in Backbone.js\n\t */\n\tinherits: function(extensions) {\n\t\tvar me = this;\n\t\tvar ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() {\n\t\t\treturn me.apply(this, arguments);\n\t\t};\n\n\t\tvar Surrogate = function() {\n\t\t\tthis.constructor = ChartElement;\n\t\t};\n\n\t\tSurrogate.prototype = me.prototype;\n\t\tChartElement.prototype = new Surrogate();\n\t\tChartElement.extend = helpers.inherits;\n\n\t\tif (extensions) {\n\t\t\thelpers.extend(ChartElement.prototype, extensions);\n\t\t}\n\n\t\tChartElement.__super__ = me.prototype;\n\t\treturn ChartElement;\n\t}\n};\n\nmodule.exports = helpers;\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.callback instead.\n * @function Chart.helpers.callCallback\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n * @private\n */\nhelpers.callCallback = helpers.callback;\n\n/**\n * Provided for backward compatibility, use Array.prototype.indexOf instead.\n * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+\n * @function Chart.helpers.indexOf\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.indexOf = function(array, item, fromIndex) {\n\treturn Array.prototype.indexOf.call(array, item, fromIndex);\n};\n\n/**\n * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead.\n * @function Chart.helpers.getValueOrDefault\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.getValueOrDefault = helpers.valueOrDefault;\n\n/**\n * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead.\n * @function Chart.helpers.getValueAtIndexOrDefault\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\n},{}],44:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(43);\n\n/**\n * Easing functions adapted from Robert Penner's easing equations.\n * @namespace Chart.helpers.easingEffects\n * @see http://www.robertpenner.com/easing/\n */\nvar effects = {\n\tlinear: function(t) {\n\t\treturn t;\n\t},\n\n\teaseInQuad: function(t) {\n\t\treturn t * t;\n\t},\n\n\teaseOutQuad: function(t) {\n\t\treturn -t * (t - 2);\n\t},\n\n\teaseInOutQuad: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t;\n\t\t}\n\t\treturn -0.5 * ((--t) * (t - 2) - 1);\n\t},\n\n\teaseInCubic: function(t) {\n\t\treturn t * t * t;\n\t},\n\n\teaseOutCubic: function(t) {\n\t\treturn (t = t - 1) * t * t + 1;\n\t},\n\n\teaseInOutCubic: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t;\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * t + 2);\n\t},\n\n\teaseInQuart: function(t) {\n\t\treturn t * t * t * t;\n\t},\n\n\teaseOutQuart: function(t) {\n\t\treturn -((t = t - 1) * t * t * t - 1);\n\t},\n\n\teaseInOutQuart: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t * t;\n\t\t}\n\t\treturn -0.5 * ((t -= 2) * t * t * t - 2);\n\t},\n\n\teaseInQuint: function(t) {\n\t\treturn t * t * t * t * t;\n\t},\n\n\teaseOutQuint: function(t) {\n\t\treturn (t = t - 1) * t * t * t * t + 1;\n\t},\n\n\teaseInOutQuint: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t * t * t;\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * t * t * t + 2);\n\t},\n\n\teaseInSine: function(t) {\n\t\treturn -Math.cos(t * (Math.PI / 2)) + 1;\n\t},\n\n\teaseOutSine: function(t) {\n\t\treturn Math.sin(t * (Math.PI / 2));\n\t},\n\n\teaseInOutSine: function(t) {\n\t\treturn -0.5 * (Math.cos(Math.PI * t) - 1);\n\t},\n\n\teaseInExpo: function(t) {\n\t\treturn (t === 0) ? 0 : Math.pow(2, 10 * (t - 1));\n\t},\n\n\teaseOutExpo: function(t) {\n\t\treturn (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1;\n\t},\n\n\teaseInOutExpo: function(t) {\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * Math.pow(2, 10 * (t - 1));\n\t\t}\n\t\treturn 0.5 * (-Math.pow(2, -10 * --t) + 2);\n\t},\n\n\teaseInCirc: function(t) {\n\t\tif (t >= 1) {\n\t\t\treturn t;\n\t\t}\n\t\treturn -(Math.sqrt(1 - t * t) - 1);\n\t},\n\n\teaseOutCirc: function(t) {\n\t\treturn Math.sqrt(1 - (t = t - 1) * t);\n\t},\n\n\teaseInOutCirc: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn -0.5 * (Math.sqrt(1 - t * t) - 1);\n\t\t}\n\t\treturn 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n\t},\n\n\teaseInElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.3;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\treturn -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\n\t},\n\n\teaseOutElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.3;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\treturn a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1;\n\t},\n\n\teaseInOutElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif ((t /= 0.5) === 2) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.45;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\tif (t < 1) {\n\t\t\treturn -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\n\t\t}\n\t\treturn a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1;\n\t},\n\teaseInBack: function(t) {\n\t\tvar s = 1.70158;\n\t\treturn t * t * ((s + 1) * t - s);\n\t},\n\n\teaseOutBack: function(t) {\n\t\tvar s = 1.70158;\n\t\treturn (t = t - 1) * t * ((s + 1) * t + s) + 1;\n\t},\n\n\teaseInOutBack: function(t) {\n\t\tvar s = 1.70158;\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n\t},\n\n\teaseInBounce: function(t) {\n\t\treturn 1 - effects.easeOutBounce(1 - t);\n\t},\n\n\teaseOutBounce: function(t) {\n\t\tif (t < (1 / 2.75)) {\n\t\t\treturn 7.5625 * t * t;\n\t\t}\n\t\tif (t < (2 / 2.75)) {\n\t\t\treturn 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75;\n\t\t}\n\t\tif (t < (2.5 / 2.75)) {\n\t\t\treturn 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375;\n\t\t}\n\t\treturn 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375;\n\t},\n\n\teaseInOutBounce: function(t) {\n\t\tif (t < 0.5) {\n\t\t\treturn effects.easeInBounce(t * 2) * 0.5;\n\t\t}\n\t\treturn effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5;\n\t}\n};\n\nmodule.exports = {\n\teffects: effects\n};\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.easing.effects instead.\n * @function Chart.helpers.easingEffects\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.easingEffects = effects;\n\n},{\"43\":43}],45:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(43);\n\n/**\n * @alias Chart.helpers.options\n * @namespace\n */\nmodule.exports = {\n\t/**\n\t * Converts the given line height `value` in pixels for a specific font `size`.\n\t * @param {Number|String} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n\t * @param {Number} size - The font size (in pixels) used to resolve relative `value`.\n\t * @returns {Number} The effective line height in pixels (size * 1.2 if value is invalid).\n\t * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n\t * @since 2.7.0\n\t */\n\ttoLineHeight: function(value, size) {\n\t\tvar matches = ('' + value).match(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\n\t\tif (!matches || matches[1] === 'normal') {\n\t\t\treturn size * 1.2;\n\t\t}\n\n\t\tvalue = +matches[2];\n\n\t\tswitch (matches[3]) {\n\t\tcase 'px':\n\t\t\treturn value;\n\t\tcase '%':\n\t\t\tvalue /= 100;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t\t}\n\n\t\treturn size * value;\n\t},\n\n\t/**\n\t * Converts the given value into a padding object with pre-computed width/height.\n\t * @param {Number|Object} value - If a number, set the value to all TRBL component,\n\t * else, if and object, use defined properties and sets undefined ones to 0.\n\t * @returns {Object} The padding values (top, right, bottom, left, width, height)\n\t * @since 2.7.0\n\t */\n\ttoPadding: function(value) {\n\t\tvar t, r, b, l;\n\n\t\tif (helpers.isObject(value)) {\n\t\t\tt = +value.top || 0;\n\t\t\tr = +value.right || 0;\n\t\t\tb = +value.bottom || 0;\n\t\t\tl = +value.left || 0;\n\t\t} else {\n\t\t\tt = r = b = l = +value || 0;\n\t\t}\n\n\t\treturn {\n\t\t\ttop: t,\n\t\t\tright: r,\n\t\t\tbottom: b,\n\t\t\tleft: l,\n\t\t\theight: t + b,\n\t\t\twidth: l + r\n\t\t};\n\t},\n\n\t/**\n\t * Evaluates the given `inputs` sequentially and returns the first defined value.\n\t * @param {Array[]} inputs - An array of values, falling back to the last value.\n\t * @param {Object} [context] - If defined and the current value is a function, the value\n\t * is called with `context` as first argument and the result becomes the new input.\n\t * @param {Number} [index] - If defined and the current value is an array, the value\n\t * at `index` become the new input.\n\t * @since 2.7.0\n\t */\n\tresolve: function(inputs, context, index) {\n\t\tvar i, ilen, value;\n\n\t\tfor (i = 0, ilen = inputs.length; i < ilen; ++i) {\n\t\t\tvalue = inputs[i];\n\t\t\tif (value === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (context !== undefined && typeof value === 'function') {\n\t\t\t\tvalue = value(context);\n\t\t\t}\n\t\t\tif (index !== undefined && helpers.isArray(value)) {\n\t\t\t\tvalue = value[index];\n\t\t\t}\n\t\t\tif (value !== undefined) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t}\n};\n\n},{\"43\":43}],46:[function(require,module,exports){\n'use strict';\n\nmodule.exports = require(43);\nmodule.exports.easing = require(44);\nmodule.exports.canvas = require(42);\nmodule.exports.options = require(45);\n\n},{\"42\":42,\"43\":43,\"44\":44,\"45\":45}],47:[function(require,module,exports){\n/**\n * Platform fallback implementation (minimal).\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\n */\n\nmodule.exports = {\n\tacquireContext: function(item) {\n\t\tif (item && item.canvas) {\n\t\t\t// Support for any object associated to a canvas (including a context2d)\n\t\t\titem = item.canvas;\n\t\t}\n\n\t\treturn item && item.getContext('2d') || null;\n\t}\n};\n\n},{}],48:[function(require,module,exports){\n/**\n * Chart.Platform implementation for targeting a web browser\n */\n\n'use strict';\n\nvar helpers = require(46);\n\nvar EXPANDO_KEY = '$chartjs';\nvar CSS_PREFIX = 'chartjs-';\nvar CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor';\nvar CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation';\nvar ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart'];\n\n/**\n * DOM event types -> Chart.js event types.\n * Note: only events with different types are mapped.\n * @see https://developer.mozilla.org/en-US/docs/Web/Events\n */\nvar EVENT_TYPES = {\n\ttouchstart: 'mousedown',\n\ttouchmove: 'mousemove',\n\ttouchend: 'mouseup',\n\tpointerenter: 'mouseenter',\n\tpointerdown: 'mousedown',\n\tpointermove: 'mousemove',\n\tpointerup: 'mouseup',\n\tpointerleave: 'mouseout',\n\tpointerout: 'mouseout'\n};\n\n/**\n * The \"used\" size is the final value of a dimension property after all calculations have\n * been performed. This method uses the computed style of `element` but returns undefined\n * if the computed style is not expressed in pixels. That can happen in some cases where\n * `element` has a size relative to its parent and this last one is not yet displayed,\n * for example because of `display: none` on a parent node.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n * @returns {Number} Size in pixels or undefined if unknown.\n */\nfunction readUsedSize(element, property) {\n\tvar value = helpers.getStyle(element, property);\n\tvar matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n\treturn matches ? Number(matches[1]) : undefined;\n}\n\n/**\n * Initializes the canvas style and render size without modifying the canvas display size,\n * since responsiveness is handled by the controller.resize() method. The config is used\n * to determine the aspect ratio to apply in case no explicit height has been specified.\n */\nfunction initCanvas(canvas, config) {\n\tvar style = canvas.style;\n\n\t// NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\n\t// returns null or '' if no explicit value has been set to the canvas attribute.\n\tvar renderHeight = canvas.getAttribute('height');\n\tvar renderWidth = canvas.getAttribute('width');\n\n\t// Chart.js modifies some canvas values that we want to restore on destroy\n\tcanvas[EXPANDO_KEY] = {\n\t\tinitial: {\n\t\t\theight: renderHeight,\n\t\t\twidth: renderWidth,\n\t\t\tstyle: {\n\t\t\t\tdisplay: style.display,\n\t\t\t\theight: style.height,\n\t\t\t\twidth: style.width\n\t\t\t}\n\t\t}\n\t};\n\n\t// Force canvas to display as block to avoid extra space caused by inline\n\t// elements, which would interfere with the responsive resize process.\n\t// https://github.com/chartjs/Chart.js/issues/2538\n\tstyle.display = style.display || 'block';\n\n\tif (renderWidth === null || renderWidth === '') {\n\t\tvar displayWidth = readUsedSize(canvas, 'width');\n\t\tif (displayWidth !== undefined) {\n\t\t\tcanvas.width = displayWidth;\n\t\t}\n\t}\n\n\tif (renderHeight === null || renderHeight === '') {\n\t\tif (canvas.style.height === '') {\n\t\t\t// If no explicit render height and style height, let's apply the aspect ratio,\n\t\t\t// which one can be specified by the user but also by charts as default option\n\t\t\t// (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\n\t\t\tcanvas.height = canvas.width / (config.options.aspectRatio || 2);\n\t\t} else {\n\t\t\tvar displayHeight = readUsedSize(canvas, 'height');\n\t\t\tif (displayWidth !== undefined) {\n\t\t\t\tcanvas.height = displayHeight;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn canvas;\n}\n\n/**\n * Detects support for options object argument in addEventListener.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n * @private\n */\nvar supportsEventListenerOptions = (function() {\n\tvar supports = false;\n\ttry {\n\t\tvar options = Object.defineProperty({}, 'passive', {\n\t\t\tget: function() {\n\t\t\t\tsupports = true;\n\t\t\t}\n\t\t});\n\t\twindow.addEventListener('e', null, options);\n\t} catch (e) {\n\t\t// continue regardless of error\n\t}\n\treturn supports;\n}());\n\n// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\n// https://github.com/chartjs/Chart.js/issues/4287\nvar eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\n\nfunction addEventListener(node, type, listener) {\n\tnode.addEventListener(type, listener, eventListenerOptions);\n}\n\nfunction removeEventListener(node, type, listener) {\n\tnode.removeEventListener(type, listener, eventListenerOptions);\n}\n\nfunction createEvent(type, chart, x, y, nativeEvent) {\n\treturn {\n\t\ttype: type,\n\t\tchart: chart,\n\t\tnative: nativeEvent || null,\n\t\tx: x !== undefined ? x : null,\n\t\ty: y !== undefined ? y : null,\n\t};\n}\n\nfunction fromNativeEvent(event, chart) {\n\tvar type = EVENT_TYPES[event.type] || event.type;\n\tvar pos = helpers.getRelativePosition(event, chart);\n\treturn createEvent(type, chart, pos.x, pos.y, event);\n}\n\nfunction throttled(fn, thisArg) {\n\tvar ticking = false;\n\tvar args = [];\n\n\treturn function() {\n\t\targs = Array.prototype.slice.call(arguments);\n\t\tthisArg = thisArg || this;\n\n\t\tif (!ticking) {\n\t\t\tticking = true;\n\t\t\thelpers.requestAnimFrame.call(window, function() {\n\t\t\t\tticking = false;\n\t\t\t\tfn.apply(thisArg, args);\n\t\t\t});\n\t\t}\n\t};\n}\n\n// Implementation based on https://github.com/marcj/css-element-queries\nfunction createResizer(handler) {\n\tvar resizer = document.createElement('div');\n\tvar cls = CSS_PREFIX + 'size-monitor';\n\tvar maxSize = 1000000;\n\tvar style =\n\t\t'position:absolute;' +\n\t\t'left:0;' +\n\t\t'top:0;' +\n\t\t'right:0;' +\n\t\t'bottom:0;' +\n\t\t'overflow:hidden;' +\n\t\t'pointer-events:none;' +\n\t\t'visibility:hidden;' +\n\t\t'z-index:-1;';\n\n\tresizer.style.cssText = style;\n\tresizer.className = cls;\n\tresizer.innerHTML =\n\t\t'
' +\n\t\t\t'
' +\n\t\t\t'
' +\n\t\t'
' +\n\t\t'
' +\n\t\t\t'
' +\n\t\t\t'
' +\n\t\t'
';\n\n\tvar expand = resizer.childNodes[0];\n\tvar shrink = resizer.childNodes[1];\n\n\tresizer._reset = function() {\n\t\texpand.scrollLeft = maxSize;\n\t\texpand.scrollTop = maxSize;\n\t\tshrink.scrollLeft = maxSize;\n\t\tshrink.scrollTop = maxSize;\n\t};\n\tvar onScroll = function() {\n\t\tresizer._reset();\n\t\thandler();\n\t};\n\n\taddEventListener(expand, 'scroll', onScroll.bind(expand, 'expand'));\n\taddEventListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink'));\n\n\treturn resizer;\n}\n\n// https://davidwalsh.name/detect-node-insertion\nfunction watchForRender(node, handler) {\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\n\tvar proxy = expando.renderProxy = function(e) {\n\t\tif (e.animationName === CSS_RENDER_ANIMATION) {\n\t\t\thandler();\n\t\t}\n\t};\n\n\thelpers.each(ANIMATION_START_EVENTS, function(type) {\n\t\taddEventListener(node, type, proxy);\n\t});\n\n\t// #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class\n\t// is removed then added back immediately (same animation frame?). Accessing the\n\t// `offsetParent` property will force a reflow and re-evaluate the CSS animation.\n\t// https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics\n\t// https://github.com/chartjs/Chart.js/issues/4737\n\texpando.reflow = !!node.offsetParent;\n\n\tnode.classList.add(CSS_RENDER_MONITOR);\n}\n\nfunction unwatchForRender(node) {\n\tvar expando = node[EXPANDO_KEY] || {};\n\tvar proxy = expando.renderProxy;\n\n\tif (proxy) {\n\t\thelpers.each(ANIMATION_START_EVENTS, function(type) {\n\t\t\tremoveEventListener(node, type, proxy);\n\t\t});\n\n\t\tdelete expando.renderProxy;\n\t}\n\n\tnode.classList.remove(CSS_RENDER_MONITOR);\n}\n\nfunction addResizeListener(node, listener, chart) {\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\n\n\t// Let's keep track of this added resizer and thus avoid DOM query when removing it.\n\tvar resizer = expando.resizer = createResizer(throttled(function() {\n\t\tif (expando.resizer) {\n\t\t\treturn listener(createEvent('resize', chart));\n\t\t}\n\t}));\n\n\t// The resizer needs to be attached to the node parent, so we first need to be\n\t// sure that `node` is attached to the DOM before injecting the resizer element.\n\twatchForRender(node, function() {\n\t\tif (expando.resizer) {\n\t\t\tvar container = node.parentNode;\n\t\t\tif (container && container !== resizer.parentNode) {\n\t\t\t\tcontainer.insertBefore(resizer, container.firstChild);\n\t\t\t}\n\n\t\t\t// The container size might have changed, let's reset the resizer state.\n\t\t\tresizer._reset();\n\t\t}\n\t});\n}\n\nfunction removeResizeListener(node) {\n\tvar expando = node[EXPANDO_KEY] || {};\n\tvar resizer = expando.resizer;\n\n\tdelete expando.resizer;\n\tunwatchForRender(node);\n\n\tif (resizer && resizer.parentNode) {\n\t\tresizer.parentNode.removeChild(resizer);\n\t}\n}\n\nfunction injectCSS(platform, css) {\n\t// http://stackoverflow.com/q/3922139\n\tvar style = platform._style || document.createElement('style');\n\tif (!platform._style) {\n\t\tplatform._style = style;\n\t\tcss = '/* Chart.js */\\n' + css;\n\t\tstyle.setAttribute('type', 'text/css');\n\t\tdocument.getElementsByTagName('head')[0].appendChild(style);\n\t}\n\n\tstyle.appendChild(document.createTextNode(css));\n}\n\nmodule.exports = {\n\t/**\n\t * This property holds whether this platform is enabled for the current environment.\n\t * Currently used by platform.js to select the proper implementation.\n\t * @private\n\t */\n\t_enabled: typeof window !== 'undefined' && typeof document !== 'undefined',\n\n\tinitialize: function() {\n\t\tvar keyframes = 'from{opacity:0.99}to{opacity:1}';\n\n\t\tinjectCSS(this,\n\t\t\t// DOM rendering detection\n\t\t\t// https://davidwalsh.name/detect-node-insertion\n\t\t\t'@-webkit-keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' +\n\t\t\t'@keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' +\n\t\t\t'.' + CSS_RENDER_MONITOR + '{' +\n\t\t\t\t'-webkit-animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' +\n\t\t\t\t'animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' +\n\t\t\t'}'\n\t\t);\n\t},\n\n\tacquireContext: function(item, config) {\n\t\tif (typeof item === 'string') {\n\t\t\titem = document.getElementById(item);\n\t\t} else if (item.length) {\n\t\t\t// Support for array based queries (such as jQuery)\n\t\t\titem = item[0];\n\t\t}\n\n\t\tif (item && item.canvas) {\n\t\t\t// Support for any object associated to a canvas (including a context2d)\n\t\t\titem = item.canvas;\n\t\t}\n\n\t\t// To prevent canvas fingerprinting, some add-ons undefine the getContext\n\t\t// method, for example: https://github.com/kkapsner/CanvasBlocker\n\t\t// https://github.com/chartjs/Chart.js/issues/2807\n\t\tvar context = item && item.getContext && item.getContext('2d');\n\n\t\t// `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the item is\n\t\t// inside an iframe or when running in a protected environment. We could guess the\n\t\t// types from their toString() value but let's keep things flexible and assume it's\n\t\t// a sufficient condition if the item has a context2D which has item as `canvas`.\n\t\t// https://github.com/chartjs/Chart.js/issues/3887\n\t\t// https://github.com/chartjs/Chart.js/issues/4102\n\t\t// https://github.com/chartjs/Chart.js/issues/4152\n\t\tif (context && context.canvas === item) {\n\t\t\tinitCanvas(item, config);\n\t\t\treturn context;\n\t\t}\n\n\t\treturn null;\n\t},\n\n\treleaseContext: function(context) {\n\t\tvar canvas = context.canvas;\n\t\tif (!canvas[EXPANDO_KEY]) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar initial = canvas[EXPANDO_KEY].initial;\n\t\t['height', 'width'].forEach(function(prop) {\n\t\t\tvar value = initial[prop];\n\t\t\tif (helpers.isNullOrUndef(value)) {\n\t\t\t\tcanvas.removeAttribute(prop);\n\t\t\t} else {\n\t\t\t\tcanvas.setAttribute(prop, value);\n\t\t\t}\n\t\t});\n\n\t\thelpers.each(initial.style || {}, function(value, key) {\n\t\t\tcanvas.style[key] = value;\n\t\t});\n\n\t\t// The canvas render size might have been changed (and thus the state stack discarded),\n\t\t// we can't use save() and restore() to restore the initial state. So make sure that at\n\t\t// least the canvas context is reset to the default state by setting the canvas width.\n\t\t// https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html\n\t\tcanvas.width = canvas.width;\n\n\t\tdelete canvas[EXPANDO_KEY];\n\t},\n\n\taddEventListener: function(chart, type, listener) {\n\t\tvar canvas = chart.canvas;\n\t\tif (type === 'resize') {\n\t\t\t// Note: the resize event is not supported on all browsers.\n\t\t\taddResizeListener(canvas, listener, chart);\n\t\t\treturn;\n\t\t}\n\n\t\tvar expando = listener[EXPANDO_KEY] || (listener[EXPANDO_KEY] = {});\n\t\tvar proxies = expando.proxies || (expando.proxies = {});\n\t\tvar proxy = proxies[chart.id + '_' + type] = function(event) {\n\t\t\tlistener(fromNativeEvent(event, chart));\n\t\t};\n\n\t\taddEventListener(canvas, type, proxy);\n\t},\n\n\tremoveEventListener: function(chart, type, listener) {\n\t\tvar canvas = chart.canvas;\n\t\tif (type === 'resize') {\n\t\t\t// Note: the resize event is not supported on all browsers.\n\t\t\tremoveResizeListener(canvas, listener);\n\t\t\treturn;\n\t\t}\n\n\t\tvar expando = listener[EXPANDO_KEY] || {};\n\t\tvar proxies = expando.proxies || {};\n\t\tvar proxy = proxies[chart.id + '_' + type];\n\t\tif (!proxy) {\n\t\t\treturn;\n\t\t}\n\n\t\tremoveEventListener(canvas, type, proxy);\n\t}\n};\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use EventTarget.addEventListener instead.\n * EventTarget.addEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\n * @function Chart.helpers.addEvent\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.addEvent = addEventListener;\n\n/**\n * Provided for backward compatibility, use EventTarget.removeEventListener instead.\n * EventTarget.removeEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener\n * @function Chart.helpers.removeEvent\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.removeEvent = removeEventListener;\n\n},{\"46\":46}],49:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(46);\nvar basic = require(47);\nvar dom = require(48);\n\n// @TODO Make possible to select another platform at build time.\nvar implementation = dom._enabled ? dom : basic;\n\n/**\n * @namespace Chart.platform\n * @see https://chartjs.gitbooks.io/proposals/content/Platform.html\n * @since 2.4.0\n */\nmodule.exports = helpers.extend({\n\t/**\n\t * @since 2.7.0\n\t */\n\tinitialize: function() {},\n\n\t/**\n\t * Called at chart construction time, returns a context2d instance implementing\n\t * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}.\n\t * @param {*} item - The native item from which to acquire context (platform specific)\n\t * @param {Object} options - The chart options\n\t * @returns {CanvasRenderingContext2D} context2d instance\n\t */\n\tacquireContext: function() {},\n\n\t/**\n\t * Called at chart destruction time, releases any resources associated to the context\n\t * previously returned by the acquireContext() method.\n\t * @param {CanvasRenderingContext2D} context - The context2d instance\n\t * @returns {Boolean} true if the method succeeded, else false\n\t */\n\treleaseContext: function() {},\n\n\t/**\n\t * Registers the specified listener on the given chart.\n\t * @param {Chart} chart - Chart from which to listen for event\n\t * @param {String} type - The ({@link IEvent}) type to listen for\n\t * @param {Function} listener - Receives a notification (an object that implements\n\t * the {@link IEvent} interface) when an event of the specified type occurs.\n\t */\n\taddEventListener: function() {},\n\n\t/**\n\t * Removes the specified listener previously registered with addEventListener.\n\t * @param {Chart} chart -Chart from which to remove the listener\n\t * @param {String} type - The ({@link IEvent}) type to remove\n\t * @param {Function} listener - The listener function to remove from the event target.\n\t */\n\tremoveEventListener: function() {}\n\n}, implementation);\n\n/**\n * @interface IPlatform\n * Allows abstracting platform dependencies away from the chart\n * @borrows Chart.platform.acquireContext as acquireContext\n * @borrows Chart.platform.releaseContext as releaseContext\n * @borrows Chart.platform.addEventListener as addEventListener\n * @borrows Chart.platform.removeEventListener as removeEventListener\n */\n\n/**\n * @interface IEvent\n * @prop {String} type - The event type name, possible values are:\n * 'contextmenu', 'mouseenter', 'mousedown', 'mousemove', 'mouseup', 'mouseout',\n * 'click', 'dblclick', 'keydown', 'keypress', 'keyup' and 'resize'\n * @prop {*} native - The original native event (null for emulated events, e.g. 'resize')\n * @prop {Number} x - The mouse x position, relative to the canvas (null for incompatible events)\n * @prop {Number} y - The mouse y position, relative to the canvas (null for incompatible events)\n */\n\n},{\"46\":46,\"47\":47,\"48\":48}],50:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {};\nmodule.exports.filler = require(51);\nmodule.exports.legend = require(52);\nmodule.exports.title = require(53);\n\n},{\"51\":51,\"52\":52,\"53\":53}],51:[function(require,module,exports){\n/**\n * Plugin based on discussion from the following Chart.js issues:\n * @see https://github.com/chartjs/Chart.js/issues/2380#issuecomment-279961569\n * @see https://github.com/chartjs/Chart.js/issues/2440#issuecomment-256461897\n */\n\n'use strict';\n\nvar defaults = require(26);\nvar elements = require(41);\nvar helpers = require(46);\n\ndefaults._set('global', {\n\tplugins: {\n\t\tfiller: {\n\t\t\tpropagate: true\n\t\t}\n\t}\n});\n\nvar mappers = {\n\tdataset: function(source) {\n\t\tvar index = source.fill;\n\t\tvar chart = source.chart;\n\t\tvar meta = chart.getDatasetMeta(index);\n\t\tvar visible = meta && chart.isDatasetVisible(index);\n\t\tvar points = (visible && meta.dataset._children) || [];\n\t\tvar length = points.length || 0;\n\n\t\treturn !length ? null : function(point, i) {\n\t\t\treturn (i < length && points[i]._view) || null;\n\t\t};\n\t},\n\n\tboundary: function(source) {\n\t\tvar boundary = source.boundary;\n\t\tvar x = boundary ? boundary.x : null;\n\t\tvar y = boundary ? boundary.y : null;\n\n\t\treturn function(point) {\n\t\t\treturn {\n\t\t\t\tx: x === null ? point.x : x,\n\t\t\t\ty: y === null ? point.y : y,\n\t\t\t};\n\t\t};\n\t}\n};\n\n// @todo if (fill[0] === '#')\nfunction decodeFill(el, index, count) {\n\tvar model = el._model || {};\n\tvar fill = model.fill;\n\tvar target;\n\n\tif (fill === undefined) {\n\t\tfill = !!model.backgroundColor;\n\t}\n\n\tif (fill === false || fill === null) {\n\t\treturn false;\n\t}\n\n\tif (fill === true) {\n\t\treturn 'origin';\n\t}\n\n\ttarget = parseFloat(fill, 10);\n\tif (isFinite(target) && Math.floor(target) === target) {\n\t\tif (fill[0] === '-' || fill[0] === '+') {\n\t\t\ttarget = index + target;\n\t\t}\n\n\t\tif (target === index || target < 0 || target >= count) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn target;\n\t}\n\n\tswitch (fill) {\n\t// compatibility\n\tcase 'bottom':\n\t\treturn 'start';\n\tcase 'top':\n\t\treturn 'end';\n\tcase 'zero':\n\t\treturn 'origin';\n\t// supported boundaries\n\tcase 'origin':\n\tcase 'start':\n\tcase 'end':\n\t\treturn fill;\n\t// invalid fill values\n\tdefault:\n\t\treturn false;\n\t}\n}\n\nfunction computeBoundary(source) {\n\tvar model = source.el._model || {};\n\tvar scale = source.el._scale || {};\n\tvar fill = source.fill;\n\tvar target = null;\n\tvar horizontal;\n\n\tif (isFinite(fill)) {\n\t\treturn null;\n\t}\n\n\t// Backward compatibility: until v3, we still need to support boundary values set on\n\t// the model (scaleTop, scaleBottom and scaleZero) because some external plugins and\n\t// controllers might still use it (e.g. the Smith chart).\n\n\tif (fill === 'start') {\n\t\ttarget = model.scaleBottom === undefined ? scale.bottom : model.scaleBottom;\n\t} else if (fill === 'end') {\n\t\ttarget = model.scaleTop === undefined ? scale.top : model.scaleTop;\n\t} else if (model.scaleZero !== undefined) {\n\t\ttarget = model.scaleZero;\n\t} else if (scale.getBasePosition) {\n\t\ttarget = scale.getBasePosition();\n\t} else if (scale.getBasePixel) {\n\t\ttarget = scale.getBasePixel();\n\t}\n\n\tif (target !== undefined && target !== null) {\n\t\tif (target.x !== undefined && target.y !== undefined) {\n\t\t\treturn target;\n\t\t}\n\n\t\tif (typeof target === 'number' && isFinite(target)) {\n\t\t\thorizontal = scale.isHorizontal();\n\t\t\treturn {\n\t\t\t\tx: horizontal ? target : null,\n\t\t\t\ty: horizontal ? null : target\n\t\t\t};\n\t\t}\n\t}\n\n\treturn null;\n}\n\nfunction resolveTarget(sources, index, propagate) {\n\tvar source = sources[index];\n\tvar fill = source.fill;\n\tvar visited = [index];\n\tvar target;\n\n\tif (!propagate) {\n\t\treturn fill;\n\t}\n\n\twhile (fill !== false && visited.indexOf(fill) === -1) {\n\t\tif (!isFinite(fill)) {\n\t\t\treturn fill;\n\t\t}\n\n\t\ttarget = sources[fill];\n\t\tif (!target) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (target.visible) {\n\t\t\treturn fill;\n\t\t}\n\n\t\tvisited.push(fill);\n\t\tfill = target.fill;\n\t}\n\n\treturn false;\n}\n\nfunction createMapper(source) {\n\tvar fill = source.fill;\n\tvar type = 'dataset';\n\n\tif (fill === false) {\n\t\treturn null;\n\t}\n\n\tif (!isFinite(fill)) {\n\t\ttype = 'boundary';\n\t}\n\n\treturn mappers[type](source);\n}\n\nfunction isDrawable(point) {\n\treturn point && !point.skip;\n}\n\nfunction drawArea(ctx, curve0, curve1, len0, len1) {\n\tvar i;\n\n\tif (!len0 || !len1) {\n\t\treturn;\n\t}\n\n\t// building first area curve (normal)\n\tctx.moveTo(curve0[0].x, curve0[0].y);\n\tfor (i = 1; i < len0; ++i) {\n\t\thelpers.canvas.lineTo(ctx, curve0[i - 1], curve0[i]);\n\t}\n\n\t// joining the two area curves\n\tctx.lineTo(curve1[len1 - 1].x, curve1[len1 - 1].y);\n\n\t// building opposite area curve (reverse)\n\tfor (i = len1 - 1; i > 0; --i) {\n\t\thelpers.canvas.lineTo(ctx, curve1[i], curve1[i - 1], true);\n\t}\n}\n\nfunction doFill(ctx, points, mapper, view, color, loop) {\n\tvar count = points.length;\n\tvar span = view.spanGaps;\n\tvar curve0 = [];\n\tvar curve1 = [];\n\tvar len0 = 0;\n\tvar len1 = 0;\n\tvar i, ilen, index, p0, p1, d0, d1;\n\n\tctx.beginPath();\n\n\tfor (i = 0, ilen = (count + !!loop); i < ilen; ++i) {\n\t\tindex = i % count;\n\t\tp0 = points[index]._view;\n\t\tp1 = mapper(p0, index, view);\n\t\td0 = isDrawable(p0);\n\t\td1 = isDrawable(p1);\n\n\t\tif (d0 && d1) {\n\t\t\tlen0 = curve0.push(p0);\n\t\t\tlen1 = curve1.push(p1);\n\t\t} else if (len0 && len1) {\n\t\t\tif (!span) {\n\t\t\t\tdrawArea(ctx, curve0, curve1, len0, len1);\n\t\t\t\tlen0 = len1 = 0;\n\t\t\t\tcurve0 = [];\n\t\t\t\tcurve1 = [];\n\t\t\t} else {\n\t\t\t\tif (d0) {\n\t\t\t\t\tcurve0.push(p0);\n\t\t\t\t}\n\t\t\t\tif (d1) {\n\t\t\t\t\tcurve1.push(p1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tdrawArea(ctx, curve0, curve1, len0, len1);\n\n\tctx.closePath();\n\tctx.fillStyle = color;\n\tctx.fill();\n}\n\nmodule.exports = {\n\tid: 'filler',\n\n\tafterDatasetsUpdate: function(chart, options) {\n\t\tvar count = (chart.data.datasets || []).length;\n\t\tvar propagate = options.propagate;\n\t\tvar sources = [];\n\t\tvar meta, i, el, source;\n\n\t\tfor (i = 0; i < count; ++i) {\n\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\tel = meta.dataset;\n\t\t\tsource = null;\n\n\t\t\tif (el && el._model && el instanceof elements.Line) {\n\t\t\t\tsource = {\n\t\t\t\t\tvisible: chart.isDatasetVisible(i),\n\t\t\t\t\tfill: decodeFill(el, i, count),\n\t\t\t\t\tchart: chart,\n\t\t\t\t\tel: el\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tmeta.$filler = source;\n\t\t\tsources.push(source);\n\t\t}\n\n\t\tfor (i = 0; i < count; ++i) {\n\t\t\tsource = sources[i];\n\t\t\tif (!source) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tsource.fill = resolveTarget(sources, i, propagate);\n\t\t\tsource.boundary = computeBoundary(source);\n\t\t\tsource.mapper = createMapper(source);\n\t\t}\n\t},\n\n\tbeforeDatasetDraw: function(chart, args) {\n\t\tvar meta = args.meta.$filler;\n\t\tif (!meta) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar ctx = chart.ctx;\n\t\tvar el = meta.el;\n\t\tvar view = el._view;\n\t\tvar points = el._children || [];\n\t\tvar mapper = meta.mapper;\n\t\tvar color = view.backgroundColor || defaults.global.defaultColor;\n\n\t\tif (mapper && color && points.length) {\n\t\t\thelpers.canvas.clipArea(ctx, chart.chartArea);\n\t\t\tdoFill(ctx, points, mapper, view, color, el._loop);\n\t\t\thelpers.canvas.unclipArea(ctx);\n\t\t}\n\t}\n};\n\n},{\"26\":26,\"41\":41,\"46\":46}],52:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar Element = require(27);\nvar helpers = require(46);\nvar layouts = require(31);\n\nvar noop = helpers.noop;\n\ndefaults._set('global', {\n\tlegend: {\n\t\tdisplay: true,\n\t\tposition: 'top',\n\t\tfullWidth: true,\n\t\treverse: false,\n\t\tweight: 1000,\n\n\t\t// a callback that will handle\n\t\tonClick: function(e, legendItem) {\n\t\t\tvar index = legendItem.datasetIndex;\n\t\t\tvar ci = this.chart;\n\t\t\tvar meta = ci.getDatasetMeta(index);\n\n\t\t\t// See controller.isDatasetVisible comment\n\t\t\tmeta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null;\n\n\t\t\t// We hid a dataset ... rerender the chart\n\t\t\tci.update();\n\t\t},\n\n\t\tonHover: null,\n\n\t\tlabels: {\n\t\t\tboxWidth: 40,\n\t\t\tpadding: 10,\n\t\t\t// Generates labels shown in the legend\n\t\t\t// Valid properties to return:\n\t\t\t// text : text to display\n\t\t\t// fillStyle : fill of coloured box\n\t\t\t// strokeStyle: stroke of coloured box\n\t\t\t// hidden : if this legend item refers to a hidden item\n\t\t\t// lineCap : cap style for line\n\t\t\t// lineDash\n\t\t\t// lineDashOffset :\n\t\t\t// lineJoin :\n\t\t\t// lineWidth :\n\t\t\tgenerateLabels: function(chart) {\n\t\t\t\tvar data = chart.data;\n\t\t\t\treturn helpers.isArray(data.datasets) ? data.datasets.map(function(dataset, i) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttext: dataset.label,\n\t\t\t\t\t\tfillStyle: (!helpers.isArray(dataset.backgroundColor) ? dataset.backgroundColor : dataset.backgroundColor[0]),\n\t\t\t\t\t\thidden: !chart.isDatasetVisible(i),\n\t\t\t\t\t\tlineCap: dataset.borderCapStyle,\n\t\t\t\t\t\tlineDash: dataset.borderDash,\n\t\t\t\t\t\tlineDashOffset: dataset.borderDashOffset,\n\t\t\t\t\t\tlineJoin: dataset.borderJoinStyle,\n\t\t\t\t\t\tlineWidth: dataset.borderWidth,\n\t\t\t\t\t\tstrokeStyle: dataset.borderColor,\n\t\t\t\t\t\tpointStyle: dataset.pointStyle,\n\n\t\t\t\t\t\t// Below is extra data used for toggling the datasets\n\t\t\t\t\t\tdatasetIndex: i\n\t\t\t\t\t};\n\t\t\t\t}, this) : [];\n\t\t\t}\n\t\t}\n\t},\n\n\tlegendCallback: function(chart) {\n\t\tvar text = [];\n\t\ttext.push('
    ');\n\t\tfor (var i = 0; i < chart.data.datasets.length; i++) {\n\t\t\ttext.push('
  • ');\n\t\t\tif (chart.data.datasets[i].label) {\n\t\t\t\ttext.push(chart.data.datasets[i].label);\n\t\t\t}\n\t\t\ttext.push('
  • ');\n\t\t}\n\t\ttext.push('
');\n\t\treturn text.join('');\n\t}\n});\n\n/**\n * Helper function to get the box width based on the usePointStyle option\n * @param labelopts {Object} the label options on the legend\n * @param fontSize {Number} the label font size\n * @return {Number} width of the color box area\n */\nfunction getBoxWidth(labelOpts, fontSize) {\n\treturn labelOpts.usePointStyle ?\n\t\tfontSize * Math.SQRT2 :\n\t\tlabelOpts.boxWidth;\n}\n\n/**\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\n */\nvar Legend = Element.extend({\n\n\tinitialize: function(config) {\n\t\thelpers.extend(this, config);\n\n\t\t// Contains hit boxes for each dataset (in dataset order)\n\t\tthis.legendHitBoxes = [];\n\n\t\t// Are we in doughnut mode which has a different data type\n\t\tthis.doughnutMode = false;\n\t},\n\n\t// These methods are ordered by lifecycle. Utilities then follow.\n\t// Any function defined here is inherited by all legend types.\n\t// Any function can be extended by the legend type\n\n\tbeforeUpdate: noop,\n\tupdate: function(maxWidth, maxHeight, margins) {\n\t\tvar me = this;\n\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\tme.beforeUpdate();\n\n\t\t// Absorb the master measurements\n\t\tme.maxWidth = maxWidth;\n\t\tme.maxHeight = maxHeight;\n\t\tme.margins = margins;\n\n\t\t// Dimensions\n\t\tme.beforeSetDimensions();\n\t\tme.setDimensions();\n\t\tme.afterSetDimensions();\n\t\t// Labels\n\t\tme.beforeBuildLabels();\n\t\tme.buildLabels();\n\t\tme.afterBuildLabels();\n\n\t\t// Fit\n\t\tme.beforeFit();\n\t\tme.fit();\n\t\tme.afterFit();\n\t\t//\n\t\tme.afterUpdate();\n\n\t\treturn me.minSize;\n\t},\n\tafterUpdate: noop,\n\n\t//\n\n\tbeforeSetDimensions: noop,\n\tsetDimensions: function() {\n\t\tvar me = this;\n\t\t// Set the unconstrained dimension before label rotation\n\t\tif (me.isHorizontal()) {\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.left = 0;\n\t\t\tme.right = me.width;\n\t\t} else {\n\t\t\tme.height = me.maxHeight;\n\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.top = 0;\n\t\t\tme.bottom = me.height;\n\t\t}\n\n\t\t// Reset padding\n\t\tme.paddingLeft = 0;\n\t\tme.paddingTop = 0;\n\t\tme.paddingRight = 0;\n\t\tme.paddingBottom = 0;\n\n\t\t// Reset minSize\n\t\tme.minSize = {\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\t},\n\tafterSetDimensions: noop,\n\n\t//\n\n\tbeforeBuildLabels: noop,\n\tbuildLabels: function() {\n\t\tvar me = this;\n\t\tvar labelOpts = me.options.labels || {};\n\t\tvar legendItems = helpers.callback(labelOpts.generateLabels, [me.chart], me) || [];\n\n\t\tif (labelOpts.filter) {\n\t\t\tlegendItems = legendItems.filter(function(item) {\n\t\t\t\treturn labelOpts.filter(item, me.chart.data);\n\t\t\t});\n\t\t}\n\n\t\tif (me.options.reverse) {\n\t\t\tlegendItems.reverse();\n\t\t}\n\n\t\tme.legendItems = legendItems;\n\t},\n\tafterBuildLabels: noop,\n\n\t//\n\n\tbeforeFit: noop,\n\tfit: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar labelOpts = opts.labels;\n\t\tvar display = opts.display;\n\n\t\tvar ctx = me.ctx;\n\n\t\tvar globalDefault = defaults.global;\n\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\tvar fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize);\n\t\tvar fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle);\n\t\tvar fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily);\n\t\tvar labelFont = helpers.fontString(fontSize, fontStyle, fontFamily);\n\n\t\t// Reset hit boxes\n\t\tvar hitboxes = me.legendHitBoxes = [];\n\n\t\tvar minSize = me.minSize;\n\t\tvar isHorizontal = me.isHorizontal();\n\n\t\tif (isHorizontal) {\n\t\t\tminSize.width = me.maxWidth; // fill all the width\n\t\t\tminSize.height = display ? 10 : 0;\n\t\t} else {\n\t\t\tminSize.width = display ? 10 : 0;\n\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t}\n\n\t\t// Increase sizes here\n\t\tif (display) {\n\t\t\tctx.font = labelFont;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\t// Labels\n\n\t\t\t\t// Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one\n\t\t\t\tvar lineWidths = me.lineWidths = [0];\n\t\t\t\tvar totalHeight = me.legendItems.length ? fontSize + (labelOpts.padding) : 0;\n\n\t\t\t\tctx.textAlign = 'left';\n\t\t\t\tctx.textBaseline = 'top';\n\n\t\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\n\t\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\n\t\t\t\t\tvar width = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n\t\t\t\t\tif (lineWidths[lineWidths.length - 1] + width + labelOpts.padding >= me.width) {\n\t\t\t\t\t\ttotalHeight += fontSize + (labelOpts.padding);\n\t\t\t\t\t\tlineWidths[lineWidths.length] = me.left;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\n\t\t\t\t\thitboxes[i] = {\n\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\theight: fontSize\n\t\t\t\t\t};\n\n\t\t\t\t\tlineWidths[lineWidths.length - 1] += width + labelOpts.padding;\n\t\t\t\t});\n\n\t\t\t\tminSize.height += totalHeight;\n\n\t\t\t} else {\n\t\t\t\tvar vPadding = labelOpts.padding;\n\t\t\t\tvar columnWidths = me.columnWidths = [];\n\t\t\t\tvar totalWidth = labelOpts.padding;\n\t\t\t\tvar currentColWidth = 0;\n\t\t\t\tvar currentColHeight = 0;\n\t\t\t\tvar itemHeight = fontSize + vPadding;\n\n\t\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\n\t\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\n\t\t\t\t\tvar itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n\t\t\t\t\t// If too tall, go to new column\n\t\t\t\t\tif (currentColHeight + itemHeight > minSize.height) {\n\t\t\t\t\t\ttotalWidth += currentColWidth + labelOpts.padding;\n\t\t\t\t\t\tcolumnWidths.push(currentColWidth); // previous column width\n\n\t\t\t\t\t\tcurrentColWidth = 0;\n\t\t\t\t\t\tcurrentColHeight = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Get max width\n\t\t\t\t\tcurrentColWidth = Math.max(currentColWidth, itemWidth);\n\t\t\t\t\tcurrentColHeight += itemHeight;\n\n\t\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\n\t\t\t\t\thitboxes[i] = {\n\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\twidth: itemWidth,\n\t\t\t\t\t\theight: fontSize\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t\ttotalWidth += currentColWidth;\n\t\t\t\tcolumnWidths.push(currentColWidth);\n\t\t\t\tminSize.width += totalWidth;\n\t\t\t}\n\t\t}\n\n\t\tme.width = minSize.width;\n\t\tme.height = minSize.height;\n\t},\n\tafterFit: noop,\n\n\t// Shared Methods\n\tisHorizontal: function() {\n\t\treturn this.options.position === 'top' || this.options.position === 'bottom';\n\t},\n\n\t// Actually draw the legend on the canvas\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar labelOpts = opts.labels;\n\t\tvar globalDefault = defaults.global;\n\t\tvar lineDefault = globalDefault.elements.line;\n\t\tvar legendWidth = me.width;\n\t\tvar lineWidths = me.lineWidths;\n\n\t\tif (opts.display) {\n\t\t\tvar ctx = me.ctx;\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\t\tvar fontColor = valueOrDefault(labelOpts.fontColor, globalDefault.defaultFontColor);\n\t\t\tvar fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize);\n\t\t\tvar fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle);\n\t\t\tvar fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily);\n\t\t\tvar labelFont = helpers.fontString(fontSize, fontStyle, fontFamily);\n\t\t\tvar cursor;\n\n\t\t\t// Canvas setup\n\t\t\tctx.textAlign = 'left';\n\t\t\tctx.textBaseline = 'middle';\n\t\t\tctx.lineWidth = 0.5;\n\t\t\tctx.strokeStyle = fontColor; // for strikethrough effect\n\t\t\tctx.fillStyle = fontColor; // render in correct colour\n\t\t\tctx.font = labelFont;\n\n\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\n\t\t\tvar hitboxes = me.legendHitBoxes;\n\n\t\t\t// current position\n\t\t\tvar drawLegendBox = function(x, y, legendItem) {\n\t\t\t\tif (isNaN(boxWidth) || boxWidth <= 0) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Set the ctx for the box\n\t\t\t\tctx.save();\n\n\t\t\t\tctx.fillStyle = valueOrDefault(legendItem.fillStyle, globalDefault.defaultColor);\n\t\t\t\tctx.lineCap = valueOrDefault(legendItem.lineCap, lineDefault.borderCapStyle);\n\t\t\t\tctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, lineDefault.borderDashOffset);\n\t\t\t\tctx.lineJoin = valueOrDefault(legendItem.lineJoin, lineDefault.borderJoinStyle);\n\t\t\t\tctx.lineWidth = valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth);\n\t\t\t\tctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, globalDefault.defaultColor);\n\t\t\t\tvar isLineWidthZero = (valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth) === 0);\n\n\t\t\t\tif (ctx.setLineDash) {\n\t\t\t\t\t// IE 9 and 10 do not support line dash\n\t\t\t\t\tctx.setLineDash(valueOrDefault(legendItem.lineDash, lineDefault.borderDash));\n\t\t\t\t}\n\n\t\t\t\tif (opts.labels && opts.labels.usePointStyle) {\n\t\t\t\t\t// Recalculate x and y for drawPoint() because its expecting\n\t\t\t\t\t// x and y to be center of figure (instead of top left)\n\t\t\t\t\tvar radius = fontSize * Math.SQRT2 / 2;\n\t\t\t\t\tvar offSet = radius / Math.SQRT2;\n\t\t\t\t\tvar centerX = x + offSet;\n\t\t\t\t\tvar centerY = y + offSet;\n\n\t\t\t\t\t// Draw pointStyle as legend symbol\n\t\t\t\t\thelpers.canvas.drawPoint(ctx, legendItem.pointStyle, radius, centerX, centerY);\n\t\t\t\t} else {\n\t\t\t\t\t// Draw box as legend symbol\n\t\t\t\t\tif (!isLineWidthZero) {\n\t\t\t\t\t\tctx.strokeRect(x, y, boxWidth, fontSize);\n\t\t\t\t\t}\n\t\t\t\t\tctx.fillRect(x, y, boxWidth, fontSize);\n\t\t\t\t}\n\n\t\t\t\tctx.restore();\n\t\t\t};\n\t\t\tvar fillText = function(x, y, legendItem, textWidth) {\n\t\t\t\tvar halfFontSize = fontSize / 2;\n\t\t\t\tvar xLeft = boxWidth + halfFontSize + x;\n\t\t\t\tvar yMiddle = y + halfFontSize;\n\n\t\t\t\tctx.fillText(legendItem.text, xLeft, yMiddle);\n\n\t\t\t\tif (legendItem.hidden) {\n\t\t\t\t\t// Strikethrough the text if hidden\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.lineWidth = 2;\n\t\t\t\t\tctx.moveTo(xLeft, yMiddle);\n\t\t\t\t\tctx.lineTo(xLeft + textWidth, yMiddle);\n\t\t\t\t\tctx.stroke();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// Horizontal\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tif (isHorizontal) {\n\t\t\t\tcursor = {\n\t\t\t\t\tx: me.left + ((legendWidth - lineWidths[0]) / 2),\n\t\t\t\t\ty: me.top + labelOpts.padding,\n\t\t\t\t\tline: 0\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tcursor = {\n\t\t\t\t\tx: me.left + labelOpts.padding,\n\t\t\t\t\ty: me.top + labelOpts.padding,\n\t\t\t\t\tline: 0\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tvar itemHeight = fontSize + labelOpts.padding;\n\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\n\t\t\t\tvar textWidth = ctx.measureText(legendItem.text).width;\n\t\t\t\tvar width = boxWidth + (fontSize / 2) + textWidth;\n\t\t\t\tvar x = cursor.x;\n\t\t\t\tvar y = cursor.y;\n\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\tif (x + width >= legendWidth) {\n\t\t\t\t\t\ty = cursor.y += itemHeight;\n\t\t\t\t\t\tcursor.line++;\n\t\t\t\t\t\tx = cursor.x = me.left + ((legendWidth - lineWidths[cursor.line]) / 2);\n\t\t\t\t\t}\n\t\t\t\t} else if (y + itemHeight > me.bottom) {\n\t\t\t\t\tx = cursor.x = x + me.columnWidths[cursor.line] + labelOpts.padding;\n\t\t\t\t\ty = cursor.y = me.top + labelOpts.padding;\n\t\t\t\t\tcursor.line++;\n\t\t\t\t}\n\n\t\t\t\tdrawLegendBox(x, y, legendItem);\n\n\t\t\t\thitboxes[i].left = x;\n\t\t\t\thitboxes[i].top = y;\n\n\t\t\t\t// Fill the actual label\n\t\t\t\tfillText(x, y, legendItem, textWidth);\n\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\tcursor.x += width + (labelOpts.padding);\n\t\t\t\t} else {\n\t\t\t\t\tcursor.y += itemHeight;\n\t\t\t\t}\n\n\t\t\t});\n\t\t}\n\t},\n\n\t/**\n\t * Handle an event\n\t * @private\n\t * @param {IEvent} event - The event to handle\n\t * @return {Boolean} true if a change occured\n\t */\n\thandleEvent: function(e) {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar type = e.type === 'mouseup' ? 'click' : e.type;\n\t\tvar changed = false;\n\n\t\tif (type === 'mousemove') {\n\t\t\tif (!opts.onHover) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (type === 'click') {\n\t\t\tif (!opts.onClick) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\n\t\t// Chart event already has relative position in it\n\t\tvar x = e.x;\n\t\tvar y = e.y;\n\n\t\tif (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) {\n\t\t\t// See if we are touching one of the dataset boxes\n\t\t\tvar lh = me.legendHitBoxes;\n\t\t\tfor (var i = 0; i < lh.length; ++i) {\n\t\t\t\tvar hitBox = lh[i];\n\n\t\t\t\tif (x >= hitBox.left && x <= hitBox.left + hitBox.width && y >= hitBox.top && y <= hitBox.top + hitBox.height) {\n\t\t\t\t\t// Touching an element\n\t\t\t\t\tif (type === 'click') {\n\t\t\t\t\t\t// use e.native for backwards compatibility\n\t\t\t\t\t\topts.onClick.call(me, e.native, me.legendItems[i]);\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else if (type === 'mousemove') {\n\t\t\t\t\t\t// use e.native for backwards compatibility\n\t\t\t\t\t\topts.onHover.call(me, e.native, me.legendItems[i]);\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn changed;\n\t}\n});\n\nfunction createNewLegendAndAttach(chart, legendOpts) {\n\tvar legend = new Legend({\n\t\tctx: chart.ctx,\n\t\toptions: legendOpts,\n\t\tchart: chart\n\t});\n\n\tlayouts.configure(chart, legend, legendOpts);\n\tlayouts.addBox(chart, legend);\n\tchart.legend = legend;\n}\n\nmodule.exports = {\n\tid: 'legend',\n\n\t/**\n\t * Backward compatibility: since 2.1.5, the legend is registered as a plugin, making\n\t * Chart.Legend obsolete. To avoid a breaking change, we export the Legend as part of\n\t * the plugin, which one will be re-exposed in the chart.js file.\n\t * https://github.com/chartjs/Chart.js/pull/2640\n\t * @private\n\t */\n\t_element: Legend,\n\n\tbeforeInit: function(chart) {\n\t\tvar legendOpts = chart.options.legend;\n\n\t\tif (legendOpts) {\n\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\n\t\t}\n\t},\n\n\tbeforeUpdate: function(chart) {\n\t\tvar legendOpts = chart.options.legend;\n\t\tvar legend = chart.legend;\n\n\t\tif (legendOpts) {\n\t\t\thelpers.mergeIf(legendOpts, defaults.global.legend);\n\n\t\t\tif (legend) {\n\t\t\t\tlayouts.configure(chart, legend, legendOpts);\n\t\t\t\tlegend.options = legendOpts;\n\t\t\t} else {\n\t\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\n\t\t\t}\n\t\t} else if (legend) {\n\t\t\tlayouts.removeBox(chart, legend);\n\t\t\tdelete chart.legend;\n\t\t}\n\t},\n\n\tafterEvent: function(chart, e) {\n\t\tvar legend = chart.legend;\n\t\tif (legend) {\n\t\t\tlegend.handleEvent(e);\n\t\t}\n\t}\n};\n\n},{\"26\":26,\"27\":27,\"31\":31,\"46\":46}],53:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar Element = require(27);\nvar helpers = require(46);\nvar layouts = require(31);\n\nvar noop = helpers.noop;\n\ndefaults._set('global', {\n\ttitle: {\n\t\tdisplay: false,\n\t\tfontStyle: 'bold',\n\t\tfullWidth: true,\n\t\tlineHeight: 1.2,\n\t\tpadding: 10,\n\t\tposition: 'top',\n\t\ttext: '',\n\t\tweight: 2000 // by default greater than legend (1000) to be above\n\t}\n});\n\n/**\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\n */\nvar Title = Element.extend({\n\tinitialize: function(config) {\n\t\tvar me = this;\n\t\thelpers.extend(me, config);\n\n\t\t// Contains hit boxes for each dataset (in dataset order)\n\t\tme.legendHitBoxes = [];\n\t},\n\n\t// These methods are ordered by lifecycle. Utilities then follow.\n\n\tbeforeUpdate: noop,\n\tupdate: function(maxWidth, maxHeight, margins) {\n\t\tvar me = this;\n\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\tme.beforeUpdate();\n\n\t\t// Absorb the master measurements\n\t\tme.maxWidth = maxWidth;\n\t\tme.maxHeight = maxHeight;\n\t\tme.margins = margins;\n\n\t\t// Dimensions\n\t\tme.beforeSetDimensions();\n\t\tme.setDimensions();\n\t\tme.afterSetDimensions();\n\t\t// Labels\n\t\tme.beforeBuildLabels();\n\t\tme.buildLabels();\n\t\tme.afterBuildLabels();\n\n\t\t// Fit\n\t\tme.beforeFit();\n\t\tme.fit();\n\t\tme.afterFit();\n\t\t//\n\t\tme.afterUpdate();\n\n\t\treturn me.minSize;\n\n\t},\n\tafterUpdate: noop,\n\n\t//\n\n\tbeforeSetDimensions: noop,\n\tsetDimensions: function() {\n\t\tvar me = this;\n\t\t// Set the unconstrained dimension before label rotation\n\t\tif (me.isHorizontal()) {\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.left = 0;\n\t\t\tme.right = me.width;\n\t\t} else {\n\t\t\tme.height = me.maxHeight;\n\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.top = 0;\n\t\t\tme.bottom = me.height;\n\t\t}\n\n\t\t// Reset padding\n\t\tme.paddingLeft = 0;\n\t\tme.paddingTop = 0;\n\t\tme.paddingRight = 0;\n\t\tme.paddingBottom = 0;\n\n\t\t// Reset minSize\n\t\tme.minSize = {\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\t},\n\tafterSetDimensions: noop,\n\n\t//\n\n\tbeforeBuildLabels: noop,\n\tbuildLabels: noop,\n\tafterBuildLabels: noop,\n\n\t//\n\n\tbeforeFit: noop,\n\tfit: function() {\n\t\tvar me = this;\n\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\tvar opts = me.options;\n\t\tvar display = opts.display;\n\t\tvar fontSize = valueOrDefault(opts.fontSize, defaults.global.defaultFontSize);\n\t\tvar minSize = me.minSize;\n\t\tvar lineCount = helpers.isArray(opts.text) ? opts.text.length : 1;\n\t\tvar lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize);\n\t\tvar textSize = display ? (lineCount * lineHeight) + (opts.padding * 2) : 0;\n\n\t\tif (me.isHorizontal()) {\n\t\t\tminSize.width = me.maxWidth; // fill all the width\n\t\t\tminSize.height = textSize;\n\t\t} else {\n\t\t\tminSize.width = textSize;\n\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t}\n\n\t\tme.width = minSize.width;\n\t\tme.height = minSize.height;\n\n\t},\n\tafterFit: noop,\n\n\t// Shared Methods\n\tisHorizontal: function() {\n\t\tvar pos = this.options.position;\n\t\treturn pos === 'top' || pos === 'bottom';\n\t},\n\n\t// Actually draw the title block on the canvas\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar ctx = me.ctx;\n\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\tvar opts = me.options;\n\t\tvar globalDefaults = defaults.global;\n\n\t\tif (opts.display) {\n\t\t\tvar fontSize = valueOrDefault(opts.fontSize, globalDefaults.defaultFontSize);\n\t\t\tvar fontStyle = valueOrDefault(opts.fontStyle, globalDefaults.defaultFontStyle);\n\t\t\tvar fontFamily = valueOrDefault(opts.fontFamily, globalDefaults.defaultFontFamily);\n\t\t\tvar titleFont = helpers.fontString(fontSize, fontStyle, fontFamily);\n\t\t\tvar lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize);\n\t\t\tvar offset = lineHeight / 2 + opts.padding;\n\t\t\tvar rotation = 0;\n\t\t\tvar top = me.top;\n\t\t\tvar left = me.left;\n\t\t\tvar bottom = me.bottom;\n\t\t\tvar right = me.right;\n\t\t\tvar maxWidth, titleX, titleY;\n\n\t\t\tctx.fillStyle = valueOrDefault(opts.fontColor, globalDefaults.defaultFontColor); // render in correct colour\n\t\t\tctx.font = titleFont;\n\n\t\t\t// Horizontal\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\ttitleX = left + ((right - left) / 2); // midpoint of the width\n\t\t\t\ttitleY = top + offset;\n\t\t\t\tmaxWidth = right - left;\n\t\t\t} else {\n\t\t\t\ttitleX = opts.position === 'left' ? left + offset : right - offset;\n\t\t\t\ttitleY = top + ((bottom - top) / 2);\n\t\t\t\tmaxWidth = bottom - top;\n\t\t\t\trotation = Math.PI * (opts.position === 'left' ? -0.5 : 0.5);\n\t\t\t}\n\n\t\t\tctx.save();\n\t\t\tctx.translate(titleX, titleY);\n\t\t\tctx.rotate(rotation);\n\t\t\tctx.textAlign = 'center';\n\t\t\tctx.textBaseline = 'middle';\n\n\t\t\tvar text = opts.text;\n\t\t\tif (helpers.isArray(text)) {\n\t\t\t\tvar y = 0;\n\t\t\t\tfor (var i = 0; i < text.length; ++i) {\n\t\t\t\t\tctx.fillText(text[i], 0, y, maxWidth);\n\t\t\t\t\ty += lineHeight;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tctx.fillText(text, 0, 0, maxWidth);\n\t\t\t}\n\n\t\t\tctx.restore();\n\t\t}\n\t}\n});\n\nfunction createNewTitleBlockAndAttach(chart, titleOpts) {\n\tvar title = new Title({\n\t\tctx: chart.ctx,\n\t\toptions: titleOpts,\n\t\tchart: chart\n\t});\n\n\tlayouts.configure(chart, title, titleOpts);\n\tlayouts.addBox(chart, title);\n\tchart.titleBlock = title;\n}\n\nmodule.exports = {\n\tid: 'title',\n\n\t/**\n\t * Backward compatibility: since 2.1.5, the title is registered as a plugin, making\n\t * Chart.Title obsolete. To avoid a breaking change, we export the Title as part of\n\t * the plugin, which one will be re-exposed in the chart.js file.\n\t * https://github.com/chartjs/Chart.js/pull/2640\n\t * @private\n\t */\n\t_element: Title,\n\n\tbeforeInit: function(chart) {\n\t\tvar titleOpts = chart.options.title;\n\n\t\tif (titleOpts) {\n\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\n\t\t}\n\t},\n\n\tbeforeUpdate: function(chart) {\n\t\tvar titleOpts = chart.options.title;\n\t\tvar titleBlock = chart.titleBlock;\n\n\t\tif (titleOpts) {\n\t\t\thelpers.mergeIf(titleOpts, defaults.global.title);\n\n\t\t\tif (titleBlock) {\n\t\t\t\tlayouts.configure(chart, titleBlock, titleOpts);\n\t\t\t\ttitleBlock.options = titleOpts;\n\t\t\t} else {\n\t\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\n\t\t\t}\n\t\t} else if (titleBlock) {\n\t\t\tlayouts.removeBox(chart, titleBlock);\n\t\t\tdelete chart.titleBlock;\n\t\t}\n\t}\n};\n\n},{\"26\":26,\"27\":27,\"31\":31,\"46\":46}],54:[function(require,module,exports){\n'use strict';\n\nvar Scale = require(33);\nvar scaleService = require(34);\n\nmodule.exports = function() {\n\n\t// Default config for a category scale\n\tvar defaultConfig = {\n\t\tposition: 'bottom'\n\t};\n\n\tvar DatasetScale = Scale.extend({\n\t\t/**\n\t\t* Internal function to get the correct labels. If data.xLabels or data.yLabels are defined, use those\n\t\t* else fall back to data.labels\n\t\t* @private\n\t\t*/\n\t\tgetLabels: function() {\n\t\t\tvar data = this.chart.data;\n\t\t\treturn this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels;\n\t\t},\n\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar labels = me.getLabels();\n\t\t\tme.minIndex = 0;\n\t\t\tme.maxIndex = labels.length - 1;\n\t\t\tvar findIndex;\n\n\t\t\tif (me.options.ticks.min !== undefined) {\n\t\t\t\t// user specified min value\n\t\t\t\tfindIndex = labels.indexOf(me.options.ticks.min);\n\t\t\t\tme.minIndex = findIndex !== -1 ? findIndex : me.minIndex;\n\t\t\t}\n\n\t\t\tif (me.options.ticks.max !== undefined) {\n\t\t\t\t// user specified max value\n\t\t\t\tfindIndex = labels.indexOf(me.options.ticks.max);\n\t\t\t\tme.maxIndex = findIndex !== -1 ? findIndex : me.maxIndex;\n\t\t\t}\n\n\t\t\tme.min = labels[me.minIndex];\n\t\t\tme.max = labels[me.maxIndex];\n\t\t},\n\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar labels = me.getLabels();\n\t\t\t// If we are viewing some subset of labels, slice the original array\n\t\t\tme.ticks = (me.minIndex === 0 && me.maxIndex === labels.length - 1) ? labels : labels.slice(me.minIndex, me.maxIndex + 1);\n\t\t},\n\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar data = me.chart.data;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\n\t\t\tif (data.yLabels && !isHorizontal) {\n\t\t\t\treturn me.getRightValue(data.datasets[datasetIndex].data[index]);\n\t\t\t}\n\t\t\treturn me.ticks[index - me.minIndex];\n\t\t},\n\n\t\t// Used to get data value locations. Value can either be an index or a numerical value\n\t\tgetPixelForValue: function(value, index) {\n\t\t\tvar me = this;\n\t\t\tvar offset = me.options.offset;\n\t\t\t// 1 is added because we need the length but we have the indexes\n\t\t\tvar offsetAmt = Math.max((me.maxIndex + 1 - me.minIndex - (offset ? 0 : 1)), 1);\n\n\t\t\t// If value is a data object, then index is the index in the data array,\n\t\t\t// not the index of the scale. We need to change that.\n\t\t\tvar valueCategory;\n\t\t\tif (value !== undefined && value !== null) {\n\t\t\t\tvalueCategory = me.isHorizontal() ? value.x : value.y;\n\t\t\t}\n\t\t\tif (valueCategory !== undefined || (value !== undefined && isNaN(index))) {\n\t\t\t\tvar labels = me.getLabels();\n\t\t\t\tvalue = valueCategory || value;\n\t\t\t\tvar idx = labels.indexOf(value);\n\t\t\t\tindex = idx !== -1 ? idx : index;\n\t\t\t}\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tvar valueWidth = me.width / offsetAmt;\n\t\t\t\tvar widthOffset = (valueWidth * (index - me.minIndex));\n\n\t\t\t\tif (offset) {\n\t\t\t\t\twidthOffset += (valueWidth / 2);\n\t\t\t\t}\n\n\t\t\t\treturn me.left + Math.round(widthOffset);\n\t\t\t}\n\t\t\tvar valueHeight = me.height / offsetAmt;\n\t\t\tvar heightOffset = (valueHeight * (index - me.minIndex));\n\n\t\t\tif (offset) {\n\t\t\t\theightOffset += (valueHeight / 2);\n\t\t\t}\n\n\t\t\treturn me.top + Math.round(heightOffset);\n\t\t},\n\t\tgetPixelForTick: function(index) {\n\t\t\treturn this.getPixelForValue(this.ticks[index], index + this.minIndex, null);\n\t\t},\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar offset = me.options.offset;\n\t\t\tvar value;\n\t\t\tvar offsetAmt = Math.max((me._ticks.length - (offset ? 0 : 1)), 1);\n\t\t\tvar horz = me.isHorizontal();\n\t\t\tvar valueDimension = (horz ? me.width : me.height) / offsetAmt;\n\n\t\t\tpixel -= horz ? me.left : me.top;\n\n\t\t\tif (offset) {\n\t\t\t\tpixel -= (valueDimension / 2);\n\t\t\t}\n\n\t\t\tif (pixel <= 0) {\n\t\t\t\tvalue = 0;\n\t\t\t} else {\n\t\t\t\tvalue = Math.round(pixel / valueDimension);\n\t\t\t}\n\n\t\t\treturn value + me.minIndex;\n\t\t},\n\t\tgetBasePixel: function() {\n\t\t\treturn this.bottom;\n\t\t}\n\t});\n\n\tscaleService.registerScaleType('category', DatasetScale, defaultConfig);\n};\n\n},{\"33\":33,\"34\":34}],55:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar helpers = require(46);\nvar scaleService = require(34);\nvar Ticks = require(35);\n\nmodule.exports = function(Chart) {\n\n\tvar defaultConfig = {\n\t\tposition: 'left',\n\t\tticks: {\n\t\t\tcallback: Ticks.formatters.linear\n\t\t}\n\t};\n\n\tvar LinearScale = Chart.LinearScaleBase.extend({\n\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar chart = me.chart;\n\t\t\tvar data = chart.data;\n\t\t\tvar datasets = data.datasets;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tvar DEFAULT_MIN = 0;\n\t\t\tvar DEFAULT_MAX = 1;\n\n\t\t\tfunction IDMatches(meta) {\n\t\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\n\t\t\t}\n\n\t\t\t// First Calculate the range\n\t\t\tme.min = null;\n\t\t\tme.max = null;\n\n\t\t\tvar hasStacks = opts.stacked;\n\t\t\tif (hasStacks === undefined) {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tif (hasStacks) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\n\t\t\t\t\t\tmeta.stack !== undefined) {\n\t\t\t\t\t\thasStacks = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (opts.stacked || hasStacks) {\n\t\t\t\tvar valuesPerStack = {};\n\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tvar key = [\n\t\t\t\t\t\tmeta.type,\n\t\t\t\t\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\n\t\t\t\t\t\t((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\n\t\t\t\t\t\tmeta.stack\n\t\t\t\t\t].join('.');\n\n\t\t\t\t\tif (valuesPerStack[key] === undefined) {\n\t\t\t\t\t\tvaluesPerStack[key] = {\n\t\t\t\t\t\t\tpositiveValues: [],\n\t\t\t\t\t\t\tnegativeValues: []\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Store these per type\n\t\t\t\t\tvar positiveValues = valuesPerStack[key].positiveValues;\n\t\t\t\t\tvar negativeValues = valuesPerStack[key].negativeValues;\n\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tpositiveValues[index] = positiveValues[index] || 0;\n\t\t\t\t\t\t\tnegativeValues[index] = negativeValues[index] || 0;\n\n\t\t\t\t\t\t\tif (opts.relativePoints) {\n\t\t\t\t\t\t\t\tpositiveValues[index] = 100;\n\t\t\t\t\t\t\t} else if (value < 0) {\n\t\t\t\t\t\t\t\tnegativeValues[index] += value;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tpositiveValues[index] += value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\thelpers.each(valuesPerStack, function(valuesForType) {\n\t\t\t\t\tvar values = valuesForType.positiveValues.concat(valuesForType.negativeValues);\n\t\t\t\t\tvar minVal = helpers.min(values);\n\t\t\t\t\tvar maxVal = helpers.max(values);\n\t\t\t\t\tme.min = me.min === null ? minVal : Math.min(me.min, minVal);\n\t\t\t\t\tme.max = me.max === null ? maxVal : Math.max(me.max, maxVal);\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.min === null) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t} else if (value < me.min) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.max === null) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t} else if (value > me.max) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tme.min = isFinite(me.min) && !isNaN(me.min) ? me.min : DEFAULT_MIN;\n\t\t\tme.max = isFinite(me.max) && !isNaN(me.max) ? me.max : DEFAULT_MAX;\n\n\t\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\n\t\t\tthis.handleTickRangeOptions();\n\t\t},\n\t\tgetTickLimit: function() {\n\t\t\tvar maxTicks;\n\t\t\tvar me = this;\n\t\t\tvar tickOpts = me.options.ticks;\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tmaxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.width / 50));\n\t\t\t} else {\n\t\t\t\t// The factor of 2 used to scale the font size has been experimentally determined.\n\t\t\t\tvar tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, defaults.global.defaultFontSize);\n\t\t\t\tmaxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.height / (2 * tickFontSize)));\n\t\t\t}\n\n\t\t\treturn maxTicks;\n\t\t},\n\t\t// Called after the ticks are built. We need\n\t\thandleDirectionalChanges: function() {\n\t\t\tif (!this.isHorizontal()) {\n\t\t\t\t// We are in a vertical orientation. The top value is the highest. So reverse the array\n\t\t\t\tthis.ticks.reverse();\n\t\t\t}\n\t\t},\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n\t\t},\n\t\t// Utils\n\t\tgetPixelForValue: function(value) {\n\t\t\t// This must be called after fit has been run so that\n\t\t\t// this.left, this.top, this.right, and this.bottom have been defined\n\t\t\tvar me = this;\n\t\t\tvar start = me.start;\n\n\t\t\tvar rightValue = +me.getRightValue(value);\n\t\t\tvar pixel;\n\t\t\tvar range = me.end - start;\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tpixel = me.left + (me.width / range * (rightValue - start));\n\t\t\t} else {\n\t\t\t\tpixel = me.bottom - (me.height / range * (rightValue - start));\n\t\t\t}\n\t\t\treturn pixel;\n\t\t},\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tvar innerDimension = isHorizontal ? me.width : me.height;\n\t\t\tvar offset = (isHorizontal ? pixel - me.left : me.bottom - pixel) / innerDimension;\n\t\t\treturn me.start + ((me.end - me.start) * offset);\n\t\t},\n\t\tgetPixelForTick: function(index) {\n\t\t\treturn this.getPixelForValue(this.ticksAsNumbers[index]);\n\t\t}\n\t});\n\n\tscaleService.registerScaleType('linear', LinearScale, defaultConfig);\n};\n\n},{\"26\":26,\"34\":34,\"35\":35,\"46\":46}],56:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(46);\nvar Scale = require(33);\n\n/**\n * Generate a set of linear ticks\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {Array} array of tick values\n */\nfunction generateTicks(generationOptions, dataRange) {\n\tvar ticks = [];\n\t// To get a \"nice\" value for the tick spacing, we will use the appropriately named\n\t// \"nice number\" algorithm. See http://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks\n\t// for details.\n\n\tvar factor;\n\tvar precision;\n\tvar spacing;\n\n\tif (generationOptions.stepSize && generationOptions.stepSize > 0) {\n\t\tspacing = generationOptions.stepSize;\n\t} else {\n\t\tvar niceRange = helpers.niceNum(dataRange.max - dataRange.min, false);\n\t\tspacing = helpers.niceNum(niceRange / (generationOptions.maxTicks - 1), true);\n\n\t\tprecision = generationOptions.precision;\n\t\tif (precision !== undefined) {\n\t\t\t// If the user specified a precision, round to that number of decimal places\n\t\t\tfactor = Math.pow(10, precision);\n\t\t\tspacing = Math.ceil(spacing * factor) / factor;\n\t\t}\n\t}\n\tvar niceMin = Math.floor(dataRange.min / spacing) * spacing;\n\tvar niceMax = Math.ceil(dataRange.max / spacing) * spacing;\n\n\t// If min, max and stepSize is set and they make an evenly spaced scale use it.\n\tif (!helpers.isNullOrUndef(generationOptions.min) && !helpers.isNullOrUndef(generationOptions.max) && generationOptions.stepSize) {\n\t\t// If very close to our whole number, use it.\n\t\tif (helpers.almostWhole((generationOptions.max - generationOptions.min) / generationOptions.stepSize, spacing / 1000)) {\n\t\t\tniceMin = generationOptions.min;\n\t\t\tniceMax = generationOptions.max;\n\t\t}\n\t}\n\n\tvar numSpaces = (niceMax - niceMin) / spacing;\n\t// If very close to our rounded value, use it.\n\tif (helpers.almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n\t\tnumSpaces = Math.round(numSpaces);\n\t} else {\n\t\tnumSpaces = Math.ceil(numSpaces);\n\t}\n\n\tprecision = 1;\n\tif (spacing < 1) {\n\t\tprecision = Math.pow(10, 1 - Math.floor(helpers.log10(spacing)));\n\t\tniceMin = Math.round(niceMin * precision) / precision;\n\t\tniceMax = Math.round(niceMax * precision) / precision;\n\t}\n\tticks.push(generationOptions.min !== undefined ? generationOptions.min : niceMin);\n\tfor (var j = 1; j < numSpaces; ++j) {\n\t\tticks.push(Math.round((niceMin + j * spacing) * precision) / precision);\n\t}\n\tticks.push(generationOptions.max !== undefined ? generationOptions.max : niceMax);\n\n\treturn ticks;\n}\n\nmodule.exports = function(Chart) {\n\n\tvar noop = helpers.noop;\n\n\tChart.LinearScaleBase = Scale.extend({\n\t\tgetRightValue: function(value) {\n\t\t\tif (typeof value === 'string') {\n\t\t\t\treturn +value;\n\t\t\t}\n\t\t\treturn Scale.prototype.getRightValue.call(this, value);\n\t\t},\n\n\t\thandleTickRangeOptions: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\n\t\t\t// If we are forcing it to begin at 0, but 0 will already be rendered on the chart,\n\t\t\t// do nothing since that would make the chart weird. If the user really wants a weird chart\n\t\t\t// axis, they can manually override it\n\t\t\tif (tickOpts.beginAtZero) {\n\t\t\t\tvar minSign = helpers.sign(me.min);\n\t\t\t\tvar maxSign = helpers.sign(me.max);\n\n\t\t\t\tif (minSign < 0 && maxSign < 0) {\n\t\t\t\t\t// move the top up to 0\n\t\t\t\t\tme.max = 0;\n\t\t\t\t} else if (minSign > 0 && maxSign > 0) {\n\t\t\t\t\t// move the bottom down to 0\n\t\t\t\t\tme.min = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar setMin = tickOpts.min !== undefined || tickOpts.suggestedMin !== undefined;\n\t\t\tvar setMax = tickOpts.max !== undefined || tickOpts.suggestedMax !== undefined;\n\n\t\t\tif (tickOpts.min !== undefined) {\n\t\t\t\tme.min = tickOpts.min;\n\t\t\t} else if (tickOpts.suggestedMin !== undefined) {\n\t\t\t\tif (me.min === null) {\n\t\t\t\t\tme.min = tickOpts.suggestedMin;\n\t\t\t\t} else {\n\t\t\t\t\tme.min = Math.min(me.min, tickOpts.suggestedMin);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (tickOpts.max !== undefined) {\n\t\t\t\tme.max = tickOpts.max;\n\t\t\t} else if (tickOpts.suggestedMax !== undefined) {\n\t\t\t\tif (me.max === null) {\n\t\t\t\t\tme.max = tickOpts.suggestedMax;\n\t\t\t\t} else {\n\t\t\t\t\tme.max = Math.max(me.max, tickOpts.suggestedMax);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (setMin !== setMax) {\n\t\t\t\t// We set the min or the max but not both.\n\t\t\t\t// So ensure that our range is good\n\t\t\t\t// Inverted or 0 length range can happen when\n\t\t\t\t// ticks.min is set, and no datasets are visible\n\t\t\t\tif (me.min >= me.max) {\n\t\t\t\t\tif (setMin) {\n\t\t\t\t\t\tme.max = me.min + 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tme.min = me.max - 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (me.min === me.max) {\n\t\t\t\tme.max++;\n\n\t\t\t\tif (!tickOpts.beginAtZero) {\n\t\t\t\t\tme.min--;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tgetTickLimit: noop,\n\t\thandleDirectionalChanges: noop,\n\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\n\t\t\t// Figure out what the max number of ticks we can support it is based on the size of\n\t\t\t// the axis area. For now, we say that the minimum tick spacing in pixels must be 50\n\t\t\t// We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n\t\t\t// the graph. Make sure we always have at least 2 ticks\n\t\t\tvar maxTicks = me.getTickLimit();\n\t\t\tmaxTicks = Math.max(2, maxTicks);\n\n\t\t\tvar numericGeneratorOptions = {\n\t\t\t\tmaxTicks: maxTicks,\n\t\t\t\tmin: tickOpts.min,\n\t\t\t\tmax: tickOpts.max,\n\t\t\t\tprecision: tickOpts.precision,\n\t\t\t\tstepSize: helpers.valueOrDefault(tickOpts.fixedStepSize, tickOpts.stepSize)\n\t\t\t};\n\t\t\tvar ticks = me.ticks = generateTicks(numericGeneratorOptions, me);\n\n\t\t\tme.handleDirectionalChanges();\n\n\t\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\n\t\t\t// range of the scale\n\t\t\tme.max = helpers.max(ticks);\n\t\t\tme.min = helpers.min(ticks);\n\n\t\t\tif (tickOpts.reverse) {\n\t\t\t\tticks.reverse();\n\n\t\t\t\tme.start = me.max;\n\t\t\t\tme.end = me.min;\n\t\t\t} else {\n\t\t\t\tme.start = me.min;\n\t\t\t\tme.end = me.max;\n\t\t\t}\n\t\t},\n\t\tconvertTicksToLabels: function() {\n\t\t\tvar me = this;\n\t\t\tme.ticksAsNumbers = me.ticks.slice();\n\t\t\tme.zeroLineIndex = me.ticks.indexOf(0);\n\n\t\t\tScale.prototype.convertTicksToLabels.call(me);\n\t\t}\n\t});\n};\n\n},{\"33\":33,\"46\":46}],57:[function(require,module,exports){\n'use strict';\n\nvar helpers = require(46);\nvar Scale = require(33);\nvar scaleService = require(34);\nvar Ticks = require(35);\n\n/**\n * Generate a set of logarithmic ticks\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {Array} array of tick values\n */\nfunction generateTicks(generationOptions, dataRange) {\n\tvar ticks = [];\n\tvar valueOrDefault = helpers.valueOrDefault;\n\n\t// Figure out what the max number of ticks we can support it is based on the size of\n\t// the axis area. For now, we say that the minimum tick spacing in pixels must be 50\n\t// We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n\t// the graph\n\tvar tickVal = valueOrDefault(generationOptions.min, Math.pow(10, Math.floor(helpers.log10(dataRange.min))));\n\n\tvar endExp = Math.floor(helpers.log10(dataRange.max));\n\tvar endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n\tvar exp, significand;\n\n\tif (tickVal === 0) {\n\t\texp = Math.floor(helpers.log10(dataRange.minNotZero));\n\t\tsignificand = Math.floor(dataRange.minNotZero / Math.pow(10, exp));\n\n\t\tticks.push(tickVal);\n\t\ttickVal = significand * Math.pow(10, exp);\n\t} else {\n\t\texp = Math.floor(helpers.log10(tickVal));\n\t\tsignificand = Math.floor(tickVal / Math.pow(10, exp));\n\t}\n\tvar precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n\n\tdo {\n\t\tticks.push(tickVal);\n\n\t\t++significand;\n\t\tif (significand === 10) {\n\t\t\tsignificand = 1;\n\t\t\t++exp;\n\t\t\tprecision = exp >= 0 ? 1 : precision;\n\t\t}\n\n\t\ttickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n\t} while (exp < endExp || (exp === endExp && significand < endSignificand));\n\n\tvar lastTick = valueOrDefault(generationOptions.max, tickVal);\n\tticks.push(lastTick);\n\n\treturn ticks;\n}\n\n\nmodule.exports = function(Chart) {\n\n\tvar defaultConfig = {\n\t\tposition: 'left',\n\n\t\t// label settings\n\t\tticks: {\n\t\t\tcallback: Ticks.formatters.logarithmic\n\t\t}\n\t};\n\n\tvar LogarithmicScale = Scale.extend({\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar chart = me.chart;\n\t\t\tvar data = chart.data;\n\t\t\tvar datasets = data.datasets;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tfunction IDMatches(meta) {\n\t\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\n\t\t\t}\n\n\t\t\t// Calculate Range\n\t\t\tme.min = null;\n\t\t\tme.max = null;\n\t\t\tme.minNotZero = null;\n\n\t\t\tvar hasStacks = opts.stacked;\n\t\t\tif (hasStacks === undefined) {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tif (hasStacks) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\n\t\t\t\t\t\tmeta.stack !== undefined) {\n\t\t\t\t\t\thasStacks = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (opts.stacked || hasStacks) {\n\t\t\t\tvar valuesPerStack = {};\n\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tvar key = [\n\t\t\t\t\t\tmeta.type,\n\t\t\t\t\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\n\t\t\t\t\t\t((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\n\t\t\t\t\t\tmeta.stack\n\t\t\t\t\t].join('.');\n\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\tif (valuesPerStack[key] === undefined) {\n\t\t\t\t\t\t\tvaluesPerStack[key] = [];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar values = valuesPerStack[key];\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\t// invalid, hidden and negative values are ignored\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden || value < 0) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvalues[index] = values[index] || 0;\n\t\t\t\t\t\t\tvalues[index] += value;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\thelpers.each(valuesPerStack, function(valuesForType) {\n\t\t\t\t\tif (valuesForType.length > 0) {\n\t\t\t\t\t\tvar minVal = helpers.min(valuesForType);\n\t\t\t\t\t\tvar maxVal = helpers.max(valuesForType);\n\t\t\t\t\t\tme.min = me.min === null ? minVal : Math.min(me.min, minVal);\n\t\t\t\t\t\tme.max = me.max === null ? maxVal : Math.max(me.max, maxVal);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\t// invalid, hidden and negative values are ignored\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden || value < 0) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.min === null) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t} else if (value < me.min) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.max === null) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t} else if (value > me.max) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (value !== 0 && (me.minNotZero === null || value < me.minNotZero)) {\n\t\t\t\t\t\t\t\tme.minNotZero = value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Common base implementation to handle ticks.min, ticks.max\n\t\t\tthis.handleTickRangeOptions();\n\t\t},\n\t\thandleTickRangeOptions: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\t\tvar DEFAULT_MIN = 1;\n\t\t\tvar DEFAULT_MAX = 10;\n\n\t\t\tme.min = valueOrDefault(tickOpts.min, me.min);\n\t\t\tme.max = valueOrDefault(tickOpts.max, me.max);\n\n\t\t\tif (me.min === me.max) {\n\t\t\t\tif (me.min !== 0 && me.min !== null) {\n\t\t\t\t\tme.min = Math.pow(10, Math.floor(helpers.log10(me.min)) - 1);\n\t\t\t\t\tme.max = Math.pow(10, Math.floor(helpers.log10(me.max)) + 1);\n\t\t\t\t} else {\n\t\t\t\t\tme.min = DEFAULT_MIN;\n\t\t\t\t\tme.max = DEFAULT_MAX;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (me.min === null) {\n\t\t\t\tme.min = Math.pow(10, Math.floor(helpers.log10(me.max)) - 1);\n\t\t\t}\n\t\t\tif (me.max === null) {\n\t\t\t\tme.max = me.min !== 0\n\t\t\t\t\t? Math.pow(10, Math.floor(helpers.log10(me.min)) + 1)\n\t\t\t\t\t: DEFAULT_MAX;\n\t\t\t}\n\t\t\tif (me.minNotZero === null) {\n\t\t\t\tif (me.min > 0) {\n\t\t\t\t\tme.minNotZero = me.min;\n\t\t\t\t} else if (me.max < 1) {\n\t\t\t\t\tme.minNotZero = Math.pow(10, Math.floor(helpers.log10(me.max)));\n\t\t\t\t} else {\n\t\t\t\t\tme.minNotZero = DEFAULT_MIN;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\tvar reverse = !me.isHorizontal();\n\n\t\t\tvar generationOptions = {\n\t\t\t\tmin: tickOpts.min,\n\t\t\t\tmax: tickOpts.max\n\t\t\t};\n\t\t\tvar ticks = me.ticks = generateTicks(generationOptions, me);\n\n\t\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\n\t\t\t// range of the scale\n\t\t\tme.max = helpers.max(ticks);\n\t\t\tme.min = helpers.min(ticks);\n\n\t\t\tif (tickOpts.reverse) {\n\t\t\t\treverse = !reverse;\n\t\t\t\tme.start = me.max;\n\t\t\t\tme.end = me.min;\n\t\t\t} else {\n\t\t\t\tme.start = me.min;\n\t\t\t\tme.end = me.max;\n\t\t\t}\n\t\t\tif (reverse) {\n\t\t\t\tticks.reverse();\n\t\t\t}\n\t\t},\n\t\tconvertTicksToLabels: function() {\n\t\t\tthis.tickValues = this.ticks.slice();\n\n\t\t\tScale.prototype.convertTicksToLabels.call(this);\n\t\t},\n\t\t// Get the correct tooltip label\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n\t\t},\n\t\tgetPixelForTick: function(index) {\n\t\t\treturn this.getPixelForValue(this.tickValues[index]);\n\t\t},\n\t\t/**\n\t\t * Returns the value of the first tick.\n\t\t * @param {Number} value - The minimum not zero value.\n\t\t * @return {Number} The first tick value.\n\t\t * @private\n\t\t */\n\t\t_getFirstTickValue: function(value) {\n\t\t\tvar exp = Math.floor(helpers.log10(value));\n\t\t\tvar significand = Math.floor(value / Math.pow(10, exp));\n\n\t\t\treturn significand * Math.pow(10, exp);\n\t\t},\n\t\tgetPixelForValue: function(value) {\n\t\t\tvar me = this;\n\t\t\tvar reverse = me.options.ticks.reverse;\n\t\t\tvar log10 = helpers.log10;\n\t\t\tvar firstTickValue = me._getFirstTickValue(me.minNotZero);\n\t\t\tvar offset = 0;\n\t\t\tvar innerDimension, pixel, start, end, sign;\n\n\t\t\tvalue = +me.getRightValue(value);\n\t\t\tif (reverse) {\n\t\t\t\tstart = me.end;\n\t\t\t\tend = me.start;\n\t\t\t\tsign = -1;\n\t\t\t} else {\n\t\t\t\tstart = me.start;\n\t\t\t\tend = me.end;\n\t\t\t\tsign = 1;\n\t\t\t}\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tinnerDimension = me.width;\n\t\t\t\tpixel = reverse ? me.right : me.left;\n\t\t\t} else {\n\t\t\t\tinnerDimension = me.height;\n\t\t\t\tsign *= -1; // invert, since the upper-left corner of the canvas is at pixel (0, 0)\n\t\t\t\tpixel = reverse ? me.top : me.bottom;\n\t\t\t}\n\t\t\tif (value !== start) {\n\t\t\t\tif (start === 0) { // include zero tick\n\t\t\t\t\toffset = helpers.getValueOrDefault(\n\t\t\t\t\t\tme.options.ticks.fontSize,\n\t\t\t\t\t\tChart.defaults.global.defaultFontSize\n\t\t\t\t\t);\n\t\t\t\t\tinnerDimension -= offset;\n\t\t\t\t\tstart = firstTickValue;\n\t\t\t\t}\n\t\t\t\tif (value !== 0) {\n\t\t\t\t\toffset += innerDimension / (log10(end) - log10(start)) * (log10(value) - log10(start));\n\t\t\t\t}\n\t\t\t\tpixel += sign * offset;\n\t\t\t}\n\t\t\treturn pixel;\n\t\t},\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar reverse = me.options.ticks.reverse;\n\t\t\tvar log10 = helpers.log10;\n\t\t\tvar firstTickValue = me._getFirstTickValue(me.minNotZero);\n\t\t\tvar innerDimension, start, end, value;\n\n\t\t\tif (reverse) {\n\t\t\t\tstart = me.end;\n\t\t\t\tend = me.start;\n\t\t\t} else {\n\t\t\t\tstart = me.start;\n\t\t\t\tend = me.end;\n\t\t\t}\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tinnerDimension = me.width;\n\t\t\t\tvalue = reverse ? me.right - pixel : pixel - me.left;\n\t\t\t} else {\n\t\t\t\tinnerDimension = me.height;\n\t\t\t\tvalue = reverse ? pixel - me.top : me.bottom - pixel;\n\t\t\t}\n\t\t\tif (value !== start) {\n\t\t\t\tif (start === 0) { // include zero tick\n\t\t\t\t\tvar offset = helpers.getValueOrDefault(\n\t\t\t\t\t\tme.options.ticks.fontSize,\n\t\t\t\t\t\tChart.defaults.global.defaultFontSize\n\t\t\t\t\t);\n\t\t\t\t\tvalue -= offset;\n\t\t\t\t\tinnerDimension -= offset;\n\t\t\t\t\tstart = firstTickValue;\n\t\t\t\t}\n\t\t\t\tvalue *= log10(end) - log10(start);\n\t\t\t\tvalue /= innerDimension;\n\t\t\t\tvalue = Math.pow(10, log10(start) + value);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t});\n\n\tscaleService.registerScaleType('logarithmic', LogarithmicScale, defaultConfig);\n};\n\n},{\"33\":33,\"34\":34,\"35\":35,\"46\":46}],58:[function(require,module,exports){\n'use strict';\n\nvar defaults = require(26);\nvar helpers = require(46);\nvar scaleService = require(34);\nvar Ticks = require(35);\n\nmodule.exports = function(Chart) {\n\n\tvar globalDefaults = defaults.global;\n\n\tvar defaultConfig = {\n\t\tdisplay: true,\n\n\t\t// Boolean - Whether to animate scaling the chart from the centre\n\t\tanimate: true,\n\t\tposition: 'chartArea',\n\n\t\tangleLines: {\n\t\t\tdisplay: true,\n\t\t\tcolor: 'rgba(0, 0, 0, 0.1)',\n\t\t\tlineWidth: 1\n\t\t},\n\n\t\tgridLines: {\n\t\t\tcircular: false\n\t\t},\n\n\t\t// label settings\n\t\tticks: {\n\t\t\t// Boolean - Show a backdrop to the scale label\n\t\t\tshowLabelBackdrop: true,\n\n\t\t\t// String - The colour of the label backdrop\n\t\t\tbackdropColor: 'rgba(255,255,255,0.75)',\n\n\t\t\t// Number - The backdrop padding above & below the label in pixels\n\t\t\tbackdropPaddingY: 2,\n\n\t\t\t// Number - The backdrop padding to the side of the label in pixels\n\t\t\tbackdropPaddingX: 2,\n\n\t\t\tcallback: Ticks.formatters.linear\n\t\t},\n\n\t\tpointLabels: {\n\t\t\t// Boolean - if true, show point labels\n\t\t\tdisplay: true,\n\n\t\t\t// Number - Point label font size in pixels\n\t\t\tfontSize: 10,\n\n\t\t\t// Function - Used to convert point labels\n\t\t\tcallback: function(label) {\n\t\t\t\treturn label;\n\t\t\t}\n\t\t}\n\t};\n\n\tfunction getValueCount(scale) {\n\t\tvar opts = scale.options;\n\t\treturn opts.angleLines.display || opts.pointLabels.display ? scale.chart.data.labels.length : 0;\n\t}\n\n\tfunction getPointLabelFontOptions(scale) {\n\t\tvar pointLabelOptions = scale.options.pointLabels;\n\t\tvar fontSize = helpers.valueOrDefault(pointLabelOptions.fontSize, globalDefaults.defaultFontSize);\n\t\tvar fontStyle = helpers.valueOrDefault(pointLabelOptions.fontStyle, globalDefaults.defaultFontStyle);\n\t\tvar fontFamily = helpers.valueOrDefault(pointLabelOptions.fontFamily, globalDefaults.defaultFontFamily);\n\t\tvar font = helpers.fontString(fontSize, fontStyle, fontFamily);\n\n\t\treturn {\n\t\t\tsize: fontSize,\n\t\t\tstyle: fontStyle,\n\t\t\tfamily: fontFamily,\n\t\t\tfont: font\n\t\t};\n\t}\n\n\tfunction measureLabelSize(ctx, fontSize, label) {\n\t\tif (helpers.isArray(label)) {\n\t\t\treturn {\n\t\t\t\tw: helpers.longestText(ctx, ctx.font, label),\n\t\t\t\th: (label.length * fontSize) + ((label.length - 1) * 1.5 * fontSize)\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tw: ctx.measureText(label).width,\n\t\t\th: fontSize\n\t\t};\n\t}\n\n\tfunction determineLimits(angle, pos, size, min, max) {\n\t\tif (angle === min || angle === max) {\n\t\t\treturn {\n\t\t\t\tstart: pos - (size / 2),\n\t\t\t\tend: pos + (size / 2)\n\t\t\t};\n\t\t} else if (angle < min || angle > max) {\n\t\t\treturn {\n\t\t\t\tstart: pos - size - 5,\n\t\t\t\tend: pos\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tstart: pos,\n\t\t\tend: pos + size + 5\n\t\t};\n\t}\n\n\t/**\n\t * Helper function to fit a radial linear scale with point labels\n\t */\n\tfunction fitWithPointLabels(scale) {\n\t\t/*\n\t\t * Right, this is really confusing and there is a lot of maths going on here\n\t\t * The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9\n\t\t *\n\t\t * Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif\n\t\t *\n\t\t * Solution:\n\t\t *\n\t\t * We assume the radius of the polygon is half the size of the canvas at first\n\t\t * at each index we check if the text overlaps.\n\t\t *\n\t\t * Where it does, we store that angle and that index.\n\t\t *\n\t\t * After finding the largest index and angle we calculate how much we need to remove\n\t\t * from the shape radius to move the point inwards by that x.\n\t\t *\n\t\t * We average the left and right distances to get the maximum shape radius that can fit in the box\n\t\t * along with labels.\n\t\t *\n\t\t * Once we have that, we can find the centre point for the chart, by taking the x text protrusion\n\t\t * on each side, removing that from the size, halving it and adding the left x protrusion width.\n\t\t *\n\t\t * This will mean we have a shape fitted to the canvas, as large as it can be with the labels\n\t\t * and position it in the most space efficient manner\n\t\t *\n\t\t * https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif\n\t\t */\n\n\t\tvar plFont = getPointLabelFontOptions(scale);\n\n\t\t// Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.\n\t\t// Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points\n\t\tvar largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2);\n\t\tvar furthestLimits = {\n\t\t\tr: scale.width,\n\t\t\tl: 0,\n\t\t\tt: scale.height,\n\t\t\tb: 0\n\t\t};\n\t\tvar furthestAngles = {};\n\t\tvar i, textSize, pointPosition;\n\n\t\tscale.ctx.font = plFont.font;\n\t\tscale._pointLabelSizes = [];\n\n\t\tvar valueCount = getValueCount(scale);\n\t\tfor (i = 0; i < valueCount; i++) {\n\t\t\tpointPosition = scale.getPointPosition(i, largestPossibleRadius);\n\t\t\ttextSize = measureLabelSize(scale.ctx, plFont.size, scale.pointLabels[i] || '');\n\t\t\tscale._pointLabelSizes[i] = textSize;\n\n\t\t\t// Add quarter circle to make degree 0 mean top of circle\n\t\t\tvar angleRadians = scale.getIndexAngle(i);\n\t\t\tvar angle = helpers.toDegrees(angleRadians) % 360;\n\t\t\tvar hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n\t\t\tvar vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n\n\t\t\tif (hLimits.start < furthestLimits.l) {\n\t\t\t\tfurthestLimits.l = hLimits.start;\n\t\t\t\tfurthestAngles.l = angleRadians;\n\t\t\t}\n\n\t\t\tif (hLimits.end > furthestLimits.r) {\n\t\t\t\tfurthestLimits.r = hLimits.end;\n\t\t\t\tfurthestAngles.r = angleRadians;\n\t\t\t}\n\n\t\t\tif (vLimits.start < furthestLimits.t) {\n\t\t\t\tfurthestLimits.t = vLimits.start;\n\t\t\t\tfurthestAngles.t = angleRadians;\n\t\t\t}\n\n\t\t\tif (vLimits.end > furthestLimits.b) {\n\t\t\t\tfurthestLimits.b = vLimits.end;\n\t\t\t\tfurthestAngles.b = angleRadians;\n\t\t\t}\n\t\t}\n\n\t\tscale.setReductions(largestPossibleRadius, furthestLimits, furthestAngles);\n\t}\n\n\t/**\n\t * Helper function to fit a radial linear scale with no point labels\n\t */\n\tfunction fit(scale) {\n\t\tvar largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2);\n\t\tscale.drawingArea = Math.round(largestPossibleRadius);\n\t\tscale.setCenterPoint(0, 0, 0, 0);\n\t}\n\n\tfunction getTextAlignForAngle(angle) {\n\t\tif (angle === 0 || angle === 180) {\n\t\t\treturn 'center';\n\t\t} else if (angle < 180) {\n\t\t\treturn 'left';\n\t\t}\n\n\t\treturn 'right';\n\t}\n\n\tfunction fillText(ctx, text, position, fontSize) {\n\t\tif (helpers.isArray(text)) {\n\t\t\tvar y = position.y;\n\t\t\tvar spacing = 1.5 * fontSize;\n\n\t\t\tfor (var i = 0; i < text.length; ++i) {\n\t\t\t\tctx.fillText(text[i], position.x, y);\n\t\t\t\ty += spacing;\n\t\t\t}\n\t\t} else {\n\t\t\tctx.fillText(text, position.x, position.y);\n\t\t}\n\t}\n\n\tfunction adjustPointPositionForLabelHeight(angle, textSize, position) {\n\t\tif (angle === 90 || angle === 270) {\n\t\t\tposition.y -= (textSize.h / 2);\n\t\t} else if (angle > 270 || angle < 90) {\n\t\t\tposition.y -= textSize.h;\n\t\t}\n\t}\n\n\tfunction drawPointLabels(scale) {\n\t\tvar ctx = scale.ctx;\n\t\tvar opts = scale.options;\n\t\tvar angleLineOpts = opts.angleLines;\n\t\tvar pointLabelOpts = opts.pointLabels;\n\n\t\tctx.lineWidth = angleLineOpts.lineWidth;\n\t\tctx.strokeStyle = angleLineOpts.color;\n\n\t\tvar outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max);\n\n\t\t// Point Label Font\n\t\tvar plFont = getPointLabelFontOptions(scale);\n\n\t\tctx.textBaseline = 'top';\n\n\t\tfor (var i = getValueCount(scale) - 1; i >= 0; i--) {\n\t\t\tif (angleLineOpts.display) {\n\t\t\t\tvar outerPosition = scale.getPointPosition(i, outerDistance);\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(scale.xCenter, scale.yCenter);\n\t\t\t\tctx.lineTo(outerPosition.x, outerPosition.y);\n\t\t\t\tctx.stroke();\n\t\t\t\tctx.closePath();\n\t\t\t}\n\n\t\t\tif (pointLabelOpts.display) {\n\t\t\t\t// Extra 3px out for some label spacing\n\t\t\t\tvar pointLabelPosition = scale.getPointPosition(i, outerDistance + 5);\n\n\t\t\t\t// Keep this in loop since we may support array properties here\n\t\t\t\tvar pointLabelFontColor = helpers.valueAtIndexOrDefault(pointLabelOpts.fontColor, i, globalDefaults.defaultFontColor);\n\t\t\t\tctx.font = plFont.font;\n\t\t\t\tctx.fillStyle = pointLabelFontColor;\n\n\t\t\t\tvar angleRadians = scale.getIndexAngle(i);\n\t\t\t\tvar angle = helpers.toDegrees(angleRadians);\n\t\t\t\tctx.textAlign = getTextAlignForAngle(angle);\n\t\t\t\tadjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition);\n\t\t\t\tfillText(ctx, scale.pointLabels[i] || '', pointLabelPosition, plFont.size);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction drawRadiusLine(scale, gridLineOpts, radius, index) {\n\t\tvar ctx = scale.ctx;\n\t\tctx.strokeStyle = helpers.valueAtIndexOrDefault(gridLineOpts.color, index - 1);\n\t\tctx.lineWidth = helpers.valueAtIndexOrDefault(gridLineOpts.lineWidth, index - 1);\n\n\t\tif (scale.options.gridLines.circular) {\n\t\t\t// Draw circular arcs between the points\n\t\t\tctx.beginPath();\n\t\t\tctx.arc(scale.xCenter, scale.yCenter, radius, 0, Math.PI * 2);\n\t\t\tctx.closePath();\n\t\t\tctx.stroke();\n\t\t} else {\n\t\t\t// Draw straight lines connecting each index\n\t\t\tvar valueCount = getValueCount(scale);\n\n\t\t\tif (valueCount === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tctx.beginPath();\n\t\t\tvar pointPosition = scale.getPointPosition(0, radius);\n\t\t\tctx.moveTo(pointPosition.x, pointPosition.y);\n\n\t\t\tfor (var i = 1; i < valueCount; i++) {\n\t\t\t\tpointPosition = scale.getPointPosition(i, radius);\n\t\t\t\tctx.lineTo(pointPosition.x, pointPosition.y);\n\t\t\t}\n\n\t\t\tctx.closePath();\n\t\t\tctx.stroke();\n\t\t}\n\t}\n\n\tfunction numberOrZero(param) {\n\t\treturn helpers.isNumber(param) ? param : 0;\n\t}\n\n\tvar LinearRadialScale = Chart.LinearScaleBase.extend({\n\t\tsetDimensions: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\t// Set the unconstrained dimension before label rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.height = me.maxHeight;\n\t\t\tme.xCenter = Math.round(me.width / 2);\n\t\t\tme.yCenter = Math.round(me.height / 2);\n\n\t\t\tvar minSize = helpers.min([me.height, me.width]);\n\t\t\tvar tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\n\t\t\tme.drawingArea = opts.display ? (minSize / 2) - (tickFontSize / 2 + tickOpts.backdropPaddingY) : (minSize / 2);\n\t\t},\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar min = Number.POSITIVE_INFINITY;\n\t\t\tvar max = Number.NEGATIVE_INFINITY;\n\n\t\t\thelpers.each(chart.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex)) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\n\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmin = Math.min(value, min);\n\t\t\t\t\t\tmax = Math.max(value, max);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tme.min = (min === Number.POSITIVE_INFINITY ? 0 : min);\n\t\t\tme.max = (max === Number.NEGATIVE_INFINITY ? 0 : max);\n\n\t\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\n\t\t\tme.handleTickRangeOptions();\n\t\t},\n\t\tgetTickLimit: function() {\n\t\t\tvar tickOpts = this.options.ticks;\n\t\t\tvar tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\n\t\t\treturn Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(this.drawingArea / (1.5 * tickFontSize)));\n\t\t},\n\t\tconvertTicksToLabels: function() {\n\t\t\tvar me = this;\n\n\t\t\tChart.LinearScaleBase.prototype.convertTicksToLabels.call(me);\n\n\t\t\t// Point labels\n\t\t\tme.pointLabels = me.chart.data.labels.map(me.options.pointLabels.callback, me);\n\t\t},\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n\t\t},\n\t\tfit: function() {\n\t\t\tif (this.options.pointLabels.display) {\n\t\t\t\tfitWithPointLabels(this);\n\t\t\t} else {\n\t\t\t\tfit(this);\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Set radius reductions and determine new radius and center point\n\t\t * @private\n\t\t */\n\t\tsetReductions: function(largestPossibleRadius, furthestLimits, furthestAngles) {\n\t\t\tvar me = this;\n\t\t\tvar radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l);\n\t\t\tvar radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r);\n\t\t\tvar radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t);\n\t\t\tvar radiusReductionBottom = -Math.max(furthestLimits.b - me.height, 0) / Math.cos(furthestAngles.b);\n\n\t\t\tradiusReductionLeft = numberOrZero(radiusReductionLeft);\n\t\t\tradiusReductionRight = numberOrZero(radiusReductionRight);\n\t\t\tradiusReductionTop = numberOrZero(radiusReductionTop);\n\t\t\tradiusReductionBottom = numberOrZero(radiusReductionBottom);\n\n\t\t\tme.drawingArea = Math.min(\n\t\t\t\tMath.round(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2),\n\t\t\t\tMath.round(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2));\n\t\t\tme.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom);\n\t\t},\n\t\tsetCenterPoint: function(leftMovement, rightMovement, topMovement, bottomMovement) {\n\t\t\tvar me = this;\n\t\t\tvar maxRight = me.width - rightMovement - me.drawingArea;\n\t\t\tvar maxLeft = leftMovement + me.drawingArea;\n\t\t\tvar maxTop = topMovement + me.drawingArea;\n\t\t\tvar maxBottom = me.height - bottomMovement - me.drawingArea;\n\n\t\t\tme.xCenter = Math.round(((maxLeft + maxRight) / 2) + me.left);\n\t\t\tme.yCenter = Math.round(((maxTop + maxBottom) / 2) + me.top);\n\t\t},\n\n\t\tgetIndexAngle: function(index) {\n\t\t\tvar angleMultiplier = (Math.PI * 2) / getValueCount(this);\n\t\t\tvar startAngle = this.chart.options && this.chart.options.startAngle ?\n\t\t\t\tthis.chart.options.startAngle :\n\t\t\t\t0;\n\n\t\t\tvar startAngleRadians = startAngle * Math.PI * 2 / 360;\n\n\t\t\t// Start from the top instead of right, so remove a quarter of the circle\n\t\t\treturn index * angleMultiplier + startAngleRadians;\n\t\t},\n\t\tgetDistanceFromCenterForValue: function(value) {\n\t\t\tvar me = this;\n\n\t\t\tif (value === null) {\n\t\t\t\treturn 0; // null always in center\n\t\t\t}\n\n\t\t\t// Take into account half font size + the yPadding of the top value\n\t\t\tvar scalingFactor = me.drawingArea / (me.max - me.min);\n\t\t\tif (me.options.ticks.reverse) {\n\t\t\t\treturn (me.max - value) * scalingFactor;\n\t\t\t}\n\t\t\treturn (value - me.min) * scalingFactor;\n\t\t},\n\t\tgetPointPosition: function(index, distanceFromCenter) {\n\t\t\tvar me = this;\n\t\t\tvar thisAngle = me.getIndexAngle(index) - (Math.PI / 2);\n\t\t\treturn {\n\t\t\t\tx: Math.round(Math.cos(thisAngle) * distanceFromCenter) + me.xCenter,\n\t\t\t\ty: Math.round(Math.sin(thisAngle) * distanceFromCenter) + me.yCenter\n\t\t\t};\n\t\t},\n\t\tgetPointPositionForValue: function(index, value) {\n\t\t\treturn this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n\t\t},\n\n\t\tgetBasePosition: function() {\n\t\t\tvar me = this;\n\t\t\tvar min = me.min;\n\t\t\tvar max = me.max;\n\n\t\t\treturn me.getPointPositionForValue(0,\n\t\t\t\tme.beginAtZero ? 0 :\n\t\t\t\tmin < 0 && max < 0 ? max :\n\t\t\t\tmin > 0 && max > 0 ? min :\n\t\t\t\t0);\n\t\t},\n\n\t\tdraw: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar gridLineOpts = opts.gridLines;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\n\n\t\t\tif (opts.display) {\n\t\t\t\tvar ctx = me.ctx;\n\t\t\t\tvar startAngle = this.getIndexAngle(0);\n\n\t\t\t\t// Tick Font\n\t\t\t\tvar tickFontSize = valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\n\t\t\t\tvar tickFontStyle = valueOrDefault(tickOpts.fontStyle, globalDefaults.defaultFontStyle);\n\t\t\t\tvar tickFontFamily = valueOrDefault(tickOpts.fontFamily, globalDefaults.defaultFontFamily);\n\t\t\t\tvar tickLabelFont = helpers.fontString(tickFontSize, tickFontStyle, tickFontFamily);\n\n\t\t\t\thelpers.each(me.ticks, function(label, index) {\n\t\t\t\t\t// Don't draw a centre value (if it is minimum)\n\t\t\t\t\tif (index > 0 || tickOpts.reverse) {\n\t\t\t\t\t\tvar yCenterOffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]);\n\n\t\t\t\t\t\t// Draw circular lines around the scale\n\t\t\t\t\t\tif (gridLineOpts.display && index !== 0) {\n\t\t\t\t\t\t\tdrawRadiusLine(me, gridLineOpts, yCenterOffset, index);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (tickOpts.display) {\n\t\t\t\t\t\t\tvar tickFontColor = valueOrDefault(tickOpts.fontColor, globalDefaults.defaultFontColor);\n\t\t\t\t\t\t\tctx.font = tickLabelFont;\n\n\t\t\t\t\t\t\tctx.save();\n\t\t\t\t\t\t\tctx.translate(me.xCenter, me.yCenter);\n\t\t\t\t\t\t\tctx.rotate(startAngle);\n\n\t\t\t\t\t\t\tif (tickOpts.showLabelBackdrop) {\n\t\t\t\t\t\t\t\tvar labelWidth = ctx.measureText(label).width;\n\t\t\t\t\t\t\t\tctx.fillStyle = tickOpts.backdropColor;\n\t\t\t\t\t\t\t\tctx.fillRect(\n\t\t\t\t\t\t\t\t\t-labelWidth / 2 - tickOpts.backdropPaddingX,\n\t\t\t\t\t\t\t\t\t-yCenterOffset - tickFontSize / 2 - tickOpts.backdropPaddingY,\n\t\t\t\t\t\t\t\t\tlabelWidth + tickOpts.backdropPaddingX * 2,\n\t\t\t\t\t\t\t\t\ttickFontSize + tickOpts.backdropPaddingY * 2\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tctx.textAlign = 'center';\n\t\t\t\t\t\t\tctx.textBaseline = 'middle';\n\t\t\t\t\t\t\tctx.fillStyle = tickFontColor;\n\t\t\t\t\t\t\tctx.fillText(label, 0, -yCenterOffset);\n\t\t\t\t\t\t\tctx.restore();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (opts.angleLines.display || opts.pointLabels.display) {\n\t\t\t\t\tdrawPointLabels(me);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\tscaleService.registerScaleType('radialLinear', LinearRadialScale, defaultConfig);\n};\n\n},{\"26\":26,\"34\":34,\"35\":35,\"46\":46}],59:[function(require,module,exports){\n/* global window: false */\n'use strict';\n\nvar moment = require(1);\nmoment = typeof moment === 'function' ? moment : window.moment;\n\nvar defaults = require(26);\nvar helpers = require(46);\nvar Scale = require(33);\nvar scaleService = require(34);\n\n// Integer constants are from the ES6 spec.\nvar MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;\nvar MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\n\nvar INTERVALS = {\n\tmillisecond: {\n\t\tcommon: true,\n\t\tsize: 1,\n\t\tsteps: [1, 2, 5, 10, 20, 50, 100, 250, 500]\n\t},\n\tsecond: {\n\t\tcommon: true,\n\t\tsize: 1000,\n\t\tsteps: [1, 2, 5, 10, 15, 30]\n\t},\n\tminute: {\n\t\tcommon: true,\n\t\tsize: 60000,\n\t\tsteps: [1, 2, 5, 10, 15, 30]\n\t},\n\thour: {\n\t\tcommon: true,\n\t\tsize: 3600000,\n\t\tsteps: [1, 2, 3, 6, 12]\n\t},\n\tday: {\n\t\tcommon: true,\n\t\tsize: 86400000,\n\t\tsteps: [1, 2, 5]\n\t},\n\tweek: {\n\t\tcommon: false,\n\t\tsize: 604800000,\n\t\tsteps: [1, 2, 3, 4]\n\t},\n\tmonth: {\n\t\tcommon: true,\n\t\tsize: 2.628e9,\n\t\tsteps: [1, 2, 3]\n\t},\n\tquarter: {\n\t\tcommon: false,\n\t\tsize: 7.884e9,\n\t\tsteps: [1, 2, 3, 4]\n\t},\n\tyear: {\n\t\tcommon: true,\n\t\tsize: 3.154e10\n\t}\n};\n\nvar UNITS = Object.keys(INTERVALS);\n\nfunction sorter(a, b) {\n\treturn a - b;\n}\n\nfunction arrayUnique(items) {\n\tvar hash = {};\n\tvar out = [];\n\tvar i, ilen, item;\n\n\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\n\t\titem = items[i];\n\t\tif (!hash[item]) {\n\t\t\thash[item] = true;\n\t\t\tout.push(item);\n\t\t}\n\t}\n\n\treturn out;\n}\n\n/**\n * Returns an array of {time, pos} objects used to interpolate a specific `time` or position\n * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is\n * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other\n * extremity (left + width or top + height). Note that it would be more optimized to directly\n * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need\n * to create the lookup table. The table ALWAYS contains at least two items: min and max.\n *\n * @param {Number[]} timestamps - timestamps sorted from lowest to highest.\n * @param {String} distribution - If 'linear', timestamps will be spread linearly along the min\n * and max range, so basically, the table will contains only two items: {min, 0} and {max, 1}.\n * If 'series', timestamps will be positioned at the same distance from each other. In this\n * case, only timestamps that break the time linearity are registered, meaning that in the\n * best case, all timestamps are linear, the table contains only min and max.\n */\nfunction buildLookupTable(timestamps, min, max, distribution) {\n\tif (distribution === 'linear' || !timestamps.length) {\n\t\treturn [\n\t\t\t{time: min, pos: 0},\n\t\t\t{time: max, pos: 1}\n\t\t];\n\t}\n\n\tvar table = [];\n\tvar items = [min];\n\tvar i, ilen, prev, curr, next;\n\n\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n\t\tcurr = timestamps[i];\n\t\tif (curr > min && curr < max) {\n\t\t\titems.push(curr);\n\t\t}\n\t}\n\n\titems.push(max);\n\n\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\n\t\tnext = items[i + 1];\n\t\tprev = items[i - 1];\n\t\tcurr = items[i];\n\n\t\t// only add points that breaks the scale linearity\n\t\tif (prev === undefined || next === undefined || Math.round((next + prev) / 2) !== curr) {\n\t\t\ttable.push({time: curr, pos: i / (ilen - 1)});\n\t\t}\n\t}\n\n\treturn table;\n}\n\n// @see adapted from http://www.anujgakhar.com/2014/03/01/binary-search-in-javascript/\nfunction lookup(table, key, value) {\n\tvar lo = 0;\n\tvar hi = table.length - 1;\n\tvar mid, i0, i1;\n\n\twhile (lo >= 0 && lo <= hi) {\n\t\tmid = (lo + hi) >> 1;\n\t\ti0 = table[mid - 1] || null;\n\t\ti1 = table[mid];\n\n\t\tif (!i0) {\n\t\t\t// given value is outside table (before first item)\n\t\t\treturn {lo: null, hi: i1};\n\t\t} else if (i1[key] < value) {\n\t\t\tlo = mid + 1;\n\t\t} else if (i0[key] > value) {\n\t\t\thi = mid - 1;\n\t\t} else {\n\t\t\treturn {lo: i0, hi: i1};\n\t\t}\n\t}\n\n\t// given value is outside table (after last item)\n\treturn {lo: i1, hi: null};\n}\n\n/**\n * Linearly interpolates the given source `value` using the table items `skey` values and\n * returns the associated `tkey` value. For example, interpolate(table, 'time', 42, 'pos')\n * returns the position for a timestamp equal to 42. If value is out of bounds, values at\n * index [0, 1] or [n - 1, n] are used for the interpolation.\n */\nfunction interpolate(table, skey, sval, tkey) {\n\tvar range = lookup(table, skey, sval);\n\n\t// Note: the lookup table ALWAYS contains at least 2 items (min and max)\n\tvar prev = !range.lo ? table[0] : !range.hi ? table[table.length - 2] : range.lo;\n\tvar next = !range.lo ? table[1] : !range.hi ? table[table.length - 1] : range.hi;\n\n\tvar span = next[skey] - prev[skey];\n\tvar ratio = span ? (sval - prev[skey]) / span : 0;\n\tvar offset = (next[tkey] - prev[tkey]) * ratio;\n\n\treturn prev[tkey] + offset;\n}\n\n/**\n * Convert the given value to a moment object using the given time options.\n * @see http://momentjs.com/docs/#/parsing/\n */\nfunction momentify(value, options) {\n\tvar parser = options.parser;\n\tvar format = options.parser || options.format;\n\n\tif (typeof parser === 'function') {\n\t\treturn parser(value);\n\t}\n\n\tif (typeof value === 'string' && typeof format === 'string') {\n\t\treturn moment(value, format);\n\t}\n\n\tif (!(value instanceof moment)) {\n\t\tvalue = moment(value);\n\t}\n\n\tif (value.isValid()) {\n\t\treturn value;\n\t}\n\n\t// Labels are in an incompatible moment format and no `parser` has been provided.\n\t// The user might still use the deprecated `format` option to convert his inputs.\n\tif (typeof format === 'function') {\n\t\treturn format(value);\n\t}\n\n\treturn value;\n}\n\nfunction parse(input, scale) {\n\tif (helpers.isNullOrUndef(input)) {\n\t\treturn null;\n\t}\n\n\tvar options = scale.options.time;\n\tvar value = momentify(scale.getRightValue(input), options);\n\tif (!value.isValid()) {\n\t\treturn null;\n\t}\n\n\tif (options.round) {\n\t\tvalue.startOf(options.round);\n\t}\n\n\treturn value.valueOf();\n}\n\n/**\n * Returns the number of unit to skip to be able to display up to `capacity` number of ticks\n * in `unit` for the given `min` / `max` range and respecting the interval steps constraints.\n */\nfunction determineStepSize(min, max, unit, capacity) {\n\tvar range = max - min;\n\tvar interval = INTERVALS[unit];\n\tvar milliseconds = interval.size;\n\tvar steps = interval.steps;\n\tvar i, ilen, factor;\n\n\tif (!steps) {\n\t\treturn Math.ceil(range / (capacity * milliseconds));\n\t}\n\n\tfor (i = 0, ilen = steps.length; i < ilen; ++i) {\n\t\tfactor = steps[i];\n\t\tif (Math.ceil(range / (milliseconds * factor)) <= capacity) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn factor;\n}\n\n/**\n * Figures out what unit results in an appropriate number of auto-generated ticks\n */\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n\tvar ilen = UNITS.length;\n\tvar i, interval, factor;\n\n\tfor (i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n\t\tinterval = INTERVALS[UNITS[i]];\n\t\tfactor = interval.steps ? interval.steps[interval.steps.length - 1] : MAX_INTEGER;\n\n\t\tif (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n\t\t\treturn UNITS[i];\n\t\t}\n\t}\n\n\treturn UNITS[ilen - 1];\n}\n\n/**\n * Figures out what unit to format a set of ticks with\n */\nfunction determineUnitForFormatting(ticks, minUnit, min, max) {\n\tvar duration = moment.duration(moment(max).diff(moment(min)));\n\tvar ilen = UNITS.length;\n\tvar i, unit;\n\n\tfor (i = ilen - 1; i >= UNITS.indexOf(minUnit); i--) {\n\t\tunit = UNITS[i];\n\t\tif (INTERVALS[unit].common && duration.as(unit) >= ticks.length) {\n\t\t\treturn unit;\n\t\t}\n\t}\n\n\treturn UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\n\nfunction determineMajorUnit(unit) {\n\tfor (var i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n\t\tif (INTERVALS[UNITS[i]].common) {\n\t\t\treturn UNITS[i];\n\t\t}\n\t}\n}\n\n/**\n * Generates a maximum of `capacity` timestamps between min and max, rounded to the\n * `minor` unit, aligned on the `major` unit and using the given scale time `options`.\n * Important: this method can return ticks outside the min and max range, it's the\n * responsibility of the calling code to clamp values if needed.\n */\nfunction generate(min, max, capacity, options) {\n\tvar timeOpts = options.time;\n\tvar minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, capacity);\n\tvar major = determineMajorUnit(minor);\n\tvar stepSize = helpers.valueOrDefault(timeOpts.stepSize, timeOpts.unitStepSize);\n\tvar weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n\tvar majorTicksEnabled = options.ticks.major.enabled;\n\tvar interval = INTERVALS[minor];\n\tvar first = moment(min);\n\tvar last = moment(max);\n\tvar ticks = [];\n\tvar time;\n\n\tif (!stepSize) {\n\t\tstepSize = determineStepSize(min, max, minor, capacity);\n\t}\n\n\t// For 'week' unit, handle the first day of week option\n\tif (weekday) {\n\t\tfirst = first.isoWeekday(weekday);\n\t\tlast = last.isoWeekday(weekday);\n\t}\n\n\t// Align first/last ticks on unit\n\tfirst = first.startOf(weekday ? 'day' : minor);\n\tlast = last.startOf(weekday ? 'day' : minor);\n\n\t// Make sure that the last tick include max\n\tif (last < max) {\n\t\tlast.add(1, minor);\n\t}\n\n\ttime = moment(first);\n\n\tif (majorTicksEnabled && major && !weekday && !timeOpts.round) {\n\t\t// Align the first tick on the previous `minor` unit aligned on the `major` unit:\n\t\t// we first aligned time on the previous `major` unit then add the number of full\n\t\t// stepSize there is between first and the previous major time.\n\t\ttime.startOf(major);\n\t\ttime.add(~~((first - time) / (interval.size * stepSize)) * stepSize, minor);\n\t}\n\n\tfor (; time < last; time.add(stepSize, minor)) {\n\t\tticks.push(+time);\n\t}\n\n\tticks.push(+time);\n\n\treturn ticks;\n}\n\n/**\n * Returns the right and left offsets from edges in the form of {left, right}.\n * Offsets are added when the `offset` option is true.\n */\nfunction computeOffsets(table, ticks, min, max, options) {\n\tvar left = 0;\n\tvar right = 0;\n\tvar upper, lower;\n\n\tif (options.offset && ticks.length) {\n\t\tif (!options.time.min) {\n\t\t\tupper = ticks.length > 1 ? ticks[1] : max;\n\t\t\tlower = ticks[0];\n\t\t\tleft = (\n\t\t\t\tinterpolate(table, 'time', upper, 'pos') -\n\t\t\t\tinterpolate(table, 'time', lower, 'pos')\n\t\t\t) / 2;\n\t\t}\n\t\tif (!options.time.max) {\n\t\t\tupper = ticks[ticks.length - 1];\n\t\t\tlower = ticks.length > 1 ? ticks[ticks.length - 2] : min;\n\t\t\tright = (\n\t\t\t\tinterpolate(table, 'time', upper, 'pos') -\n\t\t\t\tinterpolate(table, 'time', lower, 'pos')\n\t\t\t) / 2;\n\t\t}\n\t}\n\n\treturn {left: left, right: right};\n}\n\nfunction ticksFromTimestamps(values, majorUnit) {\n\tvar ticks = [];\n\tvar i, ilen, value, major;\n\n\tfor (i = 0, ilen = values.length; i < ilen; ++i) {\n\t\tvalue = values[i];\n\t\tmajor = majorUnit ? value === +moment(value).startOf(majorUnit) : false;\n\n\t\tticks.push({\n\t\t\tvalue: value,\n\t\t\tmajor: major\n\t\t});\n\t}\n\n\treturn ticks;\n}\n\nfunction determineLabelFormat(data, timeOpts) {\n\tvar i, momentDate, hasTime;\n\tvar ilen = data.length;\n\n\t// find the label with the most parts (milliseconds, minutes, etc.)\n\t// format all labels with the same level of detail as the most specific label\n\tfor (i = 0; i < ilen; i++) {\n\t\tmomentDate = momentify(data[i], timeOpts);\n\t\tif (momentDate.millisecond() !== 0) {\n\t\t\treturn 'MMM D, YYYY h:mm:ss.SSS a';\n\t\t}\n\t\tif (momentDate.second() !== 0 || momentDate.minute() !== 0 || momentDate.hour() !== 0) {\n\t\t\thasTime = true;\n\t\t}\n\t}\n\tif (hasTime) {\n\t\treturn 'MMM D, YYYY h:mm:ss a';\n\t}\n\treturn 'MMM D, YYYY';\n}\n\nmodule.exports = function() {\n\n\tvar defaultConfig = {\n\t\tposition: 'bottom',\n\n\t\t/**\n\t\t * Data distribution along the scale:\n\t\t * - 'linear': data are spread according to their time (distances can vary),\n\t\t * - 'series': data are spread at the same distance from each other.\n\t\t * @see https://github.com/chartjs/Chart.js/pull/4507\n\t\t * @since 2.7.0\n\t\t */\n\t\tdistribution: 'linear',\n\n\t\t/**\n\t\t * Scale boundary strategy (bypassed by min/max time options)\n\t\t * - `data`: make sure data are fully visible, ticks outside are removed\n\t\t * - `ticks`: make sure ticks are fully visible, data outside are truncated\n\t\t * @see https://github.com/chartjs/Chart.js/pull/4556\n\t\t * @since 2.7.0\n\t\t */\n\t\tbounds: 'data',\n\n\t\ttime: {\n\t\t\tparser: false, // false == a pattern string from http://momentjs.com/docs/#/parsing/string-format/ or a custom callback that converts its argument to a moment\n\t\t\tformat: false, // DEPRECATED false == date objects, moment object, callback or a pattern string from http://momentjs.com/docs/#/parsing/string-format/\n\t\t\tunit: false, // false == automatic or override with week, month, year, etc.\n\t\t\tround: false, // none, or override with week, month, year, etc.\n\t\t\tdisplayFormat: false, // DEPRECATED\n\t\t\tisoWeekday: false, // override week start day - see http://momentjs.com/docs/#/get-set/iso-weekday/\n\t\t\tminUnit: 'millisecond',\n\n\t\t\t// defaults to unit's corresponding unitFormat below or override using pattern string from http://momentjs.com/docs/#/displaying/format/\n\t\t\tdisplayFormats: {\n\t\t\t\tmillisecond: 'h:mm:ss.SSS a', // 11:20:01.123 AM,\n\t\t\t\tsecond: 'h:mm:ss a', // 11:20:01 AM\n\t\t\t\tminute: 'h:mm a', // 11:20 AM\n\t\t\t\thour: 'hA', // 5PM\n\t\t\t\tday: 'MMM D', // Sep 4\n\t\t\t\tweek: 'll', // Week 46, or maybe \"[W]WW - YYYY\" ?\n\t\t\t\tmonth: 'MMM YYYY', // Sept 2015\n\t\t\t\tquarter: '[Q]Q - YYYY', // Q3\n\t\t\t\tyear: 'YYYY' // 2015\n\t\t\t},\n\t\t},\n\t\tticks: {\n\t\t\tautoSkip: false,\n\n\t\t\t/**\n\t\t\t * Ticks generation input values:\n\t\t\t * - 'auto': generates \"optimal\" ticks based on scale size and time options.\n\t\t\t * - 'data': generates ticks from data (including labels from data {t|x|y} objects).\n\t\t\t * - 'labels': generates ticks from user given `data.labels` values ONLY.\n\t\t\t * @see https://github.com/chartjs/Chart.js/pull/4507\n\t\t\t * @since 2.7.0\n\t\t\t */\n\t\t\tsource: 'auto',\n\n\t\t\tmajor: {\n\t\t\t\tenabled: false\n\t\t\t}\n\t\t}\n\t};\n\n\tvar TimeScale = Scale.extend({\n\t\tinitialize: function() {\n\t\t\tif (!moment) {\n\t\t\t\tthrow new Error('Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com');\n\t\t\t}\n\n\t\t\tthis.mergeTicksOptions();\n\n\t\t\tScale.prototype.initialize.call(this);\n\t\t},\n\n\t\tupdate: function() {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\n\t\t\t// DEPRECATIONS: output a message only one time per update\n\t\t\tif (options.time && options.time.format) {\n\t\t\t\tconsole.warn('options.time.format is deprecated and replaced by options.time.parser.');\n\t\t\t}\n\n\t\t\treturn Scale.prototype.update.apply(me, arguments);\n\t\t},\n\n\t\t/**\n\t\t * Allows data to be referenced via 't' attribute\n\t\t */\n\t\tgetRightValue: function(rawValue) {\n\t\t\tif (rawValue && rawValue.t !== undefined) {\n\t\t\t\trawValue = rawValue.t;\n\t\t\t}\n\t\t\treturn Scale.prototype.getRightValue.call(this, rawValue);\n\t\t},\n\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar timeOpts = me.options.time;\n\t\t\tvar unit = timeOpts.unit || 'day';\n\t\t\tvar min = MAX_INTEGER;\n\t\t\tvar max = MIN_INTEGER;\n\t\t\tvar timestamps = [];\n\t\t\tvar datasets = [];\n\t\t\tvar labels = [];\n\t\t\tvar i, j, ilen, jlen, data, timestamp;\n\n\t\t\t// Convert labels to timestamps\n\t\t\tfor (i = 0, ilen = chart.data.labels.length; i < ilen; ++i) {\n\t\t\t\tlabels.push(parse(chart.data.labels[i], me));\n\t\t\t}\n\n\t\t\t// Convert data to timestamps\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tif (chart.isDatasetVisible(i)) {\n\t\t\t\t\tdata = chart.data.datasets[i].data;\n\n\t\t\t\t\t// Let's consider that all data have the same format.\n\t\t\t\t\tif (helpers.isObject(data[0])) {\n\t\t\t\t\t\tdatasets[i] = [];\n\n\t\t\t\t\t\tfor (j = 0, jlen = data.length; j < jlen; ++j) {\n\t\t\t\t\t\t\ttimestamp = parse(data[j], me);\n\t\t\t\t\t\t\ttimestamps.push(timestamp);\n\t\t\t\t\t\t\tdatasets[i][j] = timestamp;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttimestamps.push.apply(timestamps, labels);\n\t\t\t\t\t\tdatasets[i] = labels.slice(0);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tdatasets[i] = [];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (labels.length) {\n\t\t\t\t// Sort labels **after** data have been converted\n\t\t\t\tlabels = arrayUnique(labels).sort(sorter);\n\t\t\t\tmin = Math.min(min, labels[0]);\n\t\t\t\tmax = Math.max(max, labels[labels.length - 1]);\n\t\t\t}\n\n\t\t\tif (timestamps.length) {\n\t\t\t\ttimestamps = arrayUnique(timestamps).sort(sorter);\n\t\t\t\tmin = Math.min(min, timestamps[0]);\n\t\t\t\tmax = Math.max(max, timestamps[timestamps.length - 1]);\n\t\t\t}\n\n\t\t\tmin = parse(timeOpts.min, me) || min;\n\t\t\tmax = parse(timeOpts.max, me) || max;\n\n\t\t\t// In case there is no valid min/max, set limits based on unit time option\n\t\t\tmin = min === MAX_INTEGER ? +moment().startOf(unit) : min;\n\t\t\tmax = max === MIN_INTEGER ? +moment().endOf(unit) + 1 : max;\n\n\t\t\t// Make sure that max is strictly higher than min (required by the lookup table)\n\t\t\tme.min = Math.min(min, max);\n\t\t\tme.max = Math.max(min + 1, max);\n\n\t\t\t// PRIVATE\n\t\t\tme._horizontal = me.isHorizontal();\n\t\t\tme._table = [];\n\t\t\tme._timestamps = {\n\t\t\t\tdata: timestamps,\n\t\t\t\tdatasets: datasets,\n\t\t\t\tlabels: labels\n\t\t\t};\n\t\t},\n\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar min = me.min;\n\t\t\tvar max = me.max;\n\t\t\tvar options = me.options;\n\t\t\tvar timeOpts = options.time;\n\t\t\tvar timestamps = [];\n\t\t\tvar ticks = [];\n\t\t\tvar i, ilen, timestamp;\n\n\t\t\tswitch (options.ticks.source) {\n\t\t\tcase 'data':\n\t\t\t\ttimestamps = me._timestamps.data;\n\t\t\t\tbreak;\n\t\t\tcase 'labels':\n\t\t\t\ttimestamps = me._timestamps.labels;\n\t\t\t\tbreak;\n\t\t\tcase 'auto':\n\t\t\tdefault:\n\t\t\t\ttimestamps = generate(min, max, me.getLabelCapacity(min), options);\n\t\t\t}\n\n\t\t\tif (options.bounds === 'ticks' && timestamps.length) {\n\t\t\t\tmin = timestamps[0];\n\t\t\t\tmax = timestamps[timestamps.length - 1];\n\t\t\t}\n\n\t\t\t// Enforce limits with user min/max options\n\t\t\tmin = parse(timeOpts.min, me) || min;\n\t\t\tmax = parse(timeOpts.max, me) || max;\n\n\t\t\t// Remove ticks outside the min/max range\n\t\t\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n\t\t\t\ttimestamp = timestamps[i];\n\t\t\t\tif (timestamp >= min && timestamp <= max) {\n\t\t\t\t\tticks.push(timestamp);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tme.min = min;\n\t\t\tme.max = max;\n\n\t\t\t// PRIVATE\n\t\t\tme._unit = timeOpts.unit || determineUnitForFormatting(ticks, timeOpts.minUnit, me.min, me.max);\n\t\t\tme._majorUnit = determineMajorUnit(me._unit);\n\t\t\tme._table = buildLookupTable(me._timestamps.data, min, max, options.distribution);\n\t\t\tme._offsets = computeOffsets(me._table, ticks, min, max, options);\n\t\t\tme._labelFormat = determineLabelFormat(me._timestamps.data, timeOpts);\n\n\t\t\treturn ticksFromTimestamps(ticks, me._majorUnit);\n\t\t},\n\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar data = me.chart.data;\n\t\t\tvar timeOpts = me.options.time;\n\t\t\tvar label = data.labels && index < data.labels.length ? data.labels[index] : '';\n\t\t\tvar value = data.datasets[datasetIndex].data[index];\n\n\t\t\tif (helpers.isObject(value)) {\n\t\t\t\tlabel = me.getRightValue(value);\n\t\t\t}\n\t\t\tif (timeOpts.tooltipFormat) {\n\t\t\t\treturn momentify(label, timeOpts).format(timeOpts.tooltipFormat);\n\t\t\t}\n\t\t\tif (typeof label === 'string') {\n\t\t\t\treturn label;\n\t\t\t}\n\n\t\t\treturn momentify(label, timeOpts).format(me._labelFormat);\n\t\t},\n\n\t\t/**\n\t\t * Function to format an individual tick mark\n\t\t * @private\n\t\t */\n\t\ttickFormatFunction: function(tick, index, ticks, formatOverride) {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\t\t\tvar time = tick.valueOf();\n\t\t\tvar formats = options.time.displayFormats;\n\t\t\tvar minorFormat = formats[me._unit];\n\t\t\tvar majorUnit = me._majorUnit;\n\t\t\tvar majorFormat = formats[majorUnit];\n\t\t\tvar majorTime = tick.clone().startOf(majorUnit).valueOf();\n\t\t\tvar majorTickOpts = options.ticks.major;\n\t\t\tvar major = majorTickOpts.enabled && majorUnit && majorFormat && time === majorTime;\n\t\t\tvar label = tick.format(formatOverride ? formatOverride : major ? majorFormat : minorFormat);\n\t\t\tvar tickOpts = major ? majorTickOpts : options.ticks.minor;\n\t\t\tvar formatter = helpers.valueOrDefault(tickOpts.callback, tickOpts.userCallback);\n\n\t\t\treturn formatter ? formatter(label, index, ticks) : label;\n\t\t},\n\n\t\tconvertTicksToLabels: function(ticks) {\n\t\t\tvar labels = [];\n\t\t\tvar i, ilen;\n\n\t\t\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\n\t\t\t\tlabels.push(this.tickFormatFunction(moment(ticks[i].value), i, ticks));\n\t\t\t}\n\n\t\t\treturn labels;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetPixelForOffset: function(time) {\n\t\t\tvar me = this;\n\t\t\tvar size = me._horizontal ? me.width : me.height;\n\t\t\tvar start = me._horizontal ? me.left : me.top;\n\t\t\tvar pos = interpolate(me._table, 'time', time, 'pos');\n\n\t\t\treturn start + size * (me._offsets.left + pos) / (me._offsets.left + 1 + me._offsets.right);\n\t\t},\n\n\t\tgetPixelForValue: function(value, index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar time = null;\n\n\t\t\tif (index !== undefined && datasetIndex !== undefined) {\n\t\t\t\ttime = me._timestamps.datasets[datasetIndex][index];\n\t\t\t}\n\n\t\t\tif (time === null) {\n\t\t\t\ttime = parse(value, me);\n\t\t\t}\n\n\t\t\tif (time !== null) {\n\t\t\t\treturn me.getPixelForOffset(time);\n\t\t\t}\n\t\t},\n\n\t\tgetPixelForTick: function(index) {\n\t\t\tvar ticks = this.getTicks();\n\t\t\treturn index >= 0 && index < ticks.length ?\n\t\t\t\tthis.getPixelForOffset(ticks[index].value) :\n\t\t\t\tnull;\n\t\t},\n\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar size = me._horizontal ? me.width : me.height;\n\t\t\tvar start = me._horizontal ? me.left : me.top;\n\t\t\tvar pos = (size ? (pixel - start) / size : 0) * (me._offsets.left + 1 + me._offsets.left) - me._offsets.right;\n\t\t\tvar time = interpolate(me._table, 'pos', pos, 'time');\n\n\t\t\treturn moment(time);\n\t\t},\n\n\t\t/**\n\t\t * Crude approximation of what the label width might be\n\t\t * @private\n\t\t */\n\t\tgetLabelWidth: function(label) {\n\t\t\tvar me = this;\n\t\t\tvar ticksOpts = me.options.ticks;\n\t\t\tvar tickLabelWidth = me.ctx.measureText(label).width;\n\t\t\tvar angle = helpers.toRadians(ticksOpts.maxRotation);\n\t\t\tvar cosRotation = Math.cos(angle);\n\t\t\tvar sinRotation = Math.sin(angle);\n\t\t\tvar tickFontSize = helpers.valueOrDefault(ticksOpts.fontSize, defaults.global.defaultFontSize);\n\n\t\t\treturn (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetLabelCapacity: function(exampleTime) {\n\t\t\tvar me = this;\n\n\t\t\tvar formatOverride = me.options.time.displayFormats.millisecond;\t// Pick the longest format for guestimation\n\n\t\t\tvar exampleLabel = me.tickFormatFunction(moment(exampleTime), 0, [], formatOverride);\n\t\t\tvar tickLabelWidth = me.getLabelWidth(exampleLabel);\n\t\t\tvar innerWidth = me.isHorizontal() ? me.width : me.height;\n\n\t\t\tvar capacity = Math.floor(innerWidth / tickLabelWidth);\n\t\t\treturn capacity > 0 ? capacity : 1;\n\t\t}\n\t});\n\n\tscaleService.registerScaleType('time', TimeScale, defaultConfig);\n};\n\n},{\"1\":1,\"26\":26,\"33\":33,\"34\":34,\"46\":46}]},{},[7])(7)\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $findIndex = require('../internals/array-iteration').findIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n","var $ = require('../internals/export');\n\nvar log = Math.log;\nvar LOG10E = Math.LOG10E;\n\n// `Math.log10` method\n// https://tc39.github.io/ecma262/#sec-math.log10\n$({ target: 'Math', stat: true }, {\n log10: function log10(x) {\n return log(x) * LOG10E;\n }\n});\n","var $ = require('../internals/export');\nvar sign = require('../internals/math-sign');\n\n// `Math.sign` method\n// https://tc39.github.io/ecma262/#sec-math.sign\n$({ target: 'Math', stat: true }, {\n sign: sign\n});\n","// `Math.sign` method implementation\n// https://tc39.github.io/ecma262/#sec-math.sign\nmodule.exports = Math.sign || function sign(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n","var $ = require('../internals/export');\n\n// `Number.EPSILON` constant\n// https://tc39.github.io/ecma262/#sec-number.epsilon\n$({ target: 'Number', stat: true }, {\n EPSILON: Math.pow(2, -52)\n});\n","/*!\n * chartjs-plugin-datalabels v0.7.0\n * https://chartjs-plugin-datalabels.netlify.com\n * (c) 2019 Chart.js Contributors\n * Released under the MIT license\n */\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('chart.js')) :\ntypeof define === 'function' && define.amd ? define(['chart.js'], factory) :\n(global = global || self, global.ChartDataLabels = factory(global.Chart));\n}(this, function (Chart) { 'use strict';\n\nChart = Chart && Chart.hasOwnProperty('default') ? Chart['default'] : Chart;\n\nvar helpers = Chart.helpers;\n\nvar devicePixelRatio = (function() {\n\tif (typeof window !== 'undefined') {\n\t\tif (window.devicePixelRatio) {\n\t\t\treturn window.devicePixelRatio;\n\t\t}\n\n\t\t// devicePixelRatio is undefined on IE10\n\t\t// https://stackoverflow.com/a/20204180/8837887\n\t\t// https://github.com/chartjs/chartjs-plugin-datalabels/issues/85\n\t\tvar screen = window.screen;\n\t\tif (screen) {\n\t\t\treturn (screen.deviceXDPI || 1) / (screen.logicalXDPI || 1);\n\t\t}\n\t}\n\n\treturn 1;\n}());\n\nvar utils = {\n\t// @todo move this in Chart.helpers.toTextLines\n\ttoTextLines: function(inputs) {\n\t\tvar lines = [];\n\t\tvar input;\n\n\t\tinputs = [].concat(inputs);\n\t\twhile (inputs.length) {\n\t\t\tinput = inputs.pop();\n\t\t\tif (typeof input === 'string') {\n\t\t\t\tlines.unshift.apply(lines, input.split('\\n'));\n\t\t\t} else if (Array.isArray(input)) {\n\t\t\t\tinputs.push.apply(inputs, input);\n\t\t\t} else if (!helpers.isNullOrUndef(inputs)) {\n\t\t\t\tlines.unshift('' + input);\n\t\t\t}\n\t\t}\n\n\t\treturn lines;\n\t},\n\n\t// @todo move this method in Chart.helpers.canvas.toFont (deprecates helpers.fontString)\n\t// @see https://developer.mozilla.org/en-US/docs/Web/CSS/font\n\ttoFontString: function(font) {\n\t\tif (!font || helpers.isNullOrUndef(font.size) || helpers.isNullOrUndef(font.family)) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn (font.style ? font.style + ' ' : '')\n\t\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t\t+ font.size + 'px '\n\t\t\t+ font.family;\n\t},\n\n\t// @todo move this in Chart.helpers.canvas.textSize\n\t// @todo cache calls of measureText if font doesn't change?!\n\ttextSize: function(ctx, lines, font) {\n\t\tvar items = [].concat(lines);\n\t\tvar ilen = items.length;\n\t\tvar prev = ctx.font;\n\t\tvar width = 0;\n\t\tvar i;\n\n\t\tctx.font = font.string;\n\n\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\twidth = Math.max(ctx.measureText(items[i]).width, width);\n\t\t}\n\n\t\tctx.font = prev;\n\n\t\treturn {\n\t\t\theight: ilen * font.lineHeight,\n\t\t\twidth: width\n\t\t};\n\t},\n\n\t// @todo move this method in Chart.helpers.options.toFont\n\tparseFont: function(value) {\n\t\tvar global = Chart.defaults.global;\n\t\tvar size = helpers.valueOrDefault(value.size, global.defaultFontSize);\n\t\tvar font = {\n\t\t\tfamily: helpers.valueOrDefault(value.family, global.defaultFontFamily),\n\t\t\tlineHeight: helpers.options.toLineHeight(value.lineHeight, size),\n\t\t\tsize: size,\n\t\t\tstyle: helpers.valueOrDefault(value.style, global.defaultFontStyle),\n\t\t\tweight: helpers.valueOrDefault(value.weight, null),\n\t\t\tstring: ''\n\t\t};\n\n\t\tfont.string = utils.toFontString(font);\n\t\treturn font;\n\t},\n\n\t/**\n\t * Returns value bounded by min and max. This is equivalent to max(min, min(value, max)).\n\t * @todo move this method in Chart.helpers.bound\n\t * https://doc.qt.io/qt-5/qtglobal.html#qBound\n\t */\n\tbound: function(min, value, max) {\n\t\treturn Math.max(min, Math.min(value, max));\n\t},\n\n\t/**\n\t * Returns an array of pair [value, state] where state is:\n\t * * -1: value is only in a0 (removed)\n\t * * 1: value is only in a1 (added)\n\t */\n\tarrayDiff: function(a0, a1) {\n\t\tvar prev = a0.slice();\n\t\tvar updates = [];\n\t\tvar i, j, ilen, v;\n\n\t\tfor (i = 0, ilen = a1.length; i < ilen; ++i) {\n\t\t\tv = a1[i];\n\t\t\tj = prev.indexOf(v);\n\n\t\t\tif (j === -1) {\n\t\t\t\tupdates.push([v, 1]);\n\t\t\t} else {\n\t\t\t\tprev.splice(j, 1);\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, ilen = prev.length; i < ilen; ++i) {\n\t\t\tupdates.push([prev[i], -1]);\n\t\t}\n\n\t\treturn updates;\n\t},\n\n\t/**\n\t * https://github.com/chartjs/chartjs-plugin-datalabels/issues/70\n\t */\n\trasterize: function(v) {\n\t\treturn Math.round(v * devicePixelRatio) / devicePixelRatio;\n\t}\n};\n\nfunction orient(point, origin) {\n\tvar x0 = origin.x;\n\tvar y0 = origin.y;\n\n\tif (x0 === null) {\n\t\treturn {x: 0, y: -1};\n\t}\n\tif (y0 === null) {\n\t\treturn {x: 1, y: 0};\n\t}\n\n\tvar dx = point.x - x0;\n\tvar dy = point.y - y0;\n\tvar ln = Math.sqrt(dx * dx + dy * dy);\n\n\treturn {\n\t\tx: ln ? dx / ln : 0,\n\t\ty: ln ? dy / ln : -1\n\t};\n}\n\nfunction aligned(x, y, vx, vy, align) {\n\tswitch (align) {\n\tcase 'center':\n\t\tvx = vy = 0;\n\t\tbreak;\n\tcase 'bottom':\n\t\tvx = 0;\n\t\tvy = 1;\n\t\tbreak;\n\tcase 'right':\n\t\tvx = 1;\n\t\tvy = 0;\n\t\tbreak;\n\tcase 'left':\n\t\tvx = -1;\n\t\tvy = 0;\n\t\tbreak;\n\tcase 'top':\n\t\tvx = 0;\n\t\tvy = -1;\n\t\tbreak;\n\tcase 'start':\n\t\tvx = -vx;\n\t\tvy = -vy;\n\t\tbreak;\n\tcase 'end':\n\t\t// keep natural orientation\n\t\tbreak;\n\tdefault:\n\t\t// clockwise rotation (in degree)\n\t\talign *= (Math.PI / 180);\n\t\tvx = Math.cos(align);\n\t\tvy = Math.sin(align);\n\t\tbreak;\n\t}\n\n\treturn {\n\t\tx: x,\n\t\ty: y,\n\t\tvx: vx,\n\t\tvy: vy\n\t};\n}\n\n// Line clipping (Cohen–Sutherland algorithm)\n// https://en.wikipedia.org/wiki/Cohen–Sutherland_algorithm\n\nvar R_INSIDE = 0;\nvar R_LEFT = 1;\nvar R_RIGHT = 2;\nvar R_BOTTOM = 4;\nvar R_TOP = 8;\n\nfunction region(x, y, rect) {\n\tvar res = R_INSIDE;\n\n\tif (x < rect.left) {\n\t\tres |= R_LEFT;\n\t} else if (x > rect.right) {\n\t\tres |= R_RIGHT;\n\t}\n\tif (y < rect.top) {\n\t\tres |= R_TOP;\n\t} else if (y > rect.bottom) {\n\t\tres |= R_BOTTOM;\n\t}\n\n\treturn res;\n}\n\nfunction clipped(segment, area) {\n\tvar x0 = segment.x0;\n\tvar y0 = segment.y0;\n\tvar x1 = segment.x1;\n\tvar y1 = segment.y1;\n\tvar r0 = region(x0, y0, area);\n\tvar r1 = region(x1, y1, area);\n\tvar r, x, y;\n\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\tif (!(r0 | r1) || (r0 & r1)) {\n\t\t\t// both points inside or on the same side: no clipping\n\t\t\tbreak;\n\t\t}\n\n\t\t// at least one point is outside\n\t\tr = r0 || r1;\n\n\t\tif (r & R_TOP) {\n\t\t\tx = x0 + (x1 - x0) * (area.top - y0) / (y1 - y0);\n\t\t\ty = area.top;\n\t\t} else if (r & R_BOTTOM) {\n\t\t\tx = x0 + (x1 - x0) * (area.bottom - y0) / (y1 - y0);\n\t\t\ty = area.bottom;\n\t\t} else if (r & R_RIGHT) {\n\t\t\ty = y0 + (y1 - y0) * (area.right - x0) / (x1 - x0);\n\t\t\tx = area.right;\n\t\t} else if (r & R_LEFT) {\n\t\t\ty = y0 + (y1 - y0) * (area.left - x0) / (x1 - x0);\n\t\t\tx = area.left;\n\t\t}\n\n\t\tif (r === r0) {\n\t\t\tx0 = x;\n\t\t\ty0 = y;\n\t\t\tr0 = region(x0, y0, area);\n\t\t} else {\n\t\t\tx1 = x;\n\t\t\ty1 = y;\n\t\t\tr1 = region(x1, y1, area);\n\t\t}\n\t}\n\n\treturn {\n\t\tx0: x0,\n\t\tx1: x1,\n\t\ty0: y0,\n\t\ty1: y1\n\t};\n}\n\nfunction compute(range, config) {\n\tvar anchor = config.anchor;\n\tvar segment = range;\n\tvar x, y;\n\n\tif (config.clamp) {\n\t\tsegment = clipped(segment, config.area);\n\t}\n\n\tif (anchor === 'start') {\n\t\tx = segment.x0;\n\t\ty = segment.y0;\n\t} else if (anchor === 'end') {\n\t\tx = segment.x1;\n\t\ty = segment.y1;\n\t} else {\n\t\tx = (segment.x0 + segment.x1) / 2;\n\t\ty = (segment.y0 + segment.y1) / 2;\n\t}\n\n\treturn aligned(x, y, range.vx, range.vy, config.align);\n}\n\nvar positioners = {\n\tarc: function(vm, config) {\n\t\tvar angle = (vm.startAngle + vm.endAngle) / 2;\n\t\tvar vx = Math.cos(angle);\n\t\tvar vy = Math.sin(angle);\n\t\tvar r0 = vm.innerRadius;\n\t\tvar r1 = vm.outerRadius;\n\n\t\treturn compute({\n\t\t\tx0: vm.x + vx * r0,\n\t\t\ty0: vm.y + vy * r0,\n\t\t\tx1: vm.x + vx * r1,\n\t\t\ty1: vm.y + vy * r1,\n\t\t\tvx: vx,\n\t\t\tvy: vy\n\t\t}, config);\n\t},\n\n\tpoint: function(vm, config) {\n\t\tvar v = orient(vm, config.origin);\n\t\tvar rx = v.x * vm.radius;\n\t\tvar ry = v.y * vm.radius;\n\n\t\treturn compute({\n\t\t\tx0: vm.x - rx,\n\t\t\ty0: vm.y - ry,\n\t\t\tx1: vm.x + rx,\n\t\t\ty1: vm.y + ry,\n\t\t\tvx: v.x,\n\t\t\tvy: v.y\n\t\t}, config);\n\t},\n\n\trect: function(vm, config) {\n\t\tvar v = orient(vm, config.origin);\n\t\tvar x = vm.x;\n\t\tvar y = vm.y;\n\t\tvar sx = 0;\n\t\tvar sy = 0;\n\n\t\tif (vm.horizontal) {\n\t\t\tx = Math.min(vm.x, vm.base);\n\t\t\tsx = Math.abs(vm.base - vm.x);\n\t\t} else {\n\t\t\ty = Math.min(vm.y, vm.base);\n\t\t\tsy = Math.abs(vm.base - vm.y);\n\t\t}\n\n\t\treturn compute({\n\t\t\tx0: x,\n\t\t\ty0: y + sy,\n\t\t\tx1: x + sx,\n\t\t\ty1: y,\n\t\t\tvx: v.x,\n\t\t\tvy: v.y\n\t\t}, config);\n\t},\n\n\tfallback: function(vm, config) {\n\t\tvar v = orient(vm, config.origin);\n\n\t\treturn compute({\n\t\t\tx0: vm.x,\n\t\t\ty0: vm.y,\n\t\t\tx1: vm.x,\n\t\t\ty1: vm.y,\n\t\t\tvx: v.x,\n\t\t\tvy: v.y\n\t\t}, config);\n\t}\n};\n\nvar helpers$1 = Chart.helpers;\nvar rasterize = utils.rasterize;\n\nfunction boundingRects(model) {\n\tvar borderWidth = model.borderWidth || 0;\n\tvar padding = model.padding;\n\tvar th = model.size.height;\n\tvar tw = model.size.width;\n\tvar tx = -tw / 2;\n\tvar ty = -th / 2;\n\n\treturn {\n\t\tframe: {\n\t\t\tx: tx - padding.left - borderWidth,\n\t\t\ty: ty - padding.top - borderWidth,\n\t\t\tw: tw + padding.width + borderWidth * 2,\n\t\t\th: th + padding.height + borderWidth * 2\n\t\t},\n\t\ttext: {\n\t\t\tx: tx,\n\t\t\ty: ty,\n\t\t\tw: tw,\n\t\t\th: th\n\t\t}\n\t};\n}\n\nfunction getScaleOrigin(el) {\n\tvar horizontal = el._model.horizontal;\n\tvar scale = el._scale || (horizontal && el._xScale) || el._yScale;\n\n\tif (!scale) {\n\t\treturn null;\n\t}\n\n\tif (scale.xCenter !== undefined && scale.yCenter !== undefined) {\n\t\treturn {x: scale.xCenter, y: scale.yCenter};\n\t}\n\n\tvar pixel = scale.getBasePixel();\n\treturn horizontal ?\n\t\t{x: pixel, y: null} :\n\t\t{x: null, y: pixel};\n}\n\nfunction getPositioner(el) {\n\tif (el instanceof Chart.elements.Arc) {\n\t\treturn positioners.arc;\n\t}\n\tif (el instanceof Chart.elements.Point) {\n\t\treturn positioners.point;\n\t}\n\tif (el instanceof Chart.elements.Rectangle) {\n\t\treturn positioners.rect;\n\t}\n\treturn positioners.fallback;\n}\n\nfunction drawFrame(ctx, rect, model) {\n\tvar bgColor = model.backgroundColor;\n\tvar borderColor = model.borderColor;\n\tvar borderWidth = model.borderWidth;\n\n\tif (!bgColor && (!borderColor || !borderWidth)) {\n\t\treturn;\n\t}\n\n\tctx.beginPath();\n\n\thelpers$1.canvas.roundedRect(\n\t\tctx,\n\t\trasterize(rect.x) + borderWidth / 2,\n\t\trasterize(rect.y) + borderWidth / 2,\n\t\trasterize(rect.w) - borderWidth,\n\t\trasterize(rect.h) - borderWidth,\n\t\tmodel.borderRadius);\n\n\tctx.closePath();\n\n\tif (bgColor) {\n\t\tctx.fillStyle = bgColor;\n\t\tctx.fill();\n\t}\n\n\tif (borderColor && borderWidth) {\n\t\tctx.strokeStyle = borderColor;\n\t\tctx.lineWidth = borderWidth;\n\t\tctx.lineJoin = 'miter';\n\t\tctx.stroke();\n\t}\n}\n\nfunction textGeometry(rect, align, font) {\n\tvar h = font.lineHeight;\n\tvar w = rect.w;\n\tvar x = rect.x;\n\tvar y = rect.y + h / 2;\n\n\tif (align === 'center') {\n\t\tx += w / 2;\n\t} else if (align === 'end' || align === 'right') {\n\t\tx += w;\n\t}\n\n\treturn {\n\t\th: h,\n\t\tw: w,\n\t\tx: x,\n\t\ty: y\n\t};\n}\n\nfunction drawTextLine(ctx, text, cfg) {\n\tvar shadow = ctx.shadowBlur;\n\tvar stroked = cfg.stroked;\n\tvar x = rasterize(cfg.x);\n\tvar y = rasterize(cfg.y);\n\tvar w = rasterize(cfg.w);\n\n\tif (stroked) {\n\t\tctx.strokeText(text, x, y, w);\n\t}\n\n\tif (cfg.filled) {\n\t\tif (shadow && stroked) {\n\t\t\t// Prevent drawing shadow on both the text stroke and fill, so\n\t\t\t// if the text is stroked, remove the shadow for the text fill.\n\t\t\tctx.shadowBlur = 0;\n\t\t}\n\n\t\tctx.fillText(text, x, y, w);\n\n\t\tif (shadow && stroked) {\n\t\t\tctx.shadowBlur = shadow;\n\t\t}\n\t}\n}\n\nfunction drawText(ctx, lines, rect, model) {\n\tvar align = model.textAlign;\n\tvar color = model.color;\n\tvar filled = !!color;\n\tvar font = model.font;\n\tvar ilen = lines.length;\n\tvar strokeColor = model.textStrokeColor;\n\tvar strokeWidth = model.textStrokeWidth;\n\tvar stroked = strokeColor && strokeWidth;\n\tvar i;\n\n\tif (!ilen || (!filled && !stroked)) {\n\t\treturn;\n\t}\n\n\t// Adjust coordinates based on text alignment and line height\n\trect = textGeometry(rect, align, font);\n\n\tctx.font = font.string;\n\tctx.textAlign = align;\n\tctx.textBaseline = 'middle';\n\tctx.shadowBlur = model.textShadowBlur;\n\tctx.shadowColor = model.textShadowColor;\n\n\tif (filled) {\n\t\tctx.fillStyle = color;\n\t}\n\tif (stroked) {\n\t\tctx.lineJoin = 'round';\n\t\tctx.lineWidth = strokeWidth;\n\t\tctx.strokeStyle = strokeColor;\n\t}\n\n\tfor (i = 0, ilen = lines.length; i < ilen; ++i) {\n\t\tdrawTextLine(ctx, lines[i], {\n\t\t\tstroked: stroked,\n\t\t\tfilled: filled,\n\t\t\tw: rect.w,\n\t\t\tx: rect.x,\n\t\t\ty: rect.y + rect.h * i\n\t\t});\n\t}\n}\n\nvar Label = function(config, ctx, el, index) {\n\tvar me = this;\n\n\tme._config = config;\n\tme._index = index;\n\tme._model = null;\n\tme._rects = null;\n\tme._ctx = ctx;\n\tme._el = el;\n};\n\nhelpers$1.extend(Label.prototype, {\n\t/**\n\t * @private\n\t */\n\t_modelize: function(display, lines, config, context) {\n\t\tvar me = this;\n\t\tvar index = me._index;\n\t\tvar resolve = helpers$1.options.resolve;\n\t\tvar font = utils.parseFont(resolve([config.font, {}], context, index));\n\t\tvar color = resolve([config.color, Chart.defaults.global.defaultFontColor], context, index);\n\n\t\treturn {\n\t\t\talign: resolve([config.align, 'center'], context, index),\n\t\t\tanchor: resolve([config.anchor, 'center'], context, index),\n\t\t\tarea: context.chart.chartArea,\n\t\t\tbackgroundColor: resolve([config.backgroundColor, null], context, index),\n\t\t\tborderColor: resolve([config.borderColor, null], context, index),\n\t\t\tborderRadius: resolve([config.borderRadius, 0], context, index),\n\t\t\tborderWidth: resolve([config.borderWidth, 0], context, index),\n\t\t\tclamp: resolve([config.clamp, false], context, index),\n\t\t\tclip: resolve([config.clip, false], context, index),\n\t\t\tcolor: color,\n\t\t\tdisplay: display,\n\t\t\tfont: font,\n\t\t\tlines: lines,\n\t\t\toffset: resolve([config.offset, 0], context, index),\n\t\t\topacity: resolve([config.opacity, 1], context, index),\n\t\t\torigin: getScaleOrigin(me._el),\n\t\t\tpadding: helpers$1.options.toPadding(resolve([config.padding, 0], context, index)),\n\t\t\tpositioner: getPositioner(me._el),\n\t\t\trotation: resolve([config.rotation, 0], context, index) * (Math.PI / 180),\n\t\t\tsize: utils.textSize(me._ctx, lines, font),\n\t\t\ttextAlign: resolve([config.textAlign, 'start'], context, index),\n\t\t\ttextShadowBlur: resolve([config.textShadowBlur, 0], context, index),\n\t\t\ttextShadowColor: resolve([config.textShadowColor, color], context, index),\n\t\t\ttextStrokeColor: resolve([config.textStrokeColor, color], context, index),\n\t\t\ttextStrokeWidth: resolve([config.textStrokeWidth, 0], context, index)\n\t\t};\n\t},\n\n\tupdate: function(context) {\n\t\tvar me = this;\n\t\tvar model = null;\n\t\tvar rects = null;\n\t\tvar index = me._index;\n\t\tvar config = me._config;\n\t\tvar value, label, lines;\n\n\t\t// We first resolve the display option (separately) to avoid computing\n\t\t// other options in case the label is hidden (i.e. display: false).\n\t\tvar display = helpers$1.options.resolve([config.display, true], context, index);\n\n\t\tif (display) {\n\t\t\tvalue = context.dataset.data[index];\n\t\t\tlabel = helpers$1.valueOrDefault(helpers$1.callback(config.formatter, [value, context]), value);\n\t\t\tlines = helpers$1.isNullOrUndef(label) ? [] : utils.toTextLines(label);\n\n\t\t\tif (lines.length) {\n\t\t\t\tmodel = me._modelize(display, lines, config, context);\n\t\t\t\trects = boundingRects(model);\n\t\t\t}\n\t\t}\n\n\t\tme._model = model;\n\t\tme._rects = rects;\n\t},\n\n\tgeometry: function() {\n\t\treturn this._rects ? this._rects.frame : {};\n\t},\n\n\trotation: function() {\n\t\treturn this._model ? this._model.rotation : 0;\n\t},\n\n\tvisible: function() {\n\t\treturn this._model && this._model.opacity;\n\t},\n\n\tmodel: function() {\n\t\treturn this._model;\n\t},\n\n\tdraw: function(chart, center) {\n\t\tvar me = this;\n\t\tvar ctx = chart.ctx;\n\t\tvar model = me._model;\n\t\tvar rects = me._rects;\n\t\tvar area;\n\n\t\tif (!this.visible()) {\n\t\t\treturn;\n\t\t}\n\n\t\tctx.save();\n\n\t\tif (model.clip) {\n\t\t\tarea = model.area;\n\t\t\tctx.beginPath();\n\t\t\tctx.rect(\n\t\t\t\tarea.left,\n\t\t\t\tarea.top,\n\t\t\t\tarea.right - area.left,\n\t\t\t\tarea.bottom - area.top);\n\t\t\tctx.clip();\n\t\t}\n\n\t\tctx.globalAlpha = utils.bound(0, model.opacity, 1);\n\t\tctx.translate(rasterize(center.x), rasterize(center.y));\n\t\tctx.rotate(model.rotation);\n\n\t\tdrawFrame(ctx, rects.frame, model);\n\t\tdrawText(ctx, model.lines, rects.text, model);\n\n\t\tctx.restore();\n\t}\n});\n\nvar helpers$2 = Chart.helpers;\n\nvar MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991; // eslint-disable-line es/no-number-minsafeinteger\nvar MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; // eslint-disable-line es/no-number-maxsafeinteger\n\nfunction rotated(point, center, angle) {\n\tvar cos = Math.cos(angle);\n\tvar sin = Math.sin(angle);\n\tvar cx = center.x;\n\tvar cy = center.y;\n\n\treturn {\n\t\tx: cx + cos * (point.x - cx) - sin * (point.y - cy),\n\t\ty: cy + sin * (point.x - cx) + cos * (point.y - cy)\n\t};\n}\n\nfunction projected(points, axis) {\n\tvar min = MAX_INTEGER;\n\tvar max = MIN_INTEGER;\n\tvar origin = axis.origin;\n\tvar i, pt, vx, vy, dp;\n\n\tfor (i = 0; i < points.length; ++i) {\n\t\tpt = points[i];\n\t\tvx = pt.x - origin.x;\n\t\tvy = pt.y - origin.y;\n\t\tdp = axis.vx * vx + axis.vy * vy;\n\t\tmin = Math.min(min, dp);\n\t\tmax = Math.max(max, dp);\n\t}\n\n\treturn {\n\t\tmin: min,\n\t\tmax: max\n\t};\n}\n\nfunction toAxis(p0, p1) {\n\tvar vx = p1.x - p0.x;\n\tvar vy = p1.y - p0.y;\n\tvar ln = Math.sqrt(vx * vx + vy * vy);\n\n\treturn {\n\t\tvx: (p1.x - p0.x) / ln,\n\t\tvy: (p1.y - p0.y) / ln,\n\t\torigin: p0,\n\t\tln: ln\n\t};\n}\n\nvar HitBox = function() {\n\tthis._rotation = 0;\n\tthis._rect = {\n\t\tx: 0,\n\t\ty: 0,\n\t\tw: 0,\n\t\th: 0\n\t};\n};\n\nhelpers$2.extend(HitBox.prototype, {\n\tcenter: function() {\n\t\tvar r = this._rect;\n\t\treturn {\n\t\t\tx: r.x + r.w / 2,\n\t\t\ty: r.y + r.h / 2\n\t\t};\n\t},\n\n\tupdate: function(center, rect, rotation) {\n\t\tthis._rotation = rotation;\n\t\tthis._rect = {\n\t\t\tx: rect.x + center.x,\n\t\t\ty: rect.y + center.y,\n\t\t\tw: rect.w,\n\t\t\th: rect.h\n\t\t};\n\t},\n\n\tcontains: function(point) {\n\t\tvar me = this;\n\t\tvar margin = 1;\n\t\tvar rect = me._rect;\n\n\t\tpoint = rotated(point, me.center(), -me._rotation);\n\n\t\treturn !(point.x < rect.x - margin\n\t\t\t|| point.y < rect.y - margin\n\t\t\t|| point.x > rect.x + rect.w + margin * 2\n\t\t\t|| point.y > rect.y + rect.h + margin * 2);\n\t},\n\n\t// Separating Axis Theorem\n\t// https://gamedevelopment.tutsplus.com/tutorials/collision-detection-using-the-separating-axis-theorem--gamedev-169\n\tintersects: function(other) {\n\t\tvar r0 = this._points();\n\t\tvar r1 = other._points();\n\t\tvar axes = [\n\t\t\ttoAxis(r0[0], r0[1]),\n\t\t\ttoAxis(r0[0], r0[3])\n\t\t];\n\t\tvar i, pr0, pr1;\n\n\t\tif (this._rotation !== other._rotation) {\n\t\t\t// Only separate with r1 axis if the rotation is different,\n\t\t\t// else it's enough to separate r0 and r1 with r0 axis only!\n\t\t\taxes.push(\n\t\t\t\ttoAxis(r1[0], r1[1]),\n\t\t\t\ttoAxis(r1[0], r1[3])\n\t\t\t);\n\t\t}\n\n\t\tfor (i = 0; i < axes.length; ++i) {\n\t\t\tpr0 = projected(r0, axes[i]);\n\t\t\tpr1 = projected(r1, axes[i]);\n\n\t\t\tif (pr0.max < pr1.min || pr1.max < pr0.min) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_points: function() {\n\t\tvar me = this;\n\t\tvar rect = me._rect;\n\t\tvar angle = me._rotation;\n\t\tvar center = me.center();\n\n\t\treturn [\n\t\t\trotated({x: rect.x, y: rect.y}, center, angle),\n\t\t\trotated({x: rect.x + rect.w, y: rect.y}, center, angle),\n\t\t\trotated({x: rect.x + rect.w, y: rect.y + rect.h}, center, angle),\n\t\t\trotated({x: rect.x, y: rect.y + rect.h}, center, angle)\n\t\t];\n\t}\n});\n\nfunction coordinates(view, model, geometry) {\n\tvar point = model.positioner(view, model);\n\tvar vx = point.vx;\n\tvar vy = point.vy;\n\n\tif (!vx && !vy) {\n\t\t// if aligned center, we don't want to offset the center point\n\t\treturn {x: point.x, y: point.y};\n\t}\n\n\tvar w = geometry.w;\n\tvar h = geometry.h;\n\n\t// take in account the label rotation\n\tvar rotation = model.rotation;\n\tvar dx = Math.abs(w / 2 * Math.cos(rotation)) + Math.abs(h / 2 * Math.sin(rotation));\n\tvar dy = Math.abs(w / 2 * Math.sin(rotation)) + Math.abs(h / 2 * Math.cos(rotation));\n\n\t// scale the unit vector (vx, vy) to get at least dx or dy equal to\n\t// w or h respectively (else we would calculate the distance to the\n\t// ellipse inscribed in the bounding rect)\n\tvar vs = 1 / Math.max(Math.abs(vx), Math.abs(vy));\n\tdx *= vx * vs;\n\tdy *= vy * vs;\n\n\t// finally, include the explicit offset\n\tdx += model.offset * vx;\n\tdy += model.offset * vy;\n\n\treturn {\n\t\tx: point.x + dx,\n\t\ty: point.y + dy\n\t};\n}\n\nfunction collide(labels, collider) {\n\tvar i, j, s0, s1;\n\n\t// IMPORTANT Iterate in the reverse order since items at the end of the\n\t// list have an higher weight/priority and thus should be less impacted\n\t// by the overlapping strategy.\n\n\tfor (i = labels.length - 1; i >= 0; --i) {\n\t\ts0 = labels[i].$layout;\n\n\t\tfor (j = i - 1; j >= 0 && s0._visible; --j) {\n\t\t\ts1 = labels[j].$layout;\n\n\t\t\tif (s1._visible && s0._box.intersects(s1._box)) {\n\t\t\t\tcollider(s0, s1);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn labels;\n}\n\nfunction compute$1(labels) {\n\tvar i, ilen, label, state, geometry, center;\n\n\t// Initialize labels for overlap detection\n\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\n\t\tlabel = labels[i];\n\t\tstate = label.$layout;\n\n\t\tif (state._visible) {\n\t\t\tgeometry = label.geometry();\n\t\t\tcenter = coordinates(label._el._model, label.model(), geometry);\n\t\t\tstate._box.update(center, geometry, label.rotation());\n\t\t}\n\t}\n\n\t// Auto hide overlapping labels\n\treturn collide(labels, function(s0, s1) {\n\t\tvar h0 = s0._hidable;\n\t\tvar h1 = s1._hidable;\n\n\t\tif ((h0 && h1) || h1) {\n\t\t\ts1._visible = false;\n\t\t} else if (h0) {\n\t\t\ts0._visible = false;\n\t\t}\n\t});\n}\n\nvar layout = {\n\tprepare: function(datasets) {\n\t\tvar labels = [];\n\t\tvar i, j, ilen, jlen, label;\n\n\t\tfor (i = 0, ilen = datasets.length; i < ilen; ++i) {\n\t\t\tfor (j = 0, jlen = datasets[i].length; j < jlen; ++j) {\n\t\t\t\tlabel = datasets[i][j];\n\t\t\t\tlabels.push(label);\n\t\t\t\tlabel.$layout = {\n\t\t\t\t\t_box: new HitBox(),\n\t\t\t\t\t_hidable: false,\n\t\t\t\t\t_visible: true,\n\t\t\t\t\t_set: i,\n\t\t\t\t\t_idx: j\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// TODO New `z` option: labels with a higher z-index are drawn\n\t\t// of top of the ones with a lower index. Lowest z-index labels\n\t\t// are also discarded first when hiding overlapping labels.\n\t\tlabels.sort(function(a, b) {\n\t\t\tvar sa = a.$layout;\n\t\t\tvar sb = b.$layout;\n\n\t\t\treturn sa._idx === sb._idx\n\t\t\t\t? sb._set - sa._set\n\t\t\t\t: sb._idx - sa._idx;\n\t\t});\n\n\t\tthis.update(labels);\n\n\t\treturn labels;\n\t},\n\n\tupdate: function(labels) {\n\t\tvar dirty = false;\n\t\tvar i, ilen, label, model, state;\n\n\t\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\n\t\t\tlabel = labels[i];\n\t\t\tmodel = label.model();\n\t\t\tstate = label.$layout;\n\t\t\tstate._hidable = model && model.display === 'auto';\n\t\t\tstate._visible = label.visible();\n\t\t\tdirty |= state._hidable;\n\t\t}\n\n\t\tif (dirty) {\n\t\t\tcompute$1(labels);\n\t\t}\n\t},\n\n\tlookup: function(labels, point) {\n\t\tvar i, state;\n\n\t\t// IMPORTANT Iterate in the reverse order since items at the end of\n\t\t// the list have an higher z-index, thus should be picked first.\n\n\t\tfor (i = labels.length - 1; i >= 0; --i) {\n\t\t\tstate = labels[i].$layout;\n\n\t\t\tif (state && state._visible && state._box.contains(point)) {\n\t\t\t\treturn labels[i];\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t},\n\n\tdraw: function(chart, labels) {\n\t\tvar i, ilen, label, state, geometry, center;\n\n\t\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\n\t\t\tlabel = labels[i];\n\t\t\tstate = label.$layout;\n\n\t\t\tif (state._visible) {\n\t\t\t\tgeometry = label.geometry();\n\t\t\t\tcenter = coordinates(label._el._view, label.model(), geometry);\n\t\t\t\tstate._box.update(center, geometry, label.rotation());\n\t\t\t\tlabel.draw(chart, center);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar helpers$3 = Chart.helpers;\n\nvar formatter = function(value) {\n\tif (helpers$3.isNullOrUndef(value)) {\n\t\treturn null;\n\t}\n\n\tvar label = value;\n\tvar keys, klen, k;\n\tif (helpers$3.isObject(value)) {\n\t\tif (!helpers$3.isNullOrUndef(value.label)) {\n\t\t\tlabel = value.label;\n\t\t} else if (!helpers$3.isNullOrUndef(value.r)) {\n\t\t\tlabel = value.r;\n\t\t} else {\n\t\t\tlabel = '';\n\t\t\tkeys = Object.keys(value);\n\t\t\tfor (k = 0, klen = keys.length; k < klen; ++k) {\n\t\t\t\tlabel += (k !== 0 ? ', ' : '') + keys[k] + ': ' + value[keys[k]];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn '' + label;\n};\n\n/**\n * IMPORTANT: make sure to also update tests and TypeScript definition\n * files (`/test/specs/defaults.spec.js` and `/types/options.d.ts`)\n */\n\nvar defaults = {\n\talign: 'center',\n\tanchor: 'center',\n\tbackgroundColor: null,\n\tborderColor: null,\n\tborderRadius: 0,\n\tborderWidth: 0,\n\tclamp: false,\n\tclip: false,\n\tcolor: undefined,\n\tdisplay: true,\n\tfont: {\n\t\tfamily: undefined,\n\t\tlineHeight: 1.2,\n\t\tsize: undefined,\n\t\tstyle: undefined,\n\t\tweight: null\n\t},\n\tformatter: formatter,\n\tlabels: undefined,\n\tlisteners: {},\n\toffset: 4,\n\topacity: 1,\n\tpadding: {\n\t\ttop: 4,\n\t\tright: 4,\n\t\tbottom: 4,\n\t\tleft: 4\n\t},\n\trotation: 0,\n\ttextAlign: 'start',\n\ttextStrokeColor: undefined,\n\ttextStrokeWidth: 0,\n\ttextShadowBlur: 0,\n\ttextShadowColor: undefined\n};\n\n/**\n * @see https://github.com/chartjs/Chart.js/issues/4176\n */\n\nvar helpers$4 = Chart.helpers;\nvar EXPANDO_KEY = '$datalabels';\nvar DEFAULT_KEY = '$default';\n\nfunction configure(dataset, options) {\n\tvar override = dataset.datalabels;\n\tvar listeners = {};\n\tvar configs = [];\n\tvar labels, keys;\n\n\tif (override === false) {\n\t\treturn null;\n\t}\n\tif (override === true) {\n\t\toverride = {};\n\t}\n\n\toptions = helpers$4.merge({}, [options, override]);\n\tlabels = options.labels || {};\n\tkeys = Object.keys(labels);\n\tdelete options.labels;\n\n\tif (keys.length) {\n\t\tkeys.forEach(function(key) {\n\t\t\tif (labels[key]) {\n\t\t\t\tconfigs.push(helpers$4.merge({}, [\n\t\t\t\t\toptions,\n\t\t\t\t\tlabels[key],\n\t\t\t\t\t{_key: key}\n\t\t\t\t]));\n\t\t\t}\n\t\t});\n\t} else {\n\t\t// Default label if no \"named\" label defined.\n\t\tconfigs.push(options);\n\t}\n\n\t// listeners: {: {: }}\n\tlisteners = configs.reduce(function(target, config) {\n\t\thelpers$4.each(config.listeners || {}, function(fn, event) {\n\t\t\ttarget[event] = target[event] || {};\n\t\t\ttarget[event][config._key || DEFAULT_KEY] = fn;\n\t\t});\n\n\t\tdelete config.listeners;\n\t\treturn target;\n\t}, {});\n\n\treturn {\n\t\tlabels: configs,\n\t\tlisteners: listeners\n\t};\n}\n\nfunction dispatchEvent(chart, listeners, label) {\n\tif (!listeners) {\n\t\treturn;\n\t}\n\n\tvar context = label.$context;\n\tvar groups = label.$groups;\n\tvar callback;\n\n\tif (!listeners[groups._set]) {\n\t\treturn;\n\t}\n\n\tcallback = listeners[groups._set][groups._key];\n\tif (!callback) {\n\t\treturn;\n\t}\n\n\tif (helpers$4.callback(callback, [context]) === true) {\n\t\t// Users are allowed to tweak the given context by injecting values that can be\n\t\t// used in scriptable options to display labels differently based on the current\n\t\t// event (e.g. highlight an hovered label). That's why we update the label with\n\t\t// the output context and schedule a new chart render by setting it dirty.\n\t\tchart[EXPANDO_KEY]._dirty = true;\n\t\tlabel.update(context);\n\t}\n}\n\nfunction dispatchMoveEvents(chart, listeners, previous, label) {\n\tvar enter, leave;\n\n\tif (!previous && !label) {\n\t\treturn;\n\t}\n\n\tif (!previous) {\n\t\tenter = true;\n\t} else if (!label) {\n\t\tleave = true;\n\t} else if (previous !== label) {\n\t\tleave = enter = true;\n\t}\n\n\tif (leave) {\n\t\tdispatchEvent(chart, listeners.leave, previous);\n\t}\n\tif (enter) {\n\t\tdispatchEvent(chart, listeners.enter, label);\n\t}\n}\n\nfunction handleMoveEvents(chart, event) {\n\tvar expando = chart[EXPANDO_KEY];\n\tvar listeners = expando._listeners;\n\tvar previous, label;\n\n\tif (!listeners.enter && !listeners.leave) {\n\t\treturn;\n\t}\n\n\tif (event.type === 'mousemove') {\n\t\tlabel = layout.lookup(expando._labels, event);\n\t} else if (event.type !== 'mouseout') {\n\t\treturn;\n\t}\n\n\tprevious = expando._hovered;\n\texpando._hovered = label;\n\tdispatchMoveEvents(chart, listeners, previous, label);\n}\n\nfunction handleClickEvents(chart, event) {\n\tvar expando = chart[EXPANDO_KEY];\n\tvar handlers = expando._listeners.click;\n\tvar label = handlers && layout.lookup(expando._labels, event);\n\tif (label) {\n\t\tdispatchEvent(chart, handlers, label);\n\t}\n}\n\n// https://github.com/chartjs/chartjs-plugin-datalabels/issues/108\nfunction invalidate(chart) {\n\tif (chart.animating) {\n\t\treturn;\n\t}\n\n\t// `chart.animating` can be `false` even if there is animation in progress,\n\t// so let's iterate all animations to find if there is one for the `chart`.\n\tvar animations = Chart.animationService.animations;\n\tfor (var i = 0, ilen = animations.length; i < ilen; ++i) {\n\t\tif (animations[i].chart === chart) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// No render scheduled: trigger a \"lazy\" render that can be canceled in case\n\t// of hover interactions. The 1ms duration is a workaround to make sure an\n\t// animation is created so the controller can stop it before any transition.\n\tchart.render({duration: 1, lazy: true});\n}\n\nChart.defaults.global.plugins.datalabels = defaults;\n\nvar plugin = {\n\tid: 'datalabels',\n\n\tbeforeInit: function(chart) {\n\t\tchart[EXPANDO_KEY] = {\n\t\t\t_actives: []\n\t\t};\n\t},\n\n\tbeforeUpdate: function(chart) {\n\t\tvar expando = chart[EXPANDO_KEY];\n\t\texpando._listened = false;\n\t\texpando._listeners = {}; // {: {: {: }}}\n\t\texpando._datasets = []; // per dataset labels: [Label[]]\n\t\texpando._labels = []; // layouted labels: Label[]\n\t},\n\n\tafterDatasetUpdate: function(chart, args, options) {\n\t\tvar datasetIndex = args.index;\n\t\tvar expando = chart[EXPANDO_KEY];\n\t\tvar labels = expando._datasets[datasetIndex] = [];\n\t\tvar visible = chart.isDatasetVisible(datasetIndex);\n\t\tvar dataset = chart.data.datasets[datasetIndex];\n\t\tvar config = configure(dataset, options);\n\t\tvar elements = args.meta.data || [];\n\t\tvar ctx = chart.ctx;\n\t\tvar i, j, ilen, jlen, cfg, key, el, label;\n\n\t\tctx.save();\n\n\t\tfor (i = 0, ilen = elements.length; i < ilen; ++i) {\n\t\t\tel = elements[i];\n\t\t\tel[EXPANDO_KEY] = [];\n\n\t\t\tif (visible && el && !el.hidden && !el._model.skip) {\n\t\t\t\tfor (j = 0, jlen = config.labels.length; j < jlen; ++j) {\n\t\t\t\t\tcfg = config.labels[j];\n\t\t\t\t\tkey = cfg._key;\n\n\t\t\t\t\tlabel = new Label(cfg, ctx, el, i);\n\t\t\t\t\tlabel.$groups = {\n\t\t\t\t\t\t_set: datasetIndex,\n\t\t\t\t\t\t_key: key || DEFAULT_KEY\n\t\t\t\t\t};\n\t\t\t\t\tlabel.$context = {\n\t\t\t\t\t\tactive: false,\n\t\t\t\t\t\tchart: chart,\n\t\t\t\t\t\tdataIndex: i,\n\t\t\t\t\t\tdataset: dataset,\n\t\t\t\t\t\tdatasetIndex: datasetIndex\n\t\t\t\t\t};\n\n\t\t\t\t\tlabel.update(label.$context);\n\t\t\t\t\tel[EXPANDO_KEY].push(label);\n\t\t\t\t\tlabels.push(label);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tctx.restore();\n\n\t\t// Store listeners at the chart level and per event type to optimize\n\t\t// cases where no listeners are registered for a specific event.\n\t\thelpers$4.merge(expando._listeners, config.listeners, {\n\t\t\tmerger: function(event, target, source) {\n\t\t\t\ttarget[event] = target[event] || {};\n\t\t\t\ttarget[event][args.index] = source[event];\n\t\t\t\texpando._listened = true;\n\t\t\t}\n\t\t});\n\t},\n\n\tafterUpdate: function(chart, options) {\n\t\tchart[EXPANDO_KEY]._labels = layout.prepare(\n\t\t\tchart[EXPANDO_KEY]._datasets,\n\t\t\toptions);\n\t},\n\n\t// Draw labels on top of all dataset elements\n\t// https://github.com/chartjs/chartjs-plugin-datalabels/issues/29\n\t// https://github.com/chartjs/chartjs-plugin-datalabels/issues/32\n\tafterDatasetsDraw: function(chart) {\n\t\tlayout.draw(chart, chart[EXPANDO_KEY]._labels);\n\t},\n\n\tbeforeEvent: function(chart, event) {\n\t\t// If there is no listener registered for this chart, `listened` will be false,\n\t\t// meaning we can immediately ignore the incoming event and avoid useless extra\n\t\t// computation for users who don't implement label interactions.\n\t\tif (chart[EXPANDO_KEY]._listened) {\n\t\t\tswitch (event.type) {\n\t\t\tcase 'mousemove':\n\t\t\tcase 'mouseout':\n\t\t\t\thandleMoveEvents(chart, event);\n\t\t\t\tbreak;\n\t\t\tcase 'click':\n\t\t\t\thandleClickEvents(chart, event);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t}\n\t\t}\n\t},\n\n\tafterEvent: function(chart) {\n\t\tvar expando = chart[EXPANDO_KEY];\n\t\tvar previous = expando._actives;\n\t\tvar actives = expando._actives = chart.lastActive || []; // public API?!\n\t\tvar updates = utils.arrayDiff(previous, actives);\n\t\tvar i, ilen, j, jlen, update, label, labels;\n\n\t\tfor (i = 0, ilen = updates.length; i < ilen; ++i) {\n\t\t\tupdate = updates[i];\n\t\t\tif (update[1]) {\n\t\t\t\tlabels = update[0][EXPANDO_KEY] || [];\n\t\t\t\tfor (j = 0, jlen = labels.length; j < jlen; ++j) {\n\t\t\t\t\tlabel = labels[j];\n\t\t\t\t\tlabel.$context.active = (update[1] === 1);\n\t\t\t\t\tlabel.update(label.$context);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (expando._dirty || updates.length) {\n\t\t\tlayout.update(expando._labels);\n\t\t\tinvalidate(chart);\n\t\t}\n\n\t\tdelete expando._dirty;\n\t}\n};\n\n// TODO Remove at version 1, we shouldn't automatically register plugins.\n// https://github.com/chartjs/chartjs-plugin-datalabels/issues/42\nChart.plugins.unregister(plugin);\nreturn plugin;\n\n}));\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/forced-string-html-method');\n\n// `String.prototype.anchor` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.anchor\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('anchor') }, {\n anchor: function anchor(name) {\n return createHTML(this, 'a', 'name', name);\n }\n});\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar quot = /\"/g;\n\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\n// https://tc39.github.io/ecma262/#sec-createhtml\nmodule.exports = function (string, tag, attribute, value) {\n var S = String(requireObjectCoercible(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '"') + '\"';\n return p1 + '>' + S + '';\n};\n","var fails = require('../internals/fails');\n\n// check the existence of a method, lowercase\n// of a tag and escaping quotes in arguments\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n var test = ''[METHOD_NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n });\n};\n","module.exports = chart;","/*\n Enhanced Bootstrap Modals\n https://mdbootstrap.com\n office@mdbootstrap.com\n*/\n\n(function($){\n $('body').on('shown.bs.modal', '.modal', function() {\n if(!$('.modal-backdrop').length) {\n\n $modal_dialog = $(this).children('.modal-dialog')\n\n if($modal_dialog.hasClass('modal-side')) {\n $(this).addClass('modal-scrolling');\n $('body').addClass('scrollable');\n }\n\n if($modal_dialog.hasClass('modal-frame')) {\n $(this).addClass('modal-content-clickable');\n $('body').addClass('scrollable');\n }\n }\n });\n $('body').on('hidden.bs.modal', '.modal', function() {\n $('body').removeClass('scrollable');\n });\n})(jQuery);\n","/*\n * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/\n *\n * Uses the built in easing capabilities added In jQuery 1.1\n * to offer multiple easing options\n *\n * TERMS OF USE - jQuery Easing\n *\n * Open source under the BSD License.\n *\n * Copyright © 2008 George McGinley Smith\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this list of\n * conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright notice, this list\n * of conditions and the following disclaimer in the documentation and/or other materials\n * provided with the distribution.\n *\n * Neither the name of the author nor the names of contributors may be used to endorse\n * or promote products derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE\n * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED\n * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n * OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n*/\n\n// t: current time, b: begInnIng value, c: change In value, d: duration\njQuery.easing['jswing'] = jQuery.easing['swing'];\n\njQuery.extend( jQuery.easing,\n{\n def: 'easeOutQuad',\n swing: function (x, t, b, c, d) {\n //alert(jQuery.easing.default);\n return jQuery.easing[jQuery.easing.def](x, t, b, c, d);\n },\n easeInQuad: function (x, t, b, c, d) {\n return c*(t/=d)*t + b;\n },\n easeOutQuad: function (x, t, b, c, d) {\n return -c *(t/=d)*(t-2) + b;\n },\n easeInOutQuad: function (x, t, b, c, d) {\n if ((t/=d/2) < 1) return c/2*t*t + b;\n return -c/2 * ((--t)*(t-2) - 1) + b;\n },\n easeInCubic: function (x, t, b, c, d) {\n return c*(t/=d)*t*t + b;\n },\n easeOutCubic: function (x, t, b, c, d) {\n return c*((t=t/d-1)*t*t + 1) + b;\n },\n easeInOutCubic: function (x, t, b, c, d) {\n if ((t/=d/2) < 1) return c/2*t*t*t + b;\n return c/2*((t-=2)*t*t + 2) + b;\n },\n easeInQuart: function (x, t, b, c, d) {\n return c*(t/=d)*t*t*t + b;\n },\n easeOutQuart: function (x, t, b, c, d) {\n return -c * ((t=t/d-1)*t*t*t - 1) + b;\n },\n easeInOutQuart: function (x, t, b, c, d) {\n if ((t/=d/2) < 1) return c/2*t*t*t*t + b;\n return -c/2 * ((t-=2)*t*t*t - 2) + b;\n },\n easeInQuint: function (x, t, b, c, d) {\n return c*(t/=d)*t*t*t*t + b;\n },\n easeOutQuint: function (x, t, b, c, d) {\n return c*((t=t/d-1)*t*t*t*t + 1) + b;\n },\n easeInOutQuint: function (x, t, b, c, d) {\n if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;\n return c/2*((t-=2)*t*t*t*t + 2) + b;\n },\n easeInSine: function (x, t, b, c, d) {\n return -c * Math.cos(t/d * (Math.PI/2)) + c + b;\n },\n easeOutSine: function (x, t, b, c, d) {\n return c * Math.sin(t/d * (Math.PI/2)) + b;\n },\n easeInOutSine: function (x, t, b, c, d) {\n return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;\n },\n easeInExpo: function (x, t, b, c, d) {\n return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;\n },\n easeOutExpo: function (x, t, b, c, d) {\n return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;\n },\n easeInOutExpo: function (x, t, b, c, d) {\n if (t==0) return b;\n if (t==d) return b+c;\n if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;\n return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;\n },\n easeInCirc: function (x, t, b, c, d) {\n return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;\n },\n easeOutCirc: function (x, t, b, c, d) {\n return c * Math.sqrt(1 - (t=t/d-1)*t) + b;\n },\n easeInOutCirc: function (x, t, b, c, d) {\n if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;\n return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;\n },\n easeInElastic: function (x, t, b, c, d) {\n var s=1.70158;var p=0;var a=c;\n if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;\n if (a < Math.abs(c)) { a=c; var s=p/4; }\n else var s = p/(2*Math.PI) * Math.asin (c/a);\n return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;\n },\n easeOutElastic: function (x, t, b, c, d) {\n var s=1.70158;var p=0;var a=c;\n if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;\n if (a < Math.abs(c)) { a=c; var s=p/4; }\n else var s = p/(2*Math.PI) * Math.asin (c/a);\n return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;\n },\n easeInOutElastic: function (x, t, b, c, d) {\n var s=1.70158;var p=0;var a=c;\n if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5);\n if (a < Math.abs(c)) { a=c; var s=p/4; }\n else var s = p/(2*Math.PI) * Math.asin (c/a);\n if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;\n return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;\n },\n easeInBack: function (x, t, b, c, d, s) {\n if (s == undefined) s = 1.70158;\n return c*(t/=d)*t*((s+1)*t - s) + b;\n },\n easeOutBack: function (x, t, b, c, d, s) {\n if (s == undefined) s = 1.70158;\n return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;\n },\n easeInOutBack: function (x, t, b, c, d, s) {\n if (s == undefined) s = 1.70158;\n if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;\n return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;\n },\n easeInBounce: function (x, t, b, c, d) {\n return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;\n },\n easeOutBounce: function (x, t, b, c, d) {\n if ((t/=d) < (1/2.75)) {\n return c*(7.5625*t*t) + b;\n } else if (t < (2/2.75)) {\n return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;\n } else if (t < (2.5/2.75)) {\n return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;\n } else {\n return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;\n }\n },\n easeInOutBounce: function (x, t, b, c, d) {\n if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;\n return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;\n }\n});\n\n/*\n *\n * TERMS OF USE - EASING EQUATIONS\n *\n * Open source under the BSD License.\n *\n * Copyright © 2001 Robert Penner\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice, this list of\n * conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright notice, this list\n * of conditions and the following disclaimer in the documentation and/or other materials\n * provided with the distribution.\n *\n * Neither the name of the author nor the names of contributors may be used to endorse\n * or promote products derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE\n * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED\n * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n * OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n */","/*! VelocityJS.org (1.2.3). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License */\n/*! VelocityJS.org jQuery Shim (1.0.1). (C) 2014 The jQuery Foundation. MIT @license: en.wikipedia.org/wiki/MIT_License. */\n/*! Note that this has been modified by Materialize to confirm that Velocity is not already being imported. */\njQuery.Velocity?console.log(\"Velocity is already loaded. You may be needlessly importing Velocity again; note that Materialize includes Velocity.\"):(!function(e){function t(e){var t=e.length,a=r.type(e);return\"function\"===a||r.isWindow(e)?!1:1===e.nodeType&&t?!0:\"array\"===a||0===t||\"number\"==typeof t&&t>0&&t-1 in e}if(!e.jQuery){var r=function(e,t){return new r.fn.init(e,t)};r.isWindow=function(e){return null!=e&&e==e.window},r.type=function(e){return null==e?e+\"\":\"object\"==typeof e||\"function\"==typeof e?n[i.call(e)]||\"object\":typeof e},r.isArray=Array.isArray||function(e){return\"array\"===r.type(e)},r.isPlainObject=function(e){var t;if(!e||\"object\"!==r.type(e)||e.nodeType||r.isWindow(e))return!1;try{if(e.constructor&&!o.call(e,\"constructor\")&&!o.call(e.constructor.prototype,\"isPrototypeOf\"))return!1}catch(a){return!1}for(t in e);return void 0===t||o.call(e,t)},r.each=function(e,r,a){var n,o=0,i=e.length,s=t(e);if(a){if(s)for(;i>o&&(n=r.apply(e[o],a),n!==!1);o++);else for(o in e)if(n=r.apply(e[o],a),n===!1)break}else if(s)for(;i>o&&(n=r.call(e[o],o,e[o]),n!==!1);o++);else for(o in e)if(n=r.call(e[o],o,e[o]),n===!1)break;return e},r.data=function(e,t,n){if(void 0===n){var o=e[r.expando],i=o&&a[o];if(void 0===t)return i;if(i&&t in i)return i[t]}else if(void 0!==t){var o=e[r.expando]||(e[r.expando]=++r.uuid);return a[o]=a[o]||{},a[o][t]=n,n}},r.removeData=function(e,t){var n=e[r.expando],o=n&&a[n];o&&r.each(t,function(e,t){delete o[t]})},r.extend=function(){var e,t,a,n,o,i,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for(\"boolean\"==typeof s&&(c=s,s=arguments[l]||{},l++),\"object\"!=typeof s&&\"function\"!==r.type(s)&&(s={}),l===u&&(s=this,l--);u>l;l++)if(null!=(o=arguments[l]))for(n in o)e=s[n],a=o[n],s!==a&&(c&&a&&(r.isPlainObject(a)||(t=r.isArray(a)))?(t?(t=!1,i=e&&r.isArray(e)?e:[]):i=e&&r.isPlainObject(e)?e:{},s[n]=r.extend(c,i,a)):void 0!==a&&(s[n]=a));return s},r.queue=function(e,a,n){function o(e,r){var a=r||[];return null!=e&&(t(Object(e))?!function(e,t){for(var r=+t.length,a=0,n=e.length;r>a;)e[n++]=t[a++];if(r!==r)for(;void 0!==t[a];)e[n++]=t[a++];return e.length=n,e}(a,\"string\"==typeof e?[e]:e):[].push.call(a,e)),a}if(e){a=(a||\"fx\")+\"queue\";var i=r.data(e,a);return n?(!i||r.isArray(n)?i=r.data(e,a,o(n)):i.push(n),i):i||[]}},r.dequeue=function(e,t){r.each(e.nodeType?[e]:e,function(e,a){t=t||\"fx\";var n=r.queue(a,t),o=n.shift();\"inprogress\"===o&&(o=n.shift()),o&&(\"fx\"===t&&n.unshift(\"inprogress\"),o.call(a,function(){r.dequeue(a,t)}))})},r.fn=r.prototype={init:function(e){if(e.nodeType)return this[0]=e,this;throw new Error(\"Not a DOM node.\")},offset:function(){var t=this[0].getBoundingClientRect?this[0].getBoundingClientRect():{top:0,left:0};return{top:t.top+(e.pageYOffset||document.scrollTop||0)-(document.clientTop||0),left:t.left+(e.pageXOffset||document.scrollLeft||0)-(document.clientLeft||0)}},position:function(){function e(){for(var e=this.offsetParent||document;e&&\"html\"===!e.nodeType.toLowerCase&&\"static\"===e.style.position;)e=e.offsetParent;return e||document}var t=this[0],e=e.apply(t),a=this.offset(),n=/^(?:body|html)$/i.test(e.nodeName)?{top:0,left:0}:r(e).offset();return a.top-=parseFloat(t.style.marginTop)||0,a.left-=parseFloat(t.style.marginLeft)||0,e.style&&(n.top+=parseFloat(e.style.borderTopWidth)||0,n.left+=parseFloat(e.style.borderLeftWidth)||0),{top:a.top-n.top,left:a.left-n.left}}};var a={};r.expando=\"velocity\"+(new Date).getTime(),r.uuid=0;for(var n={},o=n.hasOwnProperty,i=n.toString,s=\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"),l=0;ln;++n){var o=u(r,e,a);if(0===o)return r;var i=l(r,e,a)-t;r-=i/o}return r}function p(){for(var t=0;b>t;++t)w[t]=l(t*x,e,a)}function f(t,r,n){var o,i,s=0;do i=r+(n-r)/2,o=l(i,e,a)-t,o>0?n=i:r=i;while(Math.abs(o)>h&&++s=y?c(t,s):0==l?s:f(t,r,r+x)}function g(){V=!0,(e!=r||a!=n)&&p()}var m=4,y=.001,h=1e-7,v=10,b=11,x=1/(b-1),S=\"Float32Array\"in t;if(4!==arguments.length)return!1;for(var P=0;4>P;++P)if(\"number\"!=typeof arguments[P]||isNaN(arguments[P])||!isFinite(arguments[P]))return!1;e=Math.min(e,1),a=Math.min(a,1),e=Math.max(e,0),a=Math.max(a,0);var w=S?new Float32Array(b):new Array(b),V=!1,C=function(t){return V||g(),e===r&&a===n?t:0===t?0:1===t?1:l(d(t),r,n)};C.getControlPoints=function(){return[{x:e,y:r},{x:a,y:n}]};var T=\"generateBezier(\"+[e,r,a,n]+\")\";return C.toString=function(){return T},C}function u(e,t){var r=e;return m.isString(e)?b.Easings[e]||(r=!1):r=m.isArray(e)&&1===e.length?s.apply(null,e):m.isArray(e)&&2===e.length?x.apply(null,e.concat([t])):m.isArray(e)&&4===e.length?l.apply(null,e):!1,r===!1&&(r=b.Easings[b.defaults.easing]?b.defaults.easing:v),r}function c(e){if(e){var t=(new Date).getTime(),r=b.State.calls.length;r>1e4&&(b.State.calls=n(b.State.calls));for(var o=0;r>o;o++)if(b.State.calls[o]){var s=b.State.calls[o],l=s[0],u=s[2],d=s[3],g=!!d,y=null;d||(d=b.State.calls[o][3]=t-16);for(var h=Math.min((t-d)/u.duration,1),v=0,x=l.length;x>v;v++){var P=l[v],V=P.element;if(i(V)){var C=!1;if(u.display!==a&&null!==u.display&&\"none\"!==u.display){if(\"flex\"===u.display){var T=[\"-webkit-box\",\"-moz-box\",\"-ms-flexbox\",\"-webkit-flex\"];f.each(T,function(e,t){S.setPropertyValue(V,\"display\",t)})}S.setPropertyValue(V,\"display\",u.display)}u.visibility!==a&&\"hidden\"!==u.visibility&&S.setPropertyValue(V,\"visibility\",u.visibility);for(var k in P)if(\"element\"!==k){var A,F=P[k],j=m.isString(F.easing)?b.Easings[F.easing]:F.easing;if(1===h)A=F.endValue;else{var E=F.endValue-F.startValue;if(A=F.startValue+E*j(h,u,E),!g&&A===F.currentValue)continue}if(F.currentValue=A,\"tween\"===k)y=A;else{if(S.Hooks.registered[k]){var H=S.Hooks.getRoot(k),N=i(V).rootPropertyValueCache[H];N&&(F.rootPropertyValue=N)}var L=S.setPropertyValue(V,k,F.currentValue+(0===parseFloat(A)?\"\":F.unitType),F.rootPropertyValue,F.scrollData);S.Hooks.registered[k]&&(i(V).rootPropertyValueCache[H]=S.Normalizations.registered[H]?S.Normalizations.registered[H](\"extract\",null,L[1]):L[1]),\"transform\"===L[0]&&(C=!0)}}u.mobileHA&&i(V).transformCache.translate3d===a&&(i(V).transformCache.translate3d=\"(0px, 0px, 0px)\",C=!0),C&&S.flushTransformCache(V)}}u.display!==a&&\"none\"!==u.display&&(b.State.calls[o][2].display=!1),u.visibility!==a&&\"hidden\"!==u.visibility&&(b.State.calls[o][2].visibility=!1),u.progress&&u.progress.call(s[1],s[1],h,Math.max(0,d+u.duration-t),d,y),1===h&&p(o)}}b.State.isTicking&&w(c)}function p(e,t){if(!b.State.calls[e])return!1;for(var r=b.State.calls[e][0],n=b.State.calls[e][1],o=b.State.calls[e][2],s=b.State.calls[e][4],l=!1,u=0,c=r.length;c>u;u++){var p=r[u].element;if(t||o.loop||(\"none\"===o.display&&S.setPropertyValue(p,\"display\",o.display),\"hidden\"===o.visibility&&S.setPropertyValue(p,\"visibility\",o.visibility)),o.loop!==!0&&(f.queue(p)[1]===a||!/\\.velocityQueueEntryFlag/i.test(f.queue(p)[1]))&&i(p)){i(p).isAnimating=!1,i(p).rootPropertyValueCache={};var d=!1;f.each(S.Lists.transforms3D,function(e,t){var r=/^scale/.test(t)?1:0,n=i(p).transformCache[t];i(p).transformCache[t]!==a&&new RegExp(\"^\\\\(\"+r+\"[^.]\").test(n)&&(d=!0,delete i(p).transformCache[t])}),o.mobileHA&&(d=!0,delete i(p).transformCache.translate3d),d&&S.flushTransformCache(p),S.Values.removeClass(p,\"velocity-animating\")}if(!t&&o.complete&&!o.loop&&u===c-1)try{o.complete.call(n,n)}catch(g){setTimeout(function(){throw g},1)}s&&o.loop!==!0&&s(n),i(p)&&o.loop===!0&&!t&&(f.each(i(p).tweensContainer,function(e,t){/^rotate/.test(e)&&360===parseFloat(t.endValue)&&(t.endValue=0,t.startValue=360),/^backgroundPosition/.test(e)&&100===parseFloat(t.endValue)&&\"%\"===t.unitType&&(t.endValue=0,t.startValue=100)}),b(p,\"reverse\",{loop:!0,delay:o.delay})),o.queue!==!1&&f.dequeue(p,o.queue)}b.State.calls[e]=!1;for(var m=0,y=b.State.calls.length;y>m;m++)if(b.State.calls[m]!==!1){l=!0;break}l===!1&&(b.State.isTicking=!1,delete b.State.calls,b.State.calls=[])}var f,d=function(){if(r.documentMode)return r.documentMode;for(var e=7;e>4;e--){var t=r.createElement(\"div\");if(t.innerHTML=\"\",t.getElementsByTagName(\"span\").length)return t=null,e}return a}(),g=function(){var e=0;return t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||function(t){var r,a=(new Date).getTime();return r=Math.max(0,16-(a-e)),e=a+r,setTimeout(function(){t(a+r)},r)}}(),m={isString:function(e){return\"string\"==typeof e},isArray:Array.isArray||function(e){return\"[object Array]\"===Object.prototype.toString.call(e)},isFunction:function(e){return\"[object Function]\"===Object.prototype.toString.call(e)},isNode:function(e){return e&&e.nodeType},isNodeList:function(e){return\"object\"==typeof e&&/^\\[object (HTMLCollection|NodeList|Object)\\]$/.test(Object.prototype.toString.call(e))&&e.length!==a&&(0===e.length||\"object\"==typeof e[0]&&e[0].nodeType>0)},isWrapped:function(e){return e&&(e.jquery||t.Zepto&&t.Zepto.zepto.isZ(e))},isSVG:function(e){return t.SVGElement&&e instanceof t.SVGElement},isEmptyObject:function(e){for(var t in e)return!1;return!0}},y=!1;if(e.fn&&e.fn.jquery?(f=e,y=!0):f=t.Velocity.Utilities,8>=d&&!y)throw new Error(\"Velocity: IE8 and below require jQuery to be loaded before Velocity.\");if(7>=d)return void(jQuery.fn.velocity=jQuery.fn.animate);var h=400,v=\"swing\",b={State:{isMobile:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),isAndroid:/Android/i.test(navigator.userAgent),isGingerbread:/Android 2\\.3\\.[3-7]/i.test(navigator.userAgent),isChrome:t.chrome,isFirefox:/Firefox/i.test(navigator.userAgent),prefixElement:r.createElement(\"div\"),prefixMatches:{},scrollAnchor:null,scrollPropertyLeft:null,scrollPropertyTop:null,isTicking:!1,calls:[]},CSS:{},Utilities:f,Redirects:{},Easings:{},Promise:t.Promise,defaults:{queue:\"\",duration:h,easing:v,begin:a,complete:a,progress:a,display:a,visibility:a,loop:!1,delay:!1,mobileHA:!0,_cacheValues:!0},init:function(e){f.data(e,\"velocity\",{isSVG:m.isSVG(e),isAnimating:!1,computedStyle:null,tweensContainer:null,rootPropertyValueCache:{},transformCache:{}})},hook:null,mock:!1,version:{major:1,minor:2,patch:2},debug:!1};t.pageYOffset!==a?(b.State.scrollAnchor=t,b.State.scrollPropertyLeft=\"pageXOffset\",b.State.scrollPropertyTop=\"pageYOffset\"):(b.State.scrollAnchor=r.documentElement||r.body.parentNode||r.body,b.State.scrollPropertyLeft=\"scrollLeft\",b.State.scrollPropertyTop=\"scrollTop\");var x=function(){function e(e){return-e.tension*e.x-e.friction*e.v}function t(t,r,a){var n={x:t.x+a.dx*r,v:t.v+a.dv*r,tension:t.tension,friction:t.friction};return{dx:n.v,dv:e(n)}}function r(r,a){var n={dx:r.v,dv:e(r)},o=t(r,.5*a,n),i=t(r,.5*a,o),s=t(r,a,i),l=1/6*(n.dx+2*(o.dx+i.dx)+s.dx),u=1/6*(n.dv+2*(o.dv+i.dv)+s.dv);return r.x=r.x+l*a,r.v=r.v+u*a,r}return function a(e,t,n){var o,i,s,l={x:-1,v:0,tension:null,friction:null},u=[0],c=0,p=1e-4,f=.016;for(e=parseFloat(e)||500,t=parseFloat(t)||20,n=n||null,l.tension=e,l.friction=t,o=null!==n,o?(c=a(e,t),i=c/n*f):i=f;s=r(s||l,i),u.push(1+s.x),c+=16,Math.abs(s.x)>p&&Math.abs(s.v)>p;);return o?function(e){return u[e*(u.length-1)|0]}:c}}();b.Easings={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},spring:function(e){return 1-Math.cos(4.5*e*Math.PI)*Math.exp(6*-e)}},f.each([[\"ease\",[.25,.1,.25,1]],[\"ease-in\",[.42,0,1,1]],[\"ease-out\",[0,0,.58,1]],[\"ease-in-out\",[.42,0,.58,1]],[\"easeInSine\",[.47,0,.745,.715]],[\"easeOutSine\",[.39,.575,.565,1]],[\"easeInOutSine\",[.445,.05,.55,.95]],[\"easeInQuad\",[.55,.085,.68,.53]],[\"easeOutQuad\",[.25,.46,.45,.94]],[\"easeInOutQuad\",[.455,.03,.515,.955]],[\"easeInCubic\",[.55,.055,.675,.19]],[\"easeOutCubic\",[.215,.61,.355,1]],[\"easeInOutCubic\",[.645,.045,.355,1]],[\"easeInQuart\",[.895,.03,.685,.22]],[\"easeOutQuart\",[.165,.84,.44,1]],[\"easeInOutQuart\",[.77,0,.175,1]],[\"easeInQuint\",[.755,.05,.855,.06]],[\"easeOutQuint\",[.23,1,.32,1]],[\"easeInOutQuint\",[.86,0,.07,1]],[\"easeInExpo\",[.95,.05,.795,.035]],[\"easeOutExpo\",[.19,1,.22,1]],[\"easeInOutExpo\",[1,0,0,1]],[\"easeInCirc\",[.6,.04,.98,.335]],[\"easeOutCirc\",[.075,.82,.165,1]],[\"easeInOutCirc\",[.785,.135,.15,.86]]],function(e,t){b.Easings[t[0]]=l.apply(null,t[1])});var S=b.CSS={RegEx:{isHex:/^#([A-f\\d]{3}){1,2}$/i,valueUnwrap:/^[A-z]+\\((.*)\\)$/i,wrappedValueAlreadyExtracted:/[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/,valueSplit:/([A-z]+\\(.+\\))|(([A-z0-9#-.]+?)(?=\\s|$))/gi},Lists:{colors:[\"fill\",\"stroke\",\"stopColor\",\"color\",\"backgroundColor\",\"borderColor\",\"borderTopColor\",\"borderRightColor\",\"borderBottomColor\",\"borderLeftColor\",\"outlineColor\"],transformsBase:[\"translateX\",\"translateY\",\"scale\",\"scaleX\",\"scaleY\",\"skewX\",\"skewY\",\"rotateZ\"],transforms3D:[\"transformPerspective\",\"translateZ\",\"scaleZ\",\"rotateX\",\"rotateY\"]},Hooks:{templates:{textShadow:[\"Color X Y Blur\",\"black 0px 0px 0px\"],boxShadow:[\"Color X Y Blur Spread\",\"black 0px 0px 0px 0px\"],clip:[\"Top Right Bottom Left\",\"0px 0px 0px 0px\"],backgroundPosition:[\"X Y\",\"0% 0%\"],transformOrigin:[\"X Y Z\",\"50% 50% 0px\"],perspectiveOrigin:[\"X Y\",\"50% 50%\"]},registered:{},register:function(){for(var e=0;e=d)switch(e){case\"name\":return\"filter\";case\"extract\":var a=r.toString().match(/alpha\\(opacity=(.*)\\)/i);return r=a?a[1]/100:1;case\"inject\":return t.style.zoom=1,parseFloat(r)>=1?\"\":\"alpha(opacity=\"+parseInt(100*parseFloat(r),10)+\")\"}else switch(e){case\"name\":return\"opacity\";case\"extract\":return r;case\"inject\":return r}}},register:function(){9>=d||b.State.isGingerbread||(S.Lists.transformsBase=S.Lists.transformsBase.concat(S.Lists.transforms3D));for(var e=0;en&&(n=1),o=!/(\\d)$/i.test(n);break;case\"skew\":o=!/(deg|\\d)$/i.test(n);break;case\"rotate\":o=!/(deg|\\d)$/i.test(n)}return o||(i(r).transformCache[t]=\"(\"+n+\")\"),i(r).transformCache[t]}}}();for(var e=0;e=d||3!==o.split(\" \").length||(o+=\" 1\"),o;case\"inject\":return 8>=d?4===n.split(\" \").length&&(n=n.split(/\\s+/).slice(0,3).join(\" \")):3===n.split(\" \").length&&(n+=\" 1\"),(8>=d?\"rgb\":\"rgba\")+\"(\"+n.replace(/\\s+/g,\",\").replace(/\\.(\\d)+(?=,)/g,\"\")+\")\"}}}()}},Names:{camelCase:function(e){return e.replace(/-(\\w)/g,function(e,t){return t.toUpperCase()})},SVGAttribute:function(e){var t=\"width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2\";return(d||b.State.isAndroid&&!b.State.isChrome)&&(t+=\"|transform\"),new RegExp(\"^(\"+t+\")$\",\"i\").test(e)},prefixCheck:function(e){if(b.State.prefixMatches[e])return[b.State.prefixMatches[e],!0];for(var t=[\"\",\"Webkit\",\"Moz\",\"ms\",\"O\"],r=0,a=t.length;a>r;r++){var n;if(n=0===r?e:t[r]+e.replace(/^\\w/,function(e){return e.toUpperCase()}),m.isString(b.State.prefixElement.style[n]))return b.State.prefixMatches[e]=n,[n,!0]}return[e,!1]}},Values:{hexToRgb:function(e){var t,r=/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i,a=/^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i;return e=e.replace(r,function(e,t,r,a){return t+t+r+r+a+a}),t=a.exec(e),t?[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]:[0,0,0]},isCSSNullValue:function(e){return 0==e||/^(none|auto|transparent|(rgba\\(0, ?0, ?0, ?0\\)))$/i.test(e)},getUnitType:function(e){return/^(rotate|skew)/i.test(e)?\"deg\":/(^(scale|scaleX|scaleY|scaleZ|alpha|flexGrow|flexHeight|zIndex|fontWeight)$)|((opacity|red|green|blue|alpha)$)/i.test(e)?\"\":\"px\"},getDisplayType:function(e){var t=e&&e.tagName.toString().toLowerCase();return/^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|var|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i.test(t)?\"inline\":/^(li)$/i.test(t)?\"list-item\":/^(tr)$/i.test(t)?\"table-row\":/^(table)$/i.test(t)?\"table\":/^(tbody)$/i.test(t)?\"table-row-group\":\"block\"},addClass:function(e,t){e.classList?e.classList.add(t):e.className+=(e.className.length?\" \":\"\")+t},removeClass:function(e,t){e.classList?e.classList.remove(t):e.className=e.className.toString().replace(new RegExp(\"(^|\\\\s)\"+t.split(\" \").join(\"|\")+\"(\\\\s|$)\",\"gi\"),\" \")}},getPropertyValue:function(e,r,n,o){function s(e,r){function n(){u&&S.setPropertyValue(e,\"display\",\"none\")}var l=0;if(8>=d)l=f.css(e,r);else{var u=!1;if(/^(width|height)$/.test(r)&&0===S.getPropertyValue(e,\"display\")&&(u=!0,S.setPropertyValue(e,\"display\",S.Values.getDisplayType(e))),!o){if(\"height\"===r&&\"border-box\"!==S.getPropertyValue(e,\"boxSizing\").toString().toLowerCase()){var c=e.offsetHeight-(parseFloat(S.getPropertyValue(e,\"borderTopWidth\"))||0)-(parseFloat(S.getPropertyValue(e,\"borderBottomWidth\"))||0)-(parseFloat(S.getPropertyValue(e,\"paddingTop\"))||0)-(parseFloat(S.getPropertyValue(e,\"paddingBottom\"))||0);return n(),c}if(\"width\"===r&&\"border-box\"!==S.getPropertyValue(e,\"boxSizing\").toString().toLowerCase()){var p=e.offsetWidth-(parseFloat(S.getPropertyValue(e,\"borderLeftWidth\"))||0)-(parseFloat(S.getPropertyValue(e,\"borderRightWidth\"))||0)-(parseFloat(S.getPropertyValue(e,\"paddingLeft\"))||0)-(parseFloat(S.getPropertyValue(e,\"paddingRight\"))||0);return n(),p}}var g;g=i(e)===a?t.getComputedStyle(e,null):i(e).computedStyle?i(e).computedStyle:i(e).computedStyle=t.getComputedStyle(e,null),\"borderColor\"===r&&(r=\"borderTopColor\"),l=9===d&&\"filter\"===r?g.getPropertyValue(r):g[r],(\"\"===l||null===l)&&(l=e.style[r]),n()}if(\"auto\"===l&&/^(top|right|bottom|left)$/i.test(r)){var m=s(e,\"position\");(\"fixed\"===m||\"absolute\"===m&&/top|left/i.test(r))&&(l=f(e).position()[r]+\"px\")}return l}var l;if(S.Hooks.registered[r]){var u=r,c=S.Hooks.getRoot(u);n===a&&(n=S.getPropertyValue(e,S.Names.prefixCheck(c)[0])),S.Normalizations.registered[c]&&(n=S.Normalizations.registered[c](\"extract\",e,n)),l=S.Hooks.extractValue(u,n)}else if(S.Normalizations.registered[r]){var p,g;p=S.Normalizations.registered[r](\"name\",e),\"transform\"!==p&&(g=s(e,S.Names.prefixCheck(p)[0]),S.Values.isCSSNullValue(g)&&S.Hooks.templates[r]&&(g=S.Hooks.templates[r][1])),l=S.Normalizations.registered[r](\"extract\",e,g)}if(!/^[\\d-]/.test(l))if(i(e)&&i(e).isSVG&&S.Names.SVGAttribute(r))if(/^(height|width)$/i.test(r))try{l=e.getBBox()[r]}catch(m){l=0}else l=e.getAttribute(r);else l=s(e,S.Names.prefixCheck(r)[0]);return S.Values.isCSSNullValue(l)&&(l=0),b.debug>=2&&console.log(\"Get \"+r+\": \"+l),l},setPropertyValue:function(e,r,a,n,o){var s=r;if(\"scroll\"===r)o.container?o.container[\"scroll\"+o.direction]=a:\"Left\"===o.direction?t.scrollTo(a,o.alternateValue):t.scrollTo(o.alternateValue,a);else if(S.Normalizations.registered[r]&&\"transform\"===S.Normalizations.registered[r](\"name\",e))S.Normalizations.registered[r](\"inject\",e,a),s=\"transform\",a=i(e).transformCache[r];else{if(S.Hooks.registered[r]){var l=r,u=S.Hooks.getRoot(r);n=n||S.getPropertyValue(e,u),a=S.Hooks.injectValue(l,a,n),r=u}if(S.Normalizations.registered[r]&&(a=S.Normalizations.registered[r](\"inject\",e,a),r=S.Normalizations.registered[r](\"name\",e)),s=S.Names.prefixCheck(r)[0],8>=d)try{e.style[s]=a}catch(c){b.debug&&console.log(\"Browser does not support [\"+a+\"] for [\"+s+\"]\")}else i(e)&&i(e).isSVG&&S.Names.SVGAttribute(r)?e.setAttribute(r,a):e.style[s]=a;b.debug>=2&&console.log(\"Set \"+r+\" (\"+s+\"): \"+a)}return[s,a]},flushTransformCache:function(e){function t(t){return parseFloat(S.getPropertyValue(e,t))}var r=\"\";if((d||b.State.isAndroid&&!b.State.isChrome)&&i(e).isSVG){var a={translate:[t(\"translateX\"),t(\"translateY\")],skewX:[t(\"skewX\")],skewY:[t(\"skewY\")],scale:1!==t(\"scale\")?[t(\"scale\"),t(\"scale\")]:[t(\"scaleX\"),t(\"scaleY\")],rotate:[t(\"rotateZ\"),0,0]};f.each(i(e).transformCache,function(e){/^translate/i.test(e)?e=\"translate\":/^scale/i.test(e)?e=\"scale\":/^rotate/i.test(e)&&(e=\"rotate\"),a[e]&&(r+=e+\"(\"+a[e].join(\" \")+\") \",delete a[e])})}else{var n,o;f.each(i(e).transformCache,function(t){return n=i(e).transformCache[t],\"transformPerspective\"===t?(o=n,!0):(9===d&&\"rotateZ\"===t&&(t=\"rotate\"),void(r+=t+n+\" \"))}),o&&(r=\"perspective\"+o+\" \"+r)}S.setPropertyValue(e,\"transform\",r)}};S.Hooks.register(),S.Normalizations.register(),b.hook=function(e,t,r){var n=a;return e=o(e),f.each(e,function(e,o){if(i(o)===a&&b.init(o),r===a)n===a&&(n=b.CSS.getPropertyValue(o,t));else{var s=b.CSS.setPropertyValue(o,t,r);\"transform\"===s[0]&&b.CSS.flushTransformCache(o),n=s}}),n};var P=function(){function e(){return s?k.promise||null:l}function n(){function e(e){function p(e,t){var r=a,n=a,i=a;return m.isArray(e)?(r=e[0],!m.isArray(e[1])&&/^[\\d-]/.test(e[1])||m.isFunction(e[1])||S.RegEx.isHex.test(e[1])?i=e[1]:(m.isString(e[1])&&!S.RegEx.isHex.test(e[1])||m.isArray(e[1]))&&(n=t?e[1]:u(e[1],s.duration),e[2]!==a&&(i=e[2]))):r=e,t||(n=n||s.easing),m.isFunction(r)&&(r=r.call(o,V,w)),m.isFunction(i)&&(i=i.call(o,V,w)),[r||0,n,i]}function d(e,t){var r,a;return a=(t||\"0\").toString().toLowerCase().replace(/[%A-z]+$/,function(e){return r=e,\"\"}),r||(r=S.Values.getUnitType(e)),[a,r]}function h(){var e={myParent:o.parentNode||r.body,position:S.getPropertyValue(o,\"position\"),fontSize:S.getPropertyValue(o,\"fontSize\")},a=e.position===L.lastPosition&&e.myParent===L.lastParent,n=e.fontSize===L.lastFontSize;L.lastParent=e.myParent,L.lastPosition=e.position,L.lastFontSize=e.fontSize;var s=100,l={};if(n&&a)l.emToPx=L.lastEmToPx,l.percentToPxWidth=L.lastPercentToPxWidth,l.percentToPxHeight=L.lastPercentToPxHeight;else{var u=i(o).isSVG?r.createElementNS(\"http://www.w3.org/2000/svg\",\"rect\"):r.createElement(\"div\");b.init(u),e.myParent.appendChild(u),f.each([\"overflow\",\"overflowX\",\"overflowY\"],function(e,t){b.CSS.setPropertyValue(u,t,\"hidden\")}),b.CSS.setPropertyValue(u,\"position\",e.position),b.CSS.setPropertyValue(u,\"fontSize\",e.fontSize),b.CSS.setPropertyValue(u,\"boxSizing\",\"content-box\"),f.each([\"minWidth\",\"maxWidth\",\"width\",\"minHeight\",\"maxHeight\",\"height\"],function(e,t){b.CSS.setPropertyValue(u,t,s+\"%\")}),b.CSS.setPropertyValue(u,\"paddingLeft\",s+\"em\"),l.percentToPxWidth=L.lastPercentToPxWidth=(parseFloat(S.getPropertyValue(u,\"width\",null,!0))||1)/s,l.percentToPxHeight=L.lastPercentToPxHeight=(parseFloat(S.getPropertyValue(u,\"height\",null,!0))||1)/s,l.emToPx=L.lastEmToPx=(parseFloat(S.getPropertyValue(u,\"paddingLeft\"))||1)/s,e.myParent.removeChild(u)}return null===L.remToPx&&(L.remToPx=parseFloat(S.getPropertyValue(r.body,\"fontSize\"))||16),null===L.vwToPx&&(L.vwToPx=parseFloat(t.innerWidth)/100,L.vhToPx=parseFloat(t.innerHeight)/100),l.remToPx=L.remToPx,l.vwToPx=L.vwToPx,l.vhToPx=L.vhToPx,b.debug>=1&&console.log(\"Unit ratios: \"+JSON.stringify(l),o),l}if(s.begin&&0===V)try{s.begin.call(g,g)}catch(x){setTimeout(function(){throw x},1)}if(\"scroll\"===A){var P,C,T,F=/^x$/i.test(s.axis)?\"Left\":\"Top\",j=parseFloat(s.offset)||0;s.container?m.isWrapped(s.container)||m.isNode(s.container)?(s.container=s.container[0]||s.container,P=s.container[\"scroll\"+F],T=P+f(o).position()[F.toLowerCase()]+j):s.container=null:(P=b.State.scrollAnchor[b.State[\"scrollProperty\"+F]],C=b.State.scrollAnchor[b.State[\"scrollProperty\"+(\"Left\"===F?\"Top\":\"Left\")]],T=f(o).offset()[F.toLowerCase()]+j),l={scroll:{rootPropertyValue:!1,startValue:P,currentValue:P,endValue:T,unitType:\"\",easing:s.easing,scrollData:{container:s.container,direction:F,alternateValue:C}},element:o},b.debug&&console.log(\"tweensContainer (scroll): \",l.scroll,o)}else if(\"reverse\"===A){if(!i(o).tweensContainer)return void f.dequeue(o,s.queue);\"none\"===i(o).opts.display&&(i(o).opts.display=\"auto\"),\"hidden\"===i(o).opts.visibility&&(i(o).opts.visibility=\"visible\"),i(o).opts.loop=!1,i(o).opts.begin=null,i(o).opts.complete=null,v.easing||delete s.easing,v.duration||delete s.duration,s=f.extend({},i(o).opts,s);var E=f.extend(!0,{},i(o).tweensContainer);for(var H in E)if(\"element\"!==H){var N=E[H].startValue;E[H].startValue=E[H].currentValue=E[H].endValue,E[H].endValue=N,m.isEmptyObject(v)||(E[H].easing=s.easing),b.debug&&console.log(\"reverse tweensContainer (\"+H+\"): \"+JSON.stringify(E[H]),o)}l=E}else if(\"start\"===A){var E;i(o).tweensContainer&&i(o).isAnimating===!0&&(E=i(o).tweensContainer),f.each(y,function(e,t){if(RegExp(\"^\"+S.Lists.colors.join(\"$|^\")+\"$\").test(e)){var r=p(t,!0),n=r[0],o=r[1],i=r[2];if(S.RegEx.isHex.test(n)){for(var s=[\"Red\",\"Green\",\"Blue\"],l=S.Values.hexToRgb(n),u=i?S.Values.hexToRgb(i):a,c=0;cO;O++){var q={delay:j.delay,progress:j.progress};O===z-1&&(q.display=j.display,q.visibility=j.visibility,q.complete=j.complete),P(g,\"reverse\",q)}return e()}};b=f.extend(P,b),b.animate=P;var w=t.requestAnimationFrame||g;return b.State.isMobile||r.hidden===a||r.addEventListener(\"visibilitychange\",function(){r.hidden?(w=function(e){return setTimeout(function(){e(!0)},16)},c()):w=t.requestAnimationFrame||g}),e.Velocity=b,e!==t&&(e.fn.velocity=P,e.fn.velocity.defaults=b.defaults),f.each([\"Down\",\"Up\"],function(e,t){b.Redirects[\"slide\"+t]=function(e,r,n,o,i,s){var l=f.extend({},r),u=l.begin,c=l.complete,p={height:\"\",marginTop:\"\",marginBottom:\"\",paddingTop:\"\",paddingBottom:\"\"},d={};l.display===a&&(l.display=\"Down\"===t?\"inline\"===b.CSS.Values.getDisplayType(e)?\"inline-block\":\"block\":\"none\"),l.begin=function(){u&&u.call(i,i);for(var r in p){d[r]=e.style[r];var a=b.CSS.getPropertyValue(e,r);p[r]=\"Down\"===t?[a,0]:[0,a]}d.overflow=e.style.overflow,e.style.overflow=\"hidden\"},l.complete=function(){for(var t in d)e.style[t]=d[t];c&&c.call(i,i),s&&s.resolver(i)},b(e,p,l)}}),f.each([\"In\",\"Out\"],function(e,t){b.Redirects[\"fade\"+t]=function(e,r,n,o,i,s){var l=f.extend({},r),u={opacity:\"In\"===t?1:0},c=l.complete;l.complete=n!==o-1?l.begin=null:function(){c&&c.call(i,i),s&&s.resolver(i)},l.display===a&&(l.display=\"In\"===t?\"auto\":\"none\"),b(this,u,l)}}),b}(window.jQuery||window.Zepto||window,window,document)}));\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anObject = require('../internals/an-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar nativeArrayBufferSlice = ArrayBuffer.prototype.slice;\n\nvar INCORRECT_SLICE = fails(function () {\n return !new ArrayBuffer(2).slice(1, undefined).byteLength;\n});\n\n// `ArrayBuffer.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-arraybuffer.prototype.slice\n$({ target: 'ArrayBuffer', proto: true, unsafe: true, forced: INCORRECT_SLICE }, {\n slice: function slice(start, end) {\n if (nativeArrayBufferSlice !== undefined && end === undefined) {\n return nativeArrayBufferSlice.call(anObject(this), start); // FF fix\n }\n var length = anObject(this).byteLength;\n var first = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n var result = new (speciesConstructor(this, ArrayBuffer))(toLength(fin - first));\n var viewSource = new DataView(this);\n var viewTarget = new DataView(result);\n var index = 0;\n while (first < fin) {\n viewTarget.setUint8(index++, viewSource.getUint8(first++));\n } return result;\n }\n});\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","var typedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Float32Array` constructor\n// https://tc39.github.io/ecma262/#sec-typedarray-objects\ntypedArrayConstructor('Float32', 4, function (init) {\n return function Float32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-arrays-constructors-requires-wrappers');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anInstance = require('../internals/an-instance');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar toOffset = require('../internals/to-offset');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar typedArrayFrom = require('../internals/typed-array-from');\nvar forEach = require('../internals/array-iteration').forEach;\nvar setSpecies = require('../internals/set-species');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar round = Math.round;\nvar RangeError = global.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\nvar WRONG_LENGTH = 'Wrong length';\n\nvar fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n\nvar addGetter = function (it, key) {\n nativeDefineProperty(it, key, { get: function () {\n return getInternalState(this)[key];\n } });\n};\n\nvar isArrayBuffer = function (it) {\n var klass;\n return it instanceof ArrayBuffer || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n return isTypedArray(target)\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n return isTypedArrayIndex(target, key = toPrimitive(key, true))\n ? createPropertyDescriptor(2, target[key])\n : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n if (isTypedArrayIndex(target, key = toPrimitive(key, true))\n && isObject(descriptor)\n && has(descriptor, 'value')\n && !has(descriptor, 'get')\n && !has(descriptor, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !descriptor.configurable\n && (!has(descriptor, 'writable') || descriptor.writable)\n && (!has(descriptor, 'enumerable') || descriptor.enumerable)\n ) {\n target[key] = descriptor.value;\n return target;\n } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n definePropertyModule.f = wrappedDefineProperty;\n addGetter(TypedArrayPrototype, 'buffer');\n addGetter(TypedArrayPrototype, 'byteOffset');\n addGetter(TypedArrayPrototype, 'byteLength');\n addGetter(TypedArrayPrototype, 'length');\n }\n\n $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n defineProperty: wrappedDefineProperty\n });\n\n module.exports = function (TYPE, BYTES, wrapper, CLAMPED) {\n var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + TYPE;\n var SETTER = 'set' + TYPE;\n var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\n var TypedArrayConstructor = NativeTypedArrayConstructor;\n var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n var exported = {};\n\n var getter = function (that, index) {\n var data = getInternalState(that);\n return data.view[GETTER](index * BYTES + data.byteOffset, true);\n };\n\n var setter = function (that, index, value) {\n var data = getInternalState(that);\n if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n data.view[SETTER](index * BYTES + data.byteOffset, value, true);\n };\n\n var addElement = function (that, index) {\n nativeDefineProperty(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n anInstance(that, TypedArrayConstructor, CONSTRUCTOR_NAME);\n var index = 0;\n var byteOffset = 0;\n var buffer, byteLength, length;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new ArrayBuffer(byteLength);\n } else if (isArrayBuffer(data)) {\n buffer = data;\n byteOffset = toOffset(offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - byteOffset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (isTypedArray(data)) {\n return fromList(TypedArrayConstructor, data);\n } else {\n return typedArrayFrom.call(TypedArrayConstructor, data);\n }\n setInternalState(that, {\n buffer: buffer,\n byteOffset: byteOffset,\n byteLength: byteLength,\n length: length,\n view: new DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n anInstance(dummy, TypedArrayConstructor, CONSTRUCTOR_NAME);\n if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n if (isArrayBuffer(data)) return $length !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n : typedArrayOffset !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n : new NativeTypedArrayConstructor(data);\n if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\n return typedArrayFrom.call(TypedArrayConstructor, data);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n if (!(key in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n }\n });\n TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n }\n\n if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n }\n\n if (TYPED_ARRAY_TAG) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n }\n\n exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n $({\n global: true, forced: TypedArrayConstructor != NativeTypedArrayConstructor, sham: !NATIVE_ARRAY_BUFFER_VIEWS\n }, exported);\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n }\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n }\n\n setSpecies(CONSTRUCTOR_NAME);\n };\n} else module.exports = function () { /* empty */ };\n","/* eslint-disable no-new */\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar NATIVE_ARRAY_BUFFER_VIEWS = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER_VIEWS;\n\nvar ArrayBuffer = global.ArrayBuffer;\nvar Int8Array = global.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n Int8Array(1);\n}) || !fails(function () {\n new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n new Int8Array();\n new Int8Array(null);\n new Int8Array(1.5);\n new Int8Array(iterable);\n}, true) || fails(function () {\n // Safari 11 bug\n return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var toInteger = require('../internals/to-integer');\n\nmodule.exports = function (it) {\n var result = toInteger(it);\n if (result < 0) throw RangeError(\"The argument can't be less than 0\");\n return result;\n};\n","var toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar bind = require('../internals/bind-context');\nvar aTypedArrayConstructor = require('../internals/array-buffer-view-core').aTypedArrayConstructor;\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var i, length, result, step, iterator, next;\n if (iteratorMethod != undefined && !isArrayIteratorMethod(iteratorMethod)) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n O = [];\n while (!(step = next.call(iterator)).done) {\n O.push(step.value);\n }\n }\n if (mapping && argumentsLength > 2) {\n mapfn = bind(mapfn, arguments[2], 2);\n }\n length = toLength(O.length);\n result = new (aTypedArrayConstructor(this))(length);\n for (i = 0; length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $copyWithin = require('../internals/array-copy-within');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.copyWithin` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.copywithin\nArrayBufferViewCore.exportProto('copyWithin', function copyWithin(target, start /* , end */) {\n return $copyWithin.call(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n});\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\nvar min = Math.min;\n\n// `Array.prototype.copyWithin` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.copywithin\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $every = require('../internals/array-iteration').every;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.every` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.every\nArrayBufferViewCore.exportProto('every', function every(callbackfn /* , thisArg */) {\n return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $fill = require('../internals/array-fill');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.fill\n// eslint-disable-next-line no-unused-vars\nArrayBufferViewCore.exportProto('fill', function fill(value /* , start, end */) {\n return $fill.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $filter = require('../internals/array-iteration').filter;\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\n\n// `%TypedArray%.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.filter\nArrayBufferViewCore.exportProto('filter', function filter(callbackfn /* , thisArg */) {\n var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n var C = speciesConstructor(this, this.constructor);\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $find = require('../internals/array-iteration').find;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.find` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.find\nArrayBufferViewCore.exportProto('find', function find(predicate /* , thisArg */) {\n return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findIndex = require('../internals/array-iteration').findIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.findIndex` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.findindex\nArrayBufferViewCore.exportProto('findIndex', function findIndex(predicate /* , thisArg */) {\n return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.forEach` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.foreach\nArrayBufferViewCore.exportProto('forEach', function forEach(callbackfn /* , thisArg */) {\n $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $includes = require('../internals/array-includes').includes;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.includes\nArrayBufferViewCore.exportProto('includes', function includes(searchElement /* , fromIndex */) {\n return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $indexOf = require('../internals/array-includes').indexOf;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.indexof\nArrayBufferViewCore.exportProto('indexOf', function indexOf(searchElement /* , fromIndex */) {\n return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar global = require('../internals/global');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayIterators = require('../modules/es.array.iterator');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar Uint8Array = global.Uint8Array;\nvar arrayValues = ArrayIterators.values;\nvar arrayKeys = ArrayIterators.keys;\nvar arrayEntries = ArrayIterators.entries;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportProto = ArrayBufferViewCore.exportProto;\nvar nativeTypedArrayIterator = Uint8Array && Uint8Array.prototype[ITERATOR];\n\nvar CORRECT_ITER_NAME = !!nativeTypedArrayIterator\n && (nativeTypedArrayIterator.name == 'values' || nativeTypedArrayIterator.name == undefined);\n\nvar typedArrayValues = function values() {\n return arrayValues.call(aTypedArray(this));\n};\n\n// `%TypedArray%.prototype.entries` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.entries\nexportProto('entries', function entries() {\n return arrayEntries.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.keys\nexportProto('keys', function keys() {\n return arrayKeys.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.values\nexportProto('values', typedArrayValues, !CORRECT_ITER_NAME);\n// `%TypedArray%.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype-@@iterator\nexportProto(ITERATOR, typedArrayValues, !CORRECT_ITER_NAME);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar $join = [].join;\n\n// `%TypedArray%.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.join\n// eslint-disable-next-line no-unused-vars\nArrayBufferViewCore.exportProto('join', function join(separator) {\n return $join.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $lastIndexOf = require('../internals/array-last-index-of');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.lastIndexOf` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.lastindexof\n// eslint-disable-next-line no-unused-vars\nArrayBufferViewCore.exportProto('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {\n return $lastIndexOf.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $map = require('../internals/array-iteration').map;\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\n\n// `%TypedArray%.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.map\nArrayBufferViewCore.exportProto('map', function map(mapfn /* , thisArg */) {\n return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {\n return new (aTypedArrayConstructor(speciesConstructor(O, O.constructor)))(length);\n });\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduce = require('../internals/array-reduce').left;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reduce\nArrayBufferViewCore.exportProto('reduce', function reduce(callbackfn /* , initialValue */) {\n return $reduce(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduceRight = require('../internals/array-reduce').right;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.reduceRicht` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reduceright\nArrayBufferViewCore.exportProto('reduceRight', function reduceRight(callbackfn /* , initialValue */) {\n return $reduceRight(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar floor = Math.floor;\n\n// `%TypedArray%.prototype.reverse` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.reverse\nArrayBufferViewCore.exportProto('reverse', function reverse() {\n var that = this;\n var length = aTypedArray(that).length;\n var middle = floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toOffset = require('../internals/to-offset');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line no-undef\n new Int8Array(1).set({});\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.set\nArrayBufferViewCore.exportProto('set', function set(arrayLike /* , offset */) {\n aTypedArray(this);\n var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError('Wrong length');\n while (index < len) this[offset + index] = src[index++];\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar speciesConstructor = require('../internals/species-constructor');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar $slice = [].slice;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line no-undef\n new Int8Array(1).slice();\n});\n\n// `%TypedArray%.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.slice\nArrayBufferViewCore.exportProto('slice', function slice(start, end) {\n var list = $slice.call(aTypedArray(this), start, end);\n var C = speciesConstructor(this, this.constructor);\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $some = require('../internals/array-iteration').some;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.some` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.some\nArrayBufferViewCore.exportProto('some', function some(callbackfn /* , thisArg */) {\n return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar $sort = [].sort;\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.sort\nArrayBufferViewCore.exportProto('sort', function sort(comparefn) {\n return $sort.call(aTypedArray(this), comparefn);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\n\n// `%TypedArray%.prototype.subarray` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.subarray\nArrayBufferViewCore.exportProto('subarray', function subarray(begin, end) {\n var O = aTypedArray(this);\n var length = O.length;\n var beginIndex = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O.constructor))(\n O.buffer,\n O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)\n );\n});\n","'use strict';\nvar global = require('../internals/global');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\n\nvar Int8Array = global.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar $toLocaleString = [].toLocaleString;\nvar $slice = [].slice;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.tolocalestring\nArrayBufferViewCore.exportProto('toLocaleString', function toLocaleString() {\n return $toLocaleString.apply(TO_LOCALE_STRING_BUG ? $slice.call(aTypedArray(this)) : aTypedArray(this), arguments);\n}, FORCED);\n","'use strict';\nvar global = require('../internals/global');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\n\nvar Uint8Array = global.Uint8Array;\nvar Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype;\nvar arrayToString = [].toString;\nvar arrayJoin = [].join;\n\nif (fails(function () { arrayToString.call({}); })) {\n arrayToString = function toString() {\n return arrayJoin.call(this);\n };\n}\n\n// `%TypedArray%.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.tostring\nArrayBufferViewCore.exportProto('toString', arrayToString, (Uint8ArrayPrototype || {}).toString != arrayToString);\n","/*!\n * Waves v0.7.6\n * http://fian.my.id/Waves\n *\n * Copyright 2014-2018 Alfiana E. Sibuea and other contributors\n * Released under the MIT license\n * https://github.com/fians/Waves/blob/master/LICENSE\n */\n\n\n(function (window, factory) {\n 'use strict';\n\n // AMD. Register as an anonymous module. Wrap in function so we have access\n // to root via `this`.\n if (typeof define === 'function' && define.amd) {\n define([], function () {\n window.Waves = factory.call(window);\n return window.Waves;\n });\n }\n\n // Node. Does not work with strict CommonJS, but only CommonJS-like\n // environments that support module.exports, like Node.\n else if (typeof exports === 'object') {\n module.exports = factory.call(window);\n }\n\n // Browser globals.\n else {\n window.Waves = factory.call(window);\n }\n})(typeof window === 'object' ? window : this, function () {\n 'use strict';\n\n var Waves = Waves || {};\n var $$ = document.querySelectorAll.bind(document);\n var toString = Object.prototype.toString;\n var isTouchAvailable = 'ontouchstart' in window;\n\n\n // Find exact position of element\n function isWindow(obj) {\n return obj !== null && obj === obj.window;\n }\n\n function getWindow(elem) {\n return isWindow(elem) ? elem : elem.nodeType === 9 && elem.defaultView;\n }\n\n function isObject(value) {\n var type = typeof value;\n return type === 'function' || type === 'object' && !!value;\n }\n\n function isDOMNode(obj) {\n return isObject(obj) && obj.nodeType > 0;\n }\n\n function getWavesElements(nodes) {\n var stringRepr = toString.call(nodes);\n\n if (stringRepr === '[object String]') {\n return $$(nodes);\n } else if (isObject(nodes) && /^\\[object (Array|HTMLCollection|NodeList|Object)\\]$/.test(stringRepr) && nodes.hasOwnProperty('length')) {\n return nodes;\n } else if (isDOMNode(nodes)) {\n return [nodes];\n }\n\n return [];\n }\n\n function offset(elem) {\n var docElem, win,\n box = {\n top: 0,\n left: 0\n },\n doc = elem && elem.ownerDocument;\n\n docElem = doc.documentElement;\n\n if (typeof elem.getBoundingClientRect !== typeof undefined) {\n box = elem.getBoundingClientRect();\n }\n win = getWindow(doc);\n return {\n top: box.top + win.pageYOffset - docElem.clientTop,\n left: box.left + win.pageXOffset - docElem.clientLeft\n };\n }\n\n function convertStyle(styleObj) {\n var style = '';\n\n for (var prop in styleObj) {\n if (styleObj.hasOwnProperty(prop)) {\n style += (prop + ':' + styleObj[prop] + ';');\n }\n }\n\n return style;\n }\n\n var Effect = {\n\n // Effect duration\n duration: 750,\n\n // Effect delay (check for scroll before showing effect)\n delay: 200,\n\n show: function (e, element, velocity) {\n\n // Disable right click\n if (e.button === 2) {\n return false;\n }\n\n element = element || this;\n\n // Create ripple\n var ripple = document.createElement('div');\n ripple.className = 'waves-ripple waves-rippling';\n element.appendChild(ripple);\n\n // Get click coordinate and element width\n var pos = offset(element);\n var relativeY = 0;\n var relativeX = 0;\n // Support for touch devices\n if ('touches' in e && e.touches.length) {\n relativeY = (e.touches[0].pageY - pos.top);\n relativeX = (e.touches[0].pageX - pos.left);\n }\n //Normal case\n else {\n relativeY = (e.pageY - pos.top);\n relativeX = (e.pageX - pos.left);\n }\n // Support for synthetic events\n relativeX = relativeX >= 0 ? relativeX : 0;\n relativeY = relativeY >= 0 ? relativeY : 0;\n\n var scale = 'scale(' + ((element.clientWidth / 100) * 3) + ')';\n var translate = 'translate(0,0)';\n\n if (velocity) {\n translate = 'translate(' + (velocity.x) + 'px, ' + (velocity.y) + 'px)';\n }\n\n // Attach data to element\n ripple.setAttribute('data-hold', Date.now());\n ripple.setAttribute('data-x', relativeX);\n ripple.setAttribute('data-y', relativeY);\n ripple.setAttribute('data-scale', scale);\n ripple.setAttribute('data-translate', translate);\n\n // Set ripple position\n var rippleStyle = {\n top: relativeY + 'px',\n left: relativeX + 'px'\n };\n\n ripple.classList.add('waves-notransition');\n ripple.setAttribute('style', convertStyle(rippleStyle));\n ripple.classList.remove('waves-notransition');\n\n // Scale the ripple\n rippleStyle['-webkit-transform'] = scale + ' ' + translate;\n rippleStyle['-moz-transform'] = scale + ' ' + translate;\n rippleStyle['-ms-transform'] = scale + ' ' + translate;\n rippleStyle['-o-transform'] = scale + ' ' + translate;\n rippleStyle.transform = scale + ' ' + translate;\n rippleStyle.opacity = '1';\n\n var duration = e.type === 'mousemove' ? 2500 : Effect.duration;\n rippleStyle['-webkit-transition-duration'] = duration + 'ms';\n rippleStyle['-moz-transition-duration'] = duration + 'ms';\n rippleStyle['-o-transition-duration'] = duration + 'ms';\n rippleStyle['transition-duration'] = duration + 'ms';\n\n ripple.setAttribute('style', convertStyle(rippleStyle));\n },\n\n hide: function (e, element) {\n element = element || this;\n\n var ripples = element.getElementsByClassName('waves-rippling');\n\n for (var i = 0, len = ripples.length; i < len; i++) {\n removeRipple(e, element, ripples[i]);\n }\n\n if (isTouchAvailable) {\n element.removeEventListener('touchend', Effect.hide);\n element.removeEventListener('touchcancel', Effect.hide);\n }\n\n element.removeEventListener('mouseup', Effect.hide);\n element.removeEventListener('mouseleave', Effect.hide);\n }\n };\n\n /**\n * Collection of wrapper for HTML element that only have single tag\n * like and \n */\n var TagWrapper = {\n\n // Wrap tag so it can perform the effect\n input: function (element) {\n\n var parent = element.parentNode;\n\n // If input already have parent just pass through\n if (parent.tagName.toLowerCase() === 'span' && parent.classList.contains('waves-effect')) {\n return;\n }\n\n // Put element class and style to the specified parent\n var wrapper = document.createElement('span');\n wrapper.className = 'waves-input-wrapper';\n // element.className = 'waves-button-input';\n\n // Put element as child\n parent.replaceChild(wrapper, element);\n wrapper.appendChild(element);\n\n },\n\n // Wrap tag so it can perform the effect\n img: function (element) {\n\n var parent = element.parentNode;\n\n // If input already have parent just pass through\n if (parent.tagName.toLowerCase() === 'i' && parent.classList.contains('waves-effect')) {\n return;\n }\n\n // Put element as child\n var wrapper = document.createElement('i');\n parent.replaceChild(wrapper, element);\n wrapper.appendChild(element);\n\n }\n };\n\n /**\n * Hide the effect and remove the ripple. Must be\n * a separate function to pass the JSLint...\n */\n function removeRipple(e, el, ripple) {\n\n // Check if the ripple still exist\n if (!ripple) {\n return;\n }\n\n ripple.classList.remove('waves-rippling');\n\n var relativeX = ripple.getAttribute('data-x');\n var relativeY = ripple.getAttribute('data-y');\n var scale = ripple.getAttribute('data-scale');\n var translate = ripple.getAttribute('data-translate');\n\n // Get delay beetween mousedown and mouse leave\n var diff = Date.now() - Number(ripple.getAttribute('data-hold'));\n var delay = 350 - diff;\n\n if (delay < 0) {\n delay = 0;\n }\n\n if (e.type === 'mousemove') {\n delay = 150;\n }\n\n // Fade out ripple after delay\n var duration = e.type === 'mousemove' ? 2500 : Effect.duration;\n\n setTimeout(function () {\n\n var style = {\n top: relativeY + 'px',\n left: relativeX + 'px',\n opacity: '0',\n\n // Duration\n '-webkit-transition-duration': duration + 'ms',\n '-moz-transition-duration': duration + 'ms',\n '-o-transition-duration': duration + 'ms',\n 'transition-duration': duration + 'ms',\n '-webkit-transform': scale + ' ' + translate,\n '-moz-transform': scale + ' ' + translate,\n '-ms-transform': scale + ' ' + translate,\n '-o-transform': scale + ' ' + translate,\n 'transform': scale + ' ' + translate\n };\n\n ripple.setAttribute('style', convertStyle(style));\n\n setTimeout(function () {\n try {\n el.removeChild(ripple);\n } catch (e) {\n return false;\n }\n }, duration);\n\n }, delay);\n }\n\n\n /**\n * Disable mousedown event for 500ms during and after touch\n */\n var TouchHandler = {\n\n /* uses an integer rather than bool so there's no issues with\n * needing to clear timeouts if another touch event occurred\n * within the 500ms. Cannot mouseup between touchstart and\n * touchend, nor in the 500ms after touchend. */\n touches: 0,\n\n allowEvent: function (e) {\n\n var allow = true;\n\n if (/^(mousedown|mousemove)$/.test(e.type) && TouchHandler.touches) {\n allow = false;\n }\n\n return allow;\n },\n registerEvent: function (e) {\n var eType = e.type;\n\n if (eType === 'touchstart') {\n\n TouchHandler.touches += 1; // push\n\n } else if (/^(touchend|touchcancel)$/.test(eType)) {\n\n setTimeout(function () {\n if (TouchHandler.touches) {\n TouchHandler.touches -= 1; // pop after 500ms\n }\n }, 500);\n\n }\n }\n };\n\n\n /**\n * Delegated click handler for .waves-effect element.\n * returns null when .waves-effect element not in \"click tree\"\n */\n function getWavesEffectElement(e) {\n\n if (TouchHandler.allowEvent(e) === false) {\n return null;\n }\n\n var element = null;\n var target = e.target || e.srcElement;\n\n while (target.parentElement) {\n if ((!(target instanceof SVGElement)) && target.classList.contains('waves-effect')) {\n element = target;\n break;\n }\n target = target.parentElement;\n }\n\n return element;\n }\n\n /**\n * Bubble the click and show effect if .waves-effect elem was found\n */\n function showEffect(e) {\n\n // Disable effect if element has \"disabled\" property on it\n // In some cases, the event is not triggered by the current element\n // if (e.target.getAttribute('disabled') !== null) {\n // return;\n // }\n\n var element = getWavesEffectElement(e);\n\n if (element !== null) {\n\n // Make it sure the element has either disabled property, disabled attribute or 'disabled' class\n if (element.disabled || element.getAttribute('disabled') || element.classList.contains('disabled')) {\n return;\n }\n\n TouchHandler.registerEvent(e);\n\n if (e.type === 'touchstart' && Effect.delay) {\n\n var hidden = false;\n\n var timer = setTimeout(function () {\n timer = null;\n Effect.show(e, element);\n }, Effect.delay);\n\n var hideEffect = function (hideEvent) {\n\n // if touch hasn't moved, and effect not yet started: start effect now\n if (timer) {\n clearTimeout(timer);\n timer = null;\n Effect.show(e, element);\n }\n if (!hidden) {\n hidden = true;\n Effect.hide(hideEvent, element);\n }\n\n removeListeners();\n };\n\n var touchMove = function (moveEvent) {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n hideEffect(moveEvent);\n\n removeListeners();\n };\n\n element.addEventListener('touchmove', touchMove, false);\n element.addEventListener('touchend', hideEffect, false);\n element.addEventListener('touchcancel', hideEffect, false);\n\n var removeListeners = function () {\n element.removeEventListener('touchmove', touchMove);\n element.removeEventListener('touchend', hideEffect);\n element.removeEventListener('touchcancel', hideEffect);\n };\n } else {\n\n Effect.show(e, element);\n\n if (isTouchAvailable) {\n element.addEventListener('touchend', Effect.hide, false);\n element.addEventListener('touchcancel', Effect.hide, false);\n }\n\n element.addEventListener('mouseup', Effect.hide, false);\n element.addEventListener('mouseleave', Effect.hide, false);\n }\n }\n }\n\n Waves.init = function (options) {\n var body = document.body;\n\n options = options || {};\n\n if ('duration' in options) {\n Effect.duration = options.duration;\n }\n\n if ('delay' in options) {\n Effect.delay = options.delay;\n }\n\n if (isTouchAvailable) {\n body.addEventListener('touchstart', showEffect, false);\n body.addEventListener('touchcancel', TouchHandler.registerEvent, false);\n body.addEventListener('touchend', TouchHandler.registerEvent, false);\n }\n\n body.addEventListener('mousedown', showEffect, false);\n };\n\n\n /**\n * Attach Waves to dynamically loaded inputs, or add .waves-effect and other\n * waves classes to a set of elements. Set drag to true if the ripple mouseover\n * or skimming effect should be applied to the elements.\n */\n Waves.attach = function (elements, classes) {\n\n elements = getWavesElements(elements);\n\n if (toString.call(classes) === '[object Array]') {\n classes = classes.join(' ');\n }\n\n classes = classes ? ' ' + classes : '';\n\n var element, tagName;\n\n for (var i = 0, len = elements.length; i < len; i++) {\n\n element = elements[i];\n tagName = element.tagName.toLowerCase();\n\n if (['input', 'img'].indexOf(tagName) !== -1) {\n TagWrapper[tagName](element);\n element = element.parentElement;\n }\n\n if (element.className.indexOf('waves-effect') === -1) {\n element.className += ' waves-effect' + classes;\n }\n }\n };\n\n\n /**\n * Cause a ripple to appear in an element via code.\n */\n Waves.ripple = function (elements, options) {\n elements = getWavesElements(elements);\n var elementsLen = elements.length;\n\n options = options || {};\n options.wait = options.wait || 0;\n options.position = options.position || null; // default = centre of element\n\n\n if (elementsLen) {\n var element, pos, off, centre = {},\n i = 0;\n var mousedown = {\n type: 'mousedown',\n button: 1\n };\n var hideRipple = function (mouseup, element) {\n return function () {\n Effect.hide(mouseup, element);\n };\n };\n\n for (; i < elementsLen; i++) {\n element = elements[i];\n pos = options.position || {\n x: element.clientWidth / 2,\n y: element.clientHeight / 2\n };\n\n off = offset(element);\n centre.x = off.left + pos.x;\n centre.y = off.top + pos.y;\n\n mousedown.pageX = centre.x;\n mousedown.pageY = centre.y;\n\n Effect.show(mousedown, element);\n\n if (options.wait >= 0 && options.wait !== null) {\n var mouseup = {\n type: 'mouseup',\n button: 1\n };\n\n setTimeout(hideRipple(mouseup, element), options.wait);\n }\n }\n }\n };\n\n /**\n * Remove all ripples from an element.\n */\n Waves.calm = function (elements) {\n elements = getWavesElements(elements);\n var mouseup = {\n type: 'mouseup',\n button: 1\n };\n\n for (var i = 0, len = elements.length; i < len; i++) {\n Effect.hide(mouseup, elements[i]);\n }\n };\n\n /**\n * Deprecated API fallback\n */\n Waves.displayEffect = function (options) {\n console.error('Waves.displayEffect() has been deprecated and will be removed in future version. Please use Waves.init() to initialize Waves effect');\n Waves.init(options);\n };\n\n return Waves;\n});\n$(document).ready(function () {\n //Initialization\n Waves.attach('.btn:not(.btn-flat), .btn-floating', ['waves-light']);\n Waves.attach('.btn-flat');\n Waves.attach('.chip');\n Waves.attach('.view a .mask', ['waves-light']);\n Waves.attach('.waves-light', ['waves-light']);\n Waves.attach('.navbar-nav a:not(.navbar-brand), .nav-icons li a, .nav-tabs .nav-item:not(.dropdown)', ['waves-light']);\n Waves.attach('.pager li a', ['waves-light']);\n Waves.attach('.pagination .page-item .page-link');\n Waves.init();\n});\n"],"sourceRoot":""} \ No newline at end of file